Difference between revisions of "Adding an activity"

From GCompris
Jump to: navigation, search
(Activity code)
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Adding an activity is very simple. There are 2 ways do develop activities, in C code or in Python.
+
Adding an activity is very simple. There are 2 ways to develop activities, in C code or in Python.
The easiest and recommended language is python. This is the one documented there.
+
The easiest and recommended language is python. This is the one documented here.
  
 
= Python Documentation =
 
= Python Documentation =
Line 11: Line 11:
 
= Picking an example =
 
= Picking an example =
  
GCompris already includes many activities. One of the easiest way to learn is to pick one close to your need and modify it to do what you want.
+
GCompris already includes many activities. One of the easiest ways to learn is to pick one close to your need and modify it to do what you want.
  
 
We also provide 2 special activities:
 
We also provide 2 special activities:
Line 17: Line 17:
 
* pythontemplate is an empty python activity project, it makes sense to copy it to create your own.
 
* pythontemplate is an empty python activity project, it makes sense to copy it to create your own.
  
 +
= Create your activity =
 +
 +
The easiest way to create an activity is to use the supplied createit.sh script. It creates an empty python activity with your supplied name.
 +
 +
<pre>
 +
cd src
 +
./createit.sh myactivity
 +
</pre>
 +
 +
Now you are ready to test it. Even if python activities do not require compilation, we need to keep makefiles up to date for the installation and packaging process to work. The script takes care of that, you just have to run 'make':
 +
 +
<pre>
 +
make
 +
./runit.sh myactivity-activity
 +
</pre>
 +
 +
When ready, you can test that your activity is well installed and integrated in GCompris. To check this, you must go to the project's top level and run:
 +
 +
<pre>
 +
make install
 +
gcompris --reread-menu
 +
</pre>
 +
 +
The --reread-menu option forces GCompris to rescan all the xml menu activities description of GCompris and recreate our internal sqlite database. <b>This step is to be done when you added or changed a menu file.</b>
  
 
= Menu creation =
 
= Menu creation =
  
First, create a menu for your activity. The menus are XML formatted. They contain many informations about your activity. They must be in a file named ''myactivity.xml.in''. All tags starting with an ''_'' sign means that a translation will be requested for them:
+
You must create or update the menu for your activity. The menus are XML formatted. They contain many informations about your activity. They must be in a file named ''myactivity.xml.in''. All tags starting with an ''_'' sign means that a translation will be requested for them:
 
<pre>
 
<pre>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
Line 42: Line 66:
 
</pre>
 
</pre>
  
Here are the meaning of each field:
+
Here are the meanings of each field:
 
