1# -*- coding: utf-8 -*- 2# 3# Copyright © 2014-2015 Colin Duquesnoy 4# Copyright © 2009- The Spyder Development Team 5# 6# Licensed under the terms of the MIT License 7# (see LICENSE.txt for details) 8 9""" 10Provides QtGui classes and functions. 11.. warning:: Only PyQt4/PySide QtGui classes compatible with PyQt5.QtGui are 12 exposed here. Therefore, you need to treat/use this package as if it were 13 the ``PyQt5.QtGui`` module. 14""" 15import warnings 16 17from . import PYQT5, PYQT4, PYSIDE, PYSIDE2, PythonQtError 18 19 20if PYQT5: 21 from PyQt5.QtGui import * 22elif PYSIDE2: 23 from PySide2.QtGui import * 24elif PYQT4: 25 try: 26 # Older versions of PyQt4 do not provide these 27 from PyQt4.QtGui import (QGlyphRun, QMatrix2x2, QMatrix2x3, 28 QMatrix2x4, QMatrix3x2, QMatrix3x3, 29 QMatrix3x4, QMatrix4x2, QMatrix4x3, 30 QMatrix4x4, QTouchEvent, QQuaternion, 31 QRadialGradient, QRawFont, QStaticText, 32 QVector2D, QVector3D, QVector4D, 33 qFuzzyCompare) 34 except ImportError: 35 pass 36 from PyQt4.Qt import QKeySequence, QTextCursor 37 from PyQt4.QtGui import (QAbstractTextDocumentLayout, QActionEvent, QBitmap, 38 QBrush, QClipboard, QCloseEvent, QColor, 39 QConicalGradient, QContextMenuEvent, QCursor, 40 QDoubleValidator, QDrag, 41 QDragEnterEvent, QDragLeaveEvent, QDragMoveEvent, 42 QDropEvent, QFileOpenEvent, QFocusEvent, QFont, 43 QFontDatabase, QFontInfo, QFontMetrics, 44 QFontMetricsF, QGradient, QHelpEvent, 45 QHideEvent, QHoverEvent, QIcon, QIconDragEvent, 46 QIconEngine, QImage, QImageIOHandler, QImageReader, 47 QImageWriter, QInputEvent, QInputMethodEvent, 48 QKeyEvent, QLinearGradient, 49 QMouseEvent, QMoveEvent, QMovie, 50 QPaintDevice, QPaintEngine, QPaintEngineState, 51 QPaintEvent, QPainter, QPainterPath, 52 QPainterPathStroker, QPalette, QPen, QPicture, 53 QPictureIO, QPixmap, QPixmapCache, QPolygon, 54 QPolygonF, QRegExpValidator, QRegion, QResizeEvent, 55 QSessionManager, QShortcutEvent, QShowEvent, 56 QStandardItem, QStandardItemModel, 57 QStatusTipEvent, QSyntaxHighlighter, QTabletEvent, 58 QTextBlock, QTextBlockFormat, QTextBlockGroup, 59 QTextBlockUserData, QTextCharFormat, 60 QTextDocument, QTextDocumentFragment, 61 QTextDocumentWriter, QTextFormat, QTextFragment, 62 QTextFrame, QTextFrameFormat, QTextImageFormat, 63 QTextInlineObject, QTextItem, QTextLayout, 64 QTextLength, QTextLine, QTextList, QTextListFormat, 65 QTextObject, QTextObjectInterface, QTextOption, 66 QTextTable, QTextTableCell, QTextTableCellFormat, 67 QTextTableFormat, QTransform, 68 QValidator, QWhatsThisClickedEvent, QWheelEvent, 69 QWindowStateChangeEvent, qAlpha, qBlue, 70 qGray, qGreen, qIsGray, qRed, qRgb, 71 qRgba, QIntValidator) 72 73 # QDesktopServices has has been split into (QDesktopServices and 74 # QStandardPaths) in Qt5 75 # It only exposes QDesktopServices that are still in pyqt5 76 from PyQt4.QtGui import QDesktopServices as _QDesktopServices 77 78 class QDesktopServices(): 79 openUrl = _QDesktopServices.openUrl 80 setUrlHandler = _QDesktopServices.setUrlHandler 81 unsetUrlHandler = _QDesktopServices.unsetUrlHandler 82 83 def __getattr__(self, name): 84 attr = getattr(_QDesktopServices, name) 85 86 new_name = name 87 if name == 'storageLocation': 88 new_name = 'writableLocation' 89 warnings.warn(("Warning QDesktopServices.{} is deprecated in Qt5" 90 "we recommend you use QDesktopServices.{} instead").format(name, new_name), 91 DeprecationWarning) 92 return attr 93 QDesktopServices = QDesktopServices() 94 95elif PYSIDE: 96 from PySide.QtGui import (QAbstractTextDocumentLayout, QActionEvent, QBitmap, 97 QBrush, QClipboard, QCloseEvent, QColor, 98 QConicalGradient, QContextMenuEvent, QCursor, 99 QDoubleValidator, QDrag, 100 QDragEnterEvent, QDragLeaveEvent, QDragMoveEvent, 101 QDropEvent, QFileOpenEvent, QFocusEvent, QFont, 102 QFontDatabase, QFontInfo, QFontMetrics, 103 QFontMetricsF, QGradient, QHelpEvent, 104 QHideEvent, QHoverEvent, QIcon, QIconDragEvent, 105 QIconEngine, QImage, QImageIOHandler, QImageReader, 106 QImageWriter, QInputEvent, QInputMethodEvent, 107 QKeyEvent, QKeySequence, QLinearGradient, 108 QMatrix2x2, QMatrix2x3, QMatrix2x4, QMatrix3x2, 109 QMatrix3x3, QMatrix3x4, QMatrix4x2, QMatrix4x3, 110 QMatrix4x4, QMouseEvent, QMoveEvent, QMovie, 111 QPaintDevice, QPaintEngine, QPaintEngineState, 112 QPaintEvent, QPainter, QPainterPath, 113 QPainterPathStroker, QPalette, QPen, QPicture, 114 QPictureIO, QPixmap, QPixmapCache, QPolygon, 115 QPolygonF, QQuaternion, QRadialGradient, 116 QRegExpValidator, QRegion, QResizeEvent, 117 QSessionManager, QShortcutEvent, QShowEvent, 118 QStandardItem, QStandardItemModel, 119 QStatusTipEvent, QSyntaxHighlighter, QTabletEvent, 120 QTextBlock, QTextBlockFormat, QTextBlockGroup, 121 QTextBlockUserData, QTextCharFormat, QTextCursor, 122 QTextDocument, QTextDocumentFragment, 123 QTextFormat, QTextFragment, 124 QTextFrame, QTextFrameFormat, QTextImageFormat, 125 QTextInlineObject, QTextItem, QTextLayout, 126 QTextLength, QTextLine, QTextList, QTextListFormat, 127 QTextObject, QTextObjectInterface, QTextOption, 128 QTextTable, QTextTableCell, QTextTableCellFormat, 129 QTextTableFormat, QTouchEvent, QTransform, 130 QValidator, QVector2D, QVector3D, QVector4D, 131 QWhatsThisClickedEvent, QWheelEvent, 132 QWindowStateChangeEvent, qAlpha, qBlue, 133 qGray, qGreen, qIsGray, qRed, qRgb, qRgba, 134 QIntValidator) 135 # QDesktopServices has has been split into (QDesktopServices and 136 # QStandardPaths) in Qt5 137 # It only exposes QDesktopServices that are still in pyqt5 138 from PySide.QtGui import QDesktopServices as _QDesktopServices 139 140 class QDesktopServices(): 141 openUrl = _QDesktopServices.openUrl 142 setUrlHandler = _QDesktopServices.setUrlHandler 143 unsetUrlHandler = _QDesktopServices.unsetUrlHandler 144 145 def __getattr__(self, name): 146 attr = getattr(_QDesktopServices, name) 147 148 new_name = name 149 if name == 'storageLocation': 150 new_name = 'writableLocation' 151 warnings.warn(("Warning QDesktopServices.{} is deprecated in Qt5" 152 "we recommend you use QDesktopServices.{} instead").format(name, new_name), 153 DeprecationWarning) 154 return attr 155 QDesktopServices = QDesktopServices() 156else: 157 raise PythonQtError('No Qt bindings could be found') 158