Tools¶
OpenStructure has several Tool
options that are all listed in the toolbar
close to the 3D window. A tool is activated upon selecting it in the toolbar.
Input events are sent to the tool as long as the Ctrl key (Cmd on Mac) is
pressed. For example the rigid body manipulator will rotate and shift the
currently selected nodes in the scene win. Upon releasing Ctrl, the events are
sent to the camera, making it possible to rapidly switch between adjusting the
viewing angle of the camera and manipulating the position and orientation of
scene objects.
The example Write a Tool in Python demonstrates how to add a simple tool (written in Python) to OpenStructure.
-
class
Tool
¶ Parameters of the tool that are configurable should be implemented using the ToolOptions facility. This automatically takes care of remembering the used options over different sessions (in the future) and creates a widget to modify these options.
input_events Input Events
Tools receive input events when the Control key (Command on MacOS X) is pressed. This includes both keyboard events and mouse events such as mouse move events, clicks and Real clicks.
Tools only receive mouse move events when one of the mouse buttons is pressed.
-
CanOperateOn
(nodes)¶ Determines if the tool can manipulate a certain
gfx.GfxNode
. This method is used to enabled/disable certain actions (in the toolbar, for example).Return True if the Tool can operate on all GfxNodes which are in the given list. Otherwise False
Parameters: nodes ( NodePtrList
) – List withgfx.GfxNode
Return type: bool
-
Click
(event)¶ Left mouse click
Parameters: event – object with the event information
-
DoubleClick
(event)¶ Double click
Parameters: event ( MouseEvent
) – object with the event information
-
GetIconPath
()¶ Returns the path to an shiny icon. If no path is given, no icon will be displayed
Return type: str
-
GetName
()¶ Returns the name of the Tool which will be displayed in the gui.
Return type: str
-
GetToolOptions
()¶ Return type: ToolOptions
-
-
class
ToolOption
¶ Currently, there are four different types of ToolOption which can be used to build up your own tool. They will automatically generate the appropriate QT widgets:
ToolOptionInt
generates a QLineEdit of integer typeToolOptionFloat
generates a QLineEdit of float typeToolOptionEnum
generates a QComboBoxToolOptionButton
generates a QPushButton
-
class
ToolOptionInt
(key, verbose_name, default_value, min_value, max_value)¶ Parameters: - key – Internal key name.
- verbose_name – Name used as label in the widget.
- default_value – Default value.
- min_value – Minimum allowed value. Defaults to minimum possible value.
- max_value – Maximum allowed value. Defaults to maximum possible value.
-
GetDefault
()¶
-
GetUpperLimit
()¶
-
GetLowerLimit
()¶
-
GetValue
()¶
-
SetValue
(value)¶
-
class
ToolOptionFloat
(key, verbose_name, default_value, min_value, max_value)¶ Parameters: - key – Internal key name
- verbose_name – Name used as label in the widget.
- default_value – Default value.
- min_value – Minimum allowed value. Defaults to minimum possible value.
- max_value – Maximum allowed value. Defaults to maximum possible value.
-
GetDefault
()¶
-
GetUpperLimit
()¶
-
GetLowerLimit
()¶
-
GetValue
()¶
-
SetValue
(value)¶
-
class
ToolOptionEnum
(key, verbose_name)¶ Parameters: - key – Internal key name
- verbose_name (str) – Name used as label in the widget
-
Add
(text, tag)¶ Parameters: - text (str) – Text in dropdown menu
- tag (int) – Index in dropdown menu
-
SetIndex
(index)¶
-
GetIndex
()¶
-
GetValue
()¶
-
Begin
()¶
-
End
()¶
-
Size
()¶
-
ToolOptionButton(key, verbose_name, QObject* receiver,
-
const char *slot_method)
Parameters: - key – Internal key name
- verbose_name – Name used as label in the widget
- slot_method (const char *) – Name of slot method that should be invoked upon releasing the buton
- receiver (QObject *) – QObject that implements the slot method