diff options
author | Yves 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) |
commit | e90959a0334333c1615c6b308a4f74bded67f6da (patch) | |
tree | 1756555483dc90801e49ef52bd6ca9fb15dc19ef | |
parent | 3ba73731337d58b107045b7c7c62bed728a082db (diff) |
Reapply patch for mingw cross-compile suppressed from head.
64 files changed, 947 insertions, 691 deletions
@@ -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 @@ -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 <" @@ -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 "" "> 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); |