Version 14 (modified by 4 years ago) ( diff ) | ,
---|
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 |
| |
June 7 - June 13 | wxGUI refactoring:
|
|
June 14 - June 20 | wxGUI refactoring:
| |
June 21 - June 27 | Adapting toolbars in Display and Data panel:
| |
June 28 - July 4 | Map Display notebook pane:
| |
July5 - July 11 | Map Display notebook pane:
| |
July 12 - July 18 | Adapting the code for Single-Window GUI:
| evaluation |
July 19 - July 25 | Adapting the code for Single-Window GUI:
| |
July 26 - August 1 | Simple Single-Window GUI:
| |
August 2 - August 8 | Simple Single-Window GUI:
| |
August 9 - August 15 | Finishing up, testing, documentation | |
August 16 - August22 |
| |
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 layout 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 (4) so I only added the link to the GSoC 2020 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) improving 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?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Week 2
1) What did I complete this week?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Week 3
1) What did I complete this week?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Week 4
1) What did I complete this week?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Week 5
1) What did I complete this week?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Week 6
1) What did I complete this week?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Week 7
1) What did I complete this week?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Week 8
1) What did I complete this week?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Week 9
1) What did I complete this week?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Week 10
1) What did I complete this week?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Week 11
1) What did I complete this week?
2) What am I going to achieve for next week?
3) Is there any blocking issue?
Final Report
Attachments (8)
-
single_layout_week1.png
(117.5 KB
) - added by 3 years ago.
Arrangement of the widgets except Map Display
-
startuplayout.png
(408.0 KB
) - added by 3 years ago.
Single-Window GUI startup layout
-
startupGUI.jpg
(351.7 KB
) - added by 3 years ago.
Single-Window GUI startup layout after merging PRs #17853 and #1785
-
two_tabs_side_by_side(1).jpg
(281.5 KB
) - added by 3 years ago.
Map displays can be placed side by side
-
another_arrangement.jpg
(205.9 KB
) - added by 3 years ago.
Example of another possible widget arrangement
-
another_possible_arrangement.jpg
(240.8 KB
) - added by 3 years ago.
Example of another possible widget arrangement
-
all_panes_minimized.jpg
(255.1 KB
) - added by 3 years ago.
All panes are minimized
-
multi-window.PNG
(253.2 KB
) - added by 3 years ago.
Multi-Window GUI