# Registering Perspectives

Everything in Builder below the header bar is implemented as a “Perspective”. For example, the editor is a perspective and so is the preferences interface.

You may want to create a perspective if you require the users full attention and other editor components may be distracting.

Note

We generally suggest looking for alternatives to creating a perspective as it can be cumbersome for the user to switch contexts.

    # my_plugin.py

    import gi

    from gi.repository import GObject
    from gi.repository import Ide
    from gi.repository import Gtk

    class MyPerspective(Gtk.Bin, Ide.Perspective):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)

            self.add(Gtk.Label(label='My Perspective', visible=True))

        def do_get_icon_name(self):
            return 'gtk-missing'

        def do_get_title(self):
            return 'My Perspective'

        def do_get_accelerator(self):
            return '<Control><Shift><Alt>Z'

    class MyWorkbenchAddin(GObject.Object, Ide.WorkbenchAddin):
        perspective = None

        def do_load(self, workbench):
            self.perspective = MyPerspective(visible=True)
            workbench.add_perspective(self.perspective)

        def do_unload(self, workbench):
            self.perspective.destroy()
            self.perspective = None