Skip to content
Tags give the ability to mark specific points in history as being important
  • CGOMPRIS_15_10
    8e559312 · RELEASE 15.10 ·
    RELEASE 15.10
  • GCOMPRIS_14_07
    57274b40 · RELEASE 14.07 ·
    RELEASE 14.07
  • GCOMPRIS_14_05
    9e175352 · RELEASE 14.05 ·
    RELEASE GCOMPRIS_14_05
  • GCOMPRIS_13_11
    RELEASE 13.11
  • GCOMPRIS_12_11
    RELEASE 12.11
  • GCOMPRIS_12_05
    RELEASE 12.05
    
    Alexander Shopov:
    
    - Updated Bulgarian translation
    
    Beth Hadley:
    
    - Louis_braille activity: fixed a wrong fact
    
    Bruno Brouard:
    
    - Updated French translation
    
    Bruno Coudoin:
    
    - Management of sounds in the bar. removed the bleep and play the
      level in interrupt mode.
    
    - Wordsgame: fixed hungarian word dataset, the level 2 was missing. It
      made reading activities crashing in Hungarian.
    
    - Braille_alphabets: fixed level with numbers, was generating a python
      error.
    
    - Geo_country: added India by Matilda Bernard
    
    - Wordgame: improved the hungarian list of words by Somlai István
    
    - Geo_country: added Australia by Matilda Bernard
    
    - Geography: fixed reference to audio files for sudan and congo.
    
    - Geography activity: fixed naming of burkina to always be 'burkina
      faso'
    
    - Geography-activity: fixed the name of antartica to be properly
      spelled as antarctica.
    
    - Instrument activity: fixed wrong instrument bass drum was really a
      snare drum.
    
    - Lang activity: reworked the number level using images from
      wikicommons.
    
    - Lang activity: inprogress, added many images.
    
    - Lang activity: now play the sounds in interrupt mode, better user
      experience.
    
    - Lang activity: added hightlighs on buttons.
    
    - Instruments activities: fixed makefiles.
    
    - Core: fixed the command line option --difficulty which was not
      working.
    
    - Core: added the command line option --disable-database
    
    - Electric: cleanup, removed unused image.
    
    - Electric: added a red led. replaces the diode.
    
    - Electric: fixed a simulation issue. there was a missing
      recalculation when a component blows up.
    
    - Electric: now each wire is draw with a random color.
    
    - Administration: performance improvement in board selection /
      deselection
    
    - Core: in case no activities are selected display a nice error
      message.
    
    - Windows build: upgraded to gtk+-bundle_2.24.10-20120208
    
    - Core: size optimization of all png images with optipng -o7 (30MB
      size reduction)
    
    - Merge branch 'git://git.sugarlabs.org/alsroot/gcompris.git' for
      Sugar
    
    - Tools: added a tool to display the list of missing voices of a given
      language.
    
    - Tools: Improved gimp script foo by Angel Ivan Moreno
    
    - Animation activity: fixed the implementation of the z order
      management.
    
    - Windows: upgraded to gtk+-bundle_2.24.10-20120208 This fixes an
      issue in which users on Windows XP with a 16 bits display color
      depth could not start GCompris.
    
    Chao-Hsiung Liao:
    
    - Updated Traditional Chinese translation
    
    Christian Kirbach:
    
    - Updated German translation
    
    Claude Paroz, Bruno Brouard:
    
    - Updated French translation
    
    Daniel Mustieles:
    
    - Updated Spanish translation
    
    Fran Diéguez:
    
    - Updated Galician translations
    
    Frederico Goncalves Guimaraes:
    
    - Updated Brazilian Portuguese translation
    
    Gabor Kelemen:
    
    - Updated Hungarian translation by Istvan Somlai. Fix up previous
      translation
    
    Jiro Matsuzawa:
    
    - Updated Japanese translation
    
    Joe Hansen:
    
    - Updated Danish translation
    
    Karl Ove Hufthammer:
    	Updated Norwegian Nynorsk translation.
    
    Lavanya gunasekaran:
          core: no more crash if we fail to write to the database.
    
    Marek Černocký:
          Updated Czech translation
    
    Matej Urbančič, Martin Srebotnjak:
    
    - Updated Slovenian translation
    
    Matilda Bernard:
    
    - Geo_country: added china countries.
    
    Mike Karfunkle:
    
    - Drawnumber activity; now the dots are in random orders each time we
      play this activity.
    
    OKANO Takayoshi:
    
    [ L10- N Update Japanese translation
    
    Piotr Drąg:
    
    - Updated POTFILES.in
    
    Praveen Arimbrathodiyil:
    
    - Gcompris Malayalam translations updated by gcompris Malayalam
    
    - Translation updates from Sadiq
    
    Shreya Menon:
    
    - Wordprocessor activity: added support for setting hyperlinks
    
    Sowmya Ravidas:
    
    - Money activity: the bonus lost is now displayed in case the children
      click ok and the answer it wrong.
    
    Yannis Kaskamanidis:
    
    - Updated Greek translation
    
    Мирослав Николић:
    
    - Updated Serbian translation
    
    Marco Menardi:
    
    - Italian voices: voice set has been cleaned (removed noises).
    
    Philip Morris:
    
    - English voices: Julia Wycherley sent us some updated voices.
    
    Gabor Kelemen:
    
    - New Hungarian intro sound files from Istvan Somlai
    
    Rūdolfs Mazurs
    
    - Added latvian translation
  • GCOMPRIS_12_01
    Bug fixes:
    
    - windows installer: fixed a potential directory erasing at uninstall
      or reinstall time. Properly erase all our files at unistallation
      time
    
    - windows: updated the compilation chain for windows to compile
      against GTK 2.24
    
    - desktop entry: Added the Education category
    
    - compilation: Added ifdefs to compile with gdkpixbuf > 2.24 by Hans
      de Goede
    
    - guessnumber: fixed a potential crash at exit time. Give focus on the
      entry box.
    
    - braille fun: added audio feedback.
    
    - braille alphabet: improved to audio play the letter to find
    
    - braille lotto: fixed not to go back to the main menu at the
      end. Improved it a little bit the layour to accomodate with longer
      translated text. Added sound effects.
    
    - shapegame: Fixed a random crash in shapegame activities that
      happened while dragging a piece. Minor, now clicking on the
      left/right image selector does not trig the ok check.
    
    - findit: Fixed to run on Windows 7
    
    - clockgame: the first levels now highlight the hour sectors to make
      them easier to recognize and to teach. (By Angelo Naselli)
    
    - instruments activity: added a check for sound availability in the
      icon menu. Now the background music is muted when
      entering this activity.
    
    - memory: minor fix in memory activity to fix their reference to their
      mandatory audio file.  Without this, a little audio error does
      appear at run time in the activity icon.
    
    Translations updates
    
    - Updated Estonian translation by Olle Niit
    - Updated Serbian translation by Мирослав Николић
  • GCOMPRIS_11_12
    21eb8518 · Release 11.12 ·
    RELEASE 11.12
    
    Improvements:
    
    - wordlist in Spanish: added more words to the spanish list. By
      Germana Oliveira.
    
    Bug fixes:
    
    - Updated French translation, there was a string with the text being
      there twice causing the gnumch activity to have the text over
      sized and unreadable.
    
    - By Hans de Goede <hdegoede@redhat.com>
      rsvg: fixed deprecated issue releated to rsvg.
      wordsgame: manage depracation of the  g_mutex_lock versus g_static_mutex_lock
      cleanup, replaced deprecated g_strcasecmp by g_ascii_strcasecmp
      wordsgame activity: fixed race conditions
    
    - minor: made bigger icons to avoid pixelized icon in desktop task switchers.
    
    - hangman: unsupported locale in GCompris was making this activity crash.
      fixes bug  https://bugzilla.gnome.org/show_bug.cgi?id=662576
    
    - core: now handle the 'C' locale as en_US
      Currently a 'C' locale was interpreted in GCompris by Catalan.
    
    Translations updates:
    
    - Updated Albanian translation by Abdulsalem Osmani
    - Fixed spelling mistake in Norwegian Nynorsk by Karl Ove Hufthammer
    - Updated Greek translation for gcompris by Yannis Kaskamanidis
    - Updated Slovenian translation by Matej Urbančič
    - Updated Czech translation by Marek Černocký
    - Updated German translation by Mario Blättermann
    - Updated Turkish translation by Muhammet Kara
    - Updated Spanish translation by Daniel Mustieles
    - Updated Spanish translation by Daniel Mustieles
    
  • GCOMPRIS_11_09
    Release 11.09
  • GCOMPRIS_9_6_1
    76c08b9a · RELEASE 9.6.1 ·
    GCOMPRIS 9.6.1
    
  • GCOMPRIS_9_6_0
    New features:
    
    - Added 2 new activities to learn to give money make in a shop. This
      is based on the money activity but now the children must give back
      money to Tux.
    - Now the erase activity reads the .jpg file in its data directory
      instead of being hardcoded. In the erase activity we have a large
      number of animal backgrounds. Now these are found at run time
      instead of being hard coded. Also the user can add its own images in
      the directory ~/My GCompris/erase.
      Added more animal images taken from wikipedia.
    - New renewable energy activity. Learn about electric dam, wind farm
      and solar panels works. This is heavily based on the watercycle
      activity.
    - In money activity, we no more auto check the answer, there is now an
      OK button Created 3 price categories in money activtiy to make the
      game more realistic.  As suggested by Arnaud Champollion, it is just
      too easy for the children.
    - improved the drawnumber activity to have its dataset taken from a
      file instead of hardcoded.  Now we have a text file named
      activity.txt that contains the images and points coordinate.
      converted .png files in .jpg in drawnumber activity to save disk
      space.
    
    Bug Fixes:
    
    - In the submarine activity, we now destroy and reset the frigate
      motion when we enter the help. Not doing so makes the children loose
      the game while reading the manual.
    - Added a reset button for the locale in the configuration dialog.
      It is now easier to get back on the default locale.
      Sorted the locales following their english name instead of the
      locale code
    - Deadlock occurs if new playback is scheduled from callback. Observed
      with sound-memory activity, while playing 'bonus'. In this fix, the
      sound is player in the gtk idle loop instead of being called
      directly (Fixed by Andreas Fenkart)
    - Major random crash fix. In python activity, a call to
      gcompris.skin.svg_get() was freeing the skin object but it should
      not. This resulted in random crashes at any point in GCompris when
      trying to read the skin svg_handle.
    - Fixed code to compile with the -Werror=unused-but-set-variable gcc
      new compilation flag.
    - Fixed invisible cursor on 64 bits systems. The propoerty struct is
      now properly initialized even on 64 bits systems. Fixed by Peter
      Ujfalusi.
    - Watercycle activity: Added toolips to explain the different
      items. Fixed a minor race issue. Added a bonus flower feedback in
      watercycle to let the children knows he completed the level. Thanks
      to Clara Coudoin for the feedback, it is great to have close beta
      testers.
    - Added missing image files for money activity.
    - Added missing activity files for drawnumber.
    - String updates, requested translation for paintings.
      As reported by Friedel Wolff:
      https://bugzilla.gnome.org/show_bug.cgi?id=636887
    - Cleanup, removed unused concept of activity board_dir This concept
      is no more use. Now we use the concept of a global package_data_dir
      found in the properties.
    
    Translations updates:
    
    - Added Montenegrin translation by Montenegro Consulting Company
      <savjetujme@gmail.com> by Montenegro Consulting Company
      <savjetujme@gmail.com>
    - Added Slovenian translation by Matej Urbančič <mateju@svn.gnome.org>
    - Much longer word list for Norwegian Nynorsk. by Karl Ove Hufthammer
      <karl@huftis.org>
    - New word list for Czech by Marek Černocký by Bruno Coudoin
      <bruno.coudoin@free.fr>
    - Updated Czech translation by Marek Cernocky by Petr Kovar
      <pknbe@volny.cz>
    - Updated Arabic translation by Khaled Hosny <khaledhosny@eglug.org>
    - Updated Brazilian Portuguese translation by Frederico Gonçalves
      Guimarães <frederico@teia.bio.br>
    - Updated Czech translation by Marek Černocký <marek@manet.cz>
    - Updated Danish translation by Joe Hansen <joedalton2@yahoo.dk>
    - Updated Esperanto translation by Kristjan SCHMIDT
      <kristjan.schmidt@googlemail.com>
    - Updated French translation by Claude Paroz <claude@2xlibre.net>
    - Updated Galician translations by Fran Diéguez
      <fran.dieguez@mabishu.com>
    - Updated Galician translations by Gonçalo Cordeiro
      <gzcordeiro@gmail.com>
    - Updated German translation by Christian Kirbach
      <Christian.Kirbach@googlemail.com>
    - Updated Greek translation by Yannis Kaskamanidis
      <kiolalis@gmail.com>
    - Updated Hungarian translation by Gabor Kelemen <kelemeng@gnome.hu>
    - Updated Norwegian Nynorsk translation (still some missing
      strings). by Karl Ove Hufthammer <karl@huftis.org>
    - Updated Slovenian translation by Andrej Žnidaršič
      <andrej.znidarsic@gmail.com>
    - Updated Spanish translation by Daniel Mustieles
      <daniel.mustieles@gmail.com>
    - Updated Spanish translation by Sylvia Sánchez <lailahfsf@gmail.com>
    - Updated Swedish translation by Daniel Nylander
      <po@danielnylander.se>
    - Updated Swedish translation by Daniel Nylander
      <po@danielnylander.se>
    - Updated Swedish translation by Daniel Nylander
      <po@danielnylander.se>
    - Updated Traditional Chinese translation(Hong Kong and Taiwan) by
      Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>
    - Updated asturian translation by Xandru Armesto
      <xandru@softastur.org>
    - Updated breton translation by Alan Monfort <alan.monfort@free.fr>
    - Updated translation and added new word list for Afrikaans (af) by
      Friedel Wolff <friedel@translate.org.za>
    - Updated German translation by Mario Blättermann <mariobl@gnome.org>
    - Updated Russian translation by Yuri Myasoedov <omerta13@yandex.ru>
    - New translation for Zulu by Priscilla Mahlangu <priny@translate.org.za>
  • GCOMPRIS_9_5_0
    8973a201 · Release 9.5 ·
    RELEASE 9.5 (2010/11/07)
    
    Minor packaging issue over 9.4 which is Dead On Arrival
    
    Major changes:
    
    - Fixed level 8 of babyshapes. The makefile was missing all the images
      for this level. I reworked the files so that they lie in the
      resource directory instead of subdirectories.
    
    - New hangman activity. Icon is a a modified one from Mathieu's icon
      set. The cute background is based on a drawing Franck Doucet made
      for our bargame activity.  This activity uses our
      default-<locale>.xml files to propose words to the children. It is
      thus very important now to have them properly filled. For now I did
      the work for English and French. Translators, please refer to this
      page for instructions: http://gcompris.net/wiki/Translation_addons
    
    - Added details activity by Marc Levivier.  In the spirit of famous
      painting discovery, in this activity the painting is complete and
      the children must put painting parts on the right places.
    
    - New feature in the chat activity. The user has a shared white boards
      now. This has been developped by Fionn Ziegler.
    
    - First release of an in progress tool that converts wiktionary xml
      dumps in an xml file. For now, it works only for French, this page
      tracks the progress: http://gcompris.net/wiki/Wiktionary_to_XML The
      idea behind this is to get an xml formatted dictionnary to create
      new activities in the reading / writing area. For now this is just
      not used in GCompris.
    
    - In planegame now the numbers are spoken when the plane hit the
      correct cloud.
    
    - Added missing configuration button in several activites where it
      makes sense. Now teachers / children can set force uppercase in
      click on letter, falling wards, falling letter, horizontal/vertical
      reading. Thanks to Luciana from sleducacional.org
    
    - Added missing level for photohunter by Marc Levivier
    
    - Added the option --disable-level. Some teacher want to be sure the
      children don't skip a level.
    
    - Now the click on letter activity can be played also with the keybord.
      This has been suggested by Sini Ruohomaa.
    
    - Fixed reference to tuxpaint dataset. Now we display saved tuxpaint
      images in our image selector again. Thanks to the person in
      Latinoware 2010 who reported me that this feature has been lost.
    
    - The configuration of the 'missing letter' activity was not working for UTF-8
      multibyte characters (https://bugzilla.gnome.org/show_bug.cgi?id=633978)
      Added a tooltip to better explain the different fields.
    
    - Refined the sudoku's level for scholl usage (By Sylvain Dechy).
    
    - Changed the difficulty level of the maze activity to make it more
      usable in classrooms. (By Sylvain Dechy)
    
    Minor fixes:
    
    - Fixed activity 'double entry' for level 3. References to voices were
      wrong, this level was not playable.
    
    - Fixed bug in which some buttons are no more displayed like in the
      help and the ok buttons in the dialogs (happens on Ubuntu 10.10) No
      more use my autocrop feature in goocanvas. It no more works for an
      unknown reason but it is not very useful, we can live without it. I
      ported GCompris to no more use it.
    
    - Added the command line option --nocursor (-C). As its name implies,
      GCompris won't show any visible cursor. This is very useful to touch
      screen users.
    
    - Added missing words list for Ukranian, Esperanto and Hebrew. There
      were not properly packaged (they need to be completed anyway).
    
    - Now hide the bar in shapegame activities when the focus is on the ok
      button we now show the title and info items. This let the children
      have a complete view of the painting.
    
    - Fixed gc_file_find_absolute() to better parse long and short locale.
      Now a 3 letter locale like 'ast' is supported. Added support for
      locale Fixed a startup issue. Our gc_file_find_absolute() was without
      '.'.
    
    - A few fixes to better manage locale especially in click_on_letter to
      properly display the locale to search if its not a 2 letter prefix
      like for asturian (locale=ast).
    
    - Replaced paintings considered not children proof by new one (By Marc
      Levivier).
    
    Minor changes:
    
    - Added -O2 flag instead of debug in our compilation chain by
      default. Without it we crashes on macosx EXC_ARITHMETIC in a g_malloc
      in sound init.
    
    - Removed the flying plane in the about dialog. This removes the
      need for an extra .png of our logo. Now we have our logo in the
      main window when we start it.
    
    - Integrated the gcompris and fsf logo in our skin.svg file Modified
      the code to use the logo from there.
    
    - Avoid compilation issue in debug mode in gnuchess.
    
    - Added basic instructions to compile GCompris on MacOSX.
    
    - Updated translation instructions for our word list xml files.
    
    - Fixed activation code. Was broken on windows.
    
    - Allow deprecated flag for gtk and gdk to compile again against gtk
      2.22
    
    - Added an explicit sound_close when we exit.  The patch comes from
      debian.
    
    - Added a toolitp in superbrain activity to make it easy to understand
      what a white or black square means.
    
    - Added the method gcompris.get_random_word(wordlist, level) on the
      python side.
    
    - Fixed references to african country for the voices to no more have
      them in a separate directory.
    
    - Added author information for each paintings by Marc Levivier.
    
    - Added the info tag in shape based activity. An info tag is exactly
      the same as a title tag except that is is displayed only when the
      level is completed and the mouse enters the OK button.
    
    - Improved documentation of the sound API documentation (python doc)
    
    - Support GNUCHESS environment variable Will be useful in 0install
      environment when GnuChess is installed from 0install feed.
    
    - Support GNUCAP environment variable Will be useful in 0install
      environment when GnuCap is installed from 0install feed.
    
    - Fix sqlite-less build by Aleksey Lim
    
    - Fixes bug#619433 in the chess game, we no more display the turn at
      game end.
    
    - Removed the help button in the administration where we don't have
      help.
    
    - Improved our shape based activities so that titles entries are
      raised when the focus enters the OK button. It allows the children to
      see the name of the painting even if it is displayed under it.
    
    - Improved the python template activity to have an hello world. For
      info, this page explains how to add an activity:
      http://gcompris.net/wiki/Adding_an_activity
    
    - Created a new script utility named createit.sh. It creates a new
      empty activity with the given name (only python activity).
    
    - Pass NULL as last goo_canvas_image_new's argument. May be fixes some
      crashes.
    
    - Fixed es.po, no more translate keywords in es.po
    
    - In shapegame activities, now the xml format does accept
      'targetfile=""' to remove the red dot.
    
    - Added the number of activities in the main menu view.
    
    - No more check for pysqlite2 unless installed python is 2.4
    
    - Fixed status bar call crashing in command line mode like for
      gcompris -l list.
    
    - README.translators updated to reflect new file organisation.
    
    - Added a message in GCompris itself when we fail to load the skin.
      Before, when the skin file was not found, which means GCompris is
      not properly installed or configured, there was an assert and
      nothing was explained to the user. Now there is a message in the
      GCompris window.
    
    - Now the 'createit.sh <my activity>' script used to create a new
      activity no more requires you to run make. You can just test your
      activity by calling it with 'runit.sh <my activity>'
    
    - Now the text color is black in the memory cards. In white it was
      hard to read.
    
    - Remade the background image of ball catch, paraglider, helicopter.
    
    Voices:
    
    - New voice set for Slovenian by Saša Batistič
    
    Translations:
    
    - Alan Monfort (br)
    - Aleksey Lim (es)
    - Andrej Žnidaršič (sl)
    - Bruno Brouard (fr)
    - Christian Kirbach (de)
    - Fran Diéguez (gl)
    - Frederico Goncalves Guimaraes (pt_BR)
    - Gabor Kelemen (hu)
    - Giannis Kaskamanidis (el)
    - Gonçalo Cordeiro (gl)
    - Inaki Larranaga Murgoitio (eu)
    - Joe Hansen (da)
    - Jorge González (es)
    - Karl Ove Hufthammer (nn)
    - Mantas Kriaučiūnas (lt)
    - Marek Černocký (cs)
    - Mario Blättermann (de)
    - Petr Kovar (cs)
    - Reuma Mordechai (he)
    - Xandru Armesto (ast)
    - Yannis Kaskamanidis (el)
    
    commit 528976bd7274aaa4227e2d5805a9fcb95dc27370
    Author: Bruno Coudoin <bruno.coudoin@free.fr>
    Date:   Sun Dec 5 23:23:57 2010 +0100
    
        Remove prepare-ChangeLog.pl, it does not support git.
    
    diff --git a/prepare-ChangeLog.pl b/prepare-ChangeLog.pl
    deleted file mode 100755
    index e1bc162..0000000
    --- a/prepare-ChangeLog.pl
    +++ /dev/null
    @@ -1,599 +0,0 @@
    -#!/usr/bin/perl -w
    -# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 2  -*-
    -
    -# Perl script to create a ChangeLog entry with names of files
    -# and functions from a cvs diff.
    -#
    -# Darin Adler <darin@eazel.com>, started 20 April 2000
    -# Java support added by Maciej Stachowiak <mjs@eazel.com>
    -# last updated 28 December 2000
    -#
    -# (Someone put a license in here, like maybe GPL.)
    -#
    -# TODO:
    -#   Provide option to put new ChangeLog into a separate file
    -#     instead of editing the ChangeLog.
    -#   For new files, just say "New file" instead of listing
    -#     function names.
    -#   List functions that have been removed too.
    -#   Decide what a good logical order is for the changed files
    -#     other than a normal text "sort" (top level first?)
    -#     (group directories?) (.h before .c?)
    -#   Leave a diff file behind if asked, but in unified format.
    -#   Handle C++ and yacc source files too (other languages?).
    -#   Help merge when there are ChangeLog conflicts or if there's
    -#     already a partly written ChangeLog entry.
    -#   Find appropriate ChangeLog to edit for each changed file
    -#     instead of always using ChangeLog in current directory.
    -#   Add command line option to put the ChangeLog into a separate
    -#     file or just spew it out stdout.
    -#   Figure out how to allow -z options from .cvsrc to work without
    -#     letting other bad options work. Currently the -f disables
    -#     everything from the .cvsrc.
    -#   Add CVS version numbers for each file too (can't do that until
    -#     the changes are checked in, though).
    -#   Work around diff stupidity where deleting a function that starts
    -#     with a comment makes diff think that the following function
    -#     has been changed (if the following function starts with a comment
    -#     with the same first line, such as /**)
    -#   Work around diff stupidity where deleting an entire function and
    -#     the blank lines before it makes diff think you've changed the
    -#     previous function.
    -
    -use diagnostics;
    -use strict;
    -
    -use English;
    -use Text::Wrap;
    -
    -# Check for cvs or svn system
    -my $command;
    -if (-e "CVS/Root")
    -  {
    -    $command = "cvs";
    -  }
    -elsif (-e ".svn/text-base/README.svn-base")
    -  {
    -    $command = "svn";
    -  }
    -else
    -  {
    -    die "There is not known revision system.\n"
    -  }
    -
    -# Read the old change log file.
    -# It's less efficient to read the whole thing into memory than it would be
    -# to read it while we prepend to it later, but I like doing this part first.
    -if ($command eq "cvs")
    -  {
    -     print STDERR "  Updating ChangeLog from cvs repository.\n";
    -     open ERRORS, "cvs update ChangeLog |" or die "The cvs update of ChangeLog failed: $OS_ERROR.\n";
    -  }
    -else
    -  {
    -     print STDERR "  Updating ChangeLog from svn repository.\n";
    -     open ERRORS, "svn update ChangeLog |" or die "The cvs update of ChangeLog failed: $OS_ERROR.\n";
    -  }
    -print STDERR "    $ARG" while <ERRORS>;
    -close ERRORS;
    -open OLD_CHANGE_LOG, "ChangeLog" or die "Could not open ChangeLog file: $OS_ERROR.\n";
    -my @old_change_log = <OLD_CHANGE_LOG>;
    -close OLD_CHANGE_LOG;
    -
    -# For each file, build a list of modified lines.
    -# Use line numbers from the "after" side of each diff.
    -my %changed_line_ranges;
    -my $file;
    -if ($command eq "cvs")
    -  {
    -    print STDERR "  Running cvs diff to find changes.\n";
    -    open DIFF, "cvs -fq diff -N |" or die "The cvs diff failed: $OS_ERROR.\n";
    -  }
    -else
    -  {
    -    print STDERR "  Running svn diff to find changes.\n";
    -    open DIFF, "svn --non-interactive diff --diff-cmd diff -x \"-b\" |" or die "The cvs diff failed: $OS_ERROR.\n";
    -  }
    -
    -while (<DIFF>)
    -  {
    -    $file = $1 if /^Index: (\S+)$/;
    -    if (defined $file
    -        and $file ne "ChangeLog"
    -        and (/^\d+(,\d+)?[acd](\d+)(,(\d+))?/ or /^Binary files/) )
    -      {
    -        push @{$changed_line_ranges{$file}}, [ $2, $4 || $2 ];
    -      }
    -  }
    -close DIFF;
    -if (!%changed_line_ranges)
    -  {
    -    print STDERR "  No changes found.\n";
    -    exit;
    -  }
    -
    -# For each ".c" file, convert line range to function list.
    -print STDERR "  Extracting affected function names from C source files.\n";
    -my %function_lists;
    -foreach my $file (keys %changed_line_ranges)
    -  {
    -    # An empty function list still indicates that something changed.
    -    $function_lists{$file} = "";
    -
    -    # Only look for function names in .c files.
    -    next unless $file =~ /\.(c|java|cs)/;
    -
    -    # Find all the functions in the file.
    -    open SOURCE, $file or next;
    -    my @function_ranges = get_function_line_ranges(\*SOURCE, $file);
    -    close SOURCE;
    -
    -    # Find all the modified functions.
    -    my @functions;
    -    my %saw_function;
    -    my @change_ranges = (@{$changed_line_ranges{$file}}, []);
    -    my @change_range = (0, 0);
    -    FUNCTION: foreach my $function_range_ref (@function_ranges)
    -      {
    -        my @function_range = @$function_range_ref;
    -
    -        # Advance to successive change ranges.
    -        for (;; @change_range = @{shift @change_ranges})
    -          {
    -            last FUNCTION unless @change_range;
    -
    -            # If past this function, move on to the next one.
    -            next FUNCTION if $change_range[0] > $function_range[1];
    -
    -            # If an overlap with this function range, record the function name.
    -            if ($change_range[1] >= $function_range[0]
    -                and $change_range[0] <= $function_range[1])
    -              {
    -                if (!$saw_function{$function_range[2]})
    -                  {
    -                    $saw_function{$function_range[2]} = 1;
    -                    push @functions, $function_range[2];
    -                  }
    -                next FUNCTION;
    -              }
    -          }
    -      }
    -
    -    # Format the list of functions now.
    -    $function_lists{$file} = " (" . join("), (", @functions) . "):" if @functions;
    -  }
    -
    -# Write out a new ChangeLog file.
    -print STDERR "  Editing the ChangeLog file.\n";
    -my $date = sprintf "%d-%02d-%02d",
    -  1900 + (localtime $BASETIME)[5], # year
    -  1 + (localtime $BASETIME)[4], # month
    -  (localtime $BASETIME)[3]; # day within month
    -my $name = $ENV{CHANGE_LOG_NAME}
    -  || $ENV{REAL_NAME}
    -  || (getpwuid $REAL_USER_ID)[6]
    -  || "set REAL_NAME environment variable";
    -my $email_address = $ENV{CHANGE_LOG_EMAIL_ADDRESS}
    -  || $ENV{EMAIL_ADDRESS}
    -  || "set EMAIL_ADDRESS environment variable";
    -open CHANGE_LOG, "> ChangeLog" or die "Could not write ChangeLog\n.";
    -print CHANGE_LOG "$date  $name  <$email_address>\n\n";
    -print CHANGE_LOG "\treviewed by: <delete if not using a buddy>\n\n";
    -foreach my $file (sort keys %function_lists)
    -  {
    -    my $lines = wrap("\t", "\t", "XX$file:$function_lists{$file}");
    -    $lines =~ s/^\tXX/\t* /;
    -    print CHANGE_LOG "$lines\n";
    -  }
    -print CHANGE_LOG "\n", @old_change_log;
    -close CHANGE_LOG;
    -
    -# Done.
    -print STDERR "  Done editing ChangeLog.\n";
    -exit;
    -
    -
    -
    -sub get_function_line_ranges
    -  {
    -    my ($file_handle, $file_name) = @_;
    -
    -    if ($file_name =~ /\.c$/) {
    -        return get_function_line_ranges_for_c ($file_handle, $file_name);
    -    } elsif ($file_name =~ /\.java$/) {
    -        return get_function_line_ranges_for_java ($file_handle, $file_name);
    -    } elsif ($file_name =~ /\.cs$/) {
    -	#FIXME write a function to extract from .cs files
    -        return get_function_line_ranges_for_java ($file_handle, $file_name);
    -    }
    -    return ();
    -  }
    -
    -# Read a file and get all the line ranges of the things that look like C functions.
    -# A function name is the last word before an open parenthesis before the outer
    -# level open brace. A function starts at the first character after the last close
    -# brace or semicolon before the function name and ends at the close brace.
    -# Comment handling is simple-minded but will work for all but pathological cases.
    -#
    -# Result is a list of triples: [ start_line, end_line, function_name ].
    -
    -sub get_function_line_ranges_for_c
    -  {
    -    my ($file_handle, $file_name) = @_;
    -
    -    my @ranges;
    -
    -    my $in_comment = 0;
    -    my $in_macro = 0;
    -    my $in_parentheses = 0;
    -    my $in_braces = 0;
    -
    -    my $word = "";
    -
    -    my $potential_start = 0;
    -    my $potential_name = "";
    -
    -    my $start = 0;
    -    my $name = "";
    -
    -    while (<$file_handle>)
    -      {
    -        # Handle continued multi-line comment.
    -        if ($in_comment)
    -          {
    -            next unless s-.*\*/--;
    -            $in_comment = 0;
    -          }
    -
    -        # Handle continued macro.
    -        if ($in_macro)
    -          {
    -            $in_macro = 0 unless /\\$/;
    -            next;
    -          }
    -
    -        # Handle start of macro (or any preprocessor directive).
    -        if (/^\s*\#/)
    -          {
    -            $in_macro = 1 if /^([^\\]|\\.)*\\$/;
    -            next;
    -          }
    -
    -        # Handle comments and quoted text.
    -        while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy
    -          {
    -            my $match = $1;
    -            if ($match eq "/*")
    -              {
    -                if (!s-/\*.*?\*/--)
    -                  {
    -                    s-/\*.*--;
    -                    $in_comment = 1;
    -                  }
    -              }
    -            elsif ($match eq "//")
    -              {
    -                s-//.*--;
    -              }
    -            else # ' or "
    -              {
    -                if (!s-$match([^\\]|\\.)*?$match--)
    -                  {
    -                    warn "mismatched quotes at line $INPUT_LINE_NUMBER in $file_name\n";
    -                    s-$match.*--;
    -                  }
    -              }
    -          }
    -
    -        # Find function names.
    -        while (m-(\w+|[(){};])-g)
    -          {
    -            # Open parenthesis.
    -            if ($1 eq "(")
    -              {
    -                $potential_name = $word unless $in_parentheses;
    -                $in_parentheses++;
    -                next;
    -              }
    -
    -            # Close parenthesis.
    -            if ($1 eq ")")
    -              {
    -                $in_parentheses--;
    -                next;
    -              }
    -
    -            # Open brace.
    -            if ($1 eq "{")
    -              {
    -                # Promote potiential name to real function name at the
    -                # start of the outer level set of braces (function body?).
    -                if (!$in_braces and $potential_start)
    -                  {
    -                    $start = $potential_start;
    -                    $name = $potential_name;
    -                  }
    -
    -                $in_braces++;
    -                next;
    -              }
    -
    -            # Close brace.
    -            if ($1 eq "}")
    -              {
    -                $in_braces--;
    -
    -                # End of an outer level set of braces.
    -                # This could be a function body.
    -                if (!$in_braces and $name)
    -                  {
    -                    push @ranges, [ $start, $INPUT_LINE_NUMBER, $name ];
    -                    $name = "";
    -                  }
    -
    -                $potential_start = 0;
    -                $potential_name = "";
    -                next;
    -              }
    -
    -            # Semicolon.
    -            if ($1 eq ";")
    -              {
    -                $potential_start = 0;
    -                $potential_name = "";
    -                next;
    -              }
    -
    -            # Word.
    -            $word = $1;
    -            if (!$in_parentheses)
    -              {
    -                $potential_start = 0;
    -                $potential_name = "";
    -              }
    -            if (!$potential_start)
    -              {
    -                $potential_start = $INPUT_LINE_NUMBER;
    -                $potential_name = "";
    -              }
    -          }
    -      }
    -
    -    warn "mismatched braces in $file_name\n" if $in_braces;
    -    warn "mismatched parentheses in $file_name\n" if $in_parentheses;
    -
    -    return @ranges;
    -  }
    -
    -
    -
    -# Read a file and get all the line ranges of the things that look like Java
    -# classes, interfaces and methods.
    -#
    -# A class or interface name is the word that immediately follows
    -# `class' or `interface' when followed by an open curly brace and not
    -# a semicolon. It can appear at the top level, or inside another class
    -# or interface block, but not inside a function block
    -#
    -# A class or interface starts at the first character after the first close
    -# brace or after the function name and ends at the close brace.
    -#
    -# A function name is the last word before an open parenthesis before
    -# an open brace rather than a semicolon. It can appear at top level or
    -# inside a class or interface block, but not inside a function block.
    -#
    -# A function starts at the first character after the first close
    -# brace or after the function name and ends at the close brace.
    -#
    -# Comment handling is simple-minded but will work for all but pathological cases.
    -#
    -# Result is a list of triples: [ start_line, end_line, function_name ].
    -
    -sub get_function_line_ranges_for_java
    -  {
    -    my ($file_handle, $file_name) = @_;
    -
    -    my @current_scopes;
    -
    -    my @ranges;
    -
    -    my $in_comment = 0;
    -    my $in_macro = 0;
    -    my $in_parentheses = 0;
    -    my $in_braces = 0;
    -    my $in_non_block_braces = 0;
    -    my $class_or_interface_just_seen = 0;
    -
    -    my $word = "";
    -
    -    my $potential_start = 0;
    -    my $potential_name = "";
    -    my $potential_name_is_class_or_interface = 0;
    -
    -    my $start = 0;
    -    my $name = "";
    -    my $current_name_is_class_or_interface = 0;
    -
    -    while (<$file_handle>)
    -      {
    -        # Handle continued multi-line comment.
    -        if ($in_comment)
    -          {
    -            next unless s-.*\*/--;
    -            $in_comment = 0;
    -          }
    -
    -        # Handle continued macro.
    -        if ($in_macro)
    -          {
    -            $in_macro = 0 unless /\\$/;
    -            next;
    -          }
    -
    -        # Handle start of macro (or any preprocessor directive).
    -        if (/^\s*\#/)
    -          {
    -            $in_macro = 1 if /^([^\\]|\\.)*\\$/;
    -            next;
    -          }
    -
    -        # Handle comments and quoted text.
    -        while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy
    -          {
    -            my $match = $1;
    -            if ($match eq "/*")
    -              {
    -                if (!s-/\*.*?\*/--)
    -                  {
    -                    s-/\*.*--;
    -                    $in_comment = 1;
    -                  }
    -              }
    -            elsif ($match eq "//")
    -              {
    -                s-//.*--;
    -              }
    -            else # ' or "
    -              {
    -                if (!s-$match([^\\]|\\.)*?$match--)
    -                  {
    -                    warn "mismatched quotes at line $INPUT_LINE_NUMBER in $file_name\n";
    -                    s-$match.*--;
    -                  }
    -              }
    -          }
    -
    -        # Find function names.
    -        while (m-(\w+|[(){};])-g)
    -          {
    -            # Open parenthesis.
    -            if ($1 eq "(")
    -              {
    -                if (!$in_parentheses) {
    -                    $potential_name = $word;
    -                    $potential_name_is_class_or_interface = 0;
    -                }
    -                $in_parentheses++;
    -                next;
    -              }
    -
    -            # Close parenthesis.
    -            if ($1 eq ")")
    -              {
    -                $in_parentheses--;
    -                next;
    -              }
    -
    -            # Open brace.
    -            if ($1 eq "{")
    -              {
    -                # Promote potiential name to real function name at the
    -                # start of the outer level set of braces (function/class/interface body?).
    -                if (!$in_non_block_braces
    -                    and (!$in_braces or $current_name_is_class_or_interface)
    -                    and $potential_start)
    -                  {
    -                    if ($name)
    -                      {
    -                          push @ranges, [ $start, ($INPUT_LINE_NUMBER - 1),
    -                                          join ('.', @current_scopes) ];
    -                      }
    -
    -
    -                    $current_name_is_class_or_interface = $potential_name_is_class_or_interface;
    -
    -                    $start = $potential_start;
    -                    $name = $potential_name;
    -
    -                    push (@current_scopes, $name);
    -                  } else {
    -                      $in_non_block_braces++;
    -                  }
    -
    -                $potential_name = "";
    -                $potential_start = 0;
    -
    -                $in_braces++;
    -                next;
    -              }
    -
    -            # Close brace.
    -            if ($1 eq "}")
    -              {
    -                $in_braces--;
    -
    -                # End of an outer level set of braces.
    -                # This could be a function body.
    -                if (!$in_non_block_braces)
    -                  {
    -                    if ($name)
    -                      {
    -                        push @ranges, [ $start, $INPUT_LINE_NUMBER,
    -                                        join ('.', @current_scopes) ];
    -
    -                        pop (@current_scopes);
    -
    -                        if (@current_scopes)
    -                          {
    -                            $current_name_is_class_or_interface = 1;
    -
    -                            $start = $INPUT_LINE_NUMBER + 1;
    -                            $name =  $current_scopes[$#current_scopes-1];
    -                          }
    -                        else
    -                          {
    -                            $current_name_is_class_or_interface = 0;
    -                            $start = 0;
    -                            $name =  "";
    -                          }
    -                    }
    -                  }
    -                else
    -                  {
    -                    $in_non_block_braces-- if $in_non_block_braces;
    -                  }
    -
    -                $potential_start = 0;
    -                $potential_name = "";
    -                next;
    -              }
    -
    -            # Semicolon.
    -            if ($1 eq ";")
    -              {
    -                $potential_start = 0;
    -                $potential_name = "";
    -                next;
    -              }
    -
    -            if ($1 eq "class" or $1 eq "interface") {
    -                $class_or_interface_just_seen = 1;
    -                next;
    -            }
    -
    -            # Word.
    -            $word = $1;
    -            if (!$in_parentheses)
    -              {
    -                if ($class_or_interface_just_seen) {
    -                    $potential_name = $word;
    -                    $potential_start = $INPUT_LINE_NUMBER;
    -                    $class_or_interface_just_seen = 0;
    -                    $potential_name_is_class_or_interface = 1;
    -                    next;
    -                }
    -              }
    -            if (!$potential_start)
    -              {
    -                $potential_start = $INPUT_LINE_NUMBER;
    -                $potential_name = "";
    -              }
    -            $class_or_interface_just_seen = 0;
    -          }
    -      }
    -
    -    warn "mismatched braces in $file_name\n" if $in_braces;
    -    warn "mismatched parentheses in $file_name\n" if $in_parentheses;
    -
    -    return @ranges;
    -  }
    
  • GCOMPRIS_9_4_0
    RELEASE 9.4 (2010/11/06)
    
    Major changes:
    
    - Fixed level 8 of babyshapes. The makefile was missing all the images
      for this level. I reworked the files so that they lie in the
      resource directory instead of subdirectories.
    
    - New hangman activity. Icon is a a modified one from Mathieu's icon
      set. The cute background is based on a drawing Franck Doucet made
      for our bargame activity.  This activity uses our
      default-<locale>.xml files to propose words to the children. It is
      thus very important now to have them properly filled. For now I did
      the work for English and French. Translators, please refer to this
      page for instructions: http://gcompris.net/wiki/Translation_addons
    
    - Added details activity by Marc Levivier.  In the spirit of famous
      painting discovery, in this activity the painting is complete and
      the children must put painting parts on the right places.
    
    - New feature in the chat activity. The user has a shared white boards
      now. This has been developped by Fionn Ziegler.
    
    - First release of an in progress tool that converts wiktionary xml
      dumps in an xml file. For now, it works only for French, this page
      tracks the progress: http://gcompris.net/wiki/Wiktionary_to_XML The
      idea behind this is to get an xml formatted dictionnary to create
      new activities in the reading / writing area. For now this is just
      not used in GCompris.
    
    - In planegame now the numbers are spoken when the plane hit the
      correct cloud.
    
    - Added missing configuration button in several activites where it
      makes sense. Now teachers / children can set force uppercase in
      click on letter, falling wards, falling letter, horizontal/vertical
      reading. Thanks to Luciana from sleducacional.org
    
    - Added missing level for photohunter by Marc Levivier
    
    - Added the option --disable-level. Some teacher want to be sure the
      children don't skip a level.
    
    - Now the click on letter activity can be played also with the keybord.
      This has been suggested by Sini Ruohomaa.
    
    - Fixed reference to tuxpaint dataset. Now we display saved tuxpaint
      images in our image selector again. Thanks to the person in
      Latinoware 2010 who reported me that this feature has been lost.
    
    - The configuration of the 'missing letter' activity was not working for UTF-8
      multibyte characters (https://bugzilla.gnome.org/show_bug.cgi?id=633978)
      Added a tooltip to better explain the different fields.
    
    - Refined the sudoku's level for scholl usage (By Sylvain Dechy).
    
    - Changed the difficulty level of the maze activity to make it more
      usable in classrooms. (By Sylvain Dechy)
    
    Minor fixes:
    
    - Fixed activity 'double entry' for level 3. References to voices were
      wrong, this level was not playable.
    
    - Fixed bug in which some buttons are no more displayed like in the
      help and the ok buttons in the dialogs (happens on Ubuntu 10.10) No
      more use my autocrop feature in goocanvas. It no more works for an
      unknown reason but it is not very useful, we can live without it. I
      ported GCompris to no more use it.
    
    - Added the command line option --nocursor (-C). As its name implies,
      GCompris won't show any visible cursor. This is very useful to touch
      screen users.
    
    - Added missing words list for Ukranian, Esperanto and Hebrew. There
      were not properly packaged (they need to be completed anyway).
    
    - Now hide the bar in shapegame activities when the focus is on the ok
      button we now show the title and info items. This let the children
      have a complete view of the painting.
    
    - Fixed gc_file_find_absolute() to better parse long and short locale.
      Now a 3 letter locale like 'ast' is supported. Added support for
      locale Fixed a startup issue. Our gc_file_find_absolute() was without
      '.'.
    
    - A few fixes to better manage locale especially in click_on_letter to
      properly display the locale to search if its not a 2 letter prefix
      like for asturian (locale=ast).
    
    - Replaced paintings considered not children proof by new one (By Marc
      Levivier).
    
    Minor changes:
    
    - Added -O2 flag instead of debug in our compilation chain by
      default. Without it we crashes on macosx EXC_ARITHMETIC in a g_malloc
      in sound init.
    
    - Removed the flying plane in the about dialog. This removes the
      need for an extra .png of our logo. Now we have our logo in the
      main window when we start it.
    
    - Integrated the gcompris and fsf logo in our skin.svg file Modified
      the code to use the logo from there.
    
    - Avoid compilation issue in debug mode in gnuchess.
    
    - Added basic instructions to compile GCompris on MacOSX.
    
    - Updated translation instructions for our word list xml files.
    
    - Fixed activation code. Was broken on windows.
    
    - Allow deprecated flag for gtk and gdk to compile again against gtk
      2.22
    
    - Added an explicit sound_close when we exit.  The patch comes from
      debian.
    
    - Added a toolitp in superbrain activity to make it easy to understand
      what a white or black square means.
    
    - Added the method gcompris.get_random_word(wordlist, level) on the
      python side.
    
    - Fixed references to african country for the voices to no more have
      them in a separate directory.
    
    - Added author information for each paintings by Marc Levivier.
    
    - Added the info tag in shape based activity. An info tag is exactly
      the same as a title tag except that is is displayed only when the
      level is completed and the mouse enters the OK button.
    
    - Improved documentation of the sound API documentation (python doc)
    
    - Support GNUCHESS environment variable Will be useful in 0install
      environment when GnuChess is installed from 0install feed.
    
    - Support GNUCAP environment variable Will be useful in 0install
      environment when GnuCap is installed from 0install feed.
    
    - Fix sqlite-less build by Aleksey Lim
    
    - Fixes bug#619433 in the chess game, we no more display the turn at
      game end.
    
    - Removed the help button in the administration where we don't have
      help.
    
    - Improved our shape based activities so that titles entries are
      raised when the focus enters the OK button. It allows the children to
      see the name of the painting even if it is displayed under it.
    
    - Improved the python template activity to have an hello world. For
      info, this page explains how to add an activity:
      http://gcompris.net/wiki/Adding_an_activity
    
    - Created a new script utility named createit.sh. It creates a new
      empty activity with the given name (only python activity).
    
    - Pass NULL as last goo_canvas_image_new's argument. May be fixes some
      crashes.
    
    - Fixed es.po, no more translate keywords in es.po
    
    - In shapegame activities, now the xml format does accept
      'targetfile=""' to remove the red dot.
    
    - Added the number of activities in the main menu view.
    
    - No more check for pysqlite2 unless installed python is 2.4
    
    - Fixed status bar call crashing in command line mode like for
      gcompris -l list.
    
    - README.translators updated to reflect new file organisation.
    
    - Added a message in GCompris itself when we fail to load the skin.
      Before, when the skin file was not found, which means GCompris is
      not properly installed or configured, there was an assert and
      nothing was explained to the user. Now there is a message in the
      GCompris window.
    
    - Now the 'createit.sh <my activity>' script used to create a new
      activity no more requires you to run make. You can just test your
      activity by calling it with 'runit.sh <my activity>'
    
    - Now the text color is black in the memory cards. In white it was
      hard to read.
    
    - Remade the background image of ball catch, paraglider, helicopter.
    
    Voices:
    
    - New voice set for Slovenian by Saša Batistič
    
    Translations:
    
    - Alan Monfort (br)
    - Aleksey Lim (es)
    - Andrej Žnidaršič (sl)
    - Bruno Brouard (fr)
    - Christian Kirbach (de)
    - Fran Diéguez (gl)
    - Frederico Goncalves Guimaraes (pt_BR)
    - Gabor Kelemen (hu)
    - Giannis Kaskamanidis (el)
    - Gonçalo Cordeiro (gl)
    - Inaki Larranaga Murgoitio (eu)
    - Joe Hansen (da)
    - Jorge González (es)
    - Karl Ove Hufthammer (nn)
    - Mantas Kriaučiūnas (lt)
    - Marek Černocký (cs)
    - Mario Blättermann (de)
    - Petr Kovar (cs)
    - Reuma Mordechai (he)
    - Xandru Armesto (ast)
    - Yannis Kaskamanidis (el)
  • GCOMPRIS_9_2_0
    New feature:
    - Created a new U.S.A map for our geography activity
    - Completed the Windows port.
      Now use the cute GCompris cursor.
      Fixed SDL audio backend
    
    Fixed bugs:
    - Fixed geography activities. Many dot where missing,
      hidden by the background.
    - Fixed drawn case in the chess activity, it was ending in an
      infinite loop.
    - Improved a little bit the layout in the penalty activity.
    - Replaced the yellow by white the text color of the score.
    - Now the text dialog is centered in the height.
    - Added an API entry to get the current cursor. This allow
      the help dialog to get the previous cursor, set the default
      one and change again to the caller one in the end.
    - In erase activity, the sponge cursor is setback when
      exiting the pause state. This allow the about box to set the
      default cursor which is more suitable.
    - In the menu, the display of the description is now centered.
      Minor change, better layout.
    - In python, now import sqlite3 intead of pysqlite2 For
      backyard compatibility, there is a fallback to sill import
      pysqlite2.
    - Added a missing background to the simple color activity It is
      based on the artwork of Mathieu Ignacio (from the target
      activity.)
    - Fixed algebra activity to report the level properly.
    - Better error checking in case the datadase cannot be loaded
      or created.  Before that patch, a failure was exiting the
      startup sequence without warning the user Now, in case we
      cannot load the database of cannot created it we follow the
      procedure:
      - move the database under the name gcompris_db.broken
      - recreate it from scratch
      - we failed again, fallback in no database mode.
    
    Translation:
    - Updated Arabic translation by Khaled Hosny
    - Updated Greek translation by Yannis Kaskamanidis
    - Updated Greek translation by Yannis Kaskamanidis
    - Updated Hungarian translation updated by Gabor Kelemen
    - Updated Portuguese Brasilian translation by Frederico Goncalves Guimaraes
    - Updated Russian translation by Андрей Черепанов
    - Updated Swedish translation by Daniel Nylander
  • GCOMPRIS_9_1_0
    GCompris Release 9.1:
    
    In short, this release is a bug fix release of the 9.0. It is mandatory
    for all packager to use this one due to the large number of problems we
    fixed.
    
    You get the tarball at the usual place on Sourceforge:
    http://sourceforge.net/projects/gcompris/files/
    490cc6ee81847e4441a878dc6e16f301  gcompris-9.1.tar.gz
    
    If you prefer, on the git side, this comes from the 'gcomprixogoo'
    branch.
    
    If full, the change log is:
    
    Core fixes:
    - Added support of Sugar look&feel by Aleksey Lim
    - Now the group menus are ordered based on an embedded difficulty
      level so that they appear in the same order.
    - Fixes to compile with GTK 2.19 by Johan Cwiklinski
    - Removed unused import rsvg in watercycle and penalty.
      PACKAGERS: This mean we no more need on python-rsvg.
    
    Activity fixes:
    
    - scale
      Added a sign on the scale
      The scale activity is sometimes annoying because you cannot easiliy
      see which side the scale goes. I added a sign < > or = on it to ease
      the task.
    
    - photo hunter
      Major rework of he photo hunter activity that can now detect the
      image difference automagically. This makes it easy to contribute new
      data set to this activity, just provide it 2 images having some
      differences. BTW, I added some more content to it.
      Photo hunter has been fixed to work in full screen and now has an
      explanation string when started
    
    - erase
      Fixed events on the canvas that where not taken in account.
      Now clicking beside the fish does speed them like it was before.
    
    - reversecount
      Fixed reversecount, it was not restarting on loose case.
      Now when the children loose he restarts the same level.
    
    - follow line
      Adapted the follow line to work on touch screen.
      This was reported by Ronny Standtke.
      Now not only the motion events are catched but also click events.
    
    - animation activity
      Added tooltip in the animation activity.
    
    - smallnumber
      Fixed a crash case in smallnumber activity.
      This has also been improved to avoid overlaps of dices.
      Fixed smallnumber2 activity regarding dice pair not close enough.
    
    - electricity
      Fixed electricity activity, image was referenced badly.
    
    - geography
      Added translation on tooltips in the geography activity.
    
    - missingletter
      Fixed missingletter crash uppon changing its locale.
    
    - erase double click
      Reintroduced the erase double click activity.
    
    - memory word number
      Fixed memory word number activity. It was broken related to
      translations.
    
    - smallnumber
      No more display the sublevel 11/10.
    
    - ball catch
      Added the manual in the first start of ballcatch.
    
    - traffic
      Simplified level for traffic.
      A contribution from a French teacher Sylvain Dechy who teaches in
      Hérimoncourt. This introduces a set of simplified level in the traffic
      activity best suited for children.
    
    - tuxpaint
      Fixed tuxpaint activity. Was completely broken.
    
    - memory sound
      Now in memory_sound activity the intro is heard.
    
    - melody
      Added an OK button to start the melody activity.
      This avoids the intro voice to be skipped.
    
    Translation updates:
    - Updated Ukrainian translation by Ivan Onyshchuk
    - Updated French translation by Bruno Coudoin
    - Updated Hungarian translation by Gabor Kelemen
    - Updated Czech translation by Marek Černocký
    - Updated Simplified Chinese translation by Ray Wang
    - Updated Arabic translation by Khaled Hosny
    - Updated Afrikaans translation by  Friedel Wolff
    - Updated Portuguese translation by  Duarte Loreto
    - Updated Czech translation by Marek Cernocky
    - Updated Bulgarian translation by Alexander Shopov
    - Updated Brazilian Portuguese by Frederico Goncalves Guimaraes
    
    Voice pack:
    - Several voices where not played due to name mismatch
    - Added a new voice set by for Chinese by Feng Jie.
  • git-migration-voices
    	Rerecoded Somalian costa_rica.ogg by Mohamed I. Mursal
    	* voices/so/geography/costa_rica.ogg
    	* boards/voices/pa/*: Voices created by Ankit Sahai
    
    svn path=/tags/git-migration-voices/; revision=3616
  • R_8_4_7
    5dee29fc · release 8.4.7 ·
    release 8.4.7
    
    svn path=/trunk/; revision=3561
  • git-migration-vendor
    Clenaup, Stupidly imported generated files
    
    svn path=/tags/git-migration-vendor/; revision=2669
  • R_7_0_PRE1
  • WIN-6_5_3