Hello everybody!
Part 1 of the GSoC is now over and I’m completely satisfied to say that a variety of work has been managed to be performed by now. Given the uncertainity surrounding my exams as a result of pandemic we face, I started my work early within the month of could. All of the milestones for the primary interval( and extra so) has been accomplished.
My mentors Florian and Armin have been of nice assist and have helped me overcome each concern I’ve confronted, in addition to supplied fascinating and helpful info as GSoC is at it’s core an awesome studying expertise for us college students. The group has additionally been useful and interactive and helped me implement the options within the desired method and supplied perception on what the customers of LibreCAD would require.
Shifting of GUI from Lua to C++
MainWindow class has been added which has responsibilty of managing and initialization of the GUI. Toolbar, CliCommand and Layers lessons have been up to date to replicate the brand new adjustments.
All of the lua scripts from lcUILua/ui which have been accountable for the GUI initialization have been eliminated and all their performance has been shifted to the C++ lessons.
Operation Loading
Because of Florian’s concept of operation loading, the lua instruments are actually loaded robotically by the C++ code. The lua scripts outline properties in accordance with which the suitable menu merchandise, toolbar button and command is created for that exact instrument.
This has made it simple so as to add lua instruments with out requiring to alter the code in any of the opposite recordsdata.
Lua GUI API
The Lua GUI API has been added. Menu, MenuItem, ToolbarTab, ToolbarGroup, ToolbarButton have been added, and the MainWindow, CliCommand and Layers lessons have been up to date so as to add all of the required lua gui api capabilities.
Mutiple callbacks, positioning of menu objects, simple addition of instructions to the commandline and different performance have been added due to the addition of this api.
Elimination of QtBridge
With the addition of the lua gui api, the qt bridge is now not essential and has been changed with the lua bridge. Information of qt is now not required for utilizing gui associated capabilities and operations within the lua plugins.
Dialog Widget Lua GUI API
Lua GUI API has been prolonged to incorporate many dialog widget lessons that make it simple to create and use GUI widgets in lua plugins. The next lessons have been added :-
DialogWidget , AngleGUI, ColorGUI, EntityGUI, ButtonGUI, ComboBox GUI, InputGUI, HorizontalGroupGUI, SliderGUI, TextGUI, NumberGUI, RadioButtonGUI, RadioGroupGUI, CoordinateGUI, CheckBoxGUI.
Unit Assessments :-
Unit assessments have been added for all of the work performed above.
Customizable Toolbar :-
Customizable toolbar has been added which permits the consumer to simply customise the toolbar buttons and teams into their desired order. The order is saved so the subsequent time the consumer opens LibreCAD, the toolbar buttons are in the identical order.
The order of buttons might be saved and imported in xml format, in addition to a default order is accessible.
Advantages to the consumer :-
So what do you the consumer, profit from the work performed to this point?
- Lua plugins are simpler to write down, GUI associated code might be written with out requiring any data of the Qt Framework, GUI might be simply manipulated.
- Device operations might be simply added without having to alter the code in another a part of the challenge.
- Components of the consumer documentation just like the lua instruments might be robotically generated due to the addition of the properties.
- Dialog Widget API supplies plenty of simple to make use of GUI parts that can be utilized within the lua plugins to supply extra interplay by way of the plugins with out writing a variety of code.
- Toolbar buttons might be ordered within the consumer’s desired method in order that customers can entry essentially the most ceaselessly used instruments simply.
- The toolbar ordering is exported and imported in xml so might be simply transferred between totally different computer systems.
It’s been a variety of enjoyable to this point and I look ahead to engaged on extra issues on the subsequent two coding durations.
Thanks for studying!
Akhil Nair