8.6.8.4. pymodaq_gui.utils.custom_app module
- class pymodaq_gui.utils.custom_app.CustomApp(parent=None, tree=None, title=None, toolbar=None, create_app_toolbar=True, add_toolbar_break=True, create_app_menu=False, h5_actions_not=(FileAction.CLOSE_FILE, FileAction.OPEN_FILE))[source]
Bases:
QObject,ActionManager,ParameterManagerBase Class to ease the implementation of User Interfaces
Inherits the MixIns ActionManager and ParameterManager classes. You have to subclass some methods and make concrete implementation of a given number of methods:
setup_docks_and_widgets: to code the widget layout of your Application using Docks (and the DockArea) or other widgets
setup_menus_and_toolbars: to create the menus and the toolbar associated with actions (see setup_actions)
setup_actions: add actions (see
pymodaq_gui.managers.action_manager.ActionManager) or widgets and optionally add them to toolbar and menuconnect_things: to connect signals and slots. Either from actions (
pymodaq_gui.managers.action_manager.ActionManager.connect_action()) or direct signal connection
Other methods to reimplement, related to Parameter management
value_changed: non mandatory, see
pymodaq.utils.managers.parameter_manager.ParameterManagerchild_added: non mandatory, see
pymodaq.utils.managers.parameter_manager.ParameterManagerparam_deleted: non mandatory, see
pymodaq.utils.managers.parameter_manager.ParameterManager
Depending on the object type, the mainwindow and dockarea attributes may be None
if parent is:
- None or QWidget, the attributes will be
parent = QWidget
maindow = None
dockarea = None
- DockArea, the attributes will be
parent = DockArea
maindow = QMainWindow
dockarea = DockArea
- QMainWindow, the attributes will be
parent = QMainWindow
maindow = QMainWindow
dockarea = None
- Variables:
title (
str) – Get/set the app titleparent (
QWidget,QMainWindoworDockArea)mainwindow (
QMainWindow) – the parent QMainWindowdockarea (
DockArea) – The underlying DockArea (as central widget of the QMainWindow)menubar (
QMenuBar) – The QMainWindow menubarstatusbar (
QStatusBar) – The QMainWindow statusbarsplash_sc (
QSplashScreen) – A splash screen to be used to display informationget_theme (
method) – Returns the current QApplication theme, see qt_themes package
- Parameters:
parent (
Union[DockArea,QMainWindow,QWidget])
- tree: ParameterTree
an optional Custom ParameterTree
- title: str
The title of the Application instance
- toolbar: QTtWidgets.QToolbar
a toolbar from another parent application
- create_app_toolbar: bool
If True (default) will create a default toolbar with the name of the application as reference and title
- add_toolbar_break: bool
If True, will add a break in the QToolbarArea before adding the toolbar
- create_app_menu: bool
If True (default is False) will create a default menu in the menubar with the name of the application as reference and title
See also
pymodaq.utils.managers.action_manager.ActionManager,pymodaq.utils.managers.parameter_manager.ParameterManager- Attributes:
- h5_manager
h5saverConvenience method to access the h5saver and for backcompatibility
- menubar
- module_and_data_saver
- splash_sc
- statusbar
- thread_manager
- title
Methods
Connect actions and/or other widgets signal to methods
Method to be reimplemented in order to do things after the UI setup
enable_workflow_actions([enable, excepted, ...])Enable/Disable workflow actions (start, stop, pause) + other specified ones
Markdown text describing how to use this application, shown by the Help action
get_local_folder([user])Create a local User or system wide folder to store things about this extension
create here Widgets to be added to the StatusBar To be reimplemented
Generic method to populate the Status Bar
quit_fun()Method to be reimplemented in order to define a custom quit function
set_permanent_status(status)Display a permanent status message
Method where to create actions.
deprecated, see setup_docks_and_widgets
Method to be reimplemented to set up the docks layout and/or widgets
setup_menu([menubar])Deprecated, use setup_menus_and_toolbars
setup_menus_and_toolbars([menubar])Non-mandatory method to be subclassed in order to create menus and toolbars
update_status(message[, wait_time])Show the message in the status bar with a delay of wait_time ms.
apply_size_hint
get_theme
log_signal
setup_ui
setup_workflow_actions
- classmethod get_local_folder(user=False)[source]
Create a local User or system wide folder to store things about this extension
- Return type:
- connect_things()[source]
Connect actions and/or other widgets signal to methods
To be reimplemented
- do_things_after_ui_setup()[source]
Method to be reimplemented in order to do things after the UI setup
- enable_workflow_actions(enable=True, excepted=(), opposite=(), other_actions=())[source]
Enable/Disable workflow actions (start, stop, pause) + other specified ones
if an action is specified in excepted, nothing is done on it if an action is specified in opposite, the opposite boolean is applied to its enabled status
Everytime this function is called the Pause action is unchecked
- get_help_markdown()[source]
Markdown text describing how to use this application, shown by the Help action
Read from the help.md (or <module>.help.md) next to the module defining the class, else the class docstring
- Return type:
- insert_custom_status_widgets()[source]
create here Widgets to be added to the StatusBar To be reimplemented
Examples
self._file_open_LED = QLED() self.statusbar.addPermanentWidget(self._file_open_LED)
- populate_status_bar()[source]
Generic method to populate the Status Bar
for customization, reimplement insert_custom_status_widgets method
- set_permanent_status(status)[source]
Display a permanent status message
Method populate_status_bar should have been called beforehand
- setup_actions()[source]
Method where to create actions.
To be reimplemented
Examples
>>> self.add_action('grab', 'Grab', 'camera', "Grab from camera", checkable=True, menu='file_menu') >>> self.add_action('load', 'Load', 'Open', "Load target file (.h5, .png, .jpg) or data from camera", checkable=False) >>> self.add_action('save', 'Save' 'SaveAs', "Save current data", checkable=False)
>>>self.affect_to(‘load’, ‘file_menu’) >>>self.affect_to(‘save’, ‘file_menu’)
- setup_docks_and_widgets()[source]
Method to be reimplemented to set up the docks layout and/or widgets
Examples
>>>self.docks[‘ADock’] = gutils.Dock(‘ADock name’) >>>self.dockarea.addDock(self.docks[‘ADock’]) >>>self.docks[‘AnotherDock’] = gutils.Dock(‘AnotherDock name’) >>>self.dockarea.addDock(self.docks[‘AnotherDock’’’], ‘bottom’, self.docks[‘ADock’])
Deprecated, use setup_menus_and_toolbars
Non-mandatory method to be subclassed in order to create menus and toolbars
create menu and toolbar for actions defined in setup_actions, for instance:
Examples
>>>file_menu = self.add_menu(‘file_menu’, ‘File’, self.menubar) >>>submenu = self.add_menu(‘submenu’, ‘ASubMenu’, ‘file_menu’) >>>file_toolbar = self.add_toolbar(‘file_toolbar’, ‘File’, self.mainwindow)
See also
pymodaq.utils.managers.action_manager.ActionManager
- update_status(message, wait_time=None)[source]
Show the message in the status bar with a delay of wait_time ms.
- h5_base_group_name = 'AppData'
- log_signal
- mainwindow: QMainWindow
- property module_and_data_saver: DataToExportSaver
- params = []
- show_h5file_statusbar_widgets = False
- show_workflow_actions = False
- property splash_sc: QSplashScreen
- staticMetaObject = PySide6.QtCore.QMetaObject("CustomApp" inherits "QObject": Methods: #4 type=Signal, signature=log_signal(QString), parameters=QString )
- property statusbar: QStatusBar | None
- property thread_manager: WorkerThreadManager