Beispiel #1
0
    def __init__(self, settings, parent, name):
        super(BaseFrame, self).__init__(settings, parent, name)
        self.plugin_mgr = MetaPluginManager()
        self.name = name
        self._is_active = False
        self._intervals = list()

        self._tab_name = None
        self.process_control = ProcessControl(self)
        layout = QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)

        self._tab = TabControl(self)

        tabs = [self._tab_name] if self.TABS is None else self.TABS
        for name in tabs:
            frame = QFrame(self._tab)
            frame._input_cnt = 0
            layout2 = QGridLayout(frame)
            layout2.setContentsMargins(20, 20, 20, 20)
            self._tab.add_tab(name, frame)

        self._tab.set_active_index(0)
        self._tab.currentChanged.connect(self.on_tab_changed)

        layout.addWidget(self._tab)
        layout.addWidget(self.process_control)
Beispiel #2
0
class BaseFrame(TraitDisplayMixin):

    ICON = ":cecog_analyzer_icon"
    TABS = None
    CONTROL = CONTROL_1

    toggle_tabs = pyqtSignal(str)
    status_message = pyqtSignal(str)

    def __init__(self, settings, parent, name):
        super(BaseFrame, self).__init__(settings, parent, name)
        self.plugin_mgr = MetaPluginManager()
        self.name = name
        self._is_active = False
        self._intervals = list()

        self._tab_name = None
        self.process_control = ProcessControl(self)
        layout = QVBoxLayout(self)
        layout.setContentsMargins(0, 0, 0, 0)

        self._tab = TabControl(self)

        tabs = [self._tab_name] if self.TABS is None else self.TABS
        for name in tabs:
            frame = QFrame(self._tab)
            frame._input_cnt = 0
            layout2 = QGridLayout(frame)
            layout2.setContentsMargins(20, 20, 20, 20)
            self._tab.add_tab(name, frame)

        self._tab.set_active_index(0)
        self._tab.currentChanged.connect(self.on_tab_changed)

        layout.addWidget(self._tab)
        layout.addWidget(self.process_control)

    @property
    def log_window(self):
        return self.parent().log_window

    @pyqtSlot('int')
    def on_tab_changed(self, index):
        self.tab_changed(index)

    def set_tab_name(self, name):
        self._tab_name = name

    def set_active(self, state=True):
        self._is_active = state

    def _get_frame(self, name=None):
        if name is None:
            name = self._tab_name
        return self._tab.get_frame(name)

    def add_expanding_spacer(self):
        frame = self._get_frame(name=self._tab_name)
        dummy = QWidget(frame)
        dummy.setMinimumSize(0,0)
        dummy.setSizePolicy(QSizePolicy(QSizePolicy.Fixed,
                                        QSizePolicy.Expanding))
        frame.layout().addWidget(dummy, frame._input_cnt, 0)
        frame._input_cnt += 1

    def add_line(self):
        frame = self._get_frame(name=self._tab_name)
        line = QFrame(frame)
        line.setFrameShape(QFrame.HLine)
        frame.layout().addWidget(line, frame._input_cnt, 0, 1, 2)
        frame._input_cnt += 1

    def add_pixmap(self, pixmap, align=Qt.AlignLeft):
        frame = self._get_frame(name=self._tab_name)
        label = QLabel(frame)
        label.setPixmap(pixmap)
        frame.layout().addWidget(label, frame._input_cnt, 0, 1, 2, align)
        frame._input_cnt += 1

    def page_changed(self):
        """Abstract method. Invoked by the AnalyzerMainWindow when this frame
        is activated for display.
        """
        pass

    def settings_loaded(self):
        """change notification called after a settings file is loaded."""
        pass

    def tab_changed(self, index):
        pass

    def add_plugin_bay(self, plugin_manager, settings):
        frame = self._get_frame(self._tab_name)
        frame_layout = frame.layout()
        frame_layout.addWidget(
            PluginBay(self, plugin_manager, settings, self.parent().assistant),
            frame._input_cnt, 0, 1, 2)
        frame._input_cnt += 1