GRASS GUI: Difference between revisions

From GRASS-Wiki
Jump to navigation Jump to search
m (update ML link)
 
(43 intermediate revisions by 6 users not shown)
Line 1: Line 1:
== wxPython GUI ==
== Mailing List ==
=== General GUI Design ===
==== User's point of view ====
* GUI has multiple map displays
* Each map display has several buttons for basic functions
** Zooming and Paning
** Data Quering
* Each map display will be able to fire up pop-up toolbar with more complicated  and not-so-often-used display functions (substitutions for d.measure, d.profile, d.text, ...)
* Each map display will be able to fire up pop-up toolbar with v.digit substitution
* Monitors can be started from the command line and from the GIS Manager
* Monitors must be able to display following types of layers
** GRASS Raster
** GRASS Vector
** GDAL Raster
** GDAL Vector
** WMS Layer from remote server
** WCS and WFS layers too
** Text layers
** Graphics layers
** Grid
** Image layers
** ...
* GIS Manager is tool for
** Monitors management and monitor content management
** Layer look management
** Modules starting (from integrated command line or menu)
** Displaying output from modules (G_message, G_warning, G_fatal_error, G_percent)
* GIS Manager must be able to save and restore session
* There should be default session file, which will be loaded by default ones GRASS is started with -gui parameter
* Georectification tool should be part of new GUI. It should be special type of monitor with added GCP function
* Map Composer should be part of the new GUI. This tool should generate configuration files for hardcopy maps. The configuration files should be either ps.map files or maybe SVG


==== Coder's point of view ====
* Things are discussed [http://www.osgeo.org/mailman/listinfo/grass-dev here]
NOTE: As I have no coders background, sorry for inept formulated thoughts. --[[User:Jachym|Jachym]] 09:13, 2 February 2007 (CET)


List of suggested classes and their purpose.
== wxPython GUI ==


* '''Layer''' -- Raster, vector, WMS, whatever layer
See '''[[wxGUI]]'''
** '''Attributes''' -- Attributes are depending on layer type, but there are also common attributes marked with prefix "l_"  (for 'layer'):
*** l_type -- vector, raster, wms, text, graph, ...
*** l_mapfile -- renderd ppm file
*** l_maskfile -- pgm file with layer's alpha channel
*** l_active -- layer is active, will be rendered only if True
*** l_hidden - layer is hidden, will be allways rendered
*** l_opacity - layer opacity [0-1]
** '''Methods'''
*** Render -- runs d.* and similar commands for making content of l_mapfile


* '''Map''' -- Set of layers renderd to single PNG image, ready to display in Map display frame
=== Background: Graphical toolkit choice ===
** '''Attributes'''
*** Width -- map width
*** Height -- map height
*** Region -- Region boundaries and resolution
*** Layers -- Array of ''Layer''s displayed in this "map"
*** MapFile -- path to resulting PNG file with rendered map
** '''Methods'''
*** AddRasterLayer -- Adds GRASS-raster layer to list of layers
*** AddVectorLayer -- Adds GRASS-vector layer to list of layers
*** Add...Layer -- Adds some type of layer (wms, wfs, text, ...) to list of layers
*** GetListOfLayers -- Returns array of layers (''active, hidden, type'')
*** Render -- Creates final PNG image and stores it's path to ''MapFile''


* [http://www.wxwidgets.org/wiki/index.php/WxWidgets_Compared_To_Other_Toolkits WxWidgets Compared To Other Toolkits]
* [http://freshmeat.net/articles/view/928 GUI Toolkits for The X Window System]


* '''DigitToolbar''' -- Pop-up toolbar with digitising functions
'''[http://sourceforge.net/softwaremap/trove_list.php Sourceforge.net statistics]''' (2007):
* '''DisplayToolBar''' -- Pop-up toolbar with substitution of other d.* modules


* '''MapDisplay''' -- Frame (in [http://wiki.wxpython.org/index.cgi/Frequently_Asked_Questions#head-829eea79fe17c04c65c00a7dc0bffa69f2473167 wxWidgets terminology]) with embed toolbar for zooming and paning and maybe data quering and pop-up toolbar for substitution of other d.* modules (d.path, d.profile, ...)
* Projects using Python as programming language: 6217
NOTE: This section should be completed
* Projects using '''GTK+''': 1328
** '''Attributes'''
* Projects using '''GTK+''' graphical library and Python programming language: 348
*** Width
* Projects using '''GTK+''' graphical library and Python programming language and '''OpenGL''': 7
*** Height
* Projects using '''wxWidgets''': 880
*** Mouse -- mouse actions, movements, presed buttons etc.
* Projects using '''wxWidgets''' graphical library and Python programming language: 360
*** Map -- ''Map'' class
* Projects using '''wxWidgets''' graphical library and Python programming language and '''OpenGL''': 4
** ''Methods'' -- just very coarse definition
*** Zoom -- for zooming and paning
*** DrawBox -- For box drawing
*** DrawLine -- For line drawing
*** DrawPoint -- for points drawing


* '''GisManager''' -- GIS Manager frame
== Tcl/Tk GUI ==
** '''Attributes'''
*** Displays -- array with map displayes
** '''Methods'''
*** AddDisplay -- Creates new map display
*** AddLayer -- Adds layer of defined type
*** EditLayer -- Opens pop-up window with layer attributes definition
*** ExecuteCommand -- Executes module from command line or menu


* '''GCPDisplay''' -- Special type of MapDisplay with tool for setting GCPs
This was the old, now unsupported GUI.
* '''HCPDisplay''' -- Special type of MapDisplay with tools for creating configuration files for hardcopy maps


=== Used tools ===
Screenshots: http://grassold.osgeo.org/screenshots/gui.php
wxPython seems to be the best tool for "new generation gui", because of it's multiplatformity and native look&feel on various platforms.
 
=== Where to get it ===
Jachym suggests to move the development to GRASS-Addons subversion repository, until it is "mature enough". Subversion enables for example to rename files, which could be useful. Current version can be found at https://grasssvn.itc.it/grasssvn/grassaddons/trunk/grassaddons/gui/#_trunk_grassaddons_gui_ and downloaded with command
 
svn co https://grasssvn.itc.it/svn/grassaddons/trunk/grassaddons grassaddons/gui
 
Write access to the GRASS-Addons SVN is managed by Markus Neteler.
 
=== Screenshots with proposed shapes ===
 
{| class="wikitable" style="text-align:center;" border="1"
| [[Image:Gism.png]] || [[Image:Gism2.jpeg]]
|-
| The wxGlade definition file is avaliable [https://grasssvn.itc.it/grasssvn/grassaddons/trunk/grassaddons/gui/gism.wxg in the subversion repository] || Another proposal by Michael Barton
|}
 
=== GUI History ===
'''[http://www.public.asu.edu/~cmbarton/files/grass_wxpython/ Link to wxPython prototype GUI for GRASS 6]'''
 
'''Update 18:02, 14 August 2006 (CEST) '''New version implements double buffered drawing to fix display issues on Debian, including flickering why panning and display being erased by overlaying windows. Output to PNG file added. Better looking zoom rectangles.
 
'''*****The wxPython code is moving to the GRASS CVS. You should look for the newest versions there. Volunteers to help with the new GUI are welcomed!*****''' [[User:Cmbarton|Cmbarton]]
 
'''Update 00:50, 9 August 2006 (CEST) '''New version will run directly from GRASS prompt with new startup script. Now put gism.py and associated files into $GISBASE/etc/gmwxp and add a new script (gm.wxp) to the $GISBASE/scripts folder. Then simply type gm.wxp& from the GRASS command prompt to get the new prototype wxPython GUI for GRASS. See instructions in today's package update. [[User:Cmbarton|Cmbarton]]
 
'''Update 23:59, 7 August 2006 (CEST) '''New version with nearly complete raster menu by Yann Chemin. [[User:Cmbarton|Cmbarton]]
 
'''Update 19:02, 7 August 2006 (CEST)'''I just uploaded a new version of gism.py and related files. I'll keep an archive and so am changing the link to go to the folder rather than the file itself so I won't have to keep changing the link. This update includes the following changes:
*The biggest change in wrapping in grassgui.py. This provides autogenerated wxPython GUI dialogs for all grass commands.
This can now be called from the command console (just type in the command name with no arguments as you do now) or the
prototype menus. I updated grassgui.py to current wxPython syntax (mostly) and added methods to make it callable from
other modules.
*Methods added to gism.py and grassgui.py that automatically restart them with pythonw for the Mac
--[[User:Cmbarton|Cmbarton]] 19:02, 7 August 2006 (CEST)
 
Initial development has begun on the next generation UI for GRASS. wxPython is the leading contender for a platform in which to continue development of the GRASS GUI. wxPython is a Python implementation of the well known wxWidgets (formerly wxWindows) interface development platform for C++. An initial demonstration was developed by Jachym Cepicky to show the possibility of controling GRASS via wxPython. A second generation prototype has been completed, building on Jachym's work. It is available for testing and further development at link above.
--[[User:Cmbarton|Cmbarton]] 07:15, 4 August 2006 (CEST)
 
== Tcl/Tk GUI ==
Screenshots: http://grass.itc.it/grass61/screenshots/index.php


===Draft GUI design specifications===
<!--
=== Draft GUI design specifications ===


* See attached file
* See attached file


===Summary of 2005 discussions on next generation UI for GRASS===
=== Summary of 2005 discussions on next generation UI for GRASS ===


* Attached file gives a distillation of several months of emails on the GRASS developers list. It includes a series of desired design features and specifications, along with supporting quotes.
* Attached file gives a distillation of several months of emails on the GRASS developers list. It includes a series of desired design features and specifications, along with supporting quotes.


===Compiled emails from 2005 discussions on next generation UI for GRASS===
=== Compiled emails from 2005 discussions on next generation UI for GRASS ===


* Attached file compiles all (or all that I could find) of the late 2005 emails on the GRASS developers list discussing proposed specifications for a next generation GRASS GUI. It is a series of rtm files that group the discussions according to a series of topics.
* Attached file compiles all (or all that I could find) of the late 2005 emails on the GRASS developers list discussing proposed specifications for a next generation GRASS GUI. It is a series of rtm files that group the discussions according to a series of topics.
-->
[[Category:Development]]
[[Category:GUI]]

Latest revision as of 18:57, 14 April 2021

Mailing List

  • Things are discussed here

wxPython GUI

See wxGUI

Background: Graphical toolkit choice

Sourceforge.net statistics (2007):

  • Projects using Python as programming language: 6217
  • Projects using GTK+: 1328
  • Projects using GTK+ graphical library and Python programming language: 348
  • Projects using GTK+ graphical library and Python programming language and OpenGL: 7
  • Projects using wxWidgets: 880
  • Projects using wxWidgets graphical library and Python programming language: 360
  • Projects using wxWidgets graphical library and Python programming language and OpenGL: 4

Tcl/Tk GUI

This was the old, now unsupported GUI.

Screenshots: http://grassold.osgeo.org/screenshots/gui.php