The first week in Google Summer of Code was longer than expected (previous week I celebrated my birthday and was not available to program a lot :D). But now I’m writing this first report to present initial results that have been obtained in the LabPlot project under the supervision of Alexander Semke during the beginning of this hot (even in Amsterdam) summer season.
Let’s start from statistics. I tried to not repeat my self as much as possible, but 1000 lines of code still have been commited. Most of changes have been done at late night and early in the morning in approximately right mind and without any beers.
The first days have been spent on architecture exploration and experiments with VTK widgets outside LabPlot. From a general perspective LabPlot can be separated into two main components - backend and frontend. In the backend side there is a functionality related to data structures, rendering of worksheet and spreadsheet subcomponents, in the frontend side - widgets, ui elements that “communicate” with users. My changes during the previous week have been distributed between these parts.
Later I got stuck for a long time with integration of the QVTKWidget component into the LabPlot system. It was caused by the fact that QGraphicsScene class doesn’t support widgets that wrap an external application or controller, but the LabPlot architecture is mostly knotted by QGraphicsItem items. If you try to wrap QVTKWidget by some QGraphicsProxyWidget and then try to add it to QGraphicsScene like:
QVTKWidget *w = new QVTKWidget(); // Some actor has been added into QVTKWidget here QGraphicsScene *scene = new QGraphicsScene; QGraphicsProxyWidget *proxyWidget = scene->addWidget(w); proxyWidget->show(); QGraphicsView *view = new QGraphicsView(scene); view->show();
… then the only think that you can probably see is the nice amazing black screen :)
Stannis BaratheonQVTKGraphicsItem, that is a successor of QGraphicsItem, has come to the aid. But even in this case the significant change in the LabPlot worksheet architecture has been required caused by the fact that QVTKWidget is still needed in this case.
Basic visualization of 3D primitives have been implemented. Now an user can visualize 3D objects loaded from obj files
or read data from spreadsheet columns.
During the development process I faced with one annoying bug in VTK cmake scripts. It determines VTK_INSTALL_PREFIX macro wrongly and because of that it doesn’t include /usr/include/vtk directory into the list of include directories. And then cmake projects based on VTK cannot be built successfully.
There are more things that still need to be done, but maybe it’s for the next report!
Utrecht is one of the highest point in the Netherlands. If you are afraid of the flood then this Dutch city is definitely for you. It is also known by the Treaty of Utrecht that put an end to the War of Spanish Succession and its university. Maybe there are something else, but my knowledge about Dutch cities is still narrow to write here about them :)
It’s supposed that below main buildings, near channels, there were warehouses where ships could moor and raise their goods ashore easily, but now there are only restaurants.
The Dom Tower.
And the same tower IRL:
I’m starting to regret that I have declined to study here before. You should see it! Hogwarts is in the city with its court.
Amazing. All photos can be found here.
With Fedora packages for Leechcraft it was not so simple. An initiative to build RPM packages for it has begun initially from openSUSE by me with Lazy_Kent and then continued by Dmitriy Perlow and Rioky. The spec file has grown up with the speed of hare and became more and more difficult to maintain.
When I first time switched my PC to Fedora I thought that it should be a good idea to have Leechcraft on it too and decided to port the openSUSE spec file to Fedora. But later, because of my laziness and bad temper I stopped doing that soon and nobody in Fedora community wanted to take it under his patronage because of maintaining complexity.
Indeed, each Leechcraft release has spent at least about 1-2 days of my time to resolve dependencies, to specify new installed files, to make patch for system specific problems etc. The spec file for Leechcraft was the document that described a plenty (~ 60) of subpackages with which an user probably don’t want such flexibility. Each of them may has a dependency to other plugins that adds more headache for a package creator.
Now after a long time of interruption, I’m announcing about my comeback to the project with a bit different approach of packaging that allows more possibility to check dependencies between components of Leechcraft eco system. Each major plugin of Leechcraft is now built separately from other parts. It’s some kind of “Divide and Conquer” strategy that allows a maintainer to concentrate on local problems of each plugin and to spend less time for failed builds.
In the current build for Fedora Leechcraft has been built with Qt5. Major leechcraft plugins (including Azoth IM client, Bittorrent, Aggregator RSS/Atom aggregator and Poshuku browser) can be found in my COPR repository. They can be installed by just few commands in your terminal:
# dnf copr enable minh/fedora-ukraine # dnf --refresh list available # dnf install leechcraft-azoth # dnf install leechcraft-bittorrent # dnf install leechcraft-aggregator # dnf install leechcraft-poshuku
There are several patches that have been made to make integration of Leechcraft with Qt5 possible. Most of them has been submitted to upstream, the rest is going to be submitted:
- 001-fix-qwt-cmake-script.patch replaces the qwt library for Qt4 by the one for Qt5
- 002-find-leechcraft-qt5-libs.patch makes it able to build Leechcraft plugins with the Leechcraft from the system environment
- 003-fix-azoth-dependencies.patch fixes dependencies of subcomponents of the Azoth plugin
- 004-finding-qxmpp-qt5.patch replaces the QXmpp library for Qt4 by the one for Qt5
- 005-fixing-poshuku-plugin-deps.patch fixes dependencies of the Poshuku plugin
- 006-fix-secman-deps.patch fixes dependencies of the Secman plugin
- 007-find-qca-qt5.patch replaces the QCA library for Qt4 by the one for Qt5
If you are using Leechcraft in Fedora or you know people that use it please be free to share your opinion about it! In the case if you would like to contribute you are welcome.
This year I have been accepted the second time to the Google Summer of Code programme. The community bounding period is over and there is a time to start the development. This year I’m doing the project for LabPlot application that has the aim to integrate VTK library for 3D data visualization.
I hope this summer will be rich and productive and my contribution into the LabPlot project will be valuable for its users.
And thank you Google for the sticker. I have successfully glued to my new laptop :)
Yesterday I had an amazing day trip to Brussels. FlixBus has a promotion for this month and sells tickets only for 1 EUR and I could not refuse such an attractive offer and decided to invite friends to join. In spite of the fact that I was late to the first Sprinter at morning, I was able to catch the next train. It’s always good when you have a backup plan to not fail the trip at the beginning.
In comparison with Amsterdam Brussels is quite different. The locals could not be easily detected - everywhere there are a lot of migrants. The waters are very few, it’s quite strange to see only land around you after almost a half of year staying among channels.
Landscape is not adapted for easy cycling. Many hills and valleys force a bicyclist to strain his muscules. In addition to this fact, road for bycicles is narrow, without any protrusions to save them from dangerous cars. Traffic lights don’t have buttons for pedestrians that is sometimes quite annoying.
The city is not well maintained, everywhere something broken can be found
Vandalism is present even in the Warandepark in front of the Royal palace
But except of this fact Brussels is wonderful. A hatch
Trains are the same like in Amsterdam with a button for opening doors
This monitor shows where each train is situated in real time
Ukrainian Bandura has been found in the local Musical Instrument Museum
Small contructions above the roof of some historical buildings turned out to be chimneys for each fireplace in it.
The Gringotts Wizarding Bank detected
There are more photos, but to be honest, I am very bad photographer, but definitely more trips are required to fully dive into the city atmosphere.