Sugar Code Snippets: Difference between revisions
Jump to navigation
Jump to search
(Moved snippets (contributed by Leejc) from discussion page into article.) |
(Added a "loading JPEG" snippet. Uses gdk.pixbuf. Perhaps there is a better way?) |
||
| Line 69: | Line 69: | ||
bundle_path = activity.get_bundle_path() |
bundle_path = activity.get_bundle_path() |
||
= |
= Images = |
||
* [http://mailman.laptop.org/pipermail/sugar/2007-February/001528.html Loading an SVG file onto a surface with a transparent background]: |
* [http://mailman.laptop.org/pipermail/sugar/2007-February/001528.html Loading an SVG file onto a surface with a transparent background]: |
||
| Line 81: | Line 81: | ||
width = dimensions[0] |
width = dimensions[0] |
||
height = dimensions[1] |
height = dimensions[1] |
||
* Loading a JPEG file onto a surface: |
|||
pixbuf = gtk.gdk.pixbuf_new_from_file("foo.jpg") |
|||
ctx = # a cairo context |
|||
ctx.set_source_pixbuf(pixbuf,0,0) |
|||
ctx.paint() |
|||
libjpeg is said to be an alternative to using pixbuf. Which is better? Perhaps Sugar/[[HippoCanvas]] provides an easier way to do this? |
|||
= Not yet sorted = |
|||
* [http://mailman.laptop.org/pipermail/sugar/2007-March/002028.html Getting a unique ID for the XO user]: |
* [http://mailman.laptop.org/pipermail/sugar/2007-March/002028.html Getting a unique ID for the XO user]: |
||
Revision as of 14:17, 10 May 2007
This page is monitored by the OLPC team.
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 gettext import gettext as _
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()
Images
target = ctx.get_target() buf = target.create_similar(cairo.CONTENT_COLOR_ALPHA, w, h)
dimensions = handle.get_dimension_data() width = dimensions[0] height = dimensions[1]
- Loading a JPEG file onto a surface:
pixbuf = gtk.gdk.pixbuf_new_from_file("foo.jpg")
ctx = # a cairo context
ctx.set_source_pixbuf(pixbuf,0,0)
ctx.paint()
libjpeg is said to be an alternative to using pixbuf. Which is better? Perhaps Sugar/HippoCanvas provides an easier way to do this?
Not yet sorted
from sugar import profile key = profile.get_pubkey() # If you want a shorter key, you can hash that like: from sugar import util key_hash = util._sha_data(key) hashed_key = util.printable_hash(key_hash)