wiki:GSoC/2020/StartupWindow

Version 30 (modified by lindakladivova, 4 years ago) ( diff )

--

GSoC 2020: GRASS GIS startup mechanism

Title: Creation of a new GRASS GIS startup mechanism
Student Name: Linda Kladivova
Organization: OSGeo - Open Source Geospatial Foundation
Mentor Name: Anna Petrasova, Martin Landa, Vaclav Petras, Moritz Lennert
GSoC proposal: View proposal
GitHub Repository: view repository

Abstract

This project will focus on the creation of a more user-friendly GRASS GIS startup. The general idea is to make the initial user’s contact easier and with a less steep learning curve. While programming new GRASS startup GUI several tasks will be solved – changes in Location wizard structure, Data Catalog as well as general GUI.

Goal

GRASS GIS comes with the concept of Location and Mapset which is not going to be replaced because of its advantages such as organized structure. The goal of this project is to make this concept more user-friendly (especially in terms of the welcome screen). The motion is that the Data Catalog will be expanded so that in addition to raster and vector data, it can manage even Locations and Mapsets. Then this widget could be used in the welcome screen. The work schedule below has been compiled on the basis of the Roadmap available here: https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/New_Startup#PragueRoadmap.

To sum up the schedule: From June 1st to June 28th (4 weeks), I plan to work on the Location wizard (the topic for the first evaluation), from June 29th to July 19th (3 weeks) I plan to program the new form of the Data Catalog (the topic for the second evaluation). From July 20th to August 23rd I will work on creating the new welcome page itself by integrating the improved components.

Timeline

Time Period

Milestones

Tasks

Status

May 4 - June 1
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
  • Setup GRASS GIS developer environment
  • Familiarize with the code in wxPython and with the development process
  • Discuss the elements of the startup window and get acquainted with the whole design (video call on May 14)
  • Contribute small features related to Location Wizard (see week 1) (first PR already created, see https://github.com/OSGeo/grass/pull/493)

Ok
Ok
Ok
Ok
Ok
Ok
Ok

June 1 - June 7
Week 1

Location wizard - first page

  • Major code refactoring
  • Remove map picture (see https://github.com/OSGeo/grass/pull/657)
  • Database directory not editable but mentioned
  • Location name marked as required
  • Location title (renamed as description) marked as optional
  • "Set default region and resolution" removed and set automatically if info is available
  • "Create user mapset" removed (user can do it from the data catalog in the future, now with a button in the startup window) (see https://github.com/OSGeo/grass/pull/646)



Ok
Ok
Ok
Ok
Ok
Ok
Ok

June 8 - June 14
Week 2

Location wizard - EPSG page - (see https://github.com/OSGeo/grass/pull/670):

  • Remove path to "/usr/share/proj/epsg"
  • Merge search and EPSG code text inputs
  • Add a link to epsg.io. Possibly put text from the text field into a query part of the URL.
  • Show the matching CSRs as user types EPSG or any text (like now), if only a number, assume it is EPSG (don't search through definition)
  • "to WGS" dialog as an additional



Ok
Ok
Ok
Ok
?

June 15 - June 21
Week 3

Location wizard

Ok


Ok
Ok

?
?

June 22 - June 28
Week 4

Finishing the implementation of Location wizard



Ok
Ok

Ok
OK

June 29 - July 5
Week 5

Data catalog:

First evaluation
?
?
?
WIP

OK

OK

July 6 - July 12
Week 6

Data catalog:


OK
WIP
OK
OK

July 13 - July 19
Week 7

Data catalog

TBD
OK
WIP

July 20 - July 26
Week 8

General GUI:

  • CLI parameters for g.gui:
    • load (display) all data in location as layers
    • prompt user to import more data
    • To be used after new location created by the startup script

TBD

July 27 - August 2
Week 9

General GUI:

  • Collect "recent info" and "used info"
    • Mapset and database recorded at the same time when GRASS GIS is started or switched to a mapset.
    • Workspace is recorded when opened or saved.
    • Check if the item is already in the list.
  • Consider making the Data tab in Layer Manager the first tab or the default tab

TBD

August 3 - August 9
Week 10

General GUI:

  • Finishing up
  • Testing
  • Documentation
  • Integrating the components into the new welcome page

TBD

August 10 - August 16
Week 11

Integrating the components into the new welcome page (continued)

TBD

August 17 - August 23
Week 12

Finishing up, testing, documentation

TBD

August 24 - August 31
Week 13

Finalizing the existing work Submitting the final work

TBD

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 2020, I introduced myself to grass dev lists on May 13. Also, I got in contact with my mentors - Martin Landa, Anna Petrasova, Vaclav Petras and Moritz Lennert. On May 14 we set up the video call where we discussed how to set up my GRASS dev environment and how to proceed with future work.

Prepare the wiki page about the project
I created my project wiki page (2) and added the link to the GSoC 2018 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 have chosen GitHub (5) as a public repository for the development of this project. I added the link to the GSoC 2020 Accepted proposals page (3), to my wiki page (2) and I shared it with my mentors. My repository is licensed under the GNU General Public License v3.0, according to the license of GRASS GIS.

Set up a developer environment
I checked and updated my developer environment so as to be ready to start coding after the bonding period.

Four PR already created
I created two PR related to the First Page of Location Wizard: https://github.com/OSGeo/grass/pull/493 and https://github.com/OSGeo/grass/pull/646. Both of them are already closed. In those PR the layout of this page was changed quite significantly. The database directory was mentioned as the last attribute and can be changed. The Location Name was marked as required. Location Title was renamed as Description and marked as optional (also in the Summary Page this was renamed). Both checkboxes "Set default region and resolution" and "Create user mapset" were removed.

I also created a single PR related to removing the picture of the world: https://github.com/OSGeo/grass/pull/657 which is still open and made one improvement related to automatic detection of case-independent cases of grassdata directory that is not literally mentioned in the roadmap: https://github.com/OSGeo/grass/pull/664 (issue: https://github.com/OSGeo/grass/issues/644.)

(1) https://lists.osgeo.org/pipermail/grass-dev/2018-April/088262.html
(2) https://trac.osgeo.org/grass/wiki/GSoC/2020/StartupWindow
(3) https://wiki.osgeo.org/wiki/Google_Summer_of_Code_2020_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?
I created a single PR related to the bigger topic related to changes in EPSG page (see https://github.com/OSGeo/grass/pull/670). I made a change in layout definition. Now it is defined by boxSizer instead of gridBagSizer. Also, path to usr/share/proj/epsg was removed. Search and EPSG code text inputs were merged into one search input. An informative link to epsg.io was added. Removing the picture of the world: https://github.com/OSGeo/grass/pull/657 was already merged into master. Similarly, I am already done with the automatic detection of case-independent cases of grassdata directory: https://github.com/OSGeo/grass/pull/664 (issue: https://github.com/OSGeo/grass/issues/644.)

2) What am I going to achieve for next week?
Next week I am going to continue on PR regarding the EPSG page (see https://github.com/OSGeo/grass/pull/670). The layout is done, now I am gonna focus on events. There are several requirements:

  • searching in a list on the fly
  • choose automatically the first row and permit "next" button
  • if epsg code is empty, nothing is selected and "next" button is not active
  • change informative URL according to a query string

Furthermore, I am gonna work on improvement when GRASS should create a grassdata directory in the default path for its platform automatically (see https://github.com/OSGeo/grass/issues/682).

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

Week 2

1) What did I complete this week?
I focused mainly on completing the PR (see https://github.com/OSGeo/grass/pull/670) regarding the EPSG page. New things that are already incorporated:

  • remove path to "/usr/share/proj/epsg"
  • merge search and EPSG code text inputs
  • searching in a list on the fly
  • if epsg code is empty, nothing is selected and "next" button is not active
  • change informative URL according to a query string (link to epsg.io)

Other two PRs were established:

After starting GRASS GIS with GUI, the GUI now searches for existing grassdata. If nothing is found, GRASS GIS (GUI) should automatically create directory named grassdata as a subdirectory of a platfrom-dependent directory. This platfrom-dependent directory would be:

  1. $HOME (os.path.expanduser('~')) on Linux and the like,
  2. User's Documents on Windows (see dac6d4a for code trying to identify that dir),
  3. One of the above on macOS - macOS users, please share your ideas.
  4. If that fails, it should use a temporary directory (/tmp/... etc.) as a fallback.

Those PRs are still in progress.

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

I would definitely work on finishing PRs see https://github.com/OSGeo/grass/pull/664 and https://github.com/OSGeo/grass/pull/705. Then I will continue in work on Location Wizard particularly Projection page and Final Page. The labels in some pages will be also probably somehow changed, so far it was not addressed.

3) Is there any blocking issue?

No, it isn't.

Week 3

1) What did I complete this week?

I have worked and completed two PRs related to Startup page:

I have also set up and work on the new PR related to CRS selection page (see https://github.com/OSGeo/grass/pull/721, see https://github.com/OSGeo/grass/issues/706). I am almost done with this PR.

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

I would end up the last PR related to Location Wizard (see https://github.com/OSGeo/grass/pull/721) and also start to work on other issues related mainly to the Data Catalog:

3) Is there any blocking issue?

I am sorry for not doing much work earlier this week, I was away one week from home till this Wednesday. Now, for the last three days, I have been trying to catch it up and next week I will work harder. :)

I do not have any blocking issues.

Week 4

1) What did I complete this week?

I finalized my work regarding the Location Wizard:

I have also started to work on other issues related mainly to the Data Catalog:

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

I would finalize on the PR Add new mapset action to data catalog (see https://github.com/OSGeo/grass/pull/731, see https://github.com/OSGeo/grass/issues/717):

  • adjusting the code in gis_set.py to accommodate the new changes,
  • creation of new function in datacatalog/tree called insertMapset for inserting a mapset into a virtual tree,
  • adjusting the code in gis_set.py and tree.py to accommodate the new changes.

I would also start to work on other issues related mainly to the Data Catalog:

3) Is there any blocking issue?

I do not have any blocking issues.

Week 5

1) What did I complete this week?

I ended up adding of the new mapset action to the data catalog (see https://github.com/OSGeo/grass/pull/731, see https://github.com/OSGeo/grass/issues/717):

  • adjusting the code in gis_set.py to accommodate the new changes,
  • creation of new function in datacatalog/tree called insertMapset for inserting a mapset into a virtual tree,
  • adjusting the code in gis_set.py and tree.py to accommodate the new changes.

I also made two other PR related to Data Catalog. First one makes data tab the default in GUI. The Data tab was moved so it is the first tab from the left and it is the default when the GUI opens. (see https://github.com/OSGeo/grass/pull/756, https://github.com/OSGeo/grass/issues/748). Second one merges LocationMapTree and DataCatalogTree classes (see https://github.com/OSGeo/grass/pull/755, https://github.com/OSGeo/grass/issues/740).

I have also started to work on a bigger issue which allows users to add additional grass databases as currently, only one database is in the GUI data catalog (see https://github.com/OSGeo/grass/pull/761, https://github.com/OSGeo/grass/issues/741). Unfortunately, I made the mistake upon committing into GitHub so now till correction it is also associated with other commits. In this PR I made the toolbar button for adding an existing database and then edited several functions mainly in datacatalog/tree.py that need to handle more than one database. This PR is not finished yet, I am a bit stuck here and need to solve other processing with mentors.

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

I would finalize on the PR Add multiple GRASS databases (see https://github.com/OSGeo/grass/pull/761, https://github.com/OSGeo/grass/issues/741). I would also start to work on other issues related mainly to the Data Catalog:

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

Week 6

1) What did I complete this week?

I am finalizing the PR Add multiple GRASS databases (see https://github.com/OSGeo/grass/pull/761, https://github.com/OSGeo/grass/issues/741). This PR changes tree.py quite significantly and also adds the new toolbar button for adding the existing GRASS database. Simultaneously, I have finished the bigger PR related to new Rename and Delete actions of Location and Mapset (see https://github.com/OSGeo/grass/pull/771, https://github.com/OSGeo/grass/issues/710).

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

I would finalize on the PR Add multiple GRASS databases (see https://github.com/OSGeo/grass/pull/761, https://github.com/OSGeo/grass/issues/741). And I would merge the above-mentioned PRs. I would also start to work on other issues related mainly to the Data Catalog:

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

Week 7

1) What did I complete this week?

I finalized the PR Add multiple GRASS databases (see https://github.com/OSGeo/grass/pull/761, https://github.com/OSGeo/grass/issues/741). I also made several smaller PRs related to several issues. As we will distinguish different layers according to lock and ownership, it was necessary to distinguish label and name of nodes (see https://github.com/OSGeo/grass/pull/783, https://github.com/OSGeo/grass/issues/780). I also changed the order of Layer Manager tabs and a label "Layers" to "Display" (see https://github.com/OSGeo/grass/pull/802, https://github.com/OSGeo/grass/issues/799). Simultaneously, I am working on bigger PRs related to new actions in Data Catalog. The first one adds Create New Location and Download Location actions to database node in Data tab (see https://github.com/OSGeo/grass/pull/790, https://github.com/OSGeo/grass/issues/747). The second one allows the Delete action on multiple selected mapsets (see https://github.com/OSGeo/grass/pull/795, https://github.com/OSGeo/grass/issues/791).

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

As the paradigm has quite changed after the community video call on July 15 (startup screen will be probably removed), I will go ahead and add more functions and actions to Data Catalog which is now becoming the center point of the whole management in GRASS. First I am gonna focus on Adding new icons to the data catalog for several actions whose list is still broadening. This is related to the Issue https://github.com/OSGeo/grass/issues/800. There are also other issues related to the Data Catalog I am gonna address:

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

Note: See TracWiki for help on using the wiki.