| 1 | = GSoC 2021: First steps towards a new GRASS GIS Single-Window GUI = |
| 2 | |
| 3 | || Title: || '''First steps towards a new GRASS GIS Single-Window GUI''' || |
| 4 | ||Student Name: || Linda Kladivova || |
| 5 | ||Organization: || [http://www.osgeo.org OSGeo - Open Source Geospatial Foundation] || |
| 6 | || Mentor Name: || Anna Petrasova, Martin Landa, Vaclav Petras, Stefan Blumentrath || |
| 7 | || GSoC proposal: ||[https://summerofcode.withgoogle.com/dashboard/project/6059224263557120/details/ View proposal] || |
| 8 | || !GitHub Repository: || [https://github.com/lindakladivova view repository] || |
| 9 | |
| 10 | == Abstract == |
| 11 | 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. |
| 12 | |
| 13 | == Goal == |
| 14 | |
| 15 | 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. |
| 16 | |
| 17 | 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. |
| 18 | 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). |
| 19 | 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. |
| 20 | 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. |
| 21 | |
| 22 | == Timeline == |
| 23 | |
| 24 | {{{#!th style="background: #ddd" rowspan=2 |
| 25 | '''Time Period''' |
| 26 | }}} |
| 27 | {{{#!th style="background: #ddd" colspan=2 |
| 28 | '''Milestones''' |
| 29 | }}} |
| 30 | |----------------------- |
| 31 | {{{#!th style="background: #ddd" |
| 32 | Tasks |
| 33 | }}} |
| 34 | {{{#!th style="background: #ddd" |
| 35 | Status |
| 36 | }}} |
| 37 | |----------------------- |
| 38 | {{{#!td |
| 39 | May 17 - 6 June \\ |
| 40 | ''Community Bonding'' |
| 41 | }}} |
| 42 | {{{#!td |
| 43 | - Introduce myself in dev list, get in contact with my mentors and discuss the design of functions |
| 44 | - Prepare the wiki page about the project |
| 45 | - Set up the !GitHub repository of the project |
| 46 | - Familiarize with the object-oriented patterns in wxPython programming |
| 47 | - Discuss the elements of the Single-Window layout and the necessary changes in GUI needed for implementing the proposed design |
| 48 | - Discuss the elements of the startup window and get acquainted with the whole design (video call on May 14) |
| 49 | - Contribute some feature related to refactoring |
| 50 | |
| 51 | }}} |
| 52 | {{{#!td |
| 53 | |
| 54 | }}} |
| 55 | |----------------------- |
| 56 | {{{#!td |
| 57 | June 7 - June 13 \\ |
| 58 | ''Week 1'' |
| 59 | }}} |
| 60 | {{{#!td |
| 61 | |
| 62 | }}} |
| 63 | {{{#!td |
| 64 | |
| 65 | }}} |
| 66 | |
| 67 | |----------------------- |
| 68 | {{{#!td |
| 69 | June 14 - June 20 \\ |
| 70 | ''Week 2'' |
| 71 | }}} |
| 72 | {{{#!td |
| 73 | |
| 74 | }}} |
| 75 | {{{#!td |
| 76 | |
| 77 | }}} |
| 78 | |----------------------- |
| 79 | |
| 80 | {{{#!td |
| 81 | June 21 - June 27 \\ |
| 82 | ''Week 3'' |
| 83 | }}} |
| 84 | {{{#!td |
| 85 | |
| 86 | }}} |
| 87 | {{{#!td |
| 88 | |
| 89 | }}} |
| 90 | |----------------------- |
| 91 | |
| 92 | {{{#!td |
| 93 | June 28 - July 4 \\ |
| 94 | ''Week 4'' |
| 95 | }}} |
| 96 | {{{#!td |
| 97 | |
| 98 | }}} |
| 99 | {{{#!td |
| 100 | |
| 101 | }}} |
| 102 | |----------------------- |
| 103 | |
| 104 | {{{#!td |
| 105 | July5 - July 11 \\ |
| 106 | ''Week 5'' |
| 107 | }}} |
| 108 | {{{#!td |
| 109 | |
| 110 | }}} |
| 111 | {{{#!td |
| 112 | |
| 113 | }}} |
| 114 | |----------------------- |
| 115 | |
| 116 | {{{#!td |
| 117 | July 12 - July 18 \\ |
| 118 | ''Week 6'' |
| 119 | }}} |
| 120 | {{{#!td |
| 121 | |
| 122 | }}} |
| 123 | {{{#!td |
| 124 | evaluation |
| 125 | }}} |
| 126 | |----------------------- |
| 127 | |
| 128 | {{{#!td |
| 129 | July 19 - July 25 \\ |
| 130 | ''Week 7'' |
| 131 | }}} |
| 132 | {{{#!td |
| 133 | |
| 134 | }}} |
| 135 | {{{#!td |
| 136 | |
| 137 | }}} |
| 138 | |----------------------- |
| 139 | |
| 140 | {{{#!td |
| 141 | July 26 - August 1 \\ |
| 142 | ''Week 8'' |
| 143 | }}} |
| 144 | {{{#!td |
| 145 | |
| 146 | }}} |
| 147 | {{{#!td |
| 148 | |
| 149 | }}} |
| 150 | |----------------------- |
| 151 | |
| 152 | {{{#!td |
| 153 | August 2 - August 8\\ |
| 154 | ''Week 9'' |
| 155 | }}} |
| 156 | {{{#!td |
| 157 | |
| 158 | }}} |
| 159 | {{{#!td |
| 160 | |
| 161 | }}} |
| 162 | |----------------------- |
| 163 | |
| 164 | {{{#!td |
| 165 | August 9 - August 15\\ |
| 166 | ''Week 10'' |
| 167 | }}} |
| 168 | {{{#!td |
| 169 | |
| 170 | }}} |
| 171 | {{{#!td |
| 172 | |
| 173 | }}} |
| 174 | |----------------------- |
| 175 | |
| 176 | {{{#!td |
| 177 | August 16 - August22\\ |
| 178 | ''Week 11'' |
| 179 | }}} |
| 180 | {{{#!td |
| 181 | |
| 182 | |
| 183 | |
| 184 | }}} |
| 185 | {{{#!td |
| 186 | |
| 187 | }}} |
| 188 | |----------------------- |
| 189 | |
| 190 | |