def __init__(self, parent=None, name="gphl_setup_widget"): QtImport.QWidget.__init__(self, parent) if name is not None: self.setObjectName(name) # Properties ---------------------------------------------------------- # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- dispatcher.connect(self._refresh_interface, "model_update", dispatcher.Any) # Hardware objects ---------------------------------------------------- # Internal variables ------------------------------------------------- self._widget_data = OrderedDict() self._data_object = GphlAcquisitionData() self._pulldowns = {} self._parameter_mib = DataModelInputBinder(self._data_object) # Graphic elements ---------------------------------------------------- _parameters_widget = self._parameters_widget = QtImport.QWidget(self) QtImport.QGridLayout(_parameters_widget) _parameters_widget.layout().setColumnStretch(2, 1) # Layout -------------------------------------------------------------- # This seems to be necessary to make widget visible _main_vlayout = QtImport.QVBoxLayout(self) _main_vlayout.addWidget(_parameters_widget) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 0, 0)
def __init__(self, parent=None, name="gphl_setup_widget"): QtImport.QWidget.__init__(self, parent) if name is not None: self.setObjectName(name) # Properties ---------------------------------------------------------- # Signals ------------------------------------------------------------ # Slots --------------------------------------------------------------- dispatcher.connect(self._refresh_interface, "model_update", dispatcher.Any) # Hardware objects ---------------------------------------------------- # Internal variables ------------------------------------------------- self._widget_data = OrderedDict() self._data_object = GphlAcquisitionData() self._pulldowns = {} self._pulldown_defaults = {} self._parameter_mib = DataModelInputBinder(self._data_object) # Graphic elements ---------------------------------------------------- _parameters_widget = self._parameters_widget = QtImport.QWidget(self) QtImport.QGridLayout(_parameters_widget) _parameters_widget.layout().setColumnStretch(2, 1) # Layout -------------------------------------------------------------- # This seems to be necessary to make widget visible _main_vlayout = QtImport.QVBoxLayout(self) _main_vlayout.addWidget(_parameters_widget) _main_vlayout.setSpacing(0) _main_vlayout.setContentsMargins(0, 0, 0, 0)
def connect(self, sender, signal, slot=None): """Connect a signal sent by self to a slot The functions provides syntactic sugar ; Instead of self.connect(self, "signal", slot) it is possible to do self.connect("signal", slot) TODO this would be much nicer if refactored as def connect(self, signal, slot, sender=None) Args: sender (object): If a string, interprted as the signal signal (Hashable object): In practice a string, or dispatcher.Any if sender is a string interpreted as the slot slot (Callable object): In practice a functon or method """ if slot is None: if isinstance(sender, string_types): slot = signal signal = sender sender = self else: raise ValueError("invalid slot (None)") signal = str(signal) dispatcher.connect(slot, signal, sender) self.connect_dict[sender] = {"signal": signal, "slot": slot} if hasattr(sender, "connect_notify"): sender.connect_notify(signal)
def __init__(self, obj): object.__init__(self) self.__model = obj # Key - field name/attribute name of the persistant object. # Value - The tuple (widget, validator, type_fn) self.bindings = {} dispatcher.connect(self._update_widget, "model_update", dispatcher.Any)
def __init__(self, obj): object.__init__(self) self.__model = obj # Key - field name/attribute name of the persistant object. # Value - The tuple (widget, validator, type_fn) self.bindings = {} dispatcher.connect(self._update_widget, "model_update", dispatcher.Any)
def connect(self, sender, signal, slot=None): if slot is None: # if type(sender) == bytes: if isinstance(sender, str): # provides syntactic sugar ; for # self.connect(self, "signal", slot) # it is possible to do # self.connect("signal", slot) slot = signal signal = sender sender = self else: raise ValueError("invalid slot (None)") signal = str(signal) dispatcher.connect(slot, signal, sender) self.connect_dict[sender] = {"signal": signal, "slot": slot} if hasattr(sender, "connectNotify"): sender.connectNotify(signal)
def connect(self, signalName, callableFunc): try: dispatcher.disconnect(callableFunc, signalName, self) except Exception: pass dispatcher.connect(callableFunc, signalName, self)