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