def __init__(self, wintitle): super(Window, self).__init__() self.default_tool = None self.plots = [] self.itemlist = PlotItemList(None) self.contrast = ContrastAdjustment(None) self.xcsw = XCrossSection(None) self.ycsw = YCrossSection(None) self.manager = PlotManager(self) self.toolbar = QToolBar(_("Tools"), self) self.manager.add_toolbar(self.toolbar, "default") self.toolbar.setMovable(True) self.toolbar.setFloatable(True) self.addToolBar(Qt.TopToolBarArea, self.toolbar) frame = QFrame(self) self.setCentralWidget(frame) self.layout = QGridLayout() layout = QVBoxLayout(frame) frame.setLayout(layout) layout.addLayout(self.layout) self.frame = frame self.setWindowTitle(wintitle) self.setWindowIcon(get_icon('guiqwt.svg'))
def __init__(self, wintitle="guiqwt plot", icon="guiqwt.svg", toolbar=False, options=None, panels=None): PlotManager.__init__(self, main=self) self.plot_layout = QGridLayout() if options is None: options = {} self.plot_widget = None self.create_plot(options) if panels is not None: for panel in panels: self.add_panel(panel) self.toolbar = QToolBar(_("Tools")) if not toolbar: self.toolbar.hide() # Configuring widget layout self.setup_widget_properties(wintitle=wintitle, icon=icon) self.setup_widget_layout() # Configuring plot manager self.add_toolbar(self.toolbar, "default") self.register_tools()
def __init__(self, parent=None): QWidget.__init__(self, parent) self.widget_layout = QVBoxLayout() title_layout = QHBoxLayout() title_layout.addStretch() style = "<span style=\'color: #444444\'><b>%s</b></span>" title = QLabel(style % "Operations") title_layout.addWidget(title) title_layout.addStretch() self.widget_layout.addLayout(title_layout) # Create ListWidget and add 10 items to move around. self.list_widget = QListWidget() # self.list_widget.setDragDropMode(QAbstractItemView.InternalMove) self.list_widget.setSelectionMode(QAbstractItemView.ExtendedSelection) self.list_widget.setSortingEnabled(False) self.list_widget.currentItemChanged.connect(self._populate_settings_update) self.widget_layout.addWidget(self.list_widget) otitle_layout = QHBoxLayout() otitle_layout.addStretch() otitle = QLabel(style % "Operation settings") otitle_layout.addWidget(otitle) otitle_layout.addStretch() self.widget_layout.addLayout(otitle_layout) self.operations_combo = QComboBox() self.operations_combo.currentIndexChanged.connect(self._populate_settings_add) self.widget_layout.addWidget(self.operations_combo) self.operation_settings = GenericOperationWidget() self.widget_layout.addWidget(self.operation_settings) self.toolbar = QToolBar() self.toolbar.addAction(get_icon('apply.png'), "Apply/Replace", self._change_operation) self.toolbar.addAction(get_icon('editors/edit_add.png'), "Add after", self._add_operation) self.toolbar.addAction(get_icon('trash.png'), "Remove", self._remove_operation) self.widget_layout.addWidget(self.toolbar) self.setLayout(self.widget_layout)
def __init__(self, getIcon, measureInitToggle, measureStartStop): QToolBar.__init__(self) self.resizeX = False self.resizeY = False ButtonAxisReset = QToolButton() ButtonAxisReset.setCheckable(False) ButtonAxisReset.setIcon(getIcon("reset")) ButtonAxisReset.setToolTip(u"Reset Integration") ButtonAxisReset.released.connect(self.reset_integration) ButtonAxisX = QToolButton() ButtonAxisX.setCheckable(True) ButtonAxisX.setChecked(True) ButtonAxisX.setIcon(getIcon("resizeX")) ButtonAxisX.setToolTip(u"Resize X axis") ButtonAxisX.released.connect(self.toggleX) ButtonAxisY = QToolButton() ButtonAxisY.setCheckable(True) ButtonAxisY.setChecked(True) ButtonAxisY.setIcon(getIcon("resizeY")) ButtonAxisY.setToolTip(u"Resize Y axis") ButtonAxisY.released.connect(self.toggleY) ButtonPrev = QToolButton() ButtonPrev.setCheckable(True) ButtonPrev.setChecked(False) ButtonPrev.setIcon(getIcon("init2")) ButtonPrev.setToolTip(u"Initialize") ButtonPrev.released.connect(measureInitToggle) ButtonMeas = QToolButton() ButtonMeas.setCheckable(True) ButtonMeas.setChecked(False) ButtonMeas.setIcon(getIcon("play")) ButtonMeas.setToolTip(u"Measure") ButtonMeas.released.connect(measureStartStop) self.addWidget(ButtonMeas) self.addWidget(ButtonPrev) self.addSeparator() self.addWidget(ButtonAxisX) self.addWidget(ButtonAxisY) self.addSeparator() self.addWidget(ButtonAxisReset)
def __init__(self, parent=None): super(CrossSectionWidget, self).__init__(parent) self.export_ac = None self.autoscale_ac = None self.refresh_ac = None self.autorefresh_ac = None self.manager = None # manager for the associated image plot self.local_manager = PlotManager(self) self.cs_plot = self.CrossSectionPlotKlass(parent) self.cs_plot.SIG_CS_CURVE_CHANGED.connect(self.cs_curve_has_changed) self.export_tool = None self.setup_plot() self.toolbar = QToolBar(self) self.toolbar.setOrientation(Qt.Vertical) self.setup_widget()
def __init__(self, parent=None): super(ContrastAdjustment, self).__init__(parent) self.local_manager = None # local manager for the histogram plot self.manager = None # manager for the associated image plot # Storing min/max markers for each active image self.min_markers = {} self.max_markers = {} # Select point tools self.min_select_tool = None self.max_select_tool = None style = "<span style=\'color: #444444\'><b>%s</b></span>" layout, _label = get_image_layout(self.PANEL_ICON, style % self.PANEL_TITLE, alignment=Qt.AlignCenter) layout.setAlignment(Qt.AlignCenter) vlayout = QVBoxLayout() vlayout.addLayout(layout) self.local_manager = PlotManager(self) self.histogram = LevelsHistogram(parent) vlayout.addWidget(self.histogram) self.local_manager.add_plot(self.histogram) hlayout = QHBoxLayout() self.setLayout(hlayout) hlayout.addLayout(vlayout) self.toolbar = toolbar = QToolBar(self) toolbar.setOrientation(Qt.Vertical) # toolbar.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) hlayout.addWidget(toolbar) # Add standard plot-related tools to the local manager lman = self.local_manager lman.add_tool(SelectTool) lman.add_tool(BasePlotMenuTool, "item") lman.add_tool(BasePlotMenuTool, "axes") lman.add_tool(BasePlotMenuTool, "grid") lman.add_tool(AntiAliasingTool) lman.get_default_tool().activate() self.outliers_param = EliminateOutliersParam(self.PANEL_TITLE)
class OperationsWidget(QWidget): operations_changed = QtCore.pyqtSignal() operation_changed = QtCore.pyqtSignal(dict, int) operation_added = QtCore.pyqtSignal(dict, int) def __init__(self, parent=None): QWidget.__init__(self, parent) self.widget_layout = QVBoxLayout() title_layout = QHBoxLayout() title_layout.addStretch() style = "<span style=\'color: #444444\'><b>%s</b></span>" title = QLabel(style % "Operations") title_layout.addWidget(title) title_layout.addStretch() self.widget_layout.addLayout(title_layout) # Create ListWidget and add 10 items to move around. self.list_widget = QListWidget() # self.list_widget.setDragDropMode(QAbstractItemView.InternalMove) self.list_widget.setSelectionMode(QAbstractItemView.ExtendedSelection) self.list_widget.setSortingEnabled(False) self.list_widget.currentItemChanged.connect(self._populate_settings_update) self.widget_layout.addWidget(self.list_widget) otitle_layout = QHBoxLayout() otitle_layout.addStretch() otitle = QLabel(style % "Operation settings") otitle_layout.addWidget(otitle) otitle_layout.addStretch() self.widget_layout.addLayout(otitle_layout) self.operations_combo = QComboBox() self.operations_combo.currentIndexChanged.connect(self._populate_settings_add) self.widget_layout.addWidget(self.operations_combo) self.operation_settings = GenericOperationWidget() self.widget_layout.addWidget(self.operation_settings) self.toolbar = QToolBar() self.toolbar.addAction(get_icon('apply.png'), "Apply/Replace", self._change_operation) self.toolbar.addAction(get_icon('editors/edit_add.png'), "Add after", self._add_operation) self.toolbar.addAction(get_icon('trash.png'), "Remove", self._remove_operation) self.widget_layout.addWidget(self.toolbar) self.setLayout(self.widget_layout) def populate_available_operations(self, dict): """ Populate combobox with available operation names """ self.operations_combo.addItems(dict) def set_operations(self, operations_dict): """ Populate operations list with given dict of operations """ self.list_widget.clear() for op in operations_dict: self.list_widget.addItem(Operation(op)) def get_operations(self): """ Return list of operations. """ operations = [] for i in range(self.list_widget.count()): op = self.list_widget.item(i) operations.append(op._op) return operations def _remove_operation(self): self.list_widget.takeItem(self.list_widget.currentRow()) self.operations_changed.emit() def _add_operation(self): """ Add operation currently in self.operation_settings to the operation list. Signals: ======== Emits self.opeartion_added and self.operations_changed on success """ op = self.operation_settings.get_operation() current_row = self.list_widget.currentRow() self.list_widget.insertItem(current_row + 1, Operation(op)) index = self.list_widget.model().index(current_row + 1, 0) self.list_widget.setCurrentIndex(index) self.operation_added.emit(op, current_row + 1) self.operations_changed.emit() def _change_operation(self): """ Replace currently selected operation with operation in self.operation_settings (apply changed settings or replace operation). Signals: ======== Emits self.operation_changed and self.operations_changed on success """ op = self.operation_settings.get_operation() current_row = self.list_widget.currentRow() self.list_widget.takeItem(self.list_widget.currentRow()) self.list_widget.insertItem(current_row, Operation(op)) index = self.list_widget.model().index(current_row, 0) self.list_widget.setCurrentIndex(index) self.operation_changed.emit(op, current_row) self.operations_changed.emit() def _populate_settings_update(self, item): """ Fill self.operation_settings with details of currently selected operation. """ try: idx = self.operations_combo.findText(item._op["module"]) if idx >= 0: self.operations_combo.setCurrentIndex(idx) self.operation_settings.set_operation(item._op) except AttributeError: pass def _populate_settings_add(self, index): self.operation_settings.set_operation({"module": self.operations_combo.currentText()})
def __init__(self, Icons): QToolBar.__init__(self) ButtonAxis = QToolButton() ButtonAxis.setCheckable(True) ButtonAxis.setChecked(True) ButtonAxis.setIcon(Icons["resize"]) ButtonAxis.setToolTip(u"Resize Y axes") ButtonAxis.released.connect(lambda *args: window.axisToggle()) # ButtonSave=QToolButton() # ButtonSave.setIcon(Icons["save2"]) # ButtonSave.setToolTip(u"Save data to file") # ButtonSave.released.connect(lambda *args:window.saveData()) # # ButtonCool=QToolButton() # ButtonCool.setCheckable(True) # ButtonCool.setChecked(False) # ButtonCool.setIcon(Icons["cool1"]) # ButtonCool.setToolTip(u"Switch on/off cooling") ## ButtonCool.released.connect(TecOnOff) # # ButtonTemp=QToolButton() # ButtonTemp.setIcon(Icons["therm5"]) # ButtonTemp.setToolTip(u"Set cooling temperature") ## ButtonTemp.released.connect(setTemp) # # ButtonDark=QToolButton() # ButtonDark.setIcon(Icons["dark"]) # ButtonDark.setToolTip(u"Set dark spectrum") ## ButtonDark.released.connect(lambda *args:window.SIR2.setDark()) # # ButtonRefs=QToolButton() # ButtonRefs.setIcon(Icons["bright"]) # ButtonRefs.setToolTip(u"Set reference spectrum") ## ButtonRefs.released.connect(lambda *args:window.SIR2.setRef()) ButtonPrev = QToolButton() ButtonPrev.setCheckable(True) ButtonPrev.setChecked(False) ButtonPrev.setIcon(Icons["eye"]) ButtonPrev.setToolTip(u"Initialize") ButtonPrev.released.connect(lambda *args: window.measureInitToggle()) # ButtonSnum=QToolButton() # ButtonSnum.setIcon(Icons["stack1"]) # ButtonSnum.setToolTip(u"Set number of spectra to take") ## ButtonSnum.released.connect(setNspec) # # ButtonTime=QToolButton() # ButtonTime.setIcon(Icons["shutter1"]) # ButtonTime.setToolTip(u"Set exposure time") ## ButtonTime.released.connect(setExpTime) ButtonMeas = QToolButton() ButtonMeas.setCheckable(True) ButtonMeas.setChecked(False) ButtonMeas.setIcon(Icons["camera"]) ButtonMeas.setToolTip(u"Measure") ButtonMeas.released.connect(lambda *args: window.measureStartStop()) self.addWidget(ButtonMeas) # self.addWidget(ButtonSave) # self.addSeparator() self.addWidget(ButtonPrev) self.addWidget(ButtonAxis)
class CrossSectionWidget(PanelWidget): PANEL_ID = None PANEL_TITLE = _("Cross section tool") PANEL_ICON = "csection.png" CrossSectionPlotKlass = None __implements__ = (IPanel,) def __init__(self, parent=None): super(CrossSectionWidget, self).__init__(parent) self.export_ac = None self.autoscale_ac = None self.refresh_ac = None self.autorefresh_ac = None self.manager = None # manager for the associated image plot self.local_manager = PlotManager(self) self.cs_plot = self.CrossSectionPlotKlass(parent) self.cs_plot.SIG_CS_CURVE_CHANGED.connect(self.cs_curve_has_changed) self.export_tool = None self.setup_plot() self.toolbar = QToolBar(self) self.toolbar.setOrientation(Qt.Vertical) self.setup_widget() def set_options(self, autoscale=None, autorefresh=None): assert self.manager is not None, "Panel '%s' must be registered to plot manager before changing options" % self.PANEL_ID if autoscale is not None: self.autoscale_ac.setChecked(autoscale) if autorefresh is not None: self.autorefresh_ac.setChecked(autorefresh) def setup_plot(self): # Configure the local manager lman = self.local_manager lman.add_plot(self.cs_plot) lman.register_all_curve_tools() self.export_tool = lman.get_tool(ExportItemDataTool) def setup_widget(self): layout = QHBoxLayout() layout.addWidget(self.cs_plot) layout.addWidget(self.toolbar) layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout) def cs_curve_has_changed(self, curve): """Cross section curve has just changed""" # Do something with curve's data for example pass def register_panel(self, manager): """Register panel to plot manager""" self.manager = manager for plot in manager.get_plots(): self.cs_plot.connect_plot(plot) self.setup_actions() self.add_actions_to_toolbar() def configure_panel(self): """Configure panel""" pass def get_plot(self): return self.manager.get_active_plot() def setup_actions(self): self.export_ac = self.export_tool.action self.autoscale_ac = create_action(self, _("Auto-scale"), icon=get_icon('csautoscale.png'), toggled=self.cs_plot.toggle_autoscale) self.autoscale_ac.setChecked(self.cs_plot.autoscale_mode) self.refresh_ac = create_action(self, _("Refresh"), icon=get_icon('refresh.png'), triggered=lambda: self.cs_plot.update_plot()) self.autorefresh_ac = create_action(self, _("Auto-refresh"), icon=get_icon('autorefresh.png'), toggled=self.cs_plot.toggle_autorefresh) self.autorefresh_ac.setChecked(self.cs_plot.autorefresh_mode) def add_actions_to_toolbar(self): add_actions(self.toolbar, (self.export_ac, self.autoscale_ac, None, self.refresh_ac, self.autorefresh_ac)) def register_shape(self, shape, final, refresh=True): plot = self.get_plot() self.cs_plot.register_shape(plot, shape, final, refresh) def unregister_shape(self, shape): self.cs_plot.unregister_shape(shape) def update_plot(self, obj=None): """ Update cross section curve(s) associated to object *obj* *obj* may be a marker or a rectangular shape (see :py:class:`guiqwt.tools.CrossSectionTool` and :py:class:`guiqwt.tools.AverageCrossSectionTool`) If obj is None, update the cross sections of the last active object """ self.cs_plot.update_plot(obj)
class CrossSectionWidget(PanelWidget): PANEL_ID = None PANEL_TITLE = _("Cross section tool") PANEL_ICON = "csection.png" CrossSectionPlotKlass = None __implements__ = (IPanel, ) def __init__(self, parent=None): super(CrossSectionWidget, self).__init__(parent) self.export_ac = None self.autoscale_ac = None self.refresh_ac = None self.autorefresh_ac = None self.manager = None # manager for the associated image plot self.local_manager = PlotManager(self) self.cs_plot = self.CrossSectionPlotKlass(parent) self.cs_plot.SIG_CS_CURVE_CHANGED.connect(self.cs_curve_has_changed) self.export_tool = None self.setup_plot() self.toolbar = QToolBar(self) self.toolbar.setOrientation(Qt.Vertical) self.setup_widget() def set_options(self, autoscale=None, autorefresh=None): assert self.manager is not None, "Panel '%s' must be registered to plot manager before changing options" % self.PANEL_ID if autoscale is not None: self.autoscale_ac.setChecked(autoscale) if autorefresh is not None: self.autorefresh_ac.setChecked(autorefresh) def setup_plot(self): # Configure the local manager lman = self.local_manager lman.add_plot(self.cs_plot) lman.register_all_curve_tools() self.export_tool = lman.get_tool(ExportItemDataTool) def setup_widget(self): layout = QHBoxLayout() layout.addWidget(self.cs_plot) layout.addWidget(self.toolbar) layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout) def cs_curve_has_changed(self, curve): """Cross section curve has just changed""" # Do something with curve's data for example pass def register_panel(self, manager): """Register panel to plot manager""" self.manager = manager for plot in manager.get_plots(): self.cs_plot.connect_plot(plot) self.setup_actions() self.add_actions_to_toolbar() def configure_panel(self): """Configure panel""" pass def get_plot(self): return self.manager.get_active_plot() def setup_actions(self): self.export_ac = self.export_tool.action self.autoscale_ac = create_action( self, _("Auto-scale"), icon=get_icon('csautoscale.png'), toggled=self.cs_plot.toggle_autoscale) self.autoscale_ac.setChecked(self.cs_plot.autoscale_mode) self.refresh_ac = create_action( self, _("Refresh"), icon=get_icon('refresh.png'), triggered=lambda: self.cs_plot.update_plot()) self.autorefresh_ac = create_action( self, _("Auto-refresh"), icon=get_icon('autorefresh.png'), toggled=self.cs_plot.toggle_autorefresh) self.autorefresh_ac.setChecked(self.cs_plot.autorefresh_mode) def add_actions_to_toolbar(self): add_actions(self.toolbar, (self.export_ac, self.autoscale_ac, None, self.refresh_ac, self.autorefresh_ac)) def register_shape(self, shape, final, refresh=True): plot = self.get_plot() self.cs_plot.register_shape(plot, shape, final, refresh) def unregister_shape(self, shape): self.cs_plot.unregister_shape(shape) def update_plot(self, obj=None): """ Update cross section curve(s) associated to object *obj* *obj* may be a marker or a rectangular shape (see :py:class:`guiqwt.tools.CrossSectionTool` and :py:class:`guiqwt.tools.AverageCrossSectionTool`) If obj is None, update the cross sections of the last active object """ self.cs_plot.update_plot(obj)
class Window(QMainWindow): def __init__(self, wintitle): super(Window, self).__init__() self.default_tool = None self.plots = [] self.itemlist = PlotItemList(None) self.contrast = ContrastAdjustment(None) self.xcsw = XCrossSection(None) self.ycsw = YCrossSection(None) self.manager = PlotManager(self) self.toolbar = QToolBar(_("Tools"), self) self.manager.add_toolbar(self.toolbar, "default") self.toolbar.setMovable(True) self.toolbar.setFloatable(True) self.addToolBar(Qt.TopToolBarArea, self.toolbar) frame = QFrame(self) self.setCentralWidget(frame) self.layout = QGridLayout() layout = QVBoxLayout(frame) frame.setLayout(layout) layout.addLayout(self.layout) self.frame = frame self.setWindowTitle(wintitle) self.setWindowIcon(get_icon('guiqwt.svg')) def closeEvent(self, event): global _figures, _current_fig, _current_axes figure_title = to_text_string(self.windowTitle()) if _figures.pop(figure_title) == _current_fig: _current_fig = None _current_axes = None self.itemlist.close() self.contrast.close() self.xcsw.close() self.ycsw.close() event.accept() def add_plot(self, i, j, plot): self.layout.addWidget(plot, i, j) self.manager.add_plot(plot) self.plots.append(plot) def replot(self): for plot in self.plots: plot.replot() item = plot.get_default_item() if item is not None: plot.set_active_item(item) item.unselect() def add_panels(self, images=False): self.manager.add_panel(self.itemlist) if images: for panel in (self.ycsw, self.xcsw, self.contrast): panel.hide() self.manager.add_panel(panel) def register_tools(self, images=False): if images: self.manager.register_all_image_tools() else: self.manager.register_all_curve_tools() def display(self): self.show() self.replot() self.manager.get_default_tool().activate() self.manager.update_tools_status()
class CurveWidgetMixin(PlotManager): def __init__(self, wintitle="guiqwt plot", icon="guiqwt.svg", toolbar=False, options=None, panels=None): PlotManager.__init__(self, main=self) self.plot_layout = QGridLayout() if options is None: options = {} self.plot_widget = None self.create_plot(options) if panels is not None: for panel in panels: self.add_panel(panel) self.toolbar = QToolBar(_("Tools")) if not toolbar: self.toolbar.hide() # Configuring widget layout self.setup_widget_properties(wintitle=wintitle, icon=icon) self.setup_widget_layout() # Configuring plot manager self.add_toolbar(self.toolbar, "default") self.register_tools() def setup_widget_layout(self): raise NotImplementedError def setup_widget_properties(self, wintitle, icon): self.setWindowTitle(wintitle) if is_text_string(icon): icon = get_icon(icon) if icon is not None: self.setWindowIcon(icon) self.setMinimumSize(320, 240) self.resize(640, 480) def register_tools(self): """ Register the plotting dialog box tools: the base implementation provides standard, curve-related and other tools - i.e. calling this method is exactly the same as calling :py:meth:`guiqwt.plot.CurveDialog.register_all_curve_tools` This method may be overriden to provide a fully customized set of tools """ self.register_all_curve_tools() def create_plot(self, options, row=0, column=0, rowspan=1, columnspan=1): """ Create the plotting widget (which is an instance of class :py:class:`guiqwt.plot.BaseCurveWidget`), add it to the dialog box main layout (:py:attr:`guiqwt.plot.CurveDialog.plot_layout`) and then add the `item list` panel May be overriden to customize the plot layout (:py:attr:`guiqwt.plot.CurveDialog.plot_layout`) """ self.plot_widget = BaseCurveWidget(self, **options) self.plot_layout.addWidget(self.plot_widget, row, column, rowspan, columnspan) # Configuring plot manager self.add_plot(self.plot_widget.plot) self.add_panel(self.plot_widget.itemlist)
class CurveWidgetMixin(PlotManager): def __init__(self, wintitle="guiqwt plot", icon="guiqwt.svg", toolbar=False, options=None, panels=None): PlotManager.__init__(self, main=self) self.plot_layout = QGridLayout() if options is None: options = {} self.plot_widget = None self.create_plot(options) if panels is not None: for panel in panels: self.add_panel(panel) self.toolbar = QToolBar(_("Tools")) if not toolbar: self.toolbar.hide() # Configuring widget layout self.setup_widget_properties(wintitle=wintitle, icon=icon) self.setup_widget_layout() # Configuring plot manager self.add_toolbar(self.toolbar, "default") self.register_tools() def setup_widget_layout(self): raise NotImplementedError def setup_widget_properties(self, wintitle, icon): self.setWindowTitle(wintitle) if is_text_string(icon): icon = get_icon(icon) if icon is not None: self.setWindowIcon(icon) self.setMinimumSize(320, 240) self.resize(640, 480) def register_tools(self): """ Register the plotting dialog box tools: the base implementation provides standard, curve-related and other tools - i.e. calling this method is exactly the same as calling :py:meth:`guiqwt.plot.CurveDialog.register_all_curve_tools` This method may be overriden to provide a fully customized set of tools """ self.register_all_curve_tools() def create_plot(self, options): """ Create the plotting widget (which is an instance of class :py:class:`guiqwt.plot.BaseCurveWidget`), add it to the dialog box main layout (:py:attr:`guiqwt.plot.CurveDialog.plot_layout`) and then add the `item list` panel May be overriden to customize the plot layout (:py:attr:`guiqwt.plot.CurveDialog.plot_layout`) """ self.plot_widget = BaseCurveWidget(self, **options) self.plot_layout.addWidget(self.plot_widget, 0, 0) # Configuring plot manager self.add_plot(self.plot_widget.plot) self.add_panel(self.plot_widget.itemlist)