def get_font(conf, section, option=""): """ Construct a QFont from the specified configuration file entry conf: UserConfig instance section [, option]: configuration entry """ if not option: option = "font" if 'font' not in option: option += '/font' font = QFont() if conf.has_option(section, option+'/family/nt'): families = conf.get(section, option+'/family/'+os.name) elif conf.has_option(section, option+'/family'): families = conf.get(section, option+'/family') else: families = None if families is not None: if not isinstance(families, list): families = [ families ] family = None for family in families: if font_is_installed(family): break font.setFamily(family) if conf.has_option(section, option+'/size'): font.setPointSize(conf.get(section, option+'/size')) if conf.get(section, option+'/bold', False): font.setWeight(QFont.Bold) else: font.setWeight(QFont.Normal) return font
def setup(self): font = QFont("Courier new") font.setPointSize(10) self.set_font(font) self.set_codecompletion_auto(True) self.set_calltips(True) self.setup_calltips(size=600, font=font) self.setup_completion(size=(300, 180), font=font)
def get_font_array(sz, chars=DEFAULT_CHARS): from guidata.qt.QtGui import QFont, QPainter, QColor font = QFont() font.setFixedPitch(True) font.setPixelSize(sz) font.setStyleStrategy(QFont.NoAntialias) dummy = QImage(10, 10, QImage.Format_ARGB32) pnt = QPainter(dummy) pnt.setFont(font) metric = pnt.fontMetrics() rct = metric.boundingRect(chars) pnt.end() h = rct.height() w = rct.width() img = QImage(w, h, QImage.Format_ARGB32) paint = QPainter() paint.begin(img) paint.setFont(font) paint.setBrush( QColor(255, 255, 255) ) paint.setPen( QColor(255, 255, 255) ) paint.drawRect(0, 0, w+1, h+1) paint.setPen( QColor(0, 0, 0)) paint.setBrush( QColor(0, 0, 0) ) paint.drawText(0, paint.fontMetrics().ascent(), chars) paint.end() try: data = img.bits().asstring(img.numBytes()) except SystemError: # Python 3 return npy = np.frombuffer(data, np.uint8) npy.shape = img.height(), img.bytesPerLine()/4, 4 return npy[:,:, 0]
def setup(self): font = QFont("Courier new") font.setPointSize(10) self.set_font(font) self.set_codecompletion_auto(True) self.set_calltips(True) try: # Spyder 2 self.setup_completion(size=(300, 180), font=font) except TypeError: pass try: self.traceback_available.connect(self.show_console) except AttributeError: pass
def add_items(self): if os.access(self.FNAME, os.R_OK): print("Restoring items...", end=' ') self.restore_items() print("OK") else: for item in build_items(): self.plot.add_item(item) print("Building items and add them to plotting canvas", end=' ') self.plot.set_axis_font("left", QFont("Courier")) self.dlg.get_itemlist_panel().show() self.plot.set_items_readonly(False)
def plot(*items): win = CurveDialog(edit=False, toolbar=True, wintitle="CurveDialog test", options=dict(title="Title", xlabel="xlabel", ylabel="ylabel")) plot = win.get_plot() for item in items: plot.add_item(item) plot.set_axis_font("left", QFont("Courier")) win.get_itemlist_panel().show() plot.set_items_readonly(False) win.show() win.exec_()
def plot(items1, items2, items3, items4): win = MyPlotDialog(edit=False, toolbar=True, wintitle="CurvePlotDialog test", options=dict(title="Title", xlabel="xlabel", ylabel="ylabel")) items = [items1, items2, items3, items4] for i, plot in enumerate(win.plotwidget.plots): for item in items[i]: plot.add_item(item) plot.set_axis_font("left", QFont("Courier")) plot.set_items_readonly(False) win.get_panel("itemlist").show() win.show() win.exec_()
def _setup_layout(self): # Allow dockable widgets to be side by side self.setDockOptions(QMainWindow.AnimatedDocks | QMainWindow.AllowNestedDocks) self.setGeometry(300,100,1500,900) self.rrplot = RealTimePlot( self, 'RR-Interval', 'ms', QColor( 255, 0, 0 ) ) self.bwplot = RealTimePlot( self, 'Breathing','', QColor( 0, 0, 255 ) ) self.ecgplot = RealTimePlot( self, 'ECG Waveform','', QColor( 0, 0, 255 ) ) self.logarea = myDockableWidget(self, QTextEdit) self.bwpsd = RealTimePSD( self, 'Breathing PSD', inity=25000 ) self.rrpsd = RealTimePSD( self, 'RR-Interval PSD') self.logarea.widget.setReadOnly( True ) self.logarea.widget.setFont( QFont("Courier", 8) ) self.logarea.widget.setMinimumHeight(150) # Add the DockWidget to the main window self.ecgplot_dock = self.add_dockwidget( self.ecgplot.dockwidget, _("ECG Waveform") ) self.rrcurve_dock = self.add_dockwidget( self.rrplot.dockwidget, _("RR-Intervals Plot") ) self.rrpsd_dock = self.add_dockwidget( self.rrpsd.dockwidget, _("RRI PSD")) self.bwcurve_dock = self.add_dockwidget( self.bwplot.dockwidget, _("Breathing Plot") ) self.bwpsd_dock = self.add_dockwidget( self.bwpsd.dockwidget, _("Breathing PSD (not implemented)") ) self.splitDockWidget(self.rrcurve_dock, self.rrpsd_dock, Qt.Horizontal) self.splitDockWidget(self.bwcurve_dock, self.bwpsd_dock, Qt.Horizontal) self.log_dock = self.add_dockwidget( self.logarea, _("Messages"), position=Qt.BottomDockWidgetArea) #self.splitDockWidget(self.rrcurve_dock, self.ecgplot_dock, Qt.Horizontal) # setting the name of the dock widget is required to save correclty # the postion of the widget when the application close self.rrcurve_dock.setObjectName('rrcurve_dock') self.rrpsd_dock.setObjectName('rrpsd_dock') self.bwcurve_dock.setObjectName('bwcurve_dock') self.bwpsd_dock.setObjectName('bwpsd_dock') self.log_dock.setObjectName('log_dock') self.ecgplot_dock.setObjectName('ecgplot_dock') #self.log_dock.setMinimumHeight( 20 ) self.rrcurve_dock.setMinimumSize( 400, 200 ) self.bwcurve_dock.setMinimumSize( 400, 200 ) self.rrpsd_dock.setMinimumSize( 400, 200 ) self.bwpsd_dock.setMinimumSize( 400, 200 ) self.log_dock.setMinimumSize( 400, 100 ) self.log_dock.setMaximumHeight( 250 )
def openCurveDialog(self): self.curvedialog = CurveDialog(edit=False, toolbar=True, wintitle="CurveDialog", options=dict(title="Title", xlabel="xlabel", ylabel="ylabel")) plot = self.curvedialog.get_plot() for array in self.csvmodel.array: item = make.curve(np.array(range(array.data.size)), array.data, color="b") plot.add_item(item) plot.set_axis_font("left", QFont("Courier")) self.curvedialog.get_itemlist_panel().show() plot.set_items_readonly(False) self.curvedialog.show()
def __init__(self, parent): QWidget.__init__(self, parent) font = QFont(get_family(MONOSPACE), 10, QFont.Normal) info_icon = QLabel() icon = get_std_icon('MessageBoxInformation').pixmap(24, 24) info_icon.setPixmap(icon) info_icon.setFixedWidth(32) info_icon.setAlignment(Qt.AlignTop) self.desc_label = QLabel() self.desc_label.setWordWrap(True) self.desc_label.setAlignment(Qt.AlignTop) self.desc_label.setFont(font) group_desc = QGroupBox(_("Description"), self) layout = QHBoxLayout() layout.addWidget(info_icon) layout.addWidget(self.desc_label) group_desc.setLayout(layout) self.editor = CodeEditor(self) self.editor.setup_editor(linenumbers=True, font=font) self.editor.setReadOnly(True) group_code = QGroupBox(_("Source code"), self) layout = QVBoxLayout() layout.addWidget(self.editor) group_code.setLayout(layout) self.run_button = QPushButton(get_icon("apply.png"), _("Run this script"), self) self.quit_button = QPushButton(get_icon("exit.png"), _("Quit"), self) hlayout = QHBoxLayout() hlayout.addWidget(self.run_button) hlayout.addStretch() hlayout.addWidget(self.quit_button) vlayout = QVBoxLayout() vlayout.addWidget(group_desc) vlayout.addWidget(group_code) vlayout.addLayout(hlayout) self.setLayout(vlayout)
def __init__(self, parent): QWidget.__init__(self, parent) font = QFont(get_family(MONOSPACE), 10, QFont.Normal) info_icon = QLabel() icon = get_std_icon('MessageBoxInformation').pixmap(24, 24) info_icon.setPixmap(icon) info_icon.setFixedWidth(32) info_icon.setAlignment(Qt.AlignTop) self.service_status_label = QLabel() self.service_status_label.setWordWrap(True) self.service_status_label.setAlignment(Qt.AlignTop) self.service_status_label.setFont(font) self.desc_label = QLabel() self.desc_label.setWordWrap(True) self.desc_label.setAlignment(Qt.AlignTop) self.desc_label.setFont(font) self.group_desc = QGroupBox("Description", self) layout = QHBoxLayout() layout.addWidget(info_icon) layout.addWidget(self.desc_label) layout.addStretch() layout.addWidget(self.service_status_label) self.group_desc.setLayout(layout) self.editor = CodeEditor(self) self.editor.setup_editor(linenumbers=True, font=font) self.editor.setReadOnly(False) self.group_code = QGroupBox("Source code", self) layout = QVBoxLayout() layout.addWidget(self.editor) self.group_code.setLayout(layout) self.enable_button = QPushButton(get_icon("apply.png"), "Enable", self) self.save_button = QPushButton(get_icon("filesave.png"), "Save", self) self.disable_button = QPushButton(get_icon("delete.png"), "Disable", self) self.refresh_button = QPushButton(get_icon("restart.png"), "Refresh", self) hlayout = QHBoxLayout() hlayout.addWidget(self.save_button) hlayout.addWidget(self.enable_button) hlayout.addWidget(self.disable_button) hlayout.addWidget(self.refresh_button) vlayout = QVBoxLayout() vlayout.addWidget(self.group_desc) vlayout.addWidget(self.group_code) self.html_window = HTMLWindow() vlayout.addWidget(self.html_window) vlayout.addLayout(hlayout) self.setLayout(vlayout) self.current_file = None