As a “proof of concept”, Tekmap Consulting tested the GTK+ toolkit as a possible tool for developing a graphical user interface (GUI) for the GRASS software. From that “proof of concept”, the GTK+ GRASS Interface has continued to grow.
The basic concept for the GRASS Interface is to provide easy point-and-click access to GRASS files. The interface builds common GRASS commands around the selected file(s). For example, a single click to set region to raster(s), erase display, and draw.
The main window consists of two panes: a GRASS file list and a tabbed display window.
The GRASS file list, in the left pane, is always visible to the user as a collapsible tree view. The display window, in the right pane, consists of multiple tabbed pages. These tabbed pages let users easily switch between different regions, display sets, and 3-D views.
The interface was developed as Glade project written in GTK+. The GUI can be built with the optional Gtk OpenGL extension. The OpenGL extension provides a 3D interface to the GRASS ogsf library.
The interface has been tested and run on Linux (OpenSuse) and Windows (XP) operating systems.
The features of the GRASS Interface include:
- Multiple tabbed pages within the same display window. Each tabbed page has a unique display list and GRASS region.
- Display lists that a user can save and load as a simple XML file.
- A properties list for display objects. With the properties list, users can delete display objects (layers), turn them on or off, and move them to a different position in the list.
- Easy point-and-click options for GRASS files.
- Modules for 3-D viewing, digitizing, and rectifying.
- Display features for a scale bar, regular grid, geographic grid, vector legend, raster colorbar, and compass rose.
- Raster transparency and Label display support.
- Options to save the display as a simple “screen shot” image and as a scaled image set by the user.
- Vector display properties for line color, line width, line type, fill color, symbol name, and symbol size.
- Zoom features for zoom in, zoom out, zoom box, and pan.
- Simple point-and-click measuring.
- Raster and vector querying.