Monday, August 19, 2013

Trip to Vienna

For the Google Summer of Code the mentoring organization receives a certain amount of money that can be used for students to come to visit their mentors. Because Ljubljana, the town where I live, is not far away (approx. 400 km) from Vienna, the town of the mentoring organization, the costs of traveling are not great. I was asked last year if I want to come to visit but I didn't have time. This year I had time so I gladly accepted the offer. On Thursday, July 11th I packed my bags and traveled to Vienna for a 3 days visit.

On Friday, after many skype conferences, I met my mentors in person. This day we set together in the same office and we did a lot of work on the nomacs plugin system. We modified the plugin interface to allow the user to create a submenu in the plugins menu. We also extended the interface to a viewport interface which now allows the plugins to completely connect to nomacs and to use all of its functionality. This is major addition to the plugin system. But it also needed a big change in nomacs which is now a dll. The main application had to be converted to a dll and a smaller application to call the dll. Because of the interconnection between different classes this is the only way for the plugins to use nomacs classes.

On Saturday I had some time to go some sightseeing around the town. In the evening I was invited to a dinner with all the mentors. On Sunday I finished my visit to Vienna and returned to home.

Thanks to all nomacs mentors: Markus, Stefan and Florian for a great trip to Vienna!

Monday, August 12, 2013

Plugin manager - part 1

Together with the nomacs mentors we decided that all the plugins will be managed by a Plugin manager: it will allow the user to download new plugins and to enable/disable already installed plugins. In this way the plugin installation is fast and simple. The user doesn't have to search for the plugins online but a refreshed database is shown in the plugin manager and the user just finds and installs the wanted plugin.

The plugin manager is the central part of the whole plugin system. It connects nomacs to the online database with plugin dlls and descriptions. It is also a connection to the dlls themselves. Because of the size of the plugin manager there was a change in my timeline from the proposal. The GUI for the plugin manager is much more extensive than the initially planed GUI of the plugin system. This is why more weeks will be used to develop the GUI.

Qt GUI on which nomacs is based has a great solution for the display of database data in tables: Model/View Programming. It is a great approach to connect the data to the tables for displaying. But it takes time to learn because of its vastness. The great thing is that it separates the displaying part and the data part. So when the data is changed only the cell in the table where the data was changed is refreshed. The table itself is very modifiable because with the use of delegates you can have buttons, checkboxes and many other things in the cells.

The first part of the plugin manager is the managing part. Bellow is the screenshot of it.
 The table displays the name and version of the installed plugin. A checkbox allows the user to enable or disable the installed plugin. And there is also an uninstall button for removing plugins. By selecting a plugin a plugin description and image preview are displayed.