class ReportsWidget(QWidget): """Reports widget.""" def __init__(self, parent): """Initialiaze ReportsWidget.""" QWidget.__init__(self, parent) self.setWindowTitle("Reports") self.tabs = QTabWidget() self.tabs.setMovable(True) self.tabs.setTabsClosable(True) self.tabs.tabCloseRequested.connect(self.close_tab) self.renderviews = {} layout = QVBoxLayout() layout.addWidget(self.tabs) self.setLayout(layout) self.set_html('', 'Welcome') def set_html(self, html_text, name, base_url=None): """Set html text.""" renderview = self.renderviews.get(name) if 'Welcome' in self.renderviews: # Overwrite the welcome tab renderview =self.renderviews.pop('Welcome') self.renderviews[name] = renderview self.tabs.setTabText(0, name) if renderview is None: # create a new renderview renderview = RenderView(self) self.renderviews[name] = renderview self.tabs.addTab(renderview, name) if base_url is not None: renderview.setHtml(html_text, base_url) else: renderview.setHtml(html_text) self.tabs.setCurrentWidget(renderview) def close_tab(self, index): "Close tab, and remove its widget form renderviews." self.renderviews.pop(self.tabs.tabText(index)) self.tabs.removeTab(index) def clear_all(self): """Clear widget web view content.""" for name in self.renderviews: self.set_html('', name)
class CurveBenchmark1(QMainWindow): TITLE = "Curve benchmark" SIZE = (1000, 500) def __init__(self, max_n=1000000, parent=None, **kwargs): super(CurveBenchmark1, self).__init__(parent=parent) title = self.TITLE if kwargs.get("only_lines", False): title = "%s (%s)" % (title, "only lines") self.setWindowTitle(title) self.tabs = QTabWidget() self.setCentralWidget(self.tabs) self.text = BMText(self) self.tabs.addTab(self.text, "Contents") self.resize(*self.SIZE) # Force window to show up and refresh (for test purpose only) self.show() QApplication.processEvents() t0g = time.time() self.run_benchmark(max_n, **kwargs) dt = time.time() - t0g self.text.append("<br><br><u>Total elapsed time</u>: %d ms" % (dt * 1e3)) if os.environ.get("TEST_UNATTENDED") is None: self.tabs.setCurrentIndex(0) else: self.tabs.setCurrentIndex(1) def process_iteration(self, title, description, widget, t0): self.tabs.addTab(widget, title) self.tabs.setCurrentWidget(widget) # Force widget to refresh (for test purpose only) QApplication.processEvents() time_str = "Elapsed time: %d ms" % ((time.time() - t0) * 1000) widget.text.setText(time_str) self.text.append("<br><i>%s:</i><br>%s" % (description, time_str)) def run_benchmark(self, max_n, **kwargs): for idx in range(4, -1, -1): points = int(max_n / 10**idx) t0 = time.time() widget = BMWidget(points, **kwargs) title = "%d points" % points description = "%d plots with %d curves of %d points" % ( widget.plot_nb, widget.curve_nb, points, ) self.process_iteration(title, description, widget, t0)
class MxMainWidget(MxToolBarMixin, QWidget): def __init__(self, parent, **kwargs): QWidget.__init__(self, parent) self.plugin = parent # Create tool bar if "options_button" in kwargs: self.options_button = kwargs["options_button"] else: self.options_button = None self.plugin_actions = [] MxToolBarMixin.__init__( self, options_button=self.options_button, plugin_actions=self.plugin_actions ) # Create widget and add to dockwindow self.explorer = MxExplorer(self) # Create code list self.codelist = MxCodeListWidget(self) self.propwidget = MxPropertyWidget(self) # Create splitter self.splitter = QSplitter(self) self.splitter.setContentsMargins(0, 0, 0, 0) # self.splitter.addWidget(self.widget) # self.splitter.setStretchFactor(0, 5) # self.splitter.setStretchFactor(1, 1) self.tabwidget = QTabWidget(parent=self) # self.tabwidget.setContentsMargins(0, 0, 0, 0) MxMainWidget.IdxProperties = self.tabwidget.addTab(self.propwidget, "Properties") MxMainWidget.IdxFormulas = self.tabwidget.addTab(self.codelist, "Formulas") # Layout management self.splitter.addWidget(self.explorer) self.splitter.addWidget(self.tabwidget) layout = create_plugin_layout(self.tools_layout, self.splitter) self.setFocusPolicy(Qt.ClickFocus) self.setLayout(layout) def set_shellwidget(self, shellwidget): """Bind shellwidget instance to namespace browser""" self.shellwidget = shellwidget self.shellwidget.set_mxexplorer(self.explorer, self.model_selector) self.shellwidget.set_mxcodelist(self.codelist) self.shellwidget.set_mxproperty(self.propwidget) def raise_tab(self, widget): self.tabwidget.setCurrentWidget(widget) # MxToolBarMixin interface method def setup_toolbar(self): txt = _("Model") if sys.platform == 'darwin': expr_label = QLabel(" " + txt) else: expr_label = QLabel(txt) expr_label.setAlignment(Qt.AlignCenter | Qt.AlignRight) if spyder.version_info < (4,): font = self.plugin.get_plugin_font() else: font = self.plugin.get_font() self.model_selector = MxModelSelector(self) return [expr_label, self.model_selector]
class MxMainWidget(QWidget): def __init__(self, parent, **kwargs): QWidget.__init__(self, parent) self.plugin = parent.get_plugin() self.last_modelpath = None # Create and place Model Selector txt = _("Model") if sys.platform == 'darwin': expr_label = QLabel(" " + txt) else: expr_label = QLabel(txt) # expr_label.setAlignment(Qt.AlignCenter | Qt.AlignRight) self.model_selector = MxModelSelector(self) selector_layout = QHBoxLayout() selector_layout.addWidget(expr_label) selector_layout.addWidget(self.model_selector) selector_layout.insertStretch(-1, 1) selector_layout.setStretch(0, 0) selector_layout.setStretch(1, 1) # Create widget and add to dockwindow self.explorer = MxExplorer(self) # Create code list self.codelist = MxCodeListWidget(self) self.propwidget = MxPropertyWidget(self, orientation=Qt.Vertical) self.datalist = MxDataListWidget(self, orientation=Qt.Vertical) # Create splitter self.splitter = QSplitter(self) self.splitter.setContentsMargins(0, 0, 0, 0) # self.splitter.addWidget(self.widget) # self.splitter.setStretchFactor(0, 5) # self.splitter.setStretchFactor(1, 1) self.tabwidget = QTabWidget(parent=self) # self.tabwidget.setContentsMargins(0, 0, 0, 0) MxMainWidget.IdxProperties = self.tabwidget.addTab(self.propwidget, "Properties") MxMainWidget.IdxFormulas = self.tabwidget.addTab(self.codelist, "Formulas") MxMainWidget.IdxDataList = self.tabwidget.addTab(self.datalist, "Data") # Layout management self.splitter.addWidget(self.explorer) self.splitter.addWidget(self.tabwidget) layout = create_plugin_layout(selector_layout, self.splitter) self.setLayout(layout) self.setFocusPolicy(Qt.ClickFocus) def set_shellwidget(self, shellwidget): """Bind shellwidget instance to namespace browser""" self.shellwidget = shellwidget self.shellwidget.set_mxexplorer(self.explorer, self.model_selector) self.shellwidget.set_mxcodelist(self.codelist) self.shellwidget.set_mxproperty(self.propwidget) self.shellwidget.set_mxdatalist(self.datalist) def raise_tab(self, widget): self.tabwidget.setCurrentWidget(widget)