Activity tutorial: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
{{OLPC}}
{{OLPC}}

Here is a short tutorial about writing a sugar activity. It's a step by step guide to get you started quickly, without going in details of the activity system.


== Setup the build system ==
== Setup the build system ==
Line 77: Line 79:
default_type = _drawing_olpc._udp
default_type = _drawing_olpc._udp
show_launcher = yes
show_launcher = yes

== Build and install ==

Initialize the build system. The value of prefix depends on the path of sugar-jhbuild:

./autogen.sh --prefix=[SUGAR-JHBUILD]/build

Build and install:

make
make install

Revision as of 14:55, 4 August 2006

  This page is monitored by the OLPC team.

Here is a short tutorial about writing a sugar activity. It's a step by step guide to get you started quickly, without going in details of the activity system.

Setup the build system

Create the autogen.sh script (make sure to modify the PKG_NAME):

#!/bin/sh
# Run this to generate all the initial makefiles, etc.

srcdir=`dirname $0`
test -z "$srcdir" && srcdir=.

PKG_NAME="sugar-drawing"

(test -f $srcdir/drawing.activity) || {
    echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
    echo " top-level $PKG_NAME directory"
    exit 1
}

which gnome-autogen.sh || {
    echo "You need to install gnome-common from the GNOME CVS"
    exit 1
}

REQUIRED_AUTOMAKE_VERSION=1.9 USE_GNOME2_MACROS=1 . gnome-autogen.sh

Create a configure.ac file:

AC_INIT([Sugar Drawing],[0.1],[],[sugar-drawing])
AM_INIT_AUTOMAKE

AM_PATH_PYTHON

AC_OUTPUT([
Makefile
])

Automake check for the existence of a few required files, you have to create them even if empty:

touch NEWS README AUTHORS ChangeLog

Write the activity Makefile.am:

activitydir = $(datadir)/sugar/activities/drawing
activity_PYTHON =               \
        __init__.py             \
        DrawingActivity.py

EXTRA_DIST = drawing.activity

install-data-local:
        sugar-setup-activity $(srcdir)/drawing.activity

Write the activity code

Write a subclass of sugar.activity.Activity. It's a GtkWindow so you can use the "add" method to insert your own widgets. The source of DrawingActivity.py demonstrates it:

import gtk

from sugar.activity.Activity import Activity

class DrawingActivity(Activity):
        def __init__(self, service, args):
                Activity.__init__(self, service)

                button = gtk.Button('Drawing')
                self.add(button)
                button.show()

Write drawing.activity with the necessary informations about the activity:

[Activity]
name = Drawing
id = org.laptop.sugar.Drawing
python_module = drawing.DrawingActivity.DrawingActivity
default_type = _drawing_olpc._udp
show_launcher = yes

Build and install

Initialize the build system. The value of prefix depends on the path of sugar-jhbuild:

./autogen.sh --prefix=[SUGAR-JHBUILD]/build

Build and install:

make
make install