= GSoC 2021: First steps towards a new GRASS GIS Single-Window GUI = || Title: || '''First steps towards a new GRASS GIS Single-Window GUI''' || ||Student Name: || Linda Kladivova || ||Organization: || [http://www.osgeo.org OSGeo - Open Source Geospatial Foundation] || || Mentor Name: || Anna Petrasova, Martin Landa, Vaclav Petras, Stefan Blumentrath || || GSoC proposal: ||[https://summerofcode.withgoogle.com/dashboard/project/6059224263557120/details/ View proposal] || || !GitHub Repository: || [https://github.com/lindakladivova view repository] || == Abstract == This project will mainly focus on extensive Graphical User Interface (GUI) refactoring necessary to prepare GRASS GIS for Single-Window GUI. As the result, I will introduce a very simple Single-Window layout and importantly a good programming base allowing further convenient extension and improvement with additional functions. == Goal == The goal is to create a simple Single-Window GUI (the standard solution in most of the software) which ensures all panels in the form of dockable panes to be visible immediately after startup. Of course, especially long-term users can prefer the existing Multi-Window GUI, so the original option will be retained. For more information, please have a look at a separate page where I present a proposal in detail: https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/SingleWindow. To sum up the schedule: From June 7th to June 20th (2 weeks), I plan to work on the GUI refactoring - separation of main GUI window code, creating a new Workspace Manager as well as a new Layer Manager class. From June 21st to July 11th (3 weeks) I plan to create a new Map Display panel needed for the Single-Window layout and to adapt toolbars in other panels (this would also be the topic for the first evaluation). From July 12th to July 25th (2 weeks) I will work on general factory class allowing me to preserve a Multi-Window layout as well as to create a new Single-Window layout. From July 26th to August 22th (4 weeks) I will work on the integration of all panels (Data, Display, Modules, Console, Python, Map Display notebook) to a basic Single-Window structure. == Timeline == {{{#!th style="background: #ddd" rowspan=2 '''Time Period''' }}} {{{#!th style="background: #ddd" colspan=2 '''Milestones''' }}} |----------------------- {{{#!th style="background: #ddd" Tasks }}} {{{#!th style="background: #ddd" Status }}} |----------------------- {{{#!td May 17 - 6 June \\ ''Community Bonding'' }}} {{{#!td - Introduce myself in dev list, get in contact with my mentors and discuss the design of functions - Prepare the wiki page about the project - Set up the !GitHub repository of the project - Familiarize with the object-oriented patterns in wxPython programming - Discuss the elements of the Single-Window layout and the necessary changes in GUI needed for implementing the proposed design - Discuss the elements of the startup window and get acquainted with the whole design (video call on May 14) - Contribute some feature related to refactoring }}} {{{#!td }}} |----------------------- {{{#!td June 7 - June 13 \\ ''Week 1'' }}} {{{#!td }}} {{{#!td }}} |----------------------- {{{#!td June 14 - June 20 \\ ''Week 2'' }}} {{{#!td }}} {{{#!td }}} |----------------------- {{{#!td June 21 - June 27 \\ ''Week 3'' }}} {{{#!td }}} {{{#!td }}} |----------------------- {{{#!td June 28 - July 4 \\ ''Week 4'' }}} {{{#!td }}} {{{#!td }}} |----------------------- {{{#!td July5 - July 11 \\ ''Week 5'' }}} {{{#!td }}} {{{#!td }}} |----------------------- {{{#!td July 12 - July 18 \\ ''Week 6'' }}} {{{#!td }}} {{{#!td evaluation }}} |----------------------- {{{#!td July 19 - July 25 \\ ''Week 7'' }}} {{{#!td }}} {{{#!td }}} |----------------------- {{{#!td July 26 - August 1 \\ ''Week 8'' }}} {{{#!td }}} {{{#!td }}} |----------------------- {{{#!td August 2 - August 8\\ ''Week 9'' }}} {{{#!td }}} {{{#!td }}} |----------------------- {{{#!td August 9 - August 15\\ ''Week 10'' }}} {{{#!td }}} {{{#!td }}} |----------------------- {{{#!td August 16 - August22\\ ''Week 11'' }}} {{{#!td }}} {{{#!td }}} |-----------------------