wiki:wxGUIDevelopment/RedesigningStatusbar

Mini project 2022: Redesigning a map display status bar combo box into a new settings dialog

Title: Redesigning a map display status bar combo box into a new settings dialog
Student Name: Linda Kladivova
Organization: OSGeo - Open Source Geospatial Foundation
Mentor Name: Anna Petrasova, Martin Landa, Vaclav Petras
GitHub Repository: view repository
Budget: 1000 € (via GRASS GIS Student Grants)

Abstract

The project builds on the work started within the GSoC 2021 project called First steps towards the GRASS GIS Single-Window GUI. Within this coding period, a simple prototype of Single-Window GUI was proposed and partly implemented. It looks good at first glance from screenshots, however, there are many shortcomings and missing features that need to be removed/implemented to provide the Single-Window GUI layout as an optional mode in version 8.2.0.

Goal

The core part of the work will be devoted to the reorganization of the map display status bar. At the moment, the status bar at the bottom of the map display window consists of a text section, a combo box, a mask and a check box. For the Single-Window GUI, the number of widgets must be reduced so that the check box on the right side of the status bar is not shrunk. The solution is to cancel the combo box occupying too much space and implement a new settings dialog accessible from the top map display toolbar. So, the goal of the project is to create a fully functional testable Single-Window GUI mode that addresses the map display window settings through a new dialog.

A nice description of how it could look like is here: https://github.com/OSGeo/grass/issues/2017 .

Timeline

Time Period

Milestones

Tasks

Status

January 3 - January 9
Week 1

New Map Display settings dialog


DONE

January 10 - January 17
Week 2

Mask widget


DONE

January 17 - January 23
Week 3

Mask widget

Use defined projection checkbox


DONE
DONE

January 24 - January 30
Week 4

Use defined projection checkbox


DONE

January 31 - February 6
Week 5

Customize statusbar from Map Display settings


DONE
DONE

February 7 - February 13
Week 6

Customize statusbar from Map Display settings


DONE
DONE

February 14 - February 20
Week 7

Customize statusbar from Map Display settings


DONE
DONE

February 21 - February 27
Week 8

Customize statusbar from Map Display settings


DONE

Weekly reports

Week 1

1) What did I complete this week?
This week I worked on the new Map Display settings dialog which is accessible from the Map Display toolbar. I created a separate file for this purpose and proceed to move checkboxes from the Map Display status bar there - Render, AlignExtent, Resolution, and ShowRegion. The Render checkbox is also still accessible through the status bar, however other checkboxes were removed from the status bar combo box and are further available only from Map Display settings, for more info please see https://github.com/OSGeo/grass/pull/2031. Furthermore, I and Tomas Zigo managed to fix the closing event for the Map Notebook tab in the Single-Window GUI (see https://github.com/OSGeo/grass/pull/2072).

Map Display Settings dialog after https://github.com/OSGeo/grass/pull/2031

2) What am I going to achieve for next week?
Now it's time to move more complicated items from the status bar combo box. First I am gonna start to work on the Mask which will be newly placed to the main window status bar. It seems like a more complicated task.

3) Is there any blocking issue?
No, it isn't.

Week 2

1) What did I complete this week?
This week I have worked on moving the Mask widget to the main status bar (https://github.com/OSGeo/grass/pull/2089). It has shown to be quite a complicated task because we need to change the way of how the Mask in status bar is updated. In addition, I have opened the PR on moving the "Use defined projection" checkbox to our new Map Display settings dialog (https://github.com/OSGeo/grass/pull/2087).

2) What am I going to achieve for next week?
I am gonna finish the above-mentioned PRs. There is still quite lots of work and thinking - mainly on Mask.

3) Is there any blocking issue?
No, it isn't. Just regarding the rest of the week :-) - I am leaving for the weekend skiing holiday today so I will start working again on Monday.

Week 3

1) What did I complete this week?
Even though the first part of the week was a bit less productive due to the illness I am finishing with moving the Mask widget to the main status bar (https://github.com/OSGeo/grass/pull/2089) and also plan to get another "last-week" PR https://github.com/OSGeo/grass/pull/2087 merged early. In the meantime, I also fixed the error shown in the console after clicking on "Display geometry" option in Map Display statusbar combobox, see https://github.com/OSGeo/grass/pull/2106) and today I opened the PR related purely to the Single-Window GUI- focusing the Console pane when console content has been changed (https://github.com/OSGeo/grass/pull/2121).

2) What am I going to achieve for next week?
I would like to start working on the content of the status bar page in Map Display settings.

