From 5c222dfe49dbb9e760e09150fef3d4c01783e3bb Mon Sep 17 00:00:00 2001 From: Julien Schueller Date: Mon, 15 Apr 2013 09:15:23 +0200 Subject: [PATCH 1/4] Prevented Qt4 from stopping the interpreter. --- lib/matplotlib/backends/backend_qt4.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/matplotlib/backends/backend_qt4.py b/lib/matplotlib/backends/backend_qt4.py index 3caad0bf90c1..1f0fc24ef8be 100644 --- a/lib/matplotlib/backends/backend_qt4.py +++ b/lib/matplotlib/backends/backend_qt4.py @@ -23,6 +23,8 @@ from qt4_compat import QtCore, QtGui, _getSaveFileName, __version__ +import subprocess + backend_version = __version__ def fn_name(): return sys._getframe(1).f_code.co_name @@ -53,6 +55,15 @@ def _create_qApp(): global qApp app = QtGui.QApplication.instance() if app is None: + + # try to launch a QApplication in a separate process + # otherwise it may stop the intepreter on failure (if no X server for example) + p = subprocess.Popen(sys.executable, stdin=subprocess.PIPE, stderr=subprocess.PIPE) + p.stdin.write('from matplotlib.backends.qt4_compat import QtGui\napp = QtGui.QApplication([])\n') + p.stdin.close() + if p.wait() != 0: + raise RuntimeError( 'Qt4 failed to initialize ' + p.stderr.readline().rstrip() ) + qApp = QtGui.QApplication( [" "] ) QtCore.QObject.connect( qApp, QtCore.SIGNAL( "lastWindowClosed()" ), qApp, QtCore.SLOT( "quit()" ) ) From 9bed01614814b2bc76d32110e1c6a3f9aa773971 Mon Sep 17 00:00:00 2001 From: Julien Schueller Date: Tue, 16 Apr 2013 08:48:48 +0200 Subject: [PATCH 2/4] Just check DISPLAY env var --- lib/matplotlib/backends/backend_qt4.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/matplotlib/backends/backend_qt4.py b/lib/matplotlib/backends/backend_qt4.py index 1f0fc24ef8be..9d62dff8e6a3 100644 --- a/lib/matplotlib/backends/backend_qt4.py +++ b/lib/matplotlib/backends/backend_qt4.py @@ -56,14 +56,12 @@ def _create_qApp(): app = QtGui.QApplication.instance() if app is None: - # try to launch a QApplication in a separate process - # otherwise it may stop the intepreter on failure (if no X server for example) - p = subprocess.Popen(sys.executable, stdin=subprocess.PIPE, stderr=subprocess.PIPE) - p.stdin.write('from matplotlib.backends.qt4_compat import QtGui\napp = QtGui.QApplication([])\n') - p.stdin.close() - if p.wait() != 0: - raise RuntimeError( 'Qt4 failed to initialize ' + p.stderr.readline().rstrip() ) - + # check for DISPLAY env variable + if sys.platform.startswith('linux'): + display = os.environ.get('DISPLAY') + if (display is None) or (not ':' in display.strip()): + raise RuntimeError('Invalid DISPLAY variable') + qApp = QtGui.QApplication( [" "] ) QtCore.QObject.connect( qApp, QtCore.SIGNAL( "lastWindowClosed()" ), qApp, QtCore.SLOT( "quit()" ) ) From 1cbce7d574282a9dc9041f4b71fc4b561edd7382 Mon Sep 17 00:00:00 2001 From: Julien Schueller Date: Wed, 17 Apr 2013 18:00:08 +0200 Subject: [PATCH 3/4] Check for a X11 build of Qt --- lib/matplotlib/backends/backend_qt4.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/backends/backend_qt4.py b/lib/matplotlib/backends/backend_qt4.py index 9d62dff8e6a3..781cc0679dac 100644 --- a/lib/matplotlib/backends/backend_qt4.py +++ b/lib/matplotlib/backends/backend_qt4.py @@ -23,8 +23,6 @@ from qt4_compat import QtCore, QtGui, _getSaveFileName, __version__ -import subprocess - backend_version = __version__ def fn_name(): return sys._getframe(1).f_code.co_name @@ -56,10 +54,10 @@ def _create_qApp(): app = QtGui.QApplication.instance() if app is None: - # check for DISPLAY env variable - if sys.platform.startswith('linux'): + # check for DISPLAY env variable on X11 build of Qt + if hasattr(QtGui, "QX11Info"): display = os.environ.get('DISPLAY') - if (display is None) or (not ':' in display.strip()): + if (display is None) or (not ':' in display): raise RuntimeError('Invalid DISPLAY variable') qApp = QtGui.QApplication( [" "] ) From 48e5bb18b9fb37f3f99e494a66037df85716d63d Mon Sep 17 00:00:00 2001 From: jschueller Date: Wed, 17 Apr 2013 19:00:03 +0200 Subject: [PATCH 4/4] Using a regex to check DISPLAY --- lib/matplotlib/backends/backend_qt4.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/backends/backend_qt4.py b/lib/matplotlib/backends/backend_qt4.py index 781cc0679dac..53b7210489d2 100644 --- a/lib/matplotlib/backends/backend_qt4.py +++ b/lib/matplotlib/backends/backend_qt4.py @@ -1,6 +1,7 @@ from __future__ import division, print_function import math import os +import re import signal import sys @@ -57,7 +58,7 @@ def _create_qApp(): # check for DISPLAY env variable on X11 build of Qt if hasattr(QtGui, "QX11Info"): display = os.environ.get('DISPLAY') - if (display is None) or (not ':' in display): + if display is None or not re.search(':\d', display): raise RuntimeError('Invalid DISPLAY variable') qApp = QtGui.QApplication( [" "] ) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy