diff options
Diffstat (limited to 'silx/gui/widgets/PrintGeometryDialog.py')
-rw-r--r-- | silx/gui/widgets/PrintGeometryDialog.py | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/silx/gui/widgets/PrintGeometryDialog.py b/silx/gui/widgets/PrintGeometryDialog.py deleted file mode 100644 index db0f3b3..0000000 --- a/silx/gui/widgets/PrintGeometryDialog.py +++ /dev/null @@ -1,222 +0,0 @@ -# coding: utf-8 -# /*########################################################################## -# -# Copyright (c) 2017 European Synchrotron Radiation Facility -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# ###########################################################################*/ - - -from silx.gui import qt -from silx.gui.widgets.FloatEdit import FloatEdit - - -class PrintGeometryWidget(qt.QWidget): - """Widget to specify the size and aspect ratio of an item - before sending it to the print preview dialog. - - Use methods :meth:`setPrintGeometry` and :meth:`getPrintGeometry` - to interact with the widget. - """ - def __init__(self, parent=None): - super(PrintGeometryWidget, self).__init__(parent) - self.mainLayout = qt.QGridLayout(self) - self.mainLayout.setContentsMargins(0, 0, 0, 0) - self.mainLayout.setSpacing(2) - hbox = qt.QWidget(self) - hboxLayout = qt.QHBoxLayout(hbox) - hboxLayout.setContentsMargins(0, 0, 0, 0) - hboxLayout.setSpacing(2) - label = qt.QLabel(self) - label.setText("Units") - label.setAlignment(qt.Qt.AlignCenter) - self._pageButton = qt.QRadioButton() - self._pageButton.setText("Page") - self._inchButton = qt.QRadioButton() - self._inchButton.setText("Inches") - self._cmButton = qt.QRadioButton() - self._cmButton.setText("Centimeters") - self._buttonGroup = qt.QButtonGroup(self) - self._buttonGroup.addButton(self._pageButton) - self._buttonGroup.addButton(self._inchButton) - self._buttonGroup.addButton(self._cmButton) - self._buttonGroup.setExclusive(True) - - # units - self.mainLayout.addWidget(label, 0, 0, 1, 4) - hboxLayout.addWidget(self._pageButton) - hboxLayout.addWidget(self._inchButton) - hboxLayout.addWidget(self._cmButton) - self.mainLayout.addWidget(hbox, 1, 0, 1, 4) - self._pageButton.setChecked(True) - - # xOffset - label = qt.QLabel(self) - label.setText("X Offset:") - self.mainLayout.addWidget(label, 2, 0) - self._xOffset = FloatEdit(self, 0.1) - self.mainLayout.addWidget(self._xOffset, 2, 1) - - # yOffset - label = qt.QLabel(self) - label.setText("Y Offset:") - self.mainLayout.addWidget(label, 2, 2) - self._yOffset = FloatEdit(self, 0.1) - self.mainLayout.addWidget(self._yOffset, 2, 3) - - # width - label = qt.QLabel(self) - label.setText("Width:") - self.mainLayout.addWidget(label, 3, 0) - self._width = FloatEdit(self, 0.9) - self.mainLayout.addWidget(self._width, 3, 1) - - # height - label = qt.QLabel(self) - label.setText("Height:") - self.mainLayout.addWidget(label, 3, 2) - self._height = FloatEdit(self, 0.9) - self.mainLayout.addWidget(self._height, 3, 3) - - # aspect ratio - self._aspect = qt.QCheckBox(self) - self._aspect.setText("Keep screen aspect ratio") - self._aspect.setChecked(True) - self.mainLayout.addWidget(self._aspect, 4, 1, 1, 2) - - def getPrintGeometry(self): - """Return the print geometry dictionary. - - See :meth:`setPrintGeometry` for documentation about the - print geometry dictionary.""" - ddict = {} - if self._inchButton.isChecked(): - ddict['units'] = "inches" - elif self._cmButton.isChecked(): - ddict['units'] = "centimeters" - else: - ddict['units'] = "page" - - ddict['xOffset'] = self._xOffset.value() - ddict['yOffset'] = self._yOffset.value() - ddict['width'] = self._width.value() - ddict['height'] = self._height.value() - - if self._aspect.isChecked(): - ddict['keepAspectRatio'] = True - else: - ddict['keepAspectRatio'] = False - return ddict - - def setPrintGeometry(self, geometry=None): - """Set the print geometry. - - The geometry parameters must be provided as a dictionary with - the following keys: - - - *"xOffset"* (float) - - *"yOffset"* (float) - - *"width"* (float) - - *"height"* (float) - - *"units"*: possible values *"page", "inch", "cm"* - - *"keepAspectRatio"*: *True* or *False* - - If *units* is *"page"*, the values should be floats in [0, 1.] - and are interpreted as a fraction of the page width or height. - - :param dict geometry: Geometry parameters, as a dictionary.""" - if geometry is None: - geometry = {} - oldDict = self.getPrintGeometry() - for key in ["units", "xOffset", "yOffset", - "width", "height", "keepAspectRatio"]: - geometry[key] = geometry.get(key, oldDict[key]) - - if geometry['units'].lower().startswith("inc"): - self._inchButton.setChecked(True) - elif geometry['units'].lower().startswith("c"): - self._cmButton.setChecked(True) - else: - self._pageButton.setChecked(True) - - self._xOffset.setText("%s" % float(geometry['xOffset'])) - self._yOffset.setText("%s" % float(geometry['yOffset'])) - self._width.setText("%s" % float(geometry['width'])) - self._height.setText("%s" % float(geometry['height'])) - if geometry['keepAspectRatio']: - self._aspect.setChecked(True) - else: - self._aspect.setChecked(False) - - -class PrintGeometryDialog(qt.QDialog): - """Dialog embedding a :class:`PrintGeometryWidget`. - - Use methods :meth:`setPrintGeometry` and :meth:`getPrintGeometry` - to interact with the widget. - - Execute method :meth:`exec_` to run the dialog. - The return value of that method is *True* if the geometry was set - (*Ok* button clicked) or *False* if the user clicked the *Cancel* - button. - """ - - def __init__(self, parent=None): - qt.QDialog.__init__(self, parent) - self.setWindowTitle("Set print size preferences") - layout = qt.QVBoxLayout(self) - layout.setContentsMargins(0, 0, 0, 0) - layout.setSpacing(0) - self.configurationWidget = PrintGeometryWidget(self) - hbox = qt.QWidget(self) - hboxLayout = qt.QHBoxLayout(hbox) - self.okButton = qt.QPushButton(hbox) - self.okButton.setText("Accept") - self.okButton.setAutoDefault(False) - self.rejectButton = qt.QPushButton(hbox) - self.rejectButton.setText("Dismiss") - self.rejectButton.setAutoDefault(False) - self.okButton.clicked.connect(self.accept) - self.rejectButton.clicked.connect(self.reject) - hboxLayout.setContentsMargins(0, 0, 0, 0) - hboxLayout.setSpacing(2) - # hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) - hboxLayout.addWidget(self.okButton) - hboxLayout.addWidget(self.rejectButton) - # hboxLayout.addWidget(qt.HorizontalSpacer(hbox)) - layout.addWidget(self.configurationWidget) - layout.addWidget(hbox) - - def setPrintGeometry(self, geometry): - """Return the print geometry dictionary. - - See :meth:`PrintGeometryWidget.setPrintGeometry` for documentation on - print geometry dictionary. - - :param dict geometry: Print geometry parameters dictionary. - """ - self.configurationWidget.setPrintGeometry(geometry) - - def getPrintGeometry(self): - """Return the print geometry dictionary. - - See :meth:`PrintGeometryWidget.setPrintGeometry` for documentation on - print geometry dictionary.""" - return self.configurationWidget.getPrintGeometry() |