def __init__(self, roots, context): super().__init__() self.root_widgets = OrderedDict((label, RootWidget(root, context)) for label, root in roots.items()) self.layout = QtWidgets.QVBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.layout) self.tab_widget = QtWidgets.QTabWidget() for label, widget in self.root_widgets.items(): self.tab_widget.addTab(widget, label) self.layout.addWidget(self.tab_widget)
def __init__(self, root: Root, context: Context): super().__init__() self.root = root self.root.model_changed.connect(self._update_plot) self.context = context self.context.title_changed.connect(self._set_window_title) self.layout = QtWidgets.QVBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.layout) # TODO: Use context info/… to identify plot to user in message. self.message_label = QtWidgets.QLabel("No data.") self.widget_stack = QtWidgets.QStackedWidget() self.widget_stack.addWidget(self.message_label) self.layout.addWidget(self.widget_stack) self.plot_container = None
def __init__(self, model: Model): super().__init__() self._alternate_plots = OrderedDict() self.model = model self.layout = QtWidgets.QVBoxLayout() self.layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.layout) self.widget_stack = QtWidgets.QStackedWidget() self.message_label = QtWidgets.QLabel( "Waiting for channel metadata for scan…") self.widget_stack.addWidget(self.message_label) self.layout.addWidget(self.widget_stack) if isinstance(self.model, SinglePointModel): self.plot = Rolling1DPlotWidget(self.model, self._get_alternate_names) self.model.channel_schemata_changed.connect( self._create_subscan_roots) else: try: self.plot = _make_dimensional_plot(self.model, self._get_alternate_names) except NotImplementedError as err: self._show_error(str(err)) return self.widget_stack.addWidget(self.plot) self._alternate_plots["main plot"] = self.plot self.plot.error.connect(self._show_error) self.plot.ready.connect(lambda: self._show(self.plot)) self.plot.alternate_plot_requested.connect(self._show_alternate_plot) # All subscan roots, to keep the objects alive. self._subscan_roots = None