| 1 | |
| 2 | = GSoC 2018 Improve GRASS GIS integration in QGIS 3 = |
| 3 | |
| 4 | || Title: || '''Improve GRASS GIS integration in QGIS 3''' || |
| 5 | ||Student Name: || Radek Novotný, [http://www.cvut.cz Czech Technical University in Prague] || |
| 6 | ||Organization: || [http://www.osgeo.org OSGeo - Open Source Geospatial Foundation] || |
| 7 | || Mentor Name: || [https://wiki.osgeo.org/wiki/User:Martinl Marin Landa], Vaclav Petras || |
| 8 | || GSoC proposal: || [https://docs.google.com/document/d/1XlxRHvtaiebVIOvlq8G6Q5FuUkFigZ8DlQbaQ-y9keQ/edit?usp=sharing view proposal] || |
| 9 | |
| 10 | == Abstract == |
| 11 | Currently, GRASS integration in QGIS is hard to maintain. There are two QGIS plugins - Processing and GRASS Plugin, which differs each other. This proposal is focused on Processing plugin. Processing plugin is at this moment maintained by QGIS developers in core Git repository. This situation has been discussed in the QGIS and GRASS GIS mailing lists several times. GUI dialogues of the Processing plugin are generated from manually maintained text UI description files. |
| 12 | |
| 13 | == Goal == |
| 14 | My goal is to design a Python library (and possibly also a GRASS module based on this library) which allows creating this text UI files automatically from generated GRASS XML description. This library also has to simplify and divide parameters for QGIS. This approach would be similar to the function of SAGA (or OTB) Processing plugin integration QGIS. |
| 15 | |
| 16 | After this addition will be possible to generate text UI files for new GRASS modules (added to the core or even for add-ons) in an automated way. These generated UI files can be part of Git repository, but in future could be generated automatically during QGIS compilation, when a user installs GRASS Addon module using Processing plugin, or on the fly when the GUI is started. |
| 17 | |
| 18 | == Timeline == |
| 19 | |
| 20 | {{{#!th style="background: #ddd" rowspan=2 |
| 21 | '''Time Period''' |
| 22 | }}} |
| 23 | {{{#!th style="background: #ddd" colspan=2 |
| 24 | '''Milestones''' |
| 25 | }}} |
| 26 | |----------------------- |
| 27 | {{{#!th style="background: #ddd" |
| 28 | Tasks |
| 29 | }}} |
| 30 | {{{#!th style="background: #ddd" |
| 31 | Status |
| 32 | }}} |
| 33 | |----------------------- |
| 34 | {{{#!td |
| 35 | April 23 - May 14 \\ |
| 36 | ''Community Bonding'' |
| 37 | }}} |
| 38 | {{{#!td |
| 39 | - Prepare the wiki page about the project |
| 40 | - Discuss the design of functions with mentors and on mailing lists (GRASS, QGIS) |
| 41 | }}} |
| 42 | {{{#!td |
| 43 | {{{#!html |
| 44 | |
| 45 | }}} |
| 46 | }}} |
| 47 | |----------------------- |
| 48 | {{{#!td |
| 49 | May 14 - May 20 \\ |
| 50 | ''Week 1'' |
| 51 | }}} |
| 52 | {{{#!td |
| 53 | - Implement an initial version of Python library for generating UI files used by Processing plugin based on GRASS modules XML description. |
| 54 | }}} |
| 55 | {{{#!td |
| 56 | }}} |
| 57 | |----------------------- |
| 58 | {{{#!td |
| 59 | May 21 - May 27 \\ |
| 60 | ''Week 2'' |
| 61 | }}} |
| 62 | {{{#!td |
| 63 | - Integration of generated description UI files from initial Python library to Processing plugin in order to generate GUI dialogue for GRASS modules. |
| 64 | }}} |
| 65 | {{{#!td |
| 66 | }}} |
| 67 | |----------------------- |
| 68 | {{{#!td |
| 69 | May 28 - June 3 \\ |
| 70 | ''Week 3'' |
| 71 | }}} |
| 72 | {{{#!td |
| 73 | - Split GRASS module parameters in Processing plugin to basic and advanced tabs. |
| 74 | }}} |
| 75 | {{{#!td |
| 76 | }}} |
| 77 | |----------------------- |
| 78 | {{{#!td |
| 79 | June 4 - June 10 \\ |
| 80 | ''Week 4'' |
| 81 | }}} |
| 82 | {{{#!td |
| 83 | - Customization of parameter descriptions in order to take care of differences in GRASS and QGIS terminology. |
| 84 | }}} |
| 85 | {{{#!td |
| 86 | }}} |
| 87 | |----------------------- |
| 88 | {{{#!td style="background: #ddd" |
| 89 | July 11 - July 15 \\ |
| 90 | ''Evaluation 1'' |
| 91 | }}} |
| 92 | {{{#!td style="background: #ddd" |
| 93 | - Goal: Working Python library generating files which could be used in Processing plugin |
| 94 | - Mentors evaluate me and I evaluate mentors of official coding period phase. |
| 95 | }}} |
| 96 | {{{#!td |
| 97 | }}} |
| 98 | |----------------------- |
| 99 | {{{#!td |
| 100 | June 11 - June 17 \\ |
| 101 | ''Week 5'' |
| 102 | }}} |
| 103 | {{{#!td |
| 104 | - Solve how to split GRASS modules for Processing plugin and minimize user confusion. |
| 105 | }}} |
| 106 | {{{#!td |
| 107 | }}} |
| 108 | |----------------------- |
| 109 | {{{#!td |
| 110 | June 18 - June 24 \\ |
| 111 | ''Week 6'' |
| 112 | }}} |
| 113 | {{{#!td |
| 114 | - Bugfixing, fix problems which appear after integration of Python library in Processing plugin. |
| 115 | }}} |
| 116 | {{{#!td |
| 117 | }}} |
| 118 | |----------------------- |
| 119 | {{{#!td |
| 120 | June 25 - July 1 \\ |
| 121 | ''Week 7'' |
| 122 | }}} |
| 123 | {{{#!td |
| 124 | - Implement simplified run or --exec method logic in GRASS. |
| 125 | }}} |
| 126 | {{{#!td |
| 127 | }}} |
| 128 | |----------------------- |
| 129 | {{{#!td |
| 130 | July 2 - July 8 \\ |
| 131 | ''Week 8'' |
| 132 | }}} |
| 133 | {{{#!td |
| 134 | - Research actual processing code and simplified it for using a run method. |
| 135 | }}} |
| 136 | {{{#!td |
| 137 | }}} |
| 138 | |----------------------- |
| 139 | {{{#!td style="background: #ddd" |
| 140 | July 9 - July 13 \\ |
| 141 | ''Evaluation 2'' |
| 142 | }}} |
| 143 | {{{#!td style="background: #ddd" |
| 144 | - Goal: Release version of the library, implemented run method in GRASS |
| 145 | - Mentors evaluate me and I evaluate mentors of official coding period phase. |
| 146 | }}} |
| 147 | {{{#!td |
| 148 | }}} |
| 149 | |----------------------- |
| 150 | {{{#!td |
| 151 | July 9 - July 15 \\ |
| 152 | ''Week 9'' |
| 153 | }}} |
| 154 | {{{#!td |
| 155 | - Integrate GRASS run logic in Processing plugin |
| 156 | }}} |
| 157 | {{{#!td |
| 158 | }}} |
| 159 | |----------------------- |
| 160 | {{{#!td |
| 161 | July 16 - July 22 \\ |
| 162 | ''Week 10'' |
| 163 | }}} |
| 164 | {{{#!td |
| 165 | - Create documentation related to GRASS Processing plugin integration (generating UI files, GRASS caller, …). |
| 166 | - Testing implementation. |
| 167 | }}} |
| 168 | {{{#!td |
| 169 | }}} |
| 170 | |----------------------- |
| 171 | {{{#!td |
| 172 | July 23 - July 29 \\ |
| 173 | ''Week 11'' |
| 174 | }}} |
| 175 | {{{#!td |
| 176 | - Fix bugs and documentation details. |
| 177 | }}} |
| 178 | {{{#!td |
| 179 | }}} |
| 180 | |----------------------- |
| 181 | {{{#!td |
| 182 | July 30 - August 5 \\ |
| 183 | ''Week 12'' |
| 184 | }}} |
| 185 | {{{#!td |
| 186 | - Prepare for final delivery. |
| 187 | }}} |
| 188 | {{{#!td |
| 189 | }}} |
| 190 | |----------------------- |
| 191 | {{{#!td style="background: #ddd" |
| 192 | August 6 - August 14 \\ |
| 193 | ''Evaluation 3 (Final)'' |
| 194 | }}} |
| 195 | {{{#!td style="background: #ddd" |
| 196 | - Wrap up my projects and submit the final evaluation of my mentors. |
| 197 | }}} |
| 198 | {{{#!td |
| 199 | }}} |
| 200 | |
| 201 | == Weekly reports == |