Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYves Combe <ycombe@src.gnome.org>2006-10-25 20:04:13 (GMT)
committer Yves Combe <ycombe@src.gnome.org>2006-10-25 20:04:13 (GMT)
commite90959a0334333c1615c6b308a4f74bded67f6da (patch)
tree1756555483dc90801e49ef52bd6ca9fb15dc19ef
parent3ba73731337d58b107045b7c7c62bed728a082db (diff)
Reapply patch for mingw cross-compile suppressed from head.
-rw-r--r--ChangeLog72
-rw-r--r--Makefile.am14
-rw-r--r--Makefile.mingw.in6
-rw-r--r--acinclude.m423
-rw-r--r--configure.in110
-rwxr-xr-xcross-configure.sh46
-rw-r--r--gcompris-installer.nsi.in48
-rw-r--r--po/ChangeLog4
-rw-r--r--po/fi.po850
-rw-r--r--src/boards/Makefile.am100
-rw-r--r--src/boards/advanced_colors.c8
-rw-r--r--src/boards/algebra.c6
-rw-r--r--src/boards/algebra_guesscount.c6
-rw-r--r--src/boards/awele.c14
-rw-r--r--src/boards/awele_alphaBeta.c2
-rw-r--r--src/boards/awele_utils.c2
-rw-r--r--src/boards/click_on_letter.c6
-rw-r--r--src/boards/clickgame.c6
-rw-r--r--src/boards/clockgame.c10
-rw-r--r--src/boards/colors.c6
-rw-r--r--src/boards/crane.c4
-rw-r--r--src/boards/enumerate.c6
-rw-r--r--src/boards/erase.c4
-rw-r--r--src/boards/fifteen.c5
-rw-r--r--src/boards/gletters.c4
-rw-r--r--src/boards/gtans.c8
-rw-r--r--src/boards/gtans_support.c13
-rw-r--r--src/boards/hanoi.c8
-rw-r--r--src/boards/imageid.c2
-rw-r--r--src/boards/leftright.c2
-rw-r--r--src/boards/machpuzzle.c2
-rw-r--r--src/boards/magic_hat.c8
-rw-r--r--src/boards/maze.c8
-rw-r--r--src/boards/memory.c10
-rw-r--r--src/boards/missingletter.c2
-rw-r--r--src/boards/money.c8
-rw-r--r--src/boards/paratrooper.c6
-rw-r--r--src/boards/planegame.c6
-rw-r--r--src/boards/py-mod-gcompris.c4
-rw-r--r--src/boards/railroad.c4
-rw-r--r--src/boards/read_colors.c6
-rw-r--r--src/boards/reading.c6
-rw-r--r--src/boards/reversecount.c4
-rw-r--r--src/boards/shapegame.c6
-rw-r--r--src/boards/smallnumbers.c6
-rw-r--r--src/boards/submarine.c4
-rw-r--r--src/boards/superbrain.c4
-rw-r--r--src/boards/target.c4
-rw-r--r--src/boards/wordsgame.c2
-rw-r--r--src/gcompris/Makefile.am32
-rw-r--r--src/gcompris/binreloc.c3
-rw-r--r--src/gcompris/board.c7
-rw-r--r--src/gcompris/board.h14
-rw-r--r--src/gcompris/bonus.c19
-rw-r--r--src/gcompris/file_selector.c2
-rw-r--r--src/gcompris/gameutil.c15
-rw-r--r--src/gcompris/gameutil.h2
-rw-r--r--src/gcompris/gcompris.c12
-rw-r--r--src/gcompris/gcompris_db.c11
-rw-r--r--src/gcompris/images_selector.c2
-rw-r--r--src/gcompris/menu.c7
-rw-r--r--src/gcompris/properties.c2
-rw-r--r--src/gcompris/sdlplayer.c8
-rw-r--r--src/gcompris/soundutil.c7
64 files changed, 947 insertions, 691 deletions
diff --git a/ChangeLog b/ChangeLog
index 698032e..443f212 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,75 @@
+2006-10-25 Yves Combe <yves@ycombe.net>
+
+ Reapply patch suppressed from HEAD branch, for cross compile with mingw.
+
+ * Makefile.am:
+ * Makefile.mingw.in:
+ * acinclude.m4:
+ * configure.in:
+ * cross-configure.sh:
+ * gcompris-installer.nsi.in:
+ * po/ChangeLog:
+ * po/fi.po:
+ * src/boards/Makefile.am:
+ * src/boards/advanced_colors.c: (colors_next_level),
+ (colors_create_item):
+ * src/boards/algebra.c: (get_operand), (get_random_number):
+ * src/boards/algebra_guesscount.c: (generate_numbers):
+ * src/boards/awele.c: (initBoardGraphics), (updateNbBeans):
+ * src/boards/awele_alphaBeta.c: (firstChild):
+ * src/boards/awele_utils.c: (randplay):
+ * src/boards/click_on_letter.c: (click_on_letter_create_item):
+ * src/boards/clickgame.c: (clickgame_create_item),
+ (load_random_pixmap):
+ * src/boards/clockgame.c: (get_random_hour):
+ * src/boards/colors.c: (start_board):
+ * src/boards/crane.c: (shuffle_list):
+ * src/boards/enumerate.c: (enumerate_create_item):
+ * src/boards/erase.c: (shuffle_image_list):
+ * src/boards/fifteen.c: (scramble):
+ * src/boards/gletters.c: (gletters_create_item):
+ * src/boards/gtans.c:
+ * src/boards/gtans_support.c: (check_file_exists):
+ * src/boards/hanoi.c: (hanoi_create_item):
+ * src/boards/imageid.c: (imageid_create_item):
+ * src/boards/leftright.c: (leftright_create_item):
+ * src/boards/machpuzzle.c: (minigolf_create_item):
+ * src/boards/magic_hat.c: (magic_hat_create_item):
+ * src/boards/maze.c: (maze_next_level), (generateMaze):
+ * src/boards/memory.c: (get_random_token), (get_image), (tux_play):
+ * src/boards/missingletter.c: (missing_letter_create_item):
+ * src/boards/money.c: (money_next_level):
+ * src/boards/paratrooper.c: (paratrooper_next_level),
+ (paratrooper_create_cloud):
+ * src/boards/planegame.c: (planegame_create_item):
+ * src/boards/py-mod-gcompris.c: (py_gcompris_child_watch_add),
+ (py_gcompris_spawn_async):
+ * src/boards/railroad.c: (railroad_create_item):
+ * src/boards/read_colors.c: (start_board):
+ * src/boards/reading.c: (display_what_to_do):
+ * src/boards/reversecount.c: (display_random_fish):
+ * src/boards/shapegame.c: (parse_doc):
+ * src/boards/smallnumbers.c: (smallnumbers_create_item):
+ * src/boards/submarine.c: (submarine_create_item):
+ * src/boards/superbrain.c: (superbrain_next_level):
+ * src/boards/target.c: (display_windspeed):
+ * src/boards/wordsgame.c: (wordsgame_create_item):
+ * src/gcompris/Makefile.am:
+ * src/gcompris/binreloc.c: (_br_find_exe):
+ * src/gcompris/board.c: (gc_board_pause):
+ * src/gcompris/board.h:
+ * src/gcompris/bonus.c: (gc_bonus_display), (bonus_image):
+ * src/gcompris/file_selector.c: (parse_doc):
+ * src/gcompris/gameutil.c: (gc_util_create_rootdir):
+ * src/gcompris/gameutil.h:
+ * src/gcompris/gcompris.c: (activation_done), (gc_init):
+ * src/gcompris/gcompris_db.c: (gc_db_init):
+ * src/gcompris/images_selector.c: (parse_doc):
+ * src/gcompris/menu.c: (gc_menu_load):
+ * src/gcompris/properties.c: (gc_prop_new):
+ * src/gcompris/sdlplayer.c: (errorv):
+ * src/gcompris/soundutil.c: (scheduler_bgnd):
+
2006-10-24 Yves Combe <yves@ycombe.net>
=== WARNING THIS PATCH SET HAS BEEN REVERTED ===
diff --git a/Makefile.am b/Makefile.am
index 9653892..f2c6a00 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,22 +1,36 @@
## Process this file with automake to produce Makefile.in
+if !BUILD_MINGW32
if TEXINFO
DOCS_SUBDIR=docs
else
DOCS_SUBDIR=
endif
+else
+DOCS_SUBDIR=
+endif
SUBDIRS = po src boards $(DOCS_SUBDIR) autopackage
icondir=$(datadir)/pixmaps
icon_DATA = gcompris.png gcompris-edit.png
+if BUILD_MINGW32
+Applicationsdir = $(datadir)/
+Applications_in_files =
+Applications_DATA =
+
+Menudir=$(prefix)
+Menu_DATA=
+
+else
Applicationsdir = $(datadir)/applications/
Applications_in_files = gcompris.desktop.in gcompris-edit.desktop.in
Applications_DATA = gcompris.desktop gcompris-edit.desktop
Menudir=$(prefix)/lib/menu
Menu_DATA=gcompris
+endif
@INTLTOOL_DESKTOP_RULE@
diff --git a/Makefile.mingw.in b/Makefile.mingw.in
index 0864473..a2ee05d 100644
--- a/Makefile.mingw.in
+++ b/Makefile.mingw.in
@@ -18,7 +18,7 @@ LIBXML2_TOP := /libxml2
SDL_TOP := /sdl
CANVAS_TOP := /gnomecanvas
GNUCHESS_TOP := /gnuchess
-PYTHON_DLL := /c/WINDOWS/system32/python24.dll
+PYTHON_TOP := /c/WINDOWS/system32/python24.dll
GNUCAP_TOP := /gnucap
MAKENSIS := "/c/Program Files/NSIS/makensis.exe"
@@ -26,7 +26,7 @@ MAKENSIS := "/c/Program Files/NSIS/makensis.exe"
# These will be copied in the win32-install-dir ready to be packaged.
NEEDED_DLLS = $(GNUCHESS_TOP)/bin/pthreadGC.dll \
$(GNUCHESS_TOP)/bin/libreadline.dll \
- $(PYTHON_DLL) \
+ $(PYTHON_TOP)/python24.dll \
$(GNUCAP_TOP)/src/MSW/gnucap.exe \
$(GTK_TOP)/bin/gspawn-win32-helper.exe \
$(GNUCHESS_TOP)/bin/gnuchess.exe \
@@ -136,7 +136,7 @@ prep:
@echo "Copy pixmap"
mkdir $(GCOMPRIS_INSTALL_DIR)/share/pixmaps
cp gcompris.png $(GCOMPRIS_INSTALL_DIR)/share/pixmaps
- @echo remove tuxpaint activity
+ @remove tuxpaint activity
rm -f $(GCOMPRIS_INSTALL_DIR)/share/$(pkgdatadir)/boards/tuxpaint.xml
@echo "Create the file gcompris-win-prepack.tar.gz"
tar -czf gcompris-win-prepack.tar.gz win32-install-dir nsis tools
diff --git a/acinclude.m4 b/acinclude.m4
index a351e4d..9ea0a8e 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -43,18 +43,25 @@ AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
[AC_REQUIRE([AM_PATH_PYTHON])
AC_MSG_CHECKING(for headers required to compile python extensions)
dnl deduce PYTHON_CFLAGS
-py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
-py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
-PYTHON_CFLAGS="-I${py_prefix}/include/python${PYTHON_VERSION}"
-python_link=`$PYTHON -c "import distutils.sysconfig ; print distutils.sysconfig.get_config_var(\"LIBRARY\")" | sed -e "s%lib\(.*\)\.[[a-zA-Z]]*$%-l\1%"`
+if test "x$PYTHON_CFLAGS" = "x" ; then
+ py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+ py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
-python_libdir=`$PYTHON -c "import distutils.sysconfig ; print distutils.sysconfig.get_config_var(\"LIBDIR\")"`
+ PYTHON_CFLAGS="-I${py_prefix}/include/python${PYTHON_VERSION}"
-PYTHON_LIBS="-L${python_libdir} ${python_link}"
-if test "$py_prefix" != "$py_exec_prefix"; then
- PYTHON_CFLAGS="$PYTHON_CFLAGS -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+ if test "$py_prefix" != "$py_exec_prefix"; then
+ PYTHON_CFLAGS="$PYTHON_CFLAGS -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+ fi
+fi
+
+if test "x$PYTHON_LIBS" = "x" ; then
+ python_link=`$PYTHON -c "import distutils.sysconfig ; print distutils.sysconfig.get_config_var(\"LIBRARY\")" | sed -e "s%lib\(.*\)\.[[a-zA-Z]]*$%-l\1%"`
+
+ python_libdir=`$PYTHON -c "import distutils.sysconfig ; print distutils.sysconfig.get_config_var(\"LIBDIR\")"`
+
+ PYTHON_LIBS="-L${python_libdir} ${python_link}"
fi
AC_SUBST(PYTHON_CFLAGS)
diff --git a/configure.in b/configure.in
index 861a45f..4f9fe9d 100644
--- a/configure.in
+++ b/configure.in
@@ -63,10 +63,24 @@ AM_PROG_LIBTOOL
dnl Check for SDL
SDL_VERSION=1.2.3
-AM_PATH_SDL($SDL_VERSION,
+
+cflags_previous=$CFLAGS
+libs_previous=$LIBS
+
+if test "x$SDL_CFLAGS" = "x" -o "x$SDL_LIBS" = "x" ; then
+ AM_PATH_SDL($SDL_VERSION,
:,
AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!])
-)
+ )
+else
+ AC_SUBST(SDL_CFLAGS)
+ AC_SUBST(SDL_LIBS)
+ echo "*** Not checking SDL. Using existing SDL_FLAGS and SDL_LIBS ***"
+fi
+
+dnl RESTAURE PREVIOUSLY SET VALUES
+CFLAGS=$cflags_previous
+LIBS=$libs_previous
dnl GNOME2 GNOME_X_CHECKS
AM_PATH_GLIB_2_0
@@ -214,27 +228,55 @@ dnl
dnl === DIRECTORY DEFINITIONS ===
dnl
-dnl Set PACKAGE_LOCALE_DIR in config.h.
-AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${myprefix}/${DATADIRNAME}/locale", [GCompris locale directory])
+if test "x$platform_win32" = "xno" ; then
-dnl Set PACKAGE_DATA_DIR
-PACKAGE_DATA_DIR="boards"
-AC_SUBST(PACKAGE_DATA_DIR)
-AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${myprefix}/${DATADIRNAME}", [GCompris data directory])
+ dnl Set PACKAGE_LOCALE_DIR in config.h.
+ AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${myprefix}/${DATADIRNAME}/locale", [GCompris locale directory])
-dnl Set PACKAGE_HELP_DIR
-PACKAGE_HELP_DIR="${myprefix}/${DATADIRNAME}/${PACKAGE}/help"
-AC_SUBST(PACKAGE_HELP_DIR)
+ dnl Set PACKAGE_DATA_DIR
+ PACKAGE_DATA_DIR="boards"
+ AC_SUBST(PACKAGE_DATA_DIR)
+ AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${myprefix}/${DATADIRNAME}", [GCompris data directory])
-dnl Plugin Directory
-my_libdir=`eval echo "${libdir}"`
-AC_DEFINE_UNQUOTED(PACKAGE_CLIB_DIR, "${my_libdir}", [Gcompris plugins directory])
-plugindir=$libdir/gcompris
-AC_SUBST(plugindir)
+ dnl Set PACKAGE_HELP_DIR
+ PACKAGE_HELP_DIR="${myprefix}/${DATADIRNAME}/${PACKAGE}/help"
+ AC_SUBST(PACKAGE_HELP_DIR)
+
+ dnl Plugin Directory
+ my_libdir=`eval echo "${libdir}"`
+ AC_DEFINE_UNQUOTED(PACKAGE_CLIB_DIR, "${my_libdir}", [Gcompris plugins directory])
+ plugindir=$libdir/gcompris
+ AC_SUBST(plugindir)
+
+ dnl Python plugin Directory
+ PYTHON_PLUGIN_DIR="${myprefix}/${DATADIRNAME}/${PACKAGE}/python"
+ AC_SUBST(PYTHON_PLUGIN_DIR)
+
+else
+ DATADIRNAME="share"
-dnl Python plugin Directory
-PYTHON_PLUGIN_DIR="${myprefix}/${DATADIRNAME}/${PACKAGE}/python"
-AC_SUBST(PYTHON_PLUGIN_DIR)
+ dnl Set PACKAGE_LOCALE_DIR in config.h for WINDOWS
+ AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "../${DATADIRNAME}/locale", [GCompris locale directory])
+
+ dnl Set PACKAGE_DATA_DIR
+ PACKAGE_DATA_DIR="boards"
+ AC_SUBST(PACKAGE_DATA_DIR)
+ AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "../${DATADIRNAME}", [GCompris data directory])
+
+ dnl Set PACKAGE_HELP_DIR
+ PACKAGE_HELP_DIR="${myprefix}/${DATADIRNAME}/gnome/help/gcompris"
+ AC_SUBST(PACKAGE_HELP_DIR)
+
+ dnl Plugin Directory
+ AC_DEFINE_UNQUOTED(PACKAGE_CLIB_DIR, "../${DATADIRNAME}", [Gcompris plugins directory])
+ plugindir=${myprefix}/${DATADIRNAME}/gcompris
+ AC_SUBST(plugindir)
+
+ dnl Python plugin Directory
+ PYTHON_PLUGIN_DIR="${myprefix}/${DATADIRNAME}/gcompris/python"
+ AC_SUBST(PYTHON_PLUGIN_DIR)
+
+fi
dnl Test for gnuchess
AC_PATH_PROG(GNUCHESS, gnuchess,no,[/usr/bin:/usr/games:/usr/local/bin:$PATH])
@@ -291,6 +333,7 @@ else
if test x$python_path != xnot ; then
PYTHON=$python_path
fi
+
AM_PATH_PYTHON(2.2)
AM_CHECK_PYTHON_HEADERS( [build_python_plugin="yes"], [build_python_plugin="no"] )
@@ -338,10 +381,11 @@ else
AC_MSG_WARN([py-build-only: Do not forget to install pygtk, pysqlite2])
fi
- if test x$with_sqlite = xyes; then
+fi
+
+if test x$with_sqlite = xyes; then
PKG_CHECK_MODULES(SQLITE3, sqlite3,, AC_MSG_ERROR([*** SQLITE3 not found!]))
AC_DEFINE([USE_SQLITE], 1,[SQLITE Database, Profiles are enabled])
- fi
fi
AM_CONDITIONAL(USE_SQLITE, test x$with_sqlite = xyes)
@@ -451,7 +495,31 @@ AC_SUBST(VERSION_VOICES_SV)
VERSION_VOICES_TR=1.0
AC_SUBST(VERSION_VOICES_TR)
+dnl mingw32 specific stuff.
+dnl use libgw32c
+dnl define __GW32__ and WIN32
+
+# Check platform - see if WinMain needed:
+AC_MSG_CHECKING([for native Win32])
+case "$host" in
+ *-*-mingw*)
+ native_win32=yes
+ ;;
+ *)
+ native_win32=no
+ ;;
+esac
+AC_MSG_RESULT([$native_win32])
+
+AM_CONDITIONAL(BUILD_MINGW32, test "$native_win32" = yes)
+if test "$native_win32" = yes; then
+ LIBS="$LIBS -luuid -lole32 -lwsock32 -mno-cygwin -mms-bitfields -mwindows"
+ #CFLAGS="$CFLAGS -D__GW32__ -DWIN32 -I$CROSS_ROOT/include -I$CROSS_ROOT/include/glibc"
+ #CFLAGS="$CFLAGS -DWIN32"
+fi
+
AC_SUBST(CFLAGS)
+AC_SUBST(LIBS)
dnl Autoconf output
AC_OUTPUT([ gcompris.spec
diff --git a/cross-configure.sh b/cross-configure.sh
new file mode 100755
index 0000000..157a10c
--- /dev/null
+++ b/cross-configure.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+CONFIG_SHELL=/bin/sh
+export CONFIG_SHELL
+PREFIX=/usr/local/cross-tools
+TARGET=i586-mingw32msvc
+CROSS_DEV=/home/ycombe/Win32/dev2
+PATH="$PATH:$CROSS_DEV/bin"
+export PATH
+PKG_CONFIG_LIBDIR="$CROSS_DEV/lib/pkgconfig:$CROSS_DEV/Python24/Lib/pkgconfig"
+export PKG_CONFIG_LIBDIR
+export PKG_CONFIG_PATH
+PYTHONHOME="$CROSS_DEV/Python24"
+PYTHONPATH="$CROSS_DEV/Python24/Lib"
+PYTHON_CFLAGS="-I$CROSS_DEV/Python24/include"
+PYTHON_LIBS="-L$CROSS_DEV/Python24/libs -lpython24"
+export PYTHONHOME
+export PYTHONPATH
+export PYTHON_CFLAGS
+export PYTHON_LIBS
+
+SDL_MIXER_CFLAGS="-I$CROSS_DEV/SDL_mixer-1.2.7/include"
+SDL_MIXER_LDFLAGS="-L$CROSS_DEV/SDL_mixer-1.2.7/lib"
+SDL_CFLAGS="-I$CROSS_DEV/SDL-1.2.11/include"
+SDL_LIBS="-L$CROSS_DEV/SDL-1.2.11/lib -lSDLmain -lSDL"
+export SDL_CFLAGS
+export SDL_LIBS
+
+if [ -f "$CROSS_DEV/SDL-1.2.11/bin/i386-mingw32msvc-sdl-config" ]; then
+ SDL_CONFIG="$CROSS_DEV/SDL-1.2.11/bin/i386-mingw32msvc-sdl-config --prefix=$CROSS_DEV/SDL-1.2.11"
+ export SDL_CONFIG
+fi
+
+cache=cross-config.cache
+#CFLAGS="-I$CROSS_DEV/include -idirafter $CROSS_DEV/include/glibc" LDFLAGS=-L$CROSS_DEV/lib LIBS="-lgw32c -luuid -lole32 -lwsock32 -mwindows" sh configure --cache-file="$cache" \
+#CFLAGS="-I$CROSS_DEV/include -I$CROSS_DEV/include/glibc -I$CROSS_DEV/include/glibc -D__GW32__" LDFLAGS=-L$CROSS_DEV/lib LIBS=-lgw32c sh configure --cache-file="$cache"
+CFLAGS="-g -O2 -I$CROSS_DEV/include -idirafter $CROSS_DEV/include/glibc $SDL_MIXER_CFLAGS -D__GW32__" LDFLAGS="-L$CROSS_DEV/lib $SDL_MIXER_LDFLAGS" LIBS=-lgw32c sh configure --cache-file="$cache" \
+ --target=$TARGET --host=$TARGET --build=i386-linux \
+ --enable-py-build-only \
+ --with-sdl-prefix="$CROSS_DEV/SDL-1.2.11" \
+ --prefix=/media/hda5/GCompris_test \
+ --disable-binreloc \
+ $*
+status=$?
+rm -f "$cache"
+exit $status
diff --git a/gcompris-installer.nsi.in b/gcompris-installer.nsi.in
index 1c662fa..49ab163 100644
--- a/gcompris-installer.nsi.in
+++ b/gcompris-installer.nsi.in
@@ -215,27 +215,32 @@ Section -SecUninstallOldGcompris
StrCmp $R2 "" uninstall_problem
; Check if we have uninstall string..
IfFileExists $R3 0 uninstall_problem
+ ; Have uninstall string.. go ahead and uninstall.
- MessageBox MB_YESNO "Uninstall your previous version of GCompris?" IDYES do_uninstall IDNO done
-
- do_uninstall:
- ; Have uninstall string.. go ahead and uninstall.
- SetOverwrite on
- ; Need to copy uninstaller outside of the install dir
- ClearErrors
- CopyFiles /SILENT $R3 "$TEMP\${GCOMPRIS_UNINST_EXE}"
- SetOverwrite off
- IfErrors uninstall_problem
- ; Ready to uninstall..
- ClearErrors
- ExecWait '"$TEMP\${GCOMPRIS_UNINST_EXE}" /S _?=$R1'
- IfErrors exec_error
- Delete "$TEMP\${GCOMPRIS_UNINST_EXE}"
- Goto done
+ ; In this case just wipe out previous Gcompris install dir..
+ ; We get here because versions 0.60a1 and 0.60a2 don't have versions set in the registry
+ ; and versions 0.60 and lower did not correctly set the uninstall reg string
+ ; (the string was set in quotes)
+ MessageBox MB_YESNO $(GCOMPRIS_PROMPT_WIPEOUT) IDYES do_wipeout IDNO cancel_install
+ cancel_install:
+ Quit
- exec_error:
- Delete "$TEMP\${GCOMPRIS_UNINST_EXE}"
- Goto uninstall_problem
+ SetOverwrite on
+ ; Need to copy uninstaller outside of the install dir
+ ClearErrors
+ CopyFiles /SILENT $R3 "$TEMP\${GCOMPRIS_UNINST_EXE}"
+ SetOverwrite off
+ IfErrors uninstall_problem
+ ; Ready to uninstall..
+ ClearErrors
+ ExecWait '"$TEMP\${GCOMPRIS_UNINST_EXE}" /S _?=$R1'
+ IfErrors exec_error
+ Delete "$TEMP\${GCOMPRIS_UNINST_EXE}"
+ Goto done
+
+ exec_error:
+ Delete "$TEMP\${GCOMPRIS_UNINST_EXE}"
+ Goto uninstall_problem
uninstall_problem:
; In this case just wipe out previous Gcompris install dir..
@@ -243,9 +248,7 @@ Section -SecUninstallOldGcompris
; and versions 0.60 and lower did not correctly set the uninstall reg string
; (the string was set in quotes)
IfSilent do_wipeout
- MessageBox MB_YESNO $(GCOMPRIS_PROMPT_WIPEOUT) IDYES do_wipeout IDNO cancel_install
- cancel_install:
- Quit
+ MessageBox MB_YESNO "Uninstall previous version?" IDYES do_wipeout IDNO done
do_wipeout:
StrCmp $R0 "HKLM" gcompris_del_lm_reg gcompris_del_cu_reg
@@ -428,7 +431,6 @@ Section Uninstall
Delete "$INSTDIR\pangocairo.pyd"
Delete "$INSTDIR\popt1.dll"
Delete "$INSTDIR\pthreadGC.dll"
- Delete "$INSTDIR\python24.dll"
Delete "$INSTDIR\python24.zip"
Delete "$INSTDIR\select.pyd"
Delete "$INSTDIR\setup.py"
diff --git a/po/ChangeLog b/po/ChangeLog
index 8bd81b0..5d203ea 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,7 +1,3 @@
-2006-10-24 Ilkka Tuohela <hile@iki.fi>
-
- * fi.po: Updated Finnish translation.
-
2006-10-22 Bruno Coudoin <bruno.coudoin@free.fr>
* fr.po: fixed a typo
diff --git a/po/fi.po b/po/fi.po
index bd929d3..d0b18c3 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: fi\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-10-24 15:55+0300\n"
-"PO-Revision-Date: 2006-10-24 16:05+0300\n"
+"POT-Creation-Date: 2006-09-25 19:27+0300\n"
+"PO-Revision-Date: 2006-09-25 19:47+0300\n"
"Last-Translator: Ilkka Tuohela <hile@iki.fi>\n"
"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -778,7 +778,7 @@ msgstr "Potkaise pallo maaliin"
#: ../boards/billard.xml.in.h:3 ../boards/chess_computer.xml.in.h:2
#: ../boards/chess_movelearn.xml.in.h:3 ../boards/chess_partyend.xml.in.h:2
-#: ../boards/clickgame.xml.in.h:16 ../boards/connect4.xml.in.h:6
+#: ../boards/clickgame.xml.in.h:16 ../boards/connect4.xml.in.h:7
#: ../boards/erase.xml.in.h:3 ../boards/erase_clic.xml.in.h:6
#: ../boards/erase_double_clic.xml.in.h:6 ../boards/fifteen.xml.in.h:2
#: ../boards/hanoi.xml.in.h:3 ../boards/memory.xml.in.h:4
@@ -1200,12 +1200,13 @@ msgstr "Yhdistä neljä"
#: ../boards/connect4.xml.in.h:4
msgid ""
-"Create a line of 4 pieces either horizontally (lying down) or vertically "
-"(standing up)"
+"Create a line of 4 pieces either horizontally (lying down)\n"
+"or vertically (standing up)"
msgstr ""
-"Luo neljän kappaleen pituinen viiva joko pysty- tai vaakasuoraan"
+"Luo neljän kappaleen pituinen viiva joko pysty-\n"
+"tai vaakasuoraan"
-#: ../boards/connect4.xml.in.h:5
+#: ../boards/connect4.xml.in.h:6
msgid ""
"Laurent Lacheny. Images and Artificial Intelligence taken from project "
"4stattack by Jeroen Vloothuis. The original project can be found on &lt;"
@@ -1372,11 +1373,11 @@ msgstr ""
"napsauta \"OK\"-painiketta tai paina \"Enter\"-näppäintä."
#: ../boards/enumerate.xml.in.h:4 ../boards/planegame.xml.in.h:5
-#: ../src/boards/enumerate.c:89
+#: ../src/boards/enumerate.c:92
msgid "Numeration training"
msgstr "Järjestyksen harjoittelu"
-#: ../boards/enumerate.xml.in.h:5 ../src/boards/enumerate.c:90
+#: ../boards/enumerate.xml.in.h:5 ../src/boards/enumerate.c:93
msgid "Place the items in the best way to count them"
msgstr "Laita esineet oikeaan järjestykseen"
@@ -1391,12 +1392,12 @@ msgstr ""
"&gt; ja Le Berre Danielilta. He antoivat gcomprisille luvan käyttää "
"kuviansa. Paljon kiitoksia heille."
-#: ../boards/erase.xml.in.h:4 ../src/boards/erase.c:113
-#: ../src/boards/machpuzzle.c:88
+#: ../boards/erase.xml.in.h:4 ../src/boards/erase.c:116
+#: ../src/boards/machpuzzle.c:92
msgid "Move the mouse"
msgstr "Liikuta hiirtä"
-#: ../boards/erase.xml.in.h:5 ../src/boards/erase.c:114
+#: ../boards/erase.xml.in.h:5 ../src/boards/erase.c:117
msgid "Move the mouse to erase the area and discover the background"
msgstr "Pyyhi aluetta liikuttamalla hiirtä ja näe piilotettu taustakuva"
@@ -1463,9 +1464,37 @@ msgid "Original code taken from the libgnomecanvas demo"
msgstr "Alkuperäinen lähdekoodi tulee libgnomecanvasin demosta"
#: ../boards/fifteen.xml.in.h:5
+msgid "Samuel Loyd"
+msgstr "Samuel Loyd"
+
+#: ../boards/fifteen.xml.in.h:6
msgid "The fifteen game"
msgstr "Viisitoista-peli"
+#: ../boards/fifteen.xml.in.h:7
+msgid "anticipate"
+msgstr "aavista"
+
+#: ../boards/fifteen.xml.in.h:8
+msgid "logical"
+msgstr "looginen"
+
+#: ../boards/fifteen.xml.in.h:9
+msgid "move"
+msgstr "siirrä"
+
+#: ../boards/fifteen.xml.in.h:10
+msgid "puzzle"
+msgstr "palapeli"
+
+#: ../boards/fifteen.xml.in.h:11
+msgid "slide"
+msgstr "liu'uta"
+
+#: ../boards/fifteen.xml.in.h:12
+msgid "taquin"
+msgstr "taquin"
+
#: ../boards/followline.xml.in.h:1
msgid "Control the hose-pipe"
msgstr "Ohjaa puutarhaletkua"
@@ -1530,9 +1559,9 @@ msgid ""
"Documentation License. Olaf Ronneberger and his children Lina and Julia "
"Ronneberger created the German level."
msgstr ""
-"Saksan kartta tulee Wikipediasta ja on julkaistu \"GNU Free Documentation "
-"License\" -lisenssillä. Olaf Ronneberger ja hänen lapsensa Lina ja Julia "
-"Ronneberger loivat Saksan tason."
+"Saksan kartta tulee Wikipediasta ja on julkaistu \"GNU Free "
+"Documentation License\" -lisenssillä. Olaf Ronneberger ja hänen "
+"lapsensa Lina ja Julia Ronneberger loivat Saksan tason."
#: ../boards/geography/board1_0.xml.in.h:1
#: ../boards/geography/board4_2.xml.in.h:1
@@ -1764,7 +1793,7 @@ msgstr "Kroatia"
msgid "Cyprus"
msgstr "Kypros"
-#: ../boards/geography/board3_1.xml.in.h:7 ../src/gcompris/config.c:65
+#: ../boards/geography/board3_1.xml.in.h:7 ../src/gcompris/config.c:70
msgid "Czech Republic"
msgstr "Tsekin tasavalta"
@@ -2105,11 +2134,11 @@ msgstr "Näppäimiston käyttö"
msgid "Letter association between the screen and the keyboard"
msgstr "Kirjainten tunnistaminen näytön ja näppäimistön välillä"
-#: ../boards/gletters.xml.in.h:3 ../src/boards/gletters.c:134
+#: ../boards/gletters.xml.in.h:3 ../src/boards/gletters.c:135
msgid "Simple Letters"
msgstr "Kirjaimet"
-#: ../boards/gletters.xml.in.h:4 ../src/boards/gletters.c:135
+#: ../boards/gletters.xml.in.h:4 ../src/boards/gletters.c:136
msgid "Type the falling letters before they reach the ground"
msgstr "Syötä putoavat kirjaimet näppäimistöltä ennen kuin ne osuvat maahan"
@@ -2303,7 +2332,7 @@ msgstr ""
"Raahaa tornien ylimmät rinkulat tornista toiseen siten, että saat toistettua "
"oikealla olevan tornin tyhjään tilaan vasemmalla."
-#: ../boards/hanoi.xml.in.h:4 ../src/boards/hanoi.c:97
+#: ../boards/hanoi.xml.in.h:4 ../src/boards/hanoi.c:101
msgid "Reproduce the given tower"
msgstr "Rakenna samanlainen torni"
@@ -2311,7 +2340,7 @@ msgstr "Rakenna samanlainen torni"
msgid "Reproduce the tower on the right in the empty space on the left"
msgstr "Rakenna oikealla oleva torni vasemmalla olevaan tyhjään tilaan"
-#: ../boards/hanoi.xml.in.h:6 ../src/boards/hanoi.c:96
+#: ../boards/hanoi.xml.in.h:6 ../src/boards/hanoi.c:100
msgid "Simplified Tower of Hanoi"
msgstr "Helpot Hanoin tornit"
@@ -2334,16 +2363,14 @@ msgstr "Hanoin tornit"
#: ../boards/hanoi_real.xml.in.h:5
msgid ""
"The object of the game is to move the entire stack to another peg, obeying "
-"the following rules:\n"
-"* only one disc may be moved at a time\n"
-"* no disc may be placed atop a smaller disc"
+"the following rules: * only one disc may be moved at a time * no disc may be "
+"placed atop a smaller disc"
msgstr ""
-"Pelin tarkoitus on siirtää koko pino muuhun tappiin, noudattaen seuraavia "
-"sääntöjä:\n"
-" * vain yhtä kiekkoa saa siirtää kerrallaan"
-" * kiekkoa ei voi laittaa pienemmän kiekon päälle"
+"Pelin tarkoitus on siirtää koko pino toiseen tappiin, seuraten seuraavia "
+"sääntöjä: * vain yhtä kiekkoa sa siirtää kerrallaan * kiekkoa ei voi laittaa "
+"pienemmän kiekon päälle"
-#: ../boards/hanoi_real.xml.in.h:8
+#: ../boards/hanoi_real.xml.in.h:6
msgid ""
"The puzzle was invented by the French mathematician Edouard Lucas in 1883. "
"There is a legend about a Hindu temple whose priests were constantly engaged "
@@ -2388,7 +2415,7 @@ msgstr "Harjoittele lukemista löytämällä kuvaa vastaava sana"
#: ../boards/imageid.xml.in.h:3 ../boards/imagename.xml.in.h:4
#: ../boards/readingh.xml.in.h:4 ../boards/readingv.xml.in.h:4
-#: ../src/boards/imageid.c:103 ../src/boards/missingletter.c:101
+#: ../src/boards/imageid.c:106 ../src/boards/missingletter.c:104
msgid "Reading"
msgstr "Lukutaito"
@@ -2705,7 +2732,7 @@ msgstr "Yhteenlasku"
#: ../boards/magic_hat_plus.xml.in.h:2
msgid ""
"Click on the hat to open or close it. Under the hat, how many stars can you "
-"see moving around? Count carefully. :) Click in the bottom-right area to "
+"see moving around? Count carefully. :) Click in the bottom- right area to "
"input your answer."
msgstr ""
"Avaa ja sulje hattu napsauttamalla. Kuinka monta tähteä näet hatun alla "
@@ -2759,7 +2786,7 @@ msgstr "Matematiikka"
msgid "Can use the keyboard arrow to move an object."
msgstr "Osaa käyttää näppäimistön nuolia esineitten siirtämiseen."
-#: ../boards/maze.xml.in.h:2 ../src/boards/maze.c:129
+#: ../boards/maze.xml.in.h:2 ../src/boards/maze.c:133
msgid "Find your way out of the maze"
msgstr "Löydä ulos sokkelosta"
@@ -2769,7 +2796,7 @@ msgid "Help Tux get out of this maze."
msgstr "Auta Tuxia löytämään tiensä ulos sokkelosta."
#: ../boards/maze.xml.in.h:4 ../boards/maze2DRelative.xml.in.h:4
-#: ../boards/mazeInvisible.xml.in.h:4 ../src/boards/maze.c:128
+#: ../boards/mazeInvisible.xml.in.h:4 ../src/boards/maze.c:132
msgid "Maze"
msgstr "Sokkelo"
@@ -2890,8 +2917,8 @@ msgid ""
"Turn the cards over to find two numbers which add up the same, until all the "
"cards are gone."
msgstr ""
-"Käännä kortteja ja etsi kaksi numeroa, jotka ynnätään samaan lukuun, kunnes "
-"kaikki kortit on käytetty."
+"Käännä kortteja ja etsi kaksi numeroa, jotka ynnätään samaan lukuun, "
+"kunnes kaikki kortit on käytetty."
#: ../boards/memory_add.xml.in.h:5 ../boards/memory_add_tux.xml.in.h:5
msgid ""
@@ -2934,8 +2961,8 @@ msgid ""
"Turn the cards over to find two numbers which add or subtract the same, "
"until all the cards are gone."
msgstr ""
-"Käännä kortteja ja etsi kaksi numeroa, jotka ynnätään tai vähennetään samaan "
-"lukuun, kunnes kaikki kortit on käytetty."
+"Käännä kortteja ja etsi kaksi numeroa, jotka ynnätään tai vähennetään "
+"samaan lukuun, kunnes kaikki kortit on käytetty."
#: ../boards/memory_add_minus.xml.in.h:5
#: ../boards/memory_add_minus_mult_div.xml.in.h:5
@@ -2975,8 +3002,8 @@ msgid ""
"Practise addition, subtraction, multiplication, division, until all the "
"cards are gone."
msgstr ""
-"Harjoittele yhteen-, vähennys-, kerto- ja jakolaskua kunnes kortit on "
-"käytetty."
+"Harjoittele yhteen-, vähennys-, kerto- ja jakolaskua kunnes "
+"kortit on käytetty."
#: ../boards/memory_add_minus_mult_div.xml.in.h:4
#: ../boards/memory_add_minus_mult_div_tux.xml.in.h:4
@@ -2988,8 +3015,8 @@ msgid ""
"Turn the cards over to find a matching operation, until all the cards are "
"gone."
msgstr ""
-"Käännä kortteja ja etsi vastaava laskutoimitus, kunnes kaikki kortit on "
-"käytetty."
+"Käännä kortteja ja etsi vastaava laskutoimitus, kunnes kaikki kortit "
+"on käytetty."
#: ../boards/memory_add_minus_mult_div_tux.xml.in.h:2
msgid "All operations memory game against Tux"
@@ -3234,7 +3261,7 @@ msgstr ""
msgid "GCompris Main Menu"
msgstr "GCompris päävalikko"
-#: ../boards/menu.xml.in.h:16 ../src/boards/menu2.c:1009
+#: ../boards/menu.xml.in.h:16 ../src/boards/menu2.c:1008
msgid ""
"GCompris is a collection of educational games that provides different "
"activities for children aged 2 and up."
@@ -4043,11 +4070,11 @@ msgstr ""
"jos löysit piilopaikan, merkitsemällä kappaleen mustalla laatikolla. Voit "
"käyttää oikeata hiiren nappia vaihtaaksesi värit keskenään."
-#: ../boards/superbrain.xml.in.h:2 ../src/boards/superbrain.c:106
+#: ../boards/superbrain.xml.in.h:2 ../src/boards/superbrain.c:110
msgid "Super Brain"
msgstr "Superaivot"
-#: ../boards/superbrain.xml.in.h:3 ../src/boards/superbrain.c:107
+#: ../boards/superbrain.xml.in.h:3 ../src/boards/superbrain.c:111
msgid "Tux has hidden several items. Find them again in the correct order"
msgstr "Tux on piiloittanut useita esineitä. Löydä ne oikeassa järjestyksessä"
@@ -4201,7 +4228,7 @@ msgstr ""
"Tux tuli takaisin pitkältä kalastusretkeltä veneellään. Korjaa "
"vesijärjestelmä, jotta Tux pääsee suihkuun."
-#: ../boards/wordsgame.xml.in.h:1 ../src/boards/wordsgame.c:110
+#: ../boards/wordsgame.xml.in.h:1 ../src/boards/wordsgame.c:112
msgid "Falling Words"
msgstr "Putoavat sanat"
@@ -4213,7 +4240,7 @@ msgstr "Kirjoitusharjoitus"
msgid "Type the complete word as it falls, before it reachs the ground"
msgstr "Kirjoita koko putoava sana ennen kuin se osuu maahan"
-#: ../boards/wordsgame.xml.in.h:5 ../src/boards/wordsgame.c:111
+#: ../boards/wordsgame.xml.in.h:5 ../src/boards/wordsgame.c:113
msgid "Type the falling words before they reach the ground"
msgstr "Kirjoita putoavat sanat ennen kuin ne osuvat maahan"
@@ -4253,108 +4280,109 @@ msgstr "Vuorosi pelata..."
msgid "Not allowed! Try again !"
msgstr "Ei sallittu, yritä uudestaan!"
-#: ../src/boards/chess.c:179
-msgid "Error: The external program gnuchess died unexpectedly"
+#: ../src/boards/chess.c:183 ../src/boards/chess.c:1134
+msgid "Error: The external program gnuchess died unexpectingly"
msgstr "Virhe: ulkoinen ohjelma gnuchess päättyi odottamatta"
-#: ../src/boards/chess.c:194
+#: ../src/boards/chess.c:198
msgid ""
-"Error: The external program gnuchess is required\n"
+"Error: The external program gnuchess is mandatory\n"
"to play chess in gcompris.\n"
"Find this program on http://www.rpmfind.net or in your\n"
"GNU/Linux distribution\n"
"And check it is located here: "
msgstr ""
-"Virhe: Tarvitset ulkoisen ohjelman gnuchess pelataksesi\n"
+"Virhe: Tarvitset gnuchess ohjelman pelataksesi\n"
"shakkia gcomprisissa.\n"
-"Voit hakea sen vaikka osoitteesta http://www.rpmfind.net tai\n"
-"GNU/Linux asennuslevyiltäsi.\n"
-"Tarkista asennuksen jälkeen, että gnuchess löytyy hakemistosta "
+"Hae se vaikka osoitteesta http://www.rpmfind.net tai\n"
+"omilta GNU/Linux asennuslevyiltäsi\n"
+"ja tarkista että se on asennettu paikkaan: "
-#: ../src/boards/chess.c:236
+#: ../src/boards/chess.c:240
+#, fuzzy
msgid ""
"Error: The external program gnuchess is mandatory\n"
"to play chess in gcompris.\n"
"First install it, and check it is in "
msgstr ""
-"Virhe: Tarvitset ulkoisen ohjelman gnuchess pelataksesi\n"
+"Virhe: Tarvitset gnuchess ohjelman pelataksesi\n"
"shakkia gcomprisissa.\n"
-"Asenna se ensin ja tarkista että se löytyy hakemistosta "
+"Hae se vaikka osoitteesta http://www.rpmfind.net tai\n"
+"omilta GNU/Linux asennuslevyiltäsi\n"
+"ja tarkista että se on paikassa "
-#: ../src/boards/chess.c:579
+#: ../src/boards/chess.c:593
msgid "White's Turn"
msgstr "Valkoisten vuoro"
-#: ../src/boards/chess.c:579
+#: ../src/boards/chess.c:593
msgid "Black's Turn"
msgstr "Mustien vuoro"
-#: ../src/boards/chess.c:723
+#: ../src/boards/chess.c:737
msgid "White checks"
msgstr "Valkoinen shakkaa"
-#: ../src/boards/chess.c:725
+#: ../src/boards/chess.c:739
msgid "Black checks"
msgstr "Musta shakkaa"
-#: ../src/boards/chess.c:1082
+#: ../src/boards/chess.c:1096
msgid "Black mates"
msgstr "Musta matittaa"
-#: ../src/boards/chess.c:1087
+#: ../src/boards/chess.c:1101
msgid "White mates"
msgstr "Valkoinen matittaa"
-#: ../src/boards/chess.c:1092 ../src/gcompris/bonus.c:342
+#: ../src/boards/chess.c:1106 ../src/gcompris/bonus.c:342
#: ../src/gcompris/bonus.c:351
msgid "Drawn game"
msgstr "Tasapeli"
-#: ../src/boards/chess.c:1120
-msgid "Error: The external program gnuchess died unexpectingly"
-msgstr "Virhe: ulkoinen ohjelma gnuchess päättyi odottamatta"
-
-#: ../src/boards/click_on_letter.c:259 ../src/boards/memory.c:827
+#: ../src/boards/click_on_letter.c:262 ../src/boards/memory.c:827
+#, fuzzy
msgid ""
"Error: this activity cannot be played with the\n"
"sound effects disabled.\n"
"Go to the configuration dialog to\n"
"enable the sound"
msgstr ""
-"Virhe: tätä osaa ei voi pelata ilman ääniä.\n"
-"Siirry asetuksiin ja ota äänet käyttöön."
+"Virhe: tätä osaa ei voi käyttää, jos äänet eivät\n"
+"ole käytössä.\n"
+"Mene asetuksiin ja ota äänen äänet käyttöön"
#. TRANSLATORS: Put here the alphabet in your language
#. require by all utf8-functions
#. TRANSLATORS: Put here the alphabet lowercase in your language
-#: ../src/boards/click_on_letter.c:264 ../src/boards/gletters.c:231
+#: ../src/boards/click_on_letter.c:267 ../src/boards/gletters.c:232
#: ../src/boards/memory.c:848
msgid "abcdefghijklmnopqrstuvwxyz"
msgstr "abcdefghijklmnopqrstuvwxyzåäö"
-#: ../src/boards/click_on_letter.c:286
-#, c-format
+#: ../src/boards/click_on_letter.c:289
+#, fuzzy, c-format
msgid ""
"Error: this activity requires that you first install\n"
"the packages with gcompris voices for the locale '%s' or '%s'"
msgstr ""
-"Virhe: tämä osan käyttö vaatii että asennat ensin\n"
-"paketit, joissa on gcomprisin äänet kielelle \"%s\" tai \"%s\""
+"Virhe: sinun täytyy ensin asentaa paketti \n"
+"assetml-voices-alphabet-%s tai %s ennen kuin voit käyttää tätä osaa"
-#: ../src/boards/click_on_letter.c:294
-#, c-format
+#: ../src/boards/click_on_letter.c:297
+#, fuzzy, c-format
msgid ""
"Error: this activity requires that you first install\n"
"the packages with GCompris voices for the locale '%s' ! Fallback to english, "
"sorry!"
msgstr ""
-"Virhe: tämä osan käyttö vaatii että asennat ensin\n"
-"paketit, joissa on gcomprisin äänet kielelle \"%s\"."
-"Käytetään sen sijasta englantia!"
+"Virhe: sinun täytyy ensin asentaa paketti \n"
+"assetml-voices-alphabet-%s ennen kuin voit käyttää tätä osaa. Palataan "
+"käyttämään englantia!"
#. toggle box
-#: ../src/boards/click_on_letter.c:646 ../src/boards/gletters.c:898
-#: ../src/boards/python/login.py:540
+#: ../src/boards/click_on_letter.c:649 ../src/boards/gletters.c:899
+#: ../src/boards/python/login.py:541
msgid "Uppercase only text"
msgstr "Näytä vain isoja kirjaimia"
@@ -4362,95 +4390,95 @@ msgstr "Näytä vain isoja kirjaimia"
msgid "Set the watch to:"
msgstr "Käännä kellon viisarit aikaan:"
-#: ../src/boards/colors.c:54
+#: ../src/boards/colors.c:57
msgid "Click on the blue duck"
msgstr "Napsauta sinistâ ankkaa"
-#: ../src/boards/colors.c:55
+#: ../src/boards/colors.c:58
msgid "Click on the brown duck"
msgstr "Napsauta ruskeaa ankkaa"
-#: ../src/boards/colors.c:56
+#: ../src/boards/colors.c:59
msgid "Click on the green duck"
msgstr "Napsauta vihreâä ankkaa"
-#: ../src/boards/colors.c:57
+#: ../src/boards/colors.c:60
msgid "Click on the grey duck"
msgstr "Napsauta harmaata ankkaa"
-#: ../src/boards/colors.c:58
+#: ../src/boards/colors.c:61
msgid "Click on the orange duck"
msgstr "Napsauta oranssia ankkaa"
-#: ../src/boards/colors.c:59
+#: ../src/boards/colors.c:62
msgid "Click on the purple duck"
msgstr "Napsauta purppuranväristä ankkaa"
-#: ../src/boards/colors.c:60
+#: ../src/boards/colors.c:63
msgid "Click on the red duck"
msgstr "Napsauta punaista ankkaa"
-#: ../src/boards/colors.c:61
+#: ../src/boards/colors.c:64
msgid "Click on the yellow duck"
msgstr "Napsauta keltaista ankkaa"
-#: ../src/boards/colors.c:62
+#: ../src/boards/colors.c:65
msgid "Click on the black duck"
msgstr "Napsauta mustaa ankkaa"
-#: ../src/boards/colors.c:63
+#: ../src/boards/colors.c:66
msgid "Click on the white duck"
msgstr "Napsauta valkoista ankkaa"
#. TRANSLATORS: Put here the numbers in your language
-#: ../src/boards/gletters.c:227 ../src/boards/memory.c:844
+#: ../src/boards/gletters.c:228 ../src/boards/memory.c:844
msgid "0123456789"
msgstr "0123456789"
#. TRANSLATORS: Put here the alphabet uppercase in your language
-#: ../src/boards/gletters.c:237 ../src/boards/memory.c:854
+#: ../src/boards/gletters.c:238 ../src/boards/memory.c:854
msgid "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
msgstr "ABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ"
-#: ../src/boards/hanoi.c:332 ../src/boards/hanoi.c:343
+#: ../src/boards/hanoi.c:335 ../src/boards/hanoi.c:346
msgid ""
"Build the same tower in the empty area as the one you see on the right-hand "
"side."
msgstr "Rakenna tyhjään paikkaan täsmälleen samanlainen torni kuin oikealla"
-#: ../src/boards/hanoi_real.c:72
+#: ../src/boards/hanoi_real.c:76
msgid "Tower of Hanoi"
msgstr "Hanoin tornit"
-#: ../src/boards/hanoi_real.c:273 ../src/boards/hanoi_real.c:284
+#: ../src/boards/hanoi_real.c:277 ../src/boards/hanoi_real.c:288
msgid "Move the entire stack to the right peg, one disc at a time"
msgstr "Siirrä koko pino oikealla olevaan tappiin, yksi kerrallaan"
-#: ../src/boards/imageid.c:104 ../src/boards/missingletter.c:102
+#: ../src/boards/imageid.c:107 ../src/boards/missingletter.c:105
msgid "Learn how to read"
msgstr "Opettele lukemaan"
-#: ../src/boards/leftright.c:277 ../src/boards/leftright.c:287
-#: ../src/boards/python/searace.py:428 ../src/boards/python/searace.py:453
-#: ../src/boards/python/searace.py:543 ../src/boards/python/searace.py:855
-#: ../src/boards/python/searace.py:888 ../src/boards/python/searace.py:985
+#: ../src/boards/leftright.c:280 ../src/boards/leftright.c:290
+#: ../src/boards/python/searace.py:429 ../src/boards/python/searace.py:454
+#: ../src/boards/python/searace.py:544 ../src/boards/python/searace.py:856
+#: ../src/boards/python/searace.py:889 ../src/boards/python/searace.py:986
msgid "left"
msgstr "vasen"
-#: ../src/boards/leftright.c:297 ../src/boards/leftright.c:307
-#: ../src/boards/python/searace.py:428 ../src/boards/python/searace.py:453
-#: ../src/boards/python/searace.py:552 ../src/boards/python/searace.py:857
-#: ../src/boards/python/searace.py:890 ../src/boards/python/searace.py:979
+#: ../src/boards/leftright.c:300 ../src/boards/leftright.c:310
+#: ../src/boards/python/searace.py:429 ../src/boards/python/searace.py:454
+#: ../src/boards/python/searace.py:553 ../src/boards/python/searace.py:858
+#: ../src/boards/python/searace.py:891 ../src/boards/python/searace.py:980
msgid "right"
msgstr "oikea"
-#: ../src/boards/maze.c:492
+#: ../src/boards/maze.c:496
msgid ""
"Look at your position, then switch back to invisible mode to continue your "
"moves"
msgstr "Katso sijaintiasi ja vaihda takaisin näkymättömäksi jotta voit liikkua"
-#: ../src/boards/maze.c:494
+#: ../src/boards/maze.c:498
msgid ""
"Look at your position, then switch back to 3D mode to continue your moves"
msgstr ""
@@ -4464,7 +4492,8 @@ msgstr "Memory"
msgid "Find the matching pair"
msgstr "Löydä täsmäävä pari"
-#: ../src/boards/memory.c:864
+#. TRANSLATORS: Put here the mathematical operators for your language.
+#: ../src/boards/memory.c:859
msgid "+-×÷"
msgstr "+-×÷"
@@ -4477,12 +4506,12 @@ msgid "Select a Board"
msgstr "Valitse tehtävä"
#. Set here the way to display money. Change only the money sign, and it's place, always keep %.2f, it will be replaced by 0,34 if decimal is ',' in your locale
-#: ../src/boards/money.c:488
+#: ../src/boards/money.c:492
#, c-format
msgid "$ %.2f"
msgstr "$ %.2f"
-#: ../src/boards/money.c:501
+#: ../src/boards/money.c:505
#, c-format
msgid "$ %.0f"
msgstr "$ %.0f"
@@ -4491,49 +4520,49 @@ msgstr "$ %.0f"
msgid "Move the plane to catch the clouds in the correct order"
msgstr "Ohjaa lentokonetta ja kerää pilvet numerojärjestyksessä"
-#: ../src/boards/python.c:62 ../src/boards/python.c:86
+#: ../src/boards/python.c:62
msgid "Python Board"
msgstr "Python-osa"
-#: ../src/boards/python.c:63 ../src/boards/python.c:87
+#: ../src/boards/python.c:63
msgid "Special board that embeds python into gcompris."
msgstr "Erikoisosa, joka liittää Pythonin gcomprisiin."
-#: ../src/boards/python/admin/board_list.py:89
+#: ../src/boards/python/admin/board_list.py:90
msgid "Select a profile:"
msgstr "Valitse profiili:"
-#: ../src/boards/python/admin/board_list.py:145
+#: ../src/boards/python/admin/board_list.py:146
msgid "Filter"
msgstr "Suodatin"
-#: ../src/boards/python/admin/board_list.py:150
+#: ../src/boards/python/admin/board_list.py:151
msgid "Select all"
msgstr "Valitse kaikki"
-#: ../src/boards/python/admin/board_list.py:155
+#: ../src/boards/python/admin/board_list.py:156
msgid "Unselect all"
msgstr "Unohda kaikki valinnat"
-#: ../src/boards/python/admin/board_list.py:160
+#: ../src/boards/python/admin/board_list.py:161
msgid "Locales"
-msgstr "Maa-asetustot"
+msgstr ""
-#: ../src/boards/python/admin/board_list.py:165
+#: ../src/boards/python/admin/board_list.py:166
msgid "Locales sound"
-msgstr "Äänen maa-asetustot"
+msgstr ""
-#: ../src/boards/python/admin/board_list.py:170
+#: ../src/boards/python/admin/board_list.py:171
msgid "Wordlist"
msgstr "Sanalista"
-#: ../src/boards/python/admin/board_list.py:177
-#: ../src/boards/python/admin/group_user_list.py:144
-#: ../src/boards/python/admin/user_list.py:186
+#: ../src/boards/python/admin/board_list.py:178
+#: ../src/boards/python/admin/group_user_list.py:145
+#: ../src/boards/python/admin/user_list.py:187
msgid "Login"
msgstr "Kirjautuminen"
-#: ../src/boards/python/admin/board_list.py:235
+#: ../src/boards/python/admin/board_list.py:236
msgid "Main menu"
msgstr "Päävalikko"
@@ -4542,20 +4571,20 @@ msgstr "Päävalikko"
#. image = gtk.image_new_from_stock(gtk.STOCK_PREFERENCES, gtk.ICON_SIZE_MENU)
#. image.show()
#. column_pref.set_widget(image)
-#: ../src/boards/python/admin/board_list.py:292
+#: ../src/boards/python/admin/board_list.py:293
msgid "Active"
msgstr "Käytössä"
-#: ../src/boards/python/admin/board_list.py:293
+#: ../src/boards/python/admin/board_list.py:294
msgid "Board title"
msgstr "Laudan nimi"
-#: ../src/boards/python/admin/board_list.py:409
+#: ../src/boards/python/admin/board_list.py:410
#, python-format
msgid "Filter Boards difficulty for profile %s"
msgstr "Suodata laudat vaikeusasteen mukaan profiilille %s"
-#: ../src/boards/python/admin/board_list.py:440
+#: ../src/boards/python/admin/board_list.py:441
#, python-format
msgid ""
"<span size='x-large'> Select the difficulty range \n"
@@ -4570,10 +4599,10 @@ msgstr ""
#. the dict passed to the apply_callback
#. the returned value is the main GtkVBox of the window,
#. we can add what you want in it.
-#: ../src/boards/python/admin/board_list.py:631
-#: ../src/boards/python/admin/board_list.py:649
-#: ../src/boards/python/admin/wordlist.py:50 ../src/boards/python/login.py:535
-#: ../src/boards/python/pythontest.py:409 ../src/boards/python/tuxpaint.py:183
+#: ../src/boards/python/admin/board_list.py:632
+#: ../src/boards/python/admin/board_list.py:650
+#: ../src/boards/python/admin/wordlist.py:51 ../src/boards/python/login.py:536
+#: ../src/boards/python/pythontest.py:410 ../src/boards/python/tuxpaint.py:184
#, python-format
msgid ""
"<b>%s</b> configuration\n"
@@ -4582,8 +4611,8 @@ msgstr ""
"<b>%s</b> asetukset\n"
" profiilille <b>%s</b>"
-#: ../src/boards/python/admin/board_list.py:661
-#: ../src/boards/python/pythontest.py:473
+#: ../src/boards/python/admin/board_list.py:662
+#: ../src/boards/python/pythontest.py:474
msgid "Select sound locale"
msgstr "Valitse äänen maa-asetusto"
@@ -4615,15 +4644,15 @@ msgstr "Anna tehtäväksi kaikille tämän luokan käyttäjille"
#: ../src/boards/python/admin/class_edit.py:253
#: ../src/boards/python/admin/group_edit.py:265
-#: ../src/boards/python/admin/group_user_list.py:154
-#: ../src/boards/python/admin/user_list.py:196
+#: ../src/boards/python/admin/group_user_list.py:155
+#: ../src/boards/python/admin/user_list.py:197
msgid "First Name"
msgstr "Etunimi"
#: ../src/boards/python/admin/class_edit.py:264
#: ../src/boards/python/admin/group_edit.py:276
-#: ../src/boards/python/admin/group_user_list.py:164
-#: ../src/boards/python/admin/user_list.py:206
+#: ../src/boards/python/admin/group_user_list.py:165
+#: ../src/boards/python/admin/user_list.py:207
msgid "Last Name"
msgstr "Sukunimi"
@@ -4635,13 +4664,13 @@ msgstr "Vähintään luokan nimi täytyy antaa"
msgid "There is already a class with this name"
msgstr "Tämänniminen luokka on jo olemassa"
-#: ../src/boards/python/admin/class_list.py:169
+#: ../src/boards/python/admin/class_list.py:170
#: ../src/boards/python/admin/profile_edit.py:269
-#: ../src/boards/python/admin/profile_group_list.py:144
+#: ../src/boards/python/admin/profile_group_list.py:145
msgid "Class"
msgstr "Luokka"
-#: ../src/boards/python/admin/class_list.py:179
+#: ../src/boards/python/admin/class_list.py:180
msgid "Teacher"
msgstr "Opettaja"
@@ -4685,54 +4714,54 @@ msgstr "Vähintään ryhmän nimi täytyy antaa"
msgid "There is already a group with this name"
msgstr "Tämän niminen ryhmä on jo olemassa"
-#: ../src/boards/python/admin/group_list.py:86
+#: ../src/boards/python/admin/group_list.py:87
msgid "Select a class:"
msgstr "Valitse luokka:"
-#: ../src/boards/python/admin/group_list.py:214
+#: ../src/boards/python/admin/group_list.py:215
#: ../src/boards/python/admin/profile_edit.py:279
-#: ../src/boards/python/admin/profile_group_list.py:154
+#: ../src/boards/python/admin/profile_group_list.py:155
msgid "Group"
msgstr "Ryhmä"
-#: ../src/boards/python/admin/group_list.py:225
+#: ../src/boards/python/admin/group_list.py:226
#: ../src/boards/python/admin/profile_edit.py:289
-#: ../src/boards/python/admin/profile_group_list.py:164
-#: ../src/boards/python/admin/profile_list.py:198
+#: ../src/boards/python/admin/profile_group_list.py:165
+#: ../src/boards/python/admin/profile_list.py:199
msgid "Description"
msgstr "Kuvaus"
-#: ../src/boards/python/admin/group_list.py:322
+#: ../src/boards/python/admin/group_list.py:323
msgid "You must first select a group in the list"
msgstr "Valitse ensin ryhmä listasta"
-#: ../src/boards/python/admin/group_user_list.py:174
-#: ../src/boards/python/admin/user_list.py:216
+#: ../src/boards/python/admin/group_user_list.py:175
+#: ../src/boards/python/admin/user_list.py:217
msgid "Birth Date"
msgstr "Syntymäpäivä"
-#: ../src/boards/python/admin/module_boards.py:42
-#: ../src/boards/python/admin/module_boards.py:62
+#: ../src/boards/python/admin/module_boards.py:43
+#: ../src/boards/python/admin/module_boards.py:63
msgid "Boards"
msgstr "Laudat"
-#: ../src/boards/python/admin/module_groups.py:40
-#: ../src/boards/python/admin/module_groups.py:66
+#: ../src/boards/python/admin/module_groups.py:41
+#: ../src/boards/python/admin/module_groups.py:67
msgid "Groups"
msgstr "Ryhmät"
-#: ../src/boards/python/admin/module_profiles.py:40
-#: ../src/boards/python/admin/module_profiles.py:65
+#: ../src/boards/python/admin/module_profiles.py:41
+#: ../src/boards/python/admin/module_profiles.py:66
msgid "Profiles"
msgstr "Profiilit"
-#: ../src/boards/python/admin/module_users.py:41
-#: ../src/boards/python/admin/module_users.py:67
+#: ../src/boards/python/admin/module_users.py:42
+#: ../src/boards/python/admin/module_users.py:68
msgid "Classes"
msgstr "Luokat"
-#: ../src/boards/python/admin/module_users.py:41
-#: ../src/boards/python/admin/module_users.py:67
+#: ../src/boards/python/admin/module_users.py:42
+#: ../src/boards/python/admin/module_users.py:68
msgid "Users"
msgstr "Käyttäjät"
@@ -4765,16 +4794,16 @@ msgstr "Vähintään profiilin nimi täytyy antaa"
msgid "There is already a profile with this name"
msgstr "Tämän niminen profiilin on jo olemassa"
-#: ../src/boards/python/admin/profile_list.py:121
-#: ../src/gcompris/board_config.c:668 ../src/gcompris/board_config.c:832
+#: ../src/boards/python/admin/profile_list.py:122
+#: ../src/gcompris/board_config.c:663 ../src/gcompris/board_config.c:827
msgid "Default"
msgstr "Oletus"
-#: ../src/boards/python/admin/profile_list.py:188
+#: ../src/boards/python/admin/profile_list.py:189
msgid "Profile"
msgstr "Profiili"
-#: ../src/boards/python/admin/profile_list.py:315
+#: ../src/boards/python/admin/profile_list.py:316
msgid "[Default]"
msgstr "[Oletus]"
@@ -4820,7 +4849,7 @@ msgstr ""
msgid "There is already a user with this login"
msgstr "Tällä kirjautumisnimellä on jo käyttäjä"
-#: ../src/boards/python/admin/user_list.py:291
+#: ../src/boards/python/admin/user_list.py:292
msgid ""
"To import a user list from a file, first select a class.\n"
"FILE FORMAT: Your file must be formatted like this:\n"
@@ -4834,7 +4863,7 @@ msgstr ""
"\n"
"Erotin tunnistetaan automaattisesti ja voi olla joko ',', ';' tai ':'"
-#: ../src/boards/python/admin/user_list.py:370
+#: ../src/boards/python/admin/user_list.py:371
#, python-format
msgid ""
"One or more logins are not unique !\n"
@@ -4843,19 +4872,28 @@ msgstr ""
"Yksi tai useampi kirjautumistunnus ei ole yksilöllinen!\n"
"Sinun täytyy muokata niitä: %s !"
-#: ../src/boards/python/anim.py:2208
+#. gcompris.utils.dialog(_('Python xml module bot found. SVG is disabled. Install the python xml module to enable SVG Save/restore.'), None)
+#: ../src/boards/python/anim.py:418
+msgid ""
+"Python xml module not found. SVG is disabled. Install the python xml module "
+"to enable SVG Save/restore."
+msgstr ""
+"Pythonin XMl-osaa ei löytynyt. SVG on pois käytöstä. Asenna pythonin XML-osa "
+"jos haluat käyttää SVG-tallennusta tai -palautusta."
+
+#: ../src/boards/python/anim.py:2207
msgid "SVG is disabled. Install python xml module to enable it"
msgstr "SVG ei ole käytössä. Asenna pythonin XML-osa jos haluat käyttää sitä"
-#: ../src/boards/python/anim.py:2364
+#: ../src/boards/python/anim.py:2363
msgid "Warning: the following images cannot be accessed on your system.\n"
msgstr "Varoitus: seuraavia kuvia ei löydy järjestelmästä.\n"
-#: ../src/boards/python/anim.py:2366
+#: ../src/boards/python/anim.py:2365
msgid "The corresponding items have been skipped."
msgstr "Niihin liittyvät osat sivuutetaan."
-#: ../src/boards/python/electric.py:94
+#: ../src/boards/python/electric.py:96
msgid ""
"Cannot find the 'gnucap' electric simulator.\n"
"You can download and install it from:\n"
@@ -4873,31 +4911,31 @@ msgstr ""
"Voit käyttää tätä tehtävää sähkökaavioden piirtoon ilman elektroniikan "
"simulointia."
-#: ../src/boards/python/gnumch.py:94
+#: ../src/boards/python/gnumch.py:95
#, python-format
msgid ", %d"
msgstr ", %d"
-#: ../src/boards/python/gnumch.py:95
+#: ../src/boards/python/gnumch.py:96
#, python-format
msgid " and %d"
msgstr " ja %d"
-#: ../src/boards/python/gnumch.py:115
+#: ../src/boards/python/gnumch.py:116
#, python-format
msgid "%d is divisible by %s."
msgstr "%d on jaettavissa %s:lla"
-#: ../src/boards/python/gnumch.py:119
+#: ../src/boards/python/gnumch.py:120
msgid "1 is not a prime number."
msgstr "1 ei ole alkuluku."
-#: ../src/boards/python/gnumch.py:129
+#: ../src/boards/python/gnumch.py:130
#, python-format
msgid "Primes less than %d"
msgstr "%d pienemmät alkuluvut"
-#: ../src/boards/python/gnumch.py:150
+#: ../src/boards/python/gnumch.py:151
#, python-format
msgid ""
"Multiples of %d include %s,\n"
@@ -4906,57 +4944,57 @@ msgstr ""
"%d kertoimet sisältää %s,\n"
"mutta %d ei ole %d kerroin."
-#: ../src/boards/python/gnumch.py:159
+#: ../src/boards/python/gnumch.py:160
#, python-format
msgid "Factors of %d"
msgstr "%d tekijät"
-#: ../src/boards/python/gnumch.py:192
+#: ../src/boards/python/gnumch.py:193
#, python-format
msgid "%s are the factors of %d."
msgstr "%s ovat %d tekijät."
-#: ../src/boards/python/gnumch.py:204
+#: ../src/boards/python/gnumch.py:205
#, python-format
msgid "Multiples of %d"
msgstr "%d kertoimet"
-#: ../src/boards/python/gnumch.py:238
+#: ../src/boards/python/gnumch.py:239
#, python-format
msgid "%s = %d"
msgstr "%s = %d"
-#: ../src/boards/python/gnumch.py:249
+#: ../src/boards/python/gnumch.py:250
#, python-format
msgid "%d + %d"
msgstr "%d + %d"
-#: ../src/boards/python/gnumch.py:254
+#: ../src/boards/python/gnumch.py:255
#, python-format
msgid "%d − %d"
msgstr "%d − %d"
-#: ../src/boards/python/gnumch.py:259
+#: ../src/boards/python/gnumch.py:260
#, python-format
msgid "%d × %d"
msgstr "%d × %d"
-#: ../src/boards/python/gnumch.py:263
+#: ../src/boards/python/gnumch.py:264
#, python-format
msgid "%d ÷ %d"
msgstr "%d ÷ %d"
-#: ../src/boards/python/gnumch.py:271
+#: ../src/boards/python/gnumch.py:272
#, python-format
msgid "Equal to %d"
msgstr "Yhtä kuin %d"
-#: ../src/boards/python/gnumch.py:292
+#: ../src/boards/python/gnumch.py:293
#, python-format
msgid "Not equal to %d"
msgstr "Erisuuri kuin %d"
-#: ../src/boards/python/gnumch.py:434
+#: ../src/boards/python/gnumch.py:435
msgid ""
"You were eaten by a Troggle.\n"
"Press <Return> to continue."
@@ -4964,11 +5002,11 @@ msgstr ""
"Troggle söi sinut.\n"
"Paina <Return> jatkaaksesi."
-#: ../src/boards/python/gnumch.py:483
+#: ../src/boards/python/gnumch.py:484
msgid "You ate a wrong number.\n"
msgstr "Söit väärän numeron.\n"
-#: ../src/boards/python/gnumch.py:484
+#: ../src/boards/python/gnumch.py:485
msgid ""
"\n"
"Press <Return> to continue."
@@ -4976,7 +5014,7 @@ msgstr ""
"\n"
"Paina <Return> jatkaaksesi."
-#: ../src/boards/python/gnumch.py:777
+#: ../src/boards/python/gnumch.py:778
msgid ""
"T\n"
"R\n"
@@ -4994,50 +5032,50 @@ msgstr ""
"L\n"
"E"
-#: ../src/boards/python/guessnumber.py:205
+#: ../src/boards/python/guessnumber.py:206
#, python-format
msgid "Guess a number between %d and %d"
msgstr "Arvaa numero väliltä %d ja %d"
-#: ../src/boards/python/guessnumber.py:318
#: ../src/boards/python/guessnumber.py:319
+#: ../src/boards/python/guessnumber.py:320
#, python-format
msgid "Please enter a number between %d and %d"
msgstr "Syötä numero väliltä %d ja %d"
-#: ../src/boards/python/guessnumber.py:324
#: ../src/boards/python/guessnumber.py:325
+#: ../src/boards/python/guessnumber.py:326
msgid "Out of range"
msgstr "Rajojen ulkopuolella"
-#: ../src/boards/python/guessnumber.py:331
#: ../src/boards/python/guessnumber.py:332
+#: ../src/boards/python/guessnumber.py:333
msgid "Too high"
msgstr "Liian suuri"
-#: ../src/boards/python/guessnumber.py:334
#: ../src/boards/python/guessnumber.py:335
+#: ../src/boards/python/guessnumber.py:336
msgid "Too low"
msgstr "Liian pieni"
-#: ../src/boards/python/login.py:114
+#: ../src/boards/python/login.py:115
msgid "Profile: "
msgstr "Profiili:"
-#: ../src/boards/python/login.py:268 ../src/boards/python/login.py:277
+#: ../src/boards/python/login.py:269 ../src/boards/python/login.py:278
msgid "Login: "
msgstr "Kirjautuminen:"
#. toggle box
-#: ../src/boards/python/login.py:550
+#: ../src/boards/python/login.py:551
msgid "Enter login to log in"
msgstr "Kirjaudu sisään"
-#: ../src/boards/python/mosaic.py:193
+#: ../src/boards/python/mosaic.py:194
msgid "Rebuild the same mosaic on the right area"
msgstr "Rakenna sama mosaiikki oikealle puolelle"
-#: ../src/boards/python/melody.py:115
+#: ../src/boards/python/melody.py:116
msgid ""
"Error: this activity cannot be played with the\n"
"sound effects disabled.\n"
@@ -5048,38 +5086,34 @@ msgstr ""
"ole käytössä.\n"
"Mene asetuksiin ja ota äänen äänet käyttöön"
-#: ../src/boards/python/oscar_and_friends.py:116
+#: ../src/boards/python/oscar_and_friends.py:117
msgid ""
"Below the surface, Oscar the octopus and his friends sat on a rock,\n"
"watching the bad weather above them."
msgstr ""
-"Pinnan alla Matti Mustekala ja hänen ystävänsä istuivat kivellä\n"
-"katselemessa huonoa säätä."
-#: ../src/boards/python/oscar_and_friends.py:117
+#: ../src/boards/python/oscar_and_friends.py:118
msgid ""
"They were all happy that the storms never reached all the way down to them."
msgstr ""
-"He olivat tyytyväisiä, etteivät myrskyt koskaan saavuttaneet heitä."
-#: ../src/boards/python/oscar_and_friends.py:118
+#: ../src/boards/python/oscar_and_friends.py:119
msgid ""
"No matter how bad it was up there, the bottom was always calm and quiet."
msgstr ""
-"Ei väliä kuinka huono sää pinnan yllä oli, pohjalla oli aina rauhallista."
-#: ../src/boards/python/oscar_and_friends.py:119
+#: ../src/boards/python/oscar_and_friends.py:120
msgid "Oscar's best friends were Charlie the crab and Sandy the sea-star."
-msgstr "Matin parhaat ystävät olivat Risto Rapu ja Maija Meritähti."
+msgstr ""
-#: ../src/boards/python/pythontest.py:148
+#: ../src/boards/python/pythontest.py:149
msgid ""
"This is the first plugin in gcompris coded in the Python\n"
"Programming language."
msgstr ""
"Tämä on ensimmäinen Gcomprisin liitännäinen, joka on kirjoitettu pythonilla."
-#: ../src/boards/python/pythontest.py:157
+#: ../src/boards/python/pythontest.py:158
msgid ""
"It is now possible to develop gcompris activities in C or in Python.\n"
"Thanks to Olivier Samys who makes this possible."
@@ -5087,102 +5121,102 @@ msgstr ""
"Nyt on mahdollista luoda gcomprisin osia sekä C:llä että pythonilla.\n"
"Kiitos tästä Olivier Samynille."
-#: ../src/boards/python/pythontest.py:166
+#: ../src/boards/python/pythontest.py:167
msgid "This activity is not playable, just a test"
msgstr "Tämä tehtävä ei ole vieläl pelattavissa, se on pelkkä testi"
#. toggle box
-#: ../src/boards/python/pythontest.py:414
+#: ../src/boards/python/pythontest.py:415
msgid "Disable line drawing in circle"
msgstr "Älä käytä viivanpiirtoa ympyrässä"
#. combo box
-#: ../src/boards/python/pythontest.py:423
+#: ../src/boards/python/pythontest.py:424
msgid "Color of the line"
msgstr "Viivan väri"
#. spin button for int
-#: ../src/boards/python/pythontest.py:434
+#: ../src/boards/python/pythontest.py:435
msgid "Distance between circles"
msgstr "Ympyröiden välinen etäisyys"
#. radio buttons for circle or rectangle
-#: ../src/boards/python/pythontest.py:445
+#: ../src/boards/python/pythontest.py:446
msgid "Use circles"
msgstr "Käytä ympyröitä"
-#: ../src/boards/python/pythontest.py:446
+#: ../src/boards/python/pythontest.py:447
msgid "Use rectangles"
msgstr "Käytä suorakaiteita"
-#: ../src/boards/python/pythontest.py:449
+#: ../src/boards/python/pythontest.py:450
msgid "Choice of pattern"
msgstr "Valittu kuvio"
-#: ../src/boards/python/redraw.py:347 ../src/boards/python/redraw.py:357
+#: ../src/boards/python/redraw.py:348 ../src/boards/python/redraw.py:358
msgid "Level"
msgstr "Taso"
-#: ../src/boards/python/redraw.py:901 ../src/boards/python/redraw.py:904
+#: ../src/boards/python/redraw.py:902 ../src/boards/python/redraw.py:905
msgid "Coordinate"
msgstr "Koordinaatit"
-#: ../src/boards/python/searace.py:200 ../src/boards/python/searace.py:205
-#: ../src/boards/python/searace.py:231
+#: ../src/boards/python/searace.py:201 ../src/boards/python/searace.py:206
+#: ../src/boards/python/searace.py:232
msgid "The race is already being run"
msgstr "Kilpailu on jo käynnissä"
#. Manage default cases (no params given)
#. Final move, add an ofset because we loose space in abs()
-#: ../src/boards/python/searace.py:428 ../src/boards/python/searace.py:453
-#: ../src/boards/python/searace.py:534 ../src/boards/python/searace.py:853
-#: ../src/boards/python/searace.py:882 ../src/boards/python/searace.py:977
-#: ../src/boards/python/searace.py:983 ../src/boards/python/searace.py:991
+#: ../src/boards/python/searace.py:429 ../src/boards/python/searace.py:454
+#: ../src/boards/python/searace.py:535 ../src/boards/python/searace.py:854
+#: ../src/boards/python/searace.py:883 ../src/boards/python/searace.py:978
+#: ../src/boards/python/searace.py:984 ../src/boards/python/searace.py:992
msgid "forward"
msgstr "eteenpäin"
-#: ../src/boards/python/searace.py:525
+#: ../src/boards/python/searace.py:526
msgid "COMMANDS ARE"
msgstr "KÄSKYT OVAT"
#. The two boat arrived in a close time frame (1s), it's a draw
-#: ../src/boards/python/searace.py:751
+#: ../src/boards/python/searace.py:752
msgid "This is a draw"
msgstr "Tämä on tasapeli"
-#: ../src/boards/python/searace.py:758
+#: ../src/boards/python/searace.py:759
msgid "The Red boat has won"
msgstr "Punainen vene voitti"
-#: ../src/boards/python/searace.py:761
+#: ../src/boards/python/searace.py:762
msgid "The Green boat has won"
msgstr "Vihreä vene voitti"
-#: ../src/boards/python/searace.py:779 ../src/boards/python/searace.py:1021
+#: ../src/boards/python/searace.py:780 ../src/boards/python/searace.py:1022
msgid "Angle:"
msgstr "Kulma:"
-#: ../src/boards/python/searace.py:779
+#: ../src/boards/python/searace.py:780
msgid "Wind:"
msgstr "Tuuli:"
-#: ../src/boards/python/searace.py:860
+#: ../src/boards/python/searace.py:861
msgid "Syntax error at line"
msgstr "Syntaksivirhe rivillä"
-#: ../src/boards/python/searace.py:878
+#: ../src/boards/python/searace.py:879
msgid "The command"
msgstr "Komento"
-#: ../src/boards/python/searace.py:897
+#: ../src/boards/python/searace.py:898
msgid "Unknown command at line"
msgstr "Tuntematon komento rivillä"
-#: ../src/boards/python/searace.py:1021
+#: ../src/boards/python/searace.py:1022
msgid "Distance:"
msgstr "Etäisyys:"
-#: ../src/boards/python/tuxpaint.py:119
+#: ../src/boards/python/tuxpaint.py:120
msgid ""
"Cannot find Tuxpaint.\n"
"Install it to use this activity !"
@@ -5190,39 +5224,39 @@ msgstr ""
"Tuxpaintia ei löydy.\n"
"Asenna se, jos haluat käyttää tätä tehtävää!"
-#: ../src/boards/python/tuxpaint.py:132
+#: ../src/boards/python/tuxpaint.py:133
msgid "Waiting for Tuxpaint to finish"
msgstr "Odotetaan tuxpaintin sulkeutumista"
-#: ../src/boards/python/tuxpaint.py:187
+#: ../src/boards/python/tuxpaint.py:188
msgid "Inherit fullscreen setting from GCompris"
msgstr "Hae kokoruudun asetukset GComprisilta"
-#: ../src/boards/python/tuxpaint.py:191
+#: ../src/boards/python/tuxpaint.py:192
msgid "Inherit size setting from GCompris (800x600, 640x480)"
msgstr "Hae koon asetukset GComprisilta (800x600, 640x480)"
-#: ../src/boards/python/tuxpaint.py:195
+#: ../src/boards/python/tuxpaint.py:196
msgid "Disable shape rotation"
msgstr "Älä pyöritä kappaleita"
-#: ../src/boards/python/tuxpaint.py:199
+#: ../src/boards/python/tuxpaint.py:200
msgid "Show Uppercase text only"
msgstr "Näytä vain isoja kirjaimia"
-#: ../src/boards/python/tuxpaint.py:203
+#: ../src/boards/python/tuxpaint.py:204
msgid "Disable stamps"
msgstr "Älä käytä leimoja"
-#: ../src/boards/railroad.c:91
+#: ../src/boards/railroad.c:95
msgid "Memory game"
msgstr "Muistipeli"
-#: ../src/boards/railroad.c:92
+#: ../src/boards/railroad.c:96
msgid "Build a train according to the model"
msgstr "Tehdäänkö samanlainen juna?"
-#: ../src/boards/reading.c:225 ../src/boards/wordsgame.c:205
+#: ../src/boards/reading.c:227 ../src/boards/wordsgame.c:207
msgid ""
"Error: We can't find\n"
"a list of words to play this game.\n"
@@ -5230,42 +5264,42 @@ msgstr ""
"Virhe: listaa sanoista\n"
"tämän pelin pelaamiseksi ei löydy.\n"
-#: ../src/boards/reading.c:379
+#: ../src/boards/reading.c:381
msgid "Please, check if the word"
msgstr "Katso onko sana"
-#: ../src/boards/reading.c:399
+#: ../src/boards/reading.c:401
msgid "is being displayed"
msgstr "näkyvissä"
-#: ../src/boards/reading.c:573
+#: ../src/boards/reading.c:575
msgid "I am Ready"
msgstr "Olen valmis."
-#: ../src/boards/reading.c:613
+#: ../src/boards/reading.c:615
msgid "Yes, I saw it"
msgstr "kyllä, näin sen."
-#: ../src/boards/reading.c:643
+#: ../src/boards/reading.c:645
msgid "No, it was not there"
msgstr "Ei se siinä ollutkaan!"
#. Report what was wrong in the log
-#: ../src/boards/reading.c:681
+#: ../src/boards/reading.c:683
#, c-format
msgid "The word to find was '%s'"
msgstr "Löydettävä sana oli '%s'"
-#: ../src/boards/reading.c:684
+#: ../src/boards/reading.c:686
msgid "But it was not displayed"
msgstr "Mutta se ei ollut näkyvissä"
-#: ../src/boards/reading.c:686
+#: ../src/boards/reading.c:688
msgid "And it was displayed"
msgstr "Oli näkyvissä"
#. Enter Edit Mode
-#: ../src/boards/shapegame.c:434
+#: ../src/boards/shapegame.c:431
msgid ""
"You have entered Edit mode\n"
"Move the puzzle items;\n"
@@ -5277,7 +5311,7 @@ msgstr ""
"'s' tallentaaksesi\n"
"'d' nähdäksesi kaikki muodot"
-#: ../src/boards/shapegame.c:442
+#: ../src/boards/shapegame.c:439
msgid ""
"The data from this activity are saved under\n"
"/tmp/gcompris-board.xml"
@@ -5285,20 +5319,20 @@ msgstr ""
"Tämän osan tiedot on tallennettu tiedostoon\n"
"/tmp/gcompris-board.xml"
-#: ../src/boards/submarine.c:198
+#: ../src/boards/submarine.c:201
msgid "Submarine"
msgstr "Sukellusvene"
-#: ../src/boards/submarine.c:199
+#: ../src/boards/submarine.c:202
msgid "Control the depth of a submarine"
msgstr "Säädä sukellusveneen syvyyttä"
-#: ../src/boards/target.c:281 ../src/boards/target.c:546
+#: ../src/boards/target.c:285 ../src/boards/target.c:550
#, c-format
msgid "Points = %s"
msgstr "Pisteet = %s"
-#: ../src/boards/target.c:403
+#: ../src/boards/target.c:407
#, c-format
msgid ""
"Wind speed = %d\n"
@@ -5307,12 +5341,12 @@ msgstr ""
"Tuulen nopeus = %d\n"
"kilometriä tunnissa"
-#: ../src/boards/target.c:470
+#: ../src/boards/target.c:474
#, c-format
msgid "Distance to target = %d meters"
msgstr "%d metriä maaliin."
-#: ../src/gcompris/about.c:57
+#: ../src/gcompris/about.c:62
msgid ""
"Author: Bruno Coudoin\n"
"Contribution: Pascal Georges, Jose Jorge\n"
@@ -5327,7 +5361,7 @@ msgstr ""
"Taustamusiikki: Rico Da Halvarez\n"
#. TRANSLATORS: Replace this string with your names, one name per line.
-#: ../src/gcompris/about.c:65
+#: ../src/gcompris/about.c:70
msgid "translator_credits"
msgstr ""
"Rami Aubourg-Kaires, Merja Kaires, Satu Ellermaa, 2003-2004\n"
@@ -5337,15 +5371,15 @@ msgstr ""
"Jyrki Kuoppala, 2001\n"
"http://gnome.fi/"
-#: ../src/gcompris/about.c:96 ../src/gcompris/about.c:106
+#: ../src/gcompris/about.c:101 ../src/gcompris/about.c:111
msgid "About GCompris"
msgstr "Tietoja GComprisista"
-#: ../src/gcompris/about.c:117 ../src/gcompris/about.c:126
+#: ../src/gcompris/about.c:122 ../src/gcompris/about.c:131
msgid "Translators:"
msgstr "Kääntäjät:"
-#: ../src/gcompris/about.c:249
+#: ../src/gcompris/about.c:254
msgid ""
"GCompris Home Page\n"
"http://gcompris.net"
@@ -5353,7 +5387,7 @@ msgstr ""
"GCompris Kotisivut\n"
"http://gcompris.net/"
-#: ../src/gcompris/about.c:271
+#: ../src/gcompris/about.c:276
msgid ""
"This software is a GNU Package and is released under the GNU General Public "
"License"
@@ -5361,265 +5395,265 @@ msgstr ""
"Tämä ohjelma on GNU-ohjelma ja on julkaistu GNU General Public Licensen "
"mukaisesti"
-#: ../src/gcompris/about.c:334 ../src/gcompris/about.c:344
-#: ../src/gcompris/config.c:464 ../src/gcompris/config.c:474
-#: ../src/gcompris/dialog.c:97 ../src/gcompris/help.c:376
-#: ../src/gcompris/help.c:386 ../src/gcompris/images_selector.c:317
+#: ../src/gcompris/about.c:339 ../src/gcompris/about.c:349
+#: ../src/gcompris/config.c:469 ../src/gcompris/config.c:479
+#: ../src/gcompris/dialog.c:103 ../src/gcompris/help.c:381
+#: ../src/gcompris/help.c:391 ../src/gcompris/images_selector.c:317
msgid "OK"
msgstr "OK"
-#: ../src/gcompris/bar.c:568
+#: ../src/gcompris/bar.c:567
msgid "GCompris confirmation"
msgstr "GComprisin vahvistus"
-#: ../src/gcompris/bar.c:569
+#: ../src/gcompris/bar.c:568
msgid "Are you sure you want to quit?"
msgstr "Haluatko varmasti lopettaa?"
-#: ../src/gcompris/bar.c:570
+#: ../src/gcompris/bar.c:569
msgid "Yes, I am sure!"
msgstr "Kyllä, haluan lopettaa!"
-#: ../src/gcompris/bar.c:571
+#: ../src/gcompris/bar.c:570
msgid "No, I want to keep going"
msgstr "Ei, haluan jatkaa pelaamista."
-#: ../src/gcompris/board.c:181
+#: ../src/gcompris/board.c:177
msgid "Dynamic module loading is not supported. gcompris cannot load.\n"
msgstr "Dynaaminen moduulin lataus ei toiminut. Gcompris ei voi startata.\n"
-#: ../src/gcompris/board_config.c:700
+#: ../src/gcompris/board_config.c:695
msgid ""
"Select the language\n"
" to use in the board"
msgstr "Valitse kentässä käytettävä kieli."
-#: ../src/gcompris/config.c:59
+#: ../src/gcompris/config.c:64
msgid "Your system default"
msgstr "Järjestelmän oletusasetus"
-#: ../src/gcompris/config.c:60
+#: ../src/gcompris/config.c:65
msgid "Amharic"
msgstr "Amhari"
-#: ../src/gcompris/config.c:61
+#: ../src/gcompris/config.c:66
msgid "Arabic"
msgstr "Arabia"
-#: ../src/gcompris/config.c:62
+#: ../src/gcompris/config.c:67
msgid "Turkish (Azerbaijan)"
msgstr "Turkki (Azerbajzan)"
-#: ../src/gcompris/config.c:63
+#: ../src/gcompris/config.c:68
msgid "Bulgarian"
msgstr "Bulgaria"
-#: ../src/gcompris/config.c:64
+#: ../src/gcompris/config.c:69
msgid "Catalan"
msgstr "Katalonia"
-#: ../src/gcompris/config.c:66
+#: ../src/gcompris/config.c:71
msgid "Danish"
msgstr "Tanska"
-#: ../src/gcompris/config.c:67
+#: ../src/gcompris/config.c:72
msgid "German"
msgstr "Saksa"
-#: ../src/gcompris/config.c:68
+#: ../src/gcompris/config.c:73
msgid "Greek"
msgstr "Kreikka"
-#: ../src/gcompris/config.c:69
+#: ../src/gcompris/config.c:74
msgid "English (Canada)"
msgstr "Englanti (Kanada)"
-#: ../src/gcompris/config.c:70
+#: ../src/gcompris/config.c:75
msgid "English (Great Britain)"
msgstr "Englanti (Iso-Britannia)"
-#: ../src/gcompris/config.c:71
+#: ../src/gcompris/config.c:76
msgid "Spanish"
msgstr "Espanja"
-#: ../src/gcompris/config.c:72
+#: ../src/gcompris/config.c:77
msgid "Basque"
msgstr "Baski"
-#: ../src/gcompris/config.c:73
+#: ../src/gcompris/config.c:78
msgid "Finnish"
msgstr "Suomi"
-#: ../src/gcompris/config.c:74
+#: ../src/gcompris/config.c:79
msgid "French"
msgstr "Ranska"
-#: ../src/gcompris/config.c:75
+#: ../src/gcompris/config.c:80
msgid "Irish (Gaelic)"
msgstr "Iiri (Gaeli)"
-#: ../src/gcompris/config.c:76
+#: ../src/gcompris/config.c:81
msgid "Hebrew"
msgstr "Heprea"
-#: ../src/gcompris/config.c:77
+#: ../src/gcompris/config.c:82
msgid "Hindi"
msgstr "Hindi"
-#: ../src/gcompris/config.c:78
+#: ../src/gcompris/config.c:83
msgid "Gujarati"
msgstr "Gujarati"
-#: ../src/gcompris/config.c:79
+#: ../src/gcompris/config.c:84
msgid "Punjabi"
msgstr "Punjabi"
-#: ../src/gcompris/config.c:80
+#: ../src/gcompris/config.c:85
msgid "Hungarian"
msgstr "Unkari"
-#: ../src/gcompris/config.c:81
+#: ../src/gcompris/config.c:86
msgid "Croatian"
msgstr "Kroatia"
-#: ../src/gcompris/config.c:82
+#: ../src/gcompris/config.c:87
msgid "Italian"
msgstr "Italia"
-#: ../src/gcompris/config.c:83
+#: ../src/gcompris/config.c:88
msgid "Georgian"
msgstr "Georgia"
-#: ../src/gcompris/config.c:84
+#: ../src/gcompris/config.c:89
msgid "Lithuanian"
msgstr "Liettua"
-#: ../src/gcompris/config.c:85
+#: ../src/gcompris/config.c:90
msgid "Macedonian"
msgstr "Makedonia"
-#: ../src/gcompris/config.c:86
+#: ../src/gcompris/config.c:91
msgid "Malayalam"
msgstr "Malayalam"
-#: ../src/gcompris/config.c:87
+#: ../src/gcompris/config.c:92
msgid "Marathi"
msgstr "Marathi"
-#: ../src/gcompris/config.c:88
+#: ../src/gcompris/config.c:93
msgid "Malay"
msgstr "Malaiji"
-#: ../src/gcompris/config.c:89
+#: ../src/gcompris/config.c:94
msgid "Nepal"
msgstr "Nepali"
-#: ../src/gcompris/config.c:90
+#: ../src/gcompris/config.c:95
msgid "Dutch"
msgstr "Hollanti"
-#: ../src/gcompris/config.c:91
+#: ../src/gcompris/config.c:96
msgid "Norwegian Bokmal"
msgstr "Norja (Bokmal)"
-#: ../src/gcompris/config.c:92
+#: ../src/gcompris/config.c:97
msgid "Norwegian Nynorsk"
msgstr "Norja (Nynorsk)"
-#: ../src/gcompris/config.c:93
+#: ../src/gcompris/config.c:98
msgid "Polish"
msgstr "Puola"
-#: ../src/gcompris/config.c:94
+#: ../src/gcompris/config.c:99
msgid "Portuguese"
msgstr "Portugali"
-#: ../src/gcompris/config.c:95
+#: ../src/gcompris/config.c:100
msgid "Portuguese (Brazil)"
msgstr "Portugali (Brasilia)"
-#: ../src/gcompris/config.c:96
+#: ../src/gcompris/config.c:101
msgid "Romanian"
msgstr "Romania"
-#: ../src/gcompris/config.c:97
+#: ../src/gcompris/config.c:102
msgid "Russian"
msgstr "Venäjä"
-#: ../src/gcompris/config.c:98
+#: ../src/gcompris/config.c:103
msgid "Kinyarwanda"
msgstr "Kinyawanda"
-#: ../src/gcompris/config.c:99
+#: ../src/gcompris/config.c:104
msgid "Slovak"
msgstr "Slovakia"
-#: ../src/gcompris/config.c:100
+#: ../src/gcompris/config.c:105
msgid "Slovenian"
msgstr "Slovenia"
-#: ../src/gcompris/config.c:101
+#: ../src/gcompris/config.c:106
msgid "Albanian"
msgstr "Albania"
-#: ../src/gcompris/config.c:102
+#: ../src/gcompris/config.c:107
msgid "Serbian (Latin)"
msgstr "Serbia (latinalaiset aakkoset)"
-#: ../src/gcompris/config.c:103
+#: ../src/gcompris/config.c:108
msgid "Serbian"
msgstr "Serbi"
-#: ../src/gcompris/config.c:104
+#: ../src/gcompris/config.c:109
msgid "Swedish"
msgstr "Ruotsi"
#. "ta_IN.UTF-8", N_("Tamil"),
-#: ../src/gcompris/config.c:106
+#: ../src/gcompris/config.c:111
msgid "Thai"
msgstr "Thai"
-#: ../src/gcompris/config.c:107
+#: ../src/gcompris/config.c:112
msgid "Turkish"
msgstr "Turkki"
-#: ../src/gcompris/config.c:108
+#: ../src/gcompris/config.c:113
msgid "Vietnamese"
msgstr "Vietnam"
-#: ../src/gcompris/config.c:109
+#: ../src/gcompris/config.c:114
msgid "Walloon"
msgstr "Belgian hollanti"
-#: ../src/gcompris/config.c:110
+#: ../src/gcompris/config.c:115
msgid "Chinese (Simplified)"
msgstr "Kiina (yksinkertaistettu)"
-#: ../src/gcompris/config.c:111
+#: ../src/gcompris/config.c:116
msgid "Chinese (Traditional)"
msgstr "Kiina (perinteinen)"
-#: ../src/gcompris/config.c:116
+#: ../src/gcompris/config.c:121
msgid "No time limit"
msgstr "Ei aikarajaa"
-#: ../src/gcompris/config.c:117
+#: ../src/gcompris/config.c:122
msgid "Slow timer"
msgstr "Hidas kello"
-#: ../src/gcompris/config.c:118
+#: ../src/gcompris/config.c:123
msgid "Normal timer"
msgstr "Normaali kello"
-#: ../src/gcompris/config.c:119
+#: ../src/gcompris/config.c:124
msgid "Fast timer"
msgstr "Nopea kello"
-#: ../src/gcompris/config.c:124
+#: ../src/gcompris/config.c:129
msgid "800x600 (Default for gcompris)"
msgstr "800x600 (Gcomprisin oletus)"
-#: ../src/gcompris/config.c:129
+#: ../src/gcompris/config.c:134
msgid ""
"<i>Use Gcompris administration module\n"
"to filter boards</i>"
@@ -5627,50 +5661,50 @@ msgstr ""
"<i>Käytä GComprisin hallintaosaa\n"
"tehtävien rajaamiseen</i>"
-#: ../src/gcompris/config.c:184 ../src/gcompris/config.c:194
+#: ../src/gcompris/config.c:189 ../src/gcompris/config.c:199
msgid "GCompris Configuration"
msgstr "GComprisin asetukset"
-#: ../src/gcompris/config.c:270
+#: ../src/gcompris/config.c:275
msgid "Fullscreen"
msgstr "Kokoruututila"
-#: ../src/gcompris/config.c:313
+#: ../src/gcompris/config.c:318
msgid "Music"
msgstr "Musiikki"
-#: ../src/gcompris/config.c:341
+#: ../src/gcompris/config.c:346
msgid "Effect"
msgstr "Tehosteet"
-#: ../src/gcompris/config.c:377
+#: ../src/gcompris/config.c:382
#, c-format
msgid "Couldn't open skin dir: %s"
msgstr "Pixmap-hakemistoa %s ei voi avata"
-#: ../src/gcompris/config.c:408 ../src/gcompris/config.c:842
-#: ../src/gcompris/config.c:856
+#: ../src/gcompris/config.c:415 ../src/gcompris/config.c:843
+#: ../src/gcompris/config.c:857
#, c-format
msgid "Skin : %s"
msgstr "Teema: %s"
-#: ../src/gcompris/config.c:410
+#: ../src/gcompris/config.c:417
msgid "SKINS NOT FOUND"
msgstr "TEEMOJA EI LÖYTYNYT"
-#: ../src/gcompris/config.c:535
+#: ../src/gcompris/config.c:540
msgid "English (United State)"
msgstr "Englanti (Yhdysvallat)"
-#: ../src/gcompris/file_selector.c:334
+#: ../src/gcompris/file_selector.c:333
msgid "CANCEL"
msgstr "TAKAISIN"
-#: ../src/gcompris/file_selector.c:365
+#: ../src/gcompris/file_selector.c:364
msgid "LOAD"
msgstr "LATAA"
-#: ../src/gcompris/file_selector.c:365
+#: ../src/gcompris/file_selector.c:364
msgid "SAVE"
msgstr "TALLENNA"
@@ -5690,90 +5724,90 @@ msgstr ""
"Pysäytä Gcompris ja\n"
"lähetä virheilmoitus tekijöille."
-#: ../src/gcompris/gcompris.c:136
+#: ../src/gcompris/gcompris.c:132
msgid "run gcompris in fullscreen mode."
msgstr "Suorita kokoruututilassa."
-#: ../src/gcompris/gcompris.c:139
+#: ../src/gcompris/gcompris.c:135
msgid "run gcompris in window mode."
msgstr "Suorita ikkunassa."
-#: ../src/gcompris/gcompris.c:142
+#: ../src/gcompris/gcompris.c:138
msgid "run gcompris with sound enabled."
msgstr "Suorita änen kanssa."
-#: ../src/gcompris/gcompris.c:145
+#: ../src/gcompris/gcompris.c:141
msgid "run gcompris without sound."
msgstr "Suorita ilman ääntä."
-#: ../src/gcompris/gcompris.c:148
+#: ../src/gcompris/gcompris.c:144
msgid "run gcompris with the default gnome cursor."
msgstr "Suorita Gnomen käyttämällä kursorilla."
-#: ../src/gcompris/gcompris.c:151
+#: ../src/gcompris/gcompris.c:147
msgid "display only activities with this difficulty level."
msgstr "näytä ainoastaan tätä vaikeusastetta vastaavat tehtävät."
-#: ../src/gcompris/gcompris.c:154
+#: ../src/gcompris/gcompris.c:150
msgid "display debug informations on the console."
msgstr "Näytä debug-tiedot konsolilla."
-#: ../src/gcompris/gcompris.c:157
+#: ../src/gcompris/gcompris.c:153
msgid "Print the version of "
msgstr "Tulosta versio "
-#: ../src/gcompris/gcompris.c:160
+#: ../src/gcompris/gcompris.c:156
msgid "Use the antialiased canvas (slower)."
msgstr "Käytä antialiasoitua piirtoa (hitaampi)."
-#: ../src/gcompris/gcompris.c:163
+#: ../src/gcompris/gcompris.c:159
msgid "Disable XF86VidMode (No screen resolution change)."
msgstr "Poista XF86VidMode käytöstä (ei vaihdeta näytön tarkkuutta)."
-#: ../src/gcompris/gcompris.c:166
+#: ../src/gcompris/gcompris.c:162
+#, fuzzy
msgid ""
"Run gcompris with local menu (e.g -l /reading will let you play only "
"activities in the reading directory, -l /strategy/connect4 only the connect4 "
"activity)"
msgstr ""
-"Suorita gcompris paikallisella valikolla, esimerkiksi -l /reading "
-"antaa pelata vain lukutehtäviä, -l /boards/connect4 vain "
-"connect4-tehtävää."
+"Suorita gcompris halutulla valikolla, esimerkiksi -l /reading antaa pelata "
+"vain lukutehtäviä, -l /boards/connect4 vain connect4-tehtävää."
-#: ../src/gcompris/gcompris.c:169
+#: ../src/gcompris/gcompris.c:165
msgid "Run GCompris with local activity directory added to menu"
msgstr "Suorita gcompris näyttäen vain halutun valikon"
-#: ../src/gcompris/gcompris.c:172
+#: ../src/gcompris/gcompris.c:168
msgid "Run GCompris in administration and user-management mode"
msgstr "Suorita gcompris hallintatilassa"
-#: ../src/gcompris/gcompris.c:175
+#: ../src/gcompris/gcompris.c:171
msgid "Use alternate database for profiles"
msgstr "Käytä vaihtoehtoista profiilien tietokantaa"
-#: ../src/gcompris/gcompris.c:178
+#: ../src/gcompris/gcompris.c:174
msgid "Use alternate database for logs"
msgstr "Käytä vaihtoehtoista tietokantaa lokitiedoille"
-#: ../src/gcompris/gcompris.c:181
+#: ../src/gcompris/gcompris.c:177
msgid "Create the alternate database for profiles"
msgstr "Luo vaihtoehtoinen tietokanta profiileille"
-#: ../src/gcompris/gcompris.c:184
+#: ../src/gcompris/gcompris.c:180
msgid "Re-read XML Menus and store them in the database"
msgstr "Lue XML-valikot uudestaan ja tallenna ne tietokantaan"
-#: ../src/gcompris/gcompris.c:187
+#: ../src/gcompris/gcompris.c:183
msgid "Set the profile to use. Use 'gcompris -a' to create profiles"
msgstr "Aseta käytettävä profiili. Luo profiileja komennolla'gcompris -a'"
-#: ../src/gcompris/gcompris.c:190
+#: ../src/gcompris/gcompris.c:186
msgid "List all available profiles. Use 'gcompris -a' to create profiles"
msgstr ""
"Näytä olemassaolevat profiilit. Luo profiileja komennolla 'gcompris -a'"
-#: ../src/gcompris/gcompris.c:193
+#: ../src/gcompris/gcompris.c:189
msgid ""
"Shared directory location, for profiles and board-configuration data: "
"[$HOME/.gcompris/shared]"
@@ -5781,47 +5815,45 @@ msgstr ""
"Jaetun tiedon hakemiston sijainti. Sisältää profiilit ja tehtävien "
"asetustiedostot: [$HOME/.gcompris/shared]"
-#: ../src/gcompris/gcompris.c:196
+#: ../src/gcompris/gcompris.c:192
msgid "The location of user directories: [$HOME/.gcompris/users]"
msgstr "Käyttäjien hakemiston sijainti: [$HOME/.gcompris/users] "
-#: ../src/gcompris/gcompris.c:199
+#: ../src/gcompris/gcompris.c:195
msgid "Run the experimental activities"
msgstr "Siirry kokeellisiin tehtäviin"
-#: ../src/gcompris/gcompris.c:202
+#: ../src/gcompris/gcompris.c:198
msgid "Disable the quit button"
msgstr "Poista sulkemisnappi käytöstä"
-#: ../src/gcompris/gcompris.c:205
+#: ../src/gcompris/gcompris.c:201
msgid "Disable the config button"
msgstr "Poista asetusnappi käytöstä"
-#: ../src/gcompris/gcompris.c:208
+#: ../src/gcompris/gcompris.c:204
msgid "Display the resources on stdout based on the selected activities"
-msgstr "Näytä resurssit oletustulosteessa valittuihin tehtäviin perustuen"
+msgstr ""
-#: ../src/gcompris/gcompris.c:211
+#: ../src/gcompris/gcompris.c:207
msgid ""
"GCompris will get images, sounds and activity data from this server if not "
"found locally."
msgstr ""
-"GCompris hakee kuvat, äänet ja tehtävätiedot tältä palvelimelta, jos "
-"niitä ei löydy paikallisesti."
-#: ../src/gcompris/gcompris.c:214
+#: ../src/gcompris/gcompris.c:210
msgid ""
"Only when --server is provided, disable check for local resource first. Data "
"are always taken from the web server."
msgstr ""
-#: ../src/gcompris/gcompris.c:218
+#: ../src/gcompris/gcompris.c:214
msgid ""
-"In server mode, specify the cache directory used to avoid useless downloads."
+"In server mode, where is the cache directory to avoid useless downloads."
msgstr ""
-"Määrittele palvelintilassa käytettävän välimuistihakemiston sijainti."
+"Välimuistihakemiston sijainti palvelintilassa."
-#: ../src/gcompris/gcompris.c:858
+#: ../src/gcompris/gcompris.c:851
#, c-format
msgid ""
"GCompris is free software released under the GPL License. In order to "
@@ -5845,7 +5877,7 @@ msgstr ""
"Lisää tietoja aiheesta FSF:n sivuilta:\n"
"http://www.fsf.org/philosophy"
-#: ../src/gcompris/gcompris.c:1412
+#: ../src/gcompris/gcompris.c:1358
#, c-format
msgid ""
"GCompris\n"
@@ -5859,42 +5891,42 @@ msgstr ""
"Lisää tetoja täältä: http://gcompris.net\n"
#. check the list of possible values for -l, then exit
-#: ../src/gcompris/gcompris.c:1501
+#: ../src/gcompris/gcompris.c:1444
#, c-format
msgid "Use -l to access an activity directly.\n"
msgstr "Käytä valitsinta -l saadaksesi tietyn tehtävän suoraan.\n"
-#: ../src/gcompris/gcompris.c:1502
+#: ../src/gcompris/gcompris.c:1445
#, c-format
msgid "The list of available activities is :\n"
msgstr "Lista mahdollisista tehtävistä:\n"
-#: ../src/gcompris/gcompris.c:1672
+#: ../src/gcompris/gcompris.c:1609
#, c-format
msgid "The list of available profiles is:\n"
msgstr "Lista mahdollisista profiileista:\n"
-#: ../src/gcompris/gcompris_db.c:250
+#: ../src/gcompris/gcompris_db.c:252
msgid "Unaffected"
msgstr "Ei vaikutusta"
-#: ../src/gcompris/gcompris_db.c:251
+#: ../src/gcompris/gcompris_db.c:253
msgid "Users without a class"
msgstr "Luokkaan kuulumattomat käyttäjät"
-#: ../src/gcompris/help.c:194
+#: ../src/gcompris/help.c:199
msgid "Prerequisite"
msgstr "Edellytys"
-#: ../src/gcompris/help.c:222
+#: ../src/gcompris/help.c:227
msgid "Goal"
msgstr "Päämäärä"
-#: ../src/gcompris/help.c:250
+#: ../src/gcompris/help.c:255
msgid "Manual"
msgstr "Ohje"
-#: ../src/gcompris/help.c:278
+#: ../src/gcompris/help.c:283
msgid "Credit"
msgstr "Kiitokset"
@@ -5907,34 +5939,6 @@ msgstr "Aika loppui"
msgid "Remaining Time = %d"
msgstr "Aikaa jäljellä = %d"
-#~ msgid "Samuel Loyd"
-#~ msgstr "Samuel Loyd"
-
-#~ msgid "anticipate"
-#~ msgstr "aavista"
-
-#~ msgid "logical"
-#~ msgstr "looginen"
-
-#~ msgid "move"
-#~ msgstr "siirrä"
-
-#~ msgid "puzzle"
-#~ msgstr "palapeli"
-
-#~ msgid "slide"
-#~ msgstr "liu'uta"
-
-#~ msgid "taquin"
-#~ msgstr "taquin"
-
-#~ msgid ""
-#~ "Python xml module not found. SVG is disabled. Install the python xml "
-#~ "module to enable SVG Save/restore."
-#~ msgstr ""
-#~ "Pythonin XMl-osaa ei löytynyt. SVG on pois käytöstä. Asenna pythonin XML-"
-#~ "osa jos haluat käyttää SVG-tallennusta tai -palautusta."
-
#~ msgid "Multiple activities for kids"
#~ msgstr "Useita tehtäviä lapsille"
diff --git a/src/boards/Makefile.am b/src/boards/Makefile.am
index 0e8e04a..cd27119 100644
--- a/src/boards/Makefile.am
+++ b/src/boards/Makefile.am
@@ -23,6 +23,15 @@ cairo_ldflags =
cairo_cflags =
endif
+if PLATFORM_WIN32
+shared = -shared
+no_undefined = -no-undefined
+gc_libs = $(GCOMPRIS_LIBS)
+else
+shared =
+no_undefined =
+gc_libs
+endif
SUBDIRS= $(python_subdir)
@@ -80,192 +89,193 @@ INCLUDES = \
$(PYTHON_CFLAGS) \
$(PYGTK_CFLAGS) \
$(sqlite_cflags) \
- $(cairo_cflags)
+ $(cairo_cflags) \
+ -DBOARD_DLL_EXPORT
-libdraw_la_LDFLAGS = -module -avoid-version
+libdraw_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libdraw_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libdraw_la_SOURCES = draw.c
-libawele_la_LDFLAGS = -module -avoid-version
+libawele_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libawele_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libawele_la_SOURCES = awele.c awele_alphaBeta.c awele_utils.c awele_utils.h awele.h
-libcrane_la_LDFLAGS = -module -avoid-version
+libcrane_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libcrane_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libcrane_la_SOURCES = crane.c
-libmenu_la_LDFLAGS = -module -avoid-version
+libmenu_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libmenu_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libmenu_la_SOURCES = menu2.c
-libclickgame_la_LDFLAGS = -module -avoid-version
+libclickgame_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libclickgame_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libclickgame_la_SOURCES = clickgame.c
-libalgebra_la_LDFLAGS = -module -avoid-version
+libalgebra_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libalgebra_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libalgebra_la_SOURCES = algebra.c
-libclockgame_la_LDFLAGS = -module -avoid-version
+libclockgame_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libclockgame_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libclockgame_la_SOURCES = clockgame.c
-libshapegame_la_LDFLAGS = -module -avoid-version
+libshapegame_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs) $(XML_LIBS)
libshapegame_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libshapegame_la_SOURCES = shapegame.c
-libwordsgame_la_LDFLAGS = -module -avoid-version
+libwordsgame_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libwordsgame_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libwordsgame_la_SOURCES = wordsgame.c
-libgletters_la_LDFLAGS = -module -avoid-version
+libgletters_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libgletters_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libgletters_la_SOURCES = gletters.c
-libgtans_la_LDFLAGS = -module -avoid-version
+libgtans_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libgtans_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libgtans_la_SOURCES = gtans.c gtans_interface.c gtans_support.c gtans_callbacks.c \
gtans_callbacks.h gtans.h gtans_interface.h gtans_support.h
-libplanegame_la_LDFLAGS = -module -avoid-version
+libplanegame_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libplanegame_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libplanegame_la_SOURCES = planegame.c
-libsmallnumbers_la_LDFLAGS = -module -avoid-version
+libsmallnumbers_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libsmallnumbers_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libsmallnumbers_la_SOURCES = smallnumbers.c
-libparatrooper_la_LDFLAGS = -module -avoid-version
+libparatrooper_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libparatrooper_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libparatrooper_la_SOURCES = paratrooper.c
-libreading_la_LDFLAGS = -module -avoid-version
+libreading_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libreading_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libreading_la_SOURCES = reading.c
-libmemory_la_LDFLAGS = -module -avoid-version
+libmemory_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libmemory_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libmemory_la_SOURCES = memory.c
-libimageid_la_LDFLAGS = -module -avoid-version
+libimageid_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs) $(XML_LIBS)
libimageid_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libimageid_la_SOURCES = imageid.c
-libmissingletter_la_LDFLAGS = -module -avoid-version
+libmissingletter_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs) $(XML_LIBS)
libmissingletter_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libmissingletter_la_SOURCES = missingletter.c
-libclick_on_letter_la_LDFLAGS = -module -avoid-version
+libclick_on_letter_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libclick_on_letter_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libclick_on_letter_la_SOURCES = click_on_letter.c
-librailroad_la_LDFLAGS = -module -avoid-version
+librailroad_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
librailroad_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
librailroad_la_SOURCES = railroad.c
-liberase_la_LDFLAGS = -module -avoid-version
+liberase_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
liberase_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
liberase_la_SOURCES = erase.c
-libalgebra_guesscount_la_LDFLAGS = -module -avoid-version
+libalgebra_guesscount_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libalgebra_guesscount_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libalgebra_guesscount_la_SOURCES = algebra_guesscount.c
-libleftright_la_LDFLAGS = -module -avoid-version
+libleftright_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libleftright_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libleftright_la_SOURCES = leftright.c
-libcolors_la_LDFLAGS = -module -avoid-version
+libcolors_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libcolors_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libcolors_la_SOURCES = colors.c
-libtarget_la_LDFLAGS = -module -avoid-version
+libtarget_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libtarget_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libtarget_la_SOURCES = target.c
-libmagic_hat_la_LDFLAGS = -module -avoid-version
+libmagic_hat_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libmagic_hat_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libmagic_hat_la_SOURCES = magic_hat.c
-libmaze_la_LDFLAGS = -module -avoid-version
+libmaze_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libmaze_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libmaze_la_SOURCES = maze.c
-libreversecount_la_LDFLAGS = -module -avoid-version
+libreversecount_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libreversecount_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libreversecount_la_SOURCES = reversecount.c
-libcanal_lock_la_LDFLAGS = -module -avoid-version
+libcanal_lock_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libcanal_lock_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libcanal_lock_la_SOURCES = canal_lock.c
-libadvanced_colors_la_LDFLAGS = -module -avoid-version
+libadvanced_colors_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs) $(XML_LIBS)
libadvanced_colors_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libadvanced_colors_la_SOURCES = advanced_colors.c
-libsuperbrain_la_LDFLAGS = -module -avoid-version
+libsuperbrain_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libsuperbrain_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libsuperbrain_la_SOURCES = superbrain.c
-libread_colors_la_LDFLAGS = -module -avoid-version
+libread_colors_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs) $(XML_LIBS)
libread_colors_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libread_colors_la_SOURCES = read_colors.c
-libchess_la_LDFLAGS = -module -avoid-version
+libchess_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libchess_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libchess_la_SOURCES = chess.c chess_position.c chess_notation.c \
chess_notation.h chess_position.h chess_makros.h
-libenumerate_la_LDFLAGS = -module -avoid-version
+libenumerate_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libenumerate_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libenumerate_la_SOURCES = enumerate.c
-libmoney_la_LDFLAGS = -module -avoid-version
+libmoney_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libmoney_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libmoney_la_SOURCES = money.c money_widget.c money_widget.h
-libtraffic_la_LDFLAGS = -module -avoid-version
+libtraffic_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libtraffic_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libtraffic_la_SOURCES = traffic.c traffic.h
-libmachpuzzle_la_LDFLAGS = -module -avoid-version
+libmachpuzzle_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libmachpuzzle_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libmachpuzzle_la_SOURCES = machpuzzle.c
-libsubmarine_la_LDFLAGS = -module -avoid-version
+libsubmarine_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libsubmarine_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libsubmarine_la_SOURCES = submarine.c
-libhanoi_la_LDFLAGS = -module -avoid-version
+libhanoi_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libhanoi_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libhanoi_la_SOURCES = hanoi.c
-libhanoi_real_la_LDFLAGS = -module -avoid-version
+libhanoi_real_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libhanoi_real_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libhanoi_real_la_SOURCES = hanoi_real.c
-libfifteen_la_LDFLAGS = -module -avoid-version
+libfifteen_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libfifteen_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libfifteen_la_SOURCES = fifteen.c
-libwordprocessor_la_LDFLAGS = -module -avoid-version
+libwordprocessor_la_LDFLAGS = $(shared) $(no_undefined) -module -avoid-version $(gc_libs)
libwordprocessor_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
libwordprocessor_la_SOURCES = wordprocessor.c
-libpython_la_LDFLAGS = -export-dynamic -module -avoid-version $(PYTHON_LIBS)
+libpython_la_LDFLAGS = -export-dynamic $(shared) $(no_undefined) -module -avoid-version $(gc_libs) $(PYTHON_LIBS)
libpython_la_LIBADD = $(top_builddir)/src/gcompris/libgcompris-1.la
-libpython_la_CFLAGS = -fno-strict-aliasing
+libpython_la_CFLAGS = -fno-strict-aliasing $(PYGTK_CFLAGS)
libpython_la_SOURCES = python.c \
canvas.c canvasmodule.c \
py-gcompris-board.c py-gcompris-board.h \
diff --git a/src/boards/advanced_colors.c b/src/boards/advanced_colors.c
index fa9a581..1362af8 100644
--- a/src/boards/advanced_colors.c
+++ b/src/boards/advanced_colors.c
@@ -196,7 +196,7 @@ static gboolean is_our_board (GcomprisBoard *gcomprisBoard) {
* =====================================================================*/
static void colors_next_level() {
gchar *str = NULL;
- int i;
+ int i, list_length;
GList * list = NULL;
int * item;
@@ -215,8 +215,8 @@ static void colors_next_level() {
for (i=0; i<LAST_COLOR; i++)
list = g_list_append(list, GINT_TO_POINTER(i));
- while ((g_list_length(list) > 0)) {
- i = RAND(0,g_list_length(list)-1);
+ while((list_length = g_list_length(list))) {
+ i = list_length == 1 ? 0 : g_random_int_range(0,g_list_length(list)-1);
item = g_list_nth_data(list, i);
listColors = g_list_append(listColors, item);
list = g_list_remove(list, item);
@@ -288,7 +288,7 @@ static GnomeCanvasItem *colors_create_item(GnomeCanvasGroup *parent) {
g_free(str);
gnome_canvas_item_hide(highlight_image_item);
- i = RAND(0,LAST_COLOR);
+ i = g_random_int_range(0,LAST_COLOR);
gdk_pixbuf_unref(highlight_pixmap);
diff --git a/src/boards/algebra.c b/src/boards/algebra.c
index 4075692..691d653 100644
--- a/src/boards/algebra.c
+++ b/src/boards/algebra.c
@@ -709,7 +709,7 @@ item_event(GnomeCanvasItem *item, GdkEvent *event, gpointer data)
static gint get_operand()
{
gint j = 10;
- gint i = (1+rand()%10);
+ gint i = (1+g_random_int()%10);
// Get the next free slot
while(operation_done[i]==TRUE && j>=0)
@@ -781,8 +781,8 @@ static void get_random_number(guint *first_operand, guint *second_operand)
min = 1;
max = 10;
}
- *second_operand = (min+rand()%(max-min+1));
- *first_operand = *second_operand*(min+rand()%max);
+ *second_operand = (min+g_random_int()%(max-min+1));
+ *first_operand = *second_operand*(min+g_random_int()%max);
break;
default:
g_error("Bad Operation");
diff --git a/src/boards/algebra_guesscount.c b/src/boards/algebra_guesscount.c
index 726e636..722c632 100644
--- a/src/boards/algebra_guesscount.c
+++ b/src/boards/algebra_guesscount.c
@@ -334,7 +334,7 @@ static int generate_numbers() {
gboolean minus, divide;
for (i=0; i<gcomprisBoard->level+1; i++) {
- j = RAND(0,NUM_VALUES-1);
+ j = g_random_int_range(0,NUM_VALUES-1);
answer_num_index[i] = j;
}
@@ -350,7 +350,7 @@ static int generate_numbers() {
}
r = 2 + minus + divide;
- switch (RAND(1,r)) {
+ switch (g_random_int_range(1,r)) {
case 1 :
answer_oper[i] = '+';
result += num_values[answer_num_index[i+1]];
@@ -377,7 +377,7 @@ static int generate_numbers() {
}
break;
case 4 :
- if ( RAND(0,1) == 0) {
+ if ( g_random_int_range(0,1) == 0) {
answer_oper[i] = '-';
result -= num_values[answer_num_index[i+1]];
g_assert(result >= 0);
diff --git a/src/boards/awele.c b/src/boards/awele.c
index 574fc90..a03f757 100644
--- a/src/boards/awele.c
+++ b/src/boards/awele.c
@@ -16,8 +16,6 @@
#include <awele_utils.h>
#include <awele.h>
#include <string.h>
-#include <unistd.h>
-
static GcomprisBoard *gcomprisBoard = NULL;
static gboolean board_paused = TRUE;
@@ -624,17 +622,17 @@ initBoardGraphics (GRAPHICS_ELT * graphsElt)
j < staticAwale->board[i] && idxTabBeans < NBTOTALBEAN;
j++, idxTabBeans++)
{
- k = 0 + rand () % 4;
+ k = 0 + g_random_int() % 4;
graphsElt->ptBeansHoleLink[idxTabBeans].beanPixbuf =
gnome_canvas_item_new (boardRootItem,
gnome_canvas_pixbuf_get_type
(), "x",
(double) caseCoord[i] +
- rand () % 50, "y",
+ g_random_int() % 50, "y",
(double) (((i <
6) ? 260 :
130) +
- rand () %
+ g_random_int() %
60),
"pixbuf",
graphsElt->
@@ -858,15 +856,15 @@ updateNbBeans (int alpha)
j++, idxTabBeans++)
{
- k = 0 + rand () % 4;
+ k = 0 + g_random_int() % 4;
gnome_canvas_item_set (ptBeansHoleLink[idxTabBeans].
beanPixbuf, "x",
(double) caseCoord[i] +
- rand () % 50, "y",
+ g_random_int() % 50, "y",
(double) (((i <
6) ? 260 : 130) +
- rand () % 60), NULL);
+ g_random_int() % 60), NULL);
ptBeansHoleLink[idxTabBeans].hole = i;
}
diff --git a/src/boards/awele_alphaBeta.c b/src/boards/awele_alphaBeta.c
index 418856b..567193d 100644
--- a/src/boards/awele_alphaBeta.c
+++ b/src/boards/awele_alphaBeta.c
@@ -73,7 +73,7 @@ GNode *firstChild(GNode *node)
return NULL;
gint i;
- rand_play = RAND(1, 5);
+ rand_play = g_random_int_range(1, 5);
for (i = 0 ; i < 6; i++)
{
diff --git a/src/boards/awele_utils.c b/src/boards/awele_utils.c
index 368503c..f2d5982 100644
--- a/src/boards/awele_utils.c
+++ b/src/boards/awele_utils.c
@@ -139,7 +139,7 @@ short int randplay(AWALE * a)
AWALE *tmp = NULL;
do {
- i = 6 + rand() % 6;
+ i = 6 + g_random_int() % 6;
} while (a->board[i] == 0 && !(tmp = moveAwale(i, a)));
g_free(tmp);
diff --git a/src/boards/click_on_letter.c b/src/boards/click_on_letter.c
index a5a2e0b..409d1cc 100644
--- a/src/boards/click_on_letter.c
+++ b/src/boards/click_on_letter.c
@@ -353,7 +353,7 @@ static GnomeCanvasItem *click_on_letter_create_item(GnomeCanvasGroup *parent)
g_assert(number_of_letters<=length_of_aphabet); // because we must set unique letter on every "vagon"
for (i=0;i<number_of_letters;i++){
- numbers[i]=((int)(((float)length_of_aphabet)*rand()/(RAND_MAX+1.0)));
+ numbers[i]= g_random_int_range(0, number_of_letters);
// check that the letter has not been taken yet
for(j=0;j<i;j++){
@@ -378,7 +378,7 @@ static GnomeCanvasItem *click_on_letter_create_item(GnomeCanvasGroup *parent)
case 2 : letters[i]=g_strndup(copy_from,copy_to-copy_from); break;
case 3 : letters[i]=g_utf8_strup(copy_from,copy_to-copy_from); break;
default :
- if ( rand() > (RAND_MAX/2) )
+ if ( g_random_boolean() )
letters[i]=g_strndup(copy_from,copy_to-copy_from);
else
letters[i]=g_utf8_strup(copy_from,copy_to-copy_from);
@@ -387,7 +387,7 @@ static GnomeCanvasItem *click_on_letter_create_item(GnomeCanvasGroup *parent)
}
/* */
- right_position = ((int)(((float)number_of_letters)*rand()/(RAND_MAX+1.0)));
+ right_position = g_random_int_range(0,number_of_letters);
g_assert(right_position >= 0 && right_position < number_of_letters);
right_letter = g_utf8_strdown(letters[right_position],-1);
diff --git a/src/boards/clickgame.c b/src/boards/clickgame.c
index efa8a3a..e1351b6 100644
--- a/src/boards/clickgame.c
+++ b/src/boards/clickgame.c
@@ -455,7 +455,7 @@ static FishItem *clickgame_create_item(GnomeCanvasGroup *parent)
fishitem = g_malloc(sizeof(FishItem));
fishitem->currentItem = 0;
- fishitem->speed = (double)(rand()%(60))/10 - 3;
+ fishitem->speed = (double)(g_random_int()%(60))/10 - 3;
fishitem->item_list = NULL;
pixmap = (GdkPixbuf *)g_list_nth_data(imagelist, 0);
@@ -478,7 +478,7 @@ static FishItem *clickgame_create_item(GnomeCanvasGroup *parent)
gnome_canvas_item_new (parent,
gnome_canvas_group_get_type (),
"x", x,
- "y", (double)(rand()%(gcomprisBoard->height-
+ "y", (double)(g_random_int()%(gcomprisBoard->height-
(guint)(gdk_pixbuf_get_height(pixmap)*
imageZoom))),
NULL);
@@ -709,7 +709,7 @@ static void load_random_pixmap()
gchar *str = NULL;
gboolean cont = TRUE;
- i=rand()%(NUMBER_OF_IMAGES);
+ i=g_random_int()%(NUMBER_OF_IMAGES);
/* First image */
j=0;
diff --git a/src/boards/clockgame.c b/src/boards/clockgame.c
index eac8802..30c096e 100644
--- a/src/boards/clockgame.c
+++ b/src/boards/clockgame.c
@@ -726,21 +726,21 @@ item_event(GnomeCanvasItem *item, GdkEvent *event, gpointer data)
static void get_random_hour(GcomprisTime *time)
{
- time->hour=rand()%12;
+ time->hour=g_random_int()%12;
if(gcomprisBoard->level>3)
- time->second=rand()%60;
+ time->second=g_random_int()%60;
else time->second=0;
- time->minute=rand()%60;
+ time->minute=g_random_int()%60;
switch(gcomprisBoard->level)
{
case 1:
- time->minute=rand()%4*15;
+ time->minute=g_random_int()%4*15;
break;
case 2:
- time->minute=rand()%12*5;
+ time->minute=g_random_int()%12*5;
break;
default:
break;
diff --git a/src/boards/colors.c b/src/boards/colors.c
index 8331b29..46cf4a8 100644
--- a/src/boards/colors.c
+++ b/src/boards/colors.c
@@ -211,7 +211,7 @@ static void start_board (GcomprisBoard *agcomprisBoard) {
GcomprisProperties *properties = gc_prop_get();
GList * list = NULL;
int * item;
- int i;
+ int i, list_length;
GHashTable *config = gc_db_get_board_conf();
@@ -239,8 +239,8 @@ static void start_board (GcomprisBoard *agcomprisBoard) {
for (i=0; i<LAST_COLOR; i++)
list = g_list_append(list, GINT_TO_POINTER(i));
- while ((g_list_length(list) > 0)) {
- i = RAND(0,g_list_length(list)-1);
+ while ((list_length = g_list_length(list))) {
+ i = list_length == 1 ? 0 : g_random_int_range(0,g_list_length(list)-1);
item = g_list_nth_data(list, i);
listColors = g_list_append(listColors, item);
list = g_list_remove(list, item);
diff --git a/src/boards/crane.c b/src/boards/crane.c
index 5db70d1..118a01b 100644
--- a/src/boards/crane.c
+++ b/src/boards/crane.c
@@ -696,8 +696,8 @@ void shuffle_list(int list[], int size) {
for (i = 0 ; i < size ; i++) {
- rand1 = RAND(0, size-1);
- rand2 = RAND(0, size-1);
+ rand1 = g_random_int_range(0, size-1);
+ rand2 = g_random_int_range(0, size-1);
buffer = list[rand2];
list[rand2] = list[rand1];
diff --git a/src/boards/enumerate.c b/src/boards/enumerate.c
index f05e604..e4474dc 100644
--- a/src/boards/enumerate.c
+++ b/src/boards/enumerate.c
@@ -377,15 +377,15 @@ static GnomeCanvasItem *enumerate_create_item(GnomeCanvasGroup *parent)
pixmap = gc_pixmap_load(imageList[i]);
- answer_to_find[i] = RAND(1, number_of_item_max);
+ answer_to_find[i] = g_random_int_range(1, number_of_item_max);
answer[i] = 0;
for(j=0; j<answer_to_find[i]; j++)
{
guint x, y;
- x = RAND(0, ANSWER_X-gdk_pixbuf_get_width(pixmap)-ANSWER_WIDTH);
- y = RAND(0, BOARDHEIGHT-gdk_pixbuf_get_height(pixmap));
+ x = g_random_int_range(0, ANSWER_X-gdk_pixbuf_get_width(pixmap)-ANSWER_WIDTH);
+ y = g_random_int_range(0, BOARDHEIGHT-gdk_pixbuf_get_height(pixmap));
item = gnome_canvas_item_new (boardRootItem,
gnome_canvas_pixbuf_get_type (),
diff --git a/src/boards/erase.c b/src/boards/erase.c
index 5210719..b3c89d1 100644
--- a/src/boards/erase.c
+++ b/src/boards/erase.c
@@ -487,8 +487,8 @@ void shuffle_image_list(char *list[], int size)
for(i=0; i<size; i++)
{
- int random1 = RAND(0, size-1);
- int random2 = RAND(0, size-1);
+ int random1 = g_random_int_range(0, size-1);
+ int random2 = g_random_int_range(0, size-1);
char *olditem;
olditem = list[random2];
diff --git a/src/boards/fifteen.c b/src/boards/fifteen.c
index 04646c3..4d71d8f 100644
--- a/src/boards/fifteen.c
+++ b/src/boards/fifteen.c
@@ -431,7 +431,8 @@ scramble (GnomeCanvasItem **board, guint number_of_scrambles)
int dir;
int x, y;
- srand (time (NULL));
+ /* g_random are initialised in gcompris launch */
+ /* srand (time (NULL)); */
/* First, find the blank spot */
@@ -443,7 +444,7 @@ scramble (GnomeCanvasItem **board, guint number_of_scrambles)
for (i = 0; i < number_of_scrambles; i++) {
retry_scramble:
- dir = rand () % 4;
+ dir = g_random_int () % 4;
x = y = 0;
diff --git a/src/boards/gletters.c b/src/boards/gletters.c
index 1ceb498..660b0c1 100644
--- a/src/boards/gletters.c
+++ b/src/boards/gletters.c
@@ -611,7 +611,7 @@ static GnomeCanvasItem *gletters_create_item(GnomeCanvasGroup *parent)
{
attempt++;
str_p = letters_array[gcomprisBoard->level-1];
- i = (int)((float)k*rand()/(RAND_MAX+1.0));
+ i = g_random_int_range(0,k);
for(j = 0; j < i; j++)
{
@@ -651,7 +651,7 @@ static GnomeCanvasItem *gletters_create_item(GnomeCanvasGroup *parent)
"y", (double) -12,
NULL);
- x = 80 + (int)((float)(gcomprisBoard->width-160)*rand()/(RAND_MAX+1.0));
+ x = g_random_int_range( 80, gcomprisBoard->width-160);
gnome_canvas_item_new (GNOME_CANVAS_GROUP(item),
gnome_canvas_text_get_type (),
"text", letter,
diff --git a/src/boards/gtans.c b/src/boards/gtans.c
index 03bed7b..d57ba17 100644
--- a/src/boards/gtans.c
+++ b/src/boards/gtans.c
@@ -20,20 +20,12 @@
#include "gcompris/gcompris.h"
-#include <math.h>
-#include <stdio.h>
#include <string.h>
/* Added by Florian Ernst <florian_ernst@gmx.net> for lines 193 and 194 */
//#include <string.h>
/* End of added section */
-/* uniquement pour mkdir() */
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <unistd.h>
-
#include "gtans.h"
#include "gtans_interface.h"
#include "gtans_support.h"
diff --git a/src/boards/gtans_support.c b/src/boards/gtans_support.c
index 2590ced..9891b88 100644
--- a/src/boards/gtans_support.c
+++ b/src/boards/gtans_support.c
@@ -1,17 +1,14 @@
-/*
- * DO NOT EDIT THIS FILE - it is generated by Glade.
- */
+
+
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <string.h>
+#include "strings.h"
#include "gcompris/gcompris.h"
+#include <glib/gstdio.h>
#include "gtans_support.h"
@@ -150,7 +147,7 @@ check_file_exists (const gchar *directory,
strcat (full_filename, G_DIR_SEPARATOR_S);
strcat (full_filename, filename);
- status = stat (full_filename, &s);
+ status = g_stat (full_filename, &s);
if (status == 0 && S_ISREG (s.st_mode))
return full_filename;
g_free (full_filename);
diff --git a/src/boards/hanoi.c b/src/boards/hanoi.c
index 60873c6..e70ed0e 100644
--- a/src/boards/hanoi.c
+++ b/src/boards/hanoi.c
@@ -371,7 +371,7 @@ static GnomeCanvasItem *hanoi_create_item(GnomeCanvasGroup *parent)
/* Initialize a random goal and store the color index in position[number_of_item_x] */
for(i=0; i<(number_of_item_y); i++)
{
- guint color = (guint)RAND(0, NUMBER_OF_COLOR-1);
+ guint color = (guint)g_random_int_range(0, NUMBER_OF_COLOR-1);
position[number_of_item_x+1][i]->color = color;
used_colors[color] = TRUE;
@@ -386,10 +386,10 @@ static GnomeCanvasItem *hanoi_create_item(GnomeCanvasGroup *parent)
{
done = FALSE;
- i = (guint)RAND(0, number_of_item_x-2);
+ i = (guint)g_random_int_range(0, number_of_item_x-2);
/* Restrict the goal to lowest items */
- j = (guint)RAND(0, 2);
+ j = (guint)g_random_int_range(0, 2);
if(position[i][j]->color == -1)
{
@@ -408,7 +408,7 @@ static GnomeCanvasItem *hanoi_create_item(GnomeCanvasGroup *parent)
if(position[i][j]->color == -1)
{
/* Take only a color that is not part of the goal */
- guint color = (guint)RAND(0, NUMBER_OF_COLOR-1);
+ guint color = (guint)g_random_int_range(0, NUMBER_OF_COLOR-1);
//printf(" i,j=%d,%d random color = %d used_colors[color]=%d\n", i,j,color, used_colors[color]);
while(used_colors[color])
{
diff --git a/src/boards/imageid.c b/src/boards/imageid.c
index e2d0068..a04431d 100644
--- a/src/boards/imageid.c
+++ b/src/boards/imageid.c
@@ -266,7 +266,7 @@ static GnomeCanvasItem *imageid_create_item(GnomeCanvasGroup *parent)
board_number = g_list_length(board_list)-1;
*/
g_assert(board_number >= 0 && board_number < g_list_length(board_list));
- place = ((int)(3.0*rand()/(RAND_MAX+1.0)));
+ place = g_random_int_range( 0, 3);
g_assert(place >= 0 && place < 3);
right_word = place+1;
diff --git a/src/boards/leftright.c b/src/boards/leftright.c
index c7109d9..23bdc5d 100644
--- a/src/boards/leftright.c
+++ b/src/boards/leftright.c
@@ -314,7 +314,7 @@ static GnomeCanvasItem *leftright_create_item(GnomeCanvasGroup *parent) {
// make sure that next hand is not the same as previous
do {
- i = RAND(0,gcomprisBoard->level*8-1);
+ i = g_random_int_range(0,gcomprisBoard->level*8-1);
} while ( i == last_hand );
last_hand = i;
diff --git a/src/boards/machpuzzle.c b/src/boards/machpuzzle.c
index 569c861..ed30700 100644
--- a/src/boards/machpuzzle.c
+++ b/src/boards/machpuzzle.c
@@ -243,7 +243,7 @@ static GnomeCanvasItem *minigolf_create_item(GnomeCanvasGroup *parent)
NULL));
create_machine_item(MACH_HOLE, 730.0, 260.0);
- create_machine_item(MACH_BASKET_BALL, (double)RAND(60, 150), (double)RAND(60, 400));
+ create_machine_item(MACH_BASKET_BALL, (double)g_random_int_range(60, 150), (double)RAND(60, 400));
return NULL;
diff --git a/src/boards/magic_hat.c b/src/boards/magic_hat.c
index 496fc10..089f7c0 100644
--- a/src/boards/magic_hat.c
+++ b/src/boards/magic_hat.c
@@ -363,9 +363,9 @@ static GnomeCanvasItem *magic_hat_create_item()
// Frame 1
if (board_mode == MODE_MINUS)
- frame1.nb_stars[i] = RAND(2, (1 + (step * nb_list()))); // Minimum 2 to avoid '0' value (which is not easy to understand for kids)
+ frame1.nb_stars[i] = g_random_int_range(2, (1 + (step * nb_list()))); // Minimum 2 to avoid '0' value (which is not easy to understand for kids)
else
- frame1.nb_stars[i] = RAND(1, (step * nb_list()));
+ frame1.nb_stars[i] = g_random_int_range(1, (step * nb_list()));
for (j = 0 ; j < frame1.nb_stars[i] ; j++) frame1.array_star_type[i][j] = i;
for ( ; j < MAX_ITEM ; j++) frame1.array_star_type[i][j] = -1;
@@ -373,9 +373,9 @@ static GnomeCanvasItem *magic_hat_create_item()
// Frame 2
if (board_mode == MODE_MINUS)
- frame2.nb_stars[i] = RAND(1, (frame1.nb_stars[i]) - 1); // Minimum 1 to avoid '0'
+ frame2.nb_stars[i] = g_random_int_range(1, (frame1.nb_stars[i]) - 1); // Minimum 1 to avoid '0'
else
- frame2.nb_stars[i] = RAND(1, ((step * nb_list()) - frame1.nb_stars[i] + 1));
+ frame2.nb_stars[i] = g_random_int_range(1, ((step * nb_list()) - frame1.nb_stars[i] + 1));
for (j = 0 ; j < frame2.nb_stars[i] ; j++) frame2.array_star_type[i][j] = i;
for ( ; j < MAX_ITEM ; j++) frame2.array_star_type[i][j] = -1;
diff --git a/src/boards/maze.c b/src/boards/maze.c
index 6b5a3f2..6618cf1 100644
--- a/src/boards/maze.c
+++ b/src/boards/maze.c
@@ -272,7 +272,7 @@ static void maze_next_level() {
gamewon = FALSE;
initMaze();
- generateMaze((rand()%breedte),(rand()%hoogte));
+ generateMaze((g_random_int()%breedte),(g_random_int()%hoogte));
removeSet();
/* Try the next level */
maze_create_item(gnome_canvas_root(gcomprisBoard->canvas));
@@ -283,8 +283,8 @@ static void maze_next_level() {
}
/* make a new group for the items */
- begin=rand()%hoogte;
- end=rand()%hoogte;
+ begin=g_random_int()%hoogte;
+ end=g_random_int()%hoogte;
/* Draw the tux */
pixmap = gc_pixmap_load("gcompris/misc/tux_top_east.png");
@@ -723,7 +723,7 @@ static void generateMaze(int x, int y)
{
int nr = *po;
int ran, in;
- in=(rand()%nr)+1;
+ in=(g_random_int()%nr)+1;
//printf("random: %d en %d mogelijkheden\n", in, *po);
ran=*(po + in);
if (nr>=1)
diff --git a/src/boards/memory.c b/src/boards/memory.c
index 1643f8d..74c5147 100644
--- a/src/boards/memory.c
+++ b/src/boards/memory.c
@@ -523,7 +523,7 @@ void get_random_token(int token_type, gint *returned_type, gchar **string, gchar
g_assert(max_token >0);
- i = rand()%max_token;
+ i = g_random_int()%max_token;
for (list = data; list != NULL; list = list->next)
if ( i < ((DATUM *)list->data)->bound)
@@ -1163,8 +1163,8 @@ static void get_image(MemoryItem *memoryItem, guint x, guint y)
// Randomly set the pair
- rx = (int)(numberOfColumn*((double)rand()/RAND_MAX));
- ry = (int)(numberOfLine*((double)rand()/RAND_MAX));
+ rx = g_random_int_range( 0, numberOfColumn);
+ ry = g_random_int_range(0, numberOfLine);
while(memoryArray[rx][ry])
{
@@ -1731,8 +1731,8 @@ static gint tux_play(){
}
// Randomly set the pair
- rx = (int)(numberOfColumn*((double)rand()/RAND_MAX));
- ry = (int)(numberOfLine*((double)rand()/RAND_MAX));
+ rx = g_random_int_range( 0, numberOfColumn);
+ ry = g_random_int_range(0, numberOfLine);
gboolean stay_unknown = (remainingCards > (g_queue_get_length (tux_memory)
+ (firstCard ? 1 : 0)));
diff --git a/src/boards/missingletter.c b/src/boards/missingletter.c
index 6ef2ea3..4c973f1 100644
--- a/src/boards/missingletter.c
+++ b/src/boards/missingletter.c
@@ -275,7 +275,7 @@ static GnomeCanvasItem *missing_letter_create_item(GnomeCanvasGroup *parent)
board_number = (gcomprisBoard->level-1) * NUMBER_OF_SUBLEVELS + gcomprisBoard->sublevel-1;
g_assert(board_number >= 0 && board_number < g_list_length(board_list));
- place = ((int)(3.0*rand()/(RAND_MAX+1.0)));
+ place = g_random_int_range( 0, 3);
g_assert(place >= 0 && place < 3);
right_word = place+1;
diff --git a/src/boards/money.c b/src/boards/money.c
index 68ca52e..3f85f33 100644
--- a/src/boards/money.c
+++ b/src/boards/money.c
@@ -469,7 +469,7 @@ static void money_next_level()
double object_price;
gchar *text;
- pixmap = gc_pixmap_load(imageList[RAND(0, NUMBER_OF_IMAGES-1)]);
+ pixmap = gc_pixmap_load(imageList[g_random_int_range(0, NUMBER_OF_IMAGES-1)]);
gnome_canvas_item_new ( boardRootItem,
gnome_canvas_pixbuf_get_type (),
@@ -480,7 +480,7 @@ static void money_next_level()
NULL);
/* Diplay the price */
- object_price = (double) RAND(min_price/number_of_item, max_price/number_of_item);
+ object_price = (double) g_random_int_range(min_price/number_of_item, max_price/number_of_item);
if(currentMode==WITH_CENTS)
{
@@ -489,11 +489,11 @@ static void money_next_level()
/* Add random cents */
if(gcomprisBoard->level == 1)
{
- object_price += (double)((double) RAND(1, 9))/10.0;
+ object_price += (double)((double) g_random_int_range(1, 9))/10.0;
}
else
{
- object_price += (double)((double) RAND(1, 99))/100.0;
+ object_price += (double)((double) g_random_int_range(1, 99))/100.0;
}
}
else
diff --git a/src/boards/paratrooper.c b/src/boards/paratrooper.c
index 4a380c8..804ef50 100644
--- a/src/boards/paratrooper.c
+++ b/src/boards/paratrooper.c
@@ -337,8 +337,8 @@ static void paratrooper_next_level()
NULL);
gdk_pixbuf_unref(pixmap);
- windspeed = (3 + rand()%gcomprisBoard->level);
- if(rand()%2==0)
+ windspeed = (3 + g_random_int()%gcomprisBoard->level);
+ if(g_random_int()%2==0)
windspeed *= -1;
/* Drop a cloud */
@@ -620,7 +620,7 @@ static GnomeCanvasItem *paratrooper_create_cloud(GnomeCanvasGroup *parent)
gnome_canvas_item_new (parent,
gnome_canvas_group_get_type (),
"x", (double) x,
- "y", (double)(rand()%(gcomprisBoard->height-200-
+ "y", (double)(g_random_int()%(gcomprisBoard->height-200-
(guint)(gdk_pixbuf_get_height(pixmap)*
imageZoom))),
NULL);
diff --git a/src/boards/planegame.c b/src/boards/planegame.c
index f0aa74b..251dbf5 100644
--- a/src/boards/planegame.c
+++ b/src/boards/planegame.c
@@ -469,7 +469,7 @@ static GnomeCanvasItem *planegame_create_item(GnomeCanvasGroup *parent)
CloudItem *clouditem;
/* Random cloud number */
- if(rand()%2==0)
+ if(g_random_int()%2==0)
{
/* Put the target */
i = plane_target;
@@ -477,7 +477,7 @@ static GnomeCanvasItem *planegame_create_item(GnomeCanvasGroup *parent)
else
{
min = MAX(1, plane_target - 1);
- i = min + rand()%(plane_target - min + 3);
+ i = min + g_random_int()%(plane_target - min + 3);
}
number = g_strdup_printf("%d", i);
@@ -487,7 +487,7 @@ static GnomeCanvasItem *planegame_create_item(GnomeCanvasGroup *parent)
gnome_canvas_item_new (parent,
gnome_canvas_group_get_type (),
"x", (double) gcomprisBoard->width,
- "y", (double)(rand()%(gcomprisBoard->height-
+ "y", (double)(g_random_int()%(gcomprisBoard->height-
(guint)(gdk_pixbuf_get_height(pixmap)*
imageZoom))),
NULL);
diff --git a/src/boards/py-mod-gcompris.c b/src/boards/py-mod-gcompris.c
index 12c1bd3..c5ae83c 100644
--- a/src/boards/py-mod-gcompris.c
+++ b/src/boards/py-mod-gcompris.c
@@ -671,7 +671,7 @@ py_gcompris_child_watch_add(PyObject *unused, PyObject *args, PyObject *kwargs)
static char *kwlist[] = { "pid", "function", "data", "priority", NULL };
guint id;
gint priority = G_PRIORITY_DEFAULT;
- int pid;
+ GPid pid;
PyObject *func, *user_data = NULL;
struct _PyGChildData *child_data;
@@ -738,7 +738,7 @@ py_gcompris_spawn_async(PyObject *unused, PyObject *args, PyObject *kwargs)
gint *standard_input, *standard_output, *standard_error;
struct _PyGChildSetupData *callback_data = NULL;
GError *error = NULL;
- GPid child_pid = -1;
+ GPid child_pid = (GPid) -1;
int len, i;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OsiOOOOO:gcompris.spawn_async",
diff --git a/src/boards/railroad.c b/src/boards/railroad.c
index 7387372..76c0ccc 100644
--- a/src/boards/railroad.c
+++ b/src/boards/railroad.c
@@ -357,7 +357,7 @@ static GnomeCanvasItem *railroad_create_item(GnomeCanvasGroup *parent)
model_size = gcomprisBoard->level +1; // engine + cars
// First the cars, depending of the level
for (i=0; i<model_size-1; i++) {
- r = (int)(((float) WAGONS)*rand()/(RAND_MAX+1.0));
+ r = g_random_int_range( 0, WAGONS);
g_assert( r >=0 && r < WAGONS);
// keep track of the answer
int_model_list = g_list_append(int_model_list, GINT_TO_POINTER(r+ENGINES));
@@ -373,7 +373,7 @@ static GnomeCanvasItem *railroad_create_item(GnomeCanvasGroup *parent)
}
// Then the engine
- r = (int)(((float) ENGINES)*rand()/(RAND_MAX+1.0));
+ r = g_random_int_range( 0, ENGINES);
g_assert( r >=0 && r < ENGINES);
// keep track of the answer
int_model_list = g_list_append(int_model_list, GINT_TO_POINTER(r));
diff --git a/src/boards/read_colors.c b/src/boards/read_colors.c
index f5997ac..06caa2f 100644
--- a/src/boards/read_colors.c
+++ b/src/boards/read_colors.c
@@ -127,7 +127,7 @@ static void pause_board (gboolean pause)
static void start_board (GcomprisBoard *agcomprisBoard) {
GList * list = NULL;
int * item;
- int i;
+ int i,list_length;
if(agcomprisBoard!=NULL) {
gcomprisBoard=agcomprisBoard;
@@ -148,8 +148,8 @@ static void start_board (GcomprisBoard *agcomprisBoard) {
for (i=0; i<LAST_COLOR; i++)
list = g_list_append(list, GINT_TO_POINTER(i));
- while ((g_list_length(list) > 0)) {
- i = RAND(0,g_list_length(list)-1);
+ while ((list_length = g_list_length(list))) {
+ i = list_length == 1 ? 0 : g_random_int_range(0,g_list_length(list)-1);
item = g_list_nth_data(list, i);
listColors = g_list_append(listColors, item);
list = g_list_remove(list, item);
diff --git a/src/boards/reading.c b/src/boards/reading.c
index 34cdfb8..7530582 100644
--- a/src/boards/reading.c
+++ b/src/boards/reading.c
@@ -358,7 +358,6 @@ static GnomeCanvasItem *display_what_to_do(GnomeCanvasGroup *parent)
gint base_Y = 110;
gint base_X = 580;
- gint i;
/* Load the text to find */
@@ -368,9 +367,8 @@ static GnomeCanvasItem *display_what_to_do(GnomeCanvasGroup *parent)
/* Decide now if this time we will display the text to find */
/* Use this formula to have a better random number see 'man 3 rand' */
- i=((int)(2.0*rand()/(RAND_MAX+1.0)));
- if(i==0)
- textToFindIndex = rand() % numberOfLine;
+ if(g_random_boolean())
+ textToFindIndex = g_random_int_range(0, numberOfLine);
else
textToFindIndex = NOT_THERE;
diff --git a/src/boards/reversecount.c b/src/boards/reversecount.c
index a81bf9a..f9872bc 100644
--- a/src/boards/reversecount.c
+++ b/src/boards/reversecount.c
@@ -570,13 +570,13 @@ static void display_random_fish()
{
fish_index = tux_index +
- rand()%(max_dice_number*number_of_dices) + 1;
+ g_random_int()%(max_dice_number*number_of_dices) + 1;
// Wrapping
if(fish_index >= number_of_item)
fish_index = fish_index - (number_of_item);
- fishItem = display_item_at(fishList[rand()%NUMBER_OF_FISHES],
+ fishItem = display_item_at(fishList[g_random_int()%NUMBER_OF_FISHES],
fish_index, -1);
}
diff --git a/src/boards/shapegame.c b/src/boards/shapegame.c
index 9a98e67..ff93bab 100644
--- a/src/boards/shapegame.c
+++ b/src/boards/shapegame.c
@@ -1903,6 +1903,7 @@ parse_doc(xmlDocPtr doc)
xmlNodePtr node;
GList *list;
GnomeCanvasItem *item;
+ int list_length, i;
/* find <Shape> nodes and add them to the list, this just
loops through all the children of the root of the document */
@@ -1915,11 +1916,12 @@ parse_doc(xmlDocPtr doc)
shape_list = g_list_copy(shape_list_init);
/* Insert each of the shapes randomly */
- while(g_list_length(shape_list_init)>0)
+ while((list_length = g_list_length(shape_list_init)))
{
Shape *shape;
- shape = g_list_nth_data(shape_list_init, RAND(0, (g_list_length(shape_list_init)-1)));
+ i = list_length == 1 ? 0 : g_random_int_range(0, g_list_length(shape_list_init)-1);
+ shape = g_list_nth_data(shape_list_init, i);
add_shape_to_canvas(shape);
shape_list_init = g_list_remove (shape_list_init, shape);
diff --git a/src/boards/smallnumbers.c b/src/boards/smallnumbers.c
index 4ad1d10..08cac23 100644
--- a/src/boards/smallnumbers.c
+++ b/src/boards/smallnumbers.c
@@ -376,9 +376,9 @@ static void smallnumbers_create_item(GnomeCanvasGroup *parent)
/* Take care not to go above 9 anyway */
if(total_number==0) {
- i=rand()%6;
+ i=g_random_int()%6;
} else {
- int rando = rand()%(9-total_number);
+ int rando = g_random_int()%(9-total_number);
i=MIN(rando, 5);
}
@@ -434,7 +434,7 @@ static void smallnumbers_create_item(GnomeCanvasGroup *parent)
if(x==0.0)
{
- x = (double)(rand()%(gcomprisBoard->width-
+ x = (double)(g_random_int()%(gcomprisBoard->width-
(guint)(gdk_pixbuf_get_width(smallnumbers_pixmap)* imageZoom)*2));
}
else
diff --git a/src/boards/submarine.c b/src/boards/submarine.c
index c4e6331..1aaea62 100644
--- a/src/boards/submarine.c
+++ b/src/boards/submarine.c
@@ -779,8 +779,8 @@ static GnomeCanvasItem *submarine_create_item(GnomeCanvasGroup *parent) {
// whale item
str = g_strdup_printf("%s/%s", gcomprisBoard->boarddir, "whale.png");
pixmap = gc_pixmap_load(str);
- whale_x = RAND((int)(gdk_pixbuf_get_width(pixmap)), (int)(gcomprisBoard->width-gdk_pixbuf_get_width(pixmap)));
- whale_y = RAND((int)(SURFACE_IN_BACKGROUND + gdk_pixbuf_get_height(pixmap)),(int)MAX_DEPTH);
+ whale_x = g_random_int_range((int)(gdk_pixbuf_get_width(pixmap)), (int)(gcomprisBoard->width-gdk_pixbuf_get_width(pixmap)));
+ whale_y = g_random_int_range((int)(SURFACE_IN_BACKGROUND + gdk_pixbuf_get_height(pixmap)),(int)MAX_DEPTH);
whale = gnome_canvas_item_new (boardRootItem,
gnome_canvas_pixbuf_get_type (),
"pixbuf", pixmap,
diff --git a/src/boards/superbrain.c b/src/boards/superbrain.c
index 769dc66..797bb69 100644
--- a/src/boards/superbrain.c
+++ b/src/boards/superbrain.c
@@ -258,9 +258,9 @@ static void superbrain_next_level()
{
guint j;
- j = (guint)RAND(1, number_of_color);
+ j = (guint)g_random_int_range(1, number_of_color);
while(selected_color[j])
- j = (guint)RAND(1, number_of_color);
+ j = (guint)g_random_int_range(1, number_of_color);
solution[i] = j;
selected_color[j] = TRUE;
diff --git a/src/boards/target.c b/src/boards/target.c
index d81de24..29466a9 100644
--- a/src/boards/target.c
+++ b/src/boards/target.c
@@ -362,12 +362,12 @@ static void display_windspeed()
NULL));
/* Speed orientation */
- second = rand()%60;
+ second = g_random_int()%60;
ang = second * M_PI / 30;
/* Speed force */
wind_speed = targetDefinition[gcomprisBoard->level-1].target_min_wind_speed \
- + rand()%(targetDefinition[gcomprisBoard->level-1].target_max_wind_speed \
+ + g_random_int()%(targetDefinition[gcomprisBoard->level-1].target_max_wind_speed \
- targetDefinition[gcomprisBoard->level-1].target_min_wind_speed);
canvasPoints->coords[0]=SPEED_CENTER_X;
diff --git a/src/boards/wordsgame.c b/src/boards/wordsgame.c
index 05a5044..51d5e61 100644
--- a/src/boards/wordsgame.c
+++ b/src/boards/wordsgame.c
@@ -636,7 +636,7 @@ static GnomeCanvasItem *wordsgame_create_item(GnomeCanvasGroup *parent)
&x2,
&y2);
- gnome_canvas_item_move (item->rootitem,(double) (rand()%(gcomprisBoard->width-(gint)(x2))),(double) 0);
+ gnome_canvas_item_move (item->rootitem,(double) (g_random_int()%(gcomprisBoard->width-(gint)(x2))),(double) 0);
g_static_rw_lock_writer_lock (&items_lock);
diff --git a/src/gcompris/Makefile.am b/src/gcompris/Makefile.am
index 6fafa87..f796882 100644
--- a/src/gcompris/Makefile.am
+++ b/src/gcompris/Makefile.am
@@ -27,6 +27,25 @@ endif
#cairo_c =
#endif
+if PLATFORM_WIN32
+no_undefined = -no-undefined
+shared = -shared
+else
+no_undefined =
+shared =
+endif
+
+if OS_WIN32
+install-libtool-import-lib:
+ $(INSTALL) .libs/libgcompris-1.dll.a $(DESTDIR)$(libdir)
+
+uninstall-libtool-import-lib:
+ -rm $(DESTDIR)$(libdir)/libgcompris-1.dll.a
+else
+install-libtool-import-lib:
+uninstall-libtool-import-lib:
+endif
+
bin_PROGRAMS = gcompris
INCLUDES = \
@@ -45,26 +64,25 @@ gcompris_SOURCES = \
main.c
gcompris_LDFLAGS = \
- -export-dynamic $(python_ldflags) $(SDL_LIBS) $(cairo_ldflags)
+ -export-dynamic $(python_ldflags) $(cairo_ldflags)
gcompris_LDADD = \
+ $(top_builddir)/src/gcompris/libgcompris-1.la \
$(LIBICONV) \
$(INTLLIBS) \
$(python_ldadd) \
- $(top_builddir)/src/gcompris/libgcompris-1.la \
$(LIBPOPT)
-
#
# Gcompris library
#
lib_LTLIBRARIES = libgcompris-1.la
libgcompris_1_la_LIBADD = \
- $(GCOMPRIS_LIBS) $(sqlite_ldadd) $(XML_LIBS) $(GNET_LIBS)
+ $(GCOMPRIS_LIBS) $(sqlite_ldadd) $(XML_LIBS) $(GNET_LIBS) $(SDL_LIBS)
-libgcompris_1_la_LDFLAGS = $(no_undefined) \
+libgcompris_1_la_LDFLAGS = $(shared) $(no_undefined) \
-version-info $(LIBGCOMPRIS_CURRENT):$(LIBGCOMPRIS_REVISION):$(LIBGCOMPRIS_AGE)
libgcomprisincludedir = $(includedir)/libgcompris-1.0/libgcompris
@@ -164,5 +182,9 @@ dist-hook:
rm -f $(distdir)/$$file ; \
done
+install-data-local: install-libtool-import-lib
+
+uninstall-local: uninstall-libtool-import-lib
+
clean-local:
rm -f $(marshal_sources)
diff --git a/src/gcompris/binreloc.c b/src/gcompris/binreloc.c
index 6b92634..03ffbc7 100644
--- a/src/gcompris/binreloc.c
+++ b/src/gcompris/binreloc.c
@@ -17,7 +17,6 @@
#ifdef ENABLE_BINRELOC
#include <sys/types.h>
- #include <sys/stat.h>
#include <unistd.h>
#endif /* ENABLE_BINRELOC */
#include <glib/gstdio.h>
@@ -86,7 +85,7 @@ _br_find_exe (GbrInitError *error)
/* Check whether the symlink's target is also a symlink.
* We want to get the final target. */
- i = stat (path, &stat_buf);
+ i = g_stat (path, &stat_buf);
if (i == -1) {
/* Error. */
g_free (path2);
diff --git a/src/gcompris/board.c b/src/gcompris/board.c
index 67193f2..ca451db 100644
--- a/src/gcompris/board.c
+++ b/src/gcompris/board.c
@@ -28,7 +28,7 @@ static struct BoardPluginData *bp_data;
static gboolean get_board_playing(void);
-#ifdef WIN32
+#ifdef STATIC_MODULE
extern gchar *keycode[];
extern BoardPlugin * get_advanced_colors_bplugin_info();
extern BoardPlugin * get_algebra_bplugin_info();
@@ -79,7 +79,7 @@ static BoardPlugin *static_boards[MAX_NUMBER_OF_BOARDS];
#endif
-#ifdef WIN32
+#ifdef STATIC_MODULE
int gc_board_number_in_demo;
void gc_board_init(void)
{
@@ -203,7 +203,7 @@ void gc_board_set_current(GcomprisBoard * gcomprisBoard)
bp_data->current_gcompris_board = gcomprisBoard;
}
-#ifdef WIN32
+#ifdef STATIC_MODULE
gboolean
gc_board_check_file(GcomprisBoard *gcomprisBoard)
{
@@ -386,6 +386,7 @@ gc_board_pause(int pause)
if(gc_board_get_current_board_plugin()->pause_board)
gc_board_get_current_board_plugin()->pause_board(pause);
}
+ else g_error ("No boards to pause ?");
}
void
diff --git a/src/gcompris/board.h b/src/gcompris/board.h
index cec22ac..8a81f89 100644
--- a/src/gcompris/board.h
+++ b/src/gcompris/board.h
@@ -23,9 +23,9 @@
/**
* Handles plugins initialization
*
- * WIN32 = Static module, else it's dynamic
+ * STATIC_MODULE = Static module, else it's dynamic
*/
-#if defined WIN32
+#if defined STATIC_MODULE
#define GET_BPLUGIN_INFO(pluginname) \
BoardPlugin \
*get_##pluginname##_bplugin_info(void) \
@@ -34,8 +34,16 @@
} \
BoardPlugin * _##pluginname##_menu_bp = &menu_bp;
#else
+
+#ifdef BOARD_DLL_EXPORT
+// the dll exports
+# define EXPORT __declspec(dllexport)
+#else
+# define EXPORT
+#endif
+
#define GET_BPLUGIN_INFO(pluginname) \
- BoardPlugin \
+EXPORT BoardPlugin \
*get_bplugin_info(void) \
{ \
return &menu_bp; \
diff --git a/src/gcompris/bonus.c b/src/gcompris/bonus.c
index b434507..c94adf3 100644
--- a/src/gcompris/bonus.c
+++ b/src/gcompris/bonus.c
@@ -212,20 +212,28 @@ gc_bonus_end_display(BoardFinishedList type) {
void
gc_bonus_display(BonusStatusList gamewon, BonusList bonus_id)
{
+ g_warning("bonus display %d %d", (int) gamewon, (int) bonus_id);
gchar *absolute_file;
g_assert(bonus_id < BONUS_LAST);
+ g_warning("bar_hide...");
gc_bar_hide(TRUE);
+ g_warning("bar_hide... ok");
- if (bonus_display_running)
+ if (bonus_display_running) {
+ g_warning("error bonus_display_running !");
return;
+ }
else
bonus_display_running = TRUE;
if(gamewon == BOARD_WIN || gamewon == BOARD_DRAW) {
+ g_warning("bonus absolute filename... ");
absolute_file = gc_file_find_absolute(greetingsList[RAND(0, NUMBER_OF_GREETINGS-1)]);
+ g_warning("bonus absolute filename: %s", absolute_file );
+
if (absolute_file)
{
gc_sound_play_ogg(absolute_file, NULL);
@@ -247,7 +255,9 @@ gc_bonus_display(BonusStatusList gamewon, BonusList bonus_id)
}
/* First pause the board */
+ g_warning("Pausinng board ...");
gc_board_pause(TRUE);
+ g_warning("Pausinng board ...ok");
if(bonus_id==BONUS_RANDOM)
bonus_id = RAND(1, BONUS_LAST-2);
@@ -278,8 +288,15 @@ bonus_image(char *image, BonusStatusList gamewon)
char *str= NULL;
int x,y;
GdkPixbuf *pixmap = NULL;
+
+ g_warning("Bonus_image: gc_board_get_current...");
+
GcomprisBoard *gcomprisBoard = gc_board_get_current();
+ g_assert(gcomprisBoard);
+
+ g_warning("Bonus_image: gc_board_get_current... ok");
+
/* check that bonus_group is a singleton */
if (bonus_group != NULL) {
bonus_display_running = FALSE;
diff --git a/src/gcompris/file_selector.c b/src/gcompris/file_selector.c
index b6aaf2b..f8c577a 100644
--- a/src/gcompris/file_selector.c
+++ b/src/gcompris/file_selector.c
@@ -847,7 +847,7 @@ static void parse_doc(xmlDocPtr doc) {
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
- fprintf(stderr,"empty document\n");
+ g_warning("empty document\n");
xmlFreeDoc(doc);
return;
}
diff --git a/src/gcompris/gameutil.c b/src/gcompris/gameutil.c
index 41792fb..337be1e 100644
--- a/src/gcompris/gameutil.c
+++ b/src/gcompris/gameutil.c
@@ -23,10 +23,8 @@
#include <string.h>
#include <time.h>
-/* for gc_util_create_rootdir */
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+/* g_mkdir */
+#include <glib/gstdio.h>
/* libxml includes */
#include <libxml/parserInternals.h>
@@ -630,16 +628,13 @@ gc_util_create_rootdir (gchar *rootdir)
/* Case where ~/.gcompris already exist as a file. We remove it */
if(g_file_test(rootdir, G_FILE_TEST_IS_REGULAR)) {
- unlink(rootdir);
+ g_unlink(rootdir);
}
if(g_file_test(rootdir, G_FILE_TEST_IS_DIR)) {
return 0;
}
-#if defined WIN32
- return(mkdir(rootdir));
-#else
- return(mkdir(rootdir, 0755));
-#endif
+ return(g_mkdir(rootdir, 0755));
+
}
diff --git a/src/gcompris/gameutil.h b/src/gcompris/gameutil.h
index ecfc5c7..cf1a714 100644
--- a/src/gcompris/gameutil.h
+++ b/src/gcompris/gameutil.h
@@ -33,7 +33,7 @@
#include "soundutil.h"
// returns a random integer in range [A,B]
-#define RAND(A,B) (A + (int)((float)(B-A+1)*rand()/(RAND_MAX+1.0)))
+#define RAND(A,B) (A == B ? A : g_random_int_range((guint32) A,(guint32) B))
#ifndef MAX
#define MAX(a,b) (((a) > (b)) ? (a) : (b))
diff --git a/src/gcompris/gcompris.c b/src/gcompris/gcompris.c
index 609bd92..d5193e2 100644
--- a/src/gcompris/gcompris.c
+++ b/src/gcompris/gcompris.c
@@ -60,7 +60,7 @@ void gc_terminate(int signum);
/*
* For the Activation dialog
*/
-#ifdef WIN32
+#ifdef STATIC_MODULE
/* List of keycodes */
gchar *keycode[] =
{
@@ -798,7 +798,7 @@ static void setup_window ()
}
-#ifdef WIN32
+#ifdef STATIC_MODULE
extern int gc_board_number_in_demo;
/** Display the activation dialog for the windows version
*
@@ -903,7 +903,7 @@ activation_done()
(strcmp((char *)gtk_entry_get_text(GTK_ENTRY(widget_activation_entry)), "GOOD") != 0) &&
(strcmp((char *)gtk_entry_get_text(GTK_ENTRY(widget_activation_entry)), "WRONG") != 0))
{
- activation_enter_callback(widget_activation_entry, NULL);
+ activation_enter_callback(GTK_WIDGET(widget_activation_entry), NULL);
}
gc_board_play(properties->menu_board);
@@ -1372,7 +1372,7 @@ gc_init (int argc, char *argv[])
textdomain (GETTEXT_PACKAGE);
/* To have some real random behaviour */
- srand (time (NULL));
+ g_random_set_seed (time (NULL));
/* Default difficulty filter: non specified */
popt_difficulty_filter = -1;
@@ -1633,10 +1633,10 @@ gc_init (int argc, char *argv[])
if(popt_web_only) {
g_free(properties->package_data_dir);
- properties->package_data_dir = g_strdup("");
+ properties->package_data_dir = "";
g_free(properties->system_icon_dir);
- properties->system_icon_dir = g_strdup("");
+ properties->system_icon_dir = "";
}
if (popt_server){
diff --git a/src/gcompris/gcompris_db.c b/src/gcompris/gcompris_db.c
index c7f1207..31c21aa 100644
--- a/src/gcompris/gcompris_db.c
+++ b/src/gcompris/gcompris_db.c
@@ -20,8 +20,7 @@
#include <string.h>
#include "gcompris.h"
-#include <sys/stat.h>
-
+#include <glib/gstdio.h>
#ifdef USE_SQLITE
static sqlite3 *gcompris_db=NULL;
@@ -127,12 +126,17 @@ int gc_db_init()
if (!g_file_test(properties->database, G_FILE_TEST_EXISTS))
creation = TRUE;
+
+#ifndef WIN32
+ /* this stat() does not work on WinXP */
+ /* NEEDS CHECKING IN WINXP */
+
else {
/* we have to check this file is not empty,
because bug in administration */
struct stat buf;
- if (stat(properties->database, &buf)!=0)
+ if (g_stat(properties->database, &buf)!=0)
g_error("Can't stat %s", properties->database);
/* if size of file is null, we recreate the tables */
@@ -141,6 +145,7 @@ int gc_db_init()
g_warning("Database file is empty! Trying to create table...");
}
}
+#endif
rc = sqlite3_open(properties->database, &gcompris_db);
if( rc ){
diff --git a/src/gcompris/images_selector.c b/src/gcompris/images_selector.c
index 0bbd9ae..32e27d0 100644
--- a/src/gcompris/images_selector.c
+++ b/src/gcompris/images_selector.c
@@ -784,7 +784,7 @@ parse_doc(xmlDocPtr doc) {
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
- fprintf(stderr,"empty document\n");
+ g_warning("empty document\n");
xmlFreeDoc(doc);
return;
}
diff --git a/src/gcompris/menu.c b/src/gcompris/menu.c
index da1d4cf..4eb08e0 100644
--- a/src/gcompris/menu.c
+++ b/src/gcompris/menu.c
@@ -633,8 +633,13 @@ void gc_menu_load()
int db = (gc_profile_get_current() ? TRUE: FALSE);
properties->reread_menu = TRUE;
gc_menu_load_dir(properties->package_data_dir, db);
+
+ /* use GTimeVal for portability */
GDate *today = g_date_new();
- g_date_set_time (today, time (NULL));
+ GTimeVal now;
+
+ g_get_current_time (&now);
+ g_date_set_time_val (today, &now);
gchar date[11];
g_date_strftime (date, 11, "%F", today);
diff --git a/src/gcompris/properties.c b/src/gcompris/properties.c
index 5a8d2d6..17a1979 100644
--- a/src/gcompris/properties.c
+++ b/src/gcompris/properties.c
@@ -128,7 +128,9 @@ gc_prop_new ()
GScanner *scanner;
int filefd;
gchar *full_rootdir;
+#ifndef WIN32
const gchar *locale;
+#endif
gchar *user_dir;
tmp = (GcomprisProperties *) malloc (sizeof (GcomprisProperties));
diff --git a/src/gcompris/sdlplayer.c b/src/gcompris/sdlplayer.c
index f17b56d..87b20e8 100644
--- a/src/gcompris/sdlplayer.c
+++ b/src/gcompris/sdlplayer.c
@@ -46,15 +46,15 @@ static gboolean sound_paused = FALSE;
void errorv(char *str, va_list ap)
{
- vfprintf(stderr,str,ap);
+ //vfprintf(stderr,str,ap);
if(strcmp(Mix_GetError(), "Unrecognized file type (not VOC)")==0) {
- fprintf(stderr,"*** You need a version of \"SDL_mixer\" with OGG Vorbis supported ***\n");
+ g_warning("*** You need a version of \"SDL_mixer\" with OGG Vorbis supported ***\n");
exit(EXIT_FAILURE);
}
- fprintf(stderr,": %s.\n", Mix_GetError());
- fprintf(stderr,": %s.\n", SDL_GetError());
+ g_warning(": %s.\n", Mix_GetError());
+ g_warning(": %s.\n", SDL_GetError());
}
diff --git a/src/gcompris/soundutil.c b/src/gcompris/soundutil.c
index 9892e03..0162fa8 100644
--- a/src/gcompris/soundutil.c
+++ b/src/gcompris/soundutil.c
@@ -18,7 +18,6 @@
*/
#include "string.h"
-#include <unistd.h> /* sleep */
#ifdef __APPLE__
# include <sys/types.h>
@@ -173,11 +172,7 @@ scheduler_bgnd (gpointer user_data)
const gchar *one_dirent;
/* Sleep to let gcompris intialisation and intro music to complete */
-#if defined WIN32
- sleep(25000);
-#else
- sleep(25);
-#endif
+ g_usleep(25000000);
/* Load the Music directory file names */
music_dir = g_strconcat(properties->package_data_dir, "/music/background", NULL);