Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6b1adfd

Browse files
authored
Merge pull request #6599 from anntzer/always-figureoptions
Drop conditional import of figureoptions.
2 parents 7ae1b06 + a44839c commit 6b1adfd

File tree

5 files changed

+120
-50
lines changed

5 files changed

+120
-50
lines changed

INSTALL

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ backends and the capabilities they provide.
232232
Versions 8.6.0 and 8.6.1 are known to have issues that may result
233233
in segfaults when closing multiple windows in the wrong order.
234234

235-
:term:`pyqt` 4.0 or later
235+
:term:`pyqt` 4.4 or later
236236
The Qt4 widgets library python wrappers for the Qt4Agg backend
237237

238238
:term:`pygtk` 2.4 or later

doc/conf.py

Lines changed: 93 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -307,17 +307,99 @@ class Frame(object):
307307

308308
class MyPyQt4(MagicMock):
309309
class QtGui(object):
310-
class QToolBar(object):
311-
pass
312-
313-
class QDialog(object):
314-
pass
315-
316-
class QWidget(object):
317-
pass
318-
319-
class QMainWindow(object):
320-
pass
310+
# PyQt4.QtGui public classes.
311+
# Generated with
312+
# textwrap.fill([name for name in dir(PyQt4.QtGui)
313+
# if isinstance(getattr(PyQt4.QtGui, name), type)])
314+
_QtGui_public_classes = """\
315+
Display QAbstractButton QAbstractGraphicsShapeItem
316+
QAbstractItemDelegate QAbstractItemView QAbstractPrintDialog
317+
QAbstractProxyModel QAbstractScrollArea QAbstractSlider
318+
QAbstractSpinBox QAbstractTextDocumentLayout QAction QActionEvent
319+
QActionGroup QApplication QBitmap QBoxLayout QBrush QButtonGroup
320+
QCalendarWidget QCheckBox QClipboard QCloseEvent QColor QColorDialog
321+
QColumnView QComboBox QCommandLinkButton QCommonStyle QCompleter
322+
QConicalGradient QContextMenuEvent QCursor QDataWidgetMapper QDateEdit
323+
QDateTimeEdit QDesktopServices QDesktopWidget QDial QDialog
324+
QDialogButtonBox QDirModel QDockWidget QDoubleSpinBox QDoubleValidator
325+
QDrag QDragEnterEvent QDragLeaveEvent QDragMoveEvent QDropEvent
326+
QErrorMessage QFileDialog QFileIconProvider QFileOpenEvent
327+
QFileSystemModel QFocusEvent QFocusFrame QFont QFontComboBox
328+
QFontDatabase QFontDialog QFontInfo QFontMetrics QFontMetricsF
329+
QFormLayout QFrame QGesture QGestureEvent QGestureRecognizer QGlyphRun
330+
QGradient QGraphicsAnchor QGraphicsAnchorLayout QGraphicsBlurEffect
331+
QGraphicsColorizeEffect QGraphicsDropShadowEffect QGraphicsEffect
332+
QGraphicsEllipseItem QGraphicsGridLayout QGraphicsItem
333+
QGraphicsItemAnimation QGraphicsItemGroup QGraphicsLayout
334+
QGraphicsLayoutItem QGraphicsLineItem QGraphicsLinearLayout
335+
QGraphicsObject QGraphicsOpacityEffect QGraphicsPathItem
336+
QGraphicsPixmapItem QGraphicsPolygonItem QGraphicsProxyWidget
337+
QGraphicsRectItem QGraphicsRotation QGraphicsScale QGraphicsScene
338+
QGraphicsSceneContextMenuEvent QGraphicsSceneDragDropEvent
339+
QGraphicsSceneEvent QGraphicsSceneHelpEvent QGraphicsSceneHoverEvent
340+
QGraphicsSceneMouseEvent QGraphicsSceneMoveEvent
341+
QGraphicsSceneResizeEvent QGraphicsSceneWheelEvent
342+
QGraphicsSimpleTextItem QGraphicsTextItem QGraphicsTransform
343+
QGraphicsView QGraphicsWidget QGridLayout QGroupBox QHBoxLayout
344+
QHeaderView QHelpEvent QHideEvent QHoverEvent QIcon QIconDragEvent
345+
QIconEngine QIconEngineV2 QIdentityProxyModel QImage QImageIOHandler
346+
QImageReader QImageWriter QInputContext QInputContextFactory
347+
QInputDialog QInputEvent QInputMethodEvent QIntValidator QItemDelegate
348+
QItemEditorCreatorBase QItemEditorFactory QItemSelection
349+
QItemSelectionModel QItemSelectionRange QKeyEvent QKeyEventTransition
350+
QKeySequence QLCDNumber QLabel QLayout QLayoutItem QLineEdit
351+
QLinearGradient QListView QListWidget QListWidgetItem QMainWindow
352+
QMatrix QMatrix2x2 QMatrix2x3 QMatrix2x4 QMatrix3x2 QMatrix3x3
353+
QMatrix3x4 QMatrix4x2 QMatrix4x3 QMatrix4x4 QMdiArea QMdiSubWindow
354+
QMenu QMenuBar QMessageBox QMimeSource QMouseEvent
355+
QMouseEventTransition QMoveEvent QMovie QPageSetupDialog QPaintDevice
356+
QPaintEngine QPaintEngineState QPaintEvent QPainter QPainterPath
357+
QPainterPathStroker QPalette QPanGesture QPen QPicture QPictureIO
358+
QPinchGesture QPixmap QPixmapCache QPlainTextDocumentLayout
359+
QPlainTextEdit QPolygon QPolygonF QPrintDialog QPrintEngine
360+
QPrintPreviewDialog QPrintPreviewWidget QPrinter QPrinterInfo
361+
QProgressBar QProgressDialog QProxyModel QPushButton QPyTextObject
362+
QQuaternion QRadialGradient QRadioButton QRawFont QRegExpValidator
363+
QRegion QResizeEvent QRubberBand QScrollArea QScrollBar
364+
QSessionManager QShortcut QShortcutEvent QShowEvent QSizeGrip
365+
QSizePolicy QSlider QSortFilterProxyModel QSound QSpacerItem QSpinBox
366+
QSplashScreen QSplitter QSplitterHandle QStackedLayout QStackedWidget
367+
QStandardItem QStandardItemModel QStaticText QStatusBar
368+
QStatusTipEvent QStringListModel QStyle QStyleFactory QStyleHintReturn
369+
QStyleHintReturnMask QStyleHintReturnVariant QStyleOption
370+
QStyleOptionButton QStyleOptionComboBox QStyleOptionComplex
371+
QStyleOptionDockWidget QStyleOptionDockWidgetV2 QStyleOptionFocusRect
372+
QStyleOptionFrame QStyleOptionFrameV2 QStyleOptionFrameV3
373+
QStyleOptionGraphicsItem QStyleOptionGroupBox QStyleOptionHeader
374+
QStyleOptionMenuItem QStyleOptionProgressBar QStyleOptionProgressBarV2
375+
QStyleOptionRubberBand QStyleOptionSizeGrip QStyleOptionSlider
376+
QStyleOptionSpinBox QStyleOptionTab QStyleOptionTabBarBase
377+
QStyleOptionTabBarBaseV2 QStyleOptionTabV2 QStyleOptionTabV3
378+
QStyleOptionTabWidgetFrame QStyleOptionTabWidgetFrameV2
379+
QStyleOptionTitleBar QStyleOptionToolBar QStyleOptionToolBox
380+
QStyleOptionToolBoxV2 QStyleOptionToolButton QStyleOptionViewItem
381+
QStyleOptionViewItemV2 QStyleOptionViewItemV3 QStyleOptionViewItemV4
382+
QStylePainter QStyledItemDelegate QSwipeGesture QSyntaxHighlighter
383+
QSystemTrayIcon QTabBar QTabWidget QTableView QTableWidget
384+
QTableWidgetItem QTableWidgetSelectionRange QTabletEvent
385+
QTapAndHoldGesture QTapGesture QTextBlock QTextBlockFormat
386+
QTextBlockGroup QTextBlockUserData QTextBrowser QTextCharFormat
387+
QTextCursor QTextDocument QTextDocumentFragment QTextDocumentWriter
388+
QTextEdit QTextFormat QTextFragment QTextFrame QTextFrameFormat
389+
QTextImageFormat QTextInlineObject QTextItem QTextLayout QTextLength
390+
QTextLine QTextList QTextListFormat QTextObject QTextObjectInterface
391+
QTextOption QTextTable QTextTableCell QTextTableCellFormat
392+
QTextTableFormat QTimeEdit QToolBar QToolBox QToolButton QToolTip
393+
QTouchEvent QTransform QTreeView QTreeWidget QTreeWidgetItem
394+
QTreeWidgetItemIterator QUndoCommand QUndoGroup QUndoStack QUndoView
395+
QVBoxLayout QValidator QVector2D QVector3D QVector4D QWhatsThis
396+
QWhatsThisClickedEvent QWheelEvent QWidget QWidgetAction QWidgetItem
397+
QWindowStateChangeEvent QWizard QWizardPage QWorkspace
398+
QX11EmbedContainer QX11EmbedWidget QX11Info
399+
"""
400+
for _name in _QtGui_public_classes.split():
401+
locals()[_name] = type(_name, (), {})
402+
del _name
321403

322404

323405
class MySip(MagicMock):

lib/matplotlib/backends/backend_qt4.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,7 @@
2222
from matplotlib._pylab_helpers import Gcf
2323
from matplotlib.figure import Figure
2424

25-
2625
from matplotlib.widgets import SubplotTool
27-
try:
28-
import matplotlib.backends.qt_editor.figureoptions as figureoptions
29-
except ImportError:
30-
figureoptions = None
3126

3227
from .qt_compat import QtCore, QtWidgets, _getSaveFileName, __version__
3328
from matplotlib.backends.qt_editor.formsubplottool import UiSubplotTool

lib/matplotlib/backends/backend_qt5.py

Lines changed: 26 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,7 @@
2323
from matplotlib.figure import Figure
2424

2525
from matplotlib.widgets import SubplotTool
26-
try:
27-
import matplotlib.backends.qt_editor.figureoptions as figureoptions
28-
except ImportError:
29-
figureoptions = None
26+
import matplotlib.backends.qt_editor.figureoptions as figureoptions
3027

3128
from .qt_compat import (QtCore, QtGui, QtWidgets, _getSaveFileName,
3229
__version__, is_pyqt5)
@@ -603,7 +600,7 @@ def _init_toolbar(self):
603600
a.setCheckable(True)
604601
if tooltip_text is not None:
605602
a.setToolTip(tooltip_text)
606-
if figureoptions is not None and text == 'Subplots':
603+
if text == 'Subplots':
607604
a = self.addAction(self._icon("qt4_editor_options.png"),
608605
'Customize', self.edit_parameters)
609606
a.setToolTip('Edit axis, curve and image parameters')
@@ -634,32 +631,31 @@ def _init_toolbar(self):
634631
self.layout().setSpacing(12)
635632
self.setMinimumHeight(48)
636633

637-
if figureoptions is not None:
638-
def edit_parameters(self):
639-
allaxes = self.canvas.figure.get_axes()
640-
if not allaxes:
641-
QtWidgets.QMessageBox.warning(
642-
self.parent, "Error", "There are no axes to edit.")
643-
return
644-
if len(allaxes) == 1:
645-
axes = allaxes[0]
634+
def edit_parameters(self):
635+
allaxes = self.canvas.figure.get_axes()
636+
if not allaxes:
637+
QtWidgets.QMessageBox.warning(
638+
self.parent, "Error", "There are no axes to edit.")
639+
return
640+
if len(allaxes) == 1:
641+
axes = allaxes[0]
642+
else:
643+
titles = []
644+
for axes in allaxes:
645+
name = (axes.get_title() or
646+
" - ".join(filter(None, [axes.get_xlabel(),
647+
axes.get_ylabel()])) or
648+
"<anonymous {} (id: {:#x})>".format(
649+
type(axes).__name__, id(axes)))
650+
titles.append(name)
651+
item, ok = QtWidgets.QInputDialog.getItem(
652+
self.parent, 'Customize', 'Select axes:', titles, 0, False)
653+
if ok:
654+
axes = allaxes[titles.index(six.text_type(item))]
646655
else:
647-
titles = []
648-
for axes in allaxes:
649-
name = (axes.get_title() or
650-
" - ".join(filter(None, [axes.get_xlabel(),
651-
axes.get_ylabel()])) or
652-
"<anonymous {} (id: {:#x})>".format(
653-
type(axes).__name__, id(axes)))
654-
titles.append(name)
655-
item, ok = QtWidgets.QInputDialog.getItem(
656-
self.parent, 'Customize', 'Select axes:', titles, 0, False)
657-
if ok:
658-
axes = allaxes[titles.index(six.text_type(item))]
659-
else:
660-
return
661-
662-
figureoptions.figure_edit(axes, self)
656+
return
657+
658+
figureoptions.figure_edit(axes, self)
663659

664660
def _update_buttons_checked(self):
665661
# sync button checkstates to match active mode

lib/matplotlib/backends/qt_editor/formlayout.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,7 @@
5454
from matplotlib.colors import is_color_like
5555
from matplotlib.colors import rgb2hex
5656
from matplotlib.colors import colorConverter
57-
5857
from matplotlib.backends.qt_compat import QtGui, QtWidgets, QtCore
59-
if not hasattr(QtWidgets, 'QFormLayout'):
60-
raise ImportError("Warning: formlayout requires PyQt4 >v4.3 or PySide")
6158

6259
import datetime
6360

0 commit comments

Comments
 (0)