SOLVED Custom inspector in single window mode



  • Is there a simple way to replace the default inspector with my own in single window mode?
    Or alternatively add and remove sections from it's accordion view?



  • Super! Thanks Frederik!


  • admin

    He Timo

    This example adds an extra pane in the inspector window and extra toolbar icons in a glyph window and font collection window. This also works in single window mode.

    from mojo.events import addObserver
    
    from vanilla import *
    
    class Test(object):
    
        def __init__(self):
            # subscribe to the moment when an inspector will be shown
            addObserver(self, "inspectorWindowWillShowDescriptions", "inspectorWindowWillShowDescriptions")
            # subscribe to the moment when a glyph windwo will be shown
            addObserver(self, "glyphWindowWillShowToolbarItems", "glyphWindowWillShowToolbarItems")
            # subscribe to the moment when a font windwo will be shown
            addObserver(self, "fontWindowWillShowToolbarItems", "fontWindowWillShowToolbarItems")
    
            # keep a reference of the inserted inspector view
            self.editor = TextEditor((10, 10, -10, -0))
    
        def inspectorWindowWillShowDescriptions(self, notification):
            # create an inspector item
            item = dict(label="My Custom View", view=self.editor)
            # this is just a list object where you can append and insert
            notification["descriptions"].insert(0, item)
    
        def glyphWindowWillShowToolbarItems(self, notification):
            # create an toolbar item
            item = dict(itemIdentifier="customGlyphToolbar", label="Do It", callback=self.doIt, imageNamed="toolbarRun")
            notification["toolbarItems"].insert(-2, item)
    
        def fontWindowWillShowToolbarItems(self, notification):
            # create an toolbar item
            item = dict(itemIdentifier="customFontToolbar", label="Do It", callback=self.doIt, imageNamed="toolbarRun")
            notification["toolbarItems"].insert(2, item)
    
        def doIt(self, sender):
            print("do it")
    
    Test()