diff options
| author | Denis Jacquerye | 2015-10-22 07:50:49 +0100 |
|---|---|---|
| committer | Denis Jacquerye | 2015-10-22 07:50:49 +0100 |
| commit | e9891b27d2616f45297977b6a181ae08d3421da6 (patch) | |
| tree | a4006db287daae804ee24cc45aaa6a11b02f9126 | |
| parent | bdca3d55afa85fcf80fda07037fb0c0aa63c2df6 (diff) | |
| download | trufont-e9891b27d2616f45297977b6a181ae08d3421da6.tar.bz2 | |
fontInfo: add class TabWidget, use load and write functions for info type
| -rw-r--r-- | Lib/defconQt/fontInfo.py | 1235 |
1 files changed, 354 insertions, 881 deletions
diff --git a/Lib/defconQt/fontInfo.py b/Lib/defconQt/fontInfo.py index 65ce276..32a718c 100644 --- a/Lib/defconQt/fontInfo.py +++ b/Lib/defconQt/fontInfo.py @@ -46,77 +46,167 @@ class TabDialog(QDialog): super(TabDialog, self).accept() -class GeneralTab(QWidget): - name = "General" +class TabWidget(QWidget): + + def __init__(self, font, parent=None, name=None): + self.name = name + self.font = font + super(TabWidget, self).__init__(parent) + + def loadString(self, font, src, dst): + value = getattr(font.info, src) + if value is not None: + setattr(self, dst + "Edit", QLineEdit(value, self)) + else: + setattr(self, dst + "Edit", QLineEdit(None, self)) + + def writeString(self, font, src, dst): + value = getattr(self, src + "Edit").text() + if value != "": + setattr(font.info, dst, value) + else: + setattr(font.info, dst, None) + + def loadInteger(self, font, src, dst): + value = getattr(font.info, src) + if value is not None: + value = str(value) + else: + value = "" + setattr(self, dst + "Edit", QLineEdit(value, self)) + getattr(self, dst + "Edit").setValidator(QIntValidator(self)) + + def writeInteger(self, font, src, dst): + value = getattr(self, src + "Edit").text() + if value != "": + setattr(font.info, dst, int(value)) + else: + setattr(font.info, dst, None) + + def loadPositiveInteger(self, font, src, dst): + value = getattr(font.info, src) + if value is not None: + value = str(value) + else: + value = "" + setattr(self, dst + "Edit", QLineEdit(value, self)) + getattr(self, dst + "Edit").setValidator(QIntValidator(self)) + validator = QIntValidator(self) + validator.setBottom(0) + getattr(self, dst + "Edit").setValidator(validator) + + writePositiveInteger = writeInteger + + def loadIntegerFloat(self, font, src, dst): + value = getattr(font.info, src) + if value is not None: + value = str(value) + else: + value = "" + setattr(self, dst + "Edit", QLineEdit(value, self)) + getattr(self, dst + "Edit").setValidator(QDoubleValidator(self)) + + def writeIntegerFloat(self, font, src, dst): + value = getattr(self, src + "Edit").text() + if "." in value: + setattr(font.info, dst, float(value)) + elif value: + setattr(font.info, dst, int(value)) + else: + setattr(font.info, dst, None) + + def loadPositiveIntegerFloat(self, font, src, dst): + value = getattr(font.info, src) + if value is not None: + value = str(value) + else: + value = "" + setattr(self, dst + "Edit", QLineEdit(value, self)) + validator = QDoubleValidator(self) + validator.setBottom(0) + getattr(self, dst + "Edit").setValidator(validator) + + writePositiveIntegerFloat = writeIntegerFloat + + def loadIntegerFloatList(self, font, src, dst): + values = " ".join(str(val) for val in getattr(font.info, src)) + setattr(self, dst + "Edit", QLineEdit(values, self)) + + def writeIntegerFloatList(self, font, src, dst): + values = getattr(self, src + "Edit").text() + dstValues = [] + for val in values: + if "." in val: + dstValues.append(float(val)) + elif val not in ("", " "): + dstValues.append(int(val)) + setattr(font.info, dst, dstValues) + + def loadBoolean(self, font, src, dst): + value = getattr(font.info, src) + setattr(self, dst + "Box", QCheckBox(self)) + if value is None: + getattr(self, dst + "Box").setCheckState(Qt.PartiallyChecked) + else: + getattr(self, dst + "Box").setCheckState(value) + + def writeBoolean(self, font, src, dst): + value = getattr(self, src + "Box").checkState() + if value == Qt.PartiallyChecked: + setattr(font.info, dst, None) + else: + setattr(font.info, dst, bool(value)) + + +class GeneralTab(TabWidget): def __init__(self, font, parent=None): - super(GeneralTab, self).__init__(parent) + super(GeneralTab, self).__init__(parent, name="General") mainLayout = QGridLayout(self) familyNameLabel = QLabel("Family name:", self) - self.familyNameEdit = QLineEdit(font.info.familyName, self) styleNameLabel = QLabel("Style name:", self) - self.styleNameEdit = QLineEdit(font.info.styleName, self) + designerLabel = QLabel("Designer:", self) + designerURLLabel = QLabel("Designer URL:", self) + manufacturerLabel = QLabel("Manufacturer:", self) + manufacturerURLLabel = QLabel("Manufacturer URL:", self) + copyrightLabel = QLabel("Copyright:", self) + licenseLabel = QLabel("License:", self) + licenseURLLabel = QLabel("License URL:", self) + trademarkLabel = QLabel("Trademark:", self) + # TODO: give visual feedback of input data validity using QLineEdit + # lose focus event + # http://snorf.net/blog/2014/08/09/using-qvalidator-in-pyqt4-to-validate-user-input/ # noqa + versionLabel = QLabel("Version:", self) + versionDotLabel = QLabel(".", self) + self.loadString(font, "familyName", "familyName") + self.loadString(font, "styleName", "styleName") + self.loadString(font, "openTypeNameDesigner", "designer") + self.loadString(font, "openTypeNameDesignerURL", "designerURL") + self.loadString(font, "openTypeNameManufacturer", "manufacturer") + self.loadString(font, "openTypeNameManufacturerURL", "manufacturerURL") + self.loadString(font, "copyright", "copyright") + self.loadString(font, "openTypeNameLicense", "license") + self.loadString(font, "openTypeNameLicenseURL", "licenseURL") + self.loadString(font, "trademark", "trademark") + self.loadInteger(font, "versionMajor", "versionMajor") + self.versionMajorEdit.setAlignment(Qt.AlignRight) + self.loadPositiveInteger(font, "versionMinor", "versionMinor") mainLayout.addWidget(familyNameLabel, 0, 0) mainLayout.addWidget(self.familyNameEdit, 0, 1, 1, 3) mainLayout.addWidget(styleNameLabel, 0, 4) mainLayout.addWidget(self.styleNameEdit, 0, 5) - - designerLabel = QLabel("Designer:", self) - self.designerEdit = QLineEdit(font.info.openTypeNameDesigner, self) - mainLayout.addWidget(designerLabel, 1, 0) mainLayout.addWidget(self.designerEdit, 1, 1, 1, 5) - - designerURLLabel = QLabel("Designer URL:", self) - self.designerURLEdit = QLineEdit( - font.info.openTypeNameDesignerURL, self) - mainLayout.addWidget(designerURLLabel, 2, 0) mainLayout.addWidget(self.designerURLEdit, 2, 1, 1, 5) - - manufacturerLabel = QLabel("Manufacturer:", self) - self.manufacturerEdit = QLineEdit( - font.info.openTypeNameManufacturer, self) - mainLayout.addWidget(manufacturerLabel, 3, 0) mainLayout.addWidget(self.manufacturerEdit, 3, 1, 1, 5) - - manufacturerURLLabel = QLabel("Manufacturer URL:", self) - self.manufacturerURLEdit = QLineEdit( - font.info.openTypeNameManufacturerURL, self) - mainLayout.addWidget(manufacturerURLLabel, 4, 0) mainLayout.addWidget(self.manufacturerURLEdit, 4, 1, 1, 5) - - copyrightLabel = QLabel("Copyright:", self) - self.copyrightEdit = QLineEdit(font.info.copyright, self) - mainLayout.addWidget(copyrightLabel, 5, 0) mainLayout.addWidget(self.copyrightEdit, 5, 1, 1, 5) - - # TODO: give visual feedback of input data validity using QLineEdit - # lose focus event - # http://snorf.net/blog/2014/08/09/using-qvalidator-in-pyqt4-to-validate-user-input/ # noqa - versionLabel = QLabel("Version:", self) - if font.info.versionMajor is not None: - versionMajor = str(font.info.versionMajor) - else: - versionMajor = '' - self.versionMajorEdit = QLineEdit(versionMajor, self) - self.versionMajorEdit.setAlignment(Qt.AlignRight) - self.versionMajorEdit.setValidator(QIntValidator(self)) - versionDotLabel = QLabel(".", self) - if font.info.versionMinor is not None: - versionMinor = str(font.info.versionMinor) - else: - versionMinor = '' - self.versionMinorEdit = QLineEdit(versionMinor, self) - validator = QIntValidator(self) - validator.setBottom(0) - self.versionMinorEdit.setValidator(validator) - mainLayout.addWidget(versionLabel, 6, 0) mainLayout.addWidget(self.versionMajorEdit, 6, 1) mainLayout.addWidget(versionDotLabel, 6, 2) @@ -144,97 +234,39 @@ class GeneralTab(QWidget): mainLayout.addWidget(dateCreatedLabel, 6, 4) mainLayout.addWidget(self.dateCreatedEdit, 6, 5) - - licenseLabel = QLabel("License:", self) - self.licenseEdit = QLineEdit(font.info.openTypeNameLicense, self) - mainLayout.addWidget(licenseLabel, 7, 0) mainLayout.addWidget(self.licenseEdit, 7, 1, 1, 5) - - licenseURLLabel = QLabel("License URL:", self) - self.licenseURLEdit = QLineEdit(font.info.openTypeNameLicenseURL, self) - mainLayout.addWidget(licenseURLLabel, 8, 0) mainLayout.addWidget(self.licenseURLEdit, 8, 1, 1, 5) - - trademarkLabel = QLabel("Trademark:", self) - self.trademarkEdit = QLineEdit(font.info.trademark, self) - mainLayout.addWidget(trademarkLabel, 9, 0) mainLayout.addWidget(self.trademarkEdit, 9, 1, 1, 5) self.setLayout(mainLayout) def writeValues(self, font): - familyName = self.familyNameEdit.text() - if familyName != '': - font.info.familyName = familyName - else: - font.info.trademark = None - styleName = self.styleNameEdit.text() - if styleName != '': - font.info.styleName = styleName - else: - font.info.trademark = None - designer = self.designerEdit.text() - if designer != '': - font.info.openTypeNameDesigner = designer - else: - font.info.trademark = None - designerURL = self.designerURLEdit.text() - if designerURL != '': - font.info.openTypeNameDesignerURL = designerURL - else: - font.info.trademark = None - manufacturer = self.manufacturerEdit.text() - if manufacturer != '': - font.info.openTypeNameManufacturer = manufacturer - else: - font.info.trademark = None - manufacturerURL = self.manufacturerURLEdit.text() - if manufacturerURL != '': - font.info.openTypeNameManufacturerURL = manufacturerURL - else: - font.info.trademark = None - copyright = self.copyrightEdit.text() - if copyright != '': - font.info.copyright = copyright - else: - font.info.trademark = None - versionMajor = self.versionMajorEdit.text() - if versionMajor: - font.info.versionMajor = int(versionMajor) - else: - font.info.versionMajor = None - versionMinor = self.versionMinorEdit.text() - if versionMinor: - font.info.versionMinor = int(versionMinor) - else: - font.info.versionMinor = None - font.info.openTypeHeadCreated = self.dateCreatedEdit.dateTime( - ).toString("yyyy/MM/dd hh:mm:ss") - license = self.licenseEdit.text() - if license != '': - font.info.openTypeNameLicense = license - else: - font.info.trademark = None - licenseURL = self.licenseURLEdit.text() - if licenseURL != '': - font.info.openTypeNameLicenseURL = licenseURL - else: - font.info.trademark = None - trademark = self.trademarkEdit.text() - if trademark != '': - font.info.trademark = trademark - else: - font.info.trademark = None + self.writeString(font, "familyName", "familyName") + self.writeString(font, "styleName", "styleName") + self.writeString(font, "trademark", "trademark") + self.writeString(font, "copyright", "copyright") + self.writeString(font, "designer", "openTypeNameDesigner") + self.writeString(font, "designerURL", "openTypeNameDesignerURL") + self.writeString(font, "manufacturer", "openTypeNameManufacturer") + self.writeString( + font, "manufacturerURL", "openTypeNameManufacturerURL") + self.writeString(font, "license", "openTypeNameLicense") + self.writeString(font, "licenseURL", "openTypeNameLicenseURL") + + self.writeInteger(font, "versionMajor", "versionMajor") + self.writePositiveInteger(font, "versionMinor", "versionMinor") + + font.info.openTypeHeadCreated = \ + self.dateCreatedEdit.dateTime().toString("yyyy/MM/dd hh:mm:ss") -class MetricsTab(QWidget): - name = "Metrics" +class MetricsTab(TabWidget): def __init__(self, font, parent=None): - super(MetricsTab, self).__init__(parent) + super(MetricsTab, self).__init__(parent, name="Metrics") mainLayout = QGridLayout() styleMapFamilyLabel = QLabel("Style map family name:", self) @@ -262,24 +294,19 @@ class MetricsTab(QWidget): mainLayout.addWidget(self.styleMapStyleDrop, 0, 5) unitsPerEmLabel = QLabel("Units per em:", self) - unitsPerEm = str( - font.info.unitsPerEm) if font.info.unitsPerEm is not None else '' - self.unitsPerEmEdit = QLineEdit(unitsPerEm, self) - validator = QIntValidator(self) - validator.setBottom(0) - self.unitsPerEmEdit.setValidator(validator) - ascenderLabel = QLabel("Ascender:", self) - ascender = str( - font.info.ascender) if font.info.ascender is not None else '' - self.ascenderEdit = QLineEdit(ascender, self) - self.ascenderEdit.setValidator(QIntValidator(self)) - capHeightLabel = QLabel("Cap height:", self) - capHeight = str( - font.info.capHeight) if font.info.capHeight is not None else '' - self.capHeightEdit = QLineEdit(capHeight, self) - self.capHeightEdit.setValidator(QIntValidator(self)) + italicAngleLabel = QLabel("Italic angle:", self) + descenderLabel = QLabel("Descender:", self) + xHeightLabel = QLabel("x-height:", self) + # In the UFO specs these are integer or float, and unitsPerEm is + # non-negative integer or float + self.loadPositiveIntegerFloat(font, "unitsPerEm", "unitsPerEm") + self.loadIntegerFloat(font, "ascender", "ascender") + self.loadIntegerFloat(font, "capHeight", "capHeight") + self.loadIntegerFloat(font, "italicAngle", "italicAngle") + self.loadIntegerFloat(font, "descender", "descender") + self.loadIntegerFloat(font, "xHeight", "xHeight") mainLayout.addWidget(unitsPerEmLabel, 1, 0) mainLayout.addWidget(self.unitsPerEmEdit, 1, 1) @@ -287,25 +314,6 @@ class MetricsTab(QWidget): mainLayout.addWidget(self.ascenderEdit, 1, 3) mainLayout.addWidget(capHeightLabel, 1, 4) mainLayout.addWidget(self.capHeightEdit, 1, 5) - - italicAngleLabel = QLabel("Italic angle:", self) - italicAngle = str( - font.info.italicAngle) if font.info.italicAngle is not None else '' - self.italicAngleEdit = QLineEdit(italicAngle, self) - self.italicAngleEdit.setValidator(QDoubleValidator(self)) - - descenderLabel = QLabel("Descender:", self) - descender = str( - font.info.descender) if font.info.descender is not None else '' - self.descenderEdit = QLineEdit(descender, self) - self.descenderEdit.setValidator(QIntValidator(self)) - - xHeightLabel = QLabel("x-height:", self) - xHeight = str( - font.info.xHeight) if font.info.xHeight is not None else '' - self.xHeightEdit = QLineEdit(xHeight, self) - self.xHeightEdit.setValidator(QIntValidator(self)) - mainLayout.addWidget(italicAngleLabel, 2, 0) mainLayout.addWidget(self.italicAngleEdit, 2, 1) mainLayout.addWidget(descenderLabel, 2, 2) @@ -338,48 +346,14 @@ class MetricsTab(QWidget): font.info.styleMapStyleName = "bold italic" else: font.info.styleMapStyleName = None - unitsPerEm = self.unitsPerEmEdit.text() - if "." in unitsPerEm: - font.info.unitsPerEm = float(unitsPerEm) - elif unitsPerEm: - font.info.unitsPerEm = int(unitsPerEm) - else: - font.info.unitsPerEm = None - italicAngle = self.italicAngleEdit.text() - if "." in italicAngle: - font.info.italicAngle = float(italicAngle) - elif italicAngle: - font.info.italicAngle = int(italicAngle) - else: - font.info.italicAngle = None - ascender = self.ascenderEdit.text() - if "." in ascender: - font.info.ascender = float(ascender) - elif ascender: - font.info.ascender = int(ascender) - else: - font.info.ascender = None - descender = self.descenderEdit.text() - if "." in descender: - font.info.descender = float(descender) - elif descender: - font.info.descender = int(descender) - else: - font.info.descender = None - capHeight = self.capHeightEdit.text() - if "." in capHeight: - font.info.capHeight = float(capHeight) - elif capHeight: - font.info.capHeight = int(capHeight) - else: - font.info.capHeight = None - xHeight = self.xHeightEdit.text() - if "." in xHeight: - font.info.xHeight = float(xHeight) - elif xHeight: - font.info.xHeight = int(xHeight) - else: - font.info.xHeight = None + + self.writePositiveIntegerFloat(font, "unitsPerEm", "unitsPerEm") + self.writeIntegerFloat(font, "italicAngle", "italicAngle") + self.writeIntegerFloat(font, "ascender", "ascender") + self.writeIntegerFloat(font, "descender", "descender") + self.writeIntegerFloat(font, "capHeight", "capHeight") + self.writeIntegerFloat(font, "xHeight", "xHeight") + note = self.noteEdit.toPlainText() if note != '': font.info.note = note @@ -387,48 +361,38 @@ class MetricsTab(QWidget): font.info.note = None -class OpenTypeTab(QWidget): - name = "OpenType" +class OpenTypeTab(TabWidget): def __init__(self, font, parent=None): - super(OpenTypeTab, self).__init__(parent) + super(OpenTypeTab, self).__init__(parent, name="OpenType") nameGroup = QGroupBox("name table", self) # nameGroup.setFlat(True) nameLayout = QGridLayout(self) preferredFamilyNameLabel = QLabel("Pref. Family Name:", self) - self.preferredFamilyNameEdit = QLineEdit( - font.info.openTypeNamePreferredFamilyName, self) - preferredSubfamilyNameLabel = QLabel("Pref. Subfamily Name:", self) - self.preferredSubfamilyNameEdit = QLineEdit( - font.info.openTypeNamePreferredSubfamilyName, self) - compatibleFullNameLabel = QLabel("Compatible Full Name:", self) - self.compatibleFullNameEdit = QLineEdit( - font.info.openTypeNameCompatibleFullName, self) - WWSFamilyNameLabel = QLabel("WWS Family Name:", self) - self.WWSFamilyNameEdit = QLineEdit( - font.info.openTypeNameWWSFamilyName, self) - WWSSubfamilyNameLabel = QLabel("WWS Subfamily Name:", self) - self.WWSSubfamilyNameEdit = QLineEdit( - font.info.openTypeNameWWSSubfamilyName, self) - versionLabel = QLabel("Version:", self) - self.versionEdit = QLineEdit(font.info.openTypeNameVersion, self) - uniqueIDLabel = QLabel("Unique ID:", self) - self.uniqueIDEdit = QLineEdit(font.info.openTypeNameUniqueID, self) - descriptionLabel = QLabel("Description:", self) - self.descriptionEdit = QLineEdit( - font.info.openTypeNameDescription, self) - sampleTextLabel = QLabel("Sample text:", self) - self.sampleTextEdit = QLineEdit(font.info.openTypeNameSampleText, self) + self.loadString( + font, "openTypeNamePreferredFamilyName", "preferredFamilyName") + self.loadString( + font, "openTypeNamePreferredSubfamilyName", + "preferredSubfamilyName") + self.loadString( + font, "openTypeNameCompatibleFullName", "compatibleFullName") + self.loadString(font, "openTypeNameWWSFamilyName", "WWSFamilyName") + self.loadString( + font, "openTypeNameWWSSubfamilyName", "WWSSubfamilyName") + self.loadString(font, "openTypeNameVersion", "version") + self.loadString(font, "openTypeNameUniqueID", "uniqueID") + self.loadString(font, "openTypeNameDescription", "description") + self.loadString(font, "openTypeNameSampleText", "sampleText") l = 0 nameLayout.addWidget(preferredFamilyNameLabel, l, 0) @@ -460,52 +424,17 @@ class OpenTypeTab(QWidget): hheaLayout = QGridLayout(self) ascenderLabel = QLabel("Ascender:", self) - if font.info.openTypeHheaAscender is not None: - ascender = str(font.info.openTypeHheaAscender) - else: - ascender = '' - self.ascenderEdit = QLineEdit(ascender, self) - self.ascenderEdit.setValidator(QIntValidator(self)) - descenderLabel = QLabel("Descender:", self) - if font.info.openTypeHheaDescender is not None: - descender = str(font.info.openTypeHheaDescender) - else: - descender = '' - self.descenderEdit = QLineEdit(descender, self) - self.descenderEdit.setValidator(QIntValidator(self)) - lineGapLabel = QLabel("LineGap:", self) - if font.info.openTypeHheaLineGap is not None: - lineGap = str(font.info.openTypeHheaLineGap) - else: - lineGap = '' - self.lineGapEdit = QLineEdit(lineGap, self) - self.lineGapEdit.setValidator(QIntValidator(self)) - caretSlopeRiseLabel = QLabel("caretSlopeRise:", self) - if font.info.openTypeHheaCaretSlopeRise is not None: - caretSlopeRise = str(font.info.openTypeHheaCaretSlopeRise) - else: - caretSlopeRise = '' - self.caretSlopeRiseEdit = QLineEdit(caretSlopeRise, self) - self.caretSlopeRiseEdit.setValidator(QIntValidator(self)) - caretSlopeRunLabel = QLabel("caretSlopeRun:", self) - if font.info.openTypeHheaCaretSlopeRun is not None: - caretSlopeRun = str(font.info.openTypeHheaCaretSlopeRun) - else: - caretSlopeRun = '' - self.caretSlopeRunEdit = QLineEdit(caretSlopeRun, self) - self.caretSlopeRunEdit.setValidator(QIntValidator(self)) - caretOffsetLabel = QLabel("caretOffset:", self) - if font.info.openTypeHheaCaretOffset is not None: - caretOffset = str(font.info.openTypeHheaCaretOffset) - else: - caretOffset = '' - self.caretOffsetEdit = QLineEdit(caretOffset, self) - self.caretOffsetEdit.setValidator(QIntValidator(self)) + self.loadInteger(font, "openTypeHheaAscender", "ascender") + self.loadInteger(font, "openTypeHheaDescender", "descender") + self.loadInteger(font, "openTypeHheaLineGap", "lineGap") + self.loadInteger(font, "openTypeHheaCaretSlopeRise", "caretSlopeRise") + self.loadInteger(font, "openTypeHheaCaretSlopeRun", "caretSlopeRun") + self.loadInteger(font, "openTypeHheaCaretOffset", "caretOffset") l = 0 hheaLayout.addWidget(ascenderLabel, l, 0) @@ -529,52 +458,22 @@ class OpenTypeTab(QWidget): vheaLayout = QGridLayout(self) vertTypoAscenderLabel = QLabel("vertTypoAscender:", self) - if font.info.openTypeVheaVertTypoAscender is not None: - vertTypoAscender = str(font.info.openTypeVheaVertTypoAscender) - else: - vertTypoAscender = '' - self.vertTypoAscenderEdit = QLineEdit(vertTypoAscender, self) - self.vertTypoAscenderEdit.setValidator(QIntValidator(self)) - vertTypoDescenderLabel = QLabel("vertTypoDescender:", self) - if font.info.openTypeVheaVertTypoDescender is not None: - vertTypoDescender = str(font.info.openTypeVheaVertTypoDescender) - else: - vertTypoDescender = '' - self.vertTypoDescenderEdit = QLineEdit(vertTypoDescender, self) - self.vertTypoDescenderEdit.setValidator(QIntValidator(self)) - vertTypoLineGapLabel = QLabel("vertTypoLineGap:", self) - if font.info.openTypeVheaVertTypoLineGap is not None: - vertTypoLineGap = str(font.info.openTypeVheaVertTypoLineGap) - else: - vertTypoLineGap = '' - self.vertTypoLineGapEdit = QLineEdit(vertTypoLineGap, self) - self.vertTypoLineGapEdit.setValidator(QIntValidator(self)) - vheaCaretSlopeRiseLabel = QLabel("caretSlopeRise:", self) - if font.info.openTypeVheaCaretSlopeRise is not None: - vheaCaretSlopeRise = str(font.info.openTypeVheaCaretSlopeRise) - else: - vheaCaretSlopeRise = '' - self.vheaCaretSlopeRiseEdit = QLineEdit(vheaCaretSlopeRise, self) - self.vheaCaretSlopeRiseEdit.setValidator(QIntValidator(self)) - vheaCaretSlopeRunLabel = QLabel("caretSlopeRun:", self) - if font.info.openTypeVheaCaretSlopeRun is not None: - vheaCaretSlopeRun = str(font.info.openTypeVheaCaretSlopeRun) - else: - vheaCaretSlopeRun = '' - self.vheaCaretSlopeRunEdit = QLineEdit(vheaCaretSlopeRun, self) - self.vheaCaretSlopeRunEdit.setValidator(QIntValidator(self)) - vheaCaretOffsetLabel = QLabel("caretOffset:", self) - if font.info.openTypeVheaCaretOffset is not None: - vheaCaretOffset = str(font.info.openTypeVheaCaretOffset) - else: - vheaCaretOffset = '' - self.vheaCaretOffsetEdit = QLineEdit(vheaCaretOffset, self) - self.vheaCaretOffsetEdit.setValidator(QIntValidator(self)) + self.loadInteger( + font, "openTypeVheaVertTypoAscender", "vertTypoAscender") + self.loadInteger( + font, "openTypeVheaVertTypoDescender", "vertTypoDescender") + self.loadInteger( + font, "openTypeVheaVertTypoLineGap", "vertTypoLineGap") + self.loadInteger( + font, "openTypeVheaCaretSlopeRise", "vheaCaretSlopeRise") + self.loadInteger( + font, "openTypeVheaCaretSlopeRun", "vheaCaretSlopeRun") + self.loadInteger(font, "openTypeVheaCaretOffset", "vheaCaretOffset") l = 0 vheaLayout.addWidget(vertTypoAscenderLabel, l, 0) @@ -600,119 +499,43 @@ class OpenTypeTab(QWidget): self.setLayout(mainLayout) def writeValues(self, font): - preferredFamilyName = self.preferredFamilyNameEdit.text() - if preferredFamilyName != '': - font.info.openTypeNamePreferredFamilyName = preferredFamilyName - else: - font.info.openTypeNamePreferredFamilyName = None - preferredSubfamilyName = self.preferredSubfamilyNameEdit.text() - if preferredSubfamilyName != '': - font.info.openTypeNamePreferredSubfamilyName = \ - preferredSubfamilyName - else: - font.info.openTypeNamePreferredSubfamilyName = None - WWSFamilyName = self.WWSFamilyNameEdit.text() - if WWSFamilyName != '': - font.info.openTypeNameWWSFamilyName = WWSFamilyName - else: - font.info.openTypeNameWWSFamilyName = None - WWSSubfamilyName = self.WWSSubfamilyNameEdit.text() - if WWSSubfamilyName != '': - font.info.openTypeNameWWSSubfamilyName = WWSSubfamilyName - else: - font.info.openTypeNameWWSSubfamilyName = None - compatibleFullName = self.compatibleFullNameEdit.text() - if compatibleFullName != '': - font.info.openTypeNameCompatibleFullName = compatibleFullName - else: - font.info.openTypeNameCompatibleFullName = None - version = self.versionEdit.text() - if version != '': - font.info.openTypeNameVersion = version - else: - font.info.openTypeNameVersion = None - uniqueID = self.uniqueIDEdit.text() - if uniqueID != '': - font.info.openTypeNameUniqueID = uniqueID - else: - font.info.openTypeNameUniqueID = None - description = self.descriptionEdit.text() - if description != '': - font.info.openTypeNameDescription = description - else: - font.info.openTypeNameDescription = None - sampleText = self.sampleTextEdit.text() - if sampleText != '': - font.info.openTypeNameSampleText = sampleText - else: - font.info.openTypeNameSampleText = None - ascender = self.ascenderEdit.text() - if ascender != '': - font.info.openTypeHheaAscender = int(ascender) - else: - font.info.openTypeHheaAscender = None - descender = self.descenderEdit.text() - if descender != '': - font.info.openTypeHheaDescender = int(descender) - else: - font.info.openTypeHheaDescender = None - lineGap = self.lineGapEdit.text() - if lineGap != '': - font.info.openTypeHheaLineGap = int(lineGap) - else: - font.info.openTypeHheaLineGap = None - caretSlopeRise = self.caretSlopeRiseEdit.text() - if caretSlopeRise != '': - font.info.openTypeHheaCaretSlopeRise = int(caretSlopeRise) - else: - font.info.openTypeHheaCaretSlopeRise = None - caretSlopeRun = self.caretSlopeRunEdit.text() - if caretSlopeRun != '': - font.info.openTypeHheaCaretSlopeRun = int(caretSlopeRun) - else: - font.info.openTypeHheaCaretSlopeRun = None - caretOffset = self.caretOffsetEdit.text() - if caretOffset != '': - font.info.openTypeHheaCaretOffset = int(caretOffset) - else: - font.info.openTypeHheaCaretOffset = None - vertTypoAscender = self.vertTypoAscenderEdit.text() - if vertTypoAscender != '': - font.info.openTypeVheaAscender = int(vertTypoAscender) - else: - font.info.openTypeVheaAscender = None - vertTypoDescender = self.vertTypoDescenderEdit.text() - if vertTypoDescender != '': - font.info.openTypeVheaDescender = int(vertTypoDescender) - else: - font.info.openTypeVheaDescender = None - vertTypoLineGap = self.vertTypoLineGapEdit.text() - if vertTypoLineGap != '': - font.info.openTypeVheaLineGap = int(vertTypoLineGap) - else: - font.info.openTypeVheaLineGap = None - vheaCaretSlopeRise = self.vheaCaretSlopeRiseEdit.text() - if vheaCaretSlopeRise != '': - font.info.openTypeVheaCaretSlopeRise = int(vheaCaretSlopeRise) - else: - font.info.openTypeVheaCaretSlopeRise = None - vheaCaretSlopeRun = self.vheaCaretSlopeRunEdit.text() - if vheaCaretSlopeRun != '': - font.info.openTypeVheaCaretSlopeRun = int(vheaCaretSlopeRun) - else: - font.info.openTypeVheaCaretSlopeRun = None - vheaCaretOffset = self.vheaCaretOffsetEdit.text() - if vheaCaretOffset != '': - font.info.openTypeVheaCaretOffset = int(vheaCaretOffset) - else: - font.info.openTypeVheaCaretOffset = None - - -class OS2Tab(QWidget): - name = "OS/2" + self.writeString( + font, "preferredFamilyName", "openTypeNamePreferredFamilyName") + self.writeString( + font, "preferredSubfamilyName", + "openTypeNamePreferredSubfamilyName") + self.writeString(font, "WWSFamilyName", "openTypeNameWWSFamilyName") + self.writeString( + font, "WWSSubfamilyName", "openTypeNameWWSSubfamilyName") + self.writeString( + font, "compatibleFullName", "openTypeNameCompatibleFullName") + self.writeString(font, "version", "openTypeNameVersion") + self.writeString(font, "uniqueID", "openTypeNameUniqueID") + self.writeString(font, "description", "openTypeNameDescription") + self.writeString(font, "sampleText", "openTypeNameSampleText") + self.writeInteger(font, "ascender", "openTypeHheaAscender") + self.writeInteger(font, "descender", "openTypeHheaDescender") + self.writeInteger(font, "lineGap", "openTypeHheaLineGap") + self.writeInteger(font, "caretSlopeRise", "openTypeHheaCaretSlopeRise") + self.writeInteger(font, "caretSlopeRun", "openTypeHheaCaretSlopeRun") + self.writeInteger(font, "caretOffset", "openTypeHheaCaretOffset") + self.writeInteger( + font, "vertTypoAscender", "openTypeVheaVertTypoAscender") + self.writeInteger( + font, "vertTypoDescender", "openTypeVheaVertTypoDescender") + self.writeInteger( + font, "vertTypoLineGap", "openTypeVheaVertTypoLineGap") + self.writeInteger( + font, "vheaCaretSlopeRise", "openTypeVheaCaretSlopeRise") + self.writeInteger( + font, "vheaCaretSlopeRun", "openTypeVheaCaretSlopeRun") + self.writeInteger(font, "vheaCaretOffset", "openTypeVheaCaretOffset") + + +class OS2Tab(TabWidget): def __init__(self, font, parent=None): - super(OS2Tab, self).__init__(parent) + super(OS2Tab, self).__init__(parent, name="OS/2") # OS2Group = QGroupBox("OS/2 table", self) # OS2Group.setFlat(True) @@ -729,16 +552,6 @@ class OS2Tab(QWidget): self.usWidthClassDrop.setCurrentIndex( font.info.openTypeOS2WidthClass) - usWeightClassLabel = QLabel("usWeightClass:", self) - if font.info.openTypeOS2WeightClass is not None: - usWeightClass = str(font.info.openTypeOS2WeightClass) - else: - usWeightClass = '' - self.usWeightClassEdit = QLineEdit(usWeightClass, self) - positiveValidator = QIntValidator(self) - positiveValidator.setBottom(0) - self.usWeightClassEdit.setValidator(positiveValidator) - fsSelectionLabel = QLabel("fsSelection:", self) fsSelection = font.info.openTypeOS2Selection self.fsSelectionList = QListView(self) @@ -790,128 +603,45 @@ class OS2Tab(QWidget): # XXX: ulCodePageRange sTypoAscenderLabel = QLabel("sTypoAscender:", self) - if font.info.openTypeOS2TypoAscender is not None: - sTypoAscender = str(font.info.openTypeOS2TypoAscender) - else: - sTypoAscender = '' - self.sTypoAscenderEdit = QLineEdit(sTypoAscender, self) - self.sTypoAscenderEdit.setValidator(QIntValidator(self)) - sTypoDescenderLabel = QLabel("sTypoDescender:", self) - if font.info.openTypeOS2TypoDescender is not None: - sTypoDescender = str(font.info.openTypeOS2TypoDescender) - else: - sTypoDescender = '' - self.sTypoDescenderEdit = QLineEdit(sTypoDescender, self) - negativeValidator = QIntValidator(self) - negativeValidator.setTop(0) - self.sTypoDescenderEdit.setValidator(negativeValidator) - sTypoLineGapLabel = QLabel("sTypoLineGap:", self) - if font.info.openTypeOS2TypoLineGap is not None: - sTypoLineGap = str(font.info.openTypeOS2TypoLineGap) - else: - sTypoLineGap = '' - self.sTypoLineGapEdit = QLineEdit(sTypoLineGap, self) - self.sTypoLineGapEdit.setValidator(QIntValidator(self)) - + usWeightClassLabel = QLabel("usWeightClass:", self) usWinAscentLabel = QLabel("usWinAscent:", self) - if font.info.openTypeOS2WinAscent is not None: - usWinAscent = str(font.info.openTypeOS2WinAscent) - else: - usWinAscent = '' - self.usWinAscentEdit = QLineEdit(usWinAscent, self) - self.usWinAscentEdit.setValidator(QIntValidator(self)) - usWinDescentLabel = QLabel("usWinDescent:", self) - if font.info.openTypeOS2WinDescent is not None: - usWinDescent = str(font.info.openTypeOS2WinDescent) - else: - usWinDescent = '' - self.usWinDescentEdit = QLineEdit(usWinDescent, self) - positiveValidator = QIntValidator(self) - positiveValidator.setBottom(0) - self.usWinDescentEdit.setValidator(positiveValidator) - ySubscriptXSizeLabel = QLabel("ySubscriptXSize:", self) - if font.info.openTypeOS2SubscriptXSize is not None: - ySubscriptXSize = str(font.info.openTypeOS2SubscriptXSize) - else: - ySubscriptXSize = '' - self.ySubscriptXSizeEdit = QLineEdit(ySubscriptXSize, self) - self.ySubscriptXSizeEdit.setValidator(QIntValidator(self)) - ySubscriptYSizeLabel = QLabel("ySubscriptYSize:", self) - if font.info.openTypeOS2SubscriptYSize is not None: - ySubscriptYSize = str(font.info.openTypeOS2SubscriptYSize) - else: - ySubscriptYSize = '' - self.ySubscriptYSizeEdit = QLineEdit(ySubscriptYSize, self) - self.ySubscriptYSizeEdit.setValidator(QIntValidator(self)) - ySubscriptXOffsetLabel = QLabel("ySubscriptXOffset:", self) - if font.info.openTypeOS2SubscriptXOffset is not None: - ySubscriptXOffset = str(font.info.openTypeOS2SubscriptXOffset) - else: - ySubscriptXOffset = '' - self.ySubscriptXOffsetEdit = QLineEdit(ySubscriptXOffset, self) - self.ySubscriptXOffsetEdit.setValidator(QIntValidator(self)) - ySubscriptYOffsetLabel = QLabel("ySubscriptYOffset:", self) - if font.info.openTypeOS2SubscriptYOffset is not None: - ySubscriptYOffset = str(font.info.openTypeOS2SubscriptYOffset) - else: - ySubscriptYOffset = '' - self.ySubscriptYOffsetEdit = QLineEdit(ySubscriptYOffset, self) - self.ySubscriptYOffsetEdit.setValidator(QIntValidator(self)) - ySuperscriptXSizeLabel = QLabel("ySuperscriptXSize:", self) - if font.info.openTypeOS2SuperscriptXSize is not None: - ySuperscriptXSize = str(font.info.openTypeOS2SuperscriptXSize) - else: - ySuperscriptXSize = '' - self.ySuperscriptXSizeEdit = QLineEdit(ySuperscriptXSize, self) - self.ySuperscriptXSizeEdit.setValidator(QIntValidator(self)) - ySuperscriptYSizeLabel = QLabel("ySuperscriptYSize:", self) - if font.info.openTypeOS2SuperscriptYSize is not None: - ySuperscriptYSize = str(font.info.openTypeOS2SuperscriptYSize) - else: - ySuperscriptYSize = '' - self.ySuperscriptYSizeEdit = QLineEdit(ySuperscriptYSize, self) - self.ySuperscriptYSizeEdit.setValidator(QIntValidator(self)) - ySuperscriptXOffsetLabel = QLabel("ySuperscriptXOffset:", self) - if font.info.openTypeOS2SuperscriptXOffset is not None: - ySuperscriptXOffset = str(font.info.openTypeOS2SuperscriptXOffset) - else: - ySuperscriptXOffset = '' - self.ySuperscriptXOffsetEdit = QLineEdit(ySuperscriptXOffset, self) - self.ySuperscriptXOffsetEdit.setValidator(QIntValidator(self)) - ySuperscriptYOffsetLabel = QLabel("ySuperscriptYOffset:", self) - if font.info.openTypeOS2SuperscriptYOffset is not None: - ySuperscriptYOffset = str(font.info.openTypeOS2SuperscriptYOffset) - else: - ySuperscriptYOffset = '' - self.ySuperscriptYOffsetEdit = QLineEdit(ySuperscriptYOffset, self) - self.ySuperscriptYOffsetEdit.setValidator(QIntValidator(self)) - yStrikeoutSizeLabel = QLabel("yStrikeoutSize:", self) - if font.info.openTypeOS2StrikeoutSize is not None: - yStrikeoutSize = str(font.info.openTypeOS2StrikeoutSize) - else: - yStrikeoutSize = '' - self.yStrikeoutSizeEdit = QLineEdit(yStrikeoutSize, self) - self.yStrikeoutSizeEdit.setValidator(QIntValidator(self)) - yStrikeoutPositionLabel = QLabel("yStrikeoutPosition:", self) - if font.info.openTypeOS2StrikeoutPosition is not None: - yStrikeoutPosition = str(font.info.openTypeOS2StrikeoutPosition) - else: - yStrikeoutPosition = '' - self.yStrikeoutPositionEdit = QLineEdit(yStrikeoutPosition, self) - self.yStrikeoutPositionEdit.setValidator(QIntValidator(self)) + self.loadPositiveInteger( + font, "openTypeOS2WeightClass", "usWeightClass") + self.loadInteger(font, "openTypeOS2TypoAscender", "sTypoAscender") + self.loadInteger(font, "openTypeOS2TypoDescender", "sTypoDescender") + self.loadInteger(font, "openTypeOS2TypoLineGap", "sTypoLineGap") + self.loadPositiveInteger(font, "openTypeOS2WinAscent", "usWinAscent") + self.loadPositiveInteger(font, "openTypeOS2WinDescent", "usWinDescent") + self.loadInteger(font, "openTypeOS2SubscriptXSize", "ySubscriptXSize") + self.loadInteger(font, "openTypeOS2SubscriptYSize", "ySubscriptYSize") + self.loadInteger( + font, "openTypeOS2SubscriptXOffset", "ySubscriptXOffset") + self.loadInteger( + font, "openTypeOS2SubscriptYOffset", "ySubscriptYOffset") + self.loadInteger( + font, "openTypeOS2SuperscriptXSize", "ySuperscriptXSize") + self.loadInteger( + font, "openTypeOS2SuperscriptYSize", "ySuperscriptYSize") + self.loadInteger( + font, "openTypeOS2SuperscriptXOffset", "ySuperscriptXOffset") + self.loadInteger( + font, "openTypeOS2SuperscriptYOffset", "ySuperscriptYOffset") + self.loadInteger(font, "openTypeOS2StrikeoutSize", "yStrikeoutSize") + self.loadInteger( + font, "openTypeOS2StrikeoutPosition", "yStrikeoutPosition") # XXX: panose @@ -983,16 +713,32 @@ class OS2Tab(QWidget): self.allowBitmapEmbeddingBox.setEnabled(True) def writeValues(self, font): - usWidthClass = self.usWidthClassDrop.currentIndex() - if usWidthClass != 0: - font.info.openTypeOS2WidthClass = usWidthClass - else: - font.info.openTypeOS2WidthClass = None - usWeightClass = self.usWeightClassEdit.text() - if usWeightClass != '': - font.info.openTypeOS2WeightClass = int(usWeightClass) - else: - font.info.openTypeOS2WeightClass = None + + self.writePositiveInteger( + font, "usWeightClass", "openTypeOS2WeightClass") + self.writeInteger(font, "sTypoAscender", "openTypeOS2TypoAscender") + self.writeInteger(font, "sTypoDescender", "openTypeOS2TypoDescender") + self.writeInteger(font, "sTypoLineGap", "openTypeOS2TypoLineGap") + self.writePositiveInteger(font, "usWinAscent", "openTypeOS2WinAscent") + self.writePositiveInteger( + font, "usWinDescent", "openTypeOS2WinDescent") + self.writeInteger(font, "ySubscriptXSize", "openTypeOS2SubscriptXSize") + self.writeInteger(font, "ySubscriptYSize", "openTypeOS2SubscriptYSize") + self.writeInteger( + font, "ySubscriptXOffset", "openTypeOS2SubscriptXOffset") + self.writeInteger( + font, "ySubscriptYOffset", "openTypeOS2SubscriptYOffset") + self.writeInteger( + font, "ySuperscriptXSize", "openTypeOS2SuperscriptXSize") + self.writeInteger( + font, "ySuperscriptYSize", "openTypeOS2SuperscriptYSize") + self.writeInteger( + font, "ySuperscriptXOffset", "openTypeOS2SuperscriptXOffset") + self.writeInteger( + font, "ySuperscriptYOffset", "openTypeOS2SuperscriptYOffset") + self.writeInteger(font, "yStrikeoutSize", "openTypeOS2StrikeoutSize") + self.writeInteger( + font, "yStrikeoutPosition", "openTypeOS2StrikeoutPosition") fsSelectionModel = self.fsSelectionList.model() fsSelection = [] @@ -1025,115 +771,26 @@ class OS2Tab(QWidget): # XXX: ulCodePageRange - sTypoAscender = self.sTypoAscenderEdit.text() - if sTypoAscender != '': - font.info.openTypeOS2TypoAscender = int(sTypoAscender) - else: - font.info.openTypeOS2TypoAscender = None - sTypoDescender = self.sTypoDescenderEdit.text() - if sTypoDescender != '': - font.info.openTypeOS2TypoDescender = int(sTypoDescender) - else: - font.info.openTypeOS2TypoDescender = None - sTypoLineGap = self.sTypoLineGapEdit.text() - if sTypoLineGap != '': - font.info.openTypeOS2TypoLineGap = int(sTypoLineGap) - else: - font.info.openTypeOS2TypoLineGap = None - - usWinAscent = self.usWinAscentEdit.text() - if usWinAscent != '': - font.info.openTypeOS2WinAscent = int(usWinAscent) - else: - font.info.openTypeOS2WinAscent = None - usWinDescent = self.usWinDescentEdit.text() - if usWinDescent != '': - font.info.openTypeOS2WinDescent = int(usWinDescent) - else: - font.info.openTypeOS2WinDescent = None - - ySubscriptXSize = self.ySubscriptXSizeEdit.text() - if ySubscriptXSize != '': - font.info.openTypeOS2SubscriptXSize = int(ySubscriptXSize) - else: - font.info.openTypeOS2SubscriptXSize = None - ySubscriptYSize = self.ySubscriptYSizeEdit.text() - if ySubscriptYSize != '': - font.info.openTypeOS2SubscriptYSize = int(ySubscriptYSize) - else: - font.info.openTypeOS2SubscriptYSize = None - ySubscriptXOffset = self.ySubscriptXOffsetEdit.text() - if ySubscriptXOffset != '': - font.info.openTypeOS2SubscriptXOffset = int(ySubscriptXOffset) - else: - font.info.openTypeOS2SubscriptXOffset = None - ySubscriptYOffset = self.ySubscriptYOffsetEdit.text() - if ySubscriptYOffset != '': - font.info.openTypeOS2SubscriptYOffset = int(ySubscriptYOffset) - else: - font.info.openTypeOS2SubscriptYOffset = None - - ySuperscriptXSize = self.ySuperscriptXSizeEdit.text() - if ySuperscriptXSize != '': - font.info.openTypeOS2SuperscriptXSize = int(ySuperscriptXSize) - else: - font.info.openTypeOS2SuperscriptXSize = None - ySuperscriptYSize = self.ySuperscriptYSizeEdit.text() - if ySuperscriptYSize != '': - font.info.openTypeOS2SuperscriptYSize = int(ySuperscriptYSize) - else: - font.info.openTypeOS2SuperscriptYSize = None - ySuperscriptXOffset = self.ySuperscriptXOffsetEdit.text() - if ySuperscriptXOffset != '': - font.info.openTypeOS2SuperscriptXOffset = int(ySuperscriptXOffset) - else: - font.info.openTypeOS2SuperscriptXOffset = None - ySuperscriptYOffset = self.ySuperscriptYOffsetEdit.text() - if ySuperscriptYOffset != '': - font.info.openTypeOS2SuperscriptYOffset = int(ySuperscriptYOffset) - else: - font.info.openTypeOS2SuperscriptYOffset = None - - yStrikeoutSize = self.yStrikeoutSizeEdit.text() - if yStrikeoutSize != '': - font.info.openTypeOS2StrikeoutSize = int(yStrikeoutSize) - else: - font.info.openTypeOS2StrikeoutSize = None - yStrikeoutPosition = self.yStrikeoutPositionEdit.text() - if yStrikeoutPosition != '': - font.info.openTypeOS2StrikeoutPosition = int(yStrikeoutPosition) - else: - font.info.openTypeOS2StrikeoutPosition = None - # XXX: panose -class PostScriptTab(QWidget): - name = "Postscript" +class PostScriptTab(TabWidget): def __init__(self, font, parent=None): - super(PostScriptTab, self).__init__(parent) + super(PostScriptTab, self).__init__(parent, name="PostScript") namingGroup = QGroupBox("Naming", self) # namingGroup.setFlat(True) namingLayout = QGridLayout(self) fontNameLabel = QLabel("FontName:", self) - self.fontNameEdit = QLineEdit(font.info.postscriptFontName, self) - fullNameLabel = QLabel("FullName:", self) - self.fullNameEdit = QLineEdit(font.info.postscriptFullName, self) - weightNameLabel = QLabel("WeightName:", self) - self.weightNameEdit = QLineEdit(font.info.postscriptWeightName, self) - uniqueIDLabel = QLabel("Unique ID:", self) - if font.info.postscriptUniqueID is not None: - uniqueID = str(font.info.postscriptUniqueID) - else: - uniqueID = '' - self.uniqueIDEdit = QLineEdit(uniqueID, self) - self.uniqueIDEdit.setValidator(QIntValidator(self)) + self.loadString(font, "postscriptFontName", "fontName") + self.loadString(font, "postscriptFullName", "fullName") + self.loadString(font, "postscriptWeightName", "weightName") + self.loadInteger(font, "postscriptUniqueID", "uniqueID") l = 0 namingLayout.addWidget(fontNameLabel, l, 0) @@ -1151,25 +808,15 @@ class PostScriptTab(QWidget): # hintingGroup.setFlat(True) hintingLayout = QGridLayout(self) + self.loadIntegerFloatList(font, "postscriptBlueValues", "blueValues") + self.loadIntegerFloatList(font, "postscriptOtherBlues", "otherBlues") + self.loadIntegerFloatList(font, "postscriptFamilyBlues", "familyBlues") + self.loadIntegerFloatList( + font, "postscriptFamilyOtherBlues", "familyOtherBlues") blueValuesLabel = QLabel("Blue values:", self) - blueValues = " ".join(str(val) - for val in font.info.postscriptBlueValues) - self.blueValuesEdit = QLineEdit(blueValues, self) - otherBluesLabel = QLabel("Other blues:", self) - otherBlues = " ".join(str(val) - for val in font.info.postscriptOtherBlues) - self.otherBluesEdit = QLineEdit(otherBlues, self) - familyBluesLabel = QLabel("Family blues:", self) - familyBlues = " ".join(str(val) - for val in font.info.postscriptFamilyBlues) - self.familyBluesEdit = QLineEdit(familyBlues, self) - familyOtherBluesLabel = QLabel("Family other blues:", self) - familyOtherBlues = " ".join( - str(val) for val in font.info.postscriptFamilyOtherBlues) - self.familyOtherBluesEdit = QLineEdit(familyOtherBlues, self) l = 0 hintingLayout.addWidget(blueValuesLabel, l, 0) @@ -1184,45 +831,18 @@ class PostScriptTab(QWidget): l += 1 blueFuzzLabel = QLabel("Blue fuzz:", self) - if font.info.postscriptBlueFuzz is not None: - blueFuzz = str(font.info.postscriptBlueFuzz) - else: - blueFuzz = '' - self.blueFuzzEdit = QLineEdit(blueFuzz, self) - self.blueFuzzEdit.setValidator(QDoubleValidator(self)) - stemSnapHLabel = QLabel("StemSnapH:", self) - stemSnapH = " ".join(str(val) for val in font.info.postscriptStemSnapH) - self.stemSnapHEdit = QLineEdit(stemSnapH, self) - blueScaleLabel = QLabel("Blue scale:", self) - if font.info.postscriptBlueScale is not None: - blueScale = str(font.info.postscriptBlueScale) - else: - blueScale = '' - self.blueScaleEdit = QLineEdit(blueScale, self) - self.blueScaleEdit.setValidator(QDoubleValidator(self)) - stemSnapVLabel = QLabel("StemSnapV:", self) - stemSnapV = " ".join(str(val) for val in font.info.postscriptStemSnapV) - self.stemSnapVEdit = QLineEdit(stemSnapV, self) - blueShiftLabel = QLabel("Blue shift:", self) - if font.info.postscriptBlueShift is not None: - blueShift = str(font.info.postscriptBlueShift) - else: - blueShift = '' - self.blueShiftEdit = QLineEdit(blueShift, self) - self.blueShiftEdit.setValidator(QDoubleValidator(self)) + self.loadIntegerFloatList(font, "postscriptStemSnapH", "stemSnapH") + self.loadIntegerFloatList(font, "postscriptStemSnapV", "stemSnapV") + self.loadIntegerFloat(font, "postscriptBlueFuzz", "blueFuzz") + self.loadIntegerFloat(font, "postscriptBlueScale", "blueScale") + self.loadIntegerFloat(font, "postscriptBlueShift", "blueShift") forceBoldLabel = QLabel("Force bold:", self) - forceBold = font.info.postscriptForceBold - self.forceBoldBox = QCheckBox(self) - self.forceBoldBox.setTristate() - if forceBold is None: - self.forceBoldBox.setCheckState(Qt.PartiallyChecked) - else: - self.forceBoldBox.setChecked(forceBold) + self.loadBoolean(font, "postscriptForceBold", "forceBold") hintingLayout.addWidget(blueFuzzLabel, l, 0) hintingLayout.addWidget(self.blueFuzzEdit, l, 1, 1, 2) @@ -1245,53 +865,20 @@ class PostScriptTab(QWidget): metricsLayout = QGridLayout(self) defaultWidthXLabel = QLabel("DefaultWidthX:", self) - if font.info.postscriptDefaultWidthX is not None: - defaultWidthX = str(font.info.postscriptDefaultWidthX) - else: - defaultWidthX = '' - self.defaultWidthXEdit = QLineEdit(defaultWidthX, self) - self.defaultWidthXEdit.setValidator(QDoubleValidator(self)) - underlineThicknessLabel = QLabel("UnderlineThickness:", self) - if font.info.postscriptUnderlineThickness is not None: - underlineThickness = str(font.info.postscriptUnderlineThickness) - else: - underlineThickness = '' - self.underlineThicknessEdit = QLineEdit(underlineThickness, self) - self.underlineThicknessEdit.setValidator(QDoubleValidator(self)) - nominalWidthXLabel = QLabel("NominalWidthX:", self) - if font.info.postscriptNominalWidthX is not None: - nominalWidthX = str(font.info.postscriptNominalWidthX) - else: - nominalWidthX = '' - self.nominalWidthXEdit = QLineEdit(nominalWidthX, self) - self.nominalWidthXEdit.setValidator(QDoubleValidator(self)) - underlinePositionLabel = QLabel("UnderlinePosition:", self) - if font.info.postscriptUnderlinePosition is not None: - underlinePosition = str(font.info.postscriptUnderlinePosition) - else: - underlinePosition = '' - self.underlinePositionEdit = QLineEdit(underlinePosition, self) - self.underlinePositionEdit.setValidator(QDoubleValidator(self)) - slantAngleLabel = QLabel("SlantAngle:", self) - if font.info.postscriptSlantAngle is not None: - slantAngle = str(font.info.postscriptSlantAngle) - else: - slantAngle = '' - self.slantAngleEdit = QLineEdit(slantAngle, self) - self.slantAngleEdit.setValidator(QDoubleValidator(self)) + self.loadIntegerFloat(font, "postscriptDefaultWidthX", "defaultWidthX") + self.loadIntegerFloat(font, "postscriptNominalWidthX", "nominalWidthX") + self.loadIntegerFloat( + font, "postscriptUnderlineThickness", "underlineThickness") + self.loadIntegerFloat( + font, "postscriptUnderlinePosition", "underlinePosition") + self.loadIntegerFloat(font, "postscriptSlantAngle", "slantAngle") isFixedPitchLabel = QLabel("isFixedPitched:", self) - isFixedPitch = font.info.postscriptIsFixedPitch - self.isFixedPitchBox = QCheckBox(self) - self.isFixedPitchBox.setTristate() - if isFixedPitch is None: - self.isFixedPitchBox.setCheckState(Qt.PartiallyChecked) - else: - self.isFixedPitchBox.setChecked(isFixedPitch) + self.loadBoolean(font, "postscriptIsFixedPitch", "isFixedPitch") l = 0 metricsLayout.addWidget(defaultWidthXLabel, l, 0) @@ -1315,8 +902,7 @@ class PostScriptTab(QWidget): charactersLayout = QGridLayout(self) defaultCharacterLabel = QLabel("Default character:", self) - self.defaultCharacterEdit = QLineEdit( - font.info.postscriptDefaultCharacter, self) + self.loadString(font, "postscriptDefaultCharacter", "defaultCharacter") windowsCharacterSetLabel = QLabel("Windows character set:", self) self.windowsCharacterSetDrop = QComboBox(self) @@ -1345,150 +931,37 @@ class PostScriptTab(QWidget): self.setLayout(mainLayout) def writeValues(self, font): - fontName = self.fontNameEdit.text() - if fontName != '': - font.info.postscriptFontName = fontName - else: - font.info.postscriptFontName = None - fullName = self.fullNameEdit.text() - if fullName != '': - font.info.postscriptFullName = fullName - else: - font.info.postscriptFullName = None - weightName = self.weightNameEdit.text() - if weightName != '': - font.info.postscriptWeightName = weightName - else: - font.info.postscriptWeightName = None - uniqueID = self.uniqueIDEdit.text() - if uniqueID != '': - font.info.postscriptUniqueID = int(uniqueID) - else: - font.info.postscriptUniqueID = None - blueValues = self.blueValuesEdit.text().split(" ") - if blueValues is None: - font.info.postscriptBlueValues = None - else: - blues = [] - for blue in blueValues: - if blue != '': - blues.append(int(blue)) - font.info.postscriptBlueValues = blues - otherBlues = self.otherBluesEdit.text().split(" ") - if otherBlues is None: - font.info.postscriptOtherBlues = None - else: - blues = [] - for blue in otherBlues: - if blue != '': - blues.append(int(blue)) - font.info.postscriptOtherBlues = blues - familyBlues = self.familyBluesEdit.text().split(" ") - if familyBlues is None: - font.info.postscriptFamilyBlues = None - else: - blues = [] - for blue in familyBlues: - if blue != '': - blues.append(int(blue)) - font.info.postscriptFamilyBlues = blues - familyOtherBlues = self.familyOtherBluesEdit.text().split(" ") - if familyOtherBlues is None: - font.info.postscriptFamilyOtherBlues = None - else: - blues = [] - for blue in familyOtherBlues: - if blue != '': - blues.append(int(blue)) - font.info.postscriptFamilyOtherBlues = blues - blueFuzz = self.blueFuzzEdit.text() - if "." in blueFuzz: - font.info.postscriptBlueFuzz = float(blueFuzz) - elif blueFuzz != '': - font.info.postscriptBlueFuzz = int(blueFuzz) - else: - font.info.postscriptBlueFuzz = None - blueScale = self.blueScaleEdit.text() - if blueScale != '': - font.info.postscriptBlueScale = float(blueScale) - else: - font.info.postscriptBlueScale = None - blueShift = self.blueShiftEdit.text() - if "." in blueShift: - font.info.postscriptBlueShift = float(blueShift) - elif blueShift != '': - font.info.postscriptBlueShift = int(blueShift) - else: - font.info.postscriptBlueShift = None - stemSnapH = self.stemSnapHEdit.text().split(" ") - if stemSnapH is None: - font.info.postscriptStemSnapH = None - else: - stems = [] - for stem in stemSnapH: - if stem != '': - stems.append(int(stem)) - font.info.postscriptStemSnapH = stems - stemSnapV = self.stemSnapVEdit.text().split(" ") - if stemSnapV is None: - font.info.postscriptStemSnapV = None - else: - stems = [] - for stem in stemSnapV: - if stem != '': - stems.append(int(stem)) - font.info.postscriptStemSnapV = stems - forceBold = self.forceBoldBox.checkState() - if forceBold == Qt.PartiallyChecked: - font.info.postscriptForceBold = None - else: - font.info.postscriptForceBold = bool(forceBold) - defaultWidthX = self.defaultWidthXEdit.text() - if "." in defaultWidthX: - font.info.postscriptDefaultWidthX = float(defaultWidthX) - elif defaultWidthX != '': - font.info.postscriptDefaultWidthX = int(defaultWidthX) - else: - font.info.postscriptDefaultWidthX = None - nominalWidthX = self.nominalWidthXEdit.text() - if "." in nominalWidthX: - font.info.postscriptNominalWidthX = float(nominalWidthX) - elif nominalWidthX != '': - font.info.postscriptNominalWidthX = int(nominalWidthX) - else: - font.info.postscriptNominalWidthX = None - underlineThickness = self.underlineThicknessEdit.text() - if "." in underlineThickness: - font.info.postscriptUnderlineThickness = float(underlineThickness) - elif underlineThickness != '': - font.info.postscriptUnderlineThickness = \ - int(underlineThickness) - else: - font.info.postscriptUnderlineThickness = None - underlinePosition = self.underlinePositionEdit.text() - if "." in underlinePosition: - font.info.postscriptUnderlinePosition = float(underlinePosition) - elif underlinePosition != '': - font.info.postscriptUnderlinePosition = int(underlinePosition) - else: - font.info.postscriptUnderlinePosition = None - slantAngle = self.slantAngleEdit.text() - if "." in slantAngle: - font.info.postscriptSlantAngle = float(slantAngle) - elif slantAngle != '': - font.info.postscriptSlantAngle = int(slantAngle) - else: - font.info.postscriptSlantAngle = None - isFixedPitch = self.isFixedPitchBox.checkState() - if isFixedPitch == Qt.PartiallyChecked: - font.info.postscriptIsFixedPitch = None - else: - font.info.postscriptIsFixedPitch = bool(isFixedPitch) - defaultCharacter = self.defaultCharacterEdit.text() - if defaultCharacter != '': - font.info.postscriptDefaultCharacter = defaultCharacter - else: - font.info.postscriptDefaultCharacter = None + self.writeString(font, "fontName", "postscriptFontName") + self.writeString(font, "fullName", "postscriptFullName") + self.writeString(font, "weightName", "postscriptWeightName") + self.writeInteger(font, "uniqueID", "postscriptUniqueID") + self.writeIntegerFloatList(font, "blueValues", "postscriptBlueValues") + self.writeIntegerFloatList(font, "otherBlues", "postscriptOtherBlues") + self.writeIntegerFloatList( + font, "familyBlues", "postscriptFamilyBlues") + self.writeIntegerFloatList( + font, "familyOtherBlues", "postscriptFamilyOtherBlues") + self.writeIntegerFloatList(font, "stemSnapH", "postscriptStemSnapH") + self.writeIntegerFloatList(font, "stemSnapV", "postscriptStemSnapV") + self.writeIntegerFloat(font, "blueFuzz", "postscriptBlueFuzz") + self.writeIntegerFloat(font, "blueScale", "postscriptBlueScale") + self.writeIntegerFloat(font, "blueShift", "postscriptBlueShift") + self.writeIntegerFloat( + font, "defaultWidthX", "postscriptDefaultWidthX") + self.writeIntegerFloat( + font, "nominalWidthX", "postscriptNominalWidthX") + self.writeIntegerFloat( + font, "underlineThickness", "postscriptUnderlineThickness") + self.writeIntegerFloat( + font, "underlinePosition", "postscriptUnderlinePosition") + self.writeIntegerFloat(font, "slantAngle", "postscriptSlantAngle") + + self.writeBoolean(font, "forceBold", "postscriptForceBold") + self.writeBoolean(font, "isFixedPitch", "postscriptIsFixedPitch") + + self.writeString( + font, "defaultCharacter", "postscriptDefaultCharacter") + windowsCharacterSet = self.windowsCharacterSetDrop.currentIndex() if windowsCharacterSet == 0: font.info.postscriptWindowsCharacterSet = None |
