Example #1
0
    def __init__(self,
                 position=None,
                 size=None,
                 name=None,
                 subtitle=None,
                 **kwargs):
        # HACK to ensure that closeEvent is called only twice (seems like a
        # Qt bug).
        self._closed = False
        if not QApplication.instance():  # pragma: no cover
            raise RuntimeError("A Qt application must be created.")
        super(GUI, self).__init__()
        QMetaObject.connectSlotsByName(self)
        self.setDockOptions(QMainWindow.AllowTabbedDocks
                            | QMainWindow.AllowNestedDocks
                            | QMainWindow.AnimatedDocks)

        self._set_name(name, subtitle)
        self._set_pos_size(position, size)

        # Registered functions.
        self._registered = {}

        # Mapping {name: menuBar}.
        self._menus = {}

        # We can derive from EventEmitter because of a conflict with connect.
        self._event = EventEmitter()

        # Status bar.
        self._lock_status = False
        self._status_bar = QStatusBar()
        self.setStatusBar(self._status_bar)

        # List of attached Actions instances.
        self.actions = []

        # Default actions.
        self._set_default_actions()

        # Create and attach snippets.
        self.snippets = Snippets(self)

        # Create the state.
        self.state = GUIState(self.name, **kwargs)

        @self.connect_
        def on_show():
            logger.debug("Load the geometry state.")
            gs = self.state.get('geometry_state', None)
            self.restore_geometry_state(gs)

        @self.connect_
        def on_close():
            logger.debug("Save the geometry state.")
            gs = self.save_geometry_state()
            self.state['geometry_state'] = gs
            # Save the state to disk when closing the GUI.
            self.state.save()
Example #2
0
 def __init__(self, *args, **kwargs):
     super(DockWidget, self).__init__(*args, **kwargs)
     self._event = EventEmitter()