3) Is there any blocking issue?
No, it isn't.

Week 4

1) What did I complete this week?
This week the PR devoted to moving the Mask widget to the main status bar was finally merged (https://github.com/OSGeo/grass/pull/2089). It means that now the Mask button is a part of the main window status bar and GUI much better reacts to any change related to Mask (creation, removal). Another merged PR fixes the behavior of Single-Window GUI when console content has been changed (https://github.com/OSGeo/grass/pull/2121). It means that the Console pane (if part of any notebook) is focused whenever it can tell us something important.

In the meantime, I was working on https://github.com/OSGeo/grass/pull/2087 which is still not finished since we need to discuss further proceeding with Anna. This PR is a bit related to the Projection page which is nowadays a part of GUI settings but we plan to move it to Map Display settings. It is quite a big step because we also change the logic (general settings vs. local settings) and we need to first discuss it so we plan the video call.

2) What am I going to achieve for next week?
The task for the next week is mainly to finish https://github.com/OSGeo/grass/pull/2087 and to start working on a new bigger PR related to the Projection page. Last but not least we need to decide on the final appearance of Map Display settings.

3) Is there any blocking issue?
No, it isn't.

Week 5

1) What did I complete this week?
On Thursday we had a videocall with Anna, Vashek and Martin and we discussed how to arrange further work. We revised our priorities and put off the coding related to move of Projection page for two last project weeks. Now the priority is the statusbar combobox removal. So I have started to work on two PRs - the first one (https://github.com/OSGeo/grass/pull/2155) projects all changes to other Map Display applications (as Map Swipe and others) because before further work we need to unify our code a bit; while the second PR implements statusbar settings via radiobuttons and also removes the combobox. For more info please see https://github.com/OSGeo/grass/pull/2153.

In the meantime, I also finished https://github.com/OSGeo/grass/pull/2087 which moves "Use defined projection" checkbox to Map Display Settings.

2) What am I going to achieve for next week?
The main task for the next week is to finish both opened PRs. It will lead to entire statusbar combobox removal in all Map Display related applications because everywhere the Map Display Settings dialog will be newly available. I will also create a new icon for Map Display settings since the currently used icon is not suitable (we already use the same icon e.g. in Map Swipe for the purpose of settings).

3) Is there any blocking issue?
No, it isn't.

Week 6

1) What did I complete this week?
This week was mostly about finishing PR https://github.com/OSGeo/grass/pull/2155 which projects all changes to other Map Display applications. I am still working on combobox removal and moving stuff to Map Display settings (https://github.com/OSGeo/grass/pull/2153). Some problems have occured here - we need to take into account two things: other Map Display apps with a different number of elements in statusbar combobox and possible dynamic change of elements in statusbar combobox (when switching to 3D). Both these things complicate the task.

In the meantime I fixed a bug caused by https://github.com/OSGeo/grass/pull/2155 - see https://github.com/OSGeo/grass/pull/2190 and improved statusbar update when 'Use defined projection' toggled (https://github.com/OSGeo/grass/pull/2178).

2) What am I going to achieve for next week?
The main task for the next week is to finish the PR https://github.com/OSGeo/grass/pull/2153 for combobox removal. There is still quite much work to do. I also worked on a new icon for Map Display settings on Sunday so I plan to open another PR for that.

3) Is there any blocking issue?
No, it isn't.

Week 7

1) What did I complete this week?
This week was mostly about finishing PR https://github.com/OSGeo/grass/pull/2153 which creates the new radiobox for statusbar settings. I was a bit unsure how to cope with this task so I tried several ways, hopefully now I am on the right way and I will finish this PR soon. In the meantime I also created the new icon for Map Display settings (you can take a look at https://github.com/OSGeo/grass/pull/2214) and I also opened the PR https://github.com/OSGeo/grass/pull/2216 improving a bit the design of Single-Window GUI at startup. This PR will be probably merged soon as well.

2) What am I going to achieve for next week?
The main task for the next week is to finish the PR https://github.com/OSGeo/grass/pull/2153. The one chapter about combobox removal (statusbar redesign) will be finished then. However, there are still many things missing. The Projection page from GUI settings should be moved to Map Display settings, for instance, or EPSG text widget could be added to the main statusbar etc..

