LibreCAD 3 GUI Revamp – GSoC 2020 Phase 2

Hi!

With the end of another fun coding period, I’m here to bring you the updates on what work has been done in this period.

Again my mentors have been extremely helpful and the community too has been very responsive and helpful, giving me vital and useful feedback as I work on the project.

Documentation for GUI API

Documentation for GUI API has been added to the new librecad wiki. A page for every GUI class describing the function, syntax and an example for each function has been added, for both the normal GUI classes and InputGUI classes. An example on how to add and use the dialog widget and input guis has been added too.

https://dokuwiki.librecad.org/doku.php/dev:v3:gui_api

Settings format changed from XML to JSON

The Settings/toolbar format has been changed from xml to json, to leverage the ability of validating the settings using a json schema and simplicity of json. Rapidjson library has been used for parsing and validating the json file.

Property Editor

Property editor has been added which allows us to change the properties of any of the created entities. The property editor shows up with the properties of all currently selected entities.

Changed the entity property instantaneously changes the entity to the new entity with the changed property. Properties changed work in accordance with the undo manager and hence can be undo.

Property editor makes use of the already existing input guis with the addition of a few more classes like the ListGUI, LineSelectGUI etc.

Other minor changes

Minor changes like addition of ok/cancel and removal of the row/column count constraint in the customizable toolbar, addition of build_constants file so that settings file location is determined by the cmake on installation and hence can be changed for different operating systems.

Thanks again to my mentors for their help, and to the community for helping and pointing out various bugs/changes in the features I’m working on.

Dev Log

Akhil Nair

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.