GiD - The personal pre and post processor

TkWidget


The problem type developer can change the way a QUESTION is displayed and if he wishes he can also change the whole contents of a window, while maintaining the basic behavior of the data set, i.e. in the Condition window: assign, unassign, draw; in the Material window: create material, delete material; and so on.


With the default layout for the data windows, the questions are placed one after another in one column inside a container frame, the QUESTION's label in column zero and the VALUE in column one. For an example see picture below.

CONDITION: Steel_section
CONDTYPE: over lines
CONDMESHTYPE: over body elements
QUESTION: Local_Axes#LA#(-Default-,-Automatic-)
VALUE: -Default-
QUESTION: SteelName
VALUE: IPN-80
QUESTION: SteelType
VALUE: A37
END CONDITION 


The developer can override this behavior using TKWIDGET. TKWIDGET is defined as an attribute of a QUESTION and the value associated with it must be the name of a Tcl procedure, normally implemented in a Tcl file for the problem type. This procedure will take care of drawing the QUESTION. A TKWIDGET may also draw the entire contents of the window and deal with some events related to the window and its data.


The prototype of a TKWIDGET procedure is as follow:

proc TKWidgetProc {event args} {
  switch $event {
    INIT {
       ...
    }
    SYNC {
       ...
    }
    DEPEND {
       ...
    }
    CLOSE {
       ...
    }
  }
}


Note: It is also allowed to add extra arguments before the 'event' argument, and provide its values in theTKWIDGET field


e.g. declare this tkwidget procedure with a first argument "-width 20"

TKWIDGET: GidUtils::TkwidgetEntryConfigure {-width 20}



and then define the Tcl procedure ready to get the first extra argument 'configure_options' before 'events':

proc GidUtils::TkwidgetEntryConfigure { configure_options event args } {
  ...
}


The argument event is the type of event and args is the list of arguments depending on the event type. The possible events are: INIT, SYNC, CLOSE and DEPEND. Below is a description of each event.

  • INIT: this event is triggered when GiD needs to display the corresponding QUESTION and the list of arguments is {frame row-var GDN STRUCT QUESTION}: frame is the container frame where the widget should be placed; row-var is the name of the variable, used by GiD, with the current row in the frame; GDN and STRUCT are the names of internal variables needed to access the values of the data; QUESTION is the QUESTION's name for which the TKWIDGET procedure was invoked. Normally the code for this event should initialize some variables and draw the widget.
  • SYNC: this is triggered when GiD requires a synchronization of the data. Normally it involves updating some of the QUESTIONs of the data set. The argument list is {GDN STRUCT QUESTION}.
  • CLOSE: this is triggered before closing the window, as mentioned this can be canceled if an ERROR is returned from the procedure.
  • DEPEND: this event is triggered when a dependence is executed over the QUESTION for which the TKWIDGET is defined, ie. that QUESTION is an lvalue of the dependence. The list of arguments is {GDN STRUCT QUESTION ACTION value} where GDN, STRUCT and QUESTION are as before, ACTION could be SET, HIDE or RESTORE and value is the value assigned in the dependence.


The argument args is a variable amount of arguments, provided here as a list. Its content depends on the 'event' argument.
e.g.
INIT args: PARENT CURRENT_ROW_VARIABLE GDN STRUCT QUESTION
SYNC args: GDN STRUCT QUESTION
DEPEND args: GDN STRUCT QUESTION ACTION VALUE
CLOSE args: GDN STRUCT QUESTION
and its meaning is:
CURRENT_ROW_VARIABLE: store a name of variable that provide the integer row number of the current field
GDN and STRUCT: identify the data (e.g set value [DWLocalGetValue $GDN $STRUCT $QUESTION])
QUESTION is the name of the question that identify the field
ACTION could be "HIDE", "SET" or "RESTORE"

The procedure should return:

  • an empty string "" meaning that every thing was OK;
  • a two-list element {ERROR-TYPE Description} where ERROR-TYPE could be ERROR or WARNING. ERROR means that something is wrong and the action should be aborted. If ERROR-TYPE is the WARNING then the action is not aborted but Description is shown as a message. In any case, if Description is not empty a message is displayed.


The picture below shows a fragment of the data definition file and the GUI obtained. This sample is taken from the problem type RamSeries/rambshell and in this case the TKWIDGET is used to create the whole contents of the condition windows. For a full implementation, please download the problem type and check it.

CONDITION: Steel_section
CONDTYPE: over lines
CONDMESHTYPE: over body elements
QUESTION: Local_Axes#LA#(-Default-,-Automatic-)
VALUE: -Default-
QUESTION: SteelName
VALUE: -
QUESTION: SteelType
VALUE: -
TKWIDGET: SteelSections
END CONDITION 



Predefined TKWIDGET procedures:
There are some useful features that have been implemented in tcl procedures provided by default in GiD, inside the dev_kit.tcl file,
specially to replace the standard entry of a question by some specialized widget.

  • GidUtils::TkwidgetGetFilenameButton

To show an entry and a select file button that open the dialog window to select an existent file.


  • GidUtils::TkwidgetPickPointOrNode

To show an entry and a button to pick in screen the id number of a point in geometry mode or a node in mesh mode


  • GidUtils::TkwidgetGetLayername

To show a combobox with the current layers


  • GidUtils::TkwidgetGetGroupname

To show a combobox with the current groups


  • GidUtils::TkwidgetGetVector3D

To show in a single row three entries for x, y, z real coordinates of points or directions.


COPYRIGHT © 2022 · GID · CIMNE