wiki:GSoC/2021/SingleWindowLayout

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: OSGeo - Open Source Geospatial Foundation
Mentor Name: Anna Petrasova, Martin Landa, Vaclav Petras, Stefan Blumentrath
GSoC proposal: View proposal
GitHub Repository: 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

Time Period

Milestones

Tasks

Status

May 17 - 6 June
Community Bonding

  • 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
  • Contribute some feature related to refactoring - https://github.com/OSGeo/grass/pull/1591
  • Create a parallel environment for independent development of the Single-Window GUI - https://github.com/OSGeo/grass/pull/1604


OK
OK
OK
OK
OK
OK
OK

June 7 - June 13
Week 1

The basic skeleton: arrangement of basic widgets

  • According to this arrangement:
    • Decide which panel used for the content pane
    • Decide which library will be more suitable for our development


OK


OK

OK

June 14 - June 20
Week 2

wxGUI refactoring




OK

WIP

June 21 - June 27
Week 3

wxGUI refactoring




WIP

June 28 - July 4
Week 4

wxGUI refactoring:



WIP
WIP

July5 - July 11
Week 5

wxGUI refactoring:



WIP
WIP

July 12 - July 18
Week 6

wxGUI refactoring:

Bug fix:

Adapting the code for Single-Window GUI:

evaluation

WIP
WIP

OK



WIP

July 19 - July 25
Week 7

wxGUI refactoring:

Adapting the code for Single-Window GUI:


WIP
WIP



OK

July 26 - August 1
Week 8

wxGUI refactoring:

Single-Window GUI:


OK
WIP



WIP

August 2 - August 8
Week 9

wxGUI refactoring:

Single-Window GUI:


ready to merge (waiting for GRASS 8 release)



WIP
WIP

August 9 - August 15
Week 10

Single-Window GUI:

Changes due to Single-Window but relevant also for Multi-Window GUI:



OK
OK
WIP, WILL BE FINISHED AFTER GSOC



OK
OK
WIP, WILL BE FINISHED AFTER GSOC

August 16 - August22
Week 11

  • Finishing up, testing, documentation
  • Finalizing the existing work
  • Submitting the final work

Bonding period report

Introduce myself in dev list, get in contact with my mentors and discuss the design of functions
After being accepted as a student for GSoC 2021, on May 25 I introduced myself and my project to grass dev lists (1). I also set up the video call with my mentors - Anna Petrasova, Vaclav Petras, Martin Landa, and Stefan Blumentrath that I already well know from the previous year, and our other cooperation regarding my master thesis. We met on May 25 and discussed various Single-Window GUI options and their possible shortcomings. We decided to set up a parallel environment determined for the independent Single-Window layout development. Finally, we agreed on our regular video call time (once per two weeks).

Prepare the wiki page about the project
I created my project wiki page (2) and added the link to the GSoC 2021 Accepted proposals page (3). The wiki page includes - General information about the project (title, mentors, links to the proposal and GitHub repository, etc.), a brief description of the project, goal, and timeline of tasks and deliverables. I will keep my wiki page up to date and will add weekly reports following the instructions in the GSoC Recommendations for Student page (4).

Set up the GitHub repository of the project
I already have GitHub GRASS fork in usage (5) so I only added the link to the GSoC 2021 Accepted proposals page (3), to my wiki page (2) and shared it with my mentors. My repository is licensed under the GNU General Public License v3.0, according to the license of GRASS GIS.

Two PRs regarding Single-Window GUI already merged
The first PR https://github.com/OSGeo/grass/pull/1591 deals with general refactoring. The second one creates the parallel environment where I am gonna further independently develop the Single-Window GUI, see https://github.com/OSGeo/grass/pull/1604. I also created the PR https://github.com/OSGeo/grass/pull/1598 enhancing GRASS for version 8.0. It implements easier switching between mapsets in different locations since we would like GRASS to be as user-friendly as possible. All mentioned PRs are already merged to master. Meantime, I played with wx.aui demo in order to create a prototype of the Single-Window GRASS GUI. However, it is still not decided if we use wx.lib.agw.aui python library or traditional wx.aui C++ library. Therefore, I also compared those approaches. The traditional wx.AUI seems the same in terms of functionality except missing pane minimizing. Next week we need to decide which attitude should be selected.

