====== GSoC 2020 Dev Log ====== ===== Community Bonding Period (May 4th - June 1) ===== * Discussed and developed a proof of concept for the customizable toolbar. * Mentors provided me accounts for wiki and blog. * Reading and understanding the program flow of the lua ui scripts. * Set up account info, dev log and blog with the help of mentors. === 09 May 2020 === * Added basic MainWindow class containing CadMdiChild, Layers, CliCommand, Toolbar and Select tools. === 10 May 2020 === * Updated the toolbar class for basic initialization, attaching select tools. === 11 May 2020 === * Shifted GUI related connect calls from lua code to MainWindow class, as well input trigger connections. === 12 May 2020 === * Replaced luaInterface::qtConnect calls with actual Qt connect calls. * Moved command list from lua to CliCommand class, along with a few other changes. * Replaced menu luaConnect calls with temporary API function call. === 13 May 2020 === * Toolbar manual button creation in lua replaced with temporary API function call. * Removal and refactoring of redundant lua code. === 14 May 2020 === * Finished removal and refactoring of id related code since window id is not required anymore. * Added WindowManager class which will hold a list of window instances and have the new and open functions. === 15 May 2020 === * Feedback from mentors regarding new entry point for lua scripts. * Moved UI button connect calls from their UI lua files to each of the tool's lua files, so that each operation can connect the button in it's initialization function. * Shifted save and saveAs slots from lua to C++. === 16 May 2020 === * Removed init.lua as lua script execution start point. * Lua folders are now scanned for files and run, after which init function in each operation is called which adds and connects buttons/registers commands. * Removed all lua files in ui folder except for operations.lua === 17 May 2020 === * Began work on automatic generation of operation buttons by using operation properties. * Added support for command line, menu buttons and toolbar buttons. === 18 May 2020 === * Added command line list support, toolbar group on the basis of file location. * Added operations icon property support. * Shifted remaining global functions from operations.lua to C++. * Removed lua UI folder completely. === 19 May 2020 === * Added support for method wise toolbar icons in operation properties. === 20 May 2020 === * Attempted to make the unit tests run locally on my pc, ran into some issues with gtest, === 21 May 2020 === * Added WindowManager unit tests, updated old unit tests to work with new changes. * Added MainWindow unit tests. === 22 May 2020 === * Added few more MainWindow unit tests. * Refactored operations related code in luaInterface. * Created PR. === 23 May 2020 === * Did not do anything related to the project. === 24 May 2020 === * Began work on Menu part of the Lua GUI API. * Added Menu class. === 25 May 2020 === * Added menu and menuitem class * Changed QMenu widgets to Menu class in ui file * Ran into some issues regarding replacing qaction widgets. === 26 May 2020 === * Solved previous day's issues, replacement of qaction with menuitem works. * Added callbacks list and few more functions for menu and menuitem class. === 27 May 2020 === * Added few more Menu API functions. * Added menu positioning and fixed bug in findMenu function. === 28 May 2020 === * Added menu item positioning. * Added more function overloads for Menu API operations. === 29 May 2020 === * Added support for menu inside menus. === 30 May 2020 === * Added menu item unit tests. * Restricted menu items from having same label on the same level. * Attempted disconnection of lua function slot, ran into some issues. === 31 May 2020 === * Spent some time debugging it, more weird issues. Decided to put named callbacks on hold and add unit tests first. * Added menu unit tests. * While adding unit tests, realized issue with updation of positions on removing menu. ===== Coding Period - I (June 1 - July 3) ===== === 01 June 2020 === * Fixed remove function issues. * Added more menu unit tests. * Added named callbacks and ability to delete callbacks. * CliCommand GUI API functions added. === 02 June 2020 === * Added CliCommand API unit tests. * Started Layers GUI API === 03 June 2020 === * Added Layers GUI API functions * Added few Layers API unit tests === 04 June 2020 === * Added ToolbarButton class * Added ToolbarGroup class === 05 June 2020 === * Updated and replaced toolbartab functions * Updated operation icon loading in luainterface * Added few more toolbar gui functions === 06 June 2020 === * Updated and changed toolbar class functions. * Added remaining toolbar gui api functions. === 07 June 2020 === * Attempted to solve issues with Qt and Visual Studio. === 08 June 2020 === * Shifted button connect function to toolbargroup class * LuaQObject bug causing issues. === 09 June 2020 === * Fixed luaqobject bug * Moved snap button initialization to after script loading to avoid issues. === 10 June 2020 === * Add toolbar and toolbar tab unit tests. * Added toolbar group and toolbar button unittests. * Changed menu item callback connection to use signals and slots. === 11 June 2020 === * Replaced static and dynamic casts with qobject casts, qt crashes have stopped. * Named callbacks and remove callback added to toolbar button. * Renamed some api functions to adhere to coding style. === 12 June 2020 === * Added back luascript widget. * Enabled changing of number of group columns for toolbargroup. === 13 June 2020 === * Fixed luascript bug. * Added OperationLoader class. * Callback calling is now done directly instead of using luaConnect. * Removed LuaQObject class and Qt related code in luainterface. === 14 June 2020 === * Renamed qtbridge to guibridge. * Removed qt related code in guibridge. === 15 June 2020 === * Began work on GUI Dialog. * Added dialog widget, InputGUI class. * Added TextGUI, ButtonGUI and ButtonGroupGUI class. === 16 June 2020 === * Added checkbox, radiobutton, radiogroup, horizontalgroup widgets. * Added Coordinate GUI widget. === 17 June 2020 === * Added angle widget. * Added slider and combobox widget. * Added number widget and updated widgets to allow retrieving of values. === 18 June 2020 === * Added finish callback functionality of dialog box retrieving all values in a lua table. * Added keys for widgets added to dialog box. === 19 June 2020 === * Allow selection of coordinate points for coordinate widget by clicking on the point. === 20 June 2020 === * Added color picker widget. * Added entity picker widget. * Added few more input gui unit tests. === 21 June 2020 === * Used visitor design pattern to resolve entity determining issue. * Added horizontal group unit test. === 22 June 2020 === * Fixed menu positioning bug and entity picker bug. * Created PR * Fixed issues on compiling through gnu compiler that were not showing up in msvc. === 23 June 2020 === * Added layer unit tests as they were less according to the coverage report. * Began work on customizable toolbar. === 24 June 2020 === * Worked on GUI for customize toolbar widget. * Updated the drag and drop functionality. === 25 June 2020 === * Changed layout and added parent tabs for customize widget. * Updated the customize widget. === 26 June 2020 === * Added delete functionality for customize widget. * Started integrating with librecad. === 27 June 2020 === * Shifted widget classes from qtcreator to librecad. === 28 June 2020 === * Updated customize widget classes for proper initialization. * Few changes in the drag model. === 29 June 2020 === * Button loading and proper handling of duplicate icons in the customize widget, * Remove button added to tabs and groups in the widget. * Implemented basic re-addition of buttons on finish. === 30 June 2020 === * Added clone function for toolbar buttons. * Fixed re addition of buttons. === 1 July 2020 === * Partly implemented reading of toolbar data file. === 2 July 2020 === * Added reading of toolbar data from xml file through custom parsing code. * Icon map shifted to toolbar class from iconlist so that it doesn't get overwritten. === 3 July 2020 === * Replaced custom parsing code with qxmlstreamreader and writer. ===== Coding Period - II (July 3rd - July 31) ===== === 04 July 2020 === * Added UI settings class and writing to ui settings file. === 05 July 2020 === * Added default settings to ui settings. * Added default and load toolbar file buttons. === 06 July 2020 === * Created PR for customizable toolbar. * Added documentation for MainWindow menu and for menu class. === 07 July 2020 === * Documentation for Menu classes added. * Documentation for toolbar classes added. === 08 July 2020 === * Documentation for layers and clicommand classes added. * Documentation for dialog widget class added. === 09 July 2020 === * Documentation for all the input gui widgets added. === 10 July 2020 === * Documentation for dialog example added. * Finished up the documentation for gui api. * Made toolbar xml schema. === 11 July 2020 === * Searched for a good library for xml/json parsing and schema validation. * Started shifting settings from xml to json. === 12 July 2020 === * Settings shifted from xml to json using rapidjson library. * Settings json schema validation added. === 13 July 2020 === * Began work on the property editor. * Added property editor class. === 14 July 2020 === * Abstracted away input gui containing code to the inputguicontainer class. * Faced a few bugs with entity selection. === 15 July 2020 === * Fixed coordinate gui bug in property editor. * Finally fixed bug with entity selection, properties of already selected entities get retained. === 16 July 2020 === * Added property visitor class. * Tried out different ways of setting and retrieving property data. === 17 July 2020 === * Overrode copy function of entity builder classes for proper copying of entities. * Added a variant type for retrieving property values from entities. === 18 July 2020 === * Removed property visitor class, opting for setProperties method instead. * Changed creation of property widgets. * Added properties for a few classes like line,circle,ellipse,arc. === 19 July 2020 === * Added group boxes to seperate entity properties. * Added spline, polyspline and all dimension properties. === 20 July 2020 === * Added List Input GUI Class. === 21 July 2020 === * Added Plus and Minus button functionality for List GUI widget. * Added control points property widget for spline entity. === 22 July 2020 === * Added point highlighting for list gui widget. * Created LWVertexGroup class for holding polyline vertices in the properties widget. === 23 July 2020 === * Added LWVertex list for the polyline entity properties. * Fixed few bugs related to lwvertex and added doxygen comments. * Fixed entity removal and drag points width bugs. === 24 July 2020 === * Replaced group box with tree widget in the property editor. === 25 July 2020 === * Fixed minor bugs. * Created PR and resolved merge conflicts. === 26 July 2020 === * Tried to figure out seg fault on travis build but not on pc. * Started refactoring button and checkbox part of input gui. === 27 July 2020 === * Refactored some input gui code (relating to button and checkbox gui) * Changes to saving of customize toolbar widget (added ok,close and ask user on close) * Merged and resolved merge conflicts with master. === 28 July 2020 === * Fixed minor arc bug, added point properties. * Added copy paste functionality for input guis through context menu. === 29 July 2020 === * Added widget titlebar and fixed for proper expansion/collapse of dock widget. * Add column to make property editor table-like, also added some styling. * Attempted to fix build constants bug with help from mentors. === 30 July 2020 === * Fixed build constants bug. * Added few spacing and styling changes for property editor. * Fixed proper resizing of property editor on being closed using widget toolbar. === 31 July 2020 === * Started work on context menu. ===== Coding Period - III (August 1st - August 31) ===== === 01 August 2020 === * Added context menu manager class. * Added loading of basic operation to context menu. === 02 August 2020 === * Changed initialization of context menu manager to use a static list of instances instead. * Added few commands like last command, undo, redo, select options etc. === 03 August 2020 === * Divided context menu into active, inactive and selected states. * Fix snap options to update changes on both toolbar and context menu. * Fix undo bug. === 04 August 2020 === * Added meta info property to property editor. * Added lineselect class. * Added layer combo box to property editor. === 05 August 2020 === * Added command specific context menu commands. * Added properties for transition from current command to other commands. * Added context menu transitions for line operation. === 06 August 2020 === * Added context menu transitions for circle and few other operations. * Added contextMenuOptions for other commands like arc and line switching in polyline. * Added PAN operation to pause the current active operation to allow the user to PAN. === 07 August 2020 === * Fixed dock widget movement bug. * Added auto adjusting of titlebar between vertical and horizontal depending on dock position. === 08 August 2020 === * Nothing done on this day. === 09 August 2020 === * Changed toolbar data saving method to use rapidjson document. * Refactored ui settings code to make it easier to add other settings to the json file. === 10 August 2020 === * Added saving of dock proportions for the dock widgets. === 11 August 2020 === * Minor fix in unit tests as new menu item is added. * Added ArcWithSCE, ArcWithSCL and ArcWithSCA functions to arcoperations. === 12 August 2020 === * Added ArcWithCSA and ArcWithSCL. * Added context transitions for these arc operations. === 13 August 2020 === * Added ArcWithSEA for arcoperations. === 14 August 2020 === * Added entity serialization to JSON * Entity Property serialization to JSON. === 15 August 2020 === * Deserialization of json properties on pasting. * Added ArcWithSER and ArcWithSEC === 16 August 2020 === * Add CCW,switch direction context menu command for toggling CCW in arc/switch direction. * Created PR for arc_operations * Entity creation using deserialized json data. === 17 August 2020 === * Keyboard shortcuts for copy/paste. * Added copying of polyline vertices. * Fix spline and dimensions bug while copying. === 18 August 2020 === * Added TextBuilder class === 19 August 2020 === * Added textoperations lua file * Added entity properties for text. === 20 August 2020 === * Added text dialog widget and class * Text dialog initialization === 21 August 2020 === * Updated TextBuilder class to add more properties * Dialog close transition to text operation * Settings of text values through dialog. === 22 August 2020 === * Add fonts combo box * Fetching of font from font family in painter === 23 August 2020 === * Loading of fonts from resources/fonts folder * Added menu item and toolbar icon for text * Added context menu transitions for text operation === 24 August 2020 === * Wrote phase 3 blog post. === 25 August 2020 === * Added symbols list to text dialog. * Wrote final report blog post. === 26 August 2020 === * Fix dimension modification bug. * Implemented bounding box function for dimensions. === 27 August 2020 === === 28 August 2020 === * Added writing and reading of mtext to dxf. === 29 August 2020 === * Added alignment box with icons to replace combo boxes. * Fix text align position bug. === 30 August 2020 === * Added underline and strikethrough for text in lcvtext,text and builder. * Added underline and strikethrough options in text dialog. === 31 August 2020 === * Final submisison of gsoc report.