|
|
|
|
||
|
DEFINITION MODULE SysStrctAux; (******************************************************************* Module SysStrctAux (ISIS_Version_1.2) Copyright (c) 1998-2006 by Andreas Fischlin and ETH Zurich. Purpose Supports the interactive management of the structure of a complex system consisting of several so-called subsystems. Remarks This module allows to configure subsystem variants or to establish the data exchange among subsystems (establishing I/O-links for data exchange among subsystems). It is useful while working with complex, structured systems consisting of several dynamic models, e.g. when studying entire ecosystems. This module provides a part of the standard user interface offered by ISIS, i.e. the part which deals with the system structure (for the part dealing with data cf. module SysDatAux). See also modules SysStructure and SysVariants. This module belongs to ISIS Integrative Systems Implementation Software. Programming o Design Andreas Fischlin 28/05/1998 o Implementation Andreas Fischlin 28/05/1998 ETH Zurich Systems Ecology CHN E 35.1 Universitaetstrasse 16 8092 Zurich SWITZERLAND URLs: <mailto:RAMSES@env.ethz.ch> <http://www.sysecol.ethz.ch> <http://www.sysecol.ethz.ch/SimSoftware/RAMSES> Last revision of definition: 28/05/2002 AF *******************************************************************) FROM DMMenus IMPORT Menu, Command; FROM SysStructure IMPORT SubSystem; (* Error constants: sysStructAuxMsgOffset = DMLanguage.userBase + 430 .. 460-1 *) (*********************************************) (*##### Subsystems' User Interfaces #####*) (*********************************************) PROCEDURE HandOverSubSysMenuManagement(subSys: SubSystem; installCmdsP, removeCmdsP: PROC); (* Installs a section of the so-called system structure menu (see e.g. procedure SysStructMenu from this module) for the subsystem denoted by subSys and which has been previously proclaimed as subsystem by procedure UseAsSubSystem from module SysStructure. In this menu section the subsystem can maintain its own, subsystem specific menu commands. However, since the display of that menu section typically depends on the current system structure, i.e. the activation status or current variant of the subsystem subSys, the actual installation or deinstallation has to be done under control of ISIS (modules SysStrctAux and SysStructure). The procedures handed over will be called whenever needed, e.g. when the system structure is changed by the user (see menu command ConfigureSystem this module) or if the system definition program changes the structure by a call to procedure SetSysStructure (from module SysStructure). Thus it is highly recommended to call this procedure whenever a subsystem wishes to maintain its own menu commands. The procedures passed as actual arguments have to fulfill the following functions: installCmdsP Installs the subsystems specific menu commands by calling install routines from module DMMenus removeCmdsP Removes the subsystems specific menu commands as installed by installCmdsP by calling remove routines from module DMMenus *) (*****************************************) (*##### Standard User Interface #####*) (*****************************************) (*---------------------------------------------------*) (*===== Easy menu and commands installation =====*) (*---------------------------------------------------*) PROCEDURE InstallSysMenuAndUtils(menutitle: ARRAY OF CHAR); (* Installs a menu with the title 'menutitle' or if menutitle is the empty string, with the default title "System" plus all general utilities with standard names (cf. InstallSystemMenu, InstallSysConfigCmd, and InstallSysUtils for individual or otherwise custom use of these functions). Use SysStructMenu to learn about this menu if you wish to install further commands. *) (*-------------------------------------------------------------------*) (*===== Custom installation of menu and individual commands =====*) (*-------------------------------------------------------------------*) PROCEDURE InstallSystemMenu(menutitle: ARRAY OF CHAR); (* Installs a menu with the title 'menutitle' or if menutitle is the empty string, with the default title "System". Use SysStructMenu to learn about this menu if you wish to install further commands. *) PROCEDURE InstallSysConfigCmd(configCmdTxt, configAlCh: ARRAY OF CHAR); (* Installs within menu SysStructMenu the main configuration command with the text 'configCmdTxt'. The latter menu command is associated with procedure 'ConfigureSystem' and can also be activated with the alias char (keyboard equivalent) 'configAlCh'. Use SysConfigCmd to learn about this command if you wish to control its behavior, e.g. to enable or disable it according to specific needs. *) PROCEDURE InstallSysUtils(ioLinkCmdTxt, ioLinkAlCh, ioBrkLinkCmdTxt, ioBrkLinkAlCh, startDivertsCmdTxt, startDivertsAlChr, stopDivertsCmdTxt, stopDivertsAlCh: ARRAY OF CHAR); (*--------------------------------------------------*) (*===== Accessing system menu and commands =====*) (*--------------------------------------------------*) PROCEDURE SysStructMenu(): Menu; PROCEDURE SysConfigCmd(): Command; PROCEDURE GetSysStructMenuCmds(VAR cmds: ARRAY OF Command); (*------------------------------------------------*) (*===== The commands offered by the menu =====*) (*------------------------------------------------*) PROCEDURE ConfigureSystem; (* Procedure used by menu command installed via routine InstallSysConfigCmd. It lets the simulationist configure the system structure interactively. *) (* ------ *) PROCEDURE LinkSubSystems; (* calls implicitely SysModBase.EstablishAllLinks *) PROCEDURE UnlinkSubSystems; (* ------ *) PROCEDURE StartRedirections; PROCEDURE StopRedirections; (* ------ *) PROCEDURE AnyErrorsPresent; PROCEDURE EditAliasChars; PROCEDURE EditSysStructPrefs; PROCEDURE ResetSysStrctAux; (*********************************) (*##### Extra Utilities #####*) (*********************************) PROCEDURE ChooseSubSysVariant(subSys: SubSystem); (* Offers a dialog which lets the user set the variant of the subsystem denoted by subSys. The routine is the same as that automatically installed by ISIS in the system menu for every currently active subsystem. *) PROCEDURE AssignDataToSubSysByDlg; (* Offers a dialog which lets the user check a subsystem and edit the content of the data assign command string (actually using SysMsgLingua.bulletinBoard) which is sent to the subsystem if the user clicks the 'Ok' button. The utility uses routine AssignSubSysData from ISIS module SysStructure. *) (****************************************************) (*##### Client Interface for Customization #####*) (****************************************************) PROCEDURE SetSysStructPreferences( packageErrMode : INTEGER; globLikePkgErrMode, showSysMode, showModelsMode, showInVsMode, showOutVsMode, showDerivsMode, showNewStatesMode, showAuxVsMode: BOOLEAN); PROCEDURE GetSysStructPreferences(VAR packageErrMode : INTEGER; VAR globLikePkgErrMode, showSysMode, showModelsMode, showInVsMode, showOutVsMode, showDerivsMode, showNewStatesMode, showAuxVsMode: BOOLEAN); CONST suppressAllErrMode = 0; (* values used for packageErrMode *) warnOnceErrMode = 1; immediateErrMode = 2; debugErrMode = 3; (* Routines SetSysStructPreferences and GetSysStructPreferences recognize these values for preference packageErrMode packageErrMode meaning -------------- ------- suppressAllErrMode Never show any error messages, i.e. SuppressMsgDisplay from Errors is called. Investigation of error presence and possible display of them is completely the callees responsibility. Use module Errors to check for error occurrence and display of possibly accumulated errors. warnOnceErrMode Inform about single or warn and ask for inspection if many errors (default mode). immediateErrMode No suppression of error displays at all and all errors are shown immediately, i.e. SuppressMsgDisplay from Errors is not called like in above modes. debugErrMode Similar to above but offers the advantage that Errors.Info messages are displayed as Errors.Halt messages and may display additional, internal debugging messages (calls Errors.SetDebugMode(TRUE)). Note, if you call SetSysStructPreferences and change packageErrMode, this may trigger the display of errors if the mode changes to a less quiet one. You can use this effect for instance to acchieve temporarily a completely quiet mode (suppressAllErrMode) and then call SetSysStructPreferences to change to warnOnceErrMode to learn about the possible presence of some errors encountered in the past. IMPLEMENTATION RESTRICTION: Note changing packageErrMode values by calling SetSysStructPreferences affects the error mode of the packages 'ModelWorks' Data extension (SimData, menu "Data") and ISIS throughout. globLikePkgErrMode This flags lets you control the behavior of error handling for the category of global errors identical to that as defined by packageErrMode. Note, any errors not falling within the range DMLanguage.userBase + 300 and + 450, i.e. [600..750]) are not affected by packageErrMode. All errors as defined by modules DMLanguage (or Errors) are predefined global errors and may also be raised by any operation of this package, e.g. file opening or memory shortage errors etc. Parameters showSysMode till showAuxVsMode determine the way the about information on any ISIS system is displayed. You can control whether the about command in the I/O-window 'Models' of the standard user interface used by ISIS lists systems, models, and or model objects. Of course the about command (click into '?' button) can only be executed for non-hidden ISIS systems (see ISIS module SysModBase procedure HideSystem). *) PROCEDURE SetSysMenuShortCuts ( configAlCh, iolnkAlCh, iobrkAlCh, startRedirAlCh, stopRedirAlCh, chkErrAlCh, editPrefsAlCh, editAlChsAlCh: CHAR); PROCEDURE GetSysMenuShortCuts ( VAR configAlCh, iolnkAlCh, iobrkAlCh, startRedirAlCh, stopRedirAlCh, chkErrAlCh, editPrefsAlCh, editAlChsAlCh: CHAR); (* Above two procedures lets you control the keyboard short cuts used by the system structure menu commands. GetSysMenuShortCuts is typically used if you wish to modify only a few of the keyboard shortcuts in a GetSysMenuShortCuts(chkErrAlCh,... ; SetSysMenuShortCuts(chkErrAlCh,... sequence. The values will be remembered and stored as part of the permanent preferences. The characters are used as alias characters for the commands (see below) as follows: configAlCh - ConfigureSystem iolnkAlCh - LinkSubSystems iobrkAlCh - UnlinkSubSystems startRedirAlCh - StartRedirections stopRedirAlCh - StopRedirections chkErrAlCh - AnyErrorsPresent editAlChsAlCh - EditAliasChars editPrefsAlCh - EditSysStructPrefs *) END SysStrctAux.
|
||
|
|
|