Plans for next week:

  • Start developing Single-Window GUI
  • Integrate main parts that do not involve much refactoring
  • Have a meeting with mentors on Wednesday
  • Decide which library will be used (but could be probably changed even later)

(1) https://lists.osgeo.org/pipermail/grass-dev/2021-May/095168.html
(2) https://trac.osgeo.org/grass/wiki/GSoC/2021/SingleWindowLayout
(3) https://wiki.osgeo.org/wiki/Google_Summer_of_Code_2021_Accepted
(4) https://wiki.osgeo.org/wiki/Google_Summer_of_Code_Recommendations_for_Students
(5) https://github.com/lindakladivova/grass

Weekly reports

Week 1

1) What did I complete this week?
This week I started to develop Single-Window GUI in the prepared parallel environment. I arranged basic widgets (Data Catalog, Display, Modules, Console, Python), you can have a look at this PR: https://github.com/OSGeo/grass/pull/1621. After a discussion with mentors and other members of the GRASS community, it was finally decided to use Map Display as the center content pane. At the same time, we decided to use the python wx.lib.agw.aui library for Single-Window GUI development. This library contains a bunch of interesting functions as e.g. grouping dockable panes into notebooks. The state after the arrangement of the basic widgets looks as follows:

Arrangement of the widgets except Map Display

At the same time, I also fixed a bug https://github.com/OSGeo/grass/issues/1636 (https://github.com/OSGeo/grass/pull/1637).

2) What am I going to achieve for next week?
The task for the next week will be to allow to create a new Map Display as a wx.Panel (now it is only in the form of wx.Frame) and integrate this Map Display as a center content pane.

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

Week 2

1) What did I complete this week?
I focused on the GUI refactoring. In order to add Map Display to the notebook widget, we need to have it in the form of wx.Panel. I divided the work into several steps.

  • Meantime, I started more complex PR changing the way the Map Display is built (see https://github.com/OSGeo/grass/pull/1656). The core lies in adding the intermediate wx.Panel widget. This PR aims at more general refactoring of Map Display creation, do not change the code in the Single Layout parallel environment - adapting the S-W GUI is planned to be another step forward.

2) What am I going to achieve for next week?
I plan to finish the refactoring of Map Display related stuff (see https://github.com/OSGeo/grass/pull/1656) and utilize it in the Single-Window GUI environment. It will lead to a new Map Display notebook widget (composed of wx.Panel Map Displays). This notebook will be then used as the content pane.

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

Week 3

1) What did I complete this week?
I focused on the GUI refactoring. In order to add Map Display to the notebook widget, we need to have it in the form of wx.Panel. This week I worked quite hard on the main refactoring PR (see ​https://github.com/OSGeo/grass/pull/1675). The core lies in adding the intermediate wx.Panel widget. However, this PR influences quite many things much more than we first expected. I am changing the way how Map Display is built which has an impact on single map display stuff as well as double frame stuff. So that, this PR also requires very intense testing since all things then go straight to the master - adapting the independent Single-Window GUI environment is planned to be another step forward.

2) What am I going to achieve for next week?
I plan to finish the refactoring of Map Display related stuff (see https://github.com/OSGeo/grass/pull/1675) and test this PR very intensively.

3) Is there any blocking issue?
No, it is not. However, next week on Saturday I am going on four day holiday to Slovakia. I hope I will be able to merge this big refactoring PR by Friday.

Week 4

