A collection of custom widgets used in the pyFormex GUI
The widgets in this module were primarily created in function of the pyFormex GUI. The user can apply them to change the GUI or to add interactive widgets to his scripts. Of course he can also use all the Qt widgets directly.
Classes defined in module widgets
An empty class to allow easy attribute syntax
A file selection dialog.
You can specify a default path/filename that will be suggested initially. If a pattern is specified, only matching files will be shown. A pattern can be something like Images (*.png *.jpg) or a list of such strings. Default mode is to accept any filename. You can specify exist=True to accept only existing files. Or set exist=True and multi=True to accept multiple files. If dir==True, a single existing directory is asked.
Methods
Ask for a filename by user interaction.
Return the filename selected by the user. If the user hits CANCEL or ESC, None is returned.
A file selection dialog specialized for opening projects.
Methods
A dialog for saving to an image file.
The dialog contains the normal file selection widget plus some extra fields to set the Save Image parameters:
Methods
A docked selection widget.
A widget that is docked in the main window and contains a modeless dialog for selecting items.
Methods
A modeless dialog for selecting one or more items from a list.
Methods
Mark the specified items as selected.
Return the list of selected values.
If the user cancels the selection operation, the return value is None. Else, the result is always a list, possibly empty or with a single value.
A dialog for selecting one or more items from a list.
Methods
Mark the specified items as selected.
Return the list of selected values.
If the user cancels the selection operation, the return value is None. Else, the result is always a list, possibly empty or with a single value.
A single input item, usually with a label in front.
The created widget is a QHBoxLayout which can be embedded in the vertical layout of a dialog.
This is a super class for all input items. It just creates a label. The input field(s) should be added by the dedicated subclass.
The constructor has one required argument: name. It is the name used to identify the item and should be unique for all InputItems in the same dialog. Other (optional) positional parameters are passed to the QHBoxLayout constructor.
By default the constructor adds a label to the QHBoxLayout, with text set by the text keyword argument or (by default) by the name of the item. Use the text argument if you want the displayed text to be different from the items name. A text='' parameter will suppress the label. This is e.g. used in the InputBoolean constructor, where the text is displayed by the input field.
The superclass also defines default values for the text(), value() and setValue() methods.
Subclasses should initialize the superclass as follows:
InputItem.__init__(self,name,*args,**kargs)
Subclasses should override:
Subclasses can set validators on the input, like input.setValidator(QtGui.QIntValidator(input))
Subclasses can define a show() method e.g. to select the data in the input field on display of the dialog.
Methods
Return the name of the InputItem.
Return the displayed text of the InputItem.
Return the widget’s value.
Change the widget’s value.
An unchangeable input field with a label in front.
It is just like an InputString, but the text can not be edited.
There are no specific options.
Methods
Return the widget’s value.
An unchangeable information field.
The value is displayed as a string.
By default, the text format will be guessed to be either plain text, ReStructuredText ot html. Specify plain=True to display in plain text.
Methods
Change the widget’s value.
A string input field with a label in front.
If the type of value is not a string, the input string will be eval’ed before returning.
Options:
Methods
Select all text on first display.
Return the widget’s value.
A scrollable text input field with a label in front.
By default, the text format will be guessed to be either plain text, ReStructuredText ot html.
Specify plain=True to display in plain text.
If the type of value is not a string, the input text will be eval’ed before returning.
Methods
Select all text on first display.
Return the widget’s value.
Change the widget’s value.
A boolean input item.
Methods
Return the displayed text.
Return the widget’s value.
Change the widget’s value.
A combobox InputItem.
A combobox is a widget allowing the selection of an item from a drop down list.
choices is a list/tuple of possible values. default is the initial/default choice. If default is not in the choices list, it is prepended. If default is None, the first item of choices is taken as the default.
The choices are presented to the user as a combobox, which will initially be set to the default value.
An optional onselect function may be specified, which will be called whenever the current selection changes.
Methods
Return the widget’s value.
Change the widget’s value.
A radiobuttons InputItem.
Radio buttons are a set of buttons used to select a value from a list.
choices is a list/tuple of possible values. default is the initial/default choice. If default is not in the choices list, it is prepended. If default is None, the first item of choices is taken as the default.
The choices are presented to the user as a hbox with radio buttons, of which the default will initially be pressed. If direction == ‘v’, the options are in a vbox.
Methods
Return the widget’s value.
Change the widget’s value.
A pushbuttons InputItem.
Methods
Change the text on button index.
Change the icon on button index.
Return the widget’s value.
Change the widget’s value.
An integer input item.
Options:
Methods
Select all text on first display.
Return the widget’s value.
Change the widget’s value.
An float input item.
Methods
Select all text on first display.
Return the widget’s value.
Change the widget’s value.
A table of floats input item.
Methods
Select all text on first display.
Return the widget’s value.
Change the widget’s value.
An integer input item using a slider.
Options:
Methods
A float input item using a slider.
Options:
Methods
A 3D point/vector input item.
Methods
Return the widget’s value.
Change the widget’s value.
A button input item.
The button input field is a button displaying the current value. Clicking on the button executes a function responsible for changing the value.
Extra parameters:
Methods
Set the value by calling the button’s func
A color input item.
Methods
Change the widget’s value.
An input item to select a font.
Methods
An input item containing any other widget.
The widget should have:
The return value of this item is an ODict.
Methods
Return the displayed text.
Return the widget’s value.
Change the widget’s value.
A boxed group of InputItems.
Methods
Return the widget’s value.
Change the widget’s value.
A dialog widget to interactively set the value of one or more items.
Overview
The pyFormex user has full access to the Qt4 framework on which the GUI was built. Therefore he can built input dialogs as complex and powerful as he can imagine. However, directly dealing with the Qt4 libraries requires some skills and, for simple input widgets, more effort than needed.
The InputDialog class presents a unified system for quick and easy creation of common dialog types. The provided dialog can become quite sophisticated with tabbed pages, groupboxes and custom widgets. Both modal and modeless (non-modal) dialogs can be created.
Items
Each basic input item is a dictionary, where the fields have the following meaning:
Other arguments
Methods
Add input items to form.
items is a list of input item data layout is the widget layout where the input widgets will be added
Add a Tab page of input items.
Add a group of input items.
Add a single input item.
Hide the dialog and set the result code to TIMEOUT
Returns True if the result code was set to TIMEOUT
Show the dialog.
For a non-modal dialog, the user has to call this function to display the dialog. For a modal dialog, this is implicitely executed by getResult().
If a timeout is given, start the timeout timer.
Update the dialog’s return value from the field values.
This function is connected to the ‘accepted()’ signal. Modal dialogs should normally not need to call it. In non-modal dialogs however, you can call it to update the results without having to raise the accepted() signal (which would close the dialog).
Update a dialog from the data in given dictionary.
d is a dictionary where the keys are field names in the dialog. The values will be set in the corresponding input items.
Get the results from the input dialog.
This fuction is used to present a modal dialog to the user (i.e. a dialog that must be ended before the user can continue with the program. The dialog is shown and user interaction is processed. The user ends the interaction either by accepting the data (e.g. by pressing the OK button or the ENTER key) or by rejecting them (CANCEL button or ESC key). On accept, a dictionary with all the fields and their values is returned. On reject, an empty dictionary is returned.
If a timeout (in seconds) is given, a timer will be started and if no user input is detected during this period, the input dialog returns with the default values set. A value 0 will timeout immediately, a negative value will never timeout. The default is to use the global variable input_timeout.
The result() method can be used to find out how the dialog was ended. Its value will be one of ACCEPTED, REJECTED ot TIMEOUT.
A table model that represent data as a two-dimensional array of items.
data is any tabular data organized in a fixed number of rows and colums. This means that an item at row i and column j can be addressed as data[i][j]. Optional lists of column and row headers can be specified.
Methods
Return the TableModel flags.
A TableModel specialized for represents 2D array data.
Methods
A widget to show/edit a two-dimensional array of items.
Methods
Present a list of widgets as a single tabbed widget.
Methods
A generic dialog widget.
The dialog if formed by a number of widgets stacked in a vertical box layout. At the bottom is a horizontal button box with possible actions.
Methods
A dialog widget to show/edit a two-dimensional array of items.
A convenience class representing a Table within a dialog.
Methods
A message box is a widget displaying a short text for the user.
The message box displays a text, an optional icon depending on the level and a number of push buttons.
When the MessageBox is displayed with the getResult() method, a modal dialog is created, i.e. the user will have to click a button or hit the ESC key before he can continue.
If you want a modeless dialog, allowing the user to continue while the message stays open, use the show() mehod to display it.
Methods
Add a check field at the bottom of the layout.
Display the message box and wait for user to click a button.
This will show the message box as a modal dialog, so that the user has to click a button (or hit the ESC key) before he can continue. Returns the text of the button that was clicked or an empty string if ESC was hit.
A message box is a widget displaying a short text for the user.
The message box displays a text, an optional icon depending on the level and a number of push buttons.
When the MessageBox is displayed with the getResult() method, a modal dialog is created, i.e. the user will have to click a button or hit the ESC key before he can continue.
If you want a modeless dialog, allowing the user to continue while the message stays open, use the show() mehod to display it.
Methods
Display a text and wait for user response.
Possible choices are ‘OK’ and ‘CANCEL’. The function returns True if the OK button was clicked or ‘ENTER’ was pressed, False if the ‘CANCEL’ button was pressed or ESC was pressed.
Methods
A widget accepting a line of input.
Methods
A box with action buttons.
Methods
A widget displaying the coordinates of a point.
Methods
Return the current x,y,z values as a list of floats.
Set the three values of the widget.
A widget displaying an image.
Methods
Show an image in the viewer.
image: either a filename or an existing QImage instance. If a filename, it should be an image file that can be read by the QImage constructor. Most image formats are understood by QImage. The variable gui.image.image_formats_qtr provides a list.
A dialog widget to show two-dimensional arrays of items.
Methods
A dialog widget to set the value of one or more items.
While general input dialogs can be constructed from all the underlying Qt classes, this widget provides a way to construct fairly complex input dialogs with a minimum of effort.
The input dialog can be modal or non-modal dialog.
Methods
Add input items.
items is a list of input item data layout is the widget layout where the input widgets will be added
Hide the dialog and set the result code to TIMEOUT
Returns True if the result code was set to TIMEOUT
Show the dialog.
For a non-modal dialog, the user has to call this function to display the dialog. For a modal dialog, this is implicitely executed by getResult().
If a timeout is given, start the timeout timer.
Update the dialog’s return value from the field values.
This function is connected to the ‘accepted()’ signal. Modal dialogs should normally not need to call it. In non-modal dialogs however, you can call it to update the results without having to raise the accepted() signal (which would close the dialog).
Update a dialog from the data in given dictionary.
d is a dictionary where the keys are field names in the dialog. The values will be set in the corresponding input items.
Get the results from the input dialog.
This fuction is used to present a modal dialog to the user (i.e. a dialog that must be ended before the user can continue with the program. The dialog is shown and user interaction is processed. The user ends the interaction either by accepting the data (e.g. by pressing the OK button or the ENTER key) or by rejecting them (CANCEL button or ESC key). On accept, a dictionary with all the fields and their values is returned. On reject, an empty dictionary is returned.
If a timeout (in seconds) is given, a timer will be started and if no user input is detected during this period, the input dialog returns with the default values set. A value 0 will timeout immediately, a negative value will never timeout. The default is to use the global variable input_timeout.
The result() method can be used to find out how the dialog was ended. Its value will be one of ACCEPTED, REJECTED ot TIMEOUT.
Functions defined in module widgets
Return the maximum widget size.
The maximum widget size is the (available) screen size. This may be smaller than the physical screen size (e.g. excluding docking panels).
Add a timeout to a widget.
If timeout is positive, a timer will be installed into the widget which will call the timeoutfunc after timeout seconds have elapsed. The timeoutfunc can be any callable, but usually will emit a signal to make the widget accept or reject the input. The timeoutfunc will not be called is if the widget is destructed before the timer has finished.
Ask the user to select a font.
A font selection dialog widget is displayed and the user is requested to select a font. Returns a font if the user exited the dialog with the OK button. Returns None if the user clicked CANCEL.
Create a color selection dialog and return the selected color.
col is the initial selection. If a valid color is selected, its string name is returned, usually as a hex #RRGGBB string. If the dialog is canceled, None is returned.
Guess the InputItem type from the value
A convenience function to create an InputItem dictionary
A convenience function to create an InputItem dictionary
A convenience function to create an InputItem dictionary
A convenience function to create an InputItem dictionary
This function accepts InputItem data in the old format: ( name, value, [ itemtype, [ optionsdict ] ] ) and turns them into a dictionary as required by the new InputItem format.
Convert a list of InputItems from old to new format.
In the old format, data for InputItems could be lists or tuples or dictionaries, and there were even differently interpreted lists or tuples. In the new format, all InputItem data are dictionaries.
This function helps the transition to the new format, by doing its best to convert lists of data in old format to the new format. For most simple old inputdata, calling this function will suffice. However, this function does not guarantee full and correct conversion of all old format. Users are therfore encouraged to restructure their data and either write them as dictionaries per item, or use the simpleInputItem call to create the dictionary for each item.
The conversion does the following:
Anything else will currently raise a ValueError.
Create an InputItem of any type, depending on the arguments.
Arguments: only name and value are required
Create an InputItem with the old data style.
This translates the data from the legacy InputItem data to the new style required by InputAny. Returns the InputItem constrctured with the data.
Update the input data fields with new data values
The data items with a name occurring as a key in newdata will have their value replaced with the corresponding value in newdata, unless this value is None.
The user should make sure to set only values of the proper type!
Update the input data fields with new data values
The values in data which have a matching key in newdata will be replaced with the new value, unless it is None.
This function requires that the dialog items are lists, not tuples.
Update the text of a text display widget.
This function allows to display other text formats besides the plain text and html supported by the widget. Any format other than plain or html will be converted to one of these before sending it to the widget. Currently, we convert the following formats:
Create a set of dialog buttons
dia is a dialog widget
actions is a list of tuples (name,) or (name,function). If a function is specified, it will be executed on pressing the button. If no function is specified, and name is one of ‘ok’ or ‘cancel’ (case is ignored), the button will be bound to the dialog’s ‘accept’ or ‘reject’ slot. If actions==None (default), it will be set to the default [('Cancel',),('OK',)].
Specify actions=[] if you want an empty dialogDuttons. default is the name of the action to set as the default. If no default is given, it is set to the LAST button.
Returns a horizontal box layout with the buttons.