diff options
Diffstat (limited to 'PyMca5/PyMcaGui/pymca/QPyMcaMatplotlibSave.py')
-rw-r--r-- | PyMca5/PyMcaGui/pymca/QPyMcaMatplotlibSave.py | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/PyMca5/PyMcaGui/pymca/QPyMcaMatplotlibSave.py b/PyMca5/PyMcaGui/pymca/QPyMcaMatplotlibSave.py index cbfa1fb..540f547 100644 --- a/PyMca5/PyMcaGui/pymca/QPyMcaMatplotlibSave.py +++ b/PyMca5/PyMcaGui/pymca/QPyMcaMatplotlibSave.py @@ -1,6 +1,6 @@ #!/usr/bin/env python #/*########################################################################## -# Copyright (C) 2004-2016 V.A. Sole, European Synchrotron Radiation Facility +# Copyright (C) 2004-2018 V.A. Sole, European Synchrotron Radiation Facility # # This file is part of the PyMca X-ray Fluorescence Toolkit developed at # the ESRF by the Software group. @@ -24,6 +24,7 @@ # THE SOFTWARE. # #############################################################################*/ +from __future__ import absolute_import __author__ = "V.A. Sole - ESRF Data Analysis" __contact__ = "sole@esrf.fr" __license__ = "MIT" @@ -32,13 +33,16 @@ import sys import os import numpy import traceback +from io import StringIO +import logging from PyMca5.PyMcaGui import PyMcaQt as qt from PyMca5.PyMcaCore import PyMcaMatplotlibSave from PyMca5.PyMcaGui import IconDict -from PyMca5.PyMcaGui import PyMcaPrintPreview from PyMca5 import PyMcaDirs +from silx.gui.widgets.PrintPreview import SingletonPrintPreviewDialog + from matplotlib import cm from matplotlib.font_manager import FontProperties from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas @@ -46,7 +50,7 @@ from matplotlib.figure import Figure from matplotlib.colors import LinearSegmentedColormap, LogNorm, Normalize from matplotlib.ticker import MaxNLocator, AutoLocator -DEBUG = 0 +_logger = logging.getLogger(__name__) class TopWidget(qt.QWidget): @@ -108,7 +112,7 @@ class SaveImageSetup(qt.QWidget): self.setWindowTitle("PyMca - Matplotlib save image") self.setWindowIcon(qt.QIcon(qt.QPixmap(IconDict['gioconda16']))) self.lastOutputDir = None - self.printPreview = PyMcaPrintPreview.PyMcaPrintPreview(modal = 0) + self.printPreview = SingletonPrintPreviewDialog(parent=self) #top self.top = TopWidget(self) @@ -178,20 +182,34 @@ class SaveImageSetup(qt.QWidget): msg.setWindowTitle('Matplotlib Save Image') msg.exec_() - def printClicked(self): try: - pixmap = qt.QPixmap.grabWidget(self.imageWidget) - self.printPreview.addPixmap(pixmap) - if self.printPreview.isHidden(): - self.printPreview.show() - self.printPreview.raise_() + imgData = StringIO() + self.imageWidget.figure.savefig(imgData, format="svg") # dpi=...) + imgData.flush() + imgData.seek(0) + svgData = imgData.read() + svgRenderer = qt.QSvgRenderer() + svgRenderer.load(qt.QXmlStreamReader(svgData.encode(errors="replace"))) + self.printPreview.addSvgItem(svgRenderer) except: - msg = qt.QMessageBox(self) - msg.setIcon(qt.QMessageBox.Critical) - msg.setText("Error printing image: %s" % sys.exc_info()[1]) - msg.setWindowTitle('Matplotlib Save Image') - msg.exec_() + try: + if hasattr(qt.QPixmap,"grabWidget"): + pixmap = qt.QPixmap.grabWidget(self.imageWidget) + else: + pixmap = self.imageWidget.grab() + self.printPreview.addPixmap(pixmap) + except: + msg = qt.QMessageBox(self) + msg.setIcon(qt.QMessageBox.Critical) + msg.setText("Error printing image: %s" % sys.exc_info()[1]) + msg.setWindowTitle('Matplotlib Save Image') + msg.exec_() + return + if self.printPreview.isHidden(): + self.printPreview.show() + self.printPreview.raise_() + def saveClicked(self): outfile = qt.QFileDialog(self) @@ -274,7 +292,7 @@ class SaveImageSetup(qt.QWidget): format=finalFile[-3:], dpi=self.imageWidget.config['outputdpi']) except: - print("WARNING: trying to save using obsolete method") + _logger.warning("trying to save using obsolete method") config = self.imageWidget.getParameters() try: s=PyMcaMatplotlibSave.PyMcaMatplotlibSaveImage(self.imageWidget.imageData) @@ -728,8 +746,7 @@ class QPyMcaMatplotlibImage(FigureCanvas): elif self.config['colormap'] == 'ylgnbu_r': cmap = cm.YlGnBu_r else: - print("Unsupported colormap %s" % self.config['colormap']) - + _logger.warning("Unsupported colormap %s", self.config['colormap']) if self.config['extent'] is None: h, w = self.imageData.shape @@ -802,7 +819,7 @@ class QPyMcaMatplotlibImage(FigureCanvas): self._colorbar.locator = tick_locator self._colorbar.update_ticks() except: - print("Colorbar error", sys.exc_info()) + _logger.warning("Colorbar error %s", sys.exc_info()) pass else: self._colorbar = self.figure.colorbar(self._image, |