GiD - The personal pre and post processor

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »


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.

  • No labels