Adding Panels to the Workspace¶
You may want to write an extension that adds a panel which displays information to the user. Builder provides API for this via the “Editor Surface”.
At a high level, the design of the editor is broken into four parts.
- The code editors in the center of the surface
- The left panel, which contains the “sources” of actions
- The bottom panel, which contains utilities
- The right panel, which is transient and contextual to the operation at hand
The easiest way to add a panel is to register an Ide.EditorAddin
which adds the panels in the do_load()
function.
You’ll be provided access to the editor surface with the editor
variable.
# my_plugin.py
import gi
from gi.repository import GObject, Gtk, Dazzle, Ide
class MyEditorAddin(GObject.Object, Ide.EditorAddin):
def do_load(self, editor: Ide.EditorSurface):
# Add a widget to the left panel (aka Sidebar)
self.panel = Gtk.Label(visible=True, label='My Left Panel')
left_panel = editor.get_sidebar()
left_panel.add_section('my-section',
'My Section Title',
'my-section-icon-name',
None, # Menu id if necessary
None, # Menu icon name if necessary
self.panel,
100) # Sort priority
# To add a utility section
self.bottom = Dazzle.DockWidget(title='My Bottom Panel', icon_name='gtk-missing', visible=True)
self.bottom.add(Gtk.Label(label='Hello, Bottom Panel', visible=True))
editor.get_utilities().add(self.bottom)
def do_unload(self, editor: Ide.EditorSurface):
# Remove our widgets
self.panel.destroy()
self.bottom.destroy()
self.bottom = None
self.panel = None