def showMessage(self, message, alignment=Qt.AlignLeft, color=Qt.black): """ Show the `message` with `color` and `alignment`. """ # Need to store all this arguments for drawContents (no access # methods) self.__alignment = alignment self.__color = color self.__message = message QSplashScreen.showMessage(self, message, alignment, color) QApplication.instance().processEvents()
def __init__(self, parent=None, icon=QIcon(), iconSize=QSize(), **kwargs): # type: (Optional[QGraphicsItem], QIcon, QSize, Any) -> None super().__init__(parent, **kwargs) self.setFlag(QGraphicsItem.ItemUsesExtendedStyleOption, True) if icon is None: icon = QIcon() if iconSize is None or iconSize.isNull(): style = QApplication.instance().style() size = style.pixelMetric(style.PM_LargeIconSize) iconSize = QSize(size, size) self.__transformationMode = Qt.SmoothTransformation self.__iconSize = QSize(iconSize) self.__icon = QIcon(icon) self.anim = QPropertyAnimation(self, b"opacity") self.anim.setDuration(350) self.anim.setStartValue(1) self.anim.setKeyValueAt(0.5, 0) self.anim.setEndValue(1) self.anim.setEasingCurve(QEasingCurve.OutQuad) self.anim.setLoopCount(5)
def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: downPos = event.buttonDownPos(Qt.LeftButton) if not self.__tmpLine and self.__dragStartItem and \ (downPos - event.pos()).manhattanLength() > \ QApplication.instance().startDragDistance(): # Start a line drag line = QGraphicsLineItem(self) start = self.__dragStartItem.boundingRect().center() start = self.mapFromItem(self.__dragStartItem, start) line.setLine(start.x(), start.y(), event.pos().x(), event.pos().y()) pen = QPen(self.palette().color(QPalette.Foreground), 4) pen.setCapStyle(Qt.RoundCap) line.setPen(pen) line.show() self.__tmpLine = line if self.__tmpLine: # Update the temp line line = self.__tmpLine.line() line.setP2(event.pos()) self.__tmpLine.setLine(line) QGraphicsWidget.mouseMoveEvent(self, event)
def add_task_to_dispose_queue(task: TaskState): # transfer ownership of task to Qt, and delete it after completion # all other signals from task should be disconnected. assert task.parent() is None app = QApplication.instance() task.setParent(app) task.watcher.finished.connect(task.deleteLater)
def __init__(self, parent=None, icon=None, iconSize=None, **kwargs): QGraphicsItem.__init__(self, parent, **kwargs) self.setFlag(QGraphicsItem.ItemUsesExtendedStyleOption, True) if icon is None: icon = QIcon() if iconSize is None: style = QApplication.instance().style() size = style.pixelMetric(style.PM_LargeIconSize) iconSize = QSize(size, size) self.__transformationMode = Qt.SmoothTransformation self.__iconSize = QSize(iconSize) self.__icon = QIcon(icon) self._opacity = 1 self.anim = QPropertyAnimation(self, b"opacity") self.anim.setDuration(350) self.anim.setStartValue(1) self.anim.setKeyValueAt(0.5, 0) self.anim.setEndValue(1) self.anim.setEasingCurve(QEasingCurve.OutQuad) self.anim.setLoopCount(5)
def paint(self, painter, option, index): if option.widget is not None: style = option.widget.style() else: style = QApplication.instance().style() style.drawPrimitive(QStyle.PE_PanelItemViewRow, option, painter, option.widget) style.drawPrimitive(QStyle.PE_PanelItemViewItem, option, painter, option.widget) rect = option.rect val = index.data(Qt.DisplayRole) if isinstance(val, float): if np.isfinite(val): minv, maxv = self.scale val = (val - minv) / (maxv - minv) rect = rect.adjusted(1, 1, -int(rect.width() * (1.0 - val)) - 2, -2) else: rect = QRect() painter.save() if option.state & QStyle.State_Selected: painter.setOpacity(0.75) painter.setBrush(self.brush) painter.drawRect(rect) painter.restore()
def available_font_families() -> List: """ Function returns list of available font families. Can be used to instantiate font combo boxes. Returns ------- fonts: list List of available font families. """ if not QApplication.instance(): _ = QApplication(sys.argv) fonts = QFontDatabase().families() default = fonts.pop(fonts.index(default_font_family())) defaults = [default] guessed_name = default.split()[0] i = 0 while i < len(fonts): if fonts[i].startswith(guessed_name): defaults.append(fonts.pop(i)) else: i += 1 return FontList(defaults + [""] + sorted(fonts, key=lambda s: s.replace(".", "")))
def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: downPos = event.buttonDownPos(Qt.LeftButton) if not self.__tmpLine and self.__dragStartItem and \ (downPos - event.pos()).manhattanLength() > \ QApplication.instance().startDragDistance(): # Start a line drag line = QGraphicsLineItem(self) start = self.__dragStartItem.boundingRect().center() start = self.mapFromItem(self.__dragStartItem, start) line.setLine(start.x(), start.y(), event.pos().x(), event.pos().y()) pen = QPen(Qt.black, 4) pen.setCapStyle(Qt.RoundCap) line.setPen(pen) line.show() self.__tmpLine = line if self.__tmpLine: # Update the temp line line = self.__tmpLine.line() line.setP2(event.pos()) self.__tmpLine.setLine(line) QGraphicsWidget.mouseMoveEvent(self, event)
def set_instance(report): warnings.warn( "OWReport.set_instance is deprecated", DeprecationWarning, stacklevel=2 ) app_inst = QApplication.instance() app_inst._report_window = report
def paint(self, painter, option, index): if option.widget is not None: style = option.widget.style() else: style = QApplication.instance().style() style.drawPrimitive( QStyle.PE_PanelItemViewRow, option, painter, option.widget) style.drawPrimitive( QStyle.PE_PanelItemViewItem, option, painter, option.widget) rect = option.rect val = index.data(Qt.DisplayRole) if isinstance(val, float): if np.isfinite(val): minv, maxv = self.scale val = (val - minv) / (maxv - minv) rect = rect.adjusted( 1, 1, - int(rect.width() * (1.0 - val)) - 2, -2) else: rect = QRect() painter.save() if option.state & QStyle.State_Selected: painter.setOpacity(0.75) painter.setBrush(self.brush) painter.drawRect(rect) painter.restore()
def standard_icon(standard_pixmap): """ Return return the application style's standard icon for a `QStyle.StandardPixmap`. """ style = QApplication.instance().style() return style.standardIcon(standard_pixmap)
def get_instance(): app_inst = QApplication.instance() if not hasattr(app_inst, "_report_window"): report = OWReport() app_inst._report_window = report app_inst.sendPostedEvents(report, 0) app_inst.aboutToQuit.connect(report.deleteLater) return app_inst._report_window
def get_instance(): warnings.warn("OWReport.get_instance is deprecated", DeprecationWarning, stacklevel=2) app_inst = QApplication.instance() if not hasattr(app_inst, "_report_window"): report = OWReport() app_inst._report_window = report return app_inst._report_window
def get_instance(): warnings.warn( "OWReport.get_instance is deprecated", DeprecationWarning, stacklevel=2 ) app_inst = QApplication.instance() if not hasattr(app_inst, "_report_window"): report = OWReport() app_inst._report_window = report return app_inst._report_window
def default_font_size() -> int: """ Function returns default font size in points used in Qt application. Can be used to instantiate initial dialog state. Returns ------- size: int Default font size in points. """ if not QApplication.instance(): _ = QApplication(sys.argv) return QFont().pointSize()
def default_font_family() -> str: """ Function returns default font family used in Qt application. Can be used to instantiate initial dialog state. Returns ------- font: str Default font family. """ if not QApplication.instance(): _ = QApplication(sys.argv) return QFont().family()
def available_font_families() -> List: """ Function returns list of available font families. Can be used to instantiate font combo boxes. Returns ------- fonts: list List of available font families. """ if not QApplication.instance(): _ = QApplication(sys.argv) return QFontDatabase().families()
def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: if self.annotation_item is None and \ (self.down_pos - event.scenePos()).manhattanLength() > \ QApplication.instance().startDragDistance(): rect = QRectF(self.down_pos, event.scenePos()).normalized() self.createNewAnnotation(rect) if self.annotation_item is not None: rect = QRectF(self.down_pos, event.scenePos()).normalized() self.control.setRect(rect) return True
def __init__(self, parent=None): QObject.__init__(self, parent) assert QThread.currentThread() is QApplication.instance().thread() netmanager = self._NETMANAGER_REF and self._NETMANAGER_REF() if netmanager is None: netmanager = QNetworkAccessManager() cache = QNetworkDiskCache() cache.setCacheDirectory( os.path.join(data_dir(), "geo", __name__ + ".GeoMap.Cache")) netmanager.setCache(cache) ImageLoader._NETMANAGER_REF = weakref.ref(netmanager) self._netmanager = netmanager
def test_show_tip(self): w = QWidget() show_tip(w, QPoint(100, 100), "Ha Ha") app = QApplication.instance() windows = app.topLevelWidgets() label = [tl for tl in windows if tl.parent() is w and tl.objectName() == "tip-label"][0] self.assertTrue(label.isVisible()) self.assertTrue(label.text() == "Ha Ha") show_tip(w, QPoint(100, 100), "Ha") self.assertTrue(label.text() == "Ha") show_tip(w, QPoint(100, 100), "") self.assertFalse(label.isVisible())
def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: downPos = event.buttonDownPos(Qt.LeftButton) if not self.__tmpLine and self.__dragStartItem and \ (downPos - event.pos()).manhattanLength() > \ QApplication.instance().startDragDistance(): # Start a line drag line = LinkLineItem(self) start = self.__dragStartItem.boundingRect().center() start = self.mapFromItem(self.__dragStartItem, start) eventPos = event.pos() line.setLine(start.x(), start.y(), eventPos.x(), eventPos.y()) pen = QPen(self.palette().color(QPalette.Foreground), 4) pen.setCapStyle(Qt.RoundCap) line.setPen(pen) line.show() self.__tmpLine = line if self.__dragStartItem in self.sourceNodeWidget.channelAnchors: for anchor in self.sinkNodeWidget.channelAnchors: self.__updateAnchorState(anchor, [self.__dragStartItem]) else: for anchor in self.sourceNodeWidget.channelAnchors: self.__updateAnchorState(anchor, [self.__dragStartItem]) if self.__tmpLine: # Update the temp line line = self.__tmpLine.line() maybe_anchor = find_item_at(self.scene(), event.scenePos(), type=ChannelAnchor) # If hovering over anchor if maybe_anchor is not None and maybe_anchor.isEnabled(): target_pos = maybe_anchor.boundingRect().center() target_pos = self.mapFromItem(maybe_anchor, target_pos) line.setP2(target_pos) else: target_pos = event.pos() line.setP2(target_pos) self.__tmpLine.setLine(line) super().mouseMoveEvent(event)
def __init__(self, parent=None): QObject.__init__(self, parent) assert QThread.currentThread() is QApplication.instance().thread() netmanager = self._NETMANAGER_REF and self._NETMANAGER_REF() if netmanager is None: netmanager = QNetworkAccessManager() cache = QNetworkDiskCache() cache.setCacheDirectory( os.path.join(settings.widget_settings_dir(), __name__ + ".ImageLoader.Cache") ) netmanager.setCache(cache) ImageLoader._NETMANAGER_REF = weakref.ref(netmanager) self._netmanager = netmanager
def __init__(self, parent=None, icon=None, iconSize=None, **kwargs): QGraphicsItem.__init__(self, parent, **kwargs) self.setFlag(QGraphicsItem.ItemUsesExtendedStyleOption, True) if icon is None: icon = QIcon() if iconSize is None: style = QApplication.instance().style() size = style.pixelMetric(style.PM_LargeIconSize) iconSize = QSize(size, size) self.__transformationMode = Qt.SmoothTransformation self.__iconSize = QSize(iconSize) self.__icon = QIcon(icon)
def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: downPos = event.buttonDownPos(Qt.LeftButton) if not self.__tmpLine and self.__dragStartItem and \ (downPos - event.pos()).manhattanLength() > \ QApplication.instance().startDragDistance(): # Start a line drag line = LinkLineItem(self) start = self.__dragStartItem.boundingRect().center() start = self.mapFromItem(self.__dragStartItem, start) eventPos = event.pos() line.setLine(start.x(), start.y(), eventPos.x(), eventPos.y()) pen = QPen(self.palette().color(QPalette.Foreground), 4) pen.setCapStyle(Qt.RoundCap) line.setPen(pen) line.show() self.__tmpLine = line if self.__dragStartItem in self.sourceNodeWidget.channelAnchors: for anchor in self.sinkNodeWidget.channelAnchors: self.__updateAnchorState(anchor, [self.__dragStartItem]) else: for anchor in self.sourceNodeWidget.channelAnchors: self.__updateAnchorState(anchor, [self.__dragStartItem]) if self.__tmpLine: # Update the temp line line = self.__tmpLine.line() maybe_anchor = find_item_at(self.scene(), event.scenePos(), type=ChannelAnchor) # If hovering over anchor if maybe_anchor is not None and maybe_anchor.isEnabled(): target_pos = maybe_anchor.boundingRect().center() target_pos = self.mapFromItem(maybe_anchor, target_pos) line.setP2(target_pos) else: target_pos = event.pos() line.setP2(target_pos) self.__tmpLine.setLine(line) QGraphicsWidget.mouseMoveEvent(self, event)
def _set_message_bar(self, group, text=None, tooltip=None): self._check_has_message_bar() current_height = self.height() style = QApplication.instance().style() self.message_icon.setPixmap( style.standardIcon(group.bar_icon).pixmap(14, 14)) self.message_bar.setStyleSheet( "QWidget {{ background-color: {}; color: black;" "padding: 3px; padding-left: 6px; vertical-align: center }}\n" "QToolTip {{ background-color: white; }}". format(group.bar_background)) self.message_label.setText(text) self.message_bar.setToolTip(tooltip) if self.message_bar.isHidden(): self.message_bar.setVisible(True) new_height = current_height + self.message_bar.height() self.resize(self.width(), new_height)
def _makeMatchSelection(self, block, columnIndex, matched): """Make matched or unmatched QTextEdit.ExtraSelection """ selection = QTextEdit.ExtraSelection() darkMode = QApplication.instance().property('darkMode') if matched: fgColor = self.MATCHED_COLOR else: fgColor = self.UNMATCHED_COLOR selection.format.setForeground(fgColor) # repaint hack selection.format.setBackground( Qt.white if not darkMode else QColor('#111111')) selection.cursor = QTextCursor(block) selection.cursor.setPosition(block.position() + columnIndex) selection.cursor.movePosition(QTextCursor.Right, QTextCursor.KeepAnchor) return selection
def _updateFontSize(self): crect = self.contentsRect() if self.orientation() == Qt.Vertical: h = crect.height() else: h = crect.width() n = self.count() if n == 0: return if self.scene() is not None: maxfontsize = self.scene().font().pointSize() else: maxfontsize = QApplication.instance().font().pointSize() lineheight = max(1., h / n) fontsize = min(self._point_size(lineheight), maxfontsize) font_ = QFont() font_.setPointSize(fontsize) self.setFont(font_)
def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: if self.arrow_item is None and \ (self.down_pos - event.scenePos()).manhattanLength() > \ QApplication.instance().startDragDistance(): annot = scheme.SchemeArrowAnnotation( point_to_tuple(self.down_pos), point_to_tuple(event.scenePos())) annot.set_color(self.color) item = self.scene.add_annotation(annot) self.arrow_item = item self.annotation = annot if self.arrow_item is not None: p1, p2 = map(self.arrow_item.mapFromScene, (self.down_pos, event.scenePos())) self.arrow_item.setLine(QLineF(p1, p2)) event.accept() return True
def setUpClass(cls): """Prepare for test execution. Ensure that a (single copy of) QApplication has been created """ global app if app is None: app = QApplication.instance() if app is None: app = QApplication(["-", "-widgetcount"]) # Disable App Nap on macOS (see # https://codereview.qt-project.org/c/qt/qtbase/+/202515 for more) if sys.platform == "darwin": try: import appnope except ImportError: pass else: appnope.nope() cls.tear_down_stack = ExitStack() super().setUpClass()
def configureStyle(): from orangecanvas import styles args = CanvasApplication.__args settings = QSettings() settings.beginGroup("application-style") name = settings.value("style-name", "", type=str) if args is not None and args.style: # command line params take precedence name = args.style if name != "": inst = QApplication.instance() if inst is not None: if inst.style().objectName().lower() != name.lower(): QApplication.setStyle(name) theme = settings.value("palette", "", type=str) if args is not None and args.colortheme: theme = args.colortheme if theme and theme in styles.colorthemes: palette = styles.colorthemes[theme]() QApplication.setPalette(palette)
def mouseMoveEvent(self, event): if event.buttons() & Qt.LeftButton: if self.arrow_item is None and \ (self.down_pos - event.scenePos()).manhattanLength() > \ QApplication.instance().startDragDistance(): annot = scheme.SchemeArrowAnnotation( point_to_tuple(self.down_pos), point_to_tuple(event.scenePos()) ) annot.set_color(self.color) item = self.scene.add_annotation(annot) self.arrow_item = item self.annotation = annot if self.arrow_item is not None: p1, p2 = map(self.arrow_item.mapFromScene, (self.down_pos, event.scenePos())) self.arrow_item.setLine(QLineF(p1, p2)) event.accept() return True
def _updateFontSize(self): crect = self.contentsRect() if self.orientation == Qt.Vertical: h = crect.height() else: h = crect.width() n = len(getattr(self, "label_items", [])) if n == 0: return if self.scene() is not None: maxfontsize = self.scene().font().pointSize() else: maxfontsize = QApplication.instance().font().pointSize() lineheight = max(1, h / n) fontsize = min(self._point_size(lineheight), maxfontsize) font = self.font() font.setPointSize(fontsize) self.setFont(font) self.layout().invalidate() self.layout().activate()
def message_icon(message, style=None): # type: (Message, Optional[QStyle]) -> QIcon """ Return the resolved icon for the message. If `message.icon` is a valid icon then it is used. Otherwise the appropriate style icon is used based on the `message.severity` Parameters ---------- message : Message style : Optional[QStyle] Returns ------- icon : QIcon """ if style is None and QApplication.instance() is not None: style = QApplication.style() if message.icon.isNull(): icon = style.standardIcon(standard_pixmap(message.severity)) else: icon = message.icon return icon
def __init__(self, widget=None): self.widget = widget if widget is None: self.style = QApplication.instance().style() else: self.style = widget.style()
def setUp(self): from AnyQt.QtWidgets import QApplication app = QApplication.instance() if app is None: app = QApplication([]) self.app = app
def setUpClass(cls): app = QApplication.instance() if app is None: app = QApplication([]) cls.app = app
def get_instance(): app_inst = QApplication.instance() if not hasattr(app_inst, "_report_window"): report = OWReport() app_inst._report_window = report return app_inst._report_window
def set_instance(report): app_inst = QApplication.instance() app_inst._report_window = report
def setUpClass(cls): super().setUpClass() app = QApplication.instance() if app is None: app = QApplication([]) cls.app = app