diff options
| author | Adrien Tétar | 2015-10-31 13:10:21 +0100 |
|---|---|---|
| committer | Adrien Tétar | 2015-10-31 13:10:21 +0100 |
| commit | 4b99df8bb0177a871feec1f78ef9ee35b8aab48d (patch) | |
| tree | 4455d3e913d8f7133e728ccd4755791dc6cb7c33 /Lib | |
| parent | 16c2f16dcdb17c997f2153a89a423c4e1ca86f79 (diff) | |
| download | trufont-4b99df8bb0177a871feec1f78ef9ee35b8aab48d.tar.bz2 | |
fontView: use font.glyphOrder + notifications
Diffstat (limited to 'Lib')
| -rw-r--r-- | Lib/defconQt/fontView.py | 53 | ||||
| -rw-r--r-- | Lib/defconQt/objects/defcon.py | 4 |
2 files changed, 36 insertions, 21 deletions
diff --git a/Lib/defconQt/fontView.py b/Lib/defconQt/fontView.py index c33f8c3..6bc5216 100644 --- a/Lib/defconQt/fontView.py +++ b/Lib/defconQt/fontView.py @@ -938,14 +938,17 @@ class MainWindow(QMainWindow): def _set_font(self, font): if self._font is not None: self._font.removeObserver(self, "Font.Changed") + self._font.removeObserver(self, "Font.GlyphOrderChanged") self._font = font self._font.addObserver(self, "_fontChanged", "Font.Changed") - if "public.glyphOrder" in self._font.lib: - self.sortDescriptor = GlyphSet( - self._font.lib["public.glyphOrder"]) - else: + self._font.addObserver( + self, "_glyphOrderChanged","Font.GlyphOrderChanged") + if self._font.glyphOrder is None: # TODO: cannedDesign or carry sortDescriptor from previous font? self.sortDescriptor = cannedDesign + else: + # use the glyphOrder from the font + self.sortDescriptor = None font = property(_get_font, _set_font, doc="The fontView font. Subscribes \ to the new font, updates the sorting order and cells widget when set.") @@ -954,21 +957,13 @@ class MainWindow(QMainWindow): return self._sortDescriptor def _set_sortDescriptor(self, desc): - if isinstance(desc, GlyphSet): - glyphs = [] - for glyphName in desc.glyphNames: - if glyphName in self._font: - glyphs.append(self._font[glyphName]) - if len(glyphs) < len(self._font): - # if some glyphs in the font are not present in the glyph - # order, loop again to add them at the end - for glyph in self._font: - if glyph not in glyphs: - glyphs.append(glyph) + if desc is None: + self.updateGlyphsFromFont() + elif isinstance(desc, GlyphSet): + self._font.glyphOrder = desc.glyphNames else: - glyphs = [self._font[k] for k in self._font.unicodeData - .sortGlyphNames(self._font.keys(), desc)] - self.collectionWidget.glyphs = glyphs + self._font.glyphOrder = self._font.unicodeData.sortGlyphNames( + self._font.keys(), desc) self._sortDescriptor = desc sortDescriptor = property(_get_sortDescriptor, _set_sortDescriptor, @@ -1040,7 +1035,27 @@ class MainWindow(QMainWindow): def _fontChanged(self, notification): self.collectionWidget.update() - self.setWindowModified(True) + self.setWindowModified(self._font.dirty) + + def _glyphOrderChanged(self, notification): + self.updateGlyphsFromFont() + + def updateGlyphsFromFont(self): + glyphOrder = self._font.glyphOrder + if len(glyphOrder): + glyphs = [] + for glyphName in glyphOrder: + if glyphName in self._font: + glyphs.append(self._font[glyphName]) + if len(glyphs) < len(self._font): + # if some glyphs in the font are not present in the glyph + # order, loop again to add them at the end + for glyph in self._font: + if glyph not in glyphs: + glyphs.append(glyph) + else: + glyphs = self._font[:] + self.collectionWidget.glyphs = glyphs def _glyphOpened(self, glyph): glyphViewWindow = MainGfxWindow(glyph, self) diff --git a/Lib/defconQt/objects/defcon.py b/Lib/defconQt/objects/defcon.py index 24f585f..e9c3470 100644 --- a/Lib/defconQt/objects/defcon.py +++ b/Lib/defconQt/objects/defcon.py @@ -117,8 +117,8 @@ class TPoint(Point): class GlyphSet(object): __slots__ = ["_name", "_glyphNames"] - def __init__(self, glyphNames, name=None): - self._name = name + def __init__(self, glyphNames, name): + self._name = str(name) self._glyphNames = glyphNames def _get_name(self): |