{|
 
{|
 
!Field
 
!Field
Line 105: Line 129:
 
For C activity, modify the ''is_our_board'' function to match your activity type. In python, the activity type '''must''' be the name of the file. In python, it's mandatory to set the class name in your activity code to Gcompris_''myactivity''.
 
For C activity, modify the ''is_our_board'' function to match your activity type. In python, the activity type '''must''' be the name of the file. In python, it's mandatory to set the class name in your activity code to Gcompris_''myactivity''.
  
 
+
[[Category: Developer]]
=== After GCompris 8.5 (gcomprixo branch) ===
+
[[Category:English]]
 
 
* Now all the activity code and resources are in their own directory under src/myactivity-activity.
 
* In order to create one easily, you can use the src/pythontemplate-activity as a template. Do do this, ''cd src  && cp -a pythontest-activity/ myactivity-activity''.
 
* Once your activity is created, you must add it in the toplevel configure.in in the AC_OUTPUT section.
 
* Add it in the ''SUBDIRS'' of ''src/Makefile.am''.
 
* Once done, you can run ''autoconf && sh configure && make''.
 
* Now you activity is compiled, test it without installation by going in src/ and running ''./runit.sh myactivity-activity''
 

Latest revision as of 12:23, 27 January 2015

Adding an activity is very simple. There are 2 ways to develop activities, in C code or in Python. The easiest and recommended language is python. This is the one documented here.

Python Documentation

Picking an example

GCompris already includes many activities. One of the easiest ways to learn is to pick one close to your need and modify it to do what you want.

We also provide 2 special activities:

  • pythontest is a showcase activity, its sole goal is to provide code example
  • pythontemplate is an empty python activity project, it makes sense to copy it to create your own.

Create your activity

The easiest way to create an activity is to use the supplied createit.sh script. It creates an empty python activity with your supplied name.

cd src
./createit.sh myactivity

Now you are ready to test it. Even if python activities do not require compilation, we need to keep makefiles up to date for the installation and packaging process to work. The script takes care of that, you just have to run 'make':

make
./runit.sh myactivity-activity

When ready, you can test that your activity is well installed and integrated in GCompris. To check this, you must go to the project's top level and run:

make install
gcompris --reread-menu

The --reread-menu option forces GCompris to rescan all the xml menu activities description of GCompris and recreate our internal sqlite database. This step is to be done when you added or changed a menu file.

Menu creation

You must create or update the menu for your activity. The menus are XML formatted. They contain many informations about your activity. They must be in a file named myactivity.xml.in. All tags starting with an _ sign means that a translation will be requested for them:

<?xml version="1.0" encoding="UTF-8"?>
<GCompris>
  <Board
        name="pythontest"
        type="python:myactivity"
        section="/experimental"
        icon="boardicons/python.png"
        difficulty="1"
        author="Bruno (bruno@gxxx.net)"
        boarddir="">
        <_title>Python Test</_title>
        <_description>Test board for the python plugin</_description>
        <_prerequisite>Advanced Python Programmer :)</_prerequisite>
        <_goal>Add a language-binding to gcompris.</_goal>
        <_credit>Thanks to Guido van Rossum and the python team for this powerful language!</_credit>
  </Board>
  <Data directory=""/>
</GCompris>

Here are the meanings of each field:

Field Description
name Must be the name of this file
type This let GCompris knows where is the code for your activity. Note that several menu enties can use the same activity code. If the code is in python, the prefix python: must be added.
section Where in the directory structure of the menu this activity will be placed. It must be one of those:
  • /administration: the administration menu. Not for activities
  • /computer
  • /discovery
  • /experience
  • /experimental: Put your activity there until it's ready to be used by any children. By default, experimental activities are hidden. To see them, start GCompris with the --experimental option.
  • /fun
  • /math
  • /puzzle
  • /reading
  • /strategy
icon Points to a png image representing your activity. The directory is relative to the boards directory. By convention, all icons are always placed in the same package_data_dir directory.
difficulty The level of difficulty, must be a number from 1 to 6.
  • 1, 2 or 3 simple stars - from 2 to 6 years old
  • 1, 2 or 3 complex stars - 7 years and up
author Who wrote the code, who made the graphism
boarddir Usually empty. In some case, you want to create an activity that parse specific data and behave accordingly. In this case, you can specify in this field, where is the data directory for this activity. This is relative to the package_data_dir.
_title Note the underscore, it's very important. It means this field will be translated. Put here a title name for your activity. GCompris is dedicated to children. You must use words they can understand.
_description Provide here a little bit more information about the activity
_prerequisite What competencies are needed to play this activity. This information is part of the inline (and online on gcompris.net) help.
_goal What are you going to teach, what must be achieved in the activity.
_credit Did you get help, rewards goes here

Last step, add your new menu in the Makefile.am (in the same directory) and the file po/POTFILES.in. You can run make to be sure it is valid. The file boards/myactivity.xml will be created.

Activity code

Now your menu is ready, you need the add your activity code. Check more information on the GCompris internals page to see how to write the activity code. It's usually easy to copy an activity close to yours. You can have a look at the pythontest activity, it contains several examples of code.

For C activity, modify the is_our_board function to match your activity type. In python, the activity type must be the name of the file. In python, it's mandatory to set the class name in your activity code to Gcompris_myactivity.