3) Is there any blocking issue?
No, it isn't.

Week 8

1) What did I complete this week?
The PR https://github.com/OSGeo/grass/pull/2153 redesigning the status bar combobox into radiobox settings in Map Display settings is finally almost finished. In the meantime, I also contributed with PR https://github.com/OSGeo/grass/pull/2216 improving a bit the design of Single-Window GUI at startup. So the task for this project is almost finished (will be entirely finished next week). I am going to share the final report for the whole project soon.

2) What am I going to achieve for next week?
I am going to merge the https://github.com/OSGeo/grass/pull/2153 and write the final project report.

3) Is there any blocking issue?
No, it isn't.

Final Report

Title: Mini project 2022: Redesigning a map display status bar combo box into a new settings dialog
Community: GRASS GIS - OSGeo

Abstract:
Especially for Single-Window GUI, the Map Display status bar needs to be lightened up a bit since in the case of opening more Map Display notebook pages the check box on the right side of the status bar gets shrunk. The solution is to remove the combo box in the status bar occupying too much space and implement a new Map Display settings dialog accessible from the top map display toolbar.

The state of the art BEFORE the start of Mini project:
At this moment, the status bar at the bottom of the Map Display window consists of the text/widget section, the combo box, the mask and the check box. For the Single-Window GUI, the number of widgets must be reduced so that the check box on the right side of the status bar is not shrunk.

The state of the art AFTER Mini project:
The new Map Display settings dialog is introduced. The main task of this dialog is to manage General Map Display settings and status bar settings. It implies that the status bar combobox is not needed anymore because we can find all Map Display settings including status bar customization in the new dialog.

Next Steps:
Other possible improvements related to statusbar stuff could be:

  • Moving Projection page from GUI settings to the Map Display statusbar settings
  • Adding context menu for statusbar customatization
  • Adding EPSG code label of current location to the main statusbar
  • Merging „Go to cordinates X,Y“ and „Coordinates“ item into one widget

Possible steps for Single-Window GUI in general:

  • 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.
  • Check/test if workspaces are functioning properly.
  • Modify the appearance for the dark mode. Some parts are ugly and illegible (names of AuiNotebook tabs, names of panes, ugly gradients etc.).
  • It is necessary to change the rendering of the 3D View panel. Now the 3D 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.
  • 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:

Pull requests related to the statusbar redesign:

Title Pull Request Issue
wxGUI: Projection checkbox from Map Display statusbar moved to Map Display Settings https://github.com/OSGeo/grass/pull/2087 - MERGED
wxGUI: Move SbMask widget to main window statusbar https://github.com/OSGeo/grass/pull/2089 - MERGED
wxGUI: Fix the error when statusbar does know statusbarItem property "region" https://github.com/OSGeo/grass/pull/2106 - MERGED
wxGUI: Statusbar settings as a part of Map Display Settings https://github.com/OSGeo/grass/pull/2153 - MERGED
wxGUI: Use Map Display settings in other Map Display applications https://github.com/OSGeo/grass/pull/2155 - MERGED
wxGUI: update statusbar when projection settings checkbox has been toggled https://github.com/OSGeo/grass/pull/2178 - MERGED
wxGUI: Fix statusbar mode index for GetMode method https://github.com/OSGeo/grass/pull/2190 - MERGED
wxGUI: New toolbar icon for accessing Map Display settings dialog https://github.com/OSGeo/grass/pull/2214 - MERGED

Pull requests related to the Single-Window GUI mode:

Title Pull Request Issue
wxGUI Single-Window: Focus the Console pane when console content has been changed https://github.com/OSGeo/grass/pull/2121 - MERGED
wxGUI Single-Window: Make Tools pane wider after startup https://github.com/OSGeo/grass/pull/2216 - MERGED

Weekly Reports:
https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/RedesigningStatusbar

Twitter thread presenting this Mini-project:
https://twitter.com/GRASSGIS/status/1494289478999019523?s=20&t=IxQDRvpI0Cb82I4DfCEiBA

Brand new Screenshots of Map Display Settings dialog

General page of Map Display Settings dialog Radiobox in Map Display settings for statusbar customization Radiobox in Map Display settings for statusbar customization (Multi-Window GUI)

Last modified 3 months ago Last modified on Mar 3, 2022, 1:26:44 AM

Attachments (4)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.