Development Team/Almanac/Code Snippets: Difference between revisions

FIELD_OTHER
Manuq (talk | contribs)
 
(12 intermediate revisions by 8 users not shown)
Line 1: Line 1:
{{OLPC}}
{{Translations}}
{{Translations}}


The [[Sugar-api-doc|Sugar Almanac]] also has lots of code snippets.
The [[Development_Team/Almanac|Sugar Almanac]] also has lots of code snippets.


== Smooth animation ==
== Smooth animation ==
Line 8: Line 7:
[[PyGTK/Smooth_Animation_with_PyGTK]]
[[PyGTK/Smooth_Animation_with_PyGTK]]


== WebView ==
== WebKit WebView ==
Use the WebView in a widget.
 
  import os
  from gi.repository import WebKit
  import hulahop
  from gi.repository import Gtk
  from sugar import env
   
  hulahop.startup(os.path.join(env.get_profile_path(), 'gecko'))
  WINDOW_WIDTH, WINDOW_HEIGHT = 700, 500
# create window:
   
   
  from hulahop.webview import WebView
  def _destroy_cb(widget, data=None):
    Gtk.main_quit()
   
   
  import gtk
  window = Gtk.Window()
window.resize(WINDOW_WIDTH, WINDOW_HEIGHT)
window.connect("destroy", _destroy_cb)
window.show()
   
   
  win = gtk.Window(gtk.WINDOW_TOPLEVEL)
  # create and add scrolled window:
  win.set_size_request(800,600)
  s = Gtk.ScrolledWindow()
  win.connect('destroy', gtk.main_quit)
  window.add(s)
wv = WebView()
  s.show()
wv.load_uri('http://wiki.laptop.org/go/Guido_van_Robot')
  wv.show()
   
   
  win.add(wv)
  # create and add webview:
v = WebKit.WebView()
s.add(v)
v.show()
   
   
  win.show()
  # load google page:
  gtk.main()
  v.load_uri('http://wiki.laptop.org')
   
   
=== Notes ===
Gtk.main()
* I'm not sure what the purpose is of the call to hulahop.startup as the documentation is rather sparse. I only knows it's needed to get it to work [[User:Stas_z|Stas Zytkiewicz]] 2 Dec 2007


== Toolbar ==
== Toolbar ==


FIELD_MESSAGE_boboget
=== Toolbar icons ===
 
Setting a standard Sugar toolbar.
from sugar.activity import activity
...
class MyActivity(activity.Activity):
...
    toolbox = activity.ActivityToolbox(self)
    self.set_toolbox(toolbox)
    toolbox.show()
 
Adding a custom toolbar and icons.
from sugar.graphics.toolbutton import ToolButton
from sugar.activity import activity
...
class MyActivity(activity.Activity):
...
    mytoolbox = gtk.Toolbar()
    helpbut = ToolButton('help') #Stock help icon
    helpbut.set_tooltip(_("Get help"))
    helpbut.connect('clicked', self.help_button_pressed)
    mytoolbox.insert(helpbut, -1)
    helpbut.show()
    mytoolbox.show()
    toolbox = activity.ActivityToolbox(self)
    toolbox.add_toolbar("mytoolbar",mytoolbox)
    self.set_toolbox(toolbox)
    toolbox.show()
 
In addition to the standard icons in /usr/share/icons/sugar/scalable/ (eg, "go-next"), you can create additional icons by putting an svg in your activity's icons/ directory.  E.g.,
icons/my-icon.svg
And then use it.
mybut = ToolButton('my-icon')# without extension
 
== Files ==
 
This snippet shows how to get a [http://mailman.laptop.org/pipermail/sugar/2007-February/001459.html path to files in the running Activity]:
 
from sugar.activity import activity
bundle_path = activity.get_bundle_path()
 
This snippet shows how to get [http://lists.laptop.org/pipermail/devel/2008-March/011799.html a path to an activity's writable directories] (i.e. the SUGAR_ACTIVITY_ROOT environment variable; see also [[Activity_DBus_API#Security | the activity DBus API]]):


FIELD_MESSAGE_sitalc
class WebActivity(activity.Activity):
    def __init__(self, handle):
        activity.Activity.__init__(self, handle)
        temp_path = os.path.join(self.get_activity_root(), 'instance')


== Images ==
== Images ==
Line 179: Line 229:
[[Category:HowTo]]
[[Category:HowTo]]
[[Category:Sugar]]
[[Category:Sugar]]
[[Category:Developers]]
[[Category:Developer]]