[SoC] GSoC 2021: Final report: First steps towards a new GRASS GIS Single-Window GUI

Linda Kladivová L.Kladivova at seznam.cz
Sun Aug 22 11:02:06 PDT 2021


Hello everyone,





I am sending my Final GSoC report. The more detailed version with permanent 
links on GitHub PRs and with several screenshots can be found at the project
wiki: https://trac.osgeo.org/grass/wiki/GSoC/2021/SingleWindowLayout#
FinalReport
(https://trac.osgeo.org/grass/wiki/GSoC/2021/SingleWindowLayout#FinalReport)
.





Abstract:
The project was focused mainly on the extensive Graphical User Interface 
refactoring necessary to prepare GRASS for Single-Window GUI. In addition to
a good programming base, the simple working Single-Window GUI prototype was 
built in a parallel environment. This Single-Window frame largely copies the
design (mockup) which the author had proposed for the GSoC application (see 
​(https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/SingleWindow)[1]). All 
main functionality will be put into operation after the successful merge of 
PR [2] and PR [3]. (https://github.com/OSGeo/grass/pull/1789)However, to 
completely replace the current Multi-Window GUI solution, many other 
improvements are still expected.




The state of the art BEFORE the start of GSoC:
Although the GRASS GUI has been enriched with many new features since last 
year, the basic Multi-Window GUI concept used in all historical GRASS 
versions has been preserved. As the name suggests Multi-Window GUI consists 
of several windows (frames) - the control window and additional separate map
display windows. The control window includes a notebook containing 5 tabs in
a standard 2D map view - Data, Display, Modules, Console, and Python.




The state of the art AFTER GSoC:
A large part of the project was focused on GUI refactoring. The core work 
had to be done all at once in the PR ​
(https://github.com/OSGeo/grass/pull/1675)[2] and since it overturns the 
core logic of map display widgets, it was decided to merge it after GSoC 
when the GRASS 8 will be released. To sum it up, we are probably not 
entirely done with the refactoring, but the main part was managed. 

In addition, a Single-Window GUI prototype has been coded in a parallel 
environment. I with help of my mentors handled to get to the stage where 
most of the functions are working. There is just missing completion of PR 
[3] and possible check/fix of workspaces functioning. It is important to 
emphasize here that I'm talking about basic functionality. To provide a 
really user-friendly environment, many other things will have to be changed 
or reprogrammed. All those steps are summed up in the "Next steps" 
paragraph.




Conclusion:
To follow the project idea I wrote for the GSoC application, I succeeded 
(with help of my mentors) to provide the first steps for a new era of Single
-Window GUI. Those steps have a form of refactoring as well as a new 
parallel simple Single-Window GUI prototype. I believe it's one big step 
forward and I am looking forward to further development of which I would 
like to be a part.




Next Steps:
All these following points assume that the main functionality is working. In
other words, we must have a merged main refactoring PR [2] and a merged PR 
[3](https://github.com/OSGeo/grass/pull/1789) aiming at the implementation 
of the AuiNotebook closing event. Then several improvements are possible 
(and probably necessary): 

   * Enable undocking the Map Display notebook tab to a separate window. It 
   will allow each user to use the Single-Window GUI as the Multi-Window 
   GUI. 
   * Fix switching to the Console pane in an automatic notebook if any 
   information is written there. 
   * Check/test if workspaces are functioning properly. 
   * Focus on a newly added Map Display tab in the Display pane (now it may 
   not be clear at first glance that it has been added). 
   * Modify the appearance for the dark mode. Some parts are ugly and 
   illegible (names of AuiNotebook tabs, names of panes, ugly gradients 
   etc.). 
   * Add the option for starting GRASS as the Single-Window GUI => we want 
   GRASS geeks to try it out. :-) 
   

Other improvements mainly concern the organization of widgets and possible 
ideas for the future: 

   * It is necessary to change the rendering of the 3D View panel. Now the 3
   D View pane is added as another panel under the Display tab - very 
   problematic in terms of space. 
   * A part of the Console pane in the startup Single-Window layout is not 
   visible. We should completely reorganize the Console tab, such as the 
   Output window and Command prompt data outputs go into two separate tabs. 
   * If both Map Display tabs are displayed side by side, the status bar 
   cannot fit in the space. The solution is to create a separate dialog, 
   which will contain a check box and other settings for the Map Display 
   notebook tab. 
   * Each user should be able to choose a convenient layout of widgets and 
   save this setting for future sessions. It should be possible via 
   perspectives. 
   * Creating, saving, and selecting perspectives along with switching to 
   dark mode could be part of a new tab menu called "View". 
   

Permanent links and screenshots can be found at [4] and [5].




[1] https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/SingleWindow
(https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/SingleWindow)

[2] ​https://github.com/OSGeo/grass/pull/1675
(https://github.com/OSGeo/grass/pull/1675)

[3] https://github.com/OSGeo/grass/pull/1789
(https://github.com/OSGeo/grass/pull/1789)

[4] https://trac.osgeo.org/grass/wiki/GSoC/2021/SingleWindowLayout#
FinalReport
(https://trac.osgeo.org/grass/wiki/GSoC/2021/SingleWindowLayout#FinalReport)

[5] https://trac.osgeo.org/grass/wiki/GSoC/2021/SingleWindowLayout#
BrandnewScreenshotsofSingle-WindowGUI
(https://trac.osgeo.org/grass/wiki/GSoC/2021/SingleWindowLayout#BrandnewScreenshotsofSingle-WindowGUI)




Best,

Linda Kladivova


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/soc/attachments/20210822/cce0a127/attachment-0001.html>


More information about the SoC mailing list