Version 47 (modified by 21 months ago) ( diff ) | ,
---|
Mini project 2023: Improving Single-Window GUI user experience
Title: | Improving Single-Window GUI user experience |
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 discussion with users and the usability testing of a new and old GUI, which took place in April 2022. The proposed work can be divided into two main topics - the reorganization of the Console pane and the implementation of the ability to undock a map window. Additionally, the project plans to address the topic of saving Single-Window GUI layouts to workspaces.
Goal
The core part of the work will be devoted to reorganizing the Console pane and implementing the ability to undock a map window. The first topic lies in ensuring a better visual separation of Console output and Command prompt functionality. Today, it is not clear which buttons belong to the Command prompt and which to the Output window. Moreover, in the Single-Window GUI layout, the widget with buttons managing the Command prompt is partly hidden after the GRASS launch. The graphical proposal for separating Console output and Command prompt functionality is included in https://github.com/OSGeo/grass/issues/2585 . Besides visual separation, accessing the command history with the Log File button is not intuitive and will be replaced by a button for simply exporting the entire command history.
Based on the results from usability testing, undocking and docking map windows is also essential functionality for users. This project aims to add a button to the map display toolbar enabling undock and dock map display windows. Adding this functionality will allow users to achieve a similar layout as in Multi-Window GUI if desired.
The last topic develops the idea that users should be able to save user-defined layouts in a Single-Window GUI within the workspace. This functionality is the first step for managing user-defined layouts in GRASS.
Timeline
Time Period | Milestones | |
---|---|---|
Tasks | Status | |
November 21 - November 25 | Undock and dock Map Display panel (enable using Single-Window as Multi-Window) |
|
November 28 - December 2 | Undock and dock Map Display notebook pane, replace Log File button in Console pane by Export history button
|
Merged
|
December 5 - December 9 | Undock and dock Map Display notebook pane, replace Log File button in Console pane by Export history button |
Merged
|
December 19 - December 23 | Undock and dock Map Display notebook pane, add input string to command prompt
|
Merged
|
January 2 - January 6 | Undock and dock Map Display notebook pane, add hint to command prompt
|
Closed (abandoned)
Merged
|
January 9 - January 13 | Undock and dock Map Display notebook pane, reorganize Console buttons
|
Merged
|
January 16 - January 20 | Undock and dock Map Display notebook pane, saving user-defined layouts within workspace files
|
Merged
|
January 23 - January 27 | Undock and dock Map Display notebook pane, saving user-defined layouts within workspace files |
Merged
|
Extending the GRASS mini project timeline | More testing and preparations for doctoral professional debate
|
|
Weekly reports
Week 1
1) What did I complete this week?
At the beginning of this week, I was a bit stuck on the Console reorganization topic (see Issue https://github.com/OSGeo/grass/issues/2585). As it is probably the most important topic of the project, for the next weeks we better clarified how the result should look like. To fully use the time between, I changed the timeline a bit and first started to work on the issue of map display page (un)docking. I set up the PR https://github.com/OSGeo/grass/pull/2667 for that topic and plan to continue on it next week. Moreover, I noticed a bug appearing when a user moves a map display notebook page (or wants to pull it out of a map display notebook).
2) What am I going to achieve for next week?
After more testing and fixing I would like to merge the above-mentioned PR dealing with Map Display page (un)docking - please see https://github.com/OSGeo/grass/pull/2667. Specifically, I need to test the behaviour of undocked map display panel when switched to 3D mode. In the meantime, I am going to prepare locally the branch dealing with Console panel reorganization. I would also like to address some small bugs I have revealed when working in Single-Window.
3) Is there any blocking issue?
No, it isn't.
Week 2
1) What did I complete this week? I was mainly working on PR https://github.com/OSGeo/grass/pull/2667 dealing with dock/undock map display functionality. This PR is finished and waits for the final review. Further, I started to work on the Console reorganization topic, specifically, I have set up the new PR https://github.com/OSGeo/grass/pull/2682 replacing the togglable "Log file" button with the "Export history" button. This first step is going to better steer the direction of Console reorganization.
2) What am I going to achieve for next week?
I plan to merge both above-mentioned PRs and proceed to work on the Console reorganization topic according to Issue https://github.com/OSGeo/grass/issues/2585. Not only it involves the widget reorganization itself, but it also improves user experience by adding >>> to the command prompt window.
3) Is there any blocking issue? No, it isn't.
Week 3
1) What did I complete this week?
I returned to the PR https://github.com/OSGeo/grass/pull/2667 dealing with dock/undock map display functionality because although the PR was finished in terms of functionality I am satisfied with the code. I have started with refactoring and created a new MapNotebook class in a separate file. I think for future maintenance it is an important step. I am still working on it.
This week I also finished PR https://github.com/OSGeo/grass/pull/2682 implementing the Export history button in the Console pane and I am waiting for the final mentor review.
2) What am I going to achieve for next week?
I hope I will finally start working on the Console reorganization issue. This topic should not be such time-consuming as docking functionality. On Thursday I am going on holiday (till Sunday) so I am going to extend a bit my project timeline.
3) Is there any blocking issue? No, it isn't.
Week 4
1) What did I complete this week?
I fully refactored the PR https://github.com/OSGeo/grass/pull/2667 dealing with dock/undock map display functionality and currently, this thing is almost finished. In addition, the PR https://github.com/OSGeo/grass/pull/2682 implementing the Export history button in the Console pane was approved. So these two PRs are finally approaching the merge.
I have started to work more intensively on the second major project topic which sounds basically "How to make the Console pane more user-friendly". I started by adding an input prompt sign to the Command prompt. This sign should help beginners notice the Command prompt and better understand the difference between the Command prompt and the Command output. For this purpose, I created the PR https://github.com/OSGeo/grass/pull/2718 which is still under process.
2) What am I going to achieve for next week?
Besides working on PR https://github.com/OSGeo/grass/pull/2718, I plan to more focus on the Console reorganization topic.
3) Is there any blocking issue? No, it isn't.
Week 5
1) What did I complete this week? The PR https://github.com/OSGeo/grass/pull/2682 implementing the Export history button in the Console pane was merged.
The first part of the week I worked on PR https://github.com/OSGeo/grass/pull/2718 which adds an input prompt sign to the command prompt widget. However, although it was our suggestion from https://github.com/OSGeo/grass/issues/2585, the intervention into the command prompt showed programmatically as very unfortunate - it was really hard to cover all cases of how the text in the command prompt could be managed. So, we decided to implement the task differently by showing a hint in the case that the command prompt is not focused. I think it is an even more user-friendly solution. It is already prepared for merging (see https://github.com/OSGeo/grass/pull/2728).
Meanwhile, I worked on adding "isDocked" parameter to workspace handling in the PR https://github.com/OSGeo/grass/pull/2667 dealing with dock/undock map display functionality. It was the thing I forget to consider. However, the workspace issue revealed another error in https://github.com/OSGeo/grass/pull/2667 related to closing undocked map display frame.
2) What am I going to achieve for next week?
The goal for the next week is to merge both - https://github.com/OSGeo/grass/pull/2728 and https://github.com/OSGeo/grass/pull/2667. Then I plan to create a PR on the Console reorganization according to the suggestion in https://github.com/OSGeo/grass/issues/2585.
3) Is there any blocking issue? There is one blocking error in https://github.com/OSGeo/grass/pull/2667 related to the erroneous closing of undocked map display frame (wrapped C/C++ object of type MapPageFrame has been deleted). I have already spent several hours to fix it but unsuccessfully. I will probably put it off now and go back later, with more ideas in my mind.
Week 6
1) What did I complete this week? I finished PR https://github.com/OSGeo/grass/pull/2728 which adds a hint to the Console prompt (it is already merged). Moreover, I opened a new PR https://github.com/OSGeo/grass/pull/2746 related to button reorganization in the Console pane.
2) What am I going to achieve for next week? The goal for the next week is to finish the Console reorganization topic by merging https://github.com/OSGeo/grass/pull/2746. I would also like to start working on the issue of perspectives (user-defined layouts). I plan to start by saving pane arrangements to workspace files.
3) Is there any blocking issue? There is still a problem with the PR https://github.com/OSGeo/grass/pull/2667 but it is not a blocking issue.
Week 7
1) What did I complete this week? We've been iterating a bit in the PR https://github.com/OSGeo/grass/pull/2746 related to button reorganization in the Console pane. It was important to agree with Anna and Vero on the final design and I think it is almost at the end in this regard - you can have a look at the related comments https://github.com/OSGeo/grass/pull/2746#issuecomment-1397322228. Moreover, I have been working on the last topic of my project which is the issue of perspectives (user-defined layouts). I have opened the PR https://github.com/OSGeo/grass/pull/2768 which saves the current Single-Window layout into a workspace file.
2) What am I going to achieve for next week? The next week should be the last week of my project according to the timeline. Therefore, the goal for the next week is to finish all opened PRs https://github.com/OSGeo/grass/pull/2746, https://github.com/OSGeo/grass/pull/2768 and https://github.com/OSGeo/grass/pull/2667.
3) Is there any blocking issue? No, it is not.
Week 8 - Extending the GRASS mini project timeline
The copy of the email from 29. 1. 2023:
I am sending the official announcement of an extension of the project timeline by two weeks (Vero and my mentors already know that).
The reason is that I need to more focus on preparations for my doctoral professional debate right now. But as soon as this part ends, I am looking forward to fully returning to the project and finishing all PRs. I wish writing essays was as good as writing code :).
Thank you for your understanding and have a nice week.
Final Report
Title: Mini project 2023: Improving Single-Window GUI user experience
Community: GRASS GIS - OSGeo
Abstract:
This project follows ideas mentioned in the last-year Mini-project focused on Status bar redesign (please see https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/RedesigningStatusbar#FinalReport). The core part of the project is devoted to undock map display functionality. This ability is essential to users who prefer the well-known Multi-Window GUI arrangement. The other part focuses on changing the Console layout. Moreover, the toggleable Log file button in the Console pane is replaced by the simple Export history button which can be used for storing the whole history of executed commands. The project also verifies if workspaces work nicely with Single-Window and addresses saving the current user layout to a workspace file. The workspace file also remembers and loads undocked map displays.
The state of the art BEFORE the start of the Mini project:
- The Single-Window GUI does not allow rearrangement to Multi-Window GUI.
- The widget with buttons managing the Command prompt is partly hidden after the GRASS launch.
- The Single-Window arrangement is not stored within the workspace.
The state of the art AFTER Mini project:
Starting with GRASS 8.4 we can come across several Single-Window improvements that were implemented as part of this project. First, there is the new possibility to create a Multi-Window interface by undocking map displays. Moreover, we can store a new arrangement within workspace files. Last but not least, the Console layout better fits the Single-Window interface.
Next Steps:
Possible improvements for Single-Window GUI:
- Each user should be able to choose a convenient arrangement of widgets. Creating, saving, and selecting perspectives could be part of a new tab menu called "View".
- 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.
- Modify the appearance for the dark mode. Some parts are ugly and illegible (names of AuiNotebook tabs, names of panes, ugly gradients etc.).
Permanent Links:
Pull requests related to the undock map display functionality:
Title | Pull Request | Issue | |
wxGUI: adding a button for undocking an AuiNotebook tab to wx.Frame (Single-Window GUI) | https://github.com/OSGeo/grass/pull/2667 | https://github.com/OSGeo/grass/issues/1748 | READY TO MERGE (waits for 8.4 branch) |
Pull requests related to the Console reorganization and button logic:
wxGUI: Console: Export history of executed commands | https://github.com/OSGeo/grass/pull/2682 | - | MERGED |
wxGUI/console: Adding hint to command prompt | https://github.com/OSGeo/grass/pull/2728 | - | MERGED |
wxGUI: Reorganization of Console panel | https://github.com/OSGeo/grass/pull/2746 | https://github.com/OSGeo/grass/issues/2585 | MERGED |
Pull requests related to saving user-defined layouts within workspace files:
Title | Pull Request | Issue | |
wxGUI: Save current Single-Window layout to workspace file | https://github.com/OSGeo/grass/pull/2768 | - | MERGED |
Weekly Reports:
https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/ImprovingSingleWindowUX
Visual GUI changes
Two outputs of this project are visible straightly from Single-Window GUI. The first one is the new option for undocking map display notebook page whereas the second output is the new layout of the Console pane.
Other outputs such as saving Single-Window layout within a workspace file or the new Export history button logic cannot be seen straightly from screenshots. You are welcome to check them on your own :-).
Attachments (2)
-
console_before_after.png
(34.7 KB
) - added by 21 months ago.
Console pane in Single-Window GUI before reogranization (left) and after reogranization (right)
-
Undocked_map_display.png
(283.6 KB
) - added by 21 months ago.
Undocked map display page
Download all attachments as: .zip