font selection changed callback



  • Hi,

    Is there any event posted when selected glyphs in a font window change and how can I add it as an observer?

    Thanks,
    Bahman


  • admin

    hi @bahman,

    glyph selection changes in the Font Overview send out currentGlyphChanged and glyphCollectionDraw notifications.

    you can use the EventObserver extension to see which notifications are being sent as you click around in the app:

    Screen Shot 2019-11-28 at 15.08.23.png

    here’s a simple font selection observer example (based on this one):

    from mojo.events import addObserver
    
    class MyObserver:
    
        def __init__(self):
            addObserver(self, 'currentGlyphChangedCallback', "currentGlyphChanged")
    
        def currentGlyphChangedCallback(self, notification):
            print(CurrentFont().selectedGlyphNames) # and/or templateSelectedGlyphNames
    
    MyObserver()
    

    this will keep observing until you close the application. you can also attach the observer to a window, and remove the observer when the window closes – see the List font layers example.

    hope this helps. good luck!


  • admin

    ps. currentGlyphChanged notifications are also sent when the current glyph changes in the glyph window. so you’ll probably first want to check if the current window is the font window:

    from mojo.events import addObserver
    from mojo.UI import CurrentWindow
    
    class MyObserver:
    
        def __init__(self):
            addObserver(self, 'currentGlyphChangedCallback', "currentGlyphChanged")
    
        def currentGlyphChangedCallback(self, notification):
            if CurrentWindow().doodleWindowName == 'FontWindow':
                print(CurrentFont().selectedGlyphNames)
    
    MyObserver()
    

Log in to reply