[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Eliot-dev] eliot dic/dic.h dic/dic_exception.cpp dic/dic_e...
From: |
eliot-dev |
Subject: |
[Eliot-dev] eliot dic/dic.h dic/dic_exception.cpp dic/dic_e... |
Date: |
Sun, 31 Aug 2008 11:48:23 +0000 |
CVSROOT: /cvsroot/eliot
Module name: eliot
Changes by: Olivier Teulière <ipkiss> 08/08/31 11:48:23
Modified files:
dic : dic.h dic_exception.cpp dic_exception.h
dic_search.cpp regexpmain.cpp
game : game.cpp
po : POTFILES.in eliot.pot fr.po
qt : dic_tools_widget.cpp main_window.cpp
main_window.h new_game.cpp new_game.h
qtcommon.h
qt/ui : dic_tools_widget.ui main_window.ui new_game.ui
prefs_dialog.ui training_widget.ui
utils : eliottxt.cpp
wxwin : searchpanel.cc
Log message:
Dic:
- Throw an exception if a regular expresison is invalid
- Handle the exception in callers code
Game:
- Fixed a bug in setRackRandom()
Qt interface:
- Display the dictionary name in the status bar
- Implemented printing
- Translation of the interface into French. The menus have temporarily
lost their accelerator keys in English.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/eliot/dic/dic.h?cvsroot=eliot&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/eliot/dic/dic_exception.cpp?cvsroot=eliot&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/eliot/dic/dic_exception.h?cvsroot=eliot&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/eliot/dic/dic_search.cpp?cvsroot=eliot&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/eliot/dic/regexpmain.cpp?cvsroot=eliot&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/eliot/game/game.cpp?cvsroot=eliot&r1=1.39&r2=1.40
http://cvs.savannah.gnu.org/viewcvs/eliot/po/POTFILES.in?cvsroot=eliot&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/eliot/po/eliot.pot?cvsroot=eliot&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/eliot/po/fr.po?cvsroot=eliot&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/dic_tools_widget.cpp?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/main_window.cpp?cvsroot=eliot&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/main_window.h?cvsroot=eliot&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/new_game.cpp?cvsroot=eliot&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/new_game.h?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/qtcommon.h?cvsroot=eliot&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/ui/dic_tools_widget.ui?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/ui/main_window.ui?cvsroot=eliot&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/ui/new_game.ui?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/ui/prefs_dialog.ui?cvsroot=eliot&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/eliot/qt/ui/training_widget.ui?cvsroot=eliot&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/eliot/utils/eliottxt.cpp?cvsroot=eliot&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/eliot/wxwin/searchpanel.cc?cvsroot=eliot&r1=1.18&r2=1.19
Patches:
Index: dic/dic.h
===================================================================
RCS file: /cvsroot/eliot/eliot/dic/dic.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- dic/dic.h 27 Aug 2008 21:20:06 -0000 1.18
+++ dic/dic.h 31 Aug 2008 11:48:11 -0000 1.19
@@ -226,6 +226,7 @@
* @return true if all the matching words were returned, false otherwise
* (i.e. if the maximum number of results was reached, and there are
* additional results)
+ * @throw InvalidRegexpException When the regular expression cannot be
parsed
*/
bool searchRegExp(const wstring &iRegexp,
vector<wstring> &oWordList,
Index: dic/dic_exception.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/dic/dic_exception.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- dic/dic_exception.cpp 8 Jan 2008 13:52:34 -0000 1.2
+++ dic/dic_exception.cpp 31 Aug 2008 11:48:12 -0000 1.3
@@ -34,3 +34,9 @@
return m_message.c_str();
}
+
+InvalidRegexpException::InvalidRegexpException(const string &iMessage)
+ : DicException(iMessage)
+{
+}
+
Index: dic/dic_exception.h
===================================================================
RCS file: /cvsroot/eliot/eliot/dic/dic_exception.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- dic/dic_exception.h 8 Jan 2008 13:52:34 -0000 1.2
+++ dic/dic_exception.h 31 Aug 2008 11:48:13 -0000 1.3
@@ -41,4 +41,12 @@
std::string m_message;
};
+
+class InvalidRegexpException : public DicException
+{
+ public:
+ InvalidRegexpException(const std::string &iMessage);
+ ~InvalidRegexpException() throw() {}
+};
+
#endif
Index: dic/dic_search.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/dic/dic_search.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- dic/dic_search.cpp 27 Aug 2008 21:20:09 -0000 1.10
+++ dic/dic_search.cpp 31 Aug 2008 11:48:13 -0000 1.11
@@ -25,6 +25,7 @@
#include <cwctype>
#include "dic_internals.h"
+#include "dic_exception.h"
#include "dic.h"
#include "header.h"
#include "encoding.h"
@@ -562,9 +563,8 @@
if (!parsingOk)
{
- // TODO: throw an exception
delete root;
- return true;
+ throw InvalidRegexpException(convertToMb(iRegexp));
}
int ptl[REGEXP_MAX+1];
Index: dic/regexpmain.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/dic/regexpmain.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- dic/regexpmain.cpp 27 Jul 2008 13:32:47 -0000 1.7
+++ dic/regexpmain.cpp 31 Aug 2008 11:48:14 -0000 1.8
@@ -40,6 +40,7 @@
#endif
#include "dic.h"
+#include "dic_exception.h"
#include "header.h"
#include "encoding.h"
@@ -85,13 +86,19 @@
/* Automaton */
vector<wstring> wordList;
+ try
+ {
dic.searchRegExp(convertToWc(line), wordList, 1, 15);
-
cout << _("result:") << endl;
vector<wstring>::const_iterator it;
for (it = wordList.begin(); it != wordList.end(); it++)
{
- cerr << convertToMb(*it) << endl;
+ cout << convertToMb(*it) << endl;
+ }
+ }
+ catch (InvalidRegexpException &e)
+ {
+ cout << _("Invalid regular expression: ") << e.what() << endl;
}
cout <<
"**************************************************************" << endl;
cout <<
"**************************************************************" << endl;
Index: game/game.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/game/game.cpp,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -b -r1.39 -r1.40
--- game/game.cpp 27 Jul 2008 15:26:15 -0000 1.39
+++ game/game.cpp 31 Aug 2008 11:48:15 -0000 1.40
@@ -397,6 +397,9 @@
// Do not mark the rack as rejected if it was empty
if (nold > 0)
pld.setReject();
+ // Reset the number of required vowels and consonants
+ neededVowels = min;
+ neededConsonants = min;
// Restore the joker if we are in a joker game
if (jokerAdded)
@@ -449,7 +452,7 @@
pld.shuffleNew();
// Post-condition check. This should never fail, of course :)
- ASSERT(pld.checkRack(min, min), "helperSetRackRandom() is buggy!")
+ ASSERT(pld.checkRack(min, min), "helperSetRackRandom() is buggy!");
// Until now we didn't modify anything except local variables.
// Let's "commit" the changes
Index: po/POTFILES.in
===================================================================
RCS file: /cvsroot/eliot/eliot/po/POTFILES.in,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- po/POTFILES.in 20 Jan 2008 18:40:12 -0000 1.5
+++ po/POTFILES.in 31 Aug 2008 11:48:16 -0000 1.6
@@ -76,6 +76,8 @@
qt/bag_widget.h
qt/board_widget.cpp
qt/board_widget.h
+qt/dic_tools_widget.cpp
+qt/dic_tools_widget.h
qt/history_widget.cpp
qt/history_widget.h
qt/main_window.cpp
@@ -87,6 +89,11 @@
qt/player_widget.h
qt/score_widget.cpp
qt/score_widget.h
+qt/training_widget.cpp
+qt/training_widget.h
+qt/ui/dic_tools_widget.ui
+qt/ui/main_window.ui
qt/ui/new_game.ui
qt/ui/player_widget.ui
-qt/ui/main_window.ui
+qt/ui/prefs_dialog.ui
+qt/ui/training_widget.ui
Index: po/eliot.pot
===================================================================
RCS file: /cvsroot/eliot/eliot/po/eliot.pot,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- po/eliot.pot 12 Jan 2008 20:42:25 -0000 1.9
+++ po/eliot.pot 31 Aug 2008 11:48:17 -0000 1.10
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-01-12 21:14+0100\n"
+"POT-Creation-Date: 2008-08-31 12:51+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <address@hidden>\n"
"Language-Team: LANGUAGE <address@hidden>\n"
@@ -16,199 +16,205 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: dic/header.cpp:318 dic/header.cpp:319
+#: dic/header.cpp:319 dic/header.cpp:320
msgid "Unknown (old format)"
msgstr ""
-#: dic/header.cpp:493
+#: dic/header.cpp:494
#, c-format
msgid "dictionary name: %s\n"
msgstr ""
-#: dic/header.cpp:498
+#: dic/header.cpp:499
#, c-format
msgid "compressed on: %s\n"
msgstr ""
-#: dic/header.cpp:502
+#: dic/header.cpp:503
#, c-format
msgid "compressed on: Unknown date (old format)\n"
msgstr ""
-#: dic/header.cpp:504
+#: dic/header.cpp:505
#, c-format
msgid "compressed using a binary compiled by: %s\n"
msgstr ""
-#: dic/header.cpp:505
+#: dic/header.cpp:506
#, c-format
msgid "dictionary type: %s\n"
msgstr ""
-#: dic/header.cpp:506
+#: dic/header.cpp:507
#, c-format
msgid "letters: %s\n"
msgstr ""
-#: dic/header.cpp:507
+#: dic/header.cpp:508
#, c-format
msgid "number of letters: %lu\n"
msgstr ""
-#: dic/header.cpp:508
+#: dic/header.cpp:509
#, c-format
msgid "number of words: %d\n"
msgstr ""
-#: dic/header.cpp:511
+#: dic/header.cpp:512
#, c-format
msgid "header size: %lu bytes\n"
msgstr ""
-#: dic/header.cpp:512
+#: dic/header.cpp:513
#, c-format
msgid "root: %d (edge)\n"
msgstr ""
-#: dic/header.cpp:513
+#: dic/header.cpp:514
#, c-format
msgid "nodes: %d used + %d saved\n"
msgstr ""
-#: dic/header.cpp:514
+#: dic/header.cpp:515
#, c-format
msgid "edges: %d used + %d saved\n"
msgstr ""
-#: dic/header.cpp:516
+#: dic/header.cpp:517
#, c-format
msgid "letter | points | frequency | vowel | consonant\n"
msgstr ""
-#: dic/compdic.cpp:393
+#: dic/compdic.cpp:405
msgid "Mandatory options:"
msgstr ""
-#: dic/compdic.cpp:394
+#: dic/compdic.cpp:406
msgid " -d, --dicname <string> Set the dictionary name and version"
msgstr ""
-#: dic/compdic.cpp:395
+#: dic/compdic.cpp:407
msgid ""
" -l, --letters <string> Path to the file containing the letters (see below)"
msgstr ""
-#: dic/compdic.cpp:396
+#: dic/compdic.cpp:408
msgid ""
" -i, --input <string> Path to the uncompressed dictionary file (encoded "
"in UTF-8)"
msgstr ""
-#: dic/compdic.cpp:397
+#: dic/compdic.cpp:409
+msgid ""
+" The words must be in alphabetical order, without "
+"duplicates"
+msgstr ""
+
+#: dic/compdic.cpp:410
msgid ""
" -o, --output <string Path to the generated compressed dictionary file"
msgstr ""
-#: dic/compdic.cpp:398
+#: dic/compdic.cpp:411
msgid "Other options:"
msgstr ""
-#: dic/compdic.cpp:399
+#: dic/compdic.cpp:412
msgid " -h, --help Print this help and exit"
msgstr ""
-#: dic/compdic.cpp:400
+#: dic/compdic.cpp:413
msgid "Example:"
msgstr ""
-#: dic/compdic.cpp:401
+#: dic/compdic.cpp:414
msgid " -d 'ODS 5.0' -l letters.txt -i ods5.txt -o ods5.dawg"
msgstr ""
-#: dic/compdic.cpp:403
+#: dic/compdic.cpp:416
msgid ""
"The file containing the letters (--letters switch) must be UTF-8 encoded."
msgstr ""
-#: dic/compdic.cpp:404
+#: dic/compdic.cpp:417
msgid ""
"Each line corresponds to one letter, and must contain 5 fields separated "
"with "
msgstr ""
-#: dic/compdic.cpp:405
+#: dic/compdic.cpp:418
msgid "one or more space(s)."
msgstr ""
-#: dic/compdic.cpp:406
+#: dic/compdic.cpp:419
msgid " - 1st field: the letter itself"
msgstr ""
-#: dic/compdic.cpp:407
+#: dic/compdic.cpp:420
msgid " - 2nd field: the points of the letter"
msgstr ""
-#: dic/compdic.cpp:408
+#: dic/compdic.cpp:421
msgid ""
" - 3rd field: the frequency of the letter (how many letters of this kind in "
"the game)"
msgstr ""
-#: dic/compdic.cpp:409
+#: dic/compdic.cpp:422
msgid ""
" - 4th field: 1 if the letter is considered as a vowel in Scrabble game, 0 "
"otherwise"
msgstr ""
-#: dic/compdic.cpp:410
+#: dic/compdic.cpp:423
msgid ""
" - 5th field: 1 if the letter is considered as a consonant in Scrabble game, "
"0 otherwise"
msgstr ""
-#: dic/compdic.cpp:411
+#: dic/compdic.cpp:424
msgid "Example for french:"
msgstr ""
-#: dic/compdic.cpp:412
+#: dic/compdic.cpp:425
msgid "A 1 9 1 0"
msgstr ""
-#: dic/compdic.cpp:413
+#: dic/compdic.cpp:426
msgid "[...]"
msgstr ""
-#: dic/compdic.cpp:414
+#: dic/compdic.cpp:427
msgid "Z 10 1 0 1"
msgstr ""
-#: dic/compdic.cpp:415
+#: dic/compdic.cpp:428
msgid "? 0 2 1 1"
msgstr ""
-#: dic/compdic.cpp:485
+#: dic/compdic.cpp:498
msgid "A mandatory option is missing"
msgstr ""
-#: dic/compdic.cpp:493
+#: dic/compdic.cpp:506
msgid "Cannot stat uncompressed dictionary "
msgstr ""
-#: dic/compdic.cpp:501
+#: dic/compdic.cpp:514
msgid "Cannot open output file "
msgstr ""
-#: dic/compdic.cpp:549
+#: dic/compdic.cpp:562
#, c-format
msgid " Load time: %.3f s\n"
msgstr ""
-#: dic/compdic.cpp:550
+#: dic/compdic.cpp:563
#, c-format
msgid " Compression time: %.3f s\n"
msgstr ""
-#: dic/compdic.cpp:552
+#: dic/compdic.cpp:565
#, c-format
msgid " Maximum recursion level reached: %d\n"
msgstr ""
@@ -243,172 +249,182 @@
msgid " -x: print dictionary in hex\n"
msgstr ""
-#: dic/regexpmain.cpp:101
+#: dic/regexpmain.cpp:50
#, c-format
msgid "usage: %s dictionary"
msgstr ""
-#: dic/regexpmain.cpp:102
+#: dic/regexpmain.cpp:51
msgid " dictionary: path to eliot dawg dictionary"
msgstr ""
-#: dic/regexpmain.cpp:137
-msgid "enter a regular expression:"
+#: dic/regexpmain.cpp:81 dic/regexpmain.cpp:105
+msgid "Enter a regular expression:"
msgstr ""
-#: dic/regexpmain.cpp:149
+#: dic/regexpmain.cpp:92
msgid "result:"
msgstr ""
-#: utils/ncurses.cpp:270
+#: dic/regexpmain.cpp:101 wxwin/searchpanel.cc:296
+msgid "Invalid regular expression: "
+msgstr ""
+
+#: game/training.cpp:49 qt/new_game.cpp:86 qt/new_game.cpp:94
+#: qt/new_game.cpp:126 qt/ui/new_game.ui:46
+msgid "Training"
+msgstr ""
+
+#: utils/ncurses.cpp:279
msgid "Scores"
msgstr ""
-#: utils/ncurses.cpp:276
+#: utils/ncurses.cpp:283 utils/ncurses.cpp:288
#, c-format
-msgid "Player %d: %d"
+msgid "%s: %d"
msgstr ""
-#: utils/ncurses.cpp:285
+#: utils/ncurses.cpp:300
msgid "Racks"
msgstr ""
-#: utils/ncurses.cpp:292
+#: utils/ncurses.cpp:304 utils/ncurses.cpp:310
#, c-format
-msgid "Player %d: %ls"
+msgid "%s: %ls"
msgstr ""
-#: utils/ncurses.cpp:303 utils/ncurses.cpp:306
+#: utils/ncurses.cpp:324 utils/ncurses.cpp:327
msgid "Search complete"
msgstr ""
-#: utils/ncurses.cpp:316
+#: utils/ncurses.cpp:337 qt/ui/training_widget.ui:71
msgid "Search results"
msgstr ""
-#: utils/ncurses.cpp:345
+#: utils/ncurses.cpp:366
msgid "History of the game"
msgstr ""
-#: utils/ncurses.cpp:351
+#: utils/ncurses.cpp:372
msgid " N | RACK | SOLUTION | REF | PTS | P | BONUS"
msgstr ""
-#: utils/ncurses.cpp:390
+#: utils/ncurses.cpp:411 qt/history_widget.cpp:143 qt/main_window.cpp:435
msgid "(PASS)"
msgstr ""
-#: utils/ncurses.cpp:416
+#: utils/ncurses.cpp:437 qt/ui/main_window.ui:100
msgid "Help"
msgstr ""
-#: utils/ncurses.cpp:420
+#: utils/ncurses.cpp:441
msgid "[Global]"
msgstr ""
-#: utils/ncurses.cpp:421
+#: utils/ncurses.cpp:442
msgid " h, H, ? Show/hide help box"
msgstr ""
-#: utils/ncurses.cpp:422
+#: utils/ncurses.cpp:443
msgid " y, Y Show/hide history of the game"
msgstr ""
-#: utils/ncurses.cpp:423
+#: utils/ncurses.cpp:444
msgid ""
" b, B Show/hide contents of the bag (including letters of the "
"racks)"
msgstr ""
-#: utils/ncurses.cpp:424
+#: utils/ncurses.cpp:445
msgid " e, E Show/hide dots on empty squares of the board"
msgstr ""
-#: utils/ncurses.cpp:425
+#: utils/ncurses.cpp:446
msgid " d, D Check the existence of a word in the dictionary"
msgstr ""
-#: utils/ncurses.cpp:426
+#: utils/ncurses.cpp:447
msgid " j, J Play a word"
msgstr ""
-#: utils/ncurses.cpp:427
+#: utils/ncurses.cpp:448
msgid " s, S Save the game"
msgstr ""
-#: utils/ncurses.cpp:428
+#: utils/ncurses.cpp:449
msgid " l, L Load a game"
msgstr ""
-#: utils/ncurses.cpp:429
+#: utils/ncurses.cpp:450
msgid " q, Q Quit"
msgstr ""
-#: utils/ncurses.cpp:432
+#: utils/ncurses.cpp:453
msgid "[Training mode]"
msgstr ""
-#: utils/ncurses.cpp:433
+#: utils/ncurses.cpp:454
msgid " * Take a random rack"
msgstr ""
-#: utils/ncurses.cpp:434
+#: utils/ncurses.cpp:455
msgid " + Complete the current rack randomly"
msgstr ""
-#: utils/ncurses.cpp:435
+#: utils/ncurses.cpp:456
msgid " t, T Set the rack manually"
msgstr ""
-#: utils/ncurses.cpp:436
+#: utils/ncurses.cpp:457
msgid " c, C Compute all the possible words"
msgstr ""
-#: utils/ncurses.cpp:437
+#: utils/ncurses.cpp:458
msgid " r, R Show/hide search results"
msgstr ""
-#: utils/ncurses.cpp:440
+#: utils/ncurses.cpp:461
msgid "[Duplicate mode]"
msgstr ""
-#: utils/ncurses.cpp:441
+#: utils/ncurses.cpp:462
msgid " n, N Switch to the next human player"
msgstr ""
-#: utils/ncurses.cpp:444
+#: utils/ncurses.cpp:465
msgid "[Free game mode]"
msgstr ""
-#: utils/ncurses.cpp:445
+#: utils/ncurses.cpp:466
msgid " p, P Pass your turn (with or without changing letters)"
msgstr ""
-#: utils/ncurses.cpp:448
+#: utils/ncurses.cpp:469
msgid "[Miscellaneous]"
msgstr ""
-#: utils/ncurses.cpp:449
+#: utils/ncurses.cpp:470
msgid " <up>, <down> Navigate in a box line by line"
msgstr ""
-#: utils/ncurses.cpp:450
+#: utils/ncurses.cpp:471
msgid " <pgup>, <pgdown> Navigate in a box page by page"
msgstr ""
-#: utils/ncurses.cpp:451
+#: utils/ncurses.cpp:472
msgid " Ctrl-l Refresh the screen"
msgstr ""
-#: utils/ncurses.cpp:462 wxwin/auxframes.cc:148
+#: utils/ncurses.cpp:483 wxwin/auxframes.cc:147 qt/main_window.cpp:518
+#: qt/ui/main_window.ui:188
msgid "Bag"
msgstr ""
-#: utils/ncurses.cpp:469
+#: utils/ncurses.cpp:490
msgid " LETTER | POINTS | FREQUENCY | REMAINING"
msgstr ""
-#: utils/ncurses.cpp:522
+#: utils/ncurses.cpp:543
msgid "Play a word"
msgstr ""
@@ -416,180 +432,180 @@
#. "Coordinates:". For example:
#. Pl. word :
#. Coordinates:
-#: utils/ncurses.cpp:523 utils/ncurses.cpp:531
+#: utils/ncurses.cpp:544 utils/ncurses.cpp:552
msgid "Played word:"
msgstr ""
-#: utils/ncurses.cpp:524 utils/ncurses.cpp:532
+#: utils/ncurses.cpp:545 utils/ncurses.cpp:553
msgid "Coordinates:"
msgstr ""
-#: utils/ncurses.cpp:546
+#: utils/ncurses.cpp:567
msgid "Incorrect or misplaced word"
msgstr ""
-#: utils/ncurses.cpp:556
+#: utils/ncurses.cpp:577
msgid "Dictionary"
msgstr ""
-#: utils/ncurses.cpp:557
+#: utils/ncurses.cpp:578
msgid "Enter the word to check:"
msgstr ""
-#: utils/ncurses.cpp:566
+#: utils/ncurses.cpp:587
#, c-format
msgid "The word '%ls' exists"
msgstr ""
-#: utils/ncurses.cpp:568
+#: utils/ncurses.cpp:589
#, c-format
msgid "The word '%ls' does not exist"
msgstr ""
-#: utils/ncurses.cpp:578 wxwin/mainframe.cc:475 wxwin/mainframe.cc:483
+#: utils/ncurses.cpp:599 wxwin/mainframe.cc:475 wxwin/mainframe.cc:483
msgid "Save the game"
msgstr ""
-#: utils/ncurses.cpp:579 utils/ncurses.cpp:609
+#: utils/ncurses.cpp:600 utils/ncurses.cpp:630
msgid "Enter the file name:"
msgstr ""
-#: utils/ncurses.cpp:589
+#: utils/ncurses.cpp:610
#, c-format
msgid "Cannot open file %ls for writing"
msgstr ""
-#: utils/ncurses.cpp:597
+#: utils/ncurses.cpp:618
#, c-format
msgid "Game saved in '%ls'"
msgstr ""
-#: utils/ncurses.cpp:608 wxwin/mainframe.cc:275 wxwin/mainframe.cc:405
-#: wxwin/mainframe.cc:429
+#: utils/ncurses.cpp:629 wxwin/mainframe.cc:275 wxwin/mainframe.cc:405
+#: wxwin/mainframe.cc:429 qt/main_window.cpp:287
msgid "Load a game"
msgstr ""
-#: utils/ncurses.cpp:619
+#: utils/ncurses.cpp:640
#, c-format
msgid "Cannot open file '%ls' for reading"
msgstr ""
-#: utils/ncurses.cpp:627
+#: utils/ncurses.cpp:648
#, c-format
msgid "Invalid saved game"
msgstr ""
-#: utils/ncurses.cpp:632
+#: utils/ncurses.cpp:653 qt/main_window.cpp:301
#, c-format
msgid "Game loaded"
msgstr ""
-#: utils/ncurses.cpp:647
+#: utils/ncurses.cpp:668
msgid "Pass your turn"
msgstr ""
-#: utils/ncurses.cpp:648
+#: utils/ncurses.cpp:669
msgid "Enter the letters to change:"
msgstr ""
-#: utils/ncurses.cpp:657
+#: utils/ncurses.cpp:678
msgid "Cannot pass the turn"
msgstr ""
-#: utils/ncurses.cpp:667
+#: utils/ncurses.cpp:688
msgid "Set rack"
msgstr ""
-#: utils/ncurses.cpp:668
+#: utils/ncurses.cpp:689
msgid "Enter the new letters:"
msgstr ""
-#: utils/ncurses.cpp:677
+#: utils/ncurses.cpp:698
msgid "Cannot take these letters from the bag"
msgstr ""
-#: utils/ncurses.cpp:1071
+#: utils/ncurses.cpp:1092 qt/main_window.cpp:193 qt/ui/prefs_dialog.ui:175
msgid "Training mode"
msgstr ""
-#: utils/ncurses.cpp:1073
+#: utils/ncurses.cpp:1094 qt/ui/prefs_dialog.ui:156
msgid "Free game mode"
msgstr ""
-#: utils/ncurses.cpp:1075
+#: utils/ncurses.cpp:1096 qt/ui/prefs_dialog.ui:69
msgid "Duplicate mode"
msgstr ""
-#: utils/ncurses.cpp:1078
+#: utils/ncurses.cpp:1099 qt/ui/new_game.ui:67
msgid "Joker game"
msgstr ""
-#: utils/ncurses.cpp:1079
+#: utils/ncurses.cpp:1100
msgid "[h for help]"
msgstr ""
-#: wxwin/auxframes.cc:123
+#: wxwin/auxframes.cc:122
msgid "Grid"
msgstr ""
-#: wxwin/auxframes.cc:203
+#: wxwin/auxframes.cc:202 qt/ui/training_widget.ui:52
msgid "Search"
msgstr ""
-#: wxwin/auxframes.cc:234
+#: wxwin/auxframes.cc:233 qt/ui/dic_tools_widget.ui:31
msgid "Check"
msgstr ""
-#: wxwin/auxframes.cc:239
+#: wxwin/auxframes.cc:238
msgid "Word to check"
msgstr ""
-#: wxwin/auxframes.cc:257 wxwin/configdb.cc:203 wxwin/searchpanel.cc:107
+#: wxwin/auxframes.cc:256 wxwin/configdb.cc:203 wxwin/searchpanel.cc:107
msgid "No dictionary"
msgstr ""
-#: wxwin/auxframes.cc:261
+#: wxwin/auxframes.cc:260
msgid "exists"
msgstr ""
-#: wxwin/auxframes.cc:263
+#: wxwin/auxframes.cc:262
msgid "doesn't exist"
msgstr ""
-#: wxwin/auxframes.cc:304
+#: wxwin/auxframes.cc:303
msgid "Copy"
msgstr ""
-#: wxwin/auxframes.cc:348 wxwin/mainframe.cc:502 wxwin/mainframe.cc:522
+#: 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:363 wxwin/searchpanel.cc:119
+#: wxwin/auxframes.cc:362 wxwin/searchpanel.cc:119
msgid "No result"
msgstr ""
-#: wxwin/auxframes.cc:373
+#: wxwin/auxframes.cc:372
msgid "Rack + 1"
msgstr ""
-#: wxwin/auxframes.cc:415
+#: wxwin/auxframes.cc:414
msgid "Rack: "
msgstr ""
-#: wxwin/auxframes.cc:436
+#: wxwin/auxframes.cc:435
msgid "Benjamins"
msgstr ""
-#: wxwin/auxframes.cc:477
+#: wxwin/auxframes.cc:476
msgid "Extensions"
msgstr ""
-#: wxwin/auxframes.cc:543 wxwin/mainframe.cc:325
+#: wxwin/auxframes.cc:542 wxwin/mainframe.cc:325
msgid "Game history"
msgstr ""
-#: wxwin/auxframes.cc:575 wxwin/mainframe.cc:327
+#: wxwin/auxframes.cc:574 wxwin/mainframe.cc:327
msgid "Results"
msgstr ""
@@ -701,7 +717,7 @@
msgid "Nb"
msgstr ""
-#: wxwin/configdb.cc:323 wxwin/mainframe.cc:174
+#: wxwin/configdb.cc:323 wxwin/mainframe.cc:174 qt/history_widget.cpp:52
msgid "Rack"
msgstr ""
@@ -729,7 +745,7 @@
msgid "Cancel last changes"
msgstr ""
-#: wxwin/gfxresult.cc:67
+#: wxwin/gfxresult.cc:67 qt/history_widget.cpp:53 qt/training_widget.cpp:58
msgid "Word"
msgstr ""
@@ -781,7 +797,7 @@
msgid "&New game\tCtrl+N"
msgstr ""
-#: wxwin/mainframe.cc:272
+#: wxwin/mainframe.cc:272 qt/ui/main_window.ui:177
msgid "Start a new game"
msgstr ""
@@ -801,7 +817,7 @@
msgid "&Save as...\tCtrl+S"
msgstr ""
-#: wxwin/mainframe.cc:276
+#: wxwin/mainframe.cc:276 qt/ui/main_window.ui:229
msgid "Save the current game"
msgstr ""
@@ -833,7 +849,7 @@
msgid "&Quit\tCtrl+Q"
msgstr ""
-#: wxwin/mainframe.cc:284
+#: wxwin/mainframe.cc:284 qt/ui/main_window.ui:169
msgid "Quit Eliot"
msgstr ""
@@ -841,7 +857,7 @@
msgid "&Dictionary...\tCtrl+D"
msgstr ""
-#: wxwin/mainframe.cc:287 wxwin/mainframe.cc:604
+#: wxwin/mainframe.cc:287 wxwin/mainframe.cc:604 qt/main_window.cpp:485
msgid "Choose a dictionary"
msgstr ""
@@ -949,7 +965,7 @@
msgid "Font for the search"
msgstr ""
-#: wxwin/mainframe.cc:310 wxwin/mainframe.cc:334
+#: wxwin/mainframe.cc:310 wxwin/mainframe.cc:334 qt/history_widget.cpp:177
msgid "&Game"
msgstr ""
@@ -1049,7 +1065,8 @@
msgid "&About..."
msgstr ""
-#: wxwin/mainframe.cc:331 wxwin/mainframe.cc:733
+#: wxwin/mainframe.cc:331 wxwin/mainframe.cc:733 qt/main_window.cpp:596
+#: qt/ui/main_window.ui:161
msgid "About Eliot"
msgstr ""
@@ -1078,7 +1095,7 @@
msgid "Cannot open "
msgstr ""
-#: wxwin/mainframe.cc:440 wxwin/mainframe.cc:449
+#: wxwin/mainframe.cc:440 wxwin/mainframe.cc:449 qt/main_window.cpp:294
msgid "Error while loading the game"
msgstr ""
@@ -1169,22 +1186,435 @@
msgid "The search is limited to %d letters"
msgstr ""
-#: wxwin/searchpanel.cc:301
+#: wxwin/searchpanel.cc:249
msgid "Minimum length"
msgstr ""
-#: wxwin/searchpanel.cc:303
+#: wxwin/searchpanel.cc:251
msgid "Maximum length"
msgstr ""
-#: wxwin/searchpanel.cc:366
+#: wxwin/searchpanel.cc:320
msgid "Cross words"
msgstr ""
-#: wxwin/searchpanel.cc:367
+#: wxwin/searchpanel.cc:321 qt/ui/dic_tools_widget.ui:69
msgid "Plus 1"
msgstr ""
-#: wxwin/searchpanel.cc:368
+#: wxwin/searchpanel.cc:322 qt/ui/dic_tools_widget.ui:94
msgid "Regular expressions"
msgstr ""
+
+#: qt/bag_widget.cpp:49
+msgid "Letter"
+msgstr ""
+
+#: qt/bag_widget.cpp:50 qt/history_widget.cpp:55 qt/training_widget.cpp:60
+msgid "Points"
+msgstr ""
+
+#: qt/dic_tools_widget.cpp:87 qt/dic_tools_widget.cpp:92
+#: qt/ui/player_widget.ui:19 qt/ui/training_widget.ui:21
+msgid "Rack:"
+msgstr ""
+
+#: qt/dic_tools_widget.cpp:122 qt/dic_tools_widget.cpp:155
+#: qt/dic_tools_widget.cpp:208
+msgid "Please select a dictionary"
+msgstr ""
+
+#: qt/dic_tools_widget.cpp:133
+msgid "The word '%1' exists"
+msgstr ""
+
+#: qt/dic_tools_widget.cpp:138
+msgid "The word '%1' does not exist"
+msgstr ""
+
+#: qt/dic_tools_widget.cpp:162
+msgid "Rack: %1"
+msgstr ""
+
+#: qt/dic_tools_widget.cpp:181
+msgid "Anagrams"
+msgstr ""
+
+#: qt/dic_tools_widget.cpp:215
+msgid "Regular expression: %1"
+msgstr ""
+
+#: qt/dic_tools_widget.cpp:238
+msgid "Invalid regular expression: %1"
+msgstr ""
+
+#: qt/history_widget.cpp:51
+msgid "Turn"
+msgstr ""
+
+#: qt/history_widget.cpp:54 qt/training_widget.cpp:59
+msgid "Ref"
+msgstr ""
+
+#: qt/history_widget.cpp:87 qt/new_game.cpp:49 qt/score_widget.cpp:46
+#: qt/ui/new_game.ui:102
+msgid "Player"
+msgstr ""
+
+#: qt/main_window.cpp:91 qt/main_window.cpp:536 qt/ui/main_window.ui:40
+msgid "Board"
+msgstr ""
+
+#: qt/main_window.cpp:144
+msgid "Cannot load dictionary '%1' indicated in the preferences"
+msgstr ""
+
+#: qt/main_window.cpp:185
+msgid "No game"
+msgstr ""
+
+#: qt/main_window.cpp:197
+msgid "Duplicate game"
+msgstr ""
+
+#: qt/main_window.cpp:201 qt/new_game.cpp:88 qt/new_game.cpp:145
+#: qt/ui/new_game.ui:41
+msgid "Free game"
+msgstr ""
+
+#: qt/main_window.cpp:250 qt/main_window.cpp:283
+msgid "You have to select a dictionary first!"
+msgstr ""
+
+#: qt/main_window.cpp:275
+msgid "Game started"
+msgstr ""
+
+#: qt/main_window.cpp:311
+msgid "Save a game"
+msgstr ""
+
+#: qt/main_window.cpp:316
+msgid "Game saved"
+msgstr ""
+
+#: qt/main_window.cpp:343
+msgid "N."
+msgstr ""
+
+#: qt/main_window.cpp:343
+msgid "RACK"
+msgstr ""
+
+#: qt/main_window.cpp:343
+msgid "SOLUTION"
+msgstr ""
+
+#: qt/main_window.cpp:343
+msgid "REF"
+msgstr ""
+
+#: qt/main_window.cpp:343
+msgid "PTS"
+msgstr ""
+
+#: qt/main_window.cpp:476
+msgid "Stop current game?"
+msgstr ""
+
+#: qt/main_window.cpp:477
+msgid ""
+"Loading a dictionary will stop the current game. Do you want to continue?"
+msgstr ""
+
+#: qt/main_window.cpp:554 qt/ui/main_window.ui:53 qt/ui/main_window.ui:251
+msgid "History"
+msgstr ""
+
+#: qt/main_window.cpp:571 qt/ui/main_window.ui:276
+msgid "Dictionary tools"
+msgstr ""
+
+#: qt/main_window.cpp:588
+msgid ""
+"Copyright (C) 1999-2008 - Antoine Fraboulet & Olivier Teuliere\n"
+"\n"
+"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 ""
+
+#: qt/new_game.cpp:36 qt/ui/new_game.ui:117
+msgid "Human"
+msgstr ""
+
+#: qt/new_game.cpp:37 qt/ui/new_game.ui:122
+msgid "Computer"
+msgstr ""
+
+#: qt/new_game.cpp:47
+msgid "Name"
+msgstr ""
+
+#: qt/new_game.cpp:48
+msgid "Type"
+msgstr ""
+
+#: qt/new_game.cpp:51
+msgid "Eliot"
+msgstr ""
+
+#: qt/new_game.cpp:101
+msgid "Player %1"
+msgstr ""
+
+#: qt/new_game.cpp:144 qt/ui/new_game.ui:36
+msgid "Duplicate"
+msgstr ""
+
+#: qt/player_widget.cpp:156
+msgid "Cannot play '%1' at position '%2': incorrect or misplaced word (%3)"
+msgstr ""
+
+#: qt/player_widget.cpp:179
+msgid "Cannot pass turn (%1)"
+msgstr ""
+
+#: qt/player_widget.cpp:181
+msgid "Cannot change letters '%1' (%2)"
+msgstr ""
+
+#: qt/score_widget.cpp:47
+msgid "Score"
+msgstr ""
+
+#: qt/training_widget.cpp:194
+msgid "Warning: Cannot set the rack to '%1'"
+msgstr ""
+
+#: qt/ui/dic_tools_widget.ui:105
+msgid "Minimum length:"
+msgstr ""
+
+#: qt/ui/dic_tools_widget.ui:122
+msgid "Maximum length:"
+msgstr ""
+
+#: qt/ui/dic_tools_widget.ui:157
+msgid "Note: only the 1000 first results have been displayed"
+msgstr ""
+
+#: qt/ui/main_window.ui:62 qt/ui/new_game.ui:77
+msgid "Players"
+msgstr ""
+
+#: qt/ui/main_window.ui:80
+msgid "Game"
+msgstr ""
+
+#: qt/ui/main_window.ui:93
+msgid "Settings"
+msgstr ""
+
+#: qt/ui/main_window.ui:107
+msgid "Windows"
+msgstr ""
+
+#: qt/ui/main_window.ui:150
+msgid "Choose dictionary..."
+msgstr ""
+
+#: qt/ui/main_window.ui:153
+msgid "Select a new dictionary"
+msgstr ""
+
+#: qt/ui/main_window.ui:158
+msgid "About..."
+msgstr ""
+
+#: qt/ui/main_window.ui:166
+msgid "Quit"
+msgstr ""
+
+#: qt/ui/main_window.ui:174
+msgid "New..."
+msgstr ""
+
+#: qt/ui/main_window.ui:191
+msgid "Show/hide the remaining tiles in the bag"
+msgstr ""
+
+#: qt/ui/main_window.ui:199
+msgid "Preferences..."
+msgstr ""
+
+#: qt/ui/main_window.ui:202
+msgid "Edit the preferences"
+msgstr ""
+
+#: qt/ui/main_window.ui:207
+msgid "Save"
+msgstr ""
+
+#: qt/ui/main_window.ui:215
+msgid "Load..."
+msgstr ""
+
+#: qt/ui/main_window.ui:218
+msgid "Load an existing game"
+msgstr ""
+
+#: qt/ui/main_window.ui:226
+msgid "Save as..."
+msgstr ""
+
+#: qt/ui/main_window.ui:240
+msgid "External board"
+msgstr ""
+
+#: qt/ui/main_window.ui:243
+msgid "Show/hide the external board"
+msgstr ""
+
+#: qt/ui/main_window.ui:254
+msgid "Show/hide the game history"
+msgstr ""
+
+#: qt/ui/main_window.ui:262
+msgid "Print..."
+msgstr ""
+
+#: qt/ui/main_window.ui:265
+msgid "Print the current game"
+msgstr ""
+
+#: qt/ui/main_window.ui:279
+msgid "Show/hide the dictionary tools"
+msgstr ""
+
+#: qt/ui/new_game.ui:13
+msgid "New game"
+msgstr ""
+
+#: qt/ui/new_game.ui:22
+msgid "Game type"
+msgstr ""
+
+#: qt/ui/new_game.ui:28
+msgid "Mode:"
+msgstr ""
+
+#: qt/ui/new_game.ui:95
+msgid "Name:"
+msgstr ""
+
+#: qt/ui/new_game.ui:109
+msgid "Type:"
+msgstr ""
+
+#: qt/ui/new_game.ui:134
+msgid "Add player"
+msgstr ""
+
+#: qt/ui/new_game.ui:157
+msgid "Remove player"
+msgstr ""
+
+#: qt/ui/player_widget.ui:36
+msgid "Shuffle"
+msgstr ""
+
+#: qt/ui/player_widget.ui:43
+msgid "Play a word:"
+msgstr ""
+
+#: qt/ui/player_widget.ui:50 qt/ui/player_widget.ui:53
+msgid ""
+"To play a word, enter the word (case sensitive) and its coordinates. E.g.: "
+"WORD H4"
+msgstr ""
+
+#: qt/ui/player_widget.ui:63 qt/ui/training_widget.ui:62
+msgid "Play"
+msgstr ""
+
+#: qt/ui/player_widget.ui:70
+msgid "Change letters:"
+msgstr ""
+
+#: qt/ui/player_widget.ui:77
+msgid "Enter the letters you want to change"
+msgstr ""
+
+#: qt/ui/player_widget.ui:87
+msgid "Change"
+msgstr ""
+
+#: qt/ui/player_widget.ui:94
+msgid "Pass"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:19
+msgid "Interface"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:27
+msgid "Dictionary path:"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:34
+msgid "Enter the dictionary path (mandatory to start a game)"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:41
+msgid "Open a browser window to choose the dictionary"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:44
+msgid "Browse..."
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:53
+msgid ""
+"If checked, the game and player histories will display the rack and the "
+"corresponding solution on the same line"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:56
+msgid "Align the rack and the solution in history"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:75 qt/ui/prefs_dialog.ui:162
+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:78 qt/ui/prefs_dialog.ui:165
+msgid "Refuse to play invalid moves"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:87
+msgid "Min. players for a solo:"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:107
+msgid "Minimum number of players needed to take into account the solo bonus"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:121
+msgid "Solo value:"
+msgstr ""
+
+#: qt/ui/prefs_dialog.ui:141
+msgid "Value of the solo bonus. Set it to 0 if you don't want solo bonus"
+msgstr ""
+
+#: qt/ui/training_widget.ui:35
+msgid "New rack"
+msgstr ""
+
+#: qt/ui/training_widget.ui:42
+msgid "Complement"
+msgstr ""
Index: po/fr.po
===================================================================
RCS file: /cvsroot/eliot/eliot/po/fr.po,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- po/fr.po 3 Jul 2008 20:14:46 -0000 1.10
+++ po/fr.po 31 Aug 2008 11:48:17 -0000 1.11
@@ -6,10 +6,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: eliot 1.4\n"
+"Project-Id-Version: eliot 1.7\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-01-12 21:14+0100\n"
-"PO-Revision-Date: 2005-02-06 20:03+0100\n"
+"POT-Creation-Date: 2008-08-31 12:51+0200\n"
+"PO-Revision-Date: 2008-08-31 10:43+0100\n"
"Last-Translator: Olivier Teuliere <address@hidden>\n"
"Language-Team: French <address@hidden>\n"
"MIME-Version: 1.0\n"
@@ -17,91 +17,91 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: dic/header.cpp:318 dic/header.cpp:319
+#: dic/header.cpp:319 dic/header.cpp:320
msgid "Unknown (old format)"
msgstr "Inconnu (vieux format)"
-#: dic/header.cpp:493
+#: dic/header.cpp:494
#, c-format
msgid "dictionary name: %s\n"
msgstr "Nom du dictionnaire : %s\n"
-#: dic/header.cpp:498
+#: dic/header.cpp:499
#, c-format
msgid "compressed on: %s\n"
msgstr "Compressé le : %s\n"
-#: dic/header.cpp:502
+#: dic/header.cpp:503
#, c-format
msgid "compressed on: Unknown date (old format)\n"
msgstr "Compressé le : Date inconnue (vieux format)\n"
-#: dic/header.cpp:504
+#: dic/header.cpp:505
#, c-format
msgid "compressed using a binary compiled by: %s\n"
msgstr "Compressé avec un binaire compilé par : %s\n"
-#: dic/header.cpp:505
+#: dic/header.cpp:506
#, c-format
msgid "dictionary type: %s\n"
msgstr "Type de dictionnaire : %s\n"
-#: dic/header.cpp:506
+#: dic/header.cpp:507
#, c-format
msgid "letters: %s\n"
msgstr "Lettres : %s\n"
-#: dic/header.cpp:507
+#: dic/header.cpp:508
#, c-format
msgid "number of letters: %lu\n"
msgstr "Nombre de lettres : %lu\n"
-#: dic/header.cpp:508
+#: dic/header.cpp:509
#, c-format
msgid "number of words: %d\n"
msgstr "Nombre de mots : %d\n"
-#: dic/header.cpp:511
+#: dic/header.cpp:512
#, c-format
msgid "header size: %lu bytes\n"
msgstr "Taille du header : %lu octets\n"
-#: dic/header.cpp:512
+#: dic/header.cpp:513
#, c-format
msgid "root: %d (edge)\n"
msgstr "Racine : %d (arcs)\n"
-#: dic/header.cpp:513
+#: dic/header.cpp:514
#, c-format
msgid "nodes: %d used + %d saved\n"
msgstr "Noeuds : %d utilisés + %d évités\n"
-#: dic/header.cpp:514
+#: dic/header.cpp:515
#, c-format
msgid "edges: %d used + %d saved\n"
msgstr "Arcs : %d utilisés + %d évités\n"
-#: dic/header.cpp:516
+#: dic/header.cpp:517
#, c-format
msgid "letter | points | frequency | vowel | consonant\n"
msgstr "lettre | points | frequence | voye. | consonne\n"
-#: dic/compdic.cpp:393
+#: dic/compdic.cpp:405
msgid "Mandatory options:"
msgstr "Options obligatoires :"
-#: dic/compdic.cpp:394
+#: dic/compdic.cpp:406
msgid " -d, --dicname <string> Set the dictionary name and version"
msgstr " -d, --dicname <string> Choisir le nom et la version du dictionnaire"
-#: dic/compdic.cpp:395
+#: dic/compdic.cpp:407
msgid ""
" -l, --letters <string> Path to the file containing the letters (see below)"
msgstr ""
" -l, --letters <string> Chemin vers un fichier contenant les lettres (voir "
"ci-dessous)"
-#: dic/compdic.cpp:396
+#: dic/compdic.cpp:408
msgid ""
" -i, --input <string> Path to the uncompressed dictionary file (encoded "
"in UTF-8)"
@@ -109,56 +109,64 @@
" -i, --input <string> Chemin vers le fichier de dictionnaire non "
"compressé (encodé en UTF-8)"
-#: dic/compdic.cpp:397
+#: dic/compdic.cpp:409
+msgid ""
+" The words must be in alphabetical order, without "
+"duplicates"
+msgstr ""
+" Les mots doivent être triés par ordre
alphabétique,"
+"sans doublons"
+
+#: dic/compdic.cpp:410
msgid ""
" -o, --output <string Path to the generated compressed dictionary file"
msgstr ""
" -o, --output <string Chemin vers le fichier de dictionnaire compressé "
"généré"
-#: dic/compdic.cpp:398
+#: dic/compdic.cpp:411
msgid "Other options:"
msgstr "Autres options :"
-#: dic/compdic.cpp:399
+#: dic/compdic.cpp:412
msgid " -h, --help Print this help and exit"
msgstr " -h, --help Affiche cette aide et quitte"
-#: dic/compdic.cpp:400
+#: dic/compdic.cpp:413
msgid "Example:"
msgstr "Exemple :"
-#: dic/compdic.cpp:401
+#: dic/compdic.cpp:414
msgid " -d 'ODS 5.0' -l letters.txt -i ods5.txt -o ods5.dawg"
msgstr " -d 'ODS 5.0' -l lettres.txt -i ods5.txt -o ods5.dawg"
-#: dic/compdic.cpp:403
+#: dic/compdic.cpp:416
msgid ""
"The file containing the letters (--letters switch) must be UTF-8 encoded."
msgstr ""
"Le fichier contenant les lettres (option --letters) doit être encodé en
UTF-"
"8."
-#: dic/compdic.cpp:404
+#: dic/compdic.cpp:417
msgid ""
"Each line corresponds to one letter, and must contain 5 fields separated "
"with "
msgstr ""
"Chaque ligne correspond à une lettre, et doit contenir 5 champs séparés
par "
-#: dic/compdic.cpp:405
+#: dic/compdic.cpp:418
msgid "one or more space(s)."
msgstr "un ou plusieurs espace(s)."
-#: dic/compdic.cpp:406
+#: dic/compdic.cpp:419
msgid " - 1st field: the letter itself"
msgstr " - 1er champ : la lettre elle-même"
-#: dic/compdic.cpp:407
+#: dic/compdic.cpp:420
msgid " - 2nd field: the points of the letter"
msgstr " - 2e champ : les points de cette lettre"
-#: dic/compdic.cpp:408
+#: dic/compdic.cpp:421
msgid ""
" - 3rd field: the frequency of the letter (how many letters of this kind in "
"the game)"
@@ -166,7 +174,7 @@
" - 3e champ : la fréquence de la lettre (nombre de lettres de ce genre dans "
"le jeu)"
-#: dic/compdic.cpp:409
+#: dic/compdic.cpp:422
msgid ""
" - 4th field: 1 if the letter is considered as a vowel in Scrabble game, 0 "
"otherwise"
@@ -174,7 +182,7 @@
" - 4e champ : 1 si la lettre est considérée comme une voyelle au jeu de "
"Scrabble, 0 sinon"
-#: dic/compdic.cpp:410
+#: dic/compdic.cpp:423
msgid ""
" - 5th field: 1 if the letter is considered as a consonant in Scrabble game, "
"0 otherwise"
@@ -182,49 +190,49 @@
" - 5e champ : 1 si la lettre est considérée comme une consonne au jeu de "
"Scrabble, 0 sinon"
-#: dic/compdic.cpp:411
+#: dic/compdic.cpp:424
msgid "Example for french:"
msgstr "Exemple pour le Français :"
-#: dic/compdic.cpp:412
+#: dic/compdic.cpp:425
msgid "A 1 9 1 0"
msgstr "A 1 9 1 0"
-#: dic/compdic.cpp:413
+#: dic/compdic.cpp:426
msgid "[...]"
msgstr "[...]"
-#: dic/compdic.cpp:414
+#: dic/compdic.cpp:427
msgid "Z 10 1 0 1"
msgstr "Z 10 1 0 1"
-#: dic/compdic.cpp:415
+#: dic/compdic.cpp:428
msgid "? 0 2 1 1"
msgstr "? 0 2 1 1"
-#: dic/compdic.cpp:485
+#: dic/compdic.cpp:498
msgid "A mandatory option is missing"
msgstr "Une option obligatoire est manquante"
-#: dic/compdic.cpp:493
+#: dic/compdic.cpp:506
msgid "Cannot stat uncompressed dictionary "
msgstr "Impossible de trouver le dictionnaire non compressé "
-#: dic/compdic.cpp:501
+#: dic/compdic.cpp:514
msgid "Cannot open output file "
msgstr "Impossible d'ouvrir le fichier d'output "
-#: dic/compdic.cpp:549
+#: dic/compdic.cpp:562
#, c-format
msgid " Load time: %.3f s\n"
msgstr " Temps de chargement : %.3f s\n"
-#: dic/compdic.cpp:550
+#: dic/compdic.cpp:563
#, c-format
msgid " Compression time: %.3f s\n"
msgstr " Temps de compression : %.3f s\n"
-#: dic/compdic.cpp:552
+#: dic/compdic.cpp:565
#, c-format
msgid " Maximum recursion level reached: %d\n"
msgstr " Niveau maximum de rcursion atteint : %d\n"
@@ -259,78 +267,87 @@
msgid " -x: print dictionary in hex\n"
msgstr " -x : affiche le dictionnaire en hexadécimal\n"
-#: dic/regexpmain.cpp:101
+#: dic/regexpmain.cpp:50
#, c-format
msgid "usage: %s dictionary"
msgstr "Usage : %s dictionnaire"
-#: dic/regexpmain.cpp:102
+#: dic/regexpmain.cpp:51
msgid " dictionary: path to eliot dawg dictionary"
msgstr " dictionnaire : chemin vers un dictionnaire de type dawg pour Eliot"
-#: dic/regexpmain.cpp:137
-msgid "enter a regular expression:"
+#: dic/regexpmain.cpp:81 dic/regexpmain.cpp:105
+msgid "Enter a regular expression:"
msgstr "Entrer une expression régulière :"
-#: dic/regexpmain.cpp:149
+#: dic/regexpmain.cpp:92
msgid "result:"
msgstr "résultat :"
-#: utils/ncurses.cpp:270
+#: dic/regexpmain.cpp:101 wxwin/searchpanel.cc:296
+msgid "Invalid regular expression: "
+msgstr "Expression régulière invalide : "
+
+#: game/training.cpp:49 qt/new_game.cpp:86 qt/new_game.cpp:94
+#: qt/new_game.cpp:126 qt/ui/new_game.ui:46
+msgid "Training"
+msgstr "Entraînement"
+
+#: utils/ncurses.cpp:279
msgid "Scores"
msgstr "Scores"
-#: utils/ncurses.cpp:276
+#: utils/ncurses.cpp:283 utils/ncurses.cpp:288
#, c-format
-msgid "Player %d: %d"
-msgstr "Joueur %d : %d"
+msgid "%s: %d"
+msgstr "%s : %d"
-#: utils/ncurses.cpp:285
+#: utils/ncurses.cpp:300
msgid "Racks"
msgstr "Tirages"
-#: utils/ncurses.cpp:292
+#: utils/ncurses.cpp:304 utils/ncurses.cpp:310
#, c-format
-msgid "Player %d: %ls"
-msgstr "Joueur %d : %ls"
+msgid "%s: %ls"
+msgstr "%s : %ls"
-#: utils/ncurses.cpp:303 utils/ncurses.cpp:306
+#: utils/ncurses.cpp:324 utils/ncurses.cpp:327
msgid "Search complete"
msgstr "Recherche terminée"
-#: utils/ncurses.cpp:316
+#: utils/ncurses.cpp:337 qt/ui/training_widget.ui:71
msgid "Search results"
msgstr "Résultats de la recherche"
-#: utils/ncurses.cpp:345
+#: utils/ncurses.cpp:366
msgid "History of the game"
msgstr "Historique de la partie"
-#: utils/ncurses.cpp:351
+#: utils/ncurses.cpp:372
msgid " N | RACK | SOLUTION | REF | PTS | P | BONUS"
msgstr " N | TIRAGE | SOLUTION | REF | PTS | J | BONUS"
-#: utils/ncurses.cpp:390
+#: utils/ncurses.cpp:411 qt/history_widget.cpp:143 qt/main_window.cpp:435
msgid "(PASS)"
msgstr "(PASSE)"
-#: utils/ncurses.cpp:416
+#: utils/ncurses.cpp:437 qt/ui/main_window.ui:100
msgid "Help"
msgstr "Aide"
-#: utils/ncurses.cpp:420
+#: utils/ncurses.cpp:441
msgid "[Global]"
msgstr "[Général]"
-#: utils/ncurses.cpp:421
+#: utils/ncurses.cpp:442
msgid " h, H, ? Show/hide help box"
msgstr " h, H, ? Afficher/cacher la boîte d'aide"
-#: utils/ncurses.cpp:422
+#: utils/ncurses.cpp:443
msgid " y, Y Show/hide history of the game"
msgstr " y, Y Afficher/cacher l'historique de la partie"
-#: utils/ncurses.cpp:423
+#: utils/ncurses.cpp:444
msgid ""
" b, B Show/hide contents of the bag (including letters of the "
"racks)"
@@ -338,98 +355,99 @@
" b, B Afficher/cacher le contenu du sac (avec les lettres des "
"tirages)"
-#: utils/ncurses.cpp:424
+#: utils/ncurses.cpp:445
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:425
+#: utils/ncurses.cpp:446
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:426
+#: utils/ncurses.cpp:447
msgid " j, J Play a word"
msgstr " j, J Jouer un mot"
-#: utils/ncurses.cpp:427
+#: utils/ncurses.cpp:448
msgid " s, S Save the game"
msgstr " s, S Sauvegarder la partie"
-#: utils/ncurses.cpp:428
+#: utils/ncurses.cpp:449
msgid " l, L Load a game"
msgstr " l, L Charger une partie"
-#: utils/ncurses.cpp:429
+#: utils/ncurses.cpp:450
msgid " q, Q Quit"
msgstr " q, Q Quitter"
-#: utils/ncurses.cpp:432
+#: utils/ncurses.cpp:453
msgid "[Training mode]"
msgstr "[Mode entraînement]"
-#: utils/ncurses.cpp:433
+#: utils/ncurses.cpp:454
msgid " * Take a random rack"
msgstr " * Tirage aléatoire"
-#: utils/ncurses.cpp:434
+#: utils/ncurses.cpp:455
msgid " + Complete the current rack randomly"
msgstr " + Compléter le tirage courant de manière
aléatoire"
-#: utils/ncurses.cpp:435
+#: utils/ncurses.cpp:456
msgid " t, T Set the rack manually"
msgstr " t, T Entrer le tirage manuellement"
-#: utils/ncurses.cpp:436
+#: utils/ncurses.cpp:457
msgid " c, C Compute all the possible words"
msgstr " c, C Calculer tous les mots possibles"
-#: utils/ncurses.cpp:437
+#: utils/ncurses.cpp:458
msgid " r, R Show/hide search results"
msgstr " r, R Afficher/cacher les résultats de la recherche"
-#: utils/ncurses.cpp:440
+#: utils/ncurses.cpp:461
msgid "[Duplicate mode]"
msgstr "[Mode duplicate]"
-#: utils/ncurses.cpp:441
+#: utils/ncurses.cpp:462
msgid " n, N Switch to the next human player"
msgstr " n, N Passer au joueur humain suivant"
-#: utils/ncurses.cpp:444
+#: utils/ncurses.cpp:465
msgid "[Free game mode]"
msgstr "[Mode partie libre]"
-#: utils/ncurses.cpp:445
+#: utils/ncurses.cpp:466
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:448
+#: utils/ncurses.cpp:469
msgid "[Miscellaneous]"
msgstr "[Divers]"
-#: utils/ncurses.cpp:449
+#: utils/ncurses.cpp:470
msgid " <up>, <down> Navigate in a box line by line"
msgstr " <haut>, <bas> Naviguer dans une boîte ligne par ligne"
-#: utils/ncurses.cpp:450
+#: utils/ncurses.cpp:471
msgid " <pgup>, <pgdown> Navigate in a box page by page"
msgstr " <pgup>, <pgdown> Naviguer dans une boîte page par page"
-#: utils/ncurses.cpp:451
+#: utils/ncurses.cpp:472
msgid " Ctrl-l Refresh the screen"
msgstr " Ctrl-l Rafraîchir l'écran"
-#: utils/ncurses.cpp:462 wxwin/auxframes.cc:148
+#: utils/ncurses.cpp:483 wxwin/auxframes.cc:147 qt/main_window.cpp:518
+#: qt/ui/main_window.ui:188
msgid "Bag"
msgstr "Sac"
-#: utils/ncurses.cpp:469
+#: utils/ncurses.cpp:490
msgid " LETTER | POINTS | FREQUENCY | REMAINING"
msgstr " LETTRE | POINTS |Â FREQUENCE | RESTANT"
-#: utils/ncurses.cpp:522
+#: utils/ncurses.cpp:543
msgid "Play a word"
msgstr "Jouer un mot"
@@ -437,180 +455,180 @@
#. "Coordinates:". For example:
#. Pl. word :
#. Coordinates:
-#: utils/ncurses.cpp:523 utils/ncurses.cpp:531
+#: utils/ncurses.cpp:544 utils/ncurses.cpp:552
msgid "Played word:"
msgstr "Mot joué :"
-#: utils/ncurses.cpp:524 utils/ncurses.cpp:532
+#: utils/ncurses.cpp:545 utils/ncurses.cpp:553
msgid "Coordinates:"
msgstr "Coordonnées :"
-#: utils/ncurses.cpp:546
+#: utils/ncurses.cpp:567
msgid "Incorrect or misplaced word"
msgstr "Mot incorrect ou mal placé"
-#: utils/ncurses.cpp:556
+#: utils/ncurses.cpp:577
msgid "Dictionary"
msgstr "Dictionnaire"
-#: utils/ncurses.cpp:557
+#: utils/ncurses.cpp:578
msgid "Enter the word to check:"
msgstr "Entrer le mot à vérifier:"
-#: utils/ncurses.cpp:566
+#: utils/ncurses.cpp:587
#, c-format
msgid "The word '%ls' exists"
msgstr "Le mot '%ls' existe"
-#: utils/ncurses.cpp:568
+#: utils/ncurses.cpp:589
#, c-format
msgid "The word '%ls' does not exist"
msgstr "Le mot '%ls' n'existe pas"
-#: utils/ncurses.cpp:578 wxwin/mainframe.cc:475 wxwin/mainframe.cc:483
+#: utils/ncurses.cpp:599 wxwin/mainframe.cc:475 wxwin/mainframe.cc:483
msgid "Save the game"
msgstr "Sauvegarder la partie"
-#: utils/ncurses.cpp:579 utils/ncurses.cpp:609
+#: utils/ncurses.cpp:600 utils/ncurses.cpp:630
msgid "Enter the file name:"
msgstr "Entrer le nom du fichier :"
-#: utils/ncurses.cpp:589
+#: utils/ncurses.cpp:610
#, c-format
msgid "Cannot open file %ls for writing"
msgstr "Impossible d'ouvrir le fichier %ls en écriture"
-#: utils/ncurses.cpp:597
+#: utils/ncurses.cpp:618
#, c-format
msgid "Game saved in '%ls'"
msgstr "Partie sauvée dans '%ls'"
-#: utils/ncurses.cpp:608 wxwin/mainframe.cc:275 wxwin/mainframe.cc:405
-#: wxwin/mainframe.cc:429
+#: utils/ncurses.cpp:629 wxwin/mainframe.cc:275 wxwin/mainframe.cc:405
+#: wxwin/mainframe.cc:429 qt/main_window.cpp:287
msgid "Load a game"
msgstr "Charger une partie"
-#: utils/ncurses.cpp:619
+#: utils/ncurses.cpp:640
#, c-format
msgid "Cannot open file '%ls' for reading"
msgstr "Impossible d'ouvrir le fichier '%ls' en lecture"
-#: utils/ncurses.cpp:627
+#: utils/ncurses.cpp:648
#, c-format
msgid "Invalid saved game"
msgstr "Partie sauvée invalide"
-#: utils/ncurses.cpp:632
+#: utils/ncurses.cpp:653 qt/main_window.cpp:301
#, c-format
msgid "Game loaded"
msgstr "Partie chargée"
-#: utils/ncurses.cpp:647
+#: utils/ncurses.cpp:668
msgid "Pass your turn"
msgstr "Passer son tour"
-#: utils/ncurses.cpp:648
+#: utils/ncurses.cpp:669
msgid "Enter the letters to change:"
msgstr "Entrer les lettres à changer:"
-#: utils/ncurses.cpp:657
+#: utils/ncurses.cpp:678
msgid "Cannot pass the turn"
msgstr "Impossible de passer le tour"
-#: utils/ncurses.cpp:667
+#: utils/ncurses.cpp:688
msgid "Set rack"
msgstr "Choix du tirage"
-#: utils/ncurses.cpp:668
+#: utils/ncurses.cpp:689
msgid "Enter the new letters:"
msgstr "Entrer les nouvelles lettres:"
-#: utils/ncurses.cpp:677
+#: utils/ncurses.cpp:698
msgid "Cannot take these letters from the bag"
msgstr "Impossible de retirer ces lettres du sac"
-#: utils/ncurses.cpp:1071
+#: utils/ncurses.cpp:1092 qt/main_window.cpp:193 qt/ui/prefs_dialog.ui:175
msgid "Training mode"
msgstr "Mode entraînement"
-#: utils/ncurses.cpp:1073
+#: utils/ncurses.cpp:1094 qt/ui/prefs_dialog.ui:156
msgid "Free game mode"
msgstr "Mode partie libre"
-#: utils/ncurses.cpp:1075
+#: utils/ncurses.cpp:1096 qt/ui/prefs_dialog.ui:69
msgid "Duplicate mode"
msgstr "Mode duplicate"
-#: utils/ncurses.cpp:1078
+#: utils/ncurses.cpp:1099 qt/ui/new_game.ui:67
msgid "Joker game"
msgstr "Partie joker"
-#: utils/ncurses.cpp:1079
+#: utils/ncurses.cpp:1100
msgid "[h for help]"
msgstr "[h pour l'aide]"
-#: wxwin/auxframes.cc:123
+#: wxwin/auxframes.cc:122
msgid "Grid"
msgstr "Grille"
-#: wxwin/auxframes.cc:203
+#: wxwin/auxframes.cc:202 qt/ui/training_widget.ui:52
msgid "Search"
msgstr "Recherche"
-#: wxwin/auxframes.cc:234
+#: wxwin/auxframes.cc:233 qt/ui/dic_tools_widget.ui:31
msgid "Check"
msgstr "Vérification"
-#: wxwin/auxframes.cc:239
+#: wxwin/auxframes.cc:238
msgid "Word to check"
msgstr "Mot à vérifier"
-#: wxwin/auxframes.cc:257 wxwin/configdb.cc:203 wxwin/searchpanel.cc:107
+#: wxwin/auxframes.cc:256 wxwin/configdb.cc:203 wxwin/searchpanel.cc:107
msgid "No dictionary"
msgstr "Pas de dictionnaire"
-#: wxwin/auxframes.cc:261
+#: wxwin/auxframes.cc:260
msgid "exists"
msgstr "existe"
-#: wxwin/auxframes.cc:263
+#: wxwin/auxframes.cc:262
msgid "doesn't exist"
msgstr "n'existe pas"
-#: wxwin/auxframes.cc:304
+#: wxwin/auxframes.cc:303
msgid "Copy"
msgstr "Copier"
-#: wxwin/auxframes.cc:348 wxwin/mainframe.cc:502 wxwin/mainframe.cc:522
+#: 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:363 wxwin/searchpanel.cc:119
+#: wxwin/auxframes.cc:362 wxwin/searchpanel.cc:119
msgid "No result"
msgstr "Pas de résultat"
-#: wxwin/auxframes.cc:373
+#: wxwin/auxframes.cc:372
msgid "Rack + 1"
msgstr "Tirage + 1"
-#: wxwin/auxframes.cc:415
+#: wxwin/auxframes.cc:414
msgid "Rack: "
msgstr "Tirage :"
-#: wxwin/auxframes.cc:436
+#: wxwin/auxframes.cc:435
msgid "Benjamins"
msgstr "Benjamins"
-#: wxwin/auxframes.cc:477
+#: wxwin/auxframes.cc:476
msgid "Extensions"
msgstr "Raccords"
-#: wxwin/auxframes.cc:543 wxwin/mainframe.cc:325
+#: wxwin/auxframes.cc:542 wxwin/mainframe.cc:325
msgid "Game history"
msgstr "Historique de la partie"
-#: wxwin/auxframes.cc:575 wxwin/mainframe.cc:327
+#: wxwin/auxframes.cc:574 wxwin/mainframe.cc:327
msgid "Results"
msgstr "Résultats"
@@ -722,7 +740,7 @@
msgid "Nb"
msgstr "Num"
-#: wxwin/configdb.cc:323 wxwin/mainframe.cc:174
+#: wxwin/configdb.cc:323 wxwin/mainframe.cc:174 qt/history_widget.cpp:52
msgid "Rack"
msgstr "Tirage"
@@ -750,7 +768,7 @@
msgid "Cancel last changes"
msgstr "Annuler les derniers changements"
-#: wxwin/gfxresult.cc:67
+#: wxwin/gfxresult.cc:67 qt/history_widget.cpp:53 qt/training_widget.cpp:58
msgid "Word"
msgstr "Mot"
@@ -802,7 +820,7 @@
msgid "&New game\tCtrl+N"
msgstr "&Nouvelle partie\tCtrl+N"
-#: wxwin/mainframe.cc:272
+#: wxwin/mainframe.cc:272 qt/ui/main_window.ui:177
msgid "Start a new game"
msgstr "Démarrer une nouvelle partie"
@@ -822,7 +840,7 @@
msgid "&Save as...\tCtrl+S"
msgstr "&Enregistrer sous...\tCtrl+S"
-#: wxwin/mainframe.cc:276
+#: wxwin/mainframe.cc:276 qt/ui/main_window.ui:229
msgid "Save the current game"
msgstr "Sauvegarder la partie en cours"
@@ -854,7 +872,7 @@
msgid "&Quit\tCtrl+Q"
msgstr "&Quitter\tCtrl+Q"
-#: wxwin/mainframe.cc:284
+#: wxwin/mainframe.cc:284 qt/ui/main_window.ui:169
msgid "Quit Eliot"
msgstr "Quitter Eliot"
@@ -862,7 +880,7 @@
msgid "&Dictionary...\tCtrl+D"
msgstr "&Dictionnaire...\tCtrl+D"
-#: wxwin/mainframe.cc:287 wxwin/mainframe.cc:604
+#: wxwin/mainframe.cc:287 wxwin/mainframe.cc:604 qt/main_window.cpp:485
msgid "Choose a dictionary"
msgstr "Choisir un dictionnaire"
@@ -970,7 +988,7 @@
msgid "Font for the search"
msgstr "Police de caractères pour la recherche"
-#: wxwin/mainframe.cc:310 wxwin/mainframe.cc:334
+#: wxwin/mainframe.cc:310 wxwin/mainframe.cc:334 qt/history_widget.cpp:177
msgid "&Game"
msgstr "&Partie"
@@ -1070,7 +1088,8 @@
msgid "&About..."
msgstr "Ã &propos..."
-#: wxwin/mainframe.cc:331 wxwin/mainframe.cc:733
+#: wxwin/mainframe.cc:331 wxwin/mainframe.cc:733 qt/main_window.cpp:596
+#: qt/ui/main_window.ui:161
msgid "About Eliot"
msgstr "Ã propos d'Eliot"
@@ -1099,7 +1118,7 @@
msgid "Cannot open "
msgstr "Impossible d'ouvrir "
-#: wxwin/mainframe.cc:440 wxwin/mainframe.cc:449
+#: wxwin/mainframe.cc:440 wxwin/mainframe.cc:449 qt/main_window.cpp:294
msgid "Error while loading the game"
msgstr "Erreur pendant le chargement de la partie"
@@ -1197,35 +1216,478 @@
msgid "The search is limited to %d letters"
msgstr "La recherche est limitée à %d lettres"
-#: wxwin/searchpanel.cc:301
+#: wxwin/searchpanel.cc:249
msgid "Minimum length"
msgstr "Longueur minimum"
-#: wxwin/searchpanel.cc:303
+#: wxwin/searchpanel.cc:251
msgid "Maximum length"
msgstr "Longueur maximum"
-#: wxwin/searchpanel.cc:366
+#: wxwin/searchpanel.cc:320
msgid "Cross words"
msgstr "Mots croisés"
-#: wxwin/searchpanel.cc:367
+#: wxwin/searchpanel.cc:321 qt/ui/dic_tools_widget.ui:69
msgid "Plus 1"
msgstr "Plus 1"
-#: wxwin/searchpanel.cc:368
+#: wxwin/searchpanel.cc:322 qt/ui/dic_tools_widget.ui:94
msgid "Regular expressions"
msgstr "Expressions régulières"
+#: qt/bag_widget.cpp:49
+msgid "Letter"
+msgstr "Lettre"
+
+#: qt/bag_widget.cpp:50 qt/history_widget.cpp:55 qt/training_widget.cpp:60
+msgid "Points"
+msgstr "Points"
+
+#: qt/dic_tools_widget.cpp:87 qt/dic_tools_widget.cpp:92
+#: qt/ui/player_widget.ui:19 qt/ui/training_widget.ui:21
+msgid "Rack:"
+msgstr "Tirage :"
+
+#: qt/dic_tools_widget.cpp:122 qt/dic_tools_widget.cpp:155
+#: qt/dic_tools_widget.cpp:208
+msgid "Please select a dictionary"
+msgstr "Choisir un dictionnaire"
+
+#: qt/dic_tools_widget.cpp:133
+msgid "The word '%1' exists"
+msgstr "Le mot '%1' existe"
+
+#: qt/dic_tools_widget.cpp:138
+msgid "The word '%1' does not exist"
+msgstr "Le mot '%1' n'existe pas"
+
+#: qt/dic_tools_widget.cpp:162
+msgid "Rack: %1"
+msgstr "Tirage : %1"
+
+#: qt/dic_tools_widget.cpp:181
+msgid "Anagrams"
+msgstr "Anagrammes"
+
+#: qt/dic_tools_widget.cpp:215
+msgid "Regular expression: %1"
+msgstr "Expression régulière : %1"
+
+#: qt/dic_tools_widget.cpp:238
+msgid "Invalid regular expression: %1"
+msgstr "Expression régulière invalide : %1"
+
+#: qt/history_widget.cpp:51
+msgid "Turn"
+msgstr "Coup"
+
+#: qt/history_widget.cpp:54 qt/training_widget.cpp:59
+msgid "Ref"
+msgstr "Ref"
+
+#: qt/history_widget.cpp:87 qt/new_game.cpp:49 qt/score_widget.cpp:46
+#: qt/ui/new_game.ui:102
+msgid "Player"
+msgstr "Joueur"
+
+#: qt/main_window.cpp:91 qt/main_window.cpp:536 qt/ui/main_window.ui:40
+msgid "Board"
+msgstr "Grille"
+
+#: qt/main_window.cpp:144
+msgid "Cannot load dictionary '%1' indicated in the preferences"
+msgstr ""
+"Impossible de charger le dictionnaire '%1' indiqué dans les préférences"
+
+#: qt/main_window.cpp:185
+msgid "No game"
+msgstr "Pas de partie en cours"
+
+#: qt/main_window.cpp:197
+msgid "Duplicate game"
+msgstr "Partie duplicate"
+
+#: qt/main_window.cpp:201 qt/new_game.cpp:88 qt/new_game.cpp:145
+#: qt/ui/new_game.ui:41
+msgid "Free game"
+msgstr "Partie libre"
+
+#: qt/main_window.cpp:250 qt/main_window.cpp:283
+msgid "You have to select a dictionary first!"
+msgstr "Vous devez d'abord choisir un dictionnaire !"
+
+#: qt/main_window.cpp:275
+msgid "Game started"
+msgstr "Partie démarrée"
+
+#: qt/main_window.cpp:311
+msgid "Save a game"
+msgstr "Sauvegarder la partie"
+
+#: qt/main_window.cpp:316
+msgid "Game saved"
+msgstr "Partie enregistrée"
+
+#: qt/main_window.cpp:343
+msgid "N."
+msgstr "N."
+
+#: qt/main_window.cpp:343
+msgid "RACK"
+msgstr "TIRAGE"
+
+#: qt/main_window.cpp:343
+msgid "SOLUTION"
+msgstr "SOLUTION"
+
+#: qt/main_window.cpp:343
+msgid "REF"
+msgstr "REF"
+
+#: qt/main_window.cpp:343
+msgid "PTS"
+msgstr "PTS"
+
+#: qt/main_window.cpp:476
+msgid "Stop current game?"
+msgstr "Arrêter la partie en cours ?"
+
+#: qt/main_window.cpp:477
+msgid ""
+"Loading a dictionary will stop the current game. Do you want to continue?"
+msgstr ""
+"Charger un dictionnaire arrêtera la partie en cours. Voulez-vous continuer ?"
+
+#: qt/main_window.cpp:554 qt/ui/main_window.ui:53 qt/ui/main_window.ui:251
+msgid "History"
+msgstr "Historique"
+
+#: qt/main_window.cpp:571 qt/ui/main_window.ui:276
+msgid "Dictionary tools"
+msgstr "Dictionnaire"
+
+#: qt/main_window.cpp:588
+msgid ""
+"Copyright (C) 1999-2008 - Antoine Fraboulet & Olivier Teuliere\n"
+"\n"
+"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 ""
+"Copyright (C) 1999-2008 - Antoine Fraboulet & Olivier Teulière\n"
+"\n"
+"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."
+
+#: qt/new_game.cpp:36 qt/ui/new_game.ui:117
+msgid "Human"
+msgstr "Humain"
+
+#: qt/new_game.cpp:37 qt/ui/new_game.ui:122
+msgid "Computer"
+msgstr "Ordinateur"
+
+#: qt/new_game.cpp:47
+msgid "Name"
+msgstr "Nom"
+
+#: qt/new_game.cpp:48
+msgid "Type"
+msgstr "Type"
+
+#: qt/new_game.cpp:51
+msgid "Eliot"
+msgstr "Eliot"
+
+#: qt/new_game.cpp:101
+msgid "Player %1"
+msgstr "Joueur %1"
+
+#: qt/new_game.cpp:144 qt/ui/new_game.ui:36
+msgid "Duplicate"
+msgstr "Duplicate"
+
+#: qt/player_widget.cpp:156
+msgid "Cannot play '%1' at position '%2': incorrect or misplaced word (%3)"
+msgstr "Impossible de jouer '%1' en '%2' : mot incorrect ou mal placé (%3)"
+
+#: qt/player_widget.cpp:179
+msgid "Cannot pass turn (%1)"
+msgstr "Impossible de passer le tour (%1)"
+
+#: qt/player_widget.cpp:181
+msgid "Cannot change letters '%1' (%2)"
+msgstr "Impossible de changer les lettres '%1' (%2)"
+
+#: qt/score_widget.cpp:47
+msgid "Score"
+msgstr "Score"
+
+#: qt/training_widget.cpp:194
+msgid "Warning: Cannot set the rack to '%1'"
+msgstr "Attention : Impossible de choisir le tirage '%1'"
+
+#: qt/ui/dic_tools_widget.ui:105
+msgid "Minimum length:"
+msgstr "Longueur minimum :"
+
+#: qt/ui/dic_tools_widget.ui:122
+msgid "Maximum length:"
+msgstr "Longueur maximum :"
+
+#: qt/ui/dic_tools_widget.ui:157
+msgid "Note: only the 1000 first results have been displayed"
+msgstr "Note : seuls les 1000 premiers résultats ont été affichés"
+
+#: qt/ui/main_window.ui:62 qt/ui/new_game.ui:77
+msgid "Players"
+msgstr "Joueurs"
+
+#: qt/ui/main_window.ui:80
+msgid "Game"
+msgstr "&Partie"
+
+#: qt/ui/main_window.ui:93
+msgid "Settings"
+msgstr "Para&mètres"
+
+#: qt/ui/main_window.ui:107
+msgid "Windows"
+msgstr "&Fenêtres"
+
+#: qt/ui/main_window.ui:150
+msgid "Choose dictionary..."
+msgstr "Choisir un &dictionnaire..."
+
+#: qt/ui/main_window.ui:153
+msgid "Select a new dictionary"
+msgstr "Choisir un nouveau dictionnaire"
+
+#: qt/ui/main_window.ui:158
+msgid "About..."
+msgstr "Ã &propos..."
+
+#: qt/ui/main_window.ui:166
+msgid "Quit"
+msgstr "&Quitter"
+
+#: qt/ui/main_window.ui:174
+msgid "New..."
+msgstr "&Nouvelle partie..."
+
+#: qt/ui/main_window.ui:191
+msgid "Show/hide the remaining tiles in the bag"
+msgstr "Afficher/cacher les lettres restantes dans le sac"
+
+#: qt/ui/main_window.ui:199
+msgid "Preferences..."
+msgstr "&Préférences..."
+
+#: qt/ui/main_window.ui:202
+msgid "Edit the preferences"
+msgstr "Modifier les préférences"
+
+#: qt/ui/main_window.ui:207
+msgid "Save"
+msgstr "Sauver"
+
+#: qt/ui/main_window.ui:215
+msgid "Load..."
+msgstr "&Charger..."
+
+#: qt/ui/main_window.ui:218
+msgid "Load an existing game"
+msgstr "Charger une partie existante"
+
+#: qt/ui/main_window.ui:226
+msgid "Save as..."
+msgstr "&Enregistrer sous..."
+
+#: qt/ui/main_window.ui:240
+msgid "External board"
+msgstr "&Plateau de jeu externe"
+
+#: qt/ui/main_window.ui:243
+msgid "Show/hide the external board"
+msgstr "Afficher/cacher le plateau de jeu externe"
+
+#: qt/ui/main_window.ui:254
+msgid "Show/hide the game history"
+msgstr "Afficher/cacher l'historique de la partie"
+
+#: qt/ui/main_window.ui:262
+msgid "Print..."
+msgstr "&Impression..."
+
+#: qt/ui/main_window.ui:265
+msgid "Print the current game"
+msgstr "Imprimer la partie en cours"
+
+#: qt/ui/main_window.ui:279
+msgid "Show/hide the dictionary tools"
+msgstr "Afficher/cacher les outils de recherche dans le dictionnaire"
+
+#: qt/ui/new_game.ui:13
+msgid "New game"
+msgstr "Nouvelle partie"
+
+#: qt/ui/new_game.ui:22
+msgid "Game type"
+msgstr "Type de partie"
+
+#: qt/ui/new_game.ui:28
+msgid "Mode:"
+msgstr "Mode :"
+
+#: qt/ui/new_game.ui:95
+msgid "Name:"
+msgstr "Nom :"
+
+#: qt/ui/new_game.ui:109
+msgid "Type:"
+msgstr "Type :"
+
+#: qt/ui/new_game.ui:134
+msgid "Add player"
+msgstr "Ajouter un joueur"
+
+#: qt/ui/new_game.ui:157
+msgid "Remove player"
+msgstr "Supprimer un joueur"
+
+#: qt/ui/player_widget.ui:36
+msgid "Shuffle"
+msgstr "Mélanger"
+
+#: qt/ui/player_widget.ui:43
+msgid "Play a word:"
+msgstr "Jouer le mot :"
+
+#: qt/ui/player_widget.ui:50 qt/ui/player_widget.ui:53
+msgid ""
+"To play a word, enter the word (case sensitive) and its coordinates. E.g.: "
+"WORD H4"
+msgstr ""
+"Pour jouer un mot, entrer le mot (sensible à la casse) puis ses
coordonnées. "
+"Par exemple : MOT H7"
+
+#: qt/ui/player_widget.ui:63 qt/ui/training_widget.ui:62
+msgid "Play"
+msgstr "Jouer"
+
+#: qt/ui/player_widget.ui:70
+msgid "Change letters:"
+msgstr "Lettres à changer :"
+
+#: qt/ui/player_widget.ui:77
+msgid "Enter the letters you want to change"
+msgstr "Entrer les lettres à changer"
+
+#: qt/ui/player_widget.ui:87
+msgid "Change"
+msgstr "Changer"
+
+#: qt/ui/player_widget.ui:94
+msgid "Pass"
+msgstr "Passer"
+
+#: qt/ui/prefs_dialog.ui:19
+msgid "Interface"
+msgstr "Interface"
+
+#: qt/ui/prefs_dialog.ui:27
+msgid "Dictionary path:"
+msgstr "Chemin du dictionnaire :"
+
+#: qt/ui/prefs_dialog.ui:34
+msgid "Enter the dictionary path (mandatory to start a game)"
+msgstr "Entrer le chemin du dictionnaire (obligatoire pour jouer une partie)"
+
+#: qt/ui/prefs_dialog.ui:41
+msgid "Open a browser window to choose the dictionary"
+msgstr "Ouvre une fenêtre de sélection du dictionnaire"
+
+#: qt/ui/prefs_dialog.ui:44
+msgid "Browse..."
+msgstr "Parcourir..."
+
+#: qt/ui/prefs_dialog.ui:53
+msgid ""
+"If checked, the game and player histories will display the rack and the "
+"corresponding solution on the same line"
+msgstr ""
+"Si la case est cochée, les historiques de la partie et des joueurs "
+"afficheront le tirage et la solution correspondante sur la même ligne"
+
+#: qt/ui/prefs_dialog.ui:56
+msgid "Align the rack and the solution in history"
+msgstr "Aligner tirages et solutions dans l'historique"
+
+#: qt/ui/prefs_dialog.ui:75 qt/ui/prefs_dialog.ui:162
+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 ""
+"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:78 qt/ui/prefs_dialog.ui:165
+msgid "Refuse to play invalid moves"
+msgstr "Refuser de jouer des mots invalides"
+
+#: qt/ui/prefs_dialog.ui:87
+msgid "Min. players for a solo:"
+msgstr "Nombre minimal de joueurs pour un solo :"
+
+#: qt/ui/prefs_dialog.ui:107
+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:121
+msgid "Solo value:"
+msgstr "Valeur du solo :"
+
+#: qt/ui/prefs_dialog.ui:141
+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."
+
+#: qt/ui/training_widget.ui:35
+msgid "New rack"
+msgstr "Nouveau tirage"
+
+#: qt/ui/training_widget.ui:42
+msgid "Complement"
+msgstr "Complément"
+
+#~ msgid "AI"
+#~ msgstr "IA"
+
+#~ msgid "&Game"
+#~ msgstr "&Partie"
+
+#~ msgid "&Settings"
+#~ msgstr "&Paramètres"
+
+#~ msgid "&Help"
+#~ msgstr "&Aide"
+
+#~ msgid "&Windows"
+#~ msgstr "&Fenêtres"
+
+#~ msgid "HumanPlayer"
+#~ msgstr "JoueurHumain"
+
#~ msgid "R&accords"
#~ msgstr "R&accords"
#~ msgid "Raccords on a word of the search"
#~ msgstr "Raccords sur un mot de la recherche"
-#~ msgid "&Quit"
-#~ msgstr "&Quitter"
-
#~ msgid "Ba&g"
#~ msgstr "&Sac"
@@ -1250,9 +1712,6 @@
#~ msgid "&Configuration"
#~ msgstr "&Configuration"
-#~ msgid "Game"
-#~ msgstr "Partie"
-
#~ msgid "Word counts double..."
#~ msgstr "Mot compte double..."
@@ -1271,26 +1730,14 @@
#~ msgid "Color of the \"letter counts triple\" squares"
#~ msgstr "Couleur des cases \"lettre compte triple\""
-#, fuzzy
-#~ msgid "Fonte des lettres"
-#~ msgstr "Entrer les nouvelles lettres:"
-
-#~ msgid "Game..."
-#~ msgstr "Partie..."
-
-#, fuzzy
#~ msgid "Results..."
-#~ msgstr "Résultat"
+#~ msgstr "Résultats..."
-#, fuzzy
#~ msgid "Dictionnaire"
-#~ msgstr " Dictionnaire "
+#~ msgstr "Dictionnaire"
#~ msgid "Usage: eliotcurses /path/to/ods4.dawg\n"
#~ msgstr "Usage: eliotcurses /chemin vers/ods4.dawg\n"
#~ msgid "Played word: "
#~ msgstr "Mot joué :"
-
-#~ msgid "Duplicate"
-#~ msgstr "Duplicate"
Index: qt/dic_tools_widget.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/dic_tools_widget.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- qt/dic_tools_widget.cpp 27 Aug 2008 21:20:16 -0000 1.1
+++ qt/dic_tools_widget.cpp 31 Aug 2008 11:48:18 -0000 1.2
@@ -32,6 +32,7 @@
#include "dic_tools_widget.h"
#include "qtcommon.h"
#include "dic.h"
+#include "dic_exception.h"
using namespace std;
@@ -223,14 +224,25 @@
// or a warning should appear when it is reached
unsigned limit = 1000;
vector<wstring> wordList;
- bool res = m_dic->searchRegExp(qtw(rack->text()), wordList,
+ bool res = true;
+ int rowNum = 0;
+ try
+ {
+ res = m_dic->searchRegExp(qtw(rack->text()), wordList,
lmin, lmax, limit);
+ }
+ catch (InvalidRegexpException &e)
+ {
+ model->insertRow(rowNum);
+ model->setData(model->index(rowNum, 0),
+ _q("Invalid regular expression:
%1").arg(qfl(e.what())));
+ model->setData(model->index(rowNum, 0),
+ QBrush(Qt::red), Qt::ForegroundRole);
+ }
- int rowNum = 0;
vector<wstring>::const_iterator it;
for (it = wordList.begin(); it != wordList.end(); it++)
{
- // Create the header line
model->insertRow(rowNum);
model->setData(model->index(rowNum, 0), qfw(*it));
++rowNum;
Index: qt/main_window.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/main_window.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- qt/main_window.cpp 27 Aug 2008 21:20:17 -0000 1.8
+++ qt/main_window.cpp 31 Aug 2008 11:48:18 -0000 1.9
@@ -22,6 +22,7 @@
#include <iostream>
#include <fstream>
+#include <QtGui/QLabel>
#include <QtGui/QMessageBox>
#include <QtGui/QFileDialog>
#include <QtGui/QDockWidget>
@@ -39,6 +40,9 @@
#include "game.h"
#include "freegame.h"
#include "player.h"
+#include "history.h"
+#include "turn.h"
+#include "move.h"
#include "debug.h"
#include "new_game.h"
#include "prefs_dialog.h"
@@ -59,12 +63,20 @@
MainWindow::MainWindow(QWidget *iParent)
: QMainWindow(iParent), m_dic(NULL), m_game(NULL), m_newGameDialog(NULL),
m_prefsDialog(NULL), m_bagWindow(NULL), m_boardWindow(NULL),
- m_historyWindow(NULL), m_dicToolsWindow(NULL)
+ m_historyWindow(NULL), m_dicToolsWindow(NULL), m_dicNameLabel(NULL)
{
m_ui.setupUi(this);
QObject::connect(this, SIGNAL(gameChanged(const Game*)),
this, SLOT(updateForGame(const Game*)));
+ // Status bar
+ statusBar()->addWidget(new QLabel, 1);
+ m_dicNameLabel = new QLabel;
+ m_dicNameLabel->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ statusBar()->addPermanentWidget(m_dicNameLabel);
+ QObject::connect(this, SIGNAL(dicChanged(const Dictionary*)),
+ this, SLOT(updateStatusBar(const Dictionary*)));
+
// Board
BoardWidget *boardWidget = new BoardWidget;
QObject::connect(this, SIGNAL(gameChanged(const Game*)),
@@ -121,12 +133,7 @@
// Load dictionary
QSettings qs(ORGANIZATION, PACKAGE_NAME);
QString dicPath = qs.value(PrefsDialog::kINTF_DIC_PATH, "").toString();
- // FIXME: the messages are not displayed anymore when the window is shown
- if (dicPath == "")
- {
- displayInfoMsg(_q("No dictionary selected"));
- }
- else
+ if (dicPath != "")
{
try
{
@@ -134,10 +141,10 @@
}
catch (...)
{
- displayInfoMsg(_q("No dictionary selected"));
displayErrorMsg(_q("Cannot load dictionary '%1' indicated in the
preferences").arg(dicPath));
}
}
+ emit dicChanged(m_dic);
}
@@ -197,6 +204,15 @@
}
+void MainWindow::updateStatusBar(const Dictionary *iDic)
+{
+ if (iDic == NULL)
+ m_dicNameLabel->setText("No dictionary");
+ else
+ m_dicNameLabel->setText(qfw(m_dic->getHeader().getName()));
+}
+
+
void MainWindow::displayErrorMsg(QString iMsg, QString iContext)
{
if (iContext == "")
@@ -302,59 +318,141 @@
}
+// Printing parameters
+#define TOTAL_WIDTH 500
+#define LINE_HEIGHT 20
+#define FONT_SIZE 12
+#define PEN_WIDTH 2
+#define TEXT_OFFSET 10
+#define SHOULD_ALIGN false
+
void MainWindow::on_action_GamePrint_triggered()
{
if (m_game == NULL)
return;
- displayErrorMsg("Not yet implemented!");
- return;
-
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFileName("/home/ipkiss/dev/eliot/qt-intf/linux/print.pdf");
QPrintDialog printDialog(&printer, this);
if (printDialog.exec() == QDialog::Accepted)
{
- // TODO
QPainter painter(&printer);
const History &history = m_game->getHistory();
-#define TOTAL_WIDTH 500
-#define LINE_HEIGHT 20
const int colWidths[] = { 30, 150, 150, 70, 70 };
- const int numCols = sizeof(colWidths) / sizeof(int);
+ const char *colTitles[] = { _("N."), _("RACK"), _("SOLUTION"),
_("REF"), _("PTS") };
+ const unsigned int nbCols = sizeof(colWidths) / sizeof(int);
+ const unsigned int nbRows = history.getSize() + (SHOULD_ALIGN ? 1 : 2);
double scale = printer.pageRect().width() / double(TOTAL_WIDTH);
painter.scale(scale, scale);
QPen pen(painter.pen());
- pen.setWidth(1);
+ pen.setWidth(PEN_WIDTH);
painter.setPen(pen);
+ QFont font;
+ font.setPixelSize(FONT_SIZE);
//QFont font(painter.font(), &painter);
- QFont font("Times", 12);
painter.setFont(font);
int maxRight = 0;
- for (int i = 0; i < numCols; ++i)
+ for (unsigned int i = 0; i < nbCols; ++i)
maxRight += colWidths[i];
- int maxBottom = LINE_HEIGHT * (1 + history.getSize());
+ int maxBottom = LINE_HEIGHT * (nbRows + 1);
// Draw the horizontal lines
- painter.drawLine(0, 0, maxRight, 0);
- for (unsigned int i = 0; i <= history.getSize(); ++i)
- painter.drawLine(0, LINE_HEIGHT * (i + 1), maxRight, LINE_HEIGHT *
(i + 1));
+ for (unsigned int i = 0; i <= nbRows + 1; ++i)
+ painter.drawLine(0, LINE_HEIGHT * i, maxRight, LINE_HEIGHT * i);
// Draw the vertical lines
painter.drawLine(0, 0, 0, maxBottom);
int curWidth = 0;
- for (int i = 0; i < numCols; ++i)
+ for (unsigned int i = 0; i < nbCols; ++i)
{
curWidth += colWidths[i];
painter.drawLine(curWidth, 0, curWidth, maxBottom);
}
- painter.drawText(190, 4, "SOLUTION");
+ // Draw the titles
+ QFontMetrics fm = painter.fontMetrics();
+ int textHeight = fm.boundingRect('A').height();
+ curWidth = 0;
+ int curHeight = (LINE_HEIGHT + textHeight + 1) / 2;
+ for (unsigned int i = 0; i < nbCols; ++i)
+ {
+ int textWidth = fm.width(colTitles[i]);
+ painter.drawText(curWidth + (colWidths[i] - textWidth) / 2,
+ curHeight, colTitles[i]);
+ curWidth += colWidths[i];
+ }
+
+ // Draw the history of the game
+ int score = 0;
+ int nextHeight;
+ if (SHOULD_ALIGN)
+ nextHeight = curHeight;
+ else
+ nextHeight = curHeight + LINE_HEIGHT;
+ for (unsigned int i = 0; i < history.getSize(); ++i)
+ {
+ const Turn &t = history.getTurn(i);
+ const Move &m = t.getMove();
+
+ curWidth = TEXT_OFFSET;
+ curHeight += LINE_HEIGHT;
+ nextHeight += LINE_HEIGHT;
+
+ // Turn number
+ painter.drawText(curWidth, curHeight, QString("%1").arg(i + 1));
+ curWidth += colWidths[0];
+
+ // Rack
+ painter.drawText(curWidth, curHeight,
+ qfw(t.getPlayedRack().toString()));
+ curWidth += colWidths[1];
+
+ // Word and coordinates
+ if (m.getType() == Move::VALID_ROUND)
+ {
+ const Round &r = m.getRound();
+ painter.drawText(curWidth, nextHeight, qfw(r.getWord()));
+ curWidth += colWidths[2];
+ painter.drawText(curWidth, nextHeight,
+ qfw(r.getCoord().toString()));
+ curWidth += colWidths[3];
+ }
+ else if (m.getType() == Move::INVALID_WORD)
+ {
+ painter.drawText(curWidth, nextHeight,
+ "<" + qfw(m.getBadWord()) + ">");
+ curWidth += colWidths[2];
+ painter.drawText(curWidth, nextHeight, qfw(m.getBadCoord()));
+ curWidth += colWidths[3];
+ }
+ else if (m.getType() == Move::PASS)
+ {
+ painter.drawText(curWidth, nextHeight, _q("(PASS)"));
+ curWidth += colWidths[2];
+ curWidth += colWidths[3];
+ }
+ else
+ {
+ painter.drawText(curWidth, nextHeight,
+ "[-" + qfw(m.getChangedLetters()) + "]");
+ curWidth += colWidths[2];
+ curWidth += colWidths[3];
+ }
+
+ // Score
+ painter.drawText(curWidth, nextHeight,
+ QString("%1").arg(m.getScore()));
+ score += m.getScore();
+ }
+
+ // Total score
+ curHeight += LINE_HEIGHT;
+ painter.drawText(curWidth, nextHeight, QString("%1").arg(score));
}
}
Index: qt/main_window.h
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/main_window.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- qt/main_window.h 27 Aug 2008 21:20:17 -0000 1.8
+++ qt/main_window.h 31 Aug 2008 11:48:19 -0000 1.9
@@ -34,6 +34,7 @@
class NewGame;
class PrefsDialog;
class AuxWindow;
+class QLabel;
class MainWindow: public QMainWindow
{
@@ -77,6 +78,9 @@
*/
void updateForGame(const Game *iGame);
+ /// Update the status bar contents
+ void updateStatusBar(const Dictionary *iDic);
+
private:
/// Current dictionary
const Dictionary *m_dic;
@@ -101,6 +105,9 @@
AuxWindow *m_dicToolsWindow;
//@}
+ /// Label indicationg the name of the current dictionary
+ QLabel *m_dicNameLabel;
+
/// Destroy the current game (if any) and the associated widgets
void destroyCurrentGame();
Index: qt/new_game.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/new_game.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- qt/new_game.cpp 28 Jan 2008 19:17:36 -0000 1.3
+++ qt/new_game.cpp 31 Aug 2008 11:48:19 -0000 1.4
@@ -33,8 +33,8 @@
#include "ai_percent.h"
-const QString NewGame::kHUMAN = _q("Human");
-const QString NewGame::kAI = _q("AI");
+const char * NewGame::kHUMAN = _("Human");
+const char * NewGame::kAI = _("Computer");
NewGame::NewGame(QWidget *iParent)
@@ -46,10 +46,10 @@
m_model = new QStandardItemModel(2, 2, this);
m_model->setHeaderData(0, Qt::Horizontal, _q("Name"), Qt::DisplayRole);
m_model->setHeaderData(1, Qt::Horizontal, _q("Type"), Qt::DisplayRole);
- m_model->setData(m_model->index(0, 0), _q("HumanPlayer"));
- m_model->setData(m_model->index(0, 1), kHUMAN);
+ m_model->setData(m_model->index(0, 0), _q("Player"));
+ m_model->setData(m_model->index(0, 1), _q(kHUMAN));
m_model->setData(m_model->index(1, 0), _q("Eliot"));
- m_model->setData(m_model->index(1, 1), kAI);
+ m_model->setData(m_model->index(1, 1), _q(kAI));
// Initialize the QTreeView with the model we just created
treeViewPlayers->setModel(m_model);
@@ -113,7 +113,7 @@
QString type = m_model->data(m_model->index(num, 1)).toString();
Player *player;
- if (type == kHUMAN)
+ if (type == _q(kHUMAN))
player = new HumanPlayer;
else
player = new AIPercent(1);
@@ -197,8 +197,8 @@
const QModelIndex &) const
{
QComboBox *editor = new QComboBox(parent);
- editor->addItem(NewGame::kHUMAN);
- editor->addItem(NewGame::kAI);
+ editor->addItem(_q(NewGame::kHUMAN));
+ editor->addItem(_q(NewGame::kAI));
return editor;
}
Index: qt/new_game.h
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/new_game.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- qt/new_game.h 20 Jan 2008 18:40:13 -0000 1.1
+++ qt/new_game.h 31 Aug 2008 11:48:20 -0000 1.2
@@ -39,8 +39,8 @@
explicit NewGame(QWidget *iParent = 0);
/// Possible values for the player type
- static const QString kHUMAN;
- static const QString kAI;
+ static const char * kHUMAN;
+ static const char * kAI;
/**
* Create and return a game object from the information of the dialog.
Index: qt/qtcommon.h
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/qtcommon.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- qt/qtcommon.h 26 Jan 2008 23:03:35 -0000 1.2
+++ qt/qtcommon.h 31 Aug 2008 11:48:20 -0000 1.3
@@ -21,6 +21,8 @@
#ifndef QT_COMMON_H_
#define QT_COMMON_H_
+#include "config.h"
+
#if ENABLE_NLS
# include <libintl.h>
# define _(String) gettext(String)
Index: qt/ui/dic_tools_widget.ui
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/ui/dic_tools_widget.ui,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- qt/ui/dic_tools_widget.ui 27 Aug 2008 21:20:17 -0000 1.1
+++ qt/ui/dic_tools_widget.ui 31 Aug 2008 11:48:20 -0000 1.2
@@ -102,7 +102,7 @@
<item>
<widget class="QLabel" name="label" >
<property name="text" >
- <string>_("Minimum length :")</string>
+ <string>_("Minimum length:")</string>
</property>
</widget>
</item>
@@ -119,7 +119,7 @@
<item>
<widget class="QLabel" name="label_2" >
<property name="text" >
- <string>_("Maximum length :")</string>
+ <string>_("Maximum length:")</string>
</property>
</widget>
</item>
Index: qt/ui/main_window.ui
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/ui/main_window.ui,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- qt/ui/main_window.ui 27 Aug 2008 21:20:17 -0000 1.7
+++ qt/ui/main_window.ui 31 Aug 2008 11:48:21 -0000 1.8
@@ -77,7 +77,7 @@
</property>
<widget class="QMenu" name="menuFile" >
<property name="title" >
- <string>_("&Game")</string>
+ <string>_("Game")</string>
</property>
<addaction name="action_GameNew" />
<addaction name="separator" />
@@ -90,21 +90,21 @@
</widget>
<widget class="QMenu" name="menuHelp" >
<property name="title" >
- <string>_("&Settings")</string>
+ <string>_("Settings")</string>
</property>
<addaction name="action_SettingsChooseDic" />
<addaction name="action_SettingsPreferences" />
</widget>
<widget class="QMenu" name="menu_Help" >
<property name="title" >
- <string>_("&Help")</string>
+ <string>_("Help")</string>
</property>
<addaction name="action_HelpAbout" />
<addaction name="separator" />
</widget>
<widget class="QMenu" name="menu_Windows" >
<property name="title" >
- <string>_("&Windows")</string>
+ <string>_("Windows")</string>
</property>
<addaction name="action_WindowsBag" />
<addaction name="action_WindowsBoard" />
@@ -155,7 +155,7 @@
</action>
<action name="action_HelpAbout" >
<property name="text" >
- <string>_("&About...")</string>
+ <string>_("About...")</string>
</property>
<property name="statusTip" >
<string>_("About Eliot")</string>
@@ -163,7 +163,7 @@
</action>
<action name="action_GameQuit" >
<property name="text" >
- <string>_("&Quit")</string>
+ <string>_("Quit")</string>
</property>
<property name="statusTip" >
<string>_("Quit Eliot")</string>
@@ -185,7 +185,7 @@
<bool>true</bool>
</property>
<property name="text" >
- <string>_("&Bag")</string>
+ <string>_("Bag")</string>
</property>
<property name="statusTip" >
<string>_("Show/hide the remaining tiles in the bag")</string>
@@ -201,9 +201,6 @@
<property name="statusTip" >
<string>_("Edit the preferences")</string>
</property>
- <property name="shortcut" >
- <string>Ctrl+Q</string>
- </property>
</action>
<action name="action_GameSave" >
<property name="text" >
@@ -240,7 +237,7 @@
<bool>true</bool>
</property>
<property name="text" >
- <string>_("&External board")</string>
+ <string>_("External board")</string>
</property>
<property name="statusTip" >
<string>_("Show/hide the external board")</string>
@@ -251,7 +248,7 @@
<bool>true</bool>
</property>
<property name="text" >
- <string>_("&History")</string>
+ <string>_("History")</string>
</property>
<property name="statusTip" >
<string>_("Show/hide the game history")</string>
@@ -276,7 +273,7 @@
<bool>true</bool>
</property>
<property name="text" >
- <string>_("&Dictionary tools")</string>
+ <string>_("Dictionary tools")</string>
</property>
<property name="statusTip" >
<string>_("Show/hide the dictionary tools")</string>
Index: qt/ui/new_game.ui
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/ui/new_game.ui,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- qt/ui/new_game.ui 20 Jan 2008 18:40:14 -0000 1.1
+++ qt/ui/new_game.ui 31 Aug 2008 11:48:21 -0000 1.2
@@ -53,7 +53,7 @@
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0" >
<size>
<width>16</width>
<height>26</height>
@@ -80,7 +80,7 @@
<item>
<widget class="QTreeView" name="treeViewPlayers" >
<property name="editTriggers" >
-
<set>QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed|QAbstractItemView::NoEditTriggers</set>
+
<set>QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
</property>
<property name="rootIsDecorated" >
<bool>false</bool>
@@ -119,7 +119,7 @@
</item>
<item>
<property name="text" >
- <string>_("AI")</string>
+ <string>_("Computer")</string>
</property>
</item>
</widget>
@@ -140,7 +140,7 @@
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0" >
<size>
<width>40</width>
<height>20</height>
@@ -169,7 +169,7 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons" >
-
<set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
Index: qt/ui/prefs_dialog.ui
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/ui/prefs_dialog.ui,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- qt/ui/prefs_dialog.ui 27 Aug 2008 21:20:17 -0000 1.3
+++ qt/ui/prefs_dialog.ui 31 Aug 2008 11:48:21 -0000 1.4
@@ -6,11 +6,11 @@
<x>0</x>
<y>0</y>
<width>343</width>
- <height>418</height>
+ <height>432</height>
</rect>
</property>
<property name="windowTitle" >
- <string>Dialog</string>
+ <string>Preferences</string>
</property>
<layout class="QVBoxLayout" >
<item>
@@ -50,7 +50,7 @@
<item>
<widget class="QCheckBox" name="checkBoxIntfAlignHistory" >
<property name="toolTip" >
- <string>_("If checked, the game and player histories will diaplay the
rack and the corresponding solution on the same line")</string>
+ <string>_("If checked, the game and player histories will display the
rack and the corresponding solution on the same line")</string>
</property>
<property name="text" >
<string>_("Align the rack and the solution in history")</string>
@@ -72,7 +72,7 @@
<item>
<widget class="QCheckBox" name="checkBoxDuplRefuseInvalid" >
<property name="toolTip" >
- <string>_("If checked, playing an invalid or misplaced word will not
be possible. If unchecked, you will get 0 point and lose your turn.")</string>
+ <string>_("If checked, playing an invalid or misplaced word will not
be possible. If unchecked, you will get 0 point and lose your turn")</string>
</property>
<property name="text" >
<string>_("Refuse to play invalid moves")</string>
@@ -93,7 +93,7 @@
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0" >
<size>
<width>40</width>
<height>20</height>
@@ -127,7 +127,7 @@
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
- <property name="sizeHint" >
+ <property name="sizeHint" stdset="0" >
<size>
<width>40</width>
<height>20</height>
@@ -159,7 +159,7 @@
<item>
<widget class="QCheckBox" name="checkBoxFreeRefuseInvalid" >
<property name="toolTip" >
- <string>_("If checked, playing an invalid or misplaced word will not
be possible. If unchecked, you will get 0 point and lose your turn.")</string>
+ <string>_("If checked, playing an invalid or misplaced word will not
be possible. If unchecked, you will get 0 point and lose your turn")</string>
</property>
<property name="text" >
<string>_("Refuse to play invalid moves")</string>
@@ -178,7 +178,7 @@
<item>
<widget class="QLabel" name="label" >
<property name="text" >
- <string>_("Nothing yet")</string>
+ <string>Nothing yet</string>
</property>
</widget>
</item>
@@ -191,7 +191,7 @@
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons" >
-
<set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
Index: qt/ui/training_widget.ui
===================================================================
RCS file: /cvsroot/eliot/eliot/qt/ui/training_widget.ui,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- qt/ui/training_widget.ui 26 Jan 2008 23:03:35 -0000 1.2
+++ qt/ui/training_widget.ui 31 Aug 2008 11:48:22 -0000 1.3
@@ -32,7 +32,7 @@
<item>
<widget class="QPushButton" name="pushButtonRack" >
<property name="text" >
- <string>_("New Rack")</string>
+ <string>_("New rack")</string>
</property>
</widget>
</item>
Index: utils/eliottxt.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/utils/eliottxt.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- utils/eliottxt.cpp 27 Jul 2008 13:32:48 -0000 1.23
+++ utils/eliottxt.cpp 31 Aug 2008 11:48:22 -0000 1.24
@@ -35,6 +35,7 @@
#endif
#include "dic.h"
+#include "dic_exception.h"
#include "game_io.h"
#include "game_factory.h"
#include "training.h"
@@ -819,7 +820,15 @@
nres, lmin, lmax);
vector<wstring> wordList;
+ try
+ {
iDic.searchRegExp(regexp, wordList, lmin, lmax, nres);
+ }
+ catch (InvalidRegexpException &e)
+ {
+ printf("Invalid regular expression: %s\n", e.what());
+ return;
+ }
vector<wstring>::const_iterator it;
for (it = wordList.begin(); it != wordList.end(); it++)
Index: wxwin/searchpanel.cc
===================================================================
RCS file: /cvsroot/eliot/eliot/wxwin/searchpanel.cc,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- wxwin/searchpanel.cc 28 Jul 2008 19:57:46 -0000 1.18
+++ wxwin/searchpanel.cc 31 Aug 2008 11:48:22 -0000 1.19
@@ -29,6 +29,7 @@
#include "ewx.h"
#include "dic.h"
+#include "dic_exception.h"
#include "searchpanel.h"
#include "tile.h"
#include "configdb.h"
@@ -286,7 +287,16 @@
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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Eliot-dev] eliot dic/dic.h dic/dic_exception.cpp dic/dic_e...,
eliot-dev <=