Source code for pylablib.aux_libs.gui.gui_contoller
from ...core.gui.qt.thread import controller, threadprop
from ...core.gui.qt import values as values_module
from PyQt5 import QtCore
import collections
[docs]class IGUIController(QtCore.QObject):
"""
Basic layout of a controller object which coordinates interaction between different widgets working on the same task.
"""
def __init__(self):
super(IGUIController, self).__init__()
self.widgets_desc={}
self.widgets={}
self.ctl=controller.get_gui_controller()
self.params_table=values_module.IndicatorValuesTable()
TWidget=collections.namedtuple("TWidget",["params_path"])
[docs] def add_widget_desc(self, name, params_path=None):
"""
Add a widget description under a given name.
If params_path` is not ``None``, it specifies path under which the widget is stored in the parameters' table
(by default, same as the widget's name).
"""
self.widgets_desc[name]=self.TWidget(params_path)
[docs] def set_widget(self, name, widget):
"""
Set the widget with the given name.
Description with the given name should be created beforehand (see :meth:`add_widget_desc`).
"""
self.widgets[name]=widget
desc=self.widgets_desc.setdefault(name,self.TWidget(None))
if desc.params_path is not None:
self.params_table.add_widget(desc.params_path,widget)
[docs] def get_widget(self, name, default=None):
"""
Get the widget with the given name
"""
return self.widgets.get(name,default)
__getitem__=get_widget
def __contains__(self, name):
return name in self.widgets
[docs] def get_all_values(self):
"""Get all widget parameter values"""
return self.params_table.get_all_values()
[docs] def set_all_values(self, params):
"""Set all widget parameter values"""
return self.params_table.set_all_values(params)
[docs] def get_all_indicators(self):
"""Get all GUI indicators as a dictionary"""
return self.params_table.get_all_indicators()