Activity tutorial: Difference between revisions

From OLPC
Jump to navigation Jump to search
Line 58: Line 58:


import gtk
import gtk

from sugar.activity.Activity import Activity
from sugar.activity.Activity import Activity

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

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

Revision as of 14:47, 4 August 2006

  This page is monitored by the OLPC team.

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