Session Tracking
Some plugins may want to save state when the user closes Builder. The Ide.SessionAddin allows for saving and restoring state of an Ide.Page when a project is closed or re-opened.
# my_plugin.py
import gi
from gi.repository import GObject
from gi.repository import Gio
from gi.repository import Ide
class MySessionAddin(Ide.Object, Ide.SessionAddin):
def get_autosave_properties(self):
return ['uri', 'current-directory']
def can_save_page(self, page):
return issubclass(page, My.CustomPage)
def do_save_page_async(self, page, cancellable, callback, data):
# Create our async task
task = Ide.Task.new(self, cancellable, callback)
# State is saved as a variant
task.result = GLib.Variant.new_int(123)
# Now complete task
task.return_boolean(True)
def do_save_finish(self, task):
if task.propagate_boolean():
return task.result
def do_restore_page_async(self, state, cancellable, callback, data):
# Create our async task
task = Ide.Task.new(self, cancellable, callback)
# state is a GLib.Variant matching what we saved
# unpack state here
my_page = My.CustomPage.new(data_from_state)
# Now complete task
task.return_pointer(my_page)
def do_restore_finish(self, task):
return task.propagate_pointer()