wiki:GSoC/2021/SingleWindowLayout

Version 4 (modified by lindakladivova, 3 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
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
  • Discuss the elements of the startup window and get acquainted with the whole design (video call on May 14)
  • Contribute some feature related to refactoring

June 7 - June 13
Week 1

wxGUI refactoring:

  • Create separate class for workspace management
  • Separate functions related to the Display Panel into a separate class (main GUI script needs to be lightened)
  • Establishing all signals and solving the connection when creating a 3D tab


OK
tbd
tbd

June 14 - June 20
Week 2

wxGUI refactoring:

  • Integrate of the Display toolbar into a new class related to the Display panel
  • Integrate and move layout functions and superior functions and handlers into the basic GUI frame class in the App directory (Layer Manager will take over the role of the Display tab)

June 21 - June 27
Week 3

Adapting toolbars in Display and Data panel:

  • Create vertical toolbar in Data panel
  • Create vertical toolbar in Display panel

June 28 - July 4
Week 4

Map Display notebook pane:

  • Define a Map Panel class
  • Integrate a Map Panel class to a new Map Display pane

July5 - July 11
Week 5

Map Display notebook pane: Link the Map Display pane with Layer Manager tabs

July 12 - July 18
Week 6

Adapting the code for Single-Window GUI:

  • Create a new factory-pattern class
  • Features related to adding and removing the 3D tab and 3D toolbar will be adapted to the future option

evaluation

July 19 - July 25
Week 7

Adapting the code for Single-Window GUI:

  • Adapt other functions requiring to switch to the Display tab for their operation to the Single-Window layout

July 26 - August 1
Week 8

Simple Single-Window GUI:

  • Add all panels to panes
  • Integrate all panes (Data, Display, Modules, Console, Python, Map Display notebook) to a basic Single-Window structure which represents the default settings when all panels are displayed

August 2 - August 8
Week 9

Simple Single-Window GUI:

  • Switching to Single-Window layout representing the default settings through a new button

August 9 - August 15
Week 10

Finishing up, testing, documentation

August 16 - August22
Week 11

  • Finalizing the existing work
  • Submitting the final work

Bonding period report

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)

Note: See TracWiki for help on using the wiki.