Sugar Code Snippets

From OLPC
Revision as of 14:28, 27 February 2007 by MarcoPesentiGritti (talk | contribs) (There is actually no snipper on dev.laptop.org so better not link it yet, especially at the top of the page. The perf link is obsolete and not quite on topic.)
Jump to navigation Jump to search

Toolbar

This snippet shows how an activity would have a toolbar with a button and a gtk.TextView widget embedded in a hippo Canvas:

import logging
import hippo
import gtk

from sugar.activity import activity
from sugar.graphics.toolbar import Toolbar
from sugar.graphics.iconbutton import IconButton
from sugar.graphics.entry import Entry
from sugar.graphics.optionmenu import OptionMenu
from sugar.graphics.menu import MenuItem

class FooActivity(activity.Activity):

    _ACTION_ANYTHING = 1
    _ACTION_APPLES = 2
    _ACTION_ORANGES = 3

   def __init__(self, handle):
        activity.Activity.__init__(self, handle)

        vbox = hippo.CanvasBox()
        self.set_root(vbox)

        toolbar = Toolbar()
        vbox.append(toolbar)

        button = IconButton(icon_name='theme:stock-close')
        button.connect("activated", self._button_activated_cb)
        toolbar.append(button)

        entry = Entry()
        button.connect("activated", self._entry_activated_cb)
        toolbar.append(entry)

        option_menu = OptionMenu()
        option_menu.add_item(MenuItem(self._ACTION_ANYTHING, _('Anything')))
        option_menu.add_item(MenuItem(self._ACTION_APPLES, _('Apples'),
                                      'theme:stock-close'))
        option_menu.add_item(MenuItem(self._ACTION_ORANGES, _('Oranges')))
        option_menu.add_separator()
        toolbar.append(option_menu)

        text_view_widget = hippo.CanvasWidget()
        vbox.append(text_view_widget, hippo.PACK_EXPAND)

        text_view = gtk.TextView()
        text_view.get_buffer().set_text('Write here!', -1)
        text_view_widget.props.widget = text_view

    def _button_activated_cb(self, button):
        logging.debug('FooActivity._button_activated_cb')

    def _entry_activated_cb(self, entry):
        logging.debug('FooActivity._entry_activated_cb')

Files

This snippet shows how to get a path to files in the running Activity:

from sugar.activity import activity
bundle_path = activity.get_bundle_path()