1) What did I complete this week?
Similarly as the last week, I focused on the GUI refactoring. I worked on the main refactoring PR (see ​https://github.com/OSGeo/grass/pull/1675). In terms of the main Map Display I am done here. However, me and my mentors realized that changes influence also other Map Frames - particularly g.gui.rdigit, d.mon, Map Swipe, Ground Control Point and IClass frame.

There were two possible ways how to proceed. First, I started with the statusbars for all the frames that we need newly to be created based on wx.StatusBar widget (see https://github.com/OSGeo/grass/pull/1689). Then we came up with another concept, namely delegating methods using metaprogramming. Although this path seemed cheap at first (we talked about it very intensively on videocall on Wednesday), after a few hours of studying, we came to the conclusion that it is inappropriate in our case. And this decision subsequently opened PR https://github.com/OSGeo/grass/pull/1689 again.

Meantime, I also discovered the bug related to hiding statusbar and toolbars. Hiding does not work properly for above-mentioned map frames as e.g. Map Swipe. I set up the issue https://github.com/OSGeo/grass/issues/1691.

To sum it up, this week was not so productive in terms of code, but key in determining what to do next and especially how.

2) What am I going to achieve for next week?
In the next step, the focus will be on the completion of PR https://github.com/OSGeo/grass/pull/1689, which will then allow the completion of the large PR ​https://github.com/OSGeo/grass/pull/1675.

3) Is there any blocking issue?
No, it is not. However, as I have already mentioned I am on holiday from Saturday to Tuesday. I am looking forward to new energy coming after the rest.

Week 5

1) What did I complete this week?
I worked mainly on the PR https://github.com/OSGeo/grass/pull/1689 which was again opened after our discussion last week. Anna took care of solving the bug concerning hiding and showing status bar and toolbars https://github.com/OSGeo/grass/issues/1691 and then based on these changes I rebased the https://github.com/OSGeo/grass/pull/1689. This PR is now in the reviewing process and will be early merged. I am also still working on the main refactoring PR ​https://github.com/OSGeo/grass/pull/1675. Unfortunately, many things are influenced and need to be changed. These changes are so connected together that it is not possible to divide PR https://github.com/OSGeo/grass/pull/1675 into several different PRs... Meantime, I also discovered the bug in the Show comp. extent option in the status bar and corrected it (see PR https://github.com/OSGeo/grass/pull/1717 and issue https://github.com/OSGeo/grass/issues/1714).

2) What am I going to achieve for next week?
After merging PR https://github.com/OSGeo/grass/pull/1689, I will again focus on PR https://github.com/OSGeo/grass/pull/1675.

3) Is there any blocking issue?
No, it is not.

Week 6

1) What did I complete this week?
This week was very important. In the first part, I worked on https://github.com/OSGeo/grass/pull/1675 which is already done in terms of the main Map Display panel but needs many other changes related to other widgets. On Wednesday's video call we decided to work on the local merged branch because it will probably take some time to merge https://github.com/OSGeo/grass/pull/1675 (also with regard to the new G8 release). So, I set up the new PR https://github.com/OSGeo/grass/pull/1732 mining from both refactoring PRs https://github.com/OSGeo/grass/pull/1675, https://github.com/OSGeo/grass/pull/1689. By the time we merge https://github.com/OSGeo/grass/pull/1675, I can solve here many things related to the Single-Window layout. I have already composed the new Map Display panel and started to repair existing events and methods and implement new methods. There are several basic things I would like to address in this PR:

  • repair GRASS GIS exit (generally speaking all closing stuff is broken now)
  • adding maps to map display does not work when switching to a different location
  • adding and removing 3D View does not work
  • remove methods applied on wx.Frame
  • implement new events or repair the existing ones:
    • when adding a new Display tab automatically focus on the related Map notebook tab
    • when switching Display tabs, Map notebook tabs are switched as well
    • when moving Map notebook tabs, the index is remembered, so switching between Display tabs switch Map tabs correctly
    • when switching Map notebook tabs, Display tabs are switched as well
    • Map notebook switching process works from the beginning (not needed to switch Display tabs first)
    • closing Map notebook tab closes the related Display tab
    • closing Display tab closes the related Map notebook tab
  • when renaming the Display tab, the related Map notebook tab is renamed (regardless of the current index)

