GeoDMS GUI - ObjectVision/GeoDMS GitHub Wiki

The GeoDMS GUI is used to visualise source data, calculation results and model logic. It presents both the model results and the steps needed to generate the results.

The GUI contains a set of viewers for maps, tables and graphs. Classifications and visualisation styles can partly be edited in the GUI, but will not be stored persistently (see the section How To Model for storing these settings persistently).

It also contains viewers for descriptive/meta information and process schemes to show the model logic.

software

The current GUI (started in 2023) is developed, like the GeoDMS Engine in C++, using the Qt library.

Earlier versions of the GUI were developed in Delphi. Some issues related to Delphi (like the flickering views) were difficult to solve; the Qt library offers many interesting functions for improving the current GUI.

The GUI component is an executable called: GeoDmsGuiQt.exe. The component is part of the GeoDMS software to be installed from the releases section.

the standard prelude

Since GeoDMS 20.9.0 the installation ships a configuration file of its own next to the executable: prelude.dms. It belongs to no project and holds the standard function definitions -- sqr, abs, rescale, normalize, concat, MakeDefined, the multi-argument add/mul/and/or, the null-aware comparisons and some thirty more -- that any configuration can call without configuring or including anything.

Opening a configuration adds the prelude to the loaded tree as a container prelude under the root item, hidden and endogenous: the [TreeView]] shows it only with Settings > [GUI options > Show hidden items activated, and it is never written back to the configuration files. It is the last scope a call head is looked up in, an implicit outermost namespace, so a function or template of your own with the same name is found first and simply shadows the prelude one. Tools > Check all function definitions type-checks the prelude definitions along with the configuration's own, which is why it reports many more definitions than the project contains.

Why it was added. sqr(x) was never an operator. Up to GeoDMS 20.8.x it was one of some ninety rewrite rules in RewriteExpr.lsp, an engine data file next to the executable that substituted sqr(x) by x * x in the expression before anything was typed or looked up. Those rules matched on syntax only -- no argument type was checked, and a rule's result type was whatever the substitution happened to produce; a rule head captured the name, so an item of your own called sqr was rewritten away before the configuration was consulted; and, being versioned with the executable, they applied to every model at once, a few of them even referring to configuration paths of one specific project. A typed function definition has none of those properties: it is checked once at its own definition, user names shadow it by the normal scope rules, and it is readable as ordinary GeoDMS syntax rather than as Lisp patterns. Rewrite rules are therefore retired one by one, each together with its prelude replacement, and every prelude body is written to produce the exact expression its rule produced -- so configurations calculate the same results as before.

how to use

See User Guide section GeoDMS GUI.