eliot-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Eliot-dev] eliot INSTALL Makefile.am configure.in extras/c...


From: Olivier Teulière
Subject: [Eliot-dev] eliot INSTALL Makefile.am configure.in extras/c...
Date: Mon, 08 Dec 2008 21:45:34 +0000

CVSROOT:        /cvsroot/eliot
Module name:    eliot
Changes by:     Olivier Teulière <ipkiss>      08/12/08 21:45:34

Modified files:
        .              : INSTALL Makefile.am configure.in 
        extras/contrib : Makefile 
        po             : POTFILES.in eliot.pot fr.po 
Removed files:
        m4             : wxwin.m4 
        wxwin          : .cvsignore Makefile.am auxframes.cc auxframes.h 
                         confdimdlg.cc confdimdlg.h configdb.cc 
                         configdb.h confsearch.cc confsearch.h eliot.ico 
                         eliot.xpm ewx.h gfxboard.cc gfxboard.h 
                         gfxresult.cc gfxresult.h main.cc mainframe.cc 
                         mainframe.h printout.cc printout.h 
                         searchpanel.cc searchpanel.h 

Log message:
        Remove the wxWidgets interface completely

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/eliot/INSTALL?cvsroot=eliot&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/eliot/Makefile.am?cvsroot=eliot&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/eliot/configure.in?cvsroot=eliot&r1=1.31&r2=1.32
http://cvs.savannah.gnu.org/viewcvs/eliot/extras/contrib/Makefile?cvsroot=eliot&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/eliot/m4/wxwin.m4?cvsroot=eliot&r1=1.2&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/po/POTFILES.in?cvsroot=eliot&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/eliot/po/eliot.pot?cvsroot=eliot&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/eliot/po/fr.po?cvsroot=eliot&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/.cvsignore?cvsroot=eliot&r1=1.2&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/Makefile.am?cvsroot=eliot&r1=1.14&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/auxframes.cc?cvsroot=eliot&r1=1.26&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/auxframes.h?cvsroot=eliot&r1=1.10&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/confdimdlg.cc?cvsroot=eliot&r1=1.10&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/confdimdlg.h?cvsroot=eliot&r1=1.3&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/configdb.cc?cvsroot=eliot&r1=1.9&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/configdb.h?cvsroot=eliot&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/confsearch.cc?cvsroot=eliot&r1=1.10&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/confsearch.h?cvsroot=eliot&r1=1.4&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/eliot.ico?cvsroot=eliot&r1=1.1&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/eliot.xpm?cvsroot=eliot&r1=1.1&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/ewx.h?cvsroot=eliot&r1=1.12&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/gfxboard.cc?cvsroot=eliot&r1=1.11&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/gfxboard.h?cvsroot=eliot&r1=1.7&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/gfxresult.cc?cvsroot=eliot&r1=1.8&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/gfxresult.h?cvsroot=eliot&r1=1.4&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/main.cc?cvsroot=eliot&r1=1.12&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/mainframe.cc?cvsroot=eliot&r1=1.25&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/mainframe.h?cvsroot=eliot&r1=1.8&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/printout.cc?cvsroot=eliot&r1=1.12&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/printout.h?cvsroot=eliot&r1=1.6&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/searchpanel.cc?cvsroot=eliot&r1=1.19&r2=0
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/searchpanel.h?cvsroot=eliot&r1=1.5&r2=0

Patches:
Index: INSTALL
===================================================================
RCS file: /cvsroot/eliot/eliot/INSTALL,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- INSTALL     6 Sep 2008 20:06:58 -0000       1.12
+++ INSTALL     8 Dec 2008 21:45:27 -0000       1.13
@@ -28,14 +28,12 @@
 There are in fact several interfaces to Eliot:
  - one in text mode: mostly useful to debug Eliot
  - one using the ncursesw library: nice and complete, but not really graphical
- - a wxWidgets interface: working, but it does not allow multiplayer
-   modes, only training mode. This interface will disappear in version 1.8.
  - a Qt interface: the best interface to use, it supports all the features.
    This one is enabled by default if Qt development files are detected, but
    you can force it with --enable-qt
 
 These interfaces can be enabled or disabled at configuration time. Example:
-    ./configure --disable-text --enable-ncurses --disable-wxwidgets --enable-qt
+    ./configure --disable-text --enable-ncurses --enable-qt
 
 
 
@@ -58,7 +56,7 @@
 
     cd extras/contrib && make all
 
-  Eliot dependencies (libiconv, boost, wxWidgets and Qt) will be downloaded
+  Eliot dependencies (libiconv, boost, and Qt) will be downloaded
   and cross-compiled (except Qt, which is already compiled).
   The dependencies are installed in 'extras/contrib/inst'
 
@@ -80,7 +78,6 @@
             CPPFLAGS=-I${INST}/include LDFLAGS=-L${INST}/lib \
             CC=i586-mingw32msvc-gcc CXX=i586-mingw32msvc-g++ \
             ./configure --host=i586-mingw32msvc --build=i386-linux \
-            --enable-wxwidgets --with-wx-config=${INST}/bin/wx-config \
             --with-boost=${INST}
 
     - to compile, run 'make', possibly followed with 'make install'

Index: Makefile.am
===================================================================
RCS file: /cvsroot/eliot/eliot/Makefile.am,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- Makefile.am 22 Sep 2008 21:21:38 -0000      1.11
+++ Makefile.am 8 Dec 2008 21:45:27 -0000       1.12
@@ -1,4 +1,4 @@
-SUBDIRS = intl dic game utils wxwin qt po extras
+SUBDIRS = intl dic game utils qt po extras
 
 ACLOCAL_AMFLAGS = -I m4
 
@@ -18,7 +18,7 @@
        mkdir -p $(WIN32_PACKAGE_DIR)
 
 # Copy the binaries and strip them
-       cp $(top_builddir)/wxwin/wxeliot$(EXEEXT) 
$(top_builddir)/dic/compdic$(EXEEXT) $(top_builddir)/dic/listdic$(EXEEXT) 
$(top_builddir)/qt/eliot$(EXEEXT) $(WIN32_PACKAGE_DIR)
+       cp $(top_builddir)/dic/compdic$(EXEEXT) 
$(top_builddir)/dic/listdic$(EXEEXT) $(top_builddir)/qt/eliot$(EXEEXT) 
$(WIN32_PACKAGE_DIR)
        $(STRIP) $(WIN32_PACKAGE_DIR)/*
 
 # Copy the i18n files

Index: configure.in
===================================================================
RCS file: /cvsroot/eliot/eliot/configure.in,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -b -r1.31 -r1.32
--- configure.in        22 Nov 2008 14:40:25 -0000      1.31
+++ configure.in        8 Dec 2008 21:45:27 -0000       1.32
@@ -9,7 +9,6 @@
 AM_CONFIG_HEADER(config.h)
 AC_CANONICAL_HOST
 AC_CANONICAL_BUILD
-AM_OPTIONS_WXCONFIG
 
 dnl --------------------------------------------------------------
 dnl Checks for programs.
@@ -113,29 +112,6 @@
                    AC_DEFINE(HAVE_LIBCONFIG, 1, [Define to 1 if you have the 
libconfig library])],
                   [has_libconfig=0])
 
-dnl Check for wxWidgets
-AC_ARG_ENABLE([wxwidgets],AC_HELP_STRING([--enable-wxwidgets],[wxWidgets 
interface support (default disabled)]))
-if test "${enable_wxwidgets}" = "yes"
-then
-    AM_PATH_WXCONFIG(2.6.0, [wxWin=1], [wxWin=0], [], [--unicode])
-    if test "${wxWin}" != 1; then
-        AC_MSG_ERROR([
-                wxWidgets (unicode build) must be installed on your system
-                but wx-config script couldn't be found.
-
-                Please check that wx-config is in path, the directory
-                where wxWidgets libraries are installed (returned by
-                'wx-config --libs' command) is in LD_LIBRARY_PATH or
-                equivalent variable and wxWidgets version is 2.6.0 or above.
-        ])
-    fi
-    AM_CPPFLAGS="$AM_CPPFLAGS $WX_CPPFLAGS"
-    AM_CXXFLAGS="$AM_CXXFLAGS $WX_CXXFLAGS_ONLY"
-    AM_CFLAGS="$AM_CFLAGS $WX_CFLAGS_ONLY"
-    AM_LDFLAGS="$AM_LDFLAGS $WX_LIBS"
-fi
-AM_CONDITIONAL([BUILD_WXWIDGETS], [test "${wxWin}" = "1"])
-
 dnl Check for ncurses
 dnl We enable it if asked by the user, or if ncursesw is found
 AC_ARG_ENABLE([ncurses],AC_HELP_STRING([--enable-ncurses],
@@ -209,7 +185,6 @@
 dic/Makefile
 game/Makefile
 utils/Makefile
-wxwin/Makefile
 qt/Makefile
 extras/Makefile
 Makefile)

Index: extras/contrib/Makefile
===================================================================
RCS file: /cvsroot/eliot/eliot/extras/contrib/Makefile,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- extras/contrib/Makefile     22 Sep 2008 21:21:42 -0000      1.3
+++ extras/contrib/Makefile     8 Dec 2008 21:45:28 -0000       1.4
@@ -1,6 +1,5 @@
 ICONV_VERSION = 1.12
 LIBCONFIG_VERSION = 1.3.1
-WX_VERSION = 2.6.4
 BOOST_VERSION = 1_34_1
 QT_VERSION = 4.4.1
 
@@ -15,7 +14,7 @@
 
 .PHONY: help all
 
-all: .iconv .wxWidgets .boost .qt .libconfig
+all: .iconv .boost .qt .libconfig
 
 help:
        @echo "Usage: make all"
@@ -49,23 +48,6 @@
        touch $@
 
 
-### wxWidgets ###
-
-WX_ARCHIVE = wxMSW-$(WX_VERSION).zip
-WX_DIR = wxWidgets-$(WX_VERSION)
-WX_DOS_FILES = config* *.sh install-sh mkinstalldirs
-
-$(WX_DIR):
-       $(WGET) 
http://heanet.dl.sourceforge.net/sourceforge/wxwindows/$(WX_ARCHIVE)
-       unzip $(WX_ARCHIVE)
-
-.wxWidgets: $(WX_DIR)
-       (cd $< && dos2unix $(WX_DOS_FILES) && chmod +x $(WX_DOS_FILES))
-       (cd $< && $(CONFIGURE) --disable-shared --enable-optimise 
--disable-debug --enable-unicode --without-libtiff --without-expat 
--without-zlib --without-libpng --without-libjpeg --without-regex 
--disable-mediactrl && make && make install)
-       dos2unix $(PREFIX)/bin/wx-config
-       touch $@
-
-
 ### Boost ###
 
 BOOST_DIR = boost_$(BOOST_VERSION)

Index: po/POTFILES.in
===================================================================
RCS file: /cvsroot/eliot/eliot/po/POTFILES.in,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- po/POTFILES.in      31 Aug 2008 11:48:16 -0000      1.6
+++ po/POTFILES.in      8 Dec 2008 21:45:28 -0000       1.7
@@ -15,12 +15,19 @@
 dic/compdic.cpp
 dic/listdic.cpp
 dic/regexpmain.cpp
+game/ai_percent.cpp
+game/ai_percent.h
+game/ai_player.h
 game/bag.cpp
 game/bag.h
 game/board.cpp
-game/board.h
 game/board_cross.cpp
+game/board.h
 game/board_search.cpp
+game/command.cpp
+game/command.h
+game/coord.cpp
+game/coord.h
 game/cross.cpp
 game/cross.h
 game/debug.h
@@ -29,47 +36,51 @@
 game/freegame.cpp
 game/freegame.h
 game/game.cpp
+game/game_exception.cpp
+game/game_exception.h
+game/game_factory.cpp
+game/game_factory.h
 game/game.h
 game/game_io.cpp
+game/game_move_cmd.cpp
+game/game_move_cmd.h
 game/history.cpp
 game/history.h
+game/move.cpp
+game/move.h
+game/navigation.cpp
+game/navigation.h
 game/player.cpp
 game/player.h
+game/player_move_cmd.cpp
+game/player_move_cmd.h
+game/player_points_cmd.cpp
+game/player_points_cmd.h
+game/player_rack_cmd.cpp
+game/player_rack_cmd.h
 game/pldrack.cpp
 game/pldrack.h
+game/public_game.cpp
+game/public_game.h
 game/rack.cpp
 game/rack.h
 game/results.cpp
 game/results.h
 game/round.cpp
 game/round.h
+game/settings.cpp
+game/settings.h
 game/training.cpp
 game/training.h
+game/turn_cmd.cpp
+game/turn_cmd.h
+game/turn.cpp
+game/turn.h
 # utils/eliottxt.cpp
 utils/game_io.h
 utils/game_io.cpp
 utils/ncurses.cpp
 utils/ncurses.h
-wxwin/auxframes.h
-wxwin/auxframes.cc
-wxwin/confdimdlg.h
-wxwin/confdimdlg.cc
-wxwin/configdb.h
-wxwin/configdb.cc
-wxwin/confsearch.h
-wxwin/confsearch.cc
-wxwin/ewx.h
-wxwin/gfxboard.h
-wxwin/gfxboard.cc
-wxwin/gfxresult.h
-wxwin/gfxresult.cc
-wxwin/main.cc
-wxwin/mainframe.h
-wxwin/mainframe.cc
-wxwin/printout.h
-wxwin/printout.cc
-wxwin/searchpanel.h
-wxwin/searchpanel.cc
 qt/aux_window.cpp
 qt/aux_window.h
 qt/bag_widget.cpp

Index: po/eliot.pot
===================================================================
RCS file: /cvsroot/eliot/eliot/po/eliot.pot,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- po/eliot.pot        22 Nov 2008 14:40:26 -0000      1.19
+++ po/eliot.pot        8 Dec 2008 21:45:28 -0000       1.20
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-16 10:29+0100\n"
+"POT-Creation-Date: 2008-12-08 22:07+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <address@hidden>\n"
 "Language-Team: LANGUAGE <address@hidden>\n"
@@ -264,173 +264,177 @@
 msgid "result:"
 msgstr ""
 
-#: dic/regexpmain.cpp:108 wxwin/searchpanel.cc:296
+#: dic/regexpmain.cpp:108
 msgid "Invalid regular expression: "
 msgstr ""
 
-#: game/game.cpp:468
+#: game/game.cpp:232
 msgid "The bag is empty"
 msgstr ""
 
-#: game/game.cpp:475 game/game.cpp:485
+#: game/game.cpp:239 game/game.cpp:249
 msgid "Not enough vowels or consonants to complete the rack"
 msgstr ""
 
-#: game/training.cpp:49 qt/new_game.cpp:97 qt/new_game.cpp:105
-#: qt/new_game.cpp:140 qt/ui/new_game.ui:46
+#: game/game_factory.cpp:148
+#, c-format
+msgid "Player %u"
+msgstr ""
+
+#: game/training.cpp:52 qt/new_game.cpp:98 qt/new_game.cpp:107
+#: qt/new_game.cpp:142 qt/ui/new_game.ui:46
 msgid "Training"
 msgstr ""
 
-#: utils/ncurses.cpp:282
+#: utils/ncurses.cpp:283
 msgid "Scores"
 msgstr ""
 
-#: utils/ncurses.cpp:286 utils/ncurses.cpp:291
+#: utils/ncurses.cpp:287 utils/ncurses.cpp:293
 #, c-format
 msgid "%s: %d"
 msgstr ""
 
-#: utils/ncurses.cpp:303
+#: utils/ncurses.cpp:305
 msgid "Racks"
 msgstr ""
 
-#: utils/ncurses.cpp:307 utils/ncurses.cpp:313
+#: utils/ncurses.cpp:309 utils/ncurses.cpp:315
 #, c-format
 msgid "%s: %ls"
 msgstr ""
 
-#: utils/ncurses.cpp:327 utils/ncurses.cpp:330
+#: utils/ncurses.cpp:329 utils/ncurses.cpp:332
 msgid "Search complete"
 msgstr ""
 
-#: utils/ncurses.cpp:340 qt/ui/training_widget.ui:71
+#: utils/ncurses.cpp:341 qt/ui/training_widget.ui:71
 msgid "Search results"
 msgstr ""
 
-#: utils/ncurses.cpp:369
+#: utils/ncurses.cpp:370
 msgid "History of the game"
 msgstr ""
 
-#: utils/ncurses.cpp:375
+#: utils/ncurses.cpp:376
 msgid " N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS"
 msgstr ""
 
-#: utils/ncurses.cpp:414 qt/history_widget.cpp:143 qt/main_window.cpp:553
+#: utils/ncurses.cpp:415 qt/history_widget.cpp:143 qt/main_window.cpp:616
 msgid "(PASS)"
 msgstr ""
 
-#: utils/ncurses.cpp:440
+#: utils/ncurses.cpp:441
 msgid "Help"
 msgstr ""
 
-#: utils/ncurses.cpp:444
+#: utils/ncurses.cpp:445
 msgid "[Global]"
 msgstr ""
 
-#: utils/ncurses.cpp:445
+#: utils/ncurses.cpp:446
 msgid "   h, H, ?          Show/hide help box"
 msgstr ""
 
-#: utils/ncurses.cpp:446
+#: utils/ncurses.cpp:447
 msgid "   y, Y             Show/hide history of the game"
 msgstr ""
 
-#: utils/ncurses.cpp:447
+#: utils/ncurses.cpp:448
 msgid ""
 "   b, B             Show/hide contents of the bag (including letters of the "
 "racks)"
 msgstr ""
 
-#: utils/ncurses.cpp:448
+#: utils/ncurses.cpp:449
 msgid "   e, E             Show/hide dots on empty squares of the board"
 msgstr ""
 
-#: utils/ncurses.cpp:449
+#: utils/ncurses.cpp:450
 msgid "   d, D             Check the existence of a word in the dictionary"
 msgstr ""
 
-#: utils/ncurses.cpp:450
+#: utils/ncurses.cpp:451
 msgid "   j, J             Play a word"
 msgstr ""
 
-#: utils/ncurses.cpp:451
+#: utils/ncurses.cpp:452
 msgid "   s, S             Save the game"
 msgstr ""
 
-#: utils/ncurses.cpp:452
+#: utils/ncurses.cpp:453
 msgid "   l, L             Load a game"
 msgstr ""
 
-#: utils/ncurses.cpp:453
+#: utils/ncurses.cpp:454
 msgid "   q, Q             Quit"
 msgstr ""
 
-#: utils/ncurses.cpp:456
+#: utils/ncurses.cpp:457
 msgid "[Training mode]"
 msgstr ""
 
-#: utils/ncurses.cpp:457
+#: utils/ncurses.cpp:458
 msgid "   *                Take a random rack"
 msgstr ""
 
-#: utils/ncurses.cpp:458
+#: utils/ncurses.cpp:459
 msgid "   +                Complete the current rack randomly"
 msgstr ""
 
-#: utils/ncurses.cpp:459
+#: utils/ncurses.cpp:460
 msgid "   t, T             Set the rack manually"
 msgstr ""
 
-#: utils/ncurses.cpp:460
+#: utils/ncurses.cpp:461
 msgid "   c, C             Compute all the possible words"
 msgstr ""
 
-#: utils/ncurses.cpp:461
+#: utils/ncurses.cpp:462
 msgid "   r, R             Show/hide search results"
 msgstr ""
 
-#: utils/ncurses.cpp:464
+#: utils/ncurses.cpp:465
 msgid "[Duplicate mode]"
 msgstr ""
 
-#: utils/ncurses.cpp:465
+#: utils/ncurses.cpp:466
 msgid "   n, N             Switch to the next human player"
 msgstr ""
 
-#: utils/ncurses.cpp:468
+#: utils/ncurses.cpp:469
 msgid "[Free game mode]"
 msgstr ""
 
-#: utils/ncurses.cpp:469
+#: utils/ncurses.cpp:470
 msgid "   p, P             Pass your turn (with or without changing letters)"
 msgstr ""
 
-#: utils/ncurses.cpp:472
+#: utils/ncurses.cpp:473
 msgid "[Miscellaneous]"
 msgstr ""
 
-#: utils/ncurses.cpp:473
+#: utils/ncurses.cpp:474
 msgid "   <up>, <down>     Navigate in a box line by line"
 msgstr ""
 
-#: utils/ncurses.cpp:474
+#: utils/ncurses.cpp:475
 msgid "   <pgup>, <pgdown> Navigate in a box page by page"
 msgstr ""
 
-#: utils/ncurses.cpp:475
+#: utils/ncurses.cpp:476
 msgid "   Ctrl-l           Refresh the screen"
 msgstr ""
 
-#: utils/ncurses.cpp:486 wxwin/auxframes.cc:147 qt/main_window.cpp:636
-#: qt/ui/main_window.ui:94
+#: utils/ncurses.cpp:487 qt/main_window.cpp:712 qt/ui/main_window.ui:91
 msgid "Bag"
 msgstr ""
 
-#: utils/ncurses.cpp:493
+#: utils/ncurses.cpp:494
 msgid " LETTER | POINTS | FREQUENCY | REMAINING"
 msgstr ""
 
-#: utils/ncurses.cpp:546
+#: utils/ncurses.cpp:547
 msgid "Play a word"
 msgstr ""
 
@@ -438,781 +442,117 @@
 #. "Coordinates:". For example:
 #. Pl. word   :
 #. Coordinates:
-#: utils/ncurses.cpp:547 utils/ncurses.cpp:555
+#: utils/ncurses.cpp:548 utils/ncurses.cpp:556
 msgid "Played word:"
 msgstr ""
 
-#: utils/ncurses.cpp:548 utils/ncurses.cpp:556
+#: utils/ncurses.cpp:549 utils/ncurses.cpp:557
 msgid "Coordinates:"
 msgstr ""
 
-#: utils/ncurses.cpp:570
+#: utils/ncurses.cpp:571
 msgid "Incorrect or misplaced word"
 msgstr ""
 
-#: utils/ncurses.cpp:580
+#: utils/ncurses.cpp:581
 msgid "Dictionary"
 msgstr ""
 
-#: utils/ncurses.cpp:581
+#: utils/ncurses.cpp:582
 msgid "Enter the word to check:"
 msgstr ""
 
-#: utils/ncurses.cpp:590
+#: utils/ncurses.cpp:591
 #, c-format
 msgid "The word '%ls' exists"
 msgstr ""
 
-#: utils/ncurses.cpp:592
+#: utils/ncurses.cpp:593
 #, c-format
 msgid "The word '%ls' does not exist"
 msgstr ""
 
-#: utils/ncurses.cpp:602 wxwin/mainframe.cc:475 wxwin/mainframe.cc:483
+#: utils/ncurses.cpp:603
 msgid "Save the game"
 msgstr ""
 
-#: utils/ncurses.cpp:603 utils/ncurses.cpp:633
+#: utils/ncurses.cpp:604 utils/ncurses.cpp:634
 msgid "Enter the file name:"
 msgstr ""
 
-#: utils/ncurses.cpp:613
+#: utils/ncurses.cpp:614
 #, c-format
 msgid "Cannot open file %ls for writing"
 msgstr ""
 
-#: utils/ncurses.cpp:621
+#: utils/ncurses.cpp:622
 #, c-format
 msgid "Game saved in '%ls'"
 msgstr ""
 
-#: utils/ncurses.cpp:632 wxwin/mainframe.cc:275 wxwin/mainframe.cc:405
-#: wxwin/mainframe.cc:429 qt/main_window.cpp:398
+#: utils/ncurses.cpp:633 qt/main_window.cpp:460
 msgid "Load a game"
 msgstr ""
 
-#: utils/ncurses.cpp:643
+#: utils/ncurses.cpp:644
 #, c-format
 msgid "Cannot open file '%ls' for reading"
 msgstr ""
 
-#: utils/ncurses.cpp:651
+#: utils/ncurses.cpp:652
 #, c-format
 msgid "Invalid saved game"
 msgstr ""
 
-#: utils/ncurses.cpp:656 qt/main_window.cpp:412
+#: utils/ncurses.cpp:657 qt/main_window.cpp:475
 #, c-format
 msgid "Game loaded"
 msgstr ""
 
-#: utils/ncurses.cpp:671
+#: utils/ncurses.cpp:673
 msgid "Pass your turn"
 msgstr ""
 
-#: utils/ncurses.cpp:672
+#: utils/ncurses.cpp:674
 msgid "Enter the letters to change:"
 msgstr ""
 
-#: utils/ncurses.cpp:681
+#: utils/ncurses.cpp:683
 msgid "Cannot pass the turn"
 msgstr ""
 
-#: utils/ncurses.cpp:691
+#: utils/ncurses.cpp:693
 msgid "Set rack"
 msgstr ""
 
-#: utils/ncurses.cpp:692
+#: utils/ncurses.cpp:694
 msgid "Enter the new letters:"
 msgstr ""
 
-#: utils/ncurses.cpp:701
+#: utils/ncurses.cpp:703
 msgid "Cannot take these letters from the bag"
 msgstr ""
 
-#: utils/ncurses.cpp:1095 qt/main_window.cpp:214 qt/ui/prefs_dialog.ui:181
+#: utils/ncurses.cpp:1112 qt/main_window.cpp:241 qt/ui/prefs_dialog.ui:191
 msgid "Training mode"
 msgstr ""
 
-#: utils/ncurses.cpp:1097 qt/ui/prefs_dialog.ui:162
+#: utils/ncurses.cpp:1114 qt/ui/prefs_dialog.ui:172
 msgid "Free game mode"
 msgstr ""
 
-#: utils/ncurses.cpp:1099 qt/ui/prefs_dialog.ui:75
+#: utils/ncurses.cpp:1116 qt/ui/prefs_dialog.ui:85
 msgid "Duplicate mode"
 msgstr ""
 
-#: utils/ncurses.cpp:1102 qt/ui/new_game.ui:67
+#: utils/ncurses.cpp:1119 qt/ui/new_game.ui:67
 msgid "Joker game"
 msgstr ""
 
-#: utils/ncurses.cpp:1103
+#: utils/ncurses.cpp:1120
 msgid "[h for help]"
 msgstr ""
 
-#: wxwin/auxframes.cc:122
-msgid "Grid"
-msgstr ""
-
-#: wxwin/auxframes.cc:202 qt/ui/training_widget.ui:52
-msgid "Search"
-msgstr ""
-
-#: wxwin/auxframes.cc:233 qt/ui/dic_tools_widget.ui:31
-msgid "Check"
-msgstr ""
-
-#: wxwin/auxframes.cc:238
-msgid "Word to check"
-msgstr ""
-
-#: wxwin/auxframes.cc:256 wxwin/configdb.cc:203 wxwin/searchpanel.cc:107
-msgid "No dictionary"
-msgstr ""
-
-#: wxwin/auxframes.cc:260
-msgid "exists"
-msgstr ""
-
-#: wxwin/auxframes.cc:262
-msgid "doesn't exist"
-msgstr ""
-
-#: wxwin/auxframes.cc:303
-msgid "Copy"
-msgstr ""
-
-#: wxwin/auxframes.cc:347 wxwin/mainframe.cc:502 wxwin/mainframe.cc:522
-#: wxwin/mainframe.cc:553
-msgid "No on going game"
-msgstr ""
-
-#: wxwin/auxframes.cc:362 wxwin/searchpanel.cc:119
-msgid "No result"
-msgstr ""
-
-#: wxwin/auxframes.cc:372
-msgid "Rack + 1"
-msgstr ""
-
-#: wxwin/auxframes.cc:414
-msgid "Rack: "
-msgstr ""
-
-#: wxwin/auxframes.cc:435
-msgid "Benjamins"
-msgstr ""
-
-#: wxwin/auxframes.cc:476
-msgid "Extensions"
-msgstr ""
-
-#: wxwin/auxframes.cc:542 wxwin/mainframe.cc:325
-msgid "Game history"
-msgstr ""
-
-#: wxwin/auxframes.cc:574 wxwin/mainframe.cc:327
-msgid "Results"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:62
-msgid "left"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:63
-msgid "centered"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:64
-msgid "right"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:118
-msgid "Alignment"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:120
-msgid "Spacing"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:124 wxwin/confdimdlg.cc:135
-msgid "Font..."
-msgstr ""
-
-#: wxwin/confdimdlg.cc:129
-msgid "Title column "
-msgstr ""
-
-#: wxwin/confdimdlg.cc:140
-msgid "Text column "
-msgstr ""
-
-#: wxwin/confdimdlg.cc:150
-msgid "Column heading"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:154
-msgid "Alignment of the column heading"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:158
-msgid "Spacing of the heading characters"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:167
-msgid "Inner dimension of the column (in mm)"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:176
-msgid "Alignment of the column text"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:180
-msgid "Characters spacing"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:231
-msgid "Title spc. top"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:233
-msgid "Text spc. top"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:235
-msgid "Text spc. left"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:252
-msgid "Title spc. bot."
-msgstr ""
-
-#: wxwin/confdimdlg.cc:254
-msgid "Text spc. bot."
-msgstr ""
-
-#: wxwin/confdimdlg.cc:256
-msgid "Text spc. right"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:286
-msgid "Printer"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:288
-msgid "Configure the printer"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:290
-msgid "Page"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:292
-msgid "Configure the dimensions of the page"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:298
-msgid "Cancel the last changes"
-msgstr ""
-
-#: wxwin/confdimdlg.cc:304 wxwin/confsearch.cc:42
-msgid "Save the changes"
-msgstr ""
-
-#: wxwin/configdb.cc:322
-msgid "Nb"
-msgstr ""
-
-#: wxwin/configdb.cc:323 wxwin/mainframe.cc:174 qt/history_widget.cpp:52
-msgid "Rack"
-msgstr ""
-
-#: wxwin/configdb.cc:324
-msgid "Solution"
-msgstr ""
-
-#: wxwin/configdb.cc:325 wxwin/gfxresult.cc:69
-msgid "Pos"
-msgstr ""
-
-#: wxwin/configdb.cc:326 wxwin/gfxresult.cc:70
-msgid "Pts"
-msgstr ""
-
-#: wxwin/confsearch.cc:36
-msgid "Search on joker in 7+1 panel"
-msgstr ""
-
-#: wxwin/confsearch.cc:37
-msgid "Check rack validity"
-msgstr ""
-
-#: wxwin/confsearch.cc:40
-msgid "Cancel last changes"
-msgstr ""
-
-#: wxwin/gfxresult.cc:67 qt/history_widget.cpp:53 qt/training_widget.cpp:59
-msgid "Word"
-msgstr ""
-
-#: wxwin/gfxresult.cc:71
-msgid "Results of the search"
-msgstr ""
-
-#: wxwin/mainframe.cc:188
-msgid " Rack "
-msgstr ""
-
-#: wxwin/mainframe.cc:189
-msgid " Complement "
-msgstr ""
-
-#: wxwin/mainframe.cc:190
-msgid " Search "
-msgstr ""
-
-#: wxwin/mainframe.cc:191
-msgid " Back "
-msgstr ""
-
-#: wxwin/mainframe.cc:192
-msgid " Play "
-msgstr ""
-
-#: wxwin/mainframe.cc:194
-msgid "Random rack"
-msgstr ""
-
-#: wxwin/mainframe.cc:196
-msgid "Random complement of the rack"
-msgstr ""
-
-#: wxwin/mainframe.cc:198
-msgid "Search with the current rack"
-msgstr ""
-
-#: wxwin/mainframe.cc:200
-msgid "Go back one turn"
-msgstr ""
-
-#: wxwin/mainframe.cc:202
-msgid "Play the selected word"
-msgstr ""
-
-#: wxwin/mainframe.cc:272
-msgid "&New game\tCtrl+N"
-msgstr ""
-
-#: wxwin/mainframe.cc:272 qt/main_window.cpp:316
-msgid "Start a new game"
-msgstr ""
-
-#: wxwin/mainframe.cc:273
-msgid "New &joker game\tCtrl+J"
-msgstr ""
-
-#: wxwin/mainframe.cc:273
-msgid "Start a new joker game"
-msgstr ""
-
-#: wxwin/mainframe.cc:275
-msgid "&Load...\tCtrl+L"
-msgstr ""
-
-#: wxwin/mainframe.cc:276
-msgid "&Save as...\tCtrl+S"
-msgstr ""
-
-#: wxwin/mainframe.cc:276 qt/main_window.cpp:321
-msgid "Save the current game"
-msgstr ""
-
-#: wxwin/mainframe.cc:278
-msgid "&Print...\tCtrl+P"
-msgstr ""
-
-#: wxwin/mainframe.cc:278
-msgid "Print this game"
-msgstr ""
-
-#: wxwin/mainframe.cc:279
-msgid "Print pre&view..."
-msgstr ""
-
-#: wxwin/mainframe.cc:279
-msgid "Print preview of the game"
-msgstr ""
-
-#: wxwin/mainframe.cc:281
-msgid "Print in PostS&cript..."
-msgstr ""
-
-#: wxwin/mainframe.cc:281
-msgid "Print in a PostScript file"
-msgstr ""
-
-#: wxwin/mainframe.cc:284
-msgid "&Quit\tCtrl+Q"
-msgstr ""
-
-#: wxwin/mainframe.cc:284 qt/main_window.cpp:327
-msgid "Quit Eliot"
-msgstr ""
-
-#: wxwin/mainframe.cc:287
-msgid "&Dictionary...\tCtrl+D"
-msgstr ""
-
-#: wxwin/mainframe.cc:287 wxwin/mainframe.cc:604 qt/main_window.cpp:603
-msgid "Choose a dictionary"
-msgstr ""
-
-#: wxwin/mainframe.cc:288
-msgid "&Search..."
-msgstr ""
-
-#: wxwin/mainframe.cc:288
-msgid "Search options"
-msgstr ""
-
-#: wxwin/mainframe.cc:291
-msgid "&Background..."
-msgstr ""
-
-#: wxwin/mainframe.cc:291
-msgid "Background color"
-msgstr ""
-
-#: wxwin/mainframe.cc:292
-msgid "L&ines..."
-msgstr ""
-
-#: wxwin/mainframe.cc:292
-msgid "Color of the lines"
-msgstr ""
-
-#: wxwin/mainframe.cc:294
-msgid "&Played letters..."
-msgstr ""
-
-#: wxwin/mainframe.cc:294
-msgid "Color of the letters played on the board"
-msgstr ""
-
-#: wxwin/mainframe.cc:295
-msgid "&Temporary letters..."
-msgstr ""
-
-#: wxwin/mainframe.cc:295
-msgid "Color of the letters of the temporary word"
-msgstr ""
-
-#: wxwin/mainframe.cc:296
-msgid "B&ackground of played letters..."
-msgstr ""
-
-#: wxwin/mainframe.cc:296
-msgid "Background color of the letters played on the board"
-msgstr ""
-
-#: wxwin/mainframe.cc:297
-msgid "Ba&ckground of temporary letters..."
-msgstr ""
-
-#: wxwin/mainframe.cc:297
-msgid "Background color of the temporary letters on the board"
-msgstr ""
-
-#: wxwin/mainframe.cc:299
-msgid "Double &letter..."
-msgstr ""
-
-#: wxwin/mainframe.cc:299
-msgid "Color of the \"double letter\" squares"
-msgstr ""
-
-#: wxwin/mainframe.cc:300
-msgid "Triple l&etter..."
-msgstr ""
-
-#: wxwin/mainframe.cc:300
-msgid "Color of the \"triple letter\" squares"
-msgstr ""
-
-#: wxwin/mainframe.cc:301
-msgid "Double &word..."
-msgstr ""
-
-#: wxwin/mainframe.cc:301
-msgid "Color of the \"double word\" squares"
-msgstr ""
-
-#: wxwin/mainframe.cc:302
-msgid "Triple w&ord..."
-msgstr ""
-
-#: wxwin/mainframe.cc:302
-msgid "Color of the \"triple word\" squares"
-msgstr ""
-
-#: wxwin/mainframe.cc:304
-msgid "&Default colors"
-msgstr ""
-
-#: wxwin/mainframe.cc:304
-msgid "Restore the default colors"
-msgstr ""
-
-#: wxwin/mainframe.cc:307
-msgid "&Search letters..."
-msgstr ""
-
-#: wxwin/mainframe.cc:307
-msgid "Font for the search"
-msgstr ""
-
-#: wxwin/mainframe.cc:310 wxwin/mainframe.cc:334 qt/history_widget.cpp:177
-#: qt/main_window.cpp:314
-msgid "&Game"
-msgstr ""
-
-#: wxwin/mainframe.cc:310
-msgid "Configuration of the game"
-msgstr ""
-
-#: wxwin/mainframe.cc:311
-msgid "&Fonts"
-msgstr ""
-
-#: wxwin/mainframe.cc:311
-msgid "Configuration of the fonts"
-msgstr ""
-
-#: wxwin/mainframe.cc:312
-msgid "&Colors"
-msgstr ""
-
-#: wxwin/mainframe.cc:312
-msgid "Configuration of the colors"
-msgstr ""
-
-#: wxwin/mainframe.cc:313
-msgid "&Printing..."
-msgstr ""
-
-#: wxwin/mainframe.cc:313
-msgid "Configuration of the printing parameters"
-msgstr ""
-
-#: wxwin/mainframe.cc:316
-msgid "&Board"
-msgstr ""
-
-#: wxwin/mainframe.cc:316
-msgid "Game board"
-msgstr ""
-
-#: wxwin/mainframe.cc:317
-msgid "Ba&g\tCtrl+B"
-msgstr ""
-
-#: wxwin/mainframe.cc:317
-msgid "Remaining letters in the bag"
-msgstr ""
-
-#: wxwin/mainframe.cc:318
-msgid "&Check"
-msgstr ""
-
-#: wxwin/mainframe.cc:318
-msgid "Check a word in the dictionary"
-msgstr ""
-
-#: wxwin/mainframe.cc:319
-msgid "&Search"
-msgstr ""
-
-#: wxwin/mainframe.cc:319
-msgid "Search in the dictionary"
-msgstr ""
-
-#: wxwin/mainframe.cc:321
-msgid "&Rack + 1"
-msgstr ""
-
-#: wxwin/mainframe.cc:321
-msgid "Letters of the rack plus one"
-msgstr ""
-
-#: wxwin/mainframe.cc:322
-msgid "&Extensions"
-msgstr ""
-
-#: wxwin/mainframe.cc:322
-msgid "One-letter extensions on a word of the search"
-msgstr ""
-
-#: wxwin/mainframe.cc:323
-msgid "&Benjamins"
-msgstr ""
-
-#: wxwin/mainframe.cc:323
-msgid "Benjamins (3-letter extensions) on a word of the search"
-msgstr ""
-
-#: wxwin/mainframe.cc:325
-msgid "Game &history\tCtrl+H"
-msgstr ""
-
-#: wxwin/mainframe.cc:327
-msgid "R&esults"
-msgstr ""
-
-#: wxwin/mainframe.cc:331 qt/main_window.cpp:352
-msgid "&About..."
-msgstr ""
-
-#: wxwin/mainframe.cc:331 wxwin/mainframe.cc:733 qt/main_window.cpp:353
-#: qt/main_window.cpp:714
-msgid "About Eliot"
-msgstr ""
-
-#: wxwin/mainframe.cc:335 qt/main_window.cpp:331
-msgid "&Settings"
-msgstr ""
-
-#: wxwin/mainframe.cc:336 qt/main_window.cpp:339
-msgid "&Windows"
-msgstr ""
-
-#: wxwin/mainframe.cc:337 qt/main_window.cpp:351
-msgid "&Help"
-msgstr ""
-
-#: wxwin/mainframe.cc:361 wxwin/mainframe.cc:408
-msgid "No dictionary selected"
-msgstr ""
-
-#: wxwin/mainframe.cc:361 wxwin/mainframe.cc:408 wxwin/mainframe.cc:502
-#: wxwin/mainframe.cc:522 wxwin/mainframe.cc:553
-msgid "Eliot: error"
-msgstr ""
-
-#: wxwin/mainframe.cc:428
-msgid "Cannot open "
-msgstr ""
-
-#: wxwin/mainframe.cc:440 wxwin/mainframe.cc:449 qt/main_window.cpp:405
-msgid "Error while loading the game"
-msgstr ""
-
-#: wxwin/mainframe.cc:441
-msgid "Invalid game"
-msgstr ""
-
-#: wxwin/mainframe.cc:450
-msgid "The game is empty"
-msgstr ""
-
-#: wxwin/mainframe.cc:482
-msgid "Cannot create "
-msgstr ""
-
-#: wxwin/mainframe.cc:511 wxwin/mainframe.cc:575
-msgid "Printing not done"
-msgstr ""
-
-#: wxwin/mainframe.cc:511 wxwin/mainframe.cc:539
-msgid "Printing"
-msgstr ""
-
-#: wxwin/mainframe.cc:534
-msgid "Print preview problem.\n"
-msgstr ""
-
-#: wxwin/mainframe.cc:535
-msgid "The printer may not be correctly initialized"
-msgstr ""
-
-#: wxwin/mainframe.cc:536
-msgid "Print preview"
-msgstr ""
-
-#: wxwin/mainframe.cc:557
-msgid "Print to a PostScript file"
-msgstr ""
-
-#: wxwin/mainframe.cc:576 wxwin/mainframe.cc:582
-msgid "PostScript printing"
-msgstr ""
-
-#: wxwin/mainframe.cc:581
-msgid "Cannot initialize PostScript printer"
-msgstr ""
-
-#: wxwin/mainframe.cc:729
-msgid ""
-"This program is free software; you can redistribute it and/or modify it "
-"under the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version."
-msgstr ""
-
-#: wxwin/mainframe.cc:927
-msgid "turn:"
-msgstr ""
-
-#: wxwin/mainframe.cc:928
-msgid "points:"
-msgstr ""
-
-#: wxwin/mainframe.cc:963
-msgid ""
-"The bag doesn't contain enough letters\n"
-"for a new rack."
-msgstr ""
-
-#: wxwin/mainframe.cc:964 wxwin/mainframe.cc:968 wxwin/mainframe.cc:972
-msgid "Rack validation"
-msgstr ""
-
-#: wxwin/mainframe.cc:967
-msgid "The rack must contain at least 2 consonants and 2 vowels."
-msgstr ""
-
-#: wxwin/mainframe.cc:971
-msgid "The rack contains invalid letters for the current dictionary"
-msgstr ""
-
-#: wxwin/mainframe.cc:975
-msgid "The rack has been modified manually"
-msgstr ""
-
-#: wxwin/searchpanel.cc:146 wxwin/searchpanel.cc:190
-#, c-format
-msgid "The search is limited to %d letters"
-msgstr ""
-
-#: wxwin/searchpanel.cc:249
-msgid "Minimum length"
-msgstr ""
-
-#: wxwin/searchpanel.cc:251
-msgid "Maximum length"
-msgstr ""
-
-#: wxwin/searchpanel.cc:320
-msgid "Cross words"
-msgstr ""
-
-#: wxwin/searchpanel.cc:321 qt/ui/dic_tools_widget.ui:69
-msgid "Plus 1"
-msgstr ""
-
-#: wxwin/searchpanel.cc:322 qt/ui/dic_tools_widget.ui:94
-msgid "Regular expressions"
-msgstr ""
-
 #: qt/bag_widget.cpp:50 qt/dic_tools_widget.cpp:100
 msgid "Letter"
 msgstr ""
@@ -1280,6 +620,14 @@
 msgid "Turn"
 msgstr ""
 
+#: qt/history_widget.cpp:52
+msgid "Rack"
+msgstr ""
+
+#: qt/history_widget.cpp:53 qt/training_widget.cpp:59
+msgid "Word"
+msgstr ""
+
 #: qt/history_widget.cpp:54 qt/training_widget.cpp:60
 msgid "Ref"
 msgstr ""
@@ -1288,216 +636,336 @@
 msgid "Player"
 msgstr ""
 
-#: qt/main_window.cpp:109 qt/main_window.cpp:654 qt/ui/main_window.ui:40
+#: qt/history_widget.cpp:177 qt/main_window.cpp:347
+msgid "&Game"
+msgstr ""
+
+#: qt/main_window.cpp:112 qt/main_window.cpp:730 qt/ui/main_window.ui:32
 msgid "Board"
 msgstr ""
 
-#: qt/main_window.cpp:164
+#: qt/main_window.cpp:167
 msgid ""
 "Cannot load dictionary '%1' indicated in the preferences.\n"
 "Reason: %2"
 msgstr ""
 
-#: qt/main_window.cpp:206
+#: qt/main_window.cpp:233
 msgid "No game"
 msgstr ""
 
-#: qt/main_window.cpp:219
+#: qt/main_window.cpp:246
 msgid "Duplicate game"
 msgstr ""
 
-#: qt/main_window.cpp:224 qt/new_game.cpp:99 qt/new_game.cpp:165
+#: qt/main_window.cpp:251 qt/new_game.cpp:100 qt/new_game.cpp:167
 #: qt/ui/new_game.ui:41
 msgid "Free game"
 msgstr ""
 
-#: qt/main_window.cpp:236
+#: qt/main_window.cpp:263
 msgid "Dictionary: %1"
 msgstr ""
 
-#: qt/main_window.cpp:245
+#: qt/main_window.cpp:272
 msgid "Eliot - Error"
 msgstr ""
 
-#: qt/main_window.cpp:315
+#: qt/main_window.cpp:348
 msgid "&New..."
 msgstr ""
 
-#: qt/main_window.cpp:315
+#: qt/main_window.cpp:348
 msgid "Ctrl+N"
 msgstr ""
 
-#: qt/main_window.cpp:318
+#: qt/main_window.cpp:349
+msgid "Start a new game"
+msgstr ""
+
+#: qt/main_window.cpp:351
 msgid "&Load..."
 msgstr ""
 
-#: qt/main_window.cpp:318
+#: qt/main_window.cpp:351
 msgid "Ctrl+O"
 msgstr ""
 
-#: qt/main_window.cpp:319
+#: qt/main_window.cpp:352
 msgid "Load an existing game"
 msgstr ""
 
-#: qt/main_window.cpp:320
+#: qt/main_window.cpp:353
 msgid "&Save as..."
 msgstr ""
 
-#: qt/main_window.cpp:320
+#: qt/main_window.cpp:353
 msgid "Ctrl+S"
 msgstr ""
 
-#: qt/main_window.cpp:323
+#: qt/main_window.cpp:354
+msgid "Save the current game"
+msgstr ""
+
+#: qt/main_window.cpp:356
 msgid "&Print..."
 msgstr ""
 
-#: qt/main_window.cpp:323
+#: qt/main_window.cpp:356
 msgid "Ctrl+P"
 msgstr ""
 
-#: qt/main_window.cpp:324
+#: qt/main_window.cpp:357
 msgid "Print the current game"
 msgstr ""
 
-#: qt/main_window.cpp:326
+#: qt/main_window.cpp:359
 msgid "&Quit"
 msgstr ""
 
-#: qt/main_window.cpp:326
+#: qt/main_window.cpp:359
 msgid "Ctrl+Q"
 msgstr ""
 
-#: qt/main_window.cpp:332
+#: qt/main_window.cpp:360
+msgid "Quit Eliot"
+msgstr ""
+
+#: qt/main_window.cpp:364 qt/main_window.cpp:406
+msgid "&History"
+msgstr ""
+
+#: qt/main_window.cpp:365
+msgid "&First turn"
+msgstr ""
+
+#: qt/main_window.cpp:365
+msgid "Ctrl+Home"
+msgstr ""
+
+#: qt/main_window.cpp:366
+msgid "Go to the first turn of the game"
+msgstr ""
+
+#: qt/main_window.cpp:368
+msgid "&Previous turn"
+msgstr ""
+
+#: qt/main_window.cpp:368
+msgid "Ctrl+Left"
+msgstr ""
+
+#: qt/main_window.cpp:369
+msgid "Go to the previous turn of the game"
+msgstr ""
+
+#: qt/main_window.cpp:371
+msgid "&Next turn"
+msgstr ""
+
+#: qt/main_window.cpp:371
+msgid "Ctrl+Right"
+msgstr ""
+
+#: qt/main_window.cpp:372
+msgid "Go to the next turn of the game"
+msgstr ""
+
+#: qt/main_window.cpp:374
+msgid "&Last turn"
+msgstr ""
+
+#: qt/main_window.cpp:374
+msgid "Ctrl+End"
+msgstr ""
+
+#: qt/main_window.cpp:375
+msgid "Go to the last turn of the game"
+msgstr ""
+
+#: qt/main_window.cpp:377
+msgid "&Replay turn"
+msgstr ""
+
+#: qt/main_window.cpp:377
+msgid "Ctrl+R"
+msgstr ""
+
+#: qt/main_window.cpp:378
+msgid ""
+"Play the game from the current position, replacing what was really played"
+msgstr ""
+
+#: qt/main_window.cpp:390
+msgid "&Settings"
+msgstr ""
+
+#: qt/main_window.cpp:391
 msgid "&Choose dictionary..."
 msgstr ""
 
-#: qt/main_window.cpp:332
+#: qt/main_window.cpp:391
 msgid "Ctrl+C"
 msgstr ""
 
-#: qt/main_window.cpp:333
+#: qt/main_window.cpp:392
 msgid "Select a new dictionary"
 msgstr ""
 
-#: qt/main_window.cpp:334
+#: qt/main_window.cpp:393
 msgid "&Preferences..."
 msgstr ""
 
-#: qt/main_window.cpp:334
+#: qt/main_window.cpp:393
 msgid "Ctrl+F"
 msgstr ""
 
-#: qt/main_window.cpp:335
+#: qt/main_window.cpp:394
 msgid "Edit the preferences"
 msgstr ""
 
-#: qt/main_window.cpp:340
+#: qt/main_window.cpp:398
+msgid "&Windows"
+msgstr ""
+
+#: qt/main_window.cpp:399
+msgid "&Toolbar"
+msgstr ""
+
+#: qt/main_window.cpp:399
+msgid "Ctrl+T"
+msgstr ""
+
+#: qt/main_window.cpp:400
+msgid "Show/hide the toolbar"
+msgstr ""
+
+#: qt/main_window.cpp:402
 msgid "&Bag"
 msgstr ""
 
-#: qt/main_window.cpp:340
+#: qt/main_window.cpp:402
 msgid "Ctrl+B"
 msgstr ""
 
-#: qt/main_window.cpp:341 qt/ui/main_window.ui:97
+#: qt/main_window.cpp:403 qt/ui/main_window.ui:94
 msgid "Show/hide the remaining tiles in the bag"
 msgstr ""
 
-#: qt/main_window.cpp:342
+#: qt/main_window.cpp:404
 msgid "&External board"
 msgstr ""
 
-#: qt/main_window.cpp:342
+#: qt/main_window.cpp:404
 msgid "Ctrl+E"
 msgstr ""
 
-#: qt/main_window.cpp:343 qt/ui/main_window.ui:111
+#: qt/main_window.cpp:405 qt/ui/main_window.ui:108
 msgid "Show/hide the external board"
 msgstr ""
 
-#: qt/main_window.cpp:344
-msgid "&History"
-msgstr ""
-
-#: qt/main_window.cpp:344
+#: qt/main_window.cpp:406
 msgid "Ctrl+H"
 msgstr ""
 
-#: qt/main_window.cpp:345 qt/ui/main_window.ui:125
+#: qt/main_window.cpp:407 qt/ui/main_window.ui:122
 msgid "Show/hide the game history"
 msgstr ""
 
-#: qt/main_window.cpp:346
+#: qt/main_window.cpp:408
 msgid "&Dictionary tools"
 msgstr ""
 
-#: qt/main_window.cpp:346
+#: qt/main_window.cpp:408
 msgid "Ctrl+D"
 msgstr ""
 
-#: qt/main_window.cpp:347 qt/ui/main_window.ui:139
+#: qt/main_window.cpp:409 qt/ui/main_window.ui:136
 msgid "Show/hide the dictionary tools"
 msgstr ""
 
-#: qt/main_window.cpp:352
+#: qt/main_window.cpp:413
+msgid "&Help"
+msgstr ""
+
+#: qt/main_window.cpp:414
+msgid "&About..."
+msgstr ""
+
+#: qt/main_window.cpp:414
 msgid "Ctrl+A"
 msgstr ""
 
-#: qt/main_window.cpp:361 qt/main_window.cpp:394
+#: qt/main_window.cpp:415 qt/main_window.cpp:789
+msgid "About Eliot"
+msgstr ""
+
+#: qt/main_window.cpp:423 qt/main_window.cpp:456
 msgid "You have to select a dictionary first!"
 msgstr ""
 
-#: qt/main_window.cpp:386
+#: qt/main_window.cpp:448
 msgid "Game started"
 msgstr ""
 
-#: qt/main_window.cpp:422
+#: qt/main_window.cpp:467
+msgid "Error while loading the game"
+msgstr ""
+
+#: qt/main_window.cpp:485
 msgid "Save a game"
 msgstr ""
 
-#: qt/main_window.cpp:427
+#: qt/main_window.cpp:490
 msgid "Game saved"
 msgstr ""
 
-#: qt/main_window.cpp:461
+#: qt/main_window.cpp:524
 msgid "N."
 msgstr ""
 
-#: qt/main_window.cpp:461
+#: qt/main_window.cpp:524
 msgid "RACK"
 msgstr ""
 
-#: qt/main_window.cpp:461
+#: qt/main_window.cpp:524
 msgid "SOLUTION"
 msgstr ""
 
-#: qt/main_window.cpp:461
+#: qt/main_window.cpp:524
 msgid "REF"
 msgstr ""
 
-#: qt/main_window.cpp:461
+#: qt/main_window.cpp:524
 msgid "PTS"
 msgstr ""
 
-#: qt/main_window.cpp:594
-msgid "Stop current game?"
+#: qt/main_window.cpp:657
+msgid "Loading a dictionary will stop the current game."
 msgstr ""
 
-#: qt/main_window.cpp:595
-msgid ""
-"Loading a dictionary will stop the current game. Do you want to continue?"
+#: qt/main_window.cpp:658 qt/main_window.cpp:859 qt/new_game.cpp:56
+msgid "Eliot"
+msgstr ""
+
+#: qt/main_window.cpp:660 qt/main_window.cpp:861
+msgid "Do you want to continue?"
 msgstr ""
 
-#: qt/main_window.cpp:672 qt/ui/main_window.ui:53 qt/ui/main_window.ui:122
+#: qt/main_window.cpp:669
+msgid "Choose a dictionary"
+msgstr ""
+
+#: qt/main_window.cpp:748 qt/ui/main_window.ui:45 qt/ui/main_window.ui:119
 msgid "History"
 msgstr ""
 
-#: qt/main_window.cpp:689 qt/ui/dic_tools_widget.ui:13
-#: qt/ui/main_window.ui:136
+#: qt/main_window.cpp:765 qt/ui/dic_tools_widget.ui:13
+#: qt/ui/main_window.ui:133
 msgid "Dictionary tools"
 msgstr ""
 
-#: qt/main_window.cpp:706
+#: qt/main_window.cpp:782
 msgid ""
 "Copyright (C) 1999-2008 - Antoine Fraboulet & Olivier Teuliere\n"
 "\n"
@@ -1507,47 +975,58 @@
 "any later version."
 msgstr ""
 
-#: qt/new_game.cpp:38 qt/ui/new_game.ui:117
+#: qt/main_window.cpp:804 qt/main_window.cpp:817 qt/main_window.cpp:830
+#: qt/main_window.cpp:843
+msgid "Turn %1/%2"
+msgstr ""
+
+#: qt/main_window.cpp:856
+msgid ""
+"Replaying this turn will modify the game history by deleting the turns after "
+"the displayed one (i.e. turns \"in the future\")."
+msgstr ""
+
+#: qt/main_window.cpp:872
+msgid "Replaying from turn %1"
+msgstr ""
+
+#: qt/new_game.cpp:39 qt/ui/new_game.ui:117
 msgid "Human"
 msgstr ""
 
-#: qt/new_game.cpp:39 qt/ui/new_game.ui:122
+#: qt/new_game.cpp:40 qt/ui/new_game.ui:122
 msgid "Computer"
 msgstr ""
 
-#: qt/new_game.cpp:46 qt/new_game.cpp:53 qt/new_game.cpp:112
-#: qt/new_game.cpp:201 qt/new_game.cpp:204
+#: qt/new_game.cpp:47 qt/new_game.cpp:54 qt/new_game.cpp:114
+#: qt/new_game.cpp:203 qt/new_game.cpp:206
 msgid "Player %1"
 msgstr ""
 
-#: qt/new_game.cpp:50
+#: qt/new_game.cpp:51
 msgid "Name"
 msgstr ""
 
-#: qt/new_game.cpp:51
+#: qt/new_game.cpp:52
 msgid "Type"
 msgstr ""
 
-#: qt/new_game.cpp:52
+#: qt/new_game.cpp:53
 msgid "Level"
 msgstr ""
 
-#: qt/new_game.cpp:55
-msgid "Eliot"
-msgstr ""
-
-#: qt/new_game.cpp:164 qt/ui/new_game.ui:36
+#: qt/new_game.cpp:166 qt/ui/new_game.ui:36
 msgid "Duplicate"
 msgstr ""
 
-#: qt/player_widget.cpp:82
+#: qt/player_widget.cpp:80
 msgid ""
 "Enter the word to play (case-insensitive).\n"
 "A joker from the rack must be written in parentheses.\n"
 "E.g.: w(o)rd or W(O)RD"
 msgstr ""
 
-#: qt/player_widget.cpp:85
+#: qt/player_widget.cpp:83
 msgid ""
 "Enter the coordinates of the word.\n"
 "Specify the row before the column for horizontal words,\n"
@@ -1555,71 +1034,71 @@
 "E.g.: H4 or 4H"
 msgstr ""
 
-#: qt/player_widget.cpp:183
+#: qt/player_widget.cpp:190
 msgid "Cannot play word: misplaced parentheses"
 msgstr ""
 
-#: qt/player_widget.cpp:205
+#: qt/player_widget.cpp:212
 msgid "Cannot play '%1' at position '%2':\n"
 msgstr ""
 
-#: qt/player_widget.cpp:210
+#: qt/player_widget.cpp:217
 msgid "Some letters are not valid for the current dictionary"
 msgstr ""
 
-#: qt/player_widget.cpp:213
+#: qt/player_widget.cpp:220
 msgid "Invalid coordinates"
 msgstr ""
 
-#: qt/player_widget.cpp:216
+#: qt/player_widget.cpp:223
 msgid "The word does not exist"
 msgstr ""
 
-#: qt/player_widget.cpp:219
+#: qt/player_widget.cpp:226
 msgid "The rack doesn't contain the letters needed to play this word"
 msgstr ""
 
-#: qt/player_widget.cpp:222
+#: qt/player_widget.cpp:229
 msgid "The word is part of a longer one"
 msgstr ""
 
-#: qt/player_widget.cpp:225
+#: qt/player_widget.cpp:232
 msgid "The word tries to replace an existing letter"
 msgstr ""
 
-#: qt/player_widget.cpp:228
+#: qt/player_widget.cpp:235
 msgid "An orthogonal word is not valid"
 msgstr ""
 
-#: qt/player_widget.cpp:231
+#: qt/player_widget.cpp:238
 msgid "The word is already present on the board at these coordinates"
 msgstr ""
 
-#: qt/player_widget.cpp:234
+#: qt/player_widget.cpp:241
 msgid "A word cannot be isolated (not connected to the placed words)"
 msgstr ""
 
-#: qt/player_widget.cpp:237
+#: qt/player_widget.cpp:244
 msgid "The first word of the game must be horizontal"
 msgstr ""
 
-#: qt/player_widget.cpp:240
+#: qt/player_widget.cpp:247
 msgid "The first word of the game must cover the H8 square"
 msgstr ""
 
-#: qt/player_widget.cpp:243
+#: qt/player_widget.cpp:250
 msgid "The word is going out of the board"
 msgstr ""
 
-#: qt/player_widget.cpp:246
+#: qt/player_widget.cpp:253
 msgid "Incorrect or misplaced word (%1)"
 msgstr ""
 
-#: qt/player_widget.cpp:270
+#: qt/player_widget.cpp:276
 msgid "Cannot pass turn (%1)"
 msgstr ""
 
-#: qt/player_widget.cpp:272
+#: qt/player_widget.cpp:278
 msgid "Cannot change letters '%1' (%2)"
 msgstr ""
 
@@ -1627,18 +1106,30 @@
 msgid "Score"
 msgstr ""
 
-#: qt/training_widget.cpp:200
+#: qt/training_widget.cpp:203
 msgid "Warning: Cannot set the rack to '%1'"
 msgstr ""
 
-#: qt/training_widget.cpp:239
+#: qt/training_widget.cpp:242
 msgid "Searching with rack '%1'..."
 msgstr ""
 
-#: qt/training_widget.cpp:241
+#: qt/training_widget.cpp:244
 msgid "Search done"
 msgstr ""
 
+#: qt/ui/dic_tools_widget.ui:31
+msgid "Check"
+msgstr ""
+
+#: qt/ui/dic_tools_widget.ui:69
+msgid "Plus 1"
+msgstr ""
+
+#: qt/ui/dic_tools_widget.ui:94
+msgid "Regular expressions"
+msgstr ""
+
 #: qt/ui/dic_tools_widget.ui:105
 msgid "Minimum length:"
 msgstr ""
@@ -1667,11 +1158,11 @@
 msgid "Number of words:"
 msgstr ""
 
-#: qt/ui/main_window.ui:62 qt/ui/new_game.ui:77
+#: qt/ui/main_window.ui:54 qt/ui/new_game.ui:77
 msgid "Players"
 msgstr ""
 
-#: qt/ui/main_window.ui:108
+#: qt/ui/main_window.ui:105
 msgid "External board"
 msgstr ""
 
@@ -1794,29 +1285,33 @@
 msgid "Align the rack and the solution in history"
 msgstr ""
 
-#: qt/ui/prefs_dialog.ui:81 qt/ui/prefs_dialog.ui:168
+#: qt/ui/prefs_dialog.ui:72
+msgid "Warn before replaying a turn"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:91 qt/ui/prefs_dialog.ui:178
 msgid ""
 "If checked, playing an invalid or misplaced word will not be possible. If "
 "unchecked, you will get 0 point and lose your turn"
 msgstr ""
 
-#: qt/ui/prefs_dialog.ui:84 qt/ui/prefs_dialog.ui:171
+#: qt/ui/prefs_dialog.ui:94 qt/ui/prefs_dialog.ui:181
 msgid "Refuse to play invalid moves"
 msgstr ""
 
-#: qt/ui/prefs_dialog.ui:93
+#: qt/ui/prefs_dialog.ui:103
 msgid "Min. players for a solo:"
 msgstr ""
 
-#: qt/ui/prefs_dialog.ui:113
+#: qt/ui/prefs_dialog.ui:123
 msgid "Minimum number of players needed to take into account the solo bonus"
 msgstr ""
 
-#: qt/ui/prefs_dialog.ui:127
+#: qt/ui/prefs_dialog.ui:137
 msgid "Solo value:"
 msgstr ""
 
-#: qt/ui/prefs_dialog.ui:147
+#: qt/ui/prefs_dialog.ui:157
 msgid "Value of the solo bonus. Set it to 0 if you don't want solo bonus"
 msgstr ""
 
@@ -1827,3 +1322,7 @@
 #: qt/ui/training_widget.ui:42
 msgid "Complement"
 msgstr ""
+
+#: qt/ui/training_widget.ui:52
+msgid "Search"
+msgstr ""

Index: po/fr.po
===================================================================
RCS file: /cvsroot/eliot/eliot/po/fr.po,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- po/fr.po    22 Nov 2008 14:40:26 -0000      1.20
+++ po/fr.po    8 Dec 2008 21:45:28 -0000       1.21
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: eliot 1.7\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-16 10:29+0100\n"
+"POT-Creation-Date: 2008-12-08 22:07+0100\n"
 "PO-Revision-Date: 2008-11-16 10:35+0100\n"
 "Last-Translator: Olivier Teulière <address@hidden>\n"
 "Language-Team: French <address@hidden>\n"
@@ -285,78 +285,83 @@
 msgid "result:"
 msgstr "résultat :"
 
-#: dic/regexpmain.cpp:108 wxwin/searchpanel.cc:296
+#: dic/regexpmain.cpp:108
 msgid "Invalid regular expression: "
 msgstr "Expression régulière invalide : "
 
-#: game/game.cpp:468
+#: game/game.cpp:232
 msgid "The bag is empty"
 msgstr "Le sac est vide"
 
-#: game/game.cpp:475 game/game.cpp:485
+#: game/game.cpp:239 game/game.cpp:249
 msgid "Not enough vowels or consonants to complete the rack"
 msgstr "Pas assez de voyelles ou de consonnes pour compléter le tirage"
 
-#: game/training.cpp:49 qt/new_game.cpp:97 qt/new_game.cpp:105
-#: qt/new_game.cpp:140 qt/ui/new_game.ui:46
+#: game/game_factory.cpp:148
+#, fuzzy, c-format
+msgid "Player %u"
+msgstr "Joueur %1"
+
+#: game/training.cpp:52 qt/new_game.cpp:98 qt/new_game.cpp:107
+#: qt/new_game.cpp:142 qt/ui/new_game.ui:46
 msgid "Training"
 msgstr "Entraînement"
 
-#: utils/ncurses.cpp:282
+#: utils/ncurses.cpp:283
 msgid "Scores"
 msgstr "Scores"
 
-#: utils/ncurses.cpp:286 utils/ncurses.cpp:291
+#: utils/ncurses.cpp:287 utils/ncurses.cpp:293
 #, c-format
 msgid "%s: %d"
 msgstr "%s : %d"
 
-#: utils/ncurses.cpp:303
+#: utils/ncurses.cpp:305
 msgid "Racks"
 msgstr "Tirages"
 
-#: utils/ncurses.cpp:307 utils/ncurses.cpp:313
+#: utils/ncurses.cpp:309 utils/ncurses.cpp:315
 #, c-format
 msgid "%s: %ls"
 msgstr "%s : %ls"
 
-#: utils/ncurses.cpp:327 utils/ncurses.cpp:330
+#: utils/ncurses.cpp:329 utils/ncurses.cpp:332
 msgid "Search complete"
 msgstr "Recherche terminée"
 
-#: utils/ncurses.cpp:340 qt/ui/training_widget.ui:71
+#: utils/ncurses.cpp:341 qt/ui/training_widget.ui:71
 msgid "Search results"
 msgstr "Résultats de la recherche"
 
-#: utils/ncurses.cpp:369
+#: utils/ncurses.cpp:370
 msgid "History of the game"
 msgstr "Historique de la partie"
 
-#: utils/ncurses.cpp:375
+#: utils/ncurses.cpp:376
 msgid " N |   RACK   |    SOLUTION     | REF | PTS | P | BONUS"
 msgstr " N |  TIRAGE  |    SOLUTION     | REF | PTS | J | BONUS"
 
-#: utils/ncurses.cpp:414 qt/history_widget.cpp:143 qt/main_window.cpp:553
+#: utils/ncurses.cpp:415 qt/history_widget.cpp:143 qt/main_window.cpp:616
 msgid "(PASS)"
 msgstr "(PASSE)"
 
-#: utils/ncurses.cpp:440
+#: utils/ncurses.cpp:441
 msgid "Help"
 msgstr "Aide"
 
-#: utils/ncurses.cpp:444
+#: utils/ncurses.cpp:445
 msgid "[Global]"
 msgstr "[Général]"
 
-#: utils/ncurses.cpp:445
+#: utils/ncurses.cpp:446
 msgid "   h, H, ?          Show/hide help box"
 msgstr "   h, H, ?          Afficher/cacher la boîte d'aide"
 
-#: utils/ncurses.cpp:446
+#: utils/ncurses.cpp:447
 msgid "   y, Y             Show/hide history of the game"
 msgstr "   y, Y             Afficher/cacher l'historique de la partie"
 
-#: utils/ncurses.cpp:447
+#: utils/ncurses.cpp:448
 msgid ""
 "   b, B             Show/hide contents of the bag (including letters of the "
 "racks)"
@@ -364,99 +369,98 @@
 "   b, B             Afficher/cacher le contenu du sac (avec les lettres des "
 "tirages)"
 
-#: utils/ncurses.cpp:448
+#: utils/ncurses.cpp:449
 msgid "   e, E             Show/hide dots on empty squares of the board"
 msgstr ""
 "   e, E             Afficher/cacher les points sur les cases vides du "
 "plateau de jeu"
 
-#: utils/ncurses.cpp:449
+#: utils/ncurses.cpp:450
 msgid "   d, D             Check the existence of a word in the dictionary"
 msgstr "   d, D             Vérifier l'existence d'un mot dans le 
dictionnaire"
 
-#: utils/ncurses.cpp:450
+#: utils/ncurses.cpp:451
 msgid "   j, J             Play a word"
 msgstr "   j, J             Jouer un mot"
 
-#: utils/ncurses.cpp:451
+#: utils/ncurses.cpp:452
 msgid "   s, S             Save the game"
 msgstr "   s, S             Sauvegarder la partie"
 
-#: utils/ncurses.cpp:452
+#: utils/ncurses.cpp:453
 msgid "   l, L             Load a game"
 msgstr "   l, L             Charger une partie"
 
-#: utils/ncurses.cpp:453
+#: utils/ncurses.cpp:454
 msgid "   q, Q             Quit"
 msgstr "   q, Q             Quitter"
 
-#: utils/ncurses.cpp:456
+#: utils/ncurses.cpp:457
 msgid "[Training mode]"
 msgstr "[Mode entraînement]"
 
-#: utils/ncurses.cpp:457
+#: utils/ncurses.cpp:458
 msgid "   *                Take a random rack"
 msgstr "   *                Tirage aléatoire"
 
-#: utils/ncurses.cpp:458
+#: utils/ncurses.cpp:459
 msgid "   +                Complete the current rack randomly"
 msgstr "   +                Compléter le tirage courant de manière 
aléatoire"
 
-#: utils/ncurses.cpp:459
+#: utils/ncurses.cpp:460
 msgid "   t, T             Set the rack manually"
 msgstr "   t, T             Entrer le tirage manuellement"
 
-#: utils/ncurses.cpp:460
+#: utils/ncurses.cpp:461
 msgid "   c, C             Compute all the possible words"
 msgstr "   c, C             Calculer tous les mots possibles"
 
-#: utils/ncurses.cpp:461
+#: utils/ncurses.cpp:462
 msgid "   r, R             Show/hide search results"
 msgstr "   r, R             Afficher/cacher les résultats de la recherche"
 
-#: utils/ncurses.cpp:464
+#: utils/ncurses.cpp:465
 msgid "[Duplicate mode]"
 msgstr "[Mode duplicate]"
 
-#: utils/ncurses.cpp:465
+#: utils/ncurses.cpp:466
 msgid "   n, N             Switch to the next human player"
 msgstr "   n, N             Passer au joueur humain suivant"
 
-#: utils/ncurses.cpp:468
+#: utils/ncurses.cpp:469
 msgid "[Free game mode]"
 msgstr "[Mode partie libre]"
 
-#: utils/ncurses.cpp:469
+#: utils/ncurses.cpp:470
 msgid "   p, P             Pass your turn (with or without changing letters)"
 msgstr ""
 "   p, P             Passer son tour (en changeant ou pas certaines lettres)"
 
-#: utils/ncurses.cpp:472
+#: utils/ncurses.cpp:473
 msgid "[Miscellaneous]"
 msgstr "[Divers]"
 
-#: utils/ncurses.cpp:473
+#: utils/ncurses.cpp:474
 msgid "   <up>, <down>     Navigate in a box line by line"
 msgstr "   <haut>, <bas>    Naviguer dans une boîte ligne par ligne"
 
-#: utils/ncurses.cpp:474
+#: utils/ncurses.cpp:475
 msgid "   <pgup>, <pgdown> Navigate in a box page by page"
 msgstr "   <pgup>, <pgdown> Naviguer dans une boîte page par page"
 
-#: utils/ncurses.cpp:475
+#: utils/ncurses.cpp:476
 msgid "   Ctrl-l           Refresh the screen"
 msgstr "   Ctrl-l           Rafraîchir l'écran"
 
-#: utils/ncurses.cpp:486 wxwin/auxframes.cc:147 qt/main_window.cpp:636
-#: qt/ui/main_window.ui:94
+#: utils/ncurses.cpp:487 qt/main_window.cpp:712 qt/ui/main_window.ui:91
 msgid "Bag"
 msgstr "Sac"
 
-#: utils/ncurses.cpp:493
+#: utils/ncurses.cpp:494
 msgid " LETTER | POINTS | FREQUENCY | REMAINING"
 msgstr " LETTRE | POINTS | FREQUENCE | RESTANT"
 
-#: utils/ncurses.cpp:546
+#: utils/ncurses.cpp:547
 msgid "Play a word"
 msgstr "Jouer un mot"
 
@@ -464,788 +468,117 @@
 #. "Coordinates:". For example:
 #. Pl. word   :
 #. Coordinates:
-#: utils/ncurses.cpp:547 utils/ncurses.cpp:555
+#: utils/ncurses.cpp:548 utils/ncurses.cpp:556
 msgid "Played word:"
 msgstr "Mot joué    :"
 
-#: utils/ncurses.cpp:548 utils/ncurses.cpp:556
+#: utils/ncurses.cpp:549 utils/ncurses.cpp:557
 msgid "Coordinates:"
 msgstr "Coordonnées :"
 
-#: utils/ncurses.cpp:570
+#: utils/ncurses.cpp:571
 msgid "Incorrect or misplaced word"
 msgstr "Mot incorrect ou mal placé"
 
-#: utils/ncurses.cpp:580
+#: utils/ncurses.cpp:581
 msgid "Dictionary"
 msgstr "Dictionnaire"
 
-#: utils/ncurses.cpp:581
+#: utils/ncurses.cpp:582
 msgid "Enter the word to check:"
 msgstr "Entrer le mot à vérifier:"
 
-#: utils/ncurses.cpp:590
+#: utils/ncurses.cpp:591
 #, c-format
 msgid "The word '%ls' exists"
 msgstr "Le mot '%ls' existe"
 
-#: utils/ncurses.cpp:592
+#: utils/ncurses.cpp:593
 #, c-format
 msgid "The word '%ls' does not exist"
 msgstr "Le mot '%ls' n'existe pas"
 
-#: utils/ncurses.cpp:602 wxwin/mainframe.cc:475 wxwin/mainframe.cc:483
+#: utils/ncurses.cpp:603
 msgid "Save the game"
 msgstr "Sauvegarder la partie"
 
-#: utils/ncurses.cpp:603 utils/ncurses.cpp:633
+#: utils/ncurses.cpp:604 utils/ncurses.cpp:634
 msgid "Enter the file name:"
 msgstr "Entrer le nom du fichier :"
 
-#: utils/ncurses.cpp:613
+#: utils/ncurses.cpp:614
 #, c-format
 msgid "Cannot open file %ls for writing"
 msgstr "Impossible d'ouvrir le fichier %ls en écriture"
 
-#: utils/ncurses.cpp:621
+#: utils/ncurses.cpp:622
 #, c-format
 msgid "Game saved in '%ls'"
 msgstr "Partie sauvée dans '%ls'"
 
-#: utils/ncurses.cpp:632 wxwin/mainframe.cc:275 wxwin/mainframe.cc:405
-#: wxwin/mainframe.cc:429 qt/main_window.cpp:398
+#: utils/ncurses.cpp:633 qt/main_window.cpp:460
 msgid "Load a game"
 msgstr "Charger une partie"
 
-#: utils/ncurses.cpp:643
+#: utils/ncurses.cpp:644
 #, c-format
 msgid "Cannot open file '%ls' for reading"
 msgstr "Impossible d'ouvrir le fichier '%ls' en lecture"
 
-#: utils/ncurses.cpp:651
+#: utils/ncurses.cpp:652
 #, c-format
 msgid "Invalid saved game"
 msgstr "Partie sauvée invalide"
 
-#: utils/ncurses.cpp:656 qt/main_window.cpp:412
+#: utils/ncurses.cpp:657 qt/main_window.cpp:475
 #, c-format
 msgid "Game loaded"
 msgstr "Partie chargée"
 
-#: utils/ncurses.cpp:671
+#: utils/ncurses.cpp:673
 msgid "Pass your turn"
 msgstr "Passer son tour"
 
-#: utils/ncurses.cpp:672
+#: utils/ncurses.cpp:674
 msgid "Enter the letters to change:"
 msgstr "Entrer les lettres à changer:"
 
-#: utils/ncurses.cpp:681
+#: utils/ncurses.cpp:683
 msgid "Cannot pass the turn"
 msgstr "Impossible de passer le tour"
 
-#: utils/ncurses.cpp:691
+#: utils/ncurses.cpp:693
 msgid "Set rack"
 msgstr "Choix du tirage"
 
-#: utils/ncurses.cpp:692
+#: utils/ncurses.cpp:694
 msgid "Enter the new letters:"
 msgstr "Entrer les nouvelles lettres:"
 
-#: utils/ncurses.cpp:701
+#: utils/ncurses.cpp:703
 msgid "Cannot take these letters from the bag"
 msgstr "Impossible de retirer ces lettres du sac"
 
-#: utils/ncurses.cpp:1095 qt/main_window.cpp:214 qt/ui/prefs_dialog.ui:181
+#: utils/ncurses.cpp:1112 qt/main_window.cpp:241 qt/ui/prefs_dialog.ui:191
 msgid "Training mode"
 msgstr "Mode entraînement"
 
-#: utils/ncurses.cpp:1097 qt/ui/prefs_dialog.ui:162
+#: utils/ncurses.cpp:1114 qt/ui/prefs_dialog.ui:172
 msgid "Free game mode"
 msgstr "Mode partie libre"
 
-#: utils/ncurses.cpp:1099 qt/ui/prefs_dialog.ui:75
+#: utils/ncurses.cpp:1116 qt/ui/prefs_dialog.ui:85
 msgid "Duplicate mode"
 msgstr "Mode duplicate"
 
-#: utils/ncurses.cpp:1102 qt/ui/new_game.ui:67
+#: utils/ncurses.cpp:1119 qt/ui/new_game.ui:67
 msgid "Joker game"
 msgstr "Partie joker"
 
-#: utils/ncurses.cpp:1103
+#: utils/ncurses.cpp:1120
 msgid "[h for help]"
 msgstr "[h pour l'aide]"
 
-#: wxwin/auxframes.cc:122
-msgid "Grid"
-msgstr "Grille"
-
-#: wxwin/auxframes.cc:202 qt/ui/training_widget.ui:52
-msgid "Search"
-msgstr "Recherche"
-
-#: wxwin/auxframes.cc:233 qt/ui/dic_tools_widget.ui:31
-msgid "Check"
-msgstr "Vérification"
-
-#: wxwin/auxframes.cc:238
-msgid "Word to check"
-msgstr "Mot à vérifier"
-
-#: wxwin/auxframes.cc:256 wxwin/configdb.cc:203 wxwin/searchpanel.cc:107
-msgid "No dictionary"
-msgstr "Pas de dictionnaire"
-
-#: wxwin/auxframes.cc:260
-msgid "exists"
-msgstr "existe"
-
-#: wxwin/auxframes.cc:262
-msgid "doesn't exist"
-msgstr "n'existe pas"
-
-#: wxwin/auxframes.cc:303
-msgid "Copy"
-msgstr "Copier"
-
-#: wxwin/auxframes.cc:347 wxwin/mainframe.cc:502 wxwin/mainframe.cc:522
-#: wxwin/mainframe.cc:553
-msgid "No on going game"
-msgstr "Pas de partie en cours"
-
-#: wxwin/auxframes.cc:362 wxwin/searchpanel.cc:119
-msgid "No result"
-msgstr "Pas de résultat"
-
-#: wxwin/auxframes.cc:372
-msgid "Rack + 1"
-msgstr "Tirage + 1"
-
-#: wxwin/auxframes.cc:414
-msgid "Rack: "
-msgstr "Tirage :"
-
-#: wxwin/auxframes.cc:435
-msgid "Benjamins"
-msgstr "Benjamins"
-
-#: wxwin/auxframes.cc:476
-msgid "Extensions"
-msgstr "Raccords"
-
-#: wxwin/auxframes.cc:542 wxwin/mainframe.cc:325
-msgid "Game history"
-msgstr "Historique de la partie"
-
-#: wxwin/auxframes.cc:574 wxwin/mainframe.cc:327
-msgid "Results"
-msgstr "Résultats"
-
-#: wxwin/confdimdlg.cc:62
-msgid "left"
-msgstr "gauche"
-
-#: wxwin/confdimdlg.cc:63
-msgid "centered"
-msgstr "centré"
-
-#: wxwin/confdimdlg.cc:64
-msgid "right"
-msgstr "droite"
-
-#: wxwin/confdimdlg.cc:118
-msgid "Alignment"
-msgstr "Justification"
-
-#: wxwin/confdimdlg.cc:120
-msgid "Spacing"
-msgstr "Espacement"
-
-#: wxwin/confdimdlg.cc:124 wxwin/confdimdlg.cc:135
-msgid "Font..."
-msgstr "Police..."
-
-#: wxwin/confdimdlg.cc:129
-msgid "Title column "
-msgstr "titre colomne "
-
-#: wxwin/confdimdlg.cc:140
-msgid "Text column "
-msgstr "Texte colomne "
-
-#: wxwin/confdimdlg.cc:150
-msgid "Column heading"
-msgstr "Titre de la colomne"
-
-#: wxwin/confdimdlg.cc:154
-msgid "Alignment of the column heading"
-msgstr "Justification du titre de la colomne"
-
-#: wxwin/confdimdlg.cc:158
-msgid "Spacing of the heading characters"
-msgstr "Espacement des caractères du titre"
-
-#: wxwin/confdimdlg.cc:167
-msgid "Inner dimension of the column (in mm)"
-msgstr "Dimension interne de la colomne (en mm)"
-
-#: wxwin/confdimdlg.cc:176
-msgid "Alignment of the column text"
-msgstr "Justification du texte de la colomne"
-
-#: wxwin/confdimdlg.cc:180
-msgid "Characters spacing"
-msgstr "Espacement des caractères"
-
-#: wxwin/confdimdlg.cc:231
-msgid "Title spc. top"
-msgstr "Titre esp. haut"
-
-#: wxwin/confdimdlg.cc:233
-msgid "Text spc. top"
-msgstr "Texte esp. haut"
-
-#: wxwin/confdimdlg.cc:235
-msgid "Text spc. left"
-msgstr "Texte esp. gauche"
-
-#: wxwin/confdimdlg.cc:252
-msgid "Title spc. bot."
-msgstr "Titre esp. bas"
-
-#: wxwin/confdimdlg.cc:254
-msgid "Text spc. bot."
-msgstr "Texte esp. bas"
-
-#: wxwin/confdimdlg.cc:256
-msgid "Text spc. right"
-msgstr "Text esp. droite"
-
-#: wxwin/confdimdlg.cc:286
-msgid "Printer"
-msgstr "Imprimante"
-
-#: wxwin/confdimdlg.cc:288
-msgid "Configure the printer"
-msgstr "Configuration de l'imprimante"
-
-#: wxwin/confdimdlg.cc:290
-msgid "Page"
-msgstr "Page"
-
-#: wxwin/confdimdlg.cc:292
-msgid "Configure the dimensions of the page"
-msgstr "Configuration des dimensions de la page"
-
-#: wxwin/confdimdlg.cc:298
-msgid "Cancel the last changes"
-msgstr "Annuler les derniers changements"
-
-#: wxwin/confdimdlg.cc:304 wxwin/confsearch.cc:42
-msgid "Save the changes"
-msgstr "Sauvegarder les changements"
-
-#: wxwin/configdb.cc:322
-msgid "Nb"
-msgstr "Num"
-
-#: wxwin/configdb.cc:323 wxwin/mainframe.cc:174 qt/history_widget.cpp:52
-msgid "Rack"
-msgstr "Tirage"
-
-#: wxwin/configdb.cc:324
-msgid "Solution"
-msgstr "Solution"
-
-#: wxwin/configdb.cc:325 wxwin/gfxresult.cc:69
-msgid "Pos"
-msgstr "Pos"
-
-#: wxwin/configdb.cc:326 wxwin/gfxresult.cc:70
-msgid "Pts"
-msgstr "Pts"
-
-#: wxwin/confsearch.cc:36
-msgid "Search on joker in 7+1 panel"
-msgstr "Rechercher sur joker dans la fenêtre 7+1"
-
-#: wxwin/confsearch.cc:37
-msgid "Check rack validity"
-msgstr "Vérifier la validité du tirage"
-
-#: wxwin/confsearch.cc:40
-msgid "Cancel last changes"
-msgstr "Annuler les derniers changements"
-
-#: wxwin/gfxresult.cc:67 qt/history_widget.cpp:53 qt/training_widget.cpp:59
-msgid "Word"
-msgstr "Mot"
-
-#: wxwin/gfxresult.cc:71
-msgid "Results of the search"
-msgstr "Résultats de la recherche"
-
-#: wxwin/mainframe.cc:188
-msgid " Rack "
-msgstr " Tirage "
-
-#: wxwin/mainframe.cc:189
-msgid " Complement "
-msgstr " Complément "
-
-#: wxwin/mainframe.cc:190
-msgid " Search "
-msgstr " Rechercher "
-
-#: wxwin/mainframe.cc:191
-msgid " Back "
-msgstr " Arrière "
-
-#: wxwin/mainframe.cc:192
-msgid " Play "
-msgstr " Jouer "
-
-#: wxwin/mainframe.cc:194
-msgid "Random rack"
-msgstr "Tirage aléatoire"
-
-#: wxwin/mainframe.cc:196
-msgid "Random complement of the rack"
-msgstr "Complément aléatoire du tirage"
-
-#: wxwin/mainframe.cc:198
-msgid "Search with the current rack"
-msgstr "Recherche sur le tirage courant"
-
-#: wxwin/mainframe.cc:200
-msgid "Go back one turn"
-msgstr "Revenir un coup en arrière"
-
-#: wxwin/mainframe.cc:202
-msgid "Play the selected word"
-msgstr "Jouer le mot selectionné"
-
-#: wxwin/mainframe.cc:272
-msgid "&New game\tCtrl+N"
-msgstr "&Nouvelle partie\tCtrl+N"
-
-#: wxwin/mainframe.cc:272 qt/main_window.cpp:316
-msgid "Start a new game"
-msgstr "Démarrer une nouvelle partie"
-
-#: wxwin/mainframe.cc:273
-msgid "New &joker game\tCtrl+J"
-msgstr "Nouvelle partie &joker\tCtrl+J"
-
-#: wxwin/mainframe.cc:273
-msgid "Start a new joker game"
-msgstr "Démarrer une nouvelle partie joker"
-
-#: wxwin/mainframe.cc:275
-msgid "&Load...\tCtrl+L"
-msgstr "&Charger...\tCtrl+O"
-
-#: wxwin/mainframe.cc:276
-msgid "&Save as...\tCtrl+S"
-msgstr "&Enregistrer sous...\tCtrl+S"
-
-#: wxwin/mainframe.cc:276 qt/main_window.cpp:321
-msgid "Save the current game"
-msgstr "Sauvegarder la partie en cours"
-
-#: wxwin/mainframe.cc:278
-msgid "&Print...\tCtrl+P"
-msgstr "&Imprimer...\tCtrl+P"
-
-#: wxwin/mainframe.cc:278
-msgid "Print this game"
-msgstr "Imprimer la partie en cours"
-
-#: wxwin/mainframe.cc:279
-msgid "Print pre&view..."
-msgstr "&Aperçu avant impression..."
-
-#: wxwin/mainframe.cc:279
-msgid "Print preview of the game"
-msgstr "Aperçu avant impression de la partie"
-
-#: wxwin/mainframe.cc:281
-msgid "Print in PostS&cript..."
-msgstr "Imprimer au format &PostScript..."
-
-#: wxwin/mainframe.cc:281
-msgid "Print in a PostScript file"
-msgstr "Imprimer dans un fichier PostScript"
-
-#: wxwin/mainframe.cc:284
-msgid "&Quit\tCtrl+Q"
-msgstr "&Quitter\tCtrl+Q"
-
-#: wxwin/mainframe.cc:284 qt/main_window.cpp:327
-msgid "Quit Eliot"
-msgstr "Quitter Eliot"
-
-#: wxwin/mainframe.cc:287
-msgid "&Dictionary...\tCtrl+D"
-msgstr "&Dictionnaire...\tCtrl+D"
-
-#: wxwin/mainframe.cc:287 wxwin/mainframe.cc:604 qt/main_window.cpp:603
-msgid "Choose a dictionary"
-msgstr "Choisir un dictionnaire"
-
-#: wxwin/mainframe.cc:288
-msgid "&Search..."
-msgstr "&Recherche..."
-
-#: wxwin/mainframe.cc:288
-msgid "Search options"
-msgstr "Options de recherche"
-
-#: wxwin/mainframe.cc:291
-msgid "&Background..."
-msgstr "&Fond..."
-
-#: wxwin/mainframe.cc:291
-msgid "Background color"
-msgstr "Couleur de fond"
-
-#: wxwin/mainframe.cc:292
-msgid "L&ines..."
-msgstr "L&ignes..."
-
-#: wxwin/mainframe.cc:292
-msgid "Color of the lines"
-msgstr "Couleur des lignes"
-
-#: wxwin/mainframe.cc:294
-msgid "&Played letters..."
-msgstr "Lettres &jouées..."
-
-#: wxwin/mainframe.cc:294
-msgid "Color of the letters played on the board"
-msgstr "Couleur des lettres jouées sur la grille"
-
-#: wxwin/mainframe.cc:295
-msgid "&Temporary letters..."
-msgstr "Lettres &temporaires..."
-
-#: wxwin/mainframe.cc:295
-msgid "Color of the letters of the temporary word"
-msgstr "Couleur des lettres du mot temporaire"
-
-#: wxwin/mainframe.cc:296
-msgid "B&ackground of played letters..."
-msgstr "Fo&nd des lettres jouées..."
-
-#: wxwin/mainframe.cc:296
-msgid "Background color of the letters played on the board"
-msgstr "Couleur de fond des lettres jouées sur la grille"
-
-#: wxwin/mainframe.cc:297
-msgid "Ba&ckground of temporary letters..."
-msgstr "Fon&d des lettres temporaires..."
-
-#: wxwin/mainframe.cc:297
-msgid "Background color of the temporary letters on the board"
-msgstr "Couleur de fond des lettres temporaires sur la grille"
-
-#: wxwin/mainframe.cc:299
-msgid "Double &letter..."
-msgstr "&Lettre compte double..."
-
-#: wxwin/mainframe.cc:299
-msgid "Color of the \"double letter\" squares"
-msgstr "Couleur des cases \"mot compte double\""
-
-#: wxwin/mainframe.cc:300
-msgid "Triple l&etter..."
-msgstr "L&ettre compte triple..."
-
-#: wxwin/mainframe.cc:300
-msgid "Color of the \"triple letter\" squares"
-msgstr "Couleur des cases \"mot compte triple\""
-
-#: wxwin/mainframe.cc:301
-msgid "Double &word..."
-msgstr "&Mot compte double..."
-
-#: wxwin/mainframe.cc:301
-msgid "Color of the \"double word\" squares"
-msgstr "Couleur des cases \"mot compte double\""
-
-#: wxwin/mainframe.cc:302
-msgid "Triple w&ord..."
-msgstr "M&ot compte triple..."
-
-#: wxwin/mainframe.cc:302
-msgid "Color of the \"triple word\" squares"
-msgstr "Couleur des cases \"mot compte triple\""
-
-#: wxwin/mainframe.cc:304
-msgid "&Default colors"
-msgstr "&Couleurs d'origine"
-
-#: wxwin/mainframe.cc:304
-msgid "Restore the default colors"
-msgstr "Restaurer les couleurs d'origine"
-
-#: wxwin/mainframe.cc:307
-msgid "&Search letters..."
-msgstr "&Lettres de recherche..."
-
-#: wxwin/mainframe.cc:307
-msgid "Font for the search"
-msgstr "Police de caractères pour la recherche"
-
-#: wxwin/mainframe.cc:310 wxwin/mainframe.cc:334 qt/history_widget.cpp:177
-#: qt/main_window.cpp:314
-msgid "&Game"
-msgstr "&Partie"
-
-#: wxwin/mainframe.cc:310
-msgid "Configuration of the game"
-msgstr "Configuration de la partie"
-
-#: wxwin/mainframe.cc:311
-msgid "&Fonts"
-msgstr "P&olices de caractères"
-
-#: wxwin/mainframe.cc:311
-msgid "Configuration of the fonts"
-msgstr "Configuration des polices de caractères"
-
-#: wxwin/mainframe.cc:312
-msgid "&Colors"
-msgstr "&Couleurs"
-
-#: wxwin/mainframe.cc:312
-msgid "Configuration of the colors"
-msgstr "Configuration des couleurs"
-
-#: wxwin/mainframe.cc:313
-msgid "&Printing..."
-msgstr "&Impression..."
-
-#: wxwin/mainframe.cc:313
-msgid "Configuration of the printing parameters"
-msgstr "Configuration des paramètres d'impression"
-
-#: wxwin/mainframe.cc:316
-msgid "&Board"
-msgstr "&Grille"
-
-#: wxwin/mainframe.cc:316
-msgid "Game board"
-msgstr "Plateau de jeu"
-
-#: wxwin/mainframe.cc:317
-msgid "Ba&g\tCtrl+B"
-msgstr "&Sac\tCtrl-B"
-
-#: wxwin/mainframe.cc:317
-msgid "Remaining letters in the bag"
-msgstr "Lettres restantes dans le sac"
-
-#: wxwin/mainframe.cc:318
-msgid "&Check"
-msgstr "&Vérification"
-
-#: wxwin/mainframe.cc:318
-msgid "Check a word in the dictionary"
-msgstr "Vérifier l'existence d'un mot dans le dictionnaire"
-
-#: wxwin/mainframe.cc:319
-msgid "&Search"
-msgstr "&Recherche"
-
-#: wxwin/mainframe.cc:319
-msgid "Search in the dictionary"
-msgstr "Recherche dans le dictionnaire"
-
-#: wxwin/mainframe.cc:321
-msgid "&Rack + 1"
-msgstr "&Tirage + 1"
-
-#: wxwin/mainframe.cc:321
-msgid "Letters of the rack plus one"
-msgstr "Lettres du tirage plus une"
-
-#: wxwin/mainframe.cc:322
-msgid "&Extensions"
-msgstr "&Raccords"
-
-#: wxwin/mainframe.cc:322
-msgid "One-letter extensions on a word of the search"
-msgstr "Raccords d'une lettre sur un mot de la recherche"
-
-#: wxwin/mainframe.cc:323
-msgid "&Benjamins"
-msgstr "&Benjamins"
-
-#: wxwin/mainframe.cc:323
-msgid "Benjamins (3-letter extensions) on a word of the search"
-msgstr "Benjamins (préfixes de 3 lettres) sur un mot de la recherche"
-
-#: wxwin/mainframe.cc:325
-msgid "Game &history\tCtrl+H"
-msgstr "&Historique de la partie\tCtrl+H"
-
-#: wxwin/mainframe.cc:327
-msgid "R&esults"
-msgstr "Ré&sultats"
-
-#: wxwin/mainframe.cc:331 qt/main_window.cpp:352
-msgid "&About..."
-msgstr "À &propos..."
-
-#: wxwin/mainframe.cc:331 wxwin/mainframe.cc:733 qt/main_window.cpp:353
-#: qt/main_window.cpp:714
-msgid "About Eliot"
-msgstr "À propos d'Eliot"
-
-#: wxwin/mainframe.cc:335 qt/main_window.cpp:331
-msgid "&Settings"
-msgstr "Para&mètres"
-
-#: wxwin/mainframe.cc:336 qt/main_window.cpp:339
-msgid "&Windows"
-msgstr "&Fenêtres"
-
-#: wxwin/mainframe.cc:337 qt/main_window.cpp:351
-msgid "&Help"
-msgstr "&Aide"
-
-#: wxwin/mainframe.cc:361 wxwin/mainframe.cc:408
-msgid "No dictionary selected"
-msgstr "Pas de dictionnaire sélectionné"
-
-#: wxwin/mainframe.cc:361 wxwin/mainframe.cc:408 wxwin/mainframe.cc:502
-#: wxwin/mainframe.cc:522 wxwin/mainframe.cc:553
-msgid "Eliot: error"
-msgstr "Eliot : erreur"
-
-#: wxwin/mainframe.cc:428
-msgid "Cannot open "
-msgstr "Impossible d'ouvrir "
-
-#: wxwin/mainframe.cc:440 wxwin/mainframe.cc:449 qt/main_window.cpp:405
-msgid "Error while loading the game"
-msgstr "Erreur pendant le chargement de la partie"
-
-#: wxwin/mainframe.cc:441
-msgid "Invalid game"
-msgstr "Partie invalide"
-
-#: wxwin/mainframe.cc:450
-msgid "The game is empty"
-msgstr "La partie est vide"
-
-#: wxwin/mainframe.cc:482
-msgid "Cannot create "
-msgstr "Impossible de créer "
-
-#: wxwin/mainframe.cc:511 wxwin/mainframe.cc:575
-msgid "Printing not done"
-msgstr "Impression non effectuée"
-
-#: wxwin/mainframe.cc:511 wxwin/mainframe.cc:539
-msgid "Printing"
-msgstr "Impression"
-
-#: wxwin/mainframe.cc:534
-msgid "Print preview problem.\n"
-msgstr "Problème avec l'aperçu avant impression.\n"
-
-#: wxwin/mainframe.cc:535
-msgid "The printer may not be correctly initialized"
-msgstr "Il se peut que l'imprimante soit mal initialisée"
-
-#: wxwin/mainframe.cc:536
-msgid "Print preview"
-msgstr "Aperçu avant impression"
-
-#: wxwin/mainframe.cc:557
-msgid "Print to a PostScript file"
-msgstr "Imprimer dans un fichier PostScript"
-
-#: wxwin/mainframe.cc:576 wxwin/mainframe.cc:582
-msgid "PostScript printing"
-msgstr "Impression PostScript"
-
-#: wxwin/mainframe.cc:581
-msgid "Cannot initialize PostScript printer"
-msgstr "Impossible d'initialiser l'impression PostScript"
-
-#: wxwin/mainframe.cc:729
-msgid ""
-"This program is free software; you can redistribute it and/or modify it "
-"under the terms of the GNU General Public License as published by the Free "
-"Software Foundation; either version 2 of the License, or (at your option) "
-"any later version."
-msgstr ""
-"Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le "
-"modifier selon les termes de la licence \"GNU General Public License\" "
-"publiée par la Free Software Fundation ; soit la version 2 de la Licence, "
-"soit (comme vous le préférez), n'importe quelle version ultérieure."
-
-#: wxwin/mainframe.cc:927
-msgid "turn:"
-msgstr "coup :"
-
-#: wxwin/mainframe.cc:928
-msgid "points:"
-msgstr "points :"
-
-#: wxwin/mainframe.cc:963
-msgid ""
-"The bag doesn't contain enough letters\n"
-"for a new rack."
-msgstr ""
-"Le sac ne contient pas assez de lettres\n"
-"pour un nouveau tirage."
-
-#: wxwin/mainframe.cc:964 wxwin/mainframe.cc:968 wxwin/mainframe.cc:972
-msgid "Rack validation"
-msgstr "Validation du tirage"
-
-#: wxwin/mainframe.cc:967
-msgid "The rack must contain at least 2 consonants and 2 vowels."
-msgstr "Le tirage doit contenir au moins 2 consonnes et 2 voyelles."
-
-#: wxwin/mainframe.cc:971
-msgid "The rack contains invalid letters for the current dictionary"
-msgstr ""
-"Le tirage contient des lettres incorrectes pour le dictionnaire courant"
-
-#: wxwin/mainframe.cc:975
-msgid "The rack has been modified manually"
-msgstr "Le tirage a été modifié manuellement"
-
-#: wxwin/searchpanel.cc:146 wxwin/searchpanel.cc:190
-#, c-format
-msgid "The search is limited to %d letters"
-msgstr "La recherche est limitée à %d lettres"
-
-#: wxwin/searchpanel.cc:249
-msgid "Minimum length"
-msgstr "Longueur minimum"
-
-#: wxwin/searchpanel.cc:251
-msgid "Maximum length"
-msgstr "Longueur maximum"
-
-#: wxwin/searchpanel.cc:320
-msgid "Cross words"
-msgstr "Mots croisés"
-
-#: wxwin/searchpanel.cc:321 qt/ui/dic_tools_widget.ui:69
-msgid "Plus 1"
-msgstr "Plus 1"
-
-#: wxwin/searchpanel.cc:322 qt/ui/dic_tools_widget.ui:94
-msgid "Regular expressions"
-msgstr "Expressions régulières"
-
 #: qt/bag_widget.cpp:50 qt/dic_tools_widget.cpp:100
 msgid "Letter"
 msgstr "Lettre"
@@ -1313,6 +646,14 @@
 msgid "Turn"
 msgstr "Coup"
 
+#: qt/history_widget.cpp:52
+msgid "Rack"
+msgstr "Tirage"
+
+#: qt/history_widget.cpp:53 qt/training_widget.cpp:59
+msgid "Word"
+msgstr "Mot"
+
 #: qt/history_widget.cpp:54 qt/training_widget.cpp:60
 msgid "Ref"
 msgstr "Ref"
@@ -1321,11 +662,15 @@
 msgid "Player"
 msgstr "Joueur"
 
-#: qt/main_window.cpp:109 qt/main_window.cpp:654 qt/ui/main_window.ui:40
+#: qt/history_widget.cpp:177 qt/main_window.cpp:347
+msgid "&Game"
+msgstr "&Partie"
+
+#: qt/main_window.cpp:112 qt/main_window.cpp:730 qt/ui/main_window.ui:32
 msgid "Board"
 msgstr "Grille"
 
-#: qt/main_window.cpp:164
+#: qt/main_window.cpp:167
 msgid ""
 "Cannot load dictionary '%1' indicated in the preferences.\n"
 "Reason: %2"
@@ -1333,207 +678,335 @@
 "Impossible de charger le dictionnaire '%1' indiqué dans les préférences.\n"
 "Raison : %2"
 
-#: qt/main_window.cpp:206
+#: qt/main_window.cpp:233
 msgid "No game"
 msgstr "Pas de partie en cours"
 
-#: qt/main_window.cpp:219
+#: qt/main_window.cpp:246
 msgid "Duplicate game"
 msgstr "Partie duplicate"
 
-#: qt/main_window.cpp:224 qt/new_game.cpp:99 qt/new_game.cpp:165
+#: qt/main_window.cpp:251 qt/new_game.cpp:100 qt/new_game.cpp:167
 #: qt/ui/new_game.ui:41
 msgid "Free game"
 msgstr "Partie libre"
 
-#: qt/main_window.cpp:236
+#: qt/main_window.cpp:263
 msgid "Dictionary: %1"
 msgstr "Dictionnaire : %1"
 
-#: qt/main_window.cpp:245
+#: qt/main_window.cpp:272
 msgid "Eliot - Error"
 msgstr "Eliot - erreur"
 
-#: qt/main_window.cpp:315
+#: qt/main_window.cpp:348
 msgid "&New..."
 msgstr "&Nouvelle partie..."
 
-#: qt/main_window.cpp:315
+#: qt/main_window.cpp:348
 msgid "Ctrl+N"
 msgstr "Ctrl+N"
 
-#: qt/main_window.cpp:318
+#: qt/main_window.cpp:349
+msgid "Start a new game"
+msgstr "Démarrer une nouvelle partie"
+
+#: qt/main_window.cpp:351
 msgid "&Load..."
 msgstr "&Charger..."
 
-#: qt/main_window.cpp:318
+#: qt/main_window.cpp:351
 msgid "Ctrl+O"
 msgstr "Ctrl+O"
 
-#: qt/main_window.cpp:319
+#: qt/main_window.cpp:352
 msgid "Load an existing game"
 msgstr "Charger une partie existante"
 
-#: qt/main_window.cpp:320
+#: qt/main_window.cpp:353
 msgid "&Save as..."
 msgstr "&Enregistrer sous..."
 
-#: qt/main_window.cpp:320
+#: qt/main_window.cpp:353
 msgid "Ctrl+S"
 msgstr "Ctrl+S"
 
-#: qt/main_window.cpp:323
+#: qt/main_window.cpp:354
+msgid "Save the current game"
+msgstr "Sauvegarder la partie en cours"
+
+#: qt/main_window.cpp:356
 msgid "&Print..."
 msgstr "Im&primer..."
 
-#: qt/main_window.cpp:323
+#: qt/main_window.cpp:356
 msgid "Ctrl+P"
 msgstr "Ctrl+P"
 
-#: qt/main_window.cpp:324
+#: qt/main_window.cpp:357
 msgid "Print the current game"
 msgstr "Imprimer la partie en cours"
 
-#: qt/main_window.cpp:326
+#: qt/main_window.cpp:359
 msgid "&Quit"
 msgstr "&Quitter"
 
-#: qt/main_window.cpp:326
+#: qt/main_window.cpp:359
 msgid "Ctrl+Q"
 msgstr "Ctrl+Q"
 
-#: qt/main_window.cpp:332
+#: qt/main_window.cpp:360
+msgid "Quit Eliot"
+msgstr "Quitter Eliot"
+
+#: qt/main_window.cpp:364 qt/main_window.cpp:406
+msgid "&History"
+msgstr "&Historique"
+
+#: qt/main_window.cpp:365
+msgid "&First turn"
+msgstr ""
+
+#: qt/main_window.cpp:365
+#, fuzzy
+msgid "Ctrl+Home"
+msgstr "Ctrl+H"
+
+#: qt/main_window.cpp:366
+#, fuzzy
+msgid "Go to the first turn of the game"
+msgstr "Configuration de la partie"
+
+#: qt/main_window.cpp:368
+msgid "&Previous turn"
+msgstr ""
+
+#: qt/main_window.cpp:368
+#, fuzzy
+msgid "Ctrl+Left"
+msgstr "Ctrl+N"
+
+#: qt/main_window.cpp:369
+#, fuzzy
+msgid "Go to the previous turn of the game"
+msgstr "Aperçu avant impression de la partie"
+
+#: qt/main_window.cpp:371
+msgid "&Next turn"
+msgstr ""
+
+#: qt/main_window.cpp:371
+#, fuzzy
+msgid "Ctrl+Right"
+msgstr "droite"
+
+#: qt/main_window.cpp:372
+#, fuzzy
+msgid "Go to the next turn of the game"
+msgstr "Configuration de la partie"
+
+#: qt/main_window.cpp:374
+msgid "&Last turn"
+msgstr ""
+
+#: qt/main_window.cpp:374
+#, fuzzy
+msgid "Ctrl+End"
+msgstr "Ctrl+E"
+
+#: qt/main_window.cpp:375
+#, fuzzy
+msgid "Go to the last turn of the game"
+msgstr "Historique de la partie"
+
+#: qt/main_window.cpp:377
+msgid "&Replay turn"
+msgstr ""
+
+#: qt/main_window.cpp:377
+#, fuzzy
+msgid "Ctrl+R"
+msgstr "Ctrl+N"
+
+#: qt/main_window.cpp:378
+msgid ""
+"Play the game from the current position, replacing what was really played"
+msgstr ""
+
+#: qt/main_window.cpp:390
+msgid "&Settings"
+msgstr "Para&mètres"
+
+#: qt/main_window.cpp:391
 msgid "&Choose dictionary..."
 msgstr "Choisir un &dictionnaire..."
 
-#: qt/main_window.cpp:332
+#: qt/main_window.cpp:391
 msgid "Ctrl+C"
 msgstr "Ctrl+C"
 
-#: qt/main_window.cpp:333
+#: qt/main_window.cpp:392
 msgid "Select a new dictionary"
 msgstr "Choisir un nouveau dictionnaire"
 
-#: qt/main_window.cpp:334
+#: qt/main_window.cpp:393
 msgid "&Preferences..."
 msgstr "&Préférences..."
 
-#: qt/main_window.cpp:334
+#: qt/main_window.cpp:393
 msgid "Ctrl+F"
 msgstr "Ctrl+F"
 
-#: qt/main_window.cpp:335
+#: qt/main_window.cpp:394
 msgid "Edit the preferences"
 msgstr "Modifier les préférences"
 
-#: qt/main_window.cpp:340
+#: qt/main_window.cpp:398
+msgid "&Windows"
+msgstr "&Fenêtres"
+
+#: qt/main_window.cpp:399
+msgid "&Toolbar"
+msgstr ""
+
+#: qt/main_window.cpp:399
+#, fuzzy
+msgid "Ctrl+T"
+msgstr "Ctrl+N"
+
+#: qt/main_window.cpp:400
+#, fuzzy
+msgid "Show/hide the toolbar"
+msgstr "Afficher/cacher le plateau de jeu externe"
+
+#: qt/main_window.cpp:402
 msgid "&Bag"
 msgstr "&Sac"
 
-#: qt/main_window.cpp:340
+#: qt/main_window.cpp:402
 msgid "Ctrl+B"
 msgstr "Ctrl+B"
 
-#: qt/main_window.cpp:341 qt/ui/main_window.ui:97
+#: qt/main_window.cpp:403 qt/ui/main_window.ui:94
 msgid "Show/hide the remaining tiles in the bag"
 msgstr "Afficher/cacher les lettres restantes dans le sac"
 
-#: qt/main_window.cpp:342
+#: qt/main_window.cpp:404
 msgid "&External board"
 msgstr "&Plateau de jeu externe"
 
-#: qt/main_window.cpp:342
+#: qt/main_window.cpp:404
 msgid "Ctrl+E"
 msgstr "Ctrl+E"
 
-#: qt/main_window.cpp:343 qt/ui/main_window.ui:111
+#: qt/main_window.cpp:405 qt/ui/main_window.ui:108
 msgid "Show/hide the external board"
 msgstr "Afficher/cacher le plateau de jeu externe"
 
-#: qt/main_window.cpp:344
-msgid "&History"
-msgstr "&Historique"
-
-#: qt/main_window.cpp:344
+#: qt/main_window.cpp:406
 msgid "Ctrl+H"
 msgstr "Ctrl+H"
 
-#: qt/main_window.cpp:345 qt/ui/main_window.ui:125
+#: qt/main_window.cpp:407 qt/ui/main_window.ui:122
 msgid "Show/hide the game history"
 msgstr "Afficher/cacher l'historique de la partie"
 
-#: qt/main_window.cpp:346
+#: qt/main_window.cpp:408
 msgid "&Dictionary tools"
 msgstr "Outils du &dictionnaire"
 
-#: qt/main_window.cpp:346
+#: qt/main_window.cpp:408
 msgid "Ctrl+D"
 msgstr "Ctrl+D"
 
-#: qt/main_window.cpp:347 qt/ui/main_window.ui:139
+#: qt/main_window.cpp:409 qt/ui/main_window.ui:136
 msgid "Show/hide the dictionary tools"
 msgstr "Afficher/cacher les outils de recherche dans le dictionnaire"
 
-#: qt/main_window.cpp:352
+#: qt/main_window.cpp:413
+msgid "&Help"
+msgstr "&Aide"
+
+#: qt/main_window.cpp:414
+msgid "&About..."
+msgstr "À &propos..."
+
+#: qt/main_window.cpp:414
 msgid "Ctrl+A"
 msgstr "Ctrl+A"
 
-#: qt/main_window.cpp:361 qt/main_window.cpp:394
+#: qt/main_window.cpp:415 qt/main_window.cpp:789
+msgid "About Eliot"
+msgstr "À propos d'Eliot"
+
+#: qt/main_window.cpp:423 qt/main_window.cpp:456
 msgid "You have to select a dictionary first!"
 msgstr "Vous devez d'abord choisir un dictionnaire !"
 
-#: qt/main_window.cpp:386
+#: qt/main_window.cpp:448
 msgid "Game started"
 msgstr "Partie démarrée"
 
-#: qt/main_window.cpp:422
+#: qt/main_window.cpp:467
+msgid "Error while loading the game"
+msgstr "Erreur pendant le chargement de la partie"
+
+#: qt/main_window.cpp:485
 msgid "Save a game"
 msgstr "Sauvegarder la partie"
 
-#: qt/main_window.cpp:427
+#: qt/main_window.cpp:490
 msgid "Game saved"
 msgstr "Partie enregistrée"
 
-#: qt/main_window.cpp:461
+#: qt/main_window.cpp:524
 msgid "N."
 msgstr "N."
 
-#: qt/main_window.cpp:461
+#: qt/main_window.cpp:524
 msgid "RACK"
 msgstr "TIRAGE"
 
-#: qt/main_window.cpp:461
+#: qt/main_window.cpp:524
 msgid "SOLUTION"
 msgstr "SOLUTION"
 
-#: qt/main_window.cpp:461
+#: qt/main_window.cpp:524
 msgid "REF"
 msgstr "REF"
 
-#: qt/main_window.cpp:461
+#: qt/main_window.cpp:524
 msgid "PTS"
 msgstr "PTS"
 
-#: qt/main_window.cpp:594
-msgid "Stop current game?"
-msgstr "Arrêter la partie en cours ?"
-
-#: qt/main_window.cpp:595
-msgid ""
-"Loading a dictionary will stop the current game. Do you want to continue?"
+#: qt/main_window.cpp:657
+#, fuzzy
+msgid "Loading a dictionary will stop the current game."
 msgstr ""
 "Charger un dictionnaire arrêtera la partie en cours. Voulez-vous continuer ?"
 
-#: qt/main_window.cpp:672 qt/ui/main_window.ui:53 qt/ui/main_window.ui:122
+#: qt/main_window.cpp:658 qt/main_window.cpp:859 qt/new_game.cpp:56
+msgid "Eliot"
+msgstr "Eliot"
+
+#: qt/main_window.cpp:660 qt/main_window.cpp:861
+msgid "Do you want to continue?"
+msgstr ""
+
+#: qt/main_window.cpp:669
+msgid "Choose a dictionary"
+msgstr "Choisir un dictionnaire"
+
+#: qt/main_window.cpp:748 qt/ui/main_window.ui:45 qt/ui/main_window.ui:119
 msgid "History"
 msgstr "Historique"
 
-#: qt/main_window.cpp:689 qt/ui/dic_tools_widget.ui:13
-#: qt/ui/main_window.ui:136
+#: qt/main_window.cpp:765 qt/ui/dic_tools_widget.ui:13
+#: qt/ui/main_window.ui:133
 msgid "Dictionary tools"
 msgstr "Outils du dictionnaire"
 
-#: qt/main_window.cpp:706
+#: qt/main_window.cpp:782
 msgid ""
 "Copyright (C) 1999-2008 - Antoine Fraboulet & Olivier Teuliere\n"
 "\n"
@@ -1549,40 +1022,51 @@
 "publiée par la Free Software Fundation ; soit la version 2 de la Licence, "
 "soit (comme vous le préférez), n'importe quelle version ultérieure."
 
-#: qt/new_game.cpp:38 qt/ui/new_game.ui:117
+#: qt/main_window.cpp:804 qt/main_window.cpp:817 qt/main_window.cpp:830
+#: qt/main_window.cpp:843
+msgid "Turn %1/%2"
+msgstr ""
+
+#: qt/main_window.cpp:856
+msgid ""
+"Replaying this turn will modify the game history by deleting the turns after "
+"the displayed one (i.e. turns \"in the future\")."
+msgstr ""
+
+#: qt/main_window.cpp:872
+msgid "Replaying from turn %1"
+msgstr ""
+
+#: qt/new_game.cpp:39 qt/ui/new_game.ui:117
 msgid "Human"
 msgstr "Humain"
 
-#: qt/new_game.cpp:39 qt/ui/new_game.ui:122
+#: qt/new_game.cpp:40 qt/ui/new_game.ui:122
 msgid "Computer"
 msgstr "Ordinateur"
 
-#: qt/new_game.cpp:46 qt/new_game.cpp:53 qt/new_game.cpp:112
-#: qt/new_game.cpp:201 qt/new_game.cpp:204
+#: qt/new_game.cpp:47 qt/new_game.cpp:54 qt/new_game.cpp:114
+#: qt/new_game.cpp:203 qt/new_game.cpp:206
 msgid "Player %1"
 msgstr "Joueur %1"
 
-#: qt/new_game.cpp:50
+#: qt/new_game.cpp:51
 msgid "Name"
 msgstr "Nom"
 
-#: qt/new_game.cpp:51
+#: qt/new_game.cpp:52
 msgid "Type"
 msgstr "Type"
 
-#: qt/new_game.cpp:52
+#: qt/new_game.cpp:53
 msgid "Level"
 msgstr "Niveau"
 
-#: qt/new_game.cpp:55
-msgid "Eliot"
-msgstr "Eliot"
-
-#: qt/new_game.cpp:164 qt/ui/new_game.ui:36
+#: qt/new_game.cpp:166 qt/ui/new_game.ui:36
 msgid "Duplicate"
 msgstr "Duplicate"
 
-#: qt/player_widget.cpp:82
+#: qt/player_widget.cpp:80
 msgid ""
 "Enter the word to play (case-insensitive).\n"
 "A joker from the rack must be written in parentheses.\n"
@@ -1592,7 +1076,7 @@
 "Un joker provenant du chevalet doit être écrit entre parenthèses.\n"
 "Ex. : m(o)( ou M(O)T"
 
-#: qt/player_widget.cpp:85
+#: qt/player_widget.cpp:83
 msgid ""
 "Enter the coordinates of the word.\n"
 "Specify the row before the column for horizontal words,\n"
@@ -1604,72 +1088,72 @@
 "et la colonne avant la rangée pour les mots verticaux.\n"
 "Ex. : H4 ou 4H"
 
-#: qt/player_widget.cpp:183
+#: qt/player_widget.cpp:190
 msgid "Cannot play word: misplaced parentheses"
 msgstr "Impossible de jouer le mot : parenthèses mal placées"
 
-#: qt/player_widget.cpp:205
+#: qt/player_widget.cpp:212
 msgid "Cannot play '%1' at position '%2':\n"
 msgstr "Impossible de jouer '%1' en '%2' :\n"
 
-#: qt/player_widget.cpp:210
+#: qt/player_widget.cpp:217
 msgid "Some letters are not valid for the current dictionary"
 msgstr ""
 "Le tirage contient des lettres incorrectes pour le dictionnaire courant"
 
-#: qt/player_widget.cpp:213
+#: qt/player_widget.cpp:220
 msgid "Invalid coordinates"
 msgstr "Coordonnées invalides"
 
-#: qt/player_widget.cpp:216
+#: qt/player_widget.cpp:223
 msgid "The word does not exist"
 msgstr "Le mot n'existe pas"
 
-#: qt/player_widget.cpp:219
+#: qt/player_widget.cpp:226
 msgid "The rack doesn't contain the letters needed to play this word"
 msgstr "Le chevalet ne contient pas les lettres permettant de jouer ce mot"
 
-#: qt/player_widget.cpp:222
+#: qt/player_widget.cpp:229
 msgid "The word is part of a longer one"
 msgstr "Le mot fait partie d'un autre mot plus long"
 
-#: qt/player_widget.cpp:225
+#: qt/player_widget.cpp:232
 msgid "The word tries to replace an existing letter"
 msgstr "Le mot remplace une lettre existante"
 
-#: qt/player_widget.cpp:228
+#: qt/player_widget.cpp:235
 msgid "An orthogonal word is not valid"
 msgstr "Un mot perpendiculaire est invalide"
 
-#: qt/player_widget.cpp:231
+#: qt/player_widget.cpp:238
 msgid "The word is already present on the board at these coordinates"
 msgstr "Le mot est déjà présent sur la grille à cette position"
 
-#: qt/player_widget.cpp:234
+#: qt/player_widget.cpp:241
 msgid "A word cannot be isolated (not connected to the placed words)"
 msgstr "Un mot ne peut pas être isolé (non connecté aux autres mots 
placés)"
 
-#: qt/player_widget.cpp:237
+#: qt/player_widget.cpp:244
 msgid "The first word of the game must be horizontal"
 msgstr "Le premier mot de la partie doit être horizontal"
 
-#: qt/player_widget.cpp:240
+#: qt/player_widget.cpp:247
 msgid "The first word of the game must cover the H8 square"
 msgstr "Le premier mot de la partie doit couvrir la case H8"
 
-#: qt/player_widget.cpp:243
+#: qt/player_widget.cpp:250
 msgid "The word is going out of the board"
 msgstr "Le mot sort de la grille"
 
-#: qt/player_widget.cpp:246
+#: qt/player_widget.cpp:253
 msgid "Incorrect or misplaced word (%1)"
 msgstr "Mot incorrect ou mal placé (%1)"
 
-#: qt/player_widget.cpp:270
+#: qt/player_widget.cpp:276
 msgid "Cannot pass turn (%1)"
 msgstr "Impossible de passer le tour (%1)"
 
-#: qt/player_widget.cpp:272
+#: qt/player_widget.cpp:278
 msgid "Cannot change letters '%1' (%2)"
 msgstr "Impossible de changer les lettres '%1' (%2)"
 
@@ -1677,18 +1161,30 @@
 msgid "Score"
 msgstr "Score"
 
-#: qt/training_widget.cpp:200
+#: qt/training_widget.cpp:203
 msgid "Warning: Cannot set the rack to '%1'"
 msgstr "Attention : Impossible de choisir le tirage '%1'"
 
-#: qt/training_widget.cpp:239
+#: qt/training_widget.cpp:242
 msgid "Searching with rack '%1'..."
 msgstr "Recherche en cours pour le tirage '%1'..."
 
-#: qt/training_widget.cpp:241
+#: qt/training_widget.cpp:244
 msgid "Search done"
 msgstr "Recherche terminée"
 
+#: qt/ui/dic_tools_widget.ui:31
+msgid "Check"
+msgstr "Vérification"
+
+#: qt/ui/dic_tools_widget.ui:69
+msgid "Plus 1"
+msgstr "Plus 1"
+
+#: qt/ui/dic_tools_widget.ui:94
+msgid "Regular expressions"
+msgstr "Expressions régulières"
+
 #: qt/ui/dic_tools_widget.ui:105
 msgid "Minimum length:"
 msgstr "Longueur minimum :"
@@ -1717,11 +1213,11 @@
 msgid "Number of words:"
 msgstr "Nombre de mots :"
 
-#: qt/ui/main_window.ui:62 qt/ui/new_game.ui:77
+#: qt/ui/main_window.ui:54 qt/ui/new_game.ui:77
 msgid "Players"
 msgstr "Joueurs"
 
-#: qt/ui/main_window.ui:108
+#: qt/ui/main_window.ui:105
 msgid "External board"
 msgstr "Plateau de jeu externe"
 
@@ -1851,7 +1347,11 @@
 msgid "Align the rack and the solution in history"
 msgstr "Aligner tirages et solutions dans l'historique"
 
-#: qt/ui/prefs_dialog.ui:81 qt/ui/prefs_dialog.ui:168
+#: qt/ui/prefs_dialog.ui:72
+msgid "Warn before replaying a turn"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:91 qt/ui/prefs_dialog.ui:178
 msgid ""
 "If checked, playing an invalid or misplaced word will not be possible. If "
 "unchecked, you will get 0 point and lose your turn"
@@ -1859,23 +1359,23 @@
 "Si la case est cochée, jouer un mot invalide ou mal placé sera impossible. "
 "Sinon, un tel mot apportera 0 point et vous perdrez votre tour"
 
-#: qt/ui/prefs_dialog.ui:84 qt/ui/prefs_dialog.ui:171
+#: qt/ui/prefs_dialog.ui:94 qt/ui/prefs_dialog.ui:181
 msgid "Refuse to play invalid moves"
 msgstr "Refuser de jouer des mots invalides"
 
-#: qt/ui/prefs_dialog.ui:93
+#: qt/ui/prefs_dialog.ui:103
 msgid "Min. players for a solo:"
 msgstr "Nombre minimal de joueurs pour un solo :"
 
-#: qt/ui/prefs_dialog.ui:113
+#: qt/ui/prefs_dialog.ui:123
 msgid "Minimum number of players needed to take into account the solo bonus"
 msgstr "Nombre minimal de joueurs pour prendre en compte la prime de solo"
 
-#: qt/ui/prefs_dialog.ui:127
+#: qt/ui/prefs_dialog.ui:137
 msgid "Solo value:"
 msgstr "Valeur du solo :"
 
-#: qt/ui/prefs_dialog.ui:147
+#: qt/ui/prefs_dialog.ui:157
 msgid "Value of the solo bonus. Set it to 0 if you don't want solo bonus"
 msgstr ""
 "Valeur de la prime de solo. Mettez 0 pour désactiver les primes de solo."
@@ -1888,6 +1388,455 @@
 msgid "Complement"
 msgstr "Complément"
 
+#: qt/ui/training_widget.ui:52
+msgid "Search"
+msgstr "Recherche"
+
+#~ msgid "Grid"
+#~ msgstr "Grille"
+
+#~ msgid "Word to check"
+#~ msgstr "Mot à vérifier"
+
+#~ msgid "No dictionary"
+#~ msgstr "Pas de dictionnaire"
+
+#~ msgid "exists"
+#~ msgstr "existe"
+
+#~ msgid "doesn't exist"
+#~ msgstr "n'existe pas"
+
+#~ msgid "Copy"
+#~ msgstr "Copier"
+
+#~ msgid "No on going game"
+#~ msgstr "Pas de partie en cours"
+
+#~ msgid "No result"
+#~ msgstr "Pas de résultat"
+
+#~ msgid "Rack + 1"
+#~ msgstr "Tirage + 1"
+
+#~ msgid "Rack: "
+#~ msgstr "Tirage :"
+
+#~ msgid "Benjamins"
+#~ msgstr "Benjamins"
+
+#~ msgid "Extensions"
+#~ msgstr "Raccords"
+
+#~ msgid "Game history"
+#~ msgstr "Historique de la partie"
+
+#~ msgid "Results"
+#~ msgstr "Résultats"
+
+#~ msgid "left"
+#~ msgstr "gauche"
+
+#~ msgid "centered"
+#~ msgstr "centré"
+
+#~ msgid "Alignment"
+#~ msgstr "Justification"
+
+#~ msgid "Spacing"
+#~ msgstr "Espacement"
+
+#~ msgid "Font..."
+#~ msgstr "Police..."
+
+#~ msgid "Title column "
+#~ msgstr "titre colomne "
+
+#~ msgid "Text column "
+#~ msgstr "Texte colomne "
+
+#~ msgid "Column heading"
+#~ msgstr "Titre de la colomne"
+
+#~ msgid "Alignment of the column heading"
+#~ msgstr "Justification du titre de la colomne"
+
+#~ msgid "Spacing of the heading characters"
+#~ msgstr "Espacement des caractères du titre"
+
+#~ msgid "Inner dimension of the column (in mm)"
+#~ msgstr "Dimension interne de la colomne (en mm)"
+
+#~ msgid "Alignment of the column text"
+#~ msgstr "Justification du texte de la colomne"
+
+#~ msgid "Characters spacing"
+#~ msgstr "Espacement des caractères"
+
+#~ msgid "Title spc. top"
+#~ msgstr "Titre esp. haut"
+
+#~ msgid "Text spc. top"
+#~ msgstr "Texte esp. haut"
+
+#~ msgid "Text spc. left"
+#~ msgstr "Texte esp. gauche"
+
+#~ msgid "Title spc. bot."
+#~ msgstr "Titre esp. bas"
+
+#~ msgid "Text spc. bot."
+#~ msgstr "Texte esp. bas"
+
+#~ msgid "Text spc. right"
+#~ msgstr "Text esp. droite"
+
+#~ msgid "Printer"
+#~ msgstr "Imprimante"
+
+#~ msgid "Configure the printer"
+#~ msgstr "Configuration de l'imprimante"
+
+#~ msgid "Page"
+#~ msgstr "Page"
+
+#~ msgid "Configure the dimensions of the page"
+#~ msgstr "Configuration des dimensions de la page"
+
+#~ msgid "Cancel the last changes"
+#~ msgstr "Annuler les derniers changements"
+
+#~ msgid "Save the changes"
+#~ msgstr "Sauvegarder les changements"
+
+#~ msgid "Nb"
+#~ msgstr "Num"
+
+#~ msgid "Solution"
+#~ msgstr "Solution"
+
+#~ msgid "Pos"
+#~ msgstr "Pos"
+
+#~ msgid "Pts"
+#~ msgstr "Pts"
+
+#~ msgid "Search on joker in 7+1 panel"
+#~ msgstr "Rechercher sur joker dans la fenêtre 7+1"
+
+#~ msgid "Check rack validity"
+#~ msgstr "Vérifier la validité du tirage"
+
+#~ msgid "Cancel last changes"
+#~ msgstr "Annuler les derniers changements"
+
+#~ msgid "Results of the search"
+#~ msgstr "Résultats de la recherche"
+
+#~ msgid " Rack "
+#~ msgstr " Tirage "
+
+#~ msgid " Complement "
+#~ msgstr " Complément "
+
+#~ msgid " Search "
+#~ msgstr " Rechercher "
+
+#~ msgid " Back "
+#~ msgstr " Arrière "
+
+#~ msgid " Play "
+#~ msgstr " Jouer "
+
+#~ msgid "Random rack"
+#~ msgstr "Tirage aléatoire"
+
+#~ msgid "Random complement of the rack"
+#~ msgstr "Complément aléatoire du tirage"
+
+#~ msgid "Search with the current rack"
+#~ msgstr "Recherche sur le tirage courant"
+
+#~ msgid "Go back one turn"
+#~ msgstr "Revenir un coup en arrière"
+
+#~ msgid "Play the selected word"
+#~ msgstr "Jouer le mot selectionné"
+
+#~ msgid "&New game\tCtrl+N"
+#~ msgstr "&Nouvelle partie\tCtrl+N"
+
+#~ msgid "New &joker game\tCtrl+J"
+#~ msgstr "Nouvelle partie &joker\tCtrl+J"
+
+#~ msgid "Start a new joker game"
+#~ msgstr "Démarrer une nouvelle partie joker"
+
+#~ msgid "&Load...\tCtrl+L"
+#~ msgstr "&Charger...\tCtrl+O"
+
+#~ msgid "&Save as...\tCtrl+S"
+#~ msgstr "&Enregistrer sous...\tCtrl+S"
+
+#~ msgid "&Print...\tCtrl+P"
+#~ msgstr "&Imprimer...\tCtrl+P"
+
+#~ msgid "Print this game"
+#~ msgstr "Imprimer la partie en cours"
+
+#~ msgid "Print pre&view..."
+#~ msgstr "&Aperçu avant impression..."
+
+#~ msgid "Print in PostS&cript..."
+#~ msgstr "Imprimer au format &PostScript..."
+
+#~ msgid "Print in a PostScript file"
+#~ msgstr "Imprimer dans un fichier PostScript"
+
+#~ msgid "&Quit\tCtrl+Q"
+#~ msgstr "&Quitter\tCtrl+Q"
+
+#~ msgid "&Dictionary...\tCtrl+D"
+#~ msgstr "&Dictionnaire...\tCtrl+D"
+
+#~ msgid "&Search..."
+#~ msgstr "&Recherche..."
+
+#~ msgid "Search options"
+#~ msgstr "Options de recherche"
+
+#~ msgid "&Background..."
+#~ msgstr "&Fond..."
+
+#~ msgid "Background color"
+#~ msgstr "Couleur de fond"
+
+#~ msgid "L&ines..."
+#~ msgstr "L&ignes..."
+
+#~ msgid "Color of the lines"
+#~ msgstr "Couleur des lignes"
+
+#~ msgid "&Played letters..."
+#~ msgstr "Lettres &jouées..."
+
+#~ msgid "Color of the letters played on the board"
+#~ msgstr "Couleur des lettres jouées sur la grille"
+
+#~ msgid "&Temporary letters..."
+#~ msgstr "Lettres &temporaires..."
+
+#~ msgid "Color of the letters of the temporary word"
+#~ msgstr "Couleur des lettres du mot temporaire"
+
+#~ msgid "B&ackground of played letters..."
+#~ msgstr "Fo&nd des lettres jouées..."
+
+#~ msgid "Background color of the letters played on the board"
+#~ msgstr "Couleur de fond des lettres jouées sur la grille"
+
+#~ msgid "Ba&ckground of temporary letters..."
+#~ msgstr "Fon&d des lettres temporaires..."
+
+#~ msgid "Background color of the temporary letters on the board"
+#~ msgstr "Couleur de fond des lettres temporaires sur la grille"
+
+#~ msgid "Double &letter..."
+#~ msgstr "&Lettre compte double..."
+
+#~ msgid "Color of the \"double letter\" squares"
+#~ msgstr "Couleur des cases \"mot compte double\""
+
+#~ msgid "Triple l&etter..."
+#~ msgstr "L&ettre compte triple..."
+
+#~ msgid "Color of the \"triple letter\" squares"
+#~ msgstr "Couleur des cases \"mot compte triple\""
+
+#~ msgid "Double &word..."
+#~ msgstr "&Mot compte double..."
+
+#~ msgid "Color of the \"double word\" squares"
+#~ msgstr "Couleur des cases \"mot compte double\""
+
+#~ msgid "Triple w&ord..."
+#~ msgstr "M&ot compte triple..."
+
+#~ msgid "Color of the \"triple word\" squares"
+#~ msgstr "Couleur des cases \"mot compte triple\""
+
+#~ msgid "&Default colors"
+#~ msgstr "&Couleurs d'origine"
+
+#~ msgid "Restore the default colors"
+#~ msgstr "Restaurer les couleurs d'origine"
+
+#~ msgid "&Search letters..."
+#~ msgstr "&Lettres de recherche..."
+
+#~ msgid "Font for the search"
+#~ msgstr "Police de caractères pour la recherche"
+
+#~ msgid "&Fonts"
+#~ msgstr "P&olices de caractères"
+
+#~ msgid "Configuration of the fonts"
+#~ msgstr "Configuration des polices de caractères"
+
+#~ msgid "&Colors"
+#~ msgstr "&Couleurs"
+
+#~ msgid "Configuration of the colors"
+#~ msgstr "Configuration des couleurs"
+
+#~ msgid "&Printing..."
+#~ msgstr "&Impression..."
+
+#~ msgid "Configuration of the printing parameters"
+#~ msgstr "Configuration des paramètres d'impression"
+
+#~ msgid "&Board"
+#~ msgstr "&Grille"
+
+#~ msgid "Game board"
+#~ msgstr "Plateau de jeu"
+
+#~ msgid "Ba&g\tCtrl+B"
+#~ msgstr "&Sac\tCtrl-B"
+
+#~ msgid "Remaining letters in the bag"
+#~ msgstr "Lettres restantes dans le sac"
+
+#~ msgid "&Check"
+#~ msgstr "&Vérification"
+
+#~ msgid "Check a word in the dictionary"
+#~ msgstr "Vérifier l'existence d'un mot dans le dictionnaire"
+
+#~ msgid "&Search"
+#~ msgstr "&Recherche"
+
+#~ msgid "Search in the dictionary"
+#~ msgstr "Recherche dans le dictionnaire"
+
+#~ msgid "&Rack + 1"
+#~ msgstr "&Tirage + 1"
+
+#~ msgid "Letters of the rack plus one"
+#~ msgstr "Lettres du tirage plus une"
+
+#~ msgid "&Extensions"
+#~ msgstr "&Raccords"
+
+#~ msgid "One-letter extensions on a word of the search"
+#~ msgstr "Raccords d'une lettre sur un mot de la recherche"
+
+#~ msgid "&Benjamins"
+#~ msgstr "&Benjamins"
+
+#~ msgid "Benjamins (3-letter extensions) on a word of the search"
+#~ msgstr "Benjamins (préfixes de 3 lettres) sur un mot de la recherche"
+
+#~ msgid "Game &history\tCtrl+H"
+#~ msgstr "&Historique de la partie\tCtrl+H"
+
+#~ msgid "R&esults"
+#~ msgstr "Ré&sultats"
+
+#~ msgid "No dictionary selected"
+#~ msgstr "Pas de dictionnaire sélectionné"
+
+#~ msgid "Eliot: error"
+#~ msgstr "Eliot : erreur"
+
+#~ msgid "Cannot open "
+#~ msgstr "Impossible d'ouvrir "
+
+#~ msgid "Invalid game"
+#~ msgstr "Partie invalide"
+
+#~ msgid "The game is empty"
+#~ msgstr "La partie est vide"
+
+#~ msgid "Cannot create "
+#~ msgstr "Impossible de créer "
+
+#~ msgid "Printing not done"
+#~ msgstr "Impression non effectuée"
+
+#~ msgid "Printing"
+#~ msgstr "Impression"
+
+#~ msgid "Print preview problem.\n"
+#~ msgstr "Problème avec l'aperçu avant impression.\n"
+
+#~ msgid "The printer may not be correctly initialized"
+#~ msgstr "Il se peut que l'imprimante soit mal initialisée"
+
+#~ msgid "Print preview"
+#~ msgstr "Aperçu avant impression"
+
+#~ msgid "Print to a PostScript file"
+#~ msgstr "Imprimer dans un fichier PostScript"
+
+#~ msgid "PostScript printing"
+#~ msgstr "Impression PostScript"
+
+#~ msgid "Cannot initialize PostScript printer"
+#~ msgstr "Impossible d'initialiser l'impression PostScript"
+
+#~ msgid ""
+#~ "This program is free software; you can redistribute it and/or modify it "
+#~ "under the terms of the GNU General Public License as published by the "
+#~ "Free Software Foundation; either version 2 of the License, or (at your "
+#~ "option) any later version."
+#~ msgstr ""
+#~ "Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le "
+#~ "modifier selon les termes de la licence \"GNU General Public License\" "
+#~ "publiée par la Free Software Fundation ; soit la version 2 de la Licence, 
"
+#~ "soit (comme vous le préférez), n'importe quelle version ultérieure."
+
+#~ msgid "turn:"
+#~ msgstr "coup :"
+
+#~ msgid "points:"
+#~ msgstr "points :"
+
+#~ msgid ""
+#~ "The bag doesn't contain enough letters\n"
+#~ "for a new rack."
+#~ msgstr ""
+#~ "Le sac ne contient pas assez de lettres\n"
+#~ "pour un nouveau tirage."
+
+#~ msgid "Rack validation"
+#~ msgstr "Validation du tirage"
+
+#~ msgid "The rack must contain at least 2 consonants and 2 vowels."
+#~ msgstr "Le tirage doit contenir au moins 2 consonnes et 2 voyelles."
+
+#~ msgid "The rack contains invalid letters for the current dictionary"
+#~ msgstr ""
+#~ "Le tirage contient des lettres incorrectes pour le dictionnaire courant"
+
+#~ msgid "The rack has been modified manually"
+#~ msgstr "Le tirage a été modifié manuellement"
+
+#~ msgid "The search is limited to %d letters"
+#~ msgstr "La recherche est limitée à %d lettres"
+
+#~ msgid "Minimum length"
+#~ msgstr "Longueur minimum"
+
+#~ msgid "Maximum length"
+#~ msgstr "Longueur maximum"
+
+#~ msgid "Cross words"
+#~ msgstr "Mots croisés"
+
+#~ msgid "Stop current game?"
+#~ msgstr "Arrêter la partie en cours ?"
+
 #~ msgid "Unknown (old format)"
 #~ msgstr "Inconnu (vieux format)"
 

Index: m4/wxwin.m4
===================================================================
RCS file: m4/wxwin.m4
diff -N m4/wxwin.m4
--- m4/wxwin.m4 1 Jan 2006 19:23:05 -0000       1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,345 +0,0 @@
-dnl ---------------------------------------------------------------------------
-dnl Macros for wxWidgets detection. Typically used in configure.in as:
-dnl
-dnl     AC_ARG_ENABLE(...)
-dnl     AC_ARG_WITH(...)
-dnl        ...
-dnl     AM_OPTIONS_WXCONFIG
-dnl        ...
-dnl        ...
-dnl     AM_PATH_WXCONFIG(2.6.0, wxWin=1)
-dnl     if test "$wxWin" != 1; then
-dnl        AC_MSG_ERROR([
-dnl                wxWidgets must be installed on your system
-dnl                but wx-config script couldn't be found.
-dnl
-dnl                Please check that wx-config is in path, the directory
-dnl                where wxWidgets libraries are installed (returned by
-dnl                'wx-config --libs' command) is in LD_LIBRARY_PATH or
-dnl                equivalent variable and wxWidgets version is 2.3.4 or above.
-dnl        ])
-dnl     fi
-dnl     CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
-dnl     CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
-dnl     CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
-dnl
-dnl     LIBS="$LIBS $WX_LIBS"
-dnl ---------------------------------------------------------------------------
-
-dnl ---------------------------------------------------------------------------
-dnl AM_OPTIONS_WXCONFIG
-dnl
-dnl adds support for --wx-prefix, --wx-exec-prefix, --with-wxdir and
-dnl --wx-config command line options
-dnl ---------------------------------------------------------------------------
-
-AC_DEFUN([AM_OPTIONS_WXCONFIG],
-[
-    AC_ARG_WITH(wxdir,
-                [  --with-wxdir=PATH       Use uninstalled version of 
wxWidgets in PATH],
-                [ wx_config_name="$withval/wx-config"
-                  wx_config_args="--inplace"])
-    AC_ARG_WITH(wx-config,
-                [  --with-wx-config=CONFIG wx-config script to use (optional)],
-                wx_config_name="$withval" )
-    AC_ARG_WITH(wx-prefix,
-                [  --with-wx-prefix=PREFIX Prefix where wxWidgets is installed 
(optional)],
-                wx_config_prefix="$withval", wx_config_prefix="")
-    AC_ARG_WITH(wx-exec-prefix,
-                [  --with-wx-exec-prefix=PREFIX
-                          Exec prefix where wxWidgets is installed (optional)],
-                wx_config_exec_prefix="$withval", wx_config_exec_prefix="")
-])
-
-dnl Helper macro for checking if wx version is at least $1.$2.$3, set's
-dnl wx_ver_ok=yes if it is:
-AC_DEFUN([_WX_PRIVATE_CHECK_VERSION],
-[
-    wx_ver_ok=""
-    if test "x$WX_VERSION" != x ; then
-      if test $wx_config_major_version -gt $1; then
-        wx_ver_ok=yes
-      else
-        if test $wx_config_major_version -eq $1; then
-           if test $wx_config_minor_version -gt $2; then
-              wx_ver_ok=yes
-           else
-              if test $wx_config_minor_version -eq $2; then
-                 if test $wx_config_micro_version -ge $3; then
-                    wx_ver_ok=yes
-                 fi
-              fi
-           fi
-        fi
-      fi
-    fi
-])
-
-dnl ---------------------------------------------------------------------------
-dnl AM_PATH_WXCONFIG(VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
-dnl                  [, WX-LIBS [, ADDITIONAL-WX-CONFIG-FLAGS]]]])
-dnl
-dnl Test for wxWidgets, and define WX_C*FLAGS, WX_LIBS and WX_LIBS_STATIC
-dnl (the latter is for static linking against wxWidgets). Set WX_CONFIG_NAME
-dnl environment variable to override the default name of the wx-config script
-dnl to use. Set WX_CONFIG_PATH to specify the full path to wx-config - in this
-dnl case the macro won't even waste time on tests for its existence.
-dnl
-dnl Optional WX-LIBS argument contains comma- or space-separated list of
-dnl wxWidgets libraries to link against (it may include contrib libraries). If
-dnl it is not specified then WX_LIBS and WX_LIBS_STATIC will contain flags to
-dnl link with all of the core wxWidgets libraries.
-dnl
-dnl Optional ADDITIONAL-WX-CONFIG-FLAGS argument is appended to wx-config
-dnl invocation command in present. It can be used to fine-tune lookup of
-dnl best wxWidgets build available.
-dnl
-dnl Example use:
-dnl   AM_PATH_WXCONFIG([2.6.0], [wxWin=1], [wxWin=0], [html,core,net]
-dnl                    [--unicode --debug])
-dnl ---------------------------------------------------------------------------
-
-dnl
-dnl Get the cflags and libraries from the wx-config script
-dnl
-AC_DEFUN([AM_PATH_WXCONFIG],
-[
-  dnl do we have wx-config name: it can be wx-config or wxd-config or ...
-  if test x${WX_CONFIG_NAME+set} != xset ; then
-     WX_CONFIG_NAME=wx-config
-  fi
-
-  if test "x$wx_config_name" != x ; then
-     WX_CONFIG_NAME="$wx_config_name"
-  fi
-
-  dnl deal with optional prefixes
-  if test x$wx_config_exec_prefix != x ; then
-     wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix"
-     WX_LOOKUP_PATH="$wx_config_exec_prefix/bin"
-  fi
-  if test x$wx_config_prefix != x ; then
-     wx_config_args="$wx_config_args --prefix=$wx_config_prefix"
-     WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin"
-  fi
-  if test "$cross_compiling" = "yes"; then
-     wx_config_args="$wx_config_args --host=$host_alias"
-  fi
-
-  dnl don't search the PATH if WX_CONFIG_NAME is absolute filename
-  if test -x "$WX_CONFIG_NAME" ; then
-     AC_MSG_CHECKING(for wx-config)
-     WX_CONFIG_PATH="$WX_CONFIG_NAME"
-     AC_MSG_RESULT($WX_CONFIG_PATH)
-  else
-     AC_PATH_PROG(WX_CONFIG_PATH, $WX_CONFIG_NAME, no, "$WX_LOOKUP_PATH:$PATH")
-  fi
-
-  if test "$WX_CONFIG_PATH" != "no" ; then
-    WX_VERSION=""
-
-    min_wx_version=ifelse([$1], ,2.2.1,$1)
-    if test -z "$5" ; then
-      AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version])
-    else
-      AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version ($5)])
-    fi
-
-    WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args $5 $4"
-
-    WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
-    wx_config_major_version=`echo $WX_VERSION | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    wx_config_minor_version=`echo $WX_VERSION | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-    wx_config_micro_version=`echo $WX_VERSION | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-
-    wx_requested_major_version=`echo $min_wx_version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    wx_requested_minor_version=`echo $min_wx_version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-    wx_requested_micro_version=`echo $min_wx_version | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-
-    _WX_PRIVATE_CHECK_VERSION([$wx_requested_major_version],
-                              [$wx_requested_minor_version],
-                              [$wx_requested_micro_version])
-
-    if test -n "$wx_ver_ok"; then
-
-      AC_MSG_RESULT(yes (version $WX_VERSION))
-      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`
-
-      dnl is this even still appropriate?  --static is a real option now
-      dnl and WX_CONFIG_WITH_ARGS is likely to contain it if that is
-      dnl what the user actually wants, making this redundant at best.
-      dnl For now keep it in case anyone actually used it in the past.
-      AC_MSG_CHECKING([for wxWidgets static library])
-      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null`
-      if test "x$WX_LIBS_STATIC" = "x"; then
-        AC_MSG_RESULT(no)
-      else
-        AC_MSG_RESULT(yes)
-      fi
-
-      dnl starting with version 2.2.6 wx-config has --cppflags argument
-      wx_has_cppflags=""
-      if test $wx_config_major_version -gt 2; then
-        wx_has_cppflags=yes
-      else
-        if test $wx_config_major_version -eq 2; then
-           if test $wx_config_minor_version -gt 2; then
-              wx_has_cppflags=yes
-           else
-              if test $wx_config_minor_version -eq 2; then
-                 if test $wx_config_micro_version -ge 6; then
-                    wx_has_cppflags=yes
-                 fi
-              fi
-           fi
-        fi
-      fi
-
-      if test "x$wx_has_cppflags" = x ; then
-         dnl no choice but to define all flags like CFLAGS
-         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
-         WX_CPPFLAGS=$WX_CFLAGS
-         WX_CXXFLAGS=$WX_CFLAGS
-
-         WX_CFLAGS_ONLY=$WX_CFLAGS
-         WX_CXXFLAGS_ONLY=$WX_CFLAGS
-      else
-         dnl we have CPPFLAGS included in CFLAGS included in CXXFLAGS
-         WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags`
-         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags`
-         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
-
-         WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "address@hidden *@@"`
-         WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "address@hidden *@@"`
-      fi
-
-      ifelse([$2], , :, [$2])
-
-    else
-
-       if test "x$WX_VERSION" = x; then
-          dnl no wx-config at all
-          AC_MSG_RESULT(no)
-       else
-          AC_MSG_RESULT(no (version $WX_VERSION is not new enough))
-       fi
-
-       WX_CFLAGS=""
-       WX_CPPFLAGS=""
-       WX_CXXFLAGS=""
-       WX_LIBS=""
-       WX_LIBS_STATIC=""
-       ifelse([$3], , :, [$3])
-
-    fi
-  else
-
-    WX_CFLAGS=""
-    WX_CPPFLAGS=""
-    WX_CXXFLAGS=""
-    WX_LIBS=""
-    WX_LIBS_STATIC=""
-    ifelse([$3], , :, [$3])
-
-  fi
-
-  AC_SUBST(WX_CPPFLAGS)
-  AC_SUBST(WX_CFLAGS)
-  AC_SUBST(WX_CXXFLAGS)
-  AC_SUBST(WX_CFLAGS_ONLY)
-  AC_SUBST(WX_CXXFLAGS_ONLY)
-  AC_SUBST(WX_LIBS)
-  AC_SUBST(WX_LIBS_STATIC)
-  AC_SUBST(WX_VERSION)
-])
-
-dnl ---------------------------------------------------------------------------
-dnl Get information on the wxrc program for making C++, Python and xrs
-dnl resource files.
-dnl
-dnl     AC_ARG_ENABLE(...)
-dnl     AC_ARG_WITH(...)
-dnl        ...
-dnl     AM_OPTIONS_WXCONFIG
-dnl     AM_OPTIONS_WXRC
-dnl        ...
-dnl     AM_PATH_WXCONFIG(2.6.0, wxWin=1)
-dnl     if test "$wxWin" != 1; then
-dnl        AC_MSG_ERROR([
-dnl                wxWidgets must be installed on your system
-dnl                but wx-config script couldn't be found.
-dnl
-dnl                Please check that wx-config is in path, the directory
-dnl                where wxWidgets libraries are installed (returned by
-dnl                'wx-config --libs' command) is in LD_LIBRARY_PATH or
-dnl                equivalent variable and wxWidgets version is 2.6.0 or above.
-dnl        ])
-dnl     fi
-dnl
-dnl     AM_PATH_WXRC([HAVE_WXRC=1], [HAVE_WXRC=0])
-dnl     if test "x$HAVE_WXRC" != x1; then
-dnl         AC_MSG_ERROR([
-dnl                The wxrc program was not installed or not found.
-dnl     
-dnl                Please check the wxWidgets installation.
-dnl         ])
-dnl     fi
-dnl
-dnl     CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
-dnl     CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
-dnl     CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
-dnl
-dnl     LDFLAGS="$LDFLAGS $WX_LIBS"
-dnl ---------------------------------------------------------------------------
-
-
-
-dnl ---------------------------------------------------------------------------
-dnl AM_PATH_WXRC([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl
-dnl Test for wxWidgets' wxrc program for creating either C++, Python or XRS
-dnl resources.  The variable WXRC will be set and substituted in the configure
-dnl script and Makefiles.
-dnl
-dnl Example use:
-dnl   AM_PATH_WXRC([wxrc=1], [wxrc=0])
-dnl ---------------------------------------------------------------------------
-
-dnl
-dnl wxrc program from the wx-config script
-dnl
-AC_DEFUN([AM_PATH_WXRC],
-[
-  AC_ARG_VAR([WXRC], [Path to wxWidget's wxrc resource compiler])
-    
-  if test "x$WX_CONFIG_NAME" = x; then
-    AC_MSG_ERROR([The wxrc tests must run after wxWidgets test.])
-  else
-    
-    AC_MSG_CHECKING([for wxrc])
-    
-    if test "x$WXRC" = x ; then
-      dnl wx-config --utility is a new addition to wxWidgets:
-      _WX_PRIVATE_CHECK_VERSION(2,5,3)
-      if test -n "$wx_ver_ok"; then
-        WXRC=`$WX_CONFIG_WITH_ARGS --utility=wxrc`
-      fi
-    fi
-
-    if test "x$WXRC" = x ; then
-      AC_MSG_RESULT([not found])
-      ifelse([$2], , :, [$2])
-    else
-      AC_MSG_RESULT([$WXRC])
-      ifelse([$1], , :, [$1])
-    fi
-    
-    AC_SUBST(WXRC)
-  fi
-])

Index: wxwin/.cvsignore
===================================================================
RCS file: wxwin/.cvsignore
diff -N wxwin/.cvsignore
--- wxwin/.cvsignore    19 Apr 2005 21:49:57 -0000      1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,7 +0,0 @@
-.deps
-Makefile
-Makefile.in
-eliot
-eliot.exe
-cscope.files
-cscope.out

Index: wxwin/Makefile.am
===================================================================
RCS file: wxwin/Makefile.am
diff -N wxwin/Makefile.am
--- wxwin/Makefile.am   22 Sep 2008 21:21:45 -0000      1.14
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,46 +0,0 @@
-# Eliot
-# Copyright (C) 1999  Antoine Fraboulet
-# address@hidden
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-
-localedir = $(datadir)/locale
-
-if BUILD_WXWIDGETS
-
-bin_PROGRAMS = wxeliot
-
-AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\" @WX_CPPFLAGS@ -I$(top_srcdir) 
-I$(top_srcdir)/dic -I$(top_srcdir)/game
-
-wxeliot_SOURCES = \
-    configdb.cc configdb.h \
-    gfxboard.cc gfxboard.h \
-    gfxresult.cc gfxresult.h \
-    printout.cc printout.h \
-    confdimdlg.cc confdimdlg.h \
-    confsearch.cc confsearch.h \
-    searchpanel.cc searchpanel.h \
-    auxframes.cc auxframes.h  \
-    mainframe.cc mainframe.h  \
-    main.cc ewx.h
-
-wxeliot_LDADD = @WX_LIBS@ ../game/libgame.a ../dic/libdic.a @LIBINTL@ 
@LIBCONFIG_LIBS@
-
-EXTRA_DIST = \
-    eliot.xpm \
-    eliot.ico
-
-endif
-

Index: wxwin/auxframes.cc
===================================================================
RCS file: wxwin/auxframes.cc
diff -N wxwin/auxframes.cc
--- wxwin/auxframes.cc  2 Mar 2008 18:45:11 -0000       1.26
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,638 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   auxframes.cc
- *  \brief  Window Frames used in Eliot
- *  \author Antoine Fraboulet
- *  \date   2005
- */
-
-#include <iostream>
-#include <sstream>
-#include <string>
-
-#include "wx/sizer.h"
-#include "wx/button.h"
-#include "wx/intl.h"
-
-#include "wx/clipbrd.h"
-#include "wx/dataobj.h"
-
-#include "ewx.h"
-
-#include "dic.h"
-#include "training.h"
-#include "player.h"
-#include "game.h"
-#include "encoding.h"
-
-#include "configdb.h"
-#include "auxframes.h"
-#include "mainframe.h"
-#include "searchpanel.h"
-
-/****************************************************************/
-/* AUXFRAME */
-/****************************************************************/
-
-AuxFrame::AuxFrame(wxFrame* parent, int _id, wxString _name, wxString 
_classname):
-    wxFrame(parent, -1, wxT("Eliot: ") + _name, wxPoint(-1, -1), wxSize(-1, 
-1),
-            wxRESIZE_BORDER | wxCAPTION | wxFRAME_FLOAT_ON_PARENT, _classname)
-{
-  frameid   = (frames_id_t)_id;
-  name      = _name;
-  classname = _classname;
-  show      = config.getFrameShow(classname);
-}
-
-AuxFrame::~AuxFrame()
-{
-    wxPoint p = GetPosition();
-    wxSize  s = GetClientSize();
-    config.setFramePos(classname, p);
-    config.setFrameSize(classname, s);
-    config.setFrameShow(classname, show);
-}
-
-void
-AuxFrame::SwitchDisplay()
-{
-    if (show == 0)
-    {
-        Show(TRUE);
-        Raise();
-        show = 1;
-        Reload();
-    }
-    else
-    {
-        Show(FALSE);
-        show = 0;
-    }
-}
-
-void
-AuxFrame::Reload()
-{
-#define MINW 50
-#define MINH 50
-
-    wxSize size;
-    /* debug("  %s::Reload() - %s\n",(const char*)classname.mb_str(),(const 
char*)name.mb_str()); */
-
-    Move(config.getFramePos(classname));
-    size = config.getFrameSize(classname);
-
-    if (size.GetWidth() < MINW)
-        size.SetWidth(MINW);
-    if (size.GetHeight() < MINH)
-        size.SetHeight(MINH);
-
-    SetClientSize(size);
-    Refresh();
-    if (show)
-    {
-        Show(FALSE);
-        Show(TRUE);
-    }
-}
-
-/****************************************************************/
-/* BOARD FRAME */
-/****************************************************************/
-
-BoardFrame::BoardFrame(wxFrame* parent, Game& iGame):
-    AuxFrame(parent, ID_Frame_Board, _("Grid"), FRAMEBOARD)
-{
-    board = new GfxBoard(this, iGame);
-    wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL );
-    sizer->Add(board, 1, wxEXPAND, 0);
-    SetAutoLayout(TRUE);
-    SetSizer(sizer);
-    sizer->Fit(this);
-    sizer->SetSizeHints(this);
-}
-
-void
-BoardFrame::Refresh(refresh_t force)
-{
-    if (force == REFRESH)
-        board->Refresh(GfxBoard::BOARD_REFRESH);
-    else
-        board->Refresh(GfxBoard::BOARD_FORCE_REFRESH);
-}
-
-/****************************************************************/
-/* BAG FRAME */
-/****************************************************************/
-
-BagFrame::BagFrame(wxFrame* parent, Game& iGame):
-    AuxFrame(parent, ID_Frame_Bag, _("Bag"), FRAMEBAG),
-    m_game(iGame)
-{
-    tiles = new wxListCtrl(this, -1);
-    tiles->SetSingleStyle(wxLC_LIST);
-    //tiles->SetColumnWidth(0, wxLIST_AUTOSIZE);
-    //tiles->SetFont(config.getFont(LISTFONT));
-    //tiles->SetToolTip(wxT("Lettre, nombre restant"));
-
-#ifdef DEBUG
-    wxFont font(8, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
-                wxFONTWEIGHT_NORMAL, false, wxString(wxT("Courier New")), 
wxFONTENCODING_SYSTEM);
-    tiles->SetFont(font);
-#endif
-
-    wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL );
-    sizer->Add(tiles, 1, wxEXPAND | wxALL, 1);
-    SetAutoLayout(TRUE);
-    SetSizer(sizer);
-    sizer->Fit(this);
-}
-
-void
-BagFrame::Refresh(refresh_t __UNUSED__ force)
-{ 
-    //debug("    BagFrame::Refresh\n");
-    int n,index;
-    wxString buf;
-#ifdef DEBUG
-    wxChar format[] = wxT("%c:%2d[%2d]");
-#else
-    wxChar format[] = wxT("%c:%2d");
-#endif
-
-    tiles->ClearAll();
-
-    std::vector<Tile>::const_iterator it;
-    const std::vector<Tile>& allTiles = m_game.getDic().getAllTiles();
-    for (index = 0, it = allTiles.begin(); it != allTiles.end(); index++, it++)
-    {
-        n = m_game.getBag().in(*it);
-#ifdef DEBUG
-        buf.Printf(format, it->toChar(), n, n - it->maxNumber());
-#else
-        buf.Printf(format, it->toChar(), n);
-#endif
-        tiles->InsertItem(index,buf);
-    }
-}
-
-/****************************************************************/
-/* RECHERCHE */
-/****************************************************************/
-
-SearchFrame::SearchFrame(wxFrame *parent, const Dictionary &_dic):
-    AuxFrame(parent, ID_Frame_Search, _("Search"), FRAMESEARCH)
-{
-    panel = new SearchPanel(this, _dic);
-    wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL );
-    sizer->Add(panel, 1, wxEXPAND, 0);
-    SetAutoLayout(TRUE);
-    SetSizer(sizer);
-    sizer->Fit(this);
-}
-
-void
-SearchFrame::Refresh(refresh_t __UNUSED__ force)
-{
-    //debug("    SearchFrame::Refresh\n");
-}
-
-/****************************************************************/
-/* VERIF FRAME */
-/****************************************************************/
-
-enum
-{
-    Word_Id,
-    Result_Id
-};
-
-BEGIN_EVENT_TABLE(VerifFrame, AuxFrame)
-  EVT_TEXT(Word_Id, VerifFrame::OnText)
-END_EVENT_TABLE()
-
-VerifFrame::VerifFrame(wxFrame* parent, const Dictionary &_dic):
-  AuxFrame(parent, ID_Frame_Verif, _("Check"), FRAMEVERIF)
-{
-    dic = &_dic;
-    word = new wxTextCtrl(this, Word_Id, wxT(""));
-    word->SetFont(config.getFont(LISTFONT));
-    word->SetToolTip(_("Word to check"));
-    result = new wxStaticText(this, Result_Id, wxT(""));
-    result->SetFont(config.getFont(LISTFONT));
-    wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
-    sizer->Add(word, 1, wxEXPAND | wxALL, 1);
-    sizer->Add(result, 1, wxALIGN_CENTER_VERTICAL | wxALIGN_LEFT | wxALL, 1);
-
-    SetAutoLayout(TRUE);
-    SetSizer(sizer);
-    sizer->Fit(this);
-    sizer->SetSizeHints(this);
-}
-
-void
-VerifFrame::verif()
-{
-    if (dic == NULL)
-    {
-        result->SetLabel(_("No dictionary"));
-        return;
-    }
-    if (dic->searchWord(word->GetValue().wc_str()))
-        result->SetLabel(_("exists"));
-    else
-        result->SetLabel(_("doesn't exist"));
-}
-
-void
-VerifFrame::OnText(wxCommandEvent&)
-{
-    verif();
-}
-
-void
-VerifFrame::Refresh(refresh_t __UNUSED__ force)
-{
-    //debug("    VerifFrame::Refresh\n");
-}
-
-/****************************************************************/
-/* AUXFRAMELIST */
-/****************************************************************/
-
-enum {
-  ListBoxID,
-  ButtonCopyID
-};
-
-BEGIN_EVENT_TABLE(AuxFrameList, AuxFrame)
-  EVT_BUTTON        (ButtonCopyID , AuxFrameList::OnCopy)
-END_EVENT_TABLE()
-
-AuxFrameList::AuxFrameList(wxFrame* parent, int _id, wxString _name, wxString 
_classname, Game *g):
-  AuxFrame(parent, _id, _name, _classname)
-
-{
-    game = g;
-    savedword = L"";
-
-    wxBoxSizer *sizer_v = new wxBoxSizer(wxVERTICAL);
-    listbox = new wxListBox(this, ListBoxID);
-    listbox->SetFont(config.getFont(LISTFONT));
-    listbox->SetToolTip(name);
-    sizer_v->Add(listbox, 1, wxEXPAND | wxALL, 1);
-
-    button = new wxButton(this, ButtonCopyID, _("Copy"), wxPoint(0, 0), 
wxSize(-1, -1));
-    sizer_v->Add(button, 0, wxEXPAND | wxALL, 1);
-
-    wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL );
-    sizer->Add(sizer_v, 1, wxEXPAND, 0);
-
-    SetAutoLayout(TRUE);
-    SetSizer(sizer);
-    sizer->Fit(this);
-    sizer->SetSizeHints(this);
-}
-
-void
-AuxFrameList::OnCopy(wxCommandEvent __UNUSED__ &event)
-{
-    wxString textdata;
-
-    if (wxTheClipboard->Open())
-    {
-        textdata = wxT("");
-        for (int i = 0; i < listbox->GetCount(); i++)
-        {
-            textdata << listbox->GetString(i) << wxT("\n");
-        }
-        wxTextDataObject* ptr = new wxTextDataObject(textdata);
-        wxTheClipboard->AddData(ptr);
-        wxTheClipboard->Close();
-    }
-}
-
-void
-AuxFrameList::Waiting()
-{
-    listbox->Clear();
-    listbox->Show(TRUE);
-}
-
-void
-AuxFrameList::Refresh(refresh_t __UNUSED__ force)
-{
-    //debug("    %s : Refresh start\n",(const char*)name.mb_str());
-    if (game == NULL)
-    {
-        listbox->Clear();
-        listbox->Append(_("No on going game"));
-        //debug("  %s : Refresh end - no game\n",(const char*)name.mb_str());
-        return;
-    }
-    if (show == 0)
-    {
-        //debug("  %s : Refresh end - no window\n",(const char*)name.mb_str());
-        return;
-    }
-    noresult = true;
-    refresh();
-    if (noresult == true)
-    {
-        //debug("      %s : noresult == true\n",(const char*)name.mb_str());
-        listbox->Clear();
-        listbox->Append(_("No result"));
-    }
-    //debug("  %s : Refresh end\n",(const char*)name.mb_str());
-}
-
-/****************************************************************/
-/* PLUS1 FRAME */
-/****************************************************************/
-
-Plus1Frame::Plus1Frame(wxFrame* p, Game* g)
-    : AuxFrameList(p, ID_Frame_Plus1, _("Rack + 1"), FRAMEPLUS1, g)
-{
-}
-
-
-void
-Plus1Frame::refresh()
-{
-    //debug("      Plus1Frame::refresh start\n");
-    std::wstring rack = game->getCurrentPlayer().getCurrentRack().toString();
-    //debug("         CurrentPlayer -> rack : %s\n",rack.c_str());
-
-    if (savedword == rack)
-    {
-        noresult = false; // keep old results
-        //debug("      Plus1Frame::refresh end, no change\n");
-        return;
-    }
-    savedword = rack;
-
-    map<wchar_t, vector<wstring> > wordList;
-    game->getDic().search7pl1(rack, wordList, config.getJokerPlus1());
-
-    // Count the results
-    int sum = 0;
-    map<wchar_t, vector<wstring> >::const_iterator it;
-    for (it = wordList.begin(); it != wordList.end(); it++)
-    {
-        if (it->first)
-            sum += 1;
-        sum += it->second.size();
-    }
-    // For the line containing the rack
-    sum += 1;
-
-    noresult = (sum == 0);
-    listbox->Clear();
-    if (noresult)
-        return;
-
-    wxString *res = new wxString[sum];
-    int resnum = 0;
-    res[resnum++] = wxString(_("Rack: ")) + wxString(wxU(rack.c_str()));
-    for (it = wordList.begin(); it != wordList.end(); it++)
-    {
-        if (it->first)
-            res[resnum++] = wxString(wxT("+")) + wxU((wxString)it->first);
-        vector<wstring>::const_iterator itWord;
-        for (itWord = it->second.begin(); itWord != it->second.end(); itWord++)
-        {
-            res[resnum++] = wxString(wxT("  ")) + wxU(itWord->c_str());
-        }
-    }
-    listbox->Set(resnum, res);
-    delete[] res;
-    //debug("      Plus1Frame::refresh end\n");
-}
-
-/****************************************************************/
-/*  BENJAMINS */
-/****************************************************************/
-
-BenjFrame::BenjFrame(wxFrame* p, Game* g)
-    : AuxFrameList(p, ID_Frame_Benj, _("Benjamins"), FRAMEBENJ, g)
-{
-}
-
-
-void
-BenjFrame::refresh()
-{
-    if (game->getMode() != Game::kTRAINING)
-        return;
-
-    wstring word = static_cast<Training*>(game)->getTestPlayWord();
-    if (savedword == word)
-    {
-        noresult = false; // keep old results
-        return;
-    }
-    savedword = word;
-    //debug("   BenjFrame::refresh : %s\n",word.c_str());
-    vector<wstring> wordList;
-    game->getDic().searchBenj(word, wordList);
-
-    wxString *res = new wxString[wordList.size()];
-    int resnum = 0;
-    vector<wstring>::const_iterator it;
-    for (it = wordList.begin(); it != wordList.end(); it++)
-    {
-        res[resnum++] = wxU(it->c_str());
-        //debug("      BenjFrame : %s (%d)\n",wordlist[i],resnum);
-        noresult = false;
-    }
-    listbox->Set(resnum, res);
-    delete[] res;
-}
-
-
-/****************************************************************/
-/* RACC FRAME */
-/****************************************************************/
-
-RaccFrame::RaccFrame(wxFrame* p, Game* g)
-    : AuxFrameList(p, ID_Frame_Racc, _("Extensions"), FRAMERACC, g)
-{
-}
-
-
-void
-RaccFrame::refresh()
-{
-    if (game->getMode() != Game::kTRAINING)
-        return;
-
-    wstring word = static_cast<Training*>(game)->getTestPlayWord();
-    if (savedword == word)
-    {
-        noresult = false; // keep old results
-        return;
-    }
-    savedword = word;
-    //debug("   RaccFrame::refresh : %s\n",word.c_str());
-    vector<wstring> wordList;
-    game->getDic().searchRacc(word, wordList);
-
-    wxString *res = new wxString[wordList.size()];
-    int resnum = 0;
-    vector<wstring>::const_iterator it;
-    for (it = wordList.begin(); it != wordList.end(); it++)
-    {
-        res[resnum++] = wxU(it->c_str());
-        //debug("      RaccFrame : %s (%d)\n",wordlist[i],resnum);
-        noresult = false;
-    }
-    listbox->Set(resnum, res);
-    delete[] res;
-}
-
-/****************************************************************/
-/* AUXFRAMETEXT */
-/****************************************************************/
-
-AuxFrameText::AuxFrameText(wxFrame* parent, int _id, wxString _name, wxString 
_classname, int _style):
-  AuxFrame(parent, _id, _name, _classname)
-
-{
-    wxBoxSizer *sizer_v = new wxBoxSizer(wxVERTICAL);
-    wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL );
-
-    wxFont font(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
-                wxFONTWEIGHT_NORMAL, false, wxString(wxT("Courier New")), 
wxFONTENCODING_SYSTEM);
-
-    textbox = new wxTextCtrl(this, -1, wxT(""), wxDefaultPosition, 
wxDefaultSize, _style);
-    textbox->SetFont(font);
-
-    sizer_v->Add(textbox, 1, wxEXPAND | wxALL, 1);
-    sizer->Add(sizer_v, 1, wxEXPAND, 0);
-
-    SetAutoLayout(TRUE);
-    SetSizer(sizer);
-    sizer->Fit(this);
-    sizer->SetSizeHints(this);
-}
-
-/****************************************************************/
-/* GAME FRAME */
-/****************************************************************/
-
-GameFrame::GameFrame(wxFrame* parent, Game& iGame):
-    AuxFrameText(parent, ID_Frame_Game, _("Game history"), FRAMEGAME, 
wxTE_MULTILINE | wxTE_READONLY | wxTE_DONTWRAP),
-    m_game(iGame)
-{
-    textbox->Clear();
-    textbox->AppendText(wxT(""));
-}
-
-void
-GameFrame::Refresh(refresh_t __UNUSED__ force)
-{
-    std::ostringstream mos;
-    m_game.save(mos);
-#ifdef DEBUG
-    mos << std::string(30,'-') << std::endl;
-    mos << "Player History\n";
-    mos << convertToMb(m_game.getPlayer(0).toString());
-    mos << std::string(30,'-') << std::endl;
-    mos << "Game History\n";
-    mos << convertToMb(m_game.getHistory().toString());
-#endif
-    textbox->Clear();
-    textbox->AppendText( wxU( mos.str().c_str() ) );
-}
-
-/****************************************************************/
-/* RESULT FRAME */
-/****************************************************************/
-
-BEGIN_EVENT_TABLE(ResultFrame, AuxFrame)
-END_EVENT_TABLE()
-
-ResultFrame::ResultFrame(wxFrame* parent, Game* iGame):
-    AuxFrame(parent, ID_Frame_Result, _("Results"), FRAMERESULT)
-{
-    reslist = new GfxResult(this, (MainFrame*)parent, iGame);
-
-    wxBoxSizer *sizer_v = new wxBoxSizer(wxVERTICAL);
-    wxBoxSizer *sizer   = new wxBoxSizer(wxHORIZONTAL);
-
-    sizer_v->Add(reslist, 1, wxEXPAND, 0);
-    sizer->Add  (sizer_v, 1, wxEXPAND | wxALL, 2);
-
-    SetAutoLayout(TRUE);
-    SetSizer(sizer);
-    sizer->Fit(this);
-    sizer->SetSizeHints(this);
-    //debug("ResultFrame created\n");
-}
-
-void
-ResultFrame::Refresh(refresh_t WXUNUSED(force))
-{
-    if (reslist != NULL)
-    {
-        reslist->Show(false);
-        //debug("ResultFrame refresh\n");
-        reslist->Refresh();
-        reslist->Show(true);
-    }
-}
-
-void
-ResultFrame::Search()
-{
-    if (reslist != NULL)
-    {
-        reslist->Search();
-    }
-}
-
-int
-ResultFrame::GetSelected()
-{
-    if (reslist != NULL)
-    {
-        return reslist->GetSelected();
-    }
-    return -1;
-}
-
-void
-ResultFrame::OnSize(wxSizeEvent __UNUSED__ &e)
-{
-    int w,h;
-    GetClientSize(&w,&h);
-    //debug("ResultFrame::OnSize (%d,%d)\n",w,h);
-}
-
-/****************************************************************/
-/****************************************************************/
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// indent-tabs-mode: nil
-/// End:

Index: wxwin/auxframes.h
===================================================================
RCS file: wxwin/auxframes.h
diff -N wxwin/auxframes.h
--- wxwin/auxframes.h   12 Jan 2008 20:42:26 -0000      1.10
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,258 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   auxframes.h
- *  \brief  Window Frames used in Eliot
- *  \author Antoine Fraboulet
- *  \date   2005
- */
-
-#ifndef _AUXFRAMES_H
-#define _AUXFRAMES_H
-
-#include "wx/frame.h"
-#include "wx/listctrl.h"
-#include "wx/textctrl.h"
-#include "wx/stattext.h"
-#include "wx/listbox.h"
-#include "wx/button.h"
-
-#include "searchpanel.h"
-#include "gfxboard.h"
-#include "gfxresult.h"
-
-#define MIN_FRAME_ID 0
-#define MAX_FRAME_ID 9
-
-typedef enum {
-    ID_Frame_Verif   = MIN_FRAME_ID + 0,
-    ID_Frame_Search  = MIN_FRAME_ID + 1,
-    ID_Frame_Plus1   = MIN_FRAME_ID + 2,
-    ID_Frame_Racc    = MIN_FRAME_ID + 3,
-    ID_Frame_Benj    = MIN_FRAME_ID + 4,
-    ID_Frame_Bag     = MIN_FRAME_ID + 5,
-    ID_Frame_Board   = MIN_FRAME_ID + 6,
-    ID_Frame_Game    = MIN_FRAME_ID + 7,
-    ID_Frame_Result  = MIN_FRAME_ID + 8
-} frames_id_t;
-
-/**
- * Generic AuxFrame :
- *       - BoardFrame
- *       - BagFrame
- *       - SearchFrame
- *       - VerifFrame
- *       - ResultFrame
- * derived to AuxFrameList :
- *       - Plus1Frame
- *       - BenjFrame
- *       - RaccFrame
- * derived to AuxFrameText :
- *       - GameFrame
- *
- */
-
-class AuxFrame: public wxFrame
-{
-protected:
-    int         show;
-    frames_id_t frameid;
-    wxString    name, classname;
-    ConfigDB    config;
-
-public:
-    AuxFrame(wxFrame*, int, wxString, wxString);
-    ~AuxFrame();
-
-    typedef enum {
-        REFRESH,
-        FORCE_REFRESH
-    } refresh_t;
-
-    void SwitchDisplay();
-    void Reload();
-    virtual void Refresh(refresh_t __UNUSED__ force = REFRESH) {};
-};
-
-/**
- * Generic auxframe that includes a list and a """copy""" button
- */
-
-class AuxFrameList: public AuxFrame
-{
-protected:
-    bool      noresult;
-    wstring   savedword;
-    Game      *game;
-    wxButton  *button;
-    wxListBox *listbox;
-    void Waiting();
-    virtual void refresh() = 0;
-public:
-    AuxFrameList(wxFrame*, int, wxString, wxString, Game*);
-    void OnCopy(wxCommandEvent& event);
-    void Refresh(refresh_t force = REFRESH);
-    DECLARE_EVENT_TABLE()
-};
-
-/**
- * Generic auxframe that includes a text area
- */
-
-class AuxFrameText: public AuxFrame
-{
- protected:
-    wxTextCtrl *textbox;
- public:
-    AuxFrameText(wxFrame*, int, wxString, wxString, int);
-};
-
-/**
- * Frame to display the game board
- */
-
-class BoardFrame: public AuxFrame
-{
-protected:
-    GfxBoard *board;
-public:
-    BoardFrame(wxFrame*, Game&);
-    void Refresh(refresh_t force = REFRESH);
-};
-
-/**
- * Frame to display the tiles left in the bag
- */
-
-class BagFrame: public AuxFrame
-{
-private:
-    Game& m_game;
-    wxListCtrl *tiles;
-public:
-    BagFrame(wxFrame*, Game&);
-    void Refresh(refresh_t force = REFRESH);
-};
-
-/**
- * Several research tool in a panel widget within the frame
- */
-
-class SearchFrame: public AuxFrame
-{
-private:
-    SearchPanel *panel;
-public:
-    SearchFrame(wxFrame*, const Dictionary &);
-    void Refresh(refresh_t force = REFRESH);
-};
-
-/**
- * Frame to verify if a word is in the dictionary
- */
-
-class VerifFrame: public AuxFrame
-{
-protected:
-    const Dictionary *dic;
-    wxTextCtrl *word;
-    wxStaticText *result;
-    void verif();
-public:
-    VerifFrame(wxFrame*, const Dictionary&);
-    void OnText(wxCommandEvent& event);
-    void Refresh(refresh_t force = REFRESH);
-    DECLARE_EVENT_TABLE()
-};
-
-/**
- * Displays the list of 7+1 for the current search
- */
-
-class Plus1Frame: public AuxFrameList
-{
-protected:
-    virtual void refresh();
-public:
-    Plus1Frame(wxFrame* p, Game* g);
-};
-
-/**
- * Displays the list of benjamins for the current selected word
- */
-
-class BenjFrame: public AuxFrameList
-{
-protected:
-    virtual void refresh();
-public:
-    BenjFrame(wxFrame* p, Game* g);
-};
-
-/**
- * Displays the list of possible glue letter for the current selected word
- */
-
-class RaccFrame: public AuxFrameList
-{
-protected:
-    virtual void refresh();
-public:
-    RaccFrame(wxFrame* p, Game* g);
-};
-
-/**
- * Displays the current game
- */
-
-class GameFrame: public AuxFrameText
-{
-protected:
-    Game& m_game;
-public:
-    GameFrame(wxFrame*, Game&);
-    void Refresh(refresh_t force = REFRESH);
-};
-
-/**
- * Displays the list of possible words searched for the given rack and board
- */
-
-class ResultFrame: public AuxFrame
-{
- protected:
-    GfxResult *reslist;
- public:
-    ResultFrame(wxFrame*, Game*);
-    void Search();
-    int  GetSelected();
-    void Refresh(refresh_t force = REFRESH);
-    void OnSize(wxSizeEvent& e);
-    DECLARE_EVENT_TABLE()
-};
-
-#endif
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// indent-tabs-mode: nil
-/// End:

Index: wxwin/confdimdlg.cc
===================================================================
RCS file: wxwin/confdimdlg.cc
diff -N wxwin/confdimdlg.cc
--- wxwin/confdimdlg.cc 8 Jan 2008 13:52:43 -0000       1.10
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,494 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/* address@hidden                                                 */
-/*                                                                           */
-/* This program is free software; you can redistribute it and/or modify      */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* This program is distributed in the hope that it will be useful,           */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-#include "wx/printdlg.h"
-
-#include "ewx.h"
-
-#include "dic.h"
-#include "game.h"
-
-#include "configdb.h"
-#include "printout.h"
-#include "confdimdlg.h"
-
-enum {
-  Button_Printer,
-  Button_Page,
-  Button_Save,
-  Button_FontHeader,
-  Button_FontText
-};
-
-BEGIN_EVENT_TABLE(ConfDimDlg,wxDialog)
-  EVT_CLOSE (ConfDimDlg::OnCloseWindow)
-  EVT_BUTTON(wxID_OK,           ConfDimDlg::OnButtonOk)
-  EVT_BUTTON(wxID_CANCEL,       ConfDimDlg::OnButtonCancel)
-  EVT_BUTTON(Button_Save,       ConfDimDlg::OnButtonSave)
-  EVT_BUTTON(Button_Printer,    ConfDimDlg::OnConfPrinter)
-  EVT_BUTTON(Button_Page,       ConfDimDlg::OnConfPage)
-  EVT_BUTTON(Button_FontHeader, ConfDimDlg::OnConfFontHead)
-  EVT_BUTTON(Button_FontText,   ConfDimDlg::OnConfFontText)
-END_EVENT_TABLE()
-
-
-static int
-max(int i,int j)
-{
-  return i>j ? i : j;
-}
-
-
-ConfDimDlg::ConfDimDlg(wxWindow* parent, wxPrintData pd, wxPageSetupData psd)
-  : wxDialog(parent, -1, wxString(wxT("Eliot: Printing")))
-{
-  int i;
-  wxString choices[3];
-  choices[0] = _("left");
-  choices[1] = _("centered");
-  choices[2] = _("right");
-  wxStaticText* Hcomment[5];
-  wxRect        Hcommentrect[5];
-  wxRect        Htitlerect[5];
-  wxRect        Hjustrect[5];
-  wxRect        Hspacesrect[5];
-  wxStaticText* Tcomment[5];
-  wxRect        Tcommentrect[5];
-  wxRect        Tdimrect[5];
-  wxStaticText* Tunit[5];
-  wxRect        Tjustrect[5];
-  wxRect        Tspacesrect[5];
-
-  printdata = pd;
-  pagesetupdata = psd;
-
-  //
-  //     Head
-  //        Hcomment Htitle Hjust Hspaces
-  //     Text
-  //        TComment Tdim Tjust Tspaces
-  //
-
-#define VSPACE       10
-#define HSPACE       5
-
-  // --------------
-  // Header Section
-  // --------------
-#define HFONT        wxPoint(HSPACE,VSPACE)
-#define HCOMMENTY(i) (i==0 ? bfontheadrect.GetBottom() + VSPACE : \
-                     VSPACE + Hcommentrect[i-1].GetBottom())
-#define HCOMMENT(i)  wxPoint(HSPACE,HCOMMENTY(i)+2)
-#define HTITLE(i)    wxPoint(2*HSPACE+max(Hcommentrect[0].GetRight(), \
-                         Tcommentrect[0].GetRight()),HCOMMENTY(i))
-#define HJUST(i)     wxPoint(Htitlerect[0].GetRight() + HSPACE,HCOMMENTY(i))
-#define HSPACES(i)   wxPoint(Hjustrect[0].GetRight() + HSPACE,HCOMMENTY(i))
-
-  // ------------
-  // Text Section
-  // ------------
-#define TFONT        wxPoint(HSPACE, Hcommentrect[4].GetBottom() + 2*VSPACE)
-#define TCOMMENTY(i) (i==0 ? bfonttextrect.GetBottom() + VSPACE : \
-                     VSPACE + Tcommentrect[i-1].GetBottom())
-#define TCOMMENT(i)  wxPoint(HSPACE, TCOMMENTY(i)+2)
-#define TDIM(i)      wxPoint(2*HSPACE+max(Tcommentrect[0].GetRight(), \
-                         Hcommentrect[0].GetRight()),TCOMMENTY(i))
-#define TJUST(i)     wxPoint(Htitlerect[0].GetRight() + HSPACE, TCOMMENTY(i))
-#define TSPACES(i)   wxPoint(Hjustrect[0].GetRight() + HSPACE, TCOMMENTY(i))
-
-
-#define ESPSIZE      wxSize(spacerect.GetRight() - spacerect.GetLeft(),-1)
-
-
-  wxStaticText* justif = new wxStaticText(this,-1,_("Alignment"),wxPoint(0,0));
-  wxRect justifrect = justif->GetRect();
-  wxStaticText* space = new wxStaticText(this,-1,_("Spacing"),wxPoint(0,0));
-  wxRect spacerect = space->GetRect();
-
-  // heading, first part
-  bfontheader = new wxButton(this,Button_FontHeader,_("Font..."),HFONT);
-  wxRect bfontheadrect = bfontheader->GetRect();
-  for(i=0; i<5; i++)
-    {
-      wxString txt;
-      txt << _("Title column ") << (i+1);
-      Hcomment[i] = new wxStaticText(this,-1,txt,HCOMMENT(i));
-      Hcommentrect[i] = Hcomment[i]->GetRect();
-    }
-
-  // text, first part
-  bfonttext = new wxButton(this,Button_FontText,_("Font..."),TFONT);
-  wxRect bfonttextrect = bfonttext->GetRect();
-  for(i=0; i<5; i++)
-    {
-      wxString txt;
-      txt << _("Text column ") << (i+1);
-      Tcomment[i] = new wxStaticText(this,-1,txt,TCOMMENT(i),wxSize(-1,-1));
-      Tcommentrect[i] = Tcomment[i]->GetRect();
-    }
-
-  // heading, second part
-  for(i=0; i<5; i++)
-    {
-      Htitle[i] = new wxTextCtrl(this,-1,wxT(""),HTITLE(i),wxSize(100,-1));
-      Htitlerect[i] = Htitle[i]->GetRect();
-      Htitle[i]->SetToolTip(_("Column heading"));
-
-      Hjust[i] = new wxChoice(this,-1,HJUST(i),wxSize(-1,-1),3,choices);
-      Hjustrect[i] = Hjust[i]->GetRect();
-      Hjust[i]->SetToolTip(_("Alignment of the column heading"));
-
-      Hspaces[i] = new wxTextCtrl(this,-1,wxT("00"),HSPACES(i),ESPSIZE);
-      Hspacesrect[i] = Hspaces[i]->GetRect();
-      Hspaces[i]->SetToolTip(_("Spacing of the heading characters"));
-    }
-
-
-  // text, second part
-  for(i=0; i<5; i++)
-    {
-      Tdim[i] = new wxTextCtrl(this,-1,wxT(""),TDIM(i),wxSize(50,-1));
-      Tdimrect[i] = Tdim[i]->GetRect();
-      Tdim[i]->SetToolTip(_("Inner dimension of the column (in mm)"));
-
-      Tunit[i] = new wxStaticText(this,-1,wxT("mm"),
-                                  wxPoint(Tdimrect[i].GetRight()+
-                                          HSPACE,TCOMMENTY(i)+2),
-                                  wxSize(-1,-1));
-
-      Tjust[i] = new wxChoice(this,-1,TJUST(i),wxSize(-1,-1),3,choices);
-      Tjustrect[i] = Tjust[i]->GetRect();
-      Tjust[i]->SetToolTip(_("Alignment of the column text"));
-
-      Tspaces[i] = new wxTextCtrl(this,-1,wxT(""),TSPACES(i),ESPSIZE);
-      Tspacesrect[i] = Tspaces[i]->GetRect();
-      Tspaces[i]->SetToolTip(_("Characters spacing"));
-    }
-
-  justif->Move(wxPoint(Tjustrect[0].GetLeft(),bfontheadrect.GetBottom()
-                      - (justifrect.GetBottom() - justifrect.GetTop())));
-  justifrect = justif->GetRect();
-  space->Move(wxPoint(Tspacesrect[0].GetLeft(),justifrect.GetTop()));
-  spacerect = space->GetRect();
-
-
-
-#define YPOS(i) (2*VSPACE + Tcommentrect[4].GetBottom() + \
-      i*(VSPACE+Tspacesrect[0].GetBottom()-Tspacesrect[0].GetTop()))
-  //#define YPOS(i) TCOMMENTY(i+1)
-  //#define COL2START (4*HSPACE + Tspacesrect[0].GetRight())
-#define COL2START HSPACE
-
-  // 370x270 image
-
-#define XPOSLEFT (HSPACE + max(dyh1textrect.GetRight(), \
-        max(dyt1textrect.GetRight(), dxbegintextrect.GetRight() )))
-#define XPOSRIGHT (HSPACE + max(dyh2textrect.GetRight(), \
-        max(dyt2textrect.GetRight(), dxendtextrect.GetRight() )))
-
-#define DYH1COMMENT wxPoint(COL2START, YPOS(0)+2)
-#define DYH1TEXT wxPoint(XPOSLEFT, YPOS(0))
-#define DYH1UNIT  wxPoint(dyh1rect.GetRight() + HSPACE, YPOS(0))
-
-#define DYH2COMMENT wxPoint(3*HSPACE + dyh1mmrect.GetRight(), YPOS(0)+2)
-#define DYH2TEXT wxPoint(XPOSRIGHT, YPOS(0))
-#define DYH2UNIT wxPoint(dyh2rect.GetRight() + HSPACE, YPOS(0))
-
-#define DYT1COMMENT wxPoint(COL2START, YPOS(1)+2)
-#define DYT1TEXT wxPoint(XPOSLEFT, YPOS(1))
-#define DYT1UNIT wxPoint(dyt1rect.GetRight() + HSPACE, YPOS(1))
-
-#define DYT2COMMENT wxPoint(3*HSPACE + dyt1mmrect.GetRight(), YPOS(1)+2)
-#define DYT2TEXT wxPoint(XPOSRIGHT, YPOS(1))
-#define DYT2UNIT wxPoint(dyt2rect.GetRight() + HSPACE, YPOS(1))
-
-#define DXBEGINCOMMENT wxPoint(COL2START, YPOS(2)+2)
-#define DXBEGINTEXT wxPoint(XPOSLEFT, YPOS(2))
-#define DXBEGINUNIT wxPoint(dxbeginrect.GetRight() + HSPACE, YPOS(2))
-
-#define DXENDCOMMENT wxPoint(3*HSPACE + dxbeginmmrect.GetRight(), YPOS(2)+2)
-#define DXENDTEXT wxPoint(XPOSRIGHT, YPOS(2))
-#define DXENDUNIT wxPoint(dxendrect.GetRight() + HSPACE, YPOS(2))
-
-#define DIM wxSize(30,-1)
-
-  // Left part
-  wxStaticText* dyh1text = new wxStaticText(this,-1,_("Title spc. 
top"),DYH1COMMENT,wxSize(-1,-1));
-  wxRect dyh1textrect = dyh1text->GetRect();
-  wxStaticText* dyt1text = new wxStaticText(this,-1,_("Text spc. 
top"),DYT1COMMENT,wxSize(-1,-1));
-  wxRect dyt1textrect = dyt1text->GetRect();
-  wxStaticText* dxbegintext = new wxStaticText(this,-1,_("Text spc. 
left"),DXBEGINCOMMENT,wxSize(-1,-1));
-  wxRect dxbegintextrect = dxbegintext->GetRect();
-
-  dyh1 = new wxTextCtrl(this,-1,wxT("00"),DYH1TEXT,DIM);
-  wxRect dyh1rect = dyh1->GetRect();
-  wxStaticText* dyh1mm = new 
wxStaticText(this,-1,wxT("mm"),DYH1UNIT,wxSize(-1,-1));
-  wxRect dyh1mmrect = dyh1mm->GetRect();
-  dyt1 = new wxTextCtrl(this,-1,wxT("00"),DYT1TEXT,DIM);
-  wxRect dyt1rect = dyt1->GetRect();
-  wxStaticText* dyt1mm = new 
wxStaticText(this,-1,wxT("mm"),DYT1UNIT,wxSize(-1,-1));
-  wxRect dyt1mmrect = dyt1mm->GetRect();
-  dxbegin = new wxTextCtrl(this,-1,wxT("00"),DXBEGINTEXT,DIM);
-  wxRect dxbeginrect = dxbegin->GetRect();
-  wxStaticText* dxbeginmm = new 
wxStaticText(this,-1,wxT("mm"),DXBEGINUNIT,wxSize(-1,-1));
-  wxRect dxbeginmmrect = dxbeginmm->GetRect();
-
-  // Right part
-  wxStaticText* dyh2text = new wxStaticText(this,-1,_("Title spc. 
bot."),DYH2COMMENT,wxSize(-1,-1));
-  wxRect dyh2textrect = dyh2text->GetRect();
-  wxStaticText* dyt2text = new wxStaticText(this,-1,_("Text spc. 
bot."),DYT2COMMENT,wxSize(-1,-1));
-  wxRect dyt2textrect = dyt2text->GetRect();
-  wxStaticText* dxendtext = new wxStaticText(this,-1,_("Text spc. 
right"),DXENDCOMMENT,wxSize(-1,-1));
-  wxRect dxendtextrect = dxendtext->GetRect();
-
-  dyh2 = new wxTextCtrl(this,-1,wxT("00"),DYH2TEXT,DIM);
-  wxRect dyh2rect = dyh2->GetRect();
-  wxStaticText* dyh2mm = new 
wxStaticText(this,-1,wxT("mm"),DYH2UNIT,wxSize(-1,-1));
-  wxRect dyh2mmrect = dyh2mm->GetRect();
-  dyt2 = new wxTextCtrl(this,-1,wxT("00"),DYT2TEXT,DIM);
-  wxRect dyt2rect = dyt2->GetRect();
-  wxStaticText* dyt2mm = new 
wxStaticText(this,-1,wxT("mm"),DYT2UNIT,wxSize(-1,-1));
-  wxRect dyt2mmrect = dyt2mm->GetRect();
-  dxend = new wxTextCtrl(this,-1,wxT("00"),DXENDTEXT,DIM);
-  wxRect dxendrect = dxend->GetRect();
-  wxStaticText* dxendmm = new 
wxStaticText(this,-1,wxT("mm"),DXENDUNIT,wxSize(-1,-1));
-  wxRect dxendmmrect = dxendmm->GetRect();
-
-  // shutdown warnings
-  {int t = dyh2mmrect.GetTop() + dyt2mmrect.GetTop() + dxendmmrect.GetTop(); 
t++; }
-
-#define BHSPACE       1
-#define BPOS         (2*VSPACE + dxendrect.GetBottom())
-
-#define BPRINTERPOINT wxPoint(COL2START,BPOS)
-#define BPAGEPOINT    wxPoint(bprinterrect.GetRight() + BHSPACE,BPOS)
-#define BOKPOINT      wxPoint(bcancelrect.GetLeft() - (bokrect.GetRight() \
-                              - bokrect.GetLeft() + BHSPACE),BPOS)
-#define CANCELWIDTH   (bcancelrect.GetRight() - bcancelrect.GetLeft())
-#define BCANCELPOINT wxPoint(Tspacesrect[0].GetRight() - CANCELWIDTH,BPOS)
-  //#define BCANCELPOINT  wxPoint(dxendmmrect.GetRight() - CANCELWIDTH,BPOS)
-
-  bprinter = new wxButton(this,Button_Printer,_("Printer"),BPRINTERPOINT);
-  wxRect bprinterrect = bprinter->GetRect();
-  bprinter->SetToolTip(_("Configure the printer"));
-
-  bpage = new wxButton(this,Button_Page,_("Page"),BPAGEPOINT);
-  //  wxRect bpagerect = bpage->GetRect();
-  bpage->SetToolTip(_("Configure the dimensions of the page"));
-
-  bcancel = new wxButton(this,wxID_CANCEL);
-  wxRect bcancelrect = bcancel->GetRect();
-  bcancel->Move(BCANCELPOINT);
-  bcancelrect = bcancel->GetRect();
-  bcancel->SetToolTip(_("Cancel the last changes"));
-
-  bok = new wxButton(this,wxID_OK);
-  wxRect bokrect = bok->GetRect();
-  bok->Move(BOKPOINT);
-  bokrect = bok->GetRect();
-  bok->SetToolTip(_("Save the changes"));
-
-#define DLGWIDTH     (bcancelrect.GetRight() + HSPACE)
-#define DLGHEIGHT    (bokrect.GetBottom() + VSPACE)
-
-  SetClientSize(DLGWIDTH,DLGHEIGHT);
-  readconf();
-}
-
-ConfDimDlg::~ConfDimDlg()
-{
-}
-
-void
-ConfDimDlg::set(wxTextCtrl *t, long val)
-{
-  wxString str;
-  str << (int)val;
-  t->SetValue(str);
-}
-
-long
-ConfDimDlg::get(wxTextCtrl* t)
-{
-  wxString str;
-  str = t->GetValue();
-  return atoi(str.mb_str());
-}
-
-void
-ConfDimDlg::readconf()
-{
-  int i;
-  for(i=0; i<5; i++) {
-    Htitle[i]->SetValue(config.getNameH(i));
-    switch (config.getJustifH(i)) {
-    case LEFT: Hjust[i]->SetSelection(0); break;
-    case CENTER: Hjust[i]->SetSelection(1); break;
-    case RIGHT: Hjust[i]->SetSelection(2); break;
-    }
-    set(Hspaces[i],config.getSpacesH(i));
-  }
-  for(i=0; i<5; i++) {
-    wxString str;
-    str << (int)config.getDxText(i);
-    Tdim[i]->SetValue(str);
-    switch (config.getJustifT(i)) {
-    case LEFT: Tjust[i]->SetSelection(0); break;
-    case CENTER: Tjust[i]->SetSelection(1); break;
-    case RIGHT: Tjust[i]->SetSelection(2); break;
-    }
-    set(Tspaces[i],config.getSpacesT(i));
-  }
-  set(dyh1,config.getDyH1());
-  set(dyh2,config.getDyH2());
-  set(dyt1,config.getDyT1());
-  set(dyt2,config.getDyT2());
-  set(dxbegin,config.getDxBegin());
-  set(dxend,config.getDxEnd());
-
-  headfont = config.getFont(PRINTHFONT);
-  textfont = config.getFont(PRINTTFONT);
-}
-
-void
-ConfDimDlg::writeconf()
-{
-  int i;
-  for(i=0; i<5; i++) {
-    config.setNameH(i,Htitle[i]->GetValue());
-    switch (Hjust[i]->GetSelection()) {
-    case -1: break;
-    case 0: config.setJustifH(i,LEFT); break;
-    case 1: config.setJustifH(i,CENTER); break;
-    case 2: config.setJustifH(i,RIGHT); break;
-    }
-    config.setSpacesH(i,get(Hspaces[i]));
-  }
-  for(i=0; i<5; i++) {
-    wxString str;
-    str = Tdim[i]->GetValue();
-    config.setDxText(i, atoi(str.mb_str()));
-    switch (Tjust[i]->GetSelection()) {
-    case -1: break;
-    case 0: config.setJustifT(i,LEFT); break;
-    case 1: config.setJustifT(i,CENTER); break;
-    case 2: config.setJustifT(i,RIGHT); break;
-    }
-    config.setSpacesT(i,get(Tspaces[i]));
-  }
-  config.setDyH1(get(dyh1));
-  config.setDyH2(get(dyh2));
-  config.setDyT1(get(dyt1));
-  config.setDyT2(get(dyt2));
-  config.setDxBegin(get(dxbegin));
-  config.setDxEnd(get(dxend));
-
-  config.setFont(PRINTHFONT,headfont);
-  config.setFont(PRINTTFONT,textfont);
-}
-
-void
-ConfDimDlg::OnCloseWindow(wxCloseEvent __UNUSED__ &event)
-{
-  if (IsModal() == TRUE)
-    EndModal(1);
-  else
-    this->Destroy();
-}
-
-void
-ConfDimDlg::OnButtonOk(wxCommandEvent __UNUSED__ &event)
-{
-  writeconf();
-  if (IsModal() == TRUE)
-    EndModal(1);
-  else
-    this->Destroy();
-}
-
-void
-ConfDimDlg::OnButtonCancel(wxCommandEvent __UNUSED__ &event)
-{
-  if (IsModal() == TRUE)
-    EndModal(1);
-  else
-    this->Destroy();
-}
-
-void
-ConfDimDlg::OnButtonSave(wxCommandEvent __UNUSED__ &event)
-{
-  writeconf();
-}
-
-void
-ConfDimDlg::OnConfPage(wxCommandEvent __UNUSED__ &event)
-{
-  //#if defined(__WXGTK__)
-  pagesetupdata = printdata;
-  wxPageSetupDialog pageSetupDialog(this, &pagesetupdata);
-  pageSetupDialog.ShowModal();
-  printdata = pageSetupDialog.GetPageSetupData().GetPrintData();
-  pagesetupdata = pageSetupDialog.GetPageSetupData();
-//  #else
-//    wxPageSetupDialog pageSetupDialog(this, & pagesetupdata);
-//    pageSetupDialog.ShowModal();
-//    pagesetupdata = pageSetupDialog.GetPageSetupData();
-//  #endif
-}
-
-void
-ConfDimDlg::OnConfPrinter(wxCommandEvent __UNUSED__ &event)
-{
-  //#if defined(__WXGTK__)
-  wxPrintDialogData printDialogData(printdata);
-  wxPrintDialog printerDialog(this, & printDialogData);
-  printerDialog.GetPrintDialogData().SetSetupDialog(TRUE);
-  printerDialog.ShowModal();
-  printdata = printerDialog.GetPrintDialogData().GetPrintData();
-//  #else
-//    wxPrintDialog printerDialog(this, & printdata);
-//    printerDialog.GetPrintData().SetSetupDialog(TRUE);
-//    printerDialog.ShowModal();
-//    printdata = printerDialog.GetPrintData();
-//  #endif
-}
-
-void
-ConfDimDlg::OnConfFontHead(wxCommandEvent __UNUSED__ &event)
-{
-  headfont = config.ChooseFont((wxFrame*)this,headfont);
-}
-
-void
-ConfDimDlg::OnConfFontText(wxCommandEvent __UNUSED__ &event)
-{
-  textfont = config.ChooseFont((wxFrame*)this,textfont);
-}
-
-wxPrintData
-ConfDimDlg::getPrintData()
-{
-  return printdata;
-}
-
-wxPageSetupData
-ConfDimDlg::getPageSetupData()
-{
-  return pagesetupdata;
-}

Index: wxwin/confdimdlg.h
===================================================================
RCS file: wxwin/confdimdlg.h
diff -N wxwin/confdimdlg.h
--- wxwin/confdimdlg.h  4 Nov 2005 20:00:06 -0000       1.3
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,84 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/* address@hidden                                                 */
-/*                                                                           */
-/* This program is free software; you can redistribute it and/or modify      */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* This program is distributed in the hope that it will be useful,           */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-#ifndef _CONFDIMDLG_H
-#define _CONFDIMDLG_H
-
-#include "wx/textctrl.h"
-#include "wx/stattext.h"
-#include "wx/choice.h"
-#include "wx/button.h"
-#include "wx/dialog.h"
-
-class ConfDimDlg : public wxDialog
-{
-private:
-  ConfigDB config;
-  wxPrintData printdata;
-  wxPageSetupData pagesetupdata;
-
-  wxFont headfont;
-  wxFont textfont;
-
-  wxButton *bok;
-  wxButton *bcancel;
-  wxButton *bprinter;
-  wxButton *bpage;
-  wxButton *bfontheader;
-  wxButton *bsave;
-  wxButton *bfonttext;
-
-// Heading
-  wxTextCtrl*   Htitle[5];
-  wxChoice*     Hjust[5];
-  wxTextCtrl*   Hspaces[5];
-// Text
-  wxTextCtrl*   Tdim[5];
-  wxChoice*     Tjust[5];
-  wxTextCtrl*   Tspaces[5];
-// Dim
-  wxTextCtrl*   dxbegin;
-  wxTextCtrl*   dxend;
-  wxTextCtrl*   dyt1;
-  wxTextCtrl*   dyt2;
-  wxTextCtrl*   dyh1;
-  wxTextCtrl*   dyh2;
-
-  void readconf();
-  void writeconf();
-  void set(wxTextCtrl*,long);
-  long get(wxTextCtrl*);
-
-public:
-  ConfDimDlg(wxWindow* parent, wxPrintData, wxPageSetupData);
-  ~ConfDimDlg();
-  void OnButtonOk(wxCommandEvent& event);
-  void OnButtonCancel(wxCommandEvent& event);
-  void OnButtonSave(wxCommandEvent& event);
-  void OnCloseWindow  (wxCloseEvent& event);
-  void OnConfFontHead(wxCommandEvent& event);
-  void OnConfFontText(wxCommandEvent& event);
-  void OnConfPage(wxCommandEvent& event);
-  void OnConfPrinter(wxCommandEvent& event);
-
-  wxPrintData getPrintData();
-  wxPageSetupData getPageSetupData();
-
-  DECLARE_EVENT_TABLE()
-};
-#endif

Index: wxwin/configdb.cc
===================================================================
RCS file: wxwin/configdb.cc
diff -N wxwin/configdb.cc
--- wxwin/configdb.cc   8 Jan 2008 13:52:43 -0000       1.9
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,823 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   configdb.cc
- *  \brief  Access to Eliot persistant configuration data
- *  \author Antoine Fraboulet
- *  \date   2002
- */
-
-#include <iostream>
-#include "wx/wx.h"
-#include "ewx.h"
-#include "configdb.h"
-#include "wx/colordlg.h"
-#include "wx/fontdlg.h"
-#include "wx/settings.h"
-
-using namespace std;
-
-#define DIM 200
-#define PREFIX  "/"
-
-#define DICPATH  wxT(PREFIX"Fichiers/Dictionnaire_Chemin")
-#define DICNAME  wxT(PREFIX"Fichiers/Dictionnaire_Nom")
-#define TILEPATH wxT(PREFIX"Fichiers/Lettres_Chemin")
-#define TILENAME wxT(PREFIX"Fichiers/Lettres_Nom")
-
-///////////////////////////
-//
-// Print
-//
-///////////////////////////
-#define ORIENT  wxT(PREFIX"Print/Page_Orientation")
-#define MARGINX wxT(PREFIX"Print/Page_MargeGauche")
-#define MARGINY wxT(PREFIX"Print/Page_MargeHaute")
-
-#define HNAME   wxT(PREFIX"Print/Header/Nom/")
-#define HDIM    wxT(PREFIX"Print/Header/Dimensions/")
-#define HJUST   wxT(PREFIX"Print/Header/Justification/")
-#define HSPACE  wxT(PREFIX"Print/Header/Espacement/")
-
-#define TDIM    wxT(PREFIX"Print/Text/Dimensions/")
-#define TJUST   wxT(PREFIX"Print/Text/Justification/")
-#define TSPACE  wxT(PREFIX"Print/Text/Espacement/")
-
-#define MISC    wxT(PREFIX"Divers/")
-
-ConfigDB::ConfigDB()
-{
-   pConfig = wxConfigBase::Get();
-}
-
-
-////////////////////////////////////////////////////////
-//
-// Overload of the Read function
-// bool, long, wxFont, wxColour, wxString
-//
-// bool HasEntry(wxString&)
-// bool Exists(wxString&)
-//
-////////////////////////////////////////////////////////
-
-bool ConfigDB::Read(const wxString& key, bool def)
-{
-  bool res;
-  if (pConfig->Exists(key))
-    pConfig->Read(key,&res,def);
-  else
-    res = def;
-  return res;
-}
-
-long ConfigDB::Read(const wxString& key, long def)
-{
-  long res;
-  if (pConfig->Exists(key))
-    pConfig->Read(key,&res,def);
-  else
-    res = def;
-  return res;
-}
-
-#define FPOINTSIZE wxT(".PointSize")
-#define FFAMILY    wxT(".Family")
-#define FSTYLE     wxT(".Style")
-#define FWEIGHT    wxT(".Weight")
-#define FUNDERLINE wxT(".Underline")
-#define FFACENAME  wxT(".FaceName")
-#define FENCODING  wxT(".Encoding")
-
-wxFont ConfigDB::Read(const wxString& key, wxFont def)
-{
-  return wxFont(Read(key + FPOINTSIZE,(long)def.GetPointSize()),
-               Read(key + FFAMILY   ,(long)def.GetFamily()),
-               Read(key + FSTYLE    ,(long)def.GetStyle()),
-               Read(key + FWEIGHT   ,(long)def.GetWeight()),
-               Read(key + FUNDERLINE,(long)def.GetUnderlined()),
-               ReadStr(key + FFACENAME ,def.GetFaceName())
-               //,Read(key + FENCODING ,def.GetDefaultEncoding())
-               );
-}
-
-void ConfigDB::Write(const wxString& key, wxFont font)
-{
-  pConfig->Write(key + FPOINTSIZE,(long)font.GetPointSize());
-  pConfig->Write(key + FFAMILY   ,(long)font.GetFamily());
-  pConfig->Write(key + FSTYLE    ,(long)font.GetStyle());
-  pConfig->Write(key + FWEIGHT   ,(long)font.GetWeight());
-  pConfig->Write(key + FUNDERLINE,(long)font.GetUnderlined());
-  pConfig->Write(key + FFACENAME ,font.GetFaceName());
-  //pConfig->Write(key + FENCODING ,font.GetDefaultEncoding());
-}
-
-#define CR wxT(".R")
-#define CG wxT(".G")
-#define CB wxT(".B")
-
-wxColour ConfigDB::Read(const wxString& key, wxColour def)
-{
-    return wxColour(Read(key + CR,(long)def.Red()),
-                    Read(key + CG,(long)def.Green()),
-                    Read(key + CB,(long)def.Blue()));
-}
-
-
-void ConfigDB::Write(const wxString& key, wxColour colour)
-{
-    pConfig->Write(key + CR,(long)colour.Red());
-    pConfig->Write(key + CG, (long)colour.Green());
-    pConfig->Write(key + CB, (long)colour.Blue());
-}
-
-wxString ConfigDB::ReadStr(const wxString& key, wxString def)
-{
-  wxString res;
-
-  /*
-  wxString msg;
-  msg << "want to read -" << key << "-";
-  wxMessageBox(msg, "Eliot configDB", wxICON_INFORMATION | wxOK);
-  cout << msg << "\n";
-  */
-
-  if (pConfig->Read(key,&res) == FALSE)
-    res = def;
-  return res;
-}
-
-////////////////////////////////////////////////////////
-//
-// Overload of the Write function
-// bool, long, wxFont, wxColour, wxString
-//
-////////////////////////////////////////////////////////
-
-void ConfigDB::Write(const wxString& key, bool val)
-{
-  pConfig->Write(key,val);
-}
-
-void ConfigDB::Write(const wxString& key, long val)
-{
-  pConfig->Write(key,val);
-}
-
-
-void ConfigDB::Write(const wxString& key, wxString str)
-{
-  pConfig->Write(key,str);
-}
-
-////////////////////////////////////////////////////////
-//
-// Dictionary
-//
-////////////////////////////////////////////////////////
-
-wxString ConfigDB::getDicPath()
-{
-  return ReadStr(DICPATH,wxT("//"));
-}
-
-wxString ConfigDB::getDicName()
-{
-  return ReadStr(DICNAME,_("No dictionary"));
-}
-
-wxString ConfigDB::getTilePath()
-{
-  return ReadStr(TILEPATH,wxT("//"));
-}
-
-wxString ConfigDB::getTileName()
-{
-  return ReadStr(TILENAME,wxT(""));
-}
-
-void ConfigDB::setDicPath(wxString dpath, wxString dname)
-{
-  Write(DICPATH,dpath);
-  Write(DICNAME,dname);
-}
-
-void ConfigDB::setTilePath(wxString dpath, wxString dname)
-{
-  Write(TILEPATH,dpath);
-  Write(TILENAME,dname);
-}
-
-////////////////////////////////////////////////////////
-//
-// Text length
-//
-////////////////////////////////////////////////////////
-
-long ConfigDB::getDxBegin()
-{
-  return Read(TDIM"debut",1L);
-}
-
-void ConfigDB::setDxBegin(long d)
-{
-  Write(TDIM"debut",d);
-}
-
-long ConfigDB::getDxText(int i)
-{
-  long int res;
-  switch (i)
-    {
-    case 0: res = Read(TDIM"texte/1",10L); break;
-    case 1: res = Read(TDIM"texte/2",30L); break;
-    case 2: res = Read(TDIM"texte/3",30L); break;
-    case 3: res = Read(TDIM"texte/4",10L); break;
-    case 4: res = Read(TDIM"texte/5",10L); break;
-    default:res = 0; break;
-    }
-  return res;
-}
-
-void ConfigDB::setDxText(int i, long v)
-{
-  wxString key;
-  key << TDIM << wxT("texte/") << (i+1);
-  if (i<5)
-    Write(key,v);
-}
-
-long ConfigDB::getDxEnd()
-{
-  return Read(TDIM"fin",1L);
-}
-
-void ConfigDB::setDxEnd(long d)
-{
-  Write(TDIM"fin",d);
-}
-
-long ConfigDB::getDyT1()
-{
-  return Read(TDIM"haut",1L);
-}
-
-void ConfigDB::setDyT1(long d)
-{
-  Write(TDIM"haut",d);
-}
-
-long ConfigDB::getDyT2()
-{
-  return Read(TDIM"bas",1L);
-}
-
-void ConfigDB::setDyT2(long d)
-{
-  Write(TDIM"bas",d);
-}
-
-long ConfigDB::getDyH1()
-{
-  return Read(HDIM"haut",1L);
-}
-
-void ConfigDB::setDyH1(long d)
-{
-  Write(HDIM"haut",d);
-}
-
-long ConfigDB::getDyH2()
-{
-  return Read(HDIM"bas",1L);
-}
-
-void ConfigDB::setDyH2(long d)
-{
-  Write(HDIM"bas",d);
-}
-
-wxString ConfigDB::getNameH(int i)
-{
-  wxString res;
-  switch (i)
-    {
-    case 0: res = ReadStr(wxString(HNAME) + wxT("1"), _("Nb")); break;
-    case 1: res = ReadStr(wxString(HNAME) + wxT("2"), _("Rack")); break;
-    case 2: res = ReadStr(wxString(HNAME) + wxT("3"), _("Solution")); break;
-    case 3: res = ReadStr(wxString(HNAME) + wxT("4"), _("Pos")); break;
-    case 4: res = ReadStr(wxString(HNAME) + wxT("5"), _("Pts")); break;
-    default: res = wxT(""); break;
-  }
-  return res;
-}
-
-void ConfigDB::setNameH(int i, wxString str)
-{
-  wxString key;
-  key << HNAME << (i+1);
-  Write(key, str);
-}
-
-////////////////////////////////////////////////////////
-//
-// Text justification
-//
-////////////////////////////////////////////////////////
-
-enum Justif ConfigDB::StrToJust(const wxString& str)
-{
-  enum Justif res;
-  if (str.CmpNoCase(wxT("gauche")) == 0)
-    res = LEFT;
-  else if (str.CmpNoCase(wxT("centre")) == 0)
-    res = CENTER;
-  else if (str.CmpNoCase(wxT("droite")) == 0)
-    res = RIGHT;
-  else
-    res = LEFT;
-  return res;
-}
-
-wxString ConfigDB::JustToStr(enum Justif j)
-{
-  wxString res;
-  switch (j) {
-  case LEFT:   res = wxT("gauche"); break;
-  case CENTER: res = wxT("centre"); break;
-  case RIGHT:  res = wxT("droite"); break;
-  }
-  return res;
-}
-
-enum Justif ConfigDB::getJustif(const wxString& key)
-{
-  return StrToJust(ReadStr(key,wxT("gauche")));
-}
-
-void ConfigDB::setJustif(const wxString& key, enum Justif j)
-{
-  Write(key,JustToStr(j));
-}
-
-enum Justif ConfigDB::getJustifH(int i)
-{
-  wxString key;
-  key << HJUST << (i+1);
-  return getJustif(key);
-}
-
-enum Justif ConfigDB::getJustifT(int i)
-{
-  wxString key;
-  key << TJUST << (i+1);
-  return getJustif(key);
-}
-
-void ConfigDB::setJustifH(int i, enum Justif j)
-{
-  wxString key;
-  key << HJUST << (i+1);
-  setJustif(key,j);
-}
-
-void ConfigDB::setJustifT(int i, enum Justif j)
-{
-  wxString key;
-  key << TJUST << (i+1);
-  setJustif(key,j);
-}
-
-////////////////////////////////////////////////////////
-//
-// Text Spaces
-//
-////////////////////////////////////////////////////////
-
-int ConfigDB::getSpacesH(int i)
-{
-  wxString key;
-  key << HSPACE << (i+1);
-  return Read(key,0L);
-}
-
-int ConfigDB::getSpacesT(int i)
-{
-  wxString key;
-  key << TSPACE << (i+1);
-  return Read(key,0L);
-}
-
-void ConfigDB::setSpacesH(int i, int spaces)
-{
-  wxString key;
-  key << HSPACE << (i+1);
-  Write(key,(long)spaces);
-}
-
-void ConfigDB::setSpacesT(int i, int spaces)
-{
-  wxString key;
-  key << TSPACE << (i+1);
-  Write(key,(long)spaces);
-}
-
-////////////////////////////////////////////////////////
-//
-// Fonts
-//
-////////////////////////////////////////////////////////
-
-wxFont ConfigDB::ChooseFont(wxFrame* frame,wxFont initfont)
-{
-  wxFont retfont = initfont;
-  wxFontData data;
-  data.SetInitialFont(initfont);
-  wxFontDialog *dialog = new wxFontDialog(frame, &data);
-  if (dialog->ShowModal() == wxID_OK) {
-    wxFontData retdata = dialog->GetFontData();
-    retfont = retdata.GetChosenFont();
-  }
-  dialog->Close();
-  return retfont;
-}
-
-#define FHEADERDEF wxFont(12, wxSWISS, wxNORMAL, wxBOLD)
-#define FTEXTDEF wxFont(10, wxSWISS, wxNORMAL, wxNORMAL)
-
-void ConfigDB::setFontDefault()
-{
-  wxFont fsys;
-
-#ifdef WXWIN24
-  fsys = wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT);
-#else
-  fsys = wxSystemSettingsNative::GetFont(wxSYS_DEFAULT_GUI_FONT);
-#endif
-
-  setFont(BOARDFONT ,fsys);
-  setFont(LISTFONT  ,fsys);
-  setFont(PRINTHFONT,FHEADERDEF);
-  setFont(PRINTTFONT,FTEXTDEF);
-}
-
-void ConfigDB::setFont(wxString key, wxFont font)
-{
-  Write(key,font);
-}
-
-wxFont ConfigDB::getFont(wxString key)
-{
-  return Read(key,wxFont(12,wxMODERN,wxNORMAL,wxNORMAL));
-}
-
-////////////////////////////////////////////////////////
-//
-// Colours
-//
-////////////////////////////////////////////////////////
-
-wxColour ConfigDB::ChooseColour(wxFrame* frame,wxColour initcolour)
-{
-     wxColour retcolour = initcolour;
-     wxColourData data;
-     data.SetColour(initcolour);
-     wxColourDialog *dialog = new wxColourDialog(frame, &data);
-     if (dialog->ShowModal() == wxID_OK) {
-         wxColourData retdata = dialog->GetColourData();
-         retcolour = retdata.GetColour();
-     }
-     dialog->Close();
-     return retcolour;
-}
-
-#define LINESDEF   wxColour(101,101,101)
-#define WX2DEF     wxColour(255,147,196)
-#define WX3DEF     wxColour(240, 80, 94)
-#define LX2DEF     wxColour( 34,189,240)
-#define LX3DEF     wxColour( 29,104,240)
-#define BACKDEF    wxColour(255,255,255)
-#define LETTDEF    wxColour(  0,  0,  0)
-#define TSTLETTDEF wxColour(  0,  0,  0)
-#define TILEDEF    wxColour(0xff,0xeb,0xcd)
-//#define TSTTILEDEF wxColour(0xff,0xe4,0xb5)
-//#define TSTTILEDEF wxColour(0x46,0x82,0xb4)
-#define TSTTILEDEF wxColour(0xbd,0xb7,0x7b)
-
-void ConfigDB::setColourDefault()
-{
-  setColour(wxString(BCOLOURLINES),LINESDEF);
-  setColour(wxString(BCOLOURWX2),WX2DEF);
-  setColour(wxString(BCOLOURWX3),WX3DEF);
-  setColour(wxString(BCOLOURLX2),LX2DEF);
-  setColour(wxString(BCOLOURLX3),LX3DEF);
-  setColour(wxString(BCOLOURBACKGROUND),BACKDEF);
-  setColour(wxString(BCOLOURLETTERS),LETTDEF);
-  setColour(wxString(BTILEBACKGROUND),TILEDEF);
-  setColour(wxString(BTSTTILEBACKGROUND),TSTTILEDEF);
-}
-
-void
-ConfigDB::setColour(wxString key, wxColour col)
-{
-  Write(key,col);
-}
-
-wxColour
-ConfigDB::getColour(wxString key)
-{
-  return Read(key,wxColour(0,0,0));
-}
-
-////////////////////////////////////////////////////////
-//
-// PRINTING
-//
-////////////////////////////////////////////////////////
-
-long ConfigDB::getMarginX()
-{
-  return Read(MARGINX,10L);
-}
-
-long ConfigDB::getMarginY()
-{
-  return Read(MARGINY,10L);
-}
-
-void ConfigDB::setMarginX(long x)
-{
-  Write(MARGINX,x);
-}
-
-void ConfigDB::setMarginY(long y)
-{
-  Write(MARGINY,y);
-}
-
-long ConfigDB::getOrientation()
-{
-  long res;
-  wxString str;
-
-  str = ReadStr(ORIENT,wxT("paysage"));
-  if (str.CmpNoCase(wxT("portrait")) == 0)
-    res = wxPORTRAIT;
-  else if (str.CmpNoCase(wxT("paysage")) == 0)
-    res = wxLANDSCAPE;
-  else
-    res = wxPORTRAIT;
-  return res;
-}
-
-void ConfigDB::setOrientation(long o)
-{
-  switch (o)
-    {
-    case wxLANDSCAPE: Write(ORIENT,wxT("paysage")); break;
-    case wxPORTRAIT: // fall through
-    default: Write(ORIENT,wxT("portrait")); break;
-    }
-}
-
-wxPrintData ConfigDB::getPrintData()
-{
-  wxPrintData pd;
-  pd.SetOrientation(getOrientation());
-  return pd;
-}
-
-void ConfigDB::setPrintData(wxPrintData pd)
-{
-  setOrientation(pd.GetOrientation());
-}
-
-wxPageSetupData ConfigDB::getPageSetupData()
-{
-  wxPageSetupData pd;
-  wxPoint margin(getMarginX(),getMarginY());
-  pd.SetMarginTopLeft(margin);
-  return pd;
-}
-
-void ConfigDB::setPageSetupData(wxPageSetupData pd)
-{
-  setMarginX(pd.GetMarginTopLeft().x);
-  setMarginY(pd.GetMarginTopLeft().y);
-}
-
-float ConfigDB::getPrintLineScale()
-{
-  return 0.2;
-}
-
-void ConfigDB::setPrintLineScale(float)
-{
-}
-
-////////////////////////////////////////////////////////
-//
-// Frame dimensions
-//
-////////////////////////////////////////////////////////
-
-#define PX wxT("/x")
-#define PY wxT("/y")
-#define SW wxT("/w")
-#define SH wxT("/h")
-#define SHOW wxT("/show")
-
-#define CONFIG_DEFAULT_X 150L
-#define CONFIG_DEFAULT_Y 150L
-#define CONFIG_DEFAULT_W 150L
-#define CONFIG_DEFAULT_H 200L
-
-wxPoint ConfigDB::getFramePos(wxString frame)
-{
-  wxPoint pos;
-  wxString keyX(frame + PX);
-  wxString keyY(frame + PY);
-
-  pos.x = Read(keyX,CONFIG_DEFAULT_X);
-  pos.x = pos.x < 0 ? 0 : pos.x;
-
-  pos.y = Read(keyY,CONFIG_DEFAULT_Y);
-  pos.y = pos.y < 0 ? 0 : pos.y;
-#ifdef FRAME_TRACE
-  cerr << "configdb::getFramePos  " << frame
-       << " \tx:" << pos.x << " y:" << pos.y << endl;
-#endif
-  return pos;
-}
-
-void ConfigDB::setFramePos(wxString frame, wxPoint pos)
-{
-#ifdef FRAME_TRACE
-  cerr << "configdb::setFramePos  " << frame
-       << " \tx:" << pos.x << " y:" << pos.y << endl;
-#endif
-  wxString keyX(frame + PX);
-  wxString keyY(frame + PY);
-  Write(keyX,(long) (pos.x < 0 ? 0 : pos.x));
-  Write(keyY,(long) (pos.y < 0 ? 0 : pos.y));
-}
-
-wxSize ConfigDB::getFrameSize(wxString frame)
-{
-  wxSize size;
-  wxString keyX(frame + SW);
-  wxString keyY(frame + SH);
-
-  size.x = Read(keyX,CONFIG_DEFAULT_W);
-  size.x = size.x < 0 ? 0 : size.x;
-
-  size.y = Read(keyY,CONFIG_DEFAULT_H);
-  size.y = size.y < 0 ? 0 : size.y;
-#ifdef FRAME_TRACE
-  cerr << "configdb::getFrameSize " << frame
-       << " \tw:" << size.x << " h:" << size.y << endl;
-#endif
-  return size;
-}
-
-void ConfigDB::setFrameSize(wxString frame, wxSize size)
-{
-#ifdef FRAME_TRACE
-  cerr << "configdb::setFrameSize " << frame
-       << " \tw:" << size.x << " h:" << size.y << endl;
-#endif
-  wxString keyX(frame + SW);
-  wxString keyY(frame + SH);
-  Write(keyX,(long) (size.x < 0 ? 0 : size.x));
-  Write(keyY,(long) (size.y < 0 ? 0 : size.y));
-}
-
-int ConfigDB::getFrameShow(wxString frame)
-{
-  wxString key(frame + SHOW);
-  return Read(key,0L);
-}
-
-void ConfigDB::setFrameShow(wxString frame, int s)
-{
-  wxString key(frame + SHOW);
-  Write(key,(long)s);
-}
-
-void ConfigDB::setFrameDefault()
-{
-  setFrameSize(FRAMEBOARD  ,wxSize(450,450));
-  setFrameSize(FRAMEVERIF  ,wxSize(150,50));
-  setFrameSize(FRAMESEARCH ,wxSize(350,300));
-  setFrameSize(FRAMEPLUS1  ,wxSize(CONFIG_DEFAULT_W,CONFIG_DEFAULT_H));
-  setFrameSize(FRAMERACC   ,wxSize(CONFIG_DEFAULT_W,CONFIG_DEFAULT_H));
-  setFrameSize(FRAMEBENJ   ,wxSize(CONFIG_DEFAULT_W,CONFIG_DEFAULT_H));
-  setFrameSize(FRAMEBAG    ,wxSize(150,40));
-  setFrameSize(wxT(APPNAME),wxSize(410,200));
-
-  setFramePos(FRAMEBOARD  ,wxPoint(58,76));
-  setFramePos(FRAMEVERIF  ,wxPoint(CONFIG_DEFAULT_X,CONFIG_DEFAULT_Y));
-  setFramePos(FRAMESEARCH ,wxPoint(CONFIG_DEFAULT_X,CONFIG_DEFAULT_Y));
-  setFramePos(FRAMEPLUS1  ,wxPoint(490,300));
-  setFramePos(FRAMERACC   ,wxPoint(CONFIG_DEFAULT_X,CONFIG_DEFAULT_Y));
-  setFramePos(FRAMEBENJ   ,wxPoint(CONFIG_DEFAULT_X,CONFIG_DEFAULT_Y));
-  setFramePos(FRAMEBAG    ,wxPoint(CONFIG_DEFAULT_X,CONFIG_DEFAULT_Y));
-  setFramePos(wxT(APPNAME),wxPoint(500,9));
-
-  setFrameShow(FRAMEBOARD ,1L);
-  setFrameShow(FRAMEVERIF ,0L);
-  setFrameShow(FRAMESEARCH,0L);
-  setFrameShow(FRAMEPLUS1 ,1L);
-  setFrameShow(FRAMERACC  ,0L);
-  setFrameShow(FRAMEBENJ  ,0L);
-  setFrameShow(FRAMEBAG   ,0L);
-#ifdef FRAME_TRACE
-  cerr << endl;
-#endif
-}
-
-////////////////////////////////////////////////////////
-//
-// Game Options
-//
-////////////////////////////////////////////////////////
-
-void ConfigDB::setJokerPlus1(bool val)
-{
-  wxString key;
-  key = wxString(MISC) + wxT("JokersDans7plus1");
-  Write(key,val);
-}
-
-bool ConfigDB::getJokerPlus1()
-{
-  wxString key;
-  key = wxString(MISC) + wxT("JokersDans7plus1");
-  return Read(key,(bool)FALSE);
-}
-
-void ConfigDB::setRackChecking(bool val)
-{
-  wxString key;
-  key = wxString(MISC) + wxT("VerificationTirages");
-  Write(key,val);
-}
-
-bool ConfigDB::getRackChecking()
-{
-  wxString key;
-  key = wxString(MISC) + wxT("VerificationTirages");
-  return Read(key,(bool)FALSE);
-}
-
-void ConfigDB::setDrawTile(bool val)
-{
-  wxString key;
-  key = wxString(BDRAWBACKGROUND);
-  Write(key,val);
-}
-
-bool ConfigDB::getDrawTile()
-{
-  wxString key;
-  key = wxString(BDRAWBACKGROUND);
-  return Read(key,(bool)TRUE);
-}
-
-////////////////////////////////////////////////////////
-//
-//
-//
-////////////////////////////////////////////////////////
-
-#define INIT wxT("/Initialized")
-
-void
-ConfigDB::setFirstDefault()
-{
-  if (Read(wxString(INIT),0L))
-    return;
-
-  setFontDefault();
-  setColourDefault();
-  setFrameDefault();
-
-  Write(wxString(INIT),1L);
-}

Index: wxwin/configdb.h
===================================================================
RCS file: wxwin/configdb.h
diff -N wxwin/configdb.h
--- wxwin/configdb.h    26 Dec 2005 15:02:26 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,192 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   configdb.h
- *  \brief  Access to Eliot persistant configuration data
- *  \author Antoine Fraboulet
- *  \date   2002
- */
-
-#ifndef _CONFIGDB_H
-#define _CONFIGDB_H
-
-#include "wx/dc.h"
-#include "wx/font.h"
-#include "wx/colour.h"
-#include "wx/frame.h"
-#include "wx/cmndata.h"
-#include "wx/config.h"
-
-#define BUTTON_FONT wxFont(8,wxDEFAULT,wxNORMAL,wxNORMAL)
-
-#define BOARD              "Board"
-#define BCOLOURLINES       wxT(BOARD"/Lines")
-#define BCOLOURWX2         wxT(BOARD"/Wx2")
-#define BCOLOURWX3         wxT(BOARD"/Wx3")
-#define BCOLOURLX2         wxT(BOARD"/Lx2")
-#define BCOLOURLX3         wxT(BOARD"/Lx3")
-#define BCOLOURBACKGROUND  wxT(BOARD"/Background")
-#define BCOLOURLETTERS     wxT(BOARD"/Letters")
-#define BCOLOURTSTLETTERS  wxT(BOARD"/TstLetters")
-#define BOARDFONT          wxT(BOARD"/Font")
-
-#define BDRAWBACKGROUND    wxT(BOARD"/DrawTile")
-#define BTILEBACKGROUND    wxT(BOARD"/TileBG")
-#define BTSTTILEBACKGROUND wxT(BOARD"/TstTileBG")
-
-#define LIST               "List"
-#define LISTFONT           wxT(LIST"/Font")
-
-#define PRINT             "Print"
-#define PHEADER           PRINT"/Header"
-#define PRINTHFONT        wxT(PHEADER"/Font")
-#define PTEXT             PRINT"/Text"
-#define PRINTTFONT        wxT(PTEXT"/Font")
-
-#define FRAME             "Frames/"
-#define FRAMEBOARD        wxT(FRAME"Board")
-#define FRAMEVERIF        wxT(FRAME"Verif")
-#define FRAMESEARCH       wxT(FRAME"Search")
-#define FRAMEPLUS1        wxT(FRAME"Plus1")
-#define FRAMERACC         wxT(FRAME"Racc")
-#define FRAMEBENJ         wxT(FRAME"Benj")
-#define FRAMEBAG          wxT(FRAME"Bag")
-#define FRAMEGAME         wxT(FRAME"Game")
-#define FRAMERESULT       wxT(FRAME"Result")
-
-enum Justif { LEFT, CENTER, RIGHT };
-
-class ConfigDB
-{
-private:
-  wxConfigBase* pConfig;
-  enum Justif StrToJust(const wxString&);
-  wxString JustToStr(enum Justif);
-
-  enum Justif getJustif(const wxString&);
-  void setJustif(const wxString&, enum Justif);
-
-  bool Read(const wxString&, bool);
-  long Read(const wxString&, long);
-  wxFont Read(const wxString&, wxFont);
-  wxColour Read(const wxString&, wxColour);
-  wxString ReadStr(const wxString&, wxString);
-
-  void Write(const wxString&, bool);
-  void Write(const wxString&, long);
-  void Write(const wxString&, wxFont);
-  void Write(const wxString&, wxColour);
-  void Write(const wxString&, wxString);
-
-public:
-  ConfigDB();
-
-  wxFont ChooseFont(wxFrame*,wxFont);
-  wxColour ChooseColour(wxFrame*,wxColour);
-
-  // Dictionary
-  wxString getDicPath();
-  wxString getDicName();
-  wxString getTilePath();
-  wxString getTileName();
-  void setDicPath(wxString name,wxString name);
-  void setTilePath(wxString path,wxString name);
-
-  // page setup
-  long getOrientation();
-  void setOrientation(long);
-
-  // game drawing
-  long getDxBegin();
-  long getDxText(int);
-  long getDxEnd();
-  void setDxBegin(long);
-  void setDxText(int,long);
-  void setDxEnd(long);
-
-  long getDyH1();
-  long getDyH2();
-  long getDyT1();
-  long getDyT2();
-  void setDyH1(long);
-  void setDyH2(long);
-  void setDyT1(long);
-  void setDyT2(long);
-
-  int  getSpacesH(int);
-  int  getSpacesT(int);
-  void setSpacesH(int,int);
-  void setSpacesT(int,int);
-
-  enum Justif getJustifH(int);
-  enum Justif getJustifT(int);
-  void setJustifH(int, enum Justif);
-  void setJustifT(int, enum Justif);
-
-  wxString getNameH(int);
-  void setNameH(int, wxString);
-
-  long getMarginX();
-  long getMarginY();
-  void setMarginX(long);
-  void setMarginY(long);
-
-  wxFont getFont(wxString);
-  void setFont(wxString,wxFont);
-  void setFontDefault();
-
-  wxColour getColour(wxString);
-  void setColour(wxString,wxColour);
-  void setColourDefault();
-
-  wxPrintData getPrintData();
-  void setPrintData(wxPrintData);
-  wxPageSetupData getPageSetupData();
-  void setPageSetupData(wxPageSetupData);
-
-  /**
-   * frames
-   */
-  wxSize  getFrameSize(wxString);
-  wxPoint getFramePos(wxString);
-  int     getFrameShow(wxString);
-  void setFrameSize(wxString,wxSize);
-  void setFramePos(wxString,wxPoint);
-  void setFrameShow(wxString,int);
-  void setFrameDefault();
-
-  void setRackChecking(bool);
-  bool getRackChecking();
-
-  void setJokerPlus1(bool);
-  bool getJokerPlus1();
-
-  void setDrawTile(bool);
-  bool getDrawTile();
-
-  float getPrintLineScale();
-  void setPrintLineScale(float);
-
-  void setFirstDefault();
-
-};
-
-#endif
-

Index: wxwin/confsearch.cc
===================================================================
RCS file: wxwin/confsearch.cc
diff -N wxwin/confsearch.cc
--- wxwin/confsearch.cc 8 Jan 2008 13:52:43 -0000       1.10
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,101 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/* address@hidden                                                 */
-/*                                                                           */
-/* This program is free software; you can redistribute it and/or modify      */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* This program is distributed in the hope that it will be useful,           */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-#include "ewx.h"
-#include "wx/wx.h"
-#include "wx/sizer.h"
-#include "confsearch.h"
-
-
-BEGIN_EVENT_TABLE(ConfSearchDlg, wxDialog)
-  EVT_CLOSE    (ConfSearchDlg::OnCloseWindow)
-  EVT_BUTTON   (wxID_OK,      ConfSearchDlg::OnButtonOk)
-  EVT_BUTTON   (wxID_CANCEL,  ConfSearchDlg::OnButtonCancel)
-END_EVENT_TABLE()
-
-
-ConfSearchDlg::ConfSearchDlg(wxWindow* parent)
-    : wxDialog(parent, -1, wxString(wxT("Configuration recherche")))
-{
-
-    joker_searching = new wxCheckBox(this, wxID_ANY, _("Search on joker in 7+1 
panel"));
-    rack_checking = new wxCheckBox(this, wxID_ANY, _("Check rack validity"));
-
-    bcancel = new wxButton(this, wxID_CANCEL);
-    bcancel->SetToolTip(_("Cancel last changes"));
-    bok = new wxButton(this, wxID_OK);
-    bok->SetToolTip(_("Save the changes"));
-
-    wxBoxSizer *bsizer = new wxBoxSizer( wxHORIZONTAL);
-    bsizer->Add(bok, 1, wxALL, 1);
-    bsizer->Add(bcancel, 1, wxALL, 1);
-
-    wxBoxSizer *sizer = new wxBoxSizer( wxVERTICAL );
-    sizer->Add(joker_searching, 1, wxEXPAND | wxALL, 2);
-    sizer->Add(rack_checking, 1, wxEXPAND | wxALL, 2);
-    sizer->Add(bsizer, 0, wxEXPAND, 0);
-
-    SetAutoLayout(TRUE);
-    SetSizer(sizer);
-    sizer->Fit(this);
-    sizer->SetSizeHints(this);
-    readconf();
-}
-
-    void
-ConfSearchDlg::readconf()
-{
-    joker_searching->SetValue(config.getJokerPlus1());
-    rack_checking->SetValue(config.getRackChecking());
-}
-
-    void
-ConfSearchDlg::writeconf()
-{
-    config.setJokerPlus1(joker_searching->GetValue());
-    config.setRackChecking(rack_checking->GetValue());
-}
-
-    void
-ConfSearchDlg::OnCloseWindow(wxCloseEvent&)
-{
-    if (IsModal() == TRUE)
-        EndModal(1);
-    else
-        this->Destroy();
-}
-
-    void
-ConfSearchDlg::OnButtonOk(wxCommandEvent&)
-{
-    writeconf();
-    if (IsModal() == TRUE)
-        EndModal(1);
-    else
-        this->Destroy();
-}
-
-    void
-ConfSearchDlg::OnButtonCancel(wxCommandEvent&)
-{
-    if (IsModal() == TRUE)
-        EndModal(1);
-    else
-        this->Destroy();
-}
-

Index: wxwin/confsearch.h
===================================================================
RCS file: wxwin/confsearch.h
diff -N wxwin/confsearch.h
--- wxwin/confsearch.h  4 Nov 2005 20:00:06 -0000       1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,50 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/* address@hidden                                                 */
-/*                                                                           */
-/* This program is free software; you can redistribute it and/or modify      */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* This program is distributed in the hope that it will be useful,           */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-#ifndef _CONFSEARCH_H
-#define _CONFSEARCH_H
-
-#include "wx/button.h"
-#include "wx/dialog.h"
-#include "wx/checkbox.h"
-#include "configdb.h"
-
-class ConfSearchDlg : public wxDialog
-{
-private:
-  ConfigDB config;
-
-  wxButton *bok;
-  wxButton *bcancel;
-
-  wxCheckBox *joker_searching;
-  wxCheckBox *rack_checking;
-
-  void readconf();
-  void writeconf();
-
-public:
-
-  ConfSearchDlg(wxWindow* parent);
-  void OnButtonOk    (wxCommandEvent& event);
-  void OnButtonCancel(wxCommandEvent& event);
-  void OnCloseWindow (wxCloseEvent& event);
-
-  DECLARE_EVENT_TABLE()
-};
-#endif

Index: wxwin/eliot.ico
===================================================================
RCS file: wxwin/eliot.ico
diff -N wxwin/eliot.ico
Binary files /tmp/cvs8zLfhP and /dev/null differ

Index: wxwin/eliot.xpm
===================================================================
RCS file: wxwin/eliot.xpm
diff -N wxwin/eliot.xpm
--- wxwin/eliot.xpm     8 Apr 2004 09:43:06 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,315 +0,0 @@
-/* XPM */
-static char * eliot_xpm[] = {
-"48 48 264 2",
-"      c None",
-".     c #E2E2E2",
-"+     c #EFEFEF",
-"@     c #EEEFEE",
-"#     c #EEEEEE",
-"$     c #DBDBDB",
-"%     c #EDEEED",
-"&     c #D9DAD9",
-"*     c #FFFFFF",
-"=     c #CACACA",
-"-     c #F0F0F0",
-";     c #BEBEBE",
-">     c #E1E1E1",
-",     c #C7C7C7",
-"'     c #BCBCBC",
-")     c #D3D3D3",
-"!     c #A3A3A3",
-"~     c #F9F9F9",
-"{     c #A0A0A0",
-"]     c #C1C1C1",
-"^     c #E0E0E0",
-"/     c #B5B5B5",
-"(     c #D2D2D2",
-"_     c #CDCDCD",
-":     c #B4B4B4",
-"<     c #B9B9B9",
-"[     c #FDFDFD",
-"}     c #C3C3C3",
-"|     c #D4D4D4",
-"1     c #F5F5F5",
-"2     c #969696",
-"3     c #EDEDED",
-"4     c #A9A9A9",
-"5     c #A6A6A6",
-"6     c #BFBFBF",
-"7     c #A8A8A8",
-"8     c #E5E6E5",
-"9     c #FBFBFB",
-"0     c #E5E2E2",
-"a     c #E2DFDF",
-"b     c #E4E3E2",
-"c     c #E3E3E3",
-"d     c #DCDCDC",
-"e     c #E4E5E4",
-"f     c #E2E3E2",
-"g     c #E2E4E4",
-"h     c #CED1D2",
-"i     c #DEE1E2",
-"j     c #DEDEDE",
-"k     c #E5E5E5",
-"l     c #DFE0DF",
-"m     c #E4E4E4",
-"n     c #DFDCDC",
-"o     c #E4E4E3",
-"p     c #E0E1E0",
-"q     c #E0E4E5",
-"r     c #D5D9D9",
-"s     c #DFE1E1",
-"t     c #E4E3E3",
-"u     c #DEDBDA",
-"v     c #F6505A",
-"w     c #DF787D",
-"x     c #64C0E0",
-"y     c #1DAEE2",
-"z     c #20BEF6",
-"A     c #C3DCE4",
-"B     c #FAFAFA",
-"C     c #EAEBEA",
-"D     c #E3BBBD",
-"E     c #E19EA2",
-"F     c #E7E8E7",
-"G     c #21BDF4",
-"H     c #51BADF",
-"I     c #E0868B",
-"J     c #E3C5C6",
-"K     c #CC878C",
-"L     c #E5CFD9",
-"M     c #CFC6CA",
-"N     c #7EB9CC",
-"O     c #52ADCD",
-"P     c #59BDDF",
-"Q     c #BACACE",
-"R     c #AABAD2",
-"S     c #B5C6E3",
-"T     c #AAB8CE",
-"U     c #CEB6B6",
-"V     c #CDA4A5",
-"W     c #B2BDCE",
-"X     c #CECFCF",
-"Y     c #D1D2D1",
-"Z     c #59BCDE",
-"`     c #73B5CC",
-" .    c #CFC8CB",
-"..    c #CC8E93",
-"+.    c #DFCCCD",
-"@.    c #FF91C5",
-"#.    c #E5B5CB",
-"$.    c #EAEAEA",
-"%.    c #2268E3",
-"&.    c #1869F6",
-"*.    c #3171DE",
-"=.    c #5789DF",
-"-.    c #DDE0E5",
-";.    c #E5BED0",
-">.    c #E5C6D4",
-",.    c #9A9A9A",
-"'.    c #CFAABB",
-").    c #E5BACE",
-"!.    c #CFC5CA",
-"~.    c #D2D3D2",
-"{.    c #CFD0CF",
-"].    c #7B9BD0",
-"^.    c #7FA3E1",
-"/.    c #7B9BCC",
-"(.    c #8DCCE1",
-"_.    c #9BC1CD",
-":.    c #AAC5CE",
-"<.    c #7DA2CC",
-"[.    c #CCCECF",
-"}.    c #E3E4E3",
-"|.    c #CFC9CB",
-"1.    c #CFC2C8",
-"2.    c #C9C9C9",
-"3.    c #E5C9D6",
-"4.    c #D9E2E5",
-"5.    c #61BFE0",
-"6.    c #86CAE1",
-"7.    c #B4D7E3",
-"8.    c #E5D3DB",
-"9.    c #E5B1C9",
-"0.    c #CFCFCF",
-"a.    c #CFA4B8",
-"b.    c #D298B3",
-"c.    c #E5A6C3",
-"d.    c #CFC7CA",
-"e.    c #D4D5D4",
-"f.    c #CCCFCF",
-"g.    c #ACD5E3",
-"h.    c #8EBDCD",
-"i.    c #82BACC",
-"j.    c #C3CDCF",
-"k.    c #E3A5C2",
-"l.    c #CFA1B7",
-"m.    c #CFC3C8",
-"n.    c #89BCCC",
-"o.    c #C8DADF",
-"p.    c #ACACAC",
-"q.    c #D8DBDC",
-"r.    c #EA85B5",
-"s.    c #E5D5DC",
-"t.    c #AFD6E3",
-"u.    c #8ACBE1",
-"v.    c #FD90C4",
-"w.    c #E59DBF",
-"x.    c #6CC2E0",
-"y.    c #BBD9E3",
-"z.    c #D6E1E4",
-"A.    c #C6CDCF",
-"B.    c #CFCCCD",
-"C.    c #D2CCCE",
-"D.    c #E5DEE1",
-"E.    c #CF96B0",
-"F.    c #E591B9",
-"G.    c #E090B6",
-"H.    c #C9CECF",
-"I.    c #CF8DAC",
-"J.    c #D18BAB",
-"K.    c #E3DCDF",
-"L.    c #CFCBCD",
-"M.    c #C7CECF",
-"N.    c #DDE0E0",
-"O.    c #9F9F9F",
-"P.    c #E59ABD",
-"Q.    c #FA8FC2",
-"R.    c #E58EB7",
-"S.    c #E78AB6",
-"T.    c #D6D6D6",
-"U.    c #D9D9D9",
-"V.    c #D694B3",
-"W.    c #ED8CB9",
-"X.    c #E88BB6",
-"Y.    c #DADBDA",
-"Z.    c #D689AD",
-"`.    c #D886AC",
-" +    c #EBEBEB",
-".+    c #F7F8F7",
-"++    c #B1C2DD",
-"@+    c #1C69EF",
-"#+    c #7EA0DB",
-"$+    c #DFDFDF",
-"%+    c #F2F3F2",
-"&+    c #2568DC",
-"*+    c #3370D8",
-"=+    c #5888D9",
-"-+    c #D7DADE",
-";+    c #F5F6F5",
-">+    c #90ACDC",
-",+    c #9FB6DC",
-"'+    c #C2C2C2",
-")+    c #92B0E2",
-"!+    c #A2BAE2",
-"~+    c #AEBBCE",
-"{+    c #447DDF",
-"]+    c #7C9FCC",
-"^+    c #C6DDE4",
-"/+    c #487ACE",
-"(+    c #507ECA",
-"_+    c #BDCBCF",
-":+    c #C2CCCF",
-"<+    c #668ECB",
-"[+    c #CACDCF",
-"}+    c #CACFCF",
-"|+    c #87A7CC",
-"1+    c #A1B2CE",
-"2+    c #E1E2E1",
-"3+    c #BFDAE3",
-"4+    c #7BC7E1",
-"5+    c #ADADAD",
-"6+    c #E2ADB0",
-"7+    c #CDADAE",
-"8+    c #A3C3CE",
-"9+    c #73C4E0",
-"0+    c #88BCCC",
-"a+    c #90BFCF",
-"b+    c #9DD0E2",
-"c+    c #C4CDCF",
-"d+    c #8CB4C8",
-"e+    c #E5C2D2",
-"f+    c #9FB4C6",
-"g+    c #B6C9CE",
-"h+    c #9CCFE0",
-"i+    c #8CBDCD",
-"j+    c #99C0CD",
-"k+    c #CEB1B2",
-"l+    c #E0D6D6",
-"m+    c #E5CBD7",
-"n+    c #E582B1",
-"o+    c #E5B9CD",
-"p+    c #E7E7E7",
-"q+    c #E6E7E6",
-"r+    c #CCCCCC",
-"s+    c #E8E8E8",
-"t+    c #F2F2F2",
-"u+    c #989898",
-"v+    c #FEFEFE",
-"w+    c #E3E4E4",
-"x+    c #F1F1F1",
-"y+    c #B6B6B6",
-"z+    c #DCD9D9",
-"A+    c #DADADA",
-"B+    c #F7F7F7",
-"C+    c #E4D3D4",
-"D+    c #E2D8D8",
-"E+    c #D5DFE2",
-"F+    c #BDCCD1",
-"G+    c #CEDFE4",
-"H+    c #DFE2E2",
-"I+    c #E2DFDE",
-"J+    c #E2DCDB",
-"K+    c #D3DEE2",
-"L+    c #E2D9D9",
-"M+    c #F3F0F0",
-"N+    c #D7D8D7",
-"O+    c #CECFCE",
-". + + + @ + + # + @ # + $ @ + # + + # + + % + + # + @ @ + @ # + @ @ + # + @ # 
+ @ @ + # # + + & ",
-"+ * * * = * - ; * > , * ' ) * ! ~ * { * * ] * ^ / * ( _ * : < [ } | 1 2 3 = 4 
* = 5 * 6 7 * * 8 ",
-"+ * 9 0 a b c d e f . g h i e j k k l e 8 f m 0 n o p f e f l e f . q r s f l 
e f f t a u 1 * 8 ",
-"+ + 0 v v w * * 8 * * x y z A * B C * 8 * * D v v E * * 8 * * 8 * F G z H * * 
8 * * I v v J * 8 ",
-"@ ! 0 v v w * * 8 * * x y z A * B C * 8 * * D v v E * * 8 * * 8 * F G z H * * 
8 * * I v v J * 8 ",
-"+ * b w w K L L M 8 8 N O P Q 8 p R S T 8 8 U w w V 8 8 W S S X 8 Y Z P ` 8 8 
 .L L ..w w +.* 8 ",
-"+ , 8 * * L @address@hidden * 8 $.* 8 * B %.&.*.* * 8 * * 8 * * =.&.&.-.* F [ 
* 8 * * ;address@hidden@.>.* * 8 * 8 ",
-"+ ,.8 * * L @address@hidden * 8 $.* 8 * B %.&.*.* * 8 * * 8 * * =.&.&.-.* F [ 
* 8 * * ;address@hidden@.>.* * 8 * 8 ",
-"+ * e 8 8 M #.#.'.).).!.~.8 {.8 p ].^./.(.(._.8 8 :.(.(.<.^.^.[.8 Y }.8 
|.).).'.#.#.1.8 8 p * 8 ",
-"+ 2.f * * 8 * * )address@hidden@.3.$.* 8 * B C * 4.z z 5.* * 6.z z 7.* * 8 * 
F [ * address@hidden@.9.* * 8 * * 8 * 8 ",
-"+ 0.f * * 8 * * )address@hidden@.3.$.* 8 * B C * 4.z z 5.* * 6.z z 7.* * 8 * 
F [ * address@hidden@.9.* * 8 * * 8 * 8 ",
-"+ * g x x N 8 8 !.3.3.a.b.c.d.8 p e.8 f.g.g.h.x x i.g.g.j.8 8 {.8 Y 
k.c.l.3.3.m.8 8 n.x x o.* 8 ",
-"+ p.q.z z P * * 8 * * address@hidden B C * 8 * * t.z z u.* * 8 * * 8 * F 
address@hidden * 8 * * x.z z y.* 8 ",
-"+ 0.q z z P * * 8 * * address@hidden B C * 8 * * t.z z u.* * 8 * * 8 * F 
address@hidden * 8 * * x.z z y.* 8 ",
-"+ 9 e z.z.A.8 8 {.8 8 B.C.D.E.F.G.e.8 {.8 8 f.z.z.H.8 8 {.8 8 I.F.J.K.D.L.8 8 
{.8 8 M.z.z.N.* 8 ",
-"+ O.8 * * 8 * * 8 * * 8 $.* address@hidden * 8 * * 8 * * 8 * * 8 * * 
address@hidden * 8 * * 8 * * 8 * * 8 * 8 ",
-"+ . k 3 3 T.3 3 T.3 3 T.U.3 V.W.X.Y.3 T.3 3 T.3 3 T.3 3 T.3 3 Z.W.`. +3 T.3 3 
T.3 3 T.3 3 . * 8 ",
-"+ j k address@hidden@+#+.+.+$+c .+$+.+%+&address@hidden@address@hidden> 
;+.+$+.+.+>address@hidden@+,+.+.+m * 8 ",
-"+ '+8 * * S &.&.^.* * 8 $.* 8 * B %.&.*.* * 8 * * 8 * * =.&.&.-.* F [ * 8 * * 
)+&.&.!+* * 8 * 8 ",
-"+ * e 8 8 ~+{+{+]+^+^+M.~.8 {.8 p /+{+(+^+^+_+8 8 :+^+^+<+{+{+[+8 Y }.8 
}+^+^+|+{+{+1+8 8 p * 8 ",
-"@ 0.2+* * 8 * * (.z z g.$.* 8 * B C * 4.z z 5.* * 6.z z 7.* * 8 * F [ * 3+z z 
4+* * 8 * * 8 * 8 ",
-"# 5+Y.* * 8 * * (.z z g.$.* 8 * B C * 4.z z 5.* * 6.z z 7.* * 8 * F [ * 3+z z 
4+* * 8 * * 8 * 8 ",
-"+ * o 6+6+7+8 8 8+9+9+0+a+b+c+8 p e.8 H.9+9+d+e+e+f+9+9+g+8 8 {.8 Y 
h+b+i+9+9+j+8 8 k+6+6+l+* 8 ",
-"+ '+0 v v w * * 8 * * x y z A * B C * 8 * * m+n+n+o+$ ^ 8 p+* 8 6 q+G z H * * 
8 * * I v v J * 8 ",
-"+ '+0 v v w * * 8 * * x y z A * B C * 8 * * m+v.n+o+$ ^ 8 ) B 8 6 q+G z H * * 
8 * * I v v J * 8 ",
-"+ * o 6+6+7+8 8 8+9+9+0+a+b+c+8 p e.8 H.9+9+d+e+e+f+9+9+g+8 8 {.8 Y 
h+b+i+9+9+j+8 8 k+6+6+l+* 8 ",
-"+ $+8 * * 8 * * (.z z g.$.* 8 * B C * 4.z z 5.* * 6.z z 7.* * 8 * F [ * 3+z z 
4+* * 8 * * 8 * 8 ",
-"+ # 8 * * 8 * * (.z z g.$.* 8 * B C * 4.z z 5.* * 6.z z 7.* * 8 * F [ * 3+z z 
4+* * 8 * * 8 * 8 ",
-"+ * e 8 8 ~+{+{+]+^+^+M.~.8 {.8 p /+{+(+^+^+_+8 8 :+^+^+<+{+{+[+8 Y }.8 
}+^+^+|+{+{+1+8 8 p * 8 ",
-"+ r+8 * * S &.&.^.* * 8 $.* 8 * B %.&.*.* * 8 * * 8 * * =.&.&.-.* F [ * 8 * * 
)+&.&.!+* * 8 * 8 ",
-"+ s+k address@hidden@+#+.+.+$+c .+$+.+%+&address@hidden@address@hidden> 
;+.+$+.+.+>address@hidden@+,+.+.+m * 8 ",
-"+ t+}.3 3 T.3 3 T.3 3 T.U.3 V.W.X.Y.3 T.3 3 T.3 3 T.3 3 T.3 3 Z.W.`. +3 T.3 3 
T.3 3 T.3 3 . * 8 ",
-"+ u+2+* * 8 * * 8 * * 8 $.* address@hidden * 8 * * 8 * * 8 * * 8 * * 
address@hidden * 8 * * 8 * * 8 * * 8 * 8 ",
-"+ v+w+z.z.A.8 8 {.8 8 B.C.D.E.F.G.e.8 {.8 8 f.z.z.H.8 8 {.8 8 I.F.J.K.D.L.8 8 
{.8 8 M.z.z.N.* 8 ",
-"+ x+q z z P * * 8 * * address@hidden B C * 8 * * t.z z u.* * 8 * * 8 * F 
address@hidden * 8 * * x.z z y.* 8 ",
-"+ } q z z P * * 8 * * address@hidden B C * 8 * * t.z z u.* * 8 * * 8 * F 
address@hidden * 8 * * x.z z y.* 8 ",
-"+ * g x x N 8 8 !.3.3.a.b.c.d.8 p e.8 f.g.g.h.x x i.g.g.j.8 8 {.8 Y 
k.c.l.3.3.m.8 8 n.x x o.* 8 ",
-"# ( Y * * 8 * * )address@hidden@.3.$.* 8 * B C * 4.z z 5.* * 6.z z 7.* * 8 * 
F [ * address@hidden@.9.* * 8 * * 8 * 8 ",
-"% y+r+* * 8 * * )address@hidden@.3.$.* 8 * B C * 4.z z 5.* * 6.z z 7.* * 8 * 
F [ * address@hidden@.9.* * 8 * * 8 * 8 ",
-"+ * e 8 8 M #.#.'.).).!.~.8 {.8 p ].^./.(.(._.8 8 :.(.(.<.^.^.[.8 Y }.8 
|.).).'.#.#.1.8 8 p * 8 ",
-"+ p.8 * * L @address@hidden * 8 $.* 8 * B %.&.*.* * 8 * * 8 * * =.&.&.-.* F [ 
* 8 * * ;address@hidden@.>.* * 8 * 8 ",
-"+ = 8 * * L @address@hidden * 8 $.* 8 * B %.&.*.* * 8 * * 8 * * =.&.&.-.* F [ 
* 8 * * ;address@hidden@.>.* * 8 * 8 ",
-"+ * b w w K L L M 8 8 N O P Q 8 p R S T 8 8 U w w V 8 8 W S S X 8 Y Z P ` 8 8 
 .L L ..w w +.* 8 ",
-"# 4 z+v v w * * 8 * * x y z A * B C * 8 * * D v v E * * 8 * * 8 * F G z H * * 
8 * * I v v J * 8 ",
-"+ A+0 v v w * * 8 * * x y z A * B C * 8 * * D v v E * * 8 * * 8 * F G z H * * 
8 * * I v v J * 8 ",
-"+ * B+C+C+D+8 8 f 8 8 E+F+G+H+8 e c 8 f 8 8 I+C+C+J+8 8 f 8 8 f 8 c G+G+K+8 8 
f 8 8 L+C+C+M+* 8 ",
-"+ * * * * * * * * * * * $.* * * * * * * * * * * * * * * * * * * * * * * * * * 
* * * * * * * * 8 ",
-"N+. . . . . . . . . . . 0.. . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . O+"};

Index: wxwin/ewx.h
===================================================================
RCS file: wxwin/ewx.h
diff -N wxwin/ewx.h
--- wxwin/ewx.h 12 Jan 2008 20:42:26 -0000      1.12
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,83 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   ewx.h
- *  \brief  Eliot wxwidgets switch and defines
- *  \author Antoine Fraboulet
- *  \date   2002
- */
-
-#ifndef __EWX__
-#define __EWX__
-
-#ifdef DEBUG
-#  define debug(x...) { fprintf(stderr,x); }
-#else
-#  define debug(x...)
-#endif
-
-#if defined(TRACE_TODO)
-#  define TODO(x...) {                                                   \
-       fprintf(stderr,"** TODO ** %s:%d: ", __FILE__, __LINE__); \
-       fprintf(stderr,x);                                                \
-       }
-#else
-#  define TODO(x...)
-#endif
-
-#define __UNUSED__ __attribute__((unused))
-
-#if defined(__WIN32__) || defined(__WIN95__) || defined(__WXMSW__)
-#  define ENABLE_LC_NO_HEADER
-#  define ENABLE_RESLIST_IN_MAIN
-#  define MSW_RESIZE_BUG
-#  define INCOMPLETE
-#else
-#  define ENABLE_SAVE_POSTSCRIPT
-#  define ENABLE_RESLIST_IN_MAIN
-#  define INCOMPLETE { std::cerr << "incomplete " << __FILE__ << " " << 
__LINE__ << "\n"; }
-#endif
-
-#include "config.h"
-#define APPNAME "Eliot"
-
-// wxU is used to convert ansi/utf8 strings to unicode strings (wchar_t)
-#if defined( ENABLE_NLS ) && defined( ENABLE_UTF8 )
-#   if wxUSE_UNICODE
-#       define wxU(utf8) wxString(utf8, wxConvUTF8)
-#   else
-#       define wxU(utf8) wxString(wxConvUTF8.cMB2WC(utf8), *wxConvCurrent)
-#   endif
-#else // ENABLE_NLS && ENABLE_UTF8
-#   if wxUSE_UNICODE
-#       define wxU(ansi) wxString(ansi, *wxConvCurrent)
-#   else
-#       define wxU(ansi) ansi
-#   endif
-#endif // ENABLE_NLS && ENABLE_UTF8
-
-#endif // __EWX__
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// indent-tabs-mode: nil
-/// End:

Index: wxwin/gfxboard.cc
===================================================================
RCS file: wxwin/gfxboard.cc
diff -N wxwin/gfxboard.cc
--- wxwin/gfxboard.cc   9 Jan 2008 10:48:19 -0000       1.11
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,459 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   gfxboard.cc
- *  \brief  Game board graphical view
- *  \author Antoine Fraboulet
- *  \date   2002
- */
-
-#include <string.h>
-#include <math.h>
-#include <ctype.h>
-
-#include "wx/dcmemory.h"
-
-#include "ewx.h"
-#include "dic.h"
-#include "game.h"
-#include "configdb.h"
-#include "gfxboard.h"
-
-#ifdef DEBUG_
-#   define GFXDEBUG(x) x
-#else
-#   define GFXDEBUG(x)
-#endif
-
-BEGIN_EVENT_TABLE(GfxBoard, wxWindow)
-    EVT_PAINT(GfxBoard::OnPaint)
-    EVT_SIZE(GfxBoard::OnSize)
-END_EVENT_TABLE()
-
-#define LINE_WIDTH 1
-#define BOARD_SIZE (BOARD_DIM + 2)
-
-    /* ************************************************** */
-    /* ************************************************** */
-
-GfxBoard::GfxBoard(wxFrame *parent, Game &iGame) :
-       wxWindow(parent, wxWindowID(-1), wxDefaultPosition, wxDefaultSize,
-                wxNO_BORDER | wxFULL_REPAINT_ON_RESIZE, wxT("gfxboard")),
-       m_game(iGame)
-{
-    bmp          = NULL;
-    board_size   = 0;
-    tile_size    = 0;
-#if defined(MSW_RESIZE_BUG)
-    just_resized = false;
-#endif
-    for(int i=0; i<BOARD_DIM; i++)
-       {
-           for(int j=0; j < BOARD_DIM; j++)
-               {
-                   paintedboard_char[i][j] = wxT(' ');
-                   paintedboard_attr[i][j] = 0;
-               }
-       }
-}
-
-    /* ************************************************** */
-    /* ************************************************** */
-
-GfxBoard::~GfxBoard(void)
-{
-    if (bmp)
-       {
-           delete bmp;
-           bmp = NULL;
-       }
-}
-
-/**
- * Make new dimensions available for the next OnPaint
- * event. The BMP is deleted if it exists.
- */
-
-void
-GfxBoard::OnSize(wxSizeEvent __UNUSED__ &e)
-{
-    GFXDEBUG(std::cerr << "On size : ");
-
-    wxSize cs = GetClientSize();
-    board_size = cs.GetWidth() < cs.GetHeight() ? cs.GetWidth() : 
cs.GetHeight();
-    tile_size  = (int)((float)board_size / (float)(BOARD_SIZE)) - LINE_WIDTH;
-
-    GFXDEBUG(std::cerr << "(" << cs.GetWidth() << "," << cs.GetHeight() << 
")");
-    GFXDEBUG(std::cerr << " tile size " << tile_size << endl);
-
-    TopLeft  = wxPoint((cs.GetWidth()  - (board_size - tile_size/2)) / 2,
-                      (cs.GetHeight() - (board_size - tile_size/2)) / 2);
-
-#if defined(MSW_RESIZE_BUG)
-    just_resized = true;
-#endif
-
-    if (bmp)
-       {
-           delete bmp;
-           bmp = NULL;
-       }
-}
-
-/**
- * Creates a BMP in memory and draws the board inside
- */
-
-void
-GfxBoard::CreateBMP()
-{
-    GFXDEBUG(std::cerr << "Create BMP ");
-    if (!bmp)
-       {
-           wxSize bs = GetClientSize();
-           bmp=new wxBitmap(bs.x,bs.y);
-           GFXDEBUG(std::cerr << " new bmp (" << bs.x << "," << bs.y << ")");
-           if (bmp)
-               {
-                   wxMemoryDC memDC;
-                   memDC.SelectObject(* bmp);
-                   DrawBoard(&memDC);
-                   memDC.SelectObject(wxNullBitmap);
-               }
-       }
-    GFXDEBUG(std::cerr << endl);
-}
-
-
-/**
- * Update the full BMP and copy only the requested area
- * to the ClientDC
- */
-
-void
-GfxBoard::RefreshSquare(wxRect &r)
-{
-    wxClientDC dc(this);
-
-    if (bmp)
-       {
-           int vX,vY,vW,vH;
-           wxMemoryDC memDC;
-           memDC.SelectObject(* bmp);
-           DrawBoard(&memDC);
-           vX = r.x;
-           vY = r.y;
-           vW = r.width;
-           vH = r.height;
-           GFXDEBUG(std::cerr << " refresh (" << vX << "," << vY << "," << vW 
<< "," << vH << ") ");
-           dc.Blit(vX,vY,vW,vH,&memDC,vX,vY,wxCOPY);
-           memDC.SelectObject(wxNullBitmap);
-       }
-    else
-       {
-           DrawBoard(&dc);
-       }
-}
-
-/**
- * Force a full refresh of the board
- */
-
-void
-GfxBoard::Refresh(board_refresh_t WXUNUSED(force))
-{
-    wxSize cs = GetClientSize();
-    board_size = cs.GetWidth() < cs.GetHeight() ? cs.GetWidth() : 
cs.GetHeight();
-    tile_size  = (int)((float)board_size / (float)(BOARD_SIZE)) - LINE_WIDTH;
-    wxRect r (0,0,cs.GetWidth(),cs.GetHeight());
-    RefreshSquare(r);
-}
-
-/**
- * Window manager OnPaint event handler.
- */
-
-void
-GfxBoard::OnPaint(wxPaintEvent&)
-{
-    wxPaintDC dc(this);
-
-    CreateBMP();
-
-    GFXDEBUG(std::cerr << "OnPaint : ");
-
-    if (bmp)
-       {
-#if defined(MSW_RESIZE_BUG)
-           Refresh(BOARD_FORCE_REFRESH);
-           if (just_resized == true)
-               {
-                   just_resized = false;
-               }
-#else
-           // we keep that code for wxgtk
-           // it does not work under wxmsw, don't know why
-           // all the onsize/repaint should be checked ... later
-           int vX,vY,vW,vH;
-           wxMemoryDC memDC;
-           memDC.SelectObject(* bmp);
-           wxRegionIterator upd(GetUpdateRegion());
-           while (upd)
-               {
-                   vX = upd.GetX();
-                   vY = upd.GetY();
-                   vW = upd.GetW();
-                   vH = upd.GetH();
-                   GFXDEBUG(std::cerr << "+(" << vX << "," << vY << "," << vW 
<< "," << vH << ")");
-                   dc.Blit(vX,vY,vW,vH,&memDC,vX,vY,wxCOPY);
-                   upd ++ ;
-               }
-           memDC.SelectObject(wxNullBitmap);
-#endif
-       }
-    else
-       {
-           GFXDEBUG(std::cerr << " call to DrawBoard ");
-           DrawBoard(&dc);
-       }
-
-    GFXDEBUG(std::cerr << "End of OnPaint" << endl);
-}
-
-
-void
-GfxBoard::DrawTileBack(wxDC* dc, int top, int left, int size, bool testtile)
-{
-    //    void DrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, 
wxCoord height, double radius = 20)
-    wxBrush oldbrush = dc->GetBrush();
-    wxColour colBackground;
-
-    if (testtile)
-       {
-           colBackground = config.getColour(wxString(BTSTTILEBACKGROUND));
-       }
-    else
-       {
-           colBackground = config.getColour(wxString(BTILEBACKGROUND));
-       }
-
-    wxBrush *BackgroundBrush = 
wxTheBrushList->FindOrCreateBrush(colBackground, wxSOLID);
-    dc->SetBrush(* BackgroundBrush);
-    dc->DrawRoundedRectangle(left,top,size,size,std::max(2,size/6));
-    dc->SetBrush(oldbrush);
-}
-
-/**
- * Draw a tile to the wxDC object.
- */
-
-#define TILE_LEFT(col) (col*(tile_size+LINE_WIDTH) + TopLeft.x)
-#define TILE_TOP(row) (row*(tile_size+LINE_WIDTH) + TopLeft.y)
-
-/*
-   TODO
-   - ajuster avec une LINE_SIZE differente
-   - calculer la taille de la police
-*/
-
-/*    TILE_LEFT
-      |
-      |  TILE_LEFT + LINE_WIDTH
-      |  |
-      +++++++++-- TILE_TOP
-      +++++++++
-      +++++++++
-      +++   +++-------------- TILE_TOP + LINE_WIDTH
-      +++   +++ | = tile_size
-      +++   +++--
-      +++++++++--
-      +++++++++ | = LINE_WIDTH
-      +++++++++--
-      | |
-      |_|
-       |
-       LINE_WIDTH
-*/
-
-void
-GfxBoard::DrawTile(wxDC *dc, wxString& wxs, int row, int column, bool 
testtile, bool drawtileback)
-{
-    wxColour colour;
-    wxCoord width, height;
-    wxCoord posx, posy;
-    wxCoord left,top;
-    // redraw borders
-    left = TILE_LEFT(column);
-    top  = TILE_TOP(row);
-
-    if (wxs.length() > 0 && *wxs.GetData())
-       {
-           // we got a letter (or 2 chars for coordinates > 9)
-           // draw plastic tile
-           if (drawtileback)
-               {
-                   DrawTileBack(dc,
-                                top  + LINE_WIDTH,
-                                left + LINE_WIDTH,
-                                tile_size, testtile);
-               }
-           // draw letter
-           if (testtile)
-               {
-                   colour = config.getColour(wxString(BCOLOURTSTLETTERS));
-               }
-           else
-               {
-                   colour = config.getColour(wxString(BCOLOURLETTERS));
-               }
-
-           dc->SetTextForeground(colour);
-           dc->GetTextExtent(wxs,&width,&height);
-           posx = left + LINE_WIDTH + (tile_size - width) / 2;
-           posy = top  + LINE_WIDTH + (tile_size - height) / 2;
-           dc->DrawText(wxs,posx,posy);
-       }
-}
-
-/**
- * Draw the complete board in the wxDC.
- */
-
-void
-GfxBoard::DrawBoard(wxDC *dc)
-{
-    Board board;
-
-    wxString wxs;
-    int row,column;
-
-    wxFont   font            = config.getFont(BOARDFONT);
-    wxColour colForeground   = config.getColour(wxString(BCOLOURLINES));
-    wxColour colBackground   = config.getColour(wxString(BCOLOURBACKGROUND));
-
-    wxBrush *BackgroundBrush = 
wxTheBrushList->FindOrCreateBrush(colBackground, wxSOLID);
-    wxPen   *LinesPen        = wxThePenList->FindOrCreatePen(colForeground, 
LINE_WIDTH, wxSOLID);
-
-    dc->SetFont (font);
-    dc->SetPen  (* LinesPen);
-    dc->SetBrush(* BackgroundBrush);
-
-    // background rectangle (entire frame)
-    wxSize bs = GetClientSize();
-    dc->DrawRectangle(0,0,bs.x,bs.y);
-
-    // lines
-    for(row=BOARD_MIN; row < BOARD_MAX; row++)
-       {
-           // vertical
-           dc->DrawLine(TILE_LEFT(row+1),
-                        TILE_TOP(1),
-                        TILE_LEFT(row+1),
-                        TILE_TOP(BOARD_MAX));
-           // horizontal row <-> line
-           dc->DrawLine(TILE_LEFT(1),
-                        TILE_TOP(row+1),
-                        TILE_LEFT(BOARD_MAX),
-                        TILE_TOP(row+1));
-       }
-
-    // 1 2 3 4 5 ...
-    // A B C D ...
-    for(row=BOARD_MIN; row <= BOARD_MAX; row++)
-       {
-           wxs.Printf(wxT("%d"), row);
-           DrawTile(dc, wxs, 0, row);
-           wxs.Printf(wxT("%c"), row + 'A' - 1);
-           DrawTile(dc, wxs, row, 0);
-       }
-
-    // Board Background
-    wxColour colWx3         = config.getColour(wxString(BCOLOURWX3));
-    wxColour colWx2         = config.getColour(wxString(BCOLOURWX2));
-    wxColour colLx3         = config.getColour(wxString(BCOLOURLX3));
-    wxColour colLx2         = config.getColour(wxString(BCOLOURLX2));
-
-    wxBrush *Wx3Brush = wxTheBrushList->FindOrCreateBrush(colWx3, wxSOLID);
-    wxBrush *Wx2Brush = wxTheBrushList->FindOrCreateBrush(colWx2, wxSOLID);
-    wxBrush *Lx3Brush = wxTheBrushList->FindOrCreateBrush(colLx3, wxSOLID);
-    wxBrush *Lx2Brush = wxTheBrushList->FindOrCreateBrush(colLx2, wxSOLID);
-
-    board = m_game.getBoard();
-    for(row=BOARD_MIN; row <= BOARD_MAX; row++)
-       {
-           for (column = BOARD_MIN; column <= BOARD_MAX; column++)
-               {
-                   if (board.GetLetterMultiplier(row, column) == 2)
-                       {
-                           dc->SetBrush(*Lx2Brush);
-                       }
-                   else if (board.GetLetterMultiplier(row, column) == 3)
-                       {
-                           dc->SetBrush(*Lx3Brush);
-                       }
-                   else if (board.GetWordMultiplier(row, column) == 2)
-                       {
-                           dc->SetBrush(*Wx2Brush);
-                       }
-                   else if (board.GetWordMultiplier(row, column) == 3)
-                       {
-                           dc->SetBrush(*Wx3Brush);
-                       }
-                   else
-                       {
-                           dc->SetBrush(*BackgroundBrush);
-                       }
-
-                   if (row && column)
-                       {
-                           dc->DrawRectangle(TILE_LEFT(column), TILE_TOP(row),
-                                             tile_size + 2*LINE_WIDTH,
-                                             tile_size + 2*LINE_WIDTH);
-                       }
-               }
-       }
-
-    // Tiles
-    LinesPen->SetWidth(1);
-    dc->SetPen  (* LinesPen);
-    bool drawtiles = config.getDrawTile();
-    for(row=BOARD_MIN; row <= BOARD_MAX; row++)
-       {
-           for (column = BOARD_MIN; column <= BOARD_MAX; column++)
-               {
-                   int attr = board.getCharAttr(row, column);
-                   wxs  = wxString((wxChar)board.getChar(row, column));
-
-                   paintedboard_char[row - BOARD_MIN][column - BOARD_MIN] = 
*wxs.GetData();
-                   paintedboard_attr[row - BOARD_MIN][column - BOARD_MIN] = 
attr;
-
-                   DrawTile(dc,wxs,row,column,attr & ATTR_TEST,drawtiles);
-               }
-       }
-
-    dc->SetFont(wxNullFont);
-}
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// indent-tabs-mode: nil
-/// End:

Index: wxwin/gfxboard.h
===================================================================
RCS file: wxwin/gfxboard.h
diff -N wxwin/gfxboard.h
--- wxwin/gfxboard.h    1 Jan 2006 19:34:05 -0000       1.7
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,116 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   gfxboard.h
- *  \brief  Game board graphical view
- *  \author Antoine Fraboulet
- *  \date   2002
- */
-
-#ifndef _GFXBOARD_H
-#define _GFXBOARD_H
-
-/**
- * gfxboard is a wxWindow widget that draws a Scrabble board
- */
-
-class GfxBoard : public wxWindow
-{
- private:
-    /**
-     * reference on the played game
-     */
-    Game &m_game;
-
-    /**
-     * paintedboard_char is the matrix of played tiles
-     */
-    wxChar paintedboard_char[BOARD_DIM][BOARD_DIM];
-
-    /**
-     * paintedboard_attr is the matrix of special attributes for tiles, for
-     * instance it can store if a tile is a test tile (placed but not played).
-     */
-    char   paintedboard_attr[BOARD_DIM][BOARD_DIM];
-
-    /**
-     * size in pixels for the board.
-     * board_size = min(width,height)
-     */
-    int board_size;
-
-    /**
-     * tile_size = size in pixels of a tile
-     */
-    int tile_size;
-
-    /**
-     * there is a bug when doing an OnSize under windows : the window
-     * has to be fully refreshed (UpdateRegion does not seem to work).
-     */
-#if defined(MSW_RESIZE_BUG)
-    bool just_resized;
-#endif
-
-    /**
-     * top left point used to draw the lines, used to keep the board
-     * centered horizontally and vertically
-     */
-    wxPoint  TopLeft;
-
-    /**
-     * Board bitmap, created by CreateBMP
-     */
-    wxBitmap *bmp;
-
-    void CreateBMP();
-    void DrawTileBack(wxDC*,int,int,int, bool testtile);
-    void DrawTile(wxDC*,wxString&,int,int,bool testtile = false, bool 
drawtileback = false);
-    void DrawBoard(wxDC*);
-    void RefreshSquare(wxRect&);
-
-    ConfigDB config;
-
- public:
-
-    GfxBoard(wxFrame* parent, Game& game);
-    ~GfxBoard(void);
-
-    void OnPaint (wxPaintEvent& event);
-    void OnSize  (wxSizeEvent&  event);
-
-    typedef enum {
-       BOARD_REFRESH,
-       BOARD_FORCE_REFRESH
-    } board_refresh_t;
-
-    void Refresh (board_refresh_t force = BOARD_REFRESH);
-
-    DECLARE_EVENT_TABLE()
-};
-
-#endif
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// indent-tabs-mode: nil
-/// End:

Index: wxwin/gfxresult.cc
===================================================================
RCS file: wxwin/gfxresult.cc
diff -N wxwin/gfxresult.cc
--- wxwin/gfxresult.cc  8 Jan 2008 13:52:43 -0000       1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,236 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   reslist.cc
- *  \brief  Search results list view
- *  \author Antoine Fraboulet
- *  \date   2005
- */
-
-#include <wx/wx.h>
-
-#include "ewx.h"
-#include "dic.h"
-#include "game.h"
-#include "player.h"
-#include "training.h"
-#include "configdb.h"
-#include "gfxresult.h"
-#include "mainframe.h"
-
-/* ************************************************** */
-/* ************************************************** */
-
-enum {
-    ListCtrl_ID                               = 11000
-};
-
-BEGIN_EVENT_TABLE(GfxResult, wxControl)
-    EVT_SIZE(GfxResult::OnSize)
-    EVT_LIST_ITEM_SELECTED  (ListCtrl_ID, GfxResult::OnListCtrlSelected)
-    EVT_LIST_ITEM_ACTIVATED (ListCtrl_ID, GfxResult::OnListCtrlActivated)
-END_EVENT_TABLE()
-
-/* ************************************************** */
-/* ************************************************** */
-
-GfxResult::GfxResult(wxFrame *parent, MainFrame* _mf, Game* _game) :
-    wxControl(parent, wxWindowID(234), wxDefaultPosition, wxDefaultSize,
-             wxNO_BORDER | wxFULL_REPAINT_ON_RESIZE)
-{
-    mf = _mf;
-    game = _game;
-    savedrack = L"";
-    results = new wxListCtrl(this, ListCtrl_ID);
-#if defined(ENABLE_LC_NO_HEADER)
-    results->SetSingleStyle(wxLC_REPORT | wxLC_NO_HEADER | wxLC_SINGLE_SEL);
-#else
-    results->SetSingleStyle(wxLC_REPORT | wxLC_SINGLE_SEL);
-#endif
-    results->InsertColumn(0, _("Word"));
-    results->InsertColumn(1, wxT("*"));
-    results->InsertColumn(2, _("Pos"));
-    results->InsertColumn(3, _("Pts"));
-    results->SetToolTip(_("Results of the search"));
-
-    wxBoxSizer *sizer_v = new wxBoxSizer(wxVERTICAL);
-    wxBoxSizer *sizer_h = new wxBoxSizer(wxHORIZONTAL);
-
-    sizer_v->Add(results, 1, wxEXPAND, 0);
-    sizer_h->Add(sizer_v, 1, wxEXPAND, 0);
-
-    SetAutoLayout(TRUE);
-    SetSizer(sizer_h);
-    sizer_h->Fit(this);
-    sizer_h->SetSizeHints(this);
-}
-
-/* ************************************************** */
-/* ************************************************** */
-
-GfxResult::~GfxResult(void)
-{
-    //debug("   GfxResult::~GfxResult\n");
-    Show(false);
-    Show(true);
-}
-
-/* ************************************************** */
-/* ************************************************** */
-
-void
-GfxResult::SetGame(Game* g)
-{
-    game = g;
-    savedrack = L"";
-    results->DeleteAllItems();
-}
-
-/* ************************************************** */
-/* ************************************************** */
-
-void
-GfxResult::Refresh()
-{
-    if (game == NULL)
-        return;
-
-    debug("   GfxResult::Refresh : ");
-    std::wstring rack = game->getCurrentPlayer().getCurrentRack().toString();
-
-    if (savedrack != rack || 
(int)static_cast<Training*>(game)->getResults().size() != 
results->GetItemCount())
-    {
-        debug("changed (%ls -> %ls)",savedrack.c_str(),rack.c_str());
-        savedrack = rack;
-        results->DeleteAllItems();
-    }
-    else
-    {
-        debug("unchanged");
-    }
-    debug("\n");
-}
-
-/* ************************************************** */
-/* ************************************************** */
-
-void
-GfxResult::Search()
-{
-    debug("GfxResult::Search()\n");
-    if (game == NULL)
-        return;
-
-    static_cast<Training*>(game)->search();
-
-    results->DeleteAllItems();
-    results->SetFont(config.getFont(LISTFONT));
-
-    const Results &res = static_cast<Training*>(game)->getResults();
-    debug("   GfxResult::Search size = %d\n",res.size());
-    for (unsigned int i = 0; i < res.size(); i++)
-    {
-        const Round &r = res.get(i);
-        //debug("    adding %s\n",r.toString().c_str());
-        wxString pts;
-        wxString word   = wxU(r.getWord().c_str());
-        wxString coords = wxU(r.getCoord().toString().c_str());
-        wxChar   bonus  = r.getBonus() ?  wxT('*') : wxT(' ');
-        pts << r.getPoints();
-
-        long tmp = results->InsertItem(i, word);
-        results->SetItemData(tmp, i);
-        tmp = results->SetItem(i, 1, bonus);
-        tmp = results->SetItem(i, 2, coords);
-        tmp = results->SetItem(i, 3, pts);
-    }
-
-    for (int i = 0; i < 4; i++)
-        results->SetColumnWidth(i, wxLIST_AUTOSIZE);
-
-    //results->Show();
-
-    if (res.size() > 0)
-    {
-        results->SetItemState(0, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED 
| wxLIST_MASK_STATE);
-        static_cast<Training*>(game)->testPlay(0);
-    }
-}
-
-/* ************************************************** */
-/* ************************************************** */
-
-int
-GfxResult::GetSelected()
-{
-    int item = -1;
-    item = results->GetNextItem(item,wxLIST_NEXT_ALL,wxLIST_STATE_SELECTED);
-    //debug("GfxResult::GetSelected = %d\n",item);
-    return item;
-}
-
-/* ************************************************** */
-/* ************************************************** */
-
-void
-GfxResult::OnListCtrlSelected(wxListEvent& event)
-{
-    //debug("   GfxResult::OnListCtrlSelected\n");
-    if (event.m_itemIndex > -1)
-    {
-        mf->TestPlay(event.m_itemIndex);
-    }
-}
-
-/* ************************************************** */
-/* ************************************************** */
-
-void
-GfxResult::OnListCtrlActivated(wxListEvent& event)
-{
-    //debug("   GfxResult::OnListCtrlActivated");
-    if (event.m_itemIndex > -1)
-    {
-        mf->Play(1);
-        results->DeleteAllItems();
-    }
-}
-
-/* ************************************************** */
-/* ************************************************** */
-
-void
-GfxResult::OnSize(wxSizeEvent __UNUSED__ &e)
-{
-    int w,h;
-    GetClientSize(&w,&h);
-    results->SetClientSize(w,h);
-    //debug("   GfxResult::OnSize (%d,%d)\n",w,h);
-}
-
-/* ************************************************** */
-/* ************************************************** */
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// indent-tabs-mode: nil
-/// End:

Index: wxwin/gfxresult.h
===================================================================
RCS file: wxwin/gfxresult.h
diff -N wxwin/gfxresult.h
--- wxwin/gfxresult.h   22 Jan 2006 12:23:53 -0000      1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,69 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 2005  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   reslist.h
- *  \brief  Search results list view
- *  \author Antoine Fraboulet
- *  \date   2005
- */
-
-#ifndef _RESLIST_H
-#define _RESLIST_H
-
-#include <string>
-#include <wx/listctrl.h>
-
-class MainFrame;
-
-
-class GfxResult : public wxControl
-{
- private:
-    MainFrame    *mf;
-    std::wstring  savedrack;
-    Game         *game;
-    wxListCtrl   *results;
-    ConfigDB     config;
-
- public:
-    GfxResult(wxFrame*, MainFrame*, Game*);
-    ~GfxResult();
-
-    void SetGame(Game*);
-    void Search();
-    int  GetSelected();
-    void Refresh();
-
-    void OnSize(wxSizeEvent& e);
-    void OnListCtrlSelected(wxListEvent& event);
-    void OnListCtrlActivated(wxListEvent& event);
-
-    DECLARE_EVENT_TABLE()
-};
-
-
-#endif
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// indent-tabs-mode: nil
-/// End:

Index: wxwin/main.cc
===================================================================
RCS file: wxwin/main.cc
diff -N wxwin/main.cc
--- wxwin/main.cc       12 Jan 2008 20:42:26 -0000      1.12
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,120 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/* address@hidden                                                 */
-/*                                                                           */
-/* This program is free software; you can redistribute it and/or modify      */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* This program is distributed in the hope that it will be useful,           */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   main.cc
- *  \brief  Eliot main entry point
- *  \author Antoine Fraboulet
- *  \date   2005
- */
-
-#ifdef WIN32 // mingw32 hack
-#   undef Yield
-#   undef CreateDialog
-#endif
-
-#include <stdlib.h>
-#include <time.h>
-#include <wx/wxprec.h>
-#include <wx/wx.h>
-#include <wx/app.h>
-#include <wx/intl.h>
-
-#include "ewx.h"
-#include "configdb.h"
-#include "mainframe.h"
-#include "game_factory.h"
-
-#include "eliot.xpm"
-
-class EliotApp : public wxApp
-{
-private:
-    MainFrame *m_mainFrame;
-protected:
-    wxLocale locale;
-public:
-    virtual bool OnInit();
-    virtual int  OnExit();
-};
-
-IMPLEMENT_APP(EliotApp)
-
-bool
-EliotApp::OnInit()
-{
-    wxApp::OnInit();
-    srand(time(NULL));
-    SetVendorName(wxT("Afrab"));
-    SetAppName(wxString(wxT("eliot")) + wxT("-") + wxT(VERSION));
-    SetClassName(wxT("eliot"));
-
-    wxConfigBase::Get();
-
-    locale.Init();
-
-    // Search for translations in the installation directory
-    wxString catalogPath;
-#ifdef WIN32
-    // Get the absolute path, as returned by GetFullPathName()
-    wchar_t path[MAX_PATH];
-    GetFullPathName(wstring(argv[0]).c_str(), MAX_PATH, path, NULL);
-    wchar_t *pos = wcsrchr(path, L'\\');
-    if (pos)
-        *pos = '\0';
-    catalogPath = wxU(path) + wxT("/locale");
-#else
-    catalogPath = wxT(LOCALEDIR);
-#endif
-
-    wxLocale::AddCatalogLookupPathPrefix(catalogPath);
-    // No need to search in the current directory, it is already done by 
default
-    // wxLocale::AddCatalogLookupPathPrefix(wxT("."));
-    locale.AddCatalog(wxT("eliot"));
-#ifdef __LINUX__
-    {
-        wxLogNull noLog;
-        locale.AddCatalog(wxT("fileutils"));
-    }
-#endif
-
-    ConfigDB configdb;
-    configdb.setFirstDefault();
-    MainFrame *mainframe = new MainFrame(configdb.getFramePos(wxT(APPNAME)),
-                                         configdb.getFrameSize(wxT(APPNAME)));
-    mainframe->SetIcon(wxICON(eliot));
-    mainframe->Show(TRUE);
-    SetTopWindow(mainframe);
-    return TRUE;
-}
-
-int
-EliotApp::OnExit()
-{
-    GameFactory::Destroy();
-    delete wxConfigBase::Set(NULL);
-    return wxApp::OnExit();
-}
-
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// indent-tabs-mode: nil
-/// End:

Index: wxwin/mainframe.cc
===================================================================
RCS file: wxwin/mainframe.cc
diff -N wxwin/mainframe.cc
--- wxwin/mainframe.cc  12 Jan 2008 20:42:26 -0000      1.25
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,1056 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   mainframe.cc
- *  \brief  Main frame for the Eliot GUI
- *  \author Antoine Fraboulet
- *  \date   2005
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <iostream>
-#include <fstream>
-#include <exception>
-
-using namespace std;
-
-#include "wx/intl.h"
-#include "wx/menu.h"
-#include "wx/statusbr.h"
-#include "wx/sizer.h"
-#include "wx/filedlg.h"
-#include "wx/msgdlg.h"
-
-#include "ewx.h"
-
-#include "dic.h"
-#include "game.h"
-#include "training.h"
-#include "game_factory.h"
-#include "player.h"
-
-#include "configdb.h"
-#include "confdimdlg.h"
-#include "confsearch.h"
-#include "printout.h"
-#include "mainframe.h"
-
-#ifdef ENABLE_SAVE_POSTSCRIPT
-#include "wx/dcps.h"
-#endif
-
-enum
-{
-    Menu_Game_New                             = 1000,
-    Menu_Game_NewJoker,
-    Menu_Game_Open,
-    Menu_Game_Save,
-    Menu_Game_Print,
-    Menu_Game_PrintPreview,
-    Menu_Game_PrintPS,
-
-    Menu_Conf_Game                            = 2000,
-    Menu_Conf_Game_Dic,
-    Menu_Conf_Game_Tiles,
-    Menu_Conf_Game_Search,
-    Menu_Conf_Print,
-    Menu_Conf_Aspect                          = 2100,
-    Menu_Conf_Tile,
-    Menu_Conf_Aspect_BoardColour_DrawTiles,
-    Menu_Conf_Aspect_Font,
-    Menu_Conf_Aspect_Font_Search              = 2110,
-    Menu_Conf_Aspect_Font_Board               = 2111,
-    Menu_Conf_Aspect_Font_Default             = 2112,
-    Menu_Conf_Aspect_BoardColour              = 2200,
-    Menu_Conf_Aspect_BoardColour_Lines        = 2201,
-    Menu_Conf_Aspect_BoardColour_Wx2          = 2202,
-    Menu_Conf_Aspect_BoardColour_Wx3          = 2203,
-    Menu_Conf_Aspect_BoardColour_Lx2          = 2204,
-    Menu_Conf_Aspect_BoardColour_Lx3          = 2205,
-    Menu_Conf_Aspect_BoardColour_Background   = 2206,
-    Menu_Conf_Aspect_BoardColour_Letters      = 2207,
-    Menu_Conf_Aspect_BoardColour_TestLetters  = 2208,
-    Menu_Conf_Aspect_BoardColour_TileBack     = 2209,
-    Menu_Conf_Aspect_BoardColour_TestTileBack = 2210,
-    Menu_Conf_Aspect_BoardColour_Default      = 2211,
-
-#define IDBASE 3300
-    Menu_ShowVerif                            = (IDBASE + ID_Frame_Verif),
-    Menu_ShowSearch                           = (IDBASE + ID_Frame_Search),
-    Menu_ShowPlus1                            = (IDBASE + ID_Frame_Plus1),
-    Menu_ShowRacc                             = (IDBASE + ID_Frame_Racc),
-    Menu_ShowBenj                             = (IDBASE + ID_Frame_Benj),
-    Menu_ShowBag                              = (IDBASE + ID_Frame_Bag),
-    Menu_ShowBoard                            = (IDBASE + ID_Frame_Board),
-    Menu_ShowGame                             = (IDBASE + ID_Frame_Game),
-    Menu_ShowResult                           = (IDBASE + ID_Frame_Result),
-
-    Button_SetRack                            = 10000,
-    Button_SetNew,
-    Button_SetManual,
-    Button_Search,
-    Button_Play,
-    Button_PlayBack,
-
-    ListCtrl_ID                               = 11000,
-    Rack_ID,
-    Status_ID
-};
-
-BEGIN_EVENT_TABLE(MainFrame, wxFrame)
-    //
-    EVT_MENU(Menu_Game_New,          MainFrame::OnMenuGameNew)
-    EVT_MENU(Menu_Game_NewJoker,     MainFrame::OnMenuGameNew)
-    EVT_MENU(Menu_Game_Open,         MainFrame::OnMenuGameOpen)
-    EVT_MENU(Menu_Game_Save,         MainFrame::OnMenuGameSave)
-    EVT_MENU(Menu_Game_Print,        MainFrame::OnMenuGamePrint)
-    EVT_MENU(Menu_Game_PrintPreview, MainFrame::OnMenuGamePrintPreview)
-    EVT_MENU(Menu_Game_PrintPS,      MainFrame::OnMenuGamePrintPS)
-    EVT_MENU(wxID_EXIT,              MainFrame::OnMenuGameQuit)
-    //
-    EVT_MENU(Menu_Conf_Game_Dic,     MainFrame::OnMenuConfGameDic)
-    EVT_MENU(Menu_Conf_Game_Search,  MainFrame::OnMenuConfGameSearch)
-    //
-    EVT_MENU(Menu_Conf_Print,        MainFrame::OnMenuConfPrint)
-    //
-    EVT_MENU_RANGE(Menu_Conf_Aspect_Font_Search, 
Menu_Conf_Aspect_Font_Default, MainFrame::OnMenuConfAspectFont)
-    EVT_MENU_RANGE(Menu_Conf_Aspect_BoardColour_Lines, 
Menu_Conf_Aspect_BoardColour_Default, MainFrame::OnMenuConfAspectBoardColour)
-    EVT_MENU_RANGE(Menu_ShowVerif, Menu_ShowResult, MainFrame::OnMenuShowFrame)
-    //
-    EVT_MENU(wxID_ABOUT, MainFrame::OnMenuHelpAbout)
-    //
-    EVT_BUTTON(Button_Play,     MainFrame::OnPlay)
-    EVT_BUTTON(Button_SetRack,  MainFrame::OnSetRack)
-    EVT_BUTTON(Button_SetNew,   MainFrame::OnSetRack)
-    EVT_BUTTON(Button_Search,   MainFrame::OnSearch)
-    EVT_BUTTON(Button_PlayBack, MainFrame::OnPlay)
-    //
-    EVT_TEXT_ENTER(Rack_ID,    MainFrame::OnTextEnter)
-    //
-    EVT_CLOSE(MainFrame::OnCloseWindow)
-    //
-    //EVT_MENU(Menu_Help,              MainFrame::OnMenuHelp)
-END_EVENT_TABLE()
-
-// ******************************
-//
-// ******************************
-
-MainFrame::MainFrame(wxPoint __UNUSED__ pos_, wxSize size_)
-    : wxFrame((wxFrame *) NULL, -1, wxT(APPNAME), wxPoint(-1, -1),
-              size_, wxDEFAULT_FRAME_STYLE, wxT(APPNAME)),
-    m_dic(NULL), m_game(NULL)
-{
-#if defined(ENABLE_RESLIST_IN_MAIN)
-    reslist = NULL;
-#endif
-    statusbar = NULL;
-    for (int i = 0 ; i < MAX_FRAME_ID; i++)
-        auxframes_ptr[i] = NULL;
-
-    wxBoxSizer *listsizer = new wxBoxSizer(wxVERTICAL);
-    rack = new wxTextCtrl(this, Rack_ID, wxU(""), wxPoint(-1, -1), wxSize(-1, 
-1), wxTE_PROCESS_ENTER);
-    listsizer->Add(rack, 0, wxEXPAND | wxALL, 1);
-    rack->SetToolTip(_("Rack"));
-    rack->Enable(false);
-#ifdef ENABLE_RESLIST_IN_MAIN
-    reslist = new GfxResult(this,(MainFrame*)this,m_game);
-    listsizer->Add(reslist, 1, wxEXPAND | wxLEFT | wxRIGHT, 1);
-#endif
-
-    InitMenu();
-
-    statusbar = CreateStatusBar(2, 0, Status_ID);
-    int ww[2] = {-1, 160};
-    statusbar->SetStatusWidths(2, ww);
-    UpdateStatusBar();
-
-    b_rackrandomset = new wxButton(this, Button_SetRack,  _(" Rack "));
-    b_rackrandomnew = new wxButton(this, Button_SetNew,   _(" Complement "));
-    b_search        = new wxButton(this, Button_Search,   _(" Search "));
-    b_back          = new wxButton(this, Button_PlayBack, _(" Back "));
-    b_play          = new wxButton(this, Button_Play,     _(" Play "));
-
-    b_rackrandomset->SetToolTip(_("Random rack"));
-    b_rackrandomset->Enable(false);
-    b_rackrandomnew->SetToolTip(_("Random complement of the rack"));
-    b_rackrandomnew->Enable(false);
-    b_search->SetToolTip(       _("Search with the current rack"));
-    b_search->Enable(false);
-    b_back->SetToolTip(         _("Go back one turn"));
-    b_back->Enable(false);
-    b_play->SetToolTip(         _("Play the selected word"));
-    b_play->Enable(false);
-
-    wxBoxSizer *buttonsizer = new wxBoxSizer(wxHORIZONTAL);
-    buttonsizer->Add(b_rackrandomset, 1, wxEXPAND | wxTOP | wxBOTTOM | wxLEFT 
, 1);
-    buttonsizer->Add(b_rackrandomnew, 1, wxEXPAND | wxTOP | wxBOTTOM          
, 1);
-    buttonsizer->Add(b_search,        1, wxEXPAND | wxTOP | wxBOTTOM          
, 1);
-    buttonsizer->Add(b_back,          1, wxEXPAND | wxTOP | wxBOTTOM          
, 1);
-    buttonsizer->Add(b_play,          1, wxEXPAND | wxTOP | wxBOTTOM | 
wxRIGHT, 1);
-
-    wxBoxSizer *mainsizer = new wxBoxSizer(wxVERTICAL);
-    mainsizer->Add(listsizer  , 1, wxEXPAND | wxVERTICAL, 0);
-    mainsizer->Add(buttonsizer, 0, wxEXPAND             , 0);
-
-    SetAutoLayout(TRUE);
-    SetSizer(mainsizer);
-    mainsizer->Fit(this);
-    mainsizer->SetSizeHints(this);
-
-    SetClientSize(size_);
-    Move(config.getFramePos(wxT(APPNAME)));
-
-    wxString dicpath = config.getDicPath();
-    try
-    {
-        Dictionary *dic = new Dictionary(dicpath.mb_str().data());
-        m_dic = dic;
-        m_game = GameFactory::Instance()->createTraining(*m_dic);
-        if (m_game)
-        {
-            m_game->start();
-        }
-    }
-    catch (std::exception &e)
-    {
-        wxCommandEvent event;
-        // This will also start a new training game indirectly
-        OnMenuConfGameDic(event);
-    }
-
-    InitFrames();
-}
-
-// ******************************
-//
-// ******************************
-
-MainFrame::~MainFrame()
-{
-    config.setFramePos(wxT(APPNAME), GetPosition());
-    config.setFrameSize(wxT(APPNAME), GetClientSize());
-
-    if (m_game != NULL)
-    {
-        GameFactory::Instance()->releaseGame(*m_game);
-        m_game = NULL;
-    }
-
-    delete m_dic;
-}
-
-// ******************************
-//
-// ******************************
-
-void
-MainFrame::InitMenu()
-{
-    // menus
-    wxMenu *menu_game = new wxMenu;
-    menu_game->Append(Menu_Game_New, _("&New game\tCtrl+N"), _("Start a new 
game"));
-    menu_game->Append(Menu_Game_NewJoker, _("New &joker game\tCtrl+J"), 
_("Start a new joker game"));
-    menu_game->AppendSeparator();
-    menu_game->Append(Menu_Game_Open, _("&Load...\tCtrl+L"), _("Load a game"));
-    menu_game->Append(Menu_Game_Save, _("&Save as...\tCtrl+S"), _("Save the 
current game"));
-    menu_game->AppendSeparator();
-    menu_game->Append(Menu_Game_Print, _("&Print...\tCtrl+P"), _("Print this 
game"));
-    menu_game->Append(Menu_Game_PrintPreview, _("Print pre&view..."), _("Print 
preview of the game"));
-#ifdef ENABLE_SAVE_POSTSCRIPT
-    menu_game->Append(Menu_Game_PrintPS, _("Print in PostS&cript..."), 
_("Print in a PostScript file"));
-#endif
-    menu_game->AppendSeparator();
-    menu_game->Append(wxID_EXIT, _("&Quit\tCtrl+Q"), _("Quit Eliot"));
-    //
-    wxMenu *menu_conf_game = new wxMenu;
-    menu_conf_game->Append(Menu_Conf_Game_Dic, _("&Dictionary...\tCtrl+D"), 
_("Choose a dictionary"));
-    menu_conf_game->Append(Menu_Conf_Game_Search, _("&Search..."), _("Search 
options"));
-    //
-    wxMenu *menu_conf_board_colour = new wxMenu;
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_Background, 
_("&Background..."), _("Background color"));
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_Lines, 
_("L&ines..."), _("Color of the lines"));
-    menu_conf_board_colour->AppendSeparator();
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_Letters, 
_("&Played letters..."), _("Color of the letters played on the board"));
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_TestLetters, 
_("&Temporary letters..."), _("Color of the letters of the temporary word"));
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_TileBack    , 
_("B&ackground of played letters..."), _("Background color of the letters 
played on the board"));
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_TestTileBack, 
_("Ba&ckground of temporary letters..."), _("Background color of the temporary 
letters on the board"));
-    menu_conf_board_colour->AppendSeparator();
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_Wx2, _("Double 
&letter..."), _("Color of the \"double letter\" squares"));
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_Wx3, _("Triple 
l&etter..."), _("Color of the \"triple letter\" squares"));
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_Lx2, _("Double 
&word..."), _("Color of the \"double word\" squares"));
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_Lx3, _("Triple 
w&ord..."), _("Color of the \"triple word\" squares"));
-    menu_conf_board_colour->AppendSeparator();
-    menu_conf_board_colour->Append(Menu_Conf_Aspect_BoardColour_Default, 
_("&Default colors"), _("Restore the default colors"));
-    //
-    wxMenu *menu_conf_board_font = new wxMenu;
-    menu_conf_board_font->Append(Menu_Conf_Aspect_Font_Search, _("&Search 
letters..."), _("Font for the search"));
-    //
-    wxMenu *menu_conf = new wxMenu;
-    menu_conf->Append(Menu_Conf_Game, _("&Game"), menu_conf_game, 
_("Configuration of the game"));
-    menu_conf->Append(Menu_Conf_Aspect_Font, _("&Fonts"), 
menu_conf_board_font, _("Configuration of the fonts"));
-    menu_conf->Append(Menu_Conf_Aspect_BoardColour, _("&Colors"), 
menu_conf_board_colour, _("Configuration of the colors"));
-    menu_conf->Append(Menu_Conf_Print, _("&Printing..."), _("Configuration of 
the printing parameters"));
-    //
-    wxMenu *menu_frame = new wxMenu;
-    menu_frame->AppendCheckItem(Menu_ShowBoard, _("&Board"), _("Game board"));
-    menu_frame->AppendCheckItem(Menu_ShowBag, _("Ba&g\tCtrl+B"), _("Remaining 
letters in the bag"));
-    menu_frame->AppendCheckItem(Menu_ShowVerif, _("&Check"), _("Check a word 
in the dictionary"));
-    menu_frame->AppendCheckItem(Menu_ShowSearch, _("&Search"), _("Search in 
the dictionary"));
-    menu_frame->AppendSeparator();
-    menu_frame->AppendCheckItem(Menu_ShowPlus1, _("&Rack + 1"), _("Letters of 
the rack plus one"));
-    menu_frame->AppendCheckItem(Menu_ShowRacc, _("&Extensions"), _("One-letter 
extensions on a word of the search"));
-    menu_frame->AppendCheckItem(Menu_ShowBenj, _("&Benjamins"), _("Benjamins 
(3-letter extensions) on a word of the search"));
-    menu_frame->AppendSeparator();
-    menu_frame->AppendCheckItem(Menu_ShowGame, _("Game &history\tCtrl+H"), 
_("Game history"));
-#ifndef ENABLE_RESLIST_IN_MAIN
-    menu_frame->Append(Menu_ShowResult, _("R&esults"), _("Results"));
-#endif
-    //
-    wxMenu *menu_help = new wxMenu;
-    menu_help->Append(wxID_ABOUT, _("&About..."), _("About Eliot"));
-    //
-    wxMenuBar *menu_bar = new wxMenuBar;
-    menu_bar->Append(menu_game, _("&Game"));
-    menu_bar->Append(menu_conf, _("&Settings"));
-    menu_bar->Append(menu_frame, _("&Windows"));
-    menu_bar->Append(menu_help, _("&Help"));
-
-    SetMenuBar(menu_bar);
-}
-
-// *******************
-//
-// *******************
-
-void
-MainFrame::OnCloseWindow(wxCloseEvent&)
-{
-    this->Destroy();
-}
-
-// *******************
-// NEW
-// *******************
-
-void
-MainFrame::OnMenuGameNew(wxCommandEvent& event)
-{
-    if (m_dic == NULL)
-    {
-        wxMessageBox(_("No dictionary selected"), _("Eliot: error"),
-                     wxICON_INFORMATION | wxOK);
-        return;
-    }
-
-    //    TODO("selection du type de partie dans OnMenuGameNew\n");
-
-    if (m_game != NULL)
-    {
-        GameFactory::Instance()->releaseGame(*m_game);
-        m_game = NULL;
-    }
-
-    m_game = GameFactory::Instance()->createTraining(*m_dic);
-    // Joker game?
-    if (event.GetId() == Menu_Game_NewJoker)
-        m_game->setVariant(Game::kJOKER);
-
-    m_game->start();
-    rack->SetValue(wxT(""));
-    InitFrames();
-#ifdef ENABLE_RESLIST_IN_MAIN
-    reslist->SetGame(m_game);
-#endif
-    // Re-enable the main buttons
-    b_rackrandomset->Enable(true);
-    b_rackrandomnew->Enable(true);
-    b_search->Enable(true);
-    b_back->Enable(true);
-    b_play->Enable(true);
-    rack->Enable(true);
-
-
-    UpdateStatusBar();
-    UpdateFrames(AuxFrame::FORCE_REFRESH);
-}
-
-// *******************
-// OPEN
-// *******************
-
-void
-MainFrame::OnMenuGameOpen(wxCommandEvent&)
-{
-    wxFileDialog dialog(this, _("Load a game"), wxT(""), wxT(""), wxT("*"), 
wxOPEN);
-    if (m_dic == NULL)
-    {
-        wxMessageBox(_("No dictionary selected"), _("Eliot: error"),
-                     wxICON_INFORMATION | wxOK);
-        return;
-    }
-    if (dialog.ShowModal() != wxID_OK)
-    {
-        return;
-    }
-
-    if (m_game != NULL)
-    {
-        GameFactory::Instance()->releaseGame(*m_game);
-        m_game = NULL;
-    }
-
-    FILE* fin;
-
-    if ((fin = fopen(dialog.GetPath().mb_str(), "rb")) == NULL)
-    {
-        wxString txt;
-        txt << _("Cannot open ") << dialog.GetPath();
-        wxMessageDialog msg(this, txt, _("Load a game"));
-        msg.ShowModal();
-        return ;
-    }
-
-    m_game = Game::load(fin, *m_dic);
-    fclose(fin);
-
-    if (m_game == NULL)
-    {
-        wxMessageDialog msg(this,
-                            _("Error while loading the game"),
-                            _("Invalid game"));
-        msg.ShowModal();
-        return;
-    }
-
-    if (m_game->getHistory().getSize() == 0)
-    {
-        wxMessageDialog msg(this,
-                            _("Error while loading the game"),
-                            _("The game is empty"));
-        msg.ShowModal();
-        return;
-    }
-
-    std::wstring r = m_game->getCurrentPlayer().getCurrentRack().toString();
-
-    rack->SetValue(wxU(r.c_str()));
-    // update gfxboard and all frames
-    InitFrames();
-    // update status bar
-#ifdef ENABLE_RESLIST_IN_MAIN
-    reslist->SetGame(m_game);
-#endif
-    UpdateStatusBar();
-    UpdateFrames(AuxFrame::FORCE_REFRESH);
-}
-
-// *******************
-// SAVE
-// *******************
-
-void
-MainFrame::OnMenuGameSave(wxCommandEvent& WXUNUSED(event))
-{
-    wxFileDialog dialog(this, _("Save the game"), wxT(""), wxT(""), wxT("*"), 
wxSAVE|wxOVERWRITE_PROMPT);
-    if (dialog.ShowModal() == wxID_OK)
-    {
-        ofstream fout(dialog.GetPath().mb_str());
-        if (fout.rdstate() == ios::failbit)
-        {
-            wxString txt;
-            txt << _("Cannot create ") << dialog.GetPath();
-            wxMessageDialog msg(this, txt, _("Save the game"));
-            msg.ShowModal();
-            return ;
-        }
-        m_game->save(fout);
-        fout.close();
-    }
-}
-
-// *******************
-// PRINT
-// *******************
-
-void
-MainFrame::OnMenuGamePrint(wxCommandEvent& WXUNUSED(event))
-{
-    // TODO: gray out the menu instead...
-    if (m_game == NULL)
-    {
-        wxMessageBox(_("No on going game"), _("Eliot: error"),
-                     wxICON_INFORMATION | wxOK);
-        return;
-    }
-    wxPrintDialogData printDialogData(config.getPrintData());
-    wxPrinter printer(&printDialogData);
-    GamePrintout printout(*m_game);
-    if (!printer.Print(this, &printout, TRUE))
-    {
-        wxMessageBox(_("Printing not done"), _("Printing"),
-                     wxOK | wxICON_ERROR);
-    }
-}
-
-void
-MainFrame::OnMenuGamePrintPreview(wxCommandEvent& WXUNUSED(event))
-{
-    // TODO: gray out the menu instead...
-    if (m_game == NULL)
-    {
-        wxMessageBox(_("No on going game"), _("Eliot: error"),
-                     wxICON_INFORMATION | wxOK);
-        return;
-    }
-    wxPrintData printdata = config.getPrintData();
-
-    wxString msg;
-    wxPrintPreview *preview = new wxPrintPreview(new GamePrintout(*m_game),
-                                                 new GamePrintout(*m_game), & 
printdata);
-    if (!preview->Ok())
-    {
-        delete preview;
-        msg << _("Print preview problem.\n")
-            << _("The printer may not be correctly initialized");
-        wxMessageBox(msg, _("Print preview"), wxOK);
-        return;
-    }
-    wxPreviewFrame *frame = new wxPreviewFrame(preview, this, _("Printing"),
-                                               wxPoint(-1, -1), wxSize(600, 
550));
-    frame->Centre(wxBOTH);
-    frame->Initialize();
-    frame->Show(TRUE);
-}
-
-void
-MainFrame::OnMenuGamePrintPS(wxCommandEvent& WXUNUSED(event))
-{
-#ifdef ENABLE_SAVE_POSTSCRIPT
-    // TODO: gray out the menu instead...
-    if (m_game == NULL)
-    {
-        wxMessageBox(_("No on going game"), _("Eliot: error"),
-                     wxICON_INFORMATION | wxOK);
-        return;
-    }
-    wxFileDialog dialog(this, _("Print to a PostScript file"), wxT(""), 
wxT(""), wxT("*.ps"), wxSAVE|wxOVERWRITE_PROMPT);
-    if (dialog.ShowModal() == wxID_OK)
-    {
-        wxPrintData printdataPS;
-        printdataPS.SetPrintMode(wxPRINT_MODE_FILE);
-        printdataPS.SetFilename(dialog.GetPath());
-        printdataPS.SetPaperId(wxPAPER_A4);
-        printdataPS.SetQuality(wxPRINT_QUALITY_HIGH);
-        printdataPS.SetOrientation(wxPORTRAIT);
-
-        wxPostScriptDC printps(printdataPS);
-        if (printps.Ok())
-        {
-            wxPrintDialogData printDialogData(printdataPS);
-            wxPostScriptPrinter printer(&printDialogData);
-            GamePrintout printout(*m_game);
-            if (!printer.Print(this, &printout, FALSE))
-            {
-                wxMessageBox(_("Printing not done"),
-                             _("PostScript printing"), wxOK | wxICON_ERROR);
-            }
-        }
-        else
-        {
-            wxMessageBox(_("Cannot initialize PostScript printer"),
-                         _("PostScript printing"), wxOK | wxICON_ERROR);
-        }
-    }
-#endif
-}
-
-
-void
-MainFrame::OnMenuGameQuit(wxCommandEvent& WXUNUSED(event))
-{
-    Close(TRUE);
-}
-
-
-
-// *******************
-// Dictionary Loading
-// *******************
-
-void
-MainFrame::OnMenuConfGameDic(wxCommandEvent& WXUNUSED(event))
-{
-    wxFileDialog dialog(this, _("Choose a dictionary"), wxT(""), 
wxT("*.dawg"), wxT("*.dawg"), wxOPEN);
-    if (dialog.ShowModal() == wxID_OK)
-    {
-        wxString dicpath = dialog.GetPath();
-        try
-        {
-            Dictionary *dic = new Dictionary(dicpath.mb_str().data());
-            delete m_dic;
-            m_dic = dic;
-            config.setDicPath(dialog.GetPath(), 
::wxFileNameFromPath(dialog.GetPath()));
-            wxCommandEvent event;
-            OnMenuGameNew(event);
-        }
-        catch (std::exception &e)
-        {
-            wxMessageDialog dlg(NULL, wxU(e.what()), wxT(APPNAME));
-            dlg.ShowModal();
-        }
-    }
-}
-
-// ****************
-// MENU CONF SEARCH
-// ****************
-
-void
-MainFrame::OnMenuConfGameSearch(wxCommandEvent& WXUNUSED(event))
-{
-    ConfSearchDlg dlg(this);
-    dlg.ShowModal();
-}
-
-// ****************
-// MENU CONF PRINT
-// ****************
-
-void
-MainFrame::OnMenuConfPrint(wxCommandEvent& WXUNUSED(event))
-{
-    ConfDimDlg dlg(this, config.getPrintData(), config.getPageSetupData());
-    if (dlg.ShowModal() == wxID_OK)
-    {
-        config.setPrintData(dlg.getPrintData());
-        config.setPageSetupData(dlg.getPageSetupData());
-    }
-}
-
-// ****************
-// MENU CONF FONTS
-// ****************
-
-void
-MainFrame::OnMenuConfAspectFont(wxCommandEvent& event)
-{
-    int id;
-    wxString attr;
-
-    id = event.GetId();
-    if (! GetMenuBar()->FindItem(id))
-        return;
-
-    switch (id)
-    {
-        case Menu_Conf_Aspect_Font_Search:  attr = wxString(LISTFONT); break;
-        case Menu_Conf_Aspect_Font_Board:   attr = wxString(BOARDFONT); break;
-        case Menu_Conf_Aspect_Font_Default: attr = wxU("Default"); break;
-        default: INCOMPLETE; break;
-    }
-
-    if (attr == wxU("Default"))
-        config.setFontDefault();
-    else
-        config.setFont(attr, config.ChooseFont(this, config.getFont(attr)));
-
-    UpdateFrames(AuxFrame::FORCE_REFRESH);
-}
-
-// ************************
-// MENU CONF BOARD COLOURS
-// ************************
-
-void
-MainFrame::OnMenuConfAspectBoardColour(wxCommandEvent& event)
-{
-    int id;
-    wxString attr;
-
-    id = event.GetId();
-    if (! GetMenuBar()->FindItem(id))
-        return;
-
-    switch (id)
-    {
-        case Menu_Conf_Aspect_BoardColour_Lines:        attr = 
wxString(BCOLOURLINES); break;
-        case Menu_Conf_Aspect_BoardColour_Wx2:          attr = 
wxString(BCOLOURWX2); break;
-        case Menu_Conf_Aspect_BoardColour_Wx3:          attr = 
wxString(BCOLOURWX3); break;
-        case Menu_Conf_Aspect_BoardColour_Lx2:          attr = 
wxString(BCOLOURLX2); break;
-        case Menu_Conf_Aspect_BoardColour_Lx3:          attr = 
wxString(BCOLOURLX3); break;
-        case Menu_Conf_Aspect_BoardColour_Background:   attr = 
wxString(BCOLOURBACKGROUND); break;
-        case Menu_Conf_Aspect_BoardColour_Letters:      attr = 
wxString(BCOLOURLETTERS); break;
-        case Menu_Conf_Aspect_BoardColour_TestLetters:  attr = 
wxString(BCOLOURTSTLETTERS); break;
-        case Menu_Conf_Aspect_BoardColour_TileBack:     attr = 
wxString(BTILEBACKGROUND); break;
-        case Menu_Conf_Aspect_BoardColour_TestTileBack: attr = 
wxString(BTSTTILEBACKGROUND); break;
-        case Menu_Conf_Aspect_BoardColour_Default:      attr = wxU("Default"); 
break;
-        default: INCOMPLETE; break;
-    }
-
-    if (attr == wxU("Default"))
-        config.setColourDefault();
-    else
-        config.setColour(attr, config.ChooseColour(this, 
config.getColour(attr)));
-
-    UpdateFrames(AuxFrame::FORCE_REFRESH);
-}
-
-//**************************************************************************************
-//   MENU HELP
-//**************************************************************************************
-
-void
-MainFrame::OnMenuHelpAbout(wxCommandEvent& WXUNUSED(event))
-{
-    wxString msg;
-    msg.Printf(wxT("Eliot %s\n\n"), wxT(VERSION));
-    msg << wxT("Copyright (C) 1999-2007 - Antoine Fraboulet & Olivier 
Teuliere\n\n");
-    msg << _("This program is free software; you can redistribute it and/or 
modify " \
-             "it under the terms of the GNU General Public License as 
published by " \
-             "the Free Software Foundation; either version 2 of the License, 
or " \
-             "(at your option) any later version.");
-    wxMessageBox(msg, _("About Eliot"), wxICON_INFORMATION | wxOK);
-}
-
-//**************************************************************************************
-// BUTTONS
-//**************************************************************************************
-
-void
-MainFrame::OnSetRack(wxCommandEvent& event)
-{
-    int id;
-
-    Game::set_rack_mode mode = Game::RACK_NEW;
-    debug("OnSetRack ");
-    switch ((id = event.GetId()))
-    {
-        case Button_SetRack:
-            mode = Game::RACK_ALL;
-            debug("PlayedRack::RACK_ALL\n");
-            break;
-        case Button_SetNew:
-            mode = Game::RACK_NEW;
-            debug("PlayedRack::RACK_NEW\n");
-            break;
-        case Button_SetManual:
-            mode = Game::RACK_MANUAL;
-            debug("PlayedRack::RACK_MANUAL\n");
-            break;
-        default:
-            return;
-    }
-    SetRack(mode);
-}
-
-void
-MainFrame::OnSearch(wxCommandEvent& WXUNUSED(event))
-{
-    debug("MainFrame::OnSearch\n");
-    // check if rack has been set manually
-    SetRack(Game::RACK_MANUAL,rack->GetValue());
-    Search();
-}
-
-void
-MainFrame::OnTextEnter(wxCommandEvent& WXUNUSED(event))
-{
-    debug("MainFrame::OnTextEnter -> %s\n",(const 
char*)rack->GetValue().mb_str());
-    SetRack(Game::RACK_MANUAL,rack->GetValue());
-    Search();
-}
-
-void
-MainFrame::OnPlay(wxCommandEvent& event)
-{
-    int dir = 1;
-    int id = event.GetId();
-    switch (id)
-    {
-        case Button_Play:
-            dir = 1;
-            break;
-        case Button_PlayBack:
-            dir = -1;
-            break;
-        default:
-            break;
-    }
-    Play(dir);
-}
-
-//*********************************
-// SPECIAL FRAMES
-//*********************************
-
-void
-MainFrame::InitFrames()
-{
-    debug("InitFrames start : \n");
-    if (m_game == NULL)
-    {
-        debug("m_game == NULL\n");
-        return;
-    }
-
-    for (int i = 0 ; i < MAX_FRAME_ID; i++)
-    {
-        debug("   delete frame %d\n",i);
-        delete auxframes_ptr[i];
-    }
-
-    auxframes_ptr[ID_Frame_Verif]  = new VerifFrame (this, m_game->getDic());
-    debug("0 : Verif\n");
-    auxframes_ptr[ID_Frame_Search] = new SearchFrame(this, m_game->getDic());
-    debug("1 : Search\n");
-    auxframes_ptr[ID_Frame_Plus1]  = new Plus1Frame (this, m_game);
-    debug("2 : Plus1\n");
-    auxframes_ptr[ID_Frame_Racc]   = new RaccFrame  (this, m_game);
-    debug("3 : Racc\n");
-    auxframes_ptr[ID_Frame_Benj]   = new BenjFrame  (this, m_game);
-    debug("4 : Benj\n");
-    auxframes_ptr[ID_Frame_Bag]    = new BagFrame   (this, *m_game);
-    debug("5 : Bag\n");
-    auxframes_ptr[ID_Frame_Board]  = new BoardFrame (this, *m_game);
-    debug("6 : Board\n");
-    auxframes_ptr[ID_Frame_Game]   = new GameFrame  (this, *m_game);
-    debug("7 : Game\n");
-#ifndef ENABLE_RESLIST_IN_MAIN
-    auxframes_ptr[ID_Frame_Result] = new ResultFrame(this, m_game);
-    debug("8 : Result\n");
-#endif
-
-    for (int i = MIN_FRAME_ID; i < MAX_FRAME_ID; i++)
-    {
-        if (auxframes_ptr[i] != NULL)
-        {
-            auxframes_ptr[i]->Reload();
-            debug("reload %d\n",i);
-        }
-    }
-
-    // Check the corresponding menu item if the window is visible
-    GetMenuBar()->Check(Menu_ShowVerif, 
auxframes_ptr[ID_Frame_Verif]->IsShown());
-    GetMenuBar()->Check(Menu_ShowSearch, 
auxframes_ptr[ID_Frame_Search]->IsShown());
-    GetMenuBar()->Check(Menu_ShowPlus1, 
auxframes_ptr[ID_Frame_Plus1]->IsShown());
-    GetMenuBar()->Check(Menu_ShowRacc, 
auxframes_ptr[ID_Frame_Racc]->IsShown());
-    GetMenuBar()->Check(Menu_ShowBenj, 
auxframes_ptr[ID_Frame_Benj]->IsShown());
-    GetMenuBar()->Check(Menu_ShowBag, auxframes_ptr[ID_Frame_Bag]->IsShown());
-    GetMenuBar()->Check(Menu_ShowBoard, 
auxframes_ptr[ID_Frame_Board]->IsShown());
-    GetMenuBar()->Check(Menu_ShowGame, 
auxframes_ptr[ID_Frame_Game]->IsShown());
-#ifndef ENABLE_RESLIST_IN_MAIN
-    GetMenuBar()->Check(Menu_ShowResult, 
auxframes_ptr[ID_Frame_Result]->IsShown());
-#endif
-    debug("InitFrames end ok.\n");
-}
-
-void
-MainFrame::OnMenuShowFrame(wxCommandEvent& event)
-{
-    int id;
-    id = event.GetId();
-
-    if (!GetMenuBar()->FindItem(id))
-        return;
-    id -= IDBASE;
-
-    if ((id < 0) || (id >= MAX_FRAME_ID))
-    {
-        INCOMPLETE;
-        return;
-    }
-
-    if (auxframes_ptr[id] == NULL)
-    {
-        debug("ShowFrame: auxframes_ptr[%d] == NULL\n", id);
-        return;
-    }
-    auxframes_ptr[id]->SwitchDisplay();
-    debug("ShowFrame: SwitchDisplay frame %d\n",id);
-}
-
-// *********************************
-// UPDATES
-// *********************************
-
-void
-MainFrame::UpdateFrames(AuxFrame::refresh_t force)
-{
-    for (int id = 0; id < MAX_FRAME_ID; id++)
-    {
-        if (auxframes_ptr[id])
-        {
-            auxframes_ptr[id]->Refresh(force);
-        }
-    }
-#ifdef ENABLE_RESLIST_IN_MAIN
-    if (reslist)
-    {
-        reslist->Refresh();
-    }
-#endif
-}
-
-void
-MainFrame::UpdateStatusBar()
-{
-    wxString text;
-    if (statusbar)
-    {
-        text = config.getDicName() + wxT(" ") + config.getTileName();
-        statusbar->SetStatusText(text, 0);
-
-        if (m_game)
-        {
-            text = wxT("");
-            text << _("turn:") << wxT(" ") << (m_game->getHistory().getSize() 
+ 1) << wxT(" ");
-            text << _("points:") << wxT(" ") << 
(m_game->getCurrentPlayer().getPoints());
-            statusbar->SetStatusText(text, 1);
-        }
-    }
-}
-
-// *********************************
-// ACTIONS
-// *********************************
-
-// Can come from a
-//    BUTTON ALL -> mode = Game::RACK_ALL, srack = empty
-//    BUTTON NEW -> mode = Game::RACK_NEW, srack = empty
-//    TEXT_ENTER -> mode = Game::RACK_MANUAL, srack = letters
-//    Play       -> mode = Game::RACK_MANUAL, srack = letters
-
-void
-MainFrame::SetRack(Game::set_rack_mode mode, wxString srack)
-{
-    wxString msg;
-    bool check = config.getRackChecking();
-
-    if (m_game == NULL)
-    {
-        return;
-    }
-    static_cast<Training*>(m_game)->removeTestPlay();
-    int res = static_cast<Training*>(m_game)->setRack(mode, check, 
srack.c_str());
-
-    switch (res)
-    {
-        case 0x00: /* ok */
-            debug("SetRack Ok :: ");
-            break;
-        case 0x01:
-            msg = _("The bag doesn't contain enough letters\nfor a new rack.");
-            wxMessageBox(msg, _("Rack validation"), wxICON_ERROR | wxOK);
-            return;
-        case 0x02:
-            msg = _("The rack must contain at least 2 consonants and 2 
vowels.");
-            wxMessageBox(msg, _("Rack validation"), wxICON_ERROR | wxOK);
-            return;
-        case 0x03:
-            msg = _("The rack contains invalid letters for the current 
dictionary");
-            wxMessageBox(msg, _("Rack validation"), wxICON_ERROR | wxOK);
-            break;
-        default:
-            statusbar->SetStatusText(_("The rack has been modified manually"), 
0);
-            break;
-    }
-
-    std::wstring r = m_game->getCurrentPlayer().getCurrentRack().toString();
-    debug("MainFrame::SetRack : setvalue %ls\n",r.c_str());
-    rack->SetValue(wxU(r.c_str()));
-    UpdateFrames();
-    UpdateStatusBar();
-}
-
-void
-MainFrame::Search()
-{
-    if (m_game == NULL)
-    {
-        return;
-    }
-    static_cast<Training*>(m_game)->removeTestPlay();
-#ifdef ENABLE_RESLIST_IN_MAIN
-    reslist->Search();
-#else
-    if (auxframes_ptr[ ID_Frame_Result ])
-    {
-        ((ResultFrame*)(auxframes_ptr[ ID_Frame_Result ]))->Search();
-    }
-#endif
-    UpdateFrames();
-    UpdateStatusBar();
-}
-
-void
-MainFrame::Play(int n)
-{
-    if (m_game == NULL)
-    {
-        return;
-    }
-    static_cast<Training*>(m_game)->removeTestPlay();
-    if (n < 0)
-    {
-        debug("MainFrame::Play back %d\n",n);
-        m_game->back(- n);
-    }
-    else
-    {
-        int n = 0;
-        debug("MainFrame::Play +%d\n",n);
-#ifdef ENABLE_RESLIST_IN_MAIN
-        n = reslist->GetSelected();
-#else
-        n = ((ResultFrame*)auxframes_ptr[ ID_Frame_Result ])->GetSelected();
-#endif
-        if (n > -1)
-        {
-            static_cast<Training*>(m_game)->playResult(n);
-        }
-    }
-    wxString r = 
wxU(m_game->getCurrentPlayer().getCurrentRack().toString().c_str());
-    rack->SetValue(r);
-    UpdateFrames();
-    UpdateStatusBar();
-}
-
-void
-MainFrame::TestPlay(int n)
-{
-    if (m_game == NULL)
-    {
-        return;
-    }
-    static_cast<Training*>(m_game)->removeTestPlay();
-    static_cast<Training*>(m_game)->testPlay(n);
-    UpdateFrames();
-    UpdateStatusBar();
-}
-
-/****************************************************************/
-/****************************************************************/
-
-/// Local Variables: / mode: c++ / mode: hs-minor / c-basic-offset: 4 /
-//indent-tabs-mode: nil / End:

Index: wxwin/mainframe.h
===================================================================
RCS file: wxwin/mainframe.h
diff -N wxwin/mainframe.h
--- wxwin/mainframe.h   8 Jan 2008 13:52:43 -0000       1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,119 +0,0 @@
-// Joker game?* Eliot                                                          
           */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/* address@hidden                                                 */
-/*                                                                           */
-/* This program is free software; you can redistribute it and/or modify      */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* This program is distributed in the hope that it will be useful,           */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   mainframe.h
- *  \brief  Main frame for the Eliot GUI
- *  \author Antoine Fraboulet
- *  \date   2005
- */
-
-#ifndef _MAINFRAME_H_
-#define _MAINFRAME_H_
-
-#include "dic.h"
-#include "game.h"
-#include "auxframes.h"
-
-class MainFrame: public wxFrame
-{
-private:
-
-    const Dictionary  *m_dic;
-    Game        *m_game;
-    ConfigDB    config;
-    AuxFrame    *auxframes_ptr[MAX_FRAME_ID];
-
-    wxTextCtrl  *rack;
-#ifdef ENABLE_RESLIST_IN_MAIN
-    GfxResult   *reslist;
-#endif
-
-    wxButton    *b_play;
-    wxButton    *b_rackrandomset;
-    wxButton    *b_rackrandomnew;
-    wxButton    *b_search;
-    wxButton    *b_back;
-
-    wxStatusBar *statusbar;
-
-    void InitFrames();
-    void InitMenu();
-    void UpdateStatusBar();
-
-public:
-    MainFrame(wxPoint,wxSize);
-    virtual ~MainFrame();
-
-    // *******
-    // Actions
-    // *******
-    void SetRack(Game::set_rack_mode, wxString = wxT(""));
-    void Search();
-    void Play(int);
-    void TestPlay(int);
-
-    void UpdateFrames(AuxFrame::refresh_t force = AuxFrame::REFRESH);
-
-    // *****
-    // Menus
-    // *****
-    void OnMenuGameNew          (wxCommandEvent& event);
-    void OnMenuGameOpen         (wxCommandEvent& event);
-    void OnMenuGameSave         (wxCommandEvent& event);
-    void OnMenuGamePrint        (wxCommandEvent& event);
-    void OnMenuGamePrintPreview (wxCommandEvent& event);
-    void OnMenuGamePrintPS      (wxCommandEvent& event);
-    void OnMenuGameQuit         (wxCommandEvent& event);
-
-    void OnMenuConfGameDic      (wxCommandEvent& event);
-    void OnMenuConfGameSearch   (wxCommandEvent& event);
-
-    void OnMenuConfPrint        (wxCommandEvent& event);
-
-    void OnMenuConfAspectFont        (wxCommandEvent& event);
-    void OnMenuConfAspectBoardColour (wxCommandEvent& event);
-
-    void OnMenuShowFrame        (wxCommandEvent& event);
-
-    void OnMenuHelpAbout        (wxCommandEvent& event);
-
-    // *******
-    // Buttons
-    // *******
-    void OnPlay     (wxCommandEvent& event);
-    void OnSetRack  (wxCommandEvent& event);
-    void OnSearch   (wxCommandEvent& event);
-    void OnPlayBack (wxCommandEvent& event);
-    void OnTextEnter(wxCommandEvent& event);
-
-    // *******
-    // Objects
-    // *******
-    void OnCloseWindow       (wxCloseEvent& event);
-
-    DECLARE_EVENT_TABLE()
-};
-
-#endif
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// End:

Index: wxwin/printout.cc
===================================================================
RCS file: wxwin/printout.cc
diff -N wxwin/printout.cc
--- wxwin/printout.cc   8 Jan 2008 13:52:43 -0000       1.12
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,338 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-#include <stdio.h>
-
-#include "wx/wx.h"
-
-#include "ewx.h"
-
-#include "dic.h"
-#include "pldrack.h"
-#include "round.h"
-#include "turn.h"
-#include "player.h"
-#include "turn.h"
-#include "game.h"
-
-#include "configdb.h"
-#include "printout.h"
-
-bool
-GamePrintout::OnPrintPage(int page)
-{
-    wxDC *dc = GetDC();
-    if (dc)
-    {
-        if (page == 1)
-            DrawPage(dc);
-
-        return TRUE;
-    }
-    else
-        return FALSE;
-}
-
-bool
-GamePrintout::HasPage(int pageNum)
-{
-    return pageNum == 1;
-}
-
-bool
-GamePrintout::OnBeginDocument(int startPage, int endPage)
-{
-    if (!wxPrintout::OnBeginDocument(startPage, endPage))
-        return FALSE;
-
-    return TRUE;
-}
-
-void
-GamePrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int 
*selPageTo)
-{
-    *minPage = 1;
-    *maxPage = 1;
-    *selPageFrom = 1;
-    *selPageTo = 1;
-}
-
-void
-GamePrintout::SetSpaces(wxString* str, int spaces)
-{
-    size_t i;
-    wxString strs = wxT("");
-    if (str->Len() == 0)
-        return ;
-    for(i=0; i < (str->Len()-1); i++) {
-        strs = strs + str->GetChar(i);
-        strs = strs + wxString(wxChar(' '), spaces);
-    }
-    strs = strs + str->GetChar(str->Len() - 1);
-    *str = strs;
-}
-
-void
-GamePrintout::DrawStringJustif(wxDC *dc, wxString *str, long x, long y, long w,
-                               enum Justif justif, int spaces)
-{
-    long  wtext,htext;
-
-    SetSpaces(str,spaces);
-    dc->GetTextExtent(*str,&wtext,&htext);
-
-    switch (justif)
-    {
-        case LEFT:
-            break;
-        case CENTER:
-            x = x + (w - wtext) / 2;
-            break;
-        case RIGHT:
-            x = x + w - wtext;
-            break;
-    }
-    dc->DrawText(*str,x,y);
-}
-
-void
-GamePrintout::DrawHeadingLine(wxDC *dc, long __UNUSED__ heightH, float 
mmToLogical)
-{
-    long i,x,w,y;
-    wxString str;
-
-    x = config.getMarginX() + config.getDxBegin();
-    y = config.getMarginY() + config.getDyT1();
-    for (i = 0; i < 5; i++)
-    {
-        w = config.getDxText(i);
-        str = config.getNameH(i);
-        DrawStringJustif(dc,&str,
-                         (long) (mmToLogical*x),
-                         (long) (mmToLogical*y),
-                         (long) (mmToLogical*w),
-                         config.getJustifH(i),
-                         config.getSpacesH(i));
-        x += w + config.getDxEnd() + config.getDxBegin();
-    }
-}
-
-void
-GamePrintout::DrawTextLine(wxDC *dc, int numline, long basey, long heightT, 
float mmToLogical)
-{
-#define DIM(i)                                         \
-     x += w + config.getDxEnd() + config.getDxBegin(); \
-     w = config.getDxText(i)
-
-#define DRW(i)                                         \
-     DrawStringJustif(dc,&str,(long) (mmToLogical*x),  \
-                              (long) (mmToLogical*y),  \
-                              (long) (mmToLogical*w),  \
-                              config.getJustifT(i),    \
-                              config.getSpacesT(i))
-
-    long x,y,w;
-    wxString str;
-
-    x = config.getMarginX() + config.getDxBegin();
-    y = basey + config.getDyT1()
-        + numline * (config.getDyT1() + heightT + config.getDyT2());
-    w = config.getDxText(0);
-    str = wxT("");
-
-    int NRounds = m_game.getHistory().getSize();
-
-    // num
-    if (numline < NRounds)
-    {
-        str = wxT("");
-        str << (numline + 1);
-        DRW(0);
-    }
-    // rack
-    DIM(1);
-    if (numline < NRounds)
-    {
-        str = 
wxU(m_game.getHistory().getTurn(numline).getPlayedRack().toString().c_str());
-        DRW(1);
-    }
-    // word
-    DIM(2);
-    if ((numline > 0) && (numline <= NRounds))
-    {
-        str = wxU(m_game.getHistory().getTurn(numline - 
1).getMove().getRound().getWord().c_str());
-        DRW(2);
-    }
-    // pos
-    DIM(3);
-    if ((numline > 0) && (numline <= NRounds))
-    {
-        str = wxU(m_game.getHistory().getTurn(numline - 
1).getMove().getRound().getCoord().toString().c_str());
-        DRW(3);
-    }
-    // pts
-    DIM(4);
-    if ((numline > 0) && (numline <= NRounds))
-    {
-        str = wxT("");
-        str << m_game.getHistory().getTurn(numline - 
1).getMove().getRound().getPoints();
-        DRW(4);
-    }
-    // total points
-    if (numline == NRounds + 1)
-    {
-        str = wxT("");
-        str << m_game.getPlayer(0).getPoints();
-        DRW(4);
-    }
-#undef DIM
-#undef DRW
-}
-
-void
-GamePrintout::DrawPage(wxDC *dc)
-{
-/*
- * Scaling.
- */
-     // Get the logical pixels per inch of screen and printer
-     int dcSizeW, dcSizeH;
-     int pageWidthPix, pageHeightPix;
-     int ppiScreenX, ppiScreenY;
-     int ppiPrinterX, ppiPrinterY;
-
-     GetPPIScreen(&ppiScreenX, &ppiScreenY);
-     GetPPIPrinter(&ppiPrinterX, &ppiPrinterY);
-     dc->GetSize(&dcSizeW, &dcSizeH);
-     GetPageSizePixels(&pageWidthPix, &pageHeightPix);
-
-     // This scales the DC so that the printout roughly represents the
-     // the screen scaling. The text point size _should_ be the right size
-     // but in fact is too small for some reason. This is a detail that will
-     // need to be addressed at some point but can be fudged for the
-     // moment.
-     float scale = (float)((float)ppiPrinterX/(float)ppiScreenX);
-     // Now we have to check in case our real page size is reduced
-     // (e.g. because we're drawing to a print preview memory DC)
-
-     // If printer pageWidth == current DC width, then this doesn't
-     // change. But w might be the preview bitmap width, so scale down.
-     float overallScaleX = scale * (float)(dcSizeW/(float)pageWidthPix);
-     float overallScaleY = scale * (float)(dcSizeH/(float)pageHeightPix);
-     dc->SetUserScale(overallScaleX, overallScaleY);
-     float mmToLogical = (float)(ppiPrinterX/(scale*25.1));
-
-     long i,basey;
-     long heightH, heightT;
-     wxFont Hfont = config.getFont(PRINTHFONT);
-     wxFont Tfont = config.getFont(PRINTTFONT);
-
-#if wxCHECK_VERSION(2,5,0)
-     wxColour wxBlack = wxTheColourDatabase->Find(wxT("BLACK"));
-     wxColour wxWhite = wxTheColourDatabase->Find(wxT("WHITE"));
-     wxPen    *blackPen = wxThePenList->FindOrCreatePen(wxBlack, 1, wxSOLID);
-     wxBrush  *whiteBrush = wxTheBrushList->FindOrCreateBrush(wxWhite, 
wxSOLID);
-#else
-     wxColour *wxBlack = wxTheColourDatabase->FindColour(wxT("BLACK"));
-     wxColour *wxWhite = wxTheColourDatabase->FindColour(wxT("WHITE"));
-     wxPen    *blackPen = wxThePenList->FindOrCreatePen(*wxBlack, 1, wxSOLID);
-     wxBrush  *whiteBrush = wxTheBrushList->FindOrCreateBrush(*wxWhite, 
wxSOLID);
-#endif
-
-
-     dc->SetPen(* blackPen);
-     dc->SetBrush(* whiteBrush);
-     dc->SetFont(Hfont);
-     heightH = (long) (dc->GetCharHeight() / mmToLogical);
-     DrawHeadingLine(dc,heightH,mmToLogical);
-     basey = config.getMarginY() + config.getDyH1() + heightH + 
config.getDyH2();
-     dc->SetFont(Tfont);
-     heightT = (long) (dc->GetCharHeight() / mmToLogical);
-     int NRounds = m_game.getHistory().getSize();
-     for(i=0; i < (NRounds+3);i++)
-     {
-         DrawTextLine(dc,i,basey,heightT,mmToLogical);
-     }
-     dc->SetFont(wxNullFont);
-     DrawGameLines(dc,heightH,heightT,mmToLogical,overallScaleX,overallScaleY);
-}
-
-void
-GamePrintout::DrawGameLines(wxDC *dc, long heightH, long heightT,
-                            float mmToLogical, float overallScaleX,
-                            float overallScaleY)
-{
-    int i, nTextLines;
-    long col,lin, StartX, StartY;
-    long HeadHeight, LineHeight;
-    long TextStart, TextHeight, TextBottom, TextRight;
-
-    float SCALE = config.getPrintLineScale();
-    dc->SetUserScale(SCALE,SCALE);
-
-    int NRounds = m_game.getHistory().getSize();
-    nTextLines = NRounds + 2;
-    StartX = config.getMarginX();
-    StartY = config.getMarginY();
-
-    HeadHeight = config.getDyH1() + heightH + config.getDyH2();
-    LineHeight = config.getDyT1() + heightT + config.getDyT2();
-    TextStart  = StartY + HeadHeight;
-    TextHeight = nTextLines * LineHeight;
-    TextBottom = TextStart  + TextHeight;
-
-    //
-    // columns
-    //
-    float scalefactorX = mmToLogical * overallScaleX / SCALE;
-    float scalefactorY = mmToLogical * overallScaleY / SCALE;
-
-    col = StartX;
-    for (i = 0; i <= 5; i++)
-    {
-        dc->DrawLine((long) (col * scalefactorX),
-                     (long) (StartY * scalefactorY),
-                     (long) (col * scalefactorX),
-                     (long) (TextBottom * scalefactorY));
-        col += i == 5 ? 0 : config.getDxBegin() + config.getDxText(i) + 
config.getDxEnd();
-    }
-    TextRight = col;
-    //
-    // rows
-    //
-    lin = StartY;
-    for (i = 0; i <= (nTextLines + 1); i++)
-    {
-        dc->DrawLine((long) (StartX * scalefactorX),
-                     (long) (lin * scalefactorY),
-                     (long) (TextRight * scalefactorX),
-                     (long) (lin * scalefactorY));
-        lin = StartY + HeadHeight + i * LineHeight;
-    }
-}
-
-
-/****************************************************************/
-/****************************************************************/
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// End:

Index: wxwin/printout.h
===================================================================
RCS file: wxwin/printout.h
diff -N wxwin/printout.h
--- wxwin/printout.h    26 Dec 2005 22:59:57 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,58 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-#ifndef _PRINTOUT_H
-#define _PRINTOUT_H
-
-#include <ctype.h>
-#include "wx/print.h"
-
-class GamePrintout : public wxPrintout
-{
-private:
-    Game& m_game;
-    ConfigDB config;
-
-    void SetSpaces(wxString*, int);
-    void DrawStringJustif(wxDC*,wxString*,long,long,long,enum Justif, int);
-    void DrawHeadingLine(wxDC*, long, float);
-    void DrawTextLine(wxDC*, int, long, long, float);
-    void DrawGameLines(wxDC*, long, long, float, float, float);
-public:
-
-    GamePrintout(Game& iGame, char* title = APPNAME)
-        : wxPrintout(wxU(title)), m_game(iGame) {}
-
-    bool OnPrintPage(int);
-    bool HasPage(int);
-    bool OnBeginDocument(int startPage, int endPage);
-    void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int 
*selPageTo);
-    void DrawPage(wxDC *dc);
-};
-
-#endif
-
-/****************************************************************/
-/****************************************************************/
-
-/// Local Variables:
-/// mode: c++
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// End:

Index: wxwin/searchpanel.cc
===================================================================
RCS file: wxwin/searchpanel.cc
diff -N wxwin/searchpanel.cc
--- wxwin/searchpanel.cc        31 Aug 2008 11:48:22 -0000      1.19
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,338 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-/**
- *  \file   searchpanel.cc
- *  \brief  Panel used in Eliot search window
- *  \author Antoine Fraboulet
- *  \date   2005
- */
-
-#include <string.h>
-#include "wx/wx.h"
-
-#include "ewx.h"
-#include "dic.h"
-#include "dic_exception.h"
-#include "searchpanel.h"
-#include "tile.h"
-#include "configdb.h"
-
-enum {
-  ID_PANEL_CROSS,
-  ID_PANEL_PLUS1,
-  ID_PANEL_REGEXP,
-
-  ID_LIST,
-  ID_TEXT,
-  ID_OPTION1,
-  ID_OPTION2,
-  ID_OPTION3
-};
-
-// ************************************************************
-// ************************************************************
-// ************************************************************
-
-class SimpleSearchPanel : public wxPanel
-{
-protected:
-  ConfigDB   config;
-  const Dictionary *dic;
-  wxTextCtrl *t;
-  wxListBox  *l;
-  wxBoxSizer *sizer;
-
-  int  check_dic();
-  void check_end();
-  void panel_build();
-  virtual void panel_options() = 0;
-public:
-  SimpleSearchPanel(wxWindow* parent, int id, const Dictionary &d) : 
wxPanel(parent,id) { dic = &d; }
-  virtual void compute_char(wxCommandEvent&) {}
-  virtual void compute_enter(wxCommandEvent&) {}
-  DECLARE_EVENT_TABLE()
-};
-
-BEGIN_EVENT_TABLE(SimpleSearchPanel, wxPanel)
-  EVT_TEXT      (ID_TEXT   , SimpleSearchPanel::compute_char)
-  EVT_TEXT_ENTER(ID_TEXT   , SimpleSearchPanel::compute_enter)
-  EVT_TEXT_ENTER(ID_OPTION1, SimpleSearchPanel::compute_enter)
-  EVT_TEXT_ENTER(ID_OPTION2, SimpleSearchPanel::compute_enter)
-  EVT_TEXT_ENTER(ID_OPTION3, SimpleSearchPanel::compute_enter)
-END_EVENT_TABLE()
-
-void SimpleSearchPanel::panel_build()
-{
-  t = new 
wxTextCtrl(this,ID_TEXT,wxT(""),wxPoint(0,0),wxSize(-1,-1),wxTE_PROCESS_ENTER);
-  t->SetFont(config.getFont(LISTFONT));
-  l = new wxListBox(this,ID_LIST);
-  l->SetFont(config.getFont(LISTFONT));
-  l->Show(TRUE);
-
-  sizer = new wxBoxSizer( wxVERTICAL );
-  sizer->Add(t, 0, wxEXPAND | wxALL, 0);
-  panel_options();
-  sizer->Add(l, 1, wxEXPAND | wxALL, 0);
-
-  SetAutoLayout(TRUE);
-  SetSizer(sizer);
-  sizer->Fit(this);
-  sizer->SetSizeHints(this);
-}
-
-int
-SimpleSearchPanel::check_dic()
-{
-  wxString msg = wxT("");
-  if (dic == NULL)
-    {
-      l->Clear();
-      msg << _("No dictionary");
-      l->Append(msg);
-      return 0;
-    }
-  return 1;
-}
-
-void
-SimpleSearchPanel::check_end()
-{
-  if (l->GetCount() == 0)
-    {
-      l->Append(_("No result"));
-    }
-}
-
-// ************************************************************
-// ************************************************************
-// ************************************************************
-
-class PCross : public SimpleSearchPanel
-{
-protected:
-  virtual void panel_options() {}
-public:
-  void compute_char(wxCommandEvent&) {}
-  void compute_enter(wxCommandEvent&);
-  PCross(wxWindow* parent, int id, const Dictionary &d) : 
SimpleSearchPanel(parent,id,d) { panel_build(); }
-};
-
-void
-PCross::compute_enter(wxCommandEvent&)
-{
-    if (!check_dic())
-        return;
-
-    if (t->GetValue().Len() >= DIC_WORD_MAX)
-    {
-        wxString msg;
-        msg.Printf(_("The search is limited to %d letters"), DIC_WORD_MAX - 1);
-        l->Append(msg);
-        return;
-    }
-
-    wchar_t rack[DIC_WORD_MAX];
-    wcsncpy(rack, t->GetValue().wc_str(), DIC_WORD_MAX);
-
-    vector<wstring> wordList;
-    dic->searchCross(rack, wordList);
-
-    int resnum = 0;
-    wxString *res = new wxString[wordList.size()];
-    vector<wstring>::const_iterator it;
-    for (it = wordList.begin(); it != wordList.end(); it++)
-        res[resnum++] =  wxU(it->c_str());
-    l->Set(resnum,res);
-    delete[] res;
-    check_end();
-}
-
-// ************************************************************
-// ************************************************************
-// ************************************************************
-
-class PPlus1 : public SimpleSearchPanel
-{
-protected:
-  virtual void panel_options() {}
-public:
-  void compute_char(wxCommandEvent&) {}
-  void compute_enter(wxCommandEvent&);
-  PPlus1(wxWindow* parent, int id, const Dictionary &dic) : 
SimpleSearchPanel(parent,id,dic) { panel_build(); }
-};
-
-void
-PPlus1::compute_enter(wxCommandEvent&)
-{
-    if (!check_dic())
-        return;
-
-    if (t->GetValue().Len() >= DIC_WORD_MAX)
-    {
-        wxString msg;
-        msg.Printf(_("The search is limited to %d letters"), DIC_WORD_MAX - 1);
-        l->Append(msg);
-        return;
-    }
-
-    wstring rack = t->GetValue().wc_str();
-    map<wchar_t, vector<wstring> > wordList;
-    dic->search7pl1(rack, wordList, true);
-
-    // Count the results
-    int sum = 0;
-    map<wchar_t, vector<wstring> >::const_iterator it;
-    for (it = wordList.begin(); it != wordList.end(); it++)
-    {
-        if (it->first)
-            sum += 1;
-        sum += it->second.size();
-    }
-
-    wxString *res = new wxString[sum];
-    int resnum = 0;
-    for (it = wordList.begin(); it != wordList.end(); it++)
-    {
-        if (it->first)
-            res[resnum++] = wxString(wxT("+")) + wxU((wxString)it->first);
-        vector<wstring>::const_iterator itWord;
-        for (itWord = it->second.begin(); itWord != it->second.end(); itWord++)
-        {
-            res[resnum++] = wxString(wxT("  ")) + wxU(itWord->c_str());
-        }
-    }
-    l->Set(resnum, res);
-    delete[] res;
-    check_end();
-}
-
-// ************************************************************
-// ************************************************************
-// ************************************************************
-
-class PRegExp : public SimpleSearchPanel
-{
-private:
-  wxTextCtrl                *omin;
-  wxTextCtrl                *omax;
-
-  void panel_options();
-public:
-  void compute_char(wxCommandEvent&) {}
-  void compute_enter(wxCommandEvent&);
-  PRegExp(wxWindow* parent, int id, const Dictionary &d) : 
SimpleSearchPanel(parent,id,d) { panel_build(); }
-};
-
-void
-PRegExp::panel_options()
-{
-  wxStaticText *otmin;
-  wxStaticText *otmax;
-
-  otmin = new wxStaticText(this,wxID_ANY,_("Minimum length"));
-  omin  = new 
wxTextCtrl(this,ID_OPTION1,wxT("1"),wxDefaultPosition,wxDefaultSize,wxTE_PROCESS_ENTER);
-  otmax = new wxStaticText(this,wxID_ANY,_("Maximum length"));
-  omax  = new 
wxTextCtrl(this,ID_OPTION2,wxT("15"),wxDefaultPosition,wxDefaultSize,wxTE_PROCESS_ENTER);
-
-  wxBoxSizer *s = new wxBoxSizer( wxHORIZONTAL );
-  s->Add(otmin, 0, wxALIGN_CENTRE_VERTICAL | wxLEFT | wxRIGHT, 4);
-  s->Add(omin , 1, wxALIGN_CENTRE_VERTICAL, 0);
-  s->Add(otmax, 0, wxALIGN_CENTRE_VERTICAL | wxLEFT | wxRIGHT, 4);
-  s->Add(omax , 1, wxALIGN_CENTRE_VERTICAL, 0);
-  sizer->Add(s, 0, wxEXPAND | wxALL, 1);
-}
-
-
-#define DIC_RE_MAX (3*DIC_WORD_MAX) // yes, it's 3
-
-void
-PRegExp::compute_enter(wxCommandEvent&)
-{
-    if (!check_dic())
-        return;
-
-    wstring regexp = t->GetValue().wc_str();
-    debug("PRegExp::compute_enter for %ls", regexp.c_str());
-
-    int lmin = atoi((const char*)omin->GetValue().mb_str());
-    int lmax = atoi((const char*)omax->GetValue().mb_str());
-    if (lmax <= (DIC_WORD_MAX - 1) && lmin >= 1 && lmin <= lmax)
-    {
-        debug(" length %d,%d",lmin,lmax);
-    }
-    else
-    {
-        debug(" bad length -%s,%s-",
-              (const char*)omin->GetValue().mb_str(),
-              (const char*)omax->GetValue().mb_str());
-        return;
-    }
-    debug("\n");
-
-    vector<wstring> wordList;
-    try
-    {
-        dic->searchRegExp(regexp, wordList, lmin, lmax);
-    }
-    catch (InvalidRegexpException &e)
-    {
-        wxString msg = _("Invalid regular expression: ") + wxU(e.what());
-        l->Append(msg);
-        return;
-    }
-
-    wxString *res = new wxString[wordList.size()];
-    int resnum = 0;
-    vector<wstring>::const_iterator it;
-    for (it = wordList.begin(); it != wordList.end(); it++)
-    {
-        res[resnum++] =  wxU(it->c_str());
-    }
-    l->Set(resnum,res);
-    delete[] res;
-    check_end();
-}
-
-// ************************************************************
-// ************************************************************
-// ************************************************************
-
-SearchPanel::SearchPanel(wxFrame *parent, const Dictionary &dic) :
-  wxNotebook(parent, -1)
-{
-  AddPage(new PCross (this,ID_PANEL_CROSS ,dic), _("Cross words"));
-  AddPage(new PPlus1 (this,ID_PANEL_PLUS1 ,dic), _("Plus 1"));
-  AddPage(new PRegExp(this,ID_PANEL_REGEXP,dic), _("Regular expressions"));
-  SetSelection(2);
-}
-
-SearchPanel::~SearchPanel()
-{
-}
-
-// ************************************************************
-// ************************************************************
-// ************************************************************
-
-
-/// Local Variables:
-/// mode: hs-minor
-/// c-basic-offset: 4
-/// End:

Index: wxwin/searchpanel.h
===================================================================
RCS file: wxwin/searchpanel.h
diff -N wxwin/searchpanel.h
--- wxwin/searchpanel.h 8 Jan 2008 13:52:43 -0000       1.5
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,40 +0,0 @@
-/* Eliot                                                                     */
-/* Copyright (C) 1999  Antoine Fraboulet                                     */
-/*                                                                           */
-/* This file is part of Eliot.                                               */
-/*                                                                           */
-/* Eliot is free software; you can redistribute it and/or modify             */
-/* it under the terms of the GNU General Public License as published by      */
-/* the Free Software Foundation; either version 2 of the License, or         */
-/* (at your option) any later version.                                       */
-/*                                                                           */
-/* Eliot is distributed in the hope that it will be useful,                  */
-/* but WITHOUT ANY WARRANTY; without even the implied warranty of            */
-/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the             */
-/* GNU General Public License for more details.                              */
-/*                                                                           */
-/* You should have received a copy of the GNU General Public License         */
-/* along with this program; if not, write to the Free Software               */
-/* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
*/
-
-// -*- C++ -*-
-
-/**
- *  \file   searchpanel.h
- *  \brief  Panel used in Eliot search window
- *  \author Antoine Fraboulet
- *  \date   2005
- */
-
-#ifndef _SEARCHPANEL_H
-#define _SEARCHPANEL_H
-#include "wx/notebook.h"
-
-class SearchPanel : public wxNotebook
-{
- public:
-  SearchPanel(wxFrame*, const Dictionary&);
-  ~SearchPanel();
-};
-
-#endif




reply via email to

[Prev in Thread] Current Thread [Next in Thread]