I have also noticed a small issue concerning GCP toolbars and I set up the issue for it (see https://github.com/OSGeo/grass/issues/1731).

2) What am I going to achieve for next week?
I am gonna work on coding basic functionalities for the Single-Window layout on my locally merged branch. Although, it is not possible for my mentors to test it, I will share changes to the PR https://github.com/OSGeo/grass/pull/1732 so we can at least discuss them.

3) Is there any blocking issue?
No, It is not.

Week 7

1) What did I complete this week?
This week I have been working on the coding of basic functionalities for the Single-Window layout on my locally merged branch. First I set up several Issues for those, however, since I am still working on my local branch, I eventually decided to address more Issues within one PR (so previously created Issues were merged into two larger ones - see https://github.com/OSGeo/grass/issues/1735, https://github.com/OSGeo/grass/issues/1750).

I integrated the Map Display into a new AuiNotebook and fixed the existing events - see PR https://github.com/OSGeo/grass/pull/1732. These changes are ready to merge.

I also created two Issues that will be important after the integration of basic functionalities and the creation of new events for the AuiNotebook center pane. The first one is kind of a discussion Issue. We can share suggestions there for what the startup GUI could look like. I have already added some proposals based on my local branch, see https://github.com/OSGeo/grass/issues/1747. I am aware of the priority of the G8 release, so I feel it is something to be discussed later on.

The second Issue https://github.com/OSGeo/grass/issues/1748 talks about an important enhancement that allows a user to undock the AuiNotebook pane into the wx.Frame widget (will be enabled through a button probably). This enhancement is very crucial as it will allow users who like the Multi-Window layout to continue using it even within this new GUI. It will probably be the last functionality I will complete within GSoC - or it is at least a plan - there might be some shortcomings in the refactoring PRs needed to be repaired, as big changes often cause minor errors.

2) What am I going to achieve for next week?
I am gonna work on the implementation of new events for AuiNotebook (see https://github.com/OSGeo/grass/issues/1750) and I also need to go back to PR https://github.com/OSGeo/grass/pull/1675. It needs more testing and there still remains to integrate wx.Panel into g.gui.photo2image and g.gui.image2target GUI tools. I also have some problems with closing events for independent GUI Map Displays here that need to be sorted out.

3) Is there any blocking issue?
No, It is not.

Week 8

1) What did I complete this week?

The success of this week lies in the merge of 2 PRs - the refactoring ​https://github.com/OSGeo/grass/pull/1689 and the https://github.com/OSGeo/grass/pull/1732 dealing with the basic map panel integration to Single-Window GUI. Just before that I had to make 2 rebases since my mentor Anna had merged a different refactoring PR https://github.com/OSGeo/grass/pull/1729 which influenced PR ​https://github.com/OSGeo/grass/pull/1689 as well as ​https://github.com/OSGeo/grass/pull/1675.

In the second half of the week I went back to the PR ​https://github.com/OSGeo/grass/pull/1675. I integrated wx.Panel to three remaining tools namely g.gui.photo2image, g.gui.image2target, g.gui.example. I have also started to test this PR and written down shorcomings we will discuss and probably fix with the help of my mentors.

We had the video call on Wednesday where we went through possible options of startup layout I put here: https://github.com/OSGeo/grass/issues/1747 and decided that the third option is the most suitable one and thus will be implemented. We use "Perspectives" for this purpose.

2) What am I going to achieve for next week?

The priorities for the next week are first of all to test PR ​https://github.com/OSGeo/grass/pull/1675, secondly to create a startup Single-Window GUI perspective and lastly to develop event handlers for map AuiNotebook. For the second point I am going to study the wx.lib.agw.aui concept of so-called perspectives.

3) Is there any blocking issue?
No, It is not.

Week 9

1) What did I complete this week?

First of all, I completed the big refactoring PR ​https://github.com/OSGeo/grass/pull/1675. It is ready for review and will be merged after GRASS 8 release.

Secondly, I implemented the layout which will be used for startup https://github.com/OSGeo/grass/pull/1775. It looks exactly like the third option presented here: https://github.com/OSGeo/grass/issues/1747. Unfortunately, I am a bit stuck here with size settings for the automatic notebook I made. As for this PR, we had a video call with Anna on Thursday and agreed to not deal with perspectives now because there are still more crucial things that need to be fixed or reorganized. Lastly, I started to work on events. This PR https://github.com/OSGeo/grass/pull/1780 deals with the first of two events in this Issue https://github.com/OSGeo/grass/issues/1750 - AuiNotebook changing event.

2) What am I going to achieve for next week?

The priorities for the next week are first to finish PRs https://github.com/OSGeo/grass/issues/1747 and https://github.com/OSGeo/grass/pull/1780 and to set up a new PR for the AuiNotebook closing event. We also decided to move the New Display button to a different place and to have one independent toolbar for each Display tab. So if some time remains, I would also implement this reorganizing stuff. But generally speaking, the closing event for AuiNotebook is the last thing that is needed to do for the working Single-Window GUI prototype.

3) Is there any blocking issue?
No, It is not.

Week 10

1) What did I complete this week?

First of all, I fixed the size of the automatic notebook which is used for the startup layout. The related PR https://github.com/OSGeo/grass/pull/1775 has still some minor shortcomings with cmd warnings messages but we decided to let it be for now since it would require more intervention in the construction of the map panel status bar widget which is anyway likely to be very simplified or replaced by the settings dialog in the future. Here you can see the suggested startup layout: Single-Window GUI startup layout

Secondly, I implemented the new changing tab event for the center AuiNotebook. You can have a look at PR https://github.com/OSGeo/grass/pull/1780 which is already merged. To provide the fully working GRASS Single-Window GUI prototype, I also opened the PR https://github.com/OSGeo/grass/pull/1789 which addresses several smaller things related to the AuiNotebook closing event. This PR is not merged yet but I plan to have it done by the end of GSoC. Merging this PR will close the Issue https://github.com/OSGeo/grass/issues/1750 with the new AuiNotebook events.

Thirdly, I moved the NewDisplay button to the upper Tools toolbar, see the PR https://github.com/OSGeo/grass/pull/1783 (merged). Lastly, each layer tree is about to have one independent toolbar. I have coded it in the PR https://github.com/OSGeo/grass/pull/1785 which is not in the master branch yet.

2) What am I going to achieve for next week?

The priorities for the next week are mainly to finish PRs https://github.com/OSGeo/grass/pull/1789 and https://github.com/OSGeo/grass/pull/1785. Unfortunately, we still have not merged the main refactoring PR https://github.com/OSGeo/grass/pull/1675 because it waits for the GRASS 8 release. It probably gets into the GRASS dev version after GSoC.

Anyway, I would also like to prepare some startup settings that allow GRASS geeks to try out the GRASS Single-Window prototype. And of course, I am going to finish the final evaluation and sum up my work to the final GSoC report.

3) Is there any blocking issue?
No, It is not. Please, if you would like to know more info, have a look at my Twitter thread https://twitter.com/GRASSGIS/status/1423254298587275264 where I presented some screenshots of the prepared GUI. :-)

Final Report

Title: First steps towards a new GRASS GIS Single-Window GUI
Community: GRASS GIS - OSGeo

Abstract:
This 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). All main functionality will be put into operation after successful merge of https://github.com/OSGeo/grass/pull/1675 and 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 whole situation after startup is captured in Figure 3.

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 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 https://github.com/OSGeo/grass/pull/1789 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 and you can also have a look at new brand screenshots in Figures 4,5,6,7,8.

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 https://github.com/OSGeo/grass/pull/1675 and a merged PR https://github.com/OSGeo/grass/pull/1789 aiming at the implementation of 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 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.
  • 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:

Pull requests related to the wxGUI refactoring:

Title Pull Request Issue
wxGUI: Split widget initialization from notebook logic https://github.com/OSGeo/grass/pull/1591 - MERGED
wxGUI: refactoring: build display status bar based on wx.StatusBar widget https://github.com/OSGeo/grass/pull/1646 - MERGED
wxGUI: refactoring: Map Display inheriting from wx.Panel https://github.com/OSGeo/grass/pull/1675 - WILL BE MERGED AFTER GRASS 8 RELEASE
wxGUI: refactoring: build GUI tools' status bars based on wx.StatusBar widget https://github.com/OSGeo/grass/pull/1689 - MERGED

Pull requests related to the creation of the Single-Window GUI prototype:

Title Pull Request Issue
wxGUI: create parallel wx.frame for Single Window layout development https://github.com/OSGeo/grass/pull/1604 - MERGED
wxGUI: Single-Window GUI: arrangement of basic widgets https://github.com/OSGeo/grass/pull/1621 - MERGED
wxGUI: Single-Window GUI: Integrate new map display wx.Panels into a AuiNotebook center pane https://github.com/OSGeo/grass/pull/1732 https://github.com/OSGeo/grass/issues/1735 MERGED
wxGUI/Single-Window: arrange a startup GUI https://github.com/OSGeo/grass/pull/1775 https://github.com/OSGeo/grass/issues/1747 MERGED
wxGUI/Single-Window: New change page event for AuiNotebook https://github.com/OSGeo/grass/pull/1780 https://github.com/OSGeo/grass/issues/1750 MERGED
wxGUI/Single-Window: New close page event for AuiNotebook https://github.com/OSGeo/grass/pull/1789 https://github.com/OSGeo/grass/issues/1750 WIP, WILL BE FINISHED AFTER GSOC

Other related PRs that I've made:

Title Pull Request Issue
wxGUI: SaveToFile() missing 1 required positional argument https://github.com/OSGeo/grass/pull/1637 https://github.com/OSGeo/grass/issues/1636 MERGED
wxGUI: Workspace save fails with SbManager has no IsShown https://github.com/OSGeo/grass/pull/1665 https://github.com/OSGeo/grass/issues/1657 MERGED
wxGUI: MapSwipe window has wrong title https://github.com/OSGeo/grass/pull/1692 https://github.com/OSGeo/grass/issues/1690 MERGED
wxGUI/MapSwipe: Show comp. extent option in statusbar does not work https://github.com/OSGeo/grass/pull/1717 https://github.com/OSGeo/grass/issues/1714 MERGED
wxGUI: NewDisplay button moved to LMToolsToolbar https://github.com/OSGeo/grass/pull/1783 - MERGED
wxGUI: Each layertree has its own display toolbar https://github.com/OSGeo/grass/pull/1785 - MERGED
wxGUI: new design for GNotebooks https://github.com/OSGeo/grass/pull/1801 - WIP, WILL BE FINISHED AFTER GSOC

The project that includes all PRs (not only mine) related to this problematics:
https://github.com/OSGeo/grass/projects/6

Weekly Reports:
https://trac.osgeo.org/grass/wiki/GSoC/2021/SingleWindowLayout

Twitter thread presenting the new Single-Window GUI prototype:
https://twitter.com/GRASSGIS/status/1423254298587275264

Screenshot of Multi-Window GUI

Multi-Window GUI

Brand new Screenshots of Single-Window GUI

Single-Window GUI startup layout after merging PRs #17853 and #1785 Map displays can be placed side by side Example of another possible widget arrangement Example of another possible widget arrangement All panes are minimized

Last modified 4 months ago Last modified on Aug 19, 2021, 10:03:13 AM

Attachments (8)