Activity tutorial: Difference between revisions
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. |
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. Download the [http://www.gnome.org/~marco/sugar-drawing-0.1.tar.gz example sources] |
||
== Setup the build system == |
== Setup the build system == |
Revision as of 15:10, 4 August 2006
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. Download the example sources
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()
Create a package initialization file:
touch __init__.py
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