Getting the glyph and its font
Guest last edited by gferreira
In a class derived from BaseEventTool, I use
g = self.getGlyph() f = g.getParent()
in order to obtain the font containing the glyph g.
However, when I have two opened fonts F1 and F2 and two GlyphWindows opened (one from each font : g1 from F1 and g2 from F2), and when I go from one glyph window to the other, the following code :
print g.name, g.getParent.fileName
gives me : g1 F2 or g2 F1
and after some more clicking, I finally get correct values (g1 F1 or g2 F2)
There seem to be only partially updated information when switching windows.
could you make an small example?
I cannot reproduce this issue, with a quick test...
from mojo.events import BaseEventTool, installTool
def currentGlyphChanged(self): g = self.getGlyph() f = g.getParent() print g.name, f
Guest last edited by
[ With Version 1.6 (built 1410152315) ]
Using your example TestTool :
- Open two fonts F1 and F2
- Open glyph g1 from font F1
(now there are three windows opened, plus the output window)
- Bring the window for the font F2 to the front
- click on the glyphs grid, on a glyph g2 (with a name different from g1)
Now you should observe "g1 <F2>" in the output window
[Another weirdness: the callbacks "viewDidChangeGlyph" and "currentGlyphChanged" are called before "becomeActive"]
the mixed parents will be fixed in the next update, thanks for reporting
one thing: a <code>tool.getGlyph()</code> method will always return a glyph from a glyph view, if you select a font window, it will send you a <code>currentGlyphChanged</code> notification, but the glyph will not actually change when using the <code>tool.getGlyph()</code>. To get the global current glyph use <code>CurrentGlyph()</code>
the other weirdness: see https://github.com/typemytype/RoboFontExamples/blob/master/observers/eventObserver.py
a tool can become active separately from a <code>currentGlyphChanged</code> or <code>viewDidChangeGlyph</code>
Guest last edited by
Thank you for fixing this.!
I'll use your eventObserver example to get a better understanding of when each event is triggered.