Dashboard Widgets

Dashboard plugin API exposes two widget types: ajenti.plugins.dashboard.api.DashboardWidget and ajenti.plugins.dashboard.api.ConfigurableWidget.

Simple widget

Example:

from ajenti.api import plugin
from ajenti.plugins.dashboard.api import DashboardWidget

@plugin
class HelloWidget (DashboardWidget):
    name = 'Hello Widget'
    icon = 'comment'

    def init(self):
        self.append(self.ui.inflate('hello_widget:widget'))
        self.find('text').text = 'Hello'

Layout:

<hc>
    <box width="20">
        <icon id="icon" icon="comment" />
    </box>

    <box width="90">
        <label id="name" style="bold" text="Widget" />
    </box>

    <label id="text" />
</hc>

Configurable widget

Configurable widgets have a dict config, configuration dialog and a configuration button.

Example (real dashboard Text widget):

from ajenti.api import plugin
from ajenti.plugins.dashboard.api import ConfigurableWidget


@plugin
class TextWidget (ConfigurableWidget):
    name = _('Text')
    icon = 'font'

    def on_prepare(self):
        # probably not configured yet!
        self.append(self.ui.inflate('dashboard:text'))

    def on_start(self):
        # configured by now
        self.find('text').text = self.config['text']

    def create_config(self):
        return {'text': ''}

    def on_config_start(self):
        # configuration begins now, a chance to fill the configuration dialog
        pass

    def on_config_save(self):
        self.config['text'] = self.dialog.find('text').value

Layout:

<hc>
    <label id="text" text="---" />

    <dialog id="config-dialog" visible="False">
        <pad>
            <formline text="{Text}">
                <textbox id="text" />
            </formline>
        </pad>
    </dialog>
</hc>
comments powered by Disqus