gui.tcl has gone through a few major changes Migrating from version 1 to version 2: If you overloaded any of the following you will need to make changes. See their descriptions below. add_buttons module_description Also if you overloaded begin_dialog or end_dialog (which may have been necessary but messy) you should now refactor your code. Fonts: Fonts are currently unmanaged, using TCL defaults. Fonts listed here will change the appearance of the created dialog. balloon-help Font to be displayed for balloon help Globals: dlg This is the key to refer to a created dialog. It starts at 0. When begin_dialog is called this goes up by one, become the key for the created dialog. A program using gui.tcl needs to get this value for a created dialog in order to refer to it again in the future. In version 2 begin_dialog returns the new value of dlg for convenience. path This specifies the tk object path in which the dialog will be created. Before version 2 this was always the path to a toplevel, such as {} when run from G_gui() or something like .moduleX when running from d.m or gis.m. This must be set before calling begin_dialog. imagepath Version 1 only, the folder to find bwidgets 1.2.1 images in. $env(GISBASE)/bwidget/images/ iconpath Introduced in version 2, the path to search for icons. $env(GISBASE)/etc/gui/icons/ opt An associative array used for dialogs to store their attributes, options, current answers, etc. Starts off unset. opt parts: $dlg,layout_* Reserved for use fo the layout system (V2) Procedures: Miscellaneous: icon {class member} Searches icons for an icon, returns either a photo command or 0 on failure. See gui/icons/README for more information handle_scroll Callback that makes mouse wheel scrolling work for frames Command and selection dialog: mkcmd Makes the argv style list command from the current options. mkcmd_string Late version 1 and version 2: Makes a string verion of the current command. show_cmd Late version 1 and version 2: Updates the current command label prnout Version 1, early version 2: File callback that prints output to the text widget in opt($dlg,outtext). Could be overloaded to capture command output, probably a better idea not to. Removed now, this is handled by the gronsole made in make_output. get_file Opens a file selection dialog get_map Opens a database element selection dialog using $env(GISBASE)/etc/gtcltk/select.tcl run_cmd Runs the current command. Could be overloaded to get the event from clicking the run button. It's probably a better idea to overload add_buttons in version 1 or make_dialog_end or make_buttons in version 2 and later help_cmd, close_cmd, clear_cmd Could be overloaded to get the events from clicking the help, clear, and close buttons. See note above about run_cmd. progress {dlg percent} Used to set the filledness of the progress bar. -1 empties it. Layout rules: All of these exist only in version 2. Layout rules are prime candidates for overloading, and can drastically change the appearance of the dialog. layout_* Reserved for layout rules. layout_make_frame is part of the default strategy, not the interface layout_get_frame {dlg guisection optn} Must return text for a frame that option widgets can be packed into layout_get_special_frame {dlg guisection optn} Must return text for a frame that some special widget can be packed into. Used for, for example, output. layout_raise_frame {dlg guisection optn} The named option or guisection should be displayed on the screen layout_raise_special_frame {dlg guisection optn} The named option or guisection should be displayed on the screen make_layout {dlg path root} The default make_dialog calls this to make the layout. A layout should overload it. Stuff that makes the gui: All of make_* are good candidated for overloading. Appearance and behaviour can be greatly changed just by overloading make_dialog and make_dialog_end make_module_description: Version 2 only, should make a description of the module. It could be overloaded to turn off the description or to provide a different one. Overloading make_dialog could also turn offf the description. Related to module_description (version 1 only). make_command_label: Version 2 only, makes a little command label withtextvar opt($dlg,cmd_string). See also show_cmd. Packs against the bottom side. make_output: Version 2 only, Makes a text box for displaying output. Required for make_buttons unless run_cmd is overloaded, since they contain a run button. make_progress: Version 2 only, makes a progress bar, see also progress. No longer used as progress is displayed by the gronsole. make_buttons: Version 2 only, adds buttons to the dialog. Replaces version 1's add_buttons. Packs against the bottom. make_dialog In version 2 this sets up everything that gets set up before the program is run. By default it does make_module_description, make_command_label, make_layout, and make_buttons and is a prime candidate for overloading. In version one this set up the windows for options, output, progress, and their associated opt variables opt($dlg, outtext), opt($dlg, progress). It also initialized opt($dlg, path), opt($dlg, root), and opt($dlg, suf). It would have been difficult to overload. A user interface wanting a special to be displayed before options should put a layout_get_special_frame here to get its frame at the top of the order. make_dialog_end Version 2 only, like make_dialog but run from end_dialog instead of from begin_dialog. module_description Version 1 only. In version 1 this added labels to the dialog for the description of the module. It was called from begin_dialog. If you overloaded it you should move those changes to an overloaded version of make_module_description add_buttons Only in version 1, adds the buttons to the window. Migrating: change proc definition from proc add_buttons {dlg} { to proc make_buttons {dlg path root} { do_* Make various widgets Decent candidates for overloading. Most layouts will want to overload do_label. Cleanup Procedures: These are shared between add_option and add_flag for polishing their input into a normal form. Notfor overriding: normalize_guisection choose_help_text Command interface: Gets and sets the command in tcl argv style list for exec: dialog_get_command {dlg} dialog_set_command {dlg cmd} Interface for making the dialog: Calling convention changed in late version 1. These are terrible candidates for overloading. parser.c is the only agent that should be using these. begin_dialog Must be called before add_option or add_flag. Must not be called again until after end_dialog is called In version 2 this does some of the things that version 1 did in make_dialog. add_option Must be called between begin_dialog and end_dialog to add an option add_flag Like option, but for flags end_dialog In version 1 this called add_buttons. Now it calls make_dialog_end to add more to the ui and layout_raise_frame to bring up the first option section.