From 0181c81a31ab88c594fc85c75194b468cc68dd9c Mon Sep 17 00:00:00 2001 From: Adrien Tétar Date: Wed, 11 Nov 2015 16:56:42 +0100 Subject: fontView: some cleanups --- Lib/defconQt/fontView.py | 71 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 23 deletions(-) (limited to 'Lib/defconQt/fontView.py') diff --git a/Lib/defconQt/fontView.py b/Lib/defconQt/fontView.py index ce709c2..c5d0ca9 100644 --- a/Lib/defconQt/fontView.py +++ b/Lib/defconQt/fontView.py @@ -27,6 +27,7 @@ from collections import OrderedDict import os import pickle import platform +import subprocess import traceback cannedDesign = [ @@ -196,12 +197,12 @@ class InfoPanel(QWidget): symmetryButton = QPushButton("Symmetry", self) symmetryButton.setEnabled(False) hSymmetryButton = QPushButton("H", self) - hSymmetryButton.pressed.connect(self.hSymmetry) + hSymmetryButton.clicked.connect(self.hSymmetry) vSymmetryButton = QPushButton("V", self) - vSymmetryButton.pressed.connect(self.vSymmetry) + vSymmetryButton.clicked.connect(self.vSymmetry) moveButton = QPushButton("Move", self) - moveButton.pressed.connect(self.moveGlyph) + moveButton.clicked.connect(self.moveGlyph) moveXLabel = QLabel("x:", self) self.moveXEdit = QLineEdit("0", self) self.moveXEdit.setValidator(QIntValidator(self)) @@ -212,7 +213,7 @@ class InfoPanel(QWidget): moveXYBox.clicked.connect(self.lockMove) scaleButton = QPushButton("Scale", self) - scaleButton.pressed.connect(self.scaleGlyph) + scaleButton.clicked.connect(self.scaleGlyph) scaleXLabel = QLabel("x:", self) self.scaleXEdit = QLineEdit("100", self) self.scaleXEdit.setValidator(QIntValidator(self)) @@ -263,14 +264,24 @@ class InfoPanel(QWidget): self.move(x, y) def hSymmetry(self): - xMin, yMin, xMax, yMax = self._glyph.controlPointBounds + if not len(self._glyph): + return + controlPointBounds = self._glyph.controlPointBounds + if controlPointBounds is None: + return + xMin, _, xMax, _ = controlPointBounds for contour in self._glyph: for point in contour: point.x = xMin + xMax - point.x self._glyph.dirty = True def vSymmetry(self): - xMin, yMin, xMax, yMax = self._glyph.controlPointBounds + if not len(self._glyph): + return + controlPointBounds = self._glyph.controlPointBounds + if controlPointBounds is None: + return + _, yMin, _, yMax = controlPointBounds for contour in self._glyph: for point in contour: point.y = yMin + yMax - point.y @@ -292,6 +303,11 @@ class InfoPanel(QWidget): self.scaleYEdit.setEnabled(not checked) def scaleGlyph(self): + if not len(self._glyph): + return + controlPointBounds = self._glyph.controlPointBounds + if controlPointBounds is None: + return sX = self.scaleXEdit.text() if not self.scaleYEdit.isEnabled(): sY = sX @@ -300,7 +316,7 @@ class InfoPanel(QWidget): sX, sY = int(sX) if sX != "" else 1, int(sY) if sY != "" else 1 sX /= 100 sY /= 100 - xMin, yMin, xMax, yMax = self._glyph.controlPointBounds + xMin, yMin, _, _ = controlPointBounds for contour in self._glyph: for point in contour: point.x = xMin + (point.x - xMin) * sX @@ -530,11 +546,11 @@ class SortDialog(QDialog): self.customSortLayout.addWidget(btn, i, 3) if i == 0: btn.setText("+") - btn.pressed.connect(self._addRow) + btn.clicked.connect(self._addRow) self.addLineButton = btn else: btn.setText("−") - btn.pressed.connect(self._deleteRow) + btn.clicked.connect(self._deleteRow) self.customSortGroup.setLayout(self.customSortLayout) buttonBox = QDialogButtonBox( @@ -562,7 +578,7 @@ class SortDialog(QDialog): btn = QPushButton("−", self) btn.setFixedWidth(32) btn.setProperty("index", i) - btn.pressed.connect(self._deleteRow) + btn.clicked.connect(self._deleteRow) line.append(btn) self.customDescriptors.append(line) self.customSortLayout.addWidget(line[0], i, 0) @@ -1228,14 +1244,23 @@ class MainWindow(QMainWindow): self.sortDescriptor = self.sortDescriptor def about(self): + + def getGitShortHash(): + try: + return subprocess.check_output( + ['git', 'rev-parse', '--short', 'HEAD']).decode() + except: + return "" + name = QApplication.applicationName() domain = QApplication.organizationDomain() - text = "
I am a new UFO-centric font editor and I aim to bring " \ - "the robofab ecosystem to all main operating systems, " \ - "in a fast and dependency-free package.
" \ - "Version {} – Python {}.".format( - name, __version__, platform.python_version()) + text = \ + "
{n} is a cross-platform, modular typeface design software.
" \ + "{n} is built on top of defcon and includes scripting support " \ + "with a robofab-like API.
" \ + "Version {} {} – Python {}.".format(
+            __version__, getGitShortHash(), platform.python_version(), n=name)
         if domain:
             text += "
See {d} for more " \
                     "information.