xboard-4.9.1/0000755000175000001440000000000012747544040010010 500000000000000xboard-4.9.1/po/0000755000175000001440000000000012747544040010426 500000000000000xboard-4.9.1/po/uk.po0000644000175000001440000027126712747543737011360 00000000000000# Ukrainian translation for xboard. # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the xboard package. # # Yuri Chornoivan , 2011, 2012, 2013, 2014, 2016. msgid "" msgstr "" "Project-Id-Version: GNU xboard-4.9.0-pre2\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2016-04-04 19:49+0300\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "%s у файлі параметрів\n" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "Помилкове ціле значення %s" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "Невідомий аргумент %s" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "Не вказано значення для аргументу %s" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Неповне екранування \\ у значенні для %s" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "Не вдалося відкрити файл переспрямування %s" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Невідоме значення булевого аргументу %s" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "перший" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "другий" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "підтримки версії протоколу %d не передбачено" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "Вами не вказано виконуваного файла рушія" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "помилковий параметр timeControl %s" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "помилковий параметр searchTime %s" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "Підтримку варіанта %s передбачено лише у режимі ICS" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "Невідома назва варіанта %s" #: backend.c:1457 msgid "Starting chess program" msgstr "Запуск шахової програми" #: backend.c:1480 msgid "Bad game file" msgstr "Помилковий файл гри" #: backend.c:1487 msgid "Bad position file" msgstr "Помилковий файл позиції" #: backend.c:1501 msgid "Pick new game" msgstr "Виберіть нову гру" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" "Вами перезапущено вже завершений турнір.\n" "Тепер до турніру буде додано ще одне коло.\n" "Ігри розпочнуться за 10 секунд." #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "Всі ігри турніру «%s» вже зіграно або вже розпочато" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "Не можна розпочати матч, якщо не встановлено шахових програм" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "Не вдалося відкрити порт comm %s" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "Не вдалося з’єднатися з вузлом %s, порт %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "Невідоме значення initialMode %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "У режимі аналізу файла потрібен файл гри" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "У режимі аналізу потрібен шаховий рушій" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "Робота режиму разом з режимом ICS неможлива" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "У режимі гри комп’ютера білими потрібен шаховий рушій" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "Робота режиму гри комп’ютером білими разом з режимом ICS неможлива" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "У режимі гри комп’ютера чорними потрібен шаховий рушій" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "Робота режиму гри комп’ютером білими разом з режимом ICS неможлива" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "" "Режимом гри між двома комп’ютерами можна скористатися, лише якщо встановлено " "шаховий рушій" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "Робота режиму гри між двома комп’ютерами разом з режимом ICS неможлива" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "У режимі тренування потрібен файл гри" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "Помилка під час спроби запису до ICS" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "Помилка під час читання даних з клавіатури" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "Отримано символ кінця файла з клавіатури" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "Невідомий «дикий» тип %d" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "Помилка запису на дисплей" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "втручання вашого суперника: %s" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "Помилка під час збирання списку ходів: два заголовки" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "Помилка під час збирання списку ходів: вкладеність" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "проти" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "Некоректний хід (заборонено ICS)" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "З’єднання розірвано з боку ICS" #: backend.c:4306 msgid "Error reading from ICS" msgstr "Помилка під час спроби читання з ICS" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" "Не вдалося обробити рядок дошки:\n" "\"%s\"" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" "Гра є занадто довгою. Збільшіть значення MAX_MOVES і перезберіть програму." #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "Помилка під час збирання списку ходів: вихід за межі дошки" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Не вдалося обробити хід «%s» з ICS" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "say Internal error; bad moveType %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "Ця дія неможлива у режимі гри або спостереження" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" "Повторно зберіть програму з підтримкою цих значень BOARD_RANKS і BOARD_FILES!" #: backend.c:6858 msgid "You are playing Black" msgstr "Ви граєте чорними" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "Ви граєте білими" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Хід білих" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Хід чорних" #: backend.c:6920 msgid "Displayed position is not current" msgstr "Показана позиція не є поточною" #: backend.c:7123 msgid "rights granted" msgstr "права надано" #: backend.c:7123 msgid "rights revoked" msgstr "права відкликано" #: backend.c:7175 msgid "Illegal move" msgstr "Недозволений хід" #: backend.c:7255 msgid "End of game" msgstr "Кінець гри" #: backend.c:7258 msgid "Incorrect move" msgstr "Некоректний хід" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "Потягніть пішака назад, щоб знизити ранг фігури" #: backend.c:7780 msgid "only marked squares are legal" msgstr "правилами дозволено лише позначені клітинки" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "Турнір за швейцарською системою завершено" #: backend.c:8632 msgid "could not load EGBB library" msgstr "не вдалося завантажити бібліотеку EGBB" #: backend.c:8635 msgid "wrong EGBB version" msgstr "помилкова версія EGBB" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "Рушієм визначення пар повернуто некоректне значення пари" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Некоректний хід «%s» від комп’ютера %s" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "Отримано помилкові дані FEN від рушія" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "Рушієм не надіслано налаштувань для нестандартного варіанта" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "У %s не передбачено аналізу" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "" "Недозволений хід «%s» (у реєстрації ходу відмовлено шаховою програмою %s)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Не вдалося запустити шахову програму %s %s на %s: %s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "Підказка: %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" "Некоректна підказка щодо ходу «%s»\n" "від шахової програми %s" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "Ком’ютер погодився з вашою пропозицією нічиєї" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" "Комп’ютером запропоновано нічию\n" "Скористайтеся пунктом меню «Дія->Нічия», щоб погодитися." #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "не вдалося записати PV" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Неоднозначний хід у виведених ICS даних: «%s»" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Некоректний хід у виведених даних ICS: «%s»" #: backend.c:10132 msgid "Gap in move list" msgstr "Пропущено хід у списку ходів" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "Варіант %s не підтримується %s" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr ", але %s" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "Помилка запуску на «%s»" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "Очікування на запуск першої шахової програми" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "Очікування на запуск другої шахової програми" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "Не вдалося виконати запис до файла турніру" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" "Не можна міняти рушій, який зараз використовується!\n" "Спочатку перервіть гру." #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "Рушія з вказаною вами назвою не встановлено" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" "Спочатку змініть рушій редагуванням списку учасників турніру\n" "у діалоговому вікні «Параметри турніру»" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "Одночасно змінювати можна лише один рушій" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "Не встановлено жодного рушія %s" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" "Для запису результатів турніру\n" "вам слід вказати файл турніру." #: backend.c:11200 msgid "Not enough participants" msgstr "Недостатньо учасників" #: backend.c:11403 msgid "Bad tournament file" msgstr "Помилковий файл турніру" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "Очікування на результати інших ігор" #: backend.c:11428 msgid "No pairing engine specified" msgstr "Не вказано рушія визначення пар" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "Середній час розв’язування — %4.2f сек. (загальний час — %4.2f сек.) " #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "зіграно %d небажаних ходів " #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "Розв’язано %d з %d (%3.1f%%) " #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Матч між %s і %s: остаточний рахунок — %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Недозволений хід: %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Неоднозначний хід: %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "Не вдалося відкрити «%s»" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "Не вдалося побудувати список ігор" #: backend.c:12574 msgid "No more games in this message" msgstr "У цьому повідомленні більше немає результатів ігор" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "Ще не завантажено жодної гри" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "Подальше створення резервних копій неможливе" #: backend.c:13065 msgid "Game number out of range" msgstr "Номер гри поза доступним діапазоном" #: backend.c:13076 msgid "Can't seek on game file" msgstr "Пошук у файлі гри неможливий" #: backend.c:13134 msgid "Game not found in file" msgstr "У файлі немає даних щодо гри" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "Помилкова позиція FEN у файлі" #: backend.c:13423 msgid "No moves in game" msgstr "У записі гри немає жодного ходу" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "Жодної з позицій ще не завантажено" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "Пошук у файлі позицій неможливий" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "У файлі не знайдено позиції" #: backend.c:13645 msgid "Black to play" msgstr "Хід чорних" #: backend.c:13648 msgid "White to play" msgstr "Хід білих" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "Очікування на доступ до можливості збереження файла" #: backend.c:13737 msgid "Saving game" msgstr "Збереження гри" #: backend.c:13738 msgid "Bad Seek" msgstr "Помилкове позиціювання" #: backend.c:14111 msgid "Saving position" msgstr "Збереження позиції" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" "Вами внесено зміни до журналу гри.\n" "Скористайтеся пунктом «Перезавантажити гру» і повторіть ваш хід." #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" "Вами введено занадто багато ходів.\n" "Поверніться до правильної позиції і повторіть спробу." #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" "Показана позиція не є поточною.\n" "Продовжіть гру, щоб виправити позицію і повторіть спробу." #: backend.c:14294 msgid "You have not made a move yet" msgstr "Вами ще не зроблено жодного ходу" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" "Повідомлення cmail не завантажено.\n" "Скористайтеся пунктом «Перезавантажити повідомлення CMail» і повторіть ваш " "хід." #: backend.c:14320 msgid "No unfinished games" msgstr "Немає незавершених ігор" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" "Ви вже надіслали хід поштою.\n" "Зачекайте, доки буде отримано хід від вашого суперника.\n" "Щоб повторно надіслати той самий хід, віддайте команду\n" "\"cmail -remail -game %s\"\n" "у командному рядку." #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "Не вдалося викликати cmail" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Очікування на відповідь від суперника\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "Слід зробити хід у грі\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "Слід зробити ходити у обох іграх\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "Слід зробити ходити у всіх %d іграх\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "Слід зробити хід у грі %s\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "Немає незавершених ігор\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "Програма готова до надсилання пошти\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Слід зробити ходи у іграх %s\n" #: backend.c:14656 msgid "Edit comment" msgstr "Редагувати коментар" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Змінити коментар щодо %d.%s%s" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "Ви не спостерігаєте за грою" #: backend.c:14824 msgid "It is not White's turn" msgstr "Зараз хід чорних" #: backend.c:14907 msgid "It is not Black's turn" msgstr "Зараз хід білих" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "Запуск шахової програми %s" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" "Зачекайте на ваш хід або\n" "виберіть пункт «Ходити»." #: backend.c:15188 msgid "Training mode off" msgstr "Режим тренування вимкнено" #: backend.c:15196 msgid "Training mode on" msgstr "Режим тренування увімкнено" #: backend.c:15199 msgid "Already at end of game" msgstr "Гру вже завершено" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "Попередження: гра ще триває" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "Попередження: ви ще продовжуєте спостерігати за грою" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "Попередження: ви ще вивчаєте гру" #: backend.c:15365 msgid "Click clock to clear board" msgstr "Клацніть на годиннику, щоб спорожнити дошку" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "Завершити процес аналізу рушія ICS…" #: backend.c:15711 msgid "That square is occupied" msgstr "Цю клітинку зайнято" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "У черзі немає пропозицій щодо цього ходу" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "У вашого суперника ще залишився час" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "Перш ніж запропонувати нічию, вам слід зробити хід" #: backend.c:16220 msgid "You are not examining a game" msgstr "Ви не вивчаєте гру" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "Скасовувати ходи у призупиненій грі не можна" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "Ваш хід" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "Очікувати на ваш хід." #: backend.c:16348 msgid "No hint available" msgstr "Немає підказки" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "Список гри не завантажено або цей список є порожнім" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "Файл книги вже існує! Повторіть спробу, щоб перезаписати його." #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "Помилка під час спроби запису даних до шахової програми %s" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "Програма %s завершила роботу у нічийній позиції (%s)" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Помилка: шахова програма %s (%s) несподівано завершила роботу" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Помилка під час спроби читання даних з шахової програми %s (%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "Для рушія %s передбачено занадто багато параметрів\n" #: backend.c:17521 msgid "Displayed move is not current" msgstr "Показаний хід не є поточним" #: backend.c:17530 msgid "Could not parse move" msgstr "Не вдалося обробити хід" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "Обидва прапорці впали" #: backend.c:17657 msgid "White's flag fell" msgstr "Прапорець білих впав" #: backend.c:17679 msgid "Black's flag fell" msgstr "Прапорець чорних впав" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "Коригування годинника у режимі автоматичних прапорців заборонене" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "Помилкова позиція FEN у буфері обміну" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "Некоректна бібліотека позицій" #: book.c:722 msgid "Book Fault" msgstr "Помилка бібліотеки позицій" #: book.c:877 msgid "Hash keys are different" msgstr "Ключі хешів не збігаються" #: book.c:1054 msgid "Could not create book" msgstr "Не вдалося створити книгу" #: dialogs.c:287 msgid "Tournament file: " msgstr "Файл турніру: " #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "Для сумісної турнірної гри з декількома XBoard:" #: dialogs.c:289 msgid "Sync after round" msgstr "Синхронізувати після рауду" #: dialogs.c:290 msgid "Sync after cycle" msgstr "Синхронізувати після кола" #: dialogs.c:291 msgid "Tourney participants:" msgstr "Учасники турніру:" #: dialogs.c:292 msgid "Select Engine:" msgstr "Виберіть рушій:" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "Система турніру (0 = кругова, 1 = почергова):" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "Кількість кіл турніру (швейцарських раундів):" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "Типова кількість ігор у матчі:" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "Проміжок між іграми у матчі (у мілісекундах):" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "Зберігати ігри турніру до:" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "Файл гри з початковими рядками:" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "Номер гри (-1 або -2 = автоматичне збільшення):" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "Файл з початковими позиціями:" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "Номер позиції (-1 або -2 = автоматичне збільшення):" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "" "Відновлювати початковий номер після вказаної кількості ігор (0=ніколи):" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "Типово вимкнути власні бібліотеки позицій рушія" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "Керування часом" #: dialogs.c:312 msgid "Common Engine" msgstr "Загальний рушій" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Загальні параметри" #: dialogs.c:314 msgid "Continue Later" msgstr "Продовжити пізніше" #: dialogs.c:315 msgid "Replace Engine" msgstr "Замінити рушій" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "Оновити рушій" #: dialogs.c:317 msgid "Clone Tourney" msgstr "Клонувати турнір" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "Спочатку вам слід вказати вже створений файл турніру для клонування" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "# не встановлено жодного рушія" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "Внутрішня помилка: встановлено помилкове значення PARTICIPANTS" #: dialogs.c:389 msgid "Tournament Options" msgstr "Параметри турніру" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "Абсолютні оцінки аналізу" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "Майже завжди королева (відхиляти неповні перетворення)" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "Анімація перетягування" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "Анімація ходів" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Автопрапорець" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Автоматичне обертання дошки" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "Наосліп" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "Спадне меню" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "Увімкнути дерево варіантів" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "Заголовки у вікні виведення рушія" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "Приховувати обмірковування від людини" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Позначати останній хід" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Позначити за допомогою стрілки" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Хід у одне клацання" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "Періодичні оновлення (у режимі аналізу)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "Грати ходи натиснутих PV (аналіз)" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "Обдумати наступний хід" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Контекстні підказки щодо виходу" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Контекстні підказки з помилками щодо ходів" #: dialogs.c:429 msgid "Scores in Move List" msgstr "Оцінки у списку ходів" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Показувати координати" #: dialogs.c:431 msgid "Show Target Squares" msgstr "Показувати клітинки призначення" #: dialogs.c:432 msgid "Sticky Windows" msgstr "Липкі вікна" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Перевіряти коректність" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "Вікна верхнього рівня" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "Блимання під час ходів (0 = без блимання):" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "Частота блимання (висока = швидко):" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "Швидкість анімації (висока = повільно):" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "Масштаб графу оцінки позиції:" #: dialogs.c:458 msgid "Normal" msgstr "Звичайні" #: dialogs.c:459 msgid "Makruk" msgstr "Макрук" #: dialogs.c:460 msgid "FRC" msgstr "Фішера" #: dialogs.c:461 msgid "Shatranj" msgstr "Шатрандж" #: dialogs.c:462 msgid "Wild castle" msgstr "Дика тура" #: dialogs.c:463 msgid "Knightmate" msgstr "Мат коню" #: dialogs.c:464 msgid "No castle" msgstr "Без тури" #: dialogs.c:465 msgid "Cylinder *" msgstr "Циліндричні *" #: dialogs.c:466 msgid "3-checks" msgstr "Три шахи" #: dialogs.c:467 msgid "berolina *" msgstr "бероліна *" #: dialogs.c:468 msgid "atomic" msgstr "атомні" #: dialogs.c:469 msgid "two kings" msgstr "два королі" #: dialogs.c:470 msgid " " msgstr " " #: dialogs.c:471 msgid "Spartan" msgstr "спартанські" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "Розмір дошки ( -1 = типовий для вибраного варіанта):" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "Кількість рангів дошки:" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "Кількість файлів дошки:" #: dialogs.c:475 msgid "Holdings Size:" msgstr "Розмір резерву:" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" "У варіанти позначені * можна грати\n" "лише з вимкненою перевіркою коректності." #: dialogs.c:479 msgid "ASEAN" msgstr "ASEAN" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "Великий шатрандж (10x8)" #: dialogs.c:481 msgid "Seirawan" msgstr "Сейравана" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "Сокіл (10x8)" #: dialogs.c:483 msgid "Superchess" msgstr "Супершахи" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "Капабланка (10x8)" #: dialogs.c:485 msgid "Crazyhouse" msgstr "Крейзіхаус" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "Готичні (10x8)" #: dialogs.c:487 msgid "Bughouse" msgstr "Шведські" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "Янус (10x8)" #: dialogs.c:489 msgid "Suicide" msgstr "Самовбивчі" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "Рівноправність (10x8)" #: dialogs.c:491 msgid "give-away" msgstr "піддавки" #: dialogs.c:492 msgid "grand (10x10)" msgstr "гранд-шахи (10x10)" #: dialogs.c:493 msgid "losers" msgstr "Антишахи" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "сьогі (9x9)" #: dialogs.c:495 msgid "fairy" msgstr "казкові" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "сянці (9x10)" #: dialogs.c:497 msgid "mighty lion" msgstr "могутній лев" #: dialogs.c:498 msgid "courier (12x8)" msgstr "кур’єр (12x8)" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "ельфійські шахи (10x10)" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "чу сьогі (12x12)" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Попередження: ця можливість не підтримується другим рушієм (%s)!" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "У режимі перегляду недоступні лише шведські шахи." #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" "Всі варіанти, які не підтримуються першим рушієм\n" "(зараз це %s), вимкнено." #: dialogs.c:596 msgid "New Variant" msgstr "Новий варіант" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "Максимальна кількість процесорів на рушій:" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "Каталог бібліотек Polygot:" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "Розмір таблиці хешів (у МБ):" #: dialogs.c:631 msgid "EGTB Path:" msgstr "Шлях до EGTB:" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "Розмір кешу EGTB (у МБ):" #: dialogs.c:633 msgid "Use GUI Book" msgstr "Використовувати книгу з графічним інтерфейсом" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "Назва файла даних дебютів:" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "Глибина книги (у ходах):" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "Компроміс між різноманітністю (0) і силою (100) книги:" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "Рушій 1 має власну книгу" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "Рушій 2 має власну книгу " #: dialogs.c:649 msgid "Common Engine Settings" msgstr "Загальні параметри рушіїв" #: dialogs.c:655 msgid "Detect all Mates" msgstr "Виявляти всі мати" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "Перевіряти вимоги до результатів рушія" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "Нічия, якщо недостатньо фігур для мату" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Визначати тривіальні нічиї (трикратне повторення)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "Правило N-го ходу:" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "N-кратне повторення:" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "Нічия після N ходів загалом:" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "Поріг виграшу/програшу:" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "Негативна оцінка рушія 1" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "Негативна оцінка рушія 2" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "Судити ігри, що не належать до класу ICS" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "Автопоради" #: dialogs.c:685 msgid "Auto-Comment" msgstr "Автокоментарі" #: dialogs.c:686 msgid "Auto-Observe" msgstr "Автоспостереження" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Автопідняття дошки" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "Автостворення скрипту входу" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "Спостереження у тлі під час гри" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "Подвійна дошка для ігор з фоновим спостереженням" #: dialogs.c:691 msgid "Get Move List" msgstr "Отримати список ходів" #: dialogs.c:692 msgid "Quiet Play" msgstr "Мовчазна гра" #: dialogs.c:693 msgid "Seek Graph" msgstr "Граф викликів" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "Автоматичне оновлення графу пошуків" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "Автоматичне вікно введення" #: dialogs.c:696 msgid "Quit after game" msgstr "Вийти після гри" #: dialogs.c:697 msgid "Premove" msgstr "Попередній хід" #: dialogs.c:698 msgid "Premove for White" msgstr "Попередній хід для білих" #: dialogs.c:699 msgid "First White Move:" msgstr "Перший хід білих:" #: dialogs.c:700 msgid "Premove for Black" msgstr "Попередній хід для чорних" #: dialogs.c:701 msgid "First Black Move:" msgstr "Перший хід чорних:" #: dialogs.c:703 msgid "Alarm" msgstr "Нагадування" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "Час нагадування (у мс):" #: dialogs.c:706 msgid "Colorize Messages" msgstr "Розфарбовувати повідомлення" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "Кольори тексту вигуків:" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "Колір тексту S-вигуків:" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "Кольори тексту каналу 1:" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "Кольори тексту інших каналів:" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "Кольори тексту порад:" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "Кольори тексту висловлювань:" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "Кольори тексту викликів:" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "Кольори тексту запитів:" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "Кольори тексту під час пошуку:" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "Кольори іншого тексту:" #: dialogs.c:723 msgid "ICS Options" msgstr "Параметри ICS" #: dialogs.c:728 msgid "Exact position match" msgstr "Точний збіг позицій" #: dialogs.c:728 msgid "Shown position is subset" msgstr "Показана позиція є підмножиною" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "Однаковий матеріал з однаковим ланцюжком пішаків" #: dialogs.c:729 msgid "Same material" msgstr "Однаковий матеріал" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "Діапазон матеріалу (верхня половина дошки, необов’язковий)" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "Відмінність матеріалів (з додатковим врівноваженням можливостей)" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "Автопоказ міток" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "Автопоказ коментарів" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" "Швидкість автогри у завантажених іграх\n" "(0 = негайний показ, -1 = вимкнути автогру):" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "Секунд на хід:" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" "\n" "Параметри режиму перегляду ігор:" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" "\n" "Порогові значення фільтрування позицій у списку ігор:" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "Рейтинг Ело для сильнішого гравця не нижче за:" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "Рейтинг Ело для слабшого гравця не нижче за:" #: dialogs.c:753 msgid "No games before year:" msgstr "Не показувати ігри до року:" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "Мінімальна к-ть послідовних позицій:" #: dialogs.c:756 msgid "Search mode:" msgstr "Режим пошуку:" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "Шукати у позиціях зворотних кольорів" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "Шукати у симетричних позиціях" #: dialogs.c:767 msgid "Load Game Options" msgstr "Параметри завантаження ігор" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "Автозбереження ігор" #: dialogs.c:780 msgid "Own Games Only" msgstr "Лише власні ігри" #: dialogs.c:781 msgid "Save Games on File:" msgstr "Зберігати ігри до файла:" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "Зберігати остаточні позиції до файла:" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "Обробник подій PGN:" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "Застарілий стиль збереження (на відміну від PGN)" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "Включити мітку номера до PGN турніру" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "Зберігати дані щодо рейтингу/глибини у PGN" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "Зберігати сторонні дані до PGN " #: dialogs.c:794 msgid "Save Game Options" msgstr "Параметри збереження ігор" #: dialogs.c:803 msgid "No Sound" msgstr "Без звуку" #: dialogs.c:804 msgid "Default Beep" msgstr "Типовий гудок" #: dialogs.c:805 msgid "Above WAV File" msgstr "Файл WAV вище" #: dialogs.c:806 msgid "Car Horn" msgstr "Автомобільний гудок" #: dialogs.c:807 msgid "Cymbal" msgstr "Цимбали" #: dialogs.c:808 msgid "Ding" msgstr "Дзвінок" #: dialogs.c:809 msgid "Gong" msgstr "Гонг" #: dialogs.c:810 msgid "Laser" msgstr "Лазер" #: dialogs.c:811 msgid "Penalty" msgstr "Штраф" #: dialogs.c:812 msgid "Phone" msgstr "Телефон" #: dialogs.c:813 msgid "Pop" msgstr "Плескання" #: dialogs.c:814 msgid "Roar" msgstr "Рев" #: dialogs.c:815 msgid "Slap" msgstr "Клацання" #: dialogs.c:816 msgid "Wood Thunk" msgstr "Удар об дерево" #: dialogs.c:818 msgid "User File" msgstr "Файл користувача" #: dialogs.c:841 msgid "User WAV File:" msgstr "Файл WAV користувача:" #: dialogs.c:842 msgid "Sound Program:" msgstr "Програма відтворення:" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "Тестовий звук:" #: dialogs.c:844 msgid "Play" msgstr "Пуск" #: dialogs.c:845 msgid "Move:" msgstr "Хід:" #: dialogs.c:846 msgid "Win:" msgstr "Виграшів:" #: dialogs.c:847 msgid "Lose:" msgstr "Програшів:" #: dialogs.c:848 msgid "Draw:" msgstr "Нічиїх:" #: dialogs.c:849 msgid "Unfinished:" msgstr "Незавершених:" #: dialogs.c:850 msgid "Alarm:" msgstr "Нагадування:" #: dialogs.c:851 msgid "Challenge:" msgstr "Виклик:" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "Каталог звуків:" #: dialogs.c:854 msgid "Shout:" msgstr "Вигук:" #: dialogs.c:855 msgid "S-Shout:" msgstr "S-вигук:" #: dialogs.c:856 msgid "Channel:" msgstr "Канал:" #: dialogs.c:857 msgid "Channel 1:" msgstr "Канал 1:" #: dialogs.c:858 msgid "Tell:" msgstr "Висловлення:" #: dialogs.c:859 msgid "Kibitz:" msgstr "Порада:" #: dialogs.c:860 msgid "Request:" msgstr "Запит:" #: dialogs.c:861 msgid "Lion roar:" msgstr "Рев лева:" #: dialogs.c:862 msgid "Seek:" msgstr "Пошук:" #: dialogs.c:880 msgid "Sound Options" msgstr "Параметри звуку" #: dialogs.c:896 msgid "Selectable themes:" msgstr "Можливі теми:" #: dialogs.c:898 msgid "New name for current theme:" msgstr "Нова назва для поточної теми:" #: dialogs.c:901 msgid "White Piece Color:" msgstr "Колір фігур білих:" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "Ч" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "З" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "С" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "Т" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "Колір фігур чорних:" #: dialogs.c:917 msgid "Light Square Color:" msgstr "Колір світлих клітинок:" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "Колір темних клітинок:" #: dialogs.c:929 msgid "Highlight Color:" msgstr "Колір позначення:" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "Колір підсвічування плану ходу:" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "Стиль обміну фігурами сьогі (Кольорові кнопки відновлюють типовий)" #: dialogs.c:943 msgid "Mono Mode" msgstr "Монорежим" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "Розмір логотипу (0=вимкнути, потребує перезапуску):" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "Проміжок між рядами ( -1 = типовий для розмірів дошки):" #: dialogs.c:946 msgid "Use Board Textures" msgstr "Використовувати текстури дошки" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "Файл текстур темних клітинок:" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "Файл текстур світлих клітинок:" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "Зовнішні растрові зображення фігур з власними кольорами" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "Каталог з зображеннями фігур:" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "# не визначено жодної теми" #: dialogs.c:1033 msgid "Board Options" msgstr "Параметри дошки" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "Текстове меню ICS" #: dialogs.c:1134 msgid "clear" msgstr "спорожнити" #: dialogs.c:1135 msgid "save changes" msgstr "зберегти зміни" #: dialogs.c:1233 msgid "add next move" msgstr "додати наступний хід" #: dialogs.c:1234 msgid "commit changes" msgstr "надіслати зміни" #: dialogs.c:1257 msgid "Edit book" msgstr "Змінити книгу" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Мітки" #: dialogs.c:1405 msgid "ICS input box" msgstr "Поле введення ICS" #: dialogs.c:1437 msgid "Type a move" msgstr "Введіть хід" #: dialogs.c:1463 msgid "Engine has no options" msgstr "Рушієві не передаються жодні параметри" #: dialogs.c:1465 msgid "Engine Settings" msgstr "Параметри рушія" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "Виберіть рушій зі списку:" #: dialogs.c:1509 msgid "or specify one below:" msgstr "або вкажіть його нижче:" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "Псевдонім (необов’язковий):" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "Використовувати псевдонім у мітках гравця PGN під час ігор між рушіями" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "Каталог рушія:" #: dialogs.c:1513 msgid "Engine Command:" msgstr "Команда рушія:" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "" "(Каталог буде визначено на основі шляху до рушія, якщо каталог не вказано)" #: dialogs.c:1515 msgid "UCI" msgstr "UCI" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "USI/UCCI (використовує вказаний -uxiAdapter)" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "Протокол WB версії 1 (не чекати на дані щодо можливостей)" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "Не повинен використовувати книгу з графічним інтерфейсом" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "Додати цей рушій до списку" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "Примусово визначити поточний варіант для рушія" #: dialogs.c:1574 msgid "Load first engine" msgstr "Завантажити перший рушій" #: dialogs.c:1580 msgid "Load second engine" msgstr "Завантажити другий рушій" #: dialogs.c:1603 msgid "shuffle" msgstr "перемішати" #: dialogs.c:1604 msgid "Fischer castling" msgstr "Рокіровка Фішера" #: dialogs.c:1605 msgid "Start-position number:" msgstr "Номер початкової позиції:" #: dialogs.c:1606 msgid "randomize" msgstr "випадково" #: dialogs.c:1607 msgid "pick fixed" msgstr "вибрати фіксовану" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Нова випадкова гра" #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "Годинник (потребує перезапуску):" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "+" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "-" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "I" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "*" #: dialogs.c:1677 msgid "Message (above board):" msgstr "Повідомлення (над дошкою):" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "Розмова ICS/Консоль:" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "Редагування міток / книги / списку рушіїв:" #: dialogs.c:1695 msgid "Edit comments:" msgstr "Редагування коментарів:" #: dialogs.c:1701 msgid "Move history / Engine Output:" msgstr "Журнал ходів / Виведення рушія:" #: dialogs.c:1707 msgid "Game list:" msgstr "Список ігор:" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" "\n" "Кнопки * встановлюватимуть шрифт, вказаний нижче:" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "Працює лише у збірці з GTK" #: dialogs.c:1768 msgid "Fonts" msgstr "Шрифти" #: dialogs.c:1791 msgid "classical" msgstr "класичні" #: dialogs.c:1792 msgid "incremental" msgstr "нарощувальний" #: dialogs.c:1793 msgid "fixed max" msgstr "фіксований максимум" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "Ділити введені значення часу на 60" #: dialogs.c:1795 msgid "Moves per session:" msgstr "Ходів за сеанс:" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "Початковий час (у хвилинах):" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "Збільшення або максимум (сек/хід):" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "Коефіцієнти виправлення часу:" #: dialogs.c:1799 msgid "Engine #1" msgstr "Рушій 1" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "Рушій 2 / Людина" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "Не використовується" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "Зміну режиму контролю часу під час гри не реалізовано" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "Помилка під час спроби запису даних до шахової програми" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "Скасувати" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "Король" #: dialogs.c:1972 msgid "Captain" msgstr "Капітан" #: dialogs.c:1973 msgid "Lieutenant" msgstr "Лейтенант" #: dialogs.c:1974 msgid "General" msgstr "Загальне" #: dialogs.c:1975 msgid "Warlord" msgstr "Полководець" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Кінь" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Слон" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Тура" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "Архієпископ" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "Канцлер" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Королева" #: dialogs.c:1988 msgid "Lion" msgstr "Лев" #: dialogs.c:1992 msgid "Defer" msgstr "Зменшити пріоритет" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Підвищити" #: dialogs.c:2050 msgid "Chats:" msgstr "Розмови:" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 msgid "New Chat" msgstr "Нова розмова" #: dialogs.c:2058 msgid "Chat partner:" msgstr "Співрозмовник:" #: dialogs.c:2059 msgid "End Chat" msgstr "Завершити розмову" #: dialogs.c:2060 msgid "Hide" msgstr "Приховати" #: dialogs.c:2287 msgid "ICS Interaction" msgstr "Взаємодія у ICS" #: dialogs.c:2372 msgid "factory" msgstr "типові" #: dialogs.c:2373 msgid "up" msgstr "вгору" #: dialogs.c:2374 msgid "down" msgstr "вниз" #: dialogs.c:2393 msgid "No tag selected" msgstr "Не вибрано жодної мітки" #: dialogs.c:2424 msgid "Game-list options" msgstr "Параметри списку гри" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Помилка" #: dialogs.c:2545 msgid "Fatal Error" msgstr "Критична помилка" #: dialogs.c:2545 msgid "Exiting" msgstr "Вихід" #: dialogs.c:2556 msgid "Information" msgstr "Інформація" #: dialogs.c:2563 msgid "Note" msgstr "Нотатка" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Білі" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Пішак" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "Слон" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "Гармата" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "Розжалувати" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Порожня клітинка" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Спорожнити дошку" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Чорні" #: dialogs.c:2827 msgid "_File" msgstr "_Файл" #: dialogs.c:2828 msgid "_Edit" msgstr "З_міни" #: dialogs.c:2829 msgid "_View" msgstr "П_ерегляд" #: dialogs.c:2830 msgid "_Mode" msgstr "_Режим" #: dialogs.c:2831 msgid "_Action" msgstr "_Дія" #: dialogs.c:2832 msgid "E_ngine" msgstr "Р_ушій" #: dialogs.c:2833 msgid "_Options" msgstr "П_араметри" #: dialogs.c:2834 msgid "_Help" msgstr "_Довідка" #: dialogs.c:2844 msgid "<<" msgstr "<<" #: dialogs.c:2845 msgid "<" msgstr "<" #: dialogs.c:2847 msgid ">" msgstr ">" #: dialogs.c:2848 msgid ">>" msgstr ">>" #: dialogs.c:3136 msgid "Directories:" msgstr "Каталоги:" #: dialogs.c:3137 msgid "Files:" msgstr "Файли:" #: dialogs.c:3138 msgid "by name" msgstr "за назвою" #: dialogs.c:3139 msgid "by type" msgstr "за типом" #: dialogs.c:3142 msgid "Filename:" msgstr "Назва файла:" #: dialogs.c:3143 msgid "New directory" msgstr "Новий каталог" #: dialogs.c:3144 msgid "File type:" msgstr "Тип файлів:" #: dialogs.c:3219 msgid "Contents of" msgstr "Вміст" #: dialogs.c:3245 msgid " next page" msgstr " наступна сторінка" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "СПОЧАТКУ ВКАЖІТЬ ТУТ НАЗВУ КАТАЛОГУ" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "СПРОБУЙТЕ ІНШУ НАЗВУ" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" "Типових зображень фігур не встановлено.\n" "Вкажіть власні за допомогою параметра -pieceImageDirectory" #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "Вивід рушія" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "%s (з можливістю скасування %d ходу)" msgstr[1] "%s (з можливістю скасування %d ходів)" msgstr[2] "%s (з можливістю скасування %d ходів)" msgstr[3] "%s (з можливістю скасування %d ходу)" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "NPS" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "Читання файла гри (%d)" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: не вдалося перейти до каталогу CHESSDIR: " #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "Не вдалося відкрити файл «%s»\n" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Для того, щоб скористатися підтримкою цього розміру, слід зібрати програму з " "більшими значеннями BOARD_RANKS або BOARD_FILES" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: помилковий синтаксис boardSize %s\n" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: невідома назва boardSize %s\n" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: занадто мало кольорів; спробуємо монохромний режим\n" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Не вдалося створити набір шрифтів для %s.\n" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: взірцеві %s не відповідає жоден шрифт\n" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "Не вдалося відкрити тимчасовий файл даних" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "Не вдалося відкрити файл" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "Вибрати" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "Гаразд" #: menus.c:136 msgid "Load game file name?" msgstr "Назва файла гри для завантаження?" #: menus.c:183 msgid "Load position file name?" msgstr "Назва файла позиції для завантаження?" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "Назва файли гри для збереження?" #: menus.c:198 msgid "Save position file name?" msgstr "Назва файла позиції для збереження?" #: menus.c:355 msgid " (with Zippy code)" msgstr " (з кодом Zippy)" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" "%s%s\n" "\n" "© Digital Equipment Corporation, 1991\n" "© Free Software Foundation, 1992–2016\n" "© Alessandro Scotti, 2005\n" "\n" "%s є вільним програмним забезпеченням, його працездатність не гарантується. " "Докладніше про це у файлі COPYING.\n" "\n" "Відвідайте сторінку XBoard у мережі за адресою: http://www.gnu.org/software/" "xboard/\n" "Ознайомтеся з найсвіжішими можливостями програми: http://www.gnu.org/" "software/xboard/whats_new.html\n" "\n" "Надішліть повідомлення про ваду на адресу: \n" "\n" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "Про XBoard" #: menus.c:390 msgid "Registered Engines" msgstr "Зареєстровані рушії" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 msgid "New Game" msgstr "Нова гра" #: menus.c:613 msgid "New Shuffle Game..." msgstr "Нова випадкова гра…" #: menus.c:614 msgid "New Variant..." msgstr "Новий варіант…" #: menus.c:616 msgid "Load Game" msgstr "Завантажити гру" #: menus.c:617 msgid "Load Position" msgstr "Завантажити позицію" #: menus.c:618 msgid "Next Position" msgstr "Наступна позиція" #: menus.c:619 msgid "Prev Position" msgstr "Попередня позиція" #: menus.c:621 msgid "Save Game" msgstr "Зберегти гру" #: menus.c:622 msgid "Save Position" msgstr "Зберегти позицію" #: menus.c:623 msgid "Save Selected Games" msgstr "Зберегти позначені ігри" #: menus.c:624 msgid "Save Games as Book" msgstr "Зберегти ігри як книгу" #: menus.c:626 msgid "Mail Move" msgstr "Надіслати хід поштою" #: menus.c:627 msgid "Reload CMail Message" msgstr "Перезавантажити повідомлення CMail" #: menus.c:629 msgid "Quit " msgstr "Вийти " #: menus.c:634 msgid "Copy Game" msgstr "Копіювати гру" #: menus.c:635 msgid "Copy Position" msgstr "Копіювати позицію" #: menus.c:636 msgid "Copy Game List" msgstr "Копіювати список ігор" #: menus.c:638 msgid "Paste Game" msgstr "Вставити гру" #: menus.c:639 msgid "Paste Position" msgstr "Вставити позицію" #: menus.c:641 menus.c:686 msgid "Edit Game" msgstr "Редагувати гру" #: menus.c:642 menus.c:687 msgid "Edit Position" msgstr "Редагувати позицію" #: menus.c:643 msgid "Edit Tags" msgstr "Змінити мітки" #: menus.c:644 msgid "Edit Comment" msgstr "Змінити коментар" #: menus.c:645 msgid "Edit Book" msgstr "Змінити книгу" #: menus.c:647 msgid "Revert" msgstr "Повернути" #: menus.c:648 msgid "Annotate" msgstr "Анотувати" #: menus.c:649 msgid "Truncate Game" msgstr "Обрізати гру" #: menus.c:651 msgid "Backward" msgstr "Назад" #: menus.c:652 msgid "Forward" msgstr "Вперед" #: menus.c:653 msgid "Back to Start" msgstr "Повернутися до початку" #: menus.c:654 msgid "Forward to End" msgstr "Вперед до кінця" #: menus.c:659 msgid "Flip View" msgstr "Повернути дошку" #: menus.c:662 msgid "Move History" msgstr "Журнал ходів" #: menus.c:663 msgid "Evaluation Graph" msgstr "Граф оцінки позиції" #: menus.c:664 msgid "Game List" msgstr "Список ігор" #: menus.c:667 msgid "Comments" msgstr "Коментарі" #: menus.c:668 msgid "ICS Input Box" msgstr "Поле введення ICS" #: menus.c:669 msgid "ICS/Chat Console" msgstr "Консоль ICS/розмов" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Змінити коментар" #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Змінити список рушіїв…" #: menus.c:674 msgid "Board..." msgstr "Дошка…" #: menus.c:675 msgid "Fonts..." msgstr "Шрифти…" #: menus.c:676 msgid "Game List Tags..." msgstr "Мітки списку ігор…" #: menus.c:681 msgid "Machine White" msgstr "Комп’ютер-білими" #: menus.c:682 msgid "Machine Black" msgstr "Матч ком’ютерів" #: menus.c:683 msgid "Two Machines" msgstr "Два комп’ютера" #: menus.c:684 msgid "Analysis Mode" msgstr "Режим аналізу" #: menus.c:685 msgid "Analyze Game" msgstr "Аналізувати гру" #: menus.c:688 msgid "Training" msgstr "Тренування" #: menus.c:689 msgid "ICS Client" msgstr "Клієнт ICS" #: menus.c:691 msgid "Machine Match" msgstr "Матч ком’ютерів" #: menus.c:692 msgid "Pause" msgstr "Пауза" #: menus.c:697 msgid "Accept" msgstr "Прийняти" #: menus.c:698 msgid "Decline" msgstr "Відхилити" #: menus.c:699 msgid "Rematch" msgstr "Перегравання" #: menus.c:701 msgid "Call Flag" msgstr "Погодитися з програшем" #: menus.c:702 msgid "Draw" msgstr "Нічия" #: menus.c:703 msgid "Adjourn" msgstr "Відкласти" #: menus.c:704 msgid "Abort" msgstr "Перервати" #: menus.c:705 msgid "Resign" msgstr "Здатись" #: menus.c:707 msgid "Stop Observing" msgstr "Припинити спостереження" #: menus.c:708 msgid "Stop Examining" msgstr "Припинити аналіз" #: menus.c:709 msgid "Upload to Examine" msgstr "Вивантажити для аналізу" #: menus.c:711 msgid "Adjudicate to White" msgstr "Визначити виграш білих" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Визначити виграш чорних" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Визначити нічию" #: menus.c:718 msgid "Edit Engine List..." msgstr "Змінити список рушіїв…" #: menus.c:720 msgid "Load New 1st Engine..." msgstr "Завантажити новий перший рушій…" #: menus.c:721 msgid "Load New 2nd Engine..." msgstr "Завантажити новий другий рушій…" #: menus.c:723 msgid "Engine #1 Settings..." msgstr "Параметри рушія 1…" #: menus.c:724 msgid "Engine #2 Settings..." msgstr "Параметри рушія 2…" #: menus.c:725 msgid "Common Settings..." msgstr "Загальні параметри…" #: menus.c:727 msgid "Hint" msgstr "Підказка" #: menus.c:728 msgid "Book" msgstr "Книга" #: menus.c:730 msgid "Move Now" msgstr "Ходити зараз" #: menus.c:731 msgid "Retract Move" msgstr "Відкликати хід" #: menus.c:736 #, fuzzy msgid "Mute all Sounds" msgstr "Звук ходу" #: menus.c:739 msgid "General..." msgstr "Загальне…" #: menus.c:741 msgid "Time Control..." msgstr "Керування часом…" #: menus.c:742 msgid "Adjudications..." msgstr "Визначення…" #: menus.c:743 msgid "ICS..." msgstr "ICS…" #: menus.c:744 msgid "Tournament..." msgstr "Турнір…" #: menus.c:745 msgid "Load Game..." msgstr "Завантажити гру…" #: menus.c:746 msgid "Save Game..." msgstr "Зберегти гру…" #: menus.c:747 msgid "Game List..." msgstr "Список ігор…" #: menus.c:748 msgid "Sounds..." msgstr "Звуки…" #: menus.c:751 msgid "Always Queen" msgstr "Завжди королева" #: menus.c:757 msgid "Flash Moves" msgstr "Підсвічування ходів" #: menus.c:759 msgid "Highlight Dragging" msgstr "Підсвічувати перетягування" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Позначити за допомогою стрілки" #: menus.c:763 msgid "Move Sound" msgstr "Звук ходу" #: menus.c:765 msgid "Periodic Updates" msgstr "Періодичні оновлення" #: menus.c:767 msgid "Popup Exit Message" msgstr "Показувати повідомлення щодо виходу" #: menus.c:769 msgid "Show Coords" msgstr "Показати координати" #: menus.c:770 msgid "Hide Thinking" msgstr "Приховувати обмірковування" #: menus.c:774 msgid "Save Settings Now" msgstr "Зберегти параметри зараз" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Зберегти параметри при виході" #: menus.c:780 msgid "Info XBoard" msgstr "Інформація з XBoard" #: menus.c:781 msgid "Man XBoard" msgstr "Підручник з XBoard" #: menus.c:783 msgid "XBoard Home Page" msgstr "Домашня сторінка XBoard" #: menus.c:784 msgid "On-line User Guide" msgstr "Підручник користувача у інтернеті" #: menus.c:785 msgid "Development News" msgstr "Новини щодо розробки" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "Надіслати звіт про ваду електронною поштою" #: menus.c:825 msgid "File" msgstr "Файл" #: menus.c:826 msgid "Edit" msgstr "Зміни" #: menus.c:827 msgid "View" msgstr "Перегляд" #: menus.c:828 msgid "Mode" msgstr "Режим" #: menus.c:829 msgid "Action" msgstr "Дія" #: menus.c:830 msgid "Engine" msgstr "Рушій" #: menus.c:831 msgid "Options" msgstr "Параметри" #: menus.c:832 msgid "Help" msgstr "Довідка" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "назва рушія" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "хід" #: nengineoutput.c:156 msgid "Engine output" msgstr "Вивід рушія" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" "Невідповідність STRIDE у nengineoutput.c\n" "Змініть і зберіть програму знову!" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "Граф оцінки позиції" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "Граф грубих помилок" #: nevalgraph.c:107 msgid "Blunder" msgstr "Груба помилка" #: nevalgraph.c:107 msgid "Eval" msgstr "Оцінка" #: ngamelist.c:87 msgid "find position" msgstr "знайти позицію" #: ngamelist.c:88 msgid "narrow" msgstr "звуження" #: ngamelist.c:89 msgid "thresholds" msgstr "порогові значення" #: ngamelist.c:90 msgid "tags" msgstr "мітки" #: ngamelist.c:91 msgid "next" msgstr "далі" #: ngamelist.c:92 msgid "close" msgstr "закрити" #: ngamelist.c:116 msgid "No game selected" msgstr "Не вибрано гри" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "Подальший рух вперед списком неможливий" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "Сканування списку ігор (%d)" #: ngamelist.c:211 msgid "previous page" msgstr "попередня сторінка" #: ngamelist.c:214 msgid "next page" msgstr "наступна сторінка" #: ngamelist.c:217 msgid "no games matched your request" msgstr "вашому запиту не відповідає жодна гра" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "%s — %d з %d ігор (%d-%d-%d)" #: ngamelist.c:284 msgid "There is no game list" msgstr "Немає списку ходів гри" #: nhistory.c:109 msgid "Move list" msgstr "Список ходів" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "%s: нерозпізнаний колір %s\n" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s: не вдалося обробити колір тексту у «%s»\n" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "%s: не вдалося обробити назви кольорів; розфарбовування вимкнено\n" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "Помилка: невідомий користувач %s (шлях — %s)\n" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "Підтримку сокетів ще не налаштовано" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "вбудований rcmd ще не реалізовано для Unix" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "білий піксель = 0x%lx, чорний піксель = 0x%lx\n" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "вибрати" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "Ctrl" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "Alt" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "Shift" #~ msgid "Common Engine..." #~ msgstr "Загальний рушій…" #~ msgid " (for concurrent playing of a single" #~ msgstr " (для одночасної гри окремого" #~ msgid "Match Options" #~ msgstr "Параметри партії" #~ msgid "Chat box" #~ msgstr "Панель спілкування" #~ msgid "Open Chat Window" #~ msgstr "Відкрити вікно спілкування" #~ msgid "ICS ..." #~ msgstr "ICS…" #~ msgid "Match ..." #~ msgstr "Партія…" #~ msgid "%s: Can't access XPM directory %s\n" #~ msgstr "%s: не вдалося отримати доступ до каталогу XPM %s\n" #~ msgid "Available `%s' sizes:\n" #~ msgstr "Доступні розміри «%s»:\n" #~ msgid "Error: No `%s' files!\n" #~ msgstr "Помилка: немає файлів «%s»!\n" #~ msgid "" #~ "Warning: No DIR structure found on this system --\n" #~ " Unable to autosize for XPM/XIM pieces.\n" #~ " Please report this error to %s.\n" #~ " Include system type & operating system in message.\n" #~ msgstr "" #~ "Попередження: у системі не виявлено структури DIR —\n" #~ " автоматична зміна розмірів фігур XPM/XIM неможлива.\n" #~ " Будь ласка, повідомте про цю помилку на адресу %s.\n" #~ " Включіть до повідомлення дані щодо типу та назви операційної системи.\n" #~ msgid "Error %d loading icon image\n" #~ msgstr "Помилка %d під час завантаження зображення піктограми\n" #~ msgid "cancel" #~ msgstr "скасувати" #~ msgid "recognized '%s' (%d) as variant %s\n" #~ msgstr "розпізнано «%s» (%d) як варіант %s\n" #~ msgid "Ratings from header: W %d, B %d\n" #~ msgstr "Рейтинги з заголовка: Б %d, Ч %d\n" #~ msgid "Parsing board: %s\n" #~ msgstr "Обробка дошки: %s\n" #~ msgid "Found unexpected active ICS engine analyze \n" #~ msgstr "Виявлено неочікуваний активний процес аналізу рушія ICS \n" #~ msgid "ICS engine analyze starting... \n" #~ msgstr "Розпочинаємо аналіз за допомогою рушія ICS… \n" #~ msgid "" #~ "resolved %s at pixel size %d\n" #~ " to %s\n" #~ msgstr "" #~ "визначено %s з розміром у пікселях %d\n" #~ " як %s\n" #~ msgid "New Game Ctrl+N" #~ msgstr "Нова гра Ctrl+N" #~ msgid "New Variant ... Alt+Shift+V" #~ msgstr "Новий варіант… Alt+Shift+V" #~ msgid "Load Game Ctrl+O" #~ msgstr "Завантажити гру Ctrl+O" #~ msgid "Load Position Ctrl+Shift+O" #~ msgstr "Завантажити позицію Ctrl+Shift+O" #~ msgid "Prev Position Shift+PgUp" #~ msgstr "Попередня позиція Shift+PgUp" #~ msgid "Save Game Ctrl+S" #~ msgstr "Зберегти гру Ctrl+S" #~ msgid "Save Position Ctrl+Shift+S" #~ msgstr "Зберегти позицію Ctrl+Shift+S" #~ msgid "Quit Ctr+Q" #~ msgstr "Вийти Ctr+Q" #~ msgid "Copy Game Ctrl+C" #~ msgstr "Копіювати гру Ctrl+C" #~ msgid "Edit Game Ctrl+E" #~ msgstr "Редагувати гру Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "Редагувати позицію Ctrl+Shift+E" #~ msgid "Revert Home" #~ msgstr "Скасувати Домівка" #~ msgid "Backward Alt+Left" #~ msgstr "Назад Alt+Ліворуч" #~ msgid "Forward Alt+Right" #~ msgstr "Вперед Alt+Праворуч" #~ msgid "Back to Start Alt+Home" #~ msgstr "Повернутися на початок Alt+Home" #~ msgid "Flip View F2" #~ msgstr "Розвернути F2" #~ msgid "Engine Output Alt+Shift+O" #~ msgstr "Вивід рушія Alt+Shift+O" #~ msgid "Move History Alt+Shift+H" #~ msgstr "Журнал ходів Alt+Shift+H" #~ msgid "Evaluation Graph Alt+Shift+E" #~ msgstr "Граф оцінки позиції Alt+Shift+E" #~ msgid "Game List Alt+Shift+G" #~ msgstr "Список ігор Alt+Shift+G" #~ msgid "Machine Black Ctrl+B" #~ msgstr "Комп’ютер-чорними Ctrl+B" #~ msgid "Edit Game Ctrl+E" #~ msgstr "Редагувати гру Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "Редагувати позицію Ctrl+Shift+E" #~ msgid "Pause Pause" #~ msgstr "Призупинити Pause" #~ msgid "Accept F3" #~ msgstr "Прийняти F3" #~ msgid "Decline F4" #~ msgstr "Відхилити F4" #~ msgid "Rematch F12" #~ msgstr "Перегравання F12" #~ msgid "Draw F6" #~ msgstr "Нічия F6" #~ msgid "Adjourn F7" #~ msgstr "Відкласти F7" #~ msgid "Abort F8" #~ msgstr "Перервати F8" #~ msgid "Resign F9" #~ msgstr "Здатися F9" #~ msgid "Move Now Ctrl+M" #~ msgstr "Ходити Ctrl+M" #~ msgid "Time Control ... Alt+Shift+T" #~ msgstr "Керування часом… Alt+Shift+T" #~ msgid "Always Queen Ctrl+Shift+Q" #~ msgstr "Завжди королева Ctrl+Shift+Q" #~ msgid "Animate Moving Ctrl+Shift+A" #~ msgstr "Анімація ходів Ctrl+Shift+A" #~ msgid "Auto Flag Ctrl+Shift+F" #~ msgstr "Автопрапорець Ctrl+Shift+F" #~ msgid "Ponder Next Move Ctrl+Shift+P" #~ msgstr "Обдумати наступний хід Ctrl+Shift+P" #~ msgid "Hide Thinking Ctrl+Shift+H" #~ msgstr "Сховати обмірковування Ctrl+Shift+H" #~ msgid "Test Legality Ctrl+Shift+L" #~ msgstr "Перевірити коректність Ctrl+Shift+L" #~ msgid "Filter on extensions:" #~ msgstr "Фільтр суфіксів:" #~ msgid "Pathname:" #~ msgstr "Назва шляху:" #~ msgid "XsraSelFile: can't get current directory" #~ msgstr "XsraSelFile: не вдалося отримати назву поточного каталогу" #~ msgid "%s: titleWidget geometry error %d %d %d %d %d\n" #~ msgstr "" #~ "%s: помилка у геометричних параметрах titleWidget — %d %d %d %d %d\n" #~ msgid "Error expanding path name \"%s\"\n" #~ msgstr "Помилка під час спроби розгортання адреси каталогу «%s»\n" #~ msgid "" #~ "XBoard square size (hint): %d\n" #~ "%s fulldir:%s:\n" #~ msgstr "" #~ "Розмір клітинки XBoard (hint): %d\n" #~ "%s fulldir:%s:\n" #~ msgid "Closest %s size: %d\n" #~ msgstr "Найближчий розмір %s: %d\n" #~ msgid "%s: messageWidget geometry error %d %d %d %d %d\n" #~ msgstr "" #~ "%s: помилка у геометричних параметрах messageWidget — %d %d %d %d %d\n" #~ msgid "%s: error loading XIM!\n" #~ msgstr "%s: помилка завантаження XIM!\n" #~ msgid "XIM pieces cannot be used in monochrome mode" #~ msgstr "У монохромному режимі не можна користуватися фігурами XIM" #~ msgid "" #~ "\n" #~ "Loading XIMs...\n" #~ msgstr "" #~ "\n" #~ "Завантаження XIM…\n" #~ msgid "(File:%s:) " #~ msgstr "(Файл:%s:) " #~ msgid "light square " #~ msgstr "світла клітинка " #~ msgid "dark square " #~ msgstr "темна клітинка " #~ msgid "Done.\n" #~ msgstr "Виконано.\n" #~ msgid "XPM pieces cannot be used in monochrome mode" #~ msgstr "У монохромному режимі не можна користуватися фігурами XPM" #~ msgid "No builtin XPM pieces of size %d\n" #~ msgstr "Немає вбудованих фігур XPM розміру %d\n" #~ msgid "Error %d loading XPM image \"%s\"\n" #~ msgstr "Помилка %d під час спроби завантаження зображення XPM «%s»\n" #~ msgid "" #~ "\n" #~ "Loading XPMs...\n" #~ msgstr "" #~ "\n" #~ "Завантаження XPM…\n" #~ msgid "(Replace by File:%s:) " #~ msgstr "(Замінено на File:%s:) " #~ msgid "Error %d loading XPM file \"%s\"\n" #~ msgstr "Помилка %d під час спроби завантаження файла XPM «%s»\n" #~ msgid "Can't open bitmap file %s" #~ msgstr "Не вдалося відкрити файл растрового зображення %s" #~ msgid "Invalid bitmap in file %s" #~ msgstr "Некоректне растрове зображення у файлі %s" #~ msgid "Ran out of memory reading bitmap file %s" #~ msgstr "" #~ "Під час читання растрового зображення %s було вичерпано обсяг пам’яті" #~ msgid "Unknown XReadBitmapFile error %d on file %s" #~ msgstr "Невідома помилка XReadBitmapFile %d під час обробки файла %s" #~ msgid "%s: %s...using built-in\n" #~ msgstr "%s: %s… використовуємо вбудоване\n" #~ msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n" #~ msgstr "" #~ "%s: розміри растрового зображення %s дорівнюють %dx%d, а не %dx%d… " #~ "використовуємо вбудоване\n" #~ msgid "----" #~ msgstr "----" #~ msgid "Drop" #~ msgstr "Викинути" #~ msgid "could not open: " #~ msgstr "Не вдалося відкрити:" #~ msgid "Can't open file" #~ msgstr "Не вдалося відкрити файл" #~ msgid "Promotion" #~ msgstr "Заміна" #~ msgid "Promote to what?" #~ msgstr "На що замінити?" #~ msgid "ok" #~ msgstr "гаразд" #~ msgid "AskQuestionProc needed 4 parameters, got %d\n" #~ msgstr "AskQuestionProc потребує 4 параметрів, отримано %d\n" #~ msgid "enter" #~ msgstr "увійти" #~ msgid "This feature is experimental" #~ msgstr "Цю можливість ще не перевірено" #~ msgid "Filter:" #~ msgstr "Фільтр:" #~ msgid "filtertext" #~ msgstr "текст фільтрування" #~ msgid "apply" #~ msgstr "застосувати" #~ msgid "load" #~ msgstr "завантажити" #~ msgid "prev" #~ msgstr "попер" #~ msgid "Second Engine" #~ msgstr "Другий рушій" #~ msgid "" #~ "WARNING: variants with un-orthodox\n" #~ "pieces only have built-in bitmaps\n" #~ "for -boardSize middling, bulky and\n" #~ "petite, and substitute king or amazon\n" #~ "for missing bitmaps. (See manual.)" #~ msgstr "" #~ "УВАГА: для варіантів з неортодоксальними\n" #~ "фігурами використовуватимуться зображення\n" #~ "для -boardSize середнього, великого і\n" #~ "малого розмірів. Для фігур без зображень\n" #~ "буде використано зображення короля або\n" #~ "амазонки. (Див. підручник.)" #~ msgid "Directory with Bitmap Pieces:" #~ msgstr "Каталог bitmap фігур:" #~ msgid "AnimateMove: piece %d hops from %d,%d to %d,%d \n" #~ msgstr "Анімація ходів: фігура %d перестрибує з %d,%d до %d,%d \n" #~ msgid "AnimateMove: piece %d slides from %d,%d to %d,%d \n" #~ msgstr "Анімація ходів: фігура %d пересувається з %d,%d до %d,%d \n" #~ msgid "%s vs. %s" #~ msgstr "%s проти %s" #~ msgid "%s [%s] vs. %s [%s]" #~ msgstr "%s [%s] проти %s [%s]" #~ msgid "%s (%d) vs. %s (%d) {%d %d}" #~ msgstr "%s (%d) проти %s (%d) {%d %d}" #~ msgid "%s (%d) vs. %s (%d) {%d %d %s}" #~ msgstr "%s (%d) проти %s (%d) {%d %d %s}" #~ msgid "%s vs. %s (%d/%d%s)" #~ msgstr "%s проти %s (%d/%d%s)" #~ msgid "White " #~ msgstr "Білий " #~ msgid "Black " #~ msgstr "Чорний " #~ msgid "Close" #~ msgstr "Закрити" #~ msgid "off" #~ msgstr "вимкнено" #~ msgid "minutes for each" #~ msgstr "хвилин для кожного" #~ msgid " OK " #~ msgstr " Гаразд " #~ msgid "moves " #~ msgstr "ходів " xboard-4.9.1/po/pl.po0000644000175000001440000020572612747543737011351 00000000000000# Polish translations for GNU xboard package # Polskie tłumaczenia dla pakietu GNU xboard. # Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the xboard package. # Paweł Żołnowski , 2014. # msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.7.2\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2014-03-03 14:20+0100\n" "Last-Translator: Paweł Żołnowski \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "%s w pliku konfiguracyjnym\n" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "Błędna wartość całkowita %s" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "Nieznany parametr %s" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "Brak wartości parametru %s" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Niepełna sekwencja specjalna \\ w wartości dla %s" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "Nie udało się otworzyć pliku pośredniego %s" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Nieznana wartość parametru logicznego %s" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "1." #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "2." #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "nieobsługiwana wersja %d protokołu" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "Nie podano pliku wykonywalnego silnika" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "zła opcja timeControl %s" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "zła opcja searchTime %s" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "Wariant %s jest obsługiwany tylko w trybie ICS" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "Nieznana nazwa wariantu %s" #: backend.c:1457 msgid "Starting chess program" msgstr "Uruchamianie silnika szachowego" #: backend.c:1480 msgid "Bad game file" msgstr "Nieprawidłowy plik gry" #: backend.c:1487 msgid "Bad position file" msgstr "Nieprawidłowy plik pozycji" #: backend.c:1501 msgid "Pick new game" msgstr "Wybierz nową grę" #: backend.c:1570 #, fuzzy msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" "Zrestartowano ukończony już turniej\n" "Zostanie dodany do niego jeszcze jeden cykl\n" "Gry rozpoczną się za 10 s" #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "Wszystkie gry w turnieju \"%s\" zostały już rozegrane lub są w toku" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "Konieczny jest wybór silnika szachowego" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "Nie można otworzyć portu szeregowego %s" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "Nie można się połączyć z hostem %s, port %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "Nieznany initialMode %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "Tryb AnalyzeFile wymaga pliku gry" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "Tryb analizy wymaga silnika szachowego" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "Tryb analizy nie działa w trybie ICS" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "Tryb MachineWhite wymaga silnika szachowego" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "Tryb MachineWhite nie działa w trybie ICS" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "Tryb MachineBlack wymaga silnika szachowego" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "Tryb MachineBlack nie działa w trybie ICS" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "Tryb TwoMachines wymaga silnika szachowego" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "Tryb TwoMachines nie działa w trybie ICS" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "Tryb treningu wymaga pliku gry" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "Błąd zapisu do ICS" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "Błąd odczytu z klawiatury" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "Wprowadzono EOF z klawiatury" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "Nieznany typ wild %d" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "Błąd zapisu do ekranu" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "przeciwnik doradza: %s" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "Błąd podczas tworzenia listy ruchów: dwa nagłówki" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "Błąd podczas tworzenia listy ruchów: zagnieżdżona lista" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "vs." #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "Niedozwolony ruch (odrzucony przez ICS)" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "Połączenie zamknięte przez ICS" #: backend.c:4306 msgid "Error reading from ICS" msgstr "Błąd odczytu z ICS" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" "Nie udało się przetworzyć ciągu znaków szachownicy:\n" "\"%s\"" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" "Gra jest za długa; należy zwiększyć wartość MAX_MOVES i skompilować ponownie" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "Błąd podczas tworzenia listy ruchów: dodatkowa szachownica" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Nie można przetworzyć ruchu \"%s\" z ICS" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "Błąd wewnętrzny; nieprawidłowy moveType %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "Nie można tego zrobić w czasie gry ani podczas obserwacji" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" "Należy skompilować ponownie, aby włączyć obsługę BOARD_RANKS lub BOARD_FILES!" #: backend.c:6858 msgid "You are playing Black" msgstr "Grasz czarnymi" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "Grasz białymi" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Ruch należy do białych" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Ruch należy do czarnych" #: backend.c:6920 msgid "Displayed position is not current" msgstr "Wyświetlona pozycja nie jest aktualna" #: backend.c:7123 msgid "rights granted" msgstr "" #: backend.c:7123 msgid "rights revoked" msgstr "" #: backend.c:7175 msgid "Illegal move" msgstr "Niedozwolony ruch" #: backend.c:7255 msgid "End of game" msgstr "Koniec gry" #: backend.c:7258 msgid "Incorrect move" msgstr "Nieprawidłowy ruch" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "Należy przeciągnąć pionek w tył, aby dokonać słabej promocji" #: backend.c:7780 msgid "only marked squares are legal" msgstr "" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "Zakończono turniej w systemie szwajcarskim" #: backend.c:8632 msgid "could not load EGBB library" msgstr "" #: backend.c:8635 msgid "wrong EGBB version" msgstr "" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "Nieprawidłowe kojarzenie par" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Niedozwolony ruch \"%s\" dokonany przez %s silnik" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "Nieprawidłowa notacja FEN otrzymana z silnika" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s nie obsługuje analizy" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Niedozwolony ruch \"%s\" (odrzucony przez %s silnik szachowy)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Nie udało się uruchomić %s silnika szachowego %s na %s: %s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "Wskazówka: %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" "%2$s silnik szachowy zasugerował\n" "niedozwolony ruch \"%1$s\"" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "Silnik przyjmuje propozycję remisu" #: backend.c:9687 #, fuzzy msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" "Silnik proponuje remis\n" "Należy wybrać Działanie->Remis, żeby się zgodzić" #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "nie udało się zapisać PV" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Niejednoznaczny ruch na wyjściu ICS: \"%s\"" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Niedozwolony ruch na wyjściu ICS: \"%s\"" #: backend.c:10132 msgid "Gap in move list" msgstr "Luka na liście ruchów" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "Odmiana %s nie jest obsługiwana przez %s" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr "" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "Błąd uruchamiania w \"%s\"" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "Oczekiwanie na pierwszy silnik szachowy" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "Oczekiwanie na drugi silnik szachowy" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "Nieudany zapis do pliku turnieju" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" "Nie można zastąpić silnika w trakcie jego pracy!\n" "Należy zakończyć najpierw jego grę." #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "Silnik o podanej nazwie nie jest zainstalowany" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" "Należy najpierw zmienić silnik, edytując listę uczestników\n" "w oknie dialogowym Opcji turnieju." #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "Można jednocześnie modyfikować tylko jeden silnik" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "Silnik %s nie jest zainstalowany" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" "Należy dostarczyć plik turnieju,\n" "żeby móc zapisać jego przebieg" #: backend.c:11200 msgid "Not enough participants" msgstr "Za mało uczestników" #: backend.c:11403 msgid "Bad tournament file" msgstr "Nieprawidłowy plik turnieju" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "Oczekiwanie na pozostałe gry" #: backend.c:11428 msgid "No pairing engine specified" msgstr "Nie określono silnika do kojarzenia par" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "" #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "" #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Mecz %s vs. %s: ostateczny wynik %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Niedozwolony ruch: %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Niejednoznaczny ruch: %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "Nie można otworzyć \"%s\"" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "Nie można utworzyć listy gier" #: backend.c:12574 msgid "No more games in this message" msgstr "Nie ma więcej gier w tej wiadomości" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "Nie wczytano jeszcze żadnej gry" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "Dalsze cofanie jest niemożliwe" #: backend.c:13065 msgid "Game number out of range" msgstr "Numer gry jest poza zakresem" #: backend.c:13076 msgid "Can't seek on game file" msgstr "Niemożliwe przemieszczanie w pliku gry" #: backend.c:13134 msgid "Game not found in file" msgstr "Nie znaleziono gry w pliku" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "Nieprawidłowa pozycja FEN w pliku" #: backend.c:13423 msgid "No moves in game" msgstr "Brak ruchów w grze" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "Nie wczytano jeszcze żadnej pozycji" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "Niemożliwe przemieszczanie w pliku pozycji" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "Nie znaleziono pozycji w pliku" #: backend.c:13645 msgid "Black to play" msgstr "Czarne do gry" #: backend.c:13648 msgid "White to play" msgstr "Białe do gry" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "Oczekiwanie na dostęp, aby zapisać plik" #: backend.c:13737 msgid "Saving game" msgstr "Zapisywanie gry" #: backend.c:13738 msgid "Bad Seek" msgstr "Nieprawidłowe szukanie" #: backend.c:14111 msgid "Saving position" msgstr "Zapisywanie pozycji" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" "Zmodyfikowano historię gry.\n" "Należy wybrać Wczytaj grę ponownie i wykonać ruch jeszcze raz." #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" "Wprowadzono za dużo ruchów.\n" "Proszę cofnąć do prawidłowej pozycji i spróbować ponownie." #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" "Wyświetlona pozycja nie jest aktualna.\n" "Proszę przejść do przodu do prawidłowej pozycji i spróbować ponownie." #: backend.c:14294 msgid "You have not made a move yet" msgstr "Jeszcze nie wykonano ruchu" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" "Nie wczytano wiadomości cmail.\n" "Należy wybrać Wczytaj wiadomość cmail ponownie i wykonać ruch jeszcze raz." #: backend.c:14320 msgid "No unfinished games" msgstr "Brak niedokończonych gier" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" "Wysłano już ruch.\n" "Należy poczekać na nadejście ruchu od przeciwnika.\n" "Aby wysłać ruch ponownie, należy wpisać\n" "\"cmail -remail -game %s\"\n" "w wierszu poleceń." #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "Nie udało się wywołać cmail" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Oczekiwanie na odpowiedź od przeciwnika\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "Wciąż trzeba wykonać ruch w grze\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "Wciąż trzeba wykonać ruch w obu grach\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "Wciąż trzeba wykonać ruch we wszystkich grach %d\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "Wciąż trzeba wykonać ruch w grze %s\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "Brak niedokończonych gier\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "Gotowy do wysłania wiadomości\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Wciąż trzeba wykonać ruch w grach %s\n" #: backend.c:14656 msgid "Edit comment" msgstr "Edytuj komentarz" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Edytowanie komentarza do %d.%s%s" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "Gra nie jest obserwowana" #: backend.c:14824 msgid "It is not White's turn" msgstr "Ruch nie należy do białych" #: backend.c:14907 msgid "It is not Black's turn" msgstr "Ruch nie należy do czarnych" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "Uruchamianie %s silnika szachowego" #: backend.c:15045 backend.c:16238 #, fuzzy msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" "Proszę poczekać na swój ruch\n" "lub wybrać Wykonaj ruch" #: backend.c:15188 msgid "Training mode off" msgstr "Tryb treningu wył." #: backend.c:15196 msgid "Training mode on" msgstr "Tryb treningu wł." #: backend.c:15199 msgid "Already at end of game" msgstr "Zakończono już grę" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "Ostrzeżenie: Nie zakończono jeszcze gry" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "Ostrzeżenie: Nie zakończono obserwacji gry" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "Ostrzeżenie: Nie zakończono badania gry" #: backend.c:15365 msgid "Click clock to clear board" msgstr "Kliknij zegar, aby wyczyścić szachownicę" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "Zamknij analizę silnika ICS..." #: backend.c:15711 msgid "That square is occupied" msgstr "To pole jest zajęte" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "Brak oczekującej propozycji tego ruchu" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "Przeciwnik nie przekroczył limitu czasu" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "Przed zaproponowaniem remisu należy wykonać ruch" #: backend.c:16220 msgid "You are not examining a game" msgstr "Żadna gra nie jest badana" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "Nie można cofać podczas pauzy" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "Ruch należy do ciebie" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 #, fuzzy msgid "Wait until your turn." msgstr "Proszę poczekać na swój ruch" #: backend.c:16348 msgid "No hint available" msgstr "Brak wskazówek" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "Nie wczytano listy gier lub jest ona pusta" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "Plik książki już istnieje! Należy spróbować ponownie, aby nadpisać." #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "Błąd zapisu do %s silnika szachowego" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "%s silnik znajduje się w martwej pozycji (%s)" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Błąd: %s silnik szachowy (%s) zakończył nieoczekiwanie pracę" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Błąd odczytu z %s silnika szachowego (%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "%s silnik ma za dużo opcji\n" #: backend.c:17521 msgid "Displayed move is not current" msgstr "Wyświetlony ruch nie jest aktualny" #: backend.c:17530 msgid "Could not parse move" msgstr "Nie można przetworzyć ruchu" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "Spadły obie chorągiewki" #: backend.c:17657 msgid "White's flag fell" msgstr "Spadła chorągiewka białych" #: backend.c:17679 msgid "Black's flag fell" msgstr "Spadła chorągiewka czarnych" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "Nie można nastawiać zegara w trybie automatycznej chorągiewki" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "Nieprawidłowa pozycja FEN w schowku" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "Nieprawidłowa książka polyglot" #: book.c:722 msgid "Book Fault" msgstr "Błąd książki" #: book.c:877 msgid "Hash keys are different" msgstr "Klucze hash nie są takie same" #: book.c:1054 msgid "Could not create book" msgstr "Nie można utworzyć książki" #: dialogs.c:287 msgid "Tournament file: " msgstr "Plik turnieju: " #: dialogs.c:288 #, fuzzy msgid "For concurrent playing of tourney with multiple XBoards:" msgstr " turnieju za pomocą wielu programów XBoard)" #: dialogs.c:289 msgid "Sync after round" msgstr "Synchronizacja po rundzie" #: dialogs.c:290 msgid "Sync after cycle" msgstr "Synchronizacja po cyklu" #: dialogs.c:291 msgid "Tourney participants:" msgstr "Uczestnicy turnieju:" #: dialogs.c:292 msgid "Select Engine:" msgstr "Wybór silnika:" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "Typ turnieju (0 = system-kołowy, 1 = system-gauntlet):" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "Liczba cykli turnieju (lub rund szwajcarskich)" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "Domyślna liczba gier podczas meczu (lub na parę)" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "Pauza między grami meczowymi (ms):" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "Zapisuj gry turnieju do:" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "Plik gry z wierszami otwierającymi:" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "Numer gry (-1 lub -2 = przyrost automatyczny):" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "Plik z pozycjami startowymi:" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "Numer pozycji (-1 lub -2 = przyrost automatyczny):" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "Przewiń indeks wstecz po liczbie gier równej (0 = nigdy):" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "Wyłącz domyślnie własne książki silnika" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "Kontrola czasu" #: dialogs.c:312 #, fuzzy msgid "Common Engine" msgstr "Wspólne ustawienia silników..." #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Opcje ogólne" #: dialogs.c:314 msgid "Continue Later" msgstr "" #: dialogs.c:315 msgid "Replace Engine" msgstr "Zastąp silnik" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "Aktualizuj silnik" #: dialogs.c:317 msgid "Clone Tourney" msgstr "Skopiuj turniej" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "Należy najpierw określić istniejący plik turnieju do skopiowania" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "# nie zainstalowano żadnych silników" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "" #: dialogs.c:389 #, fuzzy msgid "Tournament Options" msgstr "Opcje dźwięków" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "Wyniki absolutnej analizy" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "Prawie zawsze hetman (okrężna słaba promocja)" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "Animowane przesuwanie" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "Animowany ruch" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Automatyczna chorągiewka" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Autoodwracanie szachownicy" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "Niewidzialne bierki" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "Rozwijane menu" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "Włącz drzewo alternatywnych ruchów" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "Ukryj myślenie przed graczem" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Podświetl ostatni ruch" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Podświetl kursorem" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Ruch jednym kliknięciem" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "Częste aktualizacje (w trybie analizy)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "Odtwórz ruch(y) PV (analiza)" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "Myślenie nad następnym ruchem" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Pytaj przed wyjściem" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Błędy ruchu w oknie podręcznym" #: dialogs.c:429 msgid "Scores in Move List" msgstr "Wyniki na liście ruchów" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Wyświetlanie współrzędnych" #: dialogs.c:431 msgid "Show Target Squares" msgstr "Wyświetlanie możliwych ruchów" #: dialogs.c:432 msgid "Sticky Windows" msgstr "Przyklejanie okien" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Blokowanie niedozwolonych ruchów" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "Okna dialogowe najwyższego poziomu" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "Migający ruch (0 = brak migania):" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "Szybkość migania (wysoka = szybka):" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "Szybkość animacji (wysoka = wolna):" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "Współczynnik powiększenia na Wykresie wyników" #: dialogs.c:458 #, fuzzy msgid "Normal" msgstr "normalne" #: dialogs.c:459 #, fuzzy msgid "Makruk" msgstr "makruk" #: dialogs.c:460 msgid "FRC" msgstr "szachy losowe (960)" #: dialogs.c:461 #, fuzzy msgid "Shatranj" msgstr "szatrandż" #: dialogs.c:462 #, fuzzy msgid "Wild castle" msgstr "wild castle" #: dialogs.c:463 #, fuzzy msgid "Knightmate" msgstr "knightmate" #: dialogs.c:464 #, fuzzy msgid "No castle" msgstr "bez roszady" #: dialogs.c:465 #, fuzzy msgid "Cylinder *" msgstr "cylindryczne *" #: dialogs.c:466 msgid "3-checks" msgstr "do 3 szachów" #: dialogs.c:467 msgid "berolina *" msgstr "berolina *" #: dialogs.c:468 msgid "atomic" msgstr "atomowe" #: dialogs.c:469 msgid "two kings" msgstr "dwa króle" #: dialogs.c:470 msgid " " msgstr " " #: dialogs.c:471 msgid "Spartan" msgstr "Spartan" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "Rozmiar szachownicy (-1 = domyślny dla wybranego wariantu):" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "Liczba rzędów szachownicy:" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "Liczba kolumn szachownicy:" #: dialogs.c:475 msgid "Holdings Size:" msgstr "Rozmiar rezerwy:" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" #: dialogs.c:479 msgid "ASEAN" msgstr "" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "wielki szatrandż (10x8)" #: dialogs.c:481 msgid "Seirawan" msgstr "Seirawan" #: dialogs.c:482 #, fuzzy msgid "Falcon (10x8)" msgstr "falcon (10x8)" #: dialogs.c:483 msgid "Superchess" msgstr "Superchess" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "szachy Capablanki (10x8)" #: dialogs.c:485 #, fuzzy msgid "Crazyhouse" msgstr "crazyhouse" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "Gothic (10x8)" #: dialogs.c:487 #, fuzzy msgid "Bughouse" msgstr "kloc" #: dialogs.c:488 #, fuzzy msgid "Janus (10x8)" msgstr "janus (10x8)" #: dialogs.c:489 #, fuzzy msgid "Suicide" msgstr "antyszachy (suicide)" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "losowe szachy Capablanki (10x8)" #: dialogs.c:491 msgid "give-away" msgstr "antyszachy (give-away)" #: dialogs.c:492 msgid "grand (10x10)" msgstr "grand (10x10)" #: dialogs.c:493 msgid "losers" msgstr "antyszachy (losers)" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "shōgi (9x9)" #: dialogs.c:495 msgid "fairy" msgstr "fairy" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "xiangqi (9x10)" #: dialogs.c:497 msgid "mighty lion" msgstr "" #: dialogs.c:498 msgid "courier (12x8)" msgstr "courier (12x8)" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "" #: dialogs.c:500 #, fuzzy msgid "chu shogi (12x12)" msgstr "shōgi (9x9)" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Ostrzeżenie: drugi silnik (%s) nie obsługuje tego!" #: dialogs.c:573 #, fuzzy, c-format msgid "Only bughouse is not available in viewer mode." msgstr "Tylko odmiana kloc nie jest dostępna w trybie obserwatora" #: dialogs.c:574 #, fuzzy, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" "Odmiany nieobsługiwane przez pierwszy silnik\n" "(obecnie %s) są niedostępne" #: dialogs.c:596 msgid "New Variant" msgstr "Nowa odmiana" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "Maksymalna liczba rdzeni na silnik:" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "Katalog książki polyglot:" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "Rozmiary tablicy mieszającej (MB)" #: dialogs.c:631 #, fuzzy msgid "EGTB Path:" msgstr "Ścieżka do Nalimov EGTB:" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "Rozmiar pamięci podręcznej dla EGTB (MB):" #: dialogs.c:633 msgid "Use GUI Book" msgstr "Używanie książki GUI" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "Nazwa pliku książki otwarć:" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "Pojemność książki (w ruchach):" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "Różnorodność (0) książki a siła (100):" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "Silnik #1 ma własną książkę" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "Silnik #2 ma własną książkę " #: dialogs.c:649 msgid "Common Engine Settings" msgstr "Wspólne ustawienia silników" #: dialogs.c:655 msgid "Detect all Mates" msgstr "Wykrywanie wszystkich matów i patów" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "Weryfikowanie żądań silnika o wynik" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "Remis w przypadku niewystarczającego materiału matowego" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Rozstrzyganie zgodnych remisów (3-ruchowe opóźnienie)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "Liczba ruchów przed remisem:" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "Liczba powtórzeń ruchu:" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "Remis po całkowitej liczbie ruchów:" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "Próg zwycięstwa / przegranej" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "Negacja wyniku silnika #1" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "Negacja wyniku silnika #2" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "Rozstrzyganie gier spoza ICS" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "Autodoradzanie" #: dialogs.c:685 msgid "Auto-Comment" msgstr "Autokomentowanie" #: dialogs.c:686 msgid "Auto-Observe" msgstr "Autoobserwacja" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Autowysuwanie szachownicy" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "Autotworzenie skryptu logowania" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "Obserwacja w tle podczas gry" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "Podwójna szachownica podczas obserwacji w tle" #: dialogs.c:691 msgid "Get Move List" msgstr "Pobieranie listy ruchów" #: dialogs.c:692 msgid "Quiet Play" msgstr "Cicha gra" #: dialogs.c:693 msgid "Seek Graph" msgstr "Wykres gier" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "Autoodświeżanie wykresu gier" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "Podręczne okno poleceń" #: dialogs.c:696 #, fuzzy msgid "Quit after game" msgstr "Oczekiwanie na pozostałe gry" #: dialogs.c:697 msgid "Premove" msgstr "Premove" #: dialogs.c:698 msgid "Premove for White" msgstr "Premove dla białych" #: dialogs.c:699 msgid "First White Move:" msgstr "Pierwszy ruch białych:" #: dialogs.c:700 msgid "Premove for Black" msgstr "Premove dla czarnych" #: dialogs.c:701 msgid "First Black Move:" msgstr "Pierwszy ruch czarnych" #: dialogs.c:703 msgid "Alarm" msgstr "Alarm" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "Czas alarmu (ms):" #: dialogs.c:706 msgid "Colorize Messages" msgstr "Kolorowanie wiadomości" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "Kolory tekstu wiadomości shout" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "Kolory tekstu wiadomości S-Shout:" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "Kolory tekstu kanału #1:" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "Kolory tekstu pozostałych kanałów" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "Kolory tekstu porad:" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "Kolory tekstu wiadomości tell:" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "Kolory tekstu wyzwania:" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "Kolory tekstu prośby:" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "Kolory tekstu propozycji gier:" #: dialogs.c:716 #, fuzzy msgid "Other Text Colors:" msgstr "Kolory tekstu pozostałych kanałów" #: dialogs.c:723 msgid "ICS Options" msgstr "Opcje ICS" #: dialogs.c:728 msgid "Exact position match" msgstr "Ścisłe dopasowanie pozycji" #: dialogs.c:728 msgid "Shown position is subset" msgstr "Wyświetlona pozycja jest podzbiorem" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "Ten sam materiał z dokładnie takim samym szeregiem pionków" #: dialogs.c:729 msgid "Same material" msgstr "Ten sam materiał" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "Zasięg materiału (opcjonalnie górna połowa szachownicy)" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "Różnica materiału (zbalansowany materiał dodatkowy)" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "Autowyświetlanie znaczników" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "Autowyświetlanie komentarzy" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" "Szybkość rozgrywki wczytywanych gier\n" "(0 = natychmiastowa, -1 = wył.):" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "Liczba sekund na ruch:" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" "\n" "opcje do użycia w trybie game-viewer:" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" "\n" "Próg filtrowania pozycji na liście gier:" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "Najmniejsza liczba punktów elo najsilniejszego gracza:" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "Najmniejsza liczba punktów elo najsłabszego gracza:" #: dialogs.c:753 msgid "No games before year:" msgstr "Pominięcie gier sprzed roku:" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "Minimum kolejnych pozycji:" #: dialogs.c:756 msgid "Search mode:" msgstr "Tryb wyszukiwania:" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "Dopasowanie odwrotnych kolorów" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "Dopasowanie pozycji z prawej i lewej strony" #: dialogs.c:767 msgid "Load Game Options" msgstr "Opcje wczytywania gry" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "Autozapis gier" #: dialogs.c:780 msgid "Own Games Only" msgstr "Tylko własne gry" #: dialogs.c:781 msgid "Save Games on File:" msgstr "Zapisywanie gier do pliku:" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "Zapisywanie końcowych pozycji do pliku:" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "Nazwa turnieju w zapisie PGN:" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "Stary styl zapisu (zamiast PGN)" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "Umieść znacznik Number w zapisie PGN turnieju" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "Zapisywanie informacji o wyniku/głębokości do PGN" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "Zapisywanie informacji spoza książki do PGN " #: dialogs.c:794 msgid "Save Game Options" msgstr "Opcje zapisu gry" #: dialogs.c:803 msgid "No Sound" msgstr "Bez dźwięku" #: dialogs.c:804 msgid "Default Beep" msgstr "Domyślny sygnał" #: dialogs.c:805 msgid "Above WAV File" msgstr "Powyższy plik WAV" #: dialogs.c:806 msgid "Car Horn" msgstr "Klakson" #: dialogs.c:807 msgid "Cymbal" msgstr "Talerz" #: dialogs.c:808 msgid "Ding" msgstr "Bim" #: dialogs.c:809 msgid "Gong" msgstr "Gong" #: dialogs.c:810 msgid "Laser" msgstr "Laser" #: dialogs.c:811 msgid "Penalty" msgstr "Karny" #: dialogs.c:812 msgid "Phone" msgstr "Telefon" #: dialogs.c:813 msgid "Pop" msgstr "Wystrzał" #: dialogs.c:814 msgid "Roar" msgstr "" #: dialogs.c:815 msgid "Slap" msgstr "Plaśnięcie" #: dialogs.c:816 msgid "Wood Thunk" msgstr "Stuknięcie drewna" #: dialogs.c:818 msgid "User File" msgstr "Własny plik" #: dialogs.c:841 msgid "User WAV File:" msgstr "Własny plik WAV:" #: dialogs.c:842 msgid "Sound Program:" msgstr "Odtwarzacz:" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "Sprawdź dźwięk:" #: dialogs.c:844 msgid "Play" msgstr "Odtwórz" #: dialogs.c:845 msgid "Move:" msgstr "Ruch:" #: dialogs.c:846 msgid "Win:" msgstr "Wygrana:" #: dialogs.c:847 msgid "Lose:" msgstr "Przegrana:" #: dialogs.c:848 msgid "Draw:" msgstr "Remis:" #: dialogs.c:849 msgid "Unfinished:" msgstr "Niedokończenie:" #: dialogs.c:850 msgid "Alarm:" msgstr "Alarm:" #: dialogs.c:851 msgid "Challenge:" msgstr "Wyzwanie:" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "Katalog z dźwiękami:" #: dialogs.c:854 msgid "Shout:" msgstr "Shout:" #: dialogs.c:855 msgid "S-Shout:" msgstr "S-Shout:" #: dialogs.c:856 msgid "Channel:" msgstr "Kanał:" #: dialogs.c:857 msgid "Channel 1:" msgstr "Kanał 1:" #: dialogs.c:858 msgid "Tell:" msgstr "Tell:" #: dialogs.c:859 msgid "Kibitz:" msgstr "Porada:" #: dialogs.c:860 msgid "Request:" msgstr "Prośba:" #: dialogs.c:861 msgid "Lion roar:" msgstr "" #: dialogs.c:862 msgid "Seek:" msgstr "Wyszukanie gry:" #: dialogs.c:880 msgid "Sound Options" msgstr "Opcje dźwięków" #: dialogs.c:896 msgid "Selectable themes:" msgstr "" #: dialogs.c:898 msgid "New name for current theme:" msgstr "" #: dialogs.c:901 msgid "White Piece Color:" msgstr "Kolor białych bierek:" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "R" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "R" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "B" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "D" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "Kolor czarnych bierek:" #: dialogs.c:917 msgid "Light Square Color:" msgstr "Kolor jasnych pól:" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "Kolor ciemnych pól:" #: dialogs.c:929 msgid "Highlight Color:" msgstr "Kolor podświetlenia:" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "Kolor podświetlenia ruchu premove:" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" "Odwrócone bierki w odmianie shogi (Kolorowe przyciski przywracają " "ustawienia domyślne)" #: dialogs.c:943 msgid "Mono Mode" msgstr "Tryb mono" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "" #: dialogs.c:945 #, fuzzy msgid "Line Gap (-1 = default for board size):" msgstr "" "Grubość linii między polami (-1 = domyślnie dla danego rozmiaru szachownicy):" #: dialogs.c:946 msgid "Use Board Textures" msgstr "Użycie tekstur szachownicy" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "Plik tekstury ciemnych pól:" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "Plik tekstury jasnych pól:" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "Użycie bitmap bierek z własnymi kolorami" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "Katalog obrazów bierek:" #: dialogs.c:1021 #, fuzzy msgid "# no themes are defined" msgstr "# nie zainstalowano żadnych silników" #: dialogs.c:1033 msgid "Board Options" msgstr "Opcje szachownicy" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "Menu tekstowe ICS" #: dialogs.c:1134 msgid "clear" msgstr "wyczyść" #: dialogs.c:1135 msgid "save changes" msgstr "zapisz zmiany" #: dialogs.c:1233 #, fuzzy msgid "add next move" msgstr "Myślenie nad następnym ruchem" #: dialogs.c:1234 #, fuzzy msgid "commit changes" msgstr "zapisz zmiany" #: dialogs.c:1257 msgid "Edit book" msgstr "Edytuj książkę" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Znaczniki" #: dialogs.c:1405 msgid "ICS input box" msgstr "Okno poleceń ICS" #: dialogs.c:1437 msgid "Type a move" msgstr "Proszę wpisać ruch" #: dialogs.c:1463 msgid "Engine has no options" msgstr "Brak opcji silnika" #: dialogs.c:1465 msgid "Engine Settings" msgstr "Ustawienia silnika" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "Wybór silnika z listy:" #: dialogs.c:1509 msgid "or specify one below:" msgstr "lub określenie go poniżej:" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "Pseudonim (opcjonalnie):" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" "Używanie pseudonimu w znacznikach gracza w zapisie PGN gier typu silnik vs. " "silnik" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "Katalog silnika:" #: dialogs.c:1513 msgid "Engine Command:" msgstr "Polecenie silnika:" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "" "(Jeśli pole pozostanie puste, ścieżka pliku wykonywalnego silnika wyznaczy " "katalog)" #: dialogs.c:1515 msgid "UCI" msgstr "UCI" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "Protokół WB v1 (szybsze wczytywanie funkcji silnika)" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "Nieużywanie książki GUI" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "Dodanie silnika do listy" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "Wymuszenie bieżącej odmiany na danym silniku" #: dialogs.c:1574 msgid "Load first engine" msgstr "Wczytaj pierwszy silnik" #: dialogs.c:1580 msgid "Load second engine" msgstr "Wczytaj drugi silnik" #: dialogs.c:1603 msgid "shuffle" msgstr "losowe rozstawienie" #: dialogs.c:1604 msgid "Fischer castling" msgstr "" #: dialogs.c:1605 msgid "Start-position number:" msgstr "Numer pozycji początkowej:" #: dialogs.c:1606 msgid "randomize" msgstr "losuj" #: dialogs.c:1607 msgid "pick fixed" msgstr "wybierz liczbę" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Nowa gra losowa" #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "" #: dialogs.c:1677 msgid "Message (above board):" msgstr "" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "" #: dialogs.c:1695 #, fuzzy msgid "Edit comments:" msgstr "Edytuj komentarz" #: dialogs.c:1701 #, fuzzy msgid "Move history / Engine Output:" msgstr "Komunikaty silnika" #: dialogs.c:1707 #, fuzzy msgid "Game list:" msgstr "Lista gier" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "" #: dialogs.c:1768 msgid "Fonts" msgstr "" #: dialogs.c:1791 msgid "classical" msgstr "klasyczny" #: dialogs.c:1792 msgid "incremental" msgstr "przyrostowy" #: dialogs.c:1793 msgid "fixed max" msgstr "stały maksymalny czas" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "" #: dialogs.c:1795 msgid "Moves per session:" msgstr "Liczba ruchów na sesję:" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "Czas początkowy (min):" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "Przyrost lub maksymalny czas (sekund/ruch):" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "Dzielniki czasu:" #: dialogs.c:1799 msgid "Engine #1" msgstr "Silnik #1" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "Silnik #2 / człowiek" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "Nieużywane" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "Błąd zapisu do silnika szachowego" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "Anuluj" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "Król" #: dialogs.c:1972 msgid "Captain" msgstr "Kapitan" #: dialogs.c:1973 msgid "Lieutenant" msgstr "Porucznik" #: dialogs.c:1974 msgid "General" msgstr "Generał" #: dialogs.c:1975 msgid "Warlord" msgstr "Gubernator" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Skoczek" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Goniec" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Wieża" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "Arcybiskup" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "Kanclerz" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Hetman" #: dialogs.c:1988 msgid "Lion" msgstr "" #: dialogs.c:1992 msgid "Defer" msgstr "Odłóż" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Promuj" #: dialogs.c:2050 msgid "Chats:" msgstr "" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 #, fuzzy msgid "New Chat" msgstr "Nowa odmiana" #: dialogs.c:2058 msgid "Chat partner:" msgstr "Partner do rozmowy:" #: dialogs.c:2059 msgid "End Chat" msgstr "" #: dialogs.c:2060 msgid "Hide" msgstr "" #: dialogs.c:2287 #, fuzzy msgid "ICS Interaction" msgstr "Opcje ICS" #: dialogs.c:2372 msgid "factory" msgstr "domyślne" #: dialogs.c:2373 msgid "up" msgstr "do góry" #: dialogs.c:2374 msgid "down" msgstr "na dół" #: dialogs.c:2393 msgid "No tag selected" msgstr "Nie zaznaczono żadnego znacznika" #: dialogs.c:2424 msgid "Game-list options" msgstr "Opcje listy gier" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Błąd" #: dialogs.c:2545 msgid "Fatal Error" msgstr "Błąd krytyczny" #: dialogs.c:2545 msgid "Exiting" msgstr "Wychodzenie" #: dialogs.c:2556 msgid "Information" msgstr "Informacje" #: dialogs.c:2563 msgid "Note" msgstr "Uwaga" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Białe" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Pionek" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "Słoń" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "Armata" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "Zdegraduj" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Puste pole" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Wyczyść szachownicę" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Czarne" #: dialogs.c:2827 #, fuzzy msgid "_File" msgstr "Plik" #: dialogs.c:2828 #, fuzzy msgid "_Edit" msgstr "Edytuj" #: dialogs.c:2829 #, fuzzy msgid "_View" msgstr "Widok" #: dialogs.c:2830 #, fuzzy msgid "_Mode" msgstr "Tryb" #: dialogs.c:2831 #, fuzzy msgid "_Action" msgstr "Działanie" #: dialogs.c:2832 #, fuzzy msgid "E_ngine" msgstr "Silnik" #: dialogs.c:2833 #, fuzzy msgid "_Options" msgstr "Opcje" #: dialogs.c:2834 #, fuzzy msgid "_Help" msgstr "Pomoc" #: dialogs.c:2844 msgid "<<" msgstr "<<" #: dialogs.c:2845 msgid "<" msgstr "<" #: dialogs.c:2847 msgid ">" msgstr ">" #: dialogs.c:2848 msgid ">>" msgstr ">>" #: dialogs.c:3136 msgid "Directories:" msgstr "Katalogi:" #: dialogs.c:3137 msgid "Files:" msgstr "Pliki:" #: dialogs.c:3138 msgid "by name" msgstr "wg nazwy" #: dialogs.c:3139 msgid "by type" msgstr "wg typu" #: dialogs.c:3142 msgid "Filename:" msgstr "Nazwa pliku:" #: dialogs.c:3143 msgid "New directory" msgstr "Nowy katalog" #: dialogs.c:3144 msgid "File type:" msgstr "Typ pliku:" #: dialogs.c:3219 msgid "Contents of" msgstr "Zawartość" #: dialogs.c:3245 msgid " next page" msgstr " następna strona" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "NAJPIERW NALEŻY TU WPISAĆ NAZWĘ KATALOGU" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "PROSZĘ SPRÓBOWAĆ INNĄ NAZWĘ" #: draw.c:404 #, fuzzy msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" "Nie zainstalowano domyślnych bierek\n" "Należy określić własny katalog bierek (-pieceImageDirectory)" #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "Komunikaty silnika" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "%s (%d odwracalny półruch)" msgstr[1] "%s (%d odwracalne półruchy)" msgstr[2] "%s (%d odwracalnych półruchów)" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "NPS" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "Czytanie pliku gry (%d)" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: nie można wejść do CHESSDIR: " #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "Nie udało się otworzyć pliku \"%s\"\n" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Należy skompilować ponownie z większą wartością dla BOARD_RANKS lub " "BOARD_FILES, aby obsługiwać ten rozmiar" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: błędna składnia boardSize %s\n" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: nieznana nazwa boardSize %s\n" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" "%s: za mało dostępnych kolorów; próba użycia trybu monochromatycznego\n" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Nie można utworzyć zestawu czcionek dla %s.\n" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: żadna czcionka nie pasuje do wzoru %s\n" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "Nie można otworzyć pliku temp" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "Nie udało się otworzyć pliku" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 #, fuzzy msgid "Browse" msgstr "przeglądaj" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "OK" #: menus.c:136 msgid "Load game file name?" msgstr "Wczytać nazwę pliku gry?" #: menus.c:183 msgid "Load position file name?" msgstr "Wczytać nazwę pliku pozycji?" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "Zapisać nazwę pliku gry?" #: menus.c:198 msgid "Save position file name?" msgstr "Zapisać nazwę pliku pozycji?" #: menus.c:355 msgid " (with Zippy code)" msgstr " (z kodem Zippy)" #: menus.c:360 #, fuzzy, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2013 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s jest darmowym oprogramowaniem, które NIE posiada gwarancji. Więcej " "informacji można znaleźć w pliku COPYING.\n" "Interfejs GTK tej wersji programu jest eksperymentalny i niestabilny\n" "\n" "Zapraszamy na stronę programu XBoard: http://www.gnu.org/software/xboard/\n" "Najnowsze funkcje można poznać na: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Błędy prosimy zgłaszać na adres: \n" "\n" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "O programie XBoard" #: menus.c:390 #, fuzzy msgid "Registered Engines" msgstr "Zastąp silnik" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 msgid "New Game" msgstr "Nowa gra" #: menus.c:613 #, fuzzy msgid "New Shuffle Game..." msgstr "Nowa gra losowa..." #: menus.c:614 #, fuzzy msgid "New Variant..." msgstr "Nowa odmiana..." #: menus.c:616 msgid "Load Game" msgstr "Wczytaj grę" #: menus.c:617 msgid "Load Position" msgstr "Wczytaj pozycję" #: menus.c:618 msgid "Next Position" msgstr "Następna pozycja" #: menus.c:619 msgid "Prev Position" msgstr "Poprzednia pozycja" #: menus.c:621 msgid "Save Game" msgstr "Zapisz grę" #: menus.c:622 msgid "Save Position" msgstr "Zapisz pozycję" #: menus.c:623 #, fuzzy msgid "Save Selected Games" msgstr "Zapisz grę" #: menus.c:624 msgid "Save Games as Book" msgstr "Zapisz gry w postaci książki" #: menus.c:626 msgid "Mail Move" msgstr "Ruch mailowy" #: menus.c:627 msgid "Reload CMail Message" msgstr "Wczytaj wiadomość CMail ponownie" #: menus.c:629 msgid "Quit " msgstr "Wyjście " #: menus.c:634 msgid "Copy Game" msgstr "Skopiuj grę" #: menus.c:635 msgid "Copy Position" msgstr "Skopiuj pozycję" #: menus.c:636 msgid "Copy Game List" msgstr "Skopiuj listę gier" #: menus.c:638 msgid "Paste Game" msgstr "Wklej grę" #: menus.c:639 msgid "Paste Position" msgstr "Wklej pozycję" #: menus.c:641 menus.c:686 msgid "Edit Game" msgstr "Edytuj grę" #: menus.c:642 menus.c:687 msgid "Edit Position" msgstr "Edytuj pozycję" #: menus.c:643 msgid "Edit Tags" msgstr "Edytuj znaczniki" #: menus.c:644 msgid "Edit Comment" msgstr "Edytuj komentarz" #: menus.c:645 msgid "Edit Book" msgstr "Edytuj książkę" #: menus.c:647 msgid "Revert" msgstr "Cofnij" #: menus.c:648 msgid "Annotate" msgstr "Dodaj jako komentarz" #: menus.c:649 msgid "Truncate Game" msgstr "Porzuć grę" #: menus.c:651 msgid "Backward" msgstr "Do tyłu" #: menus.c:652 msgid "Forward" msgstr "Do przodu" #: menus.c:653 msgid "Back to Start" msgstr "Na początek" #: menus.c:654 msgid "Forward to End" msgstr "Na koniec" #: menus.c:659 msgid "Flip View" msgstr "Odwróć widok" #: menus.c:662 msgid "Move History" msgstr "Historia ruchów" #: menus.c:663 msgid "Evaluation Graph" msgstr "Wykres wyników" #: menus.c:664 msgid "Game List" msgstr "Lista gier" #: menus.c:667 msgid "Comments" msgstr "Komentarze" #: menus.c:668 msgid "ICS Input Box" msgstr "Okno poleceń ICS" #: menus.c:669 msgid "ICS/Chat Console" msgstr "" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Edytuj komentarz" #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Wczytaj nowy 1. silnik..." #: menus.c:674 msgid "Board..." msgstr "Szachownica..." #: menus.c:675 #, fuzzy msgid "Fonts..." msgstr "Dźwięki..." #: menus.c:676 msgid "Game List Tags..." msgstr "Znaczniki listy gier..." #: menus.c:681 msgid "Machine White" msgstr "Silnik białe" #: menus.c:682 msgid "Machine Black" msgstr "Silnik czarne" #: menus.c:683 msgid "Two Machines" msgstr "Silnik vs. silnik" #: menus.c:684 msgid "Analysis Mode" msgstr "Tryb analizy" #: menus.c:685 msgid "Analyze Game" msgstr "Analizuj grę" #: menus.c:688 msgid "Training" msgstr "Trening" #: menus.c:689 msgid "ICS Client" msgstr "Klient ICS" #: menus.c:691 msgid "Machine Match" msgstr "Mecz silników" #: menus.c:692 msgid "Pause" msgstr "Pauza" #: menus.c:697 msgid "Accept" msgstr "Akceptuj" #: menus.c:698 msgid "Decline" msgstr "Odrzuć" #: menus.c:699 msgid "Rematch" msgstr "Ponowny mecz" #: menus.c:701 msgid "Call Flag" msgstr "Reklamuj przekroczenie czasu" #: menus.c:702 msgid "Draw" msgstr "Remis" #: menus.c:703 msgid "Adjourn" msgstr "Przerwa" #: menus.c:704 msgid "Abort" msgstr "Zaniechanie gry" #: menus.c:705 msgid "Resign" msgstr "Poddaj partię" #: menus.c:707 msgid "Stop Observing" msgstr "Przerwij obserwację" #: menus.c:708 msgid "Stop Examining" msgstr "Przerwij badanie" #: menus.c:709 msgid "Upload to Examine" msgstr "Wyślij do zbadania" #: menus.c:711 msgid "Adjudicate to White" msgstr "Rozstrzygnij na korzyść białych" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Rozstrzygnij na korzyść czarnych" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Ogłoś remis" #: menus.c:718 #, fuzzy msgid "Edit Engine List..." msgstr "Wczytaj nowy 1. silnik..." #: menus.c:720 #, fuzzy msgid "Load New 1st Engine..." msgstr "Wczytaj nowy 1. silnik..." #: menus.c:721 #, fuzzy msgid "Load New 2nd Engine..." msgstr "Wczytaj nowy 2. silnik..." #: menus.c:723 #, fuzzy msgid "Engine #1 Settings..." msgstr "Ustawienia silnika #1..." #: menus.c:724 #, fuzzy msgid "Engine #2 Settings..." msgstr "Ustawienia silnika #2..." #: menus.c:725 #, fuzzy msgid "Common Settings..." msgstr "Wspólne ustawienia silników" #: menus.c:727 msgid "Hint" msgstr "Wskazówka" #: menus.c:728 msgid "Book" msgstr "Książka" #: menus.c:730 msgid "Move Now" msgstr "Wykonaj ruch" #: menus.c:731 msgid "Retract Move" msgstr "Cofnij ruch" #: menus.c:736 #, fuzzy msgid "Mute all Sounds" msgstr "Dźwięk ruchu" #: menus.c:739 #, fuzzy msgid "General..." msgstr "Ogólne..." #: menus.c:741 #, fuzzy msgid "Time Control..." msgstr "Kontrola czasu..." #: menus.c:742 #, fuzzy msgid "Adjudications..." msgstr "Rozstrzyganie..." #: menus.c:743 msgid "ICS..." msgstr "" #: menus.c:744 msgid "Tournament..." msgstr "" #: menus.c:745 #, fuzzy msgid "Load Game..." msgstr "Wczytywanie gry..." #: menus.c:746 #, fuzzy msgid "Save Game..." msgstr "Zapisywanie gry..." #: menus.c:747 #, fuzzy msgid "Game List..." msgstr "Lista gier..." #: menus.c:748 #, fuzzy msgid "Sounds..." msgstr "Dźwięki..." #: menus.c:751 msgid "Always Queen" msgstr "Zawsze hetman" #: menus.c:757 msgid "Flash Moves" msgstr "Miganie po ruchu" #: menus.c:759 msgid "Highlight Dragging" msgstr "Podświetlenie podczas przeciągania" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Podświetlenie kursorem" #: menus.c:763 msgid "Move Sound" msgstr "Dźwięk ruchu" #: menus.c:765 msgid "Periodic Updates" msgstr "Częste aktualizacje" #: menus.c:767 msgid "Popup Exit Message" msgstr "Pytaj przed wyjściem" #: menus.c:769 msgid "Show Coords" msgstr "Wyświetlanie współrzędnych" #: menus.c:770 msgid "Hide Thinking" msgstr "Ukrywanie myślenia" #: menus.c:774 msgid "Save Settings Now" msgstr "Zapisz ustawienia" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Zapisz ustawienia przy wyjściu" #: menus.c:780 msgid "Info XBoard" msgstr "O programie" #: menus.c:781 msgid "Man XBoard" msgstr "Dokumentacja XBoard" #: menus.c:783 msgid "XBoard Home Page" msgstr "Strona domowa" #: menus.c:784 msgid "On-line User Guide" msgstr "Przewodnik online" #: menus.c:785 msgid "Development News" msgstr "Aktualności o postępach" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "Raporty o błędach (e-mail)" #: menus.c:825 msgid "File" msgstr "Plik" #: menus.c:826 msgid "Edit" msgstr "Edytuj" #: menus.c:827 msgid "View" msgstr "Widok" #: menus.c:828 msgid "Mode" msgstr "Tryb" #: menus.c:829 msgid "Action" msgstr "Działanie" #: menus.c:830 msgid "Engine" msgstr "Silnik" #: menus.c:831 msgid "Options" msgstr "Opcje" #: menus.c:832 msgid "Help" msgstr "Pomoc" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "nazwa silnika" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "ruch" #: nengineoutput.c:156 msgid "Engine output" msgstr "Komunikaty silnika" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" "Niezgodność STRIDE w nengineoutput.c\n" "Należy zmienić i skompilować ponownie!" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "Wykres wyników" #: nevalgraph.c:69 #, fuzzy msgid "Blunder graph" msgstr "Wykres wyników" #: nevalgraph.c:107 msgid "Blunder" msgstr "" #: nevalgraph.c:107 msgid "Eval" msgstr "Wyniki" #: ngamelist.c:87 msgid "find position" msgstr "znajdź pozycję" #: ngamelist.c:88 msgid "narrow" msgstr "zawęź" #: ngamelist.c:89 msgid "thresholds" msgstr "progi" #: ngamelist.c:90 msgid "tags" msgstr "znaczniki" #: ngamelist.c:91 msgid "next" msgstr "następny" #: ngamelist.c:92 msgid "close" msgstr "zamknij" #: ngamelist.c:116 msgid "No game selected" msgstr "Nie zaznaczono żadnej gry" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "Dalej nie można" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "Przeszukiwanie gier (%d)" #: ngamelist.c:211 msgid "previous page" msgstr "poprzednia strona" #: ngamelist.c:214 msgid "next page" msgstr "następna strona" #: ngamelist.c:217 msgid "no games matched your request" msgstr "żadna gra nie spełnia podanych kryteriów" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "%s - %d/%d gier (%d-%d-%d)" #: ngamelist.c:284 msgid "There is no game list" msgstr "Nie ma listy gier" #: nhistory.c:109 msgid "Move list" msgstr "Lista ruchów" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "%s: nieznany kolor %s\n" #: usystem.c:231 #, fuzzy, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s: nie można przetworzyć koloru tła w \"%s\"\n" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "%s: nie można przetworzyć nazw kolorów: wyłączenie kolorów\n" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "BŁĄD: Nieznany użytkownik %s (w ścieżce %s)\n" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "Nie skonfigurowano obsługi portu w" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "polecenie wewnętrzne rcmd nie zostało zaimplementowane w Uniksie" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "biały piksel = 0x%lx, czarny piksel = 0x%lx\n" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "przeglądaj" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "Ctrl" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "Alt" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "Shift" #, fuzzy #~ msgid "Common Engine..." #~ msgstr "Wspólne ustawienia silników..." #~ msgid " (for concurrent playing of a single" #~ msgstr " (dla równoczesnego rozegrania pojedynczego" #~ msgid "Match Options" #~ msgstr "Opcje meczu" #~ msgid "Chat box" #~ msgstr "Okno rozmowy" #~ msgid "Open Chat Window" #~ msgstr "Otwórz okno rozmowy" #~ msgid "ICS ..." #~ msgstr "ICS..." #~ msgid "Match ..." #~ msgstr "Mecz..." #~ msgid "%s: Can't access XPM directory %s\n" #~ msgstr "%s: Brak dostępu do katalogu XPM %s\n" #~ msgid "Available `%s' sizes:\n" #~ msgstr "Dostępne rozmiary dla \"%s\":\n" #~ msgid "Error: No `%s' files!\n" #~ msgstr "Błąd: Brak plików \"%s\"!\n" #~ msgid "" #~ "Warning: No DIR structure found on this system --\n" #~ " Unable to autosize for XPM/XIM pieces.\n" #~ " Please report this error to %s.\n" #~ " Include system type & operating system in message.\n" #~ msgstr "" #~ "Ostrzeżenie: Nie znaleziono struktury katalogów w tym systemie --\n" #~ " Niemożliwa automatyczna zmiana rozmiaru bierek XPM/XIM.\n" #~ " Proszę zgłosić ten błąd do %s.\n" #~ " Do wiadomości należy dołączyć informacje o rodzaju systemu " #~ "operacyjnego.\n" #~ msgid "Error %d loading icon image\n" #~ msgstr "Błąd %d wczytywania obrazka\n" #~ msgid "cancel" #~ msgstr "anuluj" xboard-4.9.1/po/insert-header.sin0000644000175000001440000000124012421746651013611 00000000000000# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } xboard-4.9.1/po/vi.gmo0000644000175000001440000000726512747544040011502 00000000000000@Y     $) 0 ;GP _l q ~   #.3: LZktw) : FT Ygp_   ' B N R k        - 6 R Y n  %    &  0 M j &v   !    ! * 0 K 'Q 'y "  #>Q d ny # !25, *1$(/.783 ' 0?-&: 9"<+@%64=>); About XBoardAdjudicate DrawAdjudicate to BlackAdjudicate to WhiteAnnotateArchbishopAuto FlagAuto Flip ViewAuto-Raise BoardBishopBlackBlindfoldBoard...BookCannonChancellorClear boardCommentsCopy Game ListDefault BeepEditEdit CommentEdit TagsElephantEmpty squareGame List Tags...GeneralGeneral OptionsHelpHighlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintICS ClientKingKnightLoad Game OptionsMachine MatchNew Shuffle GameNo SoundOKOne-Click MovingPawnPeriodic UpdatesPlayPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPromoteQueenRookSave Game OptionsSave Settings NowSave Settings on ExitShow CoordinatesShow CoordsSound OptionsTagsTest LegalityTrainingUpload to ExamineWhiteProject-Id-Version: GNU xboard master-20110507 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: vi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thông Tin Về XBoardPhân Xử HòaPhân Xử Đen ThắngPhân Xử Trắng ThắngChú GiảiSĩTự Động Đặt CờTự Động Xoay Bàn CờTự Động Hiện Bàn CờTượngĐenMù QuángBàn Cờ...Cẩm Nang Khai Cuộc...PháoXeXóa Bàn CờBình ChúCopy Danh Sách Các Ván Cờ Vào ClipboardTiếng tút ngầm địnhSoạnSoạn Bình Chú...Soạn Các Thẻ...TượngÔ TrốngCác Thẻ của Danh Sách Ván CờChung...Các Lựa Chọn ChungHướng DẫnĐánh Dấu Khi Đang Kéo Quân CờĐánh Dấu Nước CuốiĐánh Dấu Với Mũi TênĐánh Dấu Với Mũi TênGợi Ý...Kết Nối Chơi Với Máy Chủ ICSVuaMãCác Lựa Chọn Tải Ván CờTrận Đấu Với MáyTráo Bên...Không âm thanhĐượcĐi Quân Với Chỉ Một BấmTốtCập Nhật Theo Chu KỳChơiBật Cửa Sổ Thoát Chương trìnhBật Cửa Sổ Thoát Chương trìnhBật Cửa Sổ Lỗi Nước ĐiPhong CấpHoàng HậuXeCác Lựa Chọn Lưu Ván CờLưu Các Tham Số NgayLưu Các Tham Số Khi Kết ThúcHiện Tọa ĐộHiện Tọa ĐộÂm thanhCác ThẻKiểm Tra Hợp LệĐang Dậy MáyTải Để Trắngxboard-4.9.1/po/zh_TW.po0000644000175000001440000016374012747543737011770 00000000000000# XBoard -- a graphical chessboard for X # Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts. # Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc. # This file is distributed under the same license as the XBoard package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: GNU xboard master-20110507\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "通訊協定版本 %d 不被支持" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "非法的\"timeControl\"(時間控制)選項 %s" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "非法的\"searchTime\"(搜尋時間)選項 %s" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "變體 %s 只在ICS模式下支持" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "未知的變體名 %s" #: backend.c:1457 msgid "Starting chess program" msgstr "啟動國際象棋程式" #: backend.c:1480 msgid "Bad game file" msgstr "棋局檔案錯誤" #: backend.c:1487 msgid "Bad position file" msgstr "盤面檔案錯誤" #: backend.c:1501 msgid "Pick new game" msgstr "" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "沒有象棋程式時無法進行比賽" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "無法打開通訊連接埠 %s" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "無法連接主機 %s 連接埠 %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "未知的\"initialMode\"(初始模式)選項 %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "\"AnalyzeFile\"(分析檔案)模式必須指定一個棋局檔案" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "\"Analysis\"(分析)模式必須啟動國際象棋引擎" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "\"Analysis\"(分析)模式無法在ICS模式下工作" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "\"MachineWhite\"(電腦執紅)模式必須啟動國際象棋引擎" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "\"MachineWhite\"(電腦執紅)模式無法在ICS模式下運行" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "\"MachineBlack\"(電腦執黑)模式必須啟動國際象棋引擎" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "\"MachineBlack\"(電腦執黑)模式無法在ICS模式下運行" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "\"TwoMachines\"(分析)模式必須啟動國際象棋引擎" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "\"TwoMachines\"(電腦對弈)模式無法在ICS模式下運行" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "\"Training\"(訓練)模式必須指定一個棋局檔案" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "發送訊息給ICS時出錯" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "讀取鍵盤時出錯" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "讀取鍵盤時遇到檔案尾" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "發送訊息給顯示器時出錯" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "讀取著法時出錯,出現兩個開頭" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "讀取著法時出錯,巢狀錯誤" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "連接被ICS關閉" #: backend.c:4306 msgid "Error reading from ICS" msgstr "讀取ICS訊息時出錯" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "棋局太長,需要增加\"MAX_MOVES\"並重新編譯" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "讀取著法時出錯,超出棋盤" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "無法解析從ICS讀到的著法\"%s\"" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "say 內部錯誤,非法的\"moveType\"(著法類型) %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" #: backend.c:6858 msgid "You are playing Black" msgstr "你在執黑" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "你在執紅" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "輪到紅方走棋" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "輪到黑方走棋" #: backend.c:6920 msgid "Displayed position is not current" msgstr "顯示的盤面不是當前盤面" #: backend.c:7123 msgid "rights granted" msgstr "" #: backend.c:7123 msgid "rights revoked" msgstr "" #: backend.c:7175 msgid "Illegal move" msgstr "著法錯誤" #: backend.c:7255 msgid "End of game" msgstr "棋局結束" #: backend.c:7258 msgid "Incorrect move" msgstr "著法錯誤" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "" #: backend.c:7780 msgid "only marked squares are legal" msgstr "" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "" #: backend.c:8632 msgid "could not load EGBB library" msgstr "" #: backend.c:8635 msgid "wrong EGBB version" msgstr "" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "從%s機器讀到不合法著法\"%s\"" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s 不支持分析功能" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "不合法著法\"%s\" (%s國際象棋程式拒絕接受該著法)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "無法啟動%s國際象棋程式 %s(在主機 %s 上),%s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "提示 %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "電腦同意和棋" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "ICS輸出不明確的著法\"%s\"" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "ICS輸出不明確的著法\"%s\"" #: backend.c:10132 msgid "Gap in move list" msgstr "著法斷開" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "變體 %s 不被 %s 所支持" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr "" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "無法啟動'%s'" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "等待第一個國際象棋程式" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "等待第二個國際象棋程式" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" #: backend.c:11200 msgid "Not enough participants" msgstr "" #: backend.c:11403 msgid "Bad tournament file" msgstr "" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "" #: backend.c:11428 msgid "No pairing engine specified" msgstr "" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "" #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "" #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "比賽 %s vs. %s: 最終比分 %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "不合法著法 %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "不明確的著法 %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "無法打開\"%s\"" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "無法建立棋局列表" #: backend.c:12574 msgid "No more games in this message" msgstr "這條訊息不包含更多的棋局" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "尚未有棋局載入" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "無法再後退了" #: backend.c:13065 msgid "Game number out of range" msgstr "棋局數量超出範圍" #: backend.c:13076 msgid "Can't seek on game file" msgstr "無法搜尋棋局檔案" #: backend.c:13134 msgid "Game not found in file" msgstr "檔案中沒有找到棋局" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "檔案中的FEN盤面錯誤" #: backend.c:13423 msgid "No moves in game" msgstr "棋局中沒有著法" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "尚未有盤面載入" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "無法搜尋盤面檔案" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "檔案中沒有找到盤面" #: backend.c:13645 msgid "Black to play" msgstr "輪到黑方走棋" #: backend.c:13648 msgid "White to play" msgstr "輪到紅方走棋" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "" #: backend.c:13737 msgid "Saving game" msgstr "" #: backend.c:13738 msgid "Bad Seek" msgstr "" #: backend.c:14111 msgid "Saving position" msgstr "" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" #: backend.c:14294 msgid "You have not made a move yet" msgstr "你尚未走棋" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" #: backend.c:14320 msgid "No unfinished games" msgstr "不存在未完成棋局" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "呼叫cmail失敗" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "等待對手回應\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "本棋局仍需走棋\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "兩棋局皆仍需走棋\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "所有 %d 棋局皆仍需走棋\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "棋局 %s 仍需走棋\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "不存在未完成棋局\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "準備送信就緒\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "棋局 %s 仍需走棋\n" #: backend.c:14656 msgid "Edit comment" msgstr "編輯註解" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "編輯註解 %d.%s%s" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "" #: backend.c:14824 msgid "It is not White's turn" msgstr "沒有輪到紅方走棋" #: backend.c:14907 msgid "It is not Black's turn" msgstr "沒有輪到黑方走棋" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "" #: backend.c:15045 backend.c:16238 #, fuzzy msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "等待對手走棋" #: backend.c:15188 msgid "Training mode off" msgstr "訓練模式已關閉" #: backend.c:15196 msgid "Training mode on" msgstr "訓練模式已打開" #: backend.c:15199 msgid "Already at end of game" msgstr "棋局已經結束" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "注意:你正在進行棋局" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "注意:你正在觀棋棋局" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "注意:你正在研究棋局" #: backend.c:15365 msgid "Click clock to clear board" msgstr "" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "" #: backend.c:15711 msgid "That square is occupied" msgstr "格子已有棋子" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "該著法沒有待定的提議" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "對手沒有超時" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "必須走完棋才能提和" #: backend.c:16220 msgid "You are not examining a game" msgstr "沒有分析棋局" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "暫停時不能復原棋局" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "輪到你走棋" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 #, fuzzy msgid "Wait until your turn." msgstr "等待對手走棋" #: backend.c:16348 msgid "No hint available" msgstr "沒有可用的提示" #: backend.c:16363 backend.c:16394 ngamelist.c:365 #, fuzzy msgid "Game list not loaded or empty" msgstr "尚未有棋局載入" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "" #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "發送訊息到%s國際象棋程式時出錯" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "錯誤:%s國際象棋程式(%s)異常終止" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "從%s國際象棋程式(%s)接收訊息時出錯" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "" #: backend.c:17521 msgid "Displayed move is not current" msgstr "顯示的著法不是當前著法" #: backend.c:17530 msgid "Could not parse move" msgstr "無法解析著法" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "雙方都超時了" #: backend.c:17657 msgid "White's flag fell" msgstr "紅方超時" #: backend.c:17679 msgid "Black's flag fell" msgstr "黑方超時" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "剪貼簿的FEN盤面錯誤" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "" #: book.c:722 msgid "Book Fault" msgstr "" #: book.c:877 msgid "Hash keys are different" msgstr "" #: book.c:1054 #, fuzzy msgid "Could not create book" msgstr "無法解析著法" #: dialogs.c:287 #, fuzzy msgid "Tournament file: " msgstr "封盤(J) F7" #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "" #: dialogs.c:289 msgid "Sync after round" msgstr "" #: dialogs.c:290 msgid "Sync after cycle" msgstr "" #: dialogs.c:291 msgid "Tourney participants:" msgstr "" #: dialogs.c:292 msgid "Select Engine:" msgstr "" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "" #: dialogs.c:312 #, fuzzy msgid "Common Engine" msgstr "通用引擎設定(E)... Alt+Shift+U" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "一般選項" #: dialogs.c:314 msgid "Continue Later" msgstr "" #: dialogs.c:315 msgid "Replace Engine" msgstr "" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "" #: dialogs.c:317 msgid "Clone Tourney" msgstr "" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "" #: dialogs.c:389 #, fuzzy msgid "Tournament Options" msgstr "聲音" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "動畫拖曳(D)" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "動畫走棋(A)" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "自動超時判負(F) Ctrl+Shift+F" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "自動翻轉棋盤(V)" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "盲棋(B)" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "與人對弈時隱藏思考細節" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "標記上一著法(M)" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "用箭頭突出移動" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "單擊移動(M)" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "定期更新(分析模式)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "同步思考(N)" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "離開時提示(P)" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "提示錯誤著法(E)" #: dialogs.c:429 #, fuzzy msgid "Scores in Move List" msgstr "取得著法列表(G)" #: dialogs.c:430 msgid "Show Coordinates" msgstr "顯示坐標(C)" #: dialogs.c:431 msgid "Show Target Squares" msgstr "" #: dialogs.c:432 msgid "Sticky Windows" msgstr "" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "檢查著法合理性(L) Cl+Sh+L" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "" #: dialogs.c:438 #, fuzzy msgid "Zoom factor in Evaluation Graph:" msgstr "審局圖" #: dialogs.c:458 msgid "Normal" msgstr "" #: dialogs.c:459 msgid "Makruk" msgstr "" #: dialogs.c:460 msgid "FRC" msgstr "" #: dialogs.c:461 msgid "Shatranj" msgstr "" #: dialogs.c:462 msgid "Wild castle" msgstr "" #: dialogs.c:463 #, fuzzy msgid "Knightmate" msgstr "馬" #: dialogs.c:464 msgid "No castle" msgstr "" #: dialogs.c:465 msgid "Cylinder *" msgstr "" #: dialogs.c:466 msgid "3-checks" msgstr "" #: dialogs.c:467 msgid "berolina *" msgstr "" #: dialogs.c:468 msgid "atomic" msgstr "" #: dialogs.c:469 msgid "two kings" msgstr "" #: dialogs.c:470 msgid " " msgstr "" #: dialogs.c:471 msgid "Spartan" msgstr "" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "" #: dialogs.c:475 msgid "Holdings Size:" msgstr "" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" #: dialogs.c:479 msgid "ASEAN" msgstr "" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "" #: dialogs.c:481 msgid "Seirawan" msgstr "" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "" #: dialogs.c:483 msgid "Superchess" msgstr "" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "" #: dialogs.c:485 msgid "Crazyhouse" msgstr "" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "" #: dialogs.c:487 msgid "Bughouse" msgstr "" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "" #: dialogs.c:489 msgid "Suicide" msgstr "" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "" #: dialogs.c:491 msgid "give-away" msgstr "" #: dialogs.c:492 msgid "grand (10x10)" msgstr "" #: dialogs.c:493 msgid "losers" msgstr "" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "" #: dialogs.c:495 msgid "fairy" msgstr "" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:497 msgid "mighty lion" msgstr "" #: dialogs.c:498 msgid "courier (12x8)" msgstr "" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "警告: 第二個引擎(%s) 不支持此!" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "" #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" #: dialogs.c:596 msgid "New Variant" msgstr "變種" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "最大CPU數" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "雜湊表大小(MB)" #: dialogs.c:631 #, fuzzy msgid "EGTB Path:" msgstr "EGTB 路徑" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "EGTB 大小(MB)" #: dialogs.c:633 msgid "Use GUI Book" msgstr "" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "庫著法深度" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "庫變例" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "引擎1有自用庫" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "通用引擎設定" #: dialogs.c:655 msgid "Detect all Mates" msgstr "檢測將殺(M)" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "驗證引擎聲明(V)" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "子力不足時判和(I)" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "簡易和棋判決(T)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "幾著後判和" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "輸/贏判決門檻" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "引擎 #1 是絕對分數" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "引擎 #2 是絕對分數" #: dialogs.c:671 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "裁決紅贏 (W)" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "自動\"kibitz\"(A)" #: dialogs.c:685 msgid "Auto-Comment" msgstr "自動註解(A)" #: dialogs.c:686 msgid "Auto-Observe" msgstr "自動觀棋(O)" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "自動改變棋盤大小(R)" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "背景觀察(v)" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "雙棋盤(D)" #: dialogs.c:691 msgid "Get Move List" msgstr "取得著法列表(G)" #: dialogs.c:692 msgid "Quiet Play" msgstr "落子無聲(Q)" #: dialogs.c:693 msgid "Seek Graph" msgstr "可選對手圖表(k)" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "自動刷新圖表(R)" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "" #: dialogs.c:696 msgid "Quit after game" msgstr "" #: dialogs.c:697 msgid "Premove" msgstr "預先走棋(P)" #: dialogs.c:698 msgid "Premove for White" msgstr "" #: dialogs.c:699 msgid "First White Move:" msgstr "紅方先走(W)" #: dialogs.c:700 msgid "Premove for Black" msgstr "" #: dialogs.c:701 msgid "First Black Move:" msgstr "黑方先走(B)" #: dialogs.c:703 msgid "Alarm" msgstr "提示" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "" #: dialogs.c:706 msgid "Colorize Messages" msgstr "" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "" #: dialogs.c:723 msgid "ICS Options" msgstr "ICS設定" #: dialogs.c:728 msgid "Exact position match" msgstr "" #: dialogs.c:728 msgid "Shown position is subset" msgstr "" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "" #: dialogs.c:729 msgid "Same material" msgstr "" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "" #: dialogs.c:753 #, fuzzy msgid "No games before year:" msgstr "尚未有棋局載入" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "" #: dialogs.c:756 msgid "Search mode:" msgstr "" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "" #: dialogs.c:767 msgid "Load Game Options" msgstr "載入棋局選項" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "" #: dialogs.c:780 msgid "Own Games Only" msgstr "" #: dialogs.c:781 msgid "Save Games on File:" msgstr "" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "" #: dialogs.c:794 msgid "Save Game Options" msgstr "儲存棋局選項" #: dialogs.c:803 msgid "No Sound" msgstr "無聲" #: dialogs.c:804 msgid "Default Beep" msgstr "預設聲音" #: dialogs.c:805 msgid "Above WAV File" msgstr "" #: dialogs.c:806 msgid "Car Horn" msgstr "" #: dialogs.c:807 msgid "Cymbal" msgstr "" #: dialogs.c:808 msgid "Ding" msgstr "" #: dialogs.c:809 msgid "Gong" msgstr "" #: dialogs.c:810 msgid "Laser" msgstr "" #: dialogs.c:811 msgid "Penalty" msgstr "" #: dialogs.c:812 msgid "Phone" msgstr "" #: dialogs.c:813 msgid "Pop" msgstr "" #: dialogs.c:814 msgid "Roar" msgstr "" #: dialogs.c:815 msgid "Slap" msgstr "" #: dialogs.c:816 msgid "Wood Thunk" msgstr "" #: dialogs.c:818 msgid "User File" msgstr "" #: dialogs.c:841 msgid "User WAV File:" msgstr "" #: dialogs.c:842 msgid "Sound Program:" msgstr "" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "" #: dialogs.c:844 msgid "Play" msgstr "播放" #: dialogs.c:845 msgid "Move:" msgstr "" #: dialogs.c:846 msgid "Win:" msgstr "" #: dialogs.c:847 msgid "Lose:" msgstr "" #: dialogs.c:848 msgid "Draw:" msgstr "" #: dialogs.c:849 msgid "Unfinished:" msgstr "" #: dialogs.c:850 msgid "Alarm:" msgstr "" #: dialogs.c:851 msgid "Challenge:" msgstr "" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "" #: dialogs.c:854 msgid "Shout:" msgstr "" #: dialogs.c:855 msgid "S-Shout:" msgstr "" #: dialogs.c:856 msgid "Channel:" msgstr "" #: dialogs.c:857 msgid "Channel 1:" msgstr "" #: dialogs.c:858 msgid "Tell:" msgstr "" #: dialogs.c:859 msgid "Kibitz:" msgstr "" #: dialogs.c:860 msgid "Request:" msgstr "" #: dialogs.c:861 msgid "Lion roar:" msgstr "" #: dialogs.c:862 msgid "Seek:" msgstr "" #: dialogs.c:880 msgid "Sound Options" msgstr "聲音" #: dialogs.c:896 msgid "Selectable themes:" msgstr "" #: dialogs.c:898 msgid "New name for current theme:" msgstr "" #: dialogs.c:901 msgid "White Piece Color:" msgstr "" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "黑子" #: dialogs.c:917 msgid "Light Square Color:" msgstr "白格" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "黑格" #: dialogs.c:929 msgid "Highlight Color:" msgstr "格子標記" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "預先走棋標記" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" #: dialogs.c:943 msgid "Mono Mode" msgstr "黑白" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "" #: dialogs.c:946 msgid "Use Board Textures" msgstr "" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "" #: dialogs.c:1033 msgid "Board Options" msgstr "棋盤選項" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "" #: dialogs.c:1134 msgid "clear" msgstr "" #: dialogs.c:1135 msgid "save changes" msgstr "" #: dialogs.c:1233 #, fuzzy msgid "add next move" msgstr "同步思考(N)" #: dialogs.c:1234 msgid "commit changes" msgstr "" #: dialogs.c:1257 #, fuzzy msgid "Edit book" msgstr "編輯(E)" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "編輯標籤(T)" #: dialogs.c:1405 msgid "ICS input box" msgstr "" #: dialogs.c:1437 msgid "Type a move" msgstr "" #: dialogs.c:1463 msgid "Engine has no options" msgstr "" #: dialogs.c:1465 msgid "Engine Settings" msgstr "" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "" #: dialogs.c:1509 msgid "or specify one below:" msgstr "" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "" #: dialogs.c:1513 msgid "Engine Command:" msgstr "" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "" #: dialogs.c:1515 msgid "UCI" msgstr "" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "" #: dialogs.c:1574 msgid "Load first engine" msgstr "" #: dialogs.c:1580 msgid "Load second engine" msgstr "" #: dialogs.c:1603 msgid "shuffle" msgstr "" #: dialogs.c:1604 msgid "Fischer castling" msgstr "" #: dialogs.c:1605 msgid "Start-position number:" msgstr "啟動位置號碼(S)" #: dialogs.c:1606 #, fuzzy msgid "randomize" msgstr "隨機" #: dialogs.c:1607 msgid "pick fixed" msgstr "" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "洗牌遊戲(u)..." #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "" #: dialogs.c:1677 msgid "Message (above board):" msgstr "" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "" #: dialogs.c:1695 #, fuzzy msgid "Edit comments:" msgstr "編輯註解" #: dialogs.c:1701 #, fuzzy msgid "Move history / Engine Output:" msgstr "引擎輸出" #: dialogs.c:1707 #, fuzzy msgid "Game list:" msgstr "遊戲列表..." #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "" #: dialogs.c:1768 msgid "Fonts" msgstr "" #: dialogs.c:1791 msgid "classical" msgstr "" #: dialogs.c:1792 msgid "incremental" msgstr "" #: dialogs.c:1793 msgid "fixed max" msgstr "" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "" #: dialogs.c:1795 msgid "Moves per session:" msgstr "" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "" #: dialogs.c:1798 #, fuzzy msgid "Time-Odds factors:" msgstr "時間倍數" #: dialogs.c:1799 #, fuzzy msgid "Engine #1" msgstr "引擎輸出" #: dialogs.c:1800 #, fuzzy msgid "Engine #2 / Human" msgstr "引擎1有自用庫" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "發送訊息給國際象棋程式時出錯" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 #, fuzzy msgid "Cancel" msgstr "取消(C)" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "王" #: dialogs.c:1972 msgid "Captain" msgstr "" #: dialogs.c:1973 msgid "Lieutenant" msgstr "" #: dialogs.c:1974 msgid "General" msgstr "一般選項(G)..." #: dialogs.c:1975 msgid "Warlord" msgstr "" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "馬" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "象" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "車" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "國師" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "宰相" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "后" #: dialogs.c:1988 msgid "Lion" msgstr "" #: dialogs.c:1992 msgid "Defer" msgstr "" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "升變" #: dialogs.c:2050 msgid "Chats:" msgstr "" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 #, fuzzy msgid "New Chat" msgstr "變種" #: dialogs.c:2058 msgid "Chat partner:" msgstr "" #: dialogs.c:2059 msgid "End Chat" msgstr "" #: dialogs.c:2060 msgid "Hide" msgstr "" #: dialogs.c:2287 #, fuzzy msgid "ICS Interaction" msgstr "ICS設定" #: dialogs.c:2372 msgid "factory" msgstr "" #: dialogs.c:2373 msgid "up" msgstr "向上" #: dialogs.c:2374 msgid "down" msgstr "向下" #: dialogs.c:2393 msgid "No tag selected" msgstr "" #: dialogs.c:2424 #, fuzzy msgid "Game-list options" msgstr "載入棋局選項" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "錯誤" #: dialogs.c:2545 msgid "Fatal Error" msgstr "嚴重錯誤" #: dialogs.c:2545 msgid "Exiting" msgstr "離開" #: dialogs.c:2556 msgid "Information" msgstr "資訊" #: dialogs.c:2563 msgid "Note" msgstr "註解" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "紅方" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "兵" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "象" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "炮" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "降級" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "清空格子" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "清空棋盤" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "黑方" #: dialogs.c:2827 #, fuzzy msgid "_File" msgstr "檔案(F)" #: dialogs.c:2828 #, fuzzy msgid "_Edit" msgstr "編輯(E)" #: dialogs.c:2829 msgid "_View" msgstr "" #: dialogs.c:2830 #, fuzzy msgid "_Mode" msgstr "模式(M)" #: dialogs.c:2831 #, fuzzy msgid "_Action" msgstr "行為(A)" #: dialogs.c:2832 #, fuzzy msgid "E_ngine" msgstr "引擎輸出" #: dialogs.c:2833 #, fuzzy msgid "_Options" msgstr "選項(O)" #: dialogs.c:2834 #, fuzzy msgid "_Help" msgstr "說明(H)" #: dialogs.c:2844 msgid "<<" msgstr "" #: dialogs.c:2845 msgid "<" msgstr "" #: dialogs.c:2847 msgid ">" msgstr "" #: dialogs.c:2848 msgid ">>" msgstr "" #: dialogs.c:3136 msgid "Directories:" msgstr "" #: dialogs.c:3137 #, fuzzy msgid "Files:" msgstr "檔案(F)" #: dialogs.c:3138 msgid "by name" msgstr "" #: dialogs.c:3139 msgid "by type" msgstr "" #: dialogs.c:3142 #, fuzzy msgid "Filename:" msgstr "過濾器" #: dialogs.c:3143 msgid "New directory" msgstr "" #: dialogs.c:3144 #, fuzzy msgid "File type:" msgstr "過濾器" #: dialogs.c:3219 #, fuzzy msgid "Contents of" msgstr "編輯註解(C) *.*" #: dialogs.c:3245 msgid " next page" msgstr "" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" #: engineoutput.c:112 menus.c:661 #, fuzzy, c-format msgid "Engine Output" msgstr "引擎輸出" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "" msgstr[1] "" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "NPS" #: gamelist.c:379 #, fuzzy, c-format msgid "Reading game file (%d)" msgstr "棋局檔案錯誤" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "" #: gtk/xboard.c:2495 #, fuzzy msgid "Failed to open file" msgstr "呼叫cmail失敗" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "確定" #: menus.c:136 msgid "Load game file name?" msgstr "" #: menus.c:183 msgid "Load position file name?" msgstr "" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "" #: menus.c:198 msgid "Save position file name?" msgstr "" #: menus.c:355 msgid " (with Zippy code)" msgstr "" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "關於XBoard(A)" #: menus.c:390 #, fuzzy msgid "Registered Engines" msgstr "引擎 #1 是絕對分數" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 #, fuzzy msgid "New Game" msgstr "洗牌遊戲(u)..." #: menus.c:613 #, fuzzy msgid "New Shuffle Game..." msgstr "洗牌遊戲(u)..." #: menus.c:614 #, fuzzy msgid "New Variant..." msgstr "變種" #: menus.c:616 #, fuzzy msgid "Load Game" msgstr "載入棋局選項(L)... Alt+Shift+L" #: menus.c:617 #, fuzzy msgid "Load Position" msgstr "盤面檔案錯誤" #: menus.c:618 #, fuzzy msgid "Next Position" msgstr "盤面檔案錯誤" #: menus.c:619 #, fuzzy msgid "Prev Position" msgstr "升變" #: menus.c:621 #, fuzzy msgid "Save Game" msgstr "儲存棋局選項(S)... Alt+Shift+S" #: menus.c:622 #, fuzzy msgid "Save Position" msgstr "儲存局面(A)... Ctrl+Shift+S" #: menus.c:623 #, fuzzy msgid "Save Selected Games" msgstr "儲存棋局選項(S)... Alt+Shift+S" #: menus.c:624 #, fuzzy msgid "Save Games as Book" msgstr "儲存棋局選項(S)... Alt+Shift+S" #: menus.c:626 msgid "Mail Move" msgstr "" #: menus.c:627 msgid "Reload CMail Message" msgstr "" #: menus.c:629 msgid "Quit " msgstr "" #: menus.c:634 #, fuzzy msgid "Copy Game" msgstr "複製遊戲列表到剪貼簿" #: menus.c:635 #, fuzzy msgid "Copy Position" msgstr "複製局面到剪貼簿(Y) Ctrl+Shift+C" #: menus.c:636 msgid "Copy Game List" msgstr "複製遊戲列表到剪貼簿" #: menus.c:638 #, fuzzy msgid "Paste Game" msgstr "貼上棋局自剪貼簿(P) Ctrl+V" #: menus.c:639 #, fuzzy msgid "Paste Position" msgstr "從剪貼簿貼上局面(T) Ctrl+Shift+V" #: menus.c:641 menus.c:686 #, fuzzy msgid "Edit Game" msgstr "編輯註解" #: menus.c:642 menus.c:687 #, fuzzy msgid "Edit Position" msgstr "盤面檔案錯誤" #: menus.c:643 msgid "Edit Tags" msgstr "編輯標籤(T)" #: menus.c:644 msgid "Edit Comment" msgstr "編輯註解(C)..." #: menus.c:645 #, fuzzy msgid "Edit Book" msgstr "開局庫(B)..." #: menus.c:647 msgid "Revert" msgstr "" #: menus.c:648 msgid "Annotate" msgstr "註解(A)" #: menus.c:649 #, fuzzy msgid "Truncate Game" msgstr "截斷後面的著法(T)" #: menus.c:651 msgid "Backward" msgstr "" #: menus.c:652 msgid "Forward" msgstr "" #: menus.c:653 #, fuzzy msgid "Back to Start" msgstr "輪到黑方走棋" #: menus.c:654 #, fuzzy msgid "Forward to End" msgstr "最後局面(E) Alt+End" #: menus.c:659 #, fuzzy msgid "Flip View" msgstr "自動翻轉棋盤(V)" #: menus.c:662 #, fuzzy msgid "Move History" msgstr "取得著法列表(G)" #: menus.c:663 #, fuzzy msgid "Evaluation Graph" msgstr "審局圖" #: menus.c:664 #, fuzzy msgid "Game List" msgstr "遊戲列表..." #: menus.c:667 msgid "Comments" msgstr "編輯註解(C) *.*" #: menus.c:668 msgid "ICS Input Box" msgstr "" #: menus.c:669 msgid "ICS/Chat Console" msgstr "" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "編輯註解(C)..." #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "引擎 #1 設定" #: menus.c:674 msgid "Board..." msgstr "棋盤選項(B)..." #: menus.c:675 #, fuzzy msgid "Fonts..." msgstr "聲音選項(D)..." #: menus.c:676 msgid "Game List Tags..." msgstr "遊戲列表..." #: menus.c:681 #, fuzzy msgid "Machine White" msgstr "電腦執紅(W) Ctrl+W" #: menus.c:682 #, fuzzy msgid "Machine Black" msgstr "電腦比賽(M)" #: menus.c:683 #, fuzzy msgid "Two Machines" msgstr "電腦對弈(M) Ctrl+T" #: menus.c:684 #, fuzzy msgid "Analysis Mode" msgstr "分析模式(A) Ctrl+A" #: menus.c:685 #, fuzzy msgid "Analyze Game" msgstr "分析檔案(F) Ctrl+F" #: menus.c:688 msgid "Training" msgstr "訓練(N)" #: menus.c:689 msgid "ICS Client" msgstr "ICS客戶端" #: menus.c:691 msgid "Machine Match" msgstr "電腦比賽(M)" #: menus.c:692 msgid "Pause" msgstr "" #: menus.c:697 msgid "Accept" msgstr "" #: menus.c:698 msgid "Decline" msgstr "" #: menus.c:699 msgid "Rematch" msgstr "" #: menus.c:701 #, fuzzy msgid "Call Flag" msgstr "超時判負(F) F5" #: menus.c:702 msgid "Draw" msgstr "" #: menus.c:703 msgid "Adjourn" msgstr "" #: menus.c:704 msgid "Abort" msgstr "" #: menus.c:705 msgid "Resign" msgstr "" #: menus.c:707 #, fuzzy msgid "Stop Observing" msgstr "停止觀棋(O) F10" #: menus.c:708 #, fuzzy msgid "Stop Examining" msgstr "停止研究(X) F11" #: menus.c:709 msgid "Upload to Examine" msgstr "上傳檢查(U)" #: menus.c:711 msgid "Adjudicate to White" msgstr "裁決紅贏 (W)" #: menus.c:712 msgid "Adjudicate to Black" msgstr "裁決黑贏 (B)" #: menus.c:713 msgid "Adjudicate Draw" msgstr "提請仲裁(D)" #: menus.c:718 #, fuzzy msgid "Edit Engine List..." msgstr "引擎 #1 設定" #: menus.c:720 msgid "Load New 1st Engine..." msgstr "" #: menus.c:721 #, fuzzy msgid "Load New 2nd Engine..." msgstr "通用引擎設定(E)... Alt+Shift+U" #: menus.c:723 #, fuzzy msgid "Engine #1 Settings..." msgstr "引擎 #1 設定" #: menus.c:724 #, fuzzy msgid "Engine #2 Settings..." msgstr "引擎 #2 設定" #: menus.c:725 #, fuzzy msgid "Common Settings..." msgstr "通用引擎設定" #: menus.c:727 msgid "Hint" msgstr "提示(H)..." #: menus.c:728 msgid "Book" msgstr "開局庫(B)..." #: menus.c:730 msgid "Move Now" msgstr "" #: menus.c:731 #, fuzzy msgid "Retract Move" msgstr "悔棋(R) Ctrl+X" #: menus.c:736 msgid "Mute all Sounds" msgstr "" #: menus.c:739 #, fuzzy msgid "General..." msgstr "一般選項(G)..." #: menus.c:741 #, fuzzy msgid "Time Control..." msgstr "時間設定(T)... Alt+Shift+T" #: menus.c:742 #, fuzzy msgid "Adjudications..." msgstr "判決(j)... Alt+Shift+J" #: menus.c:743 msgid "ICS..." msgstr "" #: menus.c:744 msgid "Tournament..." msgstr "" #: menus.c:745 #, fuzzy msgid "Load Game..." msgstr "載入棋局選項(L)... Alt+Shift+L" #: menus.c:746 #, fuzzy msgid "Save Game..." msgstr "儲存棋局選項(S)... Alt+Shift+S" #: menus.c:747 #, fuzzy msgid "Game List..." msgstr "遊戲列表..." #: menus.c:748 #, fuzzy msgid "Sounds..." msgstr "聲音選項(D)..." #: menus.c:751 msgid "Always Queen" msgstr "" #: menus.c:757 msgid "Flash Moves" msgstr "" #: menus.c:759 msgid "Highlight Dragging" msgstr "拖曳醒目提示(H)" #: menus.c:762 msgid "Highlight With Arrow" msgstr "用箭頭突出移動" #: menus.c:763 msgid "Move Sound" msgstr "" #: menus.c:765 msgid "Periodic Updates" msgstr "定期更新(U)" #: menus.c:767 msgid "Popup Exit Message" msgstr "離開時提示(P)" #: menus.c:769 msgid "Show Coords" msgstr "顯示坐標(C)" #: menus.c:770 #, fuzzy msgid "Hide Thinking" msgstr "與人對弈時隱藏思考細節" #: menus.c:774 msgid "Save Settings Now" msgstr "立即儲存設定(N)" #: menus.c:775 msgid "Save Settings on Exit" msgstr "離開時儲存設定(X)" #: menus.c:780 msgid "Info XBoard" msgstr "" #: menus.c:781 #, fuzzy msgid "Man XBoard" msgstr "關於XBoard(A)" #: menus.c:783 msgid "XBoard Home Page" msgstr "" #: menus.c:784 msgid "On-line User Guide" msgstr "" #: menus.c:785 msgid "Development News" msgstr "" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "" #: menus.c:825 msgid "File" msgstr "檔案(F)" #: menus.c:826 msgid "Edit" msgstr "編輯(E)" #: menus.c:827 msgid "View" msgstr "" #: menus.c:828 msgid "Mode" msgstr "模式(M)" #: menus.c:829 msgid "Action" msgstr "行為(A)" #: menus.c:830 msgid "Engine" msgstr "" #: menus.c:831 msgid "Options" msgstr "選項(O)" #: menus.c:832 msgid "Help" msgstr "說明(H)" #: nengineoutput.c:79 nengineoutput.c:87 #, fuzzy msgid "engine name" msgstr "引擎輸出" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 #, fuzzy msgid "move" msgstr "著法" #: nengineoutput.c:156 msgid "Engine output" msgstr "引擎輸出" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "審局圖" #: nevalgraph.c:69 #, fuzzy msgid "Blunder graph" msgstr "審局圖" #: nevalgraph.c:107 msgid "Blunder" msgstr "" #: nevalgraph.c:107 msgid "Eval" msgstr "" #: ngamelist.c:87 #, fuzzy msgid "find position" msgstr "盤面檔案錯誤" #: ngamelist.c:88 msgid "narrow" msgstr "" #: ngamelist.c:89 msgid "thresholds" msgstr "" #: ngamelist.c:90 #, fuzzy msgid "tags" msgstr "編輯標籤(T)" #: ngamelist.c:91 msgid "next" msgstr "" #: ngamelist.c:92 msgid "close" msgstr "" #: ngamelist.c:116 msgid "No game selected" msgstr "沒有選中棋局" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "無法再前進了" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "" #: ngamelist.c:211 msgid "previous page" msgstr "" #: ngamelist.c:214 msgid "next page" msgstr "" #: ngamelist.c:217 msgid "no games matched your request" msgstr "" #: ngamelist.c:219 #, fuzzy, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "比賽 %s vs. %s: 最終比分 %d-%d-%d" #: ngamelist.c:284 msgid "There is no game list" msgstr "沒有棋局列表" #: nhistory.c:109 msgid "Move list" msgstr "" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "" #, fuzzy #~ msgid "Common Engine..." #~ msgstr "通用引擎設定(E)... Alt+Shift+U" #~ msgid "ICS ..." #~ msgstr "ICS選項..." #~ msgid "cancel" #~ msgstr "取消(C)" #~ msgid "New Game Ctrl+N" #~ msgstr "開新棋局(N) Ctrl+N" #~ msgid "New Variant ... Alt+Shift+V" #~ msgstr "新變種(V)... Alt+Shift+V" #~ msgid "Load Game Ctrl+O" #~ msgstr "載入棋局(L)... Ctrl+O" #~ msgid "Load Position Ctrl+Shift+O" #~ msgstr "載入局面(O)... Ctrl+Shift+O" #~ msgid "Save Game Ctrl+S" #~ msgstr "儲存棋局(S)... Ctrl+S" #~ msgid "Quit Ctr+Q" #~ msgstr "離開(Q)" #~ msgid "Copy Game Ctrl+C" #~ msgstr "複製棋局到剪貼簿(C) Ctrl+C" #~ msgid "Edit Game Ctrl+E" #~ msgstr "編輯棋局(E) Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "編輯局面(d) Ctrl+Shift+E" #~ msgid "Revert Home" #~ msgstr "恢復(V)" #~ msgid "Backward Alt+Left" #~ msgstr "下一著(B) Alt+Left" #~ msgid "Forward Alt+Right" #~ msgstr "上一著(F) Alt+Right" #~ msgid "Back to Start Alt+Home" #~ msgstr "起始局面(S) Alt+Home" #~ msgid "Flip View F2" #~ msgstr "翻轉棋盤(V) F2" #~ msgid "Engine Output Alt+Shift+O" #~ msgstr "顯示引擎輸出 Alt+Shift+O" #~ msgid "Move History Alt+Shift+H" #~ msgstr "顯示歷史著法 Alt+Shift+H" #~ msgid "Evaluation Graph Alt+Shift+E" #~ msgstr "顯示評價圖 Alt+Shift+E" #~ msgid "Game List Alt+Shift+G" #~ msgstr "顯示棋局列表(L) Alt+Shift+G" #~ msgid "Machine Black Ctrl+B" #~ msgstr "電腦執黑(B) Ctrl+B" #~ msgid "Edit Game Ctrl+E" #~ msgstr "編輯棋局(E) Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "編輯局面(d) Ctrl+Shift+E" #~ msgid "Pause Pause" #~ msgstr "暫停(P) Pause" #~ msgid "Accept F3" #~ msgstr "接受(A) F3" #~ msgid "Decline F4" #~ msgstr "拒絕(C) F4" #~ msgid "Rematch F12" #~ msgstr "重賽(M) F12" #~ msgid "Draw F6" #~ msgstr "提和(D) F6" #~ msgid "Adjourn F7" #~ msgstr "封盤(J) F7" #~ msgid "Abort F8" #~ msgstr "中止(B) F8" #~ msgid "Resign F9" #~ msgstr "認輸(R) F9" #~ msgid "Move Now Ctrl+M" #~ msgstr "立即走棋(M) Ctrl+M" #~ msgid "Always Queen Ctrl+Shift+Q" #~ msgstr "總是升變為皇后(Q) Ctrl+Shift+Q" #~ msgid "Animate Moving Ctrl+Shift+A" #~ msgstr "動畫走棋(A) Ctrl+Shift+A" #~ msgid "Auto Flag Ctrl+Shift+F" #~ msgstr "自動超時判負(F) Ctrl+Shift+F" #~ msgid "Ponder Next Move Ctrl+Shift+P" #~ msgstr "同步思考(N) Ctrl+Shift+P" #~ msgid "Hide Thinking Ctrl+Shift+H" #~ msgstr "隱藏引擎思考 Ctrl+Shift+H" #~ msgid "Test Legality Ctrl+Shift+L" #~ msgstr "檢查著法合理性(L) Cl+Sh+L" #~ msgid "Drop" #~ msgstr "取消" #, fuzzy #~ msgid "could not open: " #~ msgstr "無法解析著法" #~ msgid "ok" #~ msgstr "確定" #~ msgid "Highlight Dragging (Show Move Targets)" #~ msgstr "拖曳醒目提示(H)" #~ msgid "White " #~ msgstr "紅方 " #~ msgid "Black " #~ msgstr "黑方 " #~ msgid "Close" #~ msgstr "關閉(C)" #~ msgid "sec/move" #~ msgstr "每走一步加" xboard-4.9.1/po/quot.sed0000644000175000001440000000023112421746651012030 00000000000000s/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g xboard-4.9.1/po/de.gmo0000644000175000001440000014554612747544040011461 00000000000000 -(<;)<0e<$<< <<<<=/&=V=r===&==??4?)@<@5[@#@@7@A A AAA#A%A(A*A-A3A 9AFAUAnAuA|AAA'AAABB*B0BCB7JBKB*BB&C7CRC VC"cCC C)C%C C% D/D@DODnD wD DD DDDDD D E8ENE_EwE6EE E EEEF/FLF UFcFxFFFFF FF FF F F0 G=GFGKG _G$jG*GGGG G GG H)&HPH`HuHHHHHHHHH I I6IUI mIxI II II.II JJ1JCJ LJZJqJJ JJ JJ J%JKK7KLK!lK KK KKKKKK K.K$L*L1LBLSL XLeL#LL!LVL>MYM^M$xMM M'MM M$MN#N (N 2N?N SN ]N kN uN NNNNN!NN O+OBO KOWO ^OhOOO OOOO PP2PQP gPuP&{P!P&P(PQ+Q!GQiQ~QQ0QQQQR#R+RJRNReRyR"R"R.R S S"S 'S2S MSWS^SpSXS8ST %T1TPT@jT TTT8T&T$U,U;U=U [UeU wU(UU UUU/V6VHVYVaV qV |VVV VVVVVW$W )W7WPWaWtWWWWWWWW W WW X X &X4X;X,LX yX0X!XX XY!/Y#QYuYY Y YY&Y#YZ+Z>ZUZlZ |ZZZZZ ZZ ZZZ'Z%[ *[ 5[?[ Q[^[u[ [[[[[$[\ \ &\ 4\B\6b\-\)\-\)] I]S] Z]%e]-](]"]^!^;>^z^ ^ ^^ ^^ ^^^^ ___"_<_V___h_y_ __ __ ___ _J`S`-m``````aa;a[akaa!aaaaaa+b4b"7bZbmb.~bbbbbb c c&c5c!;c]cbcjc#{cc cc%ccc ddd1dEd,Wdddddd dd$de %e0e6eFeHe_e5seEeefff.fCfLf Sf`f/gfffff f*ff g g 2g?gRg'fg gggggg h!h :hFhVhrh hh hhhhhhh iii.i5i FiRifii#ii iii ijjj9jPjhj&wj!j*j(j&k;kJkYk aklkkkkkkk kkSkMl&cl l lllllm m)m-?mmmvmm"m mm m,m(n D}}}(}}/~6~ -'N1v13ڀ?'Nv=сӁ Ձ  !1HQ*X *΂ &8>PHWV,$"=#`0Ȅ -*I6[+ ,!Df!' φۆD07#h@-..6 e)!҈6>F^$m  4ʼn /&HV ʊ ӊߊ!,1$^#'*ϋ % 1DMRm~Hό  +C@ Ѝ ' 5Q lwK 3.b.z. ؏ ! .73H| ǐ%֐6)3*]w"# ))Jt {% ƒ-ђ  ("=`p!ߓ) "($K p| ̔'*'EmMҕ! BX5_14ǖ,)C+b(%՗1-@Q b- ǘј# $03U4 ̙  !9fOQ)0&ZV ؛ D5G } Ɯݜ8% ?L$jK۝ $1B(Gp+؞ &'New ğП  - =KR1c5*۠!*(S/l,ɡ+١ #$:)_Ƣݢ" +8> G U3vϣ$%CRm)Ĥ %.:Li@=>5;t Ʀ'Ӧ410*b2Lݧ* 0; DQ$`̨(( A LXl !٩ i*A "7*P{ϫ<C^dw)Ѭ9 3T]w̭߭& .-\dx1Ϯ))F<c (ԯ; N.X ְX`Ṉ #,5G9P3)FZu&/̳9W t"ϴ ! 3=T\e' ȵѵ - F+Q}ж ٶ <W1h23ͷ1-3au #Ǹٸ  .:Um7 3C w  Ϻ +09L+_>»;=U.Y5ͼ $+@ lzǽ.ٽS \j*|.x־2OFCҿ )7a ))%9=_ "   %5Ro0<F_JBuj!9D%1*  ' .8A [f   +<KRf{  , 9@QUYb0q!& 6@Pa3w  /*?OyMKVKq6,B~ 9(F!<| e"pX=;>:#-(R_<0Vd#oYdN%v/Pb\A{8?4 +IL@awWq $jm)mJa%Wz"`Jr-SE{4&$m^IZnL ?IxK^QA,N.OB~.G22H3*}!X\> Z 97vb;kl'Ci \jkwRvV121 Hd| #sT~XF_+cFu uhU'x86uS[Az0]U[G3Eth<trBcDY7: `T rofLc/4/q) 7:fllp"_.ikD9(P'[zC%8C]s065&1wJ@iOE]p&!aR PyWHsM=?5`gZ O ^}-,n@D|SNefg>}Geoj+ =;)bh3xtU{Y5**yQ$nTQgM The * buttons will set the font to the one selected below: Thresholds for position filtering in game list: options to use in game-viewer mode: next page (with Zippy code)# no engines are installed# no themes are defined%d avoid-moves played %s (%d reversible ply)%s (%d reversible plies)%s - %d/%d games (%d-%d-%d)%s does not support analysis%s engine has too many options %s in settings file %s program exits in draw position (%s)%s%s Copyright 1991 Digital Equipment Corporation Enhancements Copyright 1992-2016 Free Software Foundation Enhancements Copyright 2005 Alessandro Scotti %s is free software and carries NO WARRANTY;see the file COPYING for more information. Visit XBoard on the web at: http://www.gnu.org/software/xboard/ Check out the newest features at: http://www.gnu.org/software/xboard/whats_new.html Report bugs via email at: %s: bad boardSize syntax %s %s: can't cd to CHESSDIR: %s: can't parse color names; disabling colorization %s: can't parse foreground color in '%s' %s: no fonts match pattern %s %s: too few colors available; trying monochrome mode %s: unrecognized boardSize name %s %s: unrecognized color %s (Directory will be derived from engine path when empty)*+, but %s is-3-checks<<<>>>ASEANAbortAbout XBoardAbove WAV FileAbsolute Analysis ScoresAcceptActionAdd this engine to the listAdjournAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate non-ICS GamesAdjudicate to BlackAdjudicate to WhiteAdjudications...AlarmAlarm Time (msec):Alarm:All games in tourney '%s' are already played or playingAll variants not supported by the first engine (currently %s) are disabled.Almost Always Queen (Detour Under-Promote)Already at end of gameAlso match left-right flipped positionAlso match reversed colorsAltAlways QueenAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis ModeAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyze GameAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnimation Speed (high = slow):AnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-Create Logon ScriptAuto-Display CommentAuto-Display TagsAuto-InputBox PopUpAuto-KibitzAuto-ObserveAuto-Play speed of loaded games (0 = instant, -1 = off):Auto-Raise BoardAuto-Refresh Seek GraphAuto-Save GamesAverage solving time %4.2f sec (total time %4.2f sec) BBack to StartBackground Observe while PlayingBackwardBad FEN position in clipboardBad FEN position in fileBad FEN received from engineBad SeekBad game fileBad integer value %sBad position fileBad tournament fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBlunderBlunder graphBoard OptionsBoard size ( -1 = default for selected variant):Board...BookBook Depth (moves):Book FaultBook Variety (0) vs. Strength (100):Book file exists! Try again for overwrite.Both flags fellBrowseBughouseCRC (10x8)Call FlagCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't open temp fileCan't seek on game fileCan't seek on position fileCancelCannonCannot build game listCapablanca (10x8)CaptainCar HornChallenge Text Colors:Challenge:ChancellorChanging time control during a game is not implementedChannel #1 Text Colors:Channel 1:Channel:Chat partner:Chats:Clear boardClick clock to clear boardClock adjustment not allowed in auto-flag modeClocks (requires restart):Clone TourneyClose ICS engine analyze...Colorize MessagesCommentsCommon EngineCommon Engine SettingsCommon Settings...Connection closed by ICSContents ofContinue LaterCopy GameCopy Game ListCopy PositionCould not connect to host %s, port %sCould not create bookCould not open comm port %sCould not parse moveCould not write on tourney fileCouldn't parse move "%s" from ICSCrazyhouseCtrlCylinder *CymbalDDark Square Color:Dark-Squares Texture File:DeclineDefault BeepDefault Number of Games in Match (or Pairing):DeferDemoteDetect all MatesDevelopment NewsDingDirectories:Directory with Pieces Images:Disable own engine books by defaultDisplayed move is not currentDisplayed position is not currentDisplayed position is not current. Step forward to the correct position and try again.Divide entered times by 60DrawDraw after N Moves Total:Draw if Insufficient Mating MaterialDraw:Drop MenuDual Board for Background-Observed GameEGTB Cache Size (MB):EGTB Path:ERROR: Unknown user %s (in path %s) E_ngineEditEdit BookEdit CommentEdit Engine List...Edit GameEdit PositionEdit TagsEdit bookEdit commentEdit comment on %d.%s%sEdit comments:Edit tags / book / engine list:ElephantElo of strongest player at least:Elo of weakest player at least:Empty squareEnable Variation TreesEnd ChatEnd of gameEngineEngine #1Engine #1 Has Own BookEngine #1 Settings...Engine #2 / HumanEngine #2 Has Own Book Engine #2 Settings...Engine Command:Engine Directory:Engine OutputEngine SettingsEngine did not send setup for non-standard variantEngine has no optionsEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvalEvaluation GraphEvaluation graphExact position matchExitingFIRST TYPE DIRECTORY NAME HEREFRCFailed to invoke cmailFailed to open fileFailed to open file '%s' Failed to open indirection file %sFailed to parse board string: "%s"Failed to start %s chess program %s on %s: %s Falcon (10x8)Fatal ErrorFileFile type:File with Start Positions:Filename:Files:First Black Move:First White Move:First change an engine by editing the participants list of the Tournament Options dialogFirst you must specify an existing tourney file to cloneFischer castlingFlash MovesFlash Moves (0 = no flashing):Flash Rate (high = fast):Flip Pieces Shogi Style (Colored buttons restore default)Flip ViewFontsFonts...For concurrent playing of tourney with multiple XBoards:Force current variant with this engineForwardForward to EndGGame File with Opening Lines:Game ListGame List Tags...Game List...Game Number (-1 or -2 = Auto-Increment):Game list not loaded or emptyGame list:Game not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGame-list optionsGap in move listGeneralGeneral OptionsGeneral...Get Move ListGongGot end of file from keyboardGothic (10x8)Great Shatranj (10x8)Hash keys are differentHash-Table Size (MB):Headers in Engine Output WindowHelpHideHide ThinkingHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sHoldings Size:IICS Chat/Console:ICS ClientICS Input BoxICS InteractionICS OptionsICS input boxICS text menuICS...ICS/Chat ConsoleIllegal hint move "%s" from %s chess programIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move (rejected by ICS)Illegal move in ICS output: "%s"Illegal move: %d.%s%sInclude Number Tag in tourney PGNIncomplete \ escape in value for %sIncorrect moveIncrement or max (sec/move):Info XBoardInformationInitial time (min):Internal error: PARTICIPANTS set wrongInvalid pairing from pairing engineIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnJanus (10x8)Kibitz Text Colors:Kibitz:KingKnightKnightmateLaserLieutenantLight Square Color:Light-Squares Texture File:Line Gap (-1 = default for board size):LionLion roar:Load GameLoad Game OptionsLoad Game...Load New 1st Engine...Load New 2nd Engine...Load PositionLoad first engineLoad game file name?Load position file name?Load second engineLogo Size (0=off, requires restart):Lose:Machine BlackMachine MatchMachine WhiteMachine accepts your draw offerMachine offers a draw. Select Action / Draw to accept.MachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMail MoveMakrukMan XBoardMatch %s vs. %s: final score %d-%d-%dMaterial difference (optional stuff balanced)Material range (top board half optional)Maximum Number of CPUs per Engine:Message (above board):Minimum nr consecutive positions:Mismatch of STRIDE in nengineoutput.c Change and recompile!ModeMono ModeMove HistoryMove NowMove SoundMove history / Engine Output:Move listMove:Moves per session:Must not use GUI bookN-Move Rule:N-fold Repeats:NPSNegate Score of Engine #1Negate Score of Engine #2New ChatNew GameNew Shuffle GameNew Shuffle Game...New VariantNew Variant...New directoryNew name for current theme:Next PositionNickname (optional):No SoundNo castleNo default pieces installed! Select your own using '-pieceImageDirectory'.No engine %s is installedNo engine with the name you gave is installedNo game has been loaded yetNo game selectedNo games before year:No hint availableNo more games in this messageNo moves in gameNo pairing engine specifiedNo position has been loaded yetNo tag selectedNo unfinished gamesNo unfinished games No value provided for argument %sNormalNot enough participantsNoteNumber of Board Files:Number of Board Ranks:Number of tourney cycles (or Swiss rounds):OKOld Save Style (as opposed to PGN)On-line User GuideOne-Click MovingOnly bughouse is not available in viewer mode.Opening-Book Filename:OptionsOther Channel Text Colors:Other Text Colors:Own Games OnlyPGN Event Header:Paste GamePaste PositionPausePause between Match Games (msec):PawnPenaltyPeriodic UpdatesPeriodic Updates (in Analysis Mode)PhonePick new gamePlayPlay Move(s) of Clicked PV (Analysis)Polyglot book not validPolygot Directory:Ponder Next MovePopPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition Number (-1 or -2 = Auto-Increment):Position not found in filePremovePremove Highlight Color:Premove for BlackPremove for WhitePrev PositionPromotePull pawn backwards to under-promoteQueenQuiet PlayQuit Quit after gameRReading game file (%d)Ready to send mail Recompile to support this BOARD_RANKS or BOARD_FILES!Recompile with larger BOARD_RANKS or BOARD_FILES to support this sizeRegistered EnginesReload CMail MessageRematchReplace EngineRequest Text Colors:Request:ResignRetract MoveRevertRewind Index after this many Games (0 = never):RoarRookS-Shout Text Colors:S-Shout:Same materialSame material with exactly same Pawn chainSave Final Positions on File:Save GameSave Game OptionsSave Game...Save Games as BookSave Games on File:Save Out-of-Book Info in PGN Save PositionSave Score/Depth Info in PGNSave Selected GamesSave Settings NowSave Settings on ExitSave Tourney Games on:Save game file name?Save position file name?Saving gameSaving positionScanning through games (%d)Scores in Move ListSearch mode:Seconds per Move:Seek GraphSeek Text Colors:Seek:SeirawanSelect Engine:Select engine from list:Selectable themes:ShatranjShiftShout Text Colors:Shout:Show CoordinatesShow CoordsShow Target SquaresShown position is subsetSlapSocket support is not configured inSolved %d out of %d (%3.1f%%) Sound OptionsSound Program:Sounds Directory:Sounds...SpartanStart-position number:Starting %s chess programStarting chess programStartup failure on '%s'Sticky WindowsStill need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s Stop ExaminingStop ObservingSuicideSuperchessSwiss tourney finishedSync after cycleSync after roundTRY ANOTHER NAMETagsTell Text Colors:Tell:Test LegalityThat square is occupiedThe cmail message is not loaded. Use Reload CMail Message and make your move again.There is no game listThere is no pending offer on this moveThis only works in the GTK buildTime ControlTime Control...Time-Odds factors:Top-Level DialogsTournament OptionsTournament file: Tournament...Tourney participants:Tourney type (0 = round-robin, 1 = gauntlet):TrainingTraining mode offTraining mode onTraining mode requires a game fileTruncate GameTry-Out Sound:Two MachinesTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineType a moveUCIUSI/UCCI (uses specified -uxiAdapter)Unable to create font set for %s. Unfinished:Unknown initialMode %sUnknown variant name %sUnknown wild type %dUnrecognized argument %sUnrecognized boolean argument value %sUnusedUpgrade EngineUpload to ExamineUse Board TexturesUse GUI BookUse external piece bitmaps with their own colorsUse nickname in PGN player tags of engine-engine gamesUser FileUser WAV File:Variant %s not supported by %sVariant %s supported only in ICS modeVariants marked with * can only be played with legality testing off.Verify Engine Result ClaimsViewWB protocol v1 (do not wait for engine features)Wait until your turn, or select 'Move Now'.Wait until your turn.Waiting for access to save fileWaiting for first chess programWaiting for other game(s)Waiting for reply from opponent Waiting for second chess programWarlordWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite Piece Color:White to playWhite's flag fellWild castleWin / Loss Threshold:Win:Wood ThunkXBoard Home PageYou are not examining a gameYou are not observing a gameYou are playing BlackYou are playing WhiteYou can only change one engine at the timeYou can't revert while pausingYou cannot do this while you are playing or observingYou cannot replace an engine while it is engaged! Terminate its game first.You did not specify the engine executableYou have already mailed a move. Wait until a move arrives from your opponent. To resend the same move, type "cmail -remail -game %s" on the command line.You have edited the game history. Use Reload Same Game and make your move again.You have entered too many moves. Back up to the correct position and try again.You have not made a move yetYou must make your move before offering a drawYou must supply a tournament file, for storing the tourney progressYou restarted an already completed tourney. One more cycle will now be added to it. Games commence in 10 sec.Your opponent is not out of timeZoom factor in Evaluation Graph:_Action_Edit_File_Help_Mode_Options_Viewadd next moveatomicbad searchTime option %sbad timeControl option %sberolina *browseby nameby typechu shogi (12x12)classicalclearclosecommit changescould not load EGBB librarycourier (12x8)downe-Mail Bug Reportelven chess (10x10)engine namefactoryfailed writing PVfairyfind positionfirstfixed maxgive-awaygrand (10x10)incrementalinternal rcmd not implemented for Unixlosersmighty lionmovenarrownextnext pageno games matched your requestonly marked squares are legalor specify one below:pick fixedprevious pageprotocol version %d not supportedrandomizerights grantedrights revokedsave changessay Internal error; bad moveType %d (%d,%d-%d,%d)secondshogi (9x9)shuffletagsthresholdstwo kingsupvs.white pixel = 0x%lx, black pixel = 0x%lx wrong EGBB versionxiangqi (9x10)your opponent kibitzes: %sProject-Id-Version: xboard 4.9.0-pre2 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2016-04-06 22:35+0200 Last-Translator: Roland Illig Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Poedit 1.8.7 X-Poedit-Basepath: . X-Poedit-SearchPath-0: . Die *-Schaltflächen ändern die Schrift zu der unten ausgewählten: Schwellwert für Stellungsfilter in Partieliste: Einstellungen für den Spielbetrachten-Modus: nächste Seite (mit Zippy)# keine Schachprogramme installiert# keine Designs installiert%d Verhinderungszüge gespielt %s (%d rücknehmbarer Halbzug)%s (%d rücknehmbare Halbzüge)%s - %d/%d Spiele (%d-%d-%d)%s unterstützt keine AnalyseSchachprogramm %s hat zu viele Optionen %s in der Konfigurationsdatei %s Schachprogramm beendet in Remisstellung (%s)%s%s Copyright 1991 Digital Equipment Corporation Verbesserungen Copyright 1992-2014 Free Software Foundation Verbesserungen Copyright 2005 Alessandro Scotti %s ist freie Software und gewährt keinerlei Garantie; weitere Details finden Sie in der Datei COPYING. Besuchen Sie XBoard im Web unter: http://www.gnu.org/software/xboard/ Die neuesten Features finden Sie unter: http://www.gnu.org/software/xboard/whats_new.html Fehler melden Sie bitte (auf Englisch) per E-Mail an: %s: falsche boardSize Syntax %s %s: cd zu CHESSDIR funktioniert nicht: %s: kann Farbname nicht parsen; deaktiere Farben %s: Kann Vordergrundfarbe in »%s« nicht parsen %s: keine Schriften stimmen mit Muster %s überein %s: nicht genügend Farben vorhanden; versuche monochrom Modus %s: unbekannter Name fuer boardSize %s %s: nicht erkannte Farbe %s (Verzeichnis wird vom Schachprogrampfad genommen, falls leer)*+, aber %s ist-3-fach-Schach<<<>>>ASEAN-SchachAbbrechenÜber XBoardObige WAV-DateiAbsolute AnalysepunkteAnnehmenAktionFüge diese Schachprogramm zur Liste hinzuAussetzenAuf Remis entscheidenTriviale Remis entscheiden (nach 3 Zügen)Nicht-ICS-Spiele entscheidenSchwarz den Gewinn zuerkennnenWeiß den Gewinn zuerkennenEntscheidungen…AlarmAlarmzeit (msek):Alarm:Alle Spiele im Turnier »%s« sind entweder beendet oder werden gespieltAlle Varianten, die das erste Schachprogramm nicht kann (derzeit %s) sind deaktiviert.Fast immer Dame (Unterverwandlung vermeiden)Schon am Ende der PartieAuch gespiegelte Positionen suchenAuch mit vertauschten Farben suchenAltImmer KöniginNicht eindeutiger Zug in der ICS-Ausgabe: »%s«Mehrdeutiger Zug: %d.%s%sAnalyse-ModusAnalyse-Modus funktioniert nicht im ICS-ModusAnalyse-Modus benötigt ein SchachprogrammSpiel analysieren»Datei analysieren«-Modus benötigt eine PartiedateiZiehen animierenZiehen animierenAnimationsgeschwindigkeit (hoch = langsam):AnnotierenErzbischofZeit automatisch reklamierenBrett automatisch drehenAutomatische KommentareAutomatisch Login-Skript erzeugenKommentar automatisch anzeigenMarkierungen automatisch anzeigenAutomatisches Eingabefenster einblendenAuto-KibitzAutomatisch BeobachtenAbspielgeschwindigkeit von geladenen Spielen (0 = sofort, -1 = aus):Automatisch das Brett in den Vordergrung bringenSuchgraph automatisch aktualisierenAutomatisch Partien speichernDurchschnittliche Lösungszeit %4.2f Sek (Gesamtzeit %4.2f Sek) BZurück zum AnfangBeobachte im Hintegrund während einer PartieZurückFehlerhafte FEN-Stellung in der ZwischenablageUngültige FEN-Stellung in DateiSchlechte FEN vom Schachprogramm erhaltenFehler beim Springen in der DateiFehler in PartiedateiFalscher ganzzahliger Wert %sFehler in PositionsdateiFehler in TurnierdateiLäuferSchwarzFarbe schwarze Figuren:Schwarz am ZugDas schwarze Plättchen ist gefallenBlindschachPatzerPatzer-GraphBretteinstellungenBrettgröße (-1 = default für gewählte Variante):Brett…BuchBuchtiefe (Züge):BuchfehlerBuchvielfalt (0) gegenüber Spielstärke (100):Buchdatei existiert bereits! Versuchen Sie es erneut zum Überschreiben.Beide Plättchen sind gefallenDurchsuchenBughouseCRC (10×8)Zeit reklamierenKann nicht weiter zurückgehenKann nicht weiter vorwärts gehenPartie ohne Schachprogram ist nicht möglich»%s« konnte nicht geöffnet werdenKann temporäre Datei nicht öffnenFehler beim Springen in der PartiedateiFehler beim Springen in der StellungsdateiAbbrechenKanoneZugliste konnte nicht erstellt werdenCapablanca (10×8)KapitänHupeTextfarbe Herausforderung:Herausforderung:KanzlerDas Ändern der Bedenkzeit während eines Spiels ist nicht implementiertTextfarbe Kanal #1:Kanal 1:Kanal:Chatpartner:Chats:Brett leerenKlicke auf eine Uhr, um das Brett zu leerenVeränderungen an der Uhr sind im »Auto-flag«-Modus nicht erlaubtUhren (benötigt Neustart):Turnier klonenSchließe ICS Programmanalyse…Nachrichten einfärbenKommentareAllgemeines SchachprogrammAllgemeine Schachprogramm-EinstellungenAllgemeine Einstellungen…Verbindung zum ICS beendetInhalt vonSpäter fortsetzenPartie kopierenPartieliste kopierenStellung kopierenVerbindung zu Hostrechner %s, Portnummer %s konnte nicht hergestellt werdenBuch konnte nicht erzeugt werdenKommunikationsport %s konnte nicht geöffnet werdenKonnte Zug nicht parsenSchreibzugriff auf Turnierdatei nicht möglichZug »%s« vom ICS konnte nicht geparst werdenCrazyhouseStrgZylinder *BeckenDSchwarzes Feld:Texturdatei für schwarze Felder:AblehnenStandard-PieptonStandardanzahl der Spiele pro Match (oder Paarung):VertagenDegradierenAlle Mattbilder erkennenEntwicklungsneuigkeitenDingVerzeichnisse:Verzeichnis mit Bildern für Figuren:Eigene Eröffnungsbücher standardmäßig deaktivierenDer angezeigte Zug ist nicht der aktuelleAngezeigte Position ist nicht die aktuelleDie angezeigte Stellung ist nicht die aktuelle. Gehen Sie vorwärts zur richtigen Stellung und versuchen Sie es erneut.Eingegebene Zeiten durch 60 teilenRemisRemis nach N Zügen (insgesamt):Remis bei zuwenig Material zum MattsetzenRemis:LoslassmenüZweites Brett für beobachtetes SpielEGTB-Cachegröße (MB):EGTB-Pfad:FEHLER: unbekannter Benutzer %s (im Pfad %s) Schach_programmBearbeitenEditiere BuchKommentar bearbeitenSchachprogramm-Liste bearbeiten…Partie editiereStellung editierenMarkierung bearbeitenBuch editierenKommentar bearbeitenKommentar für %d.%s%s bearbeitenKommentare bearbeiten:Tags / Buch / Schachprogramme bearbeiten:ElefantMind. Elo des stärksten Spielers:Mind. Elo des schwächsten Spielers:Leeres FeldErlaube VariantenChat beendenEnde des SpielsSchachprogrammSchachprogramm #1Engine #1 hat eigenes BuchEinstellungen für Schachprogramm #1…Schachprogram #2 / SpielerEngine #2 hat eigenes BuchEinstellungen für Schachprogramm #2…Schachprogramkommando:Schachprogramm-Verzeichnis:SchachprogrammausgabeSchachprogrammeinstellungenSchachprogramm hat die Startaufstellung für die Spielvariante nicht gesendetSchachprogramm hat keine OptionenSchachprogrammausgabeFehlerFehler beim Erstellen der Zugliste: extra SchachbrettFehler beim Erstellen der Zugliste: verschachteltFehler beim Erstellen der Zugliste: zwei DateiköpfeFehler beim Lesen vom Schachprogramm %s (%s)Fehler beim Lesen vom ICSFehler beim Lesen der TastaturFehler beim Schreiben zum Schachprogramm %sFehler beim Schreiben zum ICSFehler beim Schreiben zum SchachprogrammFehler beim Schreiben auf dem DisplayFehler: %s Schachprogramm (%s) unerwartet beendetStellungsbewertungAuswertungsgraphAuswertungsgraphExakte StellungsübereinstimmungProgramm wird beendetGeben Sie zuerst hier den Verzeichnisnamen anSchach960Fehler beim Aufruf von cmailFehler beim Öffnen der DateiFehler beim Öffnen der Datei '%s' Fehler beim Öffnen der Datei »%s«Konnte Schachbrettzeichenkette nicht parsen: »%s«Konnte %s Schachprogram %s auf %s nicht starten: %s Falken-SchachSchwerwiegender FehlerDateiDateityp:Datei mit Startstellung:Dateinname:Dateien:Erster Zug von Schwarz:Erster Zug von Weiß:Ändern Sie ein Schachprogramm, indem Sie die Liste der Teilnehmner im Turnieroptionendialog editierenBitte geben Sie zuerst eine existierende Turnierdatei an, die geklont werden sollFischer-RochadeZüge aufblitzen lassenZüge blinken lassen (0 = nicht blinken):Blinkgeschwindigkeit (hoch = schnell):Figuren im Shogi-Stil umdrehen (Farbige Schaltflächen setzen die Einstellung zurück)Brett drehenSchriftartenSchriftarten…Zum gleichzeitigen Durchführen eines Turniers mit mehreren XBoards:Aktuelle Variante mit diesem Schachprogramm erzwingenVorwärtsZur SchlussstellungGSpieldatei mit Eröffnungen:PartielistePartie-Markierungen…Partieliste…Spielnummer (-1 oder -2 bedeutet automatische Zählung):Noch keine Partie geladenPartieliste:Spiel in Datei nicht gefundenPartienummer außerhalb des BereichsPartie zu lang; erhöhen Sie MAX_MOVES und kompilieren Sie das Programm neuSpieleliste-OptionenLücke in ZuglisteGeneralAllgemeine EinstellungenAllgemein…Zugliste abholenGongEnde-der-Datei von der Tastatur erhaltenGothic (10×8)Groß-Schatrandsch (10×8)Hashschlüssel sind verschiedenGröße der Hashtabelle (MB):Kopfzeilen im Schachprogramm-AusgabefensterHilfeVersteckenDenken versteckenNachdenken vor dem Menschen versteckenFarbe zum Hervorheben:Züge hervorhebenLetzten Zug hervorhebenMit Pfeil hervorhebenHervorhebung mit PfeilHinweisHinweis: %sVorrats-Größe:KICS-Chat/Konsole:ICS-ClientICS EingabefeldICS-InteraktionICS OptionenICS EingabefeldICS-TextmenüICS…ICS/Chat-KonsoleIllegaler Zughinweis »%s« vom Schachprogramm %sUngültiger ZugIllegaler Zug »%s« (abgelehnt vom Schachprogram %s)Illegaler Zug »%s« vom Schachprogramm %sIllegaler Zug (abgelehnt vom ICS)Ungültiger Zug in der ICS-Ausgabe: »%s«Unerlaubter Zug: %d.%s%sNummernkennzeichen in Turnier-PGN einschließenUnvollständiges \-Escape im Wert von »%s«Ungültiger ZugZeitbonus oder Maximalbedenkzeit (sek/Zug):Info über XBoardInformationGrundbedenkzeit (min):Interner Fehler: PARTICIPANTS falschUngültige Paarungen vom PaarungsprogrammSchwarz ist am ZugWeiß ist am ZugSchwarz ist nicht am ZugWeiß ist nicht am ZugSie sind am ZugJanusschach (10×8)Textfarbe Kibitz:Kibitz:KönigSpringerSpringermattLaserLeutnantWeißes Feld:Texturedatei für weiße Felder:Linienabstand (-1 = Vorgabewert für Brettgröße):LöweLöwenfauchen:Partie laden…Spieleinstellungen ladenPartie laden…Neues erstes Schachprogramm laden…Neues zweites Schachprogramm laden…Stellung ladenLade erstes SchachprogrammLade Partiedatei mit Namen?Lade Stellungsdatei mit Namen?Lade zweites SchachprogrammLogo-Größe (0=aus, benötigt Neustart):Verloren:Schachprogramm schwarzSchachprogramm PartieSchachprogramm weißDas Schachprogramm akzeptiert Ihr RemisangebotDas Schachprogramm bietet Remis an. Wählen Sie Aktion/Remis, um anzunehmen.»Schachprogramm Schwarz«-Modus funktioniert nicht im ICS-Modus»Schachprogramm Schwarz«-Modus benötigt ein Schachprogramm»Schachprogramm Weiß«-Modus funktioniert nicht im ICS-Modus»Schachprogramm Weiß«-Modus benötigt ein SchachprogrammVerschicke ZugMakrukXBoard-HilfeMatch %s gegen %s: Endergebnis %d-%d-%dMaterialunterschied (optionale Figuren ausgeglichen)Materialstärke (obere Bretthälfte ist optional)Maximal Anzahl der CPUs pro Schachprogram:Nachricht (über dem Brett):Mindestanzahl von aufeinanderfolgenden Stellungen:Interner Fehler: Mismatch of STRIDE in nengineoutput.c Change and recompile!ModusMono-ModusZuglisteJetzt ziehenKlang für ZugZughistorie / Schachprogrammausgabe:ZuglisteZug:Züge pro Sitzung:Kein GUI-Buch benutzenN-Züge Regel:N-fache Stellungswiederholung:NPSNegiere Bewertung des 1. SchachprogrammsNegiere Bewertung des 2. SchachprogrammsNeuer ChatNeue PartieNeue Shuffle-PartieNeue zufällige Partie…Neue VarianteNeue Variante…Neues VerzeichnisNeuer Name für aktuelles Design:Nächste StellungSpitzname (optional):Kein TonKeine RochadeKein Standard-Figurensatz installiert! Wählen Sie mit der Option »-pieceImageDirectory« Ihren eigenen.Das Schachprogram %s ist nicht installiertEin Schachprogram mit dem angegebenen Namen ist nicht installiertNoch keine Partie geladenKeine Partie ausgewähltNur Partien ab Jahr:Kein Hinweis erhältlichKeine weiteren Partien in dieser NachrichtKeine Züge in dem SpielKein Paarungsprogram angegebenNoch keine Stellung geladenKeine Markierung selektiertKeine laufenden PartienKeine laufenden Partien Fehlender Wert für Argument %sNormalNicht genügend TeilnehmerNotizAnzahl der Linien:Anzahl der Reihen:Anzahl der Turnierrunden:OKAlter Speichermodus (im Gegensatz zu PGN)Online BenutzerhandbuchEin-Klick ZügeNur Bughouse ist nicht im Partieansicht-Modus verfügbar.Dateiname des Eröffnungsbuches:OptionenTextfarbe andere Kanäle:Andere Textfarben:Nur eigene PartienPGN-Veranstaltungs-Kopfzeile:Partie einfügenStellung einfügenPausePause zwischen Tournierspielen (msek):BauerStrafePeriodische UpdatesRegelmäßige Aktualisierung (im Analysemodus)TelefonNeues Spiel wählenSpielenZüge der angeklickten Variante spielen (Analyse)Polyglotbuch nicht zulässigPolyglotverzeichnis:Nächsten Zug abwägenPopDialogfenster für Nachricht beim BeendenPopup Nachricht beim BeendenDialogfenster für ZugfehlerPositionsnummer (-1 oder -2 bedeutet automatische Zählung):Stellung in Datei nicht gefundenVorzeitiges ZiehenFarbe zum Hervorheben vorzeitiger Züge:Vorzeitiges Ziehen für SchwarzVorzeitiges Ziehen für WeißVorherige StellungUmwandelnBauern zum Unterverwandeln rückwärts bewegenKöniginRuhiges SpielBeendenNach der Partie beendenRLese Partiedatei (%d)Bereit zum Versenden der Mail Kompilieren Sie das Programm erneut mit Unterstützung von BOARD_RANKS oder BOARD_FILES!Kompiliere erneut mit größeren BOARD_RANKS oder BOARD_FILES, um diese Größe zu unterstützenRegistrierte SchachprogrammeCMail Nachricht erneut ladenRevancheSchachprogramm ersetzenTextfarbe für Anfragen:Anfrage:AufgebenZug zurücknehmenNeuladenIndex nach so vielen Spielen zurücksetzen (0 = niemals):FauchenTurmTextfarbe S-Ruf:S-Ruf:Gleiches MaterialGleiches Material mit genau gleicher BauernstrukturSpeichere Endstellung in Datei:Partie speichern…Spieleinstellungen speichernPartie speichern…Partien speichern als BuchPartien speichern als Datei:Eröffnungsbuch-Daten in PGN speichernSpeichere StellungStellungsbewertung/Rechentiefe in PGN speichernAusgewählte Partien speichernEinstellungen jetzt speichernEinstellung am Ende speichernTurnierspiele speichern auf:Speichere Partiedatei mit Namen?Speicher Stellungsdatei mit Namen?Spiel wird gespeichertStellung wird gespeichertDurchsuche Spiele (%d)Bewertung in ZuglisteSuchmodus:Sekunden pro Zug:SuchgraphTextfarbe Spielgesuch:Gesuch:SeiwaranSchachprogramm auswählen:Schachprogram aus der Liste auswählen:Wählbare Designs:SchatrandschUmschaltTextfarbe Ruf:Ruf:Zeige KoordinatenZeige KoordinatenZeige ZielfeldDie angezeigte Stellung ist eine TeilstellungSchlagbassSocketunterstützung ist nicht konfiguriert%d von %d gelöst (%3.1f%%) KlangeinstellungenAbspielprogramm:Klangverzeichnis:Klang…Sparta-SchachStartposition-Nummer:Schachprogramm %s wird gestartetSchachprogramm wird gestartetFehler beim Starten »%s«Haftende FensterSie müssen noch einen Zug für Partie %s machen Sie müssen noch einen Zug für die Partie machen Sie müssen noch Züge für alle %d Partien machen Sie müssen noch Züge für beide Partien machen Sie müssen noch Züge für Partie %s machen Untersuchen beendenBeobachtung beendenRäuberschachSuperschachTurnier im Schweizer System beendetSync. nach ZyklusSync. nach der RundeVERSUCHE EINEN ANDEREN NAMENMarkierungenTextfarbe Mitteilung:Mitteilung:Auf erlaubte Züge prüfenDieses Feld ist besetztDie CMail-Nachricht wurde noch nicht geladen. Benutzen sie »CMail Nachricht erneut laden« und führen Sie ihren Zug erneut aus.Partieliste existiert nichtEs liegt kein unbeantwortes Angebot für diesen Zug vorDas funktioniert nur der GTK-Variante des ProgrammsZeitkontrolleZeitnahme…Ungleiche Zeitverteilung:Haupt-DialogeTurniereinstellungenTurnierdatei: Turnier…Tunierteilnehmer:Turniertyp (0 = round-robin, 1 = gauntlet):TrainingTrainier-Modus ausTrainier-Modus einTrainieren-Modus benötigt eine PartiedateiPartie abbrechenTeste Geräusch:Zwei Schachprogramme»Zwei Schachprogramme«-Modus funktioniert nicht im ICS-Modus»Zwei Schachprogramme«-Modus benötigt ein SchachprogrammGeben Sie einen Zug einUCIUSI/UCCI (benutzt den angegebenen -uxiAdapter)Nicht in der Lage Schriftsatz für %s zu generieren. Nicht beendet:Unbekannter initalMode %sUnbekannte Variante mit Namen %sUnbekannte wild-Variante %dNicht erkanntes Argument %sUnbekannter logischer Wert für Argument %sNicht benutztSchachprogramm aktualisierenHochladen zum UntersuchenBenutze BretttexturenGUI-Buch benutzenBenutze externe Figurebitmaps mit deren FarbenSpitzname in PGN-Spieler-Kennzeichen bei Spielen zwischen Schachprogrammen benutzenBenutzerdateiEigene WAV-Datei:Variante %s wird von %s nicht unterstütztVariante %s wird nur im ICS-Modus unterstütztVarianten, die mit * markiert sind, können nur gespielt werden, wenn die Prüfung auf erlaubte Züge ausgeschaltet ist.Partieergebnisse des Schachprogramms kontrollierenAnzeigenWB-Protokoll Version 1 (nicht auf Features des Schachprogramms warten)Warten Sie, bis Sie am Zug sind, oder wählen Sie »Jetzt ziehen«.Warten Sie, bis Sie am Zug sind.Warte auf Zugriff zur Datei zum SpeichernWarte auf erstes SchachprogrammWarte auf weitere SpieleWarte auf Antwort des Gegners Warte auf zweites SchachprogrammKriegsherrWarnung: Sie untersuchen noch eine PartieWarnung: Sie schauen noch einer Partie zuWarnung: Sie spielen noch eine PartieWarnung: zweites Schachprogramm (%s) unterstützt dies nicht!WeißFarbe weiße Figuren:Weiß am ZugDas weiße Plättchen ist gefallenWilde RochadeGewinn/Verlust Grenzwert:Gewonnen:HolzblockXBoard HomepageSie untersuchen keine PartieSie schauen keiner Partie zuSie spielen SchwarzSie spielen WeißSie können immer nur ein Schachprogramm ändernSie können nicht zurücknehmen, solange die Partie pausiertSolange Sie spielen oder einem Spiel zuschauen, ist das nicht möglichErsetzen eines Schachprogramms während es läuft nicht möglich! Beenden Sie das Spiel zuerst.Das Computerprogramm für das Schachprogramm wurde nicht angegebenSie haben ihren Zug schon verschickt. Warten Sie bis der Zug ihres Gegners ankommt. Um denselben Zug erneut zu versenden, tippen Sie »cmail -remail -game %s« in die Kommandozeile.Sie haben die Partieentwicklung verändert. Benutzen Sie »Spiel erneut laden« und führen Sie ihren Zug erneut aus.Sie haben zu viele Züge eingegeben. Gehen Sie zur richtigen Stellung zurück und versuchen Sie es erneut.Sie haben noch keinen Zug gemachtSie müssen erst ziehen, bevor Sie Remis anbieten könnenSie müssen eine Turnierdatei zum Speichern der Turnierdaten angebenSie haben ein Turnier neu gestartet, das schon beendet war. Eine neue Runde wird hinzugefügt. Die Spiele beginnen in 10 Sekunden.Ihr Gegner hat die Zeit noch nicht überschrittenVergrößerungsfaktor in Auswertungsgraph:A_ktion_Bearbeiten_Datei_Hilfe_Modus_Optionen_AnsichtNächsten Zug hinzufügenAtomschachfalsche searchTime-Option %sfalsche timeControl-Option %sBerolina *durchsuchenach Namennach TypChu-Shogi (12×12)klassischLeerenSchließenÄnderungen speichernEGBB-Bibliothek konnte nicht geladen werdenKurier (12×8)runterSende FehlerberichtElfenschach (10×10)SchachprogrammFabrikSchreiben des PV fehlgeschlagenFeenschachSuche StellungerstesFeste MaximalbedenkzeitVerzichtengroß (10×10)ZuwachsInteres rcmd ist in UNIX nicht implementiertLosersMächtiger LöweZugEngNächsteNächste SeiteKeine zu Ihrer Anfrage passenden Spiele gefundenNur markierte Felder sind erlaubtOder geben Sie unten eins an:Feste Aufstellung auswählenVorherige SeiteProtokollversion %d nicht unterstütztzufälligRechte gewährtRechte verwährtÄnderungen speichernInterner Fehler; falscher moveType %d (%d,%d-%d,%d)zweitesShogi (9×9)ShuffleKennzeichenSchwellenwertZwei Königehochgegenweißes Pixel = 0x%lx, schwarzes Pixel = 0x%lx Falsche EGBB-VersionXiangqi (9×10)Ihr Gegner kibitzt: %sxboard-4.9.1/po/de.po0000644000175000001440000020532212747543737011316 00000000000000# XBoard -- a graphical chessboard for X # Copyright (C) 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the XBoard package. # Arun Persaud , 2009,2012,2013 # Roland Illig , 2015-2016 # msgid "" msgstr "" "Project-Id-Version: xboard 4.9.0-pre2\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2016-04-06 22:35+0200\n" "Last-Translator: Roland Illig \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.7\n" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: .\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "%s in der Konfigurationsdatei\n" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "Falscher ganzzahliger Wert %s" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "Nicht erkanntes Argument %s" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "Fehlender Wert für Argument %s" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Unvollständiges \\-Escape im Wert von »%s«" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "Fehler beim Öffnen der Datei »%s«" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Unbekannter logischer Wert für Argument %s" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "erstes" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "zweites" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "Protokollversion %d nicht unterstützt" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "Das Computerprogramm für das Schachprogramm wurde nicht angegeben" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "falsche timeControl-Option %s" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "falsche searchTime-Option %s" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "Variante %s wird nur im ICS-Modus unterstützt" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "Unbekannte Variante mit Namen %s" #: backend.c:1457 msgid "Starting chess program" msgstr "Schachprogramm wird gestartet" #: backend.c:1480 msgid "Bad game file" msgstr "Fehler in Partiedatei" #: backend.c:1487 msgid "Bad position file" msgstr "Fehler in Positionsdatei" #: backend.c:1501 msgid "Pick new game" msgstr "Neues Spiel wählen" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" "Sie haben ein Turnier neu gestartet, das schon beendet war.\n" "Eine neue Runde wird hinzugefügt.\n" "Die Spiele beginnen in 10 Sekunden." #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "Alle Spiele im Turnier »%s« sind entweder beendet oder werden gespielt" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "Partie ohne Schachprogram ist nicht möglich" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "Kommunikationsport %s konnte nicht geöffnet werden" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "" "Verbindung zu Hostrechner %s, Portnummer %s konnte nicht hergestellt werden" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "Unbekannter initalMode %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "»Datei analysieren«-Modus benötigt eine Partiedatei" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "Analyse-Modus benötigt ein Schachprogramm" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "Analyse-Modus funktioniert nicht im ICS-Modus" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "»Schachprogramm Weiß«-Modus benötigt ein Schachprogramm" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "»Schachprogramm Weiß«-Modus funktioniert nicht im ICS-Modus" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "»Schachprogramm Schwarz«-Modus benötigt ein Schachprogramm" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "»Schachprogramm Schwarz«-Modus funktioniert nicht im ICS-Modus" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "»Zwei Schachprogramme«-Modus benötigt ein Schachprogramm" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "»Zwei Schachprogramme«-Modus funktioniert nicht im ICS-Modus" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "Trainieren-Modus benötigt eine Partiedatei" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "Fehler beim Schreiben zum ICS" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "Fehler beim Lesen der Tastatur" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "Ende-der-Datei von der Tastatur erhalten" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "Unbekannte wild-Variante %d" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "Fehler beim Schreiben auf dem Display" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "Ihr Gegner kibitzt: %s" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "Fehler beim Erstellen der Zugliste: zwei Dateiköpfe" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "Fehler beim Erstellen der Zugliste: verschachtelt" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "gegen" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "Illegaler Zug (abgelehnt vom ICS)" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "Verbindung zum ICS beendet" #: backend.c:4306 msgid "Error reading from ICS" msgstr "Fehler beim Lesen vom ICS" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" "Konnte Schachbrettzeichenkette nicht parsen:\n" "»%s«" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" "Partie zu lang; erhöhen Sie MAX_MOVES und kompilieren Sie das Programm neu" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "Fehler beim Erstellen der Zugliste: extra Schachbrett" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Zug »%s« vom ICS konnte nicht geparst werden" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "Interner Fehler; falscher moveType %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "Solange Sie spielen oder einem Spiel zuschauen, ist das nicht möglich" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" "Kompilieren Sie das Programm erneut mit Unterstützung von BOARD_RANKS oder " "BOARD_FILES!" #: backend.c:6858 msgid "You are playing Black" msgstr "Sie spielen Schwarz" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "Sie spielen Weiß" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Weiß ist am Zug" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Schwarz ist am Zug" #: backend.c:6920 msgid "Displayed position is not current" msgstr "Angezeigte Position ist nicht die aktuelle" #: backend.c:7123 msgid "rights granted" msgstr "Rechte gewährt" #: backend.c:7123 msgid "rights revoked" msgstr "Rechte verwährt" #: backend.c:7175 msgid "Illegal move" msgstr "Ungültiger Zug" #: backend.c:7255 msgid "End of game" msgstr "Ende des Spiels" #: backend.c:7258 msgid "Incorrect move" msgstr "Ungültiger Zug" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "Bauern zum Unterverwandeln rückwärts bewegen" #: backend.c:7780 msgid "only marked squares are legal" msgstr "Nur markierte Felder sind erlaubt" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "Turnier im Schweizer System beendet" #: backend.c:8632 msgid "could not load EGBB library" msgstr "EGBB-Bibliothek konnte nicht geladen werden" #: backend.c:8635 msgid "wrong EGBB version" msgstr "Falsche EGBB-Version" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "Ungültige Paarungen vom Paarungsprogramm" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Illegaler Zug »%s« vom Schachprogramm %s" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "Schlechte FEN vom Schachprogramm erhalten" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "" "Schachprogramm hat die Startaufstellung für die Spielvariante nicht gesendet" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s unterstützt keine Analyse" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Illegaler Zug »%s« (abgelehnt vom Schachprogram %s)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Konnte %s Schachprogram %s auf %s nicht starten: %s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "Hinweis: %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" "Illegaler Zughinweis »%s«\n" "vom Schachprogramm %s" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "Das Schachprogramm akzeptiert Ihr Remisangebot" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" "Das Schachprogramm bietet Remis an.\n" "Wählen Sie Aktion/Remis, um anzunehmen." #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "Schreiben des PV fehlgeschlagen" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Nicht eindeutiger Zug in der ICS-Ausgabe: »%s«" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Ungültiger Zug in der ICS-Ausgabe: »%s«" #: backend.c:10132 msgid "Gap in move list" msgstr "Lücke in Zugliste" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "Variante %s wird von %s nicht unterstützt" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr ", aber %s ist" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "Fehler beim Starten »%s«" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "Warte auf erstes Schachprogramm" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "Warte auf zweites Schachprogramm" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "Schreibzugriff auf Turnierdatei nicht möglich" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" "Ersetzen eines Schachprogramms während es läuft nicht möglich!\n" "Beenden Sie das Spiel zuerst." #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "Ein Schachprogram mit dem angegebenen Namen ist nicht installiert" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" "Ändern Sie ein Schachprogramm, indem Sie die Liste der Teilnehmner\n" "im Turnieroptionendialog editieren" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "Sie können immer nur ein Schachprogramm ändern" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "Das Schachprogram %s ist nicht installiert" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" "Sie müssen eine Turnierdatei zum Speichern\n" "der Turnierdaten angeben" #: backend.c:11200 msgid "Not enough participants" msgstr "Nicht genügend Teilnehmer" #: backend.c:11403 msgid "Bad tournament file" msgstr "Fehler in Turnierdatei" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "Warte auf weitere Spiele" #: backend.c:11428 msgid "No pairing engine specified" msgstr "Kein Paarungsprogram angegeben" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "Durchschnittliche Lösungszeit %4.2f Sek (Gesamtzeit %4.2f Sek) " #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "%d Verhinderungszüge gespielt " #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "%d von %d gelöst (%3.1f%%) " #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Match %s gegen %s: Endergebnis %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Unerlaubter Zug: %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Mehrdeutiger Zug: %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "»%s« konnte nicht geöffnet werden" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "Zugliste konnte nicht erstellt werden" #: backend.c:12574 msgid "No more games in this message" msgstr "Keine weiteren Partien in dieser Nachricht" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "Noch keine Partie geladen" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "Kann nicht weiter zurückgehen" #: backend.c:13065 msgid "Game number out of range" msgstr "Partienummer außerhalb des Bereichs" #: backend.c:13076 msgid "Can't seek on game file" msgstr "Fehler beim Springen in der Partiedatei" #: backend.c:13134 msgid "Game not found in file" msgstr "Spiel in Datei nicht gefunden" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "Ungültige FEN-Stellung in Datei" #: backend.c:13423 msgid "No moves in game" msgstr "Keine Züge in dem Spiel" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "Noch keine Stellung geladen" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "Fehler beim Springen in der Stellungsdatei" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "Stellung in Datei nicht gefunden" #: backend.c:13645 msgid "Black to play" msgstr "Schwarz am Zug" #: backend.c:13648 msgid "White to play" msgstr "Weiß am Zug" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "Warte auf Zugriff zur Datei zum Speichern" #: backend.c:13737 msgid "Saving game" msgstr "Spiel wird gespeichert" #: backend.c:13738 msgid "Bad Seek" msgstr "Fehler beim Springen in der Datei" #: backend.c:14111 msgid "Saving position" msgstr "Stellung wird gespeichert" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" "Sie haben die Partieentwicklung verändert.\n" "Benutzen Sie »Spiel erneut laden« und führen Sie ihren Zug erneut aus." #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" "Sie haben zu viele Züge eingegeben.\n" "Gehen Sie zur richtigen Stellung zurück und versuchen Sie es erneut." #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" "Die angezeigte Stellung ist nicht die aktuelle.\n" "Gehen Sie vorwärts zur richtigen Stellung und versuchen Sie es erneut." #: backend.c:14294 msgid "You have not made a move yet" msgstr "Sie haben noch keinen Zug gemacht" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" "Die CMail-Nachricht wurde noch nicht geladen.\n" "Benutzen sie »CMail Nachricht erneut laden« und führen Sie ihren Zug erneut " "aus." #: backend.c:14320 msgid "No unfinished games" msgstr "Keine laufenden Partien" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" "Sie haben ihren Zug schon verschickt.\n" "Warten Sie bis der Zug ihres Gegners ankommt.\n" "Um denselben Zug erneut zu versenden, tippen Sie\n" "»cmail -remail -game %s«\n" "in die Kommandozeile." #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "Fehler beim Aufruf von cmail" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Warte auf Antwort des Gegners\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "Sie müssen noch einen Zug für die Partie machen\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "Sie müssen noch Züge für beide Partien machen\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "Sie müssen noch Züge für alle %d Partien machen\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "Sie müssen noch einen Zug für Partie %s machen\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "Keine laufenden Partien\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "Bereit zum Versenden der Mail\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Sie müssen noch Züge für Partie %s machen\n" #: backend.c:14656 msgid "Edit comment" msgstr "Kommentar bearbeiten" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Kommentar für %d.%s%s bearbeiten" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "Sie schauen keiner Partie zu" #: backend.c:14824 msgid "It is not White's turn" msgstr "Weiß ist nicht am Zug" #: backend.c:14907 msgid "It is not Black's turn" msgstr "Schwarz ist nicht am Zug" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "Schachprogramm %s wird gestartet" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" "Warten Sie, bis Sie am Zug sind,\n" "oder wählen Sie »Jetzt ziehen«." #: backend.c:15188 msgid "Training mode off" msgstr "Trainier-Modus aus" #: backend.c:15196 msgid "Training mode on" msgstr "Trainier-Modus ein" #: backend.c:15199 msgid "Already at end of game" msgstr "Schon am Ende der Partie" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "Warnung: Sie spielen noch eine Partie" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "Warnung: Sie schauen noch einer Partie zu" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "Warnung: Sie untersuchen noch eine Partie" #: backend.c:15365 msgid "Click clock to clear board" msgstr "Klicke auf eine Uhr, um das Brett zu leeren" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "Schließe ICS Programmanalyse…" #: backend.c:15711 msgid "That square is occupied" msgstr "Dieses Feld ist besetzt" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "Es liegt kein unbeantwortes Angebot für diesen Zug vor" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "Ihr Gegner hat die Zeit noch nicht überschritten" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "Sie müssen erst ziehen, bevor Sie Remis anbieten können" #: backend.c:16220 msgid "You are not examining a game" msgstr "Sie untersuchen keine Partie" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "Sie können nicht zurücknehmen, solange die Partie pausiert" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "Sie sind am Zug" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "Warten Sie, bis Sie am Zug sind." #: backend.c:16348 msgid "No hint available" msgstr "Kein Hinweis erhältlich" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "Noch keine Partie geladen" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "" "Buchdatei existiert bereits! Versuchen Sie es erneut zum Überschreiben." #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "Fehler beim Schreiben zum Schachprogramm %s" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "%s Schachprogramm beendet in Remisstellung (%s)" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Fehler: %s Schachprogramm (%s) unerwartet beendet" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Fehler beim Lesen vom Schachprogramm %s (%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "Schachprogramm %s hat zu viele Optionen\n" #: backend.c:17521 msgid "Displayed move is not current" msgstr "Der angezeigte Zug ist nicht der aktuelle" #: backend.c:17530 msgid "Could not parse move" msgstr "Konnte Zug nicht parsen" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "Beide Plättchen sind gefallen" #: backend.c:17657 msgid "White's flag fell" msgstr "Das weiße Plättchen ist gefallen" #: backend.c:17679 msgid "Black's flag fell" msgstr "Das schwarze Plättchen ist gefallen" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "Veränderungen an der Uhr sind im »Auto-flag«-Modus nicht erlaubt" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "Fehlerhafte FEN-Stellung in der Zwischenablage" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "Polyglotbuch nicht zulässig" #: book.c:722 msgid "Book Fault" msgstr "Buchfehler" #: book.c:877 msgid "Hash keys are different" msgstr "Hashschlüssel sind verschieden" #: book.c:1054 msgid "Could not create book" msgstr "Buch konnte nicht erzeugt werden" #: dialogs.c:287 msgid "Tournament file: " msgstr "Turnierdatei: " #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "Zum gleichzeitigen Durchführen eines Turniers mit mehreren XBoards:" #: dialogs.c:289 msgid "Sync after round" msgstr "Sync. nach der Runde" #: dialogs.c:290 msgid "Sync after cycle" msgstr "Sync. nach Zyklus" #: dialogs.c:291 msgid "Tourney participants:" msgstr "Tunierteilnehmer:" #: dialogs.c:292 msgid "Select Engine:" msgstr "Schachprogramm auswählen:" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "Turniertyp (0 = round-robin, 1 = gauntlet):" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "Anzahl der Turnierrunden:" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "Standardanzahl der Spiele pro Match (oder Paarung):" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "Pause zwischen Tournierspielen (msek):" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "Turnierspiele speichern auf:" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "Spieldatei mit Eröffnungen:" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "Spielnummer (-1 oder -2 bedeutet automatische Zählung):" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "Datei mit Startstellung:" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "Positionsnummer (-1 oder -2 bedeutet automatische Zählung):" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "Index nach so vielen Spielen zurücksetzen (0 = niemals):" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "Eigene Eröffnungsbücher standardmäßig deaktivieren" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "Zeitkontrolle" #: dialogs.c:312 msgid "Common Engine" msgstr "Allgemeines Schachprogramm" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Allgemeine Einstellungen" #: dialogs.c:314 msgid "Continue Later" msgstr "Später fortsetzen" #: dialogs.c:315 msgid "Replace Engine" msgstr "Schachprogramm ersetzen" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "Schachprogramm aktualisieren" #: dialogs.c:317 msgid "Clone Tourney" msgstr "Turnier klonen" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "" "Bitte geben Sie zuerst eine existierende Turnierdatei an, die geklont werden " "soll" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "# keine Schachprogramme installiert" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "Interner Fehler: PARTICIPANTS falsch" #: dialogs.c:389 msgid "Tournament Options" msgstr "Turniereinstellungen" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "Absolute Analysepunkte" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "Fast immer Dame (Unterverwandlung vermeiden)" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "Ziehen animieren" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "Ziehen animieren" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Zeit automatisch reklamieren" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Brett automatisch drehen" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "Blindschach" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "Loslassmenü" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "Erlaube Varianten" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "Kopfzeilen im Schachprogramm-Ausgabefenster" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "Nachdenken vor dem Menschen verstecken" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Letzten Zug hervorheben" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Hervorhebung mit Pfeil" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Ein-Klick Züge" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "Regelmäßige Aktualisierung (im Analysemodus)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "Züge der angeklickten Variante spielen (Analyse)" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "Nächsten Zug abwägen" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Popup Nachricht beim Beenden" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Dialogfenster für Zugfehler" #: dialogs.c:429 msgid "Scores in Move List" msgstr "Bewertung in Zugliste" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Zeige Koordinaten" #: dialogs.c:431 msgid "Show Target Squares" msgstr "Zeige Zielfeld" #: dialogs.c:432 msgid "Sticky Windows" msgstr "Haftende Fenster" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Auf erlaubte Züge prüfen" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "Haupt-Dialoge" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "Züge blinken lassen (0 = nicht blinken):" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "Blinkgeschwindigkeit (hoch = schnell):" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "Animationsgeschwindigkeit (hoch = langsam):" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "Vergrößerungsfaktor in Auswertungsgraph:" #: dialogs.c:458 msgid "Normal" msgstr "Normal" #: dialogs.c:459 msgid "Makruk" msgstr "Makruk" #: dialogs.c:460 msgid "FRC" msgstr "Schach960" #: dialogs.c:461 msgid "Shatranj" msgstr "Schatrandsch" #: dialogs.c:462 msgid "Wild castle" msgstr "Wilde Rochade" #: dialogs.c:463 msgid "Knightmate" msgstr "Springermatt" #: dialogs.c:464 msgid "No castle" msgstr "Keine Rochade" #: dialogs.c:465 msgid "Cylinder *" msgstr "Zylinder *" #: dialogs.c:466 msgid "3-checks" msgstr "3-fach-Schach" #: dialogs.c:467 msgid "berolina *" msgstr "Berolina *" #: dialogs.c:468 msgid "atomic" msgstr "Atomschach" #: dialogs.c:469 msgid "two kings" msgstr "Zwei Könige" #: dialogs.c:470 msgid " " msgstr " " #: dialogs.c:471 msgid "Spartan" msgstr "Sparta-Schach" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "Brettgröße (-1 = default für gewählte Variante):" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "Anzahl der Reihen:" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "Anzahl der Linien:" #: dialogs.c:475 msgid "Holdings Size:" msgstr "Vorrats-Größe:" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" "Varianten, die mit * markiert sind, können nur gespielt\n" "werden, wenn die Prüfung auf erlaubte Züge ausgeschaltet ist." #: dialogs.c:479 msgid "ASEAN" msgstr "ASEAN-Schach" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "Groß-Schatrandsch (10×8)" #: dialogs.c:481 msgid "Seirawan" msgstr "Seiwaran" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "Falken-Schach" #: dialogs.c:483 msgid "Superchess" msgstr "Superschach" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "Capablanca (10×8)" #: dialogs.c:485 msgid "Crazyhouse" msgstr "Crazyhouse" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "Gothic (10×8)" #: dialogs.c:487 msgid "Bughouse" msgstr "Bughouse" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "Janusschach (10×8)" #: dialogs.c:489 msgid "Suicide" msgstr "Räuberschach" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "CRC (10×8)" #: dialogs.c:491 msgid "give-away" msgstr "Verzichten" #: dialogs.c:492 msgid "grand (10x10)" msgstr "groß (10×10)" #: dialogs.c:493 msgid "losers" msgstr "Losers" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "Shogi (9×9)" #: dialogs.c:495 msgid "fairy" msgstr "Feenschach" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "Xiangqi (9×10)" #: dialogs.c:497 msgid "mighty lion" msgstr "Mächtiger Löwe" #: dialogs.c:498 msgid "courier (12x8)" msgstr "Kurier (12×8)" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "Elfenschach (10×10)" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "Chu-Shogi (12×12)" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Warnung: zweites Schachprogramm (%s) unterstützt dies nicht!" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "Nur Bughouse ist nicht im Partieansicht-Modus verfügbar." #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" "Alle Varianten, die das erste Schachprogramm nicht kann\n" "(derzeit %s) sind deaktiviert." #: dialogs.c:596 msgid "New Variant" msgstr "Neue Variante" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "Maximal Anzahl der CPUs pro Schachprogram:" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "Polyglotverzeichnis:" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "Größe der Hashtabelle (MB):" #: dialogs.c:631 msgid "EGTB Path:" msgstr "EGTB-Pfad:" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "EGTB-Cachegröße (MB):" #: dialogs.c:633 msgid "Use GUI Book" msgstr "GUI-Buch benutzen" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "Dateiname des Eröffnungsbuches:" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "Buchtiefe (Züge):" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "Buchvielfalt (0) gegenüber Spielstärke (100):" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "Engine #1 hat eigenes Buch" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "Engine #2 hat eigenes Buch" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "Allgemeine Schachprogramm-Einstellungen" #: dialogs.c:655 msgid "Detect all Mates" msgstr "Alle Mattbilder erkennen" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "Partieergebnisse des Schachprogramms kontrollieren" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "Remis bei zuwenig Material zum Mattsetzen" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Triviale Remis entscheiden (nach 3 Zügen)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "N-Züge Regel:" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "N-fache Stellungswiederholung:" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "Remis nach N Zügen (insgesamt):" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "Gewinn/Verlust Grenzwert:" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "Negiere Bewertung des 1. Schachprogramms" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "Negiere Bewertung des 2. Schachprogramms" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "Nicht-ICS-Spiele entscheiden" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "Auto-Kibitz" #: dialogs.c:685 msgid "Auto-Comment" msgstr "Automatische Kommentare" #: dialogs.c:686 msgid "Auto-Observe" msgstr "Automatisch Beobachten" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Automatisch das Brett in den Vordergrung bringen" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "Automatisch Login-Skript erzeugen" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "Beobachte im Hintegrund während einer Partie" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "Zweites Brett für beobachtetes Spiel" #: dialogs.c:691 msgid "Get Move List" msgstr "Zugliste abholen" #: dialogs.c:692 msgid "Quiet Play" msgstr "Ruhiges Spiel" #: dialogs.c:693 msgid "Seek Graph" msgstr "Suchgraph" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "Suchgraph automatisch aktualisieren" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "Automatisches Eingabefenster einblenden" #: dialogs.c:696 msgid "Quit after game" msgstr "Nach der Partie beenden" #: dialogs.c:697 msgid "Premove" msgstr "Vorzeitiges Ziehen" #: dialogs.c:698 msgid "Premove for White" msgstr "Vorzeitiges Ziehen für Weiß" #: dialogs.c:699 msgid "First White Move:" msgstr "Erster Zug von Weiß:" #: dialogs.c:700 msgid "Premove for Black" msgstr "Vorzeitiges Ziehen für Schwarz" #: dialogs.c:701 msgid "First Black Move:" msgstr "Erster Zug von Schwarz:" #: dialogs.c:703 msgid "Alarm" msgstr "Alarm" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "Alarmzeit (msek):" #: dialogs.c:706 msgid "Colorize Messages" msgstr "Nachrichten einfärben" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "Textfarbe Ruf:" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "Textfarbe S-Ruf:" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "Textfarbe Kanal #1:" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "Textfarbe andere Kanäle:" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "Textfarbe Kibitz:" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "Textfarbe Mitteilung:" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "Textfarbe Herausforderung:" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "Textfarbe für Anfragen:" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "Textfarbe Spielgesuch:" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "Andere Textfarben:" #: dialogs.c:723 msgid "ICS Options" msgstr "ICS Optionen" #: dialogs.c:728 msgid "Exact position match" msgstr "Exakte Stellungsübereinstimmung" #: dialogs.c:728 msgid "Shown position is subset" msgstr "Die angezeigte Stellung ist eine Teilstellung" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "Gleiches Material mit genau gleicher Bauernstruktur" #: dialogs.c:729 msgid "Same material" msgstr "Gleiches Material" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "Materialstärke (obere Bretthälfte ist optional)" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "Materialunterschied (optionale Figuren ausgeglichen)" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "Markierungen automatisch anzeigen" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "Kommentar automatisch anzeigen" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" "Abspielgeschwindigkeit von geladenen Spielen\n" "(0 = sofort, -1 = aus):" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "Sekunden pro Zug:" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" "\n" "Einstellungen für den Spielbetrachten-Modus:" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" "\n" "Schwellwert für Stellungsfilter in Partieliste:" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "Mind. Elo des stärksten Spielers:" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "Mind. Elo des schwächsten Spielers:" #: dialogs.c:753 msgid "No games before year:" msgstr "Nur Partien ab Jahr:" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "Mindestanzahl von aufeinanderfolgenden Stellungen:" #: dialogs.c:756 msgid "Search mode:" msgstr "Suchmodus:" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "Auch mit vertauschten Farben suchen" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "Auch gespiegelte Positionen suchen" #: dialogs.c:767 msgid "Load Game Options" msgstr "Spieleinstellungen laden" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "Automatisch Partien speichern" #: dialogs.c:780 msgid "Own Games Only" msgstr "Nur eigene Partien" #: dialogs.c:781 msgid "Save Games on File:" msgstr "Partien speichern als Datei:" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "Speichere Endstellung in Datei:" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "PGN-Veranstaltungs-Kopfzeile:" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "Alter Speichermodus (im Gegensatz zu PGN)" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "Nummernkennzeichen in Turnier-PGN einschließen" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "Stellungsbewertung/Rechentiefe in PGN speichern" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "Eröffnungsbuch-Daten in PGN speichern" #: dialogs.c:794 msgid "Save Game Options" msgstr "Spieleinstellungen speichern" #: dialogs.c:803 msgid "No Sound" msgstr "Kein Ton" #: dialogs.c:804 msgid "Default Beep" msgstr "Standard-Piepton" #: dialogs.c:805 msgid "Above WAV File" msgstr "Obige WAV-Datei" #: dialogs.c:806 msgid "Car Horn" msgstr "Hupe" #: dialogs.c:807 msgid "Cymbal" msgstr "Becken" #: dialogs.c:808 msgid "Ding" msgstr "Ding" #: dialogs.c:809 msgid "Gong" msgstr "Gong" #: dialogs.c:810 msgid "Laser" msgstr "Laser" #: dialogs.c:811 msgid "Penalty" msgstr "Strafe" #: dialogs.c:812 msgid "Phone" msgstr "Telefon" #: dialogs.c:813 msgid "Pop" msgstr "Pop" #: dialogs.c:814 msgid "Roar" msgstr "Fauchen" #: dialogs.c:815 msgid "Slap" msgstr "Schlagbass" #: dialogs.c:816 msgid "Wood Thunk" msgstr "Holzblock" #: dialogs.c:818 msgid "User File" msgstr "Benutzerdatei" #: dialogs.c:841 msgid "User WAV File:" msgstr "Eigene WAV-Datei:" #: dialogs.c:842 msgid "Sound Program:" msgstr "Abspielprogramm:" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "Teste Geräusch:" #: dialogs.c:844 msgid "Play" msgstr "Spielen" #: dialogs.c:845 msgid "Move:" msgstr "Zug:" #: dialogs.c:846 msgid "Win:" msgstr "Gewonnen:" #: dialogs.c:847 msgid "Lose:" msgstr "Verloren:" #: dialogs.c:848 msgid "Draw:" msgstr "Remis:" #: dialogs.c:849 msgid "Unfinished:" msgstr "Nicht beendet:" #: dialogs.c:850 msgid "Alarm:" msgstr "Alarm:" #: dialogs.c:851 msgid "Challenge:" msgstr "Herausforderung:" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "Klangverzeichnis:" #: dialogs.c:854 msgid "Shout:" msgstr "Ruf:" #: dialogs.c:855 msgid "S-Shout:" msgstr "S-Ruf:" #: dialogs.c:856 msgid "Channel:" msgstr "Kanal:" #: dialogs.c:857 msgid "Channel 1:" msgstr "Kanal 1:" #: dialogs.c:858 msgid "Tell:" msgstr "Mitteilung:" #: dialogs.c:859 msgid "Kibitz:" msgstr "Kibitz:" #: dialogs.c:860 msgid "Request:" msgstr "Anfrage:" #: dialogs.c:861 msgid "Lion roar:" msgstr "Löwenfauchen:" #: dialogs.c:862 msgid "Seek:" msgstr "Gesuch:" #: dialogs.c:880 msgid "Sound Options" msgstr "Klangeinstellungen" #: dialogs.c:896 msgid "Selectable themes:" msgstr "Wählbare Designs:" #: dialogs.c:898 msgid "New name for current theme:" msgstr "Neuer Name für aktuelles Design:" #: dialogs.c:901 msgid "White Piece Color:" msgstr "Farbe weiße Figuren:" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "R" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "G" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "B" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "D" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "Farbe schwarze Figuren:" #: dialogs.c:917 msgid "Light Square Color:" msgstr "Weißes Feld:" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "Schwarzes Feld:" #: dialogs.c:929 msgid "Highlight Color:" msgstr "Farbe zum Hervorheben:" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "Farbe zum Hervorheben vorzeitiger Züge:" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" "Figuren im Shogi-Stil umdrehen (Farbige Schaltflächen setzen die Einstellung " "zurück)" #: dialogs.c:943 msgid "Mono Mode" msgstr "Mono-Modus" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "Logo-Größe (0=aus, benötigt Neustart):" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "Linienabstand (-1 = Vorgabewert für Brettgröße):" #: dialogs.c:946 msgid "Use Board Textures" msgstr "Benutze Bretttexturen" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "Texturdatei für schwarze Felder:" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "Texturedatei für weiße Felder:" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "Benutze externe Figurebitmaps mit deren Farben" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "Verzeichnis mit Bildern für Figuren:" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "# keine Designs installiert" #: dialogs.c:1033 msgid "Board Options" msgstr "Bretteinstellungen" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "ICS-Textmenü" #: dialogs.c:1134 msgid "clear" msgstr "Leeren" #: dialogs.c:1135 msgid "save changes" msgstr "Änderungen speichern" #: dialogs.c:1233 msgid "add next move" msgstr "Nächsten Zug hinzufügen" #: dialogs.c:1234 msgid "commit changes" msgstr "Änderungen speichern" #: dialogs.c:1257 msgid "Edit book" msgstr "Buch editieren" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Markierungen" #: dialogs.c:1405 msgid "ICS input box" msgstr "ICS Eingabefeld" #: dialogs.c:1437 msgid "Type a move" msgstr "Geben Sie einen Zug ein" #: dialogs.c:1463 msgid "Engine has no options" msgstr "Schachprogramm hat keine Optionen" #: dialogs.c:1465 msgid "Engine Settings" msgstr "Schachprogrammeinstellungen" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "Schachprogram aus der Liste auswählen:" #: dialogs.c:1509 msgid "or specify one below:" msgstr "Oder geben Sie unten eins an:" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "Spitzname (optional):" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" "Spitzname in PGN-Spieler-Kennzeichen bei Spielen zwischen Schachprogrammen " "benutzen" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "Schachprogramm-Verzeichnis:" #: dialogs.c:1513 msgid "Engine Command:" msgstr "Schachprogramkommando:" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "(Verzeichnis wird vom Schachprogrampfad genommen, falls leer)" #: dialogs.c:1515 msgid "UCI" msgstr "UCI" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "USI/UCCI (benutzt den angegebenen -uxiAdapter)" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "WB-Protokoll Version 1 (nicht auf Features des Schachprogramms warten)" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "Kein GUI-Buch benutzen" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "Füge diese Schachprogramm zur Liste hinzu" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "Aktuelle Variante mit diesem Schachprogramm erzwingen" #: dialogs.c:1574 msgid "Load first engine" msgstr "Lade erstes Schachprogramm" #: dialogs.c:1580 msgid "Load second engine" msgstr "Lade zweites Schachprogramm" #: dialogs.c:1603 msgid "shuffle" msgstr "Shuffle" #: dialogs.c:1604 msgid "Fischer castling" msgstr "Fischer-Rochade" #: dialogs.c:1605 msgid "Start-position number:" msgstr "Startposition-Nummer:" #: dialogs.c:1606 msgid "randomize" msgstr "zufällig" #: dialogs.c:1607 msgid "pick fixed" msgstr "Feste Aufstellung auswählen" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Neue Shuffle-Partie" #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "Uhren (benötigt Neustart):" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "+" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "-" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "K" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "*" #: dialogs.c:1677 msgid "Message (above board):" msgstr "Nachricht (über dem Brett):" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "ICS-Chat/Konsole:" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "Tags / Buch / Schachprogramme bearbeiten:" #: dialogs.c:1695 msgid "Edit comments:" msgstr "Kommentare bearbeiten:" #: dialogs.c:1701 msgid "Move history / Engine Output:" msgstr "Zughistorie / Schachprogrammausgabe:" #: dialogs.c:1707 msgid "Game list:" msgstr "Partieliste:" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" "\n" "Die *-Schaltflächen ändern die Schrift zu der unten ausgewählten:" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "Das funktioniert nur der GTK-Variante des Programms" #: dialogs.c:1768 msgid "Fonts" msgstr "Schriftarten" #: dialogs.c:1791 msgid "classical" msgstr "klassisch" #: dialogs.c:1792 msgid "incremental" msgstr "Zuwachs" #: dialogs.c:1793 msgid "fixed max" msgstr "Feste Maximalbedenkzeit" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "Eingegebene Zeiten durch 60 teilen" #: dialogs.c:1795 msgid "Moves per session:" msgstr "Züge pro Sitzung:" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "Grundbedenkzeit (min):" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "Zeitbonus oder Maximalbedenkzeit (sek/Zug):" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "Ungleiche Zeitverteilung:" #: dialogs.c:1799 msgid "Engine #1" msgstr "Schachprogramm #1" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "Schachprogram #2 / Spieler" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "Nicht benutzt" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "Das Ändern der Bedenkzeit während eines Spiels ist nicht implementiert" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "Fehler beim Schreiben zum Schachprogramm" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "Abbrechen" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "König" #: dialogs.c:1972 msgid "Captain" msgstr "Kapitän" #: dialogs.c:1973 msgid "Lieutenant" msgstr "Leutnant" #: dialogs.c:1974 msgid "General" msgstr "General" #: dialogs.c:1975 msgid "Warlord" msgstr "Kriegsherr" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Springer" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Läufer" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Turm" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "Erzbischof" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "Kanzler" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Königin" #: dialogs.c:1988 msgid "Lion" msgstr "Löwe" #: dialogs.c:1992 msgid "Defer" msgstr "Vertagen" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Umwandeln" #: dialogs.c:2050 msgid "Chats:" msgstr "Chats:" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 msgid "New Chat" msgstr "Neuer Chat" #: dialogs.c:2058 msgid "Chat partner:" msgstr "Chatpartner:" #: dialogs.c:2059 msgid "End Chat" msgstr "Chat beenden" #: dialogs.c:2060 msgid "Hide" msgstr "Verstecken" #: dialogs.c:2287 msgid "ICS Interaction" msgstr "ICS-Interaktion" #: dialogs.c:2372 msgid "factory" msgstr "Fabrik" #: dialogs.c:2373 msgid "up" msgstr "hoch" #: dialogs.c:2374 msgid "down" msgstr "runter" #: dialogs.c:2393 msgid "No tag selected" msgstr "Keine Markierung selektiert" #: dialogs.c:2424 msgid "Game-list options" msgstr "Spieleliste-Optionen" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Fehler" #: dialogs.c:2545 msgid "Fatal Error" msgstr "Schwerwiegender Fehler" #: dialogs.c:2545 msgid "Exiting" msgstr "Programm wird beendet" #: dialogs.c:2556 msgid "Information" msgstr "Information" #: dialogs.c:2563 msgid "Note" msgstr "Notiz" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Weiß" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Bauer" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "Elefant" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "Kanone" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "Degradieren" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Leeres Feld" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Brett leeren" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Schwarz" #: dialogs.c:2827 msgid "_File" msgstr "_Datei" #: dialogs.c:2828 msgid "_Edit" msgstr "_Bearbeiten" #: dialogs.c:2829 msgid "_View" msgstr "_Ansicht" #: dialogs.c:2830 msgid "_Mode" msgstr "_Modus" #: dialogs.c:2831 msgid "_Action" msgstr "A_ktion" #: dialogs.c:2832 msgid "E_ngine" msgstr "Schach_programm" #: dialogs.c:2833 msgid "_Options" msgstr "_Optionen" #: dialogs.c:2834 msgid "_Help" msgstr "_Hilfe" #: dialogs.c:2844 msgid "<<" msgstr "<<" #: dialogs.c:2845 msgid "<" msgstr "<" #: dialogs.c:2847 msgid ">" msgstr ">" #: dialogs.c:2848 msgid ">>" msgstr ">>" #: dialogs.c:3136 msgid "Directories:" msgstr "Verzeichnisse:" #: dialogs.c:3137 msgid "Files:" msgstr "Dateien:" #: dialogs.c:3138 msgid "by name" msgstr "nach Namen" #: dialogs.c:3139 msgid "by type" msgstr "nach Typ" #: dialogs.c:3142 msgid "Filename:" msgstr "Dateinname:" #: dialogs.c:3143 msgid "New directory" msgstr "Neues Verzeichnis" #: dialogs.c:3144 msgid "File type:" msgstr "Dateityp:" #: dialogs.c:3219 msgid "Contents of" msgstr "Inhalt von" #: dialogs.c:3245 msgid " next page" msgstr " nächste Seite" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "Geben Sie zuerst hier den Verzeichnisnamen an" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "VERSUCHE EINEN ANDEREN NAMEN" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" "Kein Standard-Figurensatz installiert!\n" "Wählen Sie mit der Option »-pieceImageDirectory« Ihren eigenen." #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "Schachprogrammausgabe" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "%s (%d rücknehmbarer Halbzug)" msgstr[1] "%s (%d rücknehmbare Halbzüge)" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "NPS" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "Lese Partiedatei (%d)" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: cd zu CHESSDIR funktioniert nicht: " #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "Fehler beim Öffnen der Datei '%s'\n" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Kompiliere erneut mit größeren BOARD_RANKS oder BOARD_FILES, um diese Größe " "zu unterstützen" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: falsche boardSize Syntax %s\n" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: unbekannter Name fuer boardSize %s\n" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: nicht genügend Farben vorhanden; versuche monochrom Modus\n" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Nicht in der Lage Schriftsatz für %s zu generieren.\n" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: keine Schriften stimmen mit Muster %s überein\n" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "Kann temporäre Datei nicht öffnen" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "Fehler beim Öffnen der Datei" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "Durchsuchen" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "OK" #: menus.c:136 msgid "Load game file name?" msgstr "Lade Partiedatei mit Namen?" #: menus.c:183 msgid "Load position file name?" msgstr "Lade Stellungsdatei mit Namen?" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "Speichere Partiedatei mit Namen?" #: menus.c:198 msgid "Save position file name?" msgstr "Speicher Stellungsdatei mit Namen?" #: menus.c:355 msgid " (with Zippy code)" msgstr " (mit Zippy)" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Verbesserungen Copyright 1992-2014 Free Software Foundation\n" "Verbesserungen Copyright 2005 Alessandro Scotti\n" "\n" "%s ist freie Software und gewährt keinerlei Garantie;\n" "weitere Details finden Sie in der Datei COPYING.\n" "\n" "Besuchen Sie XBoard im Web unter: http://www.gnu.org/software/xboard/\n" "Die neuesten Features finden Sie unter: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Fehler melden Sie bitte (auf Englisch) per E-Mail an: \n" "\n" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "Über XBoard" #: menus.c:390 msgid "Registered Engines" msgstr "Registrierte Schachprogramme" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 msgid "New Game" msgstr "Neue Partie" #: menus.c:613 msgid "New Shuffle Game..." msgstr "Neue zufällige Partie…" #: menus.c:614 msgid "New Variant..." msgstr "Neue Variante…" #: menus.c:616 msgid "Load Game" msgstr "Partie laden…" #: menus.c:617 msgid "Load Position" msgstr "Stellung laden" #: menus.c:618 msgid "Next Position" msgstr "Nächste Stellung" #: menus.c:619 msgid "Prev Position" msgstr "Vorherige Stellung" #: menus.c:621 msgid "Save Game" msgstr "Partie speichern…" #: menus.c:622 msgid "Save Position" msgstr "Speichere Stellung" #: menus.c:623 msgid "Save Selected Games" msgstr "Ausgewählte Partien speichern" #: menus.c:624 msgid "Save Games as Book" msgstr "Partien speichern als Buch" #: menus.c:626 msgid "Mail Move" msgstr "Verschicke Zug" #: menus.c:627 msgid "Reload CMail Message" msgstr "CMail Nachricht erneut laden" #: menus.c:629 msgid "Quit " msgstr "Beenden" #: menus.c:634 msgid "Copy Game" msgstr "Partie kopieren" #: menus.c:635 msgid "Copy Position" msgstr "Stellung kopieren" #: menus.c:636 msgid "Copy Game List" msgstr "Partieliste kopieren" #: menus.c:638 msgid "Paste Game" msgstr "Partie einfügen" #: menus.c:639 msgid "Paste Position" msgstr "Stellung einfügen" #: menus.c:641 menus.c:686 msgid "Edit Game" msgstr "Partie editiere" #: menus.c:642 menus.c:687 msgid "Edit Position" msgstr "Stellung editieren" #: menus.c:643 msgid "Edit Tags" msgstr "Markierung bearbeiten" #: menus.c:644 msgid "Edit Comment" msgstr "Kommentar bearbeiten" #: menus.c:645 msgid "Edit Book" msgstr "Editiere Buch" #: menus.c:647 msgid "Revert" msgstr "Neuladen" #: menus.c:648 msgid "Annotate" msgstr "Annotieren" #: menus.c:649 msgid "Truncate Game" msgstr "Partie abbrechen" #: menus.c:651 msgid "Backward" msgstr "Zurück" #: menus.c:652 msgid "Forward" msgstr "Vorwärts" #: menus.c:653 msgid "Back to Start" msgstr "Zurück zum Anfang" #: menus.c:654 msgid "Forward to End" msgstr "Zur Schlussstellung" #: menus.c:659 msgid "Flip View" msgstr "Brett drehen" #: menus.c:662 msgid "Move History" msgstr "Zugliste" #: menus.c:663 msgid "Evaluation Graph" msgstr "Auswertungsgraph" #: menus.c:664 msgid "Game List" msgstr "Partieliste" #: menus.c:667 msgid "Comments" msgstr "Kommentare" #: menus.c:668 msgid "ICS Input Box" msgstr "ICS Eingabefeld" #: menus.c:669 msgid "ICS/Chat Console" msgstr "ICS/Chat-Konsole" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Kommentar bearbeiten" #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Schachprogramm-Liste bearbeiten…" #: menus.c:674 msgid "Board..." msgstr "Brett…" #: menus.c:675 msgid "Fonts..." msgstr "Schriftarten…" #: menus.c:676 msgid "Game List Tags..." msgstr "Partie-Markierungen…" #: menus.c:681 msgid "Machine White" msgstr "Schachprogramm weiß" #: menus.c:682 msgid "Machine Black" msgstr "Schachprogramm schwarz" #: menus.c:683 msgid "Two Machines" msgstr "Zwei Schachprogramme" #: menus.c:684 msgid "Analysis Mode" msgstr "Analyse-Modus" #: menus.c:685 msgid "Analyze Game" msgstr "Spiel analysieren" #: menus.c:688 msgid "Training" msgstr "Training" #: menus.c:689 msgid "ICS Client" msgstr "ICS-Client" #: menus.c:691 msgid "Machine Match" msgstr "Schachprogramm Partie" #: menus.c:692 msgid "Pause" msgstr "Pause" #: menus.c:697 msgid "Accept" msgstr "Annehmen" #: menus.c:698 msgid "Decline" msgstr "Ablehnen" #: menus.c:699 msgid "Rematch" msgstr "Revanche" #: menus.c:701 msgid "Call Flag" msgstr "Zeit reklamieren" #: menus.c:702 msgid "Draw" msgstr "Remis" #: menus.c:703 msgid "Adjourn" msgstr "Aussetzen" #: menus.c:704 msgid "Abort" msgstr "Abbrechen" #: menus.c:705 msgid "Resign" msgstr "Aufgeben" #: menus.c:707 msgid "Stop Observing" msgstr "Beobachtung beenden" #: menus.c:708 msgid "Stop Examining" msgstr "Untersuchen beenden" #: menus.c:709 msgid "Upload to Examine" msgstr "Hochladen zum Untersuchen" #: menus.c:711 msgid "Adjudicate to White" msgstr "Weiß den Gewinn zuerkennen" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Schwarz den Gewinn zuerkennnen" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Auf Remis entscheiden" #: menus.c:718 msgid "Edit Engine List..." msgstr "Schachprogramm-Liste bearbeiten…" #: menus.c:720 msgid "Load New 1st Engine..." msgstr "Neues erstes Schachprogramm laden…" #: menus.c:721 msgid "Load New 2nd Engine..." msgstr "Neues zweites Schachprogramm laden…" #: menus.c:723 msgid "Engine #1 Settings..." msgstr "Einstellungen für Schachprogramm #1…" #: menus.c:724 msgid "Engine #2 Settings..." msgstr "Einstellungen für Schachprogramm #2…" #: menus.c:725 msgid "Common Settings..." msgstr "Allgemeine Einstellungen…" #: menus.c:727 msgid "Hint" msgstr "Hinweis" #: menus.c:728 msgid "Book" msgstr "Buch" #: menus.c:730 msgid "Move Now" msgstr "Jetzt ziehen" #: menus.c:731 msgid "Retract Move" msgstr "Zug zurücknehmen" #: menus.c:736 #, fuzzy msgid "Mute all Sounds" msgstr "Klang für Zug" #: menus.c:739 msgid "General..." msgstr "Allgemein…" #: menus.c:741 msgid "Time Control..." msgstr "Zeitnahme…" #: menus.c:742 msgid "Adjudications..." msgstr "Entscheidungen…" #: menus.c:743 msgid "ICS..." msgstr "ICS…" #: menus.c:744 msgid "Tournament..." msgstr "Turnier…" #: menus.c:745 msgid "Load Game..." msgstr "Partie laden…" #: menus.c:746 msgid "Save Game..." msgstr "Partie speichern…" #: menus.c:747 msgid "Game List..." msgstr "Partieliste…" #: menus.c:748 msgid "Sounds..." msgstr "Klang…" #: menus.c:751 msgid "Always Queen" msgstr "Immer Königin" #: menus.c:757 msgid "Flash Moves" msgstr "Züge aufblitzen lassen" #: menus.c:759 msgid "Highlight Dragging" msgstr "Züge hervorheben" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Mit Pfeil hervorheben" #: menus.c:763 msgid "Move Sound" msgstr "Klang für Zug" #: menus.c:765 msgid "Periodic Updates" msgstr "Periodische Updates" #: menus.c:767 msgid "Popup Exit Message" msgstr "Dialogfenster für Nachricht beim Beenden" #: menus.c:769 msgid "Show Coords" msgstr "Zeige Koordinaten" #: menus.c:770 msgid "Hide Thinking" msgstr "Denken verstecken" #: menus.c:774 msgid "Save Settings Now" msgstr "Einstellungen jetzt speichern" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Einstellung am Ende speichern" #: menus.c:780 msgid "Info XBoard" msgstr "Info über XBoard" #: menus.c:781 msgid "Man XBoard" msgstr "XBoard-Hilfe" #: menus.c:783 msgid "XBoard Home Page" msgstr "XBoard Homepage" #: menus.c:784 msgid "On-line User Guide" msgstr "Online Benutzerhandbuch" #: menus.c:785 msgid "Development News" msgstr "Entwicklungsneuigkeiten" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "Sende Fehlerbericht" #: menus.c:825 msgid "File" msgstr "Datei" #: menus.c:826 msgid "Edit" msgstr "Bearbeiten" #: menus.c:827 msgid "View" msgstr "Anzeigen" #: menus.c:828 msgid "Mode" msgstr "Modus" #: menus.c:829 msgid "Action" msgstr "Aktion" #: menus.c:830 msgid "Engine" msgstr "Schachprogramm" #: menus.c:831 msgid "Options" msgstr "Optionen" #: menus.c:832 msgid "Help" msgstr "Hilfe" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "Schachprogramm" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "Zug" #: nengineoutput.c:156 msgid "Engine output" msgstr "Schachprogrammausgabe" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" "Interner Fehler:\n" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "Auswertungsgraph" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "Patzer-Graph" #: nevalgraph.c:107 msgid "Blunder" msgstr "Patzer" #: nevalgraph.c:107 msgid "Eval" msgstr "Stellungsbewertung" #: ngamelist.c:87 msgid "find position" msgstr "Suche Stellung" #: ngamelist.c:88 msgid "narrow" msgstr "Eng" #: ngamelist.c:89 msgid "thresholds" msgstr "Schwellenwert" #: ngamelist.c:90 msgid "tags" msgstr "Kennzeichen" #: ngamelist.c:91 msgid "next" msgstr "Nächste" #: ngamelist.c:92 msgid "close" msgstr "Schließen" #: ngamelist.c:116 msgid "No game selected" msgstr "Keine Partie ausgewählt" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "Kann nicht weiter vorwärts gehen" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "Durchsuche Spiele (%d)" #: ngamelist.c:211 msgid "previous page" msgstr "Vorherige Seite" #: ngamelist.c:214 msgid "next page" msgstr "Nächste Seite" #: ngamelist.c:217 msgid "no games matched your request" msgstr "Keine zu Ihrer Anfrage passenden Spiele gefunden" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "%s - %d/%d Spiele (%d-%d-%d)" #: ngamelist.c:284 msgid "There is no game list" msgstr "Partieliste existiert nicht" #: nhistory.c:109 msgid "Move list" msgstr "Zugliste" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "%s: nicht erkannte Farbe %s\n" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s: Kann Vordergrundfarbe in »%s« nicht parsen\n" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "%s: kann Farbname nicht parsen; deaktiere Farben\n" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "FEHLER: unbekannter Benutzer %s (im Pfad %s)\n" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "Socketunterstützung ist nicht konfiguriert" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "Interes rcmd ist in UNIX nicht implementiert" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "weißes Pixel = 0x%lx, schwarzes Pixel = 0x%lx\n" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "durchsuche" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "Strg" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "Alt" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "Umschalt" xboard-4.9.1/po/Rules-quot0000644000175000001440000000337612421746651012363 00000000000000# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header xboard-4.9.1/po/sr.gmo0000644000175000001440000016346212747544040011512 00000000000000t*90 9$:9_9 a9m999/999:<:&Q:x::4:):;5.;#d;;7; ;;;;;;;< <<"<;<B<I<e<m<'}<<<<<<<=7=KO=*==&=>> #>"0>S> k>)y>%> >%>> ??;? D? O?Y? h?u???? ? ?8?@,@D@T@ V@ d@@@@@@ @@A A4A;AAA TAbA tA~A A A0AAAA A$B*%BPB`B iB tB~BB)BBBCC8C?CFC]CoCwCC C CC CC CC CC.D DDRDnDD DDD DD DD D% E/EEEaEvE!E EE EEEEE F F.FNFTF[FlF}F FF#FF!FVGhGmG$GG G'GG G$H*H /H 9HFH ZH dH rH |H HHH!HH HII #I/I 6I@IWImI IIII II2I)J ?JMJ&SJ!zJ&J(JJK!KAKVKuK0KKKKKKL"L&L=LQL"kL"L.L L LL L M %M/M6MHMXZM8MM M N(N@BN N8N&NNNOO $O.O @O(MOvOOO/OOPPP /P :PHPMP kPyPPPPPP PPQQ2QFQ[QpQuQ~Q Q QQ Q Q QQQ,Q #R00R!aRR RR!R#RS.S KS WScS&wS#SSSSST &T3TGTOTTT [TfT lTwTT'TT T TT TUU 6UDUVUkUU$UU U U UU6 V-CV)qV-V)V VV W%W-5W(cW"W!W;W X X X)X 2X =XGXMX`X vXXXXXXXXX YY Y+Y GYUYjY sYJ}YY-YZ,Z=ZSZeZZZZZZZ! [+[2[J[O[f[+}[["[[[.["\9\A\\\o\~\ \\\!\\\\#\] ](]%-]S]k]~]]]]],]]^^5^G^ Y^g^$o^^ ^^^^^^5^E_d_y_____ __/___`` !`*/`Z` x`` ```'` ``a/aAaWanaa aaaa aa bb$b*b3bBb[bnbwb}bbb bbbb#b cc'c 9cCcKcbc|ccc&c!c*d(.d&Wd~ddd ddddddde e$eSϪGV]r('ʫ'$6A[I&b q}@ɭk QvSȮQSn$¯ FX\W= >Kv   @Xn 0&,030d$'ܳ !?/a д@dҵ67"n((5!5;:q&*ӷ+I*t(!ø!P XJd5*^8o 0#$ )/Ym7 л ۻ#H S$b I;ܼ**Cn(u((ǽE>6u/""۾! D1v ſ)ȿ5t(3>r%  _ kt(}PA$f"~),<PJn(,7,GCtK$2/W!#-*;0Z % !! :5[ ?$ 4B+U90/D:AFJFS##5 &A&h& #%!? B#S&w)0.D TXu53HMGI#mI37$1\*J(9.b mh '/4QhEGNVX!C 3d#45'AAA9LLUu+' -'J'rRC\a}5<rv4W-BgC >B[ =-k-.'0HQ o|K #2GR:.# <D[ & 5BWi rA).h,g1Rh)e  @T /xzPN3o<JLkl]}>!g0D5\v[m9[7DQO-Efbd5jA: c8XGO 0@}um|  fYM=J (O+rj_D8{_QG&6H42!z#]iC$>KwEp'[-In#XQ(fu1BR|nk GPxN? yb%WZ%,Za``vkJ6  XSVHCs#9:e3^wFz;.0t&RY 7_\q H^$;qvI'sa,)W{2b*7oVh!qcP +F-^Kt@ApL*i"%Ulir\y"CT swT4$n~< >.Ix6|W~:';*LFB8"Y2jtcNd.~AMEd1l&apS4/??om9yUSuK V`gZ=M=U(/}+)B<35]e{r Thresholds for position filtering in game list: options to use in game-viewer mode: next page (with Zippy code)# no engines are installed# no themes are defined%s (%d reversible ply)%s (%d reversible plies)%s - %d/%d games (%d-%d-%d)%s does not support analysis%s engine has too many options %s in settings file %s program exits in draw position (%s)%s: bad boardSize syntax %s %s: can't cd to CHESSDIR: %s: can't parse color names; disabling colorization %s: can't parse foreground color in '%s' %s: no fonts match pattern %s %s: too few colors available; trying monochrome mode %s: unrecognized boardSize name %s %s: unrecognized color %s (Directory will be derived from engine path when empty), but %s is3-checks<<<>>>ASEANAbortAbout XBoardAbove WAV FileAbsolute Analysis ScoresAcceptActionAdd this engine to the listAdjournAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate non-ICS GamesAdjudicate to BlackAdjudicate to WhiteAdjudications...AlarmAlarm Time (msec):Alarm:All games in tourney '%s' are already played or playingAll variants not supported by the first engine (currently %s) are disabled.Almost Always Queen (Detour Under-Promote)Already at end of gameAlso match left-right flipped positionAlso match reversed colorsAltAlways QueenAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis ModeAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyze GameAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnimation Speed (high = slow):AnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-Create Logon ScriptAuto-Display CommentAuto-Display TagsAuto-InputBox PopUpAuto-KibitzAuto-ObserveAuto-Play speed of loaded games (0 = instant, -1 = off):Auto-Raise BoardAuto-Refresh Seek GraphAuto-Save GamesBBack to StartBackground Observe while PlayingBackwardBad FEN position in clipboardBad FEN position in fileBad FEN received from engineBad SeekBad game fileBad integer value %sBad position fileBad tournament fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBlunderBlunder graphBoard OptionsBoard size ( -1 = default for selected variant):Board...BookBook Depth (moves):Book FaultBook Variety (0) vs. Strength (100):Book file exists! Try again for overwrite.Both flags fellBughouseCRC (10x8)Call FlagCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't open temp fileCan't seek on game fileCan't seek on position fileCancelCannonCannot build game listCapablanca (10x8)CaptainCar HornChallenge Text Colors:Challenge:ChancellorChannel #1 Text Colors:Channel 1:Channel:Chat partner:Chats:Clear boardClick clock to clear boardClock adjustment not allowed in auto-flag modeClone TourneyClose ICS engine analyze...Colorize MessagesCommentsCommon EngineCommon Engine SettingsConnection closed by ICSContents ofContinue LaterCopy GameCopy Game ListCopy PositionCould not connect to host %s, port %sCould not create bookCould not open comm port %sCould not parse moveCould not write on tourney fileCouldn't parse move "%s" from ICSCrazyhouseCtrlCylinder *CymbalDDark Square Color:Dark-Squares Texture File:DeclineDefault BeepDefault Number of Games in Match (or Pairing):DeferDemoteDetect all MatesDevelopment NewsDingDirectories:Directory with Pieces Images:Disable own engine books by defaultDisplayed move is not currentDisplayed position is not currentDisplayed position is not current. Step forward to the correct position and try again.DrawDraw after N Moves Total:Draw if Insufficient Mating MaterialDraw:Drop MenuDual Board for Background-Observed GameEGTB Cache Size (MB):EGTB Path:ERROR: Unknown user %s (in path %s) EditEdit BookEdit CommentEdit Engine List...Edit GameEdit PositionEdit TagsEdit bookEdit commentEdit comment on %d.%s%sElephantElo of strongest player at least:Elo of weakest player at least:Empty squareEnable Variation TreesEnd ChatEnd of gameEngineEngine #1Engine #1 Has Own BookEngine #1 Settings...Engine #2 / HumanEngine #2 Has Own Book Engine #2 Settings...Engine Command:Engine Directory:Engine OutputEngine SettingsEngine did not send setup for non-standard variantEngine has no optionsEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvalEvaluation GraphEvaluation graphExact position matchExitingFIRST TYPE DIRECTORY NAME HEREFRCFailed to invoke cmailFailed to open fileFailed to open file '%s' Failed to open indirection file %sFailed to parse board string: "%s"Failed to start %s chess program %s on %s: %s Falcon (10x8)Fatal ErrorFileFile type:File with Start Positions:Filename:Files:First Black Move:First White Move:First change an engine by editing the participants list of the Tournament Options dialogFirst you must specify an existing tourney file to cloneFischer castlingFlash MovesFlash Moves (0 = no flashing):Flash Rate (high = fast):Flip Pieces Shogi Style (Colored buttons restore default)Flip ViewFor concurrent playing of tourney with multiple XBoards:Force current variant with this engineForwardForward to EndGGame File with Opening Lines:Game ListGame List Tags...Game List...Game Number (-1 or -2 = Auto-Increment):Game list not loaded or emptyGame not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGame-list optionsGap in move listGeneralGeneral OptionsGeneral...Get Move ListGongGot end of file from keyboardGothic (10x8)Great Shatranj (10x8)Hash keys are differentHash-Table Size (MB):Headers in Engine Output WindowHelpHideHide ThinkingHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sHoldings Size:ICS ClientICS Input BoxICS InteractionICS OptionsICS input boxICS text menuICS...ICS/Chat ConsoleIllegal hint move "%s" from %s chess programIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move (rejected by ICS)Illegal move in ICS output: "%s"Illegal move: %d.%s%sInclude Number Tag in tourney PGNIncomplete \ escape in value for %sIncorrect moveIncrement or max (sec/move):Info XBoardInformationInitial time (min):Internal error: PARTICIPANTS set wrongInvalid pairing from pairing engineIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnJanus (10x8)Kibitz Text Colors:Kibitz:KingKnightKnightmateLaserLieutenantLight Square Color:Light-Squares Texture File:Line Gap (-1 = default for board size):LionLion roar:Load GameLoad Game OptionsLoad Game...Load New 1st Engine...Load New 2nd Engine...Load PositionLoad first engineLoad game file name?Load position file name?Load second engineLogo Size (0=off, requires restart):Lose:Machine BlackMachine MatchMachine WhiteMachine accepts your draw offerMachine offers a draw. Select Action / Draw to accept.MachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMail MoveMakrukMan XBoardMatch %s vs. %s: final score %d-%d-%dMaterial difference (optional stuff balanced)Material range (top board half optional)Maximum Number of CPUs per Engine:Minimum nr consecutive positions:Mismatch of STRIDE in nengineoutput.c Change and recompile!ModeMono ModeMove HistoryMove NowMove SoundMove listMove:Moves per session:Must not use GUI bookN-Move Rule:N-fold Repeats:NPSNegate Score of Engine #1Negate Score of Engine #2New ChatNew GameNew Shuffle GameNew Shuffle Game...New VariantNew Variant...New directoryNew name for current theme:Next PositionNickname (optional):No SoundNo castleNo default pieces installed! Select your own using '-pieceImageDirectory'.No engine %s is installedNo engine with the name you gave is installedNo game has been loaded yetNo game selectedNo games before year:No hint availableNo more games in this messageNo moves in gameNo pairing engine specifiedNo position has been loaded yetNo tag selectedNo unfinished gamesNo unfinished games No value provided for argument %sNormalNot enough participantsNoteNumber of Board Files:Number of Board Ranks:Number of tourney cycles (or Swiss rounds):OKOld Save Style (as opposed to PGN)On-line User GuideOne-Click MovingOnly bughouse is not available in viewer mode.Opening-Book Filename:OptionsOther Channel Text Colors:Other Text Colors:Own Games OnlyPGN Event Header:Paste GamePaste PositionPausePause between Match Games (msec):PawnPenaltyPeriodic UpdatesPeriodic Updates (in Analysis Mode)PhonePick new gamePlayPlay Move(s) of Clicked PV (Analysis)Polyglot book not validPolygot Directory:Ponder Next MovePopPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition Number (-1 or -2 = Auto-Increment):Position not found in filePremovePremove Highlight Color:Premove for BlackPremove for WhitePrev PositionPromotePull pawn backwards to under-promoteQueenQuiet PlayQuit Quit after gameRReading game file (%d)Ready to send mail Recompile to support this BOARD_RANKS or BOARD_FILES!Recompile with larger BOARD_RANKS or BOARD_FILES to support this sizeReload CMail MessageRematchReplace EngineRequest Text Colors:Request:ResignRetract MoveRevertRewind Index after this many Games (0 = never):RoarRookS-Shout Text Colors:S-Shout:Same materialSame material with exactly same Pawn chainSave Final Positions on File:Save GameSave Game OptionsSave Game...Save Games as BookSave Games on File:Save Out-of-Book Info in PGN Save PositionSave Score/Depth Info in PGNSave Selected GamesSave Settings NowSave Settings on ExitSave Tourney Games on:Save game file name?Save position file name?Saving gameSaving positionScanning through games (%d)Scores in Move ListSearch mode:Seconds per Move:Seek GraphSeek Text Colors:Seek:SeirawanSelect Engine:Select engine from list:Selectable themes:ShatranjShiftShout Text Colors:Shout:Show CoordinatesShow CoordsShow Target SquaresShown position is subsetSlapSocket support is not configured inSound OptionsSound Program:Sounds Directory:Sounds...SpartanStart-position number:Starting %s chess programStarting chess programStartup failure on '%s'Sticky WindowsStill need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s Stop ExaminingStop ObservingSuicideSuperchessSwiss tourney finishedSync after cycleSync after roundTRY ANOTHER NAMETagsTell Text Colors:Tell:Test LegalityThat square is occupiedThe cmail message is not loaded. Use Reload CMail Message and make your move again.There is no game listThere is no pending offer on this moveTime ControlTime Control...Time-Odds factors:Top-Level DialogsTournament OptionsTournament file: Tournament...Tourney participants:Tourney type (0 = round-robin, 1 = gauntlet):TrainingTraining mode offTraining mode onTraining mode requires a game fileTruncate GameTry-Out Sound:Two MachinesTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineType a moveUCIUnable to create font set for %s. Unfinished:Unknown initialMode %sUnknown variant name %sUnknown wild type %dUnrecognized argument %sUnrecognized boolean argument value %sUnusedUpgrade EngineUpload to ExamineUse Board TexturesUse GUI BookUse external piece bitmaps with their own colorsUse nickname in PGN player tags of engine-engine gamesUser FileUser WAV File:Variant %s not supported by %sVariant %s supported only in ICS modeVariants marked with * can only be played with legality testing off.Verify Engine Result ClaimsViewWB protocol v1 (do not wait for engine features)Wait until your turn, or select 'Move Now'.Wait until your turn.Waiting for access to save fileWaiting for first chess programWaiting for other game(s)Waiting for reply from opponent Waiting for second chess programWarlordWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite Piece Color:White to playWhite's flag fellWild castleWin / Loss Threshold:Win:Wood ThunkXBoard Home PageYou are not examining a gameYou are not observing a gameYou are playing BlackYou are playing WhiteYou can only change one engine at the timeYou can't revert while pausingYou cannot do this while you are playing or observingYou cannot replace an engine while it is engaged! Terminate its game first.You did not specify the engine executableYou have already mailed a move. Wait until a move arrives from your opponent. To resend the same move, type "cmail -remail -game %s" on the command line.You have edited the game history. Use Reload Same Game and make your move again.You have entered too many moves. Back up to the correct position and try again.You have not made a move yetYou must make your move before offering a drawYou must supply a tournament file, for storing the tourney progressYou restarted an already completed tourney. One more cycle will now be added to it. Games commence in 10 sec.Your opponent is not out of timeZoom factor in Evaluation Graph:add next moveatomicbad searchTime option %sbad timeControl option %sberolina *browseby nameby typechu shogi (12x12)classicalclearclosecould not load EGBB librarycourier (12x8)downe-Mail Bug Reportelven chess (10x10)engine namefactoryfailed writing PVfairyfind positionfirstfixed maxgive-awaygrand (10x10)incrementalinternal rcmd not implemented for Unixlosersmighty lionmovenarrownextnext pageno games matched your requestonly marked squares are legalor specify one below:pick fixedprevious pageprotocol version %d not supportedrandomizesave changessay Internal error; bad moveType %d (%d,%d-%d,%d)secondshogi (9x9)shuffletagsthresholdstwo kingsupvs.white pixel = 0x%lx, black pixel = 0x%lx wrong EGBB versionxiangqi (9x10)your opponent kibitzes: %sProject-Id-Version: xboard-4.8.0-pre1 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2014-11-11 20:37+0200 Last-Translator: Мирослав Николић Language-Team: Serbian <(nothing)> Language: sr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Размаци за издвајање положаја у списку игре: опције за коришћење у режиму прегледача игре: следеће странице (са Зипи кодом)# ниједан погон није инсталиран# ниједна тема није одређена%s (%d повратан потез)%s (%d повратна потеза)%s (%d повратних потеза)%s — %d/%d игре (%d-%d-%d)„%s“ не подржава анализу%s погон има превише опција %s у датотеци подешавања %s програм постоји у положају ремија (%s)%s: лоша синтакса величине табле „%s“ %s: не могу да променим директоријум у ДИРШАХА: %s: не могу да обрадим називе боја; искључујем обојавање %s: не могу да обрадим боју прочеља у „%s“ %s: нема писама која одговарају обрасцу „%s“ %s: доступно је премало боја; покушавам једнобојни режим %s: непознат назив величине табле „%s“ %s: непозната боја „%s“ (Директоријум ће бити узет из путање погона када је празан), али „%s“ је3-провере<<<>>>АСЕАНПрекиниО Х-таблиВАВ датотекаРезултати апсолутне анализеПрихватиРадњаДодај овај погон на списакОдложиДосуди ремиДосуди површан реми (застој 3-потеза)Досуди не-ИЦС игреДосуди црномДосуди беломДодељивања...АлармВреме аларма (msec):Аларм:Све игре на турниру „%s“ су већ одигране или су у токуСве варијанте нису подржане првим погоном (тренутно %s) су искључени.Скоро увек краљица (заобиђи унапређење)Већ на крају игреУпореди такође лево-десно изврнути положајУпореди такође обрнуте бојеАлтУвек краљицаНејасан потез у излазу ИЦС-а: %sНејасан потез: %d.%s%sРежим анализеРежим анализе не ради са ИЦС режимомРежим анализе захтева шаховски погонАнализирај игруРежим анализе датотеке захтева датотеку игреАнимирај превлачењеАнимирај потезБрзина анимације (високо = споро):ПрибележиАрхиепископАуто заставицаСам изврни прегледСам напомениСам направи скрипту пријавеНапомена само-приказаОзнаке само-приказаОблачић само-улазног пољаСам кибицујСам посматрајБрзина самосталног играња учитаних игара (0 = тренутно, -1 = искључено):Сам издигни таблуСам освежи график премотавањаСам сачувај игреПНазад на почетакПозадинско посматрање за време играњаНазадЛош ФЕН положај у оставиЛош ФЕН положај у датотециЛош ФЕН је примљен од погонаЛош премотајЛоша датотека игреЛоша вредност целог броја %sЛоша датотека положајаЛоша датотека редоследаЛовацЦрниБоја црне фигуре:Црни да играЗаставица црног је палаНа слепоПогрешкеГрафик погрешакаОпције таблеВеличина табле ( -1 = основно за изабрану варијанту):Табла...КњигаДубина књиге (потези):Неуспех књигеВаријанта књиге (0) против снаге (100):Датотека књиге постоји! Покушајте поново да препишете.Обе заставице су палеБубска кућаЦРЦ (10x8)Заставица позиваНе могу више да се повучемНе могу да идем више напредНе могу играти партију без шаховских програмаНе могу да отворим „%s“Не могу да отворим привремену датотекуНе могу да премотам датотеку игреНе могу да премотам датотеку положајаПоништиТопНе могу да изградим списак игреКапабланка (10x8)КапетанСирена аутаБоје текста изазова:Изазов:КанцеларБоје текста 1° канала:1° канал:Канал:Партнер ћаскања:Ћаскања:Очисти таблуПритисните на сат да очистите таблуДотеривање сата није допуштено у режиму ауто-заставицеУмножи турнирЗатвори анализу ИЦС погона...Обој порукеНапоменеОпшти погонПодешавања општег погонаВезу је затворио ИЦССадржајНастави каснијеУмножи игруУмножи списак игараУмножи положајНе могу да се повежем на домаћина „%s“, прикључник %sНе могу да направим књигуНе могу да отворим прикључник коминикације %sНе могу да обрадим потезНе могу да пишем у датотеку турнираНе могу да обрадим потез „%s“ из ИЦС-аЛуда кућаКтрлВаљак *ЧинелаТБоја тамног поља:Датотека исцртавања тамних поља:ОдбијОсновни писакОсновни број игара у мечу (или упаривању):ОдгодиДеградирајОткриј сва матирањаНовости о развојуЗвонцеДиректоријуми:Директоријум са сликама фигура:Искључи књиге сопственог погона по основиПриказани потез није тренутниПриказани положај није тренутниПриказани положај није тренутни. Идите напред до правог положаја и покушајте опет.РемиРеми након укупно N потеза:Реми ако нема довољно материјала за матирањеРеми:Изборник убацивањаДвојна табла за позадинско-посматрану игруВеличина ЕГТБ оставе (MB):ЕГТБ путања:Грешка: Непознат корисник „%s“ (у путањи „%s“) УредиУреди књигуУреди напоменуИзмени списак погона...Уреди игруУреди положајУреди ознакуУреди књигуУредите напоменуУредите напомену на %d.%s%sСлонРејтинг најачег играча:Рејтинг најслабијег играча:Празно пољеУкључи стабла варијацијеЗаврши чатКрај игреПогон1° погонПогон бр. 1 има сопствену књигуПодешавања 1° погона...2° погон / човекПогон бр. 2 има сопствену књигу Подешавања 2° погона...Наредба погона:Директоријум погона:Излаз погонаПодешавања погонаПогон није послао подешавање за неуобичајену варијантуПогон нема опцијаИзлаз погонаГрешкаГрешка прикупљања списка потеза: додатна таблаГрешка прикупљања списка потеза: угнежденГрешка прикупљања списка потеза: два заглављаГрешка читања из „%s“ шаховског програма (%s)Грешка читања са ИЦС-аГрешка читања са тастатуреГрешка писања у „%s“ шаховски програмГрешка писања у ИЦСГрешка писања у шаховски програмГрешка писања на приказГрешка: %s шаховски програм (%s) је изашао неочекиваноПроценаГрафик проценеГрафик проценеПоређење тачног положајаИзлазимПРВО УКУЦАЈТЕ НАЗИВ ДИРЕКТОРИЈУМА ОВДЕФРЦНисам успео да призовем цпоштуНисам успео да отворим датотекуНисам успео да отворим датотеку „%s“ Нисам успео да отворим датотеку усмерења „%s“Нисам успео да обрадим ниску табле: „%s“Нисам успео да покренем %s шаховски програм %s на %s: %s Фалкон (10x8)Кобна грешкаДатотекаВрста датотеке:Датотека са почетним положајима:Назив датотеке:Датотеке:Први потез црног:Први потез белог:Прво измените погон уредивши списак учесника у прозорчету опција турнираПрво морате да наведете постојећи турнир за умножавањеФишерова рокадаБљесни потезимаБљесни потезима (0 = без бљеска):Проток бљеска (високо = брзо):Изврни фигуре Шоги стила (Обојена дугмад враћа основно)Изврни прегледЗа истовремено играње турнира са више Х-табли:Приморај текућу варијанту овим погономНапредНапред на крајЗДатотека игре са линијама отварања:Списак игараОзнаке списка игара...Списак игара...Број игре (-1 или -2 = само-повећање):Списак игара није учитан или је празанНисам нашао игру у датотециБрој игре је ван опсегаИгра је предуга; повећајте НАЈВИШЕ_ПОТЕЗА и поново преведитеОпције списка игараЈаз у списку потезаГенералОпште опцијеОпште...Добави списак потезаГонгДобих крај датотеке са тастатуреГотски (10x8)Велики Шатрањ (10x8)Хеш кључеви се разликујуВеличина хеш-табеле (MB):Заглавља у излазном прозору погона ПомоћСакријСакриј размишљањеСакриј размишљање од људиБоја истицања:Истакни превлачењеИстакни последњи потезИстакни стрелицомИстакни стрелицомСаветСавет: %sВеличина закупа:ИЦС клијентПоље уноса ИЦС-аИЦС међудејствоИЦС опцијеПоље уноса ИЦС-аПриручни изборник ИЦС-аИЦС...Конзола ИЦС-а/ЋаскањаНедозвољени потез савета „%s“ шаховског програма „%s“Недозвољени потезНедозвољени потез „%s“ (одбацио га је „%s“ шаховски програм)Недозвољени потез „%s“ %s машинеНедозвољен потез (одбацио га је ИЦС)Недозвољени потез у излазу ИЦС-а: %sНедозвољени потез: %d.%s%sУкључи ознаку броја у ПГН-у турнираНепотпуна \ промене реда у вредности за „%s“Неисправан потезПовећање или највише (сек/потезу):Подаци Х-таблеОбавештењеПочетно време (min):Унутрашња грешка: скуп УЧЕСНИКА је погрешанНеисправно упаривање из погона упаривањаЦрни је на потезуБели је на потезуНије црни на потезуНије бели на потезуВи сте на редуЈанус (10x8)Боје текста кобицовања:Кибицовање:КраљСкакачМат скакачаЛасерПоручникБоја светлог поља:Датотека исцртавања светлих поља:Јаз реда (-1 = основно за величину табле):ЛавЛавља рика:Учитај игруОпције учитавања игреУчитај игру...Учитај нови 1° погон...Учитај нови 2° погон...Учитај положајУчитајте први погонДа ли да учитам назив датотеке игре?Да ли да учитам назив датотеке положаја?Учитајте други погонВеличина логотипа (0=искљ., захтева поновно покретање):Пораз:Машински црниМашински мечМашински белиРачунар прхвата вашу понуду ремијаРачунар нуди реми. Изаберите „Радња / Реми“ да прихватите.Режим машинског црног не ради са ИЦС режимомРежим машинског црног захтева шаховски погонРежим машинског белог не ради са ИЦС режимомРежим машинског белог захтева шаховски погонПошаљи поштом потезМакрукПриручник Х-таблеМеч %s против %s: крајњи резултат је %d-%d-%dРазлика материјала (уравнотежена изборна ствар)Опсег материјала (изборна половина горње табле)Највећи број процесора по погону:Најмањи број узастопних положаја:Неподудара се „STRIDE“ у „nengineoutput.c“ Промрните и поново преведите!РежимМоно режимИсторијат потезаОдиграј садаЗвук потезаСписак потезаПотез:Потеза по сесији:Не сме користити ГКС књигуПравило н-потеза:Понављања N-савијања:НПСНегирај резултат 1° погонаНегирај резултат 2° погонаНови чатНова играНова насумична играНова насумична игра...Нова варијантаНова варијанта...Нови директоријумНови назив за текућу тему:Следећи положајНадимак (изборно):Без звукаБез дворцаНису инсталиране основне фигуре! Изаберите ваше сопствене користећи „-pieceImageDirectory“.Ниједан погон „%s“ није инсталиранНиједан погон са називом који сте дали није инсталиранНиједна игра још није учитанаНије изабрана играНема игара пре године:Нема доступног саветаНема више игара у овој поруциНема потеза у игриНије наведен погон упаривањаНиједан положај још није учитанНије изабрана ознакаНема недовршених игараНема недовршених игара Није наведена вредност за аргумент „%s“УобичајеноНема довољно учесникаНапоменаБрој линија табле:Број редова табле:Број кругова турнира (или швајцарске рунде):У редуСтари изглед чувања (као супротно са ПГН)Корисничко упутство на мрежиПотез једним притискомСамо бубска кућа није доступна у режиму прегледача.Назив датотеке књиге отварања:ОпцијеБоје текста других канала:Боје другог текста:Само сопствене игреЗаглавље ПГН догађаја:Убаци игруУбаци положајЗауставиПауза између игара меча (мсек):ПешакПеналПовремена освежењаПовремена освежавања (у режиму анализе)ТелефонИзаберите нову игруПустиИграј потез(е) притиснутог ПВ-а (анализа)Полиглотска књига није исправнаДиректоријум полигота:Премисли следећи потезПопПрикажи поруку излазаПрикажи поруке излазаПрикажи грешке потезаБрој положаја (-1 или -2 = само-повећање):Нисам пронашао положај у датотециПредпотезБоја истицања предпотеза:Предпотез за црногПредпотез за белогПретходни положајУнапредиПовуците пешака уназад до унапређењаКраљицаТихо играњеИзађиИзађи након игреЦЧитам датотеку игре (%d)Спреман сам да пошаљем пошту Поново преведите да подржите ове РЕДОВЕ_ТАБЛЕ или ЛИНИЈЕ_ТАБЛЕ!Поново преведите са већим РЕДОВИМА_ТАБЛЕ или ЛИНИЈАМА_ТАБЛЕ да подржавају ову величинуПоново учитај поруку ЦпоштеПоново играјЗамени погонБоје текста захтева:Захтев:Предај сеПовуци потезВратиИндекс враћања уназад након оволико игара (0 = никад):РикаКулаБоје текста С-усклика:С-усклик:Исти материјалИсти материјал са тачно истим ланцем пешакаСачувај крајње положаје у датотеци:Сачувај игруОпције чувања игреСачувај игру...Сачувај игре као књигуСачувај игре у датотеци:Сачувај податке ван-књиге у ПГН-уСачувај положајСачувај податке резултата/дубине у ПГН-уСачувај изабране игреСачувај подешавања садаСачувај подешавања на изласкуСачувај игре турнира на:Да ли да сачувам назив датотеке игре?Да ли да сачувам назив датотеке положаја?Чувам игруЧувам положајПретражујем игре (%d)Резултати у списку потезаРежим претраге:Секунде по потезу:График премотавањаБоје текста премотавања:Премотај:СеираванИзаберите погон:Изаберите погон са списка:Изабирљиве теме:ШатрањПомакБоје текста усклика:Усклик:Покажи координатеПрикажи кординатеПокажи циљна пољаПриказани положај је подскупЋушкаПодршка прикључнице није подешенаОпције звукаПрограм звука:Директоријум звука:Звуци...СпартанацБрој почетног положаја:Покрећем „%s“ шаховски програмПокрећем шаховски програмНеуспех покретања на „%s“Лепљиви прозориЈош увек треба повући потез за игру %s Још увек треба повући потез за игру Још увек треба повући потезе за %d игре Још увек треба повући потезе за обе игре Још увек треба повући потезе за игре %s Прекини испитивањеПрекини посматрањеСамоубиствоСупер шахШвајцарски турнир је завршенУсагласи након кругаУсагласи након рундеПРОБАЈТЕ ДРУГИ НАЗИВОзнакеБоје текста објаве:Телефон:Испробај исправностТо поље је заузетоПорука цпоште није учитана. Користите „Поново учитај поруку Цпоште“ и повуците ваш потез опет.Нема списка игараНемазаказаних понуда на овом потезуУправљање временомУправљање временом...Чиниоци вишка времена:Прозорчићи највишег нивоаОпције турнираДатотека редоследа: Турнир...Учесници турнира:Врста турнира (0 = свако са сваким, 1 = на испадање):УвежбавањеРежим увежбавања је искљученРежим увежбавања је укљученРежим увежбавања захтева датотеку игреСкрати игруЗвук покушаја:Две машинеРежим две машине не ради са ИЦС режимомРежим две машине захтева шаховски погонУкуцајте потезУЦИНе могу да направим скуп писама за „%s“. Недовршена:Непознат режим почетка „%s“Непознат назив варијанте „%s“Непозната дивља врста „%d“Непознат аргумент „%s“Непозната вредност логичког аргумента %sНекоришћеноНадогради погонОтпреми на испитивањеКористи исцртавања таблеКористи ГУИ књигуКористи спољне битмапе фигуре са њиховим сопственим бојамаКористи надимак у ПГН ознакама играча уграма погон-погонКорисникова датотекаКорисникова ВАВ датотека:Варијанту „%s“ не подржава %sВаријанта „%s“ је подржана само у ИЦС режимуВаријанте означене * могу бити игране само са искљученим испробавањем исправности.Провери потраживања резултата погонаПрегледВБ протокол в1 (не чекај на функције погона)Сачекајте ваш ред, или изаберите „Помери сада“.Сачекајте ваш ред.Чекам на приступ да сачувам датотекуЧекам први шаховски програмЧекам на другу игруЧекам на одговор противника Чекам други шаховски програмГосподар ратаУпозорење: Још увек проучавате игруУпозорење: Још увек посматрате игруУпозорење: Још увек играте игруУпозорење: други погон (%s) не подржава ово!БелиБоја беле фигуре:Бели да играЗаставица белог је палаДивљи дворацПраг победе / губитка:Победа:Звук дрветаМатична страница Х-таблеВи не проучавате игруВи не посматрате игруИграте црнимИграте белимМожете да измените само један погон одједномНе можете да повратите док паузиратеНе можете да урадите ово док играте или посматратеНе можете да замените погон док је заузет! Прво завршите његову игру.Нисте навели извршног погонаВећ сте послали потез. Сачекајте док стигне потез вашег противника. Да поново пошаљете исти потез, укуцајте „cmail -remail -game %s“ на линији наредби.Уредили сте историјат игре. Користите „Поново учитај исту игру“ и повуците ваш потез опет.Унели сте превише потеза. Вратите се на прави положај и покушајте опет.Још увек нисте повукли потезМорате да повучете потез пре него понудите ремиМорате да доставите датотеку редоследа, да сачувате напредовање турнираПоново сте покренули већ завршени турнир. Још један круг ће бити додат у њега. Игре почињу за 10 сек.Вашем противнику није истекло времеЧинилац увеличања у графику процене:додај нови потезатомскилоша опција времена претраге „%s“лоша опција управљања временом „%s“беролина *разгледајпо називупо врстичу шоги (12x12)уобичајеноочистизатворине могу да учитам ЕГББ библиотекувесник (12x8)долеПошаљи извештај о грешцивилењача (10x10)назив погонафабричканисам успео да запишем ПВвиланађи положајпрвистални максимумпредајвелик (10x10)растућеунутрашња „rcmd“ није примењена за Јуниксгубитницимоћни лавпотезускоследећеследећа страницаниједна игра не одговара вашем захтевусамо означена поља су дозвољенаили испод наведите један:изабери сталнепретходна страницаиздање протокола %d није подржанонасумичносачувај изменереци унутрашња грешка; лоша врста потеза %d (%d,%d-%d,%d)другишоги (9x9)измешајознакеосетљивостдва краљагорепротивбеле тачкице = 0x%lx, црне тачкице = 0x%lx погрешно издање ЕГББ-аксјангки (9x10)ваш противник кибицује: %sxboard-4.9.1/po/xboard.pot0000644000175000001440000013604212747543737012373 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the GNU xboard package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.9.1\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "" #: backend.c:1457 msgid "Starting chess program" msgstr "" #: backend.c:1480 msgid "Bad game file" msgstr "" #: backend.c:1487 msgid "Bad position file" msgstr "" #: backend.c:1501 msgid "Pick new game" msgstr "" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "" #: backend.c:4306 msgid "Error reading from ICS" msgstr "" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" #: backend.c:6858 msgid "You are playing Black" msgstr "" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "" #: backend.c:6920 msgid "Displayed position is not current" msgstr "" #: backend.c:7123 msgid "rights granted" msgstr "" #: backend.c:7123 msgid "rights revoked" msgstr "" #: backend.c:7175 msgid "Illegal move" msgstr "" #: backend.c:7255 msgid "End of game" msgstr "" #: backend.c:7258 msgid "Incorrect move" msgstr "" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "" #: backend.c:7780 msgid "only marked squares are legal" msgstr "" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "" #: backend.c:8632 msgid "could not load EGBB library" msgstr "" #: backend.c:8635 msgid "wrong EGBB version" msgstr "" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "" #: backend.c:10132 msgid "Gap in move list" msgstr "" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr "" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" #: backend.c:11200 msgid "Not enough participants" msgstr "" #: backend.c:11403 msgid "Bad tournament file" msgstr "" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "" #: backend.c:11428 msgid "No pairing engine specified" msgstr "" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "" #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "" #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "" #: backend.c:12574 msgid "No more games in this message" msgstr "" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "" #: backend.c:13065 msgid "Game number out of range" msgstr "" #: backend.c:13076 msgid "Can't seek on game file" msgstr "" #: backend.c:13134 msgid "Game not found in file" msgstr "" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "" #: backend.c:13423 msgid "No moves in game" msgstr "" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "" #: backend.c:13645 msgid "Black to play" msgstr "" #: backend.c:13648 msgid "White to play" msgstr "" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "" #: backend.c:13737 msgid "Saving game" msgstr "" #: backend.c:13738 msgid "Bad Seek" msgstr "" #: backend.c:14111 msgid "Saving position" msgstr "" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" #: backend.c:14294 msgid "You have not made a move yet" msgstr "" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" #: backend.c:14320 msgid "No unfinished games" msgstr "" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "" #: backend.c:14656 msgid "Edit comment" msgstr "" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "" #: backend.c:14824 msgid "It is not White's turn" msgstr "" #: backend.c:14907 msgid "It is not Black's turn" msgstr "" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" #: backend.c:15188 msgid "Training mode off" msgstr "" #: backend.c:15196 msgid "Training mode on" msgstr "" #: backend.c:15199 msgid "Already at end of game" msgstr "" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "" #: backend.c:15365 msgid "Click clock to clear board" msgstr "" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "" #: backend.c:15711 msgid "That square is occupied" msgstr "" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "" #: backend.c:16220 msgid "You are not examining a game" msgstr "" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "" #: backend.c:16348 msgid "No hint available" msgstr "" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "" #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "" #: backend.c:17521 msgid "Displayed move is not current" msgstr "" #: backend.c:17530 msgid "Could not parse move" msgstr "" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "" #: backend.c:17657 msgid "White's flag fell" msgstr "" #: backend.c:17679 msgid "Black's flag fell" msgstr "" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "" #: book.c:722 msgid "Book Fault" msgstr "" #: book.c:877 msgid "Hash keys are different" msgstr "" #: book.c:1054 msgid "Could not create book" msgstr "" #: dialogs.c:287 msgid "Tournament file: " msgstr "" #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "" #: dialogs.c:289 msgid "Sync after round" msgstr "" #: dialogs.c:290 msgid "Sync after cycle" msgstr "" #: dialogs.c:291 msgid "Tourney participants:" msgstr "" #: dialogs.c:292 msgid "Select Engine:" msgstr "" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "" #: dialogs.c:312 msgid "Common Engine" msgstr "" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "" #: dialogs.c:314 msgid "Continue Later" msgstr "" #: dialogs.c:315 msgid "Replace Engine" msgstr "" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "" #: dialogs.c:317 msgid "Clone Tourney" msgstr "" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "" #: dialogs.c:389 msgid "Tournament Options" msgstr "" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "" #: dialogs.c:429 msgid "Scores in Move List" msgstr "" #: dialogs.c:430 msgid "Show Coordinates" msgstr "" #: dialogs.c:431 msgid "Show Target Squares" msgstr "" #: dialogs.c:432 msgid "Sticky Windows" msgstr "" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "" #: dialogs.c:458 msgid "Normal" msgstr "" #: dialogs.c:459 msgid "Makruk" msgstr "" #: dialogs.c:460 msgid "FRC" msgstr "" #: dialogs.c:461 msgid "Shatranj" msgstr "" #: dialogs.c:462 msgid "Wild castle" msgstr "" #: dialogs.c:463 msgid "Knightmate" msgstr "" #: dialogs.c:464 msgid "No castle" msgstr "" #: dialogs.c:465 msgid "Cylinder *" msgstr "" #: dialogs.c:466 msgid "3-checks" msgstr "" #: dialogs.c:467 msgid "berolina *" msgstr "" #: dialogs.c:468 msgid "atomic" msgstr "" #: dialogs.c:469 msgid "two kings" msgstr "" #: dialogs.c:470 msgid " " msgstr "" #: dialogs.c:471 msgid "Spartan" msgstr "" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "" #: dialogs.c:475 msgid "Holdings Size:" msgstr "" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" #: dialogs.c:479 msgid "ASEAN" msgstr "" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "" #: dialogs.c:481 msgid "Seirawan" msgstr "" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "" #: dialogs.c:483 msgid "Superchess" msgstr "" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "" #: dialogs.c:485 msgid "Crazyhouse" msgstr "" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "" #: dialogs.c:487 msgid "Bughouse" msgstr "" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "" #: dialogs.c:489 msgid "Suicide" msgstr "" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "" #: dialogs.c:491 msgid "give-away" msgstr "" #: dialogs.c:492 msgid "grand (10x10)" msgstr "" #: dialogs.c:493 msgid "losers" msgstr "" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "" #: dialogs.c:495 msgid "fairy" msgstr "" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:497 msgid "mighty lion" msgstr "" #: dialogs.c:498 msgid "courier (12x8)" msgstr "" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "" #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" #: dialogs.c:596 msgid "New Variant" msgstr "" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "" #: dialogs.c:631 msgid "EGTB Path:" msgstr "" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "" #: dialogs.c:633 msgid "Use GUI Book" msgstr "" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "" #: dialogs.c:655 msgid "Detect all Mates" msgstr "" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "" #: dialogs.c:685 msgid "Auto-Comment" msgstr "" #: dialogs.c:686 msgid "Auto-Observe" msgstr "" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "" #: dialogs.c:691 msgid "Get Move List" msgstr "" #: dialogs.c:692 msgid "Quiet Play" msgstr "" #: dialogs.c:693 msgid "Seek Graph" msgstr "" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "" #: dialogs.c:696 msgid "Quit after game" msgstr "" #: dialogs.c:697 msgid "Premove" msgstr "" #: dialogs.c:698 msgid "Premove for White" msgstr "" #: dialogs.c:699 msgid "First White Move:" msgstr "" #: dialogs.c:700 msgid "Premove for Black" msgstr "" #: dialogs.c:701 msgid "First Black Move:" msgstr "" #: dialogs.c:703 msgid "Alarm" msgstr "" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "" #: dialogs.c:706 msgid "Colorize Messages" msgstr "" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "" #: dialogs.c:723 msgid "ICS Options" msgstr "" #: dialogs.c:728 msgid "Exact position match" msgstr "" #: dialogs.c:728 msgid "Shown position is subset" msgstr "" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "" #: dialogs.c:729 msgid "Same material" msgstr "" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "" #: dialogs.c:753 msgid "No games before year:" msgstr "" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "" #: dialogs.c:756 msgid "Search mode:" msgstr "" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "" #: dialogs.c:767 msgid "Load Game Options" msgstr "" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "" #: dialogs.c:780 msgid "Own Games Only" msgstr "" #: dialogs.c:781 msgid "Save Games on File:" msgstr "" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "" #: dialogs.c:794 msgid "Save Game Options" msgstr "" #: dialogs.c:803 msgid "No Sound" msgstr "" #: dialogs.c:804 msgid "Default Beep" msgstr "" #: dialogs.c:805 msgid "Above WAV File" msgstr "" #: dialogs.c:806 msgid "Car Horn" msgstr "" #: dialogs.c:807 msgid "Cymbal" msgstr "" #: dialogs.c:808 msgid "Ding" msgstr "" #: dialogs.c:809 msgid "Gong" msgstr "" #: dialogs.c:810 msgid "Laser" msgstr "" #: dialogs.c:811 msgid "Penalty" msgstr "" #: dialogs.c:812 msgid "Phone" msgstr "" #: dialogs.c:813 msgid "Pop" msgstr "" #: dialogs.c:814 msgid "Roar" msgstr "" #: dialogs.c:815 msgid "Slap" msgstr "" #: dialogs.c:816 msgid "Wood Thunk" msgstr "" #: dialogs.c:818 msgid "User File" msgstr "" #: dialogs.c:841 msgid "User WAV File:" msgstr "" #: dialogs.c:842 msgid "Sound Program:" msgstr "" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "" #: dialogs.c:844 msgid "Play" msgstr "" #: dialogs.c:845 msgid "Move:" msgstr "" #: dialogs.c:846 msgid "Win:" msgstr "" #: dialogs.c:847 msgid "Lose:" msgstr "" #: dialogs.c:848 msgid "Draw:" msgstr "" #: dialogs.c:849 msgid "Unfinished:" msgstr "" #: dialogs.c:850 msgid "Alarm:" msgstr "" #: dialogs.c:851 msgid "Challenge:" msgstr "" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "" #: dialogs.c:854 msgid "Shout:" msgstr "" #: dialogs.c:855 msgid "S-Shout:" msgstr "" #: dialogs.c:856 msgid "Channel:" msgstr "" #: dialogs.c:857 msgid "Channel 1:" msgstr "" #: dialogs.c:858 msgid "Tell:" msgstr "" #: dialogs.c:859 msgid "Kibitz:" msgstr "" #: dialogs.c:860 msgid "Request:" msgstr "" #: dialogs.c:861 msgid "Lion roar:" msgstr "" #: dialogs.c:862 msgid "Seek:" msgstr "" #: dialogs.c:880 msgid "Sound Options" msgstr "" #: dialogs.c:896 msgid "Selectable themes:" msgstr "" #: dialogs.c:898 msgid "New name for current theme:" msgstr "" #: dialogs.c:901 msgid "White Piece Color:" msgstr "" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "" #: dialogs.c:917 msgid "Light Square Color:" msgstr "" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "" #: dialogs.c:929 msgid "Highlight Color:" msgstr "" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" #: dialogs.c:943 msgid "Mono Mode" msgstr "" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "" #: dialogs.c:946 msgid "Use Board Textures" msgstr "" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "" #: dialogs.c:1033 msgid "Board Options" msgstr "" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "" #: dialogs.c:1134 msgid "clear" msgstr "" #: dialogs.c:1135 msgid "save changes" msgstr "" #: dialogs.c:1233 msgid "add next move" msgstr "" #: dialogs.c:1234 msgid "commit changes" msgstr "" #: dialogs.c:1257 msgid "Edit book" msgstr "" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "" #: dialogs.c:1405 msgid "ICS input box" msgstr "" #: dialogs.c:1437 msgid "Type a move" msgstr "" #: dialogs.c:1463 msgid "Engine has no options" msgstr "" #: dialogs.c:1465 msgid "Engine Settings" msgstr "" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "" #: dialogs.c:1509 msgid "or specify one below:" msgstr "" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "" #: dialogs.c:1513 msgid "Engine Command:" msgstr "" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "" #: dialogs.c:1515 msgid "UCI" msgstr "" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "" #: dialogs.c:1574 msgid "Load first engine" msgstr "" #: dialogs.c:1580 msgid "Load second engine" msgstr "" #: dialogs.c:1603 msgid "shuffle" msgstr "" #: dialogs.c:1604 msgid "Fischer castling" msgstr "" #: dialogs.c:1605 msgid "Start-position number:" msgstr "" #: dialogs.c:1606 msgid "randomize" msgstr "" #: dialogs.c:1607 msgid "pick fixed" msgstr "" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "" #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "" #: dialogs.c:1677 msgid "Message (above board):" msgstr "" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "" #: dialogs.c:1695 msgid "Edit comments:" msgstr "" #: dialogs.c:1701 msgid "Move history / Engine Output:" msgstr "" #: dialogs.c:1707 msgid "Game list:" msgstr "" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "" #: dialogs.c:1768 msgid "Fonts" msgstr "" #: dialogs.c:1791 msgid "classical" msgstr "" #: dialogs.c:1792 msgid "incremental" msgstr "" #: dialogs.c:1793 msgid "fixed max" msgstr "" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "" #: dialogs.c:1795 msgid "Moves per session:" msgstr "" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "" #: dialogs.c:1799 msgid "Engine #1" msgstr "" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "" #: dialogs.c:1972 msgid "Captain" msgstr "" #: dialogs.c:1973 msgid "Lieutenant" msgstr "" #: dialogs.c:1974 msgid "General" msgstr "" #: dialogs.c:1975 msgid "Warlord" msgstr "" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "" #: dialogs.c:1988 msgid "Lion" msgstr "" #: dialogs.c:1992 msgid "Defer" msgstr "" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "" #: dialogs.c:2050 msgid "Chats:" msgstr "" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 msgid "New Chat" msgstr "" #: dialogs.c:2058 msgid "Chat partner:" msgstr "" #: dialogs.c:2059 msgid "End Chat" msgstr "" #: dialogs.c:2060 msgid "Hide" msgstr "" #: dialogs.c:2287 msgid "ICS Interaction" msgstr "" #: dialogs.c:2372 msgid "factory" msgstr "" #: dialogs.c:2373 msgid "up" msgstr "" #: dialogs.c:2374 msgid "down" msgstr "" #: dialogs.c:2393 msgid "No tag selected" msgstr "" #: dialogs.c:2424 msgid "Game-list options" msgstr "" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "" #: dialogs.c:2545 msgid "Fatal Error" msgstr "" #: dialogs.c:2545 msgid "Exiting" msgstr "" #: dialogs.c:2556 msgid "Information" msgstr "" #: dialogs.c:2563 msgid "Note" msgstr "" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "" #: dialogs.c:2827 msgid "_File" msgstr "" #: dialogs.c:2828 msgid "_Edit" msgstr "" #: dialogs.c:2829 msgid "_View" msgstr "" #: dialogs.c:2830 msgid "_Mode" msgstr "" #: dialogs.c:2831 msgid "_Action" msgstr "" #: dialogs.c:2832 msgid "E_ngine" msgstr "" #: dialogs.c:2833 msgid "_Options" msgstr "" #: dialogs.c:2834 msgid "_Help" msgstr "" #: dialogs.c:2844 msgid "<<" msgstr "" #: dialogs.c:2845 msgid "<" msgstr "" #: dialogs.c:2847 msgid ">" msgstr "" #: dialogs.c:2848 msgid ">>" msgstr "" #: dialogs.c:3136 msgid "Directories:" msgstr "" #: dialogs.c:3137 msgid "Files:" msgstr "" #: dialogs.c:3138 msgid "by name" msgstr "" #: dialogs.c:3139 msgid "by type" msgstr "" #: dialogs.c:3142 msgid "Filename:" msgstr "" #: dialogs.c:3143 msgid "New directory" msgstr "" #: dialogs.c:3144 msgid "File type:" msgstr "" #: dialogs.c:3219 msgid "Contents of" msgstr "" #: dialogs.c:3245 msgid " next page" msgstr "" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "" msgstr[1] "" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "" #: menus.c:136 msgid "Load game file name?" msgstr "" #: menus.c:183 msgid "Load position file name?" msgstr "" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "" #: menus.c:198 msgid "Save position file name?" msgstr "" #: menus.c:355 msgid " (with Zippy code)" msgstr "" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "" #: menus.c:390 msgid "Registered Engines" msgstr "" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 msgid "New Game" msgstr "" #: menus.c:613 msgid "New Shuffle Game..." msgstr "" #: menus.c:614 msgid "New Variant..." msgstr "" #: menus.c:616 msgid "Load Game" msgstr "" #: menus.c:617 msgid "Load Position" msgstr "" #: menus.c:618 msgid "Next Position" msgstr "" #: menus.c:619 msgid "Prev Position" msgstr "" #: menus.c:621 msgid "Save Game" msgstr "" #: menus.c:622 msgid "Save Position" msgstr "" #: menus.c:623 msgid "Save Selected Games" msgstr "" #: menus.c:624 msgid "Save Games as Book" msgstr "" #: menus.c:626 msgid "Mail Move" msgstr "" #: menus.c:627 msgid "Reload CMail Message" msgstr "" #: menus.c:629 msgid "Quit " msgstr "" #: menus.c:634 msgid "Copy Game" msgstr "" #: menus.c:635 msgid "Copy Position" msgstr "" #: menus.c:636 msgid "Copy Game List" msgstr "" #: menus.c:638 msgid "Paste Game" msgstr "" #: menus.c:639 msgid "Paste Position" msgstr "" #: menus.c:641 menus.c:686 msgid "Edit Game" msgstr "" #: menus.c:642 menus.c:687 msgid "Edit Position" msgstr "" #: menus.c:643 msgid "Edit Tags" msgstr "" #: menus.c:644 msgid "Edit Comment" msgstr "" #: menus.c:645 msgid "Edit Book" msgstr "" #: menus.c:647 msgid "Revert" msgstr "" #: menus.c:648 msgid "Annotate" msgstr "" #: menus.c:649 msgid "Truncate Game" msgstr "" #: menus.c:651 msgid "Backward" msgstr "" #: menus.c:652 msgid "Forward" msgstr "" #: menus.c:653 msgid "Back to Start" msgstr "" #: menus.c:654 msgid "Forward to End" msgstr "" #: menus.c:659 msgid "Flip View" msgstr "" #: menus.c:662 msgid "Move History" msgstr "" #: menus.c:663 msgid "Evaluation Graph" msgstr "" #: menus.c:664 msgid "Game List" msgstr "" #: menus.c:667 msgid "Comments" msgstr "" #: menus.c:668 msgid "ICS Input Box" msgstr "" #: menus.c:669 msgid "ICS/Chat Console" msgstr "" #: menus.c:671 msgid "Edit ICS menu..." msgstr "" #: menus.c:673 msgid "Edit Theme List..." msgstr "" #: menus.c:674 msgid "Board..." msgstr "" #: menus.c:675 msgid "Fonts..." msgstr "" #: menus.c:676 msgid "Game List Tags..." msgstr "" #: menus.c:681 msgid "Machine White" msgstr "" #: menus.c:682 msgid "Machine Black" msgstr "" #: menus.c:683 msgid "Two Machines" msgstr "" #: menus.c:684 msgid "Analysis Mode" msgstr "" #: menus.c:685 msgid "Analyze Game" msgstr "" #: menus.c:688 msgid "Training" msgstr "" #: menus.c:689 msgid "ICS Client" msgstr "" #: menus.c:691 msgid "Machine Match" msgstr "" #: menus.c:692 msgid "Pause" msgstr "" #: menus.c:697 msgid "Accept" msgstr "" #: menus.c:698 msgid "Decline" msgstr "" #: menus.c:699 msgid "Rematch" msgstr "" #: menus.c:701 msgid "Call Flag" msgstr "" #: menus.c:702 msgid "Draw" msgstr "" #: menus.c:703 msgid "Adjourn" msgstr "" #: menus.c:704 msgid "Abort" msgstr "" #: menus.c:705 msgid "Resign" msgstr "" #: menus.c:707 msgid "Stop Observing" msgstr "" #: menus.c:708 msgid "Stop Examining" msgstr "" #: menus.c:709 msgid "Upload to Examine" msgstr "" #: menus.c:711 msgid "Adjudicate to White" msgstr "" #: menus.c:712 msgid "Adjudicate to Black" msgstr "" #: menus.c:713 msgid "Adjudicate Draw" msgstr "" #: menus.c:718 msgid "Edit Engine List..." msgstr "" #: menus.c:720 msgid "Load New 1st Engine..." msgstr "" #: menus.c:721 msgid "Load New 2nd Engine..." msgstr "" #: menus.c:723 msgid "Engine #1 Settings..." msgstr "" #: menus.c:724 msgid "Engine #2 Settings..." msgstr "" #: menus.c:725 msgid "Common Settings..." msgstr "" #: menus.c:727 msgid "Hint" msgstr "" #: menus.c:728 msgid "Book" msgstr "" #: menus.c:730 msgid "Move Now" msgstr "" #: menus.c:731 msgid "Retract Move" msgstr "" #: menus.c:736 msgid "Mute all Sounds" msgstr "" #: menus.c:739 msgid "General..." msgstr "" #: menus.c:741 msgid "Time Control..." msgstr "" #: menus.c:742 msgid "Adjudications..." msgstr "" #: menus.c:743 msgid "ICS..." msgstr "" #: menus.c:744 msgid "Tournament..." msgstr "" #: menus.c:745 msgid "Load Game..." msgstr "" #: menus.c:746 msgid "Save Game..." msgstr "" #: menus.c:747 msgid "Game List..." msgstr "" #: menus.c:748 msgid "Sounds..." msgstr "" #: menus.c:751 msgid "Always Queen" msgstr "" #: menus.c:757 msgid "Flash Moves" msgstr "" #: menus.c:759 msgid "Highlight Dragging" msgstr "" #: menus.c:762 msgid "Highlight With Arrow" msgstr "" #: menus.c:763 msgid "Move Sound" msgstr "" #: menus.c:765 msgid "Periodic Updates" msgstr "" #: menus.c:767 msgid "Popup Exit Message" msgstr "" #: menus.c:769 msgid "Show Coords" msgstr "" #: menus.c:770 msgid "Hide Thinking" msgstr "" #: menus.c:774 msgid "Save Settings Now" msgstr "" #: menus.c:775 msgid "Save Settings on Exit" msgstr "" #: menus.c:780 msgid "Info XBoard" msgstr "" #: menus.c:781 msgid "Man XBoard" msgstr "" #: menus.c:783 msgid "XBoard Home Page" msgstr "" #: menus.c:784 msgid "On-line User Guide" msgstr "" #: menus.c:785 msgid "Development News" msgstr "" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "" #: menus.c:825 msgid "File" msgstr "" #: menus.c:826 msgid "Edit" msgstr "" #: menus.c:827 msgid "View" msgstr "" #: menus.c:828 msgid "Mode" msgstr "" #: menus.c:829 msgid "Action" msgstr "" #: menus.c:830 msgid "Engine" msgstr "" #: menus.c:831 msgid "Options" msgstr "" #: menus.c:832 msgid "Help" msgstr "" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "" #: nengineoutput.c:156 msgid "Engine output" msgstr "" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "" #: nevalgraph.c:107 msgid "Blunder" msgstr "" #: nevalgraph.c:107 msgid "Eval" msgstr "" #: ngamelist.c:87 msgid "find position" msgstr "" #: ngamelist.c:88 msgid "narrow" msgstr "" #: ngamelist.c:89 msgid "thresholds" msgstr "" #: ngamelist.c:90 msgid "tags" msgstr "" #: ngamelist.c:91 msgid "next" msgstr "" #: ngamelist.c:92 msgid "close" msgstr "" #: ngamelist.c:116 msgid "No game selected" msgstr "" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "" #: ngamelist.c:211 msgid "previous page" msgstr "" #: ngamelist.c:214 msgid "next page" msgstr "" #: ngamelist.c:217 msgid "no games matched your request" msgstr "" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "" #: ngamelist.c:284 msgid "There is no game list" msgstr "" #: nhistory.c:109 msgid "Move list" msgstr "" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "" xboard-4.9.1/po/nl.gmo0000644000175000001440000014230212747544040011465 00000000000000 -(<;)<0e<$<< <<<<=/&=V=r===&==??4?)@<@5[@#@@7@A A AAA#A%A(A*A-A3A 9AFAUAnAuA|AAA'AAABB*B0BCB7JBKB*BB&C7CRC VC"cCC C)C%C C% D/D@DODnD wD DD DDDDD D E8ENE_EwE6EE E EEEF/FLF UFcFxFFFFF FF FF F F0 G=GFGKG _G$jG*GGGG G GG H)&HPH`HuHHHHHHHHH I I6IUI mIxI II II.II JJ1JCJ LJZJqJJ JJ JJ J%JKK7KLK!lK KK KKKKKK K.K$L*L1LBLSL XLeL#LL!LVL>MYM^M$xMM M'MM M$MN#N (N 2N?N SN ]N kN uN NNNNN!NN O+OBO KOWO ^OhOOO OOOO PP2PQP gPuP&{P!P&P(PQ+Q!GQiQ~QQ0QQQQR#R+RJRNReRyR"R"R.R S S"S 'S2S MSWS^SpSXS8ST %T1TPT@jT TTT8T&T$U,U;U=U [UeU wU(UU UUU/V6VHVYVaV qV |VVV VVVVVW$W )W7WPWaWtWWWWWWWW W WW X X &X4X;X,LX yX0X!XX XY!/Y#QYuYY Y YY&Y#YZ+Z>ZUZlZ |ZZZZZ ZZ ZZZ'Z%[ *[ 5[?[ Q[^[u[ [[[[[$[\ \ &\ 4\B\6b\-\)\-\)] I]S] Z]%e]-](]"]^!^;>^z^ ^ ^^ ^^ ^^^^ ___"_<_V___h_y_ __ __ ___ _J`S`-m``````aa;a[akaa!aaaaaa+b4b"7bZbmb.~bbbbbb c c&c5c!;c]cbcjc#{cc cc%ccc ddd1dEd,Wdddddd dd$de %e0e6eFeHe_e5seEeefff.fCfLf Sf`f/gfffff f*ff g g 2g?gRg'fg gggggg h!h :hFhVhrh hh hhhhhhh iii.i5i FiRifii#ii iii ijjj9jPjhj&wj!j*j(j&k;kJkYk aklkkkkkkk kkSkMl&cl l lllllm m)m-?mmmvmm"m mm m,m(n Pdž7(+ T%a $͇1KQWm~ 0ˈ %+BQ ‰ ͉ۉ.H!]"# ƊЊ#֊  5 @RJ  ƋӋڋ#4 Bb#r Ќ '2CTl/~$ō(") LW \goq# 6Î ';@!H+j#`ڏ;[b#4 ) AK Tbu ϑ(?!G i В ْ 2On 4  *&I+p*ǔޔ*('D#l6Ǖ̕ݕ / 3Tl$,9ܖ  $0 8F a ozf7 CR&iK C#+g ! ՙ0 %=cr9# 9EY+^ Λ( #4O`p ĜƜ ؜   .5.F u6#"ޝ"$#;)_  ĞϞ=#!EVe{ ȟϟ՟ޟ "4'\ b o|Ġ :*P {$A+&.R+. ܢ ,2(1[(&ͣNC IT g q%{  Ť ##4 X d r  å  W"$z6֦ ,$Bgӧ$ 08MUh,z$Ϩ4*JQmǩש% $%JSj,s Ǫߪ1 Rs{ ǫ%ҫ  ,.K?hW09Lbks 6ƭ˭ѭ-/HWs'ܮ'3"Kn¯կ $ 6B\dm$|ǰ۰81=*o ͱ ٱ2G,Z.20-H_v  ɳ,\?!Դ&9I dp0ߵ('7L*[- ,Ķ* )B\r#ɷ8 DF)0ڸT (`6)ɹ)!0R%o! 7º7328fƻ ܻ &,&Sz0'ϼ6^.&__Z55Pk}:Zz   '/7IRYax %* 1> GU1^ 5%$ AN(` = ( / <JQ*WyMKVKq6,B~ 9(F!<| e"pX=;>:#-(R_<0Vd#oYdN%v/Pb\A{8?4 +IL@awWq $jm)mJa%Wz"`Jr-SE{4&$m^IZnL ?IxK^QA,N.OB~.G22H3*}!X\> Z 97vb;kl'Ci \jkwRvV121 Hd| #sT~XF_+cFu uhU'x86uS[Az0]U[G3Eth<trBcDY7: `T rofLc/4/q) 7:fllp"_.ikD9(P'[zC%8C]s065&1wJ@iOE]p&!aR PyWHsM=?5`gZ O ^}-,n@D|SNefg>}Geoj+ =;)bh3xtU{Y5**yQ$nTQgM The * buttons will set the font to the one selected below: Thresholds for position filtering in game list: options to use in game-viewer mode: next page (with Zippy code)# no engines are installed# no themes are defined%d avoid-moves played %s (%d reversible ply)%s (%d reversible plies)%s - %d/%d games (%d-%d-%d)%s does not support analysis%s engine has too many options %s in settings file %s program exits in draw position (%s)%s%s Copyright 1991 Digital Equipment Corporation Enhancements Copyright 1992-2016 Free Software Foundation Enhancements Copyright 2005 Alessandro Scotti %s is free software and carries NO WARRANTY;see the file COPYING for more information. Visit XBoard on the web at: http://www.gnu.org/software/xboard/ Check out the newest features at: http://www.gnu.org/software/xboard/whats_new.html Report bugs via email at: %s: bad boardSize syntax %s %s: can't cd to CHESSDIR: %s: can't parse color names; disabling colorization %s: can't parse foreground color in '%s' %s: no fonts match pattern %s %s: too few colors available; trying monochrome mode %s: unrecognized boardSize name %s %s: unrecognized color %s (Directory will be derived from engine path when empty)*+, but %s is-3-checks<<<>>>ASEANAbortAbout XBoardAbove WAV FileAbsolute Analysis ScoresAcceptActionAdd this engine to the listAdjournAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate non-ICS GamesAdjudicate to BlackAdjudicate to WhiteAdjudications...AlarmAlarm Time (msec):Alarm:All games in tourney '%s' are already played or playingAll variants not supported by the first engine (currently %s) are disabled.Almost Always Queen (Detour Under-Promote)Already at end of gameAlso match left-right flipped positionAlso match reversed colorsAltAlways QueenAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis ModeAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyze GameAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnimation Speed (high = slow):AnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-Create Logon ScriptAuto-Display CommentAuto-Display TagsAuto-InputBox PopUpAuto-KibitzAuto-ObserveAuto-Play speed of loaded games (0 = instant, -1 = off):Auto-Raise BoardAuto-Refresh Seek GraphAuto-Save GamesAverage solving time %4.2f sec (total time %4.2f sec) BBack to StartBackground Observe while PlayingBackwardBad FEN position in clipboardBad FEN position in fileBad FEN received from engineBad SeekBad game fileBad integer value %sBad position fileBad tournament fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBlunderBlunder graphBoard OptionsBoard size ( -1 = default for selected variant):Board...BookBook Depth (moves):Book FaultBook Variety (0) vs. Strength (100):Book file exists! Try again for overwrite.Both flags fellBrowseBughouseCRC (10x8)Call FlagCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't open temp fileCan't seek on game fileCan't seek on position fileCancelCannonCannot build game listCapablanca (10x8)CaptainCar HornChallenge Text Colors:Challenge:ChancellorChanging time control during a game is not implementedChannel #1 Text Colors:Channel 1:Channel:Chat partner:Chats:Clear boardClick clock to clear boardClock adjustment not allowed in auto-flag modeClocks (requires restart):Clone TourneyClose ICS engine analyze...Colorize MessagesCommentsCommon EngineCommon Engine SettingsCommon Settings...Connection closed by ICSContents ofContinue LaterCopy GameCopy Game ListCopy PositionCould not connect to host %s, port %sCould not create bookCould not open comm port %sCould not parse moveCould not write on tourney fileCouldn't parse move "%s" from ICSCrazyhouseCtrlCylinder *CymbalDDark Square Color:Dark-Squares Texture File:DeclineDefault BeepDefault Number of Games in Match (or Pairing):DeferDemoteDetect all MatesDevelopment NewsDingDirectories:Directory with Pieces Images:Disable own engine books by defaultDisplayed move is not currentDisplayed position is not currentDisplayed position is not current. Step forward to the correct position and try again.Divide entered times by 60DrawDraw after N Moves Total:Draw if Insufficient Mating MaterialDraw:Drop MenuDual Board for Background-Observed GameEGTB Cache Size (MB):EGTB Path:ERROR: Unknown user %s (in path %s) E_ngineEditEdit BookEdit CommentEdit Engine List...Edit GameEdit PositionEdit TagsEdit bookEdit commentEdit comment on %d.%s%sEdit comments:Edit tags / book / engine list:ElephantElo of strongest player at least:Elo of weakest player at least:Empty squareEnable Variation TreesEnd ChatEnd of gameEngineEngine #1Engine #1 Has Own BookEngine #1 Settings...Engine #2 / HumanEngine #2 Has Own Book Engine #2 Settings...Engine Command:Engine Directory:Engine OutputEngine SettingsEngine did not send setup for non-standard variantEngine has no optionsEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvalEvaluation GraphEvaluation graphExact position matchExitingFIRST TYPE DIRECTORY NAME HEREFRCFailed to invoke cmailFailed to open fileFailed to open file '%s' Failed to open indirection file %sFailed to parse board string: "%s"Failed to start %s chess program %s on %s: %s Falcon (10x8)Fatal ErrorFileFile type:File with Start Positions:Filename:Files:First Black Move:First White Move:First change an engine by editing the participants list of the Tournament Options dialogFirst you must specify an existing tourney file to cloneFischer castlingFlash MovesFlash Moves (0 = no flashing):Flash Rate (high = fast):Flip Pieces Shogi Style (Colored buttons restore default)Flip ViewFontsFonts...For concurrent playing of tourney with multiple XBoards:Force current variant with this engineForwardForward to EndGGame File with Opening Lines:Game ListGame List Tags...Game List...Game Number (-1 or -2 = Auto-Increment):Game list not loaded or emptyGame list:Game not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGame-list optionsGap in move listGeneralGeneral OptionsGeneral...Get Move ListGongGot end of file from keyboardGothic (10x8)Great Shatranj (10x8)Hash keys are differentHash-Table Size (MB):Headers in Engine Output WindowHelpHideHide ThinkingHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sHoldings Size:IICS Chat/Console:ICS ClientICS Input BoxICS InteractionICS OptionsICS input boxICS text menuICS...ICS/Chat ConsoleIllegal hint move "%s" from %s chess programIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move (rejected by ICS)Illegal move in ICS output: "%s"Illegal move: %d.%s%sInclude Number Tag in tourney PGNIncomplete \ escape in value for %sIncorrect moveIncrement or max (sec/move):Info XBoardInformationInitial time (min):Internal error: PARTICIPANTS set wrongInvalid pairing from pairing engineIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnJanus (10x8)Kibitz Text Colors:Kibitz:KingKnightKnightmateLaserLieutenantLight Square Color:Light-Squares Texture File:Line Gap (-1 = default for board size):LionLion roar:Load GameLoad Game OptionsLoad Game...Load New 1st Engine...Load New 2nd Engine...Load PositionLoad first engineLoad game file name?Load position file name?Load second engineLogo Size (0=off, requires restart):Lose:Machine BlackMachine MatchMachine WhiteMachine accepts your draw offerMachine offers a draw. Select Action / Draw to accept.MachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMail MoveMakrukMan XBoardMatch %s vs. %s: final score %d-%d-%dMaterial difference (optional stuff balanced)Material range (top board half optional)Maximum Number of CPUs per Engine:Message (above board):Minimum nr consecutive positions:Mismatch of STRIDE in nengineoutput.c Change and recompile!ModeMono ModeMove HistoryMove NowMove SoundMove history / Engine Output:Move listMove:Moves per session:Must not use GUI bookN-Move Rule:N-fold Repeats:NPSNegate Score of Engine #1Negate Score of Engine #2New ChatNew GameNew Shuffle GameNew Shuffle Game...New VariantNew Variant...New directoryNew name for current theme:Next PositionNickname (optional):No SoundNo castleNo default pieces installed! Select your own using '-pieceImageDirectory'.No engine %s is installedNo engine with the name you gave is installedNo game has been loaded yetNo game selectedNo games before year:No hint availableNo more games in this messageNo moves in gameNo pairing engine specifiedNo position has been loaded yetNo tag selectedNo unfinished gamesNo unfinished games No value provided for argument %sNormalNot enough participantsNoteNumber of Board Files:Number of Board Ranks:Number of tourney cycles (or Swiss rounds):OKOld Save Style (as opposed to PGN)On-line User GuideOne-Click MovingOnly bughouse is not available in viewer mode.Opening-Book Filename:OptionsOther Channel Text Colors:Other Text Colors:Own Games OnlyPGN Event Header:Paste GamePaste PositionPausePause between Match Games (msec):PawnPenaltyPeriodic UpdatesPeriodic Updates (in Analysis Mode)PhonePick new gamePlayPlay Move(s) of Clicked PV (Analysis)Polyglot book not validPolygot Directory:Ponder Next MovePopPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition Number (-1 or -2 = Auto-Increment):Position not found in filePremovePremove Highlight Color:Premove for BlackPremove for WhitePrev PositionPromotePull pawn backwards to under-promoteQueenQuiet PlayQuit Quit after gameRReading game file (%d)Ready to send mail Recompile to support this BOARD_RANKS or BOARD_FILES!Recompile with larger BOARD_RANKS or BOARD_FILES to support this sizeRegistered EnginesReload CMail MessageRematchReplace EngineRequest Text Colors:Request:ResignRetract MoveRevertRewind Index after this many Games (0 = never):RoarRookS-Shout Text Colors:S-Shout:Same materialSame material with exactly same Pawn chainSave Final Positions on File:Save GameSave Game OptionsSave Game...Save Games as BookSave Games on File:Save Out-of-Book Info in PGN Save PositionSave Score/Depth Info in PGNSave Selected GamesSave Settings NowSave Settings on ExitSave Tourney Games on:Save game file name?Save position file name?Saving gameSaving positionScanning through games (%d)Scores in Move ListSearch mode:Seconds per Move:Seek GraphSeek Text Colors:Seek:SeirawanSelect Engine:Select engine from list:Selectable themes:ShatranjShiftShout Text Colors:Shout:Show CoordinatesShow CoordsShow Target SquaresShown position is subsetSlapSocket support is not configured inSolved %d out of %d (%3.1f%%) Sound OptionsSound Program:Sounds Directory:Sounds...SpartanStart-position number:Starting %s chess programStarting chess programStartup failure on '%s'Sticky WindowsStill need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s Stop ExaminingStop ObservingSuicideSuperchessSwiss tourney finishedSync after cycleSync after roundTRY ANOTHER NAMETagsTell Text Colors:Tell:Test LegalityThat square is occupiedThe cmail message is not loaded. Use Reload CMail Message and make your move again.There is no game listThere is no pending offer on this moveThis only works in the GTK buildTime ControlTime Control...Time-Odds factors:Top-Level DialogsTournament OptionsTournament file: Tournament...Tourney participants:Tourney type (0 = round-robin, 1 = gauntlet):TrainingTraining mode offTraining mode onTraining mode requires a game fileTruncate GameTry-Out Sound:Two MachinesTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineType a moveUCIUSI/UCCI (uses specified -uxiAdapter)Unable to create font set for %s. Unfinished:Unknown initialMode %sUnknown variant name %sUnknown wild type %dUnrecognized argument %sUnrecognized boolean argument value %sUnusedUpgrade EngineUpload to ExamineUse Board TexturesUse GUI BookUse external piece bitmaps with their own colorsUse nickname in PGN player tags of engine-engine gamesUser FileUser WAV File:Variant %s not supported by %sVariant %s supported only in ICS modeVariants marked with * can only be played with legality testing off.Verify Engine Result ClaimsViewWB protocol v1 (do not wait for engine features)Wait until your turn, or select 'Move Now'.Wait until your turn.Waiting for access to save fileWaiting for first chess programWaiting for other game(s)Waiting for reply from opponent Waiting for second chess programWarlordWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite Piece Color:White to playWhite's flag fellWild castleWin / Loss Threshold:Win:Wood ThunkXBoard Home PageYou are not examining a gameYou are not observing a gameYou are playing BlackYou are playing WhiteYou can only change one engine at the timeYou can't revert while pausingYou cannot do this while you are playing or observingYou cannot replace an engine while it is engaged! Terminate its game first.You did not specify the engine executableYou have already mailed a move. Wait until a move arrives from your opponent. To resend the same move, type "cmail -remail -game %s" on the command line.You have edited the game history. Use Reload Same Game and make your move again.You have entered too many moves. Back up to the correct position and try again.You have not made a move yetYou must make your move before offering a drawYou must supply a tournament file, for storing the tourney progressYou restarted an already completed tourney. One more cycle will now be added to it. Games commence in 10 sec.Your opponent is not out of timeZoom factor in Evaluation Graph:_Action_Edit_File_Help_Mode_Options_Viewadd next moveatomicbad searchTime option %sbad timeControl option %sberolina *browseby nameby typechu shogi (12x12)classicalclearclosecommit changescould not load EGBB librarycourier (12x8)downe-Mail Bug Reportelven chess (10x10)engine namefactoryfailed writing PVfairyfind positionfirstfixed maxgive-awaygrand (10x10)incrementalinternal rcmd not implemented for Unixlosersmighty lionmovenarrownextnext pageno games matched your requestonly marked squares are legalor specify one below:pick fixedprevious pageprotocol version %d not supportedrandomizerights grantedrights revokedsave changessay Internal error; bad moveType %d (%d,%d-%d,%d)secondshogi (9x9)shuffletagsthresholdstwo kingsupvs.white pixel = 0x%lx, black pixel = 0x%lx wrong EGBB versionxiangqi (9x10)your opponent kibitzes: %sProject-Id-Version: GNU xboard 4.9.0-pre2 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2016-04-13 19:42+0200 Last-Translator: Benno Schulenberg Language-Team: Dutch Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Lokalize 1.0 De * knoppen stellen het hieronder geselecteerde lettertype in: Drempelwaarden voor positiefiltering in partijenlijst: Te gebruiken opties in viewer-modus: volgende pagina (met Zippy-code)# er zijn geen automaten geïnstalleerd# er zijn geen thema's gedefinieerd%d ontwijkzetten gespeeld %s (%d omkeerbare ply)%s (%d omkeerbare plies)%s - %d/%d partijen (%d-%d-%d)%s ondersteunt analyse niet.%s-automaat heeft te veel instellingen %s in instellingenbestand %s programma is geëindigd in remisepositie (%s)%s%s Copyright 1991 Digital Equipment Corporation Uitbreidingen Copyright 1992-2016 Free Software Foundation Uitbreidingen Copyright 2005 Alessandro Scotti %s is vrije software en kent GEEN GARANTIE; zie het bestand COPYING voor meer informatie. Bezoek XBoard op het web: http://www.gnu.org/software/xboard/ Voor nieuwe functies zie: http://www.gnu.org/software/xboard/whats_new/ Rapporteer gebreken in het programma aan ; meld vertaalfouten aan . %s: onjuiste syntax %s voor 'boardSize' %s: Kan huidige map niet wijzigen naar CHESSDIR: %s: onbegrepen kleurnamen; kleuring wordt uitgeschakeld %s: onbegrepen voorgrondkleur in '%s' %s: er zijn geen lettertypen die overeenkomen met patroon %s %s: te weinig kleuren beschikbaar; monochroommodus wordt geprobeerd %s: onbekende naam %s voor 'boardSize' %s: niet-herkende kleur %s (map wordt afgeleid uit automaatpad indien leeg)*+, maar %s is-drie keer schaak<<<>>>ASEANAfbrekenOver XBoardBovenstaande WAVAbsolute analysescoresAccepterenActiesDeze automaat aan de lijst toevoegenOpschortenTot remise besluitenEenvoudige remises beslissen (3 zetten uitstel)Non-ICS-partijen beslissenWinst aan zwart toekennenWinst aan wit toekennenBeslissingen...WekkerWektijd (msec):Wekker:Alle partijen in toernooi '%s' zijn al gespeeld of spelen nogVarianten die de eerste automaat (momenteel %s) niet kent zijn onkiesbaar.Bijna altijd koningin (onderpromotie-omweg)Reeds aan einde van partij.Ook matchen met links-rechts gespiegelde positieOok matchen met verwisselde kleurenAltAltijd koninginNiet-eenduidige zet in ICS-uitvoer: '%s'Niet-eenduidige zet: %d.%s%sAnalysemodusAnalysemodus werkt niet met ICS-modusAnalysemodus vereist een schaakprogrammaPartij analyserenAnalyzeFile-modus vereist een partijbestandSlepen animerenZetten animerenAnimatiesnelheid (hoog = langzaam):AnnoterenAartsbisschopVanzelf vlaggenBord vanzelf draaienVanzelf becommentariërenAutomatisch een logon-script makenOpmerkingen vanzelf tonenLabels vanzelf tonenInvoervak vanzelf tonenVanzelf kibitzenVanzelf observerenSpeelsnelheid van geladen partijen (0 = instantaan, -1 = uit):Bord automatisch focussenZoekgrafiek vanzelf verversenPartijen vanzelf opslaanGemiddelde oplostijd %4.2f sec (totale tijd %4.2f sec) BTerug naar beginOp achtergrond observeren tijdens spelenAchterwaartsOngeldige FEN-positie op het klembordOngeldige FEN-positie in bestandOngeldige FEN ontvangen van automaatOngeldige bestandssprongIncorrect partijbestandOngeldig geheel getal: %sIncorrect positiebestandIncorrect toernooibestandLoperZwartKleur van zwart stuk:Zwart is aan zetZwarts vlag is gevallenGeblinddoektBlunderBlundergrafiekBordinstellingenBordafmetingen (-1 = standaard voor de variant):Bord...BoekBoekdiepte (zetten):Fout in boekGevarieerdheid (0) tot Sterkte (100):Bestand bestaat al. Probeer het opnieuw om deze te overschrijven.Beide vlaggen zijn gevallenBladerenBughouseCRC (10x8)'Vlag' roepenKan niet nog verder teruggaanKan niet nog verder vooruitgaanEr is geen toernooi mogelijk zonder automaten.Kan '%s' niet openenKan tijdelijk bestand niet openenKan niet springen in partijbestandKan niet springen in positiebestandAnnulerenKanonKan partijenlijst niet samenstellenCapablanca (10x8)KapiteinClaxonUitdagings-tekstkleuren:Uitdaging:KanselierHet wijzigen van de tijdsinstellingen tijdens een partij is niet geïmplementeerd.Kanaal-1-tekstkleuren:Kanaal 1:Kanaal:Chatpartner:Chats:Bord leegmakenKlik op klok om bord leeg te maken.Klokbijstelling is niet toegestaan in auto-vlagmodusKlokken (vereist een herstart):Toernooi klonenAnalyse van ICS-automaat sluiten...Berichten kleurenOpmerkingenGemeenschappelijke automaatAlgemene automaatinstellingenAlgemene instellingen...Verbinding is gesloten door ICSInhoud vanLater verdergaanPartij kopiërenPartijenlijst kopiërenPositie kopiërenKan geen verbinding maken met host %s, poort %sKan geen boek aanmakenKan communicatiepoort %s niet openenKan zet niet ontledenKan niet naar toernooibestand schrijven.Kan zet '%s' van ICS niet ontledenCrazyhouseCtrlcilinder *CymbaalDKleur van donker veld:Textuurbestand voor donkere velden:WeigerenStandaardpiepStandaard aantal partijen in een toernooi (of koppel):UitstellenDegraderenAlle matten detecterenOntwikkelingsnieuwsTinkMappen:Map met afbeeldingen van stukken:Eigen automaatboeken standaard uitschakelenGetoonde zet is niet de huidigeGetoonde positie is niet de huidigeGetoonde positie is niet de huidige. Ga vooruit naar de correcte positie en probeer het opnieuw.Ingevoerde tijden door 60 delenRemiseRemise na in totaal N zetten:Remise bij onvoldoende matmateriaalRemise:PlaatsingsmenuDubbel bord voor op achtergrond geobserveerde partijGrootte van EGTB-cache (MB):EGTB-pad:Fout: onbekende gebruiker %s (in pad %s) A_utomaatBewerkenBoek bewerkenOpmerking bewerkenAutomatenlijst bewerken...Partij bewerkenPositie bewerkenLabels bewerkenBoek bewerkenOpmerking bewerkenOpmerking op %d.%s%s bewerkenOpmerkingen bewerken:Labels-/Boeken-/Automatenlijst bewerken:OlifantElo van sterkste speler minstens:Elo van zwakste speler minstens:Leeg veldVariatiebomen inschakelenChat beëindigenEinde van partijAutomaatAutomaat 1Automaat #1 heeft eigen boekInstellingen van automaat 1...Automaat 2 / MensAutomaat #2 heeft eigen boekInstellingen van automaat 2...Automaatopdracht:Automatenmap:AutomaatuitvoerAutomaatinstellingenAutomaat heeft geen opstelling gestuurd voor variantAutomaat kent geen instellingen.AutomaatuitvoerFoutFout bij lezen van zettenlijst: extra bordFout bij lezen van zettenlijst: genestFout bij lezen van zettenlijst: twee koppenFout bij lezen van %s schaakprogramma (%s)Fout bij lezen van ICSFout bij lezen van toetsenbordFout bij schrijven naar %s schaakprogrammaFout bij schrijven naar ICSFout bij schrijven naar schaakprogrammaFout bij schrijven naar beeldschermFout: %s schaakprogramma (%s) is onverwacht beëindigdEvalEvaluatiegrafiekEvaluatiegrafiekExacte positie-overeenkomstAfsluitenTyp hier eerst een mapnaamFRCAanroepen van 'cmail' is misluktKan bestand niet openenKan bestand '%s' niet openen Kan indirectiebestand %s niet openenOntleden van bordtekenreeks is mislukt: '%s'Starten van %s schaakprogramma (%s) op %s is mislukt: %s Falcon (10x8)Fatale foutBestandBestandstype:Bestand met startposities:Bestandsnaam:Bestanden:Eerste zet van zwart:Eerste zet van wit:Wijzig eerst een automaat door de deelnemerslijst in de dialoog «Toernooi-instellingen» te bewerken.U dient eerst een bestaand toernooibestand op te geven.Fischer-rokadeZetten laten knipperenZetten knipperen (0 = niet knipperen):Knippersnelheid (hoog = snel):Stukken op Shogi-manier omdraaien (gekleurde knoppen herstellen standaard)Bord draaienLettertypenLettertypen...Voor het gelijktijdig spelen van een toernooi met meerdere XBoards:Huidige variant opdringen aan deze automaatVoorwaartsVooruit naar eindeGPartijbestand met openingsregels:PartijenlijstPartijenlijst-labels...Partijenlijst...Partijnummer (-1 of -2 = automatische ophoging):Partijenlijst is leeg of niet geladenPartijenlijst:Partij niet gevonden in bestandPartijnummer valt buiten bereik*** Partij is te lang; verhoog MAX_MOVES en hercompileer.Partijenlijst-instellingenGat in zettenlijstGeneraalAlgemene instellingenAlgemeen...Zettenlijst ophalenGongEinde-van-bestand ontvangen van toetsenbordGothic (10x8)Grote Shatranj (10x8)Hash-sleutels zijn verschillendGrootte van hash-tabel (MB):Kopregels in uitvoervenster van automaatHulpVerbergenDenken verbergenDenken verbergen voor mensMarkeringskleur:Slepen markerenLaatste zet markerenMarkeren met pijlMarkeren met pijlHintHint: %sStalgrootte:IICS-chat/Console:ICS-cliëntICS-invoervakICS-interactieICS-instellingenICS-invoervakICS-tekstmenuICS...ICS/chat-consoleOngeldige hintzet '%s' van %s schaakprogramma.Ongeldige zetOngeldige zet '%s' (geweigerd door %s schaakprogramma)Ongeldige zet '%s' van %s automaat.Ongeldige zet (geweigerd door ICS)Ongeldige zet in ICS-uitvoer: '%s'Ongeldige zet: %d.%s%sNummerlabel in toernooi-PGN opnemenOnvolledige \-stuurcode in waarde voor %sOnjuiste zetOphoging of maximaal (sec/zet):'info xboard'InformatieBegintijd (minuten)**Interne programmafout**: PARTICIPANTS is verkeerd ingesteldOngeldig koppel van koppelautomaat.Zwart is aan zetWit is aan zetZwart is niet aan zetWit is niet aan zetU bent aan zetJanus (10x8)Kibitz-tekstkleuren:Kibitz:KoningPaardpaardmatLaserLuitenantKleur van licht veld:Textuurbestand voor lichte velden:Regeltussenruimte (-1 = standaard voor bordgrootte):LeeuwLeeuwenbrul:Partij ladenPartij-instellingen ladenPartij laden...Nieuwe 1ste automaat laden...Nieuwe 2de automaat laden...Positie ladenEerste automaat ladenPartij laden uit bestand:Positie laden uit bestand:Tweede automaat ladenLogogrootte (0=uit, vereist een herstart):Verloren:Automaat heeft zwartAutomatentoernooiAutomaat heeft witAutomaat accepteert uw remise-aanbodAutomaat biedt remise aan. Kies Acties > Remise om te accepteren.MachineBlack-modus werkt niet met ICS-modusMachineBlack-modus vereist een schaakprogrammaMachineWhite-modus werkt niet met ICS-modusMachineWhite-modus vereist een schaakprogrammaZet mailenMakruk'man xboard'Toernooi van %s tegen %s: eindscore %d-%d-%dMateriaalverschil (optioneel spul is in evenwicht)Materiaalbereik (bovenste bordhelft is optioneel)Maximum aantal processoren per automaat:Bericht (boven tafel):Minimum aantal opeenvolgende posities:*** Niet-passende 'STRIDE' in 'nengineoutput.c'. Pas deze aan en hercompileer.ModusMono-modusZettengeschiedenisNu zettenZetgeluidZettengeschiedenis / Automaatuitvoer:ZettenlijstZet:Zetten per sessie:Hoort geen GUI-boek te gebruikenN-zettenregel:N-voudige herhalingen:NPSScore van automaat 1 negatief makenScore van automaat 2 negatief makenNieuwe chatNieuwe partijHusselpartijNieuwe husselpartij...VariantenNieuwe variantpartij...Nieuwe mapNieuwe naam voor huidig thema:Volgende positieBijnaam (optioneel):(geen geluid)geen rokadeEr zijn geen standaardstukken geïnstalleerd! Kies uw eigen met '-pieceImageDirectory'.Automaat '%s' is niet geïnstalleerdEr is geen automaat met de gegeven naam geïnstalleerdEr is nog geen partij geladenGeen partij geselecteerdGeen partijen vóór het jaar:Geen hint beschikbaarGeen verdere partijen in dit berichtPartij bevat geen zettenGeen koppelautomaat gegevenEr is nog geen positie geladenGeen label geselecteerdGeen onafgemaakte partijenGeen onafgemaakte partijen. Geen waarde gegeven voor argument %snormaalTe weinig deelnemersNotitieAantal bordlijnen:Aantal bordrijen:Aantal toernooirondes (of Zwitserse rondes):OKOude opslagstijl (in plaats van PGN)Online gebruikersgidsEenkliks zettenAlleen Bughouse is niet beschikbaar in viewer-modus.Bestandsnaam van openingenboek:OptiesAnderekanalen-tekstkleuren:Kleuren voor andere tekst:Alleen eigen partijenPGN-gebeurtenis-kopregel:Partij plakkenPositie plakkenPauzerenPauze tussen toernooipartijen (msec):PionZoemerPeriodieke updatesPeriodieke updates (in analysemodus)TelefoonKies een nieuwe partijAfspelenZet(ten) spelen van aangeklikte PV (Analyse)Polyglot-boek is ongeldigPolygot-map:Volgende zet overdenkenPlopPopup-afsluitberichtPopup-afsluitberichtenPopup-zetfoutenPositienummer (-1 of -2 = automatische ophoging):Positie niet gevonden in bestandVoorzetVoorzet-markeringskleur:Voorzet voor zwartVoorzet voor witVorige positiePromoverenBeweeg pion terug voor onderpromotie.KoninginStil spelenAfsluiten Afsluiten na partijRLezen van partijbestand (%d)Klaar om mail te verzenden. *** Hercompileer om BOARD_RANKS of BOARD_FILES te ondersteunen.*** Hercompileer met grotere BOARD_RANKS of BOARD_FILES om deze grootte te ondersteunenGeregistreerde automatenCMail-bericht herladenRevancheAutomaat vervangenVerzoek-tekstkleuren:Verzoek:OpgevenZet terugnemenTerugdraaienIndex terugspoelen na dit aantal partijen (0 = nooit):BrulTorenS-Shout-tekstkleuren:S-Shout:Zelfde materiaalZelfde materiaal met exact dezelfde pionketenEindposities opslaan in:Partij opslaanPartij-instellingen opslaanPartij opslaan...Partijen opslaan als boekPartijen opslaan in:Uit-het-boek-informatie opslaan in PGN Positie opslaanScore-/diepte-informatie opslaan in PGNGeselecteerde partijen opslaanInstellingen nu opslaanInstellingen opslaan bij afsluitenToernooipartijen bewaren op:Partij opslaan in bestand:Positie opslaan in bestand:Opslaan van partijOpslaan van positieZoeken door partijen (%d)Scores in zettenlijstZoekmodus:Seconden per zet:ZoekgrafiekTekstkleuren voor zoeken:Zoeken:SeirawanKies automaat:Selecteer een automaat uit de lijst:Selecteerbare thema's:ShatranjShiftShout-tekstkleuren:Shout:Coördinaten tonenCoördinaten tonenDoelvelden tonenGetoonde positie is een subsetKlapOndersteuning voor sockets is niet geconfigureerdEr werden %d van de %d opgelost (%3.1f%%) GeluidsinstellingenGeluidsprogramma:Geluidenmap:Geluiden...SpartaansStartpositienummer:Starten van %s schaakprogrammaStarten van schaakprogrammaOpstartfout bij '%s'Kleverige venstersU dient nog een zet te doen voor partij %s. U dient nog een zet te doen voor deze partij. U dient nog zetten te doen voor alle %d partijen. U dient nog zetten te doen voor beide partijen. U dient nog zetten te doen voor partijen %s. Stoppen met bestuderenStoppen met observerensuïcideSuperschaakZwitsers toernooi is beëindigd.Synchroniseren na een cyclusSynchroniseren na een rondeKies een andere naamLabelsTell-tekstkleuren:Tell:Geldigheid testenDat veld is bezet.Het CMail-bericht is niet geladen. Gebruik «CMail-bericht herladen» en doe uw zet opnieuw.Er is geen partijenlijstEr is geen aanbod op deze zet.Dit werkt alleen in de GTK-versieTijdsbeperkingTijdsbeperking...Tijdsfactoren:Topniveau-dialogenToornooi-optiesToernooibestand: Toernooi...Toernooi-deelnemers:Toernooitype (0 = op-de-rij-af, 1 = handschoen):TrainingTrainingsmodus is uitgeschakeldTrainingsmodus is ingeschakeldTrainingsmodus vereist een partijbestandPartij afkappenDit geluid proberen:Twee automatenTwoMachines-modus werkt niet met ICS-modusTwoMachines-modus vereist een schaakprogrammaTyp een zetUCIUSI/UCCI (gebruikt de opgegeven -uxiAdapter)Kan geen lettertypenset aanmaken voor %s. Onafgemaakt:Onbekende initialMode %sOnbekende variantnaam: %sOnbekend wild type %dNiet-herkend argument: %sNiet-herkende booleaanse waarde: %s(loos)Automaat upgradenUploaden om te bestuderenBordtexturen gebruikenGUI-boek gebruikenExterne bitmaps met eigen kleuren voor stukken gebruikenBijnaam gebruiken in PGN-spelerlabels van automaat-automaat-partijenGebruikersbestandEigen WAV-bestand:Variant %s wordt niet ondersteund door %sVariant %s wordt alleen ondersteund in ICS-modusVarianten gemarkeerd met * kunnen alleen gespeeld met geldigheidstest uitgeschakeld.Resultaatclaims van automaat controlerenWeergaveWB-protocol v1 (niet op automaateigenschappen wachten)Wacht op uw beurt, of kies «Nu zetten».Wacht op uw beurt.Wachten op toegang om bestand op te slaanWachten op eerste schaakprogrammaWachten op andere partij(en)Wachten op antwoord van tegenstander Wachten op tweede schaakprogrammaKrijgsheerWaarschuwing: u bent nog een partij aan het bestuderen.Waarschuwing: u bent nog een partij aan het observeren.Waarschuwing: u bent nog een partij aan het spelen.Waarschuwing: tweede automaat (%s) ondersteunt dit niet.WitKleur van wit stuk:Wit is aan zetWits vlag is gevallenwilde rokadeWinst/verlies-grenswaarde:Gewonnen:HoutplokWebpagina van XBoardU bent geen partij aan het bestuderen.U bent geen partij aan het observeren.U speelt met zwartU speelt met witU kunt slechts één automaat tegelijk wijzigen.U kunt niet terugdraaien tijdens pauze.U kunt dit niet doen tijdens het spelen of observeren.U kunt een automaat niet vervangen terwijl deze gebruikt wordt. Beëindig eerst diens partij.U hebt geen automaatbestand opgegeven.U hebt al een zet gemaild. Wacht tot er een zet arriveert van uw tegenstander. Om dezelfde zet opnieuw te verzenden, typt u: "cmail -remail -game %s" op de opdrachtregel.U hebt de partijgeschiedenis bewerkt. Gebruik «Zelfde partij herladen» en doe uw zet opnieuw.U hebt te veel zetten ingevoerd. Ga terug naar de correcte positie en probeer het opnieuw.U hebt nog geen zet gedaanU dient uw zet te doen alvorens remise aan te bieden.U dient een toernooibestand op te geven, om de toernooivoortgang in op te slaan.U hebt een reeds voltooid toernooi herstart. Er wordt een extra cyclus aan toegevoegd. De partijen beginnen in tien seconden.Uw tegenstander heeft nog tijd.Zoomfactor in evaluatiegrafiek:_ActiesB_ewerken_Bestand_Hulp_Modus_Opties_Weergavevolgende zet toevoegenatomischongeldige searchTime-optie: %songeldige timeControl-optie: %sberolina *Bladerenop naamop typeChu shogi (12x12)Klassiekwissensluitenwijzigingen doorvoerenkan EGBB-bibliotheek niet ladenCourier (12x8)omlaagFoutrapportage mailenElvenschaak (10x10)automaatnaamorigineelschrijven van hoofdvariant is misluktFairypositie vindeneersteVast maximumweggeverGrand (10x10)Ophogendinterne 'rcmd' is niet geïmplementeerd voor UnixLosersMighty Lionzettennauwvolgendevolgende paginaer zijn geen partijen die overeenkomen met uw verzoekalleen gemarkeerde velden zijn geldigof geef er hieronder een op:Vaste kiezenvoorgaande paginaprotocolversie %d wordt niet ondersteundWillekeurigrechten verleendrechten ingetrokkenwijzigingen opslaan**interne programmafout**; ongeldig moveType %d (%d,%d-%d,%d)tweedeShogi (9x9)Husselenlabelsgrenswaardentwee koningenomhoogtegenwitte pixel = 0x%lx, zwarte pixel = 0x%lx onjuiste EGBB-versieXiangqi (9x10)Uw tegenstander kibitzt: %sxboard-4.9.1/po/LINGUAS0000755000175000001440000000030512717001265011366 00000000000000# whitespace separated list of translated languages goes below # note: zh translations are untested; xboard fails to create a fontset for them da de es fr it nl pl ru sr tr uk vi zh_CN zh_HK zh_TW xboard-4.9.1/po/boldquot.sed0000644000175000001440000000033112421746651012672 00000000000000s/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g s/“/“/g s/”/”/g s/‘/‘/g s/’/’/g xboard-4.9.1/po/ru.gmo0000644000175000001440000015751312747544040011514 00000000000000<[\(5;5$6*6 ,686S6/k6666&67174L7)7757#8$87?8w8y8 {8888888 88888889'989Q9e9y999979K9*.:Y:p: t:":: :):%: ;%';M;^;m;; ; ;; ;;;; <<$<<<6L<< < <<<<<= =(===O=c=j=p= == == = =0=> >> $>$/>*T>>>> >>>)> ??/?G?c?j?q???? ? ?? ?? ?? @@.)@X@ s@@@@ @@@@ AA $A.A =A%KAqAAAA!AA A BBB&BAB IB.VBBBBBB BB#BC!&CVHCCCC$CC D'D6D LD$WD|DD D DD D D D D DDEE!E?E _ElEE EE EEEE E FF/F AFOF2_FF FF&F!F&G(,GUGlG!GGGG0G(H-H>HOHdHlHHHHH"H"H.I II WIcI hIsI IIIIXI8JUJtJ JJJ8JJJJ JK K("KKK iKtKK/KKKKK L L(L-L KLYLoLLLLL LLLLM&M;MPMUM^M`M rM }MM M M MMM,M N0N!FNhN NNN N NN&N# ODOWOjOOOOO OO OOOP P PP ,P9PPP gPuPP$PP P P PP6Q-FQ)tQ-Q)Q QR R%R"8R[R!rRR R RR RR RRRSSS9SSS\SeSvS SS SS SSSJSFT-`TTTTTTUU.UNU^UrU!UUUU+UUUV. VOVfVnVV VVV!VVVV#VW "W0W%5W[WsWWWWWW,WXX$X=XOX aXoX$wXX XXXXXX5XE&YlYYYYYY YY/YYZ ZZ 5Z?Z QZ^ZqZ ZZZZZ ZZ[[ 2[?[ Q[\[n[t[}[[[[[[ [[[#[!\ @\N\]\ o\y\\\\\&\!]*1](\]&]]] ]]]]^^$^ *^8^SP^^&^ ^ ___2_ M_[_-q____"_ __ `,`(E` n`"z` `````&a-a4aCaUa ha uaaa%aDab4b+9beb{bbb b bc'c'Gc%oc2ccc ccdd d'd8dUdrdd*dd5dKe)jeeP.fOff.fCgm_g g ghhh#h)h/h8h >hLhShlhhhh hhhhhhh hi i i)i /i 9i Ci Qi&]iiiii iiii i!j (j2jAj Pj1]jjj j jjj)jjjk^ mrimm%m*n4/nmdn:nB o"Po[soSo<#p`pApJ&qkqqKq))rwSrrr%rrrrrrss/s4Ksss2sss0s3+t,_t*tt t t tP usquIu8/vhvlv=v*v vGvPBw#wKw-x1xDMx&xxx#xyI)yLsy>yyz>z#[z[zzzz {^"{H{N{|07|7h|?|(| } }}:}%N}t}}}}v} X~ f~'t~'~~m~2L .*O*e8TɀG f s<~(% %'4 \ j#v EĂQ 3\#>*5,M z6҄ .'#V@z-,<LSA @,m8Շ#=F8XyC bO8Y ?[݊ 9GYsR # (.9W#)"ߌ#.@&oX]b4x;͎ %($Ns%$ޏ!5hU' J RVL>/5!e7:L-G@u (Ó0 9HD!+”1A ;bF%'0:k ~qcb՗@8y ]  +.1HzG8ߙ.33b&')Nx .I5&Q2xKɜ$(5R^4Н*!0!Rt+О#. +O{EJ$XoIȠ;(Nw 'š[gIŢ%ע# ! /<E NYl>ǣأ#757m!,Ǥ,[!}!$إ70\sZb'G o5|K%)$\N ͩ",45j 0i)2?2r2ѫ27H\1v!2ʬ)Rܭ=//m"Rڮ&-JT,$̯,-MLDcg<j `ȱ.)X4kٲ 9 > I/TLѳ"NAe*Ҵ && 5GM}0˵%."9Q7!öd _j 1ķ%Ƿ't1:8lù Z* C' @8a*!Ż.29I.#м#6.O~% ߽̽0.L])c)E6"Eh=BĿ 0<M:/L <ZPH219dF=?<(|9 T1Z"!%!'KI%s2Y4NV(I1(- V,wL<,4i\)-%6SO4vw9*=d;$-;1"mJUT1b #&:J *(O.5"d OTyMOHh&e#x=M F P ^h x*01 =T dr%H;!]{*/"%3YHx #; P\$%D=%N#t%f%4 ER f qG~E> ahH!C7?:D9p.%]"LU@A$)}Eb/b uilQ$MX f|>Vl ;ZOG724S:.8m ,K+ YcoD|,(7-0[bQ$'*r_av Fygp<pG/-xUS8%=Dwa+ JK,i^? ]c@~4.`'5FIs<5Q=t}!-1*8_}lOPfz|en vxIe )fw03]5"wjtXL1&r9ILmkuoV\#rJ&= Z6A'TtyNhCH_> 9j;(Yvi  <z^BZU^V142s;\)WAdu#~N q{ 6!*6\%0k3S~"ROy(TkX+[`mP&EeJ/gg3E{BWdzPGT:noRnh`xCB{dR MH?FM W>2Y@s#cNK[jqq The * buttons will set the font to the one selected below: options to use in game-viewer mode: next page# no engines are installed# no themes are defined%s (%d reversible ply)%s (%d reversible plies)%s does not support analysis%s engine has too many options %s in settings file %s program exits in draw position (%s)%s: bad boardSize syntax %s %s: can't cd to CHESSDIR: %s: can't parse color names; disabling colorization %s: can't parse foreground color in '%s' %s: no fonts match pattern %s %s: too few colors available; trying monochrome mode %s: unrecognized boardSize name %s %s: unrecognized color %s (Directory will be derived from engine path when empty)*+, but %s is-<<<>>>AbortAbout XBoardAbove WAV FileAbsolute Analysis ScoresAcceptActionAdd this engine to the listAdjournAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate non-ICS GamesAdjudicate to BlackAdjudicate to WhiteAdjudications...AlarmAlarm Time (msec):Alarm:All games in tourney '%s' are already played or playingAll variants not supported by the first engine (currently %s) are disabled.Almost Always Queen (Detour Under-Promote)Already at end of gameAltAlways QueenAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis ModeAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyze GameAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnimation Speed (high = slow):AnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-Create Logon ScriptAuto-Display CommentAuto-Display TagsAuto-ObserveAuto-Raise BoardAuto-Refresh Seek GraphAuto-Save GamesAverage solving time %4.2f sec (total time %4.2f sec) BBack to StartBackground Observe while PlayingBackwardBad FEN position in clipboardBad FEN position in fileBad FEN received from engineBad SeekBad game fileBad integer value %sBad position fileBad tournament fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBlunderBlunder graphBoard OptionsBoard size ( -1 = default for selected variant):Board...BookBook Depth (moves):Book FaultBook Variety (0) vs. Strength (100):Book file exists! Try again for overwrite.Both flags fellBrowseBughouseCall FlagCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't open temp fileCan't seek on game fileCan't seek on position fileCancelCannonCannot build game listCapablanca (10x8)CaptainCar HornChallenge:ChancellorChannel #1 Text Colors:Channel 1:Channel:Chat partner:Chats:Clear boardClick clock to clear boardClock adjustment not allowed in auto-flag modeClocks (requires restart):Clone TourneyClose ICS engine analyze...Colorize MessagesCommentsCommon EngineCommon Engine SettingsCommon Settings...Connection closed by ICSContents ofContinue LaterCopy GameCopy Game ListCopy PositionCould not connect to host %s, port %sCould not create bookCould not open comm port %sCould not parse moveCould not write on tourney fileCouldn't parse move "%s" from ICSCtrlCylinder *CymbalDDark Square Color:Dark-Squares Texture File:DeclineDefault BeepDefault Number of Games in Match (or Pairing):DeferDemoteDetect all MatesDevelopment NewsDingDirectories:Directory with Pieces Images:Disable own engine books by defaultDisplayed move is not currentDisplayed position is not currentDisplayed position is not current. Step forward to the correct position and try again.Divide entered times by 60DrawDraw after N Moves Total:Draw if Insufficient Mating MaterialDraw:Drop MenuDual Board for Background-Observed GameEGTB Cache Size (MB):EGTB Path:ERROR: Unknown user %s (in path %s) E_ngineEditEdit BookEdit CommentEdit Engine List...Edit GameEdit PositionEdit TagsEdit bookEdit commentEdit comment on %d.%s%sEdit comments:ElephantElo of strongest player at least:Elo of weakest player at least:Empty squareEnable Variation TreesEnd ChatEnd of gameEngineEngine #1Engine #1 Has Own BookEngine #1 Settings...Engine #2 / HumanEngine #2 Has Own Book Engine #2 Settings...Engine Command:Engine Directory:Engine OutputEngine SettingsEngine did not send setup for non-standard variantEngine has no optionsEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvalEvaluation GraphEvaluation graphExact position matchExitingFIRST TYPE DIRECTORY NAME HEREFRCFailed to invoke cmailFailed to open fileFailed to open file '%s' Failed to open indirection file %sFailed to parse board string: "%s"Failed to start %s chess program %s on %s: %s Falcon (10x8)Fatal ErrorFileFile type:File with Start Positions:Filename:Files:First Black Move:First White Move:First change an engine by editing the participants list of the Tournament Options dialogFirst you must specify an existing tourney file to cloneFlash Moves (0 = no flashing):Flash Rate (high = fast):Flip ViewFontsFonts...For concurrent playing of tourney with multiple XBoards:ForwardForward to EndGGame ListGame List Tags...Game List...Game Number (-1 or -2 = Auto-Increment):Game list not loaded or emptyGame list:Game not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGame-list optionsGap in move listGeneralGeneral OptionsGeneral...Get Move ListGongGot end of file from keyboardGothic (10x8)Great Shatranj (10x8)Hash keys are differentHash-Table Size (MB):Headers in Engine Output WindowHelpHideHide ThinkingHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sIICS Chat/Console:ICS ClientICS Input BoxICS InteractionICS OptionsICS input boxICS text menuICS...ICS/Chat ConsoleIllegal hint move "%s" from %s chess programIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move (rejected by ICS)Illegal move in ICS output: "%s"Illegal move: %d.%s%sIncorrect moveInfo XBoardInformationInitial time (min):Internal error: PARTICIPANTS set wrongInvalid pairing from pairing engineIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnKingKnightKnightmateLaserLieutenantLight Square Color:Light-Squares Texture File:LionLion roar:Load GameLoad Game OptionsLoad Game...Load New 1st Engine...Load New 2nd Engine...Load PositionLoad first engineLoad second engineLogo Size (0=off, requires restart):Lose:Machine BlackMachine MatchMachine WhiteMachine accepts your draw offerMachine offers a draw. Select Action / Draw to accept.MachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMail MoveMakrukMan XBoardMatch %s vs. %s: final score %d-%d-%dMaximum Number of CPUs per Engine:Message (above board):Minimum nr consecutive positions:ModeMono ModeMove HistoryMove NowMove SoundMove history / Engine Output:Move listMove:Moves per session:Must not use GUI bookNPSNegate Score of Engine #1Negate Score of Engine #2New ChatNew GameNew Shuffle GameNew Shuffle Game...New VariantNew Variant...New directoryNew name for current theme:Next PositionNickname (optional):No SoundNo default pieces installed! Select your own using '-pieceImageDirectory'.No engine %s is installedNo engine with the name you gave is installedNo game has been loaded yetNo game selectedNo games before year:No hint availableNo more games in this messageNo moves in gameNo pairing engine specifiedNo position has been loaded yetNo tag selectedNo unfinished gamesNo unfinished games No value provided for argument %sNormalNot enough participantsNoteNumber of tourney cycles (or Swiss rounds):OKOn-line User GuideOne-Click MovingOnly bughouse is not available in viewer mode.Opening-Book Filename:OptionsOther Channel Text Colors:Own Games OnlyPaste GamePaste PositionPausePause between Match Games (msec):PawnPenaltyPeriodic UpdatesPeriodic Updates (in Analysis Mode)PhonePick new gamePlayPlay Move(s) of Clicked PV (Analysis)Polyglot book not validPolygot Directory:Ponder Next MovePopPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition Number (-1 or -2 = Auto-Increment):Position not found in filePremovePremove Highlight Color:Premove for BlackPremove for WhitePrev PositionPromotePull pawn backwards to under-promoteQueenQuiet PlayQuit Quit after gameRReading game file (%d)Ready to send mail Recompile to support this BOARD_RANKS or BOARD_FILES!Recompile with larger BOARD_RANKS or BOARD_FILES to support this sizeRegistered EnginesReload CMail MessageRematchReplace EngineRequest:ResignRetract MoveRevertRewind Index after this many Games (0 = never):RoarRookSame materialSave Final Positions on File:Save GameSave Game OptionsSave Game...Save Games as BookSave Games on File:Save PositionSave Selected GamesSave Settings NowSave Settings on ExitSave Tourney Games on:Saving gameSaving positionScanning through games (%d)Scores in Move ListSearch mode:Seconds per Move:Seek GraphSeek Text Colors:Seek:SeirawanSelect Engine:Select engine from list:Selectable themes:ShatranjShiftShow CoordinatesShow CoordsShow Target SquaresSlapSocket support is not configured inSolved %d out of %d (%3.1f%%) Sound OptionsSound Program:Sounds Directory:Sounds...Start-position number:Starting %s chess programStarting chess programStartup failure on '%s'Sticky WindowsStill need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s Stop ExaminingStop ObservingSuperchessSwiss tourney finishedSync after cycleSync after roundTRY ANOTHER NAMETagsTell:Test LegalityThat square is occupiedThe cmail message is not loaded. Use Reload CMail Message and make your move again.There is no game listThere is no pending offer on this moveThis only works in the GTK buildTime ControlTime Control...Tournament OptionsTournament file: Tournament...Tourney participants:Tourney type (0 = round-robin, 1 = gauntlet):TrainingTraining mode offTraining mode onTraining mode requires a game fileTruncate GameTry-Out Sound:Two MachinesTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineType a moveUnable to create font set for %s. Unfinished:Unknown initialMode %sUnknown variant name %sUnknown wild type %dUnrecognized argument %sUnrecognized boolean argument value %sUnusedUpgrade EngineUpload to ExamineUse Board TexturesUse GUI BookUser FileUser WAV File:Variant %s not supported by %sVariant %s supported only in ICS modeVariants marked with * can only be played with legality testing off.Verify Engine Result ClaimsViewWait until your turn, or select 'Move Now'.Wait until your turn.Waiting for access to save fileWaiting for first chess programWaiting for other game(s)Waiting for reply from opponent Waiting for second chess programWarlordWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite Piece Color:White to playWhite's flag fellWin / Loss Threshold:Win:Wood ThunkXBoard Home PageYou are not examining a gameYou are not observing a gameYou are playing BlackYou are playing WhiteYou can only change one engine at the timeYou can't revert while pausingYou cannot do this while you are playing or observingYou cannot replace an engine while it is engaged! Terminate its game first.You did not specify the engine executableYou have already mailed a move. Wait until a move arrives from your opponent. To resend the same move, type "cmail -remail -game %s" on the command line.You have edited the game history. Use Reload Same Game and make your move again.You have entered too many moves. Back up to the correct position and try again.You have not made a move yetYou must make your move before offering a drawYou must supply a tournament file, for storing the tourney progressYou restarted an already completed tourney. One more cycle will now be added to it. Games commence in 10 sec.Your opponent is not out of timeZoom factor in Evaluation Graph:_Action_Edit_File_Help_Mode_Options_Viewadd next moveatomicbad searchTime option %sbad timeControl option %sbrowseby nameby typeclassicalclearclosecommit changescould not load EGBB librarydowne-Mail Bug Reportengine namefactoryfailed writing PVfind positionfirstfixed maxgive-awaygrand (10x10)incrementalinternal rcmd not implemented for Unixlosersmovenarrownextnext pageno games matched your requestonly marked squares are legalor specify one below:previous pageprotocol version %d not supportedrandomizerights grantedrights revokedsave changessay Internal error; bad moveType %d (%d,%d-%d,%d)secondtagsthresholdstwo kingsupvs.white pixel = 0x%lx, black pixel = 0x%lx wrong EGBB versionyour opponent kibitzes: %sProject-Id-Version: GNU xboard 4.9.0-pre2 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2016-04-20 22:33+0300 Last-Translator: Evgeniy Yakushev Language-Team: Russian Language: Russian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2) X-Generator: Gtranslator 2.91.6 Кнопками * устанавливается шрифт выделенного ниже: параметры, которые можно использовать в режиме просмтра игры: следующая страница# движки не установлены# не определено ни одной темы%s (%d обратимый слой)%s (%d обратимых слоя)%s (%d обратимых слоев)%s не поддерживает режим анализаУ движка %s слишком много параметров %s в файле настроек Движок %s заканчивает работу в ничейной позиции (%s)%s: неправильный синтакс boardSize (размер доски) %s %s: не могу перейти в каталог CHESSDIR:%s: не могу обработать названия цветов; отключение использования цветов %s: не могу обработать цвет фона в '%s' %s: нет шрифтов, соответсвующих шаблону %s %s: слишком мало доступных цветов; пробую черно-белый режим %s: неопознанное имя boardSize (размер доски) %s %s: неопознанный цвет %s (если ничего не указано, каталог будет таким же, как путь к движку)*+, но значение %s равно-<<<>>>ОтменитьО программе XBoardУказать WAV-файлАбсолютное значение анализаПринятьИграВнести этот движок в списокОтложитьПрисудить ничьюНичья в технич. окончанияхПрисудить победу играм не-ICSПрисудить победу чернымПрисудить победу белымПрисуждение...ЗвонокВремя звонка (мс) :Важное сообщение:Все игры в турнире '%s' уже сыграны или начатыВсе варианты, не поддерживающиеся первым движком (%s) отключены.Предпочтение ферзю (превращение фигуры)Сыграны все ходы данной партииAltФерзь всегдаНеоднозначный ход с сервера ICS: "%s"Неоднозначный ход: %d.%s%sАнализРежим анализа не совместим с режимом ICSДля анализа необходима шахматная программаАнализировать игруРежим анализа: не указан файл для анализаАнимация перетаскиванияАнимация ходовСкорость анимации (быстро - медленно):Записать и вернутьсяАрхиепископПроверять времяАвторазворот доскиКомментарииАвтоматическое создание сценария входаАвтоматические отображение комментариевАвтоматическое отображение тэговСледить за игройРаскрывать доскуАвтообновлениеАвтосохранение игрСреднее время решения %4.2f сек (общее время %4.2f сек) СЧерные начинаютСледить в фонеНазадПозиция в буфере обмена не соответствует формату FENНеправильная позиция формата FEN в файлеОт движка получена неправильная нотация FENНеудачный поискНеправильный формат файлаНеправильное целое значение %sНеправильный формат файла позицииФайл турнира испорченСлонЧерныеЧерные фигуры:Ход черныхУ черных упал флажокНевидимые фигурыПросчетГрафик просчетовНастройки доскиРазмер доски ( -1 = значение по умолчанию для выбранного варианта):Доска...Книга...Глубина книги (ходов):Сбой в дебютной книгеВарьирование:Файл книги существует! Попробуйте снова для его перезаписи.У обоих игроков время вышлоПросмотрШведкиПроверить времяДостигнуто начало спискаДостигнут конец спискаНе подключено ни одной шахматной программыНе могу открыть файл "%s"Не могу открыть временный файлПоиск в файлах записей партий не предусмотренПоиск в файлах позиций не предусмотренОтменаПушкаНе удалось создать список партийВерсия Капабланки (10x8)КапитанАвтомобильный гудокВызов:КанцлерЦвета текста канала 1:Канал 1:Канал:Беседа с партнером:Беседы:Очистить доскуНажмите на часы чтобы очистить досткуВ игре на время настройка часов не разрешенаЧасы (требуется перезапуск):Клонировать турнирЗакрыть анализ движка сервера ICS...Разные цвета сообщенийКомментарииОбщий движокОбщие настройки движковОбщие настройки...Сервер ICS разорвал соединениеКомментарииПродолжить позжеКопировать игруКопировать список партийКопировать позициюНе могу установить связь с %s, порт %sНе удалось создать книгуНе могу открыть COM-порт %sНевозможно интерпретировать ходНе удалось записать данные в файл турнираСтранный ход "%s" получен с сервера ICSCtrlцилиндрические *КимвалТЧерные поляФайл с тексторой для черных клеток:ОтклонитьПростой сигналЧисло игр в матче по умолчанию:ОтложитьРазжаловатьОпределять матНовости разработкиЗвонКаталоги:Каталог с изображениями фигур:Сделать собственные книги дебютов движка неактивной по умолчаниюПозиция не отвечает положению в игреПоказанная позиция не соответствует положению в игреПоказанная позиция не является текущей Перейдите к правильной позиции и попробуйте снова.Разделить введенное время на 60НичьяПрисудить ничью после числа ходов:Ничья, когда не хватает фигур, чтобы поставить матНичьих:Меню ходаДвойная доскаКеш ЭБД (МБ):Путь к ЭБД:ОШИБКА: неизвестный пользователь %s (в пути %s) ДвижокПравкаРедактирвать книгуПравить комментарий...Редактировать список движков...Редактировать игруРедактировать позициюПравить описание...Править книгуПравка комментарияПравка комментария к %d.%s%sПравка комментариев:Слон (стар.)Минимальный рейтинг Эло для сильнейшего игрока:Минимальный рейтинг Эло для самого слабого игрока:Пустое полеПоказывать дерево вариантовЗакончить беседуСыгран последний записанный ходДвижокДвижок №1Своя книга у движка 1Настройки движка 1...Движок 2 / ЧеловекСвоя книга у движка 2Настройки движка 2...Команда движка:Каталог с движком:Вывод движкаНастройки движкаДвижок не передал настройки для нестандартных вариантовУ движка нет настроекВывод движкаОшибкаОшибка чтения списка ходов: лишняя доскаОшибка чтения списка ходов: вложенные спискиОшибка чтения списка ходов: два заголовкаОшибка чтения с выхода движка %s (%s)Ошибка чтения с сервера ICSОшибка клавиатурыОшибка записи на вход движка %sОшибка записи на вход сервера ICSОшибка подключения к шахматной программеОшибка записи на дисплейОшибка: движок %s (%s) завершил работуОценкаГрафик оценки позицииОценка позицииТочное совпадение позицииВыходСНАЧАЛА ВПИШИТЕ СЮДА НАЗВАНИЕ КАТАЛОГАФишера (960)Ошибка запуска cmailНе удалось открыть файлНе удалось открыть файл '%s' Не удалось открыть связанный файл %sНе удалось обработать строку: "%s"Не удалось запустить %s движок %s на %s: %s Сокол (10x8) Неисправимая ошибкаФайлТип файла:Файл с начальной позицией:Имя файла:Файлы:1-й ход черных1-й ход белыхСначала смените движок путем редактирования списка участников в пункте меню Опции ТурнираСначала Вы должны указать существующий файл для клонированияМерцающая подсветка на поле для хода (0 = без мерцания):Частота мерцания (высокая - низкая):Разворот доскиШрифтыШрифты...Для начала турнира с несколькими XBoard одновременно:ВпередВ конецЗСписок партийСодержание списка партий...Список партий...Номер игры (-1 или -2 для автоувеличения):Список игр незагружен или пустСписок партий:Партия не найдена в файлеНомер партии - вне диапазонаСлишком длинная партия: увеличьте значение MAX_MOVES и перекомпилируйте программуПараметры списка игрПропуск в записи ходовГенералОбщие настройкиОбщие...Запрашивать запись ходовГонгПолучен символ конца файла с клавиатурыГотические (10x8)Большой шатрандж (10x8)Значения хэшей различаютсяРазмер хеша (МБ):Заголовки в окне вывода сообщений движкаСправкаСпрятатьСкрывать вывод движкаСкрывать вывод движка в игре против человекаВыделенное поле:Выделять при перетаскиванииВыделять последний ходВыделять стрелкойВыделять стрелкойПодсказка...Подсказка: %s|Консоль чата ICSКлиент ICSПоле ввода команд для ICSВзаиможействие с ICSНастройки соединения с ICSполе ввода команд для ICSтекстовое меню ICSICS...Консоль чата ICSНеправильная подсказка "%s" от движка %sНеправильный ходНеправильный ход "%s" (не принят движком %s)Неправильный ход "%s" пытается выполнить движок %sНеправильный ход (отклонено сервером ICS)Неправильный ход с сервера ICS: "%s"Неправильный ход: %d.%s%sНеверный ходИнформация по XBoardИнформацияНачальное время (мин):Внутренняя ошибка: неправильный набор участниковПрограмма подбора соперников создала недопустимые парыХод черныхХод белыхСейчас не ход черныхСейчас не ход белыхВаш ходКорольКоньКоньЛазерЛейтенантБелые поля:Файл с тексторой для белых клеток:ЛевРев льва:Загрузить игруПараметры загрузкиЗагрузка игры...Загрузить новый первый движокЗагрузить новый второй движокЗагрузить позициюЗагрузить первый движокЗагрузить второй движокРазмер логотипа (0-отключить, требует перезапуска)Поражений:Компьютер чернымиНачать матч движковКомпьютер белымиКомпьютер согласился на ничьюКомпьютер предлагает ничью. Чтобы согласиться, выберите: действие / ничья Режим "Компьютер черными" не совместим с режимом ICSВ режиме "Компьютер черными" нужна шахматная программа (движок)Режим "Компьютер белыми" не совместим с режимом ICSВ режиме "Компьютер белыми" нужна шахматная программаОтпраить ход по почтемакрукСправка по использованию XBoardМатч %s против %s: финальный результат %d-%d-%dMax число CPU на движок:Сообщение (над доской):Минимальное количество последовательных позиций:РежимМонохромнаяИстоия ходовСделать ход сейчасЗвук перемещения фигурыИстория ходов / Вывод движка:Список ходовХодов:Количество ходов в партии:Нельзя использовать графический интерфейс книги дебютовNPS (Узл./сек.)Оценка движка 1 - абсолютнаяОценка движка 2 - абсолютнаяНовая беседаНовая играНовая в смешанные шахматы...Новая в смешанные шахматы...ВариантыВарианты...Новый каталогНовое имя для текущей темы:Следующая позицияКраткое имя (необязательно)Без звукаНе установлены фигуры по умолчанию! Выберите собственные фигуры, используя '-pieceImageDirectory'.Движок %s не установленНе установлен движок с указанным Вами именемНет загруженных шахматных партийВыберите партию из спискаНет партий до года:Подсказок нетВ этом сообщении больше нет шахматных партийНет записанных ходовНе указана программа подбора соперниковНет загруженных позицийПризнаки не выбраныНет неоконченных партийНет неоконченных партий Для аргумента %s не предоставлено значениеобычныеНедостаточное количество участниковПримечаниеЧисло циклов турнира (раундов по швейцарской системе):OKРуководство пользователя онлайнХод одним щелчкомВ режиме просмотра не поддерживаются только "шведки"Имя файла дебютной книги:НастройкиЦвета текста других каналов:Только свои игрыВставить игруВставить позициюПаузаПауза между играми матча (мсек):ПешкаШтрафПериодические обновленияПериодически обновлять (в режиме анализа)ТелефонВыбрать новую игруПослушатьСделать ход(ы) выбранного варианта (анализ)Книга дебютов Polyglot недействительнаКаталог программы polyglotДумать всегдаХлопокСообщение при выходеСообщение при выходеСообщать о неправильном ходеНомер позиции( -1 или -2 для автоувеличения):Позиция не найдена в файлеПредварительный ходЦвет поля при предв. ходе:Предварительный ход для черныхПредварительный ход для белыхСледующая позицияПревратитьДля превращения потяните пешку в обратном направленииФерзьСпокойная играВыход Выход после окончания игрыКЧтение файла игры (%d)Можно отсылать почту Скомпилируйте программу заново для поддержки BOARD_RANKS или BOARD_FILES!Для поддержки этого размера перекомпилируйте программу с бОльшими значениями BOARD_RANKS или BOARD_FILESЗарегистрированные движкиЗагрузить заново CMail-сообщениеПереиграть матчЗаменить движокЗапрос:СдатьсяВзять ход назадВозвратОбнулить индекс после количества игр (0 = никогда):РевЛадьяТакой же материалСохранить финальную позицию в файле:Сохранить игруНастройки сохраненияСохранение игры...Сохранить игру в книгу дебютовСохранить игры в файле:Сохранить позициюСохранить выбранные игрыСохранить настройки сейчасСохранять настройки при выходеСохранить игры турнира в:Сохранение игрыСохранение позицииПоиск в играх (%d)Очки в списке ходовРежим поиска:Количество секунд на ход:График поискаЦвета текста поиска:Искать:СейраванаВиберите движокВыберите движок из списка:Темы оформленияШатранджShiftПоказывать координатыПоказывать координатыПоказывать поля, куда ставится фигураПощечинаПоддержка сокетов не задана вРешено %d из %d (%3.1f%%) Настройки звукаПрограмма воспроизведения звука:Каталог с файлами звуковых эффектовЗвуки...Номер позиции:Запуск движка %sЗапускается шахматная программаОшибка при запуске программы '%s'"Липкие" окнаВсе еще ваш ход в партии %s Все еще ваша очередь ходить в этой партии Все еще ваш ход во всех %d партиях Все еще ваша очередь ходить в обеих партиях Все еще ваша очередь ходить в партиях %s Прекратить изучение партииПрекратить наблюдение за игройСупершахматыТурнир по Швейцарской системе оконченСинхронизация данных после циклаСинхронизация данных после раундаПопробуйте другое имяОписаниеСказать:Проверять правильность хода CS+LЭто поле занятоСписок сообщений cmail не загружен. Воспользуйтесь командой "Перезагрузить сообшения cmail" и сделайте ход сноваНет списка партийК данному ходу никаких предложений не сделаноРаботает только в сборке GTKКонтроль времениКонтроль времени...Настройки турнираФайл турнира: Турнир...Участники турнираТип турнира (0 = все со всеми, 1 = выбывание):ТренировкаТренировка оконченаТренировкаДля тренировки необходимо загрузить шахматную партию из файлаОтбросить последующие ходыПробный звукКомпьютер против компьютераРежим "Два движка" не совместим с режимом ICSВ режиме "Два движка" нужна шахматная программаНаписать ходНе удалось создать список шрифтов для %s Наоконченных:initialMode: неизвестный режим %sНеизвестный вариант %sНеизвестный тип %dНеопознанный аргумент %sНеопознанное значение %s булева аргументаНеиспользованоОбновить движокЗагрузить на сервер для изученияИспользовать текстуры доскиИспользовать графический интерфейс книги дебютовПользовательский файлПользовательский WAV-файлВариант %s не поддерживается %sВариант %s поддерживается только в режиме ICSМогут быть сыграны только варианты, помеченные знаком (*) и без проверки правильностиПроверять требования движкаВидПодождите своей очереди ходить или выберите "сделать ход сейчас".Подождите своей очереди ходитьОжидание разрешения записи файлаЖдем первую шахматную программуОжидание других игрОжидание ответного хода Ждем вторую шахматную программуГлавнокомандующийПредупреждение: вы все еще изучаете игруПредупреждение: вы все еще наблюдаете за игройПредупреждение: вы все еще продолжаете игратьПредупреждение: второй движок (%s) не поддерживает это!БелыеЦвет белых фигур:Ход белыхУ белых упал флажокПобеда/поражение при перевесе вПобед:Глухой деревянный стукДомашняя страница XBoardНе включен режим изучения шахматных партийВы не наблюдаете за игройВы играете чернымиВы играете белымиВы можете сменить только один движок за разНельзя вернуться к началу пока выбрана "Пауза"Вы не можете сделать этого, пока играете или наблюдаете за партиейВы не можете заменить движок пока он работает! Сначала завершите игру.Вы не предоставили исполняемый файл движкаВы уже отправили ход письмом. Подождите пока придет ход от Вашего соперника Чтобы повторно отправить ход, наберите в командной строке "cmail -remail -game %s".Вы поменяли последовательность сделанных ходов игры. Нажмите "Перечитать эту игру" и сделайте ход снова.Вы ввели слишком много ходов. Вернитесь к правильной позиции и попробуйте снова.Вы еще не сделали ходВы должны сделать свой ход прежде, чем предлагать ничьюВам необходимо предоставить файл турнира для записи хода турнираВы начали заново завершенный турнир К нему будет добавлен еще один запуск Игра начнется черер 10 сек.У вашего соперника еще есть времяКоэффициент приближения в оценке позиции:_Игра_Правка_Файл_Справка_Режим_Настройки_Виддобавить следующий ходатомныеsearchTime: неверный параметр %stimeControl: неверный параметр %sпросмотретьпо именипо типуклассическийочистказакрытьсохранить измененияне могу загрузить библиотеку эндшпилейВнизОтправить отчет об ошибке по e-Mailназвание движкаСтандартошибка записи вариантанайти позициюДвижок 1зафиксированный максимумподдавки (без мата)большие шахматы (10x10)увеличивающийсявнутренняя команда rcmd не применима в Unixподдавки (мат)ходстрелкадалееследующая страницапо Вашему запросу игр не найденосделать ход можно только на отмеченные поляили укажите один из:предыдущая страницаверсия протокола %d не поддерживаетсяСлучайноправа предоставленыправа аннулированысохранить измененияВнутренняя ошибка; неправильное значение moveType %d (%d,%d-%d,%d)Движок 2признакипределдва короляВверхпротивбелый пиксель = 0x%lx, черный пиксель = 0x%lx неправильная версия табицы эндшпилейСообщение от оппонента для всех: %sxboard-4.9.1/po/pl.gmo0000644000175000001440000012421512747544040011472 00000000000000a$5,&303$23W3 Y3e3x3/33334&14X4u444454#5>57Y5555555 555555 66'!6I6b6v666676*6 7&$7K7f7 j7"w77 7)7%7 8%8C8T8c88 8 88 88888 9 98)9b9s999 9 9999 :): 2:@:U:g:{::: :: : :0:; ;; &;$1;*V;; ; ;;;);<<,<D<`<g<n<<<<< < << << = ==.6= e=s===== = == =% >3>I>e>z>!>>>>>>> ?. ?SBSUSiS,{SSSSSS TT$TCT ITTTZT\TsT5TETUU U/UDUMU TUaU/hUUUU U*UU VV.VAV'UV }VVVVVVV W!W1WMW aWnW WWWWWWWWWW XX%X>X#CX gXuXXXXXXXX& Y!4Y*VY(Y&YYY YYZ"Z3ZDZIZ[Z aZoZSZZ&Z [%[8[J[e[-{[[[["[ [\ \,"\(O\ x\\"\ \\\\\&];]B]Q]c] v]0]6] ]]^%#^I^e^0j^^^^ ^ _7_'?_'g_%_2___ ``!`7` <`G`X`u```*``5aK>a)aaPNbObb. cC;c c cccc cd dd d'd-d3dBdGd Ydedmdd dd d d d d&dddde ee.e De Oe!]e e e1ee eee e eef)f.f=fXf+Ah'mhhhh&h\h?iZitii.i$i$jA&j+hjKj jkVk ok}kkkkkkkkk kkl l8lSl"pl"llllDl0mKm+ammm m*mm n%n&;n bn!pnnn%nn nno2oCocoooooHop8pWpfp hpupp$p"p.pq*q Bqcqqqqq qqqr<rPr _r"irr-rJrs0sPsmss(sss't+)tUt\tcttttt ttt ttuu+.u@Zuuuu uu! v .v :vGv[v0lvv)vv w(%wNwSwZw\wqwww2ww w%wx.x 2x  +8?VbnDр"'%J`pс.  #$% JU.m*ǂSSd|  ΃܃"7=Qo$„ڄ  $ 6@R:d;/''Em/2+ + 7BZxLJ& ,6J fs͈   )#7*[+*+݉ )*7T;#ȊPX ]g x ‹݋3MV f s .ڌ *Ec%s($֍!8Tp.Ď(A`$f ƏՏ#ۏ '!IQdm!ɐ  !2At#ԑCG N Xbd |Ts"f œ ԓ;#"*MV=h( ϔ۔ 8&_4o֕ )9Mf Ֆ<Cb $ Ǘ#ԗ -5"Qt'˜$4)D(n +ș & GQq!wo'0Xg#x7ʛ 1 P]p)*ל.0Hcx* ĝ֝*SI )/&=6C)z'̟)$ 9)D,n)4Š &Dcl С4ߡ;4[p&̢_^U2pD(1CKd ~  ¥ѥڥ +1BE\ s BЦ + 8Ue$w <   !,5-9gv:0T(?@FS1)#wd '\YJGRKQ<KQ) M[1|Z8b%FkST?3UU 2Xe`tF ` P]p9_AfV!C6 ,W 4rci2kisn,YH mRD__O*&UX.CA3Q`0}W6Npqt+6)>ME@:[29m#^J5*qBZ9L1l~{I*&h(5E%50fV=Iw 7-74\X'nlG"OPgSBsaV,8Reox$$3I-@\B<x!%Mv]A.| ZL^D>8/oy?"v"/z4]a;J;'G u~T& z>a(W7!g+/j{u-=NNK=DY.b+}:#[ $ yjdr   H;Chc^OE< LHP Thresholds for position filtering in game list: options to use in game-viewer mode: next page (with Zippy code)# no engines are installed%s (%d reversible ply)%s (%d reversible plies)%s - %d/%d games (%d-%d-%d)%s does not support analysis%s engine has too many options %s in settings file %s program exits in draw position (%s)%s: bad boardSize syntax %s %s: can't cd to CHESSDIR: %s: can't parse color names; disabling colorization %s: no fonts match pattern %s %s: too few colors available; trying monochrome mode %s: unrecognized boardSize name %s %s: unrecognized color %s (Directory will be derived from engine path when empty)3-checks<<<>>>AbortAbout XBoardAbove WAV FileAbsolute Analysis ScoresAcceptActionAdd this engine to the listAdjournAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate non-ICS GamesAdjudicate to BlackAdjudicate to WhiteAlarmAlarm Time (msec):Alarm:All games in tourney '%s' are already played or playingAlmost Always Queen (Detour Under-Promote)Already at end of gameAlso match left-right flipped positionAlso match reversed colorsAltAlways QueenAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis ModeAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyze GameAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnimation Speed (high = slow):AnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-Create Logon ScriptAuto-Display CommentAuto-Display TagsAuto-InputBox PopUpAuto-KibitzAuto-ObserveAuto-Play speed of loaded games (0 = instant, -1 = off):Auto-Raise BoardAuto-Refresh Seek GraphAuto-Save GamesBBack to StartBackground Observe while PlayingBackwardBad FEN position in clipboardBad FEN position in fileBad FEN received from engineBad SeekBad game fileBad integer value %sBad position fileBad tournament fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBoard OptionsBoard size ( -1 = default for selected variant):Board...BookBook Depth (moves):Book FaultBook Variety (0) vs. Strength (100):Book file exists! Try again for overwrite.Both flags fellCRC (10x8)Call FlagCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't open temp fileCan't seek on game fileCan't seek on position fileCancelCannonCannot build game listCapablanca (10x8)CaptainCar HornChallenge Text Colors:Challenge:ChancellorChannel #1 Text Colors:Channel 1:Channel:Chat partner:Clear boardClick clock to clear boardClock adjustment not allowed in auto-flag modeClone TourneyClose ICS engine analyze...Colorize MessagesCommentsCommon Engine SettingsConnection closed by ICSContents ofCopy GameCopy Game ListCopy PositionCould not connect to host %s, port %sCould not create bookCould not open comm port %sCould not parse moveCould not write on tourney fileCouldn't parse move "%s" from ICSCtrlCymbalDDark Square Color:Dark-Squares Texture File:DeclineDefault BeepDefault Number of Games in Match (or Pairing):DeferDemoteDetect all MatesDevelopment NewsDingDirectories:Directory with Pieces Images:Disable own engine books by defaultDisplayed move is not currentDisplayed position is not currentDisplayed position is not current. Step forward to the correct position and try again.DrawDraw after N Moves Total:Draw if Insufficient Mating MaterialDraw:Drop MenuDual Board for Background-Observed GameEGTB Cache Size (MB):ERROR: Unknown user %s (in path %s) EditEdit BookEdit CommentEdit GameEdit PositionEdit TagsEdit bookEdit commentEdit comment on %d.%s%sElephantElo of strongest player at least:Elo of weakest player at least:Empty squareEnable Variation TreesEnd of gameEngineEngine #1Engine #1 Has Own BookEngine #2 / HumanEngine #2 Has Own Book Engine Command:Engine Directory:Engine OutputEngine SettingsEngine has no optionsEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvalEvaluation GraphEvaluation graphExact position matchExitingFIRST TYPE DIRECTORY NAME HEREFRCFailed to invoke cmailFailed to open fileFailed to open file '%s' Failed to open indirection file %sFailed to parse board string: "%s"Failed to start %s chess program %s on %s: %s Fatal ErrorFileFile type:File with Start Positions:Filename:Files:First Black Move:First White Move:First change an engine by editing the participants list of the Tournament Options dialogFirst you must specify an existing tourney file to cloneFlash MovesFlash Moves (0 = no flashing):Flash Rate (high = fast):Flip Pieces Shogi Style (Colored buttons restore default)Flip ViewForce current variant with this engineForwardForward to EndGGame File with Opening Lines:Game ListGame List Tags...Game Number (-1 or -2 = Auto-Increment):Game list not loaded or emptyGame not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGame-list optionsGap in move listGeneralGeneral OptionsGet Move ListGongGot end of file from keyboardGothic (10x8)Great Shatranj (10x8)Hash keys are differentHash-Table Size (MB):HelpHide ThinkingHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sHoldings Size:ICS ClientICS Input BoxICS OptionsICS input boxICS text menuIllegal hint move "%s" from %s chess programIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move (rejected by ICS)Illegal move in ICS output: "%s"Illegal move: %d.%s%sInclude Number Tag in tourney PGNIncomplete \ escape in value for %sIncorrect moveIncrement or max (sec/move):Info XBoardInformationInitial time (min):Invalid pairing from pairing engineIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnKibitz Text Colors:Kibitz:KingKnightLaserLieutenantLight Square Color:Light-Squares Texture File:Load GameLoad Game OptionsLoad PositionLoad first engineLoad game file name?Load position file name?Load second engineLose:Machine BlackMachine MatchMachine WhiteMachine accepts your draw offerMachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMail MoveMan XBoardMatch %s vs. %s: final score %d-%d-%dMaterial difference (optional stuff balanced)Material range (top board half optional)Maximum Number of CPUs per Engine:Minimum nr consecutive positions:Mismatch of STRIDE in nengineoutput.c Change and recompile!ModeMono ModeMove HistoryMove NowMove SoundMove listMove:Moves per session:Must not use GUI bookN-Move Rule:N-fold Repeats:NPSNegate Score of Engine #1Negate Score of Engine #2New GameNew Shuffle GameNew VariantNew directoryNext PositionNickname (optional):No SoundNo engine %s is installedNo engine with the name you gave is installedNo game has been loaded yetNo game selectedNo games before year:No hint availableNo more games in this messageNo moves in gameNo pairing engine specifiedNo position has been loaded yetNo tag selectedNo unfinished gamesNo unfinished games No value provided for argument %sNot enough participantsNoteNumber of Board Files:Number of Board Ranks:Number of tourney cycles (or Swiss rounds):OKOld Save Style (as opposed to PGN)On-line User GuideOne-Click MovingOpening-Book Filename:OptionsOther Channel Text Colors:Own Games OnlyPGN Event Header:Paste GamePaste PositionPausePause between Match Games (msec):PawnPenaltyPeriodic UpdatesPeriodic Updates (in Analysis Mode)PhonePick new gamePlayPlay Move(s) of Clicked PV (Analysis)Polyglot book not validPolygot Directory:Ponder Next MovePopPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition Number (-1 or -2 = Auto-Increment):Position not found in filePremovePremove Highlight Color:Premove for BlackPremove for WhitePrev PositionPromotePull pawn backwards to under-promoteQueenQuiet PlayQuit RReading game file (%d)Ready to send mail Recompile to support this BOARD_RANKS or BOARD_FILES!Recompile with larger BOARD_RANKS or BOARD_FILES to support this sizeReload CMail MessageRematchReplace EngineRequest Text Colors:Request:ResignRetract MoveRevertRewind Index after this many Games (0 = never):RookS-Shout Text Colors:S-Shout:Same materialSame material with exactly same Pawn chainSave Final Positions on File:Save GameSave Game OptionsSave Games as BookSave Games on File:Save Out-of-Book Info in PGN Save PositionSave Score/Depth Info in PGNSave Settings NowSave Settings on ExitSave Tourney Games on:Save game file name?Save position file name?Saving gameSaving positionScanning through games (%d)Scores in Move ListSearch mode:Seconds per Move:Seek GraphSeek Text Colors:Seek:SeirawanSelect Engine:Select engine from list:ShiftShout Text Colors:Shout:Show CoordinatesShow CoordsShow Target SquaresShown position is subsetSlapSocket support is not configured inSound OptionsSound Program:Sounds Directory:SpartanStart-position number:Starting %s chess programStarting chess programStartup failure on '%s'Sticky WindowsStill need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s Stop ExaminingStop ObservingSuperchessSwiss tourney finishedSync after cycleSync after roundTRY ANOTHER NAMETagsTell Text Colors:Tell:Test LegalityThat square is occupiedThe cmail message is not loaded. Use Reload CMail Message and make your move again.There is no game listThere is no pending offer on this moveTime ControlTime-Odds factors:Top-Level DialogsTournament file: Tourney participants:Tourney type (0 = round-robin, 1 = gauntlet):TrainingTraining mode offTraining mode onTraining mode requires a game fileTruncate GameTry-Out Sound:Two MachinesTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineType a moveUCIUnable to create font set for %s. Unfinished:Unknown initialMode %sUnknown variant name %sUnknown wild type %dUnrecognized argument %sUnrecognized boolean argument value %sUnusedUpgrade EngineUpload to ExamineUse Board TexturesUse GUI BookUse external piece bitmaps with their own colorsUse nickname in PGN player tags of engine-engine gamesUser FileUser WAV File:Variant %s not supported by %sVariant %s supported only in ICS modeVerify Engine Result ClaimsViewWB protocol v1 (do not wait for engine features)Waiting for access to save fileWaiting for first chess programWaiting for other game(s)Waiting for reply from opponent Waiting for second chess programWarlordWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite Piece Color:White to playWhite's flag fellWin / Loss Threshold:Win:Wood ThunkXBoard Home PageYou are not examining a gameYou are not observing a gameYou are playing BlackYou are playing WhiteYou can only change one engine at the timeYou can't revert while pausingYou cannot do this while you are playing or observingYou cannot replace an engine while it is engaged! Terminate its game first.You did not specify the engine executableYou have already mailed a move. Wait until a move arrives from your opponent. To resend the same move, type "cmail -remail -game %s" on the command line.You have edited the game history. Use Reload Same Game and make your move again.You have entered too many moves. Back up to the correct position and try again.You have not made a move yetYou must make your move before offering a drawYou must supply a tournament file, for storing the tourney progressYour opponent is not out of timeZoom factor in Evaluation Graph:atomicbad searchTime option %sbad timeControl option %sberolina *browseby nameby typeclassicalclearclosecourier (12x8)downe-Mail Bug Reportengine namefactoryfailed writing PVfairyfind positionfirstfixed maxgive-awaygrand (10x10)incrementalinternal rcmd not implemented for Unixlosersmovenarrownextnext pageno games matched your requestor specify one below:pick fixedprevious pageprotocol version %d not supportedrandomizesave changessay Internal error; bad moveType %d (%d,%d-%d,%d)secondshogi (9x9)shuffletagsthresholdstwo kingsupvs.white pixel = 0x%lx, black pixel = 0x%lx xiangqi (9x10)your opponent kibitzes: %sProject-Id-Version: GNU xboard 4.7.2 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2014-03-03 14:20+0100 Last-Translator: Paweł Żołnowski Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Próg filtrowania pozycji na liście gier: opcje do użycia w trybie game-viewer: następna strona (z kodem Zippy)# nie zainstalowano żadnych silników%s (%d odwracalny półruch)%s (%d odwracalne półruchy)%s (%d odwracalnych półruchów)%s - %d/%d gier (%d-%d-%d)%s nie obsługuje analizy%s silnik ma za dużo opcji %s w pliku konfiguracyjnym %s silnik znajduje się w martwej pozycji (%s)%s: błędna składnia boardSize %s %s: nie można wejść do CHESSDIR: %s: nie można przetworzyć nazw kolorów: wyłączenie kolorów %s: żadna czcionka nie pasuje do wzoru %s %s: za mało dostępnych kolorów; próba użycia trybu monochromatycznego %s: nieznana nazwa boardSize %s %s: nieznany kolor %s (Jeśli pole pozostanie puste, ścieżka pliku wykonywalnego silnika wyznaczy katalog)do 3 szachów<<<>>>Zaniechanie gryO programie XBoardPowyższy plik WAVWyniki absolutnej analizyAkceptujDziałanieDodanie silnika do listyPrzerwaOgłoś remisRozstrzyganie zgodnych remisów (3-ruchowe opóźnienie)Rozstrzyganie gier spoza ICSRozstrzygnij na korzyść czarnychRozstrzygnij na korzyść białychAlarmCzas alarmu (ms):Alarm:Wszystkie gry w turnieju "%s" zostały już rozegrane lub są w tokuPrawie zawsze hetman (okrężna słaba promocja)Zakończono już gręDopasowanie pozycji z prawej i lewej stronyDopasowanie odwrotnych kolorówAltZawsze hetmanNiejednoznaczny ruch na wyjściu ICS: "%s"Niejednoznaczny ruch: %d.%s%sTryb analizyTryb analizy nie działa w trybie ICSTryb analizy wymaga silnika szachowegoAnalizuj gręTryb AnalyzeFile wymaga pliku gryAnimowane przesuwanieAnimowany ruchSzybkość animacji (wysoka = wolna):Dodaj jako komentarzArcybiskupAutomatyczna chorągiewkaAutoodwracanie szachownicyAutokomentowanieAutotworzenie skryptu logowaniaAutowyświetlanie komentarzyAutowyświetlanie znacznikówPodręczne okno poleceńAutodoradzanieAutoobserwacjaSzybkość rozgrywki wczytywanych gier (0 = natychmiastowa, -1 = wył.):Autowysuwanie szachownicyAutoodświeżanie wykresu gierAutozapis gierBNa początekObserwacja w tle podczas gryDo tyłuNieprawidłowa pozycja FEN w schowkuNieprawidłowa pozycja FEN w plikuNieprawidłowa notacja FEN otrzymana z silnikaNieprawidłowe szukanieNieprawidłowy plik gryBłędna wartość całkowita %sNieprawidłowy plik pozycjiNieprawidłowy plik turniejuGoniecCzarneKolor czarnych bierek:Czarne do grySpadła chorągiewka czarnychNiewidzialne bierkiOpcje szachownicyRozmiar szachownicy (-1 = domyślny dla wybranego wariantu):Szachownica...KsiążkaPojemność książki (w ruchach):Błąd książkiRóżnorodność (0) książki a siła (100):Plik książki już istnieje! Należy spróbować ponownie, aby nadpisać.Spadły obie chorągiewkilosowe szachy Capablanki (10x8)Reklamuj przekroczenie czasuDalsze cofanie jest niemożliweDalej nie możnaKonieczny jest wybór silnika szachowegoNie można otworzyć "%s"Nie można otworzyć pliku tempNiemożliwe przemieszczanie w pliku gryNiemożliwe przemieszczanie w pliku pozycjiAnulujArmataNie można utworzyć listy gierszachy Capablanki (10x8)KapitanKlaksonKolory tekstu wyzwania:Wyzwanie:KanclerzKolory tekstu kanału #1:Kanał 1:Kanał:Partner do rozmowy:Wyczyść szachownicęKliknij zegar, aby wyczyścić szachownicęNie można nastawiać zegara w trybie automatycznej chorągiewkiSkopiuj turniejZamknij analizę silnika ICS...Kolorowanie wiadomościKomentarzeWspólne ustawienia silnikówPołączenie zamknięte przez ICSZawartośćSkopiuj gręSkopiuj listę gierSkopiuj pozycjęNie można się połączyć z hostem %s, port %sNie można utworzyć książkiNie można otworzyć portu szeregowego %sNie można przetworzyć ruchuNieudany zapis do pliku turniejuNie można przetworzyć ruchu "%s" z ICSCtrlTalerzDKolor ciemnych pól:Plik tekstury ciemnych pól:OdrzućDomyślny sygnałDomyślna liczba gier podczas meczu (lub na parę)OdłóżZdegradujWykrywanie wszystkich matów i patówAktualności o postępachBimKatalogi:Katalog obrazów bierek:Wyłącz domyślnie własne książki silnikaWyświetlony ruch nie jest aktualnyWyświetlona pozycja nie jest aktualnaWyświetlona pozycja nie jest aktualna. Proszę przejść do przodu do prawidłowej pozycji i spróbować ponownie.RemisRemis po całkowitej liczbie ruchów:Remis w przypadku niewystarczającego materiału matowegoRemis:Rozwijane menuPodwójna szachownica podczas obserwacji w tleRozmiar pamięci podręcznej dla EGTB (MB):BŁĄD: Nieznany użytkownik %s (w ścieżce %s) EdytujEdytuj książkęEdytuj komentarzEdytuj gręEdytuj pozycjęEdytuj znacznikiEdytuj książkęEdytuj komentarzEdytowanie komentarza do %d.%s%sSłońNajmniejsza liczba punktów elo najsilniejszego gracza:Najmniejsza liczba punktów elo najsłabszego gracza:Puste poleWłącz drzewo alternatywnych ruchówKoniec grySilnikSilnik #1Silnik #1 ma własną książkęSilnik #2 / człowiekSilnik #2 ma własną książkę Polecenie silnika:Katalog silnika:Komunikaty silnikaUstawienia silnikaBrak opcji silnikaKomunikaty silnikaBłądBłąd podczas tworzenia listy ruchów: dodatkowa szachownicaBłąd podczas tworzenia listy ruchów: zagnieżdżona listaBłąd podczas tworzenia listy ruchów: dwa nagłówkiBłąd odczytu z %s silnika szachowego (%s)Błąd odczytu z ICSBłąd odczytu z klawiaturyBłąd zapisu do %s silnika szachowegoBłąd zapisu do ICSBłąd zapisu do silnika szachowegoBłąd zapisu do ekranuBłąd: %s silnik szachowy (%s) zakończył nieoczekiwanie pracęWynikiWykres wynikówWykres wynikówŚcisłe dopasowanie pozycjiWychodzenieNAJPIERW NALEŻY TU WPISAĆ NAZWĘ KATALOGUszachy losowe (960)Nie udało się wywołać cmailNie udało się otworzyć plikuNie udało się otworzyć pliku "%s" Nie udało się otworzyć pliku pośredniego %sNie udało się przetworzyć ciągu znaków szachownicy: "%s"Nie udało się uruchomić %s silnika szachowego %s na %s: %s Błąd krytycznyPlikTyp pliku:Plik z pozycjami startowymi:Nazwa pliku:Pliki:Pierwszy ruch czarnychPierwszy ruch białych:Należy najpierw zmienić silnik, edytując listę uczestników w oknie dialogowym Opcji turnieju.Należy najpierw określić istniejący plik turnieju do skopiowaniaMiganie po ruchuMigający ruch (0 = brak migania):Szybkość migania (wysoka = szybka):Odwrócone bierki w odmianie shogi (Kolorowe przyciski przywracają ustawienia domyślne)Odwróć widokWymuszenie bieżącej odmiany na danym silnikuDo przoduNa koniecRPlik gry z wierszami otwierającymi:Lista gierZnaczniki listy gier...Numer gry (-1 lub -2 = przyrost automatyczny):Nie wczytano listy gier lub jest ona pustaNie znaleziono gry w plikuNumer gry jest poza zakresemGra jest za długa; należy zwiększyć wartość MAX_MOVES i skompilować ponownieOpcje listy gierLuka na liście ruchówGenerałOpcje ogólnePobieranie listy ruchówGongWprowadzono EOF z klawiaturyGothic (10x8)wielki szatrandż (10x8)Klucze hash nie są takie sameRozmiary tablicy mieszającej (MB)PomocUkrywanie myśleniaUkryj myślenie przed graczemKolor podświetlenia:Podświetlenie podczas przeciąganiaPodświetl ostatni ruchPodświetlenie kursoremPodświetl kursoremWskazówkaWskazówka: %sRozmiar rezerwy:Klient ICSOkno poleceń ICSOpcje ICSOkno poleceń ICSMenu tekstowe ICS%2$s silnik szachowy zasugerował niedozwolony ruch "%1$s"Niedozwolony ruchNiedozwolony ruch "%s" (odrzucony przez %s silnik szachowy)Niedozwolony ruch "%s" dokonany przez %s silnikNiedozwolony ruch (odrzucony przez ICS)Niedozwolony ruch na wyjściu ICS: "%s"Niedozwolony ruch: %d.%s%sUmieść znacznik Number w zapisie PGN turniejuNiepełna sekwencja specjalna \ w wartości dla %sNieprawidłowy ruchPrzyrost lub maksymalny czas (sekund/ruch):O programieInformacjeCzas początkowy (min):Nieprawidłowe kojarzenie parRuch należy do czarnychRuch należy do białychRuch nie należy do czarnychRuch nie należy do białychRuch należy do ciebieKolory tekstu porad:Porada:KrólSkoczekLaserPorucznikKolor jasnych pól:Plik tekstury jasnych pól:Wczytaj gręOpcje wczytywania gryWczytaj pozycjęWczytaj pierwszy silnikWczytać nazwę pliku gry?Wczytać nazwę pliku pozycji?Wczytaj drugi silnikPrzegrana:Silnik czarneMecz silnikówSilnik białeSilnik przyjmuje propozycję remisuTryb MachineBlack nie działa w trybie ICSTryb MachineBlack wymaga silnika szachowegoTryb MachineWhite nie działa w trybie ICSTryb MachineWhite wymaga silnika szachowegoRuch mailowyDokumentacja XBoardMecz %s vs. %s: ostateczny wynik %d-%d-%dRóżnica materiału (zbalansowany materiał dodatkowy)Zasięg materiału (opcjonalnie górna połowa szachownicy)Maksymalna liczba rdzeni na silnik:Minimum kolejnych pozycji:Niezgodność STRIDE w nengineoutput.c Należy zmienić i skompilować ponownie!TrybTryb monoHistoria ruchówWykonaj ruchDźwięk ruchuLista ruchówRuch:Liczba ruchów na sesję:Nieużywanie książki GUILiczba ruchów przed remisem:Liczba powtórzeń ruchu:NPSNegacja wyniku silnika #1Negacja wyniku silnika #2Nowa graNowa gra losowaNowa odmianaNowy katalogNastępna pozycjaPseudonim (opcjonalnie):Bez dźwiękuSilnik %s nie jest zainstalowanySilnik o podanej nazwie nie jest zainstalowanyNie wczytano jeszcze żadnej gryNie zaznaczono żadnej gryPominięcie gier sprzed roku:Brak wskazówekNie ma więcej gier w tej wiadomościBrak ruchów w grzeNie określono silnika do kojarzenia parNie wczytano jeszcze żadnej pozycjiNie zaznaczono żadnego znacznikaBrak niedokończonych gierBrak niedokończonych gier Brak wartości parametru %sZa mało uczestnikówUwagaLiczba kolumn szachownicy:Liczba rzędów szachownicy:Liczba cykli turnieju (lub rund szwajcarskich)OKStary styl zapisu (zamiast PGN)Przewodnik onlineRuch jednym kliknięciemNazwa pliku książki otwarć:OpcjeKolory tekstu pozostałych kanałówTylko własne gryNazwa turnieju w zapisie PGN:Wklej gręWklej pozycjęPauzaPauza między grami meczowymi (ms):PionekKarnyCzęste aktualizacjeCzęste aktualizacje (w trybie analizy)TelefonWybierz nową gręOdtwórzOdtwórz ruch(y) PV (analiza)Nieprawidłowa książka polyglotKatalog książki polyglot:Myślenie nad następnym ruchemWystrzałPytaj przed wyjściemPytaj przed wyjściemBłędy ruchu w oknie podręcznymNumer pozycji (-1 lub -2 = przyrost automatyczny):Nie znaleziono pozycji w plikuPremoveKolor podświetlenia ruchu premove:Premove dla czarnychPremove dla białychPoprzednia pozycjaPromujNależy przeciągnąć pionek w tył, aby dokonać słabej promocjiHetmanCicha graWyjście RCzytanie pliku gry (%d)Gotowy do wysłania wiadomości Należy skompilować ponownie, aby włączyć obsługę BOARD_RANKS lub BOARD_FILES!Należy skompilować ponownie z większą wartością dla BOARD_RANKS lub BOARD_FILES, aby obsługiwać ten rozmiarWczytaj wiadomość CMail ponowniePonowny meczZastąp silnikKolory tekstu prośby:Prośba:Poddaj partięCofnij ruchCofnijPrzewiń indeks wstecz po liczbie gier równej (0 = nigdy):WieżaKolory tekstu wiadomości S-Shout:S-Shout:Ten sam materiałTen sam materiał z dokładnie takim samym szeregiem pionkówZapisywanie końcowych pozycji do pliku:Zapisz gręOpcje zapisu gryZapisz gry w postaci książkiZapisywanie gier do pliku:Zapisywanie informacji spoza książki do PGN Zapisz pozycjęZapisywanie informacji o wyniku/głębokości do PGNZapisz ustawieniaZapisz ustawienia przy wyjściuZapisuj gry turnieju do:Zapisać nazwę pliku gry?Zapisać nazwę pliku pozycji?Zapisywanie gryZapisywanie pozycjiPrzeszukiwanie gier (%d)Wyniki na liście ruchówTryb wyszukiwania:Liczba sekund na ruch:Wykres gierKolory tekstu propozycji gier:Wyszukanie gry:SeirawanWybór silnika:Wybór silnika z listy:ShiftKolory tekstu wiadomości shoutShout:Wyświetlanie współrzędnychWyświetlanie współrzędnychWyświetlanie możliwych ruchówWyświetlona pozycja jest podzbioremPlaśnięcieNie skonfigurowano obsługi portu wOpcje dźwiękówOdtwarzacz:Katalog z dźwiękami:SpartanNumer pozycji początkowej:Uruchamianie %s silnika szachowegoUruchamianie silnika szachowegoBłąd uruchamiania w "%s"Przyklejanie okienWciąż trzeba wykonać ruch w grze %s Wciąż trzeba wykonać ruch w grze Wciąż trzeba wykonać ruch we wszystkich grach %d Wciąż trzeba wykonać ruch w obu grach Wciąż trzeba wykonać ruch w grach %s Przerwij badaniePrzerwij obserwacjęSuperchessZakończono turniej w systemie szwajcarskimSynchronizacja po cykluSynchronizacja po rundziePROSZĘ SPRÓBOWAĆ INNĄ NAZWĘZnacznikiKolory tekstu wiadomości tell:Tell:Blokowanie niedozwolonych ruchówTo pole jest zajęteNie wczytano wiadomości cmail. Należy wybrać Wczytaj wiadomość cmail ponownie i wykonać ruch jeszcze raz.Nie ma listy gierBrak oczekującej propozycji tego ruchuKontrola czasuDzielniki czasu:Okna dialogowe najwyższego poziomuPlik turnieju: Uczestnicy turnieju:Typ turnieju (0 = system-kołowy, 1 = system-gauntlet):TreningTryb treningu wył.Tryb treningu wł.Tryb treningu wymaga pliku gryPorzuć gręSprawdź dźwięk:Silnik vs. silnikTryb TwoMachines nie działa w trybie ICSTryb TwoMachines wymaga silnika szachowegoProszę wpisać ruchUCINie można utworzyć zestawu czcionek dla %s. Niedokończenie:Nieznany initialMode %sNieznana nazwa wariantu %sNieznany typ wild %dNieznany parametr %sNieznana wartość parametru logicznego %sNieużywaneAktualizuj silnikWyślij do zbadaniaUżycie tekstur szachownicyUżywanie książki GUIUżycie bitmap bierek z własnymi koloramiUżywanie pseudonimu w znacznikach gracza w zapisie PGN gier typu silnik vs. silnikWłasny plikWłasny plik WAV:Odmiana %s nie jest obsługiwana przez %sWariant %s jest obsługiwany tylko w trybie ICSWeryfikowanie żądań silnika o wynikWidokProtokół WB v1 (szybsze wczytywanie funkcji silnika)Oczekiwanie na dostęp, aby zapisać plikOczekiwanie na pierwszy silnik szachowyOczekiwanie na pozostałe gryOczekiwanie na odpowiedź od przeciwnika Oczekiwanie na drugi silnik szachowyGubernatorOstrzeżenie: Nie zakończono badania gryOstrzeżenie: Nie zakończono obserwacji gryOstrzeżenie: Nie zakończono jeszcze gryOstrzeżenie: drugi silnik (%s) nie obsługuje tego!BiałeKolor białych bierek:Białe do grySpadła chorągiewka białychPróg zwycięstwa / przegranejWygrana:Stuknięcie drewnaStrona domowaŻadna gra nie jest badanaGra nie jest obserwowanaGrasz czarnymiGrasz białymiMożna jednocześnie modyfikować tylko jeden silnikNie można cofać podczas pauzyNie można tego zrobić w czasie gry ani podczas obserwacjiNie można zastąpić silnika w trakcie jego pracy! Należy zakończyć najpierw jego grę.Nie podano pliku wykonywalnego silnikaWysłano już ruch. Należy poczekać na nadejście ruchu od przeciwnika. Aby wysłać ruch ponownie, należy wpisać "cmail -remail -game %s" w wierszu poleceń.Zmodyfikowano historię gry. Należy wybrać Wczytaj grę ponownie i wykonać ruch jeszcze raz.Wprowadzono za dużo ruchów. Proszę cofnąć do prawidłowej pozycji i spróbować ponownie.Jeszcze nie wykonano ruchuPrzed zaproponowaniem remisu należy wykonać ruchNależy dostarczyć plik turnieju, żeby móc zapisać jego przebiegPrzeciwnik nie przekroczył limitu czasuWspółczynnik powiększenia na Wykresie wynikówatomowezła opcja searchTime %szła opcja timeControl %sberolina *przeglądajwg nazwywg typuklasycznywyczyśćzamknijcourier (12x8)na dółRaporty o błędach (e-mail)nazwa silnikadomyślnenie udało się zapisać PVfairyznajdź pozycję1.stały maksymalny czasantyszachy (give-away)grand (10x10)przyrostowypolecenie wewnętrzne rcmd nie zostało zaimplementowane w Uniksieantyszachy (losers)ruchzawęźnastępnynastępna stronażadna gra nie spełnia podanych kryteriówlub określenie go poniżej:wybierz liczbępoprzednia stronanieobsługiwana wersja %d protokołulosujzapisz zmianyBłąd wewnętrzny; nieprawidłowy moveType %d (%d,%d-%d,%d)2.shōgi (9x9)losowe rozstawienieznacznikiprogidwa króledo góryvs.biały piksel = 0x%lx, czarny piksel = 0x%lx xiangqi (9x10)przeciwnik doradza: %sxboard-4.9.1/po/uk.gmo0000644000175000001440000020124112747544040011471 00000000000000 -(<;)<0e<$<< <<<<=/&=V=r===&==??4?)@<@5[@#@@7@A A AAA#A%A(A*A-A3A 9AFAUAnAuA|AAA'AAABB*B0BCB7JBKB*BB&C7CRC VC"cCC C)C%C C% D/D@DODnD wD DD DDDDD D E8ENE_EwE6EE E EEEF/FLF UFcFxFFFFF FF FF F F0 G=GFGKG _G$jG*GGGG G GG H)&HPH`HuHHHHHHHHH I I6IUI mIxI II II.II JJ1JCJ LJZJqJJ JJ JJ J%JKK7KLK!lK KK KKKKKK K.K$L*L1LBLSL XLeL#LL!LVL>MYM^M$xMM M'MM M$MN#N (N 2N?N SN ]N kN uN NNNNN!NN O+OBO KOWO ^OhOOO OOOO PP2PQP gPuP&{P!P&P(PQ+Q!GQiQ~QQ0QQQQR#R+RJRNReRyR"R"R.R S S"S 'S2S MSWS^SpSXS8ST %T1TPT@jT TTT8T&T$U,U;U=U [UeU wU(UU UUU/V6VHVYVaV qV |VVV VVVVVW$W )W7WPWaWtWWWWWWWW W WW X X &X4X;X,LX yX0X!XX XY!/Y#QYuYY Y YY&Y#YZ+Z>ZUZlZ |ZZZZZ ZZ ZZZ'Z%[ *[ 5[?[ Q[^[u[ [[[[[$[\ \ &\ 4\B\6b\-\)\-\)] I]S] Z]%e]-](]"]^!^;>^z^ ^ ^^ ^^ ^^^^ ___"_<_V___h_y_ __ __ ___ _J`S`-m``````aa;a[akaa!aaaaaa+b4b"7bZbmb.~bbbbbb c c&c5c!;c]cbcjc#{cc cc%ccc ddd1dEd,Wdddddd dd$de %e0e6eFeHe_e5seEeefff.fCfLf Sf`f/gfffff f*ff g g 2g?gRg'fg gggggg h!h :hFhVhrh hh hhhhhhh iii.i5i FiRifii#ii iii ijjj9jPjhj&wj!j*j(j&k;kJkYk aklkkkkkkk kkSkMl&cl l lllllm m)m-?mmmvmm"m mm m,m(n %'-M {b+ ' 5A]mPzޘ;Y@5,?0]&6 #(5!^I/ʛ5+0N\9')*6T7# +&Ls6Y˞2%8X=5 s2~F Z%wM 0+P|#֢%0,GKtTɣPo2!¤ +"<_5{"ԥ  p>Hj]`nG?NiE?f/Vl $$%$J oBz ,ʫ-5%O[@WDVv6˭ !0}l%H>: ذQWG ɱ9̱#@OY^3BS&4>s#(K:&P/w1>ٵ'3:Gn 3׶* 969pз"#A[rhո>^D8'J`(@ԺE[=yֻ2jj7 Vd't  н۽+8_S˾4 <?<|%.߿=EL.\2Q pVyfyod&N uJymdO/"CRv +C[8mjM$m,,"%;a{53<N^8P=41^,9:?+@,l-A )D+S+S U ?b#[0"S6f)  ?QJ 'H# 2S:\8**&C9;}OW 2a:/-!IkW~  (%+CQz%=F_+{ t{) #[E<0),@=~K,.7F0~9A+#G/k'7 HTg.+ )%E<k9B)6`(~ //,I)v,)? <M2-  N302& 5N+f$)J,& D7e(!% K?02EJb}@J k0/+&H9%,:V*hj$4Z?Hd$Z&` SlBGSK;a2Ts!&&8_+q&!2 FgMRW'K ;VJ;\*qA6 C K Wa q}& 34 @SbtD4IOR% '" >%KqF)0A!JElR*!0#RQv1/ an !  G$3X6jyMKVKq6,B~ 9(F!<| e"pX=;>:#-(R_<0Vd#oYdN%v/Pb\A{8?4 +IL@awWq $jm)mJa%Wz"`Jr-SE{4&$m^IZnL ?IxK^QA,N.OB~.G22H3*}!X\> Z 97vb;kl'Ci \jkwRvV121 Hd| #sT~XF_+cFu uhU'x86uS[Az0]U[G3Eth<trBcDY7: `T rofLc/4/q) 7:fllp"_.ikD9(P'[zC%8C]s065&1wJ@iOE]p&!aR PyWHsM=?5`gZ O ^}-,n@D|SNefg>}Geoj+ =;)bh3xtU{Y5**yQ$nTQgM The * buttons will set the font to the one selected below: Thresholds for position filtering in game list: options to use in game-viewer mode: next page (with Zippy code)# no engines are installed# no themes are defined%d avoid-moves played %s (%d reversible ply)%s (%d reversible plies)%s - %d/%d games (%d-%d-%d)%s does not support analysis%s engine has too many options %s in settings file %s program exits in draw position (%s)%s%s Copyright 1991 Digital Equipment Corporation Enhancements Copyright 1992-2016 Free Software Foundation Enhancements Copyright 2005 Alessandro Scotti %s is free software and carries NO WARRANTY;see the file COPYING for more information. Visit XBoard on the web at: http://www.gnu.org/software/xboard/ Check out the newest features at: http://www.gnu.org/software/xboard/whats_new.html Report bugs via email at: %s: bad boardSize syntax %s %s: can't cd to CHESSDIR: %s: can't parse color names; disabling colorization %s: can't parse foreground color in '%s' %s: no fonts match pattern %s %s: too few colors available; trying monochrome mode %s: unrecognized boardSize name %s %s: unrecognized color %s (Directory will be derived from engine path when empty)*+, but %s is-3-checks<<<>>>ASEANAbortAbout XBoardAbove WAV FileAbsolute Analysis ScoresAcceptActionAdd this engine to the listAdjournAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate non-ICS GamesAdjudicate to BlackAdjudicate to WhiteAdjudications...AlarmAlarm Time (msec):Alarm:All games in tourney '%s' are already played or playingAll variants not supported by the first engine (currently %s) are disabled.Almost Always Queen (Detour Under-Promote)Already at end of gameAlso match left-right flipped positionAlso match reversed colorsAltAlways QueenAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis ModeAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyze GameAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnimation Speed (high = slow):AnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-Create Logon ScriptAuto-Display CommentAuto-Display TagsAuto-InputBox PopUpAuto-KibitzAuto-ObserveAuto-Play speed of loaded games (0 = instant, -1 = off):Auto-Raise BoardAuto-Refresh Seek GraphAuto-Save GamesAverage solving time %4.2f sec (total time %4.2f sec) BBack to StartBackground Observe while PlayingBackwardBad FEN position in clipboardBad FEN position in fileBad FEN received from engineBad SeekBad game fileBad integer value %sBad position fileBad tournament fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBlunderBlunder graphBoard OptionsBoard size ( -1 = default for selected variant):Board...BookBook Depth (moves):Book FaultBook Variety (0) vs. Strength (100):Book file exists! Try again for overwrite.Both flags fellBrowseBughouseCRC (10x8)Call FlagCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't open temp fileCan't seek on game fileCan't seek on position fileCancelCannonCannot build game listCapablanca (10x8)CaptainCar HornChallenge Text Colors:Challenge:ChancellorChanging time control during a game is not implementedChannel #1 Text Colors:Channel 1:Channel:Chat partner:Chats:Clear boardClick clock to clear boardClock adjustment not allowed in auto-flag modeClocks (requires restart):Clone TourneyClose ICS engine analyze...Colorize MessagesCommentsCommon EngineCommon Engine SettingsCommon Settings...Connection closed by ICSContents ofContinue LaterCopy GameCopy Game ListCopy PositionCould not connect to host %s, port %sCould not create bookCould not open comm port %sCould not parse moveCould not write on tourney fileCouldn't parse move "%s" from ICSCrazyhouseCtrlCylinder *CymbalDDark Square Color:Dark-Squares Texture File:DeclineDefault BeepDefault Number of Games in Match (or Pairing):DeferDemoteDetect all MatesDevelopment NewsDingDirectories:Directory with Pieces Images:Disable own engine books by defaultDisplayed move is not currentDisplayed position is not currentDisplayed position is not current. Step forward to the correct position and try again.Divide entered times by 60DrawDraw after N Moves Total:Draw if Insufficient Mating MaterialDraw:Drop MenuDual Board for Background-Observed GameEGTB Cache Size (MB):EGTB Path:ERROR: Unknown user %s (in path %s) E_ngineEditEdit BookEdit CommentEdit Engine List...Edit GameEdit PositionEdit TagsEdit bookEdit commentEdit comment on %d.%s%sEdit comments:Edit tags / book / engine list:ElephantElo of strongest player at least:Elo of weakest player at least:Empty squareEnable Variation TreesEnd ChatEnd of gameEngineEngine #1Engine #1 Has Own BookEngine #1 Settings...Engine #2 / HumanEngine #2 Has Own Book Engine #2 Settings...Engine Command:Engine Directory:Engine OutputEngine SettingsEngine did not send setup for non-standard variantEngine has no optionsEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvalEvaluation GraphEvaluation graphExact position matchExitingFIRST TYPE DIRECTORY NAME HEREFRCFailed to invoke cmailFailed to open fileFailed to open file '%s' Failed to open indirection file %sFailed to parse board string: "%s"Failed to start %s chess program %s on %s: %s Falcon (10x8)Fatal ErrorFileFile type:File with Start Positions:Filename:Files:First Black Move:First White Move:First change an engine by editing the participants list of the Tournament Options dialogFirst you must specify an existing tourney file to cloneFischer castlingFlash MovesFlash Moves (0 = no flashing):Flash Rate (high = fast):Flip Pieces Shogi Style (Colored buttons restore default)Flip ViewFontsFonts...For concurrent playing of tourney with multiple XBoards:Force current variant with this engineForwardForward to EndGGame File with Opening Lines:Game ListGame List Tags...Game List...Game Number (-1 or -2 = Auto-Increment):Game list not loaded or emptyGame list:Game not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGame-list optionsGap in move listGeneralGeneral OptionsGeneral...Get Move ListGongGot end of file from keyboardGothic (10x8)Great Shatranj (10x8)Hash keys are differentHash-Table Size (MB):Headers in Engine Output WindowHelpHideHide ThinkingHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sHoldings Size:IICS Chat/Console:ICS ClientICS Input BoxICS InteractionICS OptionsICS input boxICS text menuICS...ICS/Chat ConsoleIllegal hint move "%s" from %s chess programIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move (rejected by ICS)Illegal move in ICS output: "%s"Illegal move: %d.%s%sInclude Number Tag in tourney PGNIncomplete \ escape in value for %sIncorrect moveIncrement or max (sec/move):Info XBoardInformationInitial time (min):Internal error: PARTICIPANTS set wrongInvalid pairing from pairing engineIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnJanus (10x8)Kibitz Text Colors:Kibitz:KingKnightKnightmateLaserLieutenantLight Square Color:Light-Squares Texture File:Line Gap (-1 = default for board size):LionLion roar:Load GameLoad Game OptionsLoad Game...Load New 1st Engine...Load New 2nd Engine...Load PositionLoad first engineLoad game file name?Load position file name?Load second engineLogo Size (0=off, requires restart):Lose:Machine BlackMachine MatchMachine WhiteMachine accepts your draw offerMachine offers a draw. Select Action / Draw to accept.MachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMail MoveMakrukMan XBoardMatch %s vs. %s: final score %d-%d-%dMaterial difference (optional stuff balanced)Material range (top board half optional)Maximum Number of CPUs per Engine:Message (above board):Minimum nr consecutive positions:Mismatch of STRIDE in nengineoutput.c Change and recompile!ModeMono ModeMove HistoryMove NowMove SoundMove history / Engine Output:Move listMove:Moves per session:Must not use GUI bookN-Move Rule:N-fold Repeats:NPSNegate Score of Engine #1Negate Score of Engine #2New ChatNew GameNew Shuffle GameNew Shuffle Game...New VariantNew Variant...New directoryNew name for current theme:Next PositionNickname (optional):No SoundNo castleNo default pieces installed! Select your own using '-pieceImageDirectory'.No engine %s is installedNo engine with the name you gave is installedNo game has been loaded yetNo game selectedNo games before year:No hint availableNo more games in this messageNo moves in gameNo pairing engine specifiedNo position has been loaded yetNo tag selectedNo unfinished gamesNo unfinished games No value provided for argument %sNormalNot enough participantsNoteNumber of Board Files:Number of Board Ranks:Number of tourney cycles (or Swiss rounds):OKOld Save Style (as opposed to PGN)On-line User GuideOne-Click MovingOnly bughouse is not available in viewer mode.Opening-Book Filename:OptionsOther Channel Text Colors:Other Text Colors:Own Games OnlyPGN Event Header:Paste GamePaste PositionPausePause between Match Games (msec):PawnPenaltyPeriodic UpdatesPeriodic Updates (in Analysis Mode)PhonePick new gamePlayPlay Move(s) of Clicked PV (Analysis)Polyglot book not validPolygot Directory:Ponder Next MovePopPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition Number (-1 or -2 = Auto-Increment):Position not found in filePremovePremove Highlight Color:Premove for BlackPremove for WhitePrev PositionPromotePull pawn backwards to under-promoteQueenQuiet PlayQuit Quit after gameRReading game file (%d)Ready to send mail Recompile to support this BOARD_RANKS or BOARD_FILES!Recompile with larger BOARD_RANKS or BOARD_FILES to support this sizeRegistered EnginesReload CMail MessageRematchReplace EngineRequest Text Colors:Request:ResignRetract MoveRevertRewind Index after this many Games (0 = never):RoarRookS-Shout Text Colors:S-Shout:Same materialSame material with exactly same Pawn chainSave Final Positions on File:Save GameSave Game OptionsSave Game...Save Games as BookSave Games on File:Save Out-of-Book Info in PGN Save PositionSave Score/Depth Info in PGNSave Selected GamesSave Settings NowSave Settings on ExitSave Tourney Games on:Save game file name?Save position file name?Saving gameSaving positionScanning through games (%d)Scores in Move ListSearch mode:Seconds per Move:Seek GraphSeek Text Colors:Seek:SeirawanSelect Engine:Select engine from list:Selectable themes:ShatranjShiftShout Text Colors:Shout:Show CoordinatesShow CoordsShow Target SquaresShown position is subsetSlapSocket support is not configured inSolved %d out of %d (%3.1f%%) Sound OptionsSound Program:Sounds Directory:Sounds...SpartanStart-position number:Starting %s chess programStarting chess programStartup failure on '%s'Sticky WindowsStill need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s Stop ExaminingStop ObservingSuicideSuperchessSwiss tourney finishedSync after cycleSync after roundTRY ANOTHER NAMETagsTell Text Colors:Tell:Test LegalityThat square is occupiedThe cmail message is not loaded. Use Reload CMail Message and make your move again.There is no game listThere is no pending offer on this moveThis only works in the GTK buildTime ControlTime Control...Time-Odds factors:Top-Level DialogsTournament OptionsTournament file: Tournament...Tourney participants:Tourney type (0 = round-robin, 1 = gauntlet):TrainingTraining mode offTraining mode onTraining mode requires a game fileTruncate GameTry-Out Sound:Two MachinesTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineType a moveUCIUSI/UCCI (uses specified -uxiAdapter)Unable to create font set for %s. Unfinished:Unknown initialMode %sUnknown variant name %sUnknown wild type %dUnrecognized argument %sUnrecognized boolean argument value %sUnusedUpgrade EngineUpload to ExamineUse Board TexturesUse GUI BookUse external piece bitmaps with their own colorsUse nickname in PGN player tags of engine-engine gamesUser FileUser WAV File:Variant %s not supported by %sVariant %s supported only in ICS modeVariants marked with * can only be played with legality testing off.Verify Engine Result ClaimsViewWB protocol v1 (do not wait for engine features)Wait until your turn, or select 'Move Now'.Wait until your turn.Waiting for access to save fileWaiting for first chess programWaiting for other game(s)Waiting for reply from opponent Waiting for second chess programWarlordWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite Piece Color:White to playWhite's flag fellWild castleWin / Loss Threshold:Win:Wood ThunkXBoard Home PageYou are not examining a gameYou are not observing a gameYou are playing BlackYou are playing WhiteYou can only change one engine at the timeYou can't revert while pausingYou cannot do this while you are playing or observingYou cannot replace an engine while it is engaged! Terminate its game first.You did not specify the engine executableYou have already mailed a move. Wait until a move arrives from your opponent. To resend the same move, type "cmail -remail -game %s" on the command line.You have edited the game history. Use Reload Same Game and make your move again.You have entered too many moves. Back up to the correct position and try again.You have not made a move yetYou must make your move before offering a drawYou must supply a tournament file, for storing the tourney progressYou restarted an already completed tourney. One more cycle will now be added to it. Games commence in 10 sec.Your opponent is not out of timeZoom factor in Evaluation Graph:_Action_Edit_File_Help_Mode_Options_Viewadd next moveatomicbad searchTime option %sbad timeControl option %sberolina *browseby nameby typechu shogi (12x12)classicalclearclosecommit changescould not load EGBB librarycourier (12x8)downe-Mail Bug Reportelven chess (10x10)engine namefactoryfailed writing PVfairyfind positionfirstfixed maxgive-awaygrand (10x10)incrementalinternal rcmd not implemented for Unixlosersmighty lionmovenarrownextnext pageno games matched your requestonly marked squares are legalor specify one below:pick fixedprevious pageprotocol version %d not supportedrandomizerights grantedrights revokedsave changessay Internal error; bad moveType %d (%d,%d-%d,%d)secondshogi (9x9)shuffletagsthresholdstwo kingsupvs.white pixel = 0x%lx, black pixel = 0x%lx wrong EGBB versionxiangqi (9x10)your opponent kibitzes: %sProject-Id-Version: GNU xboard-4.9.0-pre2 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2016-04-04 19:49+0300 Last-Translator: Yuri Chornoivan Language-Team: Ukrainian Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 1.5 Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; Кнопки * встановлюватимуть шрифт, вказаний нижче: Порогові значення фільтрування позицій у списку ігор: Параметри режиму перегляду ігор: наступна сторінка (з кодом Zippy)# не встановлено жодного рушія# не визначено жодної темизіграно %d небажаних ходів %s (з можливістю скасування %d ходу)%s (з можливістю скасування %d ходів)%s (з можливістю скасування %d ходів)%s (з можливістю скасування %d ходу)%s — %d з %d ігор (%d-%d-%d)У %s не передбачено аналізуДля рушія %s передбачено занадто багато параметрів %s у файлі параметрів Програма %s завершила роботу у нічийній позиції (%s)%s%s © Digital Equipment Corporation, 1991 © Free Software Foundation, 1992–2016 © Alessandro Scotti, 2005 %s є вільним програмним забезпеченням, його працездатність не гарантується. Докладніше про це у файлі COPYING. Відвідайте сторінку XBoard у мережі за адресою: http://www.gnu.org/software/xboard/ Ознайомтеся з найсвіжішими можливостями програми: http://www.gnu.org/software/xboard/whats_new.html Надішліть повідомлення про ваду на адресу: %s: помилковий синтаксис boardSize %s %s: не вдалося перейти до каталогу CHESSDIR: %s: не вдалося обробити назви кольорів; розфарбовування вимкнено %s: не вдалося обробити колір тексту у «%s» %s: взірцеві %s не відповідає жоден шрифт %s: занадто мало кольорів; спробуємо монохромний режим %s: невідома назва boardSize %s %s: нерозпізнаний колір %s (Каталог буде визначено на основі шляху до рушія, якщо каталог не вказано)*+, але %s-Три шахи<<<>>>ASEANПерерватиПро XBoardФайл WAV вищеАбсолютні оцінки аналізуПрийнятиДіяДодати цей рушій до спискуВідкластиВизначити нічиюВизначати тривіальні нічиї (трикратне повторення)Судити ігри, що не належать до класу ICSВизначити виграш чорнихВизначити виграш білихВизначення…НагадуванняЧас нагадування (у мс):Нагадування:Всі ігри турніру «%s» вже зіграно або вже розпочатоВсі варіанти, які не підтримуються першим рушієм (зараз це %s), вимкнено.Майже завжди королева (відхиляти неповні перетворення)Гру вже завершеноШукати у симетричних позиціяхШукати у позиціях зворотних кольорівAltЗавжди королеваНеоднозначний хід у виведених ICS даних: «%s»Неоднозначний хід: %d.%s%sРежим аналізуРобота режиму разом з режимом ICS неможливаУ режимі аналізу потрібен шаховий рушійАналізувати груУ режимі аналізу файла потрібен файл гриАнімація перетягуванняАнімація ходівШвидкість анімації (висока = повільно):АнотуватиАрхієпископАвтопрапорецьАвтоматичне обертання дошкиАвтокоментаріАвтостворення скрипту входуАвтопоказ коментарівАвтопоказ мітокАвтоматичне вікно введенняАвтопорадиАвтоспостереженняШвидкість автогри у завантажених іграх (0 = негайний показ, -1 = вимкнути автогру):Автопідняття дошкиАвтоматичне оновлення графу пошуківАвтозбереження ігорСередній час розв’язування — %4.2f сек. (загальний час — %4.2f сек.) СПовернутися до початкуСпостереження у тлі під час гриНазадПомилкова позиція FEN у буфері обмінуПомилкова позиція FEN у файліОтримано помилкові дані FEN від рушіяПомилкове позиціюванняПомилковий файл гриПомилкове ціле значення %sПомилковий файл позиціїПомилковий файл турніруСлонЧорніКолір фігур чорних:Хід чорнихПрапорець чорних впавНаосліпГруба помилкаГраф грубих помилокПараметри дошкиРозмір дошки ( -1 = типовий для вибраного варіанта):Дошка…КнигаГлибина книги (у ходах):Помилка бібліотеки позиційКомпроміс між різноманітністю (0) і силою (100) книги:Файл книги вже існує! Повторіть спробу, щоб перезаписати його.Обидва прапорці впалиВибратиШведськіРівноправність (10x8)Погодитися з програшемПодальше створення резервних копій неможливеПодальший рух вперед списком неможливийНе можна розпочати матч, якщо не встановлено шахових програмНе вдалося відкрити «%s»Не вдалося відкрити тимчасовий файл данихПошук у файлі гри неможливийПошук у файлі позицій неможливийСкасуватиГарматаНе вдалося побудувати список ігорКапабланка (10x8)КапітанАвтомобільний гудокКольори тексту викликів:Виклик:КанцлерЗміну режиму контролю часу під час гри не реалізованоКольори тексту каналу 1:Канал 1:Канал:Співрозмовник:Розмови:Спорожнити дошкуКлацніть на годиннику, щоб спорожнити дошкуКоригування годинника у режимі автоматичних прапорців забороненеГодинник (потребує перезапуску):Клонувати турнірЗавершити процес аналізу рушія ICS…Розфарбовувати повідомленняКоментаріЗагальний рушійЗагальні параметри рушіївЗагальні параметри…З’єднання розірвано з боку ICSВмістПродовжити пізнішеКопіювати груКопіювати список ігорКопіювати позиціюНе вдалося з’єднатися з вузлом %s, порт %sНе вдалося створити книгуНе вдалося відкрити порт comm %sНе вдалося обробити хідНе вдалося виконати запис до файла турніруНе вдалося обробити хід «%s» з ICSКрейзіхаусCtrlЦиліндричні *ЦимбалиТКолір темних клітинок:Файл текстур темних клітинок:ВідхилитиТиповий гудокТипова кількість ігор у матчі:Зменшити пріоритетРозжалуватиВиявляти всі матиНовини щодо розробкиДзвінокКаталоги:Каталог з зображеннями фігур:Типово вимкнути власні бібліотеки позицій рушіяПоказаний хід не є поточнимПоказана позиція не є поточноюПоказана позиція не є поточною. Продовжіть гру, щоб виправити позицію і повторіть спробу.Ділити введені значення часу на 60НічияНічия після N ходів загалом:Нічия, якщо недостатньо фігур для матуНічиїх:Спадне менюПодвійна дошка для ігор з фоновим спостереженнямРозмір кешу EGTB (у МБ):Шлях до EGTB:Помилка: невідомий користувач %s (шлях — %s) Р_ушійЗміниЗмінити книгуЗмінити коментарЗмінити список рушіїв…Редагувати груРедагувати позиціюЗмінити міткиЗмінити книгуРедагувати коментарЗмінити коментар щодо %d.%s%sРедагування коментарів:Редагування міток / книги / списку рушіїв:СлонРейтинг Ело для сильнішого гравця не нижче за:Рейтинг Ело для слабшого гравця не нижче за:Порожня клітинкаУвімкнути дерево варіантівЗавершити розмовуКінець гриРушійРушій 1Рушій 1 має власну книгуПараметри рушія 1…Рушій 2 / ЛюдинаРушій 2 має власну книгу Параметри рушія 2…Команда рушія:Каталог рушія:Вивід рушіяПараметри рушіяРушієм не надіслано налаштувань для нестандартного варіантаРушієві не передаються жодні параметриВивід рушіяПомилкаПомилка під час збирання списку ходів: вихід за межі дошкиПомилка під час збирання списку ходів: вкладеністьПомилка під час збирання списку ходів: два заголовкиПомилка під час спроби читання даних з шахової програми %s (%s)Помилка під час спроби читання з ICSПомилка під час читання даних з клавіатуриПомилка під час спроби запису даних до шахової програми %sПомилка під час спроби запису до ICSПомилка під час спроби запису даних до шахової програмиПомилка запису на дисплейПомилка: шахова програма %s (%s) несподівано завершила роботуОцінкаГраф оцінки позиціїГраф оцінки позиціїТочний збіг позиційВихідСПОЧАТКУ ВКАЖІТЬ ТУТ НАЗВУ КАТАЛОГУФішераНе вдалося викликати cmailНе вдалося відкрити файлНе вдалося відкрити файл «%s» Не вдалося відкрити файл переспрямування %sНе вдалося обробити рядок дошки: "%s"Не вдалося запустити шахову програму %s %s на %s: %s Сокіл (10x8)Критична помилкаФайлТип файлів:Файл з початковими позиціями:Назва файла:Файли:Перший хід чорних:Перший хід білих:Спочатку змініть рушій редагуванням списку учасників турніру у діалоговому вікні «Параметри турніру»Спочатку вам слід вказати вже створений файл турніру для клонуванняРокіровка ФішераПідсвічування ходівБлимання під час ходів (0 = без блимання):Частота блимання (висока = швидко):Стиль обміну фігурами сьогі (Кольорові кнопки відновлюють типовий)Повернути дошкуШрифтиШрифти…Для сумісної турнірної гри з декількома XBoard:Примусово визначити поточний варіант для рушіяВпередВперед до кінцяЗФайл гри з початковими рядками:Список ігорМітки списку ігор…Список ігор…Номер гри (-1 або -2 = автоматичне збільшення):Список гри не завантажено або цей список є порожнімСписок ігор:У файлі немає даних щодо гриНомер гри поза доступним діапазономГра є занадто довгою. Збільшіть значення MAX_MOVES і перезберіть програму.Параметри списку гриПропущено хід у списку ходівЗагальнеЗагальні параметриЗагальне…Отримати список ходівГонгОтримано символ кінця файла з клавіатуриГотичні (10x8)Великий шатрандж (10x8)Ключі хешів не збігаютьсяРозмір таблиці хешів (у МБ):Заголовки у вікні виведення рушіяДовідкаПриховатиПриховувати обмірковуванняПриховувати обмірковування від людиниКолір позначення:Підсвічувати перетягуванняПозначати останній хідПозначити за допомогою стрілкиПозначити за допомогою стрілкиПідказкаПідказка: %sРозмір резерву:IРозмова ICS/Консоль:Клієнт ICSПоле введення ICSВзаємодія у ICSПараметри ICSПоле введення ICSТекстове меню ICSICS…Консоль ICS/розмовНекоректна підказка щодо ходу «%s» від шахової програми %sНедозволений хідНедозволений хід «%s» (у реєстрації ходу відмовлено шаховою програмою %s)Некоректний хід «%s» від комп’ютера %sНекоректний хід (заборонено ICS)Некоректний хід у виведених даних ICS: «%s»Недозволений хід: %d.%s%sВключити мітку номера до PGN турніруНеповне екранування \ у значенні для %sНекоректний хідЗбільшення або максимум (сек/хід):Інформація з XBoardІнформаціяПочатковий час (у хвилинах):Внутрішня помилка: встановлено помилкове значення PARTICIPANTSРушієм визначення пар повернуто некоректне значення париХід чорнихХід білихЗараз хід білихЗараз хід чорнихВаш хідЯнус (10x8)Кольори тексту порад:Порада:КорольКіньМат конюЛазерЛейтенантКолір світлих клітинок:Файл текстур світлих клітинок:Проміжок між рядами ( -1 = типовий для розмірів дошки):ЛевРев лева:Завантажити груПараметри завантаження ігорЗавантажити гру…Завантажити новий перший рушій…Завантажити новий другий рушій…Завантажити позиціюЗавантажити перший рушійНазва файла гри для завантаження?Назва файла позиції для завантаження?Завантажити другий рушійРозмір логотипу (0=вимкнути, потребує перезапуску):Програшів:Матч ком’ютерівМатч ком’ютерівКомп’ютер-білимиКом’ютер погодився з вашою пропозицією нічиєїКомп’ютером запропоновано нічию Скористайтеся пунктом меню «Дія->Нічия», щоб погодитися.Робота режиму гри комп’ютером білими разом з режимом ICS неможливаУ режимі гри комп’ютера чорними потрібен шаховий рушійРобота режиму гри комп’ютером білими разом з режимом ICS неможливаУ режимі гри комп’ютера білими потрібен шаховий рушійНадіслати хід поштоюМакрукПідручник з XBoardМатч між %s і %s: остаточний рахунок — %d-%d-%dВідмінність матеріалів (з додатковим врівноваженням можливостей)Діапазон матеріалу (верхня половина дошки, необов’язковий)Максимальна кількість процесорів на рушій:Повідомлення (над дошкою):Мінімальна к-ть послідовних позицій:Невідповідність STRIDE у nengineoutput.c Змініть і зберіть програму знову!РежимМонорежимЖурнал ходівХодити заразЗвук ходуЖурнал ходів / Виведення рушія:Список ходівХід:Ходів за сеанс:Не повинен використовувати книгу з графічним інтерфейсомПравило N-го ходу:N-кратне повторення:NPSНегативна оцінка рушія 1Негативна оцінка рушія 2Нова розмоваНова граНова випадкова граНова випадкова гра…Новий варіантНовий варіант…Новий каталогНова назва для поточної теми:Наступна позиціяПсевдонім (необов’язковий):Без звукуБез туриТипових зображень фігур не встановлено. Вкажіть власні за допомогою параметра -pieceImageDirectoryНе встановлено жодного рушія %sРушія з вказаною вами назвою не встановленоЩе не завантажено жодної гриНе вибрано гриНе показувати ігри до року:Немає підказкиУ цьому повідомленні більше немає результатів ігорУ записі гри немає жодного ходуНе вказано рушія визначення парЖодної з позицій ще не завантаженоНе вибрано жодної міткиНемає незавершених ігорНемає незавершених ігор Не вказано значення для аргументу %sЗвичайніНедостатньо учасниківНотаткаКількість файлів дошки:Кількість рангів дошки:Кількість кіл турніру (швейцарських раундів):ГараздЗастарілий стиль збереження (на відміну від PGN)Підручник користувача у інтернетіХід у одне клацанняУ режимі перегляду недоступні лише шведські шахи.Назва файла даних дебютів:ПараметриКольори тексту інших каналів:Кольори іншого тексту:Лише власні ігриОбробник подій PGN:Вставити груВставити позиціюПаузаПроміжок між іграми у матчі (у мілісекундах):ПішакШтрафПеріодичні оновленняПеріодичні оновлення (у режимі аналізу)ТелефонВиберіть нову груПускГрати ходи натиснутих PV (аналіз)Некоректна бібліотека позиційКаталог бібліотек Polygot:Обдумати наступний хідПлесканняПоказувати повідомлення щодо виходуКонтекстні підказки щодо виходуКонтекстні підказки з помилками щодо ходівНомер позиції (-1 або -2 = автоматичне збільшення):У файлі не знайдено позиціїПопередній хідКолір підсвічування плану ходу:Попередній хід для чорнихПопередній хід для білихПопередня позиціяПідвищитиПотягніть пішака назад, щоб знизити ранг фігуриКоролеваМовчазна граВийти Вийти після гриЧЧитання файла гри (%d)Програма готова до надсилання пошти Повторно зберіть програму з підтримкою цих значень BOARD_RANKS і BOARD_FILES!Для того, щоб скористатися підтримкою цього розміру, слід зібрати програму з більшими значеннями BOARD_RANKS або BOARD_FILESЗареєстровані рушіїПерезавантажити повідомлення CMailПереграванняЗамінити рушійКольори тексту запитів:Запит:ЗдатисьВідкликати хідПовернутиВідновлювати початковий номер після вказаної кількості ігор (0=ніколи):РевТураКолір тексту S-вигуків:S-вигук:Однаковий матеріалОднаковий матеріал з однаковим ланцюжком пішаківЗберігати остаточні позиції до файла:Зберегти груПараметри збереження ігорЗберегти гру…Зберегти ігри як книгуЗберігати ігри до файла:Зберігати сторонні дані до PGN Зберегти позиціюЗберігати дані щодо рейтингу/глибини у PGNЗберегти позначені ігриЗберегти параметри заразЗберегти параметри при виходіЗберігати ігри турніру до:Назва файли гри для збереження?Назва файла позиції для збереження?Збереження гриЗбереження позиціїСканування списку ігор (%d)Оцінки у списку ходівРежим пошуку:Секунд на хід:Граф викликівКольори тексту під час пошуку:Пошук:СейраванаВиберіть рушій:Виберіть рушій зі списку:Можливі теми:ШатранджShiftКольори тексту вигуків:Вигук:Показувати координатиПоказати координатиПоказувати клітинки призначенняПоказана позиція є підмножиноюКлацанняПідтримку сокетів ще не налаштованоРозв’язано %d з %d (%3.1f%%) Параметри звукуПрограма відтворення:Каталог звуків:Звуки…спартанськіНомер початкової позиції:Запуск шахової програми %sЗапуск шахової програмиПомилка запуску на «%s»Липкі вікнаСлід зробити хід у грі %s Слід зробити хід у грі Слід зробити ходити у всіх %d іграх Слід зробити ходити у обох іграх Слід зробити ходи у іграх %s Припинити аналізПрипинити спостереженняСамовбивчіСупершахиТурнір за швейцарською системою завершеноСинхронізувати після колаСинхронізувати після раудуСПРОБУЙТЕ ІНШУ НАЗВУМіткиКольори тексту висловлювань:Висловлення:Перевіряти коректністьЦю клітинку зайнятоПовідомлення cmail не завантажено. Скористайтеся пунктом «Перезавантажити повідомлення CMail» і повторіть ваш хід.Немає списку ходів гриУ черзі немає пропозицій щодо цього ходуПрацює лише у збірці з GTKКерування часомКерування часом…Коефіцієнти виправлення часу:Вікна верхнього рівняПараметри турніруФайл турніру: Турнір…Учасники турніру:Система турніру (0 = кругова, 1 = почергова):ТренуванняРежим тренування вимкненоРежим тренування увімкненоУ режимі тренування потрібен файл гриОбрізати груТестовий звук:Два комп’ютераРобота режиму гри між двома комп’ютерами разом з режимом ICS неможливаРежимом гри між двома комп’ютерами можна скористатися, лише якщо встановлено шаховий рушійВведіть хідUCIUSI/UCCI (використовує вказаний -uxiAdapter)Не вдалося створити набір шрифтів для %s. Незавершених:Невідоме значення initialMode %sНевідома назва варіанта %sНевідомий «дикий» тип %dНевідомий аргумент %sНевідоме значення булевого аргументу %sНе використовуєтьсяОновити рушійВивантажити для аналізуВикористовувати текстури дошкиВикористовувати книгу з графічним інтерфейсомЗовнішні растрові зображення фігур з власними кольорамиВикористовувати псевдонім у мітках гравця PGN під час ігор між рушіямиФайл користувачаФайл WAV користувача:Варіант %s не підтримується %sПідтримку варіанта %s передбачено лише у режимі ICSУ варіанти позначені * можна грати лише з вимкненою перевіркою коректності.Перевіряти вимоги до результатів рушіяПереглядПротокол WB версії 1 (не чекати на дані щодо можливостей)Зачекайте на ваш хід або виберіть пункт «Ходити».Очікувати на ваш хід.Очікування на доступ до можливості збереження файлаОчікування на запуск першої шахової програмиОчікування на результати інших ігорОчікування на відповідь від суперника Очікування на запуск другої шахової програмиПолководецьПопередження: ви ще вивчаєте груПопередження: ви ще продовжуєте спостерігати за гроюПопередження: гра ще триваєПопередження: ця можливість не підтримується другим рушієм (%s)!БіліКолір фігур білих:Хід білихПрапорець білих впавДика тураПоріг виграшу/програшу:Виграшів:Удар об деревоДомашня сторінка XBoardВи не вивчаєте груВи не спостерігаєте за гроюВи граєте чорнимиВи граєте білимиОдночасно змінювати можна лише один рушійСкасовувати ходи у призупиненій грі не можнаЦя дія неможлива у режимі гри або спостереженняНе можна міняти рушій, який зараз використовується! Спочатку перервіть гру.Вами не вказано виконуваного файла рушіяВи вже надіслали хід поштою. Зачекайте, доки буде отримано хід від вашого суперника. Щоб повторно надіслати той самий хід, віддайте команду "cmail -remail -game %s" у командному рядку.Вами внесено зміни до журналу гри. Скористайтеся пунктом «Перезавантажити гру» і повторіть ваш хід.Вами введено занадто багато ходів. Поверніться до правильної позиції і повторіть спробу.Вами ще не зроблено жодного ходуПерш ніж запропонувати нічию, вам слід зробити хідДля запису результатів турніру вам слід вказати файл турніру.Вами перезапущено вже завершений турнір. Тепер до турніру буде додано ще одне коло. Ігри розпочнуться за 10 секунд.У вашого суперника ще залишився часМасштаб графу оцінки позиції:_ДіяЗ_міни_Файл_Довідка_РежимП_араметриП_ерегляддодати наступний хідатомніпомилковий параметр searchTime %sпомилковий параметр timeControl %sбероліна *вибратиза назвоюза типомчу сьогі (12x12)класичніспорожнитизакритинадіслати змінине вдалося завантажити бібліотеку EGBBкур’єр (12x8)внизНадіслати звіт про ваду електронною поштоюельфійські шахи (10x10)назва рушіятиповіне вдалося записати PVказковізнайти позиціюпершийфіксований максимумпіддавкигранд-шахи (10x10)нарощувальнийвбудований rcmd ще не реалізовано для UnixАнтишахимогутній левхідзвуженнядалінаступна сторінкавашому запиту не відповідає жодна граправилами дозволено лише позначені клітинкиабо вкажіть його нижче:вибрати фіксованупопередня сторінкапідтримки версії протоколу %d не передбаченовипадковоправа наданоправа відкликанозберегти зміниsay Internal error; bad moveType %d (%d,%d-%d,%d)другийсьогі (9x9)перемішатиміткипорогові значеннядва королівгорупротибілий піксель = 0x%lx, чорний піксель = 0x%lx помилкова версія EGBBсянці (9x10)втручання вашого суперника: %sxboard-4.9.1/po/en@quot.header0000644000175000001440000000226312421746651013137 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # xboard-4.9.1/po/es.po0000644000175000001440000021151012747543737011331 00000000000000# XBoard -- a graphical chessboard for X # Copyright (C) 2013, 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the XBoard package. # Traducción por Óscar Toledo G., 2010 # Antonio Ceballos , 2014, 2016 # msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.9.0-pre2\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2016-04-10 11:05+0200\n" "Last-Translator: Antonio Ceballos \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "%s en el fichero de configuración\n" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "Valor entero malo %s" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "Argumento no reconocido %s" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "No se ha dado valor al argumento %s" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Carácter de escape \\ incompleto en el valor de %s" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "Fallo al abrir fichero de indirección %s" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Valor del argumento lógico %s no reconocido" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "primer" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "segundo" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "versión %d del protocolo no es admitida" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "No se especificó el ejecutable del motor" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "opción timeControl incorrecta %s" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "opción searchTime incorrecta %s" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "La variante %s solo se admite en modo ICS" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "Nombre de variante desconocido %s" #: backend.c:1457 msgid "Starting chess program" msgstr "Iniciando programa de ajedrez" #: backend.c:1480 msgid "Bad game file" msgstr "archivo de partidas incorrecto" #: backend.c:1487 msgid "Bad position file" msgstr "archivo de posición incorrecto" #: backend.c:1501 msgid "Pick new game" msgstr "Seleccionar una nueva partida" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" "Se ha reiniciado un torneo que ya había concluido.\n" "Se le va a añadir un nuevo ciclo.\n" "Las partidas comienzan dentro de 10 s." #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" "Ya se han disputado o se están disputando todas las partidas del torneo '%s'" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "No se puede tener una partida sin programas de ajedrez" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "No se pudo abrir la puerta de comunicaciones %s" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "No se pudo conectar al servidor %s, puerta %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "Modo inicial desconocido %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "El modo análisis de archivo requiere un archivo de partidas" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "El modo de análisis requiere un motor de ajedrez" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "El modo de análisis no funciona con el modo ICS" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "El modo de máquina con blancas requiere un motor de ajedrez" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "El modo de máquina con blancas no funciona con el modo ICS" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "El modo de máquina con negras requiere un motor de ajedrez" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "El modo de máquina con negras no funciona con el modo ICS" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "El modo de dos máquinas requiere un motor de ajedrez" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "El modo de dos máquinas no funciona con el modo ICS" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "El modo de entrenamiento requiere un archivo de partidas" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "Error al escribir a ICS" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "Error al leer el teclado" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "Se obtuvo del teclado un fin de archivo" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "Tipo «wild» %d desconocido" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "Error al escribir en la pantalla" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "información kibitz de su oponente: %s" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "Error al recolectar lista de jugadas: dos encabezados" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "Error al recolectar lista de jugadas: anidado" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "contra" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "La jugada no es válida (la ha rechazado ICS)" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "Conexión cerrada por ICS" #: backend.c:4306 msgid "Error reading from ICS" msgstr "Error al leer de ICS" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" "Fallo al analizar texto del tablero:\n" "\"%s\"" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "Partida demasiado larga; incremente MAX_MOVES y recompile" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "Error al recolectar lista de jugadas: tablero extra" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "No se pudo analizar la jugada \"%s\" de ICS" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "say Error interno; moveType incorrecto %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "No se puede hacer esto mientras se está jugando u observando" #  TRANSLATORS: BOARDS_RANKS, BOARD_FILES translatable? #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "¡Hace falta recompilar para disponer de BOARD_RANKS o BOARD_FILES!" #: backend.c:6858 msgid "You are playing Black" msgstr "Usted juega negras" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "Usted juega blancas" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Turno de las blancas" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Turno de las negras" #: backend.c:6920 msgid "Displayed position is not current" msgstr "La posición mostrada no es la actual" #: backend.c:7123 msgid "rights granted" msgstr "derechos otorgados" #: backend.c:7123 msgid "rights revoked" msgstr "derechos revocados" #: backend.c:7175 msgid "Illegal move" msgstr "Jugada ilegal" #: backend.c:7255 msgid "End of game" msgstr "Fin del juego" #: backend.c:7258 msgid "Incorrect move" msgstr "Jugada incorrecta" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "Retrasar el peón a la posición previa a la coronación" #: backend.c:7780 msgid "only marked squares are legal" msgstr "solo son legales los escaques señalados" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "Torneo suizo terminado" #: backend.c:8632 msgid "could not load EGBB library" msgstr "" "no se ha podido cargar la biblioteca de base de datos de finales de partida" #: backend.c:8635 msgid "wrong EGBB version" msgstr "versión incorrecta de base de datos de finales de partida" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "El bando del otro motor no es válido" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Jugada ilegal \"%s\" del %s motor" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "El FEN recibido del motor es incorrecto" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "El motor no ha enviado la configuración para la variante no estándar" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s no admite análisis" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Jugada ilegal \"%s\" (rechazada por el programa de ajedrez %s)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Fallo al iniciar el programa de ajedrez %s %s en %s: %s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "Sugerencia: %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" "La jugada sugerida \"%s\"\n" "por el programa de ajedrez %s no es válida" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "La máquina acepta su oferta de tablas" # TRANSLATORS: Action / Draw translatable? #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" "La máquina ofrece tablas.\n" "Seleccione Action / Draw si está de acuerdo." #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "fallo al escribir la PV" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Jugada ambigua en la salida ICS: \"%s\"" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Jugada ilegal en la salida ICS: \"%s\"" #: backend.c:10132 msgid "Gap in move list" msgstr "Hueco en la lista de jugadas" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "La variante %s no es admitida por %s" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr ", pero %s es" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "Fallo al iniciar '%s'" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "Esperando al primer programa de ajedrez" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "Esperando al segundo programa de ajedrez" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "No se ha podido escribir en el fichero de torneos" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" "¡No se puede reemplazar un motor mientras está ocupado!\n" "Termine primero la partida del motor." #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "No hay ningún motor instalado con el nombre indicado" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" "Cambie primero un motor editando la lista de participantes\n" "en el diálogo de las Opciones de Torneo" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "Solo se puede cambiar un motor a la vez" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "No hay ningún motor %s instalado" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" "Hay que proporcionar un fichero de torneos,\n" "para almacenar el progreso del torneo" #: backend.c:11200 msgid "Not enough participants" msgstr "No hay suficientes participantes" #: backend.c:11403 msgid "Bad tournament file" msgstr "Archivo de torneos incorrecto" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "Esperando por otra(s) partida(s)" #: backend.c:11428 msgid "No pairing engine specified" msgstr "iNo se ha especificado el otro motor" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "Tiempo medio de resolución %4.2f s (tiempo total %4.2f s) " #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "%d movimientos de evasión jugados " #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "Resueltos %d de %d (%3.1f%%) " #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Encuentro %s - %s: puntuación final %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Jugada ilegal: %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Jugada ambigua: %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "No se puede abrir \"%s\"" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "No se pudo construir la lista de partidas" #: backend.c:12574 msgid "No more games in this message" msgstr "No hay más partidas en este mensaje" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "Ninguna partida se ha cargado aún" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "Ya no se puede ir más atrás" #: backend.c:13065 msgid "Game number out of range" msgstr "Número de partida fuera de rango" #: backend.c:13076 msgid "Can't seek on game file" msgstr "No se puede buscar en archivo de partidas" #: backend.c:13134 msgid "Game not found in file" msgstr "Partida no hallada en archivo" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "Posición FEN incorrecta en archivo" #: backend.c:13423 msgid "No moves in game" msgstr "Ninguna jugada en la partida" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "Ninguna posición se ha cargado aún" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "No se puede buscar en archivo de aperturas" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "No se halló la posición en el archivo" #: backend.c:13645 msgid "Black to play" msgstr "Negras juegan" #: backend.c:13648 msgid "White to play" msgstr "Blancas juegan" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "Esperando a tener acceso para guardar el fichero" #: backend.c:13737 msgid "Saving game" msgstr "Guardando partida" #: backend.c:13738 msgid "Bad Seek" msgstr "Búsqueda incorrecta" #: backend.c:14111 msgid "Saving position" msgstr "Guardando posición" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" "Usted ha editado el historial de la partida.\n" "Use «Reload Same Game» y vuelva a realizar un movimiento." #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" "Usted ha introducido demasiadas jugadas.\n" "Retroceda hasta la posición correcta e inténtelo de nuevo." #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" "La posición que se está mostrando no es la actual.\n" "Avance hasta la posición correcta e inténtelo de nuevo." #: backend.c:14294 msgid "You have not made a move yet" msgstr "Usted no ha realizado todavía ninguna jugada" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" "El mensaje «cmail» no está cargado.\n" "Use «Reload CMail Message» y vuelva a realizar un movimiento." #: backend.c:14320 msgid "No unfinished games" msgstr "No hay partidas sin terminar" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" "Ya ha enviado una jugada por correo.\n" "Espere hasta recibir una jugada de su adversario.\n" "Para volver a enviar la misma jugada, teclee\n" "\"cmail -remail -game %s\"\n" "en la línea de órdenes." #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "Fallo al invocar cmail" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Esperando respuesta del oponente\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "Todavía necesita hacer una jugada para la partida\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "Todavía necesita hacer jugadas para ambas partidas\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "Todavía necesita hacer jugadas para las %d partidas\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "Todavía necesita hacer una jugada para la partida %s\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "No hay juegos sin terminar\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "Listo para enviar correo\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Todavía necesita hacer jugadas para las partidas %s\n" #: backend.c:14656 msgid "Edit comment" msgstr "Editar comentario" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Editar comentario en %d.%s%s" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "Usted no está observando una partida" #: backend.c:14824 msgid "It is not White's turn" msgstr "No es turno de las blancas" #: backend.c:14907 msgid "It is not Black's turn" msgstr "No es turno de las negras" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "Iniciando el programa de ajedrez %s" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" "Espere su turno.\n" "o seleccione 'Move Now'." #: backend.c:15188 msgid "Training mode off" msgstr "Modo de entrenamiento apagado" #: backend.c:15196 msgid "Training mode on" msgstr "Modo de entrenamiento activo" #: backend.c:15199 msgid "Already at end of game" msgstr "Ya se encuentra al final de la partida" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "Advertencia: Usted todavía está jugando una partida" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "Advertencia: Usted todavía está observando una partida" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "Advertencia: Usted todavía está examinando una partida" #: backend.c:15365 msgid "Click clock to clear board" msgstr "Pinche el reloj para limpiar el tablero" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "Cerrar el modo de análisis del motor ICS..." #: backend.c:15711 msgid "That square is occupied" msgstr "Ese cuadro está ocupado" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "No hay oferta pendiente para esta jugada" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "Su oponente no está fuera de tiempo" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "Debe hacer su jugada antes de ofrecer tablas" #: backend.c:16220 msgid "You are not examining a game" msgstr "Usted no está examinando una partida" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "No puede revertir si está en pausa" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "Es su turno" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "Espero su turno." #: backend.c:16348 msgid "No hint available" msgstr "No hay sugerencia disponible" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "La lista de partidas no se ha cargado o está vacía" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "" "¡Ya existe el fichero del libro! Inténtelo de nuevo si quiere " "sobreescribirlo." #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "Error al escribir al %s programa de ajedrez" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "El programa %s termina en posición de tablas (%s)" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Error: el %s programa de ajedrez (%s) terminó inesperadamente" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Error al leer del %s programa de ajedrez (%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "El motor %s tiene demasiadas opciones\n" #: backend.c:17521 msgid "Displayed move is not current" msgstr "La jugada ilustrada no es la actual" #: backend.c:17530 msgid "Could not parse move" msgstr "No se pudo analizar la jugada" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "Ambas banderas cayeron" #: backend.c:17657 msgid "White's flag fell" msgstr "La bandera blanca cayó" #: backend.c:17679 msgid "Black's flag fell" msgstr "La bandera negra cayó" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" "El ajuste del reloj no está permitido en el modo de advertencia de tiempo " "automático" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "Posición FEN incorrecta en portapapeles" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "El libro de Polyglot no es válido" #: book.c:722 msgid "Book Fault" msgstr "Error en el libro" #: book.c:877 msgid "Hash keys are different" msgstr "Las claves «hash» son diferentes" #: book.c:1054 msgid "Could not create book" msgstr "No se ha podido crear el libro" #: dialogs.c:287 msgid "Tournament file: " msgstr "Fichero de torneos: " #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "Para jugar en torneos de forma concurrente con múltiples XBoards:" #: dialogs.c:289 msgid "Sync after round" msgstr "Sincronizar después de la ronda" #: dialogs.c:290 msgid "Sync after cycle" msgstr "Sincronizar después de una vuelta" #: dialogs.c:291 msgid "Tourney participants:" msgstr "Participantes del torneo:" #: dialogs.c:292 msgid "Select Engine:" msgstr "Seleccione Motor:" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "Tipo de torneo (0 = liga, 1 = uno contra todos):" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "Número de vueltas del torneo (o rondas de torneo suizo)" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "Número predeterminado de partidas del encuentro (o emparejamiento):" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "Pausa entre partidas del encuentro (ms):" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "Guardar partidas del torneo en:" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "Fichero de partidas con líneas de apertura:" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "Número de la partida (-1 o -2 = incremento automático):" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "Fichero con posiciones iniciales:" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "Número de la posición (-1 o -2 = incremento automático):" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "Rebobinar Índice después de este número de Partidas (0 = nunca)" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "Inicialmente, desactivar los libros propios del motor" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "Control de tiempo" #: dialogs.c:312 msgid "Common Engine" msgstr "General de los motores" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Opciones generales" #: dialogs.c:314 msgid "Continue Later" msgstr "Seguir más tarde" #: dialogs.c:315 msgid "Replace Engine" msgstr "Reemplazar motor" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "Actualizar motor" #: dialogs.c:317 msgid "Clone Tourney" msgstr "Clonar torneo" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "" "En primer lugar, debe usted especificar un fichero de torneos que exista, " "para ser clonado" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "# no hay ningún motor instalado" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "Error interno: PARTICIPANTS incorrecto" #: dialogs.c:389 msgid "Tournament Options" msgstr "Opciones de Torneo" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "Puntuaciones absolutas del análisis" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "Casi siempre dama (rodeo para subcoronar)" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "Animar arrastre" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "Animar movimiento" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Bandera automática" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Cambio de lado automático" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "A ciegas" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "Menú «drop»" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "Activar árboles de variaciones" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "Cabeceras en la ventana de salida del motor" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "Ocultar cogitaciones al jugar contra humano" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Iluminar última jugada" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Iluminar con flecha" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Moviemento de un click" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "Actualización periódica (en análisis)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "Realizar la(s) jugada(s) de la PV escogida (análisis)" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "Prever siguente jugada" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Ventana emergente al salir" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Ventana emergente si error en jugada" #: dialogs.c:429 msgid "Scores in Move List" msgstr "Puntuaciones de la lista de jugadas" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Mostrar coordenadas" #: dialogs.c:431 msgid "Show Target Squares" msgstr "Mostrar casillas objetivo" #: dialogs.c:432 msgid "Sticky Windows" msgstr "Ventanas adhesivas" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Verificar legalidad" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "Diálogos de alto nivel" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "Destello en las jugadas (0 = sin destello):" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "Velocidad de destello (high = rápido):" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "Velocidad de animación (high = lenta):" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "Factor de «zoom» en el grafo de evaluación:" #: dialogs.c:458 msgid "Normal" msgstr "Normal" #: dialogs.c:459 msgid "Makruk" msgstr "«Makruk» (tailandés)" #: dialogs.c:460 msgid "FRC" msgstr "FRC (ajedrez aleatorio de Fischer)" #: dialogs.c:461 msgid "Shatranj" msgstr "«Shatranj»" #: dialogs.c:462 msgid "Wild castle" msgstr "Enroque salvaje" #: dialogs.c:463 msgid "Knightmate" msgstr "Mate al caballo" #: dialogs.c:464 msgid "No castle" msgstr "Sin enroque" #: dialogs.c:465 msgid "Cylinder *" msgstr "Cilíndrico *" #: dialogs.c:466 msgid "3-checks" msgstr "tres jaques" #: dialogs.c:467 msgid "berolina *" msgstr "belorina *" #: dialogs.c:468 msgid "atomic" msgstr "atómico" #: dialogs.c:469 msgid "two kings" msgstr "dos reyes" #: dialogs.c:470 msgid " " msgstr " " #: dialogs.c:471 msgid "Spartan" msgstr "espartano" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "" "Tamaño del tablero ( -1 = el predeterminado para la variante seleccionada):" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "Número de filas del tablero:" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "Número de columnas del tablero:" #: dialogs.c:475 msgid "Holdings Size:" msgstr "Tamaño tenencias:" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" "Las variantes señaladas con * solo pueden jugarse\n" "con la comprobación de legalidad desactivada." # What's this? #: dialogs.c:479 msgid "ASEAN" msgstr "ASEAN" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "Gran shatranj (10x8)" #: dialogs.c:481 msgid "Seirawan" msgstr "Seirawan" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "Halcón (10x8)" #: dialogs.c:483 msgid "Superchess" msgstr "Superajedrez" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "Capablanca (10x8)" #: dialogs.c:485 msgid "Crazyhouse" msgstr "«Crazyhouse»" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "Gótico (10x8)" #: dialogs.c:487 msgid "Bughouse" msgstr "Pasapiezas" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "Janus (10x8)" #: dialogs.c:489 msgid "Suicide" msgstr "Suicida" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "CRC (10x8)" # TRANSLATORS: give-away = losers? #: dialogs.c:491 msgid "give-away" msgstr "pierde gana" #: dialogs.c:492 msgid "grand (10x10)" msgstr "gran ajedrez (10x10)" # TRANSLATORS: give-away = losers? #: dialogs.c:493 msgid "losers" msgstr "pierde gana" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "japonés (9x9)" #: dialogs.c:495 msgid "fairy" msgstr "mágico" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "chino" #: dialogs.c:497 msgid "mighty lion" msgstr "león poderoso" #: dialogs.c:498 msgid "courier (12x8)" msgstr "ajedrez del mensajero (12x8)" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "ajedrez élfico (10x10)" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "japonés (12x12)" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Advertencia: ¡el segundo motor (%s) no admite esto!" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "Solo pasapiezas no está disponible en el modo visor." #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" "Todas las variantes no disponibles en el primer motor\n" "(actualmente %s) están desactivas." #: dialogs.c:596 msgid "New Variant" msgstr "Nueva variante" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "Número max. CPUs por motor:" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "Directorio de Ployglot:" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "Tamaño de la tabla de transposición (MB):" #: dialogs.c:631 msgid "EGTB Path:" msgstr "Carpeta de la EGTB:" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "Tamaño de la caché de la EGTB (MB):" #: dialogs.c:633 msgid "Use GUI Book" msgstr "Usar el libro de la GUI" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "Fichero del libro de aperturas:" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "Profundidad del libro (jugadas):" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "Variedad del libro (0) frente a fuerza (100):" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "El motor 1 tiene libro propio" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "El motor 2 tiene libro propio" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "Configuración general de los motores" #: dialogs.c:655 msgid "Detect all Mates" msgstr "Detectar todos los mates" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "Verificar avisos del motor" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "Tablas si el material es insuficiente" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Adjudicar tablas triviales (regla de las tres jugadas)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "Regla de las N jugadas:" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "N repeticiones:" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "Adjudicar mate después de:" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "Límite para adjudicar juego:" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "Negar puntuación del motor #1" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "Negar puntuación del motor #2" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "Adjudicar partidas no ICS" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "Auto Kibitz" #: dialogs.c:685 msgid "Auto-Comment" msgstr "Auto-comentario" #: dialogs.c:686 msgid "Auto-Observe" msgstr "Auto-Observar" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Tablero al frente (automático)" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "Creación de fichero de registro automática" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "Seguir observando mientras se juega" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "Tablero dual para partidas observadas" #: dialogs.c:691 msgid "Get Move List" msgstr "Leer lista de jugadas" #: dialogs.c:692 msgid "Quiet Play" msgstr "Jugar en silencio" #: dialogs.c:693 msgid "Seek Graph" msgstr "Buscar gráfica" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "Grafo de búsqueda con refresco automático" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "Ventana emergente de buzón automática" #: dialogs.c:696 msgid "Quit after game" msgstr "Después de la partida salir" #: dialogs.c:697 msgid "Premove" msgstr "Pre-jugada" #: dialogs.c:698 msgid "Premove for White" msgstr "Prejugada de las blancas" #: dialogs.c:699 msgid "First White Move:" msgstr "1er. mov. blancas" #: dialogs.c:700 msgid "Premove for Black" msgstr "Prejugada de las negras" #: dialogs.c:701 msgid "First Black Move:" msgstr "1er. mov. negras" #: dialogs.c:703 msgid "Alarm" msgstr "Alarma" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "Tiempo de la alarma (ms):" #: dialogs.c:706 msgid "Colorize Messages" msgstr "Mensajes coloreados" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "Colores del texto que se expresa en voz alta:" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "Colores «S» del texto que se expresa en voz alta:" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "Colores del texto del canal 1:" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "Colores del texto del otro canal:" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "Colores del texto kibitz:" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "Colores del texto de hablar con otros:" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "Colores del texto de desafíos:" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "Colores del texto de peticiones:" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "Colores del texto de búsqueda:" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "Colores del otro texto:" #: dialogs.c:723 msgid "ICS Options" msgstr "Opciones ICS" #: dialogs.c:728 msgid "Exact position match" msgstr "Coincidencia exacta de la posición" #: dialogs.c:728 msgid "Shown position is subset" msgstr "La posición mostrada es un subconjunto" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "Mismo material con exactamente la misma cadena de peones" #: dialogs.c:729 msgid "Same material" msgstr "Mismo material" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "Rango de material (mitad superior del tablero opcional)" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "Diferencia de material (situación equilibrada opcional)" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "Etiquetas de visualización automática" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "Comentario de visualización automática" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" "Velocidad de juego automático de las partidas cargadas\n" "(0 = instantánea, -1 = desactivada):" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "Segundos por jugadas:" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" "\n" "opciones para el modo de visualización de partidas:" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" "\n" "Umbral para filtrar posiciones en la lista de partidas:" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "Elo del mejor jugador como mínimo:" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "Elo del peor jugador como mínimo:" #: dialogs.c:753 msgid "No games before year:" msgstr "Número de partidas antes del año:" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "Número mínimo de posiciones consecutivas:" #: dialogs.c:756 msgid "Search mode:" msgstr "Modo de búsqueda:" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "También colores invertidos" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "También posición volteada izquierda-derecha" #: dialogs.c:767 msgid "Load Game Options" msgstr "Opciones al leer partida" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "Guardar partidas automáticamente" #: dialogs.c:780 msgid "Own Games Only" msgstr "Solo partidas propias" #: dialogs.c:781 msgid "Save Games on File:" msgstr "Guardar partidas en fichero" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "Guardar en fichero posiciones finales:" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "Cabecera PGN del evento:" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "Estilo de guardado antiguo (en contraposición a PGN)" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "Incluir etiqueta de número en el PGN del torneo" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "Guardar la información de puntuación/profundidad en el PGN" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "Guardar información fuera-de-libro en PGN " #: dialogs.c:794 msgid "Save Game Options" msgstr "Opciones al salvar partida" #: dialogs.c:803 msgid "No Sound" msgstr "Sin sonido" #: dialogs.c:804 msgid "Default Beep" msgstr "Bip predeterminado" #: dialogs.c:805 msgid "Above WAV File" msgstr "Fichero WAV de arriba" #: dialogs.c:806 msgid "Car Horn" msgstr "Bocina de coche" #: dialogs.c:807 msgid "Cymbal" msgstr "Platillos" #: dialogs.c:808 msgid "Ding" msgstr "Timbre" #: dialogs.c:809 msgid "Gong" msgstr "«Gong»" #: dialogs.c:810 msgid "Laser" msgstr "Láser" # TRANSLATORS #: dialogs.c:811 msgid "Penalty" msgstr "Penalización" #: dialogs.c:812 msgid "Phone" msgstr "Teléfono" #: dialogs.c:813 msgid "Pop" msgstr "«Pop»" #: dialogs.c:814 msgid "Roar" msgstr "Rugido" #: dialogs.c:815 msgid "Slap" msgstr "Palmada" # TRANSLATORS #: dialogs.c:816 msgid "Wood Thunk" msgstr "«Wood thunk»" #: dialogs.c:818 msgid "User File" msgstr "Fichero del usuario" #: dialogs.c:841 msgid "User WAV File:" msgstr "Fichero WAV del usuario:" #: dialogs.c:842 msgid "Sound Program:" msgstr "Programa de sonido:" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "Sonido de prueba" #: dialogs.c:844 msgid "Play" msgstr "Reproducir" #: dialogs.c:845 msgid "Move:" msgstr "Jugada:" # TRANSLATORS #: dialogs.c:846 msgid "Win:" msgstr "Victorias:" #: dialogs.c:847 msgid "Lose:" msgstr "Derrotas:" #: dialogs.c:848 msgid "Draw:" msgstr "Tablas" #: dialogs.c:849 msgid "Unfinished:" msgstr "No terminadas:" #: dialogs.c:850 msgid "Alarm:" msgstr "Alarma:" #: dialogs.c:851 msgid "Challenge:" msgstr "Desafío:" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "Carpeta de sonidos:" #: dialogs.c:854 msgid "Shout:" msgstr "En voz alta:" # TRANSLATORS #: dialogs.c:855 msgid "S-Shout:" msgstr "En voz alta S" #: dialogs.c:856 msgid "Channel:" msgstr "Canal:" #: dialogs.c:857 msgid "Channel 1:" msgstr "Canal 1:" #: dialogs.c:858 msgid "Tell:" msgstr "Decir:" #: dialogs.c:859 msgid "Kibitz:" msgstr "Kibitz:" #: dialogs.c:860 msgid "Request:" msgstr "Pedir:" #: dialogs.c:861 msgid "Lion roar:" msgstr "Rugido de león:" #: dialogs.c:862 msgid "Seek:" msgstr "Buscar:" #: dialogs.c:880 msgid "Sound Options" msgstr "Opciones de sonido" #: dialogs.c:896 msgid "Selectable themes:" msgstr "Temas seleccionables:" #: dialogs.c:898 msgid "New name for current theme:" msgstr "Nuevo nombre para el tema actual:" #: dialogs.c:901 msgid "White Piece Color:" msgstr "Color de las piezas blancas:" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "R" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "V" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "A" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "O" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "Color de las piezas negras:" #: dialogs.c:917 msgid "Light Square Color:" msgstr "Color de los escaques claros" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "Color de los escaques oscuros" #: dialogs.c:929 msgid "Highlight Color:" msgstr "Color de escaque iluminado" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "Color de iluminación de prejugada:" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "Voltear piezas estilo Shogi (Botones de colores predefinidos)" #: dialogs.c:943 msgid "Mono Mode" msgstr "Modo mono" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "Tamaño del logo (0=desactivado, requiere reiniciar):" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "Hueco de la línea (-1 = el predeterminado para el tamaño del tablero):" #: dialogs.c:946 msgid "Use Board Textures" msgstr "Utilizar tablero con texturas" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "Fichero de texturas para escaques oscuros:" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "Fichero de texturas para escaques claros:" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "Utilizar «bitmaps» externos para las piezas con sus propios colores" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "Carpeta con imágenes de piezas:" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "# no hay ningún tema definido" #: dialogs.c:1033 msgid "Board Options" msgstr "Opciones de tablero" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "Menú de texto ICS" #: dialogs.c:1134 msgid "clear" msgstr "borrar" #: dialogs.c:1135 msgid "save changes" msgstr "guardar cambios" #: dialogs.c:1233 msgid "add next move" msgstr "añadir siguente jugada" #: dialogs.c:1234 msgid "commit changes" msgstr "hacer cambios" #: dialogs.c:1257 msgid "Edit book" msgstr "Editar libro" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Etiquetas" #: dialogs.c:1405 msgid "ICS input box" msgstr "Cuadro de entrada ICS" #: dialogs.c:1437 msgid "Type a move" msgstr "Teclear una jugada" #: dialogs.c:1463 msgid "Engine has no options" msgstr "El motor no tiene opciones" #: dialogs.c:1465 msgid "Engine Settings" msgstr "Configuración del motor" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "Seleccionar un motor de la lista:" #: dialogs.c:1509 msgid "or specify one below:" msgstr "o especificar uno debajo:" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "Sobrenombre (opcional):" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" "Usar el sobrenombre de las etiquetas de jugadores del PGN en las partidas " "motor-motor" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "Carpeta del motor:" #: dialogs.c:1513 msgid "Engine Command:" msgstr "Instrucción para el motor:" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "(La carpeta se derivará de la del motor cuando esté vacía)" #: dialogs.c:1515 msgid "UCI" msgstr "UCI" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "USI/UCCI (utiliza el -uxiAdapter especificado)" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "Protocolo WB v1 (no esperar por las características del motor)" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "No debe utilizar el libro de la GUI" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "Añadir este motor a la lista" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "Forzar la variante actual con este motor" #: dialogs.c:1574 msgid "Load first engine" msgstr "Cargar el primer motor" #: dialogs.c:1580 msgid "Load second engine" msgstr "Cargar el segundo motor" #: dialogs.c:1603 msgid "shuffle" msgstr "barajar" #: dialogs.c:1604 msgid "Fischer castling" msgstr "Enroque de Fischer" #: dialogs.c:1605 msgid "Start-position number:" msgstr "Núm. de pos. inicial:" #: dialogs.c:1606 msgid "randomize" msgstr "aleatorizar" #: dialogs.c:1607 msgid "pick fixed" msgstr "selección fijada" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Nueva partida revuelta..." #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "Relojes (requiere reiniciar):" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "+" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "-" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "C" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "*" #: dialogs.c:1677 msgid "Message (above board):" msgstr "Mensaje (encima del tablero):" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "Consola de ICS/Charla:" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "Editar etiquetas / libro / lista de motores:" #: dialogs.c:1695 msgid "Edit comments:" msgstr "Editar comentarios:" #: dialogs.c:1701 msgid "Move history / Engine Output:" msgstr "Historial de movimientos / Salida del motor:" #: dialogs.c:1707 msgid "Game list:" msgstr "Lista de partidas:" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" "\n" "Los botones * seleccionarán la fuente abajo indicada:" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "Esto solo funciona en el «build» de GTK" #: dialogs.c:1768 msgid "Fonts" msgstr "Fuentes" #: dialogs.c:1791 msgid "classical" msgstr "clásica" #: dialogs.c:1792 msgid "incremental" msgstr "incremental" #: dialogs.c:1793 msgid "fixed max" msgstr "máximo fijado" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "Divide por 60 los tiempos introducidos" #: dialogs.c:1795 msgid "Moves per session:" msgstr "Jugadas por sesión:" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "Tiempo inicial (min):" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "Incremento o máximo (s(jugada):" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "Factores de tiempo extra:" #: dialogs.c:1799 msgid "Engine #1" msgstr "Motor 1" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "Motor 2 / Humano" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "No se usa" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "No se puede cambiar el control de tiempo en medio de una partida" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "Error al escribir al programa de ajedrez" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "Cancelar" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "Rey" #: dialogs.c:1972 msgid "Captain" msgstr "Capitán" #: dialogs.c:1973 msgid "Lieutenant" msgstr "Teniente" #: dialogs.c:1974 msgid "General" msgstr "General" #: dialogs.c:1975 msgid "Warlord" msgstr "Caudillo" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Caballo" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Alfil" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Torre" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "Arzobispo" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "Canciller" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Dama" #: dialogs.c:1988 msgid "Lion" msgstr "León" #: dialogs.c:1992 msgid "Defer" msgstr "Diferir" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Coronar" #: dialogs.c:2050 msgid "Chats:" msgstr "Charlas:" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 msgid "New Chat" msgstr "Nueva Charla" #: dialogs.c:2058 msgid "Chat partner:" msgstr "Charlar con compañero:" #: dialogs.c:2059 msgid "End Chat" msgstr "Fin de la charla" #: dialogs.c:2060 msgid "Hide" msgstr "Ocultar" #: dialogs.c:2287 msgid "ICS Interaction" msgstr "Interacciones ICS" #: dialogs.c:2372 msgid "factory" msgstr "De fábrica" #: dialogs.c:2373 msgid "up" msgstr "arriba" #: dialogs.c:2374 msgid "down" msgstr "abajo" #: dialogs.c:2393 msgid "No tag selected" msgstr "Número de la etiqueta seleccionada" #: dialogs.c:2424 msgid "Game-list options" msgstr "Opciones de la lista de partidas" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Error" #: dialogs.c:2545 msgid "Fatal Error" msgstr "Error fatal" #: dialogs.c:2545 msgid "Exiting" msgstr "Saliendo" #: dialogs.c:2556 msgid "Information" msgstr "Información" #: dialogs.c:2563 msgid "Note" msgstr "Nota" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Blancas" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Peón" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "Elefante" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "Cañón" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "Degradar" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Vaciar el escaque" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Limpiar el tablero" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Negras" #: dialogs.c:2827 msgid "_File" msgstr "_Archivo" #: dialogs.c:2828 msgid "_Edit" msgstr "_Editar" #: dialogs.c:2829 msgid "_View" msgstr "_Ver" #: dialogs.c:2830 msgid "_Mode" msgstr "_Modo" #: dialogs.c:2831 msgid "_Action" msgstr "A_cción" #: dialogs.c:2832 msgid "E_ngine" msgstr "Mo_tor" #: dialogs.c:2833 msgid "_Options" msgstr "_Opciones" #: dialogs.c:2834 msgid "_Help" msgstr "A_yuda" #: dialogs.c:2844 msgid "<<" msgstr "<<" #: dialogs.c:2845 msgid "<" msgstr "<" #: dialogs.c:2847 msgid ">" msgstr ">" #: dialogs.c:2848 msgid ">>" msgstr ">>" #: dialogs.c:3136 msgid "Directories:" msgstr "Carpetas:" #: dialogs.c:3137 msgid "Files:" msgstr "Archivos:" #: dialogs.c:3138 msgid "by name" msgstr "por nombre" #: dialogs.c:3139 msgid "by type" msgstr "por tipo" #: dialogs.c:3142 msgid "Filename:" msgstr "Nombre del fichero:" #: dialogs.c:3143 msgid "New directory" msgstr "Nueva carpeta" #: dialogs.c:3144 msgid "File type:" msgstr "Tipo de fichero:" #: dialogs.c:3219 msgid "Contents of" msgstr "Contenido de" #: dialogs.c:3245 msgid " next page" msgstr " siguiente página" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "NOMBRE DEL DIRECTORIO PRIMERO AQUÍ" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "INTENTAR OTRO NOMBRE" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" "No hay piezas predeterminadas instaladas\n" "Seleccione su propio '-pieceImageDirectory'." #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "Salida del motor" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "%s (%d media-jugada reversible)" msgstr[1] "%s (%d medias-jugadas reversibles)" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "NPS" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "Leyendo fichero de partidas (%d)" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: no se puede ir a la carpeta CHESSDIR: " #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "Fallo al abrir el fichero '%s'\n" #  TRANSLATORS: BOARDS_RANKS, BOARD_FILES translatable? #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Recompilar con BOARD_RANKS o BOARD_FILES mayor para admitir este tamaño" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: sintaxis de boardSize incorrecta %s\n" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: nombre de boardSize no reconocido %s\n" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: insuficientes colores disponibles: probando modo monocromo\n" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "No se ha podido crear conjunto de fuentes para %s.\n" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: ninguna fuente concuerda con el patrón %s\n" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "No se puede abrir el fichero temporal" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "Fallo al abrir fichero" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "Navegar" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "Aceptar" #: menus.c:136 msgid "Load game file name?" msgstr "¿Nombre del fichero de partidas para cargar?" #: menus.c:183 msgid "Load position file name?" msgstr "¿Nombre del fichero de posiciones para cargar?" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "¿Nombre del fichero de partidas para guardar?" #: menus.c:198 msgid "Save position file name?" msgstr "¿Nombre del fichero de posiciones para guardar?" #: menus.c:355 msgid " (with Zippy code)" msgstr " (con el código de Zippy)" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Copyright de las mejoras 1992-2014 Free Software Foundation\n" "Copyright de las mejoras 2005 Alessandro Scotti\n" "\n" "%s es software libre SIN NINGUNA GARANTÍA; ver el fichero COPYING para más " "información.\n" "\n" "Visite XBoard en la web en: http://www.gnu.org/software/xboard/\n" "Obtenga las características más recientes en: http://www.gnu.org/software/" "xboard/whats_new.html\n" "\n" "Informe de errores por correo a: \n" "\n" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "Acerca de XBoard" #: menus.c:390 msgid "Registered Engines" msgstr "Motores registrados" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 msgid "New Game" msgstr "Nueva partida" #: menus.c:613 msgid "New Shuffle Game..." msgstr "Nueva partida revuelta..." #: menus.c:614 msgid "New Variant..." msgstr "Nueva variante..." #: menus.c:616 msgid "Load Game" msgstr "Cargar partida" #: menus.c:617 msgid "Load Position" msgstr "Cargar posición" #: menus.c:618 msgid "Next Position" msgstr "Siguiente posición" #: menus.c:619 msgid "Prev Position" msgstr "Posición previa" #: menus.c:621 msgid "Save Game" msgstr "Guardar partida" #: menus.c:622 msgid "Save Position" msgstr "Guardar posición" #: menus.c:623 msgid "Save Selected Games" msgstr "Guardar partidas seleccionadas" #: menus.c:624 msgid "Save Games as Book" msgstr "Guardar partidas como libro" #: menus.c:626 msgid "Mail Move" msgstr "Jugada por correo" #: menus.c:627 msgid "Reload CMail Message" msgstr "Volver a cargar mensaje CMail" #: menus.c:629 msgid "Quit " msgstr "Salir " #: menus.c:634 msgid "Copy Game" msgstr "Copiar partida" #: menus.c:635 msgid "Copy Position" msgstr "Copiar posición" #: menus.c:636 msgid "Copy Game List" msgstr "Copiar lista de partidas" #: menus.c:638 msgid "Paste Game" msgstr "Pegar partida" #: menus.c:639 msgid "Paste Position" msgstr "Pegar posición" #: menus.c:641 menus.c:686 msgid "Edit Game" msgstr "Editar partida" #: menus.c:642 menus.c:687 msgid "Edit Position" msgstr "Editar posición" #: menus.c:643 msgid "Edit Tags" msgstr "Editar etiquetas" #: menus.c:644 msgid "Edit Comment" msgstr "Editar comentario" #: menus.c:645 msgid "Edit Book" msgstr "Editar libro" #: menus.c:647 msgid "Revert" msgstr "Revertir" #: menus.c:648 msgid "Annotate" msgstr "Anotar" #: menus.c:649 msgid "Truncate Game" msgstr "Truncar partida" #: menus.c:651 msgid "Backward" msgstr "Hacia atrás" #: menus.c:652 msgid "Forward" msgstr "Hacia delante" #: menus.c:653 msgid "Back to Start" msgstr "Volver a empezar" #: menus.c:654 msgid "Forward to End" msgstr "Avanzar hasta el final" #: menus.c:659 msgid "Flip View" msgstr "Voltear vista" #: menus.c:662 msgid "Move History" msgstr "Historial de jugadas" #: menus.c:663 msgid "Evaluation Graph" msgstr "Gráfica de evaluación" #: menus.c:664 msgid "Game List" msgstr "Lista de partidas" #: menus.c:667 msgid "Comments" msgstr "Comentarios" #: menus.c:668 msgid "ICS Input Box" msgstr "Cuatro de entrada ICS" #: menus.c:669 msgid "ICS/Chat Console" msgstr "Consola de ICS/Charla" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Editar comentario" #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Editar lista de motores..." #: menus.c:674 msgid "Board..." msgstr "Tablero..." #: menus.c:675 msgid "Fonts..." msgstr "Fuentes..." #: menus.c:676 msgid "Game List Tags..." msgstr "Etiquetas de la lista de partidas..." #: menus.c:681 msgid "Machine White" msgstr "El programa con blancas" #: menus.c:682 msgid "Machine Black" msgstr "El programa con negras" #: menus.c:683 msgid "Two Machines" msgstr "Dos programas" #: menus.c:684 msgid "Analysis Mode" msgstr "Modo de análisis" #: menus.c:685 msgid "Analyze Game" msgstr "Analizar partida" #: menus.c:688 msgid "Training" msgstr "Entrenamiento" #: menus.c:689 msgid "ICS Client" msgstr "Cliente ICS" #: menus.c:691 msgid "Machine Match" msgstr "Torneo de dos programas" #: menus.c:692 msgid "Pause" msgstr "Pausa" #: menus.c:697 msgid "Accept" msgstr "Aceptar" #: menus.c:698 msgid "Decline" msgstr "Declinar" #: menus.c:699 msgid "Rematch" msgstr "Revancha" #: menus.c:701 msgid "Call Flag" msgstr "Pedir la bandera" #: menus.c:702 msgid "Draw" msgstr "Tablas" #: menus.c:703 msgid "Adjourn" msgstr "Aplazar" #: menus.c:704 msgid "Abort" msgstr "Abortar" #: menus.c:705 msgid "Resign" msgstr "Rendirse" #: menus.c:707 msgid "Stop Observing" msgstr "Dejar de observar" #: menus.c:708 msgid "Stop Examining" msgstr "Dejar de examinar" #: menus.c:709 msgid "Upload to Examine" msgstr "Enviar para examinar" #: menus.c:711 msgid "Adjudicate to White" msgstr "Adjudicar a blancas" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Adjudicar a negras" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Adjudicar tablas" #: menus.c:718 msgid "Edit Engine List..." msgstr "Editar lista de motores..." #: menus.c:720 msgid "Load New 1st Engine..." msgstr "Cargar un nuevo primer motor..." #: menus.c:721 msgid "Load New 2nd Engine..." msgstr "Cargar un nuevo segundo motor..." #: menus.c:723 msgid "Engine #1 Settings..." msgstr "Configuración del motor #1..." #: menus.c:724 msgid "Engine #2 Settings..." msgstr "Configuración del motor #2..." #: menus.c:725 msgid "Common Settings..." msgstr "Configuración general..." #: menus.c:727 msgid "Hint" msgstr "Pista" #: menus.c:728 msgid "Book" msgstr "Repertorio de aperturas" #: menus.c:730 msgid "Move Now" msgstr "Mover ahora" #: menus.c:731 msgid "Retract Move" msgstr "Revocar jugada" #: menus.c:736 #, fuzzy msgid "Mute all Sounds" msgstr "Sonido en jugadas" #: menus.c:739 msgid "General..." msgstr "General..." #: menus.c:741 msgid "Time Control..." msgstr "Controles de tiempo..." #: menus.c:742 msgid "Adjudications..." msgstr "Adjudicaciones..." #: menus.c:743 msgid "ICS..." msgstr "ICS..." #: menus.c:744 msgid "Tournament..." msgstr "Torneo..." #: menus.c:745 msgid "Load Game..." msgstr "Cargar partida..." #: menus.c:746 msgid "Save Game..." msgstr "Guardar partida..." #: menus.c:747 msgid "Game List..." msgstr "Lista de partidas..." #: menus.c:748 msgid "Sounds..." msgstr "Sonidos..." #: menus.c:751 msgid "Always Queen" msgstr "Siempre dama" #: menus.c:757 msgid "Flash Moves" msgstr "Destello en las jugadas" #: menus.c:759 msgid "Highlight Dragging" msgstr "Iluminar arrastre" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Iluminar con flecha" #: menus.c:763 msgid "Move Sound" msgstr "Sonido en jugadas" #: menus.c:765 msgid "Periodic Updates" msgstr "Actualización periódica" #: menus.c:767 msgid "Popup Exit Message" msgstr "Mensaje de salida en venta emergente" #: menus.c:769 msgid "Show Coords" msgstr "Mostrar coordenadas" #: menus.c:770 msgid "Hide Thinking" msgstr "Ocultar cogitaciones" #: menus.c:774 msgid "Save Settings Now" msgstr "Guardar config. ahora" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Guardar config. al salir del programa" #: menus.c:780 msgid "Info XBoard" msgstr "Información XBoard" #: menus.c:781 msgid "Man XBoard" msgstr "Manual de XBoard" #: menus.c:783 msgid "XBoard Home Page" msgstr "Página web de XBoard" #: menus.c:784 msgid "On-line User Guide" msgstr "Guía del usuario en línea" #: menus.c:785 msgid "Development News" msgstr "Noticias sobre el desarrollo" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "correo-e para informar de errores" #: menus.c:825 msgid "File" msgstr "Archivo" #: menus.c:826 msgid "Edit" msgstr "Editar" #: menus.c:827 msgid "View" msgstr "Ver" #: menus.c:828 msgid "Mode" msgstr "Modo" #: menus.c:829 msgid "Action" msgstr "Acción" #: menus.c:830 msgid "Engine" msgstr "Motor" #: menus.c:831 msgid "Options" msgstr "Opciones" #: menus.c:832 msgid "Help" msgstr "Ayuda" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "nombre del motor" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "jugada" #: nengineoutput.c:156 msgid "Engine output" msgstr "Salida del motor" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" "STRIDE desajustado en nengineoutput.c\n" "¡Cambiar y recompilar!" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "Gráfica de evaluación" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "Gráfica de fallos garrafales" #: nevalgraph.c:107 msgid "Blunder" msgstr "Fallo garrafal" #: nevalgraph.c:107 msgid "Eval" msgstr "Evaluación" #: ngamelist.c:87 msgid "find position" msgstr "encontrar posición" #: ngamelist.c:88 msgid "narrow" msgstr "estrecho" #: ngamelist.c:89 msgid "thresholds" msgstr "umbrales" #: ngamelist.c:90 msgid "tags" msgstr "etiquetas" #: ngamelist.c:91 msgid "next" msgstr "siguiente" #: ngamelist.c:92 msgid "close" msgstr "cerrar" #: ngamelist.c:116 msgid "No game selected" msgstr "Ninguna partida seleccionada" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "Ya no se puede ir más adelante" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "Explorando partidas (%d)" #: ngamelist.c:211 msgid "previous page" msgstr "página anterior" #: ngamelist.c:214 msgid "next page" msgstr "página siguiente" #: ngamelist.c:217 msgid "no games matched your request" msgstr "ninguna partida responde a su búsqueda" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "%s - %d/%d partidas (%d-%d-%d)" #: ngamelist.c:284 msgid "There is no game list" msgstr "No hay lista de partidas" #: nhistory.c:109 msgid "Move list" msgstr "Lista de jugadas" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "%s: color no reconocido %s\n" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s: no se puede analizar el color de primer plano en '%s'\n" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "" "%s: no se puede analizar los nombres de los colores; desactivando colorido\n" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "ERROR: usuario desconocido %s (en carpeta %s)\n" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "La capacidad de «socket» no está configurada en" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "rcmd interno no implementado para Unix" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "pixel blanco = 0x%lx, pixel negro = 0x%lx\n" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "navegar" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "Ctrl" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "Alt" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "Mayús" #~ msgid "Common Engine..." #~ msgstr "General de los motores..." #~ msgid " (for concurrent playing of a single" #~ msgstr " (para jugar simultáneamente en un solo" #~ msgid "Match Options" #~ msgstr "Opciones del encuentro" #~ msgid "Chat box" #~ msgstr "Cuadro de charla" #~ msgid "Open Chat Window" #~ msgstr "Abrir ventana de conversación" #~ msgid "ICS ..." #~ msgstr "ICS ..." #~ msgid "Match ..." #~ msgstr "Encuentro ..." #~ msgid "%s: Can't access XPM directory %s\n" #~ msgstr "%s: No se puede acceder a la carpeta XPM %s\n" #~ msgid "Available `%s' sizes:\n" #~ msgstr "Disponibles `%s' tamaños:\n" #~ msgid "Error: No `%s' files!\n" #~ msgstr "¡Error: no hay ficheros `%s'!\n" #~ msgid "" #~ "Warning: No DIR structure found on this system --\n" #~ " Unable to autosize for XPM/XIM pieces.\n" #~ " Please report this error to %s.\n" #~ " Include system type & operating system in message.\n" #~ msgstr "" #~ "ATENCIÓN: No se ha encontrado estructura DIR en este sistema --\n" #~ " No se puede asignar tamaño automáticamente a las piezas XPM/" #~ "XIM.\n" #~ " Por favor, informe de este error a %s.\n" #~ " Incluya en su mensaje el tipo de sistema y de sistema operativo.\n" #~ msgid "Error %d loading icon image\n" #~ msgstr "Error %d cargando imagen de icono\n" #~ msgid "cancel" #~ msgstr "Cancelar" xboard-4.9.1/po/da.po0000644000175000001440000022247312747543737011320 00000000000000# Danish translation for xboard. # # Copyright (C) 2011, 2012 Free Software Foundation, Inc. # This file is distributed under the same license as the xboard package. # # Note: Jeg har foreløbig efterladt navne på varianter og uortodokse brikker mv. # uoversatte fordi jeg ikke kender dansk sprogbrug for dette om nogen. Byrial. # # Sprogbrug: # Chess engine, engine, chess program, chess machine: Disse bruges i flæng # i originalen. Er oversat til skakprogram. # Pairing engine: Paringsprogram # # Korrektur og gode forslag: # Morten Bo Johansen, dec. 2011 # Joe Dalton, feb. 2012 # # Oversætter: # Byrial Ole Jensen , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.6.0.20120304\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2012-03-06 12:27+0100\n" "Last-Translator: Byrial Ole Jensen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "%s i indstillingsfil\n" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "Forkert heltalsværdi %s" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "Ikke genkendt argument %s" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "Ingen værdi givet for argumentet %s" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Ukomplet \\-undvigesekvens i værdi for %s" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "Åbning af inkluderet fil \"%s\" mislykkedes" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Ikke genkendt boolesk argumentværdi %s" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "første" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "det andet" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "protokolversion %d er ikke understøttet" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "Du angav ikke et kørbart skakprogram" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "forkert timeControl-tilvalg %s" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "forkert searchTime-tilvalg %s" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "Varianten %s er kun understøttet i ICS-tilstand" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "Ukendt variantnavn %s" #: backend.c:1457 msgid "Starting chess program" msgstr "Starter skakprogram" #: backend.c:1480 msgid "Bad game file" msgstr "Fejl i partifil" #: backend.c:1487 msgid "Bad position file" msgstr "Fejl i stillingsfil" #: backend.c:1501 msgid "Pick new game" msgstr "Vælg nyt spil" # cycle = runde? #: backend.c:1570 #, fuzzy msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" "Du genstartede en allerede afsluttet turnering\n" "En mere cyklus vil nu blive tilføjet\n" "Partierne starter om 10 sekunder" #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "Alle partier i turneringen \"%s\" er allerede færdige eller i gang" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "Kan ikke have en match uden skakprogrammer" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "Kunne ikke åbne seriel port %s" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "Kunne ikke forbinde til vært %s, port %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "Ukendt initialMode %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "AnalyzeFile-tilstand kræver en partifil" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "Analysetilstand kræver et skakprogram" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "Analysetilstand virker ikke sammen med ICS-tilstand" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "MachineWhite-tilstand kræver et skakprogram" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "MachineWhite-tilstand virker ikke sammen med ICS-tilstand" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "MachineBlack-tilstand kræver et skakprogram" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "MachineBlack-tilstand virker ikke sammen med ICS-tilstand" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "TwoMachines-tilstand kræver et skakprogram" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "TwoMachines-tilstand virker ikke sammen med ICS-tilstand" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "Træningstilstand kræver en partifil" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "Fejl ved skrivning til ICS" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "Fejl ved læsning fra tastatur" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "Fik filafslutning fra tastatur" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "Ukendt vild type %d" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "Fejl ved skrivning til skærm" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "din modstander kommenterer: %s" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "Fejl ved tolkning af trækliste: to teksthoveder" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "Fejl ved tolkning af trækliste: indlejret" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "–" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "Ulovligt træk (afvist af ICS)" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "Forbindelse lukket af ICS" #: backend.c:4306 msgid "Error reading from ICS" msgstr "Fejl ved læsning fra ICS" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" "Fortolkning af brætstreng mislykkedes:\n" "\"%s\"" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "Parti for langt; forøg MAX_MOVES og genoversæt" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "Fejl ved tolkning af trækliste: ekstra bræt" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Kunne ikke fortolke \"%s\" fra ICS" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "say Intern fejl; forkert moveType%d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "Du kan ikke gøre dette, mens du spiller eller observerer" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "Genoversæt for at understøtte denne BOARD_RANKS eller BOARD_FILES!" #: backend.c:6858 msgid "You are playing Black" msgstr "Du spiller sort" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "Du spiller hvid" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Det er hvids tur" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Det er sorts tur" #: backend.c:6920 msgid "Displayed position is not current" msgstr "Den viste stilling er ikke den aktuelle" #: backend.c:7123 msgid "rights granted" msgstr "" #: backend.c:7123 msgid "rights revoked" msgstr "" #: backend.c:7175 msgid "Illegal move" msgstr "Ulovligt træk" #: backend.c:7255 msgid "End of game" msgstr "Slutningen af partiet" #: backend.c:7258 msgid "Incorrect move" msgstr "Ukorrekt træk" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "Træk bonde baglæns for at underforvandle" #: backend.c:7780 msgid "only marked squares are legal" msgstr "" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "Svejtserturnering afsluttet" #: backend.c:8632 msgid "could not load EGBB library" msgstr "" #: backend.c:8635 msgid "wrong EGBB version" msgstr "" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "Ikke tilladt parring fra parringsprogram" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Ulovligt træk \"%s\" fra %s skakprogram" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "Fejl i FEN modtaget fra skakprogram" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s understøtter ikke analyse" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Ulovligt træk \"%s\" (afvist af %s skakprogram)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Fejl ved start af %s skakprogram %s på %s: %s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "Tip: %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" "Ulovligt tip om træk \"%s\"\n" "fra %s skakprogram" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "Skakprogrammet accepterer dit remistilbud" #: backend.c:9687 #, fuzzy msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" "Skakprogrammet tilbyder remis\n" "Vælg Handlinger / Remis for at acceptere" #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "skrivning af analysevariant mislykkedes" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Flertydigt træk i ICS-output: \"%s\"" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Ulovligt træk i ICS-output: \"%s\"" #: backend.c:10132 msgid "Gap in move list" msgstr "Hul i trækliste" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "Variant %s understøttes ikke af %s" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr "" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "Opstartsfejl på \"%s\"" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "Venter på første skakprogram" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "Venter på andet skakprogram" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "Kunne ikke skrive turneringsfil" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" "Du kan ikke udskifte et skakprogram, mens det bruges!\n" "Afslut dets parti først." #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "Der er ikke installeret et skakprogram med det angivne navn" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" "Ændr først skakprogram ved at redigere deltagerlisten\n" "i turneringsindstillingerne" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "Du kan kun ændre et skakprogram ad gangen" #: backend.c:11170 backend.c:11319 #, fuzzy, c-format msgid "No engine %s is installed" msgstr "Der er ikke installeret et skakprogram med det angivne navn" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" "Du skal angive en turneringsfil\n" "til at gemme turneringens afvikling" #: backend.c:11200 msgid "Not enough participants" msgstr "Der er ikke nok deltagere" #: backend.c:11403 msgid "Bad tournament file" msgstr "Fejl i turneringsfil" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "Venter på andet parti/andre partier" #: backend.c:11428 msgid "No pairing engine specified" msgstr "Der er ikke noget parringsprogram specificeret" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "" #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "" #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Match %s - %s: slutscore %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Ulovligt træk: %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Flertydigt træk: %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "Kan ikke åbne \"%s\"" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "Kan ikke konstruere partiliste" #: backend.c:12574 msgid "No more games in this message" msgstr "Der er ikke flere partier i denne besked" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "Der er endnu ingen indlæste partier" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "Kan ikke gå længere tilbage" #: backend.c:13065 msgid "Game number out of range" msgstr "Partinummer findes ikke" #: backend.c:13076 msgid "Can't seek on game file" msgstr "Kan ikke spole i partifil" #: backend.c:13134 msgid "Game not found in file" msgstr "Parti ikke fundet i fil" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "Fejl i FEN-stilling i fil" #: backend.c:13423 msgid "No moves in game" msgstr "Ingen træk i partiet" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "Ingen stilling er endnu indlæst" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "Kan ikke spole i stillingsfil" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "Stilling er ikke fundet i fil" #: backend.c:13645 msgid "Black to play" msgstr "Sort i trækket" #: backend.c:13648 msgid "White to play" msgstr "Hvid i trækket" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "Venter på adgang til gemmefil" #: backend.c:13737 msgid "Saving game" msgstr "Gemmer parti" #: backend.c:13738 msgid "Bad Seek" msgstr "Søgning mislykkedes" #: backend.c:14111 msgid "Saving position" msgstr "Gemmer stilling" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" "Du har redigeret i parti-historikken.\n" "Genindlæs partiet og udfør trækket igen." #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" "Du har indtastet for mange træk.\n" "Gå tilbage til den aktuelle stilling og prøv igen." #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" "Den viste stilling er ikke den aktuelle.\n" "Gå fremad til den korrekte stilling og prøv igen." #: backend.c:14294 msgid "You have not made a move yet" msgstr "Du har ikke trukket endnu" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" "Cmail-beskeden er ikke indlæst.\n" "Brug Genindlæs CMail-besked og lav dit træk igen." #: backend.c:14320 msgid "No unfinished games" msgstr "Der er ingen uafsluttede partier" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" "Du har allerede sendt et træk.\n" "Vent indtil der kommer et træk fra din modstander.\n" "For at gensende det samme træk, tast\n" "\"cmail -remail -game %s\"\n" "på kommandolinjen." #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "Start af cmail mislykkedes" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Venter på svar fra modstander\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "Der er stadig nødvendigt at trække i partiet\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "Der er stadig nødvendigt at trække i begge partier\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "Der er stadig nødvendigt at trække i alle %d partier\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "Der er stadig nødvendigt at trække i partiet %s\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "Der er ingen uafsluttede partier\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "Klar til at sende e-mail\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Der er stadig nødvendigt at trække i partierne %s\n" #: backend.c:14656 msgid "Edit comment" msgstr "Redigér kommentar" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Redigér kommentar til %d.%s%s" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "Du observerer ikke et parti" #: backend.c:14824 msgid "It is not White's turn" msgstr "Hvid er ikke i trækket" #: backend.c:14907 msgid "It is not Black's turn" msgstr "Sort er ikke i trækket" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "Starter %s skakprogram" #: backend.c:15045 backend.c:16238 #, fuzzy msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" "Vent på din tur,\n" "eller vælg Træk nu" #: backend.c:15188 msgid "Training mode off" msgstr "Træningstilstand fra" #: backend.c:15196 msgid "Training mode on" msgstr "Træningstilstand til" #: backend.c:15199 msgid "Already at end of game" msgstr "Allerede ved slutningen af partiet" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "Advarsel: Du spiller stadig et parti" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "Advarsel: Du observerer stadig et parti" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "Advarsel: Du undersøger stadig et parti" #: backend.c:15365 msgid "Click clock to clear board" msgstr "" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "Lukker skakprogram til ICS-analyse ..." #: backend.c:15711 msgid "That square is occupied" msgstr "Det felt er besat" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "Der er ingen aktuelle tilbud ved dette træk" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "Din modstander har ikke overskredet tiden" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "Du skal trække før du tilbyder remis" #: backend.c:16220 msgid "You are not examining a game" msgstr "Du undersøger ikke et parti" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "Du kan ikke annullere variantlinje under pause" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "Det er dig som er i trækket" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 #, fuzzy msgid "Wait until your turn." msgstr "Vent til du kommer i trækket" #: backend.c:16348 msgid "No hint available" msgstr "Tip er ikke tilgængeligt" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "Partiliste ikke indlæst eller tom" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "" #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "Fejl ved skrivning til %s skakprogram" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "%s program afslutter i remisstilling (%s)" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Fejl: %s skakprogram (%s) afsluttede uventet" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Fejl ved læsning fra %s skakprogram (%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "%s skakprogram har for mange tilvalg\n" #: backend.c:17521 msgid "Displayed move is not current" msgstr "Det viste træk er ikke det aktuelle" #: backend.c:17530 msgid "Could not parse move" msgstr "Kunne ikke fortolke træk" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "Begge flag er faldet" #: backend.c:17657 msgid "White's flag fell" msgstr "Hvids flag er faldet" #: backend.c:17679 msgid "Black's flag fell" msgstr "Sorts flag er faldet" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "Det er ikke tilladt er stille på uret i auto-flag-tilstand" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "Fejl i FEN-stilling i udklipsholder" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "Fejl i polyglyt-åbningsbog" #: book.c:722 msgid "Book Fault" msgstr "Fejl i åbningsbog" #: book.c:877 msgid "Hash keys are different" msgstr "Hashnøgler er forskellige" #: book.c:1054 #, fuzzy msgid "Could not create book" msgstr "Kunne ikke fortolke træk" #: dialogs.c:287 #, fuzzy msgid "Tournament file: " msgstr "Turneringsfil:" #: dialogs.c:288 #, fuzzy msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "Synkronisér efter cyklus turnering med flere XBoard'er)" #: dialogs.c:289 msgid "Sync after round" msgstr "" #: dialogs.c:290 msgid "Sync after cycle" msgstr "" #: dialogs.c:291 msgid "Tourney participants:" msgstr "Turneringsdeltagere:" #: dialogs.c:292 msgid "Select Engine:" msgstr "Vælg skakprogram:" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "Turneringstype (0 = alle mod alle, 1 = en imod resten):" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "Antal cyklusser i turneringen (eller svejtserrunder):" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "Standard for antal partier i match (eller parring):" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "Pause imellem matchpartier (millisekunder):" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "Gem turneringspartier i:" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "Partifil med åbninger:" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "Partinummer (-1 eller -2 = automatisk forøgelse):" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "Fil med startstillinger:" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "Stillingsnummer (-1 eller -2 = automatisk forøgelse):" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "Genstart nummering efter dette antal partier (0 = aldrig):" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "Deaktivér skakprogrammets egen åbningsbog som standard" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "Betænkningstid" #: dialogs.c:312 #, fuzzy msgid "Common Engine" msgstr "Skakprogram ... Alt+Shift+U" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Generelle indstillinger" #: dialogs.c:314 msgid "Continue Later" msgstr "" #: dialogs.c:315 msgid "Replace Engine" msgstr "Udskift skakprogram" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "Opgradér skakprogram" #: dialogs.c:317 msgid "Clone Tourney" msgstr "Kopiér turnering" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "Du skal angive en eksisterende turneringsfil til at kopiere" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "" #: dialogs.c:389 #, fuzzy msgid "Tournament Options" msgstr "Lydindstillinger" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "Absolutte analysescorer" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "Næsten altid dronning (Omvejs-underforvandling)" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "Animeret trækudførelse" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "Animeret flytning" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Automatisk annoncering af tidsoverskridelse" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Automatisk vending af brættet" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "Blindskak" # Menu til indsætning af brik på brættet i babyskak mv. #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "Placér brik-menu" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "Skjul tænkning fra menneske" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Fremhæv sidste træk" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Fremhæv med pil" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Ét-klikstræk" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "Periodisk opdatering (i analysetilstand)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" # ... mens modstanderen er i trækket #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "Spekulér på næste træk" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Pop op med afslutningsbeskeder" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Pop op ved trækfejl" #: dialogs.c:429 msgid "Scores in Move List" msgstr "Scorer i trækliste" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Vis koordinater" #: dialogs.c:431 msgid "Show Target Squares" msgstr "Vis målfelter" #: dialogs.c:432 msgid "Sticky Windows" msgstr "Klæbrige vinduer" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Test lovlighed" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "Blink ved træk (0 = ingen blink):" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "Blinkhastighed (høj = hurtig):" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "Animeringshastighed (høj = langsom):" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "Zoomfaktor i evalueringsgraf:" #: dialogs.c:458 #, fuzzy msgid "Normal" msgstr "normal" #: dialogs.c:459 msgid "Makruk" msgstr "" #: dialogs.c:460 msgid "FRC" msgstr "skak960" #: dialogs.c:461 msgid "Shatranj" msgstr "" #: dialogs.c:462 msgid "Wild castle" msgstr "" #: dialogs.c:463 #, fuzzy msgid "Knightmate" msgstr "Springer" #: dialogs.c:464 msgid "No castle" msgstr "" #: dialogs.c:465 msgid "Cylinder *" msgstr "" #: dialogs.c:466 msgid "3-checks" msgstr "" #: dialogs.c:467 msgid "berolina *" msgstr "" #: dialogs.c:468 msgid "atomic" msgstr "" #: dialogs.c:469 msgid "two kings" msgstr "" #: dialogs.c:470 msgid " " msgstr "" #: dialogs.c:471 msgid "Spartan" msgstr "" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "Brætstørrelse (-1 = standard for valgt variant):" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "Antal brætrækker:" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "Antal brætlinjer:" #: dialogs.c:475 msgid "Holdings Size:" msgstr "Depotstørrelse:" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" #: dialogs.c:479 msgid "ASEAN" msgstr "" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "" #: dialogs.c:481 msgid "Seirawan" msgstr "" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "" #: dialogs.c:483 msgid "Superchess" msgstr "" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "" #: dialogs.c:485 msgid "Crazyhouse" msgstr "" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "" #: dialogs.c:487 msgid "Bughouse" msgstr "" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "" #: dialogs.c:489 msgid "Suicide" msgstr "" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "" #: dialogs.c:491 msgid "give-away" msgstr "" #: dialogs.c:492 msgid "grand (10x10)" msgstr "" #: dialogs.c:493 msgid "losers" msgstr "" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "" #: dialogs.c:495 msgid "fairy" msgstr "" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:497 msgid "mighty lion" msgstr "" #: dialogs.c:498 msgid "courier (12x8)" msgstr "" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Advarsel: det andet skakprogram (%s) understøtter ikke dette!" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "" #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" #: dialogs.c:596 msgid "New Variant" msgstr "Ny variant" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "Maksimalt antal CPU'er pr. skakprogram:" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "Polyglot-katalog:" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "Hashtabel-størrelse (MB):" #: dialogs.c:631 #, fuzzy msgid "EGTB Path:" msgstr "Sti til Nalimov-EGTB:" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "EGTB-cachestørrelse (MB):" #: dialogs.c:633 msgid "Use GUI Book" msgstr "Brug GUI's åbningsbog" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "Åbningsbogsfilnavn:" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "Åbningsbogsdybde (træk):" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "Åbningsbogvariation (0) vs. styrke (100):" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "Skakprogram nr. 1 har egen åbningsbog" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "Skakprogram nr. 2 har egen åbningsbog" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "Indstillinger for skakprogrammer" #: dialogs.c:655 msgid "Detect all Mates" msgstr "Find alle matter" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "Efterprøv resultatangivelser fra skakprogrammer" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "Remis ved utilstrækkeligt matsættende materiale" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Døm trivielle remiser (3-træks forsinkelse)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "N-træksregel:" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "N-gange gentagelser:" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "Remis efter i alt N træk:" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "Gevinst/tabs-tærskel:" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "Negér skakprogram nr. 1's score" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "Negér skakprogram nr. 2's score" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "Døm ikke-ICS partier" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "Send kommentarer fra skakprogram" #: dialogs.c:685 msgid "Auto-Comment" msgstr "Gem kommentarer til træk" #: dialogs.c:686 msgid "Auto-Observe" msgstr "Observér automatisk" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Bræt øverst ved partistart" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "Obsevér i baggrunden når der spilles" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "Andet bræt til baggrundsobservede partier" #: dialogs.c:691 msgid "Get Move List" msgstr "Hent trækliste" #: dialogs.c:692 msgid "Quiet Play" msgstr "Stille spil" #: dialogs.c:693 msgid "Seek Graph" msgstr "Søgegraf" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "Automatisk opdatering af søgegraf" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "" #: dialogs.c:696 #, fuzzy msgid "Quit after game" msgstr "Venter på andet parti/andre partier" #: dialogs.c:697 msgid "Premove" msgstr "Forhåndstræk" #: dialogs.c:698 msgid "Premove for White" msgstr "Forhåndstræk for hvid" #: dialogs.c:699 msgid "First White Move:" msgstr "Hvids første træk:" #: dialogs.c:700 msgid "Premove for Black" msgstr "Forhåndstræk for sort" #: dialogs.c:701 msgid "First Black Move:" msgstr "Sorts første træk:" #: dialogs.c:703 msgid "Alarm" msgstr "Alarm" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "Alarmtid (millisekunder):" #: dialogs.c:706 msgid "Colorize Messages" msgstr "Farv meddelelser" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "Tekstfarver for råb:" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "Tekstfarver for s-råb:" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "Tekstfarver for kanal nr. 1:" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "Tekstfarver for andre kanaler:" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "Tekstfarver for kommentar:" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "Tekstfarver for tale:" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "Tekstfarver for udfordring:" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "Tekstfarver for forespørgsel:" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "Tekstfarver for søgning:" #: dialogs.c:716 #, fuzzy msgid "Other Text Colors:" msgstr "Tekstfarver for andre kanaler:" #: dialogs.c:723 msgid "ICS Options" msgstr "ICS-indstillinger" #: dialogs.c:728 msgid "Exact position match" msgstr "Eksakt stilling" #: dialogs.c:728 msgid "Shown position is subset" msgstr "Viste stilling er en delmængde" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "Samme materiale med samme bondestruktur" #: dialogs.c:729 msgid "Same material" msgstr "Samme materiale" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "Materiale-interval (øverste halvdel af brættet valgfrit)" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "Materiale-forskel (balanceret valgfrit materiale)" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "Automatisk visning af partidata" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "Automatisk visning af kommentarer" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" "Hastighed af gennemspilning af indlæste partier\n" "(0 = øjeblikkeligt, -1 fra):" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "Sekunder pr. træk:" # Ingen grund til ikke at bruge stort begyndelsesbogstav her. #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" "\n" "Indstillinger til brug ved gennemkigning af partier:" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" "\n" "Grænseværdier for stillingsfiltrering i partiliste:" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "Stærkeste spillers rating er mindst:" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "Svageste spillers rating er mindst:" #: dialogs.c:753 msgid "No games before year:" msgstr "Ingen partier før år:" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "Mindste antal stillinger i følge ad gangen:" #: dialogs.c:756 msgid "Search mode:" msgstr "Søgemetode:" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "Match også omvendte farver" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "Match også spejlvendt stilling" #: dialogs.c:767 msgid "Load Game Options" msgstr "Indstillinger for indlæsning af parti" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "Gem partier automatisk" #: dialogs.c:780 msgid "Own Games Only" msgstr "" #: dialogs.c:781 msgid "Save Games on File:" msgstr "Gem partier i filen:" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "Gem slutstillinger i filen:" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "Event-tekst i PGN-fil:" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "Gammel gemmestil (i modsætning til PGN)" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "Brug partinumre i PGN-fil for turnering" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "Gem score/dybde-information i PGN" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "Gem ud af åbningsbog-info i PGN " #: dialogs.c:794 msgid "Save Game Options" msgstr "Indstillinger for gemning af parti" #: dialogs.c:803 msgid "No Sound" msgstr "Ingen lyd" #: dialogs.c:804 msgid "Default Beep" msgstr "Standard bip" #: dialogs.c:805 msgid "Above WAV File" msgstr "WAV-filen ovenfor" #: dialogs.c:806 msgid "Car Horn" msgstr "Bilhorn" #: dialogs.c:807 msgid "Cymbal" msgstr "Bækken" #: dialogs.c:808 msgid "Ding" msgstr "Ding" #: dialogs.c:809 msgid "Gong" msgstr "Gongon" #: dialogs.c:810 msgid "Laser" msgstr "Laser" #: dialogs.c:811 msgid "Penalty" msgstr "Straffe" #: dialogs.c:812 msgid "Phone" msgstr "Telefon" #: dialogs.c:813 msgid "Pop" msgstr "Plop" #: dialogs.c:814 msgid "Roar" msgstr "" #: dialogs.c:815 msgid "Slap" msgstr "Slag" #: dialogs.c:816 msgid "Wood Thunk" msgstr "Dunk" #: dialogs.c:818 msgid "User File" msgstr "Brugerfil" #: dialogs.c:841 msgid "User WAV File:" msgstr "Bruger WAV-fil:" #: dialogs.c:842 msgid "Sound Program:" msgstr "Lydprogram:" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "Afprøv lyd:" #: dialogs.c:844 msgid "Play" msgstr "Afspil" #: dialogs.c:845 msgid "Move:" msgstr "Træk:" #: dialogs.c:846 msgid "Win:" msgstr "Gevinst:" #: dialogs.c:847 msgid "Lose:" msgstr "Tab:" #: dialogs.c:848 msgid "Draw:" msgstr "Remis:" #: dialogs.c:849 msgid "Unfinished:" msgstr "Uafsluttet:" #: dialogs.c:850 msgid "Alarm:" msgstr "Alarm:" #: dialogs.c:851 msgid "Challenge:" msgstr "Udfodring:" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "Lydkatalog:" #: dialogs.c:854 msgid "Shout:" msgstr "Råb:" #: dialogs.c:855 msgid "S-Shout:" msgstr "S-råb:" #: dialogs.c:856 msgid "Channel:" msgstr "Kanal:" #: dialogs.c:857 msgid "Channel 1:" msgstr "Kanal 1:" #: dialogs.c:858 msgid "Tell:" msgstr "Tale:" #: dialogs.c:859 msgid "Kibitz:" msgstr "Kommentar:" #: dialogs.c:860 msgid "Request:" msgstr "Forespøgsel:" #: dialogs.c:861 msgid "Lion roar:" msgstr "" #: dialogs.c:862 msgid "Seek:" msgstr "Søgning:" #: dialogs.c:880 msgid "Sound Options" msgstr "Lydindstillinger" #: dialogs.c:896 msgid "Selectable themes:" msgstr "" #: dialogs.c:898 msgid "New name for current theme:" msgstr "" #: dialogs.c:901 msgid "White Piece Color:" msgstr "Farve for hvide brikker:" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "R" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "G" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "B" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "M" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "Farve for sorte brikker:" #: dialogs.c:917 msgid "Light Square Color:" msgstr "Farve for lyse felter:" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "Farve for mørke felter:" #: dialogs.c:929 msgid "Highlight Color:" msgstr "Farve til fremhævelse:" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "Farve til forhåndstræk:" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "Ombyt brikker som i shogi (Farvede knapper gendanner standard)" #: dialogs.c:943 msgid "Mono Mode" msgstr "Monokrom-tilstand" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "" #: dialogs.c:945 #, fuzzy msgid "Line Gap (-1 = default for board size):" msgstr "Mellemrum mellem felter (-1 = standard for brætstørrelsen):" #: dialogs.c:946 msgid "Use Board Textures" msgstr "Brug brætteksturer" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "Teksturfil for mørke felter:" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "Teksturfil for lyse felter:" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "" #: dialogs.c:950 #, fuzzy msgid "Directory with Pieces Images:" msgstr "Katalog med bitmap-brikker:" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "" #: dialogs.c:1033 msgid "Board Options" msgstr "Brætindstillinger" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "ICS-tekstmenu" #: dialogs.c:1134 msgid "clear" msgstr "ryd" #: dialogs.c:1135 msgid "save changes" msgstr "gem ændringer" # ... mens modstanderen er i trækket #: dialogs.c:1233 #, fuzzy msgid "add next move" msgstr "Spekulér på næste træk" #: dialogs.c:1234 #, fuzzy msgid "commit changes" msgstr "gem ændringer" #: dialogs.c:1257 msgid "Edit book" msgstr "Redigér åbningsbog" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Partidata" #: dialogs.c:1405 msgid "ICS input box" msgstr "ICS-inputboks" #: dialogs.c:1437 msgid "Type a move" msgstr "Tast et træk" #: dialogs.c:1463 msgid "Engine has no options" msgstr "Skakprogrammet har ingen tilvalg" #: dialogs.c:1465 msgid "Engine Settings" msgstr "Indstillinger for skakprogram" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "Vælg skakprogram fra liste:" #: dialogs.c:1509 msgid "or specify one below:" msgstr "eller specificér en herunder:" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "Kaldenavn (ikke nødvendigt):" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "Brug kaldenavnet som spillerbetegnelse i PGN-filer" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "Skakprogramkatalog:" #: dialogs.c:1513 msgid "Engine Command:" msgstr "Skakprogramkommando:" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "(Katalog vil blive udledt fra programstien hvis ikke udfyldt)" #: dialogs.c:1515 msgid "UCI" msgstr "UCI" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "WB-protokol v1 (brug ikke særlige skakprogramfunktioner)" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "Må ikke bruge GUI's åbningsbog" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "Tilføj dette skakprogram til listen" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "Brug aktuel variant med dette skakprogram" #: dialogs.c:1574 #, fuzzy msgid "Load first engine" msgstr "Indlæs skakprogram" #: dialogs.c:1580 #, fuzzy msgid "Load second engine" msgstr "Indlæs skakprogrammet som" #: dialogs.c:1603 msgid "shuffle" msgstr "bland brikker" #: dialogs.c:1604 msgid "Fischer castling" msgstr "" #: dialogs.c:1605 msgid "Start-position number:" msgstr "Startstillingsnummer:" #: dialogs.c:1606 msgid "randomize" msgstr "vælg tilfældigt" #: dialogs.c:1607 msgid "pick fixed" msgstr "vælg bestemt" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Nyt blandet parti" #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "" #: dialogs.c:1677 msgid "Message (above board):" msgstr "" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "" #: dialogs.c:1695 #, fuzzy msgid "Edit comments:" msgstr "Redigér kommentar" #: dialogs.c:1701 #, fuzzy msgid "Move history / Engine Output:" msgstr "Output fra skakprogram" #: dialogs.c:1707 #, fuzzy msgid "Game list:" msgstr "Partiliste ..." #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "" #: dialogs.c:1768 msgid "Fonts" msgstr "" # Stort begyndelsesbogstav med vilje #: dialogs.c:1791 msgid "classical" msgstr "Klassisk" # Stort begyndelsesbogstav med vilje #: dialogs.c:1792 msgid "incremental" msgstr "Tillægstid" # Stort begyndelsesbogstav med vilje #: dialogs.c:1793 msgid "fixed max" msgstr "Maks. pr. træk" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "" #: dialogs.c:1795 msgid "Moves per session:" msgstr "Træk pr. tidsperiode:" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "Tid fra start (minutter):" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "Tillægstid eller maks. pr. træk (sekunder):" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "Tidsforkortelses-faktorer:" #: dialogs.c:1799 msgid "Engine #1" msgstr "Skakprogram nr. 1" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "Skakprogram nr. 2 / menneske" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "Ubrugt" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "Fejl ved skrivning til skakprogram" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "Annullér" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "Konge" #: dialogs.c:1972 msgid "Captain" msgstr "" #: dialogs.c:1973 msgid "Lieutenant" msgstr "" #: dialogs.c:1974 msgid "General" msgstr "" #: dialogs.c:1975 msgid "Warlord" msgstr "" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Springer" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Løber" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Tårn" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Dronning" #: dialogs.c:1988 msgid "Lion" msgstr "" #: dialogs.c:1992 msgid "Defer" msgstr "" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Bondeforvandling" #: dialogs.c:2050 msgid "Chats:" msgstr "" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 #, fuzzy msgid "New Chat" msgstr "Ny variant" #: dialogs.c:2058 msgid "Chat partner:" msgstr "" #: dialogs.c:2059 msgid "End Chat" msgstr "" #: dialogs.c:2060 msgid "Hide" msgstr "" #: dialogs.c:2287 #, fuzzy msgid "ICS Interaction" msgstr "ICS-indstillinger" #: dialogs.c:2372 msgid "factory" msgstr "standard" #: dialogs.c:2373 msgid "up" msgstr "op" #: dialogs.c:2374 msgid "down" msgstr "ned" #: dialogs.c:2393 msgid "No tag selected" msgstr "Ingen overskrift valgt" #: dialogs.c:2424 msgid "Game-list options" msgstr "Indstillinger for partiliste" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Fejl" #: dialogs.c:2545 msgid "Fatal Error" msgstr "Fatal fejl" #: dialogs.c:2545 msgid "Exiting" msgstr "Afslutter" #: dialogs.c:2556 msgid "Information" msgstr "Meddelelse" #: dialogs.c:2563 msgid "Note" msgstr "Notits" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Hvid" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Bonde" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Tomt felt" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Ryd bræt" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Sort" #: dialogs.c:2827 #, fuzzy msgid "_File" msgstr "Fil" #: dialogs.c:2828 #, fuzzy msgid "_Edit" msgstr "Redigér" #: dialogs.c:2829 #, fuzzy msgid "_View" msgstr "Vis" #: dialogs.c:2830 #, fuzzy msgid "_Mode" msgstr "Tilstand" #: dialogs.c:2831 #, fuzzy msgid "_Action" msgstr "Handlinger" #: dialogs.c:2832 #, fuzzy msgid "E_ngine" msgstr "Skakprogram" #: dialogs.c:2833 #, fuzzy msgid "_Options" msgstr "Indstillinger" #: dialogs.c:2834 #, fuzzy msgid "_Help" msgstr "Hjælp" #: dialogs.c:2844 msgid "<<" msgstr "" #: dialogs.c:2845 msgid "<" msgstr "" #: dialogs.c:2847 msgid ">" msgstr "" #: dialogs.c:2848 msgid ">>" msgstr "" #: dialogs.c:3136 #, fuzzy msgid "Directories:" msgstr "Lydkatalog:" #: dialogs.c:3137 #, fuzzy msgid "Files:" msgstr "Fil" #: dialogs.c:3138 msgid "by name" msgstr "" #: dialogs.c:3139 msgid "by type" msgstr "" #: dialogs.c:3142 #, fuzzy msgid "Filename:" msgstr "Filter:" #: dialogs.c:3143 #, fuzzy msgid "New directory" msgstr "Skakprogramkatalog:" #: dialogs.c:3144 #, fuzzy msgid "File type:" msgstr "Filter:" #: dialogs.c:3219 #, fuzzy msgid "Contents of" msgstr "Kommentarer" #: dialogs.c:3245 #, fuzzy msgid " next page" msgstr "næste side" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "Output fra skakprogram" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "%s (%d reversibelt træk)" msgstr[1] "%s (%d reversible træk)" # NPS = Nodes pr. second # SPS = Stillinger pr. sekund (i motoranalyse) #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "SPS" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "Læser partifil (%d)" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: kan ikke cd til CHESSDIR: " #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "Åbning af filen \"%s\" mislykkedes\n" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Genoversæt med større BOARD_RANKS eller BOARD_FILES for at understøtte denne " "størrelse" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: forkert boardSize-syntaks %s\n" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: ikke genkendt boardSize-navn %s\n" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: for få farver tilgængelige; prøver monokrom tilstand\n" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Kan ikke lave skrifttypegruppe for %s.\n" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: Ingen skrifttyper matcher mønstret %s\n" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "Kan ikke åbne midlertidig fil" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "Åbning af fil mislykkedes" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "Gennemse" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "o.k." #: menus.c:136 msgid "Load game file name?" msgstr "Filnavn for indlæsning af parti?" #: menus.c:183 msgid "Load position file name?" msgstr "Filnavn for indlæsning af stilling?" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "Filnavn for gemning af parti?" #: menus.c:198 msgid "Save position file name?" msgstr "Filnavn for gemning af stilling?" #: menus.c:355 msgid " (with Zippy code)" msgstr " (med Zippy-kode)" #: menus.c:360 #, fuzzy, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Ændringer Copyright 1992-2012 Free Software Foundation\n" "Ændringer Copyright 2005 Alessandro Scotti\n" "\n" "%s er frit programmel og er uden nogen form for garanti; se filen COPYING " "for mere information. \n" "Besøg XBoard på nettet på http://www.gnu.org/software/xboard/\n" "Se de nyeste funktioner på http://www.gnu.org/software/xboard/whats_new." "html\n" "\n" "Rapportér fejl via e-mail til \n" "Rapportér fejl i den danske oversættelse til \n" "\n" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "Om Xboard" #: menus.c:390 #, fuzzy msgid "Registered Engines" msgstr "Første skakprogram" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 #, fuzzy msgid "New Game" msgstr "Nyt blandet parti" #: menus.c:613 #, fuzzy msgid "New Shuffle Game..." msgstr "Nyt blandet parti ..." #: menus.c:614 #, fuzzy msgid "New Variant..." msgstr "Ny variant" #: menus.c:616 #, fuzzy msgid "Load Game" msgstr "Indlæs parti ..." #: menus.c:617 #, fuzzy msgid "Load Position" msgstr "find stilling" #: menus.c:618 #, fuzzy msgid "Next Position" msgstr "Næste stilling Shift+PgDn" #: menus.c:619 #, fuzzy msgid "Prev Position" msgstr "Gemmer stilling" #: menus.c:621 #, fuzzy msgid "Save Game" msgstr "Gem parti ..." #: menus.c:622 #, fuzzy msgid "Save Position" msgstr "Gemmer stilling" #: menus.c:623 #, fuzzy msgid "Save Selected Games" msgstr "Gem parti ..." #: menus.c:624 #, fuzzy msgid "Save Games as Book" msgstr "Gem partier i filen:" #: menus.c:626 msgid "Mail Move" msgstr "Send træk med e-post" #: menus.c:627 msgid "Reload CMail Message" msgstr "Genindlæs CMail-besked" #: menus.c:629 msgid "Quit " msgstr "" #: menus.c:634 #, fuzzy msgid "Copy Game" msgstr "Kopiér partiliste" #: menus.c:635 #, fuzzy msgid "Copy Position" msgstr "Kopiér stilling Ctrl+Shift+C" #: menus.c:636 msgid "Copy Game List" msgstr "Kopiér partiliste" #: menus.c:638 #, fuzzy msgid "Paste Game" msgstr "Indsæt parti Ctrl+V" #: menus.c:639 #, fuzzy msgid "Paste Position" msgstr "Indsæt stilling Ctrl+Shift+V" #: menus.c:641 menus.c:686 #, fuzzy msgid "Edit Game" msgstr "Redigér kommentar" #: menus.c:642 menus.c:687 #, fuzzy msgid "Edit Position" msgstr "find stilling" # Partibeskrivelse i PGN-fil #: menus.c:643 msgid "Edit Tags" msgstr "Redigér partidata" #: menus.c:644 msgid "Edit Comment" msgstr "Redigér kommentar" #: menus.c:645 msgid "Edit Book" msgstr "Redigér åbningsbog" #: menus.c:647 msgid "Revert" msgstr "" #: menus.c:648 msgid "Annotate" msgstr "Kommentér" #: menus.c:649 #, fuzzy msgid "Truncate Game" msgstr "Afkort partiet End" #: menus.c:651 msgid "Backward" msgstr "" #: menus.c:652 msgid "Forward" msgstr "" #: menus.c:653 #, fuzzy msgid "Back to Start" msgstr "Sort i trækket" #: menus.c:654 #, fuzzy msgid "Forward to End" msgstr "Frem til enden Alt+End" #: menus.c:659 #, fuzzy msgid "Flip View" msgstr "Automatisk vending af brættet" #: menus.c:662 #, fuzzy msgid "Move History" msgstr "Trækliste" #: menus.c:663 #, fuzzy msgid "Evaluation Graph" msgstr "Evalueringsgraf" #: menus.c:664 #, fuzzy msgid "Game List" msgstr "Partiliste ..." #: menus.c:667 msgid "Comments" msgstr "Kommentarer" #: menus.c:668 msgid "ICS Input Box" msgstr "ICS-inputboks" #: menus.c:669 msgid "ICS/Chat Console" msgstr "" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Redigér kommentar" #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Indstillinger for skakprogram nr. 1 ..." #: menus.c:674 msgid "Board..." msgstr "Bræt..." #: menus.c:675 #, fuzzy msgid "Fonts..." msgstr "Lyde ..." #: menus.c:676 msgid "Game List Tags..." msgstr "Partidata-overskrifter ..." #: menus.c:681 #, fuzzy msgid "Machine White" msgstr "Skakprogram har hvid Ctrl+W" #: menus.c:682 #, fuzzy msgid "Machine Black" msgstr "Skakprogrammatch" #: menus.c:683 #, fuzzy msgid "Two Machines" msgstr "To skakprogrammer Ctrl+T" #: menus.c:684 #, fuzzy msgid "Analysis Mode" msgstr "Analysetilstand Ctrl+A" #: menus.c:685 #, fuzzy msgid "Analyze Game" msgstr "Analysér parti Ctrl+G" #: menus.c:688 msgid "Training" msgstr "Træning" #: menus.c:689 msgid "ICS Client" msgstr "ICS-klient" #: menus.c:691 msgid "Machine Match" msgstr "Skakprogrammatch" #: menus.c:692 msgid "Pause" msgstr "" #: menus.c:697 msgid "Accept" msgstr "" #: menus.c:698 msgid "Decline" msgstr "" #: menus.c:699 msgid "Rematch" msgstr "" #: menus.c:701 #, fuzzy msgid "Call Flag" msgstr "Annoncér tidsoverskridelse F5" #: menus.c:702 #, fuzzy msgid "Draw" msgstr "Remis:" #: menus.c:703 msgid "Adjourn" msgstr "" #: menus.c:704 msgid "Abort" msgstr "" #: menus.c:705 msgid "Resign" msgstr "" #: menus.c:707 #, fuzzy msgid "Stop Observing" msgstr "Stop observation F10" #: menus.c:708 #, fuzzy msgid "Stop Examining" msgstr "Stop undersøgelse F11" #: menus.c:709 msgid "Upload to Examine" msgstr "Overfør til undersøgelse" #: menus.c:711 msgid "Adjudicate to White" msgstr "Døm hvid gevinst" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Døm sort gevinst" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Døm remis" #: menus.c:718 #, fuzzy msgid "Edit Engine List..." msgstr "Indstillinger for skakprogram nr. 1 ..." #: menus.c:720 #, fuzzy msgid "Load New 1st Engine..." msgstr "Indlæs nyt skakprogram ..." #: menus.c:721 #, fuzzy msgid "Load New 2nd Engine..." msgstr "Indlæs nyt skakprogram ..." #: menus.c:723 #, fuzzy msgid "Engine #1 Settings..." msgstr "Indstillinger for skakprogram nr. 1 ..." #: menus.c:724 #, fuzzy msgid "Engine #2 Settings..." msgstr "Indstillinger for skakprogram nr. 2 ..." #: menus.c:725 #, fuzzy msgid "Common Settings..." msgstr "Indstillinger for skakprogrammer" #: menus.c:727 msgid "Hint" msgstr "Tip" #: menus.c:728 msgid "Book" msgstr "Åbningsbog" #: menus.c:730 #, fuzzy msgid "Move Now" msgstr "Lyd ved træk" #: menus.c:731 #, fuzzy msgid "Retract Move" msgstr "Annullér træk Ctrl+X" #: menus.c:736 #, fuzzy msgid "Mute all Sounds" msgstr "Lyd ved træk" #: menus.c:739 #, fuzzy msgid "General..." msgstr "Generelle ..." #: menus.c:741 #, fuzzy msgid "Time Control..." msgstr "Betænkningstid" #: menus.c:742 #, fuzzy msgid "Adjudications..." msgstr "Afgørelser ... Alt+Shift+J" #: menus.c:743 msgid "ICS..." msgstr "" #: menus.c:744 msgid "Tournament..." msgstr "" #: menus.c:745 #, fuzzy msgid "Load Game..." msgstr "Indlæs parti ..." #: menus.c:746 #, fuzzy msgid "Save Game..." msgstr "Gem parti ..." #: menus.c:747 #, fuzzy msgid "Game List..." msgstr "Partiliste ..." #: menus.c:748 #, fuzzy msgid "Sounds..." msgstr "Lyde ..." #: menus.c:751 msgid "Always Queen" msgstr "" #: menus.c:757 msgid "Flash Moves" msgstr "Blink ved træk" #: menus.c:759 msgid "Highlight Dragging" msgstr "Fremhæv flytning" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Fremhæv med pil" #: menus.c:763 msgid "Move Sound" msgstr "Lyd ved træk" #: menus.c:765 msgid "Periodic Updates" msgstr "Periodisk opdatering" #: menus.c:767 msgid "Popup Exit Message" msgstr "Pop op med afslutningsbeskeder" #: menus.c:769 msgid "Show Coords" msgstr "Vis koordinater" #: menus.c:770 #, fuzzy msgid "Hide Thinking" msgstr "Skjul tænkning fra menneske" #: menus.c:774 msgid "Save Settings Now" msgstr "Gem indstillinger nu" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Gem indstillinger ved afslutning" #: menus.c:780 msgid "Info XBoard" msgstr "Info XBoard" #: menus.c:781 #, fuzzy msgid "Man XBoard" msgstr "Man XBoard F1" #: menus.c:783 msgid "XBoard Home Page" msgstr "XBoards hjemmeside (engelsk)" #: menus.c:784 msgid "On-line User Guide" msgstr "Online brugervejledning (engelsk)" #: menus.c:785 msgid "Development News" msgstr "Nyheder i denne version (engelsk)" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "E-mail fejlrapport" #: menus.c:825 msgid "File" msgstr "Fil" #: menus.c:826 msgid "Edit" msgstr "Redigér" #: menus.c:827 msgid "View" msgstr "Vis" #: menus.c:828 msgid "Mode" msgstr "Tilstand" #: menus.c:829 msgid "Action" msgstr "Handlinger" #: menus.c:830 msgid "Engine" msgstr "Skakprogram" #: menus.c:831 msgid "Options" msgstr "Indstillinger" #: menus.c:832 msgid "Help" msgstr "Hjælp" #: nengineoutput.c:79 nengineoutput.c:87 #, fuzzy msgid "engine name" msgstr "Skakprogram nr. 1" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 #, fuzzy msgid "move" msgstr "Forhåndstræk" #: nengineoutput.c:156 msgid "Engine output" msgstr "Output fra skakprogram" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "Evalueringsgraf" #: nevalgraph.c:69 #, fuzzy msgid "Blunder graph" msgstr "Evalueringsgraf" #: nevalgraph.c:107 msgid "Blunder" msgstr "" #: nevalgraph.c:107 msgid "Eval" msgstr "" #: ngamelist.c:87 msgid "find position" msgstr "find stilling" #: ngamelist.c:88 msgid "narrow" msgstr "" #: ngamelist.c:89 msgid "thresholds" msgstr "grænseværdier" #: ngamelist.c:90 #, fuzzy msgid "tags" msgstr "Partidata" #: ngamelist.c:91 msgid "next" msgstr "næste" #: ngamelist.c:92 msgid "close" msgstr "luk" #: ngamelist.c:116 msgid "No game selected" msgstr "Der er ikke valgt et parti" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "Kan ikke gå længere fremad" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "Skanner gennem partier (%d)" #: ngamelist.c:211 msgid "previous page" msgstr "forrige side" #: ngamelist.c:214 msgid "next page" msgstr "næste side" #: ngamelist.c:217 msgid "no games matched your request" msgstr "ingen partier svarer til din forespørgsel" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "%s - %d/%d partier (%d-%d-%d)" #: ngamelist.c:284 msgid "There is no game list" msgstr "Der er ingen partiliste" #: nhistory.c:109 msgid "Move list" msgstr "Trækliste" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "%s: ikke genkendt farve %s\n" #: usystem.c:231 #, fuzzy, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s: kan ikke fortolke forgrundsfarve i \"%s\"\n" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "%s: kan ikke fortolke farvenavne; deaktiverer farvning\n" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "FEJL: Ukendt bruger %s (i stien %s)\n" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "Er ikke konfigureret med sokkelunderstøttelse" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "intern rcmd er ikke implementeret til Unix" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "hvid pixel = 0x%lx, sort pixel = 0x%lx\n" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "gennemse" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "" #, fuzzy #~ msgid "Common Engine..." #~ msgstr "Skakprogram ... Alt+Shift+U" #, fuzzy #~ msgid " (for concurrent playing of a single" #~ msgstr "Synkronisér efter runde (for samtidig afvikling af en" #~ msgid "Match Options" #~ msgstr "Matchindstillinger" #~ msgid "ICS ..." #~ msgstr "ICS ..." #~ msgid "Match ..." #~ msgstr "Match ..." #~ msgid "%s: Can't access XPM directory %s\n" #~ msgstr "%s: Har ikke adgang til XPM-katalog %s\n" #~ msgid "Available `%s' sizes:\n" #~ msgstr "Tilgængelige \"%s\"-størrelser:\n" #~ msgid "Error: No `%s' files!\n" #~ msgstr "Fejl: Ingen \"%s\"-filer!\n" #~ msgid "" #~ "Warning: No DIR structure found on this system --\n" #~ " Unable to autosize for XPM/XIM pieces.\n" #~ " Please report this error to %s.\n" #~ " Include system type & operating system in message.\n" #~ msgstr "" #~ "Advarsel: Ingen DIR-struktur fundet på dette system --\n" #~ " Kan ikke vælge størrelse for XPM/XIM-brikker.\n" #~ " Rappotér venligst denne fejl til %s.\n" #~ " Inkludér systemtype og styresystem i beskeden.\n" #~ msgid "Error %d loading icon image\n" #~ msgstr "Fejl %d ved indlæsning af ikonbillede\n" #~ msgid "cancel" #~ msgstr "annullér" #~ msgid "recognized '%s' (%d) as variant %s\n" #~ msgstr "genkendte \"%s\" (%d) som variant %s\n" #~ msgid "Ratings from header: W %d, B %d\n" #~ msgstr "Ratinger fra teksthovede: H %d, S %d\n" #~ msgid "Parsing board: %s\n" #~ msgstr "Fortolker bræt: %s\n" #~ msgid "Found unexpected active ICS engine analyze \n" #~ msgstr "Fandt uventet aktivt skakprogram til ICS-analyse\n" #~ msgid "ICS engine analyze starting... \n" #~ msgstr "Starter skakprogram til ICS-analyse ...\n" #~ msgid "" #~ "resolved %s at pixel size %d\n" #~ " to %s\n" #~ msgstr "" #~ "løste %s ved pixelstørrelse %d\n" #~ " til %s\n" #~ msgid "New Game Ctrl+N" #~ msgstr "Nyt parti Ctrl+N" #~ msgid "New Variant ... Alt+Shift+V" #~ msgstr "Ny variant ... Alt-shift+V" #~ msgid "Load Game Ctrl+O" #~ msgstr "Indlæs parti Ctrl+O" #~ msgid "Load Position Ctrl+Shift+O" #~ msgstr "Indlæs stilling Ctrl+Shift+O" #~ msgid "Prev Position Shift+PgUp" #~ msgstr "Forrige stilling Shift+PgUp" #~ msgid "Save Game Ctrl+S" #~ msgstr "Gem parti Ctrl+S" #~ msgid "Save Position Ctrl+Shift+S" #~ msgstr "Gem stilling Ctrl+Shift+S" #~ msgid "Quit Ctr+Q" #~ msgstr "Afslut Ctrl+Q" #~ msgid "Copy Game Ctrl+C" #~ msgstr "Kopiér parti Ctrl+C" #~ msgid "Edit Game Ctrl+E" #~ msgstr "Redigér parti Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "Redigér stilling Ctrl+Shift+E" #~ msgid "Revert Home" #~ msgstr "Annullér variantlinje Home" #~ msgid "Backward Alt+Left" #~ msgstr "Tilbage Alt+Venstre" #~ msgid "Forward Alt+Right" #~ msgstr "Fremad Alt+Højre" #~ msgid "Back to Start Alt+Home" #~ msgstr "Tilbage til start Alt+Home" #~ msgid "Flip View F2" #~ msgstr "Vend brættet F2" #~ msgid "Engine Output Alt+Shift+O" #~ msgstr "Output fra skakprogram Alt+Shift+O" #~ msgid "Move History Alt+Shift+H" #~ msgstr "Trækliste Alt+Shift+H" #~ msgid "Evaluation Graph Alt+Shift+E" #~ msgstr "Evalueringsgraf Alt+Shift+E" #~ msgid "Game List Alt+Shift+G" #~ msgstr "Partiliste Alt+Shift+G" #~ msgid "Machine Black Ctrl+B" #~ msgstr "Skakprogram har sort Ctrl+B" #~ msgid "Edit Game Ctrl+E" #~ msgstr "Redigér parti Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "Redigér stilling Ctrl+Shift+E" #~ msgid "Pause Pause" #~ msgstr "Pause Pause" #~ msgid "Accept F3" #~ msgstr "Godkend F3" #~ msgid "Decline F4" #~ msgstr "Afvis F4" #~ msgid "Rematch F12" #~ msgstr "Ny match F12" #~ msgid "Draw F6" #~ msgstr "Remis F6" #~ msgid "Adjourn F7" #~ msgstr "Udsæt partiet F7" #~ msgid "Abort F8" #~ msgstr "Annullér partiet F8" #~ msgid "Resign F9" #~ msgstr "Opgiv F9" #~ msgid "Move Now Ctrl+M" #~ msgstr "Træk nu Ctrl+M" #~ msgid "Time Control ... Alt+Shift+T" #~ msgstr "Betænkningstid ... Alt+Shift+T" #~ msgid "Always Queen Ctrl+Shift+Q" #~ msgstr "Altid dronning Ctrl+Shift+Q" #~ msgid "Animate Moving Ctrl+Shift+A" #~ msgstr "Animeret flytning Ctrl+Shift+A" #~ msgid "Auto Flag Ctrl+Shift+F" #~ msgstr "Automatisk tidsoverskridelse Ctrl+Shift+F" #~ msgid "Ponder Next Move Ctrl+Shift+P" #~ msgstr "Spekulér på næste træk Ctrl+Shift+P" #~ msgid "Hide Thinking Ctrl+Shift+H" #~ msgstr "Skjul tænkning Ctrl+Shift+H" #~ msgid "Test Legality Ctrl+Shift+L" #~ msgstr "Test lovlighed Ctrl+Shift+L" #~ msgid "" #~ "WARNING: variants with un-orthodox\n" #~ "pieces only have built-in bitmaps\n" #~ "for -boardSize middling, bulky and\n" #~ "petite, and substitute king or amazon\n" #~ "for missing bitmaps. (See manual.)" #~ msgstr "" #~ "ADVARSEL: varianter med uortodokse\n" #~ "brikker har kun indbyggede bitmaps\n" #~ "for -boardSize middling, bulky og\n" #~ "petite, og bruger konge eller amazone\n" #~ "for manglende bitmaps. (Se manualen.)" #~ msgid "Directory with Pixmap Pieces:" #~ msgstr "Katalog med pixmap-brikker:" #~ msgid "Error expanding path name \"%s\"\n" #~ msgstr "Fejl ved udfoldning af stinavn \"%s\"\n" #~ msgid "" #~ "XBoard square size (hint): %d\n" #~ "%s fulldir:%s:\n" #~ msgstr "" #~ "XBoard feltstørrelse (tip): %d\n" #~ "%s-fuldt katalog: %s:\n" #~ msgid "Closest %s size: %d\n" #~ msgstr "Nærmeste %s størrelse: %d\n" #~ msgid "%s: error loading XIM!\n" #~ msgstr "%s: fejl ved indlæsning af XIM!\n" #~ msgid "XIM pieces cannot be used in monochrome mode" #~ msgstr "XIM-brikker kan ikke bruges i monokrom-tilstand" #~ msgid "" #~ "\n" #~ "Loading XIMs...\n" #~ msgstr "" #~ "\n" #~ "Indlæser XIM'er ...\n" #~ msgid "(File:%s:) " #~ msgstr "(Fil:%s:) " #~ msgid "light square " #~ msgstr "lyst felt " #~ msgid "dark square " #~ msgstr "mørkt felt " #~ msgid "Done.\n" #~ msgstr "Udført.\n" #~ msgid "XPM pieces cannot be used in monochrome mode" #~ msgstr "XPM-brikker kan ikke bruges i monokrom-tilstand" #~ msgid "No builtin XPM pieces of size %d\n" #~ msgstr "Der er ingen indbyggede XPM-brikker af størrelse %d\n" #~ msgid "Error %d loading XPM image \"%s\"\n" #~ msgstr "Error %d ved indlæsning af XPM-billede \"%s\"\n" #~ msgid "" #~ "\n" #~ "Loading XPMs...\n" #~ msgstr "" #~ "\n" #~ "Indlæser XPM'er ...\n" #~ msgid "(Replace by File:%s:) " #~ msgstr "(Erstatter med fil: %s) " #~ msgid "Error %d loading XPM file \"%s\"\n" #~ msgstr "Error %d ved indlæsning af XPM-fil \"%s\"\n" #~ msgid "Can't open bitmap file %s" #~ msgstr "Kan ikke åbne bitmapfil %s" #~ msgid "Invalid bitmap in file %s" #~ msgstr "Ukorrekt bitmap i fil %s" #~ msgid "Ran out of memory reading bitmap file %s" #~ msgstr "Ikke nok hukommelse til at læse bitmapfil %s" #~ msgid "Unknown XReadBitmapFile error %d on file %s" #~ msgstr "Ukendt XReadBitmapFile-fejl %d på fil %s" #~ msgid "%s: %s...using built-in\n" #~ msgstr "%s: %s ... bruger indbygget\n" #~ msgid "%s: Bitmap %s is %dx%d, not %dx%d...using built-in\n" #~ msgstr "%s: Bitmap %s er %dx%d, ikke %dx%d ... bruger indbygget\n" #~ msgid "Filter on extensions:" #~ msgstr "Filter for filendelser:" #~ msgid "Pathname:" #~ msgstr "Stinavn:" #~ msgid "XsraSelFile: can't get current directory" #~ msgstr "XsraSelFile: Kan ikke hente det aktuelle katalog" #~ msgid "%s: titleWidget geometry error %d %d %d %d %d\n" #~ msgstr "%s: titleWidget-geometrifejl %d %d %d %d %d\n" #~ msgid "%s: messageWidget geometry error %d %d %d %d %d\n" #~ msgstr "%s: messageWidget-geometrifejl %d %d %d %d %d\n" #~ msgid "Drop" #~ msgstr "Placér" #~ msgid "could not open: " #~ msgstr "kunne ikke åbne: " #~ msgid "Can't open file" #~ msgstr "Kan ikke åbne fil" #~ msgid "Promotion" #~ msgstr "Bondeforvandling" #~ msgid "Promote to what?" #~ msgstr "Hvad skal bonden forvandles til?" #~ msgid "ok" #~ msgstr "o.k." #~ msgid "AskQuestionProc needed 4 parameters, got %d\n" #~ msgstr "AskQuestionProc skal have 4 parametre, men fik %d\n" #~ msgid "enter" #~ msgstr "udfør" #~ msgid "This feature is experimental" #~ msgstr "Denne funktion er eksperimental" #~ msgid "filtertext" #~ msgstr "filtertekst" #~ msgid "apply" #~ msgstr "anvend" #~ msgid "load" #~ msgstr "indlæs" #~ msgid "prev" #~ msgstr "forrige" #~ msgid "Second Engine" #~ msgstr "Andet skakprogram" #~ msgid "AnimateMove: piece %d hops from %d,%d to %d,%d \n" #~ msgstr "AnimateMove: brik %d hopper fra %d,%d til %d,%d\n" #~ msgid "AnimateMove: piece %d slides from %d,%d to %d,%d \n" #~ msgstr "AnimateMove: brik %d glider fra %d,%d til %d,%d\n" #~ msgid "Highlight Dragging (Show Move Targets)" #~ msgstr "Fremhæv flytning (vis trækmål)" xboard-4.9.1/po/zh_HK.po0000644000175000001440000016454712747543737011746 00000000000000# XBoard -- a graphical chessboard for X # Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts. # Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc. # This file is distributed under the same license as the XBoard package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: GNU xboard master-20110411\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: zh_HK\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "通訊協定版本 %d 不被支持" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "非法的\"timeControl\"(時間控制)選項 %s" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "非法的\"searchTime\"(搜尋時間)選項 %s" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "變體 %s 只在ICS模式下支持" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "未知的變體名 %s" #: backend.c:1457 msgid "Starting chess program" msgstr "啟動國際象棋程式" #: backend.c:1480 msgid "Bad game file" msgstr "棋局檔案錯誤" #: backend.c:1487 msgid "Bad position file" msgstr "盤面檔案錯誤" #: backend.c:1501 msgid "Pick new game" msgstr "" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "沒有象棋程式時無法進行比賽" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "無法打開通訊連接埠 %s" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "無法連接主機 %s 連接埠 %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "未知的\"initialMode\"(初始模式)選項 %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "\"AnalyzeFile\"(分析檔案)模式必須指定一個棋局檔案" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "\"Analysis\"(分析)模式必須啟動國際象棋引擎" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "\"Analysis\"(分析)模式無法在ICS模式下工作" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "\"MachineWhite\"(電腦執紅)模式必須啟動國際象棋引擎" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "\"MachineWhite\"(電腦執紅)模式無法在ICS模式下運行" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "\"MachineBlack\"(電腦執黑)模式必須啟動國際象棋引擎" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "\"MachineBlack\"(電腦執黑)模式無法在ICS模式下運行" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "\"TwoMachines\"(分析)模式必須啟動國際象棋引擎" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "\"TwoMachines\"(電腦對弈)模式無法在ICS模式下運行" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "\"Training\"(訓練)模式必須指定一個棋局檔案" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "發送訊息給ICS時出錯" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "讀取鍵盤時出錯" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "讀取鍵盤時遇到檔案尾" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "發送訊息給顯示器時出錯" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "讀取著法時出錯,出現兩個開頭" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "讀取著法時出錯,巢狀錯誤" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "連接被ICS關閉" #: backend.c:4306 msgid "Error reading from ICS" msgstr "讀取ICS訊息時出錯" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "棋局太長,需要增加\"MAX_MOVES\"並重新編譯" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "讀取著法時出錯,超出棋盤" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "無法解析從ICS讀到的著法\"%s\"" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "say 內部錯誤,非法的\"moveType\"(著法類型) %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" #: backend.c:6858 msgid "You are playing Black" msgstr "你在執黑" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "你在執紅" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "輪到紅方走棋" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "輪到黑方走棋" #: backend.c:6920 msgid "Displayed position is not current" msgstr "顯示的盤面不是當前盤面" #: backend.c:7123 msgid "rights granted" msgstr "" #: backend.c:7123 msgid "rights revoked" msgstr "" #: backend.c:7175 msgid "Illegal move" msgstr "著法錯誤" #: backend.c:7255 msgid "End of game" msgstr "棋局結束" #: backend.c:7258 msgid "Incorrect move" msgstr "著法錯誤" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "" #: backend.c:7780 msgid "only marked squares are legal" msgstr "" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "" #: backend.c:8632 msgid "could not load EGBB library" msgstr "" #: backend.c:8635 msgid "wrong EGBB version" msgstr "" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "從%s機器讀到不合法著法\"%s\"" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s 不支持分析功能" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "不合法著法\"%s\" (%s國際象棋程式拒絕接受該著法)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "無法啟動%s國際象棋程式 %s(在主機 %s 上),%s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "提示 %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "電腦同意和棋" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "ICS輸出不明確的著法\"%s\"" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "ICS輸出不明確的著法\"%s\"" #: backend.c:10132 msgid "Gap in move list" msgstr "著法斷開" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "變體 %s 不被 %s 所支持" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr "" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "無法啟動'%s'" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "等待第一個國際象棋程式" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "等待第二個國際象棋程式" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" #: backend.c:11200 msgid "Not enough participants" msgstr "" #: backend.c:11403 #, fuzzy msgid "Bad tournament file" msgstr "棋局檔案錯誤" #: backend.c:11415 #, fuzzy msgid "Waiting for other game(s)" msgstr "等待第一個國際象棋程式" #: backend.c:11428 msgid "No pairing engine specified" msgstr "" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "" #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "" #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "比賽 %s vs. %s: 最終比分 %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "不合法著法 %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "不明確的著法 %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "無法打開\"%s\"" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "無法建立棋局列表" #: backend.c:12574 msgid "No more games in this message" msgstr "這條訊息不包含更多的棋局" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "尚未有棋局載入" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "無法再後退了" #: backend.c:13065 msgid "Game number out of range" msgstr "棋局數量超出範圍" #: backend.c:13076 msgid "Can't seek on game file" msgstr "無法搜尋棋局檔案" #: backend.c:13134 msgid "Game not found in file" msgstr "檔案中沒有找到棋局" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "檔案中的FEN盤面錯誤" #: backend.c:13423 msgid "No moves in game" msgstr "棋局中沒有著法" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "尚未有盤面載入" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "無法搜尋盤面檔案" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "檔案中沒有找到盤面" #: backend.c:13645 msgid "Black to play" msgstr "輪到黑方走棋" #: backend.c:13648 msgid "White to play" msgstr "輪到紅方走棋" #: backend.c:13735 backend.c:14109 #, fuzzy msgid "Waiting for access to save file" msgstr "等待第二個國際象棋程式" #: backend.c:13737 msgid "Saving game" msgstr "" #: backend.c:13738 msgid "Bad Seek" msgstr "" #: backend.c:14111 #, fuzzy msgid "Saving position" msgstr "盤面檔案錯誤" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" #: backend.c:14294 msgid "You have not made a move yet" msgstr "你尚未走棋" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" #: backend.c:14320 msgid "No unfinished games" msgstr "不存在未完成棋局" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "呼叫cmail失敗" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "等待對手回應\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "本棋局仍需走棋\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "兩棋局皆仍需走棋\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "所有 %d 棋局皆仍需走棋\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "棋局 %s 仍需走棋\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "不存在未完成棋局\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "準備送信就緒\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "棋局 %s 仍需走棋\n" #: backend.c:14656 msgid "Edit comment" msgstr "編輯註解" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "編輯註解 %d.%s%s" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "" #: backend.c:14824 msgid "It is not White's turn" msgstr "沒有輪到紅方走棋" #: backend.c:14907 msgid "It is not Black's turn" msgstr "沒有輪到黑方走棋" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "" #: backend.c:15045 backend.c:16238 #, fuzzy msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "等待對手走棋" #: backend.c:15188 msgid "Training mode off" msgstr "訓練模式已關閉" #: backend.c:15196 msgid "Training mode on" msgstr "訓練模式已打開" #: backend.c:15199 msgid "Already at end of game" msgstr "棋局已經結束" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "注意:你正在進行棋局" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "注意:你正在觀棋棋局" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "注意:你正在研究棋局" #: backend.c:15365 msgid "Click clock to clear board" msgstr "" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "" #: backend.c:15711 msgid "That square is occupied" msgstr "格子已有棋子" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "該著法沒有待定的提議" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "對手沒有超時" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "必須走完棋才能提和" #: backend.c:16220 msgid "You are not examining a game" msgstr "沒有分析棋局" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "暫停時不能復原棋局" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "輪到你走棋" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 #, fuzzy msgid "Wait until your turn." msgstr "等待對手走棋" #: backend.c:16348 msgid "No hint available" msgstr "沒有可用的提示" #: backend.c:16363 backend.c:16394 ngamelist.c:365 #, fuzzy msgid "Game list not loaded or empty" msgstr "尚未有棋局載入" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "" #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "發送訊息到%s國際象棋程式時出錯" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "錯誤:%s國際象棋程式(%s)異常終止" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "從%s國際象棋程式(%s)接收訊息時出錯" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "" #: backend.c:17521 msgid "Displayed move is not current" msgstr "顯示的著法不是當前著法" #: backend.c:17530 msgid "Could not parse move" msgstr "無法解析著法" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "雙方都超時了" #: backend.c:17657 msgid "White's flag fell" msgstr "紅方超時" #: backend.c:17679 msgid "Black's flag fell" msgstr "黑方超時" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "剪貼簿的FEN盤面錯誤" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "" #: book.c:722 msgid "Book Fault" msgstr "" #: book.c:877 msgid "Hash keys are different" msgstr "" #: book.c:1054 #, fuzzy msgid "Could not create book" msgstr "無法解析著法" #: dialogs.c:287 #, fuzzy msgid "Tournament file: " msgstr "封盤(J) F7" #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "" #: dialogs.c:289 msgid "Sync after round" msgstr "" #: dialogs.c:290 msgid "Sync after cycle" msgstr "" #: dialogs.c:291 msgid "Tourney participants:" msgstr "" #: dialogs.c:292 msgid "Select Engine:" msgstr "" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "" #: dialogs.c:302 #, fuzzy msgid "Default Number of Games in Match (or Pairing):" msgstr "預設比賽對局數" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "" #: dialogs.c:304 #, fuzzy msgid "Save Tourney Games on:" msgstr "儲存棋局選項" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "" #: dialogs.c:312 #, fuzzy msgid "Common Engine" msgstr "通用引擎設定(E)... Alt+Shift+U" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "一般選項" #: dialogs.c:314 msgid "Continue Later" msgstr "" #: dialogs.c:315 msgid "Replace Engine" msgstr "" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "" #: dialogs.c:317 msgid "Clone Tourney" msgstr "" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "" #: dialogs.c:389 #, fuzzy msgid "Tournament Options" msgstr "聲音" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "動畫拖曳(D)" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "動畫走棋(A)" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "自動超時判負(F) Ctrl+Shift+F" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "自動翻轉棋盤(V)" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "盲棋(B)" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "與人對弈時隱藏思考細節" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "標記上一著法(M)" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "用箭頭突出移動" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "單擊移動(M)" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "定期更新(分析模式)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "同步思考(N)" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "離開時提示(P)" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "提示錯誤著法(E)" #: dialogs.c:429 #, fuzzy msgid "Scores in Move List" msgstr "取得著法列表(G)" #: dialogs.c:430 msgid "Show Coordinates" msgstr "顯示坐標(C)" #: dialogs.c:431 msgid "Show Target Squares" msgstr "" #: dialogs.c:432 msgid "Sticky Windows" msgstr "" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "檢查著法合理性(L) Cl+Sh+L" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "" #: dialogs.c:438 #, fuzzy msgid "Zoom factor in Evaluation Graph:" msgstr "審局圖" #: dialogs.c:458 msgid "Normal" msgstr "" #: dialogs.c:459 msgid "Makruk" msgstr "" #: dialogs.c:460 msgid "FRC" msgstr "" #: dialogs.c:461 msgid "Shatranj" msgstr "" #: dialogs.c:462 msgid "Wild castle" msgstr "" #: dialogs.c:463 #, fuzzy msgid "Knightmate" msgstr "馬" #: dialogs.c:464 msgid "No castle" msgstr "" #: dialogs.c:465 msgid "Cylinder *" msgstr "" #: dialogs.c:466 msgid "3-checks" msgstr "" #: dialogs.c:467 msgid "berolina *" msgstr "" #: dialogs.c:468 msgid "atomic" msgstr "" #: dialogs.c:469 msgid "two kings" msgstr "" #: dialogs.c:470 msgid " " msgstr "" #: dialogs.c:471 msgid "Spartan" msgstr "" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "" #: dialogs.c:475 msgid "Holdings Size:" msgstr "" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" #: dialogs.c:479 msgid "ASEAN" msgstr "" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "" #: dialogs.c:481 msgid "Seirawan" msgstr "" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "" #: dialogs.c:483 msgid "Superchess" msgstr "" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "" #: dialogs.c:485 msgid "Crazyhouse" msgstr "" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "" #: dialogs.c:487 msgid "Bughouse" msgstr "" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "" #: dialogs.c:489 msgid "Suicide" msgstr "" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "" #: dialogs.c:491 msgid "give-away" msgstr "" #: dialogs.c:492 msgid "grand (10x10)" msgstr "" #: dialogs.c:493 msgid "losers" msgstr "" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "" #: dialogs.c:495 msgid "fairy" msgstr "" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:497 msgid "mighty lion" msgstr "" #: dialogs.c:498 msgid "courier (12x8)" msgstr "" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "警告: 第二個引擎(%s) 不支持此!" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "" #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" #: dialogs.c:596 msgid "New Variant" msgstr "變種" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "最大CPU數" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "雜湊表大小(MB)" #: dialogs.c:631 #, fuzzy msgid "EGTB Path:" msgstr "EGTB 路徑" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "EGTB 大小(MB)" #: dialogs.c:633 msgid "Use GUI Book" msgstr "" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "庫著法深度" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "庫變例" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "引擎1有自用庫" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "通用引擎設定" #: dialogs.c:655 msgid "Detect all Mates" msgstr "檢測將殺(M)" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "驗證引擎聲明(V)" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "子力不足時判和(I)" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "簡易和棋判決(T)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "幾著後判和" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "輸/贏判決門檻" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "引擎 #1 是絕對分數" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "引擎 #2 是絕對分數" #: dialogs.c:671 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "裁決紅贏 (W)" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "自動\"kibitz\"(A)" #: dialogs.c:685 msgid "Auto-Comment" msgstr "自動註解(A)" #: dialogs.c:686 msgid "Auto-Observe" msgstr "自動觀棋(O)" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "自動改變棋盤大小(R)" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "背景觀察(v)" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "雙棋盤(D)" #: dialogs.c:691 msgid "Get Move List" msgstr "取得著法列表(G)" #: dialogs.c:692 msgid "Quiet Play" msgstr "落子無聲(Q)" #: dialogs.c:693 msgid "Seek Graph" msgstr "可選對手圖表(k)" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "自動刷新圖表(R)" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "" #: dialogs.c:696 #, fuzzy msgid "Quit after game" msgstr "等待第一個國際象棋程式" #: dialogs.c:697 msgid "Premove" msgstr "預先走棋(P)" #: dialogs.c:698 msgid "Premove for White" msgstr "" #: dialogs.c:699 msgid "First White Move:" msgstr "紅方先走(W)" #: dialogs.c:700 msgid "Premove for Black" msgstr "" #: dialogs.c:701 msgid "First Black Move:" msgstr "黑方先走(B)" #: dialogs.c:703 msgid "Alarm" msgstr "提示" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "" #: dialogs.c:706 msgid "Colorize Messages" msgstr "" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "" #: dialogs.c:723 msgid "ICS Options" msgstr "ICS設定" #: dialogs.c:728 msgid "Exact position match" msgstr "" #: dialogs.c:728 msgid "Shown position is subset" msgstr "" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "" #: dialogs.c:729 msgid "Same material" msgstr "" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "" #: dialogs.c:753 #, fuzzy msgid "No games before year:" msgstr "尚未有棋局載入" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "" #: dialogs.c:756 msgid "Search mode:" msgstr "" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "" #: dialogs.c:767 msgid "Load Game Options" msgstr "載入棋局選項" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "" #: dialogs.c:780 msgid "Own Games Only" msgstr "" #: dialogs.c:781 msgid "Save Games on File:" msgstr "" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "" #: dialogs.c:794 msgid "Save Game Options" msgstr "儲存棋局選項" #: dialogs.c:803 msgid "No Sound" msgstr "無聲" #: dialogs.c:804 msgid "Default Beep" msgstr "預設聲音" #: dialogs.c:805 msgid "Above WAV File" msgstr "" #: dialogs.c:806 msgid "Car Horn" msgstr "" #: dialogs.c:807 msgid "Cymbal" msgstr "" #: dialogs.c:808 msgid "Ding" msgstr "" #: dialogs.c:809 msgid "Gong" msgstr "" #: dialogs.c:810 msgid "Laser" msgstr "" #: dialogs.c:811 msgid "Penalty" msgstr "" #: dialogs.c:812 msgid "Phone" msgstr "" #: dialogs.c:813 msgid "Pop" msgstr "" #: dialogs.c:814 msgid "Roar" msgstr "" #: dialogs.c:815 msgid "Slap" msgstr "" #: dialogs.c:816 msgid "Wood Thunk" msgstr "" #: dialogs.c:818 msgid "User File" msgstr "" #: dialogs.c:841 msgid "User WAV File:" msgstr "" #: dialogs.c:842 msgid "Sound Program:" msgstr "" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "" #: dialogs.c:844 msgid "Play" msgstr "播放" #: dialogs.c:845 msgid "Move:" msgstr "" #: dialogs.c:846 msgid "Win:" msgstr "" #: dialogs.c:847 msgid "Lose:" msgstr "" #: dialogs.c:848 msgid "Draw:" msgstr "" #: dialogs.c:849 msgid "Unfinished:" msgstr "" #: dialogs.c:850 msgid "Alarm:" msgstr "" #: dialogs.c:851 msgid "Challenge:" msgstr "" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "" #: dialogs.c:854 msgid "Shout:" msgstr "" #: dialogs.c:855 msgid "S-Shout:" msgstr "" #: dialogs.c:856 msgid "Channel:" msgstr "" #: dialogs.c:857 msgid "Channel 1:" msgstr "" #: dialogs.c:858 msgid "Tell:" msgstr "" #: dialogs.c:859 msgid "Kibitz:" msgstr "" #: dialogs.c:860 msgid "Request:" msgstr "" #: dialogs.c:861 msgid "Lion roar:" msgstr "" #: dialogs.c:862 msgid "Seek:" msgstr "" #: dialogs.c:880 msgid "Sound Options" msgstr "聲音" #: dialogs.c:896 msgid "Selectable themes:" msgstr "" #: dialogs.c:898 msgid "New name for current theme:" msgstr "" #: dialogs.c:901 msgid "White Piece Color:" msgstr "" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "黑子" #: dialogs.c:917 msgid "Light Square Color:" msgstr "白格" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "黑格" #: dialogs.c:929 msgid "Highlight Color:" msgstr "格子標記" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "預先走棋標記" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" #: dialogs.c:943 msgid "Mono Mode" msgstr "黑白" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "" #: dialogs.c:946 msgid "Use Board Textures" msgstr "" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "" #: dialogs.c:1033 msgid "Board Options" msgstr "棋盤選項" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "" #: dialogs.c:1134 msgid "clear" msgstr "" #: dialogs.c:1135 msgid "save changes" msgstr "" #: dialogs.c:1233 #, fuzzy msgid "add next move" msgstr "同步思考(N)" #: dialogs.c:1234 msgid "commit changes" msgstr "" #: dialogs.c:1257 #, fuzzy msgid "Edit book" msgstr "編輯(E)" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "編輯標籤(T)" #: dialogs.c:1405 msgid "ICS input box" msgstr "" #: dialogs.c:1437 msgid "Type a move" msgstr "" #: dialogs.c:1463 #, fuzzy msgid "Engine has no options" msgstr "引擎1有自用庫" #: dialogs.c:1465 msgid "Engine Settings" msgstr "" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "" #: dialogs.c:1509 msgid "or specify one below:" msgstr "" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "" #: dialogs.c:1513 msgid "Engine Command:" msgstr "" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "" #: dialogs.c:1515 msgid "UCI" msgstr "" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "" #: dialogs.c:1574 msgid "Load first engine" msgstr "" #: dialogs.c:1580 msgid "Load second engine" msgstr "" #: dialogs.c:1603 msgid "shuffle" msgstr "" #: dialogs.c:1604 msgid "Fischer castling" msgstr "" #: dialogs.c:1605 msgid "Start-position number:" msgstr "啟動位置號碼(S)" #: dialogs.c:1606 #, fuzzy msgid "randomize" msgstr "隨機" #: dialogs.c:1607 msgid "pick fixed" msgstr "" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "洗牌遊戲(u)..." #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "" #: dialogs.c:1677 msgid "Message (above board):" msgstr "" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "" #: dialogs.c:1695 #, fuzzy msgid "Edit comments:" msgstr "編輯註解" #: dialogs.c:1701 #, fuzzy msgid "Move history / Engine Output:" msgstr "引擎輸出" #: dialogs.c:1707 #, fuzzy msgid "Game list:" msgstr "遊戲列表..." #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "" #: dialogs.c:1768 msgid "Fonts" msgstr "" #: dialogs.c:1791 msgid "classical" msgstr "" #: dialogs.c:1792 msgid "incremental" msgstr "" #: dialogs.c:1793 msgid "fixed max" msgstr "" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "" #: dialogs.c:1795 msgid "Moves per session:" msgstr "" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "" #: dialogs.c:1798 #, fuzzy msgid "Time-Odds factors:" msgstr "時間倍數" #: dialogs.c:1799 #, fuzzy msgid "Engine #1" msgstr "引擎輸出" #: dialogs.c:1800 #, fuzzy msgid "Engine #2 / Human" msgstr "引擎1有自用庫" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "發送訊息給國際象棋程式時出錯" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 #, fuzzy msgid "Cancel" msgstr "取消(C)" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "王" #: dialogs.c:1972 msgid "Captain" msgstr "" #: dialogs.c:1973 msgid "Lieutenant" msgstr "" #: dialogs.c:1974 msgid "General" msgstr "一般選項(G)..." #: dialogs.c:1975 msgid "Warlord" msgstr "" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "馬" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "象" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "車" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "國師" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "宰相" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "后" #: dialogs.c:1988 msgid "Lion" msgstr "" #: dialogs.c:1992 msgid "Defer" msgstr "" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "升變" #: dialogs.c:2050 msgid "Chats:" msgstr "" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 #, fuzzy msgid "New Chat" msgstr "變種" #: dialogs.c:2058 msgid "Chat partner:" msgstr "" #: dialogs.c:2059 msgid "End Chat" msgstr "" #: dialogs.c:2060 msgid "Hide" msgstr "" #: dialogs.c:2287 #, fuzzy msgid "ICS Interaction" msgstr "ICS設定" #: dialogs.c:2372 msgid "factory" msgstr "" #: dialogs.c:2373 msgid "up" msgstr "向上" #: dialogs.c:2374 msgid "down" msgstr "向下" #: dialogs.c:2393 msgid "No tag selected" msgstr "" #: dialogs.c:2424 #, fuzzy msgid "Game-list options" msgstr "載入棋局選項" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "錯誤" #: dialogs.c:2545 msgid "Fatal Error" msgstr "嚴重錯誤" #: dialogs.c:2545 msgid "Exiting" msgstr "離開" #: dialogs.c:2556 msgid "Information" msgstr "資訊" #: dialogs.c:2563 msgid "Note" msgstr "註解" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "紅方" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "兵" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "象" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "炮" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "降級" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "清空格子" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "清空棋盤" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "黑方" #: dialogs.c:2827 #, fuzzy msgid "_File" msgstr "檔案(F)" #: dialogs.c:2828 #, fuzzy msgid "_Edit" msgstr "編輯(E)" #: dialogs.c:2829 msgid "_View" msgstr "" #: dialogs.c:2830 #, fuzzy msgid "_Mode" msgstr "模式(M)" #: dialogs.c:2831 #, fuzzy msgid "_Action" msgstr "行為(A)" #: dialogs.c:2832 #, fuzzy msgid "E_ngine" msgstr "引擎輸出" #: dialogs.c:2833 #, fuzzy msgid "_Options" msgstr "選項(O)" #: dialogs.c:2834 #, fuzzy msgid "_Help" msgstr "說明(H)" #: dialogs.c:2844 msgid "<<" msgstr "" #: dialogs.c:2845 msgid "<" msgstr "" #: dialogs.c:2847 msgid ">" msgstr "" #: dialogs.c:2848 msgid ">>" msgstr "" #: dialogs.c:3136 msgid "Directories:" msgstr "" #: dialogs.c:3137 #, fuzzy msgid "Files:" msgstr "檔案(F)" #: dialogs.c:3138 msgid "by name" msgstr "" #: dialogs.c:3139 msgid "by type" msgstr "" #: dialogs.c:3142 #, fuzzy msgid "Filename:" msgstr "過濾器" #: dialogs.c:3143 msgid "New directory" msgstr "" #: dialogs.c:3144 #, fuzzy msgid "File type:" msgstr "過濾器" #: dialogs.c:3219 #, fuzzy msgid "Contents of" msgstr "編輯註解(C) *.*" #: dialogs.c:3245 msgid " next page" msgstr "" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" #: engineoutput.c:112 menus.c:661 #, fuzzy, c-format msgid "Engine Output" msgstr "引擎輸出" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "" msgstr[1] "" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "NPS" #: gamelist.c:379 #, fuzzy, c-format msgid "Reading game file (%d)" msgstr "棋局檔案錯誤" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "" #: gtk/xboard.c:2495 #, fuzzy msgid "Failed to open file" msgstr "呼叫cmail失敗" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "確定" #: menus.c:136 msgid "Load game file name?" msgstr "" #: menus.c:183 msgid "Load position file name?" msgstr "" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "" #: menus.c:198 msgid "Save position file name?" msgstr "" #: menus.c:355 msgid " (with Zippy code)" msgstr "" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "關於XBoard(A)" #: menus.c:390 #, fuzzy msgid "Registered Engines" msgstr "引擎 #1 是絕對分數" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 #, fuzzy msgid "New Game" msgstr "洗牌遊戲(u)..." #: menus.c:613 #, fuzzy msgid "New Shuffle Game..." msgstr "洗牌遊戲(u)..." #: menus.c:614 #, fuzzy msgid "New Variant..." msgstr "變種" #: menus.c:616 #, fuzzy msgid "Load Game" msgstr "載入棋局選項(L)... Alt+Shift+L" #: menus.c:617 #, fuzzy msgid "Load Position" msgstr "盤面檔案錯誤" #: menus.c:618 #, fuzzy msgid "Next Position" msgstr "盤面檔案錯誤" #: menus.c:619 #, fuzzy msgid "Prev Position" msgstr "盤面檔案錯誤" #: menus.c:621 #, fuzzy msgid "Save Game" msgstr "儲存棋局選項(S)... Alt+Shift+S" #: menus.c:622 #, fuzzy msgid "Save Position" msgstr "盤面檔案錯誤" #: menus.c:623 #, fuzzy msgid "Save Selected Games" msgstr "儲存棋局選項(S)... Alt+Shift+S" #: menus.c:624 #, fuzzy msgid "Save Games as Book" msgstr "儲存棋局選項(S)... Alt+Shift+S" #: menus.c:626 msgid "Mail Move" msgstr "" #: menus.c:627 msgid "Reload CMail Message" msgstr "" #: menus.c:629 msgid "Quit " msgstr "" #: menus.c:634 #, fuzzy msgid "Copy Game" msgstr "複製遊戲列表到剪貼簿" #: menus.c:635 #, fuzzy msgid "Copy Position" msgstr "複製局面到剪貼簿(Y) Ctrl+Shift+C" #: menus.c:636 msgid "Copy Game List" msgstr "複製遊戲列表到剪貼簿" #: menus.c:638 #, fuzzy msgid "Paste Game" msgstr "貼上棋局自剪貼簿(P) Ctrl+V" #: menus.c:639 #, fuzzy msgid "Paste Position" msgstr "從剪貼簿貼上局面(T) Ctrl+Shift+V" #: menus.c:641 menus.c:686 #, fuzzy msgid "Edit Game" msgstr "編輯註解" #: menus.c:642 menus.c:687 #, fuzzy msgid "Edit Position" msgstr "盤面檔案錯誤" #: menus.c:643 msgid "Edit Tags" msgstr "編輯標籤(T)" #: menus.c:644 msgid "Edit Comment" msgstr "編輯註解(C)..." #: menus.c:645 #, fuzzy msgid "Edit Book" msgstr "開局庫(B)..." #: menus.c:647 msgid "Revert" msgstr "" #: menus.c:648 msgid "Annotate" msgstr "註解(A)" #: menus.c:649 #, fuzzy msgid "Truncate Game" msgstr "截斷後面的著法(T)" #: menus.c:651 msgid "Backward" msgstr "" #: menus.c:652 msgid "Forward" msgstr "" #: menus.c:653 #, fuzzy msgid "Back to Start" msgstr "輪到黑方走棋" #: menus.c:654 #, fuzzy msgid "Forward to End" msgstr "最後局面(E) Alt+End" #: menus.c:659 #, fuzzy msgid "Flip View" msgstr "自動翻轉棋盤(V)" #: menus.c:662 #, fuzzy msgid "Move History" msgstr "取得著法列表(G)" #: menus.c:663 #, fuzzy msgid "Evaluation Graph" msgstr "審局圖" #: menus.c:664 #, fuzzy msgid "Game List" msgstr "遊戲列表..." #: menus.c:667 msgid "Comments" msgstr "編輯註解(C) *.*" #: menus.c:668 msgid "ICS Input Box" msgstr "" #: menus.c:669 msgid "ICS/Chat Console" msgstr "" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "編輯註解(C)..." #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "引擎 #1 設定" #: menus.c:674 msgid "Board..." msgstr "棋盤選項(B)..." #: menus.c:675 #, fuzzy msgid "Fonts..." msgstr "聲音選項(D)..." #: menus.c:676 msgid "Game List Tags..." msgstr "遊戲列表..." #: menus.c:681 #, fuzzy msgid "Machine White" msgstr "電腦執紅(W) Ctrl+W" #: menus.c:682 #, fuzzy msgid "Machine Black" msgstr "電腦比賽(M)" #: menus.c:683 #, fuzzy msgid "Two Machines" msgstr "電腦對弈(M) Ctrl+T" #: menus.c:684 #, fuzzy msgid "Analysis Mode" msgstr "分析模式(A) Ctrl+A" #: menus.c:685 #, fuzzy msgid "Analyze Game" msgstr "分析檔案(F) Ctrl+F" #: menus.c:688 msgid "Training" msgstr "訓練(N)" #: menus.c:689 msgid "ICS Client" msgstr "ICS客戶端" #: menus.c:691 msgid "Machine Match" msgstr "電腦比賽(M)" #: menus.c:692 msgid "Pause" msgstr "" #: menus.c:697 msgid "Accept" msgstr "" #: menus.c:698 msgid "Decline" msgstr "" #: menus.c:699 msgid "Rematch" msgstr "" #: menus.c:701 #, fuzzy msgid "Call Flag" msgstr "超時判負(F) F5" #: menus.c:702 msgid "Draw" msgstr "" #: menus.c:703 msgid "Adjourn" msgstr "" #: menus.c:704 msgid "Abort" msgstr "" #: menus.c:705 msgid "Resign" msgstr "" #: menus.c:707 #, fuzzy msgid "Stop Observing" msgstr "停止觀棋(O) F10" #: menus.c:708 #, fuzzy msgid "Stop Examining" msgstr "停止研究(X) F11" #: menus.c:709 msgid "Upload to Examine" msgstr "上傳檢查(U)" #: menus.c:711 msgid "Adjudicate to White" msgstr "裁決紅贏 (W)" #: menus.c:712 msgid "Adjudicate to Black" msgstr "裁決黑贏 (B)" #: menus.c:713 msgid "Adjudicate Draw" msgstr "提請仲裁(D)" #: menus.c:718 #, fuzzy msgid "Edit Engine List..." msgstr "引擎 #1 設定" #: menus.c:720 msgid "Load New 1st Engine..." msgstr "" #: menus.c:721 #, fuzzy msgid "Load New 2nd Engine..." msgstr "通用引擎設定(E)... Alt+Shift+U" #: menus.c:723 #, fuzzy msgid "Engine #1 Settings..." msgstr "引擎 #1 設定" #: menus.c:724 #, fuzzy msgid "Engine #2 Settings..." msgstr "引擎 #2 設定" #: menus.c:725 #, fuzzy msgid "Common Settings..." msgstr "通用引擎設定" #: menus.c:727 msgid "Hint" msgstr "提示(H)..." #: menus.c:728 msgid "Book" msgstr "開局庫(B)..." #: menus.c:730 msgid "Move Now" msgstr "" #: menus.c:731 #, fuzzy msgid "Retract Move" msgstr "悔棋(R) Ctrl+X" #: menus.c:736 msgid "Mute all Sounds" msgstr "" #: menus.c:739 #, fuzzy msgid "General..." msgstr "一般選項(G)..." #: menus.c:741 #, fuzzy msgid "Time Control..." msgstr "時間設定(T)... Alt+Shift+T" #: menus.c:742 #, fuzzy msgid "Adjudications..." msgstr "判決(j)... Alt+Shift+J" #: menus.c:743 msgid "ICS..." msgstr "" #: menus.c:744 msgid "Tournament..." msgstr "" #: menus.c:745 #, fuzzy msgid "Load Game..." msgstr "載入棋局選項(L)... Alt+Shift+L" #: menus.c:746 #, fuzzy msgid "Save Game..." msgstr "儲存棋局選項(S)... Alt+Shift+S" #: menus.c:747 #, fuzzy msgid "Game List..." msgstr "遊戲列表..." #: menus.c:748 #, fuzzy msgid "Sounds..." msgstr "聲音選項(D)..." #: menus.c:751 msgid "Always Queen" msgstr "" #: menus.c:757 msgid "Flash Moves" msgstr "" #: menus.c:759 msgid "Highlight Dragging" msgstr "拖曳醒目提示(H)" #: menus.c:762 msgid "Highlight With Arrow" msgstr "用箭頭突出移動" #: menus.c:763 msgid "Move Sound" msgstr "" #: menus.c:765 msgid "Periodic Updates" msgstr "定期更新(U)" #: menus.c:767 msgid "Popup Exit Message" msgstr "離開時提示(P)" #: menus.c:769 msgid "Show Coords" msgstr "顯示坐標(C)" #: menus.c:770 #, fuzzy msgid "Hide Thinking" msgstr "與人對弈時隱藏思考細節" #: menus.c:774 msgid "Save Settings Now" msgstr "立即儲存設定(N)" #: menus.c:775 msgid "Save Settings on Exit" msgstr "離開時儲存設定(X)" #: menus.c:780 msgid "Info XBoard" msgstr "" #: menus.c:781 #, fuzzy msgid "Man XBoard" msgstr "關於XBoard(A)" #: menus.c:783 msgid "XBoard Home Page" msgstr "" #: menus.c:784 msgid "On-line User Guide" msgstr "" #: menus.c:785 msgid "Development News" msgstr "" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "" #: menus.c:825 msgid "File" msgstr "檔案(F)" #: menus.c:826 msgid "Edit" msgstr "編輯(E)" #: menus.c:827 msgid "View" msgstr "" #: menus.c:828 msgid "Mode" msgstr "模式(M)" #: menus.c:829 msgid "Action" msgstr "行為(A)" #: menus.c:830 msgid "Engine" msgstr "" #: menus.c:831 msgid "Options" msgstr "選項(O)" #: menus.c:832 msgid "Help" msgstr "說明(H)" #: nengineoutput.c:79 nengineoutput.c:87 #, fuzzy msgid "engine name" msgstr "引擎輸出" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 #, fuzzy msgid "move" msgstr "著法" #: nengineoutput.c:156 msgid "Engine output" msgstr "引擎輸出" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "審局圖" #: nevalgraph.c:69 #, fuzzy msgid "Blunder graph" msgstr "審局圖" #: nevalgraph.c:107 msgid "Blunder" msgstr "" #: nevalgraph.c:107 msgid "Eval" msgstr "" #: ngamelist.c:87 #, fuzzy msgid "find position" msgstr "盤面檔案錯誤" #: ngamelist.c:88 msgid "narrow" msgstr "" #: ngamelist.c:89 msgid "thresholds" msgstr "" #: ngamelist.c:90 #, fuzzy msgid "tags" msgstr "編輯標籤(T)" #: ngamelist.c:91 msgid "next" msgstr "" #: ngamelist.c:92 msgid "close" msgstr "" #: ngamelist.c:116 msgid "No game selected" msgstr "沒有選中棋局" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "無法再前進了" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "" #: ngamelist.c:211 msgid "previous page" msgstr "" #: ngamelist.c:214 msgid "next page" msgstr "" #: ngamelist.c:217 msgid "no games matched your request" msgstr "" #: ngamelist.c:219 #, fuzzy, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "比賽 %s vs. %s: 最終比分 %d-%d-%d" #: ngamelist.c:284 msgid "There is no game list" msgstr "沒有棋局列表" #: nhistory.c:109 msgid "Move list" msgstr "" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "" #, fuzzy #~ msgid "Common Engine..." #~ msgstr "通用引擎設定(E)... Alt+Shift+U" #~ msgid "ICS ..." #~ msgstr "ICS選項..." #~ msgid "cancel" #~ msgstr "取消(C)" #~ msgid "New Game Ctrl+N" #~ msgstr "開新棋局(N) Ctrl+N" #~ msgid "New Variant ... Alt+Shift+V" #~ msgstr "新變種(V)... Alt+Shift+V" #~ msgid "Load Game Ctrl+O" #~ msgstr "載入棋局(L)... Ctrl+O" #~ msgid "Load Position Ctrl+Shift+O" #~ msgstr "載入局面(O)... Ctrl+Shift+O" #~ msgid "Save Game Ctrl+S" #~ msgstr "儲存棋局(S)... Ctrl+S" #~ msgid "Save Position Ctrl+Shift+S" #~ msgstr "儲存局面(A)... Ctrl+Shift+S" #~ msgid "Quit Ctr+Q" #~ msgstr "離開(Q)" #~ msgid "Copy Game Ctrl+C" #~ msgstr "複製棋局到剪貼簿(C) Ctrl+C" #~ msgid "Edit Game Ctrl+E" #~ msgstr "編輯棋局(E) Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "編輯局面(d) Ctrl+Shift+E" #~ msgid "Revert Home" #~ msgstr "恢復(V)" #~ msgid "Backward Alt+Left" #~ msgstr "下一著(B) Alt+Left" #~ msgid "Forward Alt+Right" #~ msgstr "上一著(F) Alt+Right" #~ msgid "Back to Start Alt+Home" #~ msgstr "起始局面(S) Alt+Home" #~ msgid "Flip View F2" #~ msgstr "翻轉棋盤(V) F2" #~ msgid "Engine Output Alt+Shift+O" #~ msgstr "顯示引擎輸出 Alt+Shift+O" #~ msgid "Move History Alt+Shift+H" #~ msgstr "顯示歷史著法 Alt+Shift+H" #~ msgid "Evaluation Graph Alt+Shift+E" #~ msgstr "顯示評價圖 Alt+Shift+E" #~ msgid "Game List Alt+Shift+G" #~ msgstr "顯示棋局列表(L) Alt+Shift+G" #~ msgid "Machine Black Ctrl+B" #~ msgstr "電腦執黑(B) Ctrl+B" #~ msgid "Edit Game Ctrl+E" #~ msgstr "編輯棋局(E) Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "編輯局面(d) Ctrl+Shift+E" #~ msgid "Pause Pause" #~ msgstr "暫停(P) Pause" #~ msgid "Accept F3" #~ msgstr "接受(A) F3" #~ msgid "Decline F4" #~ msgstr "拒絕(C) F4" #~ msgid "Rematch F12" #~ msgstr "重賽(M) F12" #~ msgid "Draw F6" #~ msgstr "提和(D) F6" #~ msgid "Adjourn F7" #~ msgstr "封盤(J) F7" #~ msgid "Abort F8" #~ msgstr "中止(B) F8" #~ msgid "Resign F9" #~ msgstr "認輸(R) F9" #~ msgid "Move Now Ctrl+M" #~ msgstr "立即走棋(M) Ctrl+M" #~ msgid "Always Queen Ctrl+Shift+Q" #~ msgstr "總是升變為皇后(Q) Ctrl+Shift+Q" #~ msgid "Animate Moving Ctrl+Shift+A" #~ msgstr "動畫走棋(A) Ctrl+Shift+A" #~ msgid "Auto Flag Ctrl+Shift+F" #~ msgstr "自動超時判負(F) Ctrl+Shift+F" #~ msgid "Ponder Next Move Ctrl+Shift+P" #~ msgstr "同步思考(N) Ctrl+Shift+P" #~ msgid "Hide Thinking Ctrl+Shift+H" #~ msgstr "隱藏引擎思考 Ctrl+Shift+H" #~ msgid "Test Legality Ctrl+Shift+L" #~ msgstr "檢查著法合理性(L) Cl+Sh+L" #~ msgid "Drop" #~ msgstr "取消" #, fuzzy #~ msgid "could not open: " #~ msgstr "無法解析著法" #~ msgid "Promotion" #~ msgstr "升變" #~ msgid "ok" #~ msgstr "確定" #~ msgid "Highlight Dragging (Show Move Targets)" #~ msgstr "拖曳醒目提示(H)" #~ msgid "White " #~ msgstr "紅方 " #~ msgid "Black " #~ msgstr "黑方 " #~ msgid "Close" #~ msgstr "關閉(C)" #~ msgid "sec/move" #~ msgstr "每走一步加" xboard-4.9.1/po/POTFILES.in0000755000175000001440000000037012717001265012120 00000000000000args.h backend.c book.c dialogs.c draw.c engineoutput.c gamelist.c gtk/xboard.c gtk/xengineoutput.c gtk/xoptions.c menus.c nengineoutput.c nevalgraph.c ngamelist.c nhistory.c usystem.c xaw/xboard.c xaw/xengineoutput.c xaw/xhistory.c xaw/xoptions.c xboard-4.9.1/po/vi.po0000644000175000001440000015256212747543737011353 00000000000000# XBoard -- a graphical chessboard for X # Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts. # Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc. # This file is distributed under the same license as the XBoard package. # , 2010 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: GNU xboard master-20110507\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "" #: backend.c:1457 msgid "Starting chess program" msgstr "" #: backend.c:1480 msgid "Bad game file" msgstr "" #: backend.c:1487 msgid "Bad position file" msgstr "" #: backend.c:1501 msgid "Pick new game" msgstr "" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "" #: backend.c:4306 msgid "Error reading from ICS" msgstr "" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" #: backend.c:6858 msgid "You are playing Black" msgstr "" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "" #: backend.c:6920 msgid "Displayed position is not current" msgstr "" #: backend.c:7123 msgid "rights granted" msgstr "" #: backend.c:7123 msgid "rights revoked" msgstr "" #: backend.c:7175 msgid "Illegal move" msgstr "" #: backend.c:7255 msgid "End of game" msgstr "" #: backend.c:7258 msgid "Incorrect move" msgstr "" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "" #: backend.c:7780 msgid "only marked squares are legal" msgstr "" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "" #: backend.c:8632 msgid "could not load EGBB library" msgstr "" #: backend.c:8635 msgid "wrong EGBB version" msgstr "" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "" #: backend.c:10132 msgid "Gap in move list" msgstr "" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr "" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" #: backend.c:11200 msgid "Not enough participants" msgstr "" #: backend.c:11403 msgid "Bad tournament file" msgstr "" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "" #: backend.c:11428 msgid "No pairing engine specified" msgstr "" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "" #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "" #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "" #: backend.c:12574 msgid "No more games in this message" msgstr "" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "" #: backend.c:13065 msgid "Game number out of range" msgstr "" #: backend.c:13076 msgid "Can't seek on game file" msgstr "" #: backend.c:13134 msgid "Game not found in file" msgstr "" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "" #: backend.c:13423 msgid "No moves in game" msgstr "" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "" #: backend.c:13645 msgid "Black to play" msgstr "" #: backend.c:13648 msgid "White to play" msgstr "" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "" #: backend.c:13737 msgid "Saving game" msgstr "" #: backend.c:13738 msgid "Bad Seek" msgstr "" #: backend.c:14111 msgid "Saving position" msgstr "" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" #: backend.c:14294 msgid "You have not made a move yet" msgstr "" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" #: backend.c:14320 msgid "No unfinished games" msgstr "" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "" #: backend.c:14656 msgid "Edit comment" msgstr "" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "" #: backend.c:14824 msgid "It is not White's turn" msgstr "" #: backend.c:14907 msgid "It is not Black's turn" msgstr "" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" #: backend.c:15188 msgid "Training mode off" msgstr "" #: backend.c:15196 msgid "Training mode on" msgstr "" #: backend.c:15199 msgid "Already at end of game" msgstr "" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "" #: backend.c:15365 msgid "Click clock to clear board" msgstr "" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "" #: backend.c:15711 msgid "That square is occupied" msgstr "" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "" #: backend.c:16220 msgid "You are not examining a game" msgstr "" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "" #: backend.c:16348 msgid "No hint available" msgstr "" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "" #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "" #: backend.c:17521 msgid "Displayed move is not current" msgstr "" #: backend.c:17530 msgid "Could not parse move" msgstr "" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "" #: backend.c:17657 msgid "White's flag fell" msgstr "" #: backend.c:17679 msgid "Black's flag fell" msgstr "" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "" #: book.c:722 msgid "Book Fault" msgstr "" #: book.c:877 msgid "Hash keys are different" msgstr "" #: book.c:1054 msgid "Could not create book" msgstr "" #: dialogs.c:287 #, fuzzy msgid "Tournament file: " msgstr " F7" #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "" #: dialogs.c:289 msgid "Sync after round" msgstr "" #: dialogs.c:290 msgid "Sync after cycle" msgstr "" #: dialogs.c:291 msgid "Tourney participants:" msgstr "" #: dialogs.c:292 msgid "Select Engine:" msgstr "" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "" #: dialogs.c:312 #, fuzzy msgid "Common Engine" msgstr "Chương Trình Cờ Chung... Alt+Shift+U" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Các Lựa Chọn Chung" #: dialogs.c:314 msgid "Continue Later" msgstr "" #: dialogs.c:315 msgid "Replace Engine" msgstr "" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "" #: dialogs.c:317 msgid "Clone Tourney" msgstr "" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "" #: dialogs.c:389 #, fuzzy msgid "Tournament Options" msgstr "Âm thanh" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Tự Động Đặt Cờ" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Tự Động Xoay Bàn Cờ" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "Mù Quáng" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Đánh Dấu Nước Cuối" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Đánh Dấu Với Mũi Tên" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Đi Quân Với Chỉ Một Bấm" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Bật Cửa Sổ Thoát Chương trình" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Bật Cửa Sổ Lỗi Nước Đi" #: dialogs.c:429 msgid "Scores in Move List" msgstr "" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Hiện Tọa Độ" #: dialogs.c:431 msgid "Show Target Squares" msgstr "" #: dialogs.c:432 msgid "Sticky Windows" msgstr "" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Kiểm Tra Hợp Lệ" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "" #: dialogs.c:458 msgid "Normal" msgstr "" #: dialogs.c:459 msgid "Makruk" msgstr "" #: dialogs.c:460 msgid "FRC" msgstr "" #: dialogs.c:461 msgid "Shatranj" msgstr "" #: dialogs.c:462 msgid "Wild castle" msgstr "" #: dialogs.c:463 #, fuzzy msgid "Knightmate" msgstr "Mã" #: dialogs.c:464 msgid "No castle" msgstr "" #: dialogs.c:465 msgid "Cylinder *" msgstr "" #: dialogs.c:466 msgid "3-checks" msgstr "" #: dialogs.c:467 msgid "berolina *" msgstr "" #: dialogs.c:468 msgid "atomic" msgstr "" #: dialogs.c:469 msgid "two kings" msgstr "" #: dialogs.c:470 msgid " " msgstr "" #: dialogs.c:471 msgid "Spartan" msgstr "" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "" #: dialogs.c:475 msgid "Holdings Size:" msgstr "" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" #: dialogs.c:479 msgid "ASEAN" msgstr "" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "" #: dialogs.c:481 msgid "Seirawan" msgstr "" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "" #: dialogs.c:483 msgid "Superchess" msgstr "" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "" #: dialogs.c:485 msgid "Crazyhouse" msgstr "" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "" #: dialogs.c:487 msgid "Bughouse" msgstr "" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "" #: dialogs.c:489 msgid "Suicide" msgstr "" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "" #: dialogs.c:491 msgid "give-away" msgstr "" #: dialogs.c:492 msgid "grand (10x10)" msgstr "" #: dialogs.c:493 msgid "losers" msgstr "" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "" #: dialogs.c:495 msgid "fairy" msgstr "" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:497 msgid "mighty lion" msgstr "" #: dialogs.c:498 msgid "courier (12x8)" msgstr "" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "" #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" #: dialogs.c:596 msgid "New Variant" msgstr "" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "" #: dialogs.c:631 msgid "EGTB Path:" msgstr "" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "" #: dialogs.c:633 msgid "Use GUI Book" msgstr "" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "" #: dialogs.c:655 msgid "Detect all Mates" msgstr "" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "" #: dialogs.c:671 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "Phân Xử Trắng Thắng" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "" #: dialogs.c:685 msgid "Auto-Comment" msgstr "" #: dialogs.c:686 msgid "Auto-Observe" msgstr "" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Tự Động Hiện Bàn Cờ" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "" #: dialogs.c:691 msgid "Get Move List" msgstr "" #: dialogs.c:692 msgid "Quiet Play" msgstr "" #: dialogs.c:693 msgid "Seek Graph" msgstr "" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "" #: dialogs.c:696 msgid "Quit after game" msgstr "" #: dialogs.c:697 msgid "Premove" msgstr "" #: dialogs.c:698 msgid "Premove for White" msgstr "" #: dialogs.c:699 msgid "First White Move:" msgstr "" #: dialogs.c:700 msgid "Premove for Black" msgstr "" #: dialogs.c:701 msgid "First Black Move:" msgstr "" #: dialogs.c:703 msgid "Alarm" msgstr "" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "" #: dialogs.c:706 msgid "Colorize Messages" msgstr "" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "" #: dialogs.c:723 msgid "ICS Options" msgstr "" #: dialogs.c:728 msgid "Exact position match" msgstr "" #: dialogs.c:728 msgid "Shown position is subset" msgstr "" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "" #: dialogs.c:729 msgid "Same material" msgstr "" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "" #: dialogs.c:753 msgid "No games before year:" msgstr "" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "" #: dialogs.c:756 msgid "Search mode:" msgstr "" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "" #: dialogs.c:767 msgid "Load Game Options" msgstr "Các Lựa Chọn Tải Ván Cờ" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "" #: dialogs.c:780 msgid "Own Games Only" msgstr "" #: dialogs.c:781 msgid "Save Games on File:" msgstr "" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "" #: dialogs.c:794 msgid "Save Game Options" msgstr "Các Lựa Chọn Lưu Ván Cờ" #: dialogs.c:803 msgid "No Sound" msgstr "Không âm thanh" #: dialogs.c:804 msgid "Default Beep" msgstr "Tiếng tút ngầm định" #: dialogs.c:805 msgid "Above WAV File" msgstr "" #: dialogs.c:806 msgid "Car Horn" msgstr "" #: dialogs.c:807 msgid "Cymbal" msgstr "" #: dialogs.c:808 msgid "Ding" msgstr "" #: dialogs.c:809 msgid "Gong" msgstr "" #: dialogs.c:810 msgid "Laser" msgstr "" #: dialogs.c:811 msgid "Penalty" msgstr "" #: dialogs.c:812 msgid "Phone" msgstr "" #: dialogs.c:813 msgid "Pop" msgstr "" #: dialogs.c:814 msgid "Roar" msgstr "" #: dialogs.c:815 msgid "Slap" msgstr "" #: dialogs.c:816 msgid "Wood Thunk" msgstr "" #: dialogs.c:818 msgid "User File" msgstr "" #: dialogs.c:841 msgid "User WAV File:" msgstr "" #: dialogs.c:842 msgid "Sound Program:" msgstr "" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "" #: dialogs.c:844 msgid "Play" msgstr "Chơi" #: dialogs.c:845 msgid "Move:" msgstr "" #: dialogs.c:846 msgid "Win:" msgstr "" #: dialogs.c:847 msgid "Lose:" msgstr "" #: dialogs.c:848 msgid "Draw:" msgstr "" #: dialogs.c:849 msgid "Unfinished:" msgstr "" #: dialogs.c:850 msgid "Alarm:" msgstr "" #: dialogs.c:851 msgid "Challenge:" msgstr "" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "" #: dialogs.c:854 msgid "Shout:" msgstr "" #: dialogs.c:855 msgid "S-Shout:" msgstr "" #: dialogs.c:856 msgid "Channel:" msgstr "" #: dialogs.c:857 msgid "Channel 1:" msgstr "" #: dialogs.c:858 msgid "Tell:" msgstr "" #: dialogs.c:859 msgid "Kibitz:" msgstr "" #: dialogs.c:860 msgid "Request:" msgstr "" #: dialogs.c:861 msgid "Lion roar:" msgstr "" #: dialogs.c:862 msgid "Seek:" msgstr "" #: dialogs.c:880 msgid "Sound Options" msgstr "Âm thanh" #: dialogs.c:896 msgid "Selectable themes:" msgstr "" #: dialogs.c:898 msgid "New name for current theme:" msgstr "" #: dialogs.c:901 msgid "White Piece Color:" msgstr "" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "" #: dialogs.c:917 msgid "Light Square Color:" msgstr "" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "" #: dialogs.c:929 msgid "Highlight Color:" msgstr "" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" #: dialogs.c:943 msgid "Mono Mode" msgstr "" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "" #: dialogs.c:946 msgid "Use Board Textures" msgstr "" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "" #: dialogs.c:1033 msgid "Board Options" msgstr "" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "" #: dialogs.c:1134 msgid "clear" msgstr "" #: dialogs.c:1135 msgid "save changes" msgstr "" #: dialogs.c:1233 msgid "add next move" msgstr "" #: dialogs.c:1234 msgid "commit changes" msgstr "" #: dialogs.c:1257 #, fuzzy msgid "Edit book" msgstr "Soạn" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Các Thẻ" #: dialogs.c:1405 msgid "ICS input box" msgstr "" #: dialogs.c:1437 msgid "Type a move" msgstr "" #: dialogs.c:1463 msgid "Engine has no options" msgstr "" #: dialogs.c:1465 msgid "Engine Settings" msgstr "" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "" #: dialogs.c:1509 msgid "or specify one below:" msgstr "" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "" #: dialogs.c:1513 msgid "Engine Command:" msgstr "" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "" #: dialogs.c:1515 msgid "UCI" msgstr "" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "" #: dialogs.c:1574 msgid "Load first engine" msgstr "" #: dialogs.c:1580 msgid "Load second engine" msgstr "" #: dialogs.c:1603 msgid "shuffle" msgstr "" #: dialogs.c:1604 msgid "Fischer castling" msgstr "" #: dialogs.c:1605 msgid "Start-position number:" msgstr "" #: dialogs.c:1606 msgid "randomize" msgstr "" #: dialogs.c:1607 msgid "pick fixed" msgstr "" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Tráo Bên..." #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "" #: dialogs.c:1677 msgid "Message (above board):" msgstr "" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "" #: dialogs.c:1695 #, fuzzy msgid "Edit comments:" msgstr "Soạn Bình Chú..." #: dialogs.c:1701 #, fuzzy msgid "Move history / Engine Output:" msgstr "In Ra Của Các Chương Trình Cờ Alt+Shift+O" #: dialogs.c:1707 #, fuzzy msgid "Game list:" msgstr "Danh Sách Ván Cờ" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "" #: dialogs.c:1768 msgid "Fonts" msgstr "" #: dialogs.c:1791 msgid "classical" msgstr "" #: dialogs.c:1792 msgid "incremental" msgstr "" #: dialogs.c:1793 msgid "fixed max" msgstr "" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "" #: dialogs.c:1795 msgid "Moves per session:" msgstr "" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "" #: dialogs.c:1798 #, fuzzy msgid "Time-Odds factors:" msgstr "Hệ số thời gian lẻ" #: dialogs.c:1799 msgid "Engine #1" msgstr "" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 #, fuzzy msgid "Cancel" msgstr "Bỏ" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "Vua" #: dialogs.c:1972 msgid "Captain" msgstr "" #: dialogs.c:1973 msgid "Lieutenant" msgstr "" #: dialogs.c:1974 msgid "General" msgstr "Chung..." #: dialogs.c:1975 msgid "Warlord" msgstr "" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Mã" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Tượng" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Xe" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "Sĩ" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "Xe" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Hoàng Hậu" #: dialogs.c:1988 msgid "Lion" msgstr "" #: dialogs.c:1992 msgid "Defer" msgstr "" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Phong Cấp" #: dialogs.c:2050 msgid "Chats:" msgstr "" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 #, fuzzy msgid "New Chat" msgstr "Tráo Bên..." #: dialogs.c:2058 msgid "Chat partner:" msgstr "" #: dialogs.c:2059 msgid "End Chat" msgstr "" #: dialogs.c:2060 msgid "Hide" msgstr "" #: dialogs.c:2287 msgid "ICS Interaction" msgstr "" #: dialogs.c:2372 msgid "factory" msgstr "" #: dialogs.c:2373 msgid "up" msgstr "" #: dialogs.c:2374 msgid "down" msgstr "" #: dialogs.c:2393 msgid "No tag selected" msgstr "" #: dialogs.c:2424 #, fuzzy msgid "Game-list options" msgstr "Các Lựa Chọn Tải Ván Cờ" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "" #: dialogs.c:2545 msgid "Fatal Error" msgstr "" #: dialogs.c:2545 msgid "Exiting" msgstr "" #: dialogs.c:2556 msgid "Information" msgstr "" #: dialogs.c:2563 msgid "Note" msgstr "" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Trắng" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Tốt" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "Tượng" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "Pháo" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Ô Trống" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Xóa Bàn Cờ" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Đen" #: dialogs.c:2827 #, fuzzy msgid "_File" msgstr "Lọc" #: dialogs.c:2828 #, fuzzy msgid "_Edit" msgstr "Soạn" #: dialogs.c:2829 msgid "_View" msgstr "" #: dialogs.c:2830 msgid "_Mode" msgstr "" #: dialogs.c:2831 msgid "_Action" msgstr "" #: dialogs.c:2832 #, fuzzy msgid "E_ngine" msgstr "Chương Trình Cờ Chung... Alt+Shift+U" #: dialogs.c:2833 #, fuzzy msgid "_Options" msgstr "Âm thanh" #: dialogs.c:2834 #, fuzzy msgid "_Help" msgstr "Hướng Dẫn" #: dialogs.c:2844 msgid "<<" msgstr "" #: dialogs.c:2845 msgid "<" msgstr "" #: dialogs.c:2847 msgid ">" msgstr "" #: dialogs.c:2848 msgid ">>" msgstr "" #: dialogs.c:3136 msgid "Directories:" msgstr "" #: dialogs.c:3137 #, fuzzy msgid "Files:" msgstr "Lọc" #: dialogs.c:3138 msgid "by name" msgstr "" #: dialogs.c:3139 msgid "by type" msgstr "" #: dialogs.c:3142 #, fuzzy msgid "Filename:" msgstr "Lọc" #: dialogs.c:3143 msgid "New directory" msgstr "" #: dialogs.c:3144 #, fuzzy msgid "File type:" msgstr "Lọc" #: dialogs.c:3219 #, fuzzy msgid "Contents of" msgstr "Bình Chú" #: dialogs.c:3245 msgid " next page" msgstr "" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" #: engineoutput.c:112 menus.c:661 #, fuzzy, c-format msgid "Engine Output" msgstr "In Ra Của Các Chương Trình Cờ Alt+Shift+O" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "" msgstr[1] "" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "Được" #: menus.c:136 msgid "Load game file name?" msgstr "" #: menus.c:183 msgid "Load position file name?" msgstr "" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "" #: menus.c:198 msgid "Save position file name?" msgstr "" #: menus.c:355 msgid " (with Zippy code)" msgstr "" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "Thông Tin Về XBoard" #: menus.c:390 msgid "Registered Engines" msgstr "" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 #, fuzzy msgid "New Game" msgstr "Tráo Bên..." #: menus.c:613 #, fuzzy msgid "New Shuffle Game..." msgstr "Tráo Bên..." #: menus.c:614 #, fuzzy msgid "New Variant..." msgstr "Biến Mới... Alt+Shift+V" #: menus.c:616 #, fuzzy msgid "Load Game" msgstr "Tải Ván Cờ... Alt+Shift+L" #: menus.c:617 #, fuzzy msgid "Load Position" msgstr "Âm thanh" #: menus.c:618 #, fuzzy msgid "Next Position" msgstr "Âm thanh" #: menus.c:619 #, fuzzy msgid "Prev Position" msgstr "Phong cấp" #: menus.c:621 #, fuzzy msgid "Save Game" msgstr "Lưu Ván Cờ... Alt+Shift+S" #: menus.c:622 #, fuzzy msgid "Save Position" msgstr "Lưu Thế Cờ... Ctrl+Shift+S" #: menus.c:623 #, fuzzy msgid "Save Selected Games" msgstr "Lưu Ván Cờ... Alt+Shift+S" #: menus.c:624 #, fuzzy msgid "Save Games as Book" msgstr "Lưu Ván Cờ... Alt+Shift+S" #: menus.c:626 msgid "Mail Move" msgstr "" #: menus.c:627 msgid "Reload CMail Message" msgstr "" #: menus.c:629 msgid "Quit " msgstr "" #: menus.c:634 #, fuzzy msgid "Copy Game" msgstr "Copy Danh Sách Các Ván Cờ Vào Clipboard" #: menus.c:635 #, fuzzy msgid "Copy Position" msgstr "Chép Thế Cờ Vào Clipboard Ctrl+Shift+C" #: menus.c:636 msgid "Copy Game List" msgstr "Copy Danh Sách Các Ván Cờ Vào Clipboard" #: menus.c:638 #, fuzzy msgid "Paste Game" msgstr "Dán Ván Cờ Từ Clipboard Ctrl+V" #: menus.c:639 #, fuzzy msgid "Paste Position" msgstr "Dán Thế Cờ Từ Clipboard Ctrl+Shift+V" #: menus.c:641 menus.c:686 #, fuzzy msgid "Edit Game" msgstr "Soạn Các Thẻ..." #: menus.c:642 menus.c:687 #, fuzzy msgid "Edit Position" msgstr "Âm thanh" #: menus.c:643 msgid "Edit Tags" msgstr "Soạn Các Thẻ..." #: menus.c:644 msgid "Edit Comment" msgstr "Soạn Bình Chú..." #: menus.c:645 #, fuzzy msgid "Edit Book" msgstr "Cẩm Nang Khai Cuộc..." #: menus.c:647 msgid "Revert" msgstr "" #: menus.c:648 msgid "Annotate" msgstr "Chú Giải" #: menus.c:649 #, fuzzy msgid "Truncate Game" msgstr "Cắt Ngắn Ván Cờ End" #: menus.c:651 msgid "Backward" msgstr "" #: menus.c:652 msgid "Forward" msgstr "" #: menus.c:653 #, fuzzy msgid "Back to Start" msgstr "Quay Lại Đến Đầu Alt+Home" #: menus.c:654 #, fuzzy msgid "Forward to End" msgstr "Đi Tiếp Tới Cuối Alt+End" #: menus.c:659 #, fuzzy msgid "Flip View" msgstr "Tự Động Xoay Bàn Cờ" #: menus.c:662 msgid "Move History" msgstr "" #: menus.c:663 #, fuzzy msgid "Evaluation Graph" msgstr "Đồ Thị Lượng Giá Alt+Shift+E" #: menus.c:664 #, fuzzy msgid "Game List" msgstr "Danh Sách Ván Cờ" #: menus.c:667 msgid "Comments" msgstr "Bình Chú" #: menus.c:668 msgid "ICS Input Box" msgstr "" #: menus.c:669 msgid "ICS/Chat Console" msgstr "" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Soạn Bình Chú..." #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Đặt Tham Số Cho Chương Trình Chơi 1..." #: menus.c:674 msgid "Board..." msgstr "Bàn Cờ..." #: menus.c:675 #, fuzzy msgid "Fonts..." msgstr "Âm Thanh" #: menus.c:676 msgid "Game List Tags..." msgstr "Các Thẻ của Danh Sách Ván Cờ" #: menus.c:681 #, fuzzy msgid "Machine White" msgstr "Máy Chơi Bên Trắng Ctrl+W" #: menus.c:682 #, fuzzy msgid "Machine Black" msgstr "Trận Đấu Với Máy" #: menus.c:683 #, fuzzy msgid "Two Machines" msgstr "Máy Chơi Cả Hai Bên Ctrl+T" #: menus.c:684 #, fuzzy msgid "Analysis Mode" msgstr "Chế Độ Phân Tích Ctrl+A" #: menus.c:685 #, fuzzy msgid "Analyze Game" msgstr "Phân Tích File Ctrl+F" #: menus.c:688 msgid "Training" msgstr "Đang Dậy Máy" #: menus.c:689 msgid "ICS Client" msgstr "Kết Nối Chơi Với Máy Chủ ICS" #: menus.c:691 msgid "Machine Match" msgstr "Trận Đấu Với Máy" #: menus.c:692 msgid "Pause" msgstr "" #: menus.c:697 msgid "Accept" msgstr "" #: menus.c:698 msgid "Decline" msgstr "" #: menus.c:699 msgid "Rematch" msgstr "" #: menus.c:701 #, fuzzy msgid "Call Flag" msgstr "Đặt Cờ F5" #: menus.c:702 msgid "Draw" msgstr "" #: menus.c:703 msgid "Adjourn" msgstr "" #: menus.c:704 msgid "Abort" msgstr "" #: menus.c:705 msgid "Resign" msgstr "" #: menus.c:707 #, fuzzy msgid "Stop Observing" msgstr "Ngừng Xem" #: menus.c:708 #, fuzzy msgid "Stop Examining" msgstr "Ngừng Thử" #: menus.c:709 msgid "Upload to Examine" msgstr "Tải Để " #: menus.c:711 msgid "Adjudicate to White" msgstr "Phân Xử Trắng Thắng" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Phân Xử Đen Thắng" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Phân Xử Hòa" #: menus.c:718 #, fuzzy msgid "Edit Engine List..." msgstr "Đặt Tham Số Cho Chương Trình Chơi 1..." #: menus.c:720 msgid "Load New 1st Engine..." msgstr "" #: menus.c:721 #, fuzzy msgid "Load New 2nd Engine..." msgstr "Chương Trình Cờ Chung... Alt+Shift+U" #: menus.c:723 #, fuzzy msgid "Engine #1 Settings..." msgstr "Đặt Tham Số Cho Chương Trình Chơi 1..." #: menus.c:724 #, fuzzy msgid "Engine #2 Settings..." msgstr "Đặt Tham Số Cho Chương Trình Chơi 2..." #: menus.c:725 #, fuzzy msgid "Common Settings..." msgstr "Chương Trình Cờ Chung... Alt+Shift+U" #: menus.c:727 msgid "Hint" msgstr "Gợi Ý..." #: menus.c:728 msgid "Book" msgstr "Cẩm Nang Khai Cuộc..." #: menus.c:730 msgid "Move Now" msgstr "" #: menus.c:731 #, fuzzy msgid "Retract Move" msgstr "Hoãn Nước Đi Vừa Rồi Ctrl+X" #: menus.c:736 msgid "Mute all Sounds" msgstr "" #: menus.c:739 #, fuzzy msgid "General..." msgstr "Chung..." #: menus.c:741 #, fuzzy msgid "Time Control..." msgstr "Đặt Thời Gian... Alt+Shift+T" #: menus.c:742 #, fuzzy msgid "Adjudications..." msgstr "Phân Xử Kết Quả... Alt+Shift+J" #: menus.c:743 msgid "ICS..." msgstr "" #: menus.c:744 msgid "Tournament..." msgstr "" #: menus.c:745 #, fuzzy msgid "Load Game..." msgstr "Tải Ván Cờ... Alt+Shift+L" #: menus.c:746 #, fuzzy msgid "Save Game..." msgstr "Lưu Ván Cờ... Alt+Shift+S" #: menus.c:747 #, fuzzy msgid "Game List..." msgstr "Danh Sách Ván Cờ" #: menus.c:748 #, fuzzy msgid "Sounds..." msgstr "Âm Thanh" #: menus.c:751 msgid "Always Queen" msgstr "" #: menus.c:757 msgid "Flash Moves" msgstr "" #: menus.c:759 msgid "Highlight Dragging" msgstr "Đánh Dấu Khi Đang Kéo Quân Cờ" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Đánh Dấu Với Mũi Tên" #: menus.c:763 msgid "Move Sound" msgstr "" #: menus.c:765 msgid "Periodic Updates" msgstr "Cập Nhật Theo Chu Kỳ" #: menus.c:767 msgid "Popup Exit Message" msgstr "Bật Cửa Sổ Thoát Chương trình" #: menus.c:769 msgid "Show Coords" msgstr "Hiện Tọa Độ" #: menus.c:770 msgid "Hide Thinking" msgstr "" #: menus.c:774 msgid "Save Settings Now" msgstr "Lưu Các Tham Số Ngay" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Lưu Các Tham Số Khi Kết Thúc" #: menus.c:780 msgid "Info XBoard" msgstr "" #: menus.c:781 #, fuzzy msgid "Man XBoard" msgstr "Thông Tin Về XBoard" #: menus.c:783 msgid "XBoard Home Page" msgstr "" #: menus.c:784 msgid "On-line User Guide" msgstr "" #: menus.c:785 msgid "Development News" msgstr "" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "" #: menus.c:825 msgid "File" msgstr "" #: menus.c:826 msgid "Edit" msgstr "Soạn" #: menus.c:827 msgid "View" msgstr "" #: menus.c:828 msgid "Mode" msgstr "" #: menus.c:829 msgid "Action" msgstr "" #: menus.c:830 msgid "Engine" msgstr "" #: menus.c:831 msgid "Options" msgstr "" #: menus.c:832 msgid "Help" msgstr "Hướng Dẫn" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 #, fuzzy msgid "move" msgstr "số giây mỗi nước" #: nengineoutput.c:156 msgid "Engine output" msgstr "" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "" #: nevalgraph.c:107 msgid "Blunder" msgstr "" #: nevalgraph.c:107 msgid "Eval" msgstr "" #: ngamelist.c:87 #, fuzzy msgid "find position" msgstr "Âm thanh" #: ngamelist.c:88 msgid "narrow" msgstr "" #: ngamelist.c:89 msgid "thresholds" msgstr "" #: ngamelist.c:90 #, fuzzy msgid "tags" msgstr "Các Thẻ" #: ngamelist.c:91 msgid "next" msgstr "" #: ngamelist.c:92 msgid "close" msgstr "" #: ngamelist.c:116 msgid "No game selected" msgstr "" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "" #: ngamelist.c:211 msgid "previous page" msgstr "" #: ngamelist.c:214 msgid "next page" msgstr "" #: ngamelist.c:217 msgid "no games matched your request" msgstr "" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "" #: ngamelist.c:284 msgid "There is no game list" msgstr "" #: nhistory.c:109 msgid "Move list" msgstr "" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "" #~ msgid "ICS ..." #~ msgstr "ICS..." #~ msgid "cancel" #~ msgstr "Bỏ" #~ msgid "New Game Ctrl+N" #~ msgstr "Ván Mới Ctrl+N" #~ msgid "Load Game Ctrl+O" #~ msgstr "Tải Ván Cờ... Ctrl+O" #~ msgid "Load Position Ctrl+Shift+O" #~ msgstr "Tải Thế Cờ... Ctrl+Shift+O" #~ msgid "Save Game Ctrl+S" #~ msgstr "Lưu Ván Cờ... Ctrl+S" #~ msgid "Quit Ctr+Q" #~ msgstr "Thoát" #~ msgid "Copy Game Ctrl+C" #~ msgstr "Chép Ván Cờ Vào Clipboard Ctrl+C" #~ msgid "Edit Game Ctrl+E" #~ msgstr "Soạn Ván Cờ Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "Soạn Thế Cờ Ctrl+Shift+E" #~ msgid "Revert Home" #~ msgstr "Ngược Lại Home" #~ msgid "Backward Alt+Left" #~ msgstr "Quay Trở Lại Alt+Left" #~ msgid "Forward Alt+Right" #~ msgstr "Đi Tiếp Alt+Right" #~ msgid "Flip View F2" #~ msgstr "Lật Ngược Bàn Cờ F2" #~ msgid "Engine Output Alt+Shift+O" #~ msgstr "In Ra Của Các Chương Trình Cờ Alt+Shift+O" #~ msgid "Move History Alt+Shift+H" #~ msgstr "Các Nước Đi Alt+Shift+H" #~ msgid "Game List Alt+Shift+G" #~ msgstr "Danh Sách Các Ván Cờ Alt+Shift+G" #~ msgid "Machine Black Ctrl+B" #~ msgstr "Máy Chơi Bên Đen Ctrl+B" #~ msgid "Edit Game Ctrl+E" #~ msgstr "Soạn Ván Cờ Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "Soạn Thế Cờ Ctrl+Shift+E" #~ msgid "Pause Pause" #~ msgstr "Tạm Dừng Pause" #~ msgid "Accept F3" #~ msgstr "Chấp Nhận F3" #~ msgid "Decline F4" #~ msgstr "Từ Chối F4" #~ msgid "Rematch F12" #~ msgstr "Chơi Ván Nữa F12" #~ msgid "Draw F6" #~ msgstr "Hòa F6" #~ msgid "Adjourn F7" #~ msgstr " F7" #~ msgid "Abort F8" #~ msgstr "Bỏ F8" #~ msgid "Resign F9" #~ msgstr "Nhận Thua F9" #~ msgid "Move Now Ctrl+M" #~ msgstr "Phải Đi Ngay Ctrl+M" #~ msgid "Always Queen Ctrl+Shift+Q" #~ msgstr "Luôn Là Hoàng Hậu Ctrl+Shift+Q" #~ msgid "Auto Flag Ctrl+Shift+F" #~ msgstr "Tự Động Đặt Cờ" #~ msgid "Ponder Next Move Ctrl+Shift+P" #~ msgstr "Tiếp Tục Tính Trước" #~ msgid "Hide Thinking Ctrl+Shift+H" #~ msgstr "Ẩn Suy Nghĩ" #~ msgid "Test Legality Ctrl+Shift+L" #~ msgstr "Kiểm Tra Hợp Lệ" #~ msgid "Drop" #~ msgstr "Đứt" #~ msgid "ok" #~ msgstr "Được" #~ msgid "Highlight Dragging (Show Move Targets)" #~ msgstr "Đánh Dấu Khi Đang Kéo Quân Cờ" #~ msgid "White " #~ msgstr " " #~ msgid "Black " #~ msgstr " " #~ msgid "Close" #~ msgstr "Đóng" xboard-4.9.1/po/ru.po0000644000175000001440000023137512747543737011363 00000000000000# XBoard -- a graphical chessboard for X # Copyright (C) 2015 Free Software Foundation, Inc. # Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc. # This file is distributed under the same license as the XBoard package. # Перевод: А.В.Сердюков (2003), Hr.Burunduk (2011), 2010 # Evgeniy Yakushev , 2015, 2016. # msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.9.0-pre2\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2016-04-20 22:33+0300\n" "Last-Translator: Evgeniy Yakushev \n" "Language-Team: Russian \n" "Language: Russian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "X-Generator: Gtranslator 2.91.6\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "%s в файле настроек\n" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "Неправильное целое значение %s" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "Неопознанный аргумент %s" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "Для аргумента %s не предоставлено значение" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "Не удалось открыть связанный файл %s" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Неопознанное значение %s булева аргумента" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "Движок 1" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "Движок 2" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "версия протокола %d не поддерживается" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "Вы не предоставили исполняемый файл движка" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "timeControl: неверный параметр %s" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "searchTime: неверный параметр %s" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "Вариант %s поддерживается только в режиме ICS" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "Неизвестный вариант %s" #: backend.c:1457 msgid "Starting chess program" msgstr "Запускается шахматная программа" #: backend.c:1480 msgid "Bad game file" msgstr "Неправильный формат файла" #: backend.c:1487 msgid "Bad position file" msgstr "Неправильный формат файла позиции" #: backend.c:1501 msgid "Pick new game" msgstr "Выбрать новую игру" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" "Вы начали заново завершенный турнир\n" "К нему будет добавлен еще один запуск\n" "Игра начнется черер 10 сек." #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "Все игры в турнире '%s' уже сыграны или начаты" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "Не подключено ни одной шахматной программы" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "Не могу открыть COM-порт %s" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "Не могу установить связь с %s, порт %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "initialMode: неизвестный режим %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "Режим анализа: не указан файл для анализа" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "Для анализа необходима шахматная программа" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "Режим анализа не совместим с режимом ICS" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "В режиме \"Компьютер белыми\" нужна шахматная программа" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "Режим \"Компьютер белыми\" не совместим с режимом ICS" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "В режиме \"Компьютер черными\" нужна шахматная программа (движок)" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "Режим \"Компьютер черными\" не совместим с режимом ICS" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "В режиме \"Два движка\" нужна шахматная программа" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "Режим \"Два движка\" не совместим с режимом ICS" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "Для тренировки необходимо загрузить шахматную партию из файла" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "Ошибка записи на вход сервера ICS" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "Ошибка клавиатуры" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "Получен символ конца файла с клавиатуры" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "Неизвестный тип %d" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "Ошибка записи на дисплей" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "Сообщение от оппонента для всех: %s" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "Ошибка чтения списка ходов: два заголовка" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "Ошибка чтения списка ходов: вложенные списки" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "против" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "Неправильный ход (отклонено сервером ICS)" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "Сервер ICS разорвал соединение" #: backend.c:4306 msgid "Error reading from ICS" msgstr "Ошибка чтения с сервера ICS" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" "Не удалось обработать строку:\n" "\"%s\"" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" "Слишком длинная партия: увеличьте значение MAX_MOVES и перекомпилируйте " "программу" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "Ошибка чтения списка ходов: лишняя доска" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Странный ход \"%s\" получен с сервера ICS" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "Внутренняя ошибка; неправильное значение moveType %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "Вы не можете сделать этого, пока играете или наблюдаете за партией" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" "Скомпилируйте программу заново для поддержки BOARD_RANKS или BOARD_FILES!" #: backend.c:6858 msgid "You are playing Black" msgstr "Вы играете черными" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "Вы играете белыми" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Ход белых" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Ход черных" #: backend.c:6920 msgid "Displayed position is not current" msgstr "Показанная позиция не соответствует положению в игре" #: backend.c:7123 msgid "rights granted" msgstr "права предоставлены" #: backend.c:7123 msgid "rights revoked" msgstr "права аннулированы" #: backend.c:7175 msgid "Illegal move" msgstr "Неправильный ход" #: backend.c:7255 msgid "End of game" msgstr "Сыгран последний записанный ход" #: backend.c:7258 msgid "Incorrect move" msgstr "Неверный ход" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "Для превращения потяните пешку в обратном направлении" #: backend.c:7780 msgid "only marked squares are legal" msgstr "сделать ход можно только на отмеченные поля" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "Турнир по Швейцарской системе окончен" #: backend.c:8632 msgid "could not load EGBB library" msgstr "не могу загрузить библиотеку эндшпилей" #: backend.c:8635 msgid "wrong EGBB version" msgstr "неправильная версия табицы эндшпилей" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "Программа подбора соперников создала недопустимые пары" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Неправильный ход \"%s\" пытается выполнить движок %s" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "От движка получена неправильная нотация FEN" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "Движок не передал настройки для нестандартных вариантов" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s не поддерживает режим анализа" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Неправильный ход \"%s\" (не принят движком %s)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Не удалось запустить %s движок %s на %s: %s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "Подсказка: %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" "Неправильная подсказка \"%s\"\n" "от движка %s" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "Компьютер согласился на ничью" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" "Компьютер предлагает ничью.\n" "Чтобы согласиться, выберите: действие / ничья " #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "ошибка записи варианта" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Неоднозначный ход с сервера ICS: \"%s\"" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Неправильный ход с сервера ICS: \"%s\"" #: backend.c:10132 msgid "Gap in move list" msgstr "Пропуск в записи ходов" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "Вариант %s не поддерживается %s" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr ", но значение %s равно" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "Ошибка при запуске программы '%s'" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "Ждем первую шахматную программу" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "Ждем вторую шахматную программу" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "Не удалось записать данные в файл турнира" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" "Вы не можете заменить движок пока он работает!\n" "Сначала завершите игру." #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "Не установлен движок с указанным Вами именем" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" "Сначала смените движок путем редактирования списка \n" "участников в пункте меню Опции Турнира" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "Вы можете сменить только один движок за раз" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "Движок %s не установлен" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" "Вам необходимо предоставить файл турнира\n" "для записи хода турнира" #: backend.c:11200 msgid "Not enough participants" msgstr "Недостаточное количество участников" #: backend.c:11403 msgid "Bad tournament file" msgstr "Файл турнира испорчен" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "Ожидание других игр" #: backend.c:11428 msgid "No pairing engine specified" msgstr "Не указана программа подбора соперников" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "Среднее время решения %4.2f сек (общее время %4.2f сек) " #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "Решено %d из %d (%3.1f%%) " #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Матч %s против %s: финальный результат %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Неправильный ход: %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Неоднозначный ход: %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "Не могу открыть файл \"%s\"" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "Не удалось создать список партий" #: backend.c:12574 msgid "No more games in this message" msgstr "В этом сообщении больше нет шахматных партий" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "Нет загруженных шахматных партий" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "Достигнуто начало списка" #: backend.c:13065 msgid "Game number out of range" msgstr "Номер партии - вне диапазона" #: backend.c:13076 msgid "Can't seek on game file" msgstr "Поиск в файлах записей партий не предусмотрен" #: backend.c:13134 msgid "Game not found in file" msgstr "Партия не найдена в файле" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "Неправильная позиция формата FEN в файле" #: backend.c:13423 msgid "No moves in game" msgstr "Нет записанных ходов" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "Нет загруженных позиций" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "Поиск в файлах позиций не предусмотрен" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "Позиция не найдена в файле" #: backend.c:13645 msgid "Black to play" msgstr "Ход черных" #: backend.c:13648 msgid "White to play" msgstr "Ход белых" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "Ожидание разрешения записи файла" #: backend.c:13737 msgid "Saving game" msgstr "Сохранение игры" #: backend.c:13738 msgid "Bad Seek" msgstr "Неудачный поиск" #: backend.c:14111 msgid "Saving position" msgstr "Сохранение позиции" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" "Вы поменяли последовательность сделанных ходов игры.\n" "Нажмите \"Перечитать эту игру\" и сделайте ход снова." #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" "Вы ввели слишком много ходов.\n" "Вернитесь к правильной позиции и попробуйте снова." #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" "Показанная позиция не является текущей\n" "Перейдите к правильной позиции и попробуйте снова." #: backend.c:14294 msgid "You have not made a move yet" msgstr "Вы еще не сделали ход" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" "Список сообщений cmail не загружен.\n" "Воспользуйтесь командой \"Перезагрузить сообшения cmail\" и сделайте ход " "снова" #: backend.c:14320 msgid "No unfinished games" msgstr "Нет неоконченных партий" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" "Вы уже отправили ход письмом.\n" "Подождите пока придет ход от Вашего соперника\n" "Чтобы повторно отправить ход, наберите\n" "в командной строке\n" "\"cmail -remail -game %s\"." #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "Ошибка запуска cmail" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Ожидание ответного хода\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "Все еще ваша очередь ходить в этой партии\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "Все еще ваша очередь ходить в обеих партиях\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "Все еще ваш ход во всех %d партиях\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "Все еще ваш ход в партии %s\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "Нет неоконченных партий\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "Можно отсылать почту\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Все еще ваша очередь ходить в партиях %s\n" #: backend.c:14656 msgid "Edit comment" msgstr "Правка комментария" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Правка комментария к %d.%s%s" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "Вы не наблюдаете за игрой" #: backend.c:14824 msgid "It is not White's turn" msgstr "Сейчас не ход белых" #: backend.c:14907 msgid "It is not Black's turn" msgstr "Сейчас не ход черных" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "Запуск движка %s" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" "Подождите своей очереди ходить\n" "или выберите \"сделать ход сейчас\"." #: backend.c:15188 msgid "Training mode off" msgstr "Тренировка окончена" #: backend.c:15196 msgid "Training mode on" msgstr "Тренировка" #: backend.c:15199 msgid "Already at end of game" msgstr "Сыграны все ходы данной партии" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "Предупреждение: вы все еще продолжаете играть" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "Предупреждение: вы все еще наблюдаете за игрой" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "Предупреждение: вы все еще изучаете игру" #: backend.c:15365 msgid "Click clock to clear board" msgstr "Нажмите на часы чтобы очистить достку" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "Закрыть анализ движка сервера ICS..." #: backend.c:15711 msgid "That square is occupied" msgstr "Это поле занято" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "К данному ходу никаких предложений не сделано" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "У вашего соперника еще есть время" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "Вы должны сделать свой ход прежде, чем предлагать ничью" #: backend.c:16220 msgid "You are not examining a game" msgstr "Не включен режим изучения шахматных партий" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "Нельзя вернуться к началу пока выбрана \"Пауза\"" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "Ваш ход" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "Подождите своей очереди ходить" #: backend.c:16348 msgid "No hint available" msgstr "Подсказок нет" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "Список игр незагружен или пуст" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "Файл книги существует! Попробуйте снова для его перезаписи." #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "Ошибка записи на вход движка %s" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "Движок %s заканчивает работу в ничейной позиции (%s)" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Ошибка: движок %s (%s) завершил работу" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Ошибка чтения с выхода движка %s (%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "У движка %s слишком много параметров\n" #: backend.c:17521 msgid "Displayed move is not current" msgstr "Позиция не отвечает положению в игре" #: backend.c:17530 msgid "Could not parse move" msgstr "Невозможно интерпретировать ход" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "У обоих игроков время вышло" #: backend.c:17657 msgid "White's flag fell" msgstr "У белых упал флажок" #: backend.c:17679 msgid "Black's flag fell" msgstr "У черных упал флажок" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "В игре на время настройка часов не разрешена" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "Позиция в буфере обмена не соответствует формату FEN" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "Книга дебютов Polyglot недействительна" #: book.c:722 msgid "Book Fault" msgstr "Сбой в дебютной книге" #: book.c:877 msgid "Hash keys are different" msgstr "Значения хэшей различаются" #: book.c:1054 msgid "Could not create book" msgstr "Не удалось создать книгу" #: dialogs.c:287 msgid "Tournament file: " msgstr "Файл турнира: " #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "Для начала турнира с несколькими XBoard одновременно:" #: dialogs.c:289 msgid "Sync after round" msgstr "Синхронизация данных после раунда" #: dialogs.c:290 msgid "Sync after cycle" msgstr "Синхронизация данных после цикла" #: dialogs.c:291 msgid "Tourney participants:" msgstr "Участники турнира" #: dialogs.c:292 msgid "Select Engine:" msgstr "Виберите движок" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "Тип турнира (0 = все со всеми, 1 = выбывание):" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "Число циклов турнира (раундов по швейцарской системе):" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "Число игр в матче по умолчанию:" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "Пауза между играми матча (мсек):" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "Сохранить игры турнира в:" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "Номер игры (-1 или -2 для автоувеличения):" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "Файл с начальной позицией:" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "Номер позиции( -1 или -2 для автоувеличения):" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "Обнулить индекс после количества игр (0 = никогда):" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "Сделать собственные книги дебютов движка неактивной по умолчанию" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "Контроль времени" #: dialogs.c:312 msgid "Common Engine" msgstr "Общий движок" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Общие настройки" #: dialogs.c:314 msgid "Continue Later" msgstr "Продолжить позже" #: dialogs.c:315 msgid "Replace Engine" msgstr "Заменить движок" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "Обновить движок" #: dialogs.c:317 msgid "Clone Tourney" msgstr "Клонировать турнир" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "Сначала Вы должны указать существующий файл для клонирования" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "# движки не установлены" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "Внутренняя ошибка: неправильный набор участников" #: dialogs.c:389 msgid "Tournament Options" msgstr "Настройки турнира" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "Абсолютное значение анализа" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "Предпочтение ферзю (превращение фигуры)" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "Анимация перетаскивания" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "Анимация ходов" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Проверять время" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Авторазворот доски" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "Невидимые фигуры" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "Меню хода" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "Показывать дерево вариантов" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "Заголовки в окне вывода сообщений движка" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "Скрывать вывод движка в игре против человека" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Выделять последний ход" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Выделять стрелкой" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Ход одним щелчком" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "Периодически обновлять (в режиме анализа)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "Сделать ход(ы) выбранного варианта (анализ)" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "Думать всегда" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Сообщение при выходе" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Сообщать о неправильном ходе" #: dialogs.c:429 msgid "Scores in Move List" msgstr "Очки в списке ходов" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Показывать координаты" #: dialogs.c:431 msgid "Show Target Squares" msgstr "Показывать поля, куда ставится фигура" #: dialogs.c:432 msgid "Sticky Windows" msgstr "\"Липкие\" окна" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Проверять правильность хода CS+L" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "Мерцающая подсветка на поле для хода (0 = без мерцания):" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "Частота мерцания (высокая - низкая):" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "Скорость анимации (быстро - медленно):" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "Коэффициент приближения в оценке позиции:" #: dialogs.c:458 msgid "Normal" msgstr "обычные" #: dialogs.c:459 msgid "Makruk" msgstr "макрук" #: dialogs.c:460 msgid "FRC" msgstr "Фишера (960)" #: dialogs.c:461 msgid "Shatranj" msgstr "Шатрандж" #: dialogs.c:462 msgid "Wild castle" msgstr "" #: dialogs.c:463 msgid "Knightmate" msgstr "Конь" #: dialogs.c:464 msgid "No castle" msgstr "" #: dialogs.c:465 msgid "Cylinder *" msgstr "цилиндрические *" #: dialogs.c:466 msgid "3-checks" msgstr "" #: dialogs.c:467 msgid "berolina *" msgstr "" #: dialogs.c:468 msgid "atomic" msgstr "атомные" #: dialogs.c:469 msgid "two kings" msgstr "два короля" #: dialogs.c:470 msgid " " msgstr " " #: dialogs.c:471 msgid "Spartan" msgstr "" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "Размер доски ( -1 = значение по умолчанию для выбранного варианта):" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "" #: dialogs.c:475 msgid "Holdings Size:" msgstr "" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" "Могут быть сыграны только варианты, помеченные\n" "знаком (*) и без проверки правильности" #: dialogs.c:479 msgid "ASEAN" msgstr "" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "Большой шатрандж (10x8)" #: dialogs.c:481 msgid "Seirawan" msgstr "Сейравана" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "Сокол (10x8) " #: dialogs.c:483 msgid "Superchess" msgstr "Супершахматы" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "Версия Капабланки (10x8)" #: dialogs.c:485 msgid "Crazyhouse" msgstr "" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "Готические (10x8)" #: dialogs.c:487 msgid "Bughouse" msgstr "Шведки" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "" #: dialogs.c:489 msgid "Suicide" msgstr "" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "" #: dialogs.c:491 msgid "give-away" msgstr "поддавки (без мата)" #: dialogs.c:492 msgid "grand (10x10)" msgstr "большие шахматы (10x10)" #: dialogs.c:493 msgid "losers" msgstr "поддавки (мат)" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "" #: dialogs.c:495 msgid "fairy" msgstr "" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:497 msgid "mighty lion" msgstr "" #: dialogs.c:498 msgid "courier (12x8)" msgstr "" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Предупреждение: второй движок (%s) не поддерживает это!" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "В режиме просмотра не поддерживаются только \"шведки\"" #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" "Все варианты, не поддерживающиеся первым\n" "движком (%s) отключены." #: dialogs.c:596 msgid "New Variant" msgstr "Варианты" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "Max число CPU на движок:" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "Каталог программы polyglot" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "Размер хеша (МБ):" #: dialogs.c:631 msgid "EGTB Path:" msgstr "Путь к ЭБД:" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "Кеш ЭБД (МБ):" #: dialogs.c:633 msgid "Use GUI Book" msgstr "Использовать графический интерфейс книги дебютов" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "Имя файла дебютной книги:" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "Глубина книги (ходов):" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "Варьирование:" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "Своя книга у движка 1" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "Своя книга у движка 2" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "Общие настройки движков" #: dialogs.c:655 msgid "Detect all Mates" msgstr "Определять мат" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "Проверять требования движка" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "Ничья, когда не хватает фигур, чтобы поставить мат" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Ничья в технич. окончаниях" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "Присудить ничью после числа ходов:" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "Победа/поражение при перевесе в" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "Оценка движка 1 - абсолютная" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "Оценка движка 2 - абсолютная" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "Присудить победу играм не-ICS" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "" #: dialogs.c:685 msgid "Auto-Comment" msgstr "Комментарии" #: dialogs.c:686 msgid "Auto-Observe" msgstr "Следить за игрой" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Раскрывать доску" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "Автоматическое создание сценария входа" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "Следить в фоне" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "Двойная доска" #: dialogs.c:691 msgid "Get Move List" msgstr "Запрашивать запись ходов" #: dialogs.c:692 msgid "Quiet Play" msgstr "Спокойная игра" #: dialogs.c:693 msgid "Seek Graph" msgstr "График поиска" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "Автообновление" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "" #: dialogs.c:696 msgid "Quit after game" msgstr "Выход после окончания игры" #: dialogs.c:697 msgid "Premove" msgstr "Предварительный ход" #: dialogs.c:698 msgid "Premove for White" msgstr "Предварительный ход для белых" #: dialogs.c:699 msgid "First White Move:" msgstr "1-й ход белых" #: dialogs.c:700 msgid "Premove for Black" msgstr "Предварительный ход для черных" #: dialogs.c:701 msgid "First Black Move:" msgstr "1-й ход черных" #: dialogs.c:703 msgid "Alarm" msgstr "Звонок" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "Время звонка (мс) :" #: dialogs.c:706 msgid "Colorize Messages" msgstr "Разные цвета сообщений" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "Цвета текста канала 1:" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "Цвета текста других каналов:" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "Цвета текста поиска:" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "" #: dialogs.c:723 msgid "ICS Options" msgstr "Настройки соединения с ICS" #: dialogs.c:728 msgid "Exact position match" msgstr "Точное совпадение позиции" #: dialogs.c:728 msgid "Shown position is subset" msgstr "" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "" #: dialogs.c:729 msgid "Same material" msgstr "Такой же материал" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "Автоматическое отображение тэгов" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "Автоматические отображение комментариев" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "Количество секунд на ход:" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" "\n" "параметры, которые можно использовать в режиме просмтра игры:" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "Минимальный рейтинг Эло для сильнейшего игрока:" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "Минимальный рейтинг Эло для самого слабого игрока:" #: dialogs.c:753 msgid "No games before year:" msgstr "Нет партий до года:" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "Минимальное количество последовательных позиций:" #: dialogs.c:756 msgid "Search mode:" msgstr "Режим поиска:" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "" #: dialogs.c:767 msgid "Load Game Options" msgstr "Параметры загрузки" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "Автосохранение игр" #: dialogs.c:780 msgid "Own Games Only" msgstr "Только свои игры" #: dialogs.c:781 msgid "Save Games on File:" msgstr "Сохранить игры в файле:" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "Сохранить финальную позицию в файле:" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "" #: dialogs.c:794 msgid "Save Game Options" msgstr "Настройки сохранения" #: dialogs.c:803 msgid "No Sound" msgstr "Без звука" #: dialogs.c:804 msgid "Default Beep" msgstr "Простой сигнал" #: dialogs.c:805 msgid "Above WAV File" msgstr "Указать WAV-файл" #: dialogs.c:806 msgid "Car Horn" msgstr "Автомобильный гудок" #: dialogs.c:807 msgid "Cymbal" msgstr "Кимвал" #: dialogs.c:808 msgid "Ding" msgstr "Звон" #: dialogs.c:809 msgid "Gong" msgstr "Гонг" #: dialogs.c:810 msgid "Laser" msgstr "Лазер" #: dialogs.c:811 msgid "Penalty" msgstr "Штраф" #: dialogs.c:812 msgid "Phone" msgstr "Телефон" #: dialogs.c:813 msgid "Pop" msgstr "Хлопок" #: dialogs.c:814 msgid "Roar" msgstr "Рев" #: dialogs.c:815 msgid "Slap" msgstr "Пощечина" #: dialogs.c:816 msgid "Wood Thunk" msgstr "Глухой деревянный стук" #: dialogs.c:818 msgid "User File" msgstr "Пользовательский файл" #: dialogs.c:841 msgid "User WAV File:" msgstr "Пользовательский WAV-файл" #: dialogs.c:842 msgid "Sound Program:" msgstr "Программа воспроизведения звука:" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "Пробный звук" #: dialogs.c:844 msgid "Play" msgstr "Послушать" #: dialogs.c:845 msgid "Move:" msgstr "Ходов:" #: dialogs.c:846 msgid "Win:" msgstr "Побед:" #: dialogs.c:847 msgid "Lose:" msgstr "Поражений:" #: dialogs.c:848 msgid "Draw:" msgstr "Ничьих:" #: dialogs.c:849 msgid "Unfinished:" msgstr "Наоконченных:" #: dialogs.c:850 msgid "Alarm:" msgstr "Важное сообщение:" #: dialogs.c:851 msgid "Challenge:" msgstr "Вызов:" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "Каталог с файлами звуковых эффектов" #: dialogs.c:854 msgid "Shout:" msgstr "" #: dialogs.c:855 msgid "S-Shout:" msgstr "" #: dialogs.c:856 msgid "Channel:" msgstr "Канал:" #: dialogs.c:857 msgid "Channel 1:" msgstr "Канал 1:" #: dialogs.c:858 msgid "Tell:" msgstr "Сказать:" #: dialogs.c:859 msgid "Kibitz:" msgstr "" #: dialogs.c:860 msgid "Request:" msgstr "Запрос:" #: dialogs.c:861 msgid "Lion roar:" msgstr "Рев льва:" #: dialogs.c:862 msgid "Seek:" msgstr "Искать:" #: dialogs.c:880 msgid "Sound Options" msgstr "Настройки звука" #: dialogs.c:896 msgid "Selectable themes:" msgstr "Темы оформления" #: dialogs.c:898 msgid "New name for current theme:" msgstr "Новое имя для текущей темы:" #: dialogs.c:901 msgid "White Piece Color:" msgstr "Цвет белых фигур:" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "К" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "З" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "С" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "Т" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "Черные фигуры:" #: dialogs.c:917 msgid "Light Square Color:" msgstr "Белые поля:" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "Черные поля" #: dialogs.c:929 msgid "Highlight Color:" msgstr "Выделенное поле:" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "Цвет поля при предв. ходе:" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" #: dialogs.c:943 msgid "Mono Mode" msgstr "Монохромная" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "Размер логотипа (0-отключить, требует перезапуска)" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "" #: dialogs.c:946 msgid "Use Board Textures" msgstr "Использовать текстуры доски" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "Файл с тексторой для черных клеток:" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "Файл с тексторой для белых клеток:" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "Каталог с изображениями фигур:" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "# не определено ни одной темы" #: dialogs.c:1033 msgid "Board Options" msgstr "Настройки доски" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "текстовое меню ICS" #: dialogs.c:1134 msgid "clear" msgstr "очистка" #: dialogs.c:1135 msgid "save changes" msgstr "сохранить изменения" #: dialogs.c:1233 msgid "add next move" msgstr "добавить следующий ход" #: dialogs.c:1234 msgid "commit changes" msgstr "сохранить изменения" #: dialogs.c:1257 msgid "Edit book" msgstr "Править книгу" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Описание" #: dialogs.c:1405 msgid "ICS input box" msgstr "поле ввода команд для ICS" #: dialogs.c:1437 msgid "Type a move" msgstr "Написать ход" #: dialogs.c:1463 msgid "Engine has no options" msgstr "У движка нет настроек" #: dialogs.c:1465 msgid "Engine Settings" msgstr "Настройки движка" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "Выберите движок из списка:" #: dialogs.c:1509 msgid "or specify one below:" msgstr "или укажите один из:" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "Краткое имя (необязательно)" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "Каталог с движком:" #: dialogs.c:1513 msgid "Engine Command:" msgstr "Команда движка:" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "(если ничего не указано, каталог будет таким же, как путь к движку)" #: dialogs.c:1515 msgid "UCI" msgstr "" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "Нельзя использовать графический интерфейс книги дебютов" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "Внести этот движок в список" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "" #: dialogs.c:1574 msgid "Load first engine" msgstr "Загрузить первый движок" #: dialogs.c:1580 msgid "Load second engine" msgstr "Загрузить второй движок" #: dialogs.c:1603 msgid "shuffle" msgstr "" #: dialogs.c:1604 msgid "Fischer castling" msgstr "" #: dialogs.c:1605 msgid "Start-position number:" msgstr "Номер позиции:" #: dialogs.c:1606 msgid "randomize" msgstr "Случайно" #: dialogs.c:1607 msgid "pick fixed" msgstr "" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Новая в смешанные шахматы..." #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "Часы (требуется перезапуск):" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "+" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "-" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "|" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "*" #: dialogs.c:1677 msgid "Message (above board):" msgstr "Сообщение (над доской):" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "Консоль чата ICS" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "" #: dialogs.c:1695 msgid "Edit comments:" msgstr "Правка комментариев:" #: dialogs.c:1701 msgid "Move history / Engine Output:" msgstr "История ходов / Вывод движка:" #: dialogs.c:1707 msgid "Game list:" msgstr "Список партий:" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" "\n" "Кнопками * устанавливается шрифт выделенного ниже:" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "Работает только в сборке GTK" #: dialogs.c:1768 msgid "Fonts" msgstr "Шрифты" #: dialogs.c:1791 msgid "classical" msgstr "классический" #: dialogs.c:1792 msgid "incremental" msgstr "увеличивающийся" #: dialogs.c:1793 msgid "fixed max" msgstr "зафиксированный максимум" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "Разделить введенное время на 60" #: dialogs.c:1795 msgid "Moves per session:" msgstr "Количество ходов в партии:" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "Начальное время (мин):" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "" #: dialogs.c:1798 #, fuzzy msgid "Time-Odds factors:" msgstr "Фактор времени движков:" #: dialogs.c:1799 msgid "Engine #1" msgstr "Движок №1" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "Движок 2 / Человек" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "Неиспользовано" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "Ошибка подключения к шахматной программе" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "Отмена" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "Король" #: dialogs.c:1972 msgid "Captain" msgstr "Капитан" #: dialogs.c:1973 msgid "Lieutenant" msgstr "Лейтенант" #: dialogs.c:1974 msgid "General" msgstr "Генерал" #: dialogs.c:1975 msgid "Warlord" msgstr "Главнокомандующий" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Конь" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Слон" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Ладья" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "Архиепископ" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "Канцлер" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Ферзь" #: dialogs.c:1988 msgid "Lion" msgstr "Лев" #: dialogs.c:1992 msgid "Defer" msgstr "Отложить" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Превратить" #: dialogs.c:2050 msgid "Chats:" msgstr "Беседы:" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 msgid "New Chat" msgstr "Новая беседа" #: dialogs.c:2058 msgid "Chat partner:" msgstr "Беседа с партнером:" #: dialogs.c:2059 msgid "End Chat" msgstr "Закончить беседу" #: dialogs.c:2060 msgid "Hide" msgstr "Спрятать" #: dialogs.c:2287 msgid "ICS Interaction" msgstr "Взаиможействие с ICS" #: dialogs.c:2372 msgid "factory" msgstr "Стандарт" #: dialogs.c:2373 msgid "up" msgstr "Вверх" #: dialogs.c:2374 msgid "down" msgstr "Вниз" #: dialogs.c:2393 msgid "No tag selected" msgstr "Признаки не выбраны" #: dialogs.c:2424 msgid "Game-list options" msgstr "Параметры списка игр" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Ошибка" #: dialogs.c:2545 msgid "Fatal Error" msgstr "Неисправимая ошибка" #: dialogs.c:2545 msgid "Exiting" msgstr "Выход" #: dialogs.c:2556 msgid "Information" msgstr "Информация" #: dialogs.c:2563 msgid "Note" msgstr "Примечание" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Белые" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Пешка" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "Слон (стар.)" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "Пушка" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "Разжаловать" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Пустое поле" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Очистить доску" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Черные" #: dialogs.c:2827 msgid "_File" msgstr "_Файл" #: dialogs.c:2828 msgid "_Edit" msgstr "_Правка" #: dialogs.c:2829 msgid "_View" msgstr "_Вид" #: dialogs.c:2830 msgid "_Mode" msgstr "_Режим" #: dialogs.c:2831 msgid "_Action" msgstr "_Игра" #: dialogs.c:2832 msgid "E_ngine" msgstr "Движок" #: dialogs.c:2833 msgid "_Options" msgstr "_Настройки" #: dialogs.c:2834 msgid "_Help" msgstr "_Справка" #: dialogs.c:2844 msgid "<<" msgstr "<<" #: dialogs.c:2845 msgid "<" msgstr "<" #: dialogs.c:2847 msgid ">" msgstr ">" #: dialogs.c:2848 msgid ">>" msgstr ">>" #: dialogs.c:3136 msgid "Directories:" msgstr "Каталоги:" #: dialogs.c:3137 msgid "Files:" msgstr "Файлы:" #: dialogs.c:3138 msgid "by name" msgstr "по имени" #: dialogs.c:3139 msgid "by type" msgstr "по типу" #: dialogs.c:3142 msgid "Filename:" msgstr "Имя файла:" #: dialogs.c:3143 msgid "New directory" msgstr "Новый каталог" #: dialogs.c:3144 msgid "File type:" msgstr "Тип файла:" #: dialogs.c:3219 msgid "Contents of" msgstr "Комментарии" #: dialogs.c:3245 msgid " next page" msgstr " следующая страница" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "СНАЧАЛА ВПИШИТЕ СЮДА НАЗВАНИЕ КАТАЛОГА" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "Попробуйте другое имя" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" "Не установлены фигуры по умолчанию!\n" "Выберите собственные фигуры, используя '-pieceImageDirectory'." #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "Вывод движка" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "%s (%d обратимый слой)" msgstr[1] "%s (%d обратимых слоя)" msgstr[2] "%s (%d обратимых слоев)" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "NPS (Узл./сек.)" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "Чтение файла игры (%d)" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: не могу перейти в каталог CHESSDIR:" #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "Не удалось открыть файл '%s'\n" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Для поддержки этого размера перекомпилируйте программу с бОльшими значениями " "BOARD_RANKS или BOARD_FILES" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: неправильный синтакс boardSize (размер доски) %s\n" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: неопознанное имя boardSize (размер доски) %s\n" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: слишком мало доступных цветов; пробую черно-белый режим\n" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Не удалось создать список шрифтов для %s\n" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: нет шрифтов, соответсвующих шаблону %s\n" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "Не могу открыть временный файл" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "Не удалось открыть файл" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "Просмотр" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "OK" #: menus.c:136 msgid "Load game file name?" msgstr "" #: menus.c:183 msgid "Load position file name?" msgstr "" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "" #: menus.c:198 msgid "Save position file name?" msgstr "" #: menus.c:355 msgid " (with Zippy code)" msgstr "" #: menus.c:360 #, fuzzy, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" "%s%s\n" "\n" "Автораские права принадлежат Digital Equipment Corporation ( 1991)\n" "Изменения в авторских правах 1992-2014 Free Software Foundation\n" "Изменения в авторских правах 2005 Alessandro Scotti\n" "\n" "%s является свободным ПО и не предоставляет НИКАКИХ ГАРАНТИЙ;прочитайте файл " "COPYING чтобы получить больше информации.\n" "Сборка этой версии с GTK является экспериментальной и нестабильной\n" "\n" "Посетите сайт XBoard по адресу: http://www.gnu.org/software/xboard/\n" "Проверьте новые возможности по адресу: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Адрес электронной почты для отправки отчетов об ошибках: \n" "\n" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "О программе XBoard" #: menus.c:390 msgid "Registered Engines" msgstr "Зарегистрированные движки" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 msgid "New Game" msgstr "Новая игра" #: menus.c:613 msgid "New Shuffle Game..." msgstr "Новая в смешанные шахматы..." #: menus.c:614 msgid "New Variant..." msgstr "Варианты..." #: menus.c:616 msgid "Load Game" msgstr "Загрузить игру" #: menus.c:617 msgid "Load Position" msgstr "Загрузить позицию" #: menus.c:618 msgid "Next Position" msgstr "Следующая позиция" #: menus.c:619 msgid "Prev Position" msgstr "Следующая позиция" #: menus.c:621 msgid "Save Game" msgstr "Сохранить игру" #: menus.c:622 msgid "Save Position" msgstr "Сохранить позицию" #: menus.c:623 msgid "Save Selected Games" msgstr "Сохранить выбранные игры" #: menus.c:624 msgid "Save Games as Book" msgstr "Сохранить игру в книгу дебютов" #: menus.c:626 msgid "Mail Move" msgstr "Отпраить ход по почте" #: menus.c:627 msgid "Reload CMail Message" msgstr "Загрузить заново CMail-сообщение" #: menus.c:629 msgid "Quit " msgstr "Выход " #: menus.c:634 msgid "Copy Game" msgstr "Копировать игру" #: menus.c:635 msgid "Copy Position" msgstr "Копировать позицию" #: menus.c:636 msgid "Copy Game List" msgstr "Копировать список партий" #: menus.c:638 msgid "Paste Game" msgstr "Вставить игру" #: menus.c:639 msgid "Paste Position" msgstr "Вставить позицию" #: menus.c:641 menus.c:686 msgid "Edit Game" msgstr "Редактировать игру" #: menus.c:642 menus.c:687 msgid "Edit Position" msgstr "Редактировать позицию" #: menus.c:643 msgid "Edit Tags" msgstr "Править описание..." #: menus.c:644 msgid "Edit Comment" msgstr "Править комментарий..." #: menus.c:645 msgid "Edit Book" msgstr "Редактирвать книгу" #: menus.c:647 msgid "Revert" msgstr "Возврат" #: menus.c:648 msgid "Annotate" msgstr "Записать и вернуться" #: menus.c:649 msgid "Truncate Game" msgstr "Отбросить последующие ходы" #: menus.c:651 msgid "Backward" msgstr "Назад" #: menus.c:652 msgid "Forward" msgstr "Вперед" #: menus.c:653 msgid "Back to Start" msgstr "Черные начинают" #: menus.c:654 msgid "Forward to End" msgstr "В конец" #: menus.c:659 msgid "Flip View" msgstr "Разворот доски" #: menus.c:662 msgid "Move History" msgstr "Истоия ходов" #: menus.c:663 msgid "Evaluation Graph" msgstr "График оценки позиции" #: menus.c:664 msgid "Game List" msgstr "Список партий" #: menus.c:667 msgid "Comments" msgstr "Комментарии" #: menus.c:668 msgid "ICS Input Box" msgstr "Поле ввода команд для ICS" #: menus.c:669 msgid "ICS/Chat Console" msgstr "Консоль чата ICS" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Править комментарий..." #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Редактировать список движков..." #: menus.c:674 msgid "Board..." msgstr "Доска..." #: menus.c:675 msgid "Fonts..." msgstr "Шрифты..." #: menus.c:676 msgid "Game List Tags..." msgstr "Содержание списка партий..." #: menus.c:681 msgid "Machine White" msgstr "Компьютер белыми" #: menus.c:682 msgid "Machine Black" msgstr "Компьютер черными" #: menus.c:683 msgid "Two Machines" msgstr "Компьютер против компьютера" #: menus.c:684 msgid "Analysis Mode" msgstr "Анализ" #: menus.c:685 msgid "Analyze Game" msgstr "Анализировать игру" #: menus.c:688 msgid "Training" msgstr "Тренировка" #: menus.c:689 msgid "ICS Client" msgstr "Клиент ICS" #: menus.c:691 msgid "Machine Match" msgstr "Начать матч движков" #: menus.c:692 msgid "Pause" msgstr "Пауза" #: menus.c:697 msgid "Accept" msgstr "Принять" #: menus.c:698 msgid "Decline" msgstr "Отклонить" #: menus.c:699 msgid "Rematch" msgstr "Переиграть матч" #: menus.c:701 msgid "Call Flag" msgstr "Проверить время" #: menus.c:702 msgid "Draw" msgstr "Ничья" #: menus.c:703 msgid "Adjourn" msgstr "Отложить" #: menus.c:704 msgid "Abort" msgstr "Отменить" #: menus.c:705 msgid "Resign" msgstr "Сдаться" #: menus.c:707 msgid "Stop Observing" msgstr "Прекратить наблюдение за игрой" #: menus.c:708 msgid "Stop Examining" msgstr "Прекратить изучение партии" #: menus.c:709 msgid "Upload to Examine" msgstr "Загрузить на сервер для изучения" #: menus.c:711 msgid "Adjudicate to White" msgstr "Присудить победу белым" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Присудить победу черным" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Присудить ничью" #: menus.c:718 msgid "Edit Engine List..." msgstr "Редактировать список движков..." #: menus.c:720 msgid "Load New 1st Engine..." msgstr "Загрузить новый первый движок" #: menus.c:721 msgid "Load New 2nd Engine..." msgstr "Загрузить новый второй движок" #: menus.c:723 msgid "Engine #1 Settings..." msgstr "Настройки движка 1..." #: menus.c:724 msgid "Engine #2 Settings..." msgstr "Настройки движка 2..." #: menus.c:725 msgid "Common Settings..." msgstr "Общие настройки..." #: menus.c:727 msgid "Hint" msgstr "Подсказка..." #: menus.c:728 msgid "Book" msgstr "Книга..." #: menus.c:730 msgid "Move Now" msgstr "Сделать ход сейчас" #: menus.c:731 msgid "Retract Move" msgstr "Взять ход назад" #: menus.c:736 #, fuzzy msgid "Mute all Sounds" msgstr "Звук перемещения фигуры" #: menus.c:739 msgid "General..." msgstr "Общие..." #: menus.c:741 msgid "Time Control..." msgstr "Контроль времени..." #: menus.c:742 msgid "Adjudications..." msgstr "Присуждение..." #: menus.c:743 msgid "ICS..." msgstr "ICS..." #: menus.c:744 msgid "Tournament..." msgstr "Турнир..." #: menus.c:745 msgid "Load Game..." msgstr "Загрузка игры..." #: menus.c:746 msgid "Save Game..." msgstr "Сохранение игры..." #: menus.c:747 msgid "Game List..." msgstr "Список партий..." #: menus.c:748 msgid "Sounds..." msgstr "Звуки..." #: menus.c:751 msgid "Always Queen" msgstr "Ферзь всегда" #: menus.c:757 msgid "Flash Moves" msgstr "" #: menus.c:759 msgid "Highlight Dragging" msgstr "Выделять при перетаскивании" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Выделять стрелкой" #: menus.c:763 msgid "Move Sound" msgstr "Звук перемещения фигуры" #: menus.c:765 msgid "Periodic Updates" msgstr "Периодические обновления" #: menus.c:767 msgid "Popup Exit Message" msgstr "Сообщение при выходе" #: menus.c:769 msgid "Show Coords" msgstr "Показывать координаты" #: menus.c:770 msgid "Hide Thinking" msgstr "Скрывать вывод движка" #: menus.c:774 msgid "Save Settings Now" msgstr "Сохранить настройки сейчас" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Сохранять настройки при выходе" #: menus.c:780 msgid "Info XBoard" msgstr "Информация по XBoard" #: menus.c:781 msgid "Man XBoard" msgstr "Справка по использованию XBoard" #: menus.c:783 msgid "XBoard Home Page" msgstr "Домашняя страница XBoard" #: menus.c:784 msgid "On-line User Guide" msgstr "Руководство пользователя онлайн" #: menus.c:785 msgid "Development News" msgstr "Новости разработки" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "Отправить отчет об ошибке по e-Mail" #: menus.c:825 msgid "File" msgstr "Файл" #: menus.c:826 msgid "Edit" msgstr "Правка" #: menus.c:827 msgid "View" msgstr "Вид" #: menus.c:828 msgid "Mode" msgstr "Режим" #: menus.c:829 msgid "Action" msgstr "Игра" #: menus.c:830 msgid "Engine" msgstr "Движок" #: menus.c:831 msgid "Options" msgstr "Настройки" #: menus.c:832 msgid "Help" msgstr "Справка" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "название движка" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "ход" #: nengineoutput.c:156 msgid "Engine output" msgstr "Вывод движка" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "Оценка позиции" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "График просчетов" #: nevalgraph.c:107 msgid "Blunder" msgstr "Просчет" #: nevalgraph.c:107 msgid "Eval" msgstr "Оценка" #: ngamelist.c:87 msgid "find position" msgstr "найти позицию" #: ngamelist.c:88 msgid "narrow" msgstr "стрелка" #: ngamelist.c:89 msgid "thresholds" msgstr "предел" #: ngamelist.c:90 msgid "tags" msgstr "признаки" #: ngamelist.c:91 msgid "next" msgstr "далее" #: ngamelist.c:92 msgid "close" msgstr "закрыть" #: ngamelist.c:116 msgid "No game selected" msgstr "Выберите партию из списка" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "Достигнут конец списка" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "Поиск в играх (%d)" #: ngamelist.c:211 msgid "previous page" msgstr "предыдущая страница" #: ngamelist.c:214 msgid "next page" msgstr "следующая страница" #: ngamelist.c:217 msgid "no games matched your request" msgstr "по Вашему запросу игр не найдено" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "" #: ngamelist.c:284 msgid "There is no game list" msgstr "Нет списка партий" #: nhistory.c:109 msgid "Move list" msgstr "Список ходов" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "%s: неопознанный цвет %s\n" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s: не могу обработать цвет фона в '%s'\n" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "" "%s: не могу обработать названия цветов; отключение использования цветов\n" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "ОШИБКА: неизвестный пользователь %s (в пути %s)\n" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "Поддержка сокетов не задана в" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "внутренняя команда rcmd не применима в Unix" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "белый пиксель = 0x%lx, черный пиксель = 0x%lx\n" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "просмотреть" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "Ctrl" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "Alt" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "Shift" #~ msgid "Common Engine..." #~ msgstr "Общие для движков..." xboard-4.9.1/po/stamp-po0000644000175000001440000000001212747544040012022 00000000000000timestamp xboard-4.9.1/po/Makevars0000755000175000001440000000341612717001265012043 00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Free Software Foundation, Inc. # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS = # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = xboard-4.9.1/po/zh_HK.gmo0000644000175000001440000003710512747544040012063 00000000000000= "'2Zn")%%*Pap y      + DRdkq   $-)Jt   &%5[w! !&$@'e      +&1!X&z(!4S0l.  1CZ/s ,=Pdy   0! 4J Yex  -))W-)%"" ' 1 5 O i z        !1!F!K!N!_!g!l!#}!!!!!!! "","4" :"E"Y"^"p"" "" " """"&#!;#*]#(#&## ##$&$@$I$[$"l$,$($$$%&%%E%k%% % %'%'&%9&2_&& &&&&&''6'.S' ''''!'1'/(b2()) )))))****J*3e*6*?*+ + 0+:+"A+d+z+++++++ ,&,9,L,P,W,^, q, ~, ,,,, ,,,,' -3-D-]-v-z-- -----".#.B.%U.{. ...!.!... / / 0/:/M/ ]/j// / // //$/$/*00:0k00,00*0!1-01 ^1h1o1;1 1 11112 2592 o2|2 2222 2!2 3343J3`3 v3 3 3 3 3?3$3464 N4[4b4u4444444444=5@M5=5@5' 6 56 B6L6S6W6q6666666$67&7<7U7o7v7}7 777777778858E8X8_8c8s888888889 9 999J9b9 y9999 99:#: B:L:b:6x:<:9:-&;T;j;z;";;!;;!<)<H<g<)<<< <<< < ==4=D=`=,s=-=="=E=>>bk2X#/Yd[LU0QC{*fo>DG3~]6'}Ov4_ux.FZa`(T|5Jcn%&1y=IeNi,lgw9 z"+ \s M;8?h-:P EtVjWp$A!K @mr)<^BR7qHS%s does not support analysisAbout XBoardActionAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate to BlackAdjudicate to WhiteAlarmAlready at end of gameAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-KibitzAuto-ObserveAuto-Raise BoardAuto-Refresh Seek GraphBackground Observe while PlayingBad FEN position in clipboardBad FEN position in fileBad game fileBad position fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBoard OptionsBoard...BookBook Depth (moves):Book Variety (0) vs. Strength (100):Both flags fellCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't seek on game fileCan't seek on position fileCannonCannot build game listChancellorClear boardCommentsCommon Engine SettingsConnection closed by ICSCopy Game ListCould not connect to host %s, port %sCould not open comm port %sCould not parse moveCouldn't parse move "%s" from ICSDark Square Color:Default BeepDemoteDetect all MatesDisplayed move is not currentDisplayed position is not currentDraw after N Moves Total:Draw if Insufficient Mating MaterialDual Board for Background-Observed GameEGTB Cache Size (MB):EditEdit CommentEdit TagsEdit commentEdit comment on %d.%s%sElephantEmpty squareEnd of gameEngine #1 Has Own BookEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvaluation graphExitingFailed to invoke cmailFailed to start %s chess program %s on %s: %s Fatal ErrorFileFirst Black Move:First White Move:Game List Tags...Game not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGap in move listGeneralGeneral OptionsGet Move ListGot end of file from keyboardHash-Table Size (MB):HelpHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sICS ClientICS OptionsIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move in ICS output: "%s"Illegal move: %d.%s%sIncorrect moveInformationIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnKingKnightLight Square Color:Load Game OptionsMachine MatchMachine accepts your draw offerMachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMatch %s vs. %s: final score %d-%d-%dMaximum Number of CPUs per Engine:ModeMono ModeNPSNegate Score of Engine #1Negate Score of Engine #2New Shuffle GameNew VariantNo SoundNo game has been loaded yetNo game selectedNo hint availableNo more games in this messageNo moves in gameNo position has been loaded yetNo unfinished gamesNo unfinished games NoteOKOne-Click MovingOptionsPawnPeriodic UpdatesPeriodic Updates (in Analysis Mode)PlayPonder Next MovePopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition not found in filePremovePremove Highlight Color:PromoteQueenQuiet PlayReady to send mail RookSave Game OptionsSave Settings NowSave Settings on ExitSeek GraphShow CoordinatesShow CoordsSound OptionsStart-position number:Starting chess programStartup failure on '%s'Still need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s TagsTest LegalityThat square is occupiedThere is no game listThere is no pending offer on this moveTrainingTraining mode offTraining mode onTraining mode requires a game fileTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineUnknown initialMode %sUnknown variant name %sUpload to ExamineVariant %s not supported by %sVariant %s supported only in ICS modeVerify Engine Result ClaimsWaiting for first chess programWaiting for reply from opponent Waiting for second chess programWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite to playWhite's flag fellWin / Loss Threshold:You are not examining a gameYou are playing BlackYou are playing WhiteYou can't revert while pausingYou have not made a move yetYou must make your move before offering a drawYour opponent is not out of timebad searchTime option %sbad timeControl option %sdownprotocol version %d not supportedsay Internal error; bad moveType %d (%d,%d-%d,%d)upProject-Id-Version: GNU xboard master-20110411 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: zh_HK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit %s 不支持分析功能關於XBoard(A)行為(A)提請仲裁(D)簡易和棋判決(T)裁決黑贏 (B)裁決紅贏 (W)提示棋局已經結束ICS輸出不明確的著法"%s"不明確的著法 %d.%s%s"Analysis"(分析)模式無法在ICS模式下工作"Analysis"(分析)模式必須啟動國際象棋引擎"AnalyzeFile"(分析檔案)模式必須指定一個棋局檔案動畫拖曳(D)動畫走棋(A)註解(A)國師自動超時判負(F) Ctrl+Shift+F自動翻轉棋盤(V)自動註解(A)自動"kibitz"(A)自動觀棋(O)自動改變棋盤大小(R)自動刷新圖表(R)背景觀察(v)剪貼簿的FEN盤面錯誤檔案中的FEN盤面錯誤棋局檔案錯誤盤面檔案錯誤象黑方黑子輪到黑方走棋黑方超時盲棋(B)棋盤選項棋盤選項(B)...開局庫(B)...庫著法深度庫變例雙方都超時了無法再後退了無法再前進了沒有象棋程式時無法進行比賽無法打開"%s"無法搜尋棋局檔案無法搜尋盤面檔案炮無法建立棋局列表宰相清空棋盤編輯註解(C) *.*通用引擎設定連接被ICS關閉複製遊戲列表到剪貼簿無法連接主機 %s 連接埠 %s無法打開通訊連接埠 %s無法解析著法無法解析從ICS讀到的著法"%s"黑格預設聲音降級檢測將殺(M)顯示的著法不是當前著法顯示的盤面不是當前盤面幾著後判和子力不足時判和(I)雙棋盤(D)EGTB 大小(MB)編輯(E)編輯註解(C)...編輯標籤(T)編輯註解編輯註解 %d.%s%s象清空格子棋局結束引擎1有自用庫引擎輸出錯誤讀取著法時出錯,超出棋盤讀取著法時出錯,巢狀錯誤讀取著法時出錯,出現兩個開頭從%s國際象棋程式(%s)接收訊息時出錯讀取ICS訊息時出錯讀取鍵盤時出錯發送訊息到%s國際象棋程式時出錯發送訊息給ICS時出錯發送訊息給國際象棋程式時出錯發送訊息給顯示器時出錯錯誤:%s國際象棋程式(%s)異常終止審局圖離開呼叫cmail失敗無法啟動%s國際象棋程式 %s(在主機 %s 上),%s 嚴重錯誤檔案(F)黑方先走(B)紅方先走(W)遊戲列表...檔案中沒有找到棋局棋局數量超出範圍棋局太長,需要增加"MAX_MOVES"並重新編譯著法斷開一般選項(G)...一般選項取得著法列表(G)讀取鍵盤時遇到檔案尾雜湊表大小(MB)說明(H)與人對弈時隱藏思考細節格子標記拖曳醒目提示(H)標記上一著法(M)用箭頭突出移動用箭頭突出移動提示(H)...提示 %sICS客戶端ICS設定著法錯誤不合法著法"%s" (%s國際象棋程式拒絕接受該著法)從%s機器讀到不合法著法"%s"ICS輸出不明確的著法"%s"不合法著法 %d.%s%s著法錯誤資訊輪到黑方走棋輪到紅方走棋沒有輪到黑方走棋沒有輪到紅方走棋輪到你走棋王馬白格載入棋局選項電腦比賽(M)電腦同意和棋"MachineBlack"(電腦執黑)模式無法在ICS模式下運行"MachineBlack"(電腦執黑)模式必須啟動國際象棋引擎"MachineWhite"(電腦執紅)模式無法在ICS模式下運行"MachineWhite"(電腦執紅)模式必須啟動國際象棋引擎比賽 %s vs. %s: 最終比分 %d-%d-%d最大CPU數模式(M)黑白NPS引擎 #1 是絕對分數引擎 #2 是絕對分數洗牌遊戲(u)...變種無聲尚未有棋局載入沒有選中棋局沒有可用的提示這條訊息不包含更多的棋局棋局中沒有著法尚未有盤面載入不存在未完成棋局不存在未完成棋局 註解確定單擊移動(M)選項(O)兵定期更新(U)定期更新(分析模式)播放同步思考(N)離開時提示(P)離開時提示(P)提示錯誤著法(E)檔案中沒有找到盤面預先走棋(P)預先走棋標記升變后落子無聲(Q)準備送信就緒 車儲存棋局選項立即儲存設定(N)離開時儲存設定(X)可選對手圖表(k)顯示坐標(C)顯示坐標(C)聲音啟動位置號碼(S)啟動國際象棋程式無法啟動'%s'棋局 %s 仍需走棋 本棋局仍需走棋 所有 %d 棋局皆仍需走棋 兩棋局皆仍需走棋 棋局 %s 仍需走棋 編輯標籤(T)檢查著法合理性(L) Cl+Sh+L格子已有棋子沒有棋局列表該著法沒有待定的提議訓練(N)訓練模式已關閉訓練模式已打開"Training"(訓練)模式必須指定一個棋局檔案"TwoMachines"(電腦對弈)模式無法在ICS模式下運行"TwoMachines"(分析)模式必須啟動國際象棋引擎未知的"initialMode"(初始模式)選項 %s未知的變體名 %s上傳檢查(U)變體 %s 不被 %s 所支持變體 %s 只在ICS模式下支持驗證引擎聲明(V)等待第一個國際象棋程式等待對手回應 等待第二個國際象棋程式注意:你正在研究棋局注意:你正在觀棋棋局注意:你正在進行棋局警告: 第二個引擎(%s) 不支持此!紅方輪到紅方走棋紅方超時輸/贏判決門檻沒有分析棋局你在執黑你在執紅暫停時不能復原棋局你尚未走棋必須走完棋才能提和對手沒有超時非法的"searchTime"(搜尋時間)選項 %s非法的"timeControl"(時間控制)選項 %s向下通訊協定版本 %d 不被支持say 內部錯誤,非法的"moveType"(著法類型) %d (%d,%d-%d,%d)向上xboard-4.9.1/po/fr.po0000644000175000001440000021133612747543737011337 00000000000000# French translation for xboard. # Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the xboard package. # # Florian Ganee , 2014. # Stéphane Aulery , 2015, 2016. # msgid "" msgstr "" "Project-Id-Version: xboard 4.9.0-pre2\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2016-04-06 00:21+0200\n" "Last-Translator: Stéphane Aulery \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Lokalize 1.5\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "%s dans le fichier de configuration\n" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "Valeur de l'entier %s incorrecte" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "Argument %s non reconnu" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "Aucune valeur donnée pour l'argument %s" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Incomplet \\ fuite en valeur pour %s" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "Impossible d'ouvrir le fichier des indirections %s" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Valeur de l'argument booléen %s non reconnue " #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "Premier" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "Deuxième" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "Version %d du protocole non supportée" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "Vous n'avez pas précisé l'exécutable du moteur / moteur exécutable ?" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "Option %s du timeControl incorrecte " #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "Option %s de searchTime incorrecte " #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "La variante %s n'est supporté qu'en mode ICS" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "Nom divers %s inconnu" #: backend.c:1457 msgid "Starting chess program" msgstr "Démarrage du jeu d'échecs" #: backend.c:1480 msgid "Bad game file" msgstr "Fichier de jeu incorrect" #: backend.c:1487 msgid "Bad position file" msgstr "Chemin de fichier incorrect" #: backend.c:1501 msgid "Pick new game" msgstr "Choisissez nouveau jeu" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" "Vous avez redémarré un tournoi déjà terminé.\n" "Une nouvelle manche va y être ajoutée.\n" "Les jeux débutent dans 10 secondes." #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "Tous les jeux du tournoi '%s' sont déjà terminés ou sont en cours" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "Impossible d'obtenir un match sans programme d'échecs" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "Impossible d'ouvrir le port de communication %s" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "Impossible de se connecter à l'hôte %s, au port %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "initialMode %s inconnu" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "Le mode AnalyzeFile nécessite un fichier de jeu" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "Le mode Analyse nécessite un moteur d'échecs" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "Le mode Analyse n'est pas compatible avec le mode ICS" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "Le mode MachineWhite nécessite un moteur d'échecs" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "Le mode MachineWhite n'est pas compatible avec le mode ICS" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "Le mode MachineBlack nécessite un moteur d'échecs" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "Le mode MachineBlack n'est pas compatible avec le mode ICS" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "Le mode Versus requiert un moteur d'échecs" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "Le mode multi-joueurs n'est pas compatible avec le mode ICS" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "Le mode d'entraînement nécessite un fichier de jeu" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "Erreur dans l'écriture vers ICS" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "Erreur dans la lecture du clavier" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "Fin de fichier obtenue du clavier" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "Type étranger %d inconnu" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "Erreur lors d'écriture sur l'écran" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "Votre adversaire vous conseille : %s" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "" "Erreur lors du rassemblement de la liste des mouvements : deux en-têtes" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "" "Erreur lors du rassemblement de la liste des mouvements : enchevêtrement " #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "contre" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "Mouvement non autorisé (rejeté par l'ICS)" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "Connexion terminée par l'ICS" #: backend.c:4306 msgid "Error reading from ICS" msgstr "Erreur lors de la lecture de l'ICS" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" "Échec lors de l'analyse la chaîne du plateau :\n" "\"%s\"" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "Jeu trop long; augmentez MAX_MOVES et recompilez" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "" "Erreur lors du rassemblement de la liste des mouvements : plateau superflu" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Impossible d'analyser le mouvement \"%s\" de l'ICS" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "Une erreur interne est survenue; moveType %d (%d,%d-%d,%d) incorrect" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "" "Vous ne pouvez pas exécuter cette action en tant que joueur ou observateur" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "Recompilez pour supporter ce BOARD_RANKS ou BOARD_FILES !" #: backend.c:6858 msgid "You are playing Black" msgstr "Vous jouez les Noirs" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "Vous jouez les Blancs" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Au tour des Blancs de jouer" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Au tour des Noirs de jouer" #: backend.c:6920 msgid "Displayed position is not current" msgstr "La position affichée n'est pas la position courante" #: backend.c:7123 msgid "rights granted" msgstr "droits accordés" #: backend.c:7123 msgid "rights revoked" msgstr "droits révoqués" #: backend.c:7175 msgid "Illegal move" msgstr "Mouvement interdit" #: backend.c:7255 msgid "End of game" msgstr "Fin de partie" #: backend.c:7258 msgid "Incorrect move" msgstr "Mouvement incorrect" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "Amenez le pion en arrière pour le sous-promouvoir" #: backend.c:7780 msgid "only marked squares are legal" msgstr "Seuls les cases marquées sont autorisées" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "Le tournoi à système suisse est terminé" #: backend.c:8632 msgid "could not load EGBB library" msgstr "Impossible de charger la bibliothèque EGBB" #: backend.c:8635 msgid "wrong EGBB version" msgstr "Version d'EGBB incorrecte" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "Jumelage invalide de la part du moteur de jumelage" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Mouvement \"%s\" interdit de la machine %s" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "FEN reçue du moteur incorrecte " #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "" "Le moteur n'a pas fourni de d'installation pour une variante non-standard " #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s ne supporte pas l'analyse" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Mouvement \"%s\" interdit (rejeté par le programme d'échecs %s)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Échec dans le démarrage du programme d'échec %s %s sur %s: %s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "Indice : %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" "Mouvement d'indice \"%s\" interdit\n" "dans le programme d'échecs %s" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "La machine accepte votre proposition de match nul" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" "La machine propose un match nul.\n" "Sélectionnez Action / Égalité pour accepter." #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "Écriture de PV échouée" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Mouvement ambigu dans la sortie ICS : \"%s\"" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Mouvement interdit dans la sortie ICS : \"%s\"" #: backend.c:10132 msgid "Gap in move list" msgstr "Il y a un trou dans la liste des mouvements " #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "La variante %s n'est pas supportée par %s" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr ", mais %s est" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "Échec de démarrage sur '%s'" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "En attente du premier programme d'échecs" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "En attente du second programme d'échecs" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "Impossible d'écrire dans le fichier du tournoi" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" "Vous ne pouvez pas remplacer un moteur pendant qu'il est engagé !\n" "Veuillez d'abord clôturer le jeu associé. " #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "Aucun moteur portant le nom fourni n'est installé" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" "Tout d'abord, changez le moteur d'échecs en éditant la liste des " "participants\n" "de la boîte de dialogue Options du Tournoi" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "Vous ne pouvez changer qu'un seul moteur à la fois " #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "Aucun moteur %s n'est installé" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" "Vous devez fournir un fichier de tournoi,\n" "afin de conserver la progression du tournoi" #: backend.c:11200 msgid "Not enough participants" msgstr "Pas assez de participants" #: backend.c:11403 msgid "Bad tournament file" msgstr "Mauvais fichier de tournoi" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "En attente d'autres parties" #: backend.c:11428 msgid "No pairing engine specified" msgstr "Aucun moteur de jumelage n'est spécifié" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "Temps de résolution moyen %4.2f s (durée totale %4.2f s) " #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "%d mouvements d’évitement joués" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "%d résolus sur %d (%3.1f%%) " #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Match %s contre %s : score final %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Mouvement interdit : %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Mouvement ambigu : %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "Impossible d'ouvrir \"%s\"" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "Impossible de construire la liste de jeu" #: backend.c:12574 msgid "No more games in this message" msgstr "Plus de jeux dans ce message" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "Aucun jeu n'a encore été chargé " #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "Impossible de reculer davantage" #: backend.c:13065 msgid "Game number out of range" msgstr "Numéro de la partie hors de la plage" #: backend.c:13076 msgid "Can't seek on game file" msgstr "Impossible d'appeler le fichier de jeu" #: backend.c:13134 msgid "Game not found in file" msgstr "Partie non trouvée dans le fichier" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "Position de FEN incorrecte dans le fichier" #: backend.c:13423 msgid "No moves in game" msgstr "Aucun mouvement dans le jeu" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "Aucune position n'a encore été chargée" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "Impossible d'appeler le fichier de position" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "Position non trouvée dans le fichier" #: backend.c:13645 msgid "Black to play" msgstr "Aux noirs de jouer" #: backend.c:13648 msgid "White to play" msgstr "Aux blancs de jouer" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "En attente de l'accès au fichier de sauvegarde" #: backend.c:13737 msgid "Saving game" msgstr "Sauvegarde du jeu en cours" #: backend.c:13738 msgid "Bad Seek" msgstr "Mauvaise recherche" #: backend.c:14111 msgid "Saving position" msgstr "Sauvegarde de la position en cours" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" "Vous avez modifié l'historique de la partie.\n" "Utilisez Recharger la Même Partie et faites votre mouvement encore une fois. " #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" "Vous avez entré trop de mouvements.\n" "Veuillez retourner à une position correcte and veuillez réessayer. " #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" "La position affichée n'est pas la position courante.\n" "Avancez d'un pas vers la position correcte et veuillez réessayer. " #: backend.c:14294 msgid "You have not made a move yet" msgstr "Vous n'avez pas encore fait de mouvement" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" "Le message cmail n'est pas chargé.\n" "Utilisez Recharger le Message CMail et veuillez refaire votre mouvement." #: backend.c:14320 msgid "No unfinished games" msgstr "Aucune partie non terminée" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" "Vous avez déjà envoyé un mouvement par mail.\n" "Veuillez attendre que votre adversaire vous envoie un mouvement.\n" "Pour renvoyer le même mouvement, tapez\n" "\"cmail -remail -game %s\"\n" "dans la ligne de commande." #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "Échec lors de l'invocation de cmail" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "En attente de la réponse de votre adversaire\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "" "Il est encore nécessaire de faire un mouvement pour la partie restante\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "" "Il est encore nécessaire de faire des mouvements pour les deux parties " "restantes\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "" "Il est encore nécessaire de faire des mouvements pour les %d parties " "restantes\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "Il est encore nécessaire de faire un mouvement pour la partie %s\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "Aucun jeu non terminé\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "Prêt à envoyer le mai\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Il est encore nécessaire de faire des mouvements pour les parties %s\n" #: backend.c:14656 msgid "Edit comment" msgstr "Édit un commentaire" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Édit un commentaire sur %d.%s%s" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "Vous n'observez aucune partie " #: backend.c:14824 msgid "It is not White's turn" msgstr "C'est maintenant au tour des Blancs" #: backend.c:14907 msgid "It is not Black's turn" msgstr "C'est maintenant au tour des Noirs" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "Démarrage du programme d'échecs %s" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" "Veuillez attendre votre tour,\n" "ou sélectionnez 'Bouger maintenant'." #: backend.c:15188 msgid "Training mode off" msgstr "Mode d'entraînement éteint " #: backend.c:15196 msgid "Training mode on" msgstr "Mode d'entraînement démarré" #: backend.c:15199 msgid "Already at end of game" msgstr "Déjà à la fin de la partie" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "Attention : Vous êtes encore en train de jouer une partie " #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "Attention : Vous êtes encore en train d'observer une partie " #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "Attention : Vous êtes encore en train d'examiner une partie " #: backend.c:15365 msgid "Click clock to clear board" msgstr "Cliquez sur le chronomètre pour nettoyer le plateau" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "Fermer l'analyse du moteur ICS..." #: backend.c:15711 msgid "That square is occupied" msgstr "La case est occupée" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "Il n'y a aucune offre en suspens pour ce mouvement " #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "Votre adversaire n'est pas en retard" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "Vous devez faire votre mouvement avec de proposer un match nul" #: backend.c:16220 msgid "You are not examining a game" msgstr "Vous n'êtes pas en train d'étudier le jeu" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "Vous ne pouvez pas revenir en arrière lorsque vous êtes en pause" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "C'est à vous de jouer" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "Veuillez patienter jusqu'à votre tour" #: backend.c:16348 msgid "No hint available" msgstr "Aucun indice n'est disponible" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "Liste de jeux non chargée ou vide" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "Fichier de bibliothèque existant ! Essayez encore pour écraser." #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "Erreur lors de l'écriture dans le programme d'échecs %s" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "Le programme %s quitte sur un match nul (%s)" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Erreur : le programme d'échec %s (%s) a quitté de façon inattendue" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Erreur de lecture dans le programme d'échecs %s (%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "Le moteur %s possède trop d'options\n" #: backend.c:17521 msgid "Displayed move is not current" msgstr "Le mouvement affiché n'est pas celui qui est courant " #: backend.c:17530 msgid "Could not parse move" msgstr "Impossible d'analyser le mouvement " #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "Les deux drapeaux ont chuté" #: backend.c:17657 msgid "White's flag fell" msgstr "Le drapeau des Blancs a chuté" #: backend.c:17679 msgid "Black's flag fell" msgstr "Le drapeau des Noirs a chuté" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" "Le réajustement d'horloge n'est pas autorisé dans le mode drapeau automatique" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "Mauvaise position FEN dans le presse-papier" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "Bibliothèque d'ouverture invalide" #: book.c:722 msgid "Book Fault" msgstr "Défaut de bibliothèque" #: book.c:877 msgid "Hash keys are different" msgstr "Les clés de hashage sont différentes" #: book.c:1054 msgid "Could not create book" msgstr "Impossible de créer la bibliothèque" #: dialogs.c:287 msgid "Tournament file: " msgstr "Fichier de tournoi :" #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "Pour les parties de tournoi simultanées avec plusieurs XBoards :" #: dialogs.c:289 msgid "Sync after round" msgstr "Synchronisation après le tour" #: dialogs.c:290 msgid "Sync after cycle" msgstr "Synchronisation après le cycle" #: dialogs.c:291 msgid "Tourney participants:" msgstr "Participants du tournoi : " #: dialogs.c:292 msgid "Select Engine:" msgstr "Sélectionnez le moteur :" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "Type du tournoi (0 = toutes rondes, 1 = gantelet) : " #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "Nombre de cycles du tournoi (ou rondes suisses) : " #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "Nombre de jeux par défaut dans le match (ou appariement ) :" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "Pause entre les jeux de match (msec) :" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "Sauvegarder les jeux de tournoi sur :" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "Fichier de jeu avec ouverture de lignes :" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "Nombre de jeux (-1 ou -2 = incrémentation automatique) : " #: dialogs.c:307 msgid "File with Start Positions:" msgstr "Fichier avec les positions de départ : " #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "Nombre de positions (-1 ou -2 = incrémentation automatique) :" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "Rebobinage d'index après ce nombre de jeux (0 = jamais) :" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "Désactiver ses propres bibliothèques de moteurs par défaut" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "Contrôle temporel" #: dialogs.c:312 msgid "Common Engine" msgstr "Moteur commun" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Options générales" #: dialogs.c:314 msgid "Continue Later" msgstr "Poursuivre ultérieurement " #: dialogs.c:315 msgid "Replace Engine" msgstr "Remplacer le moteur" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "Mettre à niveau le moteur" #: dialogs.c:317 msgid "Clone Tourney" msgstr "Fermer le tournoi" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "" "Tout d'abord, vous devez spécifier un fichier de tournoi existant à cloner " #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "# aucun moteur n'est installé" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "Erreur interne : réglage PARTICIPANTS erroné" #: dialogs.c:389 msgid "Tournament Options" msgstr "Options du tournoi" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "Analyse absolue des scores " #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "Presque toujours une Reine (voire une sous-promotion)" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "Traînée animée" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "Mouvement animé" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Drapeau automatique" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Retournement de vue automatique" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "Aveugle" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "Menu déroulant" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "Autoriser les arbres de variation" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "En-têtes dans la fenêtre de sortie du moteur" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "Cacher la pensée de l'Humain" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Surligner le dernier mouvement " #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Surligner avec une flèche" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Déplacement en un clic" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "Mises à jour périodiques (en mode d'analyse)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "Mouvement(s) de jeu du PV sélectionné (Analyse)" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "Réfléchir au mouvement suivant" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Faire apparaître les messages de sortie" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Faire apparaître les erreurs de mouvement" #: dialogs.c:429 msgid "Scores in Move List" msgstr "Scores dans la liste des mouvements" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Montrer les coordonnées" #: dialogs.c:431 msgid "Show Target Squares" msgstr "Montrer les cases cibles" #: dialogs.c:432 msgid "Sticky Windows" msgstr "Fenêtres collantes" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Tester la légalité" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "Dialogues de haut-niveau" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "Mouvements clignotants (0 = pas de clignotement) :" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "Taux de clignotement (haut = rapide) :" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "Vitesse des animations (haut = lent) :" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "Facteur de zoom dans le graphique d'évaluation :" #: dialogs.c:458 msgid "Normal" msgstr "Normal" #: dialogs.c:459 msgid "Makruk" msgstr "Makruk" #: dialogs.c:460 msgid "FRC" msgstr "FRC" #: dialogs.c:461 msgid "Shatranj" msgstr "Chatrang" #: dialogs.c:462 msgid "Wild castle" msgstr "Roque furieux" #: dialogs.c:463 msgid "Knightmate" msgstr "Compagnon du roi" #: dialogs.c:464 msgid "No castle" msgstr "Sans roque" #: dialogs.c:465 msgid "Cylinder *" msgstr "Cylindre *" #: dialogs.c:466 msgid "3-checks" msgstr "Tri-échecs" #: dialogs.c:467 msgid "berolina *" msgstr "Berolina *" #: dialogs.c:468 msgid "atomic" msgstr "Atomique" #: dialogs.c:469 msgid "two kings" msgstr "Deux rois" #: dialogs.c:470 msgid " " msgstr " " #: dialogs.c:471 msgid "Spartan" msgstr "Spartan" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "" "Taille de l'échiquier (-1 = par défaut pour la variante sélectionnée) :" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "Nombre de rangées :" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "Nombre de colonnes : " #: dialogs.c:475 msgid "Holdings Size:" msgstr "Taille de la zone de stockage :" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" "Les variantes marquées d'une * ne peuvent être jouées\n" " qu'avec la vérification de la légalité désactivée." #: dialogs.c:479 msgid "ASEAN" msgstr "ASEAN" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "Grand Chatrang" #: dialogs.c:481 msgid "Seirawan" msgstr "Seirawan" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "Faucon (10x8)" #: dialogs.c:483 msgid "Superchess" msgstr "Super échec" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "Capablanca (10x8)" #: dialogs.c:485 msgid "Crazyhouse" msgstr "Maison de fous" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "Gothique (10x8)" #: dialogs.c:487 msgid "Bughouse" msgstr "Blitz à quatre" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "Janus (10x8)" #: dialogs.c:489 msgid "Suicide" msgstr "Qui perd gagne" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "Échecs aléatoires Capablanca (10x8)" #: dialogs.c:491 msgid "give-away" msgstr "Qui perd gagne" #: dialogs.c:492 msgid "grand (10x10)" msgstr "Grand (10x10)" #: dialogs.c:493 msgid "losers" msgstr "Qui perd gagne" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "Shogi (9x9)" #: dialogs.c:495 msgid "fairy" msgstr "Féerique" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "Xianggi (9x10)" #: dialogs.c:497 msgid "mighty lion" msgstr "Mat du lion " #: dialogs.c:498 msgid "courier (12x8)" msgstr "Coursier (12x8)" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "Échecs elfiques (10x10)" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "Chu Shogi (12x12)" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Attention : le second moteur (%s) ne supporte pas cela !" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "Seul le Blitz à quatre n'est pas disponible en mode spectateur." #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" "Toutes les variantes non supportées par le premier moteur\n" "(actuellement %s) sont désactivées." #: dialogs.c:596 msgid "New Variant" msgstr "Nouvelle variante" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "Nombre maximum de CPUs par moteur :" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "Répertoire multilingue : " #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "Taille du tableau de hashage (Mo) : " #: dialogs.c:631 msgid "EGTB Path:" msgstr "Chemin EGTB : " #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "Taille du cache EGTB (Mo) :" #: dialogs.c:633 msgid "Use GUI Book" msgstr "Utiliser le livre graphique" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "Nom de fichier de bibliothèque d'ouverture : " #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "Profondeur de la bibliothèque (mouvements) :" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "Diversité de la bibliothèque (0) face à la force (100) :" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "Le moteur #1 possède sa propre bibliothèque" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "Le moteur #1 possède sa propre bibliothèque" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "Paramètres communs aux moteurs" #: dialogs.c:655 msgid "Detect all Mates" msgstr "Détecter tous les partenaires" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "Vérifier les déclarations du résultat du moteur" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "Faire match nul si les moyens de mat sont insuffisants" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Arbitrer les matchs nuls évidents (retard de 3 mouvements)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "Règle des N coups :" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "N répétitions de position :" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "Match nul après un total de N coups :" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "Seuil de victoire / défaite :" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "Annuler le score du moteur #1" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "Annuler le score du moteur #2" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "Arbitrer les jeux non-ICS" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "Kibitz automatique" #: dialogs.c:685 msgid "Auto-Comment" msgstr "Commentaire automatique" #: dialogs.c:686 msgid "Auto-Observe" msgstr "Observation automatique" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Échiquier au premier plan automatique" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "Création automatique du script de connexion" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "Observation en second plan lors du jeu" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "Échiquier parallèle pour les jeux observés en second plan" #: dialogs.c:691 msgid "Get Move List" msgstr "Obtenir la liste des coups" #: dialogs.c:692 msgid "Quiet Play" msgstr "Jeu tranquille" #: dialogs.c:693 msgid "Seek Graph" msgstr "Graphique de recherche" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "Rafraîchissement automatique du graphique de recherche" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "Pop-up de saisi automatique" #: dialogs.c:696 msgid "Quit after game" msgstr "Quitter à la fin du jeu" #: dialogs.c:697 msgid "Premove" msgstr "Pré-coup" #: dialogs.c:698 msgid "Premove for White" msgstr "Pré-coup pour les Blancs" #: dialogs.c:699 msgid "First White Move:" msgstr "Premier coup des Blancs :" #: dialogs.c:700 msgid "Premove for Black" msgstr "Pré-coup pour les Noirs" #: dialogs.c:701 msgid "First Black Move:" msgstr "Premier coup des Noirs :" #: dialogs.c:703 msgid "Alarm" msgstr "Alarme" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "Temps de l'alarme (msec) :" #: dialogs.c:706 msgid "Colorize Messages" msgstr "Messages colorés" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "Couleurs du texte Crier:" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "Couleurs du texte S-Crier:" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "Couleurs du texte du Canal #1 :" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "Couleurs du texte Autre Canal :" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "Couleurs du texte Kibitz :" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "Couleurs du texte Dire:" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "Couleurs du texte Défi :" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "Couleurs du texte Requête : " #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "Couleurs du texte Recherche :" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "Couleurs du texte Autre :" #: dialogs.c:723 msgid "ICS Options" msgstr "Options de l'ICS" #: dialogs.c:728 msgid "Exact position match" msgstr "Correspondance de la position exacte" #: dialogs.c:728 msgid "Shown position is subset" msgstr "La position montrée est un sous-ensemble" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "Même matériel avec exactement la même structure de pions" #: dialogs.c:729 msgid "Same material" msgstr "Même matériel" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "Rangée du matériel (moitié supérieure de l'échiquier optionnelle)" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "Différence matérielle (équipement optionnel équilibré)" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "Affichage automatique des étiquettes" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "Affichage automatique des commentaires " #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" "Vitesse de jeu automatique des jeux chargés\n" "(0 = instantané, -1 = désactivé) :" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "Secondes par coup :" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" "\n" "Options à utiliser en mode spectateur de jeu: " #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" "\n" "Seuils pour le filtrage des positions dans la liste de jeux :" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "Elo du meilleur joueur en dernier :" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "Elo du joueur le plus faible en dernier :" #: dialogs.c:753 msgid "No games before year:" msgstr "Aucun jeu précédant l'année : " #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "Nombre minimum de positions consécutives :" #: dialogs.c:756 msgid "Search mode:" msgstr "Mode de recherche :" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "Associer aussi les couleurs inversées" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "Associer aussi la position inversée verticalement" #: dialogs.c:767 msgid "Load Game Options" msgstr "Charger les options de jeu" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "Sauvegarder automatiquement les parties " #: dialogs.c:780 msgid "Own Games Only" msgstr "Uniquement mes parties " #: dialogs.c:781 msgid "Save Games on File:" msgstr "Sauvegarder les parties dans le fichier :" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "Sauvegarder les positions finales dans le fichier :" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "En-têtes des résultats PGN :" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "Ancien type de sauvegarde (contrairement au PGN)" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "Inclure l'identifiant numérique dans le tournoi PGN" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "Sauvegarder la donnée Score / Profondeur dans le PGN" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "Sauvegarder la donnée Sortie de la Bibliothèque dans le PGN" #: dialogs.c:794 msgid "Save Game Options" msgstr "Sauvegarder les options de jeu" #: dialogs.c:803 msgid "No Sound" msgstr "Muet" #: dialogs.c:804 msgid "Default Beep" msgstr "Bip par défaut" #: dialogs.c:805 msgid "Above WAV File" msgstr "Fichier WAV ci-dessus" #: dialogs.c:806 msgid "Car Horn" msgstr "Klaxon de voiture" #: dialogs.c:807 msgid "Cymbal" msgstr "Cymbale" #: dialogs.c:808 msgid "Ding" msgstr "Ding" #: dialogs.c:809 msgid "Gong" msgstr "Gong" #: dialogs.c:810 msgid "Laser" msgstr "Laser" #: dialogs.c:811 msgid "Penalty" msgstr "Penalty" #: dialogs.c:812 msgid "Phone" msgstr "Téléphone" #: dialogs.c:813 msgid "Pop" msgstr "Pop" #: dialogs.c:814 msgid "Roar" msgstr "Rugissement" #: dialogs.c:815 msgid "Slap" msgstr "Claquement " #: dialogs.c:816 msgid "Wood Thunk" msgstr "Wood Thunk" #: dialogs.c:818 msgid "User File" msgstr "Fichier utilisateur" #: dialogs.c:841 msgid "User WAV File:" msgstr "Fichier WAV de l'utilisateur :" #: dialogs.c:842 msgid "Sound Program:" msgstr "Lecteur de son :" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "Son d'essai : " #: dialogs.c:844 msgid "Play" msgstr "Jouer " #: dialogs.c:845 msgid "Move:" msgstr "Coup :" #: dialogs.c:846 msgid "Win:" msgstr "Gagner :" #: dialogs.c:847 msgid "Lose:" msgstr "Perdre :" #: dialogs.c:848 msgid "Draw:" msgstr "Match nul :" #: dialogs.c:849 msgid "Unfinished:" msgstr "Non terminé :" #: dialogs.c:850 msgid "Alarm:" msgstr "Alarme :" #: dialogs.c:851 msgid "Challenge:" msgstr "Défi :" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "Répertoire de sons :" #: dialogs.c:854 msgid "Shout:" msgstr "Cri :" #: dialogs.c:855 msgid "S-Shout:" msgstr "S-Cri : " #: dialogs.c:856 msgid "Channel:" msgstr "Canal :" #: dialogs.c:857 msgid "Channel 1:" msgstr "Canal 1 :" #: dialogs.c:858 msgid "Tell:" msgstr "Dire :" #: dialogs.c:859 msgid "Kibitz:" msgstr "Kibitz :" #: dialogs.c:860 msgid "Request:" msgstr "Requêtes :" #: dialogs.c:861 msgid "Lion roar:" msgstr "Rugissement de lion :" #: dialogs.c:862 msgid "Seek:" msgstr "Recherche :" #: dialogs.c:880 msgid "Sound Options" msgstr "Options sonores" #: dialogs.c:896 msgid "Selectable themes:" msgstr "Thèmes sélectionnables :" #: dialogs.c:898 msgid "New name for current theme:" msgstr "Nouveau nom pour le thème courant :" #: dialogs.c:901 msgid "White Piece Color:" msgstr "Couleur du pion blanc :" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "R" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "G" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "B" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "D" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "Couleur du pion noir : " #: dialogs.c:917 msgid "Light Square Color:" msgstr "Couleur de la case claire :" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "Couleur de la case foncée :" #: dialogs.c:929 msgid "Highlight Color:" msgstr "Couleur de surbrillance :" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "Couleur de surbrillance de pré-coup :" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" "Retourner les pièces style Shogi (Les boutons colorés restaurent la valeur " "par défaut)" #: dialogs.c:943 msgid "Mono Mode" msgstr "Mode solo" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "Taille du logo (0 = pas de logo, redémarrage requis) :" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "Ligne d'ouverture (-1 = taille de plateau par défaut) :" #: dialogs.c:946 msgid "Use Board Textures" msgstr "Utiliser les textures de l'échiquier" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "Fichier de texture des cases noires :" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "Fichier de texture des cases blanches :" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "Utiliser des bitmaps de pièce externes avec leurs propres couleurs" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "Répertoire contenant les images des pièces :" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "# Aucun thème n'est défini" #: dialogs.c:1033 msgid "Board Options" msgstr "Options de l'échiquier" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "Menu texte de l'ICS" #: dialogs.c:1134 msgid "clear" msgstr "Nettoyer" #: dialogs.c:1135 msgid "save changes" msgstr "Sauvegarder les changements" #: dialogs.c:1233 msgid "add next move" msgstr "Ajouter le prochain mouvement" #: dialogs.c:1234 msgid "commit changes" msgstr "Enregistrer les changements" #: dialogs.c:1257 msgid "Edit book" msgstr "Éditer la bibliothèque" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Étiquettes" #: dialogs.c:1405 msgid "ICS input box" msgstr "Boîte de saisie ICS" #: dialogs.c:1437 msgid "Type a move" msgstr "Entrez un mouvement " #: dialogs.c:1463 msgid "Engine has no options" msgstr "Le moteur n'a aucune option" #: dialogs.c:1465 msgid "Engine Settings" msgstr "Réglages du moteur" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "Sélectionnez un moteur dans la liste :" #: dialogs.c:1509 msgid "or specify one below:" msgstr "ou indiquez en un ci-dessous :" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "Pseudonyme (optionnel) :" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" "Utiliser le pseudonyme dans les étiquettes du joueur en PGN des jeux moteur-" "moteur" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "Répertoire du moteur :" #: dialogs.c:1513 msgid "Engine Command:" msgstr "Commande du moteur : " #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "(Le répertoire sera dérivé du chemin du moteur s'il est vide)" #: dialogs.c:1515 msgid "UCI" msgstr "UCI" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "USI/UCCI (Utilise l’option -uxiAdapter)" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "Protocole WB v1 (ne vous attendez pas à des fonctionnalités du moteur)" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "Vous ne devez pas utiliser la bibliothèque graphique" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "Ajouter ce moteur à la liste " #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "Forcer la variante courante avec ce moteur" #: dialogs.c:1574 msgid "Load first engine" msgstr "Charger le premier moteur" #: dialogs.c:1580 msgid "Load second engine" msgstr "Charger le second moteur" #: dialogs.c:1603 msgid "shuffle" msgstr "Brassage" #: dialogs.c:1604 msgid "Fischer castling" msgstr "Roque de Fischer" #: dialogs.c:1605 msgid "Start-position number:" msgstr "Numéro de la position de départ : " #: dialogs.c:1606 msgid "randomize" msgstr "Randomiser" #: dialogs.c:1607 msgid "pick fixed" msgstr "Choix truqué" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Nouveau Jeu Aléatoire" #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "Horloges (nécessite de redémarrer) :" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "+" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "-" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "I" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "*" #: dialogs.c:1677 msgid "Message (above board):" msgstr "Message (plateau ci-dessus) :" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "ICS / Console de tchat :" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "Modifier les tags / livre / liste de moteurs :" #: dialogs.c:1695 msgid "Edit comments:" msgstr "Modifier des commentaires :" #: dialogs.c:1701 msgid "Move history / Engine Output:" msgstr "Historique des coups / Sortie du moteur :" #: dialogs.c:1707 msgid "Game list:" msgstr "Liste des parties :" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" "\n" "Les bouttons * sélectionneront la police choisie ci-dessous :" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "Fonctionne seulement avec la version GTK" #: dialogs.c:1768 msgid "Fonts" msgstr "Polices de caractères" #: dialogs.c:1791 msgid "classical" msgstr "Classique" #: dialogs.c:1792 msgid "incremental" msgstr "Incrémental" #: dialogs.c:1793 msgid "fixed max" msgstr "Maximum fixé" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "Divise par 60 le temps d’ouverture" #: dialogs.c:1795 msgid "Moves per session:" msgstr "Mouvements par session :" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "Temps initial (min) :" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "Incrémentation ou maximum (sec/mouvement) :" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "Facteurs temps d'handicap : " #: dialogs.c:1799 msgid "Engine #1" msgstr "Moteur #1" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "Moteur #2 / Humain" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "Non utilisé" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "La modification du temps en cours de partie n’est pas implémentée" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "Erreur lors de l'écriture dans le programme d'échecs" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "Annuler" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "Roi " #: dialogs.c:1972 msgid "Captain" msgstr "Capitaine " #: dialogs.c:1973 msgid "Lieutenant" msgstr "Lieutenant" #: dialogs.c:1974 msgid "General" msgstr "Général" #: dialogs.c:1975 msgid "Warlord" msgstr "Seigneur de guerre" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Cavalier" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Fou" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Tour" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "Archevêque " #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "Chancelier " #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Reine" #: dialogs.c:1988 msgid "Lion" msgstr "Lion" #: dialogs.c:1992 msgid "Defer" msgstr "Ajourner" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Promouvoir " #: dialogs.c:2050 msgid "Chats:" msgstr "Tchats : " #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 msgid "New Chat" msgstr "Nouveau tchat" #: dialogs.c:2058 msgid "Chat partner:" msgstr "Partenaire de tchat :" #: dialogs.c:2059 msgid "End Chat" msgstr "Terminer le tchat" #: dialogs.c:2060 msgid "Hide" msgstr "Cacher" #: dialogs.c:2287 msgid "ICS Interaction" msgstr "Interaction ICS" #: dialogs.c:2372 msgid "factory" msgstr "Fabrique" #: dialogs.c:2373 msgid "up" msgstr "Haut" #: dialogs.c:2374 msgid "down" msgstr "Bas" #: dialogs.c:2393 msgid "No tag selected" msgstr "Aucune étiquette n'est sélectionnée" #: dialogs.c:2424 msgid "Game-list options" msgstr "Options de la liste de jeu" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Erreur" #: dialogs.c:2545 msgid "Fatal Error" msgstr "Erreur fatale" #: dialogs.c:2545 msgid "Exiting" msgstr "En cours de fermeture" #: dialogs.c:2556 msgid "Information" msgstr "Information" #: dialogs.c:2563 msgid "Note" msgstr "Note" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Blancs" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Pion" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "Éléphant" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "Canon " #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "Rétrograder" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Case vide" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Vider l'échiquier" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Noirs" #: dialogs.c:2827 msgid "_File" msgstr "_Fichier" #: dialogs.c:2828 msgid "_Edit" msgstr "É_dition" #: dialogs.c:2829 msgid "_View" msgstr "_Vue" #: dialogs.c:2830 msgid "_Mode" msgstr "_Mode" #: dialogs.c:2831 msgid "_Action" msgstr "A_ction " #: dialogs.c:2832 msgid "E_ngine" msgstr "Mo_teur" #: dialogs.c:2833 msgid "_Options" msgstr "_Options " #: dialogs.c:2834 msgid "_Help" msgstr "_Aide" #: dialogs.c:2844 msgid "<<" msgstr "<<" #: dialogs.c:2845 msgid "<" msgstr "<" #: dialogs.c:2847 msgid ">" msgstr ">" #: dialogs.c:2848 msgid ">>" msgstr ">>" #: dialogs.c:3136 msgid "Directories:" msgstr "Répertoires : " #: dialogs.c:3137 msgid "Files:" msgstr "Fichiers :" #: dialogs.c:3138 msgid "by name" msgstr "Par nom" #: dialogs.c:3139 msgid "by type" msgstr "Par type" #: dialogs.c:3142 msgid "Filename:" msgstr "Nom du fichier : " #: dialogs.c:3143 msgid "New directory" msgstr "Nouveau répertoire" #: dialogs.c:3144 msgid "File type:" msgstr "Type du fichier : " #: dialogs.c:3219 msgid "Contents of" msgstr "Sommaire de " #: dialogs.c:3245 msgid " next page" msgstr "Page suivante" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "TOUT D'ABORD ENTREZ LE NOM DE REPERTOIRE ICI " #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "ESSAYEZ UN AUTRE NOM" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" "Aucune pièce par défaut n'est installée !\n" "Sélectionnez la vôtre en utilisant '-pieceImageDirectory'." #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "Sortie du moteur " #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "%s (%d tour réversible)" msgstr[1] "%s (%d tours réversibles)" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "NPS" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "Lecture du fichier de jeu (%d)" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s : impossible d'accéder au dossier CHESSDIR :" #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "Échec dans l'ouverture du fichier '%s'\n" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Recompilez avec BOARD_RANKS ou BOARD_FILES plus grand pour supporter cette " "taille" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s : Mauvaise syntaxe %s pour boardSize\n" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s : Nom %s de la boardSize non reconnu\n" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" "%s: Trop peu de couleurs sont disponibles; tentative du mode monochrome\n" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Incapable de créer l'ensemble des polices pour %s.\n" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s : aucune police ne correspond au motif %s\n" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "Impossible d'ouvrir le fichier temporaire" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "Échec lors de l'ouverture du fichier" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "Naviguer" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "OK" #: menus.c:136 msgid "Load game file name?" msgstr "Charger le nom du fichier de jeu ?" #: menus.c:183 msgid "Load position file name?" msgstr "Charger la position du fichier de jeu ?" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "Sauvegarder le nom du fichier de jeu ?" #: menus.c:198 msgid "Save position file name?" msgstr "Sauvegarder la position du fichier de jeu ?" #: menus.c:355 msgid " (with Zippy code)" msgstr "(avec le code)" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Copyright d'améliorations 1992-2016 Free Software Foundation\n" "Copyright d'améliorations 2005 Alessandro Scotti\n" "\n" "%s est un logiciel gratuit et ne transporte AUCUNE GARANTIE; veuillez vous " "référer au fichier COPYING pour plus d'informations.\n" "La version GTK de cette version est expérimentale et instable\n" "\n" "Visitez XBoard à l'adresse : http://www.gnu.org/software/xboard/\n" "Regardez les dernières fonctionnalités à l'adresse : http://www.gnu.org/" "software/xboard/whats_new.html\n" "\n" "Reportez les bogues par mail à l'adresse : \n" "\n" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "À propos de XBoard" #: menus.c:390 msgid "Registered Engines" msgstr "Moteurs enregistrés" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 msgid "New Game" msgstr "Nouveau jeu" #: menus.c:613 msgid "New Shuffle Game..." msgstr "Nouveau jeu aléatoire..." #: menus.c:614 msgid "New Variant..." msgstr "Nouvelle variante..." #: menus.c:616 msgid "Load Game" msgstr "Charger une partie" #: menus.c:617 msgid "Load Position" msgstr "Charger une position" #: menus.c:618 msgid "Next Position" msgstr "Position suivante" #: menus.c:619 msgid "Prev Position" msgstr "Position précédente" #: menus.c:621 msgid "Save Game" msgstr "Sauvegarder la partie" #: menus.c:622 msgid "Save Position" msgstr "Sauvegarder la position" #: menus.c:623 msgid "Save Selected Games" msgstr "Sauvegarder les parties sélectionnées" #: menus.c:624 msgid "Save Games as Book" msgstr "Sauvegarder les parties comme bibliothèques" #: menus.c:626 msgid "Mail Move" msgstr "Envoyer par mail le mouvement" #: menus.c:627 msgid "Reload CMail Message" msgstr "Recharger le message CMail" #: menus.c:629 msgid "Quit " msgstr "Quitter" #: menus.c:634 msgid "Copy Game" msgstr "Copier la partie" #: menus.c:635 msgid "Copy Position" msgstr "Copier la position" #: menus.c:636 msgid "Copy Game List" msgstr "Copier la liste des parties" #: menus.c:638 msgid "Paste Game" msgstr "Coller le jeu" #: menus.c:639 msgid "Paste Position" msgstr "Coller la position" #: menus.c:641 menus.c:686 msgid "Edit Game" msgstr "Éditer la partie" #: menus.c:642 menus.c:687 msgid "Edit Position" msgstr "Éditer la position " #: menus.c:643 msgid "Edit Tags" msgstr "Éditer les étiquettes" #: menus.c:644 msgid "Edit Comment" msgstr "Éditer le commentaire" #: menus.c:645 msgid "Edit Book" msgstr "Éditer la bibliothèque" #: menus.c:647 msgid "Revert" msgstr "Revenir" #: menus.c:648 msgid "Annotate" msgstr "Annoter" #: menus.c:649 msgid "Truncate Game" msgstr "Tronquer le jeu" #: menus.c:651 msgid "Backward" msgstr "En arrière" #: menus.c:652 msgid "Forward" msgstr "En avant" #: menus.c:653 msgid "Back to Start" msgstr "Retour au début" #: menus.c:654 msgid "Forward to End" msgstr "Avancer vers la fin" #: menus.c:659 msgid "Flip View" msgstr "Renverser la vue" #: menus.c:662 msgid "Move History" msgstr "Historique des mouvements " #: menus.c:663 msgid "Evaluation Graph" msgstr "Graphique des évaluations" #: menus.c:664 msgid "Game List" msgstr "Liste des parties" #: menus.c:667 msgid "Comments" msgstr "Commentaires" #: menus.c:668 msgid "ICS Input Box" msgstr "Boe de dialogue ICS" #: menus.c:669 msgid "ICS/Chat Console" msgstr "ICS / Console de tchat" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Éditer le commentaire" #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Éditer la liste des moteurs..." #: menus.c:674 msgid "Board..." msgstr "Échiquier..." #: menus.c:675 msgid "Fonts..." msgstr "Polices..." #: menus.c:676 msgid "Game List Tags..." msgstr "Étiquettes de la liste des parties..." #: menus.c:681 msgid "Machine White" msgstr "Blancs Machine" #: menus.c:682 msgid "Machine Black" msgstr "Noirs Machine" #: menus.c:683 msgid "Two Machines" msgstr "Deux machines" #: menus.c:684 msgid "Analysis Mode" msgstr "Mode d'analyse" #: menus.c:685 msgid "Analyze Game" msgstr "Analyser le jeu" #: menus.c:688 msgid "Training" msgstr "Entraînement" #: menus.c:689 msgid "ICS Client" msgstr "Client ICS" #: menus.c:691 msgid "Machine Match" msgstr "Match de machines" #: menus.c:692 msgid "Pause" msgstr "Pause" #: menus.c:697 msgid "Accept" msgstr "Accepter" #: menus.c:698 msgid "Decline" msgstr "Décliner" #: menus.c:699 msgid "Rematch" msgstr "Nouvelle partie" #: menus.c:701 msgid "Call Flag" msgstr "Demander un drapeau" #: menus.c:702 msgid "Draw" msgstr "Match nul" #: menus.c:703 msgid "Adjourn" msgstr "Ajourner" #: menus.c:704 msgid "Abort" msgstr "Annuler" #: menus.c:705 msgid "Resign" msgstr "Abandonner" #: menus.c:707 msgid "Stop Observing" msgstr "Arrêter d'observer" #: menus.c:708 msgid "Stop Examining" msgstr "Arrêter d'examiner" #: menus.c:709 msgid "Upload to Examine" msgstr "Télécharger pour examiner" #: menus.c:711 msgid "Adjudicate to White" msgstr "Arbitrer pour les Blancs" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Arbitrer pour les Noirs" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Arbitrer match nul" #: menus.c:718 msgid "Edit Engine List..." msgstr "Éditer la liste des moteurs..." #: menus.c:720 msgid "Load New 1st Engine..." msgstr "Charger un nouveau premier moteur... " #: menus.c:721 msgid "Load New 2nd Engine..." msgstr "Charger un nouveau second moteur..." #: menus.c:723 msgid "Engine #1 Settings..." msgstr "Réglages du moteur # 1..." #: menus.c:724 msgid "Engine #2 Settings..." msgstr "Réglages du moteur # 2..." #: menus.c:725 msgid "Common Settings..." msgstr "Paramètres communs…" #: menus.c:727 msgid "Hint" msgstr "Indice" #: menus.c:728 msgid "Book" msgstr "Bibliothèque" #: menus.c:730 msgid "Move Now" msgstr "Bouger maintenant" #: menus.c:731 msgid "Retract Move" msgstr "Rétracter le mouvement " #: menus.c:736 #, fuzzy msgid "Mute all Sounds" msgstr "Son du mouvement " #: menus.c:739 msgid "General..." msgstr "Général..." #: menus.c:741 msgid "Time Control..." msgstr "Contrôle du temps" #: menus.c:742 msgid "Adjudications..." msgstr "Décisions..." #: menus.c:743 msgid "ICS..." msgstr "ICS..." #: menus.c:744 msgid "Tournament..." msgstr "Tournoi..." #: menus.c:745 msgid "Load Game..." msgstr "Charger le jeu..." #: menus.c:746 msgid "Save Game..." msgstr "Sauvegarder le jeu..." #: menus.c:747 msgid "Game List..." msgstr "Liste des jeux..." #: menus.c:748 msgid "Sounds..." msgstr "Sons..." #: menus.c:751 msgid "Always Queen" msgstr "Toujours Reine" #: menus.c:757 msgid "Flash Moves" msgstr "Mouvements rapides" #: menus.c:759 msgid "Highlight Dragging" msgstr "Surligner la traînée" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Surligner avec une flèche" #: menus.c:763 msgid "Move Sound" msgstr "Son du mouvement " #: menus.c:765 msgid "Periodic Updates" msgstr "Mises à jour périodiques" #: menus.c:767 msgid "Popup Exit Message" msgstr "Afficher un message de sortie" #: menus.c:769 msgid "Show Coords" msgstr "Montrer les coordonnées" #: menus.c:770 msgid "Hide Thinking" msgstr "Cacher l'opinion" #: menus.c:774 msgid "Save Settings Now" msgstr "Sauvegarder les réglages maintenant" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Sauvegarder les réglages à la sortie" #: menus.c:780 msgid "Info XBoard" msgstr "Informations XBoard" #: menus.c:781 msgid "Man XBoard" msgstr "Manuel XBoard" #: menus.c:783 msgid "XBoard Home Page" msgstr "Page d'Accueil XBoard" #: menus.c:784 msgid "On-line User Guide" msgstr "Guide Utilisateur en ligne" #: menus.c:785 msgid "Development News" msgstr "Nouvelles de développement " #: menus.c:786 msgid "e-Mail Bug Report" msgstr "Reporter un bogue par mail " #: menus.c:825 msgid "File" msgstr "Fichier" #: menus.c:826 msgid "Edit" msgstr "Éditer" #: menus.c:827 msgid "View" msgstr "Vue" #: menus.c:828 msgid "Mode" msgstr "Mode" #: menus.c:829 msgid "Action" msgstr "Action " #: menus.c:830 msgid "Engine" msgstr "Moteur" #: menus.c:831 msgid "Options" msgstr "Options " #: menus.c:832 msgid "Help" msgstr "Aide" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "Nom du moteur" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "Mouvement " #: nengineoutput.c:156 msgid "Engine output" msgstr "Sortie du moteur" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" "Mauvaise association de STRIDE dans nengineoutput.c\n" "Modifiez et recompilez !" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "Graphique des évaluations" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "Graphique des gaffes" #: nevalgraph.c:107 msgid "Blunder" msgstr "Gaffe" #: nevalgraph.c:107 msgid "Eval" msgstr "Évaluer" #: ngamelist.c:87 msgid "find position" msgstr "Trouver la position" #: ngamelist.c:88 msgid "narrow" msgstr "Restreindre" #: ngamelist.c:89 msgid "thresholds" msgstr "Seuils" #: ngamelist.c:90 msgid "tags" msgstr "Étiquettes" #: ngamelist.c:91 msgid "next" msgstr "Suivant" #: ngamelist.c:92 msgid "close" msgstr "Fermer" #: ngamelist.c:116 msgid "No game selected" msgstr "Aucun jeu n'est sélectionné" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "Ne peut pas avancer plus loin " #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "Balayage parmi les parties (%d)" #: ngamelist.c:211 msgid "previous page" msgstr "Page précédente" #: ngamelist.c:214 msgid "next page" msgstr "Page suivante" #: ngamelist.c:217 msgid "no games matched your request" msgstr "Aucun jeu n'a correspondu à votre requête" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "jeux %s - %d/%d (%d-%d-%d)" #: ngamelist.c:284 msgid "There is no game list" msgstr "Il n'y a aucun jeu dans la liste" #: nhistory.c:109 msgid "Move list" msgstr "Liste des mouvements" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "%s : couleur %s non reconnue\n" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s : impossible d'analyser la couleur de premier plan dans '%s'\n" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "" "%s : impossible d'analyser les noms de couleurs; désactivation de la " "colorisation\n" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "ERREUR : Utilisateur %s inconnu (dans le chemin %s)\n" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "Le support socket n'est pas configuré" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "rcmd interne non implémenté pour Unix" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "Pixel blanc = 0x%lx, pixel noir = 0x%lx\n" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "Naviguer" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "Ctrl" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "Alt" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "Shift" xboard-4.9.1/po/it.gmo0000644000175000001440000004257712747544040011505 00000000000000KLxy ' "'J)b%%   % 2 >K\ t    $2;@$Ty).5 L Wcl%!$ 7DK\!z$'  + 5BZ c p| &!&(G^!z0+37.N }/$5= M[y  ( 40A!r   #:JOVj |-)- )0 %Z "     ! !(!9!K!i!z!!!!!!!!!#!"#"4"G"["m""""" """""" # # 1# =#K#b#y#&#!#*#($&.$U$ Z$h$$&$$$$"$, %(9%b%y%%%%%%& & )& J&'k&'&%&2&' '(':'P'm''''.' (%(,(E(_(d(l(r(!y(1((_(0*J*c*j******(* +:#+0^+5++ ++ ++,,, @,L,d, y,,0,+,,-4-<- A-L- a-l- -----!- .D&.k.5.7..). #///A/J/g//)/$//0/ 00:0?0G0(^0,00!00011 21S1e11 111111H1682Fo2-222*3H3'e33F334 4'$42L4 444444%4G5 [5 |55545554686I6a6z666666667*97)d777 7777 8&86898 A8N8l828I8@9KF9B9)99 : :)':)Q:{:: :,:::3;N;.b;-;.;;;; <<"<19<k<s<<<<<= =='=-=M=k= q=======>)>C>4Y>0>6>6>0-?^?s???0? ?!?@18@Hj@H@+@ (AIA&eA2AA A#A&B%5B*[B*B(BGB"C)C@C#]C"CCC7C!D44D9iDD#D$D DDE E)E8=EvEPhD ,$TQeF3Oc2*_K=@IRN[%! gW9Bj'vw^`0)/rs|+&:X<xYd]Lf5}7."E4 l(C-Gtzb?#6MZ~mVi >yuq ;Hapk{S1o UJ8\nA%s does not support analysisAbout XBoardActionAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate to BlackAdjudicate to WhiteAlarmAlready at end of gameAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-KibitzAuto-ObserveAuto-Raise BoardAuto-Refresh Seek GraphBackground Observe while PlayingBad FEN position in clipboardBad FEN position in fileBad game fileBad position fileBishopBlackBlack Piece Color:Black to playBlindfoldBoard OptionsBoard...BookBook Depth (moves):Book Variety (0) vs. Strength (100):Both flags fellCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't seek on game fileCan't seek on position fileCannonCannot build game listChancellorClear boardCommentsCommon Engine SettingsConnection closed by ICSCopy Game ListCould not connect to host %s, port %sCould not open comm port %sCould not parse moveCouldn't parse move "%s" from ICSDark Square Color:Default BeepDemoteDetect all MatesDisplayed move is not currentDisplayed position is not currentDraw after N Moves Total:Draw if Insufficient Mating MaterialDual Board for Background-Observed GameEGTB Cache Size (MB):EditEdit CommentEdit TagsEdit commentEdit comment on %d.%s%sElephantEmpty squareEnd of gameEngineEngine #1 Has Own BookEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvaluation graphExitingFRCFailed to invoke cmailFailed to start %s chess program %s on %s: %s Fatal ErrorFileFirst Black Move:First White Move:Game List Tags...Game not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGap in move listGeneralGeneral OptionsGet Move ListGot end of file from keyboardHash-Table Size (MB):HelpHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sICS ClientICS OptionsIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move in ICS output: "%s"Illegal move: %d.%s%sIncorrect moveInformationIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnKingKnightLight Square Color:Load Game OptionsMachine MatchMachine accepts your draw offerMachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMatch %s vs. %s: final score %d-%d-%dMaximum Number of CPUs per Engine:ModeMono ModeNegate Score of Engine #1Negate Score of Engine #2New Shuffle GameNew VariantNo SoundNo game has been loaded yetNo game selectedNo hint availableNo more games in this messageNo moves in gameNo position has been loaded yetNo unfinished gamesNo unfinished games NoteOKOne-Click MovingOptionsPawnPeriodic UpdatesPeriodic Updates (in Analysis Mode)PlayPonder Next MovePopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition not found in filePremovePremove Highlight Color:PromoteQueenQuiet PlayReady to send mail RookSave Game OptionsSave Settings NowSave Settings on ExitSeek GraphShow CoordinatesShow CoordsSound OptionsStart-position number:Starting chess programStartup failure on '%s'Still need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s TagsTest LegalityThat square is occupiedThere is no game listThere is no pending offer on this moveTrainingTraining mode offTraining mode onTraining mode requires a game fileTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineUnknown initialMode %sUnknown variant name %sUpload to ExamineVariant %s not supported by %sVariant %s supported only in ICS modeVerify Engine Result ClaimsViewWaiting for first chess programWaiting for reply from opponent Waiting for second chess programWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite to playWhite's flag fellWin / Loss Threshold:You are not examining a gameYou are playing BlackYou are playing WhiteYou can't revert while pausingYou have not made a move yetYou must make your move before offering a drawYour opponent is not out of timeatomicbad searchTime option %sbad timeControl option %sdownfactoryfairylosersprotocol version %d not supportedsay Internal error; bad moveType %d (%d,%d-%d,%d)upProject-Id-Version: GNU xboard master-20110411 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit %s non supporta l'analisiInformazioni su WinboardAzioniAggiudica come PattaAggiudica patte trivialiAggiudica al NeroAggiudica al BiancoAllarmeGià alla fine della partitaMossa ambigua nell'output dell'ICS: "%s"Mossa ambigua: %d.%s%sLa funzione di Analisi non è disponibile in modalità ICSLa modalità Analisi richiede un motore di giocoLa modalità 'Analizza file' richiede un file partitaTrascinamento animatoMosse animateAnnotaArcivescovoAggiudica sul tempoRuota vista automaticamenteCommenti automaticiAuto KibitzOsserva automaticamentePorta in primo pianoAuto aggiornaOsserva in bckgndStringa FEN di posizione scorretta negli AppuntiStringa FEN di posizione scorretta nel fileFile partita non riconosciutoFile posizione non riconosciutoAlfiereNeroPezzi neriIl tratto è al NeroAlla ciecaImpostazioni scacchieraScacchiera...Libro delle aperture...Profondità Libro:Varianti Libro:Tempo esaurito per entrambiImpossibile tornare più indietroImpossibile avanzare oltreImpossibile avviare un match senza specificare alcun motore di giocoImpossibile aprire "%s"Impossibile effettuare la ricerca nel file di partitaImpossibile effettuare la ricerca nel file di posizioneCannoneImpossibile costruire lista delle partiteCancelliereSvuota scacchieraCommentiImpostazioni motori di giocoConnessione chiusa dal'ICSCopia lista partiteConnessione all'host %s, porta %s fallitaApertura della porta comm %s fallitaImpossibile leggere mossaImpossibile interpretare la mossa dall'ICS: "%s"Case nereBeepDegradaIndividua scacco mattoLa mossa mostrata non è quella correnteLa posizione mostrata non è quella correnteAggiudica patta dopo:Patta per materiale insufficienteDoppia scacchieraDimensione EGTB [MB]:ModificaModifica commento...Modifica informazioni partita...Modifica commentoModifica commento a %d.%s%sElefanteCasa vuotaTermine della partitaMotoreLibro proprio per motore 1Output del motore di giocoErroreErrore nela lettura della lista mosse: è presente una posizione in piùErrore nella lettura della lista mosse: mosse annidateErrore nella lettura della lista mosse: sono presenti due intestazioniErrore in lettura dal %s motore di gioco (%s)Errore in lettura dall'ICSErrore in lettura da tastieraErrore in scrittura sul %s motore di giocoErrore in scrittura sull'ICSErrore in scrittura sul motore di giocoErrore in scrittura sul displayErrore: il %s motore di gioco (%s) è terminato in maniera inaspettataGrafico della valutazioneChiusura in corsoFRCImpossibile aprire l'applicazione cmailAvvio del %s motore di gioco %s su %s fallito: %s Errore fataleFile1° mossa Nero1° mossa BiancoImpostazioni lista partite...Partita non trovata nel fileIndice superiore al numero di partitePartita troppo lunga; incrementare il valore di MAX_MOVES e ricompilareMosse mancanti nella lista mosseGenerali...Impostazioni generaliScarica lista mosseRicevuto carattere di Fine file (EOF) dalla tastieraDimensione Hash [MB]:AiutoNascondi l'output del motore se gioca contro un uomoCase evidenziateEvidenzia trascinamentoEvidenzia l'ultima mossaEvidenzia con una frecciaEvidenzia con una frecciaSuggerimento...Suggerimento: %sConnetti ad un ICSImpostazioni ICSMossa illegaleMossa illegale "%s" (rifiutata dal %s motore di gioco)Mossa illegale "%s" dal %s motore di giocoMossa illegale nell'output dell'ICS: "%s"Mossa illegale: %d.%s%sMossa non correttaInformazioneIl tratto è al NeroIl tratto è al BiancoIl tratto non è al NeroIl tratto non è al BiancoE' il tuo turnoReCavalloCase biancheImpostazioni apertura partitaMatch tra i motori di giocoIl motore di gioco accetta la tua offerta di pattaLa funzione 'Nero al motore di gioco' non è disponibile in modalità ICSLa modalità 'Nero al motore di gioco' richiede almeno un motoreLa funzione 'Bianco al motore di gioco' non è disponibile in modalità ICSLa modalità 'Bianco al motore di gioco' richiede almeno un motoreMatch %s vs %s: punteggio finale %d-%d-%dNum max di CPU:ModalitàMonocromaticoOutput motore 1 sempre riferito al BiancoOutput motore 2 sempre riferito al BiancoNuova partita Shuffle...Varianti di giocoSilenziosoNon è ancora stata caricata nessuna partitaNessuna partita selezionataNessun suggerimento disponibileIn questo messaggio non sono presenti altre partitePartita senza mosseNon è ancora stata caricata nessuna posizioneNon è presente nessuna partita non terminataNon è presente nessuna partita non terminata NotaOKMuovi con click singoloImpostazioniPedoneAggiornamenti continuiAggiornamenti continui (per Modalità di analisi)AscoltaPensa sul mio tempoChiedi conferma alla chiusuraChiedi conferma alla chiusuraMostra popup per mosse erratePosizione non trovata nel filePremossaPremosse evidenziatePromuoviDonnaNon disturbare durante il giocoPronto all'invio della posta TorreImpostazioni salvataggio partitaSalva impostazioniSalva impostazioni all'uscitaGrafico delle richiesteMostra coordinateMostra coordinateImpostazioni suoniDisposizione iniziale:Avvio del motore di giocoAvvio di '%s' fallitoOccorre ancora eseguire una mossa per la partita %s Occorre ancora eseguire la mossa per la partita Occorre ancora eseguire mosse per tutte le %d partite Occorre ancora eseguire mosse per entrambe le partite Occorre ancora eseguire mosse per le partite %s Informazioni partitaVerifica mosse illegaliLa casa è già occupataNessuna lista partiteNon vi è alcuna offerta pendente a questa mossaAllenamentoModalità Allenamento disattivataModalità Allenamento attivataLa modalità Allenamento richiede un file partitaLa funzione 'Motore di gioco 1 vs 2' non è disponibile in modalità ICSLa modalità 'Motore di gioco 1 vs 2' richiede almeno un motore di giocoValore per initialMode non riconosciuto: %sNome di variante sconosciuto: %sCarica su ICS per esaminareLa variante %s non è supportata da %sLa variante %s è supportata solo in modalità ICSVerifica gli annunci del motoreVisualizzaIn attesa del primo motore di giocoIn attesa di risposta dall'avversario In attesa del secondo motore di giocoAvviso: Stai ancora esaminando una partitaAvviso: Stai ancora osservando una partitaAvviso: Stai ancora giocando una partitaAttenzione: il secondo motore di gioco (%s) non supporta questa azione!BiancoIl tratto è al BiancoTempo esaurito per il BiancoLimite per aggiudicare vinta/persa:Non stai esaminando alcuna partitaStai giocando con il NeroStai giocando con il BiancoNon è possibile ripristinare mentre la pausa è attivaNon hai ancora fatto alcuna mossaDevi eseguire la tua mossa prima di offrire la pattaIl tuo avversario non ha ancora esaurito il proprio tempoAtomicOpzione searchTime non corretta: %sOpzione timeControl non corretta: %sMuovi giuFabbricaFairyLosersVersione %d del protocollo non supportatasay Errore interno; moveType malformato %d (%d,%d-%d,%d)Muovi suxboard-4.9.1/po/it.po0000644000175000001440000017134112747543737011345 00000000000000# XBoard -- a graphical chessboard for X # Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts. # Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc. # This file is distributed under the same license as the XBoard package. # Traduzione di Giorgio Medeot, 2010 # #, fuzzy msgid "" msgstr "" "Project-Id-Version: GNU xboard master-20110411\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "Versione %d del protocollo non supportata" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "Opzione timeControl non corretta: %s" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "Opzione searchTime non corretta: %s" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "La variante %s è supportata solo in modalità ICS" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "Nome di variante sconosciuto: %s" #: backend.c:1457 msgid "Starting chess program" msgstr "Avvio del motore di gioco" #: backend.c:1480 msgid "Bad game file" msgstr "File partita non riconosciuto" #: backend.c:1487 msgid "Bad position file" msgstr "File posizione non riconosciuto" #: backend.c:1501 msgid "Pick new game" msgstr "" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "Impossibile avviare un match senza specificare alcun motore di gioco" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "Apertura della porta comm %s fallita" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "Connessione all'host %s, porta %s fallita" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "Valore per initialMode non riconosciuto: %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "La modalità 'Analizza file' richiede un file partita" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "La modalità Analisi richiede un motore di gioco" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "La funzione di Analisi non è disponibile in modalità ICS" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "La modalità 'Bianco al motore di gioco' richiede almeno un motore" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "" "La funzione 'Bianco al motore di gioco' non è disponibile in modalità ICS" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "La modalità 'Nero al motore di gioco' richiede almeno un motore" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "" "La funzione 'Nero al motore di gioco' non è disponibile in modalità ICS" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "" "La modalità 'Motore di gioco 1 vs 2' richiede almeno un motore di gioco" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "La funzione 'Motore di gioco 1 vs 2' non è disponibile in modalità ICS" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "La modalità Allenamento richiede un file partita" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "Errore in scrittura sull'ICS" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "Errore in lettura da tastiera" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "Ricevuto carattere di Fine file (EOF) dalla tastiera" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "Errore in scrittura sul display" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "Errore nella lettura della lista mosse: sono presenti due intestazioni" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "Errore nella lettura della lista mosse: mosse annidate" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "Connessione chiusa dal'ICS" #: backend.c:4306 msgid "Error reading from ICS" msgstr "Errore in lettura dall'ICS" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" "Partita troppo lunga; incrementare il valore di MAX_MOVES e ricompilare" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "Errore nela lettura della lista mosse: è presente una posizione in più" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Impossibile interpretare la mossa dall'ICS: \"%s\"" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "say Errore interno; moveType malformato %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" #: backend.c:6858 msgid "You are playing Black" msgstr "Stai giocando con il Nero" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "Stai giocando con il Bianco" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Il tratto è al Bianco" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Il tratto è al Nero" #: backend.c:6920 msgid "Displayed position is not current" msgstr "La posizione mostrata non è quella corrente" #: backend.c:7123 msgid "rights granted" msgstr "" #: backend.c:7123 msgid "rights revoked" msgstr "" #: backend.c:7175 msgid "Illegal move" msgstr "Mossa illegale" #: backend.c:7255 msgid "End of game" msgstr "Termine della partita" #: backend.c:7258 msgid "Incorrect move" msgstr "Mossa non corretta" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "" #: backend.c:7780 msgid "only marked squares are legal" msgstr "" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "" #: backend.c:8632 msgid "could not load EGBB library" msgstr "" #: backend.c:8635 msgid "wrong EGBB version" msgstr "" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Mossa illegale \"%s\" dal %s motore di gioco" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s non supporta l'analisi" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Mossa illegale \"%s\" (rifiutata dal %s motore di gioco)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Avvio del %s motore di gioco %s su %s fallito: %s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "Suggerimento: %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "Il motore di gioco accetta la tua offerta di patta" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Mossa ambigua nell'output dell'ICS: \"%s\"" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Mossa illegale nell'output dell'ICS: \"%s\"" #: backend.c:10132 msgid "Gap in move list" msgstr "Mosse mancanti nella lista mosse" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "La variante %s non è supportata da %s" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr "" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "Avvio di '%s' fallito" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "In attesa del primo motore di gioco" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "In attesa del secondo motore di gioco" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" #: backend.c:11200 msgid "Not enough participants" msgstr "" #: backend.c:11403 #, fuzzy msgid "Bad tournament file" msgstr "File partita non riconosciuto" #: backend.c:11415 #, fuzzy msgid "Waiting for other game(s)" msgstr "In attesa del primo motore di gioco" #: backend.c:11428 msgid "No pairing engine specified" msgstr "" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "" #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "" #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Match %s vs %s: punteggio finale %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Mossa illegale: %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Mossa ambigua: %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "Impossibile aprire \"%s\"" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "Impossibile costruire lista delle partite" #: backend.c:12574 msgid "No more games in this message" msgstr "In questo messaggio non sono presenti altre partite" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "Non è ancora stata caricata nessuna partita" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "Impossibile tornare più indietro" #: backend.c:13065 msgid "Game number out of range" msgstr "Indice superiore al numero di partite" #: backend.c:13076 msgid "Can't seek on game file" msgstr "Impossibile effettuare la ricerca nel file di partita" #: backend.c:13134 msgid "Game not found in file" msgstr "Partita non trovata nel file" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "Stringa FEN di posizione scorretta nel file" #: backend.c:13423 msgid "No moves in game" msgstr "Partita senza mosse" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "Non è ancora stata caricata nessuna posizione" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "Impossibile effettuare la ricerca nel file di posizione" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "Posizione non trovata nel file" #: backend.c:13645 msgid "Black to play" msgstr "Il tratto è al Nero" #: backend.c:13648 msgid "White to play" msgstr "Il tratto è al Bianco" #: backend.c:13735 backend.c:14109 #, fuzzy msgid "Waiting for access to save file" msgstr "In attesa del secondo motore di gioco" #: backend.c:13737 msgid "Saving game" msgstr "" #: backend.c:13738 msgid "Bad Seek" msgstr "" #: backend.c:14111 #, fuzzy msgid "Saving position" msgstr "File posizione non riconosciuto" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" #: backend.c:14294 msgid "You have not made a move yet" msgstr "Non hai ancora fatto alcuna mossa" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" #: backend.c:14320 msgid "No unfinished games" msgstr "Non è presente nessuna partita non terminata" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "Impossibile aprire l'applicazione cmail" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "In attesa di risposta dall'avversario\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "Occorre ancora eseguire la mossa per la partita\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "Occorre ancora eseguire mosse per entrambe le partite\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "Occorre ancora eseguire mosse per tutte le %d partite\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "Occorre ancora eseguire una mossa per la partita %s\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "Non è presente nessuna partita non terminata\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "Pronto all'invio della posta\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Occorre ancora eseguire mosse per le partite %s\n" #: backend.c:14656 msgid "Edit comment" msgstr "Modifica commento" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Modifica commento a %d.%s%s" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "" #: backend.c:14824 msgid "It is not White's turn" msgstr "Il tratto non è al Bianco" #: backend.c:14907 msgid "It is not Black's turn" msgstr "Il tratto non è al Nero" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "" #: backend.c:15045 backend.c:16238 #, fuzzy msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "Attendi il tuo turno" #: backend.c:15188 msgid "Training mode off" msgstr "Modalità Allenamento disattivata" #: backend.c:15196 msgid "Training mode on" msgstr "Modalità Allenamento attivata" #: backend.c:15199 msgid "Already at end of game" msgstr "Già alla fine della partita" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "Avviso: Stai ancora giocando una partita" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "Avviso: Stai ancora osservando una partita" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "Avviso: Stai ancora esaminando una partita" #: backend.c:15365 msgid "Click clock to clear board" msgstr "" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "" #: backend.c:15711 msgid "That square is occupied" msgstr "La casa è già occupata" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "Non vi è alcuna offerta pendente a questa mossa" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "Il tuo avversario non ha ancora esaurito il proprio tempo" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "Devi eseguire la tua mossa prima di offrire la patta" #: backend.c:16220 msgid "You are not examining a game" msgstr "Non stai esaminando alcuna partita" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "Non è possibile ripristinare mentre la pausa è attiva" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "E' il tuo turno" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 #, fuzzy msgid "Wait until your turn." msgstr "Attendi il tuo turno" #: backend.c:16348 msgid "No hint available" msgstr "Nessun suggerimento disponibile" #: backend.c:16363 backend.c:16394 ngamelist.c:365 #, fuzzy msgid "Game list not loaded or empty" msgstr "Non è ancora stata caricata nessuna partita" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "" #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "Errore in scrittura sul %s motore di gioco" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Errore: il %s motore di gioco (%s) è terminato in maniera inaspettata" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Errore in lettura dal %s motore di gioco (%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "" #: backend.c:17521 msgid "Displayed move is not current" msgstr "La mossa mostrata non è quella corrente" #: backend.c:17530 msgid "Could not parse move" msgstr "Impossibile leggere mossa" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "Tempo esaurito per entrambi" #: backend.c:17657 msgid "White's flag fell" msgstr "Tempo esaurito per il Bianco" #: backend.c:17679 msgid "Black's flag fell" msgstr "" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "Stringa FEN di posizione scorretta negli Appunti" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "" #: book.c:722 msgid "Book Fault" msgstr "" #: book.c:877 msgid "Hash keys are different" msgstr "" #: book.c:1054 #, fuzzy msgid "Could not create book" msgstr "Impossibile leggere mossa" #: dialogs.c:287 #, fuzzy msgid "Tournament file: " msgstr "Aggiorna F7" #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "" #: dialogs.c:289 msgid "Sync after round" msgstr "" #: dialogs.c:290 msgid "Sync after cycle" msgstr "" #: dialogs.c:291 msgid "Tourney participants:" msgstr "" #: dialogs.c:292 #, fuzzy msgid "Select Engine:" msgstr "Motore" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "" #: dialogs.c:302 #, fuzzy msgid "Default Number of Games in Match (or Pairing):" msgstr "Partite per match:" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "" #: dialogs.c:304 #, fuzzy msgid "Save Tourney Games on:" msgstr "Impostazioni salvataggio partita" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "" #: dialogs.c:312 #, fuzzy msgid "Common Engine" msgstr "Motori di gioco... Alt+Shift+U" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Impostazioni generali" #: dialogs.c:314 msgid "Continue Later" msgstr "" #: dialogs.c:315 #, fuzzy msgid "Replace Engine" msgstr "Motore" #: dialogs.c:316 #, fuzzy msgid "Upgrade Engine" msgstr "Motore" #: dialogs.c:317 msgid "Clone Tourney" msgstr "" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "" #: dialogs.c:389 #, fuzzy msgid "Tournament Options" msgstr "Impostazioni suoni" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "Trascinamento animato" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "Mosse animate" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Aggiudica sul tempo" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Ruota vista automaticamente" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "Alla cieca" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "Nascondi l'output del motore se gioca contro un uomo" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Evidenzia l'ultima mossa" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Evidenzia con una freccia" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Muovi con click singolo" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "Aggiornamenti continui (per Modalità di analisi)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "Pensa sul mio tempo" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Chiedi conferma alla chiusura" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Mostra popup per mosse errate" #: dialogs.c:429 #, fuzzy msgid "Scores in Move List" msgstr "Scarica lista mosse" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Mostra coordinate" #: dialogs.c:431 msgid "Show Target Squares" msgstr "" #: dialogs.c:432 msgid "Sticky Windows" msgstr "" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Verifica mosse illegali" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "" #: dialogs.c:438 #, fuzzy msgid "Zoom factor in Evaluation Graph:" msgstr "Grafico della valutazione" #: dialogs.c:458 #, fuzzy msgid "Normal" msgstr "Normale" #: dialogs.c:459 #, fuzzy msgid "Makruk" msgstr "Makruk" #: dialogs.c:460 msgid "FRC" msgstr "FRC" #: dialogs.c:461 msgid "Shatranj" msgstr "" #: dialogs.c:462 msgid "Wild castle" msgstr "" #: dialogs.c:463 #, fuzzy msgid "Knightmate" msgstr "Knightmate" #: dialogs.c:464 msgid "No castle" msgstr "" #: dialogs.c:465 #, fuzzy msgid "Cylinder *" msgstr "Cilindrici" #: dialogs.c:466 msgid "3-checks" msgstr "" #: dialogs.c:467 msgid "berolina *" msgstr "" #: dialogs.c:468 msgid "atomic" msgstr "Atomic" #: dialogs.c:469 msgid "two kings" msgstr "" #: dialogs.c:470 msgid " " msgstr "" #: dialogs.c:471 msgid "Spartan" msgstr "" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "" #: dialogs.c:475 msgid "Holdings Size:" msgstr "" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" #: dialogs.c:479 msgid "ASEAN" msgstr "" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "" #: dialogs.c:481 msgid "Seirawan" msgstr "" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "" #: dialogs.c:483 msgid "Superchess" msgstr "" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "" #: dialogs.c:485 #, fuzzy msgid "Crazyhouse" msgstr "Crazyhouse" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "" #: dialogs.c:487 #, fuzzy msgid "Bughouse" msgstr "Bughouse" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "" #: dialogs.c:489 #, fuzzy msgid "Suicide" msgstr "Suicide" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "" #: dialogs.c:491 msgid "give-away" msgstr "" #: dialogs.c:492 msgid "grand (10x10)" msgstr "" #: dialogs.c:493 msgid "losers" msgstr "Losers" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "" #: dialogs.c:495 msgid "fairy" msgstr "Fairy" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:497 msgid "mighty lion" msgstr "" #: dialogs.c:498 msgid "courier (12x8)" msgstr "" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "" "Attenzione: il secondo motore di gioco (%s) non supporta questa azione!" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "" #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" #: dialogs.c:596 msgid "New Variant" msgstr "Varianti di gioco" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "Num max di CPU:" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "Dimensione Hash [MB]:" #: dialogs.c:631 #, fuzzy msgid "EGTB Path:" msgstr "Cartella EGTB:" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "Dimensione EGTB [MB]:" #: dialogs.c:633 msgid "Use GUI Book" msgstr "" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "Profondità Libro:" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "Varianti Libro:" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "Libro proprio per motore 1" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "Impostazioni motori di gioco" #: dialogs.c:655 msgid "Detect all Mates" msgstr "Individua scacco matto" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "Verifica gli annunci del motore" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "Patta per materiale insufficiente" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Aggiudica patte triviali" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "Aggiudica patta dopo:" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "Limite per aggiudicare vinta/persa:" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "Output motore 1 sempre riferito al Bianco" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "Output motore 2 sempre riferito al Bianco" #: dialogs.c:671 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "Aggiudica al Bianco" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "Auto Kibitz" #: dialogs.c:685 msgid "Auto-Comment" msgstr "Commenti automatici" #: dialogs.c:686 msgid "Auto-Observe" msgstr "Osserva automaticamente" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Porta in primo piano" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "Osserva in bckgnd" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "Doppia scacchiera" #: dialogs.c:691 msgid "Get Move List" msgstr "Scarica lista mosse" #: dialogs.c:692 msgid "Quiet Play" msgstr "Non disturbare durante il gioco" #: dialogs.c:693 msgid "Seek Graph" msgstr "Grafico delle richieste" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "Auto aggiorna" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "" #: dialogs.c:696 #, fuzzy msgid "Quit after game" msgstr "In attesa del primo motore di gioco" #: dialogs.c:697 msgid "Premove" msgstr "Premossa" #: dialogs.c:698 msgid "Premove for White" msgstr "" #: dialogs.c:699 msgid "First White Move:" msgstr "1° mossa Bianco" #: dialogs.c:700 msgid "Premove for Black" msgstr "" #: dialogs.c:701 msgid "First Black Move:" msgstr "1° mossa Nero" #: dialogs.c:703 msgid "Alarm" msgstr "Allarme" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "" #: dialogs.c:706 msgid "Colorize Messages" msgstr "" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "" #: dialogs.c:723 msgid "ICS Options" msgstr "Impostazioni ICS" #: dialogs.c:728 msgid "Exact position match" msgstr "" #: dialogs.c:728 msgid "Shown position is subset" msgstr "" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "" #: dialogs.c:729 msgid "Same material" msgstr "" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "" #: dialogs.c:753 #, fuzzy msgid "No games before year:" msgstr "Non è ancora stata caricata nessuna partita" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "" #: dialogs.c:756 msgid "Search mode:" msgstr "" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "" #: dialogs.c:767 msgid "Load Game Options" msgstr "Impostazioni apertura partita" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "" #: dialogs.c:780 msgid "Own Games Only" msgstr "" #: dialogs.c:781 msgid "Save Games on File:" msgstr "" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "" #: dialogs.c:794 msgid "Save Game Options" msgstr "Impostazioni salvataggio partita" #: dialogs.c:803 msgid "No Sound" msgstr "Silenzioso" #: dialogs.c:804 msgid "Default Beep" msgstr "Beep" #: dialogs.c:805 msgid "Above WAV File" msgstr "" #: dialogs.c:806 msgid "Car Horn" msgstr "" #: dialogs.c:807 msgid "Cymbal" msgstr "" #: dialogs.c:808 msgid "Ding" msgstr "" #: dialogs.c:809 msgid "Gong" msgstr "" #: dialogs.c:810 msgid "Laser" msgstr "" #: dialogs.c:811 msgid "Penalty" msgstr "" #: dialogs.c:812 msgid "Phone" msgstr "" #: dialogs.c:813 msgid "Pop" msgstr "" #: dialogs.c:814 msgid "Roar" msgstr "" #: dialogs.c:815 msgid "Slap" msgstr "" #: dialogs.c:816 msgid "Wood Thunk" msgstr "" #: dialogs.c:818 msgid "User File" msgstr "" #: dialogs.c:841 msgid "User WAV File:" msgstr "" #: dialogs.c:842 msgid "Sound Program:" msgstr "" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "" #: dialogs.c:844 msgid "Play" msgstr "Ascolta" #: dialogs.c:845 msgid "Move:" msgstr "" #: dialogs.c:846 msgid "Win:" msgstr "" #: dialogs.c:847 msgid "Lose:" msgstr "" #: dialogs.c:848 msgid "Draw:" msgstr "" #: dialogs.c:849 msgid "Unfinished:" msgstr "" #: dialogs.c:850 msgid "Alarm:" msgstr "" #: dialogs.c:851 msgid "Challenge:" msgstr "" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "" #: dialogs.c:854 msgid "Shout:" msgstr "" #: dialogs.c:855 msgid "S-Shout:" msgstr "" #: dialogs.c:856 msgid "Channel:" msgstr "" #: dialogs.c:857 msgid "Channel 1:" msgstr "" #: dialogs.c:858 msgid "Tell:" msgstr "" #: dialogs.c:859 msgid "Kibitz:" msgstr "" #: dialogs.c:860 msgid "Request:" msgstr "" #: dialogs.c:861 msgid "Lion roar:" msgstr "" #: dialogs.c:862 msgid "Seek:" msgstr "" #: dialogs.c:880 msgid "Sound Options" msgstr "Impostazioni suoni" #: dialogs.c:896 msgid "Selectable themes:" msgstr "" #: dialogs.c:898 msgid "New name for current theme:" msgstr "" #: dialogs.c:901 msgid "White Piece Color:" msgstr "" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "Pezzi neri" #: dialogs.c:917 msgid "Light Square Color:" msgstr "Case bianche" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "Case nere" #: dialogs.c:929 msgid "Highlight Color:" msgstr "Case evidenziate" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "Premosse evidenziate" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" #: dialogs.c:943 msgid "Mono Mode" msgstr "Monocromatico" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "" #: dialogs.c:946 msgid "Use Board Textures" msgstr "" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "" #: dialogs.c:1033 msgid "Board Options" msgstr "Impostazioni scacchiera" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "" #: dialogs.c:1134 msgid "clear" msgstr "" #: dialogs.c:1135 msgid "save changes" msgstr "" #: dialogs.c:1233 #, fuzzy msgid "add next move" msgstr "Pensa sul mio tempo" #: dialogs.c:1234 msgid "commit changes" msgstr "" #: dialogs.c:1257 #, fuzzy msgid "Edit book" msgstr "Modifica" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Informazioni partita" #: dialogs.c:1405 msgid "ICS input box" msgstr "" #: dialogs.c:1437 msgid "Type a move" msgstr "" #: dialogs.c:1463 #, fuzzy msgid "Engine has no options" msgstr "Libro proprio per motore 1" #: dialogs.c:1465 msgid "Engine Settings" msgstr "" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "" #: dialogs.c:1509 msgid "or specify one below:" msgstr "" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "" #: dialogs.c:1513 msgid "Engine Command:" msgstr "" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "" #: dialogs.c:1515 msgid "UCI" msgstr "" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "" #: dialogs.c:1574 msgid "Load first engine" msgstr "" #: dialogs.c:1580 msgid "Load second engine" msgstr "" #: dialogs.c:1603 msgid "shuffle" msgstr "" #: dialogs.c:1604 msgid "Fischer castling" msgstr "" #: dialogs.c:1605 msgid "Start-position number:" msgstr "Disposizione iniziale:" #: dialogs.c:1606 #, fuzzy msgid "randomize" msgstr "Casuale" #: dialogs.c:1607 msgid "pick fixed" msgstr "" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Nuova partita Shuffle..." #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "" #: dialogs.c:1677 msgid "Message (above board):" msgstr "" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "" #: dialogs.c:1695 #, fuzzy msgid "Edit comments:" msgstr "Modifica commento" #: dialogs.c:1701 #, fuzzy msgid "Move history / Engine Output:" msgstr "Output del motore di gioco" #: dialogs.c:1707 #, fuzzy msgid "Game list:" msgstr "Lista partite..." #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "" #: dialogs.c:1768 msgid "Fonts" msgstr "" #: dialogs.c:1791 msgid "classical" msgstr "" #: dialogs.c:1792 msgid "incremental" msgstr "" #: dialogs.c:1793 msgid "fixed max" msgstr "" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "" #: dialogs.c:1795 msgid "Moves per session:" msgstr "" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "" #: dialogs.c:1798 #, fuzzy msgid "Time-Odds factors:" msgstr "Riduci il tempo di un fattore:" #: dialogs.c:1799 #, fuzzy msgid "Engine #1" msgstr "Motore" #: dialogs.c:1800 #, fuzzy msgid "Engine #2 / Human" msgstr "Libro proprio per motore 1" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "Errore in scrittura sul motore di gioco" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 #, fuzzy msgid "Cancel" msgstr "Cancella" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "Re" #: dialogs.c:1972 msgid "Captain" msgstr "" #: dialogs.c:1973 msgid "Lieutenant" msgstr "" #: dialogs.c:1974 msgid "General" msgstr "Generali..." #: dialogs.c:1975 msgid "Warlord" msgstr "" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Cavallo" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Alfiere" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Torre" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "Arcivescovo" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "Cancelliere" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Donna" #: dialogs.c:1988 msgid "Lion" msgstr "" #: dialogs.c:1992 msgid "Defer" msgstr "" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Promuovi" #: dialogs.c:2050 msgid "Chats:" msgstr "" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 #, fuzzy msgid "New Chat" msgstr "Varianti di gioco" #: dialogs.c:2058 msgid "Chat partner:" msgstr "" #: dialogs.c:2059 msgid "End Chat" msgstr "" #: dialogs.c:2060 msgid "Hide" msgstr "" #: dialogs.c:2287 #, fuzzy msgid "ICS Interaction" msgstr "Impostazioni ICS" #: dialogs.c:2372 msgid "factory" msgstr "Fabbrica" #: dialogs.c:2373 msgid "up" msgstr "Muovi su" #: dialogs.c:2374 msgid "down" msgstr "Muovi giu" #: dialogs.c:2393 msgid "No tag selected" msgstr "" #: dialogs.c:2424 #, fuzzy msgid "Game-list options" msgstr "Impostazioni apertura partita" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Errore" #: dialogs.c:2545 msgid "Fatal Error" msgstr "Errore fatale" #: dialogs.c:2545 msgid "Exiting" msgstr "Chiusura in corso" #: dialogs.c:2556 msgid "Information" msgstr "Informazione" #: dialogs.c:2563 msgid "Note" msgstr "Nota" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Bianco" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Pedone" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "Elefante" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "Cannone" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "Degrada" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Casa vuota" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Svuota scacchiera" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Nero" #: dialogs.c:2827 #, fuzzy msgid "_File" msgstr "File" #: dialogs.c:2828 #, fuzzy msgid "_Edit" msgstr "Modifica" #: dialogs.c:2829 #, fuzzy msgid "_View" msgstr "Visualizza" #: dialogs.c:2830 #, fuzzy msgid "_Mode" msgstr "Modalità" #: dialogs.c:2831 #, fuzzy msgid "_Action" msgstr "Azioni" #: dialogs.c:2832 #, fuzzy msgid "E_ngine" msgstr "Motore" #: dialogs.c:2833 #, fuzzy msgid "_Options" msgstr "Impostazioni" #: dialogs.c:2834 #, fuzzy msgid "_Help" msgstr "Aiuto" #: dialogs.c:2844 msgid "<<" msgstr "" #: dialogs.c:2845 msgid "<" msgstr "" #: dialogs.c:2847 msgid ">" msgstr "" #: dialogs.c:2848 msgid ">>" msgstr "" #: dialogs.c:3136 msgid "Directories:" msgstr "" #: dialogs.c:3137 #, fuzzy msgid "Files:" msgstr "File" #: dialogs.c:3138 msgid "by name" msgstr "" #: dialogs.c:3139 msgid "by type" msgstr "" #: dialogs.c:3142 #, fuzzy msgid "Filename:" msgstr "Filtro" #: dialogs.c:3143 msgid "New directory" msgstr "" #: dialogs.c:3144 #, fuzzy msgid "File type:" msgstr "Filtro" #: dialogs.c:3219 #, fuzzy msgid "Contents of" msgstr "Commenti" #: dialogs.c:3245 msgid " next page" msgstr "" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" #: engineoutput.c:112 menus.c:661 #, fuzzy, c-format msgid "Engine Output" msgstr "Output del motore di gioco" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "" msgstr[1] "" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "" #: gamelist.c:379 #, fuzzy, c-format msgid "Reading game file (%d)" msgstr "File partita non riconosciuto" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "" #: gtk/xboard.c:2495 #, fuzzy msgid "Failed to open file" msgstr "Impossibile aprire l'applicazione cmail" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "OK" #: menus.c:136 msgid "Load game file name?" msgstr "" #: menus.c:183 msgid "Load position file name?" msgstr "" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "" #: menus.c:198 msgid "Save position file name?" msgstr "" #: menus.c:355 msgid " (with Zippy code)" msgstr "" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "Informazioni su Winboard" #: menus.c:390 #, fuzzy msgid "Registered Engines" msgstr "Motore" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 #, fuzzy msgid "New Game" msgstr "Nuova partita Shuffle..." #: menus.c:613 #, fuzzy msgid "New Shuffle Game..." msgstr "Nuova partita Shuffle..." #: menus.c:614 #, fuzzy msgid "New Variant..." msgstr "Varianti di gioco" #: menus.c:616 #, fuzzy msgid "Load Game" msgstr "Apertura partita... Alt+Shift+L" #: menus.c:617 #, fuzzy msgid "Load Position" msgstr "File posizione non riconosciuto" #: menus.c:618 #, fuzzy msgid "Next Position" msgstr "File posizione non riconosciuto" #: menus.c:619 #, fuzzy msgid "Prev Position" msgstr "File posizione non riconosciuto" #: menus.c:621 #, fuzzy msgid "Save Game" msgstr "Salvataggio partita... Alt+Shift+S" #: menus.c:622 #, fuzzy msgid "Save Position" msgstr "File posizione non riconosciuto" #: menus.c:623 #, fuzzy msgid "Save Selected Games" msgstr "Salvataggio partita... Alt+Shift+S" #: menus.c:624 #, fuzzy msgid "Save Games as Book" msgstr "Salvataggio partita... Alt+Shift+S" #: menus.c:626 msgid "Mail Move" msgstr "" #: menus.c:627 msgid "Reload CMail Message" msgstr "" #: menus.c:629 msgid "Quit " msgstr "" #: menus.c:634 #, fuzzy msgid "Copy Game" msgstr "Copia lista partite" #: menus.c:635 #, fuzzy msgid "Copy Position" msgstr "Copia posizione Ctrl+Shift+C" #: menus.c:636 msgid "Copy Game List" msgstr "Copia lista partite" #: menus.c:638 #, fuzzy msgid "Paste Game" msgstr "Incolla partita Ctrl+V" #: menus.c:639 #, fuzzy msgid "Paste Position" msgstr "Incolla posizione Ctrl+Shift+V" #: menus.c:641 menus.c:686 #, fuzzy msgid "Edit Game" msgstr "Modifica commento" #: menus.c:642 menus.c:687 #, fuzzy msgid "Edit Position" msgstr "File posizione non riconosciuto" #: menus.c:643 msgid "Edit Tags" msgstr "Modifica informazioni partita..." #: menus.c:644 msgid "Edit Comment" msgstr "Modifica commento..." #: menus.c:645 #, fuzzy msgid "Edit Book" msgstr "Libro delle aperture..." #: menus.c:647 msgid "Revert" msgstr "" #: menus.c:648 msgid "Annotate" msgstr "Annota" #: menus.c:649 #, fuzzy msgid "Truncate Game" msgstr "Tronca la partita End" #: menus.c:651 msgid "Backward" msgstr "" #: menus.c:652 msgid "Forward" msgstr "" #: menus.c:653 #, fuzzy msgid "Back to Start" msgstr "Il tratto è al Nero" #: menus.c:654 #, fuzzy msgid "Forward to End" msgstr "Vai alla fine Alt+End" #: menus.c:659 #, fuzzy msgid "Flip View" msgstr "Ruota vista automaticamente" #: menus.c:662 #, fuzzy msgid "Move History" msgstr "Scarica lista mosse" #: menus.c:663 #, fuzzy msgid "Evaluation Graph" msgstr "Grafico della valutazione" #: menus.c:664 #, fuzzy msgid "Game List" msgstr "Lista partite..." #: menus.c:667 msgid "Comments" msgstr "Commenti" #: menus.c:668 msgid "ICS Input Box" msgstr "" #: menus.c:669 msgid "ICS/Chat Console" msgstr "" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Modifica commento..." #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Impostazioni motore 1" #: menus.c:674 msgid "Board..." msgstr "Scacchiera..." #: menus.c:675 #, fuzzy msgid "Fonts..." msgstr "Suoni..." #: menus.c:676 msgid "Game List Tags..." msgstr "Impostazioni lista partite..." #: menus.c:681 #, fuzzy msgid "Machine White" msgstr "Bianco al motore di gioco Ctrl+W" #: menus.c:682 #, fuzzy msgid "Machine Black" msgstr "Match tra i motori di gioco" #: menus.c:683 #, fuzzy msgid "Two Machines" msgstr "Motore di gioco 1 vs 2 Ctrl+T" #: menus.c:684 #, fuzzy msgid "Analysis Mode" msgstr "Avvia analisi Ctrl+A" #: menus.c:685 #, fuzzy msgid "Analyze Game" msgstr "Analizza file Ctrl+F" #: menus.c:688 msgid "Training" msgstr "Allenamento" #: menus.c:689 msgid "ICS Client" msgstr "Connetti ad un ICS" #: menus.c:691 msgid "Machine Match" msgstr "Match tra i motori di gioco" #: menus.c:692 msgid "Pause" msgstr "" #: menus.c:697 msgid "Accept" msgstr "" #: menus.c:698 msgid "Decline" msgstr "" #: menus.c:699 msgid "Rematch" msgstr "" #: menus.c:701 #, fuzzy msgid "Call Flag" msgstr "Chiama il Tempo F5" #: menus.c:702 msgid "Draw" msgstr "" #: menus.c:703 msgid "Adjourn" msgstr "" #: menus.c:704 msgid "Abort" msgstr "" #: menus.c:705 msgid "Resign" msgstr "" #: menus.c:707 #, fuzzy msgid "Stop Observing" msgstr "Smetti di osservare F10" #: menus.c:708 #, fuzzy msgid "Stop Examining" msgstr "Smetti di esaminare F11" #: menus.c:709 msgid "Upload to Examine" msgstr "Carica su ICS per esaminare" #: menus.c:711 msgid "Adjudicate to White" msgstr "Aggiudica al Bianco" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Aggiudica al Nero" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Aggiudica come Patta" #: menus.c:718 #, fuzzy msgid "Edit Engine List..." msgstr "Impostazioni motore 1" #: menus.c:720 msgid "Load New 1st Engine..." msgstr "" #: menus.c:721 #, fuzzy msgid "Load New 2nd Engine..." msgstr "Motori di gioco... Alt+Shift+U" #: menus.c:723 #, fuzzy msgid "Engine #1 Settings..." msgstr "Impostazioni motore 1" #: menus.c:724 #, fuzzy msgid "Engine #2 Settings..." msgstr "Impostazioni motore 2" #: menus.c:725 #, fuzzy msgid "Common Settings..." msgstr "Impostazioni motori di gioco" #: menus.c:727 msgid "Hint" msgstr "Suggerimento..." #: menus.c:728 msgid "Book" msgstr "Libro delle aperture..." #: menus.c:730 msgid "Move Now" msgstr "" #: menus.c:731 #, fuzzy msgid "Retract Move" msgstr "Annulla mossa Ctrl+X" #: menus.c:736 msgid "Mute all Sounds" msgstr "" #: menus.c:739 #, fuzzy msgid "General..." msgstr "Generali..." #: menus.c:741 #, fuzzy msgid "Time Control..." msgstr "Controllo Tempo... Alt+Shift+T" #: menus.c:742 #, fuzzy msgid "Adjudications..." msgstr "Aggiudicazioni... Alt+Shift+J" #: menus.c:743 msgid "ICS..." msgstr "" #: menus.c:744 msgid "Tournament..." msgstr "" #: menus.c:745 #, fuzzy msgid "Load Game..." msgstr "Apertura partita... Alt+Shift+L" #: menus.c:746 #, fuzzy msgid "Save Game..." msgstr "Salvataggio partita... Alt+Shift+S" #: menus.c:747 #, fuzzy msgid "Game List..." msgstr "Lista partite..." #: menus.c:748 #, fuzzy msgid "Sounds..." msgstr "Suoni..." #: menus.c:751 msgid "Always Queen" msgstr "" #: menus.c:757 msgid "Flash Moves" msgstr "" #: menus.c:759 msgid "Highlight Dragging" msgstr "Evidenzia trascinamento" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Evidenzia con una freccia" #: menus.c:763 msgid "Move Sound" msgstr "" #: menus.c:765 msgid "Periodic Updates" msgstr "Aggiornamenti continui" #: menus.c:767 msgid "Popup Exit Message" msgstr "Chiedi conferma alla chiusura" #: menus.c:769 msgid "Show Coords" msgstr "Mostra coordinate" #: menus.c:770 #, fuzzy msgid "Hide Thinking" msgstr "Nascondi l'output del motore se gioca contro un uomo" #: menus.c:774 msgid "Save Settings Now" msgstr "Salva impostazioni" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Salva impostazioni all'uscita" #: menus.c:780 msgid "Info XBoard" msgstr "" #: menus.c:781 #, fuzzy msgid "Man XBoard" msgstr "Informazioni su Winboard" #: menus.c:783 msgid "XBoard Home Page" msgstr "" #: menus.c:784 msgid "On-line User Guide" msgstr "" #: menus.c:785 msgid "Development News" msgstr "" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "" #: menus.c:825 msgid "File" msgstr "File" #: menus.c:826 msgid "Edit" msgstr "Modifica" #: menus.c:827 msgid "View" msgstr "Visualizza" #: menus.c:828 msgid "Mode" msgstr "Modalità" #: menus.c:829 msgid "Action" msgstr "Azioni" #: menus.c:830 msgid "Engine" msgstr "Motore" #: menus.c:831 msgid "Options" msgstr "Impostazioni" #: menus.c:832 msgid "Help" msgstr "Aiuto" #: nengineoutput.c:79 nengineoutput.c:87 #, fuzzy msgid "engine name" msgstr "Motore" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 #, fuzzy msgid "move" msgstr "mosse" #: nengineoutput.c:156 msgid "Engine output" msgstr "Output del motore di gioco" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "Grafico della valutazione" #: nevalgraph.c:69 #, fuzzy msgid "Blunder graph" msgstr "Grafico della valutazione" #: nevalgraph.c:107 msgid "Blunder" msgstr "" #: nevalgraph.c:107 msgid "Eval" msgstr "" #: ngamelist.c:87 #, fuzzy msgid "find position" msgstr "File posizione non riconosciuto" #: ngamelist.c:88 msgid "narrow" msgstr "" #: ngamelist.c:89 msgid "thresholds" msgstr "" #: ngamelist.c:90 #, fuzzy msgid "tags" msgstr "Informazioni partita" #: ngamelist.c:91 msgid "next" msgstr "" #: ngamelist.c:92 msgid "close" msgstr "" #: ngamelist.c:116 msgid "No game selected" msgstr "Nessuna partita selezionata" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "Impossibile avanzare oltre" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "" #: ngamelist.c:211 msgid "previous page" msgstr "" #: ngamelist.c:214 msgid "next page" msgstr "" #: ngamelist.c:217 msgid "no games matched your request" msgstr "" #: ngamelist.c:219 #, fuzzy, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "Match %s vs %s: punteggio finale %d-%d-%d" #: ngamelist.c:284 msgid "There is no game list" msgstr "Nessuna lista partite" #: nhistory.c:109 msgid "Move list" msgstr "" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "" #, fuzzy #~ msgid "Common Engine..." #~ msgstr "Motori di gioco... Alt+Shift+U" #~ msgid "ICS ..." #~ msgstr "ICS..." #~ msgid "cancel" #~ msgstr "Cancella" #~ msgid "New Game Ctrl+N" #~ msgstr "Nuova partita Ctrl+N" #~ msgid "New Variant ... Alt+Shift+V" #~ msgstr "Nuova variante... Alt+Shift+V" #~ msgid "Load Game Ctrl+O" #~ msgstr "Apri partita da file... Ctrl+O" #~ msgid "Load Position Ctrl+Shift+O" #~ msgstr "Apri posizione da file... Ctrl+Shift+O" #~ msgid "Save Game Ctrl+S" #~ msgstr "Salva partita... Ctrl+S" #~ msgid "Save Position Ctrl+Shift+S" #~ msgstr "Salva posizione... Ctrl+Shift+S" #~ msgid "Quit Ctr+Q" #~ msgstr "Esci" #~ msgid "Copy Game Ctrl+C" #~ msgstr "Copia partita Ctrl+C" #~ msgid "Edit Game Ctrl+E" #~ msgstr "Modifica partita Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "Modifica posizione Ctrl+Shift+E" #~ msgid "Revert Home" #~ msgstr "Ripristina Home" #~ msgid "Backward Alt+Left" #~ msgstr "Indietro Alt+Left" #~ msgid "Forward Alt+Right" #~ msgstr "Avanti Alt+Right" #~ msgid "Back to Start Alt+Home" #~ msgstr "Torna all'inizio Alt+Home" #~ msgid "Flip View F2" #~ msgstr "Ruota la scacchiera F2" #~ msgid "Engine Output Alt+Shift+O" #~ msgstr "Output del motore di gioco Alt+Shift+O" #~ msgid "Move History Alt+Shift+H" #~ msgstr "Lista mosse Alt+Shift+H" #~ msgid "Evaluation Graph Alt+Shift+E" #~ msgstr "Grafico della valutazione Alt+Shift+E" #~ msgid "Game List Alt+Shift+G" #~ msgstr "Lista partite Alt+Shift+G" #~ msgid "Machine Black Ctrl+B" #~ msgstr "Nero al motore di gioco Ctrl+B" #~ msgid "Edit Game Ctrl+E" #~ msgstr "Modifica partita Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "Modifica posizione Ctrl+Shift+E" #~ msgid "Pause Pause" #~ msgstr "Pausa Pause" #~ msgid "Accept F3" #~ msgstr "Accetta F3" #~ msgid "Decline F4" #~ msgstr "Declina F4" #~ msgid "Rematch F12" #~ msgstr "Rigioca F12" #~ msgid "Draw F6" #~ msgstr "Offri Patta F6" #~ msgid "Adjourn F7" #~ msgstr "Aggiorna F7" #~ msgid "Abort F8" #~ msgstr "Interrompi F8" #~ msgid "Resign F9" #~ msgstr "Abbandona F9" #~ msgid "Move Now Ctrl+M" #~ msgstr "Muovi subito Ctrl+M" #~ msgid "Always Queen Ctrl+Shift+Q" #~ msgstr "Promuovi a Donna Ctrl+Shift+Q" #~ msgid "Animate Moving Ctrl+Shift+A" #~ msgstr "Mosse animate Ctrl+Shift+A" #~ msgid "Auto Flag Ctrl+Shift+F" #~ msgstr "Aggiudica sul tempo Ctrl+Shift+F" #~ msgid "Ponder Next Move Ctrl+Shift+P" #~ msgstr "Pensa sul mio tempo Ctrl+Shift+P" #~ msgid "Hide Thinking Ctrl+Shift+H" #~ msgstr "Nascondi analisi Ctrl+Shift+H" #~ msgid "Test Legality Ctrl+Shift+L" #~ msgstr "Verifica mosse illegali Ctrl+Shift+L" #~ msgid "Drop" #~ msgstr "Paracadutaggio" #, fuzzy #~ msgid "could not open: " #~ msgstr "Impossibile leggere mossa" #~ msgid "Promotion" #~ msgstr "Promozione" #~ msgid "ok" #~ msgstr "OK" #~ msgid "Highlight Dragging (Show Move Targets)" #~ msgstr "Evidenzia trascinamento" #~ msgid "You can only start a match from the initial position." #~ msgstr "Un match può essere avviato solo dalla posizione iniziale." #~ msgid "White " #~ msgstr "Bianco " #~ msgid "Black " #~ msgstr "Nero " #~ msgid "Close" #~ msgstr "Chiudi" #~ msgid "sec/move" #~ msgstr "secondi per mossa" xboard-4.9.1/po/tr.po0000644000175000001440000014552612747543737011364 00000000000000# XBoard -- a graphical chessboard for X # Copyright (C) 1991 by Digital Equipment Corporation, Maynard, Massachusetts. # Enhancements Copyright (C) 1992-98 Free Software Foundation, Inc. # This file is distributed under the same license as the XBoard package. # A. Alper Atc , 2003. # msgid "" msgstr "" "Project-Id-Version: XBoard 4.2.7\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2003-12-26 16:38+0200\n" "Last-Translator: A. Alper Atc \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-9\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "" #: args.h:1196 #, fuzzy, c-format msgid "Failed to open indirection file %s" msgstr "Dosya alamad" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "" #: backend.c:1457 msgid "Starting chess program" msgstr "" #: backend.c:1480 msgid "Bad game file" msgstr "" #: backend.c:1487 msgid "Bad position file" msgstr "" #: backend.c:1501 msgid "Pick new game" msgstr "" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "" #: backend.c:4306 msgid "Error reading from ICS" msgstr "" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "" #: backend.c:6858 msgid "You are playing Black" msgstr "Siz Siyah'snz" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "Siz Beyaz'snz" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Sra Beyaz'da" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Sra Siyah'ta" #: backend.c:6920 msgid "Displayed position is not current" msgstr "" #: backend.c:7123 msgid "rights granted" msgstr "" #: backend.c:7123 msgid "rights revoked" msgstr "" #: backend.c:7175 msgid "Illegal move" msgstr "Geersiz hamle" #: backend.c:7255 msgid "End of game" msgstr "Oyun sonu" #: backend.c:7258 msgid "Incorrect move" msgstr "Yanl hamle" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "" #: backend.c:7780 msgid "only marked squares are legal" msgstr "" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "" #: backend.c:8632 msgid "could not load EGBB library" msgstr "" #: backend.c:8635 msgid "wrong EGBB version" msgstr "" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "" #: backend.c:9504 #, fuzzy, c-format msgid "Hint: %s" msgstr "pucu" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "" #: backend.c:10132 msgid "Gap in move list" msgstr "" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr "" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" #: backend.c:11200 msgid "Not enough participants" msgstr "" #: backend.c:11403 #, fuzzy msgid "Bad tournament file" msgstr "Dosya alamad" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "" #: backend.c:11428 msgid "No pairing engine specified" msgstr "" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "" #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "" #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "" #: backend.c:12574 msgid "No more games in this message" msgstr "" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "" #: backend.c:13065 msgid "Game number out of range" msgstr "" #: backend.c:13076 msgid "Can't seek on game file" msgstr "" #: backend.c:13134 msgid "Game not found in file" msgstr "" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "" #: backend.c:13423 msgid "No moves in game" msgstr "" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "" #: backend.c:13645 msgid "Black to play" msgstr "" #: backend.c:13648 msgid "White to play" msgstr "" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "" #: backend.c:13737 msgid "Saving game" msgstr "" #: backend.c:13738 msgid "Bad Seek" msgstr "" #: backend.c:14111 msgid "Saving position" msgstr "" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" #: backend.c:14294 msgid "You have not made a move yet" msgstr "" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" #: backend.c:14320 msgid "No unfinished games" msgstr "" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "" #: backend.c:14656 msgid "Edit comment" msgstr "" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "" #: backend.c:14824 msgid "It is not White's turn" msgstr "" #: backend.c:14907 msgid "It is not Black's turn" msgstr "" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" #: backend.c:15188 msgid "Training mode off" msgstr "" #: backend.c:15196 msgid "Training mode on" msgstr "" #: backend.c:15199 msgid "Already at end of game" msgstr "" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "" #: backend.c:15365 msgid "Click clock to clear board" msgstr "" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "" #: backend.c:15711 msgid "That square is occupied" msgstr "" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "" #: backend.c:16220 msgid "You are not examining a game" msgstr "" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "" #: backend.c:16348 msgid "No hint available" msgstr "" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "" #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "" #: backend.c:17521 msgid "Displayed move is not current" msgstr "" #: backend.c:17530 msgid "Could not parse move" msgstr "" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "Berabere" #: backend.c:17657 msgid "White's flag fell" msgstr "Beyaz ah mat" #: backend.c:17679 msgid "Black's flag fell" msgstr "Siyah ah mat" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "" #: book.c:722 msgid "Book Fault" msgstr "" #: book.c:877 msgid "Hash keys are different" msgstr "" #: book.c:1054 msgid "Could not create book" msgstr "" #: dialogs.c:287 #, fuzzy msgid "Tournament file: " msgstr "Dosya alamad" #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "" #: dialogs.c:289 msgid "Sync after round" msgstr "" #: dialogs.c:290 msgid "Sync after cycle" msgstr "" #: dialogs.c:291 msgid "Tourney participants:" msgstr "" #: dialogs.c:292 msgid "Select Engine:" msgstr "" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "" #: dialogs.c:304 #, fuzzy msgid "Save Tourney Games on:" msgstr "Oyunu Kaydet" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "" #: dialogs.c:312 msgid "Common Engine" msgstr "" #: dialogs.c:313 dialogs.c:447 #, fuzzy msgid "General Options" msgstr "Seenekler" #: dialogs.c:314 msgid "Continue Later" msgstr "" #: dialogs.c:315 msgid "Replace Engine" msgstr "" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "" #: dialogs.c:317 msgid "Clone Tourney" msgstr "" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "" #: dialogs.c:389 #, fuzzy msgid "Tournament Options" msgstr "Seenekler" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "Tahtay Grmeden" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" #: dialogs.c:426 dialogs.c:627 menus.c:766 #, fuzzy msgid "Ponder Next Move" msgstr "Sonraki Oyunu Ykle" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "" #: dialogs.c:429 #, fuzzy msgid "Scores in Move List" msgstr "Hamle Listesini Gster" #: dialogs.c:430 msgid "Show Coordinates" msgstr "" #: dialogs.c:431 msgid "Show Target Squares" msgstr "" #: dialogs.c:432 msgid "Sticky Windows" msgstr "" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "" #: dialogs.c:458 msgid "Normal" msgstr "" #: dialogs.c:459 msgid "Makruk" msgstr "" #: dialogs.c:460 msgid "FRC" msgstr "" #: dialogs.c:461 msgid "Shatranj" msgstr "" #: dialogs.c:462 msgid "Wild castle" msgstr "" #: dialogs.c:463 #, fuzzy msgid "Knightmate" msgstr "At" #: dialogs.c:464 msgid "No castle" msgstr "" #: dialogs.c:465 msgid "Cylinder *" msgstr "" #: dialogs.c:466 msgid "3-checks" msgstr "" #: dialogs.c:467 msgid "berolina *" msgstr "" #: dialogs.c:468 msgid "atomic" msgstr "" #: dialogs.c:469 msgid "two kings" msgstr "" #: dialogs.c:470 msgid " " msgstr "" #: dialogs.c:471 msgid "Spartan" msgstr "" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "" #: dialogs.c:475 msgid "Holdings Size:" msgstr "" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" #: dialogs.c:479 msgid "ASEAN" msgstr "" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "" #: dialogs.c:481 msgid "Seirawan" msgstr "" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "" #: dialogs.c:483 msgid "Superchess" msgstr "" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "" #: dialogs.c:485 msgid "Crazyhouse" msgstr "" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "" #: dialogs.c:487 msgid "Bughouse" msgstr "" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "" #: dialogs.c:489 msgid "Suicide" msgstr "" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "" #: dialogs.c:491 msgid "give-away" msgstr "" #: dialogs.c:492 msgid "grand (10x10)" msgstr "" #: dialogs.c:493 #, fuzzy msgid "losers" msgstr "kapat" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "" #: dialogs.c:495 msgid "fairy" msgstr "" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "" #: dialogs.c:497 msgid "mighty lion" msgstr "" #: dialogs.c:498 msgid "courier (12x8)" msgstr "" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "" #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" #: dialogs.c:596 msgid "New Variant" msgstr "" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "" #: dialogs.c:631 msgid "EGTB Path:" msgstr "" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "" #: dialogs.c:633 msgid "Use GUI Book" msgstr "" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "" #: dialogs.c:655 msgid "Detect all Mates" msgstr "" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "" #: dialogs.c:671 #, fuzzy msgid "Adjudicate non-ICS Games" msgstr "Oyunu Kaydet" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "" #: dialogs.c:685 msgid "Auto-Comment" msgstr "" #: dialogs.c:686 msgid "Auto-Observe" msgstr "" #: dialogs.c:687 #, fuzzy msgid "Auto-Raise Board" msgstr "XBoard Hakknda" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "" #: dialogs.c:691 #, fuzzy msgid "Get Move List" msgstr "Hamle Listesini Gster" #: dialogs.c:692 msgid "Quiet Play" msgstr "" #: dialogs.c:693 msgid "Seek Graph" msgstr "" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "" #: dialogs.c:696 msgid "Quit after game" msgstr "" #: dialogs.c:697 msgid "Premove" msgstr "" #: dialogs.c:698 msgid "Premove for White" msgstr "" #: dialogs.c:699 msgid "First White Move:" msgstr "" #: dialogs.c:700 msgid "Premove for Black" msgstr "" #: dialogs.c:701 msgid "First Black Move:" msgstr "" #: dialogs.c:703 msgid "Alarm" msgstr "" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "" #: dialogs.c:706 msgid "Colorize Messages" msgstr "" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "" #: dialogs.c:723 #, fuzzy msgid "ICS Options" msgstr "Seenekler" #: dialogs.c:728 msgid "Exact position match" msgstr "" #: dialogs.c:728 msgid "Shown position is subset" msgstr "" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "" #: dialogs.c:729 msgid "Same material" msgstr "" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "" #: dialogs.c:753 msgid "No games before year:" msgstr "" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "" #: dialogs.c:756 msgid "Search mode:" msgstr "" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "" #: dialogs.c:767 #, fuzzy msgid "Load Game Options" msgstr "Oyun Ykle" #: dialogs.c:779 #, fuzzy msgid "Auto-Save Games" msgstr "Oyunu Kaydet" #: dialogs.c:780 msgid "Own Games Only" msgstr "" #: dialogs.c:781 #, fuzzy msgid "Save Games on File:" msgstr "Oyunu Kaydet" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "" #: dialogs.c:794 #, fuzzy msgid "Save Game Options" msgstr "Oyunu Kaydet" #: dialogs.c:803 msgid "No Sound" msgstr "" #: dialogs.c:804 msgid "Default Beep" msgstr "" #: dialogs.c:805 msgid "Above WAV File" msgstr "" #: dialogs.c:806 msgid "Car Horn" msgstr "" #: dialogs.c:807 msgid "Cymbal" msgstr "" #: dialogs.c:808 msgid "Ding" msgstr "" #: dialogs.c:809 msgid "Gong" msgstr "" #: dialogs.c:810 msgid "Laser" msgstr "" #: dialogs.c:811 msgid "Penalty" msgstr "" #: dialogs.c:812 msgid "Phone" msgstr "" #: dialogs.c:813 msgid "Pop" msgstr "" #: dialogs.c:814 msgid "Roar" msgstr "" #: dialogs.c:815 msgid "Slap" msgstr "" #: dialogs.c:816 msgid "Wood Thunk" msgstr "" #: dialogs.c:818 #, fuzzy msgid "User File" msgstr "Dosya" #: dialogs.c:841 msgid "User WAV File:" msgstr "" #: dialogs.c:842 msgid "Sound Program:" msgstr "" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "" #: dialogs.c:844 msgid "Play" msgstr "" #: dialogs.c:845 msgid "Move:" msgstr "" #: dialogs.c:846 msgid "Win:" msgstr "" #: dialogs.c:847 msgid "Lose:" msgstr "" #: dialogs.c:848 #, fuzzy msgid "Draw:" msgstr "Berabere" #: dialogs.c:849 msgid "Unfinished:" msgstr "" #: dialogs.c:850 msgid "Alarm:" msgstr "" #: dialogs.c:851 msgid "Challenge:" msgstr "" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "" #: dialogs.c:854 msgid "Shout:" msgstr "" #: dialogs.c:855 msgid "S-Shout:" msgstr "" #: dialogs.c:856 #, fuzzy msgid "Channel:" msgstr "iptal" #: dialogs.c:857 #, fuzzy msgid "Channel 1:" msgstr "iptal" #: dialogs.c:858 msgid "Tell:" msgstr "" #: dialogs.c:859 msgid "Kibitz:" msgstr "" #: dialogs.c:860 msgid "Request:" msgstr "" #: dialogs.c:861 msgid "Lion roar:" msgstr "" #: dialogs.c:862 msgid "Seek:" msgstr "" #: dialogs.c:880 #, fuzzy msgid "Sound Options" msgstr "Seenekler" #: dialogs.c:896 msgid "Selectable themes:" msgstr "" #: dialogs.c:898 msgid "New name for current theme:" msgstr "" #: dialogs.c:901 msgid "White Piece Color:" msgstr "" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "" #: dialogs.c:917 msgid "Light Square Color:" msgstr "" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "" #: dialogs.c:929 msgid "Highlight Color:" msgstr "" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" #: dialogs.c:943 #, fuzzy msgid "Mono Mode" msgstr "Kip" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "" #: dialogs.c:946 msgid "Use Board Textures" msgstr "" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "" #: dialogs.c:1033 #, fuzzy msgid "Board Options" msgstr "Seenekler" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "" #: dialogs.c:1134 msgid "clear" msgstr "temizle" #: dialogs.c:1135 msgid "save changes" msgstr "" #: dialogs.c:1233 #, fuzzy msgid "add next move" msgstr "Sonraki Oyunu Ykle" #: dialogs.c:1234 msgid "commit changes" msgstr "" #: dialogs.c:1257 #, fuzzy msgid "Edit book" msgstr "Oyunu Dzenle" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "" #: dialogs.c:1405 #, fuzzy msgid "ICS input box" msgstr "ICS stemcisi" #: dialogs.c:1437 #, fuzzy msgid "Type a move" msgstr "Geersiz hamle" #: dialogs.c:1463 msgid "Engine has no options" msgstr "" #: dialogs.c:1465 msgid "Engine Settings" msgstr "" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "" #: dialogs.c:1509 msgid "or specify one below:" msgstr "" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "" #: dialogs.c:1513 msgid "Engine Command:" msgstr "" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "" #: dialogs.c:1515 msgid "UCI" msgstr "" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "" #: dialogs.c:1574 msgid "Load first engine" msgstr "" #: dialogs.c:1580 msgid "Load second engine" msgstr "" #: dialogs.c:1603 msgid "shuffle" msgstr "" #: dialogs.c:1604 msgid "Fischer castling" msgstr "" #: dialogs.c:1605 msgid "Start-position number:" msgstr "" #: dialogs.c:1606 msgid "randomize" msgstr "" #: dialogs.c:1607 msgid "pick fixed" msgstr "" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "" #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "" #: dialogs.c:1677 msgid "Message (above board):" msgstr "" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "" #: dialogs.c:1695 #, fuzzy msgid "Edit comments:" msgstr "Oyunu Sfrla" #: dialogs.c:1701 msgid "Move history / Engine Output:" msgstr "" #: dialogs.c:1707 #, fuzzy msgid "Game list:" msgstr "Oyun Listesini Gster" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "" #: dialogs.c:1768 msgid "Fonts" msgstr "" #: dialogs.c:1791 msgid "classical" msgstr "" #: dialogs.c:1792 msgid "incremental" msgstr "" #: dialogs.c:1793 msgid "fixed max" msgstr "" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "" #: dialogs.c:1795 msgid "Moves per session:" msgstr "" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "" #: dialogs.c:1799 msgid "Engine #1" msgstr "" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 #, fuzzy msgid "Cancel" msgstr "iptal" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "ah" #: dialogs.c:1972 msgid "Captain" msgstr "" #: dialogs.c:1973 msgid "Lieutenant" msgstr "" #: dialogs.c:1974 msgid "General" msgstr "" #: dialogs.c:1975 msgid "Warlord" msgstr "" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "At" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Fil" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Kale" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 #, fuzzy msgid "Archbishop" msgstr "Fil" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 #, fuzzy msgid "Chancellor" msgstr "iptal" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Vezir" #: dialogs.c:1988 msgid "Lion" msgstr "" #: dialogs.c:1992 msgid "Defer" msgstr "" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 #, fuzzy msgid "Promote" msgstr "Terfi" #: dialogs.c:2050 msgid "Chats:" msgstr "" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 #, fuzzy msgid "New Chat" msgstr "Oyunu Sfrla" #: dialogs.c:2058 msgid "Chat partner:" msgstr "" #: dialogs.c:2059 msgid "End Chat" msgstr "" #: dialogs.c:2060 msgid "Hide" msgstr "" #: dialogs.c:2287 #, fuzzy msgid "ICS Interaction" msgstr "Seenekler" #: dialogs.c:2372 msgid "factory" msgstr "" #: dialogs.c:2373 msgid "up" msgstr "" #: dialogs.c:2374 msgid "down" msgstr "" #: dialogs.c:2393 msgid "No tag selected" msgstr "" #: dialogs.c:2424 #, fuzzy msgid "Game-list options" msgstr "Oyun Ykle" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Hata" #: dialogs.c:2545 msgid "Fatal Error" msgstr "" #: dialogs.c:2545 msgid "Exiting" msgstr "" #: dialogs.c:2556 msgid "Information" msgstr "Bilgi" #: dialogs.c:2563 msgid "Note" msgstr "Not" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Beyaz" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Piyon" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Kareyi Boalt" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Tahtay Temizle" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Siyah" #: dialogs.c:2827 #, fuzzy msgid "_File" msgstr "Dosya" #: dialogs.c:2828 #, fuzzy msgid "_Edit" msgstr "Oyunu Dzenle" #: dialogs.c:2829 msgid "_View" msgstr "" #: dialogs.c:2830 #, fuzzy msgid "_Mode" msgstr "Kip" #: dialogs.c:2831 #, fuzzy msgid "_Action" msgstr "Eylem" #: dialogs.c:2832 msgid "E_ngine" msgstr "" #: dialogs.c:2833 #, fuzzy msgid "_Options" msgstr "Seenekler" #: dialogs.c:2834 #, fuzzy msgid "_Help" msgstr "Yardm" #: dialogs.c:2844 msgid "<<" msgstr "" #: dialogs.c:2845 msgid "<" msgstr "" #: dialogs.c:2847 msgid ">" msgstr "" #: dialogs.c:2848 msgid ">>" msgstr "" #: dialogs.c:3136 msgid "Directories:" msgstr "" #: dialogs.c:3137 #, fuzzy msgid "Files:" msgstr "Dosya" #: dialogs.c:3138 msgid "by name" msgstr "" #: dialogs.c:3139 msgid "by type" msgstr "" #: dialogs.c:3142 #, fuzzy msgid "Filename:" msgstr "Dosya ad girii" #: dialogs.c:3143 msgid "New directory" msgstr "" #: dialogs.c:3144 #, fuzzy msgid "File type:" msgstr "Analiz edilecek dosya" #: dialogs.c:3219 msgid "Contents of" msgstr "" #: dialogs.c:3245 #, fuzzy msgid " next page" msgstr "sonraki" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "" #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, fuzzy, c-format msgid "Failed to open file '%s'\n" msgstr "Dosya alamad" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "Dosya alamad" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "" #: menus.c:136 msgid "Load game file name?" msgstr "" #: menus.c:183 msgid "Load position file name?" msgstr "" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "" #: menus.c:198 msgid "Save position file name?" msgstr "" #: menus.c:355 msgid " (with Zippy code)" msgstr "" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "XBoard Hakknda" #: menus.c:390 msgid "Registered Engines" msgstr "" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 #, fuzzy msgid "New Game" msgstr "Oyunu Sfrla" #: menus.c:613 #, fuzzy msgid "New Shuffle Game..." msgstr "Oyunu Kaydet" #: menus.c:614 msgid "New Variant..." msgstr "" #: menus.c:616 #, fuzzy msgid "Load Game" msgstr "Oyun Ykle" #: menus.c:617 #, fuzzy msgid "Load Position" msgstr "Sonraki Pozisyonu Ykle" #: menus.c:618 #, fuzzy msgid "Next Position" msgstr "Sonraki Pozisyonu Ykle" #: menus.c:619 #, fuzzy msgid "Prev Position" msgstr "nceki Pozisyonu Ykle" #: menus.c:621 #, fuzzy msgid "Save Game" msgstr "Oyunu Kaydet" #: menus.c:622 #, fuzzy msgid "Save Position" msgstr "Ayn Pozisyonu Tekrar Ykle" #: menus.c:623 #, fuzzy msgid "Save Selected Games" msgstr "Oyunu Kaydet" #: menus.c:624 #, fuzzy msgid "Save Games as Book" msgstr "Oyunu Kaydet" #: menus.c:626 msgid "Mail Move" msgstr "Hamleyi Postala" #: menus.c:627 msgid "Reload CMail Message" msgstr "CMail letisini Tekrar Ykle" #: menus.c:629 msgid "Quit " msgstr "" #: menus.c:634 #, fuzzy msgid "Copy Game" msgstr "Oyun Listesini Gster" #: menus.c:635 #, fuzzy msgid "Copy Position" msgstr "Pozisyonu Kopyala" #: menus.c:636 #, fuzzy msgid "Copy Game List" msgstr "Oyun Listesini Gster" #: menus.c:638 #, fuzzy msgid "Paste Game" msgstr "Oyunu Sfrla" #: menus.c:639 #, fuzzy msgid "Paste Position" msgstr "Sonraki Pozisyonu Ykle" #: menus.c:641 menus.c:686 #, fuzzy msgid "Edit Game" msgstr "Oyunu Sfrla" #: menus.c:642 menus.c:687 #, fuzzy msgid "Edit Position" msgstr "Sonraki Pozisyonu Ykle" #: menus.c:643 msgid "Edit Tags" msgstr "" #: menus.c:644 msgid "Edit Comment" msgstr "" #: menus.c:645 #, fuzzy msgid "Edit Book" msgstr "Kitap" #: menus.c:647 msgid "Revert" msgstr "" #: menus.c:648 msgid "Annotate" msgstr "" #: menus.c:649 msgid "Truncate Game" msgstr "" #: menus.c:651 msgid "Backward" msgstr "Geri" #: menus.c:652 msgid "Forward" msgstr "leri" #: menus.c:653 #, fuzzy msgid "Back to Start" msgstr "En Baa" #: menus.c:654 #, fuzzy msgid "Forward to End" msgstr "En Sona" #: menus.c:659 msgid "Flip View" msgstr "" #: menus.c:662 #, fuzzy msgid "Move History" msgstr "Hamle listesi" #: menus.c:663 msgid "Evaluation Graph" msgstr "" #: menus.c:664 #, fuzzy msgid "Game List" msgstr "Oyun Listesini Gster" #: menus.c:667 msgid "Comments" msgstr "" #: menus.c:668 msgid "ICS Input Box" msgstr "" #: menus.c:669 msgid "ICS/Chat Console" msgstr "" #: menus.c:671 msgid "Edit ICS menu..." msgstr "" #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Oyun Listesini Gster" #: menus.c:674 msgid "Board..." msgstr "" #: menus.c:675 msgid "Fonts..." msgstr "" #: menus.c:676 msgid "Game List Tags..." msgstr "" #: menus.c:681 #, fuzzy msgid "Machine White" msgstr "Bilgisayar Beyaz" #: menus.c:682 #, fuzzy msgid "Machine Black" msgstr "Bilgisayar Siyah" #: menus.c:683 #, fuzzy msgid "Two Machines" msgstr "kisi de Bilgisayar" #: menus.c:684 #, fuzzy msgid "Analysis Mode" msgstr "Analiz Kipi" #: menus.c:685 #, fuzzy msgid "Analyze Game" msgstr "Analiz Dosyas" #: menus.c:688 msgid "Training" msgstr "Eitim" #: menus.c:689 msgid "ICS Client" msgstr "ICS stemcisi" #: menus.c:691 #, fuzzy msgid "Machine Match" msgstr "Bilgisayar Siyah" #: menus.c:692 msgid "Pause" msgstr "Duraklat" #: menus.c:697 msgid "Accept" msgstr "Kabul et" #: menus.c:698 msgid "Decline" msgstr "Red et" #: menus.c:699 msgid "Rematch" msgstr "" #: menus.c:701 #, fuzzy msgid "Call Flag" msgstr "Terk et" #: menus.c:702 #, fuzzy msgid "Draw" msgstr "Berabere" #: menus.c:703 msgid "Adjourn" msgstr "Ertele" #: menus.c:704 msgid "Abort" msgstr "" #: menus.c:705 msgid "Resign" msgstr "" #: menus.c:707 msgid "Stop Observing" msgstr "" #: menus.c:708 msgid "Stop Examining" msgstr "" #: menus.c:709 msgid "Upload to Examine" msgstr "" #: menus.c:711 msgid "Adjudicate to White" msgstr "" #: menus.c:712 msgid "Adjudicate to Black" msgstr "" #: menus.c:713 msgid "Adjudicate Draw" msgstr "" #: menus.c:718 msgid "Edit Engine List..." msgstr "" #: menus.c:720 msgid "Load New 1st Engine..." msgstr "" #: menus.c:721 msgid "Load New 2nd Engine..." msgstr "" #: menus.c:723 msgid "Engine #1 Settings..." msgstr "" #: menus.c:724 msgid "Engine #2 Settings..." msgstr "" #: menus.c:725 msgid "Common Settings..." msgstr "" #: menus.c:727 msgid "Hint" msgstr "pucu" #: menus.c:728 msgid "Book" msgstr "Kitap" #: menus.c:730 msgid "Move Now" msgstr "" #: menus.c:731 #, fuzzy msgid "Retract Move" msgstr "Hamleyi Geri Al" #: menus.c:736 msgid "Mute all Sounds" msgstr "" #: menus.c:739 msgid "General..." msgstr "" #: menus.c:741 msgid "Time Control..." msgstr "" #: menus.c:742 #, fuzzy msgid "Adjudications..." msgstr "Oyunu Kaydet" #: menus.c:743 msgid "ICS..." msgstr "" #: menus.c:744 msgid "Tournament..." msgstr "" #: menus.c:745 #, fuzzy msgid "Load Game..." msgstr "Oyun Ykle" #: menus.c:746 #, fuzzy msgid "Save Game..." msgstr "Oyunu Kaydet" #: menus.c:747 #, fuzzy msgid "Game List..." msgstr "Oyun Listesini Gster" #: menus.c:748 msgid "Sounds..." msgstr "" #: menus.c:751 msgid "Always Queen" msgstr "Hep Vezir Olsun" #: menus.c:757 msgid "Flash Moves" msgstr "" #: menus.c:759 msgid "Highlight Dragging" msgstr "" #: menus.c:762 msgid "Highlight With Arrow" msgstr "" #: menus.c:763 msgid "Move Sound" msgstr "" #: menus.c:765 msgid "Periodic Updates" msgstr "" #: menus.c:767 msgid "Popup Exit Message" msgstr "" #: menus.c:769 msgid "Show Coords" msgstr "" #: menus.c:770 msgid "Hide Thinking" msgstr "" #: menus.c:774 msgid "Save Settings Now" msgstr "" #: menus.c:775 msgid "Save Settings on Exit" msgstr "" #: menus.c:780 msgid "Info XBoard" msgstr "XBoard Info Sayfas" #: menus.c:781 #, fuzzy msgid "Man XBoard" msgstr "XBoard Man Sayfas" #: menus.c:783 msgid "XBoard Home Page" msgstr "" #: menus.c:784 msgid "On-line User Guide" msgstr "" #: menus.c:785 msgid "Development News" msgstr "" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "" #: menus.c:825 msgid "File" msgstr "Dosya" #: menus.c:826 #, fuzzy msgid "Edit" msgstr "Oyunu Dzenle" #: menus.c:827 msgid "View" msgstr "" #: menus.c:828 msgid "Mode" msgstr "Kip" #: menus.c:829 msgid "Action" msgstr "Eylem" #: menus.c:830 msgid "Engine" msgstr "" #: menus.c:831 msgid "Options" msgstr "Seenekler" #: menus.c:832 msgid "Help" msgstr "Yardm" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "" #: nengineoutput.c:156 msgid "Engine output" msgstr "" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "" #: nevalgraph.c:107 msgid "Blunder" msgstr "" #: nevalgraph.c:107 msgid "Eval" msgstr "" #: ngamelist.c:87 #, fuzzy msgid "find position" msgstr "Seenekler" #: ngamelist.c:88 msgid "narrow" msgstr "" #: ngamelist.c:89 msgid "thresholds" msgstr "" #: ngamelist.c:90 msgid "tags" msgstr "" #: ngamelist.c:91 msgid "next" msgstr "sonraki" #: ngamelist.c:92 msgid "close" msgstr "kapat" #: ngamelist.c:116 msgid "No game selected" msgstr "" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "" #: ngamelist.c:211 #, fuzzy msgid "previous page" msgstr "nceki Oyunu Ykle" #: ngamelist.c:214 #, fuzzy msgid "next page" msgstr "sonraki" #: ngamelist.c:217 msgid "no games matched your request" msgstr "" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "" #: ngamelist.c:284 msgid "There is no game list" msgstr "" #: nhistory.c:109 msgid "Move list" msgstr "Hamle listesi" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "" #, fuzzy #~ msgid "Match Options" #~ msgstr "Seenekler" #~ msgid "cancel" #~ msgstr "iptal" #, fuzzy #~ msgid "Load Position Ctrl+Shift+O" #~ msgstr "Pozisyon Ykle" #, fuzzy #~ msgid "Save Position Ctrl+Shift+S" #~ msgstr "Pozisyonu Kaydet" #, fuzzy #~ msgid "Copy Game Ctrl+C" #~ msgstr "Oyunu Kopyala" #, fuzzy #~ msgid "Paste Game Ctrl+V" #~ msgstr "Oyunu Yaptr" #, fuzzy #~ msgid "Paste Position Ctrl+Shift+V" #~ msgstr "Pozisyonu Yaptr" #, fuzzy #~ msgid "Edit Game Ctrl+E" #~ msgstr "Oyunu Dzenle" #, fuzzy #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "Pozisyonu Dzenle" #, fuzzy #~ msgid "Machine Black Ctrl+B" #~ msgstr "Bilgisayar Siyah" #~ msgid "Can't open file" #~ msgstr "Dosya alamyor" #~ msgid "Promotion" #~ msgstr "Terfi" #, fuzzy #~ msgid "Promote to what?" #~ msgstr "Piyon hangi taa terfi edilsin?" #~ msgid "ok" #~ msgstr "tamam" #~ msgid "enter" #~ msgstr "gir" #~ msgid "load" #~ msgstr "ykle" #~ msgid "prev" #~ msgstr "nceki" #~ msgid "White " #~ msgstr "Beyaz " #~ msgid "Black " #~ msgstr "Siyah " #~ msgid "Close" #~ msgstr "Kapat" #, fuzzy #~ msgid " " #~ msgstr "Terk et" #~ msgid "Reload Same Game" #~ msgstr "Ayn Oyunu Tekrar Ykle" #~ msgid "Exit" #~ msgstr "k" #~ msgid "Step" #~ msgstr "Adm" #~ msgid "P" #~ msgstr "D" #~ msgid "edit" #~ msgstr "dzenle" xboard-4.9.1/po/zh_CN.po0000644000175000001440000020222012747543737011721 00000000000000# XBoard -- a graphical chessboard for X # Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the XBoard package. # Tianze Wang , 2016. # msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.9.0-pre2\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2016-04-05 20:23+0800\n" "Last-Translator: Tianze Wang \n" "Language-Team: Chinese (simplified) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.8.7\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "%s 位于配置文件中\n" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "整数 %s 有误" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "无法识别参数 %s" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "未提供参数 %s 的值" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "%s 的值中有不完整的“\\”转义字符" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "打开间接文件 %s 失败" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "无法识别逻辑变量值 %s" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "第一个" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "第二个" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "不支持协议版本 %d" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "未指定引擎的可执行文件" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "timeControl 选项 %s 错误" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "searchTime 选项 %s 错误" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "仅 ICS 模式支持变量 %s" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "未知变量名 %s" #: backend.c:1457 msgid "Starting chess program" msgstr "开始象棋程序" #: backend.c:1480 msgid "Bad game file" msgstr "棋局文件错误" #: backend.c:1487 msgid "Bad position file" msgstr "位置文件错误" #: backend.c:1501 msgid "Pick new game" msgstr "选择新棋局" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" "你重新开始了一个已经完成的赛程。\n" "将会添加更多的回合。\n" "棋局将在10秒内开始。" #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "“%s”赛程中的所有棋局都已完成或正在进行" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "没有象棋程序,无法开始比赛" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "无法打开通讯端口 %s" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "无法链接到主机 %s,端口号 %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "未知 initialMode %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "AnalyzeFile 模式需要棋局文件" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "Analysis 模式需要有象棋引擎" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "Analysis 模式无法与 ICS 模式共用" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "MachineWhite 模式需要有象棋引擎" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "MachineWhite 模式无法与 ICS 模式共用" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "MachineBlack 模式需要有象棋引擎" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "MachineBlack 模式无法与 ICS 模式共用" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "TwoMachines 模式需要有象棋引擎" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "TwoMachines 模式无法与 ICS 模式共用" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "训练模式需要有象棋引擎" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "写入 ICS 出错" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "读取键盘出错" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "从键盘上读到了EOF" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "未知的原始类型 %d" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "写入显示器时出错" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "你的对手 kibitzes:%s" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "获取棋步列表出错:有两个头部" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "获取棋步列表出错:出现嵌套" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "vs." #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "非法棋步(被 ICS 拒绝)" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "链接被 ICS 关闭" #: backend.c:4306 msgid "Error reading from ICS" msgstr "从 ICS 读取时出错" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" "解析棋盘字符出错:\n" "“%s”" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "比赛太长;请增大 MAX_MOVES 的值并重新编译" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "获取棋步列表出错:额外的棋盘" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "无法从 ICS 解析棋布“%s”" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "出现内部错误;错误的 moveType %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "在比赛或观战时无法进行此操作" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "请重新编译以提供该 BOARD_RANKS 或 BOARD_FILES 特性!" #: backend.c:6858 msgid "You are playing Black" msgstr "我方执黑" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "我方执白" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "白方行" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "黑方行" #: backend.c:6920 msgid "Displayed position is not current" msgstr "显示的位置非当前位置" #: backend.c:7123 msgid "rights granted" msgstr "已授予权限" #: backend.c:7123 msgid "rights revoked" msgstr "已撤销权限" #: backend.c:7175 msgid "Illegal move" msgstr "非法棋步" #: backend.c:7255 msgid "End of game" msgstr "棋局结束" #: backend.c:7258 msgid "Incorrect move" msgstr "棋步不正确" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "将棋子向后拖来使其升变" #: backend.c:7780 msgid "only marked squares are legal" msgstr "仅标记的位置为合理位置" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "瑞士锦标赛已结束" #: backend.c:8632 msgid "could not load EGBB library" msgstr "无法加载 EGBB 库" #: backend.c:8635 msgid "wrong EGBB version" msgstr "EGBB 版本错误" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "配对引擎给出了错误的匹配" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "%s 机器给出了非法的棋步“%s”" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "引擎给出了错误的 FEN" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "引擎未发送非标准棋种的布局" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s 不支持分析" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "非法棋步“%s”(被 %s 象棋程序拒绝)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "在 %s 上启动 %s 象棋程序 %s 失败:%s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "提示:%s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" "%2$s 象棋程序给出了\n" "非法的棋步提示“%1$s”" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "机器接受了你的和局请求" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" "机器提出了和局请求。\n" "请选择 操作 / 和局 来确认。" #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "写入 PV 失败" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "ICS 输出的棋步有歧义:“%s”" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "ICS 输出的棋步非法:“%s”" #: backend.c:10132 msgid "Gap in move list" msgstr "棋步列表中有空缺" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "%2$s 不支持变量 %1$s" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr ",但 %s 为" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "“%s”启动失败" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "等待第一个象棋程序" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "等待第二个象棋程序" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "无法写入到赛程文件" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" "在引擎比赛时不能将其替换!\n" "请先终止比赛。" #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "未安装所给定的引擎" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "请先在赛事选项对话框中的参赛列表里改变引擎" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "你一次只能改变一个引擎" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "未安装引擎 %s" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" "你必须提供一个赛事文件,\n" "以便恢复赛程" #: backend.c:11200 msgid "Not enough participants" msgstr "参赛者不足" #: backend.c:11403 msgid "Bad tournament file" msgstr "赛事文件错误" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "正在等待其他棋局" #: backend.c:11428 msgid "No pairing engine specified" msgstr "未指定配对引擎" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "平均运算时间 %4.2f 秒(总计 %4.2f 秒)" #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "避免了 %d 个可能导致输棋的棋步" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "解出了 %2$d 中的 %1$d 个(%3$3.1f%%)" #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "比赛 %s vs. %s:最终比分 %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "非法棋步:%d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "棋步有歧义:%d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "无法打开“%s”" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "无法构建棋局列表" #: backend.c:12574 msgid "No more games in this message" msgstr "消息中没有更多的棋局" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "尚未加载任何棋局" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "无法进一步后退" #: backend.c:13065 msgid "Game number out of range" msgstr "棋局编号超出范围" #: backend.c:13076 msgid "Can't seek on game file" msgstr "无法在棋局文件中定位" #: backend.c:13134 msgid "Game not found in file" msgstr "文件中找不到棋局" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "文件中的 FEN 位置有误" #: backend.c:13423 msgid "No moves in game" msgstr "棋局中没有棋步" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "尚未加载任何位置" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "无法在位置文件中定位" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "文件中找不到位置" #: backend.c:13645 msgid "Black to play" msgstr "黑方行" #: backend.c:13648 msgid "White to play" msgstr "白方行" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "正在等待以写入到文件" #: backend.c:13737 msgid "Saving game" msgstr "保存棋局" #: backend.c:13738 msgid "Bad Seek" msgstr "定位错误" #: backend.c:14111 msgid "Saving position" msgstr "保存位置" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" "你编辑了棋局历史。\n" "请重新加载同一个棋局,然后再次行棋。" #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" "你输入了过多的棋步。\n" "请后退至正确的位置,然后重试。" #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" "显示的位置不正确。\n" "请前进至正确的位置,然后重试。" #: backend.c:14294 msgid "You have not made a move yet" msgstr "你还没有行棋" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" "尚未加载 cmail 消息。\n" "请重新加载 CMail 消息,然后再次行棋。" #: backend.c:14320 msgid "No unfinished games" msgstr "没有未完成的比赛" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" "你已经下了一步棋,请等待你的对手行棋。\n" "若要重新发送相同的棋步,在命令行中输入\n" "\"cmail -remail -game %s\"。" #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "调用 cmail 失败" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "等待对手回复\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "仍然需要下一步棋来继续比赛\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "仍然需要下一步棋来继续这两个比赛\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "仍然需要下一步棋来继续这 %d 个比赛\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "仍然需要下一步棋来继续比赛 %s\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "没有未完成的比赛\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "已做好发送邮件的准备\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "仍然需要下几步棋来继续比赛 %s\n" #: backend.c:14656 msgid "Edit comment" msgstr "编辑评论" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "编辑 %d.%s%s 的评论" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "你未处于观战模式" #: backend.c:14824 msgid "It is not White's turn" msgstr "并非白方的回合" #: backend.c:14907 msgid "It is not Black's turn" msgstr "并非黑方的回合" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "启动 %s 象棋程序" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" "请等待你的回合,\n" "或选择“立即行棋”。" #: backend.c:15188 msgid "Training mode off" msgstr "开启训练模式" #: backend.c:15196 msgid "Training mode on" msgstr "关闭训练模式" #: backend.c:15199 msgid "Already at end of game" msgstr "已经处于残局" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "警告:你仍然在比赛中" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "警告:你仍然在观战中" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "警告:你仍然在研究比赛中" #: backend.c:15365 msgid "Click clock to clear board" msgstr "点击时钟来清理棋盘" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "关闭 ICS 引擎分析..." #: backend.c:15711 msgid "That square is occupied" msgstr "此方格已被占据" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "你的对手未退出比赛" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "你必须在请求平局之前动一步" #: backend.c:16220 msgid "You are not examining a game" msgstr "你尚未处于研究模式" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "你无法在暂停时进行撤销操作" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "轮到你了" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "请等待你的回合。" #: backend.c:16348 msgid "No hint available" msgstr "没有提示" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "尚未加载棋局列表,或列表为空" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "Book 文件已存在!若要覆盖请重复此操作。" #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "写入%s 象棋程序时出错" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "%s 程序在绘制位置(%s)时退出" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "错误:%s 象棋程序(%s)意外地退出了" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "从 %s 象棋程序读取时出错(%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "%s 引擎的选项过多\n" #: backend.c:17521 msgid "Displayed move is not current" msgstr "显示的棋步非当前棋步" #: backend.c:17530 msgid "Could not parse move" msgstr "无法解析棋步" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "双方均超时了" #: backend.c:17657 msgid "White's flag fell" msgstr "白方超时" #: backend.c:17679 msgid "Black's flag fell" msgstr "黑方超时" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "自动限时模式中不允许调整时间" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "剪贴板中的 FEN 位置有误" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "Polyglot book 无效" #: book.c:722 msgid "Book Fault" msgstr "Book 错误" #: book.c:877 msgid "Hash keys are different" msgstr "散列的键不相同" #: book.c:1054 msgid "Could not create book" msgstr "无法创建 book" #: dialogs.c:287 msgid "Tournament file: " msgstr "赛事文件: " #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "用于同时在多个XBoards中进行一个赛事:" #: dialogs.c:289 msgid "Sync after round" msgstr "每回合后同步" #: dialogs.c:290 msgid "Sync after cycle" msgstr "每轮后同步" #: dialogs.c:291 msgid "Tourney participants:" msgstr "参赛者:" #: dialogs.c:292 msgid "Select Engine:" msgstr "选择引擎:" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "赛事类型(0=循环赛,1=挑战赛):" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "赛事轮数(或瑞士轮数):" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "默认的比赛数(或配对数):" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "棋局间隔(毫秒):" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "保持赛事文件到:" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "棋局开场白文件:" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "棋局编号(-1 或 -2=自动增长)" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "起始位置文件:" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "位置编号(-1 或 -2=自动增长)" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "在多少个棋局后将索引复位(0=从不):" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "默认禁用引擎自带的棋谱" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "时间控制" #: dialogs.c:312 msgid "Common Engine" msgstr "通用引擎" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "通用选项" #: dialogs.c:314 msgid "Continue Later" msgstr "稍后继续" #: dialogs.c:315 msgid "Replace Engine" msgstr "更换引擎" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "升级引擎" #: dialogs.c:317 msgid "Clone Tourney" msgstr "克隆赛事" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "你必须指定现存的赛事文件来进行克隆" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "# 没有安装引擎" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "内部错误:PARTICIPANTS 设置错误" #: dialogs.c:389 msgid "Tournament Options" msgstr "赛事选项" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "绝对分析分值" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "拖动动画" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "移动动画" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "自动限时" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "自动翻转视角" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "盲棋" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "下拉菜单" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "启用步法树" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "引擎输出窗口中的头部" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "隐藏人的思考" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "高亮显示最后一步" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "用箭头突出显示" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "一键移动" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "周期更新(分析模式)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "思考下一步" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "弹出退出消息" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "弹出棋步错误" #: dialogs.c:429 msgid "Scores in Move List" msgstr "棋步列表中显示分值" #: dialogs.c:430 msgid "Show Coordinates" msgstr "显示坐标" #: dialogs.c:431 msgid "Show Target Squares" msgstr "显示目标方格" #: dialogs.c:432 msgid "Sticky Windows" msgstr "窗口吸附" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "探测棋步合法性" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "置顶对话框" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "棋步闪烁(0=不闪烁)" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "闪烁频率(high=快)" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "动画速度(high=慢)" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "评估图的焦距:" #: dialogs.c:458 msgid "Normal" msgstr "普通" #: dialogs.c:459 msgid "Makruk" msgstr "泰国象棋" #: dialogs.c:460 msgid "FRC" msgstr "菲舍尔任意制象棋" #: dialogs.c:461 msgid "Shatranj" msgstr "波斯象棋" #: dialogs.c:462 msgid "Wild castle" msgstr "自由易位棋" #: dialogs.c:463 msgid "Knightmate" msgstr "" #: dialogs.c:464 msgid "No castle" msgstr "无易位棋" #: dialogs.c:465 msgid "Cylinder *" msgstr "滚筒棋 *" #: dialogs.c:466 msgid "3-checks" msgstr "“三次将”" #: dialogs.c:467 msgid "berolina *" msgstr "柏林棋 *" #: dialogs.c:468 msgid "atomic" msgstr "核象棋" #: dialogs.c:469 msgid "two kings" msgstr "双王棋" #: dialogs.c:470 msgid " " msgstr " " #: dialogs.c:471 msgid "Spartan" msgstr "斯巴达象棋" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "棋盘大小(-1=所选项的默认值)" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "棋盘行数:" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "棋盘列数:" #: dialogs.c:475 msgid "Holdings Size:" msgstr "" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" "* 标记的棋种只能在关闭有效性检测的情况\n" "下对弈。" #: dialogs.c:479 msgid "ASEAN" msgstr "东南亚象棋" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "大波斯象棋(10x8)" #: dialogs.c:481 msgid "Seirawan" msgstr "谢尔望棋" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "猎鹰棋(10x8)" #: dialogs.c:483 msgid "Superchess" msgstr "超级象棋" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "卡帕布兰卡象棋(10x8)" #: dialogs.c:485 msgid "Crazyhouse" msgstr "双狂象棋" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "哥特式象棋" #: dialogs.c:487 msgid "Bughouse" msgstr "四狂象棋" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "双象棋(10x8)" #: dialogs.c:489 msgid "Suicide" msgstr "自杀棋" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "卡帕布兰卡任意制象棋(10x8)" #: dialogs.c:491 msgid "give-away" msgstr "拱手棋" #: dialogs.c:492 msgid "grand (10x10)" msgstr "大象棋(10x10)" #: dialogs.c:493 msgid "losers" msgstr "败者棋" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "日本将棋(9x9)" #: dialogs.c:495 msgid "fairy" msgstr "仙灵棋" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "中国象棋(9x10)" #: dialogs.c:497 msgid "mighty lion" msgstr "雄狮棋" #: dialogs.c:498 msgid "courier (12x8)" msgstr "信使象棋" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "精灵棋(10x10)" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "中将棋(12x12)" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr ": (%s) !" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "仅 bughouse 不支持观战者模式。" #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" "第一个引擎(当前为 %s )不支持\n" "的棋种都已被禁用。" #: dialogs.c:596 msgid "New Variant" msgstr "新棋种" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "每个引擎最多使用的CPU数:" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "Polygot 目录:" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "散列表大小(MB):" #: dialogs.c:631 msgid "EGTB Path:" msgstr "EGTB 路径:" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "EGTB 缓存大小(MB):" #: dialogs.c:633 msgid "Use GUI Book" msgstr "使用 GUI 棋谱" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "打开棋谱文件:" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "棋谱深度(步数):" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "#1 引擎有自带棋谱" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "#2 引擎有自带棋谱" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "通用引擎设置" #: dialogs.c:655 msgid "Detect all Mates" msgstr "检测所有将军情形" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "检查引擎输出结果" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "若无法将死,则判为平局" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "裁决重复和局(三次行棋重复)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "N-步规则:" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "N的倍数次重复:" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "N步后和局:" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "胜/负阈值:" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "#1 引擎的负分" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "#2 引擎的负分" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "裁决非ICS比赛" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "自动支招" #: dialogs.c:685 msgid "Auto-Comment" msgstr "自动注释" #: dialogs.c:686 msgid "Auto-Observe" msgstr "自动观察" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "自动创建登录脚本" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "对弈时后台观战" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "后台观战时显示双棋盘" #: dialogs.c:691 msgid "Get Move List" msgstr "获取棋步列表" #: dialogs.c:692 msgid "Quiet Play" msgstr "静默比赛" #: dialogs.c:693 msgid "Seek Graph" msgstr "试探图" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "自动刷新试探图" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "自动弹出输入框" #: dialogs.c:696 msgid "Quit after game" msgstr "棋局结束后退出" #: dialogs.c:697 msgid "Premove" msgstr "先行棋" #: dialogs.c:698 msgid "Premove for White" msgstr "白先行" #: dialogs.c:699 msgid "First White Move:" msgstr "白方先行棋:" #: dialogs.c:700 msgid "Premove for Black" msgstr "黑先行" #: dialogs.c:701 msgid "First Black Move:" msgstr "黑方先行棋:" #: dialogs.c:703 msgid "Alarm" msgstr "警告" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "警告时间(毫秒):" #: dialogs.c:706 msgid "Colorize Messages" msgstr "消息着色" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "呼喊文本颜色:" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "S-呼喊文本颜色:" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "1# 频道文字颜色:" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "其他频道文字颜色:" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "支招文本颜色:" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "告知文本颜色:" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "挑战文本颜色:" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "请求文本颜色:" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "试探文本颜色" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "其他文字颜色:" #: dialogs.c:723 msgid "ICS Options" msgstr "ICS 选项" #: dialogs.c:728 msgid "Exact position match" msgstr "匹配准确位置" #: dialogs.c:728 msgid "Shown position is subset" msgstr "" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "" #: dialogs.c:729 msgid "Same material" msgstr "" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "自动显示标记" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "自动显示注释" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" "载入棋局的自动对弈速度\n" "(0=立即,-1=关闭)" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "每步秒数:" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" "\n" "用于观战者模式的选项:" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" "\n" "游戏列表中位置筛选的阈值:" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "最强对手的最低 ELO 积分" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "最弱对手的最低 ELO 积分" #: dialogs.c:753 msgid "No games before year:" msgstr "" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "" #: dialogs.c:756 msgid "Search mode:" msgstr "搜索模式:" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "也匹配相反的颜色" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "也匹配左右翻转的位置" #: dialogs.c:767 msgid "Load Game Options" msgstr "棋局加载选项" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "自动保存棋局" #: dialogs.c:780 msgid "Own Games Only" msgstr "仅自己的棋局" #: dialogs.c:781 msgid "Save Games on File:" msgstr "将棋局保存到文件:" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "将最终位置保存到文件:" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "PGN 事件头部:" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "旧模式(相对于 PGN)保存" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "包括赛事 PGN 的编号标签" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "将分数/深度信息保存到PGN" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "将棋谱未涵盖的信息保存到PGN " #: dialogs.c:794 msgid "Save Game Options" msgstr "保存棋局选项" #: dialogs.c:803 msgid "No Sound" msgstr "静音" #: dialogs.c:804 msgid "Default Beep" msgstr "默认音效" #: dialogs.c:805 msgid "Above WAV File" msgstr "" #: dialogs.c:806 msgid "Car Horn" msgstr "汽车喇叭" #: dialogs.c:807 msgid "Cymbal" msgstr "钹" #: dialogs.c:808 msgid "Ding" msgstr "铃" #: dialogs.c:809 msgid "Gong" msgstr "锣" #: dialogs.c:810 msgid "Laser" msgstr "激光" #: dialogs.c:811 msgid "Penalty" msgstr "惩罚" #: dialogs.c:812 msgid "Phone" msgstr "电话" #: dialogs.c:813 msgid "Pop" msgstr "弹出" #: dialogs.c:814 msgid "Roar" msgstr "怒吼" #: dialogs.c:815 msgid "Slap" msgstr "拍打" #: dialogs.c:816 msgid "Wood Thunk" msgstr "木梆" #: dialogs.c:818 msgid "User File" msgstr "用户文件" #: dialogs.c:841 msgid "User WAV File:" msgstr "用户 WAV 文件:" #: dialogs.c:842 msgid "Sound Program:" msgstr "声音程序:" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "试探音效:" #: dialogs.c:844 msgid "Play" msgstr "播放" #: dialogs.c:845 msgid "Move:" msgstr "行棋:" #: dialogs.c:846 msgid "Win:" msgstr "赢棋:" #: dialogs.c:847 msgid "Lose:" msgstr "输棋:" #: dialogs.c:848 msgid "Draw:" msgstr "平局:" #: dialogs.c:849 msgid "Unfinished:" msgstr "未完成:" #: dialogs.c:850 msgid "Alarm:" msgstr "警告:" #: dialogs.c:851 msgid "Challenge:" msgstr "挑战:" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "音效目录:" #: dialogs.c:854 msgid "Shout:" msgstr "呼喊:" #: dialogs.c:855 msgid "S-Shout:" msgstr "S-呼喊:" #: dialogs.c:856 msgid "Channel:" msgstr "频道:" #: dialogs.c:857 msgid "Channel 1:" msgstr "频道 1:" #: dialogs.c:858 msgid "Tell:" msgstr "告知:" #: dialogs.c:859 msgid "Kibitz:" msgstr "支招:" #: dialogs.c:860 msgid "Request:" msgstr "请求:" #: dialogs.c:861 msgid "Lion roar:" msgstr "狮吼:" #: dialogs.c:862 msgid "Seek:" msgstr "试探:" #: dialogs.c:880 msgid "Sound Options" msgstr "声音选项" #: dialogs.c:896 msgid "Selectable themes:" msgstr "可选主题:" #: dialogs.c:898 msgid "New name for current theme:" msgstr "当前主题的新名称:" #: dialogs.c:901 msgid "White Piece Color:" msgstr "白子颜色:" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "红" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "绿" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "蓝" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "黑" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "黑子颜色:" #: dialogs.c:917 msgid "Light Square Color:" msgstr "白格颜色:" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "黑格颜色:" #: dialogs.c:929 msgid "Highlight Color:" msgstr "高亮颜色:" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "先行棋高亮颜色:" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "翻转将棋棋子(点击着色按钮来恢复默认)" #: dialogs.c:943 msgid "Mono Mode" msgstr "单色模式" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "徽标大小(0=off,需要重启):" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "线条间隙(-1=根据棋盘大小确定):" #: dialogs.c:946 msgid "Use Board Textures" msgstr "使用棋盘纹理" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "黑格纹理文件:" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "白格纹理文件:" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "将外部位图用于棋子颜色" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "棋子图像的目录:" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "# 没有定义主题" #: dialogs.c:1033 msgid "Board Options" msgstr "棋盘选项" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "ICS 文本菜单" #: dialogs.c:1134 msgid "clear" msgstr "清除" #: dialogs.c:1135 msgid "save changes" msgstr "保存更改" #: dialogs.c:1233 msgid "add next move" msgstr "添加下一步" #: dialogs.c:1234 msgid "commit changes" msgstr "保存更改" #: dialogs.c:1257 msgid "Edit book" msgstr "编辑棋谱" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "标签" #: dialogs.c:1405 msgid "ICS input box" msgstr "ICS 输入框" #: dialogs.c:1437 msgid "Type a move" msgstr "输入一个棋步" #: dialogs.c:1463 msgid "Engine has no options" msgstr "引擎没有选项" #: dialogs.c:1465 msgid "Engine Settings" msgstr "引擎设置" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "从列表中选择引擎:" #: dialogs.c:1509 msgid "or specify one below:" msgstr "或在下面指定一个:" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "昵称(可选):" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "在机器-机器对战中的 PGN 玩家标签中使用昵称" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "引擎目录:" #: dialogs.c:1513 msgid "Engine Command:" msgstr "引擎命令:" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "(若留空,则根据引擎路径推测其目录)" #: dialogs.c:1515 msgid "UCI" msgstr "UCI" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "USI/UCCI(使用指定的 -uxiAdapter)" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "WB 协议第一版(不等待引擎的特性)" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "禁止使用 GUI 棋谱" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "将该引擎添加到列表" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "强制当前棋种使用该引擎" #: dialogs.c:1574 msgid "Load first engine" msgstr "加载第一个引擎" #: dialogs.c:1580 msgid "Load second engine" msgstr "加载第二个引擎" #: dialogs.c:1603 msgid "shuffle" msgstr "任意制" #: dialogs.c:1604 msgid "Fischer castling" msgstr "菲舍尔式易位" #: dialogs.c:1605 msgid "Start-position number:" msgstr "起始位置编号:" #: dialogs.c:1606 msgid "randomize" msgstr "随机化" #: dialogs.c:1607 msgid "pick fixed" msgstr "指定固定值" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "新任意制游戏" #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "计时(需要重启):" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "+" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "-" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "I" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "*" #: dialogs.c:1677 msgid "Message (above board):" msgstr "消息(位于棋盘上)" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "ICS 聊天/聊天终端" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "编辑标记/棋谱/引擎列表:" #: dialogs.c:1695 msgid "Edit comments:" msgstr "编辑评论:" #: dialogs.c:1701 msgid "Move history / Engine Output:" msgstr "棋步历史/引擎输出:" #: dialogs.c:1707 msgid "Game list:" msgstr "棋局列表:" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" "\n" "按钮 * 用于设定字体:" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "此功能仅用于 GTK 前端" #: dialogs.c:1768 msgid "Fonts" msgstr "字体" #: dialogs.c:1791 msgid "classical" msgstr "经典" #: dialogs.c:1792 msgid "incremental" msgstr "自增" #: dialogs.c:1793 msgid "fixed max" msgstr "固定最大值" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "输入的时间除以 60" #: dialogs.c:1795 msgid "Moves per session:" msgstr "每个会话的步数:" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "初始时间(分钟):" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "自增或最大值(秒/每步):" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "时间比例因子:" #: dialogs.c:1799 msgid "Engine #1" msgstr "#1 引擎" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "#2 引擎/人" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "不使用" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "尚未实现在棋局中改变时间控制的功能" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "写入到象棋程序时出错" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "取消" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "王" #: dialogs.c:1972 msgid "Captain" msgstr "帅" #: dialogs.c:1973 msgid "Lieutenant" msgstr "尉" #: dialogs.c:1974 msgid "General" msgstr "将" #: dialogs.c:1975 msgid "Warlord" msgstr "军阀" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "马" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "象" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "车" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "大主教" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "校" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "后" #: dialogs.c:1988 msgid "Lion" msgstr "狮" #: dialogs.c:1992 msgid "Defer" msgstr "延" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "升" #: dialogs.c:2050 msgid "Chats:" msgstr "聊天:" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 msgid "New Chat" msgstr "新聊天" #: dialogs.c:2058 msgid "Chat partner:" msgstr "聊天伙伴:" #: dialogs.c:2059 msgid "End Chat" msgstr "结束聊天" #: dialogs.c:2060 msgid "Hide" msgstr "隐藏" #: dialogs.c:2287 msgid "ICS Interaction" msgstr "ICS 交互" #: dialogs.c:2372 msgid "factory" msgstr "" #: dialogs.c:2373 msgid "up" msgstr "上" #: dialogs.c:2374 msgid "down" msgstr "下" #: dialogs.c:2393 msgid "No tag selected" msgstr "未选择标签" #: dialogs.c:2424 msgid "Game-list options" msgstr "棋局列表选项" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "错误" #: dialogs.c:2545 msgid "Fatal Error" msgstr "严重错误" #: dialogs.c:2545 msgid "Exiting" msgstr "退出" #: dialogs.c:2556 msgid "Information" msgstr "信息" #: dialogs.c:2563 msgid "Note" msgstr "注释" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "白" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "卒" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "象" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "炮" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "降" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "空位" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "清除棋盘" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "黑" #: dialogs.c:2827 msgid "_File" msgstr "文件(_F)" #: dialogs.c:2828 msgid "_Edit" msgstr "编辑(_E)" #: dialogs.c:2829 msgid "_View" msgstr "查看(_V)" #: dialogs.c:2830 msgid "_Mode" msgstr "模式(_M)" #: dialogs.c:2831 msgid "_Action" msgstr "动作(_A)" #: dialogs.c:2832 msgid "E_ngine" msgstr "引擎(_N)" #: dialogs.c:2833 msgid "_Options" msgstr "选项(_O)" #: dialogs.c:2834 msgid "_Help" msgstr "帮助(_H)" #: dialogs.c:2844 msgid "<<" msgstr "<<" #: dialogs.c:2845 msgid "<" msgstr "<" #: dialogs.c:2847 msgid ">" msgstr ">" #: dialogs.c:2848 msgid ">>" msgstr ">>" #: dialogs.c:3136 msgid "Directories:" msgstr "目录:" #: dialogs.c:3137 msgid "Files:" msgstr "文件:" #: dialogs.c:3138 msgid "by name" msgstr "按名称" #: dialogs.c:3139 msgid "by type" msgstr "按类型" #: dialogs.c:3142 msgid "Filename:" msgstr "文件名:" #: dialogs.c:3143 msgid "New directory" msgstr "新目录" #: dialogs.c:3144 msgid "File type:" msgstr "文件类型:" #: dialogs.c:3219 msgid "Contents of" msgstr "" #: dialogs.c:3245 msgid " next page" msgstr "下一页" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "请先在这里输入目录名" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "尝试别的名称" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" "未安装默认棋子\n" "请使用“-pieceImageDirectory”来选择你的棋子。" #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "引擎输出" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "%s(可撤销 %d 步)" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "NPS" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "读取棋局文件(%d)" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s:无法改变目录到 CHESSDIR:" #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "打开文件“%s”失败\n" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "请使用更大的 BOARD_RANKS 或 BOARD_FILES 值重新编译来支持该尺寸" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s:boardSize 语法错误 %s\n" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s:无法识别 boardSize 名称 %s\n" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s:可用颜色太少;请尝试单色模式\n" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "无法为 %s 创建字体集。\n" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s:没有匹配 %s 的字体\n" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "无法打开临时文" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "打开文件失败" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "浏览" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "确定" #: menus.c:136 msgid "Load game file name?" msgstr "要载入的棋局文件名?" #: menus.c:183 msgid "Load position file name?" msgstr "要载入的位置文件名?" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "要保存的棋局文件名?" #: menus.c:198 msgid "Save position file name?" msgstr "要保存的位置文件名?" #: menus.c:355 msgid " (with Zippy code)" msgstr "" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" "%s%s\n" "\n" "版权所有 1991 Digital Equipment Corporation\n" "改进版版权所有 1992-2016 Free Software Foundation\n" "改进版版权所有 2005 Alessandro Scotti\n" "%s 是自由软件,并且没有任何担保;请参见 COPYING 文件来获取更多信息。\n" "当前版本使用的 GTK 构建是实验性的,可能不稳定\n" "\n" "XBoard 网站:http://www.gnu.org/software/xboard/\n" "了解新特性:http://www.gnu.org/software/xboard/whats_new.html\n" "\n" "通过邮件反馈软件缺陷:\n" "\n" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "关于 XBoard" #: menus.c:390 msgid "Registered Engines" msgstr "已知的引擎" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 msgid "New Game" msgstr "新棋局" #: menus.c:613 msgid "New Shuffle Game..." msgstr "新任意制游戏..." #: menus.c:614 msgid "New Variant..." msgstr "新棋种..." #: menus.c:616 msgid "Load Game" msgstr "加载棋局" #: menus.c:617 msgid "Load Position" msgstr "加载位置" #: menus.c:618 msgid "Next Position" msgstr "后一个位置" #: menus.c:619 msgid "Prev Position" msgstr "前一个位置" #: menus.c:621 msgid "Save Game" msgstr "保存棋局" #: menus.c:622 msgid "Save Position" msgstr "保存位置" #: menus.c:623 msgid "Save Selected Games" msgstr "保存选定棋局" #: menus.c:624 msgid "Save Games as Book" msgstr "保存棋局为棋谱" #: menus.c:626 msgid "Mail Move" msgstr "发送棋步" #: menus.c:627 msgid "Reload CMail Message" msgstr "重新载入 CMail 消息" #: menus.c:629 msgid "Quit " msgstr "退出" #: menus.c:634 msgid "Copy Game" msgstr "复制棋局" #: menus.c:635 msgid "Copy Position" msgstr "复制位置" #: menus.c:636 msgid "Copy Game List" msgstr "复制棋局列表" #: menus.c:638 msgid "Paste Game" msgstr "粘贴棋局" #: menus.c:639 msgid "Paste Position" msgstr "粘贴位置" #: menus.c:641 menus.c:686 msgid "Edit Game" msgstr "编辑棋局" #: menus.c:642 menus.c:687 msgid "Edit Position" msgstr "编辑位置" #: menus.c:643 msgid "Edit Tags" msgstr "编辑标签" #: menus.c:644 msgid "Edit Comment" msgstr "编辑注释" #: menus.c:645 msgid "Edit Book" msgstr "编辑棋谱" #: menus.c:647 msgid "Revert" msgstr "撤销" #: menus.c:648 msgid "Annotate" msgstr "注释" #: menus.c:649 msgid "Truncate Game" msgstr "截取棋局" #: menus.c:651 msgid "Backward" msgstr "后退" #: menus.c:652 msgid "Forward" msgstr "前进" #: menus.c:653 msgid "Back to Start" msgstr "回到起始处" #: menus.c:654 msgid "Forward to End" msgstr "转到末尾" #: menus.c:659 msgid "Flip View" msgstr "翻转视角" #: menus.c:662 msgid "Move History" msgstr "棋步历史" #: menus.c:663 msgid "Evaluation Graph" msgstr "评估图" #: menus.c:664 msgid "Game List" msgstr "棋局列表" #: menus.c:667 msgid "Comments" msgstr "注释" #: menus.c:668 msgid "ICS Input Box" msgstr "ICS 输入框" #: menus.c:669 msgid "ICS/Chat Console" msgstr "ICS/聊天终端" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "编辑注释" #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "编辑引擎列表..." #: menus.c:674 msgid "Board..." msgstr "棋盘" #: menus.c:675 msgid "Fonts..." msgstr "字体..." #: menus.c:676 msgid "Game List Tags..." msgstr "棋局列表标签..." #: menus.c:681 msgid "Machine White" msgstr "机器执白" #: menus.c:682 msgid "Machine Black" msgstr "机器执黑" #: menus.c:683 msgid "Two Machines" msgstr "机器对战" #: menus.c:684 msgid "Analysis Mode" msgstr "分析模式" #: menus.c:685 msgid "Analyze Game" msgstr "分析棋局" #: menus.c:688 msgid "Training" msgstr "训练" #: menus.c:689 msgid "ICS Client" msgstr "ICS 客户端" #: menus.c:691 msgid "Machine Match" msgstr "机器匹配" #: menus.c:692 msgid "Pause" msgstr "暂停" #: menus.c:697 msgid "Accept" msgstr "接受" #: menus.c:698 msgid "Decline" msgstr "拒绝" #: menus.c:699 msgid "Rematch" msgstr "重新匹配" #: menus.c:701 msgid "Call Flag" msgstr "申请超时裁定" #: menus.c:702 msgid "Draw" msgstr "平局" #: menus.c:703 msgid "Adjourn" msgstr "休战" #: menus.c:704 msgid "Abort" msgstr "退出" #: menus.c:705 msgid "Resign" msgstr "告辞" #: menus.c:707 msgid "Stop Observing" msgstr "停止观战" #: menus.c:708 msgid "Stop Examining" msgstr "停止研究" #: menus.c:709 msgid "Upload to Examine" msgstr "上传以便研究" #: menus.c:711 msgid "Adjudicate to White" msgstr "裁决白方胜" #: menus.c:712 msgid "Adjudicate to Black" msgstr "裁决黑方胜" #: menus.c:713 msgid "Adjudicate Draw" msgstr "裁决平局" #: menus.c:718 msgid "Edit Engine List..." msgstr "编辑引擎列表..." #: menus.c:720 msgid "Load New 1st Engine..." msgstr "加载新的1号引擎..." #: menus.c:721 msgid "Load New 2nd Engine..." msgstr "加载新的2号引擎..." #: menus.c:723 msgid "Engine #1 Settings..." msgstr "#1 引擎设置..." #: menus.c:724 msgid "Engine #2 Settings..." msgstr "#2 引擎设置..." #: menus.c:725 msgid "Common Settings..." msgstr "通用设置..." #: menus.c:727 msgid "Hint" msgstr "提示" #: menus.c:728 msgid "Book" msgstr "棋谱" #: menus.c:730 msgid "Move Now" msgstr "立即行棋" #: menus.c:731 msgid "Retract Move" msgstr "撤回" #: menus.c:736 #, fuzzy msgid "Mute all Sounds" msgstr "行棋音效" #: menus.c:739 msgid "General..." msgstr "通用..." #: menus.c:741 msgid "Time Control..." msgstr "时间控制..." #: menus.c:742 msgid "Adjudications..." msgstr "裁决..." #: menus.c:743 msgid "ICS..." msgstr "ICS..." #: menus.c:744 msgid "Tournament..." msgstr "赛事..." #: menus.c:745 msgid "Load Game..." msgstr "加载棋局..." #: menus.c:746 msgid "Save Game..." msgstr "保存棋局..." #: menus.c:747 msgid "Game List..." msgstr "棋局列表..." #: menus.c:748 msgid "Sounds..." msgstr "声音..." #: menus.c:751 msgid "Always Queen" msgstr "总是升变为后" #: menus.c:757 msgid "Flash Moves" msgstr "棋步闪烁" #: menus.c:759 msgid "Highlight Dragging" msgstr "高亮拖动" #: menus.c:762 msgid "Highlight With Arrow" msgstr "用箭头突出显示" #: menus.c:763 msgid "Move Sound" msgstr "行棋音效" #: menus.c:765 msgid "Periodic Updates" msgstr "周期更新" #: menus.c:767 msgid "Popup Exit Message" msgstr "弹出退出消息" #: menus.c:769 msgid "Show Coords" msgstr "显示坐标" #: menus.c:770 msgid "Hide Thinking" msgstr "隐藏思考" #: menus.c:774 msgid "Save Settings Now" msgstr "立即保存设置" #: menus.c:775 msgid "Save Settings on Exit" msgstr "退出前保存设置" #: menus.c:780 msgid "Info XBoard" msgstr "XBoard 的 Info 手册" #: menus.c:781 msgid "Man XBoard" msgstr "XBoard 的 Man 手册" #: menus.c:783 msgid "XBoard Home Page" msgstr "XBoard 主页" #: menus.c:784 msgid "On-line User Guide" msgstr "在线用户指南" #: menus.c:785 msgid "Development News" msgstr "开发新闻" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "用邮件反馈软件缺陷" #: menus.c:825 msgid "File" msgstr "文件" #: menus.c:826 msgid "Edit" msgstr "编辑" #: menus.c:827 msgid "View" msgstr "查看" #: menus.c:828 msgid "Mode" msgstr "模式" #: menus.c:829 msgid "Action" msgstr "动作" #: menus.c:830 msgid "Engine" msgstr "引擎" #: menus.c:831 msgid "Options" msgstr "选项" #: menus.c:832 msgid "Help" msgstr "帮助" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "引擎名称" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "棋步" #: nengineoutput.c:156 msgid "Engine output" msgstr "引擎输出" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" "nengineoutput.c 中的 STRIDE 匹配错误\n" "请变更并重新编译!" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "评估图" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "失误图" #: nevalgraph.c:107 msgid "Blunder" msgstr "失误" #: nevalgraph.c:107 msgid "Eval" msgstr "Eval" #: ngamelist.c:87 msgid "find position" msgstr "查找位置" #: ngamelist.c:88 msgid "narrow" msgstr "缩小" #: ngamelist.c:89 msgid "thresholds" msgstr "阈值" #: ngamelist.c:90 msgid "tags" msgstr "标签" #: ngamelist.c:91 msgid "next" msgstr "下一个" #: ngamelist.c:92 msgid "close" msgstr "关闭" #: ngamelist.c:116 msgid "No game selected" msgstr "未选择棋局" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "无法继续前进" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "步过整个棋局(%d)" #: ngamelist.c:211 msgid "previous page" msgstr "上一页" #: ngamelist.c:214 msgid "next page" msgstr "下一页" #: ngamelist.c:217 msgid "no games matched your request" msgstr "没有匹配你所请求的棋局" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "%s - %d/%d 局(%d-%d-%d)" #: ngamelist.c:284 msgid "There is no game list" msgstr "没有棋局列表" #: nhistory.c:109 msgid "Move list" msgstr "棋步列表" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "%s:无法识别颜色 %s\n" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s:无法解析“%s”中的前景色\n" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "%s:无法解析颜色名;禁用着色\n" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "错误:未知用户 %s(于路径 %s)\n" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "未配置套接字的支持于" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "Unix 未实现内部 rcmd" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "白色像素 = 0x%lx,黑色像素 = 0x%lx\n" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "浏览" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "Ctrl" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "Alt" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "Shift" #~ msgid "Common Engine..." #~ msgstr "通用引..." #~ msgid "New Game Ctrl+N" #~ msgstr "(N) Ctrl+N" #~ msgid "Load Game Ctrl+O" #~ msgstr "(L)... Ctrl+O" #~ msgid "Save Game Ctrl+S" #~ msgstr "(S)... Ctrl+S" #~ msgid "Quit Ctr+Q" #~ msgstr "(Q)" #~ msgid "Edit Game Ctrl+E" #~ msgstr "(E) Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "(d) Ctrl+Shift+E" #~ msgid "Revert Home" #~ msgstr "(V)" #~ msgid "Backward Alt+Left" #~ msgstr "(B) Alt+Left" #~ msgid "Forward Alt+Right" #~ msgstr "(F) Alt+Right" #~ msgid "Flip View F2" #~ msgstr "(V) F2" #~ msgid "Engine Output Alt+Shift+O" #~ msgstr " Alt+Shift+O" #~ msgid "Move History Alt+Shift+H" #~ msgstr " Alt+Shift+H" #~ msgid "Game List Alt+Shift+G" #~ msgstr "(L) Alt+Shift+G" #~ msgid "Machine Black Ctrl+B" #~ msgstr "(B) Ctrl+B" #~ msgid "Analyze File Ctrl+F" #~ msgstr "(F) Ctrl+F" #~ msgid "Edit Game Ctrl+E" #~ msgstr "(E) Ctrl+E" #~ msgid "Edit Position Ctrl+Shift+E" #~ msgstr "(d) Ctrl+Shift+E" #~ msgid "Pause Pause" #~ msgstr "(P) Pause" #~ msgid "Accept F3" #~ msgstr "(A) F3" #~ msgid "Decline F4" #~ msgstr "(C) F4" #~ msgid "Rematch F12" #~ msgstr "(M) F12" #~ msgid "Draw F6" #~ msgstr "(D) F6" #~ msgid "Abort F8" #~ msgstr "(B) F8" #~ msgid "Resign F9" #~ msgstr "(R) F9" #~ msgid "Move Now Ctrl+M" #~ msgstr "(M) Ctrl+M" #~ msgid "ICS ..." #~ msgstr "ICS..." #~ msgid "Always Queen Ctrl+Shift+Q" #~ msgstr "(Q) Ctrl+Shift+Q" #~ msgid "Animate Moving Ctrl+Shift+A" #~ msgstr "(A) Ctrl+Shift+A" #~ msgid "Auto Flag Ctrl+Shift+F" #~ msgstr "(F) Ctrl+Shift+F" #~ msgid "Ponder Next Move Ctrl+Shift+P" #~ msgstr "(N) Ctrl+Shift+P" #~ msgid "Hide Thinking Ctrl+Shift+H" #~ msgstr " Ctrl+Shift+H" #~ msgid "Test Legality Ctrl+Shift+L" #~ msgstr "(L) Cl+Sh+L" #~ msgid "Highlight Dragging (Show Move Targets)" #~ msgstr "(H)" #~ msgid "White " #~ msgstr " " #~ msgid "Black " #~ msgstr " " #~ msgid "Close" #~ msgstr "(C)" #~ msgid " (for concurrent playing of a single" #~ msgstr " (用于同时在多个XBoards中" #~ msgid "Match Options" #~ msgstr "匹配选项" #~ msgid "Chat box" #~ msgstr "对话框:" #~ msgid "Open Chat Window" #~ msgstr "打开聊天窗口" #~ msgid "Match ..." #~ msgstr "匹配 ..." #~ msgid "%s: Can't access XPM directory %s\n" #~ msgstr "%s:无法访问 XPM 目录 %s\n" #~ msgid "Available `%s' sizes:\n" #~ msgstr "可用的“%s”大小:\n" #~ msgid "Error: No `%s' files!\n" #~ msgstr "错误:没有文件“%s”!\n" #~ msgid "" #~ "Warning: No DIR structure found on this system --\n" #~ " Unable to autosize for XPM/XIM pieces.\n" #~ " Please report this error to %s.\n" #~ " Include system type & operating system in message.\n" #~ msgstr "" #~ "警告:该系统上找不到目录结构 --\n" #~ " 无法自动调节 XPM/XIM 的大小。\n" #~ " 请将此错误报告给 %s,\n" #~ " 并附上系统类型和操作系统名称。\n" #~ msgid "Error %d loading icon image\n" #~ msgstr "加载图标图像时出错 %d\n" #~ msgid "cancel" #~ msgstr "取消" xboard-4.9.1/po/tr.gmo0000644000175000001440000000471512747544040011506 000000000000002C<H IV]d ly       )6 E Q]p  -39> "0AGP` g u       $ ( 6 : E N T Z w |         ' */)!-(0#.%,2 $&+"1About XBoardAcceptActionAdjournAlways QueenBackwardBishopBlackBlack's flag fellBlindfoldBookBoth flags fellClear boardDeclineEmpty squareEnd of gameErrorFailed to open fileFileForwardHelpHintICS ClientIllegal moveIncorrect moveInfo XBoardInformationIt is Black's turnIt is White's turnKingKnightMail MoveModeMove listNoteOptionsPausePawnQueenReload CMail MessageRookTrainingWhiteWhite's flag fellYou are playing BlackYou are playing WhiteclearclosenextProject-Id-Version: XBoard 4.2.7 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2003-12-26 16:38+0200 Last-Translator: A. Alper Atc Language-Team: Turkish Language: tr MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-9 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; XBoard HakkndaKabul etEylemErteleHep Vezir OlsunGeriFilSiyahSiyah ah matTahtay GrmedenKitapBerabereTahtay TemizleRed etKareyi BoaltOyun sonuHataDosya alamadDosyaleriYardmpucuICS stemcisiGeersiz hamleYanl hamleXBoard Info SayfasBilgiSra Siyah'taSra Beyaz'daahAtHamleyi PostalaKipHamle listesiNotSeeneklerDuraklatPiyonVezirCMail letisini Tekrar YkleKaleEitimBeyazBeyaz ah matSiz Siyah'snzSiz Beyaz'snztemizlekapatsonrakixboard-4.9.1/po/remove-potcdate.sin0000644000175000001440000000066012421746651014162 00000000000000# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } xboard-4.9.1/po/sr.po0000644000175000001440000023171712747543737011361 00000000000000# Serbian translation for xboard. # Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the xboard package. # Мирослав Николић , 2014. msgid "" msgstr "" "Project-Id-Version: xboard-4.8.0-pre1\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2014-11-11 20:37+0200\n" "Last-Translator: Мирослав Николић \n" "Language-Team: Serbian <(nothing)>\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "%s у датотеци подешавања\n" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "Лоша вредност целог броја %s" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "Непознат аргумент „%s“" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "Није наведена вредност за аргумент „%s“" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Непотпуна \\ промене реда у вредности за „%s“" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "Нисам успео да отворим датотеку усмерења „%s“" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Непозната вредност логичког аргумента %s" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "први" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "други" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "издање протокола %d није подржано" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "Нисте навели извршног погона" #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "лоша опција управљања временом „%s“" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "лоша опција времена претраге „%s“" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "Варијанта „%s“ је подржана само у ИЦС режиму" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "Непознат назив варијанте „%s“" #: backend.c:1457 msgid "Starting chess program" msgstr "Покрећем шаховски програм" #: backend.c:1480 msgid "Bad game file" msgstr "Лоша датотека игре" #: backend.c:1487 msgid "Bad position file" msgstr "Лоша датотека положаја" #: backend.c:1501 msgid "Pick new game" msgstr "Изаберите нову игру" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" "Поново сте покренули већ завршени турнир.\n" "Још један круг ће бити додат у њега.\n" "Игре почињу за 10 сек." #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "Све игре на турниру „%s“ су већ одигране или су у току" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "Не могу играти партију без шаховских програма" #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "Не могу да отворим прикључник коминикације %s" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "Не могу да се повежем на домаћина „%s“, прикључник %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "Непознат режим почетка „%s“" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "Режим анализе датотеке захтева датотеку игре" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "Режим анализе захтева шаховски погон" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "Режим анализе не ради са ИЦС режимом" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "Режим машинског белог захтева шаховски погон" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "Режим машинског белог не ради са ИЦС режимом" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "Режим машинског црног захтева шаховски погон" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "Режим машинског црног не ради са ИЦС режимом" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "Режим две машине захтева шаховски погон" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "Режим две машине не ради са ИЦС режимом" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "Режим увежбавања захтева датотеку игре" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "Грешка писања у ИЦС" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "Грешка читања са тастатуре" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "Добих крај датотеке са тастатуре" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "Непозната дивља врста „%d“" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "Грешка писања на приказ" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "ваш противник кибицује: %s" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "Грешка прикупљања списка потеза: два заглавља" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "Грешка прикупљања списка потеза: угнежден" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "против" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "Недозвољен потез (одбацио га је ИЦС)" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "Везу је затворио ИЦС" #: backend.c:4306 msgid "Error reading from ICS" msgstr "Грешка читања са ИЦС-а" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" "Нисам успео да обрадим ниску табле:\n" "„%s“" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "Игра је предуга; повећајте НАЈВИШЕ_ПОТЕЗА и поново преведите" #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "Грешка прикупљања списка потеза: додатна табла" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Не могу да обрадим потез „%s“ из ИЦС-а" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "реци унутрашња грешка; лоша врста потеза %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "Не можете да урадите ово док играте или посматрате" #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "Поново преведите да подржите ове РЕДОВЕ_ТАБЛЕ или ЛИНИЈЕ_ТАБЛЕ!" #: backend.c:6858 msgid "You are playing Black" msgstr "Играте црним" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "Играте белим" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Бели је на потезу" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Црни је на потезу" #: backend.c:6920 msgid "Displayed position is not current" msgstr "Приказани положај није тренутни" #: backend.c:7123 msgid "rights granted" msgstr "" #: backend.c:7123 msgid "rights revoked" msgstr "" #: backend.c:7175 msgid "Illegal move" msgstr "Недозвољени потез" #: backend.c:7255 msgid "End of game" msgstr "Крај игре" #: backend.c:7258 msgid "Incorrect move" msgstr "Неисправан потез" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "Повуците пешака уназад до унапређења" #: backend.c:7780 msgid "only marked squares are legal" msgstr "само означена поља су дозвољена" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "Швајцарски турнир је завршен" #: backend.c:8632 msgid "could not load EGBB library" msgstr "не могу да учитам ЕГББ библиотеку" #: backend.c:8635 msgid "wrong EGBB version" msgstr "погрешно издање ЕГББ-а" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "Неисправно упаривање из погона упаривања" #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Недозвољени потез „%s“ %s машине" #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "Лош ФЕН је примљен од погона" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "Погон није послао подешавање за неуобичајену варијанту" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "„%s“ не подржава анализу" #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Недозвољени потез „%s“ (одбацио га је „%s“ шаховски програм)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Нисам успео да покренем %s шаховски програм %s на %s: %s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "Савет: %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" "Недозвољени потез савета „%s“\n" "шаховског програма „%s“" #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "Рачунар прхвата вашу понуду ремија" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" "Рачунар нуди реми.\n" "Изаберите „Радња / Реми“ да прихватите." #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "нисам успео да запишем ПВ" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Нејасан потез у излазу ИЦС-а: %s" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Недозвољени потез у излазу ИЦС-а: %s" #: backend.c:10132 msgid "Gap in move list" msgstr "Јаз у списку потеза" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "Варијанту „%s“ не подржава %s" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr ", али „%s“ је" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "Неуспех покретања на „%s“" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "Чекам први шаховски програм" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "Чекам други шаховски програм" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "Не могу да пишем у датотеку турнира" #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" "Не можете да замените погон док је заузет!\n" "Прво завршите његову игру." #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "Ниједан погон са називом који сте дали није инсталиран" #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" "Прво измените погон уредивши списак учесника\n" "у прозорчету опција турнира" #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "Можете да измените само један погон одједном" #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "Ниједан погон „%s“ није инсталиран" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" "Морате да доставите датотеку редоследа,\n" "да сачувате напредовање турнира" #: backend.c:11200 msgid "Not enough participants" msgstr "Нема довољно учесника" #: backend.c:11403 msgid "Bad tournament file" msgstr "Лоша датотека редоследа" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "Чекам на другу игру" #: backend.c:11428 msgid "No pairing engine specified" msgstr "Није наведен погон упаривања" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "" #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "" #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "" #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Меч %s против %s: крајњи резултат је %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Недозвољени потез: %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Нејасан потез: %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "Не могу да отворим „%s“" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "Не могу да изградим списак игре" #: backend.c:12574 msgid "No more games in this message" msgstr "Нема више игара у овој поруци" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "Ниједна игра још није учитана" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "Не могу више да се повучем" #: backend.c:13065 msgid "Game number out of range" msgstr "Број игре је ван опсега" #: backend.c:13076 msgid "Can't seek on game file" msgstr "Не могу да премотам датотеку игре" #: backend.c:13134 msgid "Game not found in file" msgstr "Нисам нашао игру у датотеци" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "Лош ФЕН положај у датотеци" #: backend.c:13423 msgid "No moves in game" msgstr "Нема потеза у игри" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "Ниједан положај још није учитан" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "Не могу да премотам датотеку положаја" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "Нисам пронашао положај у датотеци" #: backend.c:13645 msgid "Black to play" msgstr "Црни да игра" #: backend.c:13648 msgid "White to play" msgstr "Бели да игра" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "Чекам на приступ да сачувам датотеку" #: backend.c:13737 msgid "Saving game" msgstr "Чувам игру" #: backend.c:13738 msgid "Bad Seek" msgstr "Лош премотај" #: backend.c:14111 msgid "Saving position" msgstr "Чувам положај" #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" "Уредили сте историјат игре.\n" "Користите „Поново учитај исту игру“ и повуците ваш потез опет." #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" "Унели сте превише потеза.\n" "Вратите се на прави положај и покушајте опет." #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" "Приказани положај није тренутни.\n" "Идите напред до правог положаја и покушајте опет." #: backend.c:14294 msgid "You have not made a move yet" msgstr "Још увек нисте повукли потез" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" "Порука цпоште није учитана.\n" "Користите „Поново учитај поруку Цпоште“ и повуците ваш потез опет." #: backend.c:14320 msgid "No unfinished games" msgstr "Нема недовршених игара" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" "Већ сте послали потез.\n" "Сачекајте док стигне потез вашег противника.\n" "Да поново пошаљете исти потез, укуцајте\n" "„cmail -remail -game %s“\n" "на линији наредби." #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "Нисам успео да призовем цпошту" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Чекам на одговор противника\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "Још увек треба повући потез за игру\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "Још увек треба повући потезе за обе игре\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "Још увек треба повући потезе за %d игре\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "Још увек треба повући потез за игру %s\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "Нема недовршених игара\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "Спреман сам да пошаљем пошту\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "Још увек треба повући потезе за игре %s\n" #: backend.c:14656 msgid "Edit comment" msgstr "Уредите напомену" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Уредите напомену на %d.%s%s" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "Ви не посматрате игру" #: backend.c:14824 msgid "It is not White's turn" msgstr "Није бели на потезу" #: backend.c:14907 msgid "It is not Black's turn" msgstr "Није црни на потезу" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "Покрећем „%s“ шаховски програм" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" "Сачекајте ваш ред,\n" "или изаберите „Помери сада“." #: backend.c:15188 msgid "Training mode off" msgstr "Режим увежбавања је искључен" #: backend.c:15196 msgid "Training mode on" msgstr "Режим увежбавања је укључен" #: backend.c:15199 msgid "Already at end of game" msgstr "Већ на крају игре" #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "Упозорење: Још увек играте игру" #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "Упозорење: Још увек посматрате игру" #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "Упозорење: Још увек проучавате игру" #: backend.c:15365 msgid "Click clock to clear board" msgstr "Притисните на сат да очистите таблу" #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "Затвори анализу ИЦС погона..." #: backend.c:15711 msgid "That square is occupied" msgstr "То поље је заузето" #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "Немазаказаних понуда на овом потезу" #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "Вашем противнику није истекло време" #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "Морате да повучете потез пре него понудите реми" #: backend.c:16220 msgid "You are not examining a game" msgstr "Ви не проучавате игру" #: backend.c:16224 msgid "You can't revert while pausing" msgstr "Не можете да повратите док паузирате" #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "Ви сте на реду" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "Сачекајте ваш ред." #: backend.c:16348 msgid "No hint available" msgstr "Нема доступног савета" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "Списак игара није учитан или је празан" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "Датотека књиге постоји! Покушајте поново да препишете." #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "Грешка писања у „%s“ шаховски програм" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "%s програм постоји у положају ремија (%s)" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Грешка: %s шаховски програм (%s) је изашао неочекивано" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Грешка читања из „%s“ шаховског програма (%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "%s погон има превише опција\n" #: backend.c:17521 msgid "Displayed move is not current" msgstr "Приказани потез није тренутни" #: backend.c:17530 msgid "Could not parse move" msgstr "Не могу да обрадим потез" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "Обе заставице су пале" #: backend.c:17657 msgid "White's flag fell" msgstr "Заставица белог је пала" #: backend.c:17679 msgid "Black's flag fell" msgstr "Заставица црног је пала" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "Дотеривање сата није допуштено у режиму ауто-заставице" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "Лош ФЕН положај у остави" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "Полиглотска књига није исправна" #: book.c:722 msgid "Book Fault" msgstr "Неуспех књиге" #: book.c:877 msgid "Hash keys are different" msgstr "Хеш кључеви се разликују" #: book.c:1054 msgid "Could not create book" msgstr "Не могу да направим књигу" #: dialogs.c:287 msgid "Tournament file: " msgstr "Датотека редоследа: " #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "За истовремено играње турнира са више Х-табли:" #: dialogs.c:289 msgid "Sync after round" msgstr "Усагласи након рунде" #: dialogs.c:290 msgid "Sync after cycle" msgstr "Усагласи након круга" #: dialogs.c:291 msgid "Tourney participants:" msgstr "Учесници турнира:" #: dialogs.c:292 msgid "Select Engine:" msgstr "Изаберите погон:" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "Врста турнира (0 = свако са сваким, 1 = на испадање):" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "Број кругова турнира (или швајцарске рунде):" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "Основни број игара у мечу (или упаривању):" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "Пауза између игара меча (мсек):" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "Сачувај игре турнира на:" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "Датотека игре са линијама отварања:" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "Број игре (-1 или -2 = само-повећање):" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "Датотека са почетним положајима:" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "Број положаја (-1 или -2 = само-повећање):" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "Индекс враћања уназад након оволико игара (0 = никад):" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "Искључи књиге сопственог погона по основи" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "Управљање временом" #: dialogs.c:312 msgid "Common Engine" msgstr "Општи погон" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Опште опције" #: dialogs.c:314 msgid "Continue Later" msgstr "Настави касније" #: dialogs.c:315 msgid "Replace Engine" msgstr "Замени погон" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "Надогради погон" #: dialogs.c:317 msgid "Clone Tourney" msgstr "Умножи турнир" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "Прво морате да наведете постојећи турнир за умножавање" #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "# ниједан погон није инсталиран" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "Унутрашња грешка: скуп УЧЕСНИКА је погрешан" #: dialogs.c:389 msgid "Tournament Options" msgstr "Опције турнира" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "Резултати апсолутне анализе" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "Скоро увек краљица (заобиђи унапређење)" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "Анимирај превлачење" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "Анимирај потез" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Ауто заставица" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Сам изврни преглед" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "На слепо" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "Изборник убацивања" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "Укључи стабла варијације" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "Заглавља у излазном прозору погона " #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "Сакриј размишљање од људи" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Истакни последњи потез" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Истакни стрелицом" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Потез једним притиском" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "Повремена освежавања (у режиму анализе)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "Играј потез(е) притиснутог ПВ-а (анализа)" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "Премисли следећи потез" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Прикажи поруке излаза" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Прикажи грешке потеза" #: dialogs.c:429 msgid "Scores in Move List" msgstr "Резултати у списку потеза" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Покажи координате" #: dialogs.c:431 msgid "Show Target Squares" msgstr "Покажи циљна поља" #: dialogs.c:432 msgid "Sticky Windows" msgstr "Лепљиви прозори" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Испробај исправност" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "Прозорчићи највишег нивоа" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "Бљесни потезима (0 = без бљеска):" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "Проток бљеска (високо = брзо):" #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "Брзина анимације (високо = споро):" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "Чинилац увеличања у графику процене:" #: dialogs.c:458 msgid "Normal" msgstr "Уобичајено" #: dialogs.c:459 msgid "Makruk" msgstr "Макрук" #: dialogs.c:460 msgid "FRC" msgstr "ФРЦ" #: dialogs.c:461 msgid "Shatranj" msgstr "Шатрањ" #: dialogs.c:462 msgid "Wild castle" msgstr "Дивљи дворац" #: dialogs.c:463 msgid "Knightmate" msgstr "Мат скакача" #: dialogs.c:464 msgid "No castle" msgstr "Без дворца" #: dialogs.c:465 msgid "Cylinder *" msgstr "Ваљак *" #: dialogs.c:466 msgid "3-checks" msgstr "3-провере" #: dialogs.c:467 msgid "berolina *" msgstr "беролина *" #: dialogs.c:468 msgid "atomic" msgstr "атомски" #: dialogs.c:469 msgid "two kings" msgstr "два краља" #: dialogs.c:470 msgid " " msgstr " " #: dialogs.c:471 msgid "Spartan" msgstr "Спартанац" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "Величина табле ( -1 = основно за изабрану варијанту):" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "Број редова табле:" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "Број линија табле:" #: dialogs.c:475 msgid "Holdings Size:" msgstr "Величина закупа:" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" "Варијанте означене * могу бити игране само\n" "са искљученим испробавањем исправности." #: dialogs.c:479 msgid "ASEAN" msgstr "АСЕАН" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "Велики Шатрањ (10x8)" #: dialogs.c:481 msgid "Seirawan" msgstr "Сеираван" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "Фалкон (10x8)" #: dialogs.c:483 msgid "Superchess" msgstr "Супер шах" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "Капабланка (10x8)" #: dialogs.c:485 msgid "Crazyhouse" msgstr "Луда кућа" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "Готски (10x8)" #: dialogs.c:487 msgid "Bughouse" msgstr "Бубска кућа" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "Јанус (10x8)" #: dialogs.c:489 msgid "Suicide" msgstr "Самоубиство" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "ЦРЦ (10x8)" #: dialogs.c:491 msgid "give-away" msgstr "предај" #: dialogs.c:492 msgid "grand (10x10)" msgstr "велик (10x10)" #: dialogs.c:493 msgid "losers" msgstr "губитници" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "шоги (9x9)" #: dialogs.c:495 msgid "fairy" msgstr "вила" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "ксјангки (9x10)" #: dialogs.c:497 msgid "mighty lion" msgstr "моћни лав" #: dialogs.c:498 msgid "courier (12x8)" msgstr "весник (12x8)" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "вилењача (10x10)" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "чу шоги (12x12)" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Упозорење: други погон (%s) не подржава ово!" #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "Само бубска кућа није доступна у режиму прегледача." #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" "Све варијанте нису подржане првим погоном\n" "(тренутно %s) су искључени." #: dialogs.c:596 msgid "New Variant" msgstr "Нова варијанта" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "Највећи број процесора по погону:" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "Директоријум полигота:" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "Величина хеш-табеле (MB):" #: dialogs.c:631 msgid "EGTB Path:" msgstr "ЕГТБ путања:" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "Величина ЕГТБ оставе (MB):" #: dialogs.c:633 msgid "Use GUI Book" msgstr "Користи ГУИ књигу" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "Назив датотеке књиге отварања:" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "Дубина књиге (потези):" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "Варијанта књиге (0) против снаге (100):" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "Погон бр. 1 има сопствену књигу" #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "Погон бр. 2 има сопствену књигу " #: dialogs.c:649 msgid "Common Engine Settings" msgstr "Подешавања општег погона" #: dialogs.c:655 msgid "Detect all Mates" msgstr "Откриј сва матирања" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "Провери потраживања резултата погона" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "Реми ако нема довољно материјала за матирање" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Досуди површан реми (застој 3-потеза)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "Правило н-потеза:" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "Понављања N-савијања:" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "Реми након укупно N потеза:" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "Праг победе / губитка:" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "Негирај резултат 1° погона" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "Негирај резултат 2° погона" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "Досуди не-ИЦС игре" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "Сам кибицуј" #: dialogs.c:685 msgid "Auto-Comment" msgstr "Сам напомени" #: dialogs.c:686 msgid "Auto-Observe" msgstr "Сам посматрај" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Сам издигни таблу" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "Сам направи скрипту пријаве" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "Позадинско посматрање за време играња" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "Двојна табла за позадинско-посматрану игру" #: dialogs.c:691 msgid "Get Move List" msgstr "Добави списак потеза" #: dialogs.c:692 msgid "Quiet Play" msgstr "Тихо играње" #: dialogs.c:693 msgid "Seek Graph" msgstr "График премотавања" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "Сам освежи график премотавања" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "Облачић само-улазног поља" #: dialogs.c:696 msgid "Quit after game" msgstr "Изађи након игре" #: dialogs.c:697 msgid "Premove" msgstr "Предпотез" #: dialogs.c:698 msgid "Premove for White" msgstr "Предпотез за белог" #: dialogs.c:699 msgid "First White Move:" msgstr "Први потез белог:" #: dialogs.c:700 msgid "Premove for Black" msgstr "Предпотез за црног" #: dialogs.c:701 msgid "First Black Move:" msgstr "Први потез црног:" #: dialogs.c:703 msgid "Alarm" msgstr "Аларм" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "Време аларма (msec):" #: dialogs.c:706 msgid "Colorize Messages" msgstr "Обој поруке" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "Боје текста усклика:" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "Боје текста С-усклика:" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "Боје текста 1° канала:" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "Боје текста других канала:" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "Боје текста кобицовања:" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "Боје текста објаве:" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "Боје текста изазова:" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "Боје текста захтева:" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "Боје текста премотавања:" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "Боје другог текста:" #: dialogs.c:723 msgid "ICS Options" msgstr "ИЦС опције" #: dialogs.c:728 msgid "Exact position match" msgstr "Поређење тачног положаја" #: dialogs.c:728 msgid "Shown position is subset" msgstr "Приказани положај је подскуп" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "Исти материјал са тачно истим ланцем пешака" #: dialogs.c:729 msgid "Same material" msgstr "Исти материјал" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "Опсег материјала (изборна половина горње табле)" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "Разлика материјала (уравнотежена изборна ствар)" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "Ознаке само-приказа" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "Напомена само-приказа" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" "Брзина самосталног играња учитаних игара\n" "(0 = тренутно, -1 = искључено):" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "Секунде по потезу:" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" "\n" "опције за коришћење у режиму прегледача игре:" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" "\n" "Размаци за издвајање положаја у списку игре:" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "Рејтинг најачег играча:" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "Рејтинг најслабијег играча:" #: dialogs.c:753 msgid "No games before year:" msgstr "Нема игара пре године:" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "Најмањи број узастопних положаја:" #: dialogs.c:756 msgid "Search mode:" msgstr "Режим претраге:" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "Упореди такође обрнуте боје" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "Упореди такође лево-десно изврнути положај" #: dialogs.c:767 msgid "Load Game Options" msgstr "Опције учитавања игре" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "Сам сачувај игре" #: dialogs.c:780 msgid "Own Games Only" msgstr "Само сопствене игре" #: dialogs.c:781 msgid "Save Games on File:" msgstr "Сачувај игре у датотеци:" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "Сачувај крајње положаје у датотеци:" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "Заглавље ПГН догађаја:" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "Стари изглед чувања (као супротно са ПГН)" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "Укључи ознаку броја у ПГН-у турнира" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "Сачувај податке резултата/дубине у ПГН-у" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "Сачувај податке ван-књиге у ПГН-у" #: dialogs.c:794 msgid "Save Game Options" msgstr "Опције чувања игре" #: dialogs.c:803 msgid "No Sound" msgstr "Без звука" #: dialogs.c:804 msgid "Default Beep" msgstr "Основни писак" #: dialogs.c:805 msgid "Above WAV File" msgstr "ВАВ датотека" #: dialogs.c:806 msgid "Car Horn" msgstr "Сирена аута" #: dialogs.c:807 msgid "Cymbal" msgstr "Чинела" #: dialogs.c:808 msgid "Ding" msgstr "Звонце" #: dialogs.c:809 msgid "Gong" msgstr "Гонг" #: dialogs.c:810 msgid "Laser" msgstr "Ласер" #: dialogs.c:811 msgid "Penalty" msgstr "Пенал" #: dialogs.c:812 msgid "Phone" msgstr "Телефон" #: dialogs.c:813 msgid "Pop" msgstr "Поп" #: dialogs.c:814 msgid "Roar" msgstr "Рика" #: dialogs.c:815 msgid "Slap" msgstr "Ћушка" #: dialogs.c:816 msgid "Wood Thunk" msgstr "Звук дрвета" #: dialogs.c:818 msgid "User File" msgstr "Корисникова датотека" #: dialogs.c:841 msgid "User WAV File:" msgstr "Корисникова ВАВ датотека:" #: dialogs.c:842 msgid "Sound Program:" msgstr "Програм звука:" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "Звук покушаја:" #: dialogs.c:844 msgid "Play" msgstr "Пусти" #: dialogs.c:845 msgid "Move:" msgstr "Потез:" #: dialogs.c:846 msgid "Win:" msgstr "Победа:" #: dialogs.c:847 msgid "Lose:" msgstr "Пораз:" #: dialogs.c:848 msgid "Draw:" msgstr "Реми:" #: dialogs.c:849 msgid "Unfinished:" msgstr "Недовршена:" #: dialogs.c:850 msgid "Alarm:" msgstr "Аларм:" #: dialogs.c:851 msgid "Challenge:" msgstr "Изазов:" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "Директоријум звука:" #: dialogs.c:854 msgid "Shout:" msgstr "Усклик:" #: dialogs.c:855 msgid "S-Shout:" msgstr "С-усклик:" #: dialogs.c:856 msgid "Channel:" msgstr "Канал:" #: dialogs.c:857 msgid "Channel 1:" msgstr "1° канал:" #: dialogs.c:858 msgid "Tell:" msgstr "Телефон:" #: dialogs.c:859 msgid "Kibitz:" msgstr "Кибицовање:" #: dialogs.c:860 msgid "Request:" msgstr "Захтев:" #: dialogs.c:861 msgid "Lion roar:" msgstr "Лавља рика:" #: dialogs.c:862 msgid "Seek:" msgstr "Премотај:" #: dialogs.c:880 msgid "Sound Options" msgstr "Опције звука" #: dialogs.c:896 msgid "Selectable themes:" msgstr "Изабирљиве теме:" #: dialogs.c:898 msgid "New name for current theme:" msgstr "Нови назив за текућу тему:" #: dialogs.c:901 msgid "White Piece Color:" msgstr "Боја беле фигуре:" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "Ц" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "З" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "П" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "Т" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "Боја црне фигуре:" #: dialogs.c:917 msgid "Light Square Color:" msgstr "Боја светлог поља:" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "Боја тамног поља:" #: dialogs.c:929 msgid "Highlight Color:" msgstr "Боја истицања:" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "Боја истицања предпотеза:" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "Изврни фигуре Шоги стила (Обојена дугмад враћа основно)" #: dialogs.c:943 msgid "Mono Mode" msgstr "Моно режим" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "Величина логотипа (0=искљ., захтева поновно покретање):" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "Јаз реда (-1 = основно за величину табле):" #: dialogs.c:946 msgid "Use Board Textures" msgstr "Користи исцртавања табле" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "Датотека исцртавања тамних поља:" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "Датотека исцртавања светлих поља:" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "Користи спољне битмапе фигуре са њиховим сопственим бојама" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "Директоријум са сликама фигура:" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "# ниједна тема није одређена" #: dialogs.c:1033 msgid "Board Options" msgstr "Опције табле" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "Приручни изборник ИЦС-а" #: dialogs.c:1134 msgid "clear" msgstr "очисти" #: dialogs.c:1135 msgid "save changes" msgstr "сачувај измене" #: dialogs.c:1233 msgid "add next move" msgstr "додај нови потез" #: dialogs.c:1234 #, fuzzy msgid "commit changes" msgstr "сачувај измене" #: dialogs.c:1257 msgid "Edit book" msgstr "Уреди књигу" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Ознаке" #: dialogs.c:1405 msgid "ICS input box" msgstr "Поље уноса ИЦС-а" #: dialogs.c:1437 msgid "Type a move" msgstr "Укуцајте потез" #: dialogs.c:1463 msgid "Engine has no options" msgstr "Погон нема опција" #: dialogs.c:1465 msgid "Engine Settings" msgstr "Подешавања погона" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "Изаберите погон са списка:" #: dialogs.c:1509 msgid "or specify one below:" msgstr "или испод наведите један:" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "Надимак (изборно):" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "Користи надимак у ПГН ознакама играча уграма погон-погон" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "Директоријум погона:" #: dialogs.c:1513 msgid "Engine Command:" msgstr "Наредба погона:" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "(Директоријум ће бити узет из путање погона када је празан)" #: dialogs.c:1515 msgid "UCI" msgstr "УЦИ" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "ВБ протокол в1 (не чекај на функције погона)" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "Не сме користити ГКС књигу" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "Додај овај погон на списак" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "Приморај текућу варијанту овим погоном" #: dialogs.c:1574 msgid "Load first engine" msgstr "Учитајте први погон" #: dialogs.c:1580 msgid "Load second engine" msgstr "Учитајте други погон" #: dialogs.c:1603 msgid "shuffle" msgstr "измешај" #: dialogs.c:1604 msgid "Fischer castling" msgstr "Фишерова рокада" #: dialogs.c:1605 msgid "Start-position number:" msgstr "Број почетног положаја:" #: dialogs.c:1606 msgid "randomize" msgstr "насумично" #: dialogs.c:1607 msgid "pick fixed" msgstr "изабери сталне" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Нова насумична игра" #: dialogs.c:1671 #, fuzzy msgid "Clocks (requires restart):" msgstr "Величина логотипа (0=искљ., захтева поновно покретање):" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "" #: dialogs.c:1677 msgid "Message (above board):" msgstr "" #: dialogs.c:1683 #, fuzzy msgid "ICS Chat/Console:" msgstr "Конзола ИЦС-а/Ћаскања" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "" #: dialogs.c:1695 #, fuzzy msgid "Edit comments:" msgstr "Уредите напомену" #: dialogs.c:1701 #, fuzzy msgid "Move history / Engine Output:" msgstr "Излаз погона" #: dialogs.c:1707 #, fuzzy msgid "Game list:" msgstr "Списак игара" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "" #: dialogs.c:1768 msgid "Fonts" msgstr "" #: dialogs.c:1791 msgid "classical" msgstr "уобичајено" #: dialogs.c:1792 msgid "incremental" msgstr "растуће" #: dialogs.c:1793 msgid "fixed max" msgstr "стални максимум" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "" #: dialogs.c:1795 msgid "Moves per session:" msgstr "Потеза по сесији:" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "Почетно време (min):" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "Повећање или највише (сек/потезу):" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "Чиниоци вишка времена:" #: dialogs.c:1799 msgid "Engine #1" msgstr "1° погон" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "2° погон / човек" #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "Некоришћено" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "Грешка писања у шаховски програм" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "Поништи" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "Краљ" #: dialogs.c:1972 msgid "Captain" msgstr "Капетан" #: dialogs.c:1973 msgid "Lieutenant" msgstr "Поручник" #: dialogs.c:1974 msgid "General" msgstr "Генерал" #: dialogs.c:1975 msgid "Warlord" msgstr "Господар рата" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Скакач" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Ловац" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Кула" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "Архиепископ" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "Канцелар" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Краљица" #: dialogs.c:1988 msgid "Lion" msgstr "Лав" #: dialogs.c:1992 msgid "Defer" msgstr "Одгоди" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Унапреди" #: dialogs.c:2050 msgid "Chats:" msgstr "Ћаскања:" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 msgid "New Chat" msgstr "Нови чат" #: dialogs.c:2058 msgid "Chat partner:" msgstr "Партнер ћаскања:" #: dialogs.c:2059 msgid "End Chat" msgstr "Заврши чат" #: dialogs.c:2060 msgid "Hide" msgstr "Сакриј" #: dialogs.c:2287 msgid "ICS Interaction" msgstr "ИЦС међудејство" #: dialogs.c:2372 msgid "factory" msgstr "фабричка" #: dialogs.c:2373 msgid "up" msgstr "горе" #: dialogs.c:2374 msgid "down" msgstr "доле" # bug: plural-forms #: dialogs.c:2393 msgid "No tag selected" msgstr "Није изабрана ознака" #: dialogs.c:2424 msgid "Game-list options" msgstr "Опције списка игара" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Грешка" #: dialogs.c:2545 msgid "Fatal Error" msgstr "Кобна грешка" #: dialogs.c:2545 msgid "Exiting" msgstr "Излазим" #: dialogs.c:2556 msgid "Information" msgstr "Обавештење" #: dialogs.c:2563 msgid "Note" msgstr "Напомена" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Бели" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Пешак" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "Слон" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "Топ" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "Деградирај" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Празно поље" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Очисти таблу" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Црни" #: dialogs.c:2827 #, fuzzy msgid "_File" msgstr "Датотека" #: dialogs.c:2828 #, fuzzy msgid "_Edit" msgstr "Уреди" #: dialogs.c:2829 #, fuzzy msgid "_View" msgstr "Преглед" #: dialogs.c:2830 #, fuzzy msgid "_Mode" msgstr "Режим" #: dialogs.c:2831 #, fuzzy msgid "_Action" msgstr "Радња" #: dialogs.c:2832 #, fuzzy msgid "E_ngine" msgstr "Погон" #: dialogs.c:2833 #, fuzzy msgid "_Options" msgstr "Опције" #: dialogs.c:2834 #, fuzzy msgid "_Help" msgstr "Помоћ" #: dialogs.c:2844 msgid "<<" msgstr "<<" #: dialogs.c:2845 msgid "<" msgstr "<" #: dialogs.c:2847 msgid ">" msgstr ">" #: dialogs.c:2848 msgid ">>" msgstr ">>" #: dialogs.c:3136 msgid "Directories:" msgstr "Директоријуми:" #: dialogs.c:3137 msgid "Files:" msgstr "Датотеке:" #: dialogs.c:3138 msgid "by name" msgstr "по називу" #: dialogs.c:3139 msgid "by type" msgstr "по врсти" #: dialogs.c:3142 msgid "Filename:" msgstr "Назив датотеке:" #: dialogs.c:3143 msgid "New directory" msgstr "Нови директоријум" #: dialogs.c:3144 msgid "File type:" msgstr "Врста датотеке:" #: dialogs.c:3219 msgid "Contents of" msgstr "Садржај" #: dialogs.c:3245 msgid " next page" msgstr " следеће странице" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "ПРВО УКУЦАЈТЕ НАЗИВ ДИРЕКТОРИЈУМА ОВДЕ" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "ПРОБАЈТЕ ДРУГИ НАЗИВ" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" "Нису инсталиране основне фигуре!\n" "Изаберите ваше сопствене користећи „-pieceImageDirectory“." #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "Излаз погона" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "%s (%d повратан потез)" msgstr[1] "%s (%d повратна потеза)" msgstr[2] "%s (%d повратних потеза)" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "НПС" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "Читам датотеку игре (%d)" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: не могу да променим директоријум у ДИРШАХА: " #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "Нисам успео да отворим датотеку „%s“\n" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "Поново преведите са већим РЕДОВИМА_ТАБЛЕ или ЛИНИЈАМА_ТАБЛЕ да подржавају " "ову величину" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: лоша синтакса величине табле „%s“\n" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: непознат назив величине табле „%s“\n" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: доступно је премало боја; покушавам једнобојни режим\n" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Не могу да направим скуп писама за „%s“.\n" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: нема писама која одговарају обрасцу „%s“\n" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "Не могу да отворим привремену датотеку" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "Нисам успео да отворим датотеку" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 #, fuzzy msgid "Browse" msgstr "разгледај" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "У реду" #: menus.c:136 msgid "Load game file name?" msgstr "Да ли да учитам назив датотеке игре?" #: menus.c:183 msgid "Load position file name?" msgstr "Да ли да учитам назив датотеке положаја?" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "Да ли да сачувам назив датотеке игре?" #: menus.c:198 msgid "Save position file name?" msgstr "Да ли да сачувам назив датотеке положаја?" #: menus.c:355 msgid " (with Zippy code)" msgstr " (са Зипи кодом)" #: menus.c:360 #, fuzzy, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" "%s%s\n" "\n" "Ауторска права 1991 Корпорација дигиталне опреме\n" "Ауторска права побољшања 1992-2014 Задужбина слободног софтвера\n" "Ауторска права побољшања 2005 Алесандро Скоти\n" "\n" "„%s“ је слободан софтвер и нема НИКАКВЕ ГАРАНЦИЈЕ; видите датотеку „COPYING“ " "за више података.\n" "Гтк изградња овог издања је пробна и нестабилна\n" "\n" "Посетите Х-таблу на вебу: http://www.gnu.org/software/xboard/\n" "Проверите најновије функције на: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Грешке пријавите ел. поштом на: \n" "\n" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "О Х-табли" #: menus.c:390 #, fuzzy msgid "Registered Engines" msgstr "Замени погон" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 msgid "New Game" msgstr "Нова игра" #: menus.c:613 msgid "New Shuffle Game..." msgstr "Нова насумична игра..." #: menus.c:614 msgid "New Variant..." msgstr "Нова варијанта..." #: menus.c:616 msgid "Load Game" msgstr "Учитај игру" #: menus.c:617 msgid "Load Position" msgstr "Учитај положај" #: menus.c:618 msgid "Next Position" msgstr "Следећи положај" #: menus.c:619 msgid "Prev Position" msgstr "Претходни положај" #: menus.c:621 msgid "Save Game" msgstr "Сачувај игру" #: menus.c:622 msgid "Save Position" msgstr "Сачувај положај" #: menus.c:623 msgid "Save Selected Games" msgstr "Сачувај изабране игре" #: menus.c:624 msgid "Save Games as Book" msgstr "Сачувај игре као књигу" #: menus.c:626 msgid "Mail Move" msgstr "Пошаљи поштом потез" #: menus.c:627 msgid "Reload CMail Message" msgstr "Поново учитај поруку Цпоште" #: menus.c:629 msgid "Quit " msgstr "Изађи" #: menus.c:634 msgid "Copy Game" msgstr "Умножи игру" #: menus.c:635 msgid "Copy Position" msgstr "Умножи положај" #: menus.c:636 msgid "Copy Game List" msgstr "Умножи списак игара" #: menus.c:638 msgid "Paste Game" msgstr "Убаци игру" #: menus.c:639 msgid "Paste Position" msgstr "Убаци положај" #: menus.c:641 menus.c:686 msgid "Edit Game" msgstr "Уреди игру" #: menus.c:642 menus.c:687 msgid "Edit Position" msgstr "Уреди положај" #: menus.c:643 msgid "Edit Tags" msgstr "Уреди ознаку" #: menus.c:644 msgid "Edit Comment" msgstr "Уреди напомену" #: menus.c:645 msgid "Edit Book" msgstr "Уреди књигу" #: menus.c:647 msgid "Revert" msgstr "Врати" #: menus.c:648 msgid "Annotate" msgstr "Прибележи" #: menus.c:649 msgid "Truncate Game" msgstr "Скрати игру" #: menus.c:651 msgid "Backward" msgstr "Назад" #: menus.c:652 msgid "Forward" msgstr "Напред" #: menus.c:653 msgid "Back to Start" msgstr "Назад на почетак" #: menus.c:654 msgid "Forward to End" msgstr "Напред на крај" #: menus.c:659 msgid "Flip View" msgstr "Изврни преглед" #: menus.c:662 msgid "Move History" msgstr "Историјат потеза" #: menus.c:663 msgid "Evaluation Graph" msgstr "График процене" #: menus.c:664 msgid "Game List" msgstr "Списак игара" #: menus.c:667 msgid "Comments" msgstr "Напомене" #: menus.c:668 msgid "ICS Input Box" msgstr "Поље уноса ИЦС-а" #: menus.c:669 msgid "ICS/Chat Console" msgstr "Конзола ИЦС-а/Ћаскања" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Уреди напомену" #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Измени списак погона..." #: menus.c:674 msgid "Board..." msgstr "Табла..." #: menus.c:675 #, fuzzy msgid "Fonts..." msgstr "Звуци..." #: menus.c:676 msgid "Game List Tags..." msgstr "Ознаке списка игара..." #: menus.c:681 msgid "Machine White" msgstr "Машински бели" #: menus.c:682 msgid "Machine Black" msgstr "Машински црни" #: menus.c:683 msgid "Two Machines" msgstr "Две машине" #: menus.c:684 msgid "Analysis Mode" msgstr "Режим анализе" #: menus.c:685 msgid "Analyze Game" msgstr "Анализирај игру" #: menus.c:688 msgid "Training" msgstr "Увежбавање" #: menus.c:689 msgid "ICS Client" msgstr "ИЦС клијент" #: menus.c:691 msgid "Machine Match" msgstr "Машински меч" #: menus.c:692 msgid "Pause" msgstr "Заустави" #: menus.c:697 msgid "Accept" msgstr "Прихвати" #: menus.c:698 msgid "Decline" msgstr "Одбиј" #: menus.c:699 msgid "Rematch" msgstr "Поново играј" #: menus.c:701 msgid "Call Flag" msgstr "Заставица позива" #: menus.c:702 msgid "Draw" msgstr "Реми" #: menus.c:703 msgid "Adjourn" msgstr "Одложи" #: menus.c:704 msgid "Abort" msgstr "Прекини" #: menus.c:705 msgid "Resign" msgstr "Предај се" #: menus.c:707 msgid "Stop Observing" msgstr "Прекини посматрање" #: menus.c:708 msgid "Stop Examining" msgstr "Прекини испитивање" #: menus.c:709 msgid "Upload to Examine" msgstr "Отпреми на испитивање" #: menus.c:711 msgid "Adjudicate to White" msgstr "Досуди белом" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Досуди црном" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Досуди реми" #: menus.c:718 msgid "Edit Engine List..." msgstr "Измени списак погона..." #: menus.c:720 msgid "Load New 1st Engine..." msgstr "Учитај нови 1° погон..." #: menus.c:721 msgid "Load New 2nd Engine..." msgstr "Учитај нови 2° погон..." #: menus.c:723 msgid "Engine #1 Settings..." msgstr "Подешавања 1° погона..." #: menus.c:724 msgid "Engine #2 Settings..." msgstr "Подешавања 2° погона..." #: menus.c:725 #, fuzzy msgid "Common Settings..." msgstr "Подешавања општег погона" #: menus.c:727 msgid "Hint" msgstr "Савет" #: menus.c:728 msgid "Book" msgstr "Књига" #: menus.c:730 msgid "Move Now" msgstr "Одиграј сада" #: menus.c:731 msgid "Retract Move" msgstr "Повуци потез" #: menus.c:736 #, fuzzy msgid "Mute all Sounds" msgstr "Звук потеза" #: menus.c:739 msgid "General..." msgstr "Опште..." #: menus.c:741 msgid "Time Control..." msgstr "Управљање временом..." #: menus.c:742 msgid "Adjudications..." msgstr "Додељивања..." #: menus.c:743 msgid "ICS..." msgstr "ИЦС..." #: menus.c:744 msgid "Tournament..." msgstr "Турнир..." #: menus.c:745 msgid "Load Game..." msgstr "Учитај игру..." #: menus.c:746 msgid "Save Game..." msgstr "Сачувај игру..." #: menus.c:747 msgid "Game List..." msgstr "Списак игара..." #: menus.c:748 msgid "Sounds..." msgstr "Звуци..." #: menus.c:751 msgid "Always Queen" msgstr "Увек краљица" #: menus.c:757 msgid "Flash Moves" msgstr "Бљесни потезима" #: menus.c:759 msgid "Highlight Dragging" msgstr "Истакни превлачење" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Истакни стрелицом" #: menus.c:763 msgid "Move Sound" msgstr "Звук потеза" #: menus.c:765 msgid "Periodic Updates" msgstr "Повремена освежења" #: menus.c:767 msgid "Popup Exit Message" msgstr "Прикажи поруку излаза" #: menus.c:769 msgid "Show Coords" msgstr "Прикажи кординате" #: menus.c:770 msgid "Hide Thinking" msgstr "Сакриј размишљање" #: menus.c:774 msgid "Save Settings Now" msgstr "Сачувај подешавања сада" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Сачувај подешавања на изласку" #: menus.c:780 msgid "Info XBoard" msgstr "Подаци Х-табле" #: menus.c:781 msgid "Man XBoard" msgstr "Приручник Х-табле" #: menus.c:783 msgid "XBoard Home Page" msgstr "Матична страница Х-табле" #: menus.c:784 msgid "On-line User Guide" msgstr "Корисничко упутство на мрежи" #: menus.c:785 msgid "Development News" msgstr "Новости о развоју" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "Пошаљи извештај о грешци" #: menus.c:825 msgid "File" msgstr "Датотека" #: menus.c:826 msgid "Edit" msgstr "Уреди" #: menus.c:827 msgid "View" msgstr "Преглед" #: menus.c:828 msgid "Mode" msgstr "Режим" #: menus.c:829 msgid "Action" msgstr "Радња" #: menus.c:830 msgid "Engine" msgstr "Погон" #: menus.c:831 msgid "Options" msgstr "Опције" #: menus.c:832 msgid "Help" msgstr "Помоћ" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "назив погона" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "потез" #: nengineoutput.c:156 msgid "Engine output" msgstr "Излаз погона" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" "Неподудара се „STRIDE“ у „nengineoutput.c“\n" "Промрните и поново преведите!" #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "График процене" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "График погрешака" #: nevalgraph.c:107 msgid "Blunder" msgstr "Погрешке" #: nevalgraph.c:107 msgid "Eval" msgstr "Процена" #: ngamelist.c:87 msgid "find position" msgstr "нађи положај" #: ngamelist.c:88 msgid "narrow" msgstr "уско" #: ngamelist.c:89 msgid "thresholds" msgstr "осетљивост" #: ngamelist.c:90 msgid "tags" msgstr "ознаке" #: ngamelist.c:91 msgid "next" msgstr "следеће" #: ngamelist.c:92 msgid "close" msgstr "затвори" #: ngamelist.c:116 msgid "No game selected" msgstr "Није изабрана игра" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "Не могу да идем више напред" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "Претражујем игре (%d)" #: ngamelist.c:211 msgid "previous page" msgstr "претходна страница" #: ngamelist.c:214 msgid "next page" msgstr "следећа страница" #: ngamelist.c:217 msgid "no games matched your request" msgstr "ниједна игра не одговара вашем захтеву" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "%s — %d/%d игре (%d-%d-%d)" #: ngamelist.c:284 msgid "There is no game list" msgstr "Нема списка игара" #: nhistory.c:109 msgid "Move list" msgstr "Списак потеза" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "%s: непозната боја „%s“\n" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s: не могу да обрадим боју прочеља у „%s“\n" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "%s: не могу да обрадим називе боја; искључујем обојавање\n" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "Грешка: Непознат корисник „%s“ (у путањи „%s“)\n" #: usystem.c:571 msgid "Socket support is not configured in" msgstr "Подршка прикључнице није подешена" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "унутрашња „rcmd“ није примењена за Јуникс" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "беле тачкице = 0x%lx, црне тачкице = 0x%lx\n" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "разгледај" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "Ктрл" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "Алт" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "Помак" #~ msgid "Common Engine..." #~ msgstr "Општи погон..." xboard-4.9.1/po/en@boldquot.header0000644000175000001440000000247112421746651014001 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # xboard-4.9.1/po/da.gmo0000644000175000001440000010652612747544040011450 00000000000000|()0))$Z))/))))*&0*W*t*4**5*#+=+7X+ ++++++'+ ,9,M,a,g,z,7,*,,&,"-"=-`-)x-%-%---.-. 6.@. O.\.q. . .8..../ /1/O/h// /////// /0 0 !00/0`0i0n0 0$00000)1*1:1O1g11111 11 11 1.2 32A2]2o2x222%2223!.3P3W3Y3l3 3.3333#34!,4VN44$44 4'45$25W5 \5 f5 s5 }5 55!55 5 56 66/6 A6b6r6 666 66&6!6&7(<7e7|7!77770888I8^8f8j888"8"8.8 $90959P9b9Xt989 ::1:@K:&::::(:;,;C;/\;;;; ;;;;<<#<<<M<`<t<<<<< < < < < <,< )=06=!g== ==!=#>%>4> Q> ]>i>#}>>>>>>??!?&?-?3?G?c?u??? ??-?)@-/@)]@ @%@-@(@"A!1ASA XA bA mAwA}AA AAAAAA BB-B-6BdBBBBBBBC$C4CHC!]CCCCC+CC"CD/D@DWD_DzD!DDDD#DD DE E!E4EEEIE\EpE,EEEEEEF$Fx!gxxx xxx+xy#y+y(@yiyqyyyyyyyyz6(z_z}zzzzz*z{ {'{){>{DX{Z{{|$| C|:Q|||||'||"})}&>}!e}} }}} } ~"~2~N~ b~o~ ~~ ~~~~~~ ,L.Q  2/E7u54 4>TZiT{Ё,%@7U%‚ 8+. Zh'l ̃'")?Zn2 „#҄00'X9\$ԅ(6'_$> .ENSp*ɇ.9#O]%ӈQzV̉#&=Cd)Ҋ-6?CGK^'g  * ** I W(d1  '7[>G(AQ;'-t?gqUDn:Y E9pAu+(/Wo 4gH7' dEuU\PLT ,5_e,pMH>vi]Fw=2[nxzdTm1etY.-c^3PKryc`ml~k Bk&SsGRa6!ShZ@lb6M5{%V|INI17vfj^ \fJ.2!?xR |4/~%&JV9{8 }Fr3@#ajXo<`C C=8D"XNzO_Qq)0)iZB"LW} # $ybwhK*$<+O0 ]*:;s Thresholds for position filtering in game list: options to use in game-viewer mode: (with Zippy code)%s (%d reversible ply)%s (%d reversible plies)%s - %d/%d games (%d-%d-%d)%s does not support analysis%s engine has too many options %s in settings file %s program exits in draw position (%s)%s: bad boardSize syntax %s %s: can't cd to CHESSDIR: %s: can't parse color names; disabling colorization %s: no fonts match pattern %s %s: too few colors available; trying monochrome mode %s: unrecognized boardSize name %s %s: unrecognized color %s (Directory will be derived from engine path when empty)About XBoardAbove WAV FileAbsolute Analysis ScoresActionAdd this engine to the listAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate non-ICS GamesAdjudicate to BlackAdjudicate to WhiteAlarmAlarm Time (msec):Alarm:All games in tourney '%s' are already played or playingAlmost Always Queen (Detour Under-Promote)Already at end of gameAlso match left-right flipped positionAlso match reversed colorsAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnimation Speed (high = slow):AnnotateAuto FlagAuto Flip ViewAuto-CommentAuto-Display CommentAuto-Display TagsAuto-KibitzAuto-ObserveAuto-Play speed of loaded games (0 = instant, -1 = off):Auto-Raise BoardAuto-Refresh Seek GraphAuto-Save GamesBBackground Observe while PlayingBad FEN position in clipboardBad FEN position in fileBad FEN received from engineBad SeekBad game fileBad integer value %sBad position fileBad tournament fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBoard OptionsBoard size ( -1 = default for selected variant):Board...BookBook Depth (moves):Book FaultBook Variety (0) vs. Strength (100):Both flags fellBrowseCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't open temp fileCan't seek on game fileCan't seek on position fileCancelCannot build game listCar HornChallenge Text Colors:Challenge:Channel #1 Text Colors:Channel 1:Channel:Clear boardClock adjustment not allowed in auto-flag modeClone TourneyClose ICS engine analyze...Colorize MessagesCommentsCommon Engine SettingsConnection closed by ICSCopy Game ListCould not connect to host %s, port %sCould not open comm port %sCould not parse moveCould not write on tourney fileCouldn't parse move "%s" from ICSCymbalDDark Square Color:Dark-Squares Texture File:Default BeepDefault Number of Games in Match (or Pairing):Detect all MatesDevelopment NewsDingDisable own engine books by defaultDisplayed move is not currentDisplayed position is not currentDisplayed position is not current. Step forward to the correct position and try again.Draw after N Moves Total:Draw if Insufficient Mating MaterialDraw:Drop MenuDual Board for Background-Observed GameEGTB Cache Size (MB):ERROR: Unknown user %s (in path %s) EditEdit BookEdit CommentEdit TagsEdit bookEdit commentEdit comment on %d.%s%sElo of strongest player at least:Elo of weakest player at least:Empty squareEnd of gameEngineEngine #1Engine #1 Has Own BookEngine #2 / HumanEngine #2 Has Own Book Engine Command:Engine Directory:Engine OutputEngine SettingsEngine has no optionsEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvaluation graphExact position matchExitingFRCFailed to invoke cmailFailed to open fileFailed to open file '%s' Failed to open indirection file %sFailed to parse board string: "%s"Failed to start %s chess program %s on %s: %s Fatal ErrorFileFile with Start Positions:First Black Move:First White Move:First change an engine by editing the participants list of the Tournament Options dialogFirst you must specify an existing tourney file to cloneFlash MovesFlash Moves (0 = no flashing):Flash Rate (high = fast):Flip Pieces Shogi Style (Colored buttons restore default)Force current variant with this engineGGame File with Opening Lines:Game List Tags...Game Number (-1 or -2 = Auto-Increment):Game list not loaded or emptyGame not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGame-list optionsGap in move listGeneral OptionsGet Move ListGongGot end of file from keyboardHash keys are differentHash-Table Size (MB):HelpHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sHoldings Size:ICS ClientICS Input BoxICS OptionsICS input boxICS text menuIllegal hint move "%s" from %s chess programIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move (rejected by ICS)Illegal move in ICS output: "%s"Illegal move: %d.%s%sInclude Number Tag in tourney PGNIncomplete \ escape in value for %sIncorrect moveIncrement or max (sec/move):Info XBoardInformationInitial time (min):Invalid pairing from pairing engineIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnKibitz Text Colors:Kibitz:KingKnightLaserLight Square Color:Light-Squares Texture File:Load Game OptionsLoad game file name?Load position file name?Lose:Machine MatchMachine accepts your draw offerMachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMail MoveMatch %s vs. %s: final score %d-%d-%dMaterial difference (optional stuff balanced)Material range (top board half optional)Maximum Number of CPUs per Engine:Minimum nr consecutive positions:ModeMono ModeMove SoundMove listMove:Moves per session:Must not use GUI bookN-Move Rule:N-fold Repeats:NPSNegate Score of Engine #1Negate Score of Engine #2New Shuffle GameNew VariantNickname (optional):No SoundNo engine with the name you gave is installedNo game has been loaded yetNo game selectedNo games before year:No hint availableNo more games in this messageNo moves in gameNo pairing engine specifiedNo position has been loaded yetNo tag selectedNo unfinished gamesNo unfinished games No value provided for argument %sNot enough participantsNoteNumber of Board Files:Number of Board Ranks:Number of tourney cycles (or Swiss rounds):OKOld Save Style (as opposed to PGN)On-line User GuideOne-Click MovingOpening-Book Filename:OptionsOther Channel Text Colors:PGN Event Header:Pause between Match Games (msec):PawnPenaltyPeriodic UpdatesPeriodic Updates (in Analysis Mode)PhonePick new gamePlayPolyglot book not validPolygot Directory:Ponder Next MovePopPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition Number (-1 or -2 = Auto-Increment):Position not found in filePremovePremove Highlight Color:Premove for BlackPremove for WhitePromotePull pawn backwards to under-promoteQueenQuiet PlayRReading game file (%d)Ready to send mail Recompile to support this BOARD_RANKS or BOARD_FILES!Recompile with larger BOARD_RANKS or BOARD_FILES to support this sizeReload CMail MessageReplace EngineRequest Text Colors:Request:Rewind Index after this many Games (0 = never):RookS-Shout Text Colors:S-Shout:Same materialSame material with exactly same Pawn chainSave Final Positions on File:Save Game OptionsSave Games on File:Save Out-of-Book Info in PGN Save Score/Depth Info in PGNSave Settings NowSave Settings on ExitSave Tourney Games on:Save game file name?Save position file name?Saving gameSaving positionScanning through games (%d)Scores in Move ListSearch mode:Seconds per Move:Seek GraphSeek Text Colors:Seek:Select Engine:Select engine from list:Shout Text Colors:Shout:Show CoordinatesShow CoordsShow Target SquaresShown position is subsetSlapSocket support is not configured inSound OptionsSound Program:Sounds Directory:Start-position number:Starting %s chess programStarting chess programStartup failure on '%s'Sticky WindowsStill need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s Swiss tourney finishedTagsTell Text Colors:Tell:Test LegalityThat square is occupiedThe cmail message is not loaded. Use Reload CMail Message and make your move again.There is no game listThere is no pending offer on this moveTime ControlTime-Odds factors:Tourney participants:Tourney type (0 = round-robin, 1 = gauntlet):TrainingTraining mode offTraining mode onTraining mode requires a game fileTry-Out Sound:TwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineType a moveUCIUnable to create font set for %s. Unfinished:Unknown initialMode %sUnknown variant name %sUnknown wild type %dUnrecognized argument %sUnrecognized boolean argument value %sUnusedUpgrade EngineUpload to ExamineUse Board TexturesUse GUI BookUse nickname in PGN player tags of engine-engine gamesUser FileUser WAV File:Variant %s not supported by %sVariant %s supported only in ICS modeVerify Engine Result ClaimsViewWB protocol v1 (do not wait for engine features)Waiting for access to save fileWaiting for first chess programWaiting for other game(s)Waiting for reply from opponent Waiting for second chess programWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite Piece Color:White to playWhite's flag fellWin / Loss Threshold:Win:Wood ThunkXBoard Home PageYou are not examining a gameYou are not observing a gameYou are playing BlackYou are playing WhiteYou can only change one engine at the timeYou can't revert while pausingYou cannot do this while you are playing or observingYou cannot replace an engine while it is engaged! Terminate its game first.You did not specify the engine executableYou have already mailed a move. Wait until a move arrives from your opponent. To resend the same move, type "cmail -remail -game %s" on the command line.You have edited the game history. Use Reload Same Game and make your move again.You have entered too many moves. Back up to the correct position and try again.You have not made a move yetYou must make your move before offering a drawYou must supply a tournament file, for storing the tourney progressYour opponent is not out of timeZoom factor in Evaluation Graph:bad searchTime option %sbad timeControl option %sbrowseclassicalclearclosedowne-Mail Bug Reportfactoryfailed writing PVfind positionfirstfixed maxincrementalinternal rcmd not implemented for Unixnextnext pageno games matched your requestor specify one below:pick fixedprevious pageprotocol version %d not supportedrandomizesave changessay Internal error; bad moveType %d (%d,%d-%d,%d)secondshufflethresholdsupvs.white pixel = 0x%lx, black pixel = 0x%lx your opponent kibitzes: %sProject-Id-Version: GNU xboard 4.6.0.20120304 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2012-03-06 12:27+0100 Last-Translator: Byrial Ole Jensen Language-Team: Danish Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 1.2 Plural-Forms: nplurals=2; plural=(n != 1); Grænseværdier for stillingsfiltrering i partiliste: Indstillinger til brug ved gennemkigning af partier: (med Zippy-kode)%s (%d reversibelt træk)%s (%d reversible træk)%s - %d/%d partier (%d-%d-%d)%s understøtter ikke analyse%s skakprogram har for mange tilvalg %s i indstillingsfil %s program afslutter i remisstilling (%s)%s: forkert boardSize-syntaks %s %s: kan ikke cd til CHESSDIR: %s: kan ikke fortolke farvenavne; deaktiverer farvning %s: Ingen skrifttyper matcher mønstret %s %s: for få farver tilgængelige; prøver monokrom tilstand %s: ikke genkendt boardSize-navn %s %s: ikke genkendt farve %s (Katalog vil blive udledt fra programstien hvis ikke udfyldt)Om XboardWAV-filen ovenforAbsolutte analysescorerHandlingerTilføj dette skakprogram til listenDøm remisDøm trivielle remiser (3-træks forsinkelse)Døm ikke-ICS partierDøm sort gevinstDøm hvid gevinstAlarmAlarmtid (millisekunder):Alarm:Alle partier i turneringen "%s" er allerede færdige eller i gangNæsten altid dronning (Omvejs-underforvandling)Allerede ved slutningen af partietMatch også spejlvendt stillingMatch også omvendte farverFlertydigt træk i ICS-output: "%s"Flertydigt træk: %d.%s%sAnalysetilstand virker ikke sammen med ICS-tilstandAnalysetilstand kræver et skakprogramAnalyzeFile-tilstand kræver en partifilAnimeret trækudførelseAnimeret flytningAnimeringshastighed (høj = langsom):KommentérAutomatisk annoncering af tidsoverskridelseAutomatisk vending af brættetGem kommentarer til trækAutomatisk visning af kommentarerAutomatisk visning af partidataSend kommentarer fra skakprogramObservér automatiskHastighed af gennemspilning af indlæste partier (0 = øjeblikkeligt, -1 fra):Bræt øverst ved partistartAutomatisk opdatering af søgegrafGem partier automatiskBObsevér i baggrunden når der spillesFejl i FEN-stilling i udklipsholderFejl i FEN-stilling i filFejl i FEN modtaget fra skakprogramSøgning mislykkedesFejl i partifilForkert heltalsværdi %sFejl i stillingsfilFejl i turneringsfilLøberSortFarve for sorte brikker:Sort i trækketSorts flag er faldetBlindskakBrætindstillingerBrætstørrelse (-1 = standard for valgt variant):Bræt...ÅbningsbogÅbningsbogsdybde (træk):Fejl i åbningsbogÅbningsbogvariation (0) vs. styrke (100):Begge flag er faldetGennemseKan ikke gå længere tilbageKan ikke gå længere fremadKan ikke have en match uden skakprogrammerKan ikke åbne "%s"Kan ikke åbne midlertidig filKan ikke spole i partifilKan ikke spole i stillingsfilAnnullérKan ikke konstruere partilisteBilhornTekstfarver for udfordring:Udfodring:Tekstfarver for kanal nr. 1:Kanal 1:Kanal:Ryd brætDet er ikke tilladt er stille på uret i auto-flag-tilstandKopiér turneringLukker skakprogram til ICS-analyse ...Farv meddelelserKommentarerIndstillinger for skakprogrammerForbindelse lukket af ICSKopiér partilisteKunne ikke forbinde til vært %s, port %sKunne ikke åbne seriel port %sKunne ikke fortolke trækKunne ikke skrive turneringsfilKunne ikke fortolke "%s" fra ICSBækkenMFarve for mørke felter:Teksturfil for mørke felter:Standard bipStandard for antal partier i match (eller parring):Find alle matterNyheder i denne version (engelsk)DingDeaktivér skakprogrammets egen åbningsbog som standardDet viste træk er ikke det aktuelleDen viste stilling er ikke den aktuelleDen viste stilling er ikke den aktuelle. Gå fremad til den korrekte stilling og prøv igen.Remis efter i alt N træk:Remis ved utilstrækkeligt matsættende materialeRemis:Placér brik-menuAndet bræt til baggrundsobservede partierEGTB-cachestørrelse (MB):FEJL: Ukendt bruger %s (i stien %s) RedigérRedigér åbningsbogRedigér kommentarRedigér partidataRedigér åbningsbogRedigér kommentarRedigér kommentar til %d.%s%sStærkeste spillers rating er mindst:Svageste spillers rating er mindst:Tomt feltSlutningen af partietSkakprogramSkakprogram nr. 1Skakprogram nr. 1 har egen åbningsbogSkakprogram nr. 2 / menneskeSkakprogram nr. 2 har egen åbningsbogSkakprogramkommando:Skakprogramkatalog:Output fra skakprogramIndstillinger for skakprogramSkakprogrammet har ingen tilvalgOutput fra skakprogramFejlFejl ved tolkning af trækliste: ekstra brætFejl ved tolkning af trækliste: indlejretFejl ved tolkning af trækliste: to teksthovederFejl ved læsning fra %s skakprogram (%s)Fejl ved læsning fra ICSFejl ved læsning fra tastaturFejl ved skrivning til %s skakprogramFejl ved skrivning til ICSFejl ved skrivning til skakprogramFejl ved skrivning til skærmFejl: %s skakprogram (%s) afsluttede uventetEvalueringsgrafEksakt stillingAfslutterskak960Start af cmail mislykkedesÅbning af fil mislykkedesÅbning af filen "%s" mislykkedes Åbning af inkluderet fil "%s" mislykkedesFortolkning af brætstreng mislykkedes: "%s"Fejl ved start af %s skakprogram %s på %s: %s Fatal fejlFilFil med startstillinger:Sorts første træk:Hvids første træk:Ændr først skakprogram ved at redigere deltagerlisten i turneringsindstillingerneDu skal angive en eksisterende turneringsfil til at kopiereBlink ved trækBlink ved træk (0 = ingen blink):Blinkhastighed (høj = hurtig):Ombyt brikker som i shogi (Farvede knapper gendanner standard)Brug aktuel variant med dette skakprogramGPartifil med åbninger:Partidata-overskrifter ...Partinummer (-1 eller -2 = automatisk forøgelse):Partiliste ikke indlæst eller tomParti ikke fundet i filPartinummer findes ikkeParti for langt; forøg MAX_MOVES og genoversætIndstillinger for partilisteHul i træklisteGenerelle indstillingerHent træklisteGongonFik filafslutning fra tastaturHashnøgler er forskelligeHashtabel-størrelse (MB):HjælpSkjul tænkning fra menneskeFarve til fremhævelse:Fremhæv flytningFremhæv sidste trækFremhæv med pilFremhæv med pilTipTip: %sDepotstørrelse:ICS-klientICS-inputboksICS-indstillingerICS-inputboksICS-tekstmenuUlovligt tip om træk "%s" fra %s skakprogramUlovligt trækUlovligt træk "%s" (afvist af %s skakprogram)Ulovligt træk "%s" fra %s skakprogramUlovligt træk (afvist af ICS)Ulovligt træk i ICS-output: "%s"Ulovligt træk: %d.%s%sBrug partinumre i PGN-fil for turneringUkomplet \-undvigesekvens i værdi for %sUkorrekt trækTillægstid eller maks. pr. træk (sekunder):Info XBoardMeddelelseTid fra start (minutter):Ikke tilladt parring fra parringsprogramDet er sorts turDet er hvids turSort er ikke i trækketHvid er ikke i trækketDet er dig som er i trækketTekstfarver for kommentar:Kommentar:KongeSpringerLaserFarve for lyse felter:Teksturfil for lyse felter:Indstillinger for indlæsning af partiFilnavn for indlæsning af parti?Filnavn for indlæsning af stilling?Tab:SkakprogrammatchSkakprogrammet accepterer dit remistilbudMachineBlack-tilstand virker ikke sammen med ICS-tilstandMachineBlack-tilstand kræver et skakprogramMachineWhite-tilstand virker ikke sammen med ICS-tilstandMachineWhite-tilstand kræver et skakprogramSend træk med e-postMatch %s - %s: slutscore %d-%d-%dMateriale-forskel (balanceret valgfrit materiale)Materiale-interval (øverste halvdel af brættet valgfrit)Maksimalt antal CPU'er pr. skakprogram:Mindste antal stillinger i følge ad gangen:TilstandMonokrom-tilstandLyd ved trækTræklisteTræk:Træk pr. tidsperiode:Må ikke bruge GUI's åbningsbogN-træksregel:N-gange gentagelser:SPSNegér skakprogram nr. 1's scoreNegér skakprogram nr. 2's scoreNyt blandet partiNy variantKaldenavn (ikke nødvendigt):Ingen lydDer er ikke installeret et skakprogram med det angivne navnDer er endnu ingen indlæste partierDer er ikke valgt et partiIngen partier før år:Tip er ikke tilgængeligtDer er ikke flere partier i denne beskedIngen træk i partietDer er ikke noget parringsprogram specificeretIngen stilling er endnu indlæstIngen overskrift valgtDer er ingen uafsluttede partierDer er ingen uafsluttede partier Ingen værdi givet for argumentet %sDer er ikke nok deltagereNotitsAntal brætlinjer:Antal brætrækker:Antal cyklusser i turneringen (eller svejtserrunder):o.k.Gammel gemmestil (i modsætning til PGN)Online brugervejledning (engelsk)Ét-klikstrækÅbningsbogsfilnavn:IndstillingerTekstfarver for andre kanaler:Event-tekst i PGN-fil:Pause imellem matchpartier (millisekunder):BondeStraffePeriodisk opdateringPeriodisk opdatering (i analysetilstand)TelefonVælg nyt spilAfspilFejl i polyglyt-åbningsbogPolyglot-katalog:Spekulér på næste trækPlopPop op med afslutningsbeskederPop op med afslutningsbeskederPop op ved trækfejlStillingsnummer (-1 eller -2 = automatisk forøgelse):Stilling er ikke fundet i filForhåndstrækFarve til forhåndstræk:Forhåndstræk for sortForhåndstræk for hvidBondeforvandlingTræk bonde baglæns for at underforvandleDronningStille spilRLæser partifil (%d)Klar til at sende e-mail Genoversæt for at understøtte denne BOARD_RANKS eller BOARD_FILES!Genoversæt med større BOARD_RANKS eller BOARD_FILES for at understøtte denne størrelseGenindlæs CMail-beskedUdskift skakprogramTekstfarver for forespørgsel:Forespøgsel:Genstart nummering efter dette antal partier (0 = aldrig):TårnTekstfarver for s-råb:S-råb:Samme materialeSamme materiale med samme bondestrukturGem slutstillinger i filen:Indstillinger for gemning af partiGem partier i filen:Gem ud af åbningsbog-info i PGN Gem score/dybde-information i PGNGem indstillinger nuGem indstillinger ved afslutningGem turneringspartier i:Filnavn for gemning af parti?Filnavn for gemning af stilling?Gemmer partiGemmer stillingSkanner gennem partier (%d)Scorer i træklisteSøgemetode:Sekunder pr. træk:SøgegrafTekstfarver for søgning:Søgning:Vælg skakprogram:Vælg skakprogram fra liste:Tekstfarver for råb:Råb:Vis koordinaterVis koordinaterVis målfelterViste stilling er en delmængdeSlagEr ikke konfigureret med sokkelunderstøttelseLydindstillingerLydprogram:Lydkatalog:Startstillingsnummer:Starter %s skakprogramStarter skakprogramOpstartsfejl på "%s"Klæbrige vinduerDer er stadig nødvendigt at trække i partiet %s Der er stadig nødvendigt at trække i partiet Der er stadig nødvendigt at trække i alle %d partier Der er stadig nødvendigt at trække i begge partier Der er stadig nødvendigt at trække i partierne %s Svejtserturnering afsluttetPartidataTekstfarver for tale:Tale:Test lovlighedDet felt er besatCmail-beskeden er ikke indlæst. Brug Genindlæs CMail-besked og lav dit træk igen.Der er ingen partilisteDer er ingen aktuelle tilbud ved dette trækBetænkningstidTidsforkortelses-faktorer:Turneringsdeltagere:Turneringstype (0 = alle mod alle, 1 = en imod resten):TræningTræningstilstand fraTræningstilstand tilTræningstilstand kræver en partifilAfprøv lyd:TwoMachines-tilstand virker ikke sammen med ICS-tilstandTwoMachines-tilstand kræver et skakprogramTast et trækUCIKan ikke lave skrifttypegruppe for %s. Uafsluttet:Ukendt initialMode %sUkendt variantnavn %sUkendt vild type %dIkke genkendt argument %sIkke genkendt boolesk argumentværdi %sUbrugtOpgradér skakprogramOverfør til undersøgelseBrug brætteksturerBrug GUI's åbningsbogBrug kaldenavnet som spillerbetegnelse i PGN-filerBrugerfilBruger WAV-fil:Variant %s understøttes ikke af %sVarianten %s er kun understøttet i ICS-tilstandEfterprøv resultatangivelser fra skakprogrammerVisWB-protokol v1 (brug ikke særlige skakprogramfunktioner)Venter på adgang til gemmefilVenter på første skakprogramVenter på andet parti/andre partierVenter på svar fra modstander Venter på andet skakprogramAdvarsel: Du undersøger stadig et partiAdvarsel: Du observerer stadig et partiAdvarsel: Du spiller stadig et partiAdvarsel: det andet skakprogram (%s) understøtter ikke dette!HvidFarve for hvide brikker:Hvid i trækketHvids flag er faldetGevinst/tabs-tærskel:Gevinst:DunkXBoards hjemmeside (engelsk)Du undersøger ikke et partiDu observerer ikke et partiDu spiller sortDu spiller hvidDu kan kun ændre et skakprogram ad gangenDu kan ikke annullere variantlinje under pauseDu kan ikke gøre dette, mens du spiller eller observererDu kan ikke udskifte et skakprogram, mens det bruges! Afslut dets parti først.Du angav ikke et kørbart skakprogramDu har allerede sendt et træk. Vent indtil der kommer et træk fra din modstander. For at gensende det samme træk, tast "cmail -remail -game %s" på kommandolinjen.Du har redigeret i parti-historikken. Genindlæs partiet og udfør trækket igen.Du har indtastet for mange træk. Gå tilbage til den aktuelle stilling og prøv igen.Du har ikke trukket endnuDu skal trække før du tilbyder remisDu skal angive en turneringsfil til at gemme turneringens afviklingDin modstander har ikke overskredet tidenZoomfaktor i evalueringsgraf:forkert searchTime-tilvalg %sforkert timeControl-tilvalg %sgennemseKlassiskrydluknedE-mail fejlrapportstandardskrivning af analysevariant mislykkedesfind stillingførsteMaks. pr. trækTillægstidintern rcmd er ikke implementeret til Unixnæstenæste sideingen partier svarer til din forespørgseleller specificér en herunder:vælg bestemtforrige sideprotokolversion %d er ikke understøttetvælg tilfældigtgem ændringersay Intern fejl; forkert moveType%d (%d,%d-%d,%d)det andetbland brikkergrænseværdierop–hvid pixel = 0x%lx, sort pixel = 0x%lx din modstander kommenterer: %sxboard-4.9.1/po/fr.gmo0000644000175000001440000015153112747544040011467 00000000000000 -(<;)<0e<$<< <<<<=/&=V=r===&==??4?)@<@5[@#@@7@A A AAA#A%A(A*A-A3A 9AFAUAnAuA|AAA'AAABB*B0BCB7JBKB*BB&C7CRC VC"cCC C)C%C C% D/D@DODnD wD DD DDDDD D E8ENE_EwE6EE E EEEF/FLF UFcFxFFFFF FF FF F F0 G=GFGKG _G$jG*GGGG G GG H)&HPH`HuHHHHHHHHH I I6IUI mIxI II II.II JJ1JCJ LJZJqJJ JJ JJ J%JKK7KLK!lK KK KKKKKK K.K$L*L1LBLSL XLeL#LL!LVL>MYM^M$xMM M'MM M$MN#N (N 2N?N SN ]N kN uN NNNNN!NN O+OBO KOWO ^OhOOO OOOO PP2PQP gPuP&{P!P&P(PQ+Q!GQiQ~QQ0QQQQR#R+RJRNReRyR"R"R.R S S"S 'S2S MSWS^SpSXS8ST %T1TPT@jT TTT8T&T$U,U;U=U [UeU wU(UU UUU/V6VHVYVaV qV |VVV VVVVVW$W )W7WPWaWtWWWWWWWW W WW X X &X4X;X,LX yX0X!XX XY!/Y#QYuYY Y YY&Y#YZ+Z>ZUZlZ |ZZZZZ ZZ ZZZ'Z%[ *[ 5[?[ Q[^[u[ [[[[[$[\ \ &\ 4\B\6b\-\)\-\)] I]S] Z]%e]-](]"]^!^;>^z^ ^ ^^ ^^ ^^^^ ___"_<_V___h_y_ __ __ ___ _J`S`-m``````aa;a[akaa!aaaaaa+b4b"7bZbmb.~bbbbbb c c&c5c!;c]cbcjc#{cc cc%ccc ddd1dEd,Wdddddd dd$de %e0e6eFeHe_e5seEeefff.fCfLf Sf`f/gfffff f*ff g g 2g?gRg'fg gggggg h!h :hFhVhrh hh hhhhhhh iii.i5i FiRifii#ii iii ijjj9jPjhj&wj!j*j(j&k;kJkYk aklkkkkkkk kkSkMl&cl l lllllm m)m-?mmmvmm"m mm m,m(n |0T|| ||||#|3}8}S}%p}$},}U}(>0gS@--H[(́@,. 0> @LNQSV\dxڂ;2Ld }D`5\2& *Hc5r.ׅ0*&;b jw,Æ'%>ZmR&؇7(7;`& ֈ+* 9Zm Éމ19?TKl Ɗ-Ԋ;AW%ϋ )6H)&Œ+($M _j| E " 8C4VO'ێ!7 I Vd Ə4"%W/}#/ѐ02A FQY[%x <  *GL.\=6ɒ4y5$ ԓ&ޓ6 <H<X45Ug| •/ 0#;)_ ! ǖՖ ܖ-/-Bp˗Jߗ*FWJ^JH5="s!9 6$JEoٚ$-/]$a%(2՛5A> ( {0M 2&QZxӞ A*Hs|)&Ο:"Be#z%0Ġ, =G [h!&ɡ$.DIPaТ 9; U`tţ?ܣ?/(o+,Ĥ4#Cg,{ ȥ.ޥ2 @["w# զ % +6'R8zΧ%#4Xm"'Ҩ7# ,:L1[P:ީ3:M3ڪ );FU#+߫L X ]g*Ѭ5<Qos ɭ !$5Zl i2#Rv!ԯ) )7&a( !26i0l@б.@Ii Ȳ۲& .0 _k1"޳ (<*e>%ϴ &&?Y o2{õ˵9QXڶ  (3L:T ķ;Է3DZy,)=$5<'r$&%& +3_"z#  >JS'mػ޻)) S&_żۼ$$5QoBHƽPR`F" 1*>i ɿl 3(#@Yl 4 4'\l {;+) 44ix. .%JpCS$8*W-q2"UHYC&/ )=g.(==,;j8 1?^ gr+4B3KvoH2{|Hj(0>YU$n1  ##$G lw +5 N\e   '  ! ,8 @+N*z & '9DU   ( %$4yMKVKq6,B~ 9(F!<| e"pX=;>:#-(R_<0Vd#oYdN%v/Pb\A{8?4 +IL@awWq $jm)mJa%Wz"`Jr-SE{4&$m^IZnL ?IxK^QA,N.OB~.G22H3*}!X\> Z 97vb;kl'Ci \jkwRvV121 Hd| #sT~XF_+cFu uhU'x86uS[Az0]U[G3Eth<trBcDY7: `T rofLc/4/q) 7:fllp"_.ikD9(P'[zC%8C]s065&1wJ@iOE]p&!aR PyWHsM=?5`gZ O ^}-,n@D|SNefg>}Geoj+ =;)bh3xtU{Y5**yQ$nTQgM The * buttons will set the font to the one selected below: Thresholds for position filtering in game list: options to use in game-viewer mode: next page (with Zippy code)# no engines are installed# no themes are defined%d avoid-moves played %s (%d reversible ply)%s (%d reversible plies)%s - %d/%d games (%d-%d-%d)%s does not support analysis%s engine has too many options %s in settings file %s program exits in draw position (%s)%s%s Copyright 1991 Digital Equipment Corporation Enhancements Copyright 1992-2016 Free Software Foundation Enhancements Copyright 2005 Alessandro Scotti %s is free software and carries NO WARRANTY;see the file COPYING for more information. Visit XBoard on the web at: http://www.gnu.org/software/xboard/ Check out the newest features at: http://www.gnu.org/software/xboard/whats_new.html Report bugs via email at: %s: bad boardSize syntax %s %s: can't cd to CHESSDIR: %s: can't parse color names; disabling colorization %s: can't parse foreground color in '%s' %s: no fonts match pattern %s %s: too few colors available; trying monochrome mode %s: unrecognized boardSize name %s %s: unrecognized color %s (Directory will be derived from engine path when empty)*+, but %s is-3-checks<<<>>>ASEANAbortAbout XBoardAbove WAV FileAbsolute Analysis ScoresAcceptActionAdd this engine to the listAdjournAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate non-ICS GamesAdjudicate to BlackAdjudicate to WhiteAdjudications...AlarmAlarm Time (msec):Alarm:All games in tourney '%s' are already played or playingAll variants not supported by the first engine (currently %s) are disabled.Almost Always Queen (Detour Under-Promote)Already at end of gameAlso match left-right flipped positionAlso match reversed colorsAltAlways QueenAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis ModeAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyze GameAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnimation Speed (high = slow):AnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-Create Logon ScriptAuto-Display CommentAuto-Display TagsAuto-InputBox PopUpAuto-KibitzAuto-ObserveAuto-Play speed of loaded games (0 = instant, -1 = off):Auto-Raise BoardAuto-Refresh Seek GraphAuto-Save GamesAverage solving time %4.2f sec (total time %4.2f sec) BBack to StartBackground Observe while PlayingBackwardBad FEN position in clipboardBad FEN position in fileBad FEN received from engineBad SeekBad game fileBad integer value %sBad position fileBad tournament fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBlunderBlunder graphBoard OptionsBoard size ( -1 = default for selected variant):Board...BookBook Depth (moves):Book FaultBook Variety (0) vs. Strength (100):Book file exists! Try again for overwrite.Both flags fellBrowseBughouseCRC (10x8)Call FlagCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't open temp fileCan't seek on game fileCan't seek on position fileCancelCannonCannot build game listCapablanca (10x8)CaptainCar HornChallenge Text Colors:Challenge:ChancellorChanging time control during a game is not implementedChannel #1 Text Colors:Channel 1:Channel:Chat partner:Chats:Clear boardClick clock to clear boardClock adjustment not allowed in auto-flag modeClocks (requires restart):Clone TourneyClose ICS engine analyze...Colorize MessagesCommentsCommon EngineCommon Engine SettingsCommon Settings...Connection closed by ICSContents ofContinue LaterCopy GameCopy Game ListCopy PositionCould not connect to host %s, port %sCould not create bookCould not open comm port %sCould not parse moveCould not write on tourney fileCouldn't parse move "%s" from ICSCrazyhouseCtrlCylinder *CymbalDDark Square Color:Dark-Squares Texture File:DeclineDefault BeepDefault Number of Games in Match (or Pairing):DeferDemoteDetect all MatesDevelopment NewsDingDirectories:Directory with Pieces Images:Disable own engine books by defaultDisplayed move is not currentDisplayed position is not currentDisplayed position is not current. Step forward to the correct position and try again.Divide entered times by 60DrawDraw after N Moves Total:Draw if Insufficient Mating MaterialDraw:Drop MenuDual Board for Background-Observed GameEGTB Cache Size (MB):EGTB Path:ERROR: Unknown user %s (in path %s) E_ngineEditEdit BookEdit CommentEdit Engine List...Edit GameEdit PositionEdit TagsEdit bookEdit commentEdit comment on %d.%s%sEdit comments:Edit tags / book / engine list:ElephantElo of strongest player at least:Elo of weakest player at least:Empty squareEnable Variation TreesEnd ChatEnd of gameEngineEngine #1Engine #1 Has Own BookEngine #1 Settings...Engine #2 / HumanEngine #2 Has Own Book Engine #2 Settings...Engine Command:Engine Directory:Engine OutputEngine SettingsEngine did not send setup for non-standard variantEngine has no optionsEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvalEvaluation GraphEvaluation graphExact position matchExitingFIRST TYPE DIRECTORY NAME HEREFRCFailed to invoke cmailFailed to open fileFailed to open file '%s' Failed to open indirection file %sFailed to parse board string: "%s"Failed to start %s chess program %s on %s: %s Falcon (10x8)Fatal ErrorFileFile type:File with Start Positions:Filename:Files:First Black Move:First White Move:First change an engine by editing the participants list of the Tournament Options dialogFirst you must specify an existing tourney file to cloneFischer castlingFlash MovesFlash Moves (0 = no flashing):Flash Rate (high = fast):Flip Pieces Shogi Style (Colored buttons restore default)Flip ViewFontsFonts...For concurrent playing of tourney with multiple XBoards:Force current variant with this engineForwardForward to EndGGame File with Opening Lines:Game ListGame List Tags...Game List...Game Number (-1 or -2 = Auto-Increment):Game list not loaded or emptyGame list:Game not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGame-list optionsGap in move listGeneralGeneral OptionsGeneral...Get Move ListGongGot end of file from keyboardGothic (10x8)Great Shatranj (10x8)Hash keys are differentHash-Table Size (MB):Headers in Engine Output WindowHelpHideHide ThinkingHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sHoldings Size:IICS Chat/Console:ICS ClientICS Input BoxICS InteractionICS OptionsICS input boxICS text menuICS...ICS/Chat ConsoleIllegal hint move "%s" from %s chess programIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move (rejected by ICS)Illegal move in ICS output: "%s"Illegal move: %d.%s%sInclude Number Tag in tourney PGNIncomplete \ escape in value for %sIncorrect moveIncrement or max (sec/move):Info XBoardInformationInitial time (min):Internal error: PARTICIPANTS set wrongInvalid pairing from pairing engineIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnJanus (10x8)Kibitz Text Colors:Kibitz:KingKnightKnightmateLaserLieutenantLight Square Color:Light-Squares Texture File:Line Gap (-1 = default for board size):LionLion roar:Load GameLoad Game OptionsLoad Game...Load New 1st Engine...Load New 2nd Engine...Load PositionLoad first engineLoad game file name?Load position file name?Load second engineLogo Size (0=off, requires restart):Lose:Machine BlackMachine MatchMachine WhiteMachine accepts your draw offerMachine offers a draw. Select Action / Draw to accept.MachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMail MoveMakrukMan XBoardMatch %s vs. %s: final score %d-%d-%dMaterial difference (optional stuff balanced)Material range (top board half optional)Maximum Number of CPUs per Engine:Message (above board):Minimum nr consecutive positions:Mismatch of STRIDE in nengineoutput.c Change and recompile!ModeMono ModeMove HistoryMove NowMove SoundMove history / Engine Output:Move listMove:Moves per session:Must not use GUI bookN-Move Rule:N-fold Repeats:NPSNegate Score of Engine #1Negate Score of Engine #2New ChatNew GameNew Shuffle GameNew Shuffle Game...New VariantNew Variant...New directoryNew name for current theme:Next PositionNickname (optional):No SoundNo castleNo default pieces installed! Select your own using '-pieceImageDirectory'.No engine %s is installedNo engine with the name you gave is installedNo game has been loaded yetNo game selectedNo games before year:No hint availableNo more games in this messageNo moves in gameNo pairing engine specifiedNo position has been loaded yetNo tag selectedNo unfinished gamesNo unfinished games No value provided for argument %sNormalNot enough participantsNoteNumber of Board Files:Number of Board Ranks:Number of tourney cycles (or Swiss rounds):OKOld Save Style (as opposed to PGN)On-line User GuideOne-Click MovingOnly bughouse is not available in viewer mode.Opening-Book Filename:OptionsOther Channel Text Colors:Other Text Colors:Own Games OnlyPGN Event Header:Paste GamePaste PositionPausePause between Match Games (msec):PawnPenaltyPeriodic UpdatesPeriodic Updates (in Analysis Mode)PhonePick new gamePlayPlay Move(s) of Clicked PV (Analysis)Polyglot book not validPolygot Directory:Ponder Next MovePopPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition Number (-1 or -2 = Auto-Increment):Position not found in filePremovePremove Highlight Color:Premove for BlackPremove for WhitePrev PositionPromotePull pawn backwards to under-promoteQueenQuiet PlayQuit Quit after gameRReading game file (%d)Ready to send mail Recompile to support this BOARD_RANKS or BOARD_FILES!Recompile with larger BOARD_RANKS or BOARD_FILES to support this sizeRegistered EnginesReload CMail MessageRematchReplace EngineRequest Text Colors:Request:ResignRetract MoveRevertRewind Index after this many Games (0 = never):RoarRookS-Shout Text Colors:S-Shout:Same materialSame material with exactly same Pawn chainSave Final Positions on File:Save GameSave Game OptionsSave Game...Save Games as BookSave Games on File:Save Out-of-Book Info in PGN Save PositionSave Score/Depth Info in PGNSave Selected GamesSave Settings NowSave Settings on ExitSave Tourney Games on:Save game file name?Save position file name?Saving gameSaving positionScanning through games (%d)Scores in Move ListSearch mode:Seconds per Move:Seek GraphSeek Text Colors:Seek:SeirawanSelect Engine:Select engine from list:Selectable themes:ShatranjShiftShout Text Colors:Shout:Show CoordinatesShow CoordsShow Target SquaresShown position is subsetSlapSocket support is not configured inSolved %d out of %d (%3.1f%%) Sound OptionsSound Program:Sounds Directory:Sounds...SpartanStart-position number:Starting %s chess programStarting chess programStartup failure on '%s'Sticky WindowsStill need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s Stop ExaminingStop ObservingSuicideSuperchessSwiss tourney finishedSync after cycleSync after roundTRY ANOTHER NAMETagsTell Text Colors:Tell:Test LegalityThat square is occupiedThe cmail message is not loaded. Use Reload CMail Message and make your move again.There is no game listThere is no pending offer on this moveThis only works in the GTK buildTime ControlTime Control...Time-Odds factors:Top-Level DialogsTournament OptionsTournament file: Tournament...Tourney participants:Tourney type (0 = round-robin, 1 = gauntlet):TrainingTraining mode offTraining mode onTraining mode requires a game fileTruncate GameTry-Out Sound:Two MachinesTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineType a moveUCIUSI/UCCI (uses specified -uxiAdapter)Unable to create font set for %s. Unfinished:Unknown initialMode %sUnknown variant name %sUnknown wild type %dUnrecognized argument %sUnrecognized boolean argument value %sUnusedUpgrade EngineUpload to ExamineUse Board TexturesUse GUI BookUse external piece bitmaps with their own colorsUse nickname in PGN player tags of engine-engine gamesUser FileUser WAV File:Variant %s not supported by %sVariant %s supported only in ICS modeVariants marked with * can only be played with legality testing off.Verify Engine Result ClaimsViewWB protocol v1 (do not wait for engine features)Wait until your turn, or select 'Move Now'.Wait until your turn.Waiting for access to save fileWaiting for first chess programWaiting for other game(s)Waiting for reply from opponent Waiting for second chess programWarlordWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite Piece Color:White to playWhite's flag fellWild castleWin / Loss Threshold:Win:Wood ThunkXBoard Home PageYou are not examining a gameYou are not observing a gameYou are playing BlackYou are playing WhiteYou can only change one engine at the timeYou can't revert while pausingYou cannot do this while you are playing or observingYou cannot replace an engine while it is engaged! Terminate its game first.You did not specify the engine executableYou have already mailed a move. Wait until a move arrives from your opponent. To resend the same move, type "cmail -remail -game %s" on the command line.You have edited the game history. Use Reload Same Game and make your move again.You have entered too many moves. Back up to the correct position and try again.You have not made a move yetYou must make your move before offering a drawYou must supply a tournament file, for storing the tourney progressYou restarted an already completed tourney. One more cycle will now be added to it. Games commence in 10 sec.Your opponent is not out of timeZoom factor in Evaluation Graph:_Action_Edit_File_Help_Mode_Options_Viewadd next moveatomicbad searchTime option %sbad timeControl option %sberolina *browseby nameby typechu shogi (12x12)classicalclearclosecommit changescould not load EGBB librarycourier (12x8)downe-Mail Bug Reportelven chess (10x10)engine namefactoryfailed writing PVfairyfind positionfirstfixed maxgive-awaygrand (10x10)incrementalinternal rcmd not implemented for Unixlosersmighty lionmovenarrownextnext pageno games matched your requestonly marked squares are legalor specify one below:pick fixedprevious pageprotocol version %d not supportedrandomizerights grantedrights revokedsave changessay Internal error; bad moveType %d (%d,%d-%d,%d)secondshogi (9x9)shuffletagsthresholdstwo kingsupvs.white pixel = 0x%lx, black pixel = 0x%lx wrong EGBB versionxiangqi (9x10)your opponent kibitzes: %sProject-Id-Version: xboard 4.9.0-pre2 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2016-04-06 00:21+0200 Last-Translator: Stéphane Aulery Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); X-Generator: Lokalize 1.5 Les bouttons * sélectionneront la police choisie ci-dessous : Seuils pour le filtrage des positions dans la liste de jeux : Options à utiliser en mode spectateur de jeu: Page suivante(avec le code)# aucun moteur n'est installé# Aucun thème n'est défini%d mouvements d’évitement joués%s (%d tour réversible)%s (%d tours réversibles)jeux %s - %d/%d (%d-%d-%d)%s ne supporte pas l'analyseLe moteur %s possède trop d'options %s dans le fichier de configuration Le programme %s quitte sur un match nul (%s)%s%s Copyright 1991 Digital Equipment Corporation Copyright d'améliorations 1992-2016 Free Software Foundation Copyright d'améliorations 2005 Alessandro Scotti %s est un logiciel gratuit et ne transporte AUCUNE GARANTIE; veuillez vous référer au fichier COPYING pour plus d'informations. La version GTK de cette version est expérimentale et instable Visitez XBoard à l'adresse : http://www.gnu.org/software/xboard/ Regardez les dernières fonctionnalités à l'adresse : http://www.gnu.org/software/xboard/whats_new.html Reportez les bogues par mail à l'adresse : %s : Mauvaise syntaxe %s pour boardSize %s : impossible d'accéder au dossier CHESSDIR :%s : impossible d'analyser les noms de couleurs; désactivation de la colorisation %s : impossible d'analyser la couleur de premier plan dans '%s' %s : aucune police ne correspond au motif %s %s: Trop peu de couleurs sont disponibles; tentative du mode monochrome %s : Nom %s de la boardSize non reconnu %s : couleur %s non reconnue (Le répertoire sera dérivé du chemin du moteur s'il est vide)*+, mais %s est-Tri-échecs<<<>>>ASEANAnnulerÀ propos de XBoardFichier WAV ci-dessusAnalyse absolue des scores AccepterAction Ajouter ce moteur à la liste AjournerArbitrer match nulArbitrer les matchs nuls évidents (retard de 3 mouvements)Arbitrer les jeux non-ICSArbitrer pour les NoirsArbitrer pour les BlancsDécisions...AlarmeTemps de l'alarme (msec) :Alarme :Tous les jeux du tournoi '%s' sont déjà terminés ou sont en coursToutes les variantes non supportées par le premier moteur (actuellement %s) sont désactivées.Presque toujours une Reine (voire une sous-promotion)Déjà à la fin de la partieAssocier aussi la position inversée verticalementAssocier aussi les couleurs inverséesAltToujours ReineMouvement ambigu dans la sortie ICS : "%s"Mouvement ambigu : %d.%s%sMode d'analyseLe mode Analyse n'est pas compatible avec le mode ICSLe mode Analyse nécessite un moteur d'échecsAnalyser le jeuLe mode AnalyzeFile nécessite un fichier de jeuTraînée animéeMouvement animéVitesse des animations (haut = lent) :AnnoterArchevêque Drapeau automatiqueRetournement de vue automatiqueCommentaire automatiqueCréation automatique du script de connexionAffichage automatique des commentaires Affichage automatique des étiquettesPop-up de saisi automatiqueKibitz automatiqueObservation automatiqueVitesse de jeu automatique des jeux chargés (0 = instantané, -1 = désactivé) :Échiquier au premier plan automatiqueRafraîchissement automatique du graphique de rechercheSauvegarder automatiquement les parties Temps de résolution moyen %4.2f s (durée totale %4.2f s) BRetour au débutObservation en second plan lors du jeuEn arrièreMauvaise position FEN dans le presse-papierPosition de FEN incorrecte dans le fichierFEN reçue du moteur incorrecte Mauvaise rechercheFichier de jeu incorrectValeur de l'entier %s incorrecteChemin de fichier incorrectMauvais fichier de tournoiFouNoirsCouleur du pion noir : Aux noirs de jouerLe drapeau des Noirs a chutéAveugleGaffeGraphique des gaffesOptions de l'échiquierTaille de l'échiquier (-1 = par défaut pour la variante sélectionnée) :Échiquier...BibliothèqueProfondeur de la bibliothèque (mouvements) :Défaut de bibliothèqueDiversité de la bibliothèque (0) face à la force (100) :Fichier de bibliothèque existant ! Essayez encore pour écraser.Les deux drapeaux ont chutéNaviguerBlitz à quatreÉchecs aléatoires Capablanca (10x8)Demander un drapeauImpossible de reculer davantageNe peut pas avancer plus loin Impossible d'obtenir un match sans programme d'échecsImpossible d'ouvrir "%s"Impossible d'ouvrir le fichier temporaireImpossible d'appeler le fichier de jeuImpossible d'appeler le fichier de positionAnnulerCanon Impossible de construire la liste de jeuCapablanca (10x8)Capitaine Klaxon de voitureCouleurs du texte Défi :Défi :Chancelier La modification du temps en cours de partie n’est pas implémentéeCouleurs du texte du Canal #1 :Canal 1 :Canal :Partenaire de tchat :Tchats : Vider l'échiquierCliquez sur le chronomètre pour nettoyer le plateauLe réajustement d'horloge n'est pas autorisé dans le mode drapeau automatiqueHorloges (nécessite de redémarrer) :Fermer le tournoiFermer l'analyse du moteur ICS...Messages colorésCommentairesMoteur communParamètres communs aux moteursParamètres communs…Connexion terminée par l'ICSSommaire de Poursuivre ultérieurement Copier la partieCopier la liste des partiesCopier la positionImpossible de se connecter à l'hôte %s, au port %sImpossible de créer la bibliothèqueImpossible d'ouvrir le port de communication %sImpossible d'analyser le mouvement Impossible d'écrire dans le fichier du tournoiImpossible d'analyser le mouvement "%s" de l'ICSMaison de fousCtrlCylindre *CymbaleDCouleur de la case foncée :Fichier de texture des cases noires :DéclinerBip par défautNombre de jeux par défaut dans le match (ou appariement ) :AjournerRétrograderDétecter tous les partenairesNouvelles de développement DingRépertoires : Répertoire contenant les images des pièces :Désactiver ses propres bibliothèques de moteurs par défautLe mouvement affiché n'est pas celui qui est courant La position affichée n'est pas la position couranteLa position affichée n'est pas la position courante. Avancez d'un pas vers la position correcte et veuillez réessayer. Divise par 60 le temps d’ouvertureMatch nulMatch nul après un total de N coups :Faire match nul si les moyens de mat sont insuffisantsMatch nul :Menu déroulantÉchiquier parallèle pour les jeux observés en second planTaille du cache EGTB (Mo) :Chemin EGTB : ERREUR : Utilisateur %s inconnu (dans le chemin %s) Mo_teurÉditerÉditer la bibliothèqueÉditer le commentaireÉditer la liste des moteurs...Éditer la partieÉditer la position Éditer les étiquettesÉditer la bibliothèqueÉdit un commentaireÉdit un commentaire sur %d.%s%sModifier des commentaires :Modifier les tags / livre / liste de moteurs :ÉléphantElo du meilleur joueur en dernier :Elo du joueur le plus faible en dernier :Case videAutoriser les arbres de variationTerminer le tchatFin de partieMoteurMoteur #1Le moteur #1 possède sa propre bibliothèqueRéglages du moteur # 1...Moteur #2 / HumainLe moteur #1 possède sa propre bibliothèqueRéglages du moteur # 2...Commande du moteur : Répertoire du moteur :Sortie du moteur Réglages du moteurLe moteur n'a pas fourni de d'installation pour une variante non-standard Le moteur n'a aucune optionSortie du moteurErreurErreur lors du rassemblement de la liste des mouvements : plateau superfluErreur lors du rassemblement de la liste des mouvements : enchevêtrement Erreur lors du rassemblement de la liste des mouvements : deux en-têtesErreur de lecture dans le programme d'échecs %s (%s)Erreur lors de la lecture de l'ICSErreur dans la lecture du clavierErreur lors de l'écriture dans le programme d'échecs %sErreur dans l'écriture vers ICSErreur lors de l'écriture dans le programme d'échecsErreur lors d'écriture sur l'écranErreur : le programme d'échec %s (%s) a quitté de façon inattendueÉvaluerGraphique des évaluationsGraphique des évaluationsCorrespondance de la position exacteEn cours de fermetureTOUT D'ABORD ENTREZ LE NOM DE REPERTOIRE ICI FRCÉchec lors de l'invocation de cmailÉchec lors de l'ouverture du fichierÉchec dans l'ouverture du fichier '%s' Impossible d'ouvrir le fichier des indirections %sÉchec lors de l'analyse la chaîne du plateau : "%s"Échec dans le démarrage du programme d'échec %s %s sur %s: %s Faucon (10x8)Erreur fataleFichierType du fichier : Fichier avec les positions de départ : Nom du fichier : Fichiers :Premier coup des Noirs :Premier coup des Blancs :Tout d'abord, changez le moteur d'échecs en éditant la liste des participants de la boîte de dialogue Options du TournoiTout d'abord, vous devez spécifier un fichier de tournoi existant à cloner Roque de FischerMouvements rapidesMouvements clignotants (0 = pas de clignotement) :Taux de clignotement (haut = rapide) :Retourner les pièces style Shogi (Les boutons colorés restaurent la valeur par défaut)Renverser la vuePolices de caractèresPolices...Pour les parties de tournoi simultanées avec plusieurs XBoards :Forcer la variante courante avec ce moteurEn avantAvancer vers la finGFichier de jeu avec ouverture de lignes :Liste des partiesÉtiquettes de la liste des parties...Liste des jeux...Nombre de jeux (-1 ou -2 = incrémentation automatique) : Liste de jeux non chargée ou videListe des parties :Partie non trouvée dans le fichierNuméro de la partie hors de la plageJeu trop long; augmentez MAX_MOVES et recompilezOptions de la liste de jeuIl y a un trou dans la liste des mouvements GénéralOptions généralesGénéral...Obtenir la liste des coupsGongFin de fichier obtenue du clavierGothique (10x8)Grand ChatrangLes clés de hashage sont différentesTaille du tableau de hashage (Mo) : En-têtes dans la fenêtre de sortie du moteurAideCacherCacher l'opinionCacher la pensée de l'HumainCouleur de surbrillance :Surligner la traînéeSurligner le dernier mouvement Surligner avec une flècheSurligner avec une flècheIndiceIndice : %sTaille de la zone de stockage :IICS / Console de tchat :Client ICSBoe de dialogue ICSInteraction ICSOptions de l'ICSBoîte de saisie ICSMenu texte de l'ICSICS...ICS / Console de tchatMouvement d'indice "%s" interdit dans le programme d'échecs %sMouvement interditMouvement "%s" interdit (rejeté par le programme d'échecs %s)Mouvement "%s" interdit de la machine %sMouvement non autorisé (rejeté par l'ICS)Mouvement interdit dans la sortie ICS : "%s"Mouvement interdit : %d.%s%sInclure l'identifiant numérique dans le tournoi PGNIncomplet \ fuite en valeur pour %sMouvement incorrectIncrémentation ou maximum (sec/mouvement) :Informations XBoardInformationTemps initial (min) :Erreur interne : réglage PARTICIPANTS erronéJumelage invalide de la part du moteur de jumelageAu tour des Noirs de jouerAu tour des Blancs de jouerC'est maintenant au tour des NoirsC'est maintenant au tour des BlancsC'est à vous de jouerJanus (10x8)Couleurs du texte Kibitz :Kibitz :Roi CavalierCompagnon du roiLaserLieutenantCouleur de la case claire :Fichier de texture des cases blanches :Ligne d'ouverture (-1 = taille de plateau par défaut) :LionRugissement de lion :Charger une partieCharger les options de jeuCharger le jeu...Charger un nouveau premier moteur... Charger un nouveau second moteur...Charger une positionCharger le premier moteurCharger le nom du fichier de jeu ?Charger la position du fichier de jeu ?Charger le second moteurTaille du logo (0 = pas de logo, redémarrage requis) :Perdre :Noirs MachineMatch de machinesBlancs MachineLa machine accepte votre proposition de match nulLa machine propose un match nul. Sélectionnez Action / Égalité pour accepter.Le mode MachineBlack n'est pas compatible avec le mode ICSLe mode MachineBlack nécessite un moteur d'échecsLe mode MachineWhite n'est pas compatible avec le mode ICSLe mode MachineWhite nécessite un moteur d'échecsEnvoyer par mail le mouvementMakrukManuel XBoardMatch %s contre %s : score final %d-%d-%dDifférence matérielle (équipement optionnel équilibré)Rangée du matériel (moitié supérieure de l'échiquier optionnelle)Nombre maximum de CPUs par moteur :Message (plateau ci-dessus) :Nombre minimum de positions consécutives :Mauvaise association de STRIDE dans nengineoutput.c Modifiez et recompilez !ModeMode soloHistorique des mouvements Bouger maintenantSon du mouvement Historique des coups / Sortie du moteur :Liste des mouvementsCoup :Mouvements par session :Vous ne devez pas utiliser la bibliothèque graphiqueRègle des N coups :N répétitions de position :NPSAnnuler le score du moteur #1Annuler le score du moteur #2Nouveau tchatNouveau jeuNouveau Jeu AléatoireNouveau jeu aléatoire...Nouvelle varianteNouvelle variante...Nouveau répertoireNouveau nom pour le thème courant :Position suivantePseudonyme (optionnel) :MuetSans roqueAucune pièce par défaut n'est installée ! Sélectionnez la vôtre en utilisant '-pieceImageDirectory'.Aucun moteur %s n'est installéAucun moteur portant le nom fourni n'est installéAucun jeu n'a encore été chargé Aucun jeu n'est sélectionnéAucun jeu précédant l'année : Aucun indice n'est disponiblePlus de jeux dans ce messageAucun mouvement dans le jeuAucun moteur de jumelage n'est spécifiéAucune position n'a encore été chargéeAucune étiquette n'est sélectionnéeAucune partie non terminéeAucun jeu non terminé Aucune valeur donnée pour l'argument %sNormalPas assez de participantsNoteNombre de colonnes : Nombre de rangées :Nombre de cycles du tournoi (ou rondes suisses) : OKAncien type de sauvegarde (contrairement au PGN)Guide Utilisateur en ligneDéplacement en un clicSeul le Blitz à quatre n'est pas disponible en mode spectateur.Nom de fichier de bibliothèque d'ouverture : Options Couleurs du texte Autre Canal :Couleurs du texte Autre :Uniquement mes parties En-têtes des résultats PGN :Coller le jeuColler la positionPausePause entre les jeux de match (msec) :PionPenaltyMises à jour périodiquesMises à jour périodiques (en mode d'analyse)TéléphoneChoisissez nouveau jeuJouer Mouvement(s) de jeu du PV sélectionné (Analyse)Bibliothèque d'ouverture invalideRépertoire multilingue : Réfléchir au mouvement suivantPopAfficher un message de sortieFaire apparaître les messages de sortieFaire apparaître les erreurs de mouvementNombre de positions (-1 ou -2 = incrémentation automatique) :Position non trouvée dans le fichierPré-coupCouleur de surbrillance de pré-coup :Pré-coup pour les NoirsPré-coup pour les BlancsPosition précédentePromouvoir Amenez le pion en arrière pour le sous-promouvoirReineJeu tranquilleQuitterQuitter à la fin du jeuRLecture du fichier de jeu (%d)Prêt à envoyer le mai Recompilez pour supporter ce BOARD_RANKS ou BOARD_FILES !Recompilez avec BOARD_RANKS ou BOARD_FILES plus grand pour supporter cette tailleMoteurs enregistrésRecharger le message CMailNouvelle partieRemplacer le moteurCouleurs du texte Requête : Requêtes :AbandonnerRétracter le mouvement RevenirRebobinage d'index après ce nombre de jeux (0 = jamais) :RugissementTourCouleurs du texte S-Crier:S-Cri : Même matérielMême matériel avec exactement la même structure de pionsSauvegarder les positions finales dans le fichier :Sauvegarder la partieSauvegarder les options de jeuSauvegarder le jeu...Sauvegarder les parties comme bibliothèquesSauvegarder les parties dans le fichier :Sauvegarder la donnée Sortie de la Bibliothèque dans le PGNSauvegarder la positionSauvegarder la donnée Score / Profondeur dans le PGNSauvegarder les parties sélectionnéesSauvegarder les réglages maintenantSauvegarder les réglages à la sortieSauvegarder les jeux de tournoi sur :Sauvegarder le nom du fichier de jeu ?Sauvegarder la position du fichier de jeu ?Sauvegarde du jeu en coursSauvegarde de la position en coursBalayage parmi les parties (%d)Scores dans la liste des mouvementsMode de recherche :Secondes par coup :Graphique de rechercheCouleurs du texte Recherche :Recherche :SeirawanSélectionnez le moteur :Sélectionnez un moteur dans la liste :Thèmes sélectionnables :ChatrangShiftCouleurs du texte Crier:Cri :Montrer les coordonnéesMontrer les coordonnéesMontrer les cases ciblesLa position montrée est un sous-ensembleClaquement Le support socket n'est pas configuré%d résolus sur %d (%3.1f%%) Options sonoresLecteur de son :Répertoire de sons :Sons...SpartanNuméro de la position de départ : Démarrage du programme d'échecs %sDémarrage du jeu d'échecsÉchec de démarrage sur '%s'Fenêtres collantesIl est encore nécessaire de faire un mouvement pour la partie %s Il est encore nécessaire de faire un mouvement pour la partie restante Il est encore nécessaire de faire des mouvements pour les %d parties restantes Il est encore nécessaire de faire des mouvements pour les deux parties restantes Il est encore nécessaire de faire des mouvements pour les parties %s Arrêter d'examinerArrêter d'observerQui perd gagneSuper échecLe tournoi à système suisse est terminéSynchronisation après le cycleSynchronisation après le tourESSAYEZ UN AUTRE NOMÉtiquettesCouleurs du texte Dire:Dire :Tester la légalitéLa case est occupéeLe message cmail n'est pas chargé. Utilisez Recharger le Message CMail et veuillez refaire votre mouvement.Il n'y a aucun jeu dans la listeIl n'y a aucune offre en suspens pour ce mouvement Fonctionne seulement avec la version GTKContrôle temporelContrôle du tempsFacteurs temps d'handicap : Dialogues de haut-niveauOptions du tournoiFichier de tournoi :Tournoi...Participants du tournoi : Type du tournoi (0 = toutes rondes, 1 = gantelet) : EntraînementMode d'entraînement éteint Mode d'entraînement démarréLe mode d'entraînement nécessite un fichier de jeuTronquer le jeuSon d'essai : Deux machinesLe mode multi-joueurs n'est pas compatible avec le mode ICSLe mode Versus requiert un moteur d'échecsEntrez un mouvement UCIUSI/UCCI (Utilise l’option -uxiAdapter)Incapable de créer l'ensemble des polices pour %s. Non terminé :initialMode %s inconnuNom divers %s inconnuType étranger %d inconnuArgument %s non reconnuValeur de l'argument booléen %s non reconnue Non utiliséMettre à niveau le moteurTélécharger pour examinerUtiliser les textures de l'échiquierUtiliser le livre graphiqueUtiliser des bitmaps de pièce externes avec leurs propres couleursUtiliser le pseudonyme dans les étiquettes du joueur en PGN des jeux moteur-moteurFichier utilisateurFichier WAV de l'utilisateur :La variante %s n'est pas supportée par %sLa variante %s n'est supporté qu'en mode ICSLes variantes marquées d'une * ne peuvent être jouées qu'avec la vérification de la légalité désactivée.Vérifier les déclarations du résultat du moteurVueProtocole WB v1 (ne vous attendez pas à des fonctionnalités du moteur)Veuillez attendre votre tour, ou sélectionnez 'Bouger maintenant'.Veuillez patienter jusqu'à votre tourEn attente de l'accès au fichier de sauvegardeEn attente du premier programme d'échecsEn attente d'autres partiesEn attente de la réponse de votre adversaire En attente du second programme d'échecsSeigneur de guerreAttention : Vous êtes encore en train d'examiner une partie Attention : Vous êtes encore en train d'observer une partie Attention : Vous êtes encore en train de jouer une partie Attention : le second moteur (%s) ne supporte pas cela !BlancsCouleur du pion blanc :Aux blancs de jouerLe drapeau des Blancs a chutéRoque furieuxSeuil de victoire / défaite :Gagner :Wood ThunkPage d'Accueil XBoardVous n'êtes pas en train d'étudier le jeuVous n'observez aucune partie Vous jouez les NoirsVous jouez les BlancsVous ne pouvez changer qu'un seul moteur à la fois Vous ne pouvez pas revenir en arrière lorsque vous êtes en pauseVous ne pouvez pas exécuter cette action en tant que joueur ou observateurVous ne pouvez pas remplacer un moteur pendant qu'il est engagé ! Veuillez d'abord clôturer le jeu associé. Vous n'avez pas précisé l'exécutable du moteur / moteur exécutable ?Vous avez déjà envoyé un mouvement par mail. Veuillez attendre que votre adversaire vous envoie un mouvement. Pour renvoyer le même mouvement, tapez "cmail -remail -game %s" dans la ligne de commande.Vous avez modifié l'historique de la partie. Utilisez Recharger la Même Partie et faites votre mouvement encore une fois. Vous avez entré trop de mouvements. Veuillez retourner à une position correcte and veuillez réessayer. Vous n'avez pas encore fait de mouvementVous devez faire votre mouvement avec de proposer un match nulVous devez fournir un fichier de tournoi, afin de conserver la progression du tournoiVous avez redémarré un tournoi déjà terminé. Une nouvelle manche va y être ajoutée. Les jeux débutent dans 10 secondes.Votre adversaire n'est pas en retardFacteur de zoom dans le graphique d'évaluation :A_ction É_dition_Fichier_Aide_Mode_Options _VueAjouter le prochain mouvementAtomiqueOption %s de searchTime incorrecte Option %s du timeControl incorrecte Berolina *NaviguerPar nomPar typeChu Shogi (12x12)ClassiqueNettoyerFermerEnregistrer les changementsImpossible de charger la bibliothèque EGBBCoursier (12x8)BasReporter un bogue par mail Échecs elfiques (10x10)Nom du moteurFabriqueÉcriture de PV échouéeFéeriqueTrouver la positionPremierMaximum fixéQui perd gagneGrand (10x10)Incrémentalrcmd interne non implémenté pour UnixQui perd gagneMat du lion Mouvement RestreindreSuivantPage suivanteAucun jeu n'a correspondu à votre requêteSeuls les cases marquées sont autoriséesou indiquez en un ci-dessous :Choix truquéPage précédenteVersion %d du protocole non supportéeRandomiserdroits accordésdroits révoquésSauvegarder les changementsUne erreur interne est survenue; moveType %d (%d,%d-%d,%d) incorrectDeuxièmeShogi (9x9)BrassageÉtiquettesSeuilsDeux roisHautcontrePixel blanc = 0x%lx, pixel noir = 0x%lx Version d'EGBB incorrecteXianggi (9x10)Votre adversaire vous conseille : %sxboard-4.9.1/po/es.gmo0000644000175000001440000014654512747544040011500 00000000000000 -(<;)<0e<$<< <<<<=/&=V=r===&==??4?)@<@5[@#@@7@A A AAA#A%A(A*A-A3A 9AFAUAnAuA|AAA'AAABB*B0BCB7JBKB*BB&C7CRC VC"cCC C)C%C C% D/D@DODnD wD DD DDDDD D E8ENE_EwE6EE E EEEF/FLF UFcFxFFFFF FF FF F F0 G=GFGKG _G$jG*GGGG G GG H)&HPH`HuHHHHHHHHH I I6IUI mIxI II II.II JJ1JCJ LJZJqJJ JJ JJ J%JKK7KLK!lK KK KKKKKK K.K$L*L1LBLSL XLeL#LL!LVL>MYM^M$xMM M'MM M$MN#N (N 2N?N SN ]N kN uN NNNNN!NN O+OBO KOWO ^OhOOO OOOO PP2PQP gPuP&{P!P&P(PQ+Q!GQiQ~QQ0QQQQR#R+RJRNReRyR"R"R.R S S"S 'S2S MSWS^SpSXS8ST %T1TPT@jT TTT8T&T$U,U;U=U [UeU wU(UU UUU/V6VHVYVaV qV |VVV VVVVVW$W )W7WPWaWtWWWWWWWW W WW X X &X4X;X,LX yX0X!XX XY!/Y#QYuYY Y YY&Y#YZ+Z>ZUZlZ |ZZZZZ ZZ ZZZ'Z%[ *[ 5[?[ Q[^[u[ [[[[[$[\ \ &\ 4\B\6b\-\)\-\)] I]S] Z]%e]-](]"]^!^;>^z^ ^ ^^ ^^ ^^^^ ___"_<_V___h_y_ __ __ ___ _J`S`-m``````aa;a[akaa!aaaaaa+b4b"7bZbmb.~bbbbbb c c&c5c!;c]cbcjc#{cc cc%ccc ddd1dEd,Wdddddd dd$de %e0e6eFeHe_e5seEeefff.fCfLf Sf`f/gfffff f*ff g g 2g?gRg'fg gggggg h!h :hFhVhrh hh hhhhhhh iii.i5i FiRifii#ii iii ijjj9jPjhj&wj!j*j(j&k;kJkYk aklkkkkkkk kkSkMl&cl l lllllm m)m-?mmmvmm"m mm m,m(n Z ^%k01</l|' Džۅ,(3'\' ]Ɔ$+D!p;·Ї# (#;'_Ј 7E\etL  7-IPwȊߊ ,6L%)*)&Pbk{ @7@'SV{ҍ ,+ ?K%b Ɏێ-B/a1)   -79*WD * 1 ;5\#%nܑ&Kry%’%ђ%.1`g n{ȓ ٓ,)V#_"ؔ #BSqЕF0K\3b-5Ė-(=+V( ×> #/G#_#"Ә)!)K8u əљ! "3cEZ+/'[@ ěқ ڛB(( Q_v,x$ܜ94+`s!9 +3 FQg'p"+ߞ+ 7=E+Z˟ߟ 4@V huC < J-j$0ԡ28 Jk &%ɢ2 M Yf)ѣHDJ[j ֤-/,\5t ˥&H":k;;<[m-8ħ75R+p=ڨ ߨ  ,IZb#wéǩ   :Tc u! Ѫ ܪU!>5`"#֫$<$Y$~#Ǭ#$ +L Qr8ɭ5ѭ#5:p!Ӯ  (&O Uc(}  ί6ٯ"3Kb$j$;ϰ' 3#>bz8 "CC]H% 6W^gvB³ɳ3ϳ 8 &Yڴ+"<4q%̵.0L^r#¶ض!+M cp-w Ʒڷ'2$Wu Ÿ#ܸ46G3~545Sew " ƺ &-4HfaȻ() 4F]w Ǽ0  >8[ 4ý5.A.E3t!Ӿ,- ZduEU\p$)a:U?Y)0' -!N(p8854J %)%Ou'#=_&)hge-6,dQ}$a.  !- OZ bmv K!=U fr  & +2 ;E'W(( -@7P  *:8&>yMKVKq6,B~ 9(F!<| e"pX=;>:#-(R_<0Vd#oYdN%v/Pb\A{8?4 +IL@awWq $jm)mJa%Wz"`Jr-SE{4&$m^IZnL ?IxK^QA,N.OB~.G22H3*}!X\> Z 97vb;kl'Ci \jkwRvV121 Hd| #sT~XF_+cFu uhU'x86uS[Az0]U[G3Eth<trBcDY7: `T rofLc/4/q) 7:fllp"_.ikD9(P'[zC%8C]s065&1wJ@iOE]p&!aR PyWHsM=?5`gZ O ^}-,n@D|SNefg>}Geoj+ =;)bh3xtU{Y5**yQ$nTQgM The * buttons will set the font to the one selected below: Thresholds for position filtering in game list: options to use in game-viewer mode: next page (with Zippy code)# no engines are installed# no themes are defined%d avoid-moves played %s (%d reversible ply)%s (%d reversible plies)%s - %d/%d games (%d-%d-%d)%s does not support analysis%s engine has too many options %s in settings file %s program exits in draw position (%s)%s%s Copyright 1991 Digital Equipment Corporation Enhancements Copyright 1992-2016 Free Software Foundation Enhancements Copyright 2005 Alessandro Scotti %s is free software and carries NO WARRANTY;see the file COPYING for more information. Visit XBoard on the web at: http://www.gnu.org/software/xboard/ Check out the newest features at: http://www.gnu.org/software/xboard/whats_new.html Report bugs via email at: %s: bad boardSize syntax %s %s: can't cd to CHESSDIR: %s: can't parse color names; disabling colorization %s: can't parse foreground color in '%s' %s: no fonts match pattern %s %s: too few colors available; trying monochrome mode %s: unrecognized boardSize name %s %s: unrecognized color %s (Directory will be derived from engine path when empty)*+, but %s is-3-checks<<<>>>ASEANAbortAbout XBoardAbove WAV FileAbsolute Analysis ScoresAcceptActionAdd this engine to the listAdjournAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate non-ICS GamesAdjudicate to BlackAdjudicate to WhiteAdjudications...AlarmAlarm Time (msec):Alarm:All games in tourney '%s' are already played or playingAll variants not supported by the first engine (currently %s) are disabled.Almost Always Queen (Detour Under-Promote)Already at end of gameAlso match left-right flipped positionAlso match reversed colorsAltAlways QueenAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis ModeAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyze GameAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnimation Speed (high = slow):AnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-Create Logon ScriptAuto-Display CommentAuto-Display TagsAuto-InputBox PopUpAuto-KibitzAuto-ObserveAuto-Play speed of loaded games (0 = instant, -1 = off):Auto-Raise BoardAuto-Refresh Seek GraphAuto-Save GamesAverage solving time %4.2f sec (total time %4.2f sec) BBack to StartBackground Observe while PlayingBackwardBad FEN position in clipboardBad FEN position in fileBad FEN received from engineBad SeekBad game fileBad integer value %sBad position fileBad tournament fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBlunderBlunder graphBoard OptionsBoard size ( -1 = default for selected variant):Board...BookBook Depth (moves):Book FaultBook Variety (0) vs. Strength (100):Book file exists! Try again for overwrite.Both flags fellBrowseBughouseCRC (10x8)Call FlagCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't open temp fileCan't seek on game fileCan't seek on position fileCancelCannonCannot build game listCapablanca (10x8)CaptainCar HornChallenge Text Colors:Challenge:ChancellorChanging time control during a game is not implementedChannel #1 Text Colors:Channel 1:Channel:Chat partner:Chats:Clear boardClick clock to clear boardClock adjustment not allowed in auto-flag modeClocks (requires restart):Clone TourneyClose ICS engine analyze...Colorize MessagesCommentsCommon EngineCommon Engine SettingsCommon Settings...Connection closed by ICSContents ofContinue LaterCopy GameCopy Game ListCopy PositionCould not connect to host %s, port %sCould not create bookCould not open comm port %sCould not parse moveCould not write on tourney fileCouldn't parse move "%s" from ICSCrazyhouseCtrlCylinder *CymbalDDark Square Color:Dark-Squares Texture File:DeclineDefault BeepDefault Number of Games in Match (or Pairing):DeferDemoteDetect all MatesDevelopment NewsDingDirectories:Directory with Pieces Images:Disable own engine books by defaultDisplayed move is not currentDisplayed position is not currentDisplayed position is not current. Step forward to the correct position and try again.Divide entered times by 60DrawDraw after N Moves Total:Draw if Insufficient Mating MaterialDraw:Drop MenuDual Board for Background-Observed GameEGTB Cache Size (MB):EGTB Path:ERROR: Unknown user %s (in path %s) E_ngineEditEdit BookEdit CommentEdit Engine List...Edit GameEdit PositionEdit TagsEdit bookEdit commentEdit comment on %d.%s%sEdit comments:Edit tags / book / engine list:ElephantElo of strongest player at least:Elo of weakest player at least:Empty squareEnable Variation TreesEnd ChatEnd of gameEngineEngine #1Engine #1 Has Own BookEngine #1 Settings...Engine #2 / HumanEngine #2 Has Own Book Engine #2 Settings...Engine Command:Engine Directory:Engine OutputEngine SettingsEngine did not send setup for non-standard variantEngine has no optionsEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvalEvaluation GraphEvaluation graphExact position matchExitingFIRST TYPE DIRECTORY NAME HEREFRCFailed to invoke cmailFailed to open fileFailed to open file '%s' Failed to open indirection file %sFailed to parse board string: "%s"Failed to start %s chess program %s on %s: %s Falcon (10x8)Fatal ErrorFileFile type:File with Start Positions:Filename:Files:First Black Move:First White Move:First change an engine by editing the participants list of the Tournament Options dialogFirst you must specify an existing tourney file to cloneFischer castlingFlash MovesFlash Moves (0 = no flashing):Flash Rate (high = fast):Flip Pieces Shogi Style (Colored buttons restore default)Flip ViewFontsFonts...For concurrent playing of tourney with multiple XBoards:Force current variant with this engineForwardForward to EndGGame File with Opening Lines:Game ListGame List Tags...Game List...Game Number (-1 or -2 = Auto-Increment):Game list not loaded or emptyGame list:Game not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGame-list optionsGap in move listGeneralGeneral OptionsGeneral...Get Move ListGongGot end of file from keyboardGothic (10x8)Great Shatranj (10x8)Hash keys are differentHash-Table Size (MB):Headers in Engine Output WindowHelpHideHide ThinkingHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sHoldings Size:IICS Chat/Console:ICS ClientICS Input BoxICS InteractionICS OptionsICS input boxICS text menuICS...ICS/Chat ConsoleIllegal hint move "%s" from %s chess programIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move (rejected by ICS)Illegal move in ICS output: "%s"Illegal move: %d.%s%sInclude Number Tag in tourney PGNIncomplete \ escape in value for %sIncorrect moveIncrement or max (sec/move):Info XBoardInformationInitial time (min):Internal error: PARTICIPANTS set wrongInvalid pairing from pairing engineIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnJanus (10x8)Kibitz Text Colors:Kibitz:KingKnightKnightmateLaserLieutenantLight Square Color:Light-Squares Texture File:Line Gap (-1 = default for board size):LionLion roar:Load GameLoad Game OptionsLoad Game...Load New 1st Engine...Load New 2nd Engine...Load PositionLoad first engineLoad game file name?Load position file name?Load second engineLogo Size (0=off, requires restart):Lose:Machine BlackMachine MatchMachine WhiteMachine accepts your draw offerMachine offers a draw. Select Action / Draw to accept.MachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMail MoveMakrukMan XBoardMatch %s vs. %s: final score %d-%d-%dMaterial difference (optional stuff balanced)Material range (top board half optional)Maximum Number of CPUs per Engine:Message (above board):Minimum nr consecutive positions:Mismatch of STRIDE in nengineoutput.c Change and recompile!ModeMono ModeMove HistoryMove NowMove SoundMove history / Engine Output:Move listMove:Moves per session:Must not use GUI bookN-Move Rule:N-fold Repeats:NPSNegate Score of Engine #1Negate Score of Engine #2New ChatNew GameNew Shuffle GameNew Shuffle Game...New VariantNew Variant...New directoryNew name for current theme:Next PositionNickname (optional):No SoundNo castleNo default pieces installed! Select your own using '-pieceImageDirectory'.No engine %s is installedNo engine with the name you gave is installedNo game has been loaded yetNo game selectedNo games before year:No hint availableNo more games in this messageNo moves in gameNo pairing engine specifiedNo position has been loaded yetNo tag selectedNo unfinished gamesNo unfinished games No value provided for argument %sNormalNot enough participantsNoteNumber of Board Files:Number of Board Ranks:Number of tourney cycles (or Swiss rounds):OKOld Save Style (as opposed to PGN)On-line User GuideOne-Click MovingOnly bughouse is not available in viewer mode.Opening-Book Filename:OptionsOther Channel Text Colors:Other Text Colors:Own Games OnlyPGN Event Header:Paste GamePaste PositionPausePause between Match Games (msec):PawnPenaltyPeriodic UpdatesPeriodic Updates (in Analysis Mode)PhonePick new gamePlayPlay Move(s) of Clicked PV (Analysis)Polyglot book not validPolygot Directory:Ponder Next MovePopPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition Number (-1 or -2 = Auto-Increment):Position not found in filePremovePremove Highlight Color:Premove for BlackPremove for WhitePrev PositionPromotePull pawn backwards to under-promoteQueenQuiet PlayQuit Quit after gameRReading game file (%d)Ready to send mail Recompile to support this BOARD_RANKS or BOARD_FILES!Recompile with larger BOARD_RANKS or BOARD_FILES to support this sizeRegistered EnginesReload CMail MessageRematchReplace EngineRequest Text Colors:Request:ResignRetract MoveRevertRewind Index after this many Games (0 = never):RoarRookS-Shout Text Colors:S-Shout:Same materialSame material with exactly same Pawn chainSave Final Positions on File:Save GameSave Game OptionsSave Game...Save Games as BookSave Games on File:Save Out-of-Book Info in PGN Save PositionSave Score/Depth Info in PGNSave Selected GamesSave Settings NowSave Settings on ExitSave Tourney Games on:Save game file name?Save position file name?Saving gameSaving positionScanning through games (%d)Scores in Move ListSearch mode:Seconds per Move:Seek GraphSeek Text Colors:Seek:SeirawanSelect Engine:Select engine from list:Selectable themes:ShatranjShiftShout Text Colors:Shout:Show CoordinatesShow CoordsShow Target SquaresShown position is subsetSlapSocket support is not configured inSolved %d out of %d (%3.1f%%) Sound OptionsSound Program:Sounds Directory:Sounds...SpartanStart-position number:Starting %s chess programStarting chess programStartup failure on '%s'Sticky WindowsStill need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s Stop ExaminingStop ObservingSuicideSuperchessSwiss tourney finishedSync after cycleSync after roundTRY ANOTHER NAMETagsTell Text Colors:Tell:Test LegalityThat square is occupiedThe cmail message is not loaded. Use Reload CMail Message and make your move again.There is no game listThere is no pending offer on this moveThis only works in the GTK buildTime ControlTime Control...Time-Odds factors:Top-Level DialogsTournament OptionsTournament file: Tournament...Tourney participants:Tourney type (0 = round-robin, 1 = gauntlet):TrainingTraining mode offTraining mode onTraining mode requires a game fileTruncate GameTry-Out Sound:Two MachinesTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineType a moveUCIUSI/UCCI (uses specified -uxiAdapter)Unable to create font set for %s. Unfinished:Unknown initialMode %sUnknown variant name %sUnknown wild type %dUnrecognized argument %sUnrecognized boolean argument value %sUnusedUpgrade EngineUpload to ExamineUse Board TexturesUse GUI BookUse external piece bitmaps with their own colorsUse nickname in PGN player tags of engine-engine gamesUser FileUser WAV File:Variant %s not supported by %sVariant %s supported only in ICS modeVariants marked with * can only be played with legality testing off.Verify Engine Result ClaimsViewWB protocol v1 (do not wait for engine features)Wait until your turn, or select 'Move Now'.Wait until your turn.Waiting for access to save fileWaiting for first chess programWaiting for other game(s)Waiting for reply from opponent Waiting for second chess programWarlordWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite Piece Color:White to playWhite's flag fellWild castleWin / Loss Threshold:Win:Wood ThunkXBoard Home PageYou are not examining a gameYou are not observing a gameYou are playing BlackYou are playing WhiteYou can only change one engine at the timeYou can't revert while pausingYou cannot do this while you are playing or observingYou cannot replace an engine while it is engaged! Terminate its game first.You did not specify the engine executableYou have already mailed a move. Wait until a move arrives from your opponent. To resend the same move, type "cmail -remail -game %s" on the command line.You have edited the game history. Use Reload Same Game and make your move again.You have entered too many moves. Back up to the correct position and try again.You have not made a move yetYou must make your move before offering a drawYou must supply a tournament file, for storing the tourney progressYou restarted an already completed tourney. One more cycle will now be added to it. Games commence in 10 sec.Your opponent is not out of timeZoom factor in Evaluation Graph:_Action_Edit_File_Help_Mode_Options_Viewadd next moveatomicbad searchTime option %sbad timeControl option %sberolina *browseby nameby typechu shogi (12x12)classicalclearclosecommit changescould not load EGBB librarycourier (12x8)downe-Mail Bug Reportelven chess (10x10)engine namefactoryfailed writing PVfairyfind positionfirstfixed maxgive-awaygrand (10x10)incrementalinternal rcmd not implemented for Unixlosersmighty lionmovenarrownextnext pageno games matched your requestonly marked squares are legalor specify one below:pick fixedprevious pageprotocol version %d not supportedrandomizerights grantedrights revokedsave changessay Internal error; bad moveType %d (%d,%d-%d,%d)secondshogi (9x9)shuffletagsthresholdstwo kingsupvs.white pixel = 0x%lx, black pixel = 0x%lx wrong EGBB versionxiangqi (9x10)your opponent kibitzes: %sProject-Id-Version: GNU xboard 4.9.0-pre2 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2016-04-10 11:05+0200 Last-Translator: Antonio Ceballos Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Los botones * seleccionarán la fuente abajo indicada: Umbral para filtrar posiciones en la lista de partidas: opciones para el modo de visualización de partidas: siguiente página (con el código de Zippy)# no hay ningún motor instalado# no hay ningún tema definido%d movimientos de evasión jugados %s (%d media-jugada reversible)%s (%d medias-jugadas reversibles)%s - %d/%d partidas (%d-%d-%d)%s no admite análisisEl motor %s tiene demasiadas opciones %s en el fichero de configuración El programa %s termina en posición de tablas (%s)%s%s Copyright 1991 Digital Equipment Corporation Copyright de las mejoras 1992-2014 Free Software Foundation Copyright de las mejoras 2005 Alessandro Scotti %s es software libre SIN NINGUNA GARANTÍA; ver el fichero COPYING para más información. Visite XBoard en la web en: http://www.gnu.org/software/xboard/ Obtenga las características más recientes en: http://www.gnu.org/software/xboard/whats_new.html Informe de errores por correo a: %s: sintaxis de boardSize incorrecta %s %s: no se puede ir a la carpeta CHESSDIR: %s: no se puede analizar los nombres de los colores; desactivando colorido %s: no se puede analizar el color de primer plano en '%s' %s: ninguna fuente concuerda con el patrón %s %s: insuficientes colores disponibles: probando modo monocromo %s: nombre de boardSize no reconocido %s %s: color no reconocido %s (La carpeta se derivará de la del motor cuando esté vacía)*+, pero %s es-tres jaques<<<>>>ASEANAbortarAcerca de XBoardFichero WAV de arribaPuntuaciones absolutas del análisisAceptarAcciónAñadir este motor a la listaAplazarAdjudicar tablasAdjudicar tablas triviales (regla de las tres jugadas)Adjudicar partidas no ICSAdjudicar a negrasAdjudicar a blancasAdjudicaciones...AlarmaTiempo de la alarma (ms):Alarma:Ya se han disputado o se están disputando todas las partidas del torneo '%s'Todas las variantes no disponibles en el primer motor (actualmente %s) están desactivas.Casi siempre dama (rodeo para subcoronar)Ya se encuentra al final de la partidaTambién posición volteada izquierda-derechaTambién colores invertidosAltSiempre damaJugada ambigua en la salida ICS: "%s"Jugada ambigua: %d.%s%sModo de análisisEl modo de análisis no funciona con el modo ICSEl modo de análisis requiere un motor de ajedrezAnalizar partidaEl modo análisis de archivo requiere un archivo de partidasAnimar arrastreAnimar movimientoVelocidad de animación (high = lenta):AnotarArzobispoBandera automáticaCambio de lado automáticoAuto-comentarioCreación de fichero de registro automáticaComentario de visualización automáticaEtiquetas de visualización automáticaVentana emergente de buzón automáticaAuto KibitzAuto-ObservarVelocidad de juego automático de las partidas cargadas (0 = instantánea, -1 = desactivada):Tablero al frente (automático)Grafo de búsqueda con refresco automáticoGuardar partidas automáticamenteTiempo medio de resolución %4.2f s (tiempo total %4.2f s) AVolver a empezarSeguir observando mientras se juegaHacia atrásPosición FEN incorrecta en portapapelesPosición FEN incorrecta en archivoEl FEN recibido del motor es incorrectoBúsqueda incorrectaarchivo de partidas incorrectoValor entero malo %sarchivo de posición incorrectoArchivo de torneos incorrectoAlfilNegrasColor de las piezas negras:Negras jueganLa bandera negra cayóA ciegasFallo garrafalGráfica de fallos garrafalesOpciones de tableroTamaño del tablero ( -1 = el predeterminado para la variante seleccionada):Tablero...Repertorio de aperturasProfundidad del libro (jugadas):Error en el libroVariedad del libro (0) frente a fuerza (100):¡Ya existe el fichero del libro! Inténtelo de nuevo si quiere sobreescribirlo.Ambas banderas cayeronNavegarPasapiezasCRC (10x8)Pedir la banderaYa no se puede ir más atrásYa no se puede ir más adelanteNo se puede tener una partida sin programas de ajedrezNo se puede abrir "%s"No se puede abrir el fichero temporalNo se puede buscar en archivo de partidasNo se puede buscar en archivo de aperturasCancelarCañónNo se pudo construir la lista de partidasCapablanca (10x8)CapitánBocina de cocheColores del texto de desafíos:Desafío:CancillerNo se puede cambiar el control de tiempo en medio de una partidaColores del texto del canal 1:Canal 1:Canal:Charlar con compañero:Charlas:Limpiar el tableroPinche el reloj para limpiar el tableroEl ajuste del reloj no está permitido en el modo de advertencia de tiempo automáticoRelojes (requiere reiniciar):Clonar torneoCerrar el modo de análisis del motor ICS...Mensajes coloreadosComentariosGeneral de los motoresConfiguración general de los motoresConfiguración general...Conexión cerrada por ICSContenido deSeguir más tardeCopiar partidaCopiar lista de partidasCopiar posiciónNo se pudo conectar al servidor %s, puerta %sNo se ha podido crear el libroNo se pudo abrir la puerta de comunicaciones %sNo se pudo analizar la jugadaNo se ha podido escribir en el fichero de torneosNo se pudo analizar la jugada "%s" de ICS«Crazyhouse»CtrlCilíndrico *PlatillosOColor de los escaques oscurosFichero de texturas para escaques oscuros:DeclinarBip predeterminadoNúmero predeterminado de partidas del encuentro (o emparejamiento):DiferirDegradarDetectar todos los matesNoticias sobre el desarrolloTimbreCarpetas:Carpeta con imágenes de piezas:Inicialmente, desactivar los libros propios del motorLa jugada ilustrada no es la actualLa posición mostrada no es la actualLa posición que se está mostrando no es la actual. Avance hasta la posición correcta e inténtelo de nuevo.Divide por 60 los tiempos introducidosTablasAdjudicar mate después de:Tablas si el material es insuficienteTablasMenú «drop»Tablero dual para partidas observadasTamaño de la caché de la EGTB (MB):Carpeta de la EGTB:ERROR: usuario desconocido %s (en carpeta %s) Mo_torEditarEditar libroEditar comentarioEditar lista de motores...Editar partidaEditar posiciónEditar etiquetasEditar libroEditar comentarioEditar comentario en %d.%s%sEditar comentarios:Editar etiquetas / libro / lista de motores:ElefanteElo del mejor jugador como mínimo:Elo del peor jugador como mínimo:Vaciar el escaqueActivar árboles de variacionesFin de la charlaFin del juegoMotorMotor 1El motor 1 tiene libro propioConfiguración del motor #1...Motor 2 / HumanoEl motor 2 tiene libro propioConfiguración del motor #2...Instrucción para el motor:Carpeta del motor:Salida del motorConfiguración del motorEl motor no ha enviado la configuración para la variante no estándarEl motor no tiene opcionesSalida del motorErrorError al recolectar lista de jugadas: tablero extraError al recolectar lista de jugadas: anidadoError al recolectar lista de jugadas: dos encabezadosError al leer del %s programa de ajedrez (%s)Error al leer de ICSError al leer el tecladoError al escribir al %s programa de ajedrezError al escribir a ICSError al escribir al programa de ajedrezError al escribir en la pantallaError: el %s programa de ajedrez (%s) terminó inesperadamenteEvaluaciónGráfica de evaluaciónGráfica de evaluaciónCoincidencia exacta de la posiciónSaliendoNOMBRE DEL DIRECTORIO PRIMERO AQUÍFRC (ajedrez aleatorio de Fischer)Fallo al invocar cmailFallo al abrir ficheroFallo al abrir el fichero '%s' Fallo al abrir fichero de indirección %sFallo al analizar texto del tablero: "%s"Fallo al iniciar el programa de ajedrez %s %s en %s: %s Halcón (10x8)Error fatalArchivoTipo de fichero:Fichero con posiciones iniciales:Nombre del fichero:Archivos:1er. mov. negras1er. mov. blancasCambie primero un motor editando la lista de participantes en el diálogo de las Opciones de TorneoEn primer lugar, debe usted especificar un fichero de torneos que exista, para ser clonadoEnroque de FischerDestello en las jugadasDestello en las jugadas (0 = sin destello):Velocidad de destello (high = rápido):Voltear piezas estilo Shogi (Botones de colores predefinidos)Voltear vistaFuentesFuentes...Para jugar en torneos de forma concurrente con múltiples XBoards:Forzar la variante actual con este motorHacia delanteAvanzar hasta el finalVFichero de partidas con líneas de apertura:Lista de partidasEtiquetas de la lista de partidas...Lista de partidas...Número de la partida (-1 o -2 = incremento automático):La lista de partidas no se ha cargado o está vacíaLista de partidas:Partida no hallada en archivoNúmero de partida fuera de rangoPartida demasiado larga; incremente MAX_MOVES y recompileOpciones de la lista de partidasHueco en la lista de jugadasGeneralOpciones generalesGeneral...Leer lista de jugadas«Gong»Se obtuvo del teclado un fin de archivoGótico (10x8)Gran shatranj (10x8)Las claves «hash» son diferentesTamaño de la tabla de transposición (MB):Cabeceras en la ventana de salida del motorAyudaOcultarOcultar cogitacionesOcultar cogitaciones al jugar contra humanoColor de escaque iluminadoIluminar arrastreIluminar última jugadaIluminar con flechaIluminar con flechaPistaSugerencia: %sTamaño tenencias:CConsola de ICS/Charla:Cliente ICSCuatro de entrada ICSInteracciones ICSOpciones ICSCuadro de entrada ICSMenú de texto ICSICS...Consola de ICS/CharlaLa jugada sugerida "%s" por el programa de ajedrez %s no es válidaJugada ilegalJugada ilegal "%s" (rechazada por el programa de ajedrez %s)Jugada ilegal "%s" del %s motorLa jugada no es válida (la ha rechazado ICS)Jugada ilegal en la salida ICS: "%s"Jugada ilegal: %d.%s%sIncluir etiqueta de número en el PGN del torneoCarácter de escape \ incompleto en el valor de %sJugada incorrectaIncremento o máximo (s(jugada):Información XBoardInformaciónTiempo inicial (min):Error interno: PARTICIPANTS incorrectoEl bando del otro motor no es válidoTurno de las negrasTurno de las blancasNo es turno de las negrasNo es turno de las blancasEs su turnoJanus (10x8)Colores del texto kibitz:Kibitz:ReyCaballoMate al caballoLáserTenienteColor de los escaques clarosFichero de texturas para escaques claros:Hueco de la línea (-1 = el predeterminado para el tamaño del tablero):LeónRugido de león:Cargar partidaOpciones al leer partidaCargar partida...Cargar un nuevo primer motor...Cargar un nuevo segundo motor...Cargar posiciónCargar el primer motor¿Nombre del fichero de partidas para cargar?¿Nombre del fichero de posiciones para cargar?Cargar el segundo motorTamaño del logo (0=desactivado, requiere reiniciar):Derrotas:El programa con negrasTorneo de dos programasEl programa con blancasLa máquina acepta su oferta de tablasLa máquina ofrece tablas. Seleccione Action / Draw si está de acuerdo.El modo de máquina con negras no funciona con el modo ICSEl modo de máquina con negras requiere un motor de ajedrezEl modo de máquina con blancas no funciona con el modo ICSEl modo de máquina con blancas requiere un motor de ajedrezJugada por correo«Makruk» (tailandés)Manual de XBoardEncuentro %s - %s: puntuación final %d-%d-%dDiferencia de material (situación equilibrada opcional)Rango de material (mitad superior del tablero opcional)Número max. CPUs por motor:Mensaje (encima del tablero):Número mínimo de posiciones consecutivas:STRIDE desajustado en nengineoutput.c ¡Cambiar y recompilar!ModoModo monoHistorial de jugadasMover ahoraSonido en jugadasHistorial de movimientos / Salida del motor:Lista de jugadasJugada:Jugadas por sesión:No debe utilizar el libro de la GUIRegla de las N jugadas:N repeticiones:NPSNegar puntuación del motor #1Negar puntuación del motor #2Nueva CharlaNueva partidaNueva partida revuelta...Nueva partida revuelta...Nueva varianteNueva variante...Nueva carpetaNuevo nombre para el tema actual:Siguiente posiciónSobrenombre (opcional):Sin sonidoSin enroqueNo hay piezas predeterminadas instaladas Seleccione su propio '-pieceImageDirectory'.No hay ningún motor %s instaladoNo hay ningún motor instalado con el nombre indicadoNinguna partida se ha cargado aúnNinguna partida seleccionadaNúmero de partidas antes del año:No hay sugerencia disponibleNo hay más partidas en este mensajeNinguna jugada en la partidaiNo se ha especificado el otro motorNinguna posición se ha cargado aúnNúmero de la etiqueta seleccionadaNo hay partidas sin terminarNo hay juegos sin terminar No se ha dado valor al argumento %sNormalNo hay suficientes participantesNotaNúmero de columnas del tablero:Número de filas del tablero:Número de vueltas del torneo (o rondas de torneo suizo)AceptarEstilo de guardado antiguo (en contraposición a PGN)Guía del usuario en líneaMoviemento de un clickSolo pasapiezas no está disponible en el modo visor.Fichero del libro de aperturas:OpcionesColores del texto del otro canal:Colores del otro texto:Solo partidas propiasCabecera PGN del evento:Pegar partidaPegar posiciónPausaPausa entre partidas del encuentro (ms):PeónPenalizaciónActualización periódicaActualización periódica (en análisis)TeléfonoSeleccionar una nueva partidaReproducirRealizar la(s) jugada(s) de la PV escogida (análisis)El libro de Polyglot no es válidoDirectorio de Ployglot:Prever siguente jugada«Pop»Mensaje de salida en venta emergenteVentana emergente al salirVentana emergente si error en jugadaNúmero de la posición (-1 o -2 = incremento automático):No se halló la posición en el archivoPre-jugadaColor de iluminación de prejugada:Prejugada de las negrasPrejugada de las blancasPosición previaCoronarRetrasar el peón a la posición previa a la coronaciónDamaJugar en silencioSalir Después de la partida salirRLeyendo fichero de partidas (%d)Listo para enviar correo ¡Hace falta recompilar para disponer de BOARD_RANKS o BOARD_FILES!Recompilar con BOARD_RANKS o BOARD_FILES mayor para admitir este tamañoMotores registradosVolver a cargar mensaje CMailRevanchaReemplazar motorColores del texto de peticiones:Pedir:RendirseRevocar jugadaRevertirRebobinar Índice después de este número de Partidas (0 = nunca)RugidoTorreColores «S» del texto que se expresa en voz alta:En voz alta SMismo materialMismo material con exactamente la misma cadena de peonesGuardar en fichero posiciones finales:Guardar partidaOpciones al salvar partidaGuardar partida...Guardar partidas como libroGuardar partidas en ficheroGuardar información fuera-de-libro en PGN Guardar posiciónGuardar la información de puntuación/profundidad en el PGNGuardar partidas seleccionadasGuardar config. ahoraGuardar config. al salir del programaGuardar partidas del torneo en:¿Nombre del fichero de partidas para guardar?¿Nombre del fichero de posiciones para guardar?Guardando partidaGuardando posiciónExplorando partidas (%d)Puntuaciones de la lista de jugadasModo de búsqueda:Segundos por jugadas:Buscar gráficaColores del texto de búsqueda:Buscar:SeirawanSeleccione Motor:Seleccionar un motor de la lista:Temas seleccionables:«Shatranj»MayúsColores del texto que se expresa en voz alta:En voz alta:Mostrar coordenadasMostrar coordenadasMostrar casillas objetivoLa posición mostrada es un subconjuntoPalmadaLa capacidad de «socket» no está configurada enResueltos %d de %d (%3.1f%%) Opciones de sonidoPrograma de sonido:Carpeta de sonidos:Sonidos...espartanoNúm. de pos. inicial:Iniciando el programa de ajedrez %sIniciando programa de ajedrezFallo al iniciar '%s'Ventanas adhesivasTodavía necesita hacer una jugada para la partida %s Todavía necesita hacer una jugada para la partida Todavía necesita hacer jugadas para las %d partidas Todavía necesita hacer jugadas para ambas partidas Todavía necesita hacer jugadas para las partidas %s Dejar de examinarDejar de observarSuicidaSuperajedrezTorneo suizo terminadoSincronizar después de una vueltaSincronizar después de la rondaINTENTAR OTRO NOMBREEtiquetasColores del texto de hablar con otros:Decir:Verificar legalidadEse cuadro está ocupadoEl mensaje «cmail» no está cargado. Use «Reload CMail Message» y vuelva a realizar un movimiento.No hay lista de partidasNo hay oferta pendiente para esta jugadaEsto solo funciona en el «build» de GTKControl de tiempoControles de tiempo...Factores de tiempo extra:Diálogos de alto nivelOpciones de TorneoFichero de torneos: Torneo...Participantes del torneo:Tipo de torneo (0 = liga, 1 = uno contra todos):EntrenamientoModo de entrenamiento apagadoModo de entrenamiento activoEl modo de entrenamiento requiere un archivo de partidasTruncar partidaSonido de pruebaDos programasEl modo de dos máquinas no funciona con el modo ICSEl modo de dos máquinas requiere un motor de ajedrezTeclear una jugadaUCIUSI/UCCI (utiliza el -uxiAdapter especificado)No se ha podido crear conjunto de fuentes para %s. No terminadas:Modo inicial desconocido %sNombre de variante desconocido %sTipo «wild» %d desconocidoArgumento no reconocido %sValor del argumento lógico %s no reconocidoNo se usaActualizar motorEnviar para examinarUtilizar tablero con texturasUsar el libro de la GUIUtilizar «bitmaps» externos para las piezas con sus propios coloresUsar el sobrenombre de las etiquetas de jugadores del PGN en las partidas motor-motorFichero del usuarioFichero WAV del usuario:La variante %s no es admitida por %sLa variante %s solo se admite en modo ICSLas variantes señaladas con * solo pueden jugarse con la comprobación de legalidad desactivada.Verificar avisos del motorVerProtocolo WB v1 (no esperar por las características del motor)Espere su turno. o seleccione 'Move Now'.Espero su turno.Esperando a tener acceso para guardar el ficheroEsperando al primer programa de ajedrezEsperando por otra(s) partida(s)Esperando respuesta del oponente Esperando al segundo programa de ajedrezCaudilloAdvertencia: Usted todavía está examinando una partidaAdvertencia: Usted todavía está observando una partidaAdvertencia: Usted todavía está jugando una partidaAdvertencia: ¡el segundo motor (%s) no admite esto!BlancasColor de las piezas blancas:Blancas jueganLa bandera blanca cayóEnroque salvajeLímite para adjudicar juego:Victorias:«Wood thunk»Página web de XBoardUsted no está examinando una partidaUsted no está observando una partidaUsted juega negrasUsted juega blancasSolo se puede cambiar un motor a la vezNo puede revertir si está en pausaNo se puede hacer esto mientras se está jugando u observando¡No se puede reemplazar un motor mientras está ocupado! Termine primero la partida del motor.No se especificó el ejecutable del motorYa ha enviado una jugada por correo. Espere hasta recibir una jugada de su adversario. Para volver a enviar la misma jugada, teclee "cmail -remail -game %s" en la línea de órdenes.Usted ha editado el historial de la partida. Use «Reload Same Game» y vuelva a realizar un movimiento.Usted ha introducido demasiadas jugadas. Retroceda hasta la posición correcta e inténtelo de nuevo.Usted no ha realizado todavía ninguna jugadaDebe hacer su jugada antes de ofrecer tablasHay que proporcionar un fichero de torneos, para almacenar el progreso del torneoSe ha reiniciado un torneo que ya había concluido. Se le va a añadir un nuevo ciclo. Las partidas comienzan dentro de 10 s.Su oponente no está fuera de tiempoFactor de «zoom» en el grafo de evaluación:A_cción_Editar_ArchivoA_yuda_Modo_Opciones_Verañadir siguente jugadaatómicoopción searchTime incorrecta %sopción timeControl incorrecta %sbelorina *navegarpor nombrepor tipojaponés (12x12)clásicaborrarcerrarhacer cambiosno se ha podido cargar la biblioteca de base de datos de finales de partidaajedrez del mensajero (12x8)abajocorreo-e para informar de erroresajedrez élfico (10x10)nombre del motorDe fábricafallo al escribir la PVmágicoencontrar posiciónprimermáximo fijadopierde ganagran ajedrez (10x10)incrementalrcmd interno no implementado para Unixpierde ganaleón poderosojugadaestrechosiguientepágina siguienteninguna partida responde a su búsquedasolo son legales los escaques señaladoso especificar uno debajo:selección fijadapágina anteriorversión %d del protocolo no es admitidaaleatorizarderechos otorgadosderechos revocadosguardar cambiossay Error interno; moveType incorrecto %d (%d,%d-%d,%d)segundojaponés (9x9)barajaretiquetasumbralesdos reyesarribacontrapixel blanco = 0x%lx, pixel negro = 0x%lx versión incorrecta de base de datos de finales de partidachinoinformación kibitz de su oponente: %sxboard-4.9.1/po/zh_TW.gmo0000644000175000001440000003710512747544040012113 00000000000000= "'2Zn")%%*Pap y      + DRdkq   $-)Jt   &%5[w! !&$@'e      +&1!X&z(!4S0l.  1CZ/s ,=Pdy   0! 4J Yex  -))W-)%"" ' 1 5 O i z        !1!F!K!N!_!g!l!#}!!!!!!! "","4" :"E"Y"^"p"" "" " """"&#!;#*]#(#&## ##$&$@$I$[$"l$,$($$$%&%%E%k%% % %'%'&%9&2_&& &&&&&''6'.S' ''''!'1'/(b2()) )))))****J*3e*6*?*+ + 0+:+"A+d+z+++++++ ,&,9,L,P,W,^, q, ~, ,,,, ,,,,' -3-D-]-v-z-- -----".#.B.%U.{. ...!.!... / / 0/:/M/ ]/j// / // //$/$/*00:0k00,00*0!1-01 ^1h1o1;1 1 11112 2592 o2|2 2222 2!2 3343J3`3 v3 3 3 3 3?3$3464 N4[4b4u4444444444=5@M5=5@5' 6 56 B6L6S6W6q6666666$67&7<7U7o7v7}7 777777778858E8X8_8c8s888888889 9 999J9b9 y9999 99:#: B:L:b:6x:<:9:-&;T;j;z;";;!;;!<)<H<g<)<<< <<< < ==4=D=`=,s=-=="=E=>>bk2X#/Yd[LU0QC{*fo>DG3~]6'}Ov4_ux.FZa`(T|5Jcn%&1y=IeNi,lgw9 z"+ \s M;8?h-:P EtVjWp$A!K @mr)<^BR7qHS%s does not support analysisAbout XBoardActionAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate to BlackAdjudicate to WhiteAlarmAlready at end of gameAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-KibitzAuto-ObserveAuto-Raise BoardAuto-Refresh Seek GraphBackground Observe while PlayingBad FEN position in clipboardBad FEN position in fileBad game fileBad position fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBoard OptionsBoard...BookBook Depth (moves):Book Variety (0) vs. Strength (100):Both flags fellCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't seek on game fileCan't seek on position fileCannonCannot build game listChancellorClear boardCommentsCommon Engine SettingsConnection closed by ICSCopy Game ListCould not connect to host %s, port %sCould not open comm port %sCould not parse moveCouldn't parse move "%s" from ICSDark Square Color:Default BeepDemoteDetect all MatesDisplayed move is not currentDisplayed position is not currentDraw after N Moves Total:Draw if Insufficient Mating MaterialDual Board for Background-Observed GameEGTB Cache Size (MB):EditEdit CommentEdit TagsEdit commentEdit comment on %d.%s%sElephantEmpty squareEnd of gameEngine #1 Has Own BookEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvaluation graphExitingFailed to invoke cmailFailed to start %s chess program %s on %s: %s Fatal ErrorFileFirst Black Move:First White Move:Game List Tags...Game not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGap in move listGeneralGeneral OptionsGet Move ListGot end of file from keyboardHash-Table Size (MB):HelpHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sICS ClientICS OptionsIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move in ICS output: "%s"Illegal move: %d.%s%sIncorrect moveInformationIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnKingKnightLight Square Color:Load Game OptionsMachine MatchMachine accepts your draw offerMachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMatch %s vs. %s: final score %d-%d-%dMaximum Number of CPUs per Engine:ModeMono ModeNPSNegate Score of Engine #1Negate Score of Engine #2New Shuffle GameNew VariantNo SoundNo game has been loaded yetNo game selectedNo hint availableNo more games in this messageNo moves in gameNo position has been loaded yetNo unfinished gamesNo unfinished games NoteOKOne-Click MovingOptionsPawnPeriodic UpdatesPeriodic Updates (in Analysis Mode)PlayPonder Next MovePopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition not found in filePremovePremove Highlight Color:PromoteQueenQuiet PlayReady to send mail RookSave Game OptionsSave Settings NowSave Settings on ExitSeek GraphShow CoordinatesShow CoordsSound OptionsStart-position number:Starting chess programStartup failure on '%s'Still need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s TagsTest LegalityThat square is occupiedThere is no game listThere is no pending offer on this moveTrainingTraining mode offTraining mode onTraining mode requires a game fileTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineUnknown initialMode %sUnknown variant name %sUpload to ExamineVariant %s not supported by %sVariant %s supported only in ICS modeVerify Engine Result ClaimsWaiting for first chess programWaiting for reply from opponent Waiting for second chess programWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite to playWhite's flag fellWin / Loss Threshold:You are not examining a gameYou are playing BlackYou are playing WhiteYou can't revert while pausingYou have not made a move yetYou must make your move before offering a drawYour opponent is not out of timebad searchTime option %sbad timeControl option %sdownprotocol version %d not supportedsay Internal error; bad moveType %d (%d,%d-%d,%d)upProject-Id-Version: GNU xboard master-20110507 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: zh_TW MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit %s 不支持分析功能關於XBoard(A)行為(A)提請仲裁(D)簡易和棋判決(T)裁決黑贏 (B)裁決紅贏 (W)提示棋局已經結束ICS輸出不明確的著法"%s"不明確的著法 %d.%s%s"Analysis"(分析)模式無法在ICS模式下工作"Analysis"(分析)模式必須啟動國際象棋引擎"AnalyzeFile"(分析檔案)模式必須指定一個棋局檔案動畫拖曳(D)動畫走棋(A)註解(A)國師自動超時判負(F) Ctrl+Shift+F自動翻轉棋盤(V)自動註解(A)自動"kibitz"(A)自動觀棋(O)自動改變棋盤大小(R)自動刷新圖表(R)背景觀察(v)剪貼簿的FEN盤面錯誤檔案中的FEN盤面錯誤棋局檔案錯誤盤面檔案錯誤象黑方黑子輪到黑方走棋黑方超時盲棋(B)棋盤選項棋盤選項(B)...開局庫(B)...庫著法深度庫變例雙方都超時了無法再後退了無法再前進了沒有象棋程式時無法進行比賽無法打開"%s"無法搜尋棋局檔案無法搜尋盤面檔案炮無法建立棋局列表宰相清空棋盤編輯註解(C) *.*通用引擎設定連接被ICS關閉複製遊戲列表到剪貼簿無法連接主機 %s 連接埠 %s無法打開通訊連接埠 %s無法解析著法無法解析從ICS讀到的著法"%s"黑格預設聲音降級檢測將殺(M)顯示的著法不是當前著法顯示的盤面不是當前盤面幾著後判和子力不足時判和(I)雙棋盤(D)EGTB 大小(MB)編輯(E)編輯註解(C)...編輯標籤(T)編輯註解編輯註解 %d.%s%s象清空格子棋局結束引擎1有自用庫引擎輸出錯誤讀取著法時出錯,超出棋盤讀取著法時出錯,巢狀錯誤讀取著法時出錯,出現兩個開頭從%s國際象棋程式(%s)接收訊息時出錯讀取ICS訊息時出錯讀取鍵盤時出錯發送訊息到%s國際象棋程式時出錯發送訊息給ICS時出錯發送訊息給國際象棋程式時出錯發送訊息給顯示器時出錯錯誤:%s國際象棋程式(%s)異常終止審局圖離開呼叫cmail失敗無法啟動%s國際象棋程式 %s(在主機 %s 上),%s 嚴重錯誤檔案(F)黑方先走(B)紅方先走(W)遊戲列表...檔案中沒有找到棋局棋局數量超出範圍棋局太長,需要增加"MAX_MOVES"並重新編譯著法斷開一般選項(G)...一般選項取得著法列表(G)讀取鍵盤時遇到檔案尾雜湊表大小(MB)說明(H)與人對弈時隱藏思考細節格子標記拖曳醒目提示(H)標記上一著法(M)用箭頭突出移動用箭頭突出移動提示(H)...提示 %sICS客戶端ICS設定著法錯誤不合法著法"%s" (%s國際象棋程式拒絕接受該著法)從%s機器讀到不合法著法"%s"ICS輸出不明確的著法"%s"不合法著法 %d.%s%s著法錯誤資訊輪到黑方走棋輪到紅方走棋沒有輪到黑方走棋沒有輪到紅方走棋輪到你走棋王馬白格載入棋局選項電腦比賽(M)電腦同意和棋"MachineBlack"(電腦執黑)模式無法在ICS模式下運行"MachineBlack"(電腦執黑)模式必須啟動國際象棋引擎"MachineWhite"(電腦執紅)模式無法在ICS模式下運行"MachineWhite"(電腦執紅)模式必須啟動國際象棋引擎比賽 %s vs. %s: 最終比分 %d-%d-%d最大CPU數模式(M)黑白NPS引擎 #1 是絕對分數引擎 #2 是絕對分數洗牌遊戲(u)...變種無聲尚未有棋局載入沒有選中棋局沒有可用的提示這條訊息不包含更多的棋局棋局中沒有著法尚未有盤面載入不存在未完成棋局不存在未完成棋局 註解確定單擊移動(M)選項(O)兵定期更新(U)定期更新(分析模式)播放同步思考(N)離開時提示(P)離開時提示(P)提示錯誤著法(E)檔案中沒有找到盤面預先走棋(P)預先走棋標記升變后落子無聲(Q)準備送信就緒 車儲存棋局選項立即儲存設定(N)離開時儲存設定(X)可選對手圖表(k)顯示坐標(C)顯示坐標(C)聲音啟動位置號碼(S)啟動國際象棋程式無法啟動'%s'棋局 %s 仍需走棋 本棋局仍需走棋 所有 %d 棋局皆仍需走棋 兩棋局皆仍需走棋 棋局 %s 仍需走棋 編輯標籤(T)檢查著法合理性(L) Cl+Sh+L格子已有棋子沒有棋局列表該著法沒有待定的提議訓練(N)訓練模式已關閉訓練模式已打開"Training"(訓練)模式必須指定一個棋局檔案"TwoMachines"(電腦對弈)模式無法在ICS模式下運行"TwoMachines"(分析)模式必須啟動國際象棋引擎未知的"initialMode"(初始模式)選項 %s未知的變體名 %s上傳檢查(U)變體 %s 不被 %s 所支持變體 %s 只在ICS模式下支持驗證引擎聲明(V)等待第一個國際象棋程式等待對手回應 等待第二個國際象棋程式注意:你正在研究棋局注意:你正在觀棋棋局注意:你正在進行棋局警告: 第二個引擎(%s) 不支持此!紅方輪到紅方走棋紅方超時輸/贏判決門檻沒有分析棋局你在執黑你在執紅暫停時不能復原棋局你尚未走棋必須走完棋才能提和對手沒有超時非法的"searchTime"(搜尋時間)選項 %s非法的"timeControl"(時間控制)選項 %s向下通訊協定版本 %d 不被支持say 內部錯誤,非法的"moveType"(著法類型) %d (%d,%d-%d,%d)向上xboard-4.9.1/po/nl.po0000644000175000001440000020411712747543737011340 00000000000000# Dutch translations for GNU XBoard. # Copyright (C) 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the xboard package. # # "Hip hip hooray for Jan Böhmermann!" # # Benno Schulenberg , 2013, 2014, 2015, 2016. msgid "" msgstr "" "Project-Id-Version: GNU xboard 4.9.0-pre2\n" "Report-Msgid-Bugs-To: bug-xboard@gnu.org\n" "POT-Creation-Date: 2016-07-31 20:45-0700\n" "PO-Revision-Date: 2016-04-13 19:42+0200\n" "Last-Translator: Benno Schulenberg \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.0\n" #: args.h:854 #, c-format msgid "%s in settings file\n" msgstr "%s in instellingenbestand\n" #: args.h:888 #, c-format msgid "Bad integer value %s" msgstr "Ongeldig geheel getal: %s" #: args.h:994 args.h:1274 #, c-format msgid "Unrecognized argument %s" msgstr "Niet-herkend argument: %s" #: args.h:1025 #, c-format msgid "No value provided for argument %s" msgstr "Geen waarde gegeven voor argument %s" #: args.h:1085 #, c-format msgid "Incomplete \\ escape in value for %s" msgstr "Onvolledige \\-stuurcode in waarde voor %s" #: args.h:1196 #, c-format msgid "Failed to open indirection file %s" msgstr "Kan indirectiebestand %s niet openen" #: args.h:1213 #, c-format msgid "Unrecognized boolean argument value %s" msgstr "Niet-herkende booleaanse waarde: %s" #. TRANSLATORS: "first" is the first of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:812 msgid "first" msgstr "eerste" #. TRANSLATORS: "second" is the second of possible two chess engines. It is inserted into strings #. such as "%s engine" / "%s chess program" / "%s machine" - all meaning the same thing #: backend.c:815 msgid "second" msgstr "tweede" #: backend.c:898 #, c-format msgid "protocol version %d not supported" msgstr "protocolversie %d wordt niet ondersteund" #: backend.c:1005 msgid "You did not specify the engine executable" msgstr "U hebt geen automaatbestand opgegeven." #: backend.c:1063 #, c-format msgid "bad timeControl option %s" msgstr "ongeldige timeControl-optie: %s" #: backend.c:1078 #, c-format msgid "bad searchTime option %s" msgstr "ongeldige searchTime-optie: %s" #: backend.c:1184 #, c-format msgid "Variant %s supported only in ICS mode" msgstr "Variant %s wordt alleen ondersteund in ICS-modus" #: backend.c:1202 #, c-format msgid "Unknown variant name %s" msgstr "Onbekende variantnaam: %s" #: backend.c:1457 msgid "Starting chess program" msgstr "Starten van schaakprogramma" #: backend.c:1480 msgid "Bad game file" msgstr "Incorrect partijbestand" #: backend.c:1487 msgid "Bad position file" msgstr "Incorrect positiebestand" #: backend.c:1501 msgid "Pick new game" msgstr "Kies een nieuwe partij" #: backend.c:1570 msgid "" "You restarted an already completed tourney.\n" "One more cycle will now be added to it.\n" "Games commence in 10 sec." msgstr "" "U hebt een reeds voltooid toernooi herstart.\n" "Er wordt een extra cyclus aan toegevoegd.\n" "De partijen beginnen in tien seconden." #: backend.c:1577 #, c-format msgid "All games in tourney '%s' are already played or playing" msgstr "Alle partijen in toernooi '%s' zijn al gespeeld of spelen nog" #: backend.c:1584 msgid "Can't have a match with no chess programs" msgstr "Er is geen toernooi mogelijk zonder automaten." #: backend.c:1638 #, c-format msgid "Could not open comm port %s" msgstr "Kan communicatiepoort %s niet openen" #: backend.c:1641 #, c-format msgid "Could not connect to host %s, port %s" msgstr "Kan geen verbinding maken met host %s, poort %s" #: backend.c:1697 #, c-format msgid "Unknown initialMode %s" msgstr "Onbekende initialMode %s" #: backend.c:1723 msgid "AnalyzeFile mode requires a game file" msgstr "AnalyzeFile-modus vereist een partijbestand" #: backend.c:1756 msgid "Analysis mode requires a chess engine" msgstr "Analysemodus vereist een schaakprogramma" #: backend.c:1760 msgid "Analysis mode does not work with ICS mode" msgstr "Analysemodus werkt niet met ICS-modus" #: backend.c:1771 msgid "MachineWhite mode requires a chess engine" msgstr "MachineWhite-modus vereist een schaakprogramma" #: backend.c:1776 msgid "MachineWhite mode does not work with ICS mode" msgstr "MachineWhite-modus werkt niet met ICS-modus" #: backend.c:1783 msgid "MachineBlack mode requires a chess engine" msgstr "MachineBlack-modus vereist een schaakprogramma" #: backend.c:1788 msgid "MachineBlack mode does not work with ICS mode" msgstr "MachineBlack-modus werkt niet met ICS-modus" #: backend.c:1795 msgid "TwoMachines mode requires a chess engine" msgstr "TwoMachines-modus vereist een schaakprogramma" #: backend.c:1800 msgid "TwoMachines mode does not work with ICS mode" msgstr "TwoMachines-modus werkt niet met ICS-modus" #: backend.c:1811 msgid "Training mode requires a game file" msgstr "Trainingsmodus vereist een partijbestand" #: backend.c:1974 backend.c:2029 backend.c:2052 backend.c:2454 msgid "Error writing to ICS" msgstr "Fout bij schrijven naar ICS" #: backend.c:1989 msgid "Error reading from keyboard" msgstr "Fout bij lezen van toetsenbord" #: backend.c:1992 msgid "Got end of file from keyboard" msgstr "Einde-van-bestand ontvangen van toetsenbord" #: backend.c:2300 #, c-format msgid "Unknown wild type %d" msgstr "Onbekend wild type %d" #: backend.c:2371 usystem.c:317 msgid "Error writing to display" msgstr "Fout bij schrijven naar beeldscherm" #. TRANSLATORS: to 'kibitz' is to send a message to all players and the game observers #: backend.c:3139 #, c-format msgid "your opponent kibitzes: %s" msgstr "Uw tegenstander kibitzt: %s" #: backend.c:3679 msgid "Error gathering move list: two headers" msgstr "Fout bij lezen van zettenlijst: twee koppen" #: backend.c:3726 msgid "Error gathering move list: nested" msgstr "Fout bij lezen van zettenlijst: genest" #: backend.c:3830 backend.c:4256 backend.c:4460 backend.c:5019 backend.c:5023 #: backend.c:7298 backend.c:13089 backend.c:14844 backend.c:14923 #: backend.c:14971 backend.c:14977 backend.c:14982 backend.c:14987 msgid "vs." msgstr "tegen" #: backend.c:3958 msgid "Illegal move (rejected by ICS)" msgstr "Ongeldige zet (geweigerd door ICS)" #: backend.c:4304 msgid "Connection closed by ICS" msgstr "Verbinding is gesloten door ICS" #: backend.c:4306 msgid "Error reading from ICS" msgstr "Fout bij lezen van ICS" #: backend.c:4383 #, c-format msgid "" "Failed to parse board string:\n" "\"%s\"" msgstr "" "Ontleden van bordtekenreeks is mislukt:\n" "'%s'" #: backend.c:4392 backend.c:10660 msgid "Game too long; increase MAX_MOVES and recompile" msgstr "*** Partij is te lang; verhoog MAX_MOVES en hercompileer." #: backend.c:4511 msgid "Error gathering move list: extra board" msgstr "Fout bij lezen van zettenlijst: extra bord" #: backend.c:4943 backend.c:4965 #, c-format msgid "Couldn't parse move \"%s\" from ICS" msgstr "Kan zet '%s' van ICS niet ontleden" #: backend.c:5230 #, c-format msgid "say Internal error; bad moveType %d (%d,%d-%d,%d)" msgstr "**interne programmafout**; ongeldig moveType %d (%d,%d-%d,%d)" #: backend.c:5301 msgid "You cannot do this while you are playing or observing" msgstr "U kunt dit niet doen tijdens het spelen of observeren." #: backend.c:6363 msgid "Recompile to support this BOARD_RANKS or BOARD_FILES!" msgstr "*** Hercompileer om BOARD_RANKS of BOARD_FILES te ondersteunen." #: backend.c:6858 msgid "You are playing Black" msgstr "U speelt met zwart" #: backend.c:6867 backend.c:6895 msgid "You are playing White" msgstr "U speelt met wit" #: backend.c:6877 backend.c:6903 backend.c:7025 backend.c:7050 backend.c:7066 #: backend.c:15694 msgid "It is White's turn" msgstr "Wit is aan zet" #: backend.c:6881 backend.c:6907 backend.c:7033 backend.c:7056 backend.c:7088 #: backend.c:15686 msgid "It is Black's turn" msgstr "Zwart is aan zet" #: backend.c:6920 msgid "Displayed position is not current" msgstr "Getoonde positie is niet de huidige" #: backend.c:7123 msgid "rights granted" msgstr "rechten verleend" #: backend.c:7123 msgid "rights revoked" msgstr "rechten ingetrokken" #: backend.c:7175 msgid "Illegal move" msgstr "Ongeldige zet" #: backend.c:7255 msgid "End of game" msgstr "Einde van partij" #: backend.c:7258 msgid "Incorrect move" msgstr "Onjuiste zet" #: backend.c:7663 backend.c:7819 msgid "Pull pawn backwards to under-promote" msgstr "Beweeg pion terug voor onderpromotie." #: backend.c:7780 msgid "only marked squares are legal" msgstr "alleen gemarkeerde velden zijn geldig" #: backend.c:8116 msgid "Swiss tourney finished" msgstr "Zwitsers toernooi is beëindigd." #: backend.c:8632 msgid "could not load EGBB library" msgstr "kan EGBB-bibliotheek niet laden" #: backend.c:8635 msgid "wrong EGBB version" msgstr "onjuiste EGBB-versie" #: backend.c:8748 msgid "Invalid pairing from pairing engine" msgstr "Ongeldig koppel van koppelautomaat." #: backend.c:8915 #, c-format msgid "Illegal move \"%s\" from %s machine" msgstr "Ongeldige zet '%s' van %s automaat." #: backend.c:9207 msgid "Bad FEN received from engine" msgstr "Ongeldige FEN ontvangen van automaat" #: backend.c:9308 msgid "Engine did not send setup for non-standard variant" msgstr "Automaat heeft geen opstelling gestuurd voor variant" #: backend.c:9386 backend.c:14706 backend.c:14774 #, c-format msgid "%s does not support analysis" msgstr "%s ondersteunt analyse niet." #: backend.c:9452 #, c-format msgid "Illegal move \"%s\" (rejected by %s chess program)" msgstr "Ongeldige zet '%s' (geweigerd door %s schaakprogramma)" #: backend.c:9483 #, c-format msgid "Failed to start %s chess program %s on %s: %s\n" msgstr "Starten van %s schaakprogramma (%s) op %s is mislukt: %s\n" #: backend.c:9504 #, c-format msgid "Hint: %s" msgstr "Hint: %s" #: backend.c:9509 #, c-format msgid "" "Illegal hint move \"%s\"\n" "from %s chess program" msgstr "" "Ongeldige hintzet '%s'\n" "van %s schaakprogramma." #: backend.c:9684 msgid "Machine accepts your draw offer" msgstr "Automaat accepteert uw remise-aanbod" #: backend.c:9687 msgid "" "Machine offers a draw.\n" "Select Action / Draw to accept." msgstr "" "Automaat biedt remise aan.\n" "Kies Acties > Remise om te accepteren." #. TRANSLATORS: PV = principal variation, the variation the chess engine thinks is the best for everyone #: backend.c:9805 msgid "failed writing PV" msgstr "schrijven van hoofdvariant is mislukt" #: backend.c:10111 #, c-format msgid "Ambiguous move in ICS output: \"%s\"" msgstr "Niet-eenduidige zet in ICS-uitvoer: '%s'" #: backend.c:10121 #, c-format msgid "Illegal move in ICS output: \"%s\"" msgstr "Ongeldige zet in ICS-uitvoer: '%s'" #: backend.c:10132 msgid "Gap in move list" msgstr "Gat in zettenlijst" #: backend.c:10814 #, c-format msgid "Variant %s not supported by %s" msgstr "Variant %s wordt niet ondersteund door %s" #: backend.c:10821 #, c-format msgid ", but %s is" msgstr ", maar %s is" #: backend.c:10977 #, c-format msgid "Startup failure on '%s'" msgstr "Opstartfout bij '%s'" #: backend.c:11008 msgid "Waiting for first chess program" msgstr "Wachten op eerste schaakprogramma" #: backend.c:11013 backend.c:14996 msgid "Waiting for second chess program" msgstr "Wachten op tweede schaakprogramma" #: backend.c:11062 msgid "Could not write on tourney file" msgstr "Kan niet naar toernooibestand schrijven." #: backend.c:11138 msgid "" "You cannot replace an engine while it is engaged!\n" "Terminate its game first." msgstr "" "U kunt een automaat niet vervangen terwijl deze\n" "gebruikt wordt. Beëindig eerst diens partij." #: backend.c:11152 msgid "No engine with the name you gave is installed" msgstr "Er is geen automaat met de gegeven naam geïnstalleerd" # XXX where is Tournament Options dialog? #: backend.c:11154 msgid "" "First change an engine by editing the participants list\n" "of the Tournament Options dialog" msgstr "" "Wijzig eerst een automaat door de deelnemerslijst\n" "in de dialoog «Toernooi-instellingen» te bewerken." #: backend.c:11155 msgid "You can only change one engine at the time" msgstr "U kunt slechts één automaat tegelijk wijzigen." #: backend.c:11170 backend.c:11319 #, c-format msgid "No engine %s is installed" msgstr "Automaat '%s' is niet geïnstalleerd" #: backend.c:11190 msgid "" "You must supply a tournament file,\n" "for storing the tourney progress" msgstr "" "U dient een toernooibestand op te geven,\n" "om de toernooivoortgang in op te slaan." #: backend.c:11200 msgid "Not enough participants" msgstr "Te weinig deelnemers" #: backend.c:11403 msgid "Bad tournament file" msgstr "Incorrect toernooibestand" #: backend.c:11415 msgid "Waiting for other game(s)" msgstr "Wachten op andere partij(en)" #: backend.c:11428 msgid "No pairing engine specified" msgstr "Geen koppelautomaat gegeven" #: backend.c:11913 #, c-format msgid "Average solving time %4.2f sec (total time %4.2f sec) " msgstr "Gemiddelde oplostijd %4.2f sec (totale tijd %4.2f sec) " #: backend.c:11915 #, c-format msgid "%d avoid-moves played " msgstr "%d ontwijkzetten gespeeld " #: backend.c:11917 #, c-format msgid "Solved %d out of %d (%3.1f%%) " msgstr "Er werden %d van de %d opgelost (%3.1f%%) " #: backend.c:11920 #, c-format msgid "Match %s vs. %s: final score %d-%d-%d" msgstr "Toernooi van %s tegen %s: eindscore %d-%d-%d" #: backend.c:12398 backend.c:12434 #, c-format msgid "Illegal move: %d.%s%s" msgstr "Ongeldige zet: %d.%s%s" #: backend.c:12423 #, c-format msgid "Ambiguous move: %d.%s%s" msgstr "Niet-eenduidige zet: %d.%s%s" #: backend.c:12477 backend.c:13530 backend.c:13730 backend.c:14104 #, c-format msgid "Can't open \"%s\"" msgstr "Kan '%s' niet openen" #: backend.c:12489 menus.c:118 msgid "Cannot build game list" msgstr "Kan partijenlijst niet samenstellen" #: backend.c:12574 msgid "No more games in this message" msgstr "Geen verdere partijen in dit bericht" #: backend.c:12614 msgid "No game has been loaded yet" msgstr "Er is nog geen partij geladen" #: backend.c:12618 backend.c:13511 ngamelist.c:129 msgid "Can't back up any further" msgstr "Kan niet nog verder teruggaan" #: backend.c:13065 msgid "Game number out of range" msgstr "Partijnummer valt buiten bereik" #: backend.c:13076 msgid "Can't seek on game file" msgstr "Kan niet springen in partijbestand" #: backend.c:13134 msgid "Game not found in file" msgstr "Partij niet gevonden in bestand" #: backend.c:13265 backend.c:13608 msgid "Bad FEN position in file" msgstr "Ongeldige FEN-positie in bestand" #: backend.c:13423 msgid "No moves in game" msgstr "Partij bevat geen zetten" #: backend.c:13507 msgid "No position has been loaded yet" msgstr "Er is nog geen positie geladen" #: backend.c:13568 backend.c:13579 msgid "Can't seek on position file" msgstr "Kan niet springen in positiebestand" #: backend.c:13586 backend.c:13598 msgid "Position not found in file" msgstr "Positie niet gevonden in bestand" #: backend.c:13645 msgid "Black to play" msgstr "Zwart is aan zet" #: backend.c:13648 msgid "White to play" msgstr "Wit is aan zet" #: backend.c:13735 backend.c:14109 msgid "Waiting for access to save file" msgstr "Wachten op toegang om bestand op te slaan" #: backend.c:13737 msgid "Saving game" msgstr "Opslaan van partij" #: backend.c:13738 msgid "Bad Seek" msgstr "Ongeldige bestandssprong" #: backend.c:14111 msgid "Saving position" msgstr "Opslaan van positie" # FIXME Reload Same Game is not in POT #: backend.c:14237 msgid "" "You have edited the game history.\n" "Use Reload Same Game and make your move again." msgstr "" "U hebt de partijgeschiedenis bewerkt.\n" "Gebruik «Zelfde partij herladen» en doe uw zet opnieuw." #: backend.c:14242 msgid "" "You have entered too many moves.\n" "Back up to the correct position and try again." msgstr "" "U hebt te veel zetten ingevoerd.\n" "Ga terug naar de correcte positie en probeer het opnieuw." #: backend.c:14247 msgid "" "Displayed position is not current.\n" "Step forward to the correct position and try again." msgstr "" "Getoonde positie is niet de huidige.\n" "Ga vooruit naar de correcte positie en probeer het opnieuw." #: backend.c:14294 msgid "You have not made a move yet" msgstr "U hebt nog geen zet gedaan" #: backend.c:14315 msgid "" "The cmail message is not loaded.\n" "Use Reload CMail Message and make your move again." msgstr "" "Het CMail-bericht is niet geladen.\n" "Gebruik «CMail-bericht herladen» en doe uw zet opnieuw." #: backend.c:14320 msgid "No unfinished games" msgstr "Geen onafgemaakte partijen" #: backend.c:14326 #, c-format msgid "" "You have already mailed a move.\n" "Wait until a move arrives from your opponent.\n" "To resend the same move, type\n" "\"cmail -remail -game %s\"\n" "on the command line." msgstr "" "U hebt al een zet gemaild.\n" "Wacht tot er een zet arriveert van uw tegenstander.\n" "Om dezelfde zet opnieuw te verzenden, typt u:\n" "\"cmail -remail -game %s\"\n" "op de opdrachtregel." #: backend.c:14341 msgid "Failed to invoke cmail" msgstr "Aanroepen van 'cmail' is mislukt" #: backend.c:14403 #, c-format msgid "Waiting for reply from opponent\n" msgstr "Wachten op antwoord van tegenstander\n" #: backend.c:14425 #, c-format msgid "Still need to make move for game\n" msgstr "U dient nog een zet te doen voor deze partij.\n" #: backend.c:14429 #, c-format msgid "Still need to make moves for both games\n" msgstr "U dient nog zetten te doen voor beide partijen.\n" #: backend.c:14433 #, c-format msgid "Still need to make moves for all %d games\n" msgstr "U dient nog zetten te doen voor alle %d partijen.\n" #: backend.c:14440 #, c-format msgid "Still need to make a move for game %s\n" msgstr "U dient nog een zet te doen voor partij %s.\n" #: backend.c:14446 #, c-format msgid "No unfinished games\n" msgstr "Geen onafgemaakte partijen.\n" #: backend.c:14448 #, c-format msgid "Ready to send mail\n" msgstr "Klaar om mail te verzenden.\n" #: backend.c:14453 #, c-format msgid "Still need to make moves for games %s\n" msgstr "U dient nog zetten te doen voor partijen %s.\n" #: backend.c:14656 msgid "Edit comment" msgstr "Opmerking bewerken" #: backend.c:14658 #, c-format msgid "Edit comment on %d.%s%s" msgstr "Opmerking op %d.%s%s bewerken" #: backend.c:14713 #, c-format msgid "You are not observing a game" msgstr "U bent geen partij aan het observeren." #: backend.c:14824 msgid "It is not White's turn" msgstr "Wit is niet aan zet" #: backend.c:14907 msgid "It is not Black's turn" msgstr "Zwart is niet aan zet" #: backend.c:15017 #, c-format msgid "Starting %s chess program" msgstr "Starten van %s schaakprogramma" #: backend.c:15045 backend.c:16238 msgid "" "Wait until your turn,\n" "or select 'Move Now'." msgstr "" "Wacht op uw beurt,\n" "of kies «Nu zetten»." #: backend.c:15188 msgid "Training mode off" msgstr "Trainingsmodus is uitgeschakeld" #: backend.c:15196 msgid "Training mode on" msgstr "Trainingsmodus is ingeschakeld" #: backend.c:15199 msgid "Already at end of game" msgstr "Reeds aan einde van partij." #: backend.c:15289 msgid "Warning: You are still playing a game" msgstr "Waarschuwing: u bent nog een partij aan het spelen." #: backend.c:15292 msgid "Warning: You are still observing a game" msgstr "Waarschuwing: u bent nog een partij aan het observeren." #: backend.c:15295 msgid "Warning: You are still examining a game" msgstr "Waarschuwing: u bent nog een partij aan het bestuderen." #: backend.c:15365 msgid "Click clock to clear board" msgstr "Klik op klok om bord leeg te maken." # FIXME: analysis? #: backend.c:15375 msgid "Close ICS engine analyze..." msgstr "Analyse van ICS-automaat sluiten..." #: backend.c:15711 msgid "That square is occupied" msgstr "Dat veld is bezet." #: backend.c:15735 backend.c:15761 msgid "There is no pending offer on this move" msgstr "Er is geen aanbod op deze zet." #: backend.c:15797 backend.c:15808 msgid "Your opponent is not out of time" msgstr "Uw tegenstander heeft nog tijd." #: backend.c:15876 msgid "You must make your move before offering a draw" msgstr "U dient uw zet te doen alvorens remise aan te bieden." #: backend.c:16220 msgid "You are not examining a game" msgstr "U bent geen partij aan het bestuderen." #: backend.c:16224 msgid "You can't revert while pausing" msgstr "U kunt niet terugdraaien tijdens pauze." #: backend.c:16278 backend.c:16285 msgid "It is your turn" msgstr "U bent aan zet" #: backend.c:16336 backend.c:16343 backend.c:16429 backend.c:16436 msgid "Wait until your turn." msgstr "Wacht op uw beurt." #: backend.c:16348 msgid "No hint available" msgstr "Geen hint beschikbaar" #: backend.c:16363 backend.c:16394 ngamelist.c:365 msgid "Game list not loaded or empty" msgstr "Partijenlijst is leeg of niet geladen" #: backend.c:16401 msgid "Book file exists! Try again for overwrite." msgstr "Bestand bestaat al. Probeer het opnieuw om deze te overschrijven." #: backend.c:16886 #, c-format msgid "Error writing to %s chess program" msgstr "Fout bij schrijven naar %s schaakprogramma" #: backend.c:16889 backend.c:16920 #, c-format msgid "%s program exits in draw position (%s)" msgstr "%s programma is geëindigd in remisepositie (%s)" #: backend.c:16915 #, c-format msgid "Error: %s chess program (%s) exited unexpectedly" msgstr "Fout: %s schaakprogramma (%s) is onverwacht beëindigd" #: backend.c:16933 #, c-format msgid "Error reading from %s chess program (%s)" msgstr "Fout bij lezen van %s schaakprogramma (%s)" #: backend.c:17365 #, c-format msgid "%s engine has too many options\n" msgstr "%s-automaat heeft te veel instellingen\n" #: backend.c:17521 msgid "Displayed move is not current" msgstr "Getoonde zet is niet de huidige" #: backend.c:17530 msgid "Could not parse move" msgstr "Kan zet niet ontleden" #: backend.c:17655 backend.c:17677 msgid "Both flags fell" msgstr "Beide vlaggen zijn gevallen" #: backend.c:17657 msgid "White's flag fell" msgstr "Wits vlag is gevallen" #: backend.c:17679 msgid "Black's flag fell" msgstr "Zwarts vlag is gevallen" #: backend.c:17810 msgid "Clock adjustment not allowed in auto-flag mode" msgstr "Klokbijstelling is niet toegestaan in auto-vlagmodus" #: backend.c:18785 msgid "Bad FEN position in clipboard" msgstr "Ongeldige FEN-positie op het klembord" #: book.c:598 book.c:874 msgid "Polyglot book not valid" msgstr "Polyglot-boek is ongeldig" #: book.c:722 msgid "Book Fault" msgstr "Fout in boek" #: book.c:877 msgid "Hash keys are different" msgstr "Hash-sleutels zijn verschillend" #: book.c:1054 msgid "Could not create book" msgstr "Kan geen boek aanmaken" #: dialogs.c:287 msgid "Tournament file: " msgstr "Toernooibestand: " #: dialogs.c:288 msgid "For concurrent playing of tourney with multiple XBoards:" msgstr "Voor het gelijktijdig spelen van een toernooi met meerdere XBoards:" #: dialogs.c:289 msgid "Sync after round" msgstr "Synchroniseren na een ronde" #: dialogs.c:290 msgid "Sync after cycle" msgstr "Synchroniseren na een cyclus" #: dialogs.c:291 msgid "Tourney participants:" msgstr "Toernooi-deelnemers:" #: dialogs.c:292 msgid "Select Engine:" msgstr "Kies automaat:" #: dialogs.c:300 msgid "Tourney type (0 = round-robin, 1 = gauntlet):" msgstr "Toernooitype (0 = op-de-rij-af, 1 = handschoen):" #: dialogs.c:301 msgid "Number of tourney cycles (or Swiss rounds):" msgstr "Aantal toernooirondes (of Zwitserse rondes):" #: dialogs.c:302 msgid "Default Number of Games in Match (or Pairing):" msgstr "Standaard aantal partijen in een toernooi (of koppel):" #: dialogs.c:303 msgid "Pause between Match Games (msec):" msgstr "Pauze tussen toernooipartijen (msec):" #: dialogs.c:304 msgid "Save Tourney Games on:" msgstr "Toernooipartijen bewaren op:" #: dialogs.c:305 msgid "Game File with Opening Lines:" msgstr "Partijbestand met openingsregels:" #: dialogs.c:306 msgid "Game Number (-1 or -2 = Auto-Increment):" msgstr "Partijnummer (-1 of -2 = automatische ophoging):" #: dialogs.c:307 msgid "File with Start Positions:" msgstr "Bestand met startposities:" #: dialogs.c:308 msgid "Position Number (-1 or -2 = Auto-Increment):" msgstr "Positienummer (-1 of -2 = automatische ophoging):" #: dialogs.c:309 msgid "Rewind Index after this many Games (0 = never):" msgstr "Index terugspoelen na dit aantal partijen (0 = nooit):" #: dialogs.c:310 msgid "Disable own engine books by default" msgstr "Eigen automaatboeken standaard uitschakelen" #: dialogs.c:311 dialogs.c:1867 msgid "Time Control" msgstr "Tijdsbeperking" #: dialogs.c:312 msgid "Common Engine" msgstr "Gemeenschappelijke automaat" #: dialogs.c:313 dialogs.c:447 msgid "General Options" msgstr "Algemene instellingen" #: dialogs.c:314 msgid "Continue Later" msgstr "Later verdergaan" #: dialogs.c:315 msgid "Replace Engine" msgstr "Automaat vervangen" #: dialogs.c:316 msgid "Upgrade Engine" msgstr "Automaat upgraden" #: dialogs.c:317 msgid "Clone Tourney" msgstr "Toernooi klonen" #: dialogs.c:357 msgid "First you must specify an existing tourney file to clone" msgstr "U dient eerst een bestaand toernooibestand op te geven." #: dialogs.c:373 dialogs.c:1553 msgid "# no engines are installed" msgstr "# er zijn geen automaten geïnstalleerd" #: dialogs.c:381 msgid "Internal error: PARTICIPANTS set wrong" msgstr "**Interne programmafout**: PARTICIPANTS is verkeerd ingesteld" #: dialogs.c:389 msgid "Tournament Options" msgstr "Toornooi-opties" #: dialogs.c:408 msgid "Absolute Analysis Scores" msgstr "Absolute analysescores" #: dialogs.c:409 msgid "Almost Always Queen (Detour Under-Promote)" msgstr "Bijna altijd koningin (onderpromotie-omweg)" #: dialogs.c:410 menus.c:752 msgid "Animate Dragging" msgstr "Slepen animeren" #: dialogs.c:411 menus.c:753 msgid "Animate Moving" msgstr "Zetten animeren" #: dialogs.c:412 menus.c:754 msgid "Auto Flag" msgstr "Vanzelf vlaggen" #: dialogs.c:413 menus.c:755 msgid "Auto Flip View" msgstr "Bord vanzelf draaien" #: dialogs.c:414 menus.c:756 msgid "Blindfold" msgstr "Geblinddoekt" #. TRANSLATORS: the drop menu is used to drop a piece, e.g. during bughouse or editing a position #: dialogs.c:416 msgid "Drop Menu" msgstr "Plaatsingsmenu" #: dialogs.c:417 msgid "Enable Variation Trees" msgstr "Variatiebomen inschakelen" #: dialogs.c:418 msgid "Headers in Engine Output Window" msgstr "Kopregels in uitvoervenster van automaat" #: dialogs.c:419 msgid "Hide Thinking from Human" msgstr "Denken verbergen voor mens" #: dialogs.c:420 menus.c:761 msgid "Highlight Last Move" msgstr "Laatste zet markeren" #: dialogs.c:421 msgid "Highlight with Arrow" msgstr "Markeren met pijl" #: dialogs.c:422 menus.c:764 msgid "One-Click Moving" msgstr "Eenkliks zetten" #: dialogs.c:423 msgid "Periodic Updates (in Analysis Mode)" msgstr "Periodieke updates (in analysemodus)" #: dialogs.c:425 msgid "Play Move(s) of Clicked PV (Analysis)" msgstr "Zet(ten) spelen van aangeklikte PV (Analyse)" #: dialogs.c:426 dialogs.c:627 menus.c:766 msgid "Ponder Next Move" msgstr "Volgende zet overdenken" #: dialogs.c:427 msgid "Popup Exit Messages" msgstr "Popup-afsluitberichten" #: dialogs.c:428 menus.c:768 msgid "Popup Move Errors" msgstr "Popup-zetfouten" #: dialogs.c:429 msgid "Scores in Move List" msgstr "Scores in zettenlijst" #: dialogs.c:430 msgid "Show Coordinates" msgstr "Coördinaten tonen" #: dialogs.c:431 msgid "Show Target Squares" msgstr "Doelvelden tonen" #: dialogs.c:432 msgid "Sticky Windows" msgstr "Kleverige vensters" #: dialogs.c:433 menus.c:771 msgid "Test Legality" msgstr "Geldigheid testen" #: dialogs.c:434 msgid "Top-Level Dialogs" msgstr "Topniveau-dialogen" #: dialogs.c:435 msgid "Flash Moves (0 = no flashing):" msgstr "Zetten knipperen (0 = niet knipperen):" #: dialogs.c:436 msgid "Flash Rate (high = fast):" msgstr "Knippersnelheid (hoog = snel):" # FIXME: reword #: dialogs.c:437 msgid "Animation Speed (high = slow):" msgstr "Animatiesnelheid (hoog = langzaam):" #: dialogs.c:438 msgid "Zoom factor in Evaluation Graph:" msgstr "Zoomfactor in evaluatiegrafiek:" #: dialogs.c:458 msgid "Normal" msgstr "normaal" #: dialogs.c:459 msgid "Makruk" msgstr "Makruk" #: dialogs.c:460 msgid "FRC" msgstr "FRC" #: dialogs.c:461 msgid "Shatranj" msgstr "Shatranj" #: dialogs.c:462 msgid "Wild castle" msgstr "wilde rokade" #: dialogs.c:463 msgid "Knightmate" msgstr "paardmat" #: dialogs.c:464 msgid "No castle" msgstr "geen rokade" #: dialogs.c:465 msgid "Cylinder *" msgstr "cilinder *" #: dialogs.c:466 msgid "3-checks" msgstr "drie keer schaak" #: dialogs.c:467 msgid "berolina *" msgstr "berolina *" #: dialogs.c:468 msgid "atomic" msgstr "atomisch" #: dialogs.c:469 msgid "two kings" msgstr "twee koningen" #: dialogs.c:470 msgid " " msgstr " " #: dialogs.c:471 msgid "Spartan" msgstr "Spartaans" #: dialogs.c:472 msgid "Board size ( -1 = default for selected variant):" msgstr "Bordafmetingen (-1 = standaard voor de variant):" #: dialogs.c:473 msgid "Number of Board Ranks:" msgstr "Aantal bordrijen:" #: dialogs.c:474 msgid "Number of Board Files:" msgstr "Aantal bordlijnen:" #: dialogs.c:475 msgid "Holdings Size:" msgstr "Stalgrootte:" #: dialogs.c:477 msgid "" "Variants marked with * can only be played\n" "with legality testing off." msgstr "" "Varianten gemarkeerd met * kunnen alleen\n" "gespeeld met geldigheidstest uitgeschakeld." #: dialogs.c:479 msgid "ASEAN" msgstr "ASEAN" #: dialogs.c:480 msgid "Great Shatranj (10x8)" msgstr "Grote Shatranj (10x8)" #: dialogs.c:481 msgid "Seirawan" msgstr "Seirawan" #: dialogs.c:482 msgid "Falcon (10x8)" msgstr "Falcon (10x8)" #: dialogs.c:483 msgid "Superchess" msgstr "Superschaak" #: dialogs.c:484 msgid "Capablanca (10x8)" msgstr "Capablanca (10x8)" #: dialogs.c:485 msgid "Crazyhouse" msgstr "Crazyhouse" #: dialogs.c:486 msgid "Gothic (10x8)" msgstr "Gothic (10x8)" #: dialogs.c:487 msgid "Bughouse" msgstr "Bughouse" #: dialogs.c:488 msgid "Janus (10x8)" msgstr "Janus (10x8)" #: dialogs.c:489 msgid "Suicide" msgstr "suïcide" #: dialogs.c:490 msgid "CRC (10x8)" msgstr "CRC (10x8)" #: dialogs.c:491 msgid "give-away" msgstr "weggever" #: dialogs.c:492 msgid "grand (10x10)" msgstr "Grand (10x10)" #: dialogs.c:493 msgid "losers" msgstr "Losers" #: dialogs.c:494 msgid "shogi (9x9)" msgstr "Shogi (9x9)" #: dialogs.c:495 msgid "fairy" msgstr "Fairy" #: dialogs.c:496 msgid "xiangqi (9x10)" msgstr "Xiangqi (9x10)" #: dialogs.c:497 msgid "mighty lion" msgstr "Mighty Lion" #: dialogs.c:498 msgid "courier (12x8)" msgstr "Courier (12x8)" #: dialogs.c:499 msgid "elven chess (10x10)" msgstr "Elvenschaak (10x10)" #: dialogs.c:500 msgid "chu shogi (12x12)" msgstr "Chu shogi (12x12)" #: dialogs.c:544 #, c-format msgid "Warning: second engine (%s) does not support this!" msgstr "Waarschuwing: tweede automaat (%s) ondersteunt dit niet." # FIXME: Bughouse with capital # FIXME: what *is* viewer mode? #: dialogs.c:573 #, c-format msgid "Only bughouse is not available in viewer mode." msgstr "Alleen Bughouse is niet beschikbaar in viewer-modus." #: dialogs.c:574 #, c-format msgid "" "All variants not supported by the first engine\n" "(currently %s) are disabled." msgstr "" "Varianten die de eerste automaat (momenteel\n" "%s) niet kent zijn onkiesbaar." # XXX "NEW" is confusing, plural is better #: dialogs.c:596 msgid "New Variant" msgstr "Varianten" #: dialogs.c:628 msgid "Maximum Number of CPUs per Engine:" msgstr "Maximum aantal processoren per automaat:" #: dialogs.c:629 msgid "Polygot Directory:" msgstr "Polygot-map:" #: dialogs.c:630 msgid "Hash-Table Size (MB):" msgstr "Grootte van hash-tabel (MB):" #: dialogs.c:631 msgid "EGTB Path:" msgstr "EGTB-pad:" #: dialogs.c:632 msgid "EGTB Cache Size (MB):" msgstr "Grootte van EGTB-cache (MB):" #: dialogs.c:633 msgid "Use GUI Book" msgstr "GUI-boek gebruiken" #: dialogs.c:634 msgid "Opening-Book Filename:" msgstr "Bestandsnaam van openingenboek:" #: dialogs.c:635 msgid "Book Depth (moves):" msgstr "Boekdiepte (zetten):" #: dialogs.c:636 msgid "Book Variety (0) vs. Strength (100):" msgstr "Gevarieerdheid (0) tot Sterkte (100):" #: dialogs.c:637 msgid "Engine #1 Has Own Book" msgstr "Automaat #1 heeft eigen boek" # XXX why the trailing spaces? #: dialogs.c:638 msgid "Engine #2 Has Own Book " msgstr "Automaat #2 heeft eigen boek" #: dialogs.c:649 msgid "Common Engine Settings" msgstr "Algemene automaatinstellingen" #: dialogs.c:655 msgid "Detect all Mates" msgstr "Alle matten detecteren" #: dialogs.c:656 msgid "Verify Engine Result Claims" msgstr "Resultaatclaims van automaat controleren" #: dialogs.c:657 msgid "Draw if Insufficient Mating Material" msgstr "Remise bij onvoldoende matmateriaal" #: dialogs.c:658 msgid "Adjudicate Trivial Draws (3-Move Delay)" msgstr "Eenvoudige remises beslissen (3 zetten uitstel)" #: dialogs.c:659 msgid "N-Move Rule:" msgstr "N-zettenregel:" #: dialogs.c:660 msgid "N-fold Repeats:" msgstr "N-voudige herhalingen:" #: dialogs.c:661 msgid "Draw after N Moves Total:" msgstr "Remise na in totaal N zetten:" #: dialogs.c:662 msgid "Win / Loss Threshold:" msgstr "Winst/verlies-grenswaarde:" #: dialogs.c:663 msgid "Negate Score of Engine #1" msgstr "Score van automaat 1 negatief maken" #: dialogs.c:664 msgid "Negate Score of Engine #2" msgstr "Score van automaat 2 negatief maken" #: dialogs.c:671 msgid "Adjudicate non-ICS Games" msgstr "Non-ICS-partijen beslissen" #: dialogs.c:684 msgid "Auto-Kibitz" msgstr "Vanzelf kibitzen" #: dialogs.c:685 msgid "Auto-Comment" msgstr "Vanzelf becommentariëren" #: dialogs.c:686 msgid "Auto-Observe" msgstr "Vanzelf observeren" #: dialogs.c:687 msgid "Auto-Raise Board" msgstr "Bord automatisch focussen" #: dialogs.c:688 msgid "Auto-Create Logon Script" msgstr "Automatisch een logon-script maken" #: dialogs.c:689 msgid "Background Observe while Playing" msgstr "Op achtergrond observeren tijdens spelen" #: dialogs.c:690 msgid "Dual Board for Background-Observed Game" msgstr "Dubbel bord voor op achtergrond geobserveerde partij" #: dialogs.c:691 msgid "Get Move List" msgstr "Zettenlijst ophalen" #: dialogs.c:692 msgid "Quiet Play" msgstr "Stil spelen" #: dialogs.c:693 msgid "Seek Graph" msgstr "Zoekgrafiek" #: dialogs.c:694 msgid "Auto-Refresh Seek Graph" msgstr "Zoekgrafiek vanzelf verversen" #: dialogs.c:695 msgid "Auto-InputBox PopUp" msgstr "Invoervak vanzelf tonen" #: dialogs.c:696 msgid "Quit after game" msgstr "Afsluiten na partij" #: dialogs.c:697 msgid "Premove" msgstr "Voorzet" #: dialogs.c:698 msgid "Premove for White" msgstr "Voorzet voor wit" #: dialogs.c:699 msgid "First White Move:" msgstr "Eerste zet van wit:" #: dialogs.c:700 msgid "Premove for Black" msgstr "Voorzet voor zwart" #: dialogs.c:701 msgid "First Black Move:" msgstr "Eerste zet van zwart:" #: dialogs.c:703 msgid "Alarm" msgstr "Wekker" #: dialogs.c:704 msgid "Alarm Time (msec):" msgstr "Wektijd (msec):" #: dialogs.c:706 msgid "Colorize Messages" msgstr "Berichten kleuren" #: dialogs.c:707 msgid "Shout Text Colors:" msgstr "Shout-tekstkleuren:" #: dialogs.c:708 msgid "S-Shout Text Colors:" msgstr "S-Shout-tekstkleuren:" #: dialogs.c:709 msgid "Channel #1 Text Colors:" msgstr "Kanaal-1-tekstkleuren:" #: dialogs.c:710 msgid "Other Channel Text Colors:" msgstr "Anderekanalen-tekstkleuren:" #: dialogs.c:711 msgid "Kibitz Text Colors:" msgstr "Kibitz-tekstkleuren:" #: dialogs.c:712 msgid "Tell Text Colors:" msgstr "Tell-tekstkleuren:" #: dialogs.c:713 msgid "Challenge Text Colors:" msgstr "Uitdagings-tekstkleuren:" #: dialogs.c:714 msgid "Request Text Colors:" msgstr "Verzoek-tekstkleuren:" #: dialogs.c:715 msgid "Seek Text Colors:" msgstr "Tekstkleuren voor zoeken:" #: dialogs.c:716 msgid "Other Text Colors:" msgstr "Kleuren voor andere tekst:" #: dialogs.c:723 msgid "ICS Options" msgstr "ICS-instellingen" #: dialogs.c:728 msgid "Exact position match" msgstr "Exacte positie-overeenkomst" #: dialogs.c:728 msgid "Shown position is subset" msgstr "Getoonde positie is een subset" #: dialogs.c:728 msgid "Same material with exactly same Pawn chain" msgstr "Zelfde materiaal met exact dezelfde pionketen" #: dialogs.c:729 msgid "Same material" msgstr "Zelfde materiaal" #: dialogs.c:729 msgid "Material range (top board half optional)" msgstr "Materiaalbereik (bovenste bordhelft is optioneel)" #: dialogs.c:729 msgid "Material difference (optional stuff balanced)" msgstr "Materiaalverschil (optioneel spul is in evenwicht)" #: dialogs.c:744 msgid "Auto-Display Tags" msgstr "Labels vanzelf tonen" #: dialogs.c:745 msgid "Auto-Display Comment" msgstr "Opmerkingen vanzelf tonen" #: dialogs.c:746 msgid "" "Auto-Play speed of loaded games\n" "(0 = instant, -1 = off):" msgstr "" "Speelsnelheid van geladen partijen\n" "(0 = instantaan, -1 = uit):" #: dialogs.c:747 msgid "Seconds per Move:" msgstr "Seconden per zet:" #: dialogs.c:748 msgid "" "\n" "options to use in game-viewer mode:" msgstr "" "\n" "Te gebruiken opties in viewer-modus:" #: dialogs.c:750 msgid "" "\n" "Thresholds for position filtering in game list:" msgstr "" "\n" "Drempelwaarden voor positiefiltering in partijenlijst:" #: dialogs.c:751 msgid "Elo of strongest player at least:" msgstr "Elo van sterkste speler minstens:" #: dialogs.c:752 msgid "Elo of weakest player at least:" msgstr "Elo van zwakste speler minstens:" #: dialogs.c:753 msgid "No games before year:" msgstr "Geen partijen vóór het jaar:" #: dialogs.c:754 msgid "Minimum nr consecutive positions:" msgstr "Minimum aantal opeenvolgende posities:" #: dialogs.c:756 msgid "Search mode:" msgstr "Zoekmodus:" #: dialogs.c:757 msgid "Also match reversed colors" msgstr "Ook matchen met verwisselde kleuren" #: dialogs.c:758 msgid "Also match left-right flipped position" msgstr "Ook matchen met links-rechts gespiegelde positie" #: dialogs.c:767 msgid "Load Game Options" msgstr "Partij-instellingen laden" #: dialogs.c:779 msgid "Auto-Save Games" msgstr "Partijen vanzelf opslaan" #: dialogs.c:780 msgid "Own Games Only" msgstr "Alleen eigen partijen" #: dialogs.c:781 msgid "Save Games on File:" msgstr "Partijen opslaan in:" #: dialogs.c:782 msgid "Save Final Positions on File:" msgstr "Eindposities opslaan in:" #: dialogs.c:783 msgid "PGN Event Header:" msgstr "PGN-gebeurtenis-kopregel:" #: dialogs.c:784 msgid "Old Save Style (as opposed to PGN)" msgstr "Oude opslagstijl (in plaats van PGN)" #: dialogs.c:785 msgid "Include Number Tag in tourney PGN" msgstr "Nummerlabel in toernooi-PGN opnemen" #: dialogs.c:786 msgid "Save Score/Depth Info in PGN" msgstr "Score-/diepte-informatie opslaan in PGN" #: dialogs.c:787 msgid "Save Out-of-Book Info in PGN " msgstr "Uit-het-boek-informatie opslaan in PGN " #: dialogs.c:794 msgid "Save Game Options" msgstr "Partij-instellingen opslaan" #: dialogs.c:803 msgid "No Sound" msgstr "(geen geluid)" #: dialogs.c:804 msgid "Default Beep" msgstr "Standaardpiep" #: dialogs.c:805 msgid "Above WAV File" msgstr "Bovenstaande WAV" #: dialogs.c:806 msgid "Car Horn" msgstr "Claxon" #: dialogs.c:807 msgid "Cymbal" msgstr "Cymbaal" #: dialogs.c:808 msgid "Ding" msgstr "Tink" #: dialogs.c:809 msgid "Gong" msgstr "Gong" #: dialogs.c:810 msgid "Laser" msgstr "Laser" #: dialogs.c:811 msgid "Penalty" msgstr "Zoemer" #: dialogs.c:812 msgid "Phone" msgstr "Telefoon" #: dialogs.c:813 msgid "Pop" msgstr "Plop" #: dialogs.c:814 msgid "Roar" msgstr "Brul" #: dialogs.c:815 msgid "Slap" msgstr "Klap" #: dialogs.c:816 msgid "Wood Thunk" msgstr "Houtplok" #: dialogs.c:818 msgid "User File" msgstr "Gebruikersbestand" #: dialogs.c:841 msgid "User WAV File:" msgstr "Eigen WAV-bestand:" #: dialogs.c:842 msgid "Sound Program:" msgstr "Geluidsprogramma:" #: dialogs.c:843 msgid "Try-Out Sound:" msgstr "Dit geluid proberen:" #: dialogs.c:844 msgid "Play" msgstr "Afspelen" #: dialogs.c:845 msgid "Move:" msgstr "Zet:" #: dialogs.c:846 msgid "Win:" msgstr "Gewonnen:" #: dialogs.c:847 msgid "Lose:" msgstr "Verloren:" #: dialogs.c:848 msgid "Draw:" msgstr "Remise:" #: dialogs.c:849 msgid "Unfinished:" msgstr "Onafgemaakt:" #: dialogs.c:850 msgid "Alarm:" msgstr "Wekker:" #: dialogs.c:851 msgid "Challenge:" msgstr "Uitdaging:" #: dialogs.c:853 msgid "Sounds Directory:" msgstr "Geluidenmap:" #: dialogs.c:854 msgid "Shout:" msgstr "Shout:" #: dialogs.c:855 msgid "S-Shout:" msgstr "S-Shout:" #: dialogs.c:856 msgid "Channel:" msgstr "Kanaal:" #: dialogs.c:857 msgid "Channel 1:" msgstr "Kanaal 1:" #: dialogs.c:858 msgid "Tell:" msgstr "Tell:" #: dialogs.c:859 msgid "Kibitz:" msgstr "Kibitz:" #: dialogs.c:860 msgid "Request:" msgstr "Verzoek:" #: dialogs.c:861 msgid "Lion roar:" msgstr "Leeuwenbrul:" #: dialogs.c:862 msgid "Seek:" msgstr "Zoeken:" #: dialogs.c:880 msgid "Sound Options" msgstr "Geluidsinstellingen" #: dialogs.c:896 msgid "Selectable themes:" msgstr "Selecteerbare thema's:" #: dialogs.c:898 msgid "New name for current theme:" msgstr "Nieuwe naam voor huidig thema:" #: dialogs.c:901 msgid "White Piece Color:" msgstr "Kleur van wit stuk:" #. TRANSLATORS: R = single letter for the color red #: dialogs.c:904 dialogs.c:913 dialogs.c:919 dialogs.c:925 dialogs.c:931 #: dialogs.c:937 msgid "R" msgstr "R" #. TRANSLATORS: G = single letter for the color green #: dialogs.c:906 dialogs.c:914 dialogs.c:920 dialogs.c:926 dialogs.c:932 #: dialogs.c:938 msgid "G" msgstr "G" #. TRANSLATORS: B = single letter for the color blue #: dialogs.c:908 dialogs.c:915 dialogs.c:921 dialogs.c:927 dialogs.c:933 #: dialogs.c:939 dialogs.c:1674 dialogs.c:1680 dialogs.c:1686 dialogs.c:1692 #: dialogs.c:1698 dialogs.c:1704 dialogs.c:1710 msgid "B" msgstr "B" #. TRANSLATORS: D = single letter to make a color darker #: dialogs.c:910 dialogs.c:916 dialogs.c:922 dialogs.c:928 dialogs.c:934 #: dialogs.c:940 msgid "D" msgstr "D" #: dialogs.c:911 msgid "Black Piece Color:" msgstr "Kleur van zwart stuk:" #: dialogs.c:917 msgid "Light Square Color:" msgstr "Kleur van licht veld:" #: dialogs.c:923 msgid "Dark Square Color:" msgstr "Kleur van donker veld:" #: dialogs.c:929 msgid "Highlight Color:" msgstr "Markeringskleur:" #: dialogs.c:935 msgid "Premove Highlight Color:" msgstr "Voorzet-markeringskleur:" #: dialogs.c:941 msgid "Flip Pieces Shogi Style (Colored buttons restore default)" msgstr "" "Stukken op Shogi-manier omdraaien (gekleurde knoppen herstellen standaard)" #: dialogs.c:943 msgid "Mono Mode" msgstr "Mono-modus" #: dialogs.c:944 msgid "Logo Size (0=off, requires restart):" msgstr "Logogrootte (0=uit, vereist een herstart):" #: dialogs.c:945 msgid "Line Gap (-1 = default for board size):" msgstr "Regeltussenruimte (-1 = standaard voor bordgrootte):" #: dialogs.c:946 msgid "Use Board Textures" msgstr "Bordtexturen gebruiken" #: dialogs.c:947 msgid "Dark-Squares Texture File:" msgstr "Textuurbestand voor donkere velden:" #: dialogs.c:948 msgid "Light-Squares Texture File:" msgstr "Textuurbestand voor lichte velden:" #: dialogs.c:949 msgid "Use external piece bitmaps with their own colors" msgstr "Externe bitmaps met eigen kleuren voor stukken gebruiken" #: dialogs.c:950 msgid "Directory with Pieces Images:" msgstr "Map met afbeeldingen van stukken:" #: dialogs.c:1021 msgid "# no themes are defined" msgstr "# er zijn geen thema's gedefinieerd" #: dialogs.c:1033 msgid "Board Options" msgstr "Bordinstellingen" #: dialogs.c:1105 menus.c:670 msgid "ICS text menu" msgstr "ICS-tekstmenu" #: dialogs.c:1134 msgid "clear" msgstr "wissen" #: dialogs.c:1135 msgid "save changes" msgstr "wijzigingen opslaan" #: dialogs.c:1233 msgid "add next move" msgstr "volgende zet toevoegen" #: dialogs.c:1234 msgid "commit changes" msgstr "wijzigingen doorvoeren" #: dialogs.c:1257 msgid "Edit book" msgstr "Boek bewerken" #: dialogs.c:1274 dialogs.c:1281 menus.c:666 msgid "Tags" msgstr "Labels" #: dialogs.c:1405 msgid "ICS input box" msgstr "ICS-invoervak" #: dialogs.c:1437 msgid "Type a move" msgstr "Typ een zet" #: dialogs.c:1463 msgid "Engine has no options" msgstr "Automaat kent geen instellingen." #: dialogs.c:1465 msgid "Engine Settings" msgstr "Automaatinstellingen" #: dialogs.c:1506 msgid "Select engine from list:" msgstr "Selecteer een automaat uit de lijst:" #: dialogs.c:1509 msgid "or specify one below:" msgstr "of geef er hieronder een op:" #: dialogs.c:1510 msgid "Nickname (optional):" msgstr "Bijnaam (optioneel):" #: dialogs.c:1511 msgid "Use nickname in PGN player tags of engine-engine games" msgstr "Bijnaam gebruiken in PGN-spelerlabels van automaat-automaat-partijen" #: dialogs.c:1512 msgid "Engine Directory:" msgstr "Automatenmap:" #: dialogs.c:1513 msgid "Engine Command:" msgstr "Automaatopdracht:" #: dialogs.c:1514 msgid "(Directory will be derived from engine path when empty)" msgstr "(map wordt afgeleid uit automaatpad indien leeg)" #: dialogs.c:1515 msgid "UCI" msgstr "UCI" #: dialogs.c:1516 msgid "USI/UCCI (uses specified -uxiAdapter)" msgstr "USI/UCCI (gebruikt de opgegeven -uxiAdapter)" #: dialogs.c:1517 msgid "WB protocol v1 (do not wait for engine features)" msgstr "WB-protocol v1 (niet op automaateigenschappen wachten)" #: dialogs.c:1518 msgid "Must not use GUI book" msgstr "Hoort geen GUI-boek te gebruiken" #: dialogs.c:1519 msgid "Add this engine to the list" msgstr "Deze automaat aan de lijst toevoegen" #: dialogs.c:1520 msgid "Force current variant with this engine" msgstr "Huidige variant opdringen aan deze automaat" #: dialogs.c:1574 msgid "Load first engine" msgstr "Eerste automaat laden" #: dialogs.c:1580 msgid "Load second engine" msgstr "Tweede automaat laden" # XXX gets truncated to 7 chars #: dialogs.c:1603 msgid "shuffle" msgstr "Husselen" #: dialogs.c:1604 msgid "Fischer castling" msgstr "Fischer-rokade" #: dialogs.c:1605 msgid "Start-position number:" msgstr "Startpositienummer:" #: dialogs.c:1606 msgid "randomize" msgstr "Willekeurig" #: dialogs.c:1607 msgid "pick fixed" msgstr "Vaste kiezen" #: dialogs.c:1624 msgid "New Shuffle Game" msgstr "Husselpartij" #: dialogs.c:1671 msgid "Clocks (requires restart):" msgstr "Klokken (vereist een herstart):" #: dialogs.c:1672 dialogs.c:1678 dialogs.c:1684 dialogs.c:1690 dialogs.c:1696 #: dialogs.c:1702 dialogs.c:1708 msgid "+" msgstr "+" #: dialogs.c:1673 dialogs.c:1679 dialogs.c:1685 dialogs.c:1691 dialogs.c:1697 #: dialogs.c:1703 dialogs.c:1709 msgid "-" msgstr "-" #: dialogs.c:1675 dialogs.c:1681 dialogs.c:1687 dialogs.c:1693 dialogs.c:1699 #: dialogs.c:1705 dialogs.c:1711 msgid "I" msgstr "I" #: dialogs.c:1676 dialogs.c:1682 dialogs.c:1688 dialogs.c:1694 dialogs.c:1700 #: dialogs.c:1706 dialogs.c:1712 msgid "*" msgstr "*" #: dialogs.c:1677 msgid "Message (above board):" msgstr "Bericht (boven tafel):" #: dialogs.c:1683 msgid "ICS Chat/Console:" msgstr "ICS-chat/Console:" #: dialogs.c:1689 msgid "Edit tags / book / engine list:" msgstr "Labels-/Boeken-/Automatenlijst bewerken:" #: dialogs.c:1695 msgid "Edit comments:" msgstr "Opmerkingen bewerken:" #: dialogs.c:1701 msgid "Move history / Engine Output:" msgstr "Zettengeschiedenis / Automaatuitvoer:" #: dialogs.c:1707 msgid "Game list:" msgstr "Partijenlijst:" #: dialogs.c:1713 msgid "" "\n" "The * buttons will set the font to the one selected below:" msgstr "" "\n" "De * knoppen stellen het hieronder geselecteerde lettertype in:" #: dialogs.c:1767 msgid "This only works in the GTK build" msgstr "Dit werkt alleen in de GTK-versie" #: dialogs.c:1768 msgid "Fonts" msgstr "Lettertypen" #: dialogs.c:1791 msgid "classical" msgstr "Klassiek" #: dialogs.c:1792 msgid "incremental" msgstr "Ophogend" #: dialogs.c:1793 msgid "fixed max" msgstr "Vast maximum" #: dialogs.c:1794 msgid "Divide entered times by 60" msgstr "Ingevoerde tijden door 60 delen" #: dialogs.c:1795 msgid "Moves per session:" msgstr "Zetten per sessie:" #: dialogs.c:1796 msgid "Initial time (min):" msgstr "Begintijd (minuten)" #: dialogs.c:1797 msgid "Increment or max (sec/move):" msgstr "Ophoging of maximaal (sec/zet):" #: dialogs.c:1798 msgid "Time-Odds factors:" msgstr "Tijdsfactoren:" #: dialogs.c:1799 msgid "Engine #1" msgstr "Automaat 1" #: dialogs.c:1800 msgid "Engine #2 / Human" msgstr "Automaat 2 / Mens" # XXX gets truncated at start to 8 chars #: dialogs.c:1841 dialogs.c:1844 dialogs.c:1849 dialogs.c:1850 #: gtk/xoptions.c:183 msgid "Unused" msgstr "(loos)" #: dialogs.c:1859 msgid "Changing time control during a game is not implemented" msgstr "" "Het wijzigen van de tijdsinstellingen tijdens een partij is niet " "geïmplementeerd." #: dialogs.c:1896 msgid "Error writing to chess program" msgstr "Fout bij schrijven naar schaakprogramma" #: dialogs.c:1964 gtk/xoptions.c:1811 xaw/xoptions.c:1341 msgid "Cancel" msgstr "Annuleren" #: dialogs.c:1969 dialogs.c:2724 dialogs.c:2728 msgid "King" msgstr "Koning" #: dialogs.c:1972 msgid "Captain" msgstr "Kapitein" #: dialogs.c:1973 msgid "Lieutenant" msgstr "Luitenant" #: dialogs.c:1974 msgid "General" msgstr "Generaal" #: dialogs.c:1975 msgid "Warlord" msgstr "Krijgsheer" #: dialogs.c:1977 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Knight" msgstr "Paard" #: dialogs.c:1978 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Bishop" msgstr "Loper" #: dialogs.c:1979 dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Rook" msgstr "Toren" #: dialogs.c:1983 dialogs.c:2725 dialogs.c:2729 msgid "Archbishop" msgstr "Aartsbisschop" #: dialogs.c:1984 dialogs.c:2725 dialogs.c:2729 msgid "Chancellor" msgstr "Kanselier" #: dialogs.c:1986 dialogs.c:2724 dialogs.c:2728 dialogs.c:2746 msgid "Queen" msgstr "Koningin" #: dialogs.c:1988 msgid "Lion" msgstr "Leeuw" #: dialogs.c:1992 msgid "Defer" msgstr "Uitstellen" #: dialogs.c:1993 dialogs.c:2725 dialogs.c:2729 msgid "Promote" msgstr "Promoveren" #: dialogs.c:2050 msgid "Chats:" msgstr "Chats:" #: dialogs.c:2051 dialogs.c:2052 dialogs.c:2053 dialogs.c:2054 dialogs.c:2055 #: dialogs.c:2161 dialogs.c:2226 dialogs.c:2258 msgid "New Chat" msgstr "Nieuwe chat" #: dialogs.c:2058 msgid "Chat partner:" msgstr "Chatpartner:" #: dialogs.c:2059 msgid "End Chat" msgstr "Chat beëindigen" #: dialogs.c:2060 msgid "Hide" msgstr "Verbergen" #: dialogs.c:2287 msgid "ICS Interaction" msgstr "ICS-interactie" #: dialogs.c:2372 msgid "factory" msgstr "origineel" #: dialogs.c:2373 msgid "up" msgstr "omhoog" #: dialogs.c:2374 msgid "down" msgstr "omlaag" #: dialogs.c:2393 msgid "No tag selected" msgstr "Geen label geselecteerd" #: dialogs.c:2424 msgid "Game-list options" msgstr "Partijenlijst-instellingen" #: dialogs.c:2502 dialogs.c:2516 msgid "Error" msgstr "Fout" #: dialogs.c:2545 msgid "Fatal Error" msgstr "Fatale fout" #: dialogs.c:2545 msgid "Exiting" msgstr "Afsluiten" #: dialogs.c:2556 msgid "Information" msgstr "Informatie" #: dialogs.c:2563 msgid "Note" msgstr "Notitie" #: dialogs.c:2723 dialogs.c:3016 dialogs.c:3019 msgid "White" msgstr "Wit" #: dialogs.c:2723 dialogs.c:2727 dialogs.c:2746 msgid "Pawn" msgstr "Pion" #: dialogs.c:2724 dialogs.c:2728 msgid "Elephant" msgstr "Olifant" #: dialogs.c:2724 dialogs.c:2728 msgid "Cannon" msgstr "Kanon" #: dialogs.c:2725 dialogs.c:2729 msgid "Demote" msgstr "Degraderen" #: dialogs.c:2726 dialogs.c:2730 msgid "Empty square" msgstr "Leeg veld" #: dialogs.c:2726 dialogs.c:2730 msgid "Clear board" msgstr "Bord leegmaken" #: dialogs.c:2727 dialogs.c:3028 dialogs.c:3031 msgid "Black" msgstr "Zwart" #: dialogs.c:2827 msgid "_File" msgstr "_Bestand" #: dialogs.c:2828 msgid "_Edit" msgstr "B_ewerken" #: dialogs.c:2829 msgid "_View" msgstr "_Weergave" #: dialogs.c:2830 msgid "_Mode" msgstr "_Modus" #: dialogs.c:2831 msgid "_Action" msgstr "_Acties" #: dialogs.c:2832 msgid "E_ngine" msgstr "A_utomaat" #: dialogs.c:2833 msgid "_Options" msgstr "_Opties" #: dialogs.c:2834 msgid "_Help" msgstr "_Hulp" #: dialogs.c:2844 msgid "<<" msgstr "<<" #: dialogs.c:2845 msgid "<" msgstr "<" #: dialogs.c:2847 msgid ">" msgstr ">" #: dialogs.c:2848 msgid ">>" msgstr ">>" #: dialogs.c:3136 msgid "Directories:" msgstr "Mappen:" #: dialogs.c:3137 msgid "Files:" msgstr "Bestanden:" #: dialogs.c:3138 msgid "by name" msgstr "op naam" #: dialogs.c:3139 msgid "by type" msgstr "op type" #: dialogs.c:3142 msgid "Filename:" msgstr "Bestandsnaam:" #: dialogs.c:3143 msgid "New directory" msgstr "Nieuwe map" #: dialogs.c:3144 msgid "File type:" msgstr "Bestandstype:" #: dialogs.c:3219 msgid "Contents of" msgstr "Inhoud van" #: dialogs.c:3245 msgid " next page" msgstr " volgende pagina" #: dialogs.c:3262 msgid "FIRST TYPE DIRECTORY NAME HERE" msgstr "Typ hier eerst een mapnaam" #: dialogs.c:3263 msgid "TRY ANOTHER NAME" msgstr "Kies een andere naam" #: draw.c:404 msgid "" "No default pieces installed!\n" "Select your own using '-pieceImageDirectory'." msgstr "" "Er zijn geen standaardstukken geïnstalleerd!\n" "Kies uw eigen met '-pieceImageDirectory'." #: engineoutput.c:112 menus.c:661 #, c-format msgid "Engine Output" msgstr "Automaatuitvoer" #: engineoutput.c:122 #, c-format msgid "%s (%d reversible ply)" msgid_plural "%s (%d reversible plies)" msgstr[0] "%s (%d omkeerbare ply)" msgstr[1] "%s (%d omkeerbare plies)" #: engineoutput.c:565 engineoutput.c:568 nengineoutput.c:83 nengineoutput.c:91 msgid "NPS" msgstr "NPS" #: gamelist.c:379 #, c-format msgid "Reading game file (%d)" msgstr "Lezen van partijbestand (%d)" #: gtk/xboard.c:991 xaw/xboard.c:1074 #, c-format msgid "%s: can't cd to CHESSDIR: " msgstr "%s: Kan huidige map niet wijzigen naar CHESSDIR: " #: gtk/xboard.c:1000 xaw/xboard.c:1083 #, c-format msgid "Failed to open file '%s'\n" msgstr "Kan bestand '%s' niet openen\n" #: gtk/xboard.c:1015 xaw/xboard.c:1092 msgid "Recompile with larger BOARD_RANKS or BOARD_FILES to support this size" msgstr "" "*** Hercompileer met grotere BOARD_RANKS of BOARD_FILES om deze grootte te " "ondersteunen" #: gtk/xboard.c:1034 xaw/xboard.c:1124 #, c-format msgid "%s: bad boardSize syntax %s\n" msgstr "%s: onjuiste syntax %s voor 'boardSize'\n" #: gtk/xboard.c:1075 xaw/xboard.c:1163 #, c-format msgid "%s: unrecognized boardSize name %s\n" msgstr "%s: onbekende naam %s voor 'boardSize'\n" #: gtk/xboard.c:1119 xaw/xboard.c:1200 #, c-format msgid "%s: too few colors available; trying monochrome mode\n" msgstr "%s: te weinig kleuren beschikbaar; monochroommodus wordt geprobeerd\n" #: gtk/xboard.c:1434 xaw/xboard.c:1492 #, c-format msgid "Unable to create font set for %s.\n" msgstr "Kan geen lettertypenset aanmaken voor %s.\n" #: gtk/xboard.c:1459 xaw/xboard.c:1515 #, c-format msgid "%s: no fonts match pattern %s\n" msgstr "%s: er zijn geen lettertypen die overeenkomen met patroon %s\n" #: gtk/xboard.c:1963 xaw/xboard.c:2007 msgid "Can't open temp file" msgstr "Kan tijdelijk bestand niet openen" #: gtk/xboard.c:2495 msgid "Failed to open file" msgstr "Kan bestand niet openen" #: gtk/xoptions.c:1188 msgid "*** Board window shows preview of selection ***" msgstr "" #: gtk/xoptions.c:1537 msgid "Browse" msgstr "Bladeren" #: gtk/xoptions.c:1808 xaw/xoptions.c:1337 msgid "OK" msgstr "OK" #: menus.c:136 msgid "Load game file name?" msgstr "Partij laden uit bestand:" #: menus.c:183 msgid "Load position file name?" msgstr "Positie laden uit bestand:" #: menus.c:189 menus.c:601 msgid "Save game file name?" msgstr "Partij opslaan in bestand:" #: menus.c:198 msgid "Save position file name?" msgstr "Positie opslaan in bestand:" #: menus.c:355 msgid " (with Zippy code)" msgstr " (met Zippy-code)" #: menus.c:360 #, c-format msgid "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Enhancements Copyright 1992-2016 Free Software Foundation\n" "Enhancements Copyright 2005 Alessandro Scotti\n" "\n" "%s is free software and carries NO WARRANTY;see the file COPYING for more " "information.\n" "\n" "Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n" "Check out the newest features at: http://www.gnu.org/software/xboard/" "whats_new.html\n" "\n" "Report bugs via email at: \n" "\n" msgstr "" "%s%s\n" "\n" "Copyright 1991 Digital Equipment Corporation\n" "Uitbreidingen Copyright 1992-2016 Free Software Foundation\n" "Uitbreidingen Copyright 2005 Alessandro Scotti\n" "\n" "%s is vrije software en kent GEEN GARANTIE;\n" "zie het bestand COPYING voor meer informatie.\n" "\n" "Bezoek XBoard op het web: http://www.gnu.org/software/xboard/\n" "Voor nieuwe functies zie: http://www.gnu.org/software/xboard/whats_new/\n" "\n" "Rapporteer gebreken in het programma aan ;\n" "meld vertaalfouten aan .\n" "\n" #: menus.c:371 menus.c:788 msgid "About XBoard" msgstr "Over XBoard" #: menus.c:390 msgid "Registered Engines" msgstr "Geregistreerde automaten" #: menus.c:396 msgid "Predefined Themes" msgstr "" #: menus.c:402 msgid "ICS Text-Menu Definition" msgstr "" #: menus.c:612 msgid "New Game" msgstr "Nieuwe partij" #: menus.c:613 msgid "New Shuffle Game..." msgstr "Nieuwe husselpartij..." # XXX "NEW" is wrong #: menus.c:614 msgid "New Variant..." msgstr "Nieuwe variantpartij..." #: menus.c:616 msgid "Load Game" msgstr "Partij laden" #: menus.c:617 msgid "Load Position" msgstr "Positie laden" #: menus.c:618 msgid "Next Position" msgstr "Volgende positie" #: menus.c:619 msgid "Prev Position" msgstr "Vorige positie" #: menus.c:621 msgid "Save Game" msgstr "Partij opslaan" #: menus.c:622 msgid "Save Position" msgstr "Positie opslaan" #: menus.c:623 msgid "Save Selected Games" msgstr "Geselecteerde partijen opslaan" #: menus.c:624 msgid "Save Games as Book" msgstr "Partijen opslaan als boek" #: menus.c:626 msgid "Mail Move" msgstr "Zet mailen" #: menus.c:627 msgid "Reload CMail Message" msgstr "CMail-bericht herladen" #: menus.c:629 msgid "Quit " msgstr "Afsluiten " #: menus.c:634 msgid "Copy Game" msgstr "Partij kopiëren" #: menus.c:635 msgid "Copy Position" msgstr "Positie kopiëren" #: menus.c:636 msgid "Copy Game List" msgstr "Partijenlijst kopiëren" #: menus.c:638 msgid "Paste Game" msgstr "Partij plakken" #: menus.c:639 msgid "Paste Position" msgstr "Positie plakken" #: menus.c:641 menus.c:686 msgid "Edit Game" msgstr "Partij bewerken" #: menus.c:642 menus.c:687 msgid "Edit Position" msgstr "Positie bewerken" #: menus.c:643 msgid "Edit Tags" msgstr "Labels bewerken" #: menus.c:644 msgid "Edit Comment" msgstr "Opmerking bewerken" #: menus.c:645 msgid "Edit Book" msgstr "Boek bewerken" #: menus.c:647 msgid "Revert" msgstr "Terugdraaien" #: menus.c:648 msgid "Annotate" msgstr "Annoteren" #: menus.c:649 msgid "Truncate Game" msgstr "Partij afkappen" #: menus.c:651 msgid "Backward" msgstr "Achterwaarts" #: menus.c:652 msgid "Forward" msgstr "Voorwaarts" #: menus.c:653 msgid "Back to Start" msgstr "Terug naar begin" #: menus.c:654 msgid "Forward to End" msgstr "Vooruit naar einde" #: menus.c:659 msgid "Flip View" msgstr "Bord draaien" #: menus.c:662 msgid "Move History" msgstr "Zettengeschiedenis" #: menus.c:663 msgid "Evaluation Graph" msgstr "Evaluatiegrafiek" #: menus.c:664 msgid "Game List" msgstr "Partijenlijst" #: menus.c:667 msgid "Comments" msgstr "Opmerkingen" #: menus.c:668 msgid "ICS Input Box" msgstr "ICS-invoervak" #: menus.c:669 msgid "ICS/Chat Console" msgstr "ICS/chat-console" #: menus.c:671 #, fuzzy msgid "Edit ICS menu..." msgstr "Opmerking bewerken" #: menus.c:673 #, fuzzy msgid "Edit Theme List..." msgstr "Automatenlijst bewerken..." #: menus.c:674 msgid "Board..." msgstr "Bord..." #: menus.c:675 msgid "Fonts..." msgstr "Lettertypen..." #: menus.c:676 msgid "Game List Tags..." msgstr "Partijenlijst-labels..." #: menus.c:681 msgid "Machine White" msgstr "Automaat heeft wit" #: menus.c:682 msgid "Machine Black" msgstr "Automaat heeft zwart" #: menus.c:683 msgid "Two Machines" msgstr "Twee automaten" #: menus.c:684 msgid "Analysis Mode" msgstr "Analysemodus" #: menus.c:685 msgid "Analyze Game" msgstr "Partij analyseren" #: menus.c:688 msgid "Training" msgstr "Training" #: menus.c:689 msgid "ICS Client" msgstr "ICS-cliënt" #: menus.c:691 msgid "Machine Match" msgstr "Automatentoernooi" #: menus.c:692 msgid "Pause" msgstr "Pauzeren" #: menus.c:697 msgid "Accept" msgstr "Accepteren" #: menus.c:698 msgid "Decline" msgstr "Weigeren" #: menus.c:699 msgid "Rematch" msgstr "Revanche" #: menus.c:701 msgid "Call Flag" msgstr "'Vlag' roepen" #: menus.c:702 msgid "Draw" msgstr "Remise" #: menus.c:703 msgid "Adjourn" msgstr "Opschorten" #: menus.c:704 msgid "Abort" msgstr "Afbreken" #: menus.c:705 msgid "Resign" msgstr "Opgeven" #: menus.c:707 msgid "Stop Observing" msgstr "Stoppen met observeren" #: menus.c:708 msgid "Stop Examining" msgstr "Stoppen met bestuderen" #: menus.c:709 msgid "Upload to Examine" msgstr "Uploaden om te bestuderen" #: menus.c:711 msgid "Adjudicate to White" msgstr "Winst aan wit toekennen" #: menus.c:712 msgid "Adjudicate to Black" msgstr "Winst aan zwart toekennen" #: menus.c:713 msgid "Adjudicate Draw" msgstr "Tot remise besluiten" #: menus.c:718 msgid "Edit Engine List..." msgstr "Automatenlijst bewerken..." #: menus.c:720 msgid "Load New 1st Engine..." msgstr "Nieuwe 1ste automaat laden..." #: menus.c:721 msgid "Load New 2nd Engine..." msgstr "Nieuwe 2de automaat laden..." #: menus.c:723 msgid "Engine #1 Settings..." msgstr "Instellingen van automaat 1..." #: menus.c:724 msgid "Engine #2 Settings..." msgstr "Instellingen van automaat 2..." #: menus.c:725 msgid "Common Settings..." msgstr "Algemene instellingen..." #: menus.c:727 msgid "Hint" msgstr "Hint" #: menus.c:728 msgid "Book" msgstr "Boek" #: menus.c:730 msgid "Move Now" msgstr "Nu zetten" #: menus.c:731 msgid "Retract Move" msgstr "Zet terugnemen" #: menus.c:736 #, fuzzy msgid "Mute all Sounds" msgstr "Zetgeluid" #: menus.c:739 msgid "General..." msgstr "Algemeen..." #: menus.c:741 msgid "Time Control..." msgstr "Tijdsbeperking..." #: menus.c:742 msgid "Adjudications..." msgstr "Beslissingen..." #: menus.c:743 msgid "ICS..." msgstr "ICS..." #: menus.c:744 msgid "Tournament..." msgstr "Toernooi..." #: menus.c:745 msgid "Load Game..." msgstr "Partij laden..." #: menus.c:746 msgid "Save Game..." msgstr "Partij opslaan..." #: menus.c:747 msgid "Game List..." msgstr "Partijenlijst..." #: menus.c:748 msgid "Sounds..." msgstr "Geluiden..." #: menus.c:751 msgid "Always Queen" msgstr "Altijd koningin" #: menus.c:757 msgid "Flash Moves" msgstr "Zetten laten knipperen" #: menus.c:759 msgid "Highlight Dragging" msgstr "Slepen markeren" #: menus.c:762 msgid "Highlight With Arrow" msgstr "Markeren met pijl" #: menus.c:763 msgid "Move Sound" msgstr "Zetgeluid" #: menus.c:765 msgid "Periodic Updates" msgstr "Periodieke updates" #: menus.c:767 msgid "Popup Exit Message" msgstr "Popup-afsluitbericht" #: menus.c:769 msgid "Show Coords" msgstr "Coördinaten tonen" #: menus.c:770 msgid "Hide Thinking" msgstr "Denken verbergen" #: menus.c:774 msgid "Save Settings Now" msgstr "Instellingen nu opslaan" #: menus.c:775 msgid "Save Settings on Exit" msgstr "Instellingen opslaan bij afsluiten" #: menus.c:780 msgid "Info XBoard" msgstr "'info xboard'" #: menus.c:781 msgid "Man XBoard" msgstr "'man xboard'" #: menus.c:783 msgid "XBoard Home Page" msgstr "Webpagina van XBoard" #: menus.c:784 msgid "On-line User Guide" msgstr "Online gebruikersgids" #: menus.c:785 msgid "Development News" msgstr "Ontwikkelingsnieuws" #: menus.c:786 msgid "e-Mail Bug Report" msgstr "Foutrapportage mailen" #: menus.c:825 msgid "File" msgstr "Bestand" #: menus.c:826 msgid "Edit" msgstr "Bewerken" #: menus.c:827 msgid "View" msgstr "Weergave" #: menus.c:828 msgid "Mode" msgstr "Modus" #: menus.c:829 msgid "Action" msgstr "Acties" #: menus.c:830 msgid "Engine" msgstr "Automaat" # XXX "Instellingen" is te lang, wordt afgeknabbeld. #: menus.c:831 msgid "Options" msgstr "Opties" #: menus.c:832 msgid "Help" msgstr "Hulp" #: nengineoutput.c:79 nengineoutput.c:87 msgid "engine name" msgstr "automaatnaam" #. TRANSLATORS: noun, as in "the move Nf3" #: nengineoutput.c:82 nengineoutput.c:90 msgid "move" msgstr "zetten" #: nengineoutput.c:156 msgid "Engine output" msgstr "Automaatuitvoer" #: nengineoutput.c:160 msgid "" "Mismatch of STRIDE in nengineoutput.c\n" "Change and recompile!" msgstr "" "*** Niet-passende 'STRIDE' in 'nengineoutput.c'.\n" "Pas deze aan en hercompileer." #: nevalgraph.c:69 msgid "Evaluation graph" msgstr "Evaluatiegrafiek" #: nevalgraph.c:69 msgid "Blunder graph" msgstr "Blundergrafiek" #: nevalgraph.c:107 msgid "Blunder" msgstr "Blunder" #: nevalgraph.c:107 msgid "Eval" msgstr "Eval" #: ngamelist.c:87 msgid "find position" msgstr "positie vinden" #: ngamelist.c:88 msgid "narrow" msgstr "nauw" #: ngamelist.c:89 msgid "thresholds" msgstr "grenswaarden" #: ngamelist.c:90 msgid "tags" msgstr "labels" #: ngamelist.c:91 msgid "next" msgstr "volgende" #: ngamelist.c:92 msgid "close" msgstr "sluiten" #: ngamelist.c:116 msgid "No game selected" msgstr "Geen partij geselecteerd" #: ngamelist.c:122 msgid "Can't go forward any further" msgstr "Kan niet nog verder vooruitgaan" #: ngamelist.c:192 #, c-format msgid "Scanning through games (%d)" msgstr "Zoeken door partijen (%d)" #: ngamelist.c:211 msgid "previous page" msgstr "voorgaande pagina" #: ngamelist.c:214 msgid "next page" msgstr "volgende pagina" #: ngamelist.c:217 msgid "no games matched your request" msgstr "er zijn geen partijen die overeenkomen met uw verzoek" #: ngamelist.c:219 #, c-format msgid "%s - %d/%d games (%d-%d-%d)" msgstr "%s - %d/%d partijen (%d-%d-%d)" #: ngamelist.c:284 msgid "There is no game list" msgstr "Er is geen partijenlijst" #: nhistory.c:109 msgid "Move list" msgstr "Zettenlijst" #: usystem.c:223 #, c-format msgid "%s: unrecognized color %s\n" msgstr "%s: niet-herkende kleur %s\n" #: usystem.c:231 #, c-format msgid "%s: can't parse foreground color in '%s'\n" msgstr "%s: onbegrepen voorgrondkleur in '%s'\n" #: usystem.c:260 #, c-format msgid "%s: can't parse color names; disabling colorization\n" msgstr "%s: onbegrepen kleurnamen; kleuring wordt uitgeschakeld\n" #: usystem.c:362 #, c-format msgid "ERROR: Unknown user %s (in path %s)\n" msgstr "Fout: onbekende gebruiker %s (in pad %s)\n" # FIXME: has not been configured #: usystem.c:571 msgid "Socket support is not configured in" msgstr "Ondersteuning voor sockets is niet geconfigureerd" #: usystem.c:660 msgid "internal rcmd not implemented for Unix" msgstr "interne 'rcmd' is niet geïmplementeerd voor Unix" #: xaw/xboard.c:1206 #, c-format msgid "white pixel = 0x%lx, black pixel = 0x%lx\n" msgstr "witte pixel = 0x%lx, zwarte pixel = 0x%lx\n" #: xaw/xoptions.c:378 xaw/xoptions.c:1082 msgid "browse" msgstr "Bladeren" #: xaw/xoptions.c:444 xaw/xoptions.c:445 msgid "Ctrl" msgstr "Ctrl" #: xaw/xoptions.c:450 xaw/xoptions.c:451 msgid "Alt" msgstr "Alt" #: xaw/xoptions.c:456 xaw/xoptions.c:457 msgid "Shift" msgstr "Shift" #~ msgid "Common Engine..." #~ msgstr "Gemeenschappelijke automaat..." #~ msgid "Match Options" #~ msgstr "Toernooi-instellingen" #~ msgid "Chat box" #~ msgstr "Chatbox" #~ msgid "Open Chat Window" #~ msgstr "Chatvenster openen" #~ msgid "Match ..." #~ msgstr "Toernooi..." #~ msgid "%s: Can't access XPM directory %s\n" #~ msgstr "%s: Kan geen toegang krijgen tot XPM-map %s\n" #~ msgid "Available `%s' sizes:\n" #~ msgstr "Beschikbare '%s'-groottes:\n" #~ msgid "Error: No `%s' files!\n" #~ msgstr "Fout: geen '%s'-bestanden!\n" #~ msgid "Error %d loading icon image\n" #~ msgstr "Fout %d tijdens laden van pictogram\n" #~ msgid "cancel" #~ msgstr "Annuleren" xboard-4.9.1/po/Makefile.in.in0000644000175000001440000003552412421746651013032 00000000000000# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper # # This file can be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU General Public # License but which still want to provide support for the GNU gettext # functionality. # Please note that the actual code of GNU gettext is covered by the GNU # General Public License and is *not* in the public domain. # # Origin: gettext-0.17 GETTEXT_MACRO_VERSION = 0.17 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = @localedir@ gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, # @install_sh@ does not start with $(SHELL), so we add it. # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. mkinstalldirs = $(SHELL) @install_sh@ -d install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) MSGFMT_ = @MSGFMT@ MSGFMT_no = @MSGFMT@ MSGFMT_yes = @MSGFMT_015@ MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: check-macro-version all-@USE_NLS@ all-yes: stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. check-macro-version: @test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ exit 1; \ } # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. # In this case, stamp-po is a nop (i.e. a phony target). # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ echo "touch stamp-po" && \ echo timestamp > stamp-poT && \ mv stamp-poT stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \ package_gnu='GNU '; \ else \ package_gnu=''; \ fi; \ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ else \ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_gnu}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(srcdir)/$(DOMAIN).pot @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all $(mkdir_p) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: $(mkdir_p) $(DESTDIR)$(datadir) @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(MAKE) update-po @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir) || exit 1; \ else \ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && $(SHELL) ./config.status $(subdir)/$@.in po-directories force: # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xboard-4.9.1/po/zh_CN.gmo0000644000175000001440000013241712747544040012063 00000000000000+:;:0:$:#; %;1;L;d;/{;;;;<&<@<=>42>)g>>5>#> ?7%?]?_? a?m?o?x?z?}???? ???????'?@7@K@_@p@v@@7@K@A&+ARAmA qA"~AA A)A%A B%$BJB[BjBB B BB BBBBC C #C80CiCC6CC C CCD D9DVD _DmDDDDDD DD DD D E0EGEPEUE iE*tEEEE E EEE) F5FEFZFrFFFFFFFF F F6G:G RG]G fGtG {GG.GG GGH(H 1H?HVHiHH HH H%HHHI%I!EI gIrI wIIIIII I.IIJ JJ,J 1J>J#\JJ!JVJK2K7K$QKvK |K'KK K$KKK L LL ,L 6L DL NL XLeL}LLL!LL LMM $M0M 7MAMXMnM MMMM MM2M*N @NNN&TN!{N&N(NNO! OBOWOvO0OOOOOOP#P'P>PRP"lP"P.P P PP Q Q &Q0Q7QIQX[Q8QQ Q R)R@CR RRR8R&RRSSS 4S>S PS(]SS SSS/ST!T2T:T JT UTcThT TTTTTTT UU)U:UMUaUvUUUUU U UU U U UUV,V CV0PV!VV VV!V#W?WNW kW wWW&W#WWWXX6X FXSXgXoXtX{X XXX'XX X XX YY4Y KYYYkYYY$YY Y Y YZ6!Z-XZ)Z-Z)Z [[ [%$["J[m[;[[ [ [[ [[ \\\1\ G\T\d\h\\\\\\ \\ \\ ]&];] D]JN]]-]]]^ ^>^O^k^^^^!^^^_ _!_+8_d_"g___.____`*`9` K`V`e`!k````#`` ```aa$a(a;aOa,aaaaaaa aa$b)b /b:b@bPbRbib5}bEbb c!c)c8cMcVc ]cjc/qcccccc cc dd#d'7d _dmddddddd ee'eCe Wede veeeeeeeeeeef f#f7f#}@} B}P}R}b}d}g}i}l}|} }}}}}} }*} ~ ~0~ @~J~Q~ m~;w~G~~-FJ'] )$ $ - :Gb i s ̀߀ <Lb2uҁ ف 5BUfy ‚ ɂ ӂ*  58Az (ʃ݃'.CYxۄ ߄  3D ] is *  %2 9FYi ~  '!"= `m r~ '  $!=_~I! : DQp+ ȉӉ ډ   $ 1 >Kd#t ފ   9 LZs ' *':*b*Ќ32L э-$J0o Ȏ؎ ?+3k ݏ9 2? F4P!  ؐ( *4_o8ڑ !48Qa{˒Ғ ْ /E[ bnp ȓٓ: ,39)m $ݔ .D%Tz($ݕ  , BOc y0 +E _l)֗  $!1ES-(ǘ-( G Ta(w$řF( / < I Vc Țך  ",? U _ lv Q̛1Mf vΜ*DK[br$"ѝ (07Si| ͞ў ؞ "7IY`s(Ÿ ۟ "!&H LY`vzAQIY s  5 !% GTgw2 ܢ" 2Ha ԣ  - 7DTp  ͤ- 4AQ ak{ Х+ݥ( 221e+ æ Ц ݦ  0CJ `jQ &6L \i .ɨШ! % 5,B'o) ة /H^ } !̪< +8MgE˫07Tmլ$<[dh x   ϭ  !'@*h=!ѮRL֯#'67^m 6 A L W b m x  ֱ  '4 JW[w  ˲ ۲  %/6 = G!Q!s ˳  8 T^ t~ ,˴ݴe"Uii'^)fkUj< =  !TS4B&A i |tf-m".:Gn!(.?+t@txV07H,D-&l(~<>j`QvlhX3*)2*`-I6L]Lqu NBo *ERI7g!{)A^y o5\ ZxM8y/{hTpaKcDP_I%y3um[0w%@d2zVc;Fd w@g%CD$WlNe#&?p.jV[fW#G|QYr99{4>d$zJ|S3:( /aZUs+/]MRn ne,\6qWOcvO +bP}"~_F<17oTF68=JMYC^9g }bC'X; 'R:0}aKE#4$BYPwH]>Gv2rqmk`5~h8OuspzX5ZNQ1KJ1?SL\r,b_xs= ;HAk[E The * buttons will set the font to the one selected below: Thresholds for position filtering in game list: options to use in game-viewer mode: next page# no engines are installed# no themes are defined%d avoid-moves played %s (%d reversible ply)%s (%d reversible plies)%s - %d/%d games (%d-%d-%d)%s does not support analysis%s engine has too many options %s in settings file %s program exits in draw position (%s)%s%s Copyright 1991 Digital Equipment Corporation Enhancements Copyright 1992-2016 Free Software Foundation Enhancements Copyright 2005 Alessandro Scotti %s is free software and carries NO WARRANTY;see the file COPYING for more information. Visit XBoard on the web at: http://www.gnu.org/software/xboard/ Check out the newest features at: http://www.gnu.org/software/xboard/whats_new.html Report bugs via email at: %s: bad boardSize syntax %s %s: can't cd to CHESSDIR: %s: can't parse color names; disabling colorization %s: can't parse foreground color in '%s' %s: no fonts match pattern %s %s: too few colors available; trying monochrome mode %s: unrecognized boardSize name %s %s: unrecognized color %s (Directory will be derived from engine path when empty)*+, but %s is-3-checks<<<>>>ASEANAbortAbout XBoardAbsolute Analysis ScoresAcceptActionAdd this engine to the listAdjournAdjudicate DrawAdjudicate Trivial Draws (3-Move Delay)Adjudicate non-ICS GamesAdjudicate to BlackAdjudicate to WhiteAdjudications...AlarmAlarm Time (msec):Alarm:All games in tourney '%s' are already played or playingAll variants not supported by the first engine (currently %s) are disabled.Already at end of gameAlso match left-right flipped positionAlso match reversed colorsAltAlways QueenAmbiguous move in ICS output: "%s"Ambiguous move: %d.%s%sAnalysis ModeAnalysis mode does not work with ICS modeAnalysis mode requires a chess engineAnalyze GameAnalyzeFile mode requires a game fileAnimate DraggingAnimate MovingAnimation Speed (high = slow):AnnotateArchbishopAuto FlagAuto Flip ViewAuto-CommentAuto-Create Logon ScriptAuto-Display CommentAuto-Display TagsAuto-InputBox PopUpAuto-KibitzAuto-ObserveAuto-Play speed of loaded games (0 = instant, -1 = off):Auto-Refresh Seek GraphAuto-Save GamesAverage solving time %4.2f sec (total time %4.2f sec) BBack to StartBackground Observe while PlayingBackwardBad FEN position in clipboardBad FEN position in fileBad FEN received from engineBad SeekBad game fileBad integer value %sBad position fileBad tournament fileBishopBlackBlack Piece Color:Black to playBlack's flag fellBlindfoldBlunderBlunder graphBoard OptionsBoard size ( -1 = default for selected variant):Board...BookBook Depth (moves):Book FaultBook file exists! Try again for overwrite.Both flags fellBrowseBughouseCRC (10x8)Call FlagCan't back up any furtherCan't go forward any furtherCan't have a match with no chess programsCan't open "%s"Can't open temp fileCan't seek on game fileCan't seek on position fileCancelCannonCannot build game listCapablanca (10x8)CaptainCar HornChallenge Text Colors:Challenge:ChancellorChanging time control during a game is not implementedChannel #1 Text Colors:Channel 1:Channel:Chat partner:Chats:Clear boardClick clock to clear boardClock adjustment not allowed in auto-flag modeClocks (requires restart):Clone TourneyClose ICS engine analyze...Colorize MessagesCommentsCommon EngineCommon Engine SettingsCommon Settings...Connection closed by ICSContinue LaterCopy GameCopy Game ListCopy PositionCould not connect to host %s, port %sCould not create bookCould not open comm port %sCould not parse moveCould not write on tourney fileCouldn't parse move "%s" from ICSCrazyhouseCtrlCylinder *CymbalDDark Square Color:Dark-Squares Texture File:DeclineDefault BeepDefault Number of Games in Match (or Pairing):DeferDemoteDetect all MatesDevelopment NewsDingDirectories:Directory with Pieces Images:Disable own engine books by defaultDisplayed move is not currentDisplayed position is not currentDisplayed position is not current. Step forward to the correct position and try again.Divide entered times by 60DrawDraw after N Moves Total:Draw if Insufficient Mating MaterialDraw:Drop MenuDual Board for Background-Observed GameEGTB Cache Size (MB):EGTB Path:ERROR: Unknown user %s (in path %s) E_ngineEditEdit BookEdit CommentEdit Engine List...Edit GameEdit PositionEdit TagsEdit bookEdit commentEdit comment on %d.%s%sEdit comments:Edit tags / book / engine list:ElephantElo of strongest player at least:Elo of weakest player at least:Empty squareEnable Variation TreesEnd ChatEnd of gameEngineEngine #1Engine #1 Has Own BookEngine #1 Settings...Engine #2 / HumanEngine #2 Has Own Book Engine #2 Settings...Engine Command:Engine Directory:Engine OutputEngine SettingsEngine did not send setup for non-standard variantEngine has no optionsEngine outputErrorError gathering move list: extra boardError gathering move list: nestedError gathering move list: two headersError reading from %s chess program (%s)Error reading from ICSError reading from keyboardError writing to %s chess programError writing to ICSError writing to chess programError writing to displayError: %s chess program (%s) exited unexpectedlyEvalEvaluation GraphEvaluation graphExact position matchExitingFIRST TYPE DIRECTORY NAME HEREFRCFailed to invoke cmailFailed to open fileFailed to open file '%s' Failed to open indirection file %sFailed to parse board string: "%s"Failed to start %s chess program %s on %s: %s Falcon (10x8)Fatal ErrorFileFile type:File with Start Positions:Filename:Files:First Black Move:First White Move:First change an engine by editing the participants list of the Tournament Options dialogFirst you must specify an existing tourney file to cloneFischer castlingFlash MovesFlash Moves (0 = no flashing):Flash Rate (high = fast):Flip Pieces Shogi Style (Colored buttons restore default)Flip ViewFontsFonts...For concurrent playing of tourney with multiple XBoards:Force current variant with this engineForwardForward to EndGGame File with Opening Lines:Game ListGame List Tags...Game List...Game Number (-1 or -2 = Auto-Increment):Game list not loaded or emptyGame list:Game not found in fileGame number out of rangeGame too long; increase MAX_MOVES and recompileGame-list optionsGap in move listGeneralGeneral OptionsGeneral...Get Move ListGongGot end of file from keyboardGothic (10x8)Great Shatranj (10x8)Hash keys are differentHash-Table Size (MB):Headers in Engine Output WindowHelpHideHide ThinkingHide Thinking from HumanHighlight Color:Highlight DraggingHighlight Last MoveHighlight With ArrowHighlight with ArrowHintHint: %sIICS Chat/Console:ICS ClientICS Input BoxICS InteractionICS OptionsICS input boxICS text menuICS...ICS/Chat ConsoleIllegal hint move "%s" from %s chess programIllegal moveIllegal move "%s" (rejected by %s chess program)Illegal move "%s" from %s machineIllegal move (rejected by ICS)Illegal move in ICS output: "%s"Illegal move: %d.%s%sInclude Number Tag in tourney PGNIncomplete \ escape in value for %sIncorrect moveIncrement or max (sec/move):Info XBoardInformationInitial time (min):Internal error: PARTICIPANTS set wrongInvalid pairing from pairing engineIt is Black's turnIt is White's turnIt is not Black's turnIt is not White's turnIt is your turnJanus (10x8)Kibitz Text Colors:Kibitz:KingKnightLaserLieutenantLight Square Color:Light-Squares Texture File:Line Gap (-1 = default for board size):LionLion roar:Load GameLoad Game OptionsLoad Game...Load New 1st Engine...Load New 2nd Engine...Load PositionLoad first engineLoad game file name?Load position file name?Load second engineLogo Size (0=off, requires restart):Lose:Machine BlackMachine MatchMachine WhiteMachine accepts your draw offerMachine offers a draw. Select Action / Draw to accept.MachineBlack mode does not work with ICS modeMachineBlack mode requires a chess engineMachineWhite mode does not work with ICS modeMachineWhite mode requires a chess engineMail MoveMakrukMan XBoardMatch %s vs. %s: final score %d-%d-%dMaximum Number of CPUs per Engine:Message (above board):Mismatch of STRIDE in nengineoutput.c Change and recompile!ModeMono ModeMove HistoryMove NowMove SoundMove history / Engine Output:Move listMove:Moves per session:Must not use GUI bookN-Move Rule:N-fold Repeats:NPSNegate Score of Engine #1Negate Score of Engine #2New ChatNew GameNew Shuffle GameNew Shuffle Game...New VariantNew Variant...New directoryNew name for current theme:Next PositionNickname (optional):No SoundNo castleNo default pieces installed! Select your own using '-pieceImageDirectory'.No engine %s is installedNo engine with the name you gave is installedNo game has been loaded yetNo game selectedNo hint availableNo more games in this messageNo moves in gameNo pairing engine specifiedNo position has been loaded yetNo tag selectedNo unfinished gamesNo unfinished games No value provided for argument %sNormalNot enough participantsNoteNumber of Board Files:Number of Board Ranks:Number of tourney cycles (or Swiss rounds):OKOld Save Style (as opposed to PGN)On-line User GuideOne-Click MovingOnly bughouse is not available in viewer mode.Opening-Book Filename:OptionsOther Channel Text Colors:Other Text Colors:Own Games OnlyPGN Event Header:Paste GamePaste PositionPausePause between Match Games (msec):PawnPenaltyPeriodic UpdatesPeriodic Updates (in Analysis Mode)PhonePick new gamePlayPolyglot book not validPolygot Directory:Ponder Next MovePopPopup Exit MessagePopup Exit MessagesPopup Move ErrorsPosition Number (-1 or -2 = Auto-Increment):Position not found in filePremovePremove Highlight Color:Premove for BlackPremove for WhitePrev PositionPromotePull pawn backwards to under-promoteQueenQuiet PlayQuit Quit after gameRReading game file (%d)Ready to send mail Recompile to support this BOARD_RANKS or BOARD_FILES!Recompile with larger BOARD_RANKS or BOARD_FILES to support this sizeRegistered EnginesReload CMail MessageRematchReplace EngineRequest Text Colors:Request:ResignRetract MoveRevertRewind Index after this many Games (0 = never):RoarRookS-Shout Text Colors:S-Shout:Save Final Positions on File:Save GameSave Game OptionsSave Game...Save Games as BookSave Games on File:Save Out-of-Book Info in PGN Save PositionSave Score/Depth Info in PGNSave Selected GamesSave Settings NowSave Settings on ExitSave Tourney Games on:Save game file name?Save position file name?Saving gameSaving positionScanning through games (%d)Scores in Move ListSearch mode:Seconds per Move:Seek GraphSeek Text Colors:Seek:SeirawanSelect Engine:Select engine from list:Selectable themes:ShatranjShiftShout Text Colors:Shout:Show CoordinatesShow CoordsShow Target SquaresSlapSocket support is not configured inSolved %d out of %d (%3.1f%%) Sound OptionsSound Program:Sounds Directory:Sounds...SpartanStart-position number:Starting %s chess programStarting chess programStartup failure on '%s'Sticky WindowsStill need to make a move for game %s Still need to make move for game Still need to make moves for all %d games Still need to make moves for both games Still need to make moves for games %s Stop ExaminingStop ObservingSuicideSuperchessSwiss tourney finishedSync after cycleSync after roundTRY ANOTHER NAMETagsTell Text Colors:Tell:Test LegalityThat square is occupiedThe cmail message is not loaded. Use Reload CMail Message and make your move again.There is no game listThis only works in the GTK buildTime ControlTime Control...Time-Odds factors:Top-Level DialogsTournament OptionsTournament file: Tournament...Tourney participants:Tourney type (0 = round-robin, 1 = gauntlet):TrainingTraining mode offTraining mode onTraining mode requires a game fileTruncate GameTry-Out Sound:Two MachinesTwoMachines mode does not work with ICS modeTwoMachines mode requires a chess engineType a moveUCIUSI/UCCI (uses specified -uxiAdapter)Unable to create font set for %s. Unfinished:Unknown initialMode %sUnknown variant name %sUnknown wild type %dUnrecognized argument %sUnrecognized boolean argument value %sUnusedUpgrade EngineUpload to ExamineUse Board TexturesUse GUI BookUse external piece bitmaps with their own colorsUse nickname in PGN player tags of engine-engine gamesUser FileUser WAV File:Variant %s not supported by %sVariant %s supported only in ICS modeVariants marked with * can only be played with legality testing off.Verify Engine Result ClaimsViewWB protocol v1 (do not wait for engine features)Wait until your turn, or select 'Move Now'.Wait until your turn.Waiting for access to save fileWaiting for first chess programWaiting for other game(s)Waiting for reply from opponent Waiting for second chess programWarlordWarning: You are still examining a gameWarning: You are still observing a gameWarning: You are still playing a gameWarning: second engine (%s) does not support this!WhiteWhite Piece Color:White to playWhite's flag fellWild castleWin / Loss Threshold:Win:Wood ThunkXBoard Home PageYou are not examining a gameYou are not observing a gameYou are playing BlackYou are playing WhiteYou can only change one engine at the timeYou can't revert while pausingYou cannot do this while you are playing or observingYou cannot replace an engine while it is engaged! Terminate its game first.You did not specify the engine executableYou have already mailed a move. Wait until a move arrives from your opponent. To resend the same move, type "cmail -remail -game %s" on the command line.You have edited the game history. Use Reload Same Game and make your move again.You have entered too many moves. Back up to the correct position and try again.You have not made a move yetYou must make your move before offering a drawYou must supply a tournament file, for storing the tourney progressYou restarted an already completed tourney. One more cycle will now be added to it. Games commence in 10 sec.Your opponent is not out of timeZoom factor in Evaluation Graph:_Action_Edit_File_Help_Mode_Options_Viewadd next moveatomicbad searchTime option %sbad timeControl option %sberolina *browseby nameby typechu shogi (12x12)classicalclearclosecommit changescould not load EGBB librarycourier (12x8)downe-Mail Bug Reportelven chess (10x10)engine namefailed writing PVfairyfind positionfirstfixed maxgive-awaygrand (10x10)incrementalinternal rcmd not implemented for Unixlosersmighty lionmovenarrownextnext pageno games matched your requestonly marked squares are legalor specify one below:pick fixedprevious pageprotocol version %d not supportedrandomizerights grantedrights revokedsave changessay Internal error; bad moveType %d (%d,%d-%d,%d)secondshogi (9x9)shuffletagsthresholdstwo kingsupvs.white pixel = 0x%lx, black pixel = 0x%lx wrong EGBB versionxiangqi (9x10)your opponent kibitzes: %sProject-Id-Version: GNU xboard 4.9.0-pre2 Report-Msgid-Bugs-To: bug-xboard@gnu.org POT-Creation-Date: 2016-07-31 20:45-0700 PO-Revision-Date: 2016-04-05 20:23+0800 Last-Translator: Tianze Wang Language-Team: Chinese (simplified) Language: zh_CN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Poedit 1.8.7 按钮 * 用于设定字体: 游戏列表中位置筛选的阈值: 用于观战者模式的选项: 下一页# 没有安装引擎# 没有定义主题避免了 %d 个可能导致输棋的棋步%s(可撤销 %d 步)%s - %d/%d 局(%d-%d-%d)%s 不支持分析%s 引擎的选项过多 %s 位于配置文件中 %s 程序在绘制位置(%s)时退出%s%s 版权所有 1991 Digital Equipment Corporation 改进版版权所有 1992-2016 Free Software Foundation 改进版版权所有 2005 Alessandro Scotti %s 是自由软件,并且没有任何担保;请参见 COPYING 文件来获取更多信息。 当前版本使用的 GTK 构建是实验性的,可能不稳定 XBoard 网站:http://www.gnu.org/software/xboard/ 了解新特性:http://www.gnu.org/software/xboard/whats_new.html 通过邮件反馈软件缺陷: %s:boardSize 语法错误 %s %s:无法改变目录到 CHESSDIR:%s:无法解析颜色名;禁用着色 %s:无法解析“%s”中的前景色 %s:没有匹配 %s 的字体 %s:可用颜色太少;请尝试单色模式 %s:无法识别 boardSize 名称 %s %s:无法识别颜色 %s (若留空,则根据引擎路径推测其目录)*+,但 %s 为-“三次将”<<<>>>东南亚象棋退出关于 XBoard绝对分析分值接受动作将该引擎添加到列表休战裁决平局裁决重复和局(三次行棋重复)裁决非ICS比赛裁决黑方胜裁决白方胜裁决...警告警告时间(毫秒):警告:“%s”赛程中的所有棋局都已完成或正在进行第一个引擎(当前为 %s )不支持 的棋种都已被禁用。已经处于残局也匹配左右翻转的位置也匹配相反的颜色Alt总是升变为后ICS 输出的棋步有歧义:“%s”棋步有歧义:%d.%s%s分析模式Analysis 模式无法与 ICS 模式共用Analysis 模式需要有象棋引擎分析棋局AnalyzeFile 模式需要棋局文件拖动动画移动动画动画速度(high=慢)注释大主教自动限时自动翻转视角自动注释自动创建登录脚本自动显示注释自动显示标记自动弹出输入框自动支招自动观察载入棋局的自动对弈速度 (0=立即,-1=关闭)自动刷新试探图自动保存棋局平均运算时间 %4.2f 秒(总计 %4.2f 秒)蓝回到起始处对弈时后台观战后退剪贴板中的 FEN 位置有误文件中的 FEN 位置有误引擎给出了错误的 FEN定位错误棋局文件错误整数 %s 有误位置文件错误赛事文件错误象黑黑子颜色:黑方行黑方超时盲棋失误失误图棋盘选项棋盘大小(-1=所选项的默认值)棋盘棋谱棋谱深度(步数):Book 错误Book 文件已存在!若要覆盖请重复此操作。双方均超时了浏览四狂象棋卡帕布兰卡任意制象棋(10x8)申请超时裁定无法进一步后退无法继续前进没有象棋程序,无法开始比赛无法打开“%s”无法打开临时文无法在棋局文件中定位无法在位置文件中定位取消炮无法构建棋局列表卡帕布兰卡象棋(10x8)帅汽车喇叭挑战文本颜色:挑战:校尚未实现在棋局中改变时间控制的功能1# 频道文字颜色:频道 1:频道:聊天伙伴:聊天:清除棋盘点击时钟来清理棋盘自动限时模式中不允许调整时间计时(需要重启):克隆赛事关闭 ICS 引擎分析...消息着色注释通用引擎通用引擎设置通用设置...链接被 ICS 关闭稍后继续复制棋局复制棋局列表复制位置无法链接到主机 %s,端口号 %s无法创建 book无法打开通讯端口 %s无法解析棋步无法写入到赛程文件无法从 ICS 解析棋布“%s”双狂象棋Ctrl滚筒棋 *钹黑黑格颜色:黑格纹理文件:拒绝默认音效默认的比赛数(或配对数):延降检测所有将军情形开发新闻铃目录:棋子图像的目录:默认禁用引擎自带的棋谱显示的棋步非当前棋步显示的位置非当前位置显示的位置不正确。 请前进至正确的位置,然后重试。输入的时间除以 60平局N步后和局:若无法将死,则判为平局平局:下拉菜单后台观战时显示双棋盘EGTB 缓存大小(MB):EGTB 路径:错误:未知用户 %s(于路径 %s) 引擎(_N)编辑编辑棋谱编辑注释编辑引擎列表...编辑棋局编辑位置编辑标签编辑棋谱编辑评论编辑 %d.%s%s 的评论编辑评论:编辑标记/棋谱/引擎列表:象最强对手的最低 ELO 积分最弱对手的最低 ELO 积分空位启用步法树结束聊天棋局结束引擎#1 引擎#1 引擎有自带棋谱#1 引擎设置...#2 引擎/人#2 引擎有自带棋谱#2 引擎设置...引擎命令:引擎目录:引擎输出引擎设置引擎未发送非标准棋种的布局引擎没有选项引擎输出错误获取棋步列表出错:额外的棋盘获取棋步列表出错:出现嵌套获取棋步列表出错:有两个头部从 %s 象棋程序读取时出错(%s)从 ICS 读取时出错读取键盘出错写入%s 象棋程序时出错写入 ICS 出错写入到象棋程序时出错写入显示器时出错错误:%s 象棋程序(%s)意外地退出了Eval评估图评估图匹配准确位置退出请先在这里输入目录名菲舍尔任意制象棋调用 cmail 失败打开文件失败打开文件“%s”失败 打开间接文件 %s 失败解析棋盘字符出错: “%s”在 %s 上启动 %s 象棋程序 %s 失败:%s 猎鹰棋(10x8)严重错误文件文件类型:起始位置文件:文件名:文件:黑方先行棋:白方先行棋:请先在赛事选项对话框中的参赛列表里改变引擎你必须指定现存的赛事文件来进行克隆菲舍尔式易位棋步闪烁棋步闪烁(0=不闪烁)闪烁频率(high=快)翻转将棋棋子(点击着色按钮来恢复默认)翻转视角字体字体...用于同时在多个XBoards中进行一个赛事:强制当前棋种使用该引擎前进转到末尾绿棋局开场白文件:棋局列表棋局列表标签...棋局列表...棋局编号(-1 或 -2=自动增长)尚未加载棋局列表,或列表为空棋局列表:文件中找不到棋局棋局编号超出范围比赛太长;请增大 MAX_MOVES 的值并重新编译棋局列表选项棋步列表中有空缺将通用选项通用...获取棋步列表锣从键盘上读到了EOF哥特式象棋大波斯象棋(10x8)散列的键不相同散列表大小(MB):引擎输出窗口中的头部帮助隐藏隐藏思考隐藏人的思考高亮颜色:高亮拖动高亮显示最后一步用箭头突出显示用箭头突出显示提示提示:%sIICS 聊天/聊天终端ICS 客户端ICS 输入框ICS 交互ICS 选项ICS 输入框ICS 文本菜单ICS...ICS/聊天终端%2$s 象棋程序给出了 非法的棋步提示“%1$s”非法棋步非法棋步“%s”(被 %s 象棋程序拒绝)%s 机器给出了非法的棋步“%s”非法棋步(被 ICS 拒绝)ICS 输出的棋步非法:“%s”非法棋步:%d.%s%s包括赛事 PGN 的编号标签%s 的值中有不完整的“\”转义字符棋步不正确自增或最大值(秒/每步):XBoard 的 Info 手册信息初始时间(分钟):内部错误:PARTICIPANTS 设置错误配对引擎给出了错误的匹配黑方行白方行并非黑方的回合并非白方的回合轮到你了双象棋(10x8)支招文本颜色:支招:王马激光尉白格颜色:白格纹理文件:线条间隙(-1=根据棋盘大小确定):狮狮吼:加载棋局棋局加载选项加载棋局...加载新的1号引擎...加载新的2号引擎...加载位置加载第一个引擎要载入的棋局文件名?要载入的位置文件名?加载第二个引擎徽标大小(0=off,需要重启):输棋:机器执黑机器匹配机器执白机器接受了你的和局请求机器提出了和局请求。 请选择 操作 / 和局 来确认。MachineBlack 模式无法与 ICS 模式共用MachineBlack 模式需要有象棋引擎MachineWhite 模式无法与 ICS 模式共用MachineWhite 模式需要有象棋引擎发送棋步泰国象棋XBoard 的 Man 手册比赛 %s vs. %s:最终比分 %d-%d-%d每个引擎最多使用的CPU数:消息(位于棋盘上)nengineoutput.c 中的 STRIDE 匹配错误 请变更并重新编译!模式单色模式棋步历史立即行棋行棋音效棋步历史/引擎输出:棋步列表行棋:每个会话的步数:禁止使用 GUI 棋谱N-步规则:N的倍数次重复:NPS#1 引擎的负分#2 引擎的负分新聊天新棋局新任意制游戏新任意制游戏...新棋种新棋种...新目录当前主题的新名称:后一个位置昵称(可选):静音无易位棋未安装默认棋子 请使用“-pieceImageDirectory”来选择你的棋子。未安装引擎 %s未安装所给定的引擎尚未加载任何棋局未选择棋局没有提示消息中没有更多的棋局棋局中没有棋步未指定配对引擎尚未加载任何位置未选择标签没有未完成的比赛没有未完成的比赛 未提供参数 %s 的值普通参赛者不足注释棋盘列数:棋盘行数:赛事轮数(或瑞士轮数):确定旧模式(相对于 PGN)保存在线用户指南一键移动仅 bughouse 不支持观战者模式。打开棋谱文件:选项其他频道文字颜色:其他文字颜色:仅自己的棋局PGN 事件头部:粘贴棋局粘贴位置暂停棋局间隔(毫秒):卒惩罚周期更新周期更新(分析模式)电话选择新棋局播放Polyglot book 无效Polygot 目录:思考下一步弹出弹出退出消息弹出退出消息弹出棋步错误位置编号(-1 或 -2=自动增长)文件中找不到位置先行棋先行棋高亮颜色:黑先行白先行前一个位置升将棋子向后拖来使其升变后静默比赛退出棋局结束后退出红读取棋局文件(%d)已做好发送邮件的准备 请重新编译以提供该 BOARD_RANKS 或 BOARD_FILES 特性!请使用更大的 BOARD_RANKS 或 BOARD_FILES 值重新编译来支持该尺寸已知的引擎重新载入 CMail 消息重新匹配更换引擎请求文本颜色:请求:告辞撤回撤销在多少个棋局后将索引复位(0=从不):怒吼车S-呼喊文本颜色:S-呼喊:将最终位置保存到文件:保存棋局保存棋局选项保存棋局...保存棋局为棋谱将棋局保存到文件:将棋谱未涵盖的信息保存到PGN 保存位置将分数/深度信息保存到PGN保存选定棋局立即保存设置退出前保存设置保持赛事文件到:要保存的棋局文件名?要保存的位置文件名?保存棋局保存位置步过整个棋局(%d)棋步列表中显示分值搜索模式:每步秒数:试探图试探文本颜色试探:谢尔望棋选择引擎:从列表中选择引擎:可选主题:波斯象棋Shift呼喊文本颜色:呼喊:显示坐标显示坐标显示目标方格拍打未配置套接字的支持于解出了 %2$d 中的 %1$d 个(%3$3.1f%%)声音选项声音程序:音效目录:声音...斯巴达象棋起始位置编号:启动 %s 象棋程序开始象棋程序“%s”启动失败窗口吸附仍然需要下一步棋来继续比赛 %s 仍然需要下一步棋来继续比赛 仍然需要下一步棋来继续这 %d 个比赛 仍然需要下一步棋来继续这两个比赛 仍然需要下几步棋来继续比赛 %s 停止研究停止观战自杀棋超级象棋瑞士锦标赛已结束每轮后同步每回合后同步尝试别的名称标签告知文本颜色:告知:探测棋步合法性此方格已被占据尚未加载 cmail 消息。 请重新加载 CMail 消息,然后再次行棋。没有棋局列表此功能仅用于 GTK 前端时间控制时间控制...时间比例因子:置顶对话框赛事选项赛事文件: 赛事...参赛者:赛事类型(0=循环赛,1=挑战赛):训练开启训练模式关闭训练模式训练模式需要有象棋引擎截取棋局试探音效:机器对战TwoMachines 模式无法与 ICS 模式共用TwoMachines 模式需要有象棋引擎输入一个棋步UCIUSI/UCCI(使用指定的 -uxiAdapter)无法为 %s 创建字体集。 未完成:未知 initialMode %s未知变量名 %s未知的原始类型 %d无法识别参数 %s无法识别逻辑变量值 %s不使用升级引擎上传以便研究使用棋盘纹理使用 GUI 棋谱将外部位图用于棋子颜色在机器-机器对战中的 PGN 玩家标签中使用昵称用户文件用户 WAV 文件:%2$s 不支持变量 %1$s仅 ICS 模式支持变量 %s* 标记的棋种只能在关闭有效性检测的情况 下对弈。检查引擎输出结果查看WB 协议第一版(不等待引擎的特性)请等待你的回合, 或选择“立即行棋”。请等待你的回合。正在等待以写入到文件等待第一个象棋程序正在等待其他棋局等待对手回复 等待第二个象棋程序军阀警告:你仍然在研究比赛中警告:你仍然在观战中警告:你仍然在比赛中: (%s) !白白子颜色:白方行白方超时自由易位棋胜/负阈值:赢棋:木梆XBoard 主页你尚未处于研究模式你未处于观战模式我方执黑我方执白你一次只能改变一个引擎你无法在暂停时进行撤销操作在比赛或观战时无法进行此操作在引擎比赛时不能将其替换! 请先终止比赛。未指定引擎的可执行文件你已经下了一步棋,请等待你的对手行棋。 若要重新发送相同的棋步,在命令行中输入 "cmail -remail -game %s"。你编辑了棋局历史。 请重新加载同一个棋局,然后再次行棋。你输入了过多的棋步。 请后退至正确的位置,然后重试。你还没有行棋你必须在请求平局之前动一步你必须提供一个赛事文件, 以便恢复赛程你重新开始了一个已经完成的赛程。 将会添加更多的回合。 棋局将在10秒内开始。你的对手未退出比赛评估图的焦距:动作(_A)编辑(_E)文件(_F)帮助(_H)模式(_M)选项(_O)查看(_V)添加下一步核象棋searchTime 选项 %s 错误timeControl 选项 %s 错误柏林棋 *浏览按名称按类型中将棋(12x12)经典清除关闭保存更改无法加载 EGBB 库信使象棋下用邮件反馈软件缺陷精灵棋(10x10)引擎名称写入 PV 失败仙灵棋查找位置第一个固定最大值拱手棋大象棋(10x10)自增Unix 未实现内部 rcmd败者棋雄狮棋棋步缩小下一个下一页没有匹配你所请求的棋局仅标记的位置为合理位置或在下面指定一个:指定固定值上一页不支持协议版本 %d随机化已授予权限已撤销权限保存更改出现内部错误;错误的 moveType %d (%d,%d-%d,%d)第二个日本将棋(9x9)任意制标签阈值双王棋上vs.白色像素 = 0x%lx,黑色像素 = 0x%lx EGBB 版本错误中国象棋(9x10)你的对手 kibitzes:%sxboard-4.9.1/COPYRIGHT0000644000175000001440000000502412717001265011216 00000000000000XBoard -- a graphical chessboard for X Original authors: Dan Sears and Chris Sears Enhancements (Version 2.0 and later): Tim Mann Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. Enhancements Copyright 2005 Alessandro Scotti XBoard's alternative piece bitmaps (bitmaps.xchess) are derived from the bitmaps in the XChess program, which was written and is copyrighted by Wayne Christopher. The following terms apply to Digital Equipment Corporation's copyright interest in XBoard: ------------------------------------------------------------------------ All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ------------------------------------------------------------------------ The following terms apply to the enhanced version of XBoard distributed by the Free Software Foundation: ------------------------------------------------------------------------ GNU XBoard 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 3 of the License, or (at your option) any later version. GNU XBoard 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, see http://www.gnu.org/licenses/. * ------------------------------------------------------------------------ xboard-4.9.1/history.c0000644000175000001440000001630312717001265011572 00000000000000/* * Move history for WinBoard * * Author: Alessandro Scotti (Dec 2005) * back-end part split off by HGM * * Copyright 2005 Alessandro Scotti * * Enhancements Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, * 2016 Free Software Foundation, Inc. * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * ------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include #include #include #include "common.h" #include "frontend.h" #include "backend.h" /* templates for low-level front-end tasks (requiring platform-dependent implementation) */ void ClearHistoryMemo P((void)); // essential int AppendToHistoryMemo P(( char * text, int bold, int colorNr )); // essential (coloring / styling optional) void HighlightMove P(( int from, int to, Boolean highlight )); // optional (can be dummy) void ScrollToCurrent P((int caretPos)); // optional (can be dummy) /* templates for front-end entry point to allow inquiring about front-end state */ Boolean MoveHistoryDialogExists P((void)); Boolean MoveHistoryIsUp P((void)); /* Module globals */ typedef char MoveHistoryString[ MOVE_LEN*2 ]; static int lastFirst = 0; static int lastLast = 0; static int lastCurrent = -1; static int lastGames; static char lastLastMove[ MOVE_LEN ]; static MoveHistoryString * currMovelist; static ChessProgramStats_Move * currPvInfo; static int currFirst = 0; static int currLast = 0; static int currCurrent = -1; typedef struct { int memoOffset; int memoLength; } HistoryMove; static HistoryMove histMoves[ MAX_MOVES ]; /* Note: in the following code a "Memo" is a Rich Edit control (it's Delphi lingo) */ // back-end after replacing Windows data-types by equivalents static Boolean OnlyCurrentPositionChanged () { Boolean result = FALSE; if( lastFirst >= 0 && lastLast >= lastFirst && lastCurrent >= lastFirst && currFirst == lastFirst && currLast == lastLast && currCurrent >= 0 && lastGames == storedGames ) { result = TRUE; /* Special case: last move changed */ if( currCurrent == currLast-1 ) { if( strcmp( currMovelist[currCurrent], lastLastMove ) != 0 ) { result = FALSE; } } } return result; } // back-end, after replacing Windows data types static Boolean OneMoveAppended () { Boolean result = FALSE; if( lastCurrent >= 0 && lastCurrent >= lastFirst && lastLast >= lastFirst && currCurrent >= 0 && currCurrent >= currFirst && currLast >= currFirst && lastFirst == currFirst && lastLast == (currLast-1) && lastCurrent == (currCurrent-1) && currCurrent == (currLast-1) && lastGames == storedGames ) { result = TRUE; } return result; } // back-end, now that color and font-style are passed as numbers static void AppendMoveToMemo (int index) { char buf[64]; if( index < 0 || index >= MAX_MOVES ) { return; } buf[0] = '\0'; /* Move number */ if( (index % 2) == 0 ) { sprintf( buf, "%d.%s ", (index / 2)+1, index & 1 ? ".." : "" ); AppendToHistoryMemo( buf, 1, 0 ); // [HGM] 1 means bold, 0 default color } /* Move text */ safeStrCpy( buf, SavePart( currMovelist[index]) , sizeof( buf)/sizeof( buf[0]) ); strcat( buf, " " ); histMoves[index].memoOffset = AppendToHistoryMemo( buf, 0, 0 ); histMoves[index].memoLength = strlen(buf)-1; /* PV info (if any) */ if( appData.showEvalInMoveHistory && currPvInfo[index].depth > 0 ) { sprintf( buf, "{%s%.2f/%d} ", currPvInfo[index].score >= 0 ? "+" : "", currPvInfo[index].score / 100.0, currPvInfo[index].depth ); AppendToHistoryMemo( buf, 0, 1); // [HGM] 1 means gray } } // back-end void RefreshMemoContent () { int i; ClearHistoryMemo(); for( i=currFirst; i= 0 && index < MAX_MOVES ) { HighlightMove( histMoves[index].memoOffset, histMoves[index].memoOffset + histMoves[index].memoLength, onoff ); } } // back-end, now that a wrapper is provided for the front-end code to do the actual scrolling void MemoContentUpdated () { int caretPos; if(lastCurrent <= currLast) DoHighlight( lastCurrent, FALSE ); lastFirst = currFirst; lastLast = currLast; lastCurrent = currCurrent; lastGames = storedGames; lastLastMove[0] = '\0'; if( lastLast > 0 ) { safeStrCpy( lastLastMove, SavePart( currMovelist[lastLast-1] ) , sizeof( lastLastMove)/sizeof( lastLastMove[0]) ); } /* Deselect any text, move caret to end of memo */ if( currCurrent >= 0 ) { caretPos = histMoves[currCurrent].memoOffset + histMoves[currCurrent].memoLength; } else { caretPos = -1; } ScrollToCurrent(caretPos); DoHighlight( currCurrent, TRUE ); // [HGM] moved last, because in X some scrolling methods spoil highlighting } // back-end. Must be called as double-click call-back on move-history text edit void FindMoveByCharIndex (int char_index) { int index; for( index=currFirst; index= histMoves[index].memoOffset && char_index < (histMoves[index].memoOffset + histMoves[index].memoLength) ) { ToNrEvent( index + 1 ); // moved here from call-back } } } // back-end. In WinBoard called by call-back, but could be called directly by SetIfExists? void UpdateMoveHistory () { /* Update the GUI */ if( OnlyCurrentPositionChanged() ) { /* Only "cursor" changed, no need to update memo content */ } else if( OneMoveAppended() ) { AppendMoveToMemo( currCurrent ); } else { RefreshMemoContent(); } MemoContentUpdated(); } // back-end void MoveHistorySet (char movelist[][2*MOVE_LEN], int first, int last, int current, ChessProgramStats_Move * pvInfo) { /* [AS] Danger! For now we rely on the movelist parameter being a static variable! */ currMovelist = movelist; currFirst = first; currLast = last; currCurrent = current; currPvInfo = pvInfo; if(MoveHistoryDialogExists()) UpdateMoveHistory(); // [HGM] call this directly, in stead of through call-back } xboard-4.9.1/pgntags.c0000644000175000001440000002173312717001265011537 00000000000000/* * pgntags.c -- Functions to manage PGN tags * * Copyright 1995, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * * ------------------------------------------------------------------------ * * This file could well be a part of backend.c, but I prefer it this * way. */ #include "config.h" #include #include #include #if STDC_HEADERS # include # include #else /* not STDC_HEADERS */ # if HAVE_STRING_H # include # else /* not HAVE_STRING_H */ # include # endif /* not HAVE_STRING_H */ #endif /* not STDC_HEADERS */ #include "common.h" #include "frontend.h" #include "backend.h" #include "parser.h" /* Parse PGN tags; returns 0 for success or error number */ int ParsePGNTag (char *tag, GameInfo *gameInfo) { char *name, *value, *p, *oldTags; int len; int success; name = tag; while (!isalpha(*name) && !isdigit(*name)) { name++; } p = name; while (*p != ' ' && *p != '\t' && *p != '\n') { p++; } *p = NULLCHAR; value = strchr(p + 1, '"') + 1; p = strrchr(value, '"'); *p = NULLCHAR; if (StrCaseCmp(name, "Event") == 0) { success = StrSavePtr(value, &gameInfo->event) != NULL; } else if (StrCaseCmp(name, "Site") == 0) { success = StrSavePtr(value, &gameInfo->site) != NULL; } else if (StrCaseCmp(name, "Date") == 0) { success = StrSavePtr(value, &gameInfo->date) != NULL; } else if (StrCaseCmp(name, "Round") == 0) { success = StrSavePtr(value, &gameInfo->round) != NULL; } else if (StrCaseCmp(name, "White") == 0) { success = StrSavePtr(value, &gameInfo->white) != NULL; } else if (StrCaseCmp(name, "Black") == 0) { success = StrSavePtr(value, &gameInfo->black) != NULL; } /* Fold together the various ways of denoting White/Black rating */ else if ((StrCaseCmp(name, "WhiteElo")==0) || (StrCaseCmp(name, "WhiteUSCF")==0) ) { success = TRUE; gameInfo->whiteRating = atoi( value ); } else if ((StrCaseCmp(name, "BlackElo")==0) || (StrCaseCmp(name, "BlackUSCF")==0)) { success = TRUE; gameInfo->blackRating = atoi( value ); } else if (StrCaseCmp(name, "Result") == 0) { if (strcmp(value, "1-0") == 0) gameInfo->result = WhiteWins; else if (strcmp(value, "0-1") == 0) gameInfo->result = BlackWins; else if (strcmp(value, "1/2-1/2") == 0) gameInfo->result = GameIsDrawn; else gameInfo->result = GameUnfinished; success = TRUE; } else if (StrCaseCmp(name, "TimeControl") == 0) { // int tc, mps, inc = -1; // if(sscanf(value, "%d/%d", &mps, &tc) == 2 || ) success = StrSavePtr(value, &gameInfo->timeControl) != NULL; } else if (StrCaseCmp(name, "FEN") == 0) { success = StrSavePtr(value, &gameInfo->fen) != NULL; } else if (StrCaseCmp(name, "SetUp") == 0) { /* ignore on input; presence of FEN governs */ success = TRUE; } else if (StrCaseCmp(name, "Variant") == 0) { /* xboard-defined extension */ success = StrSavePtr(value, &gameInfo->variantName) != NULL; if(*value && strcmp(value, engineVariant)) // keep current engine-defined variant if it matches gameInfo->variant = StringToVariant(value); } else if (StrCaseCmp(name, "VariantMen") == 0) { success = LoadPieceDesc(value); } else if (StrCaseCmp(name, PGN_OUT_OF_BOOK) == 0) { /* [AS] Out of book annotation */ success = StrSavePtr(value, &gameInfo->outOfBook) != NULL; } else { if (gameInfo->extraTags == NULL) { oldTags = ""; } else { oldTags = gameInfo->extraTags; } /* Buffer size includes 7 bytes of space for [ ""]\n\0 */ len = strlen(oldTags) + strlen(value) + strlen(name) + 7; if ((p = (char *) malloc(len)) != NULL) { sprintf(p, "%s[%s \"%s\"]\n", oldTags, name, value); if (gameInfo->extraTags != NULL) free(gameInfo->extraTags); gameInfo->extraTags = p; success = TRUE; } else { success = FALSE; } } return(success ? 0 : ENOMEM); } /* Print game info */ void PrintPGNTags (FILE *fp, GameInfo *gameInfo) { char *p; fprintf(fp, "[Event \"%s\"]\n", gameInfo->event ? gameInfo->event : "?"); fprintf(fp, "[Site \"%s\"]\n", gameInfo->site ? gameInfo->site : "?"); fprintf(fp, "[Date \"%s\"]\n", gameInfo->date ? gameInfo->date : "?"); fprintf(fp, "[Round \"%s\"]\n", gameInfo->round ? gameInfo->round : "-"); fprintf(fp, "[White \"%s\"]\n", gameInfo->white ? gameInfo->white : "?"); fprintf(fp, "[Black \"%s\"]\n", gameInfo->black ? gameInfo->black : "?"); fprintf(fp, "[Result \"%s\"]\n", PGNResult(gameInfo->result)); if (gameInfo->whiteRating >= 0) fprintf(fp, "[WhiteElo \"%d\"]\n", gameInfo->whiteRating); if (gameInfo->blackRating >= 0) fprintf(fp, "[BlackElo \"%d\"]\n", gameInfo->blackRating); if (gameInfo->timeControl) fprintf(fp, "[TimeControl \"%s\"]\n", gameInfo->timeControl); if (gameInfo->variant != VariantNormal) fprintf(fp, "[Variant \"%s\"]\n", VariantName(gameInfo->variant)); if (*(p = CollectPieceDescriptors())) fprintf(fp, "[VariantMen \"%s\"]\n", p); if (gameInfo->extraTags) fputs(gameInfo->extraTags, fp); } /* Return a non-static buffer with a games info. */ char * PGNTags (GameInfo *gameInfo) { size_t len; char *buf; char *p; // First calculate the needed buffer size. // Then we don't have to check the buffer size later. len = 12 + 11 + 11 + 12 + 12 + 12 + 25 + 1; // The first 7 tags if (gameInfo->event) len += strlen(gameInfo->event); if (gameInfo->site) len += strlen(gameInfo->site); if (gameInfo->date) len += strlen(gameInfo->date); if (gameInfo->round) len += strlen(gameInfo->round); if (gameInfo->white) len += strlen(gameInfo->white); if (gameInfo->black) len += strlen(gameInfo->black); if (gameInfo->whiteRating >= 0) len += 40; if (gameInfo->blackRating >= 0) len += 40; if (gameInfo->timeControl) len += strlen(gameInfo->timeControl) + 20; if (gameInfo->variant != VariantNormal) len += 50; if (gameInfo->extraTags) len += strlen(gameInfo->extraTags); buf = malloc(len); if (!buf) return 0; p = buf; p += sprintf(p, "[Event \"%s\"]\n", gameInfo->event ? gameInfo->event : "?"); p += sprintf(p, "[Site \"%s\"]\n", gameInfo->site ? gameInfo->site : "?"); p += sprintf(p, "[Date \"%s\"]\n", gameInfo->date ? gameInfo->date : "?"); p += sprintf(p, "[Round \"%s\"]\n", gameInfo->round ? gameInfo->round : "-"); p += sprintf(p, "[White \"%s\"]\n", gameInfo->white ? gameInfo->white : "?"); p += sprintf(p, "[Black \"%s\"]\n", gameInfo->black ? gameInfo->black : "?"); p += sprintf(p, "[Result \"%s\"]\n", PGNResult(gameInfo->result)); if (gameInfo->whiteRating >= 0) p += sprintf(p, "[WhiteElo \"%d\"]\n", gameInfo->whiteRating); if (gameInfo->blackRating >= 0) p += sprintf(p, "[BlackElo \"%d\"]\n", gameInfo->blackRating); if (gameInfo->timeControl) p += sprintf(p, "[TimeControl \"%s\"]\n", gameInfo->timeControl); if (gameInfo->variant != VariantNormal) p += sprintf(p, "[Variant \"%s\"]\n", VariantName(gameInfo->variant)); if (gameInfo->extraTags) strcpy(p, gameInfo->extraTags); return buf; } /* Returns pointer to a static string with a result. */ char * PGNResult (ChessMove result) { switch (result) { case GameUnfinished: default: return "*"; case WhiteWins: return "1-0"; case BlackWins: return "0-1"; case GameIsDrawn: return "1/2-1/2"; } } /* Returns 0 for success, nonzero for error */ int ReplaceTags (char *tags, GameInfo *gameInfo) { ChessMove moveType; int err; ClearGameInfo(gameInfo); yynewstr(tags); for (;;) { yyboardindex = 0; moveType = (ChessMove) Myylex(); if (moveType == (ChessMove) 0) { break; } else if (moveType == PGNTag) { err = ParsePGNTag(yy_text, gameInfo); if (err != 0) return err; } } /* just one problem...if there is a result in the new tags, * DisplayMove() won't ever show it because ClearGameInfo() set * gameInfo->resultDetails to NULL. So we must plug something in if there * is a result. */ if (gameInfo->result != GameUnfinished) { if (gameInfo->resultDetails) free(gameInfo->resultDetails); gameInfo->resultDetails = strdup(""); } return 0; } xboard-4.9.1/moves.h0000644000175000001440000002030212717001265011221 00000000000000/* * moves.h - Move generation and checking * * Copyright 1991 by Digital Equipment Corporation, Maynard, * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * The following terms apply to Digital Equipment Corporation's copyright * interest in XBoard: * ------------------------------------------------------------------------ * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Digital not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * ------------------------------------------------------------------------ * * The following terms apply to the enhanced version of XBoard * distributed by the Free Software Foundation: * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #define SUFFIXES "'!" extern ChessSquare PromoPiece P((ChessMove moveType)); extern ChessMove PromoCharToMoveType P((int whiteOnMove, int promoChar)); extern char PieceSuffix P((ChessSquare p)); extern ChessSquare CharToPiece P((int c)); extern int PieceToNumber P((ChessSquare p)); extern void CopyBoard P((Board to, Board from)); extern int CompareBoards P((Board board1, Board board2)); extern unsigned char pieceToChar[(int)EmptySquare+1]; extern unsigned char pieceNickName[(int)EmptySquare]; extern int promoPartner[(int)EmptySquare]; extern char *pieceDesc[(int)EmptySquare]; extern Board initialPosition; extern Boolean pieceDefs; typedef void (*MoveCallback) P((Board board, int flags, ChessMove kind, int rf, int ff, int rt, int ft, VOIDSTAR closure)); /* Values for flags arguments */ #define F_WHITE_ON_MOVE 1 #define F_WHITE_KCASTLE_OK 2 #define F_WHITE_QCASTLE_OK 4 #define F_BLACK_KCASTLE_OK 8 #define F_BLACK_QCASTLE_OK 16 #define F_ALL_CASTLE_OK (F_WHITE_KCASTLE_OK | F_WHITE_QCASTLE_OK | \ F_BLACK_KCASTLE_OK | F_BLACK_QCASTLE_OK) #define F_IGNORE_CHECK 32 #define F_KRIEGSPIEL_CAPTURE 64 /* pawns can try to capture invisible pieces */ #define F_ATOMIC_CAPTURE 128 /* capturing piece explodes, destroying itself and all non-pawns on adjacent squares; destroying your own king is illegal */ #define F_FRC_TYPE_CASTLING 256 /* generate castlings as captures of own Rook */ #define F_MANDATORY_CAPTURE 0x200 #define F_NULL_MOVE 0x400 /* Special epfile values. [HGM] positive values are non-reversible moves! */ #define EP_NONE (-6) /* [HGM] Tricky! order matters: */ #define EP_UNKNOWN (-1) /* >= EP_UNKNOWN spoils rep-draw */ #define EP_CAPTURE (-2) /* <= EP_NONE is reversible move */ #define EP_PAWN_MOVE (-3) #define EP_IRON_LION (-4) #define EP_ROYAL_LION (-5) #define EP_REP_DRAW (-15) #define EP_RULE_DRAW (-14) #define EP_INSUF_DRAW (-13) #define EP_DRAWS (-10) #define EP_WINS (-9) #define EP_BEROLIN_A 16 /* [HGM] berolina: add to file if pawn to be taken of a-side of e.p.file */ #define EP_CHECKMATE 100 /* [HGM] verify: record mates in epStatus for easy claim verification */ #define EP_STALEMATE -16 /* Call callback once for each pseudo-legal move in the given position, except castling moves. A move is pseudo-legal if it is legal, or if it would be legal except that it leaves the king in check. In the arguments, epfile is EP_NONE if the previous move was not a double pawn push, or the file 0..7 if it was, or EP_UNKNOWN if we don't know and want to allow all e.p. captures. Promotion moves generated are to Queen only. */ extern void GenPseudoLegal P((Board board, int flags, MoveCallback callback, VOIDSTAR closure, ChessSquare filter)); /* Like GenPseudoLegal, but include castling moves and (unless F_IGNORE_CHECK is set in the flags) omit moves that would leave the king in check. The CASTLE_OK flags are true if castling is not yet ruled out by a move of the king or rook. Return TRUE if the player on move is currently in check and F_IGNORE_CHECK is not set. */ extern int GenLegal P((Board board, int flags, MoveCallback callback, VOIDSTAR closure, ChessSquare filter)); /* If the player on move were to move from (rf, ff) to (rt, ft), would he leave himself in check? Or if rf == -1, is the player on move in check now? enPassant must be TRUE if the indicated move is an e.p. capture. The possibility of castling out of a check along the back rank is not accounted for (i.e., we still return nonzero), as this is illegal anyway. Return value is the number of times the king is in check. */ extern int CheckTest P((Board board, int flags, int rf, int ff, int rt, int ft, int enPassant)); /* Is a move from (rf, ff) to (rt, ft) legal for the player whom the flags say is on move? Other arguments as in GenPseudoLegal. Returns the type of move made, taking promoChar into account. */ extern ChessMove LegalityTest P((Board board, int flags, int rf, int ff, int rt, int ft, int promoChar)); #define MT_NONE 0 #define MT_CHECK 1 #define MT_CHECKMATE 2 #define MT_STALEMATE 3 #define MT_STAINMATE 4 /* [HGM] xq: for games where being stalemated counts as a loss */ #define MT_STEALMATE 5 /* [HGM] losers: for games where being stalemated counts as a win */ #define MT_TRICKMATE 6 /* [HGM] losers: for games where being checkmated counts as a win */ #define MT_BARE 7 /* [HGM] shatranj: for games where having bare king loses */ #define MT_DRAW 8 /* [HGM] shatranj: other draws */ #define MT_NOKING 9 /* [HGM] atomic: for games lost through king capture */ /* Return MT_NONE, MT_CHECK, MT_CHECKMATE, or MT_STALEMATE */ extern int MateTest P((Board board, int flags)); typedef struct { /* Input data */ ChessSquare pieceIn; /* EmptySquare if unknown */ int rfIn, ffIn, rtIn, ftIn; /* -1 if unknown */ int promoCharIn; /* NULLCHAR if unknown */ /* Output data for matched move */ ChessMove kind; ChessSquare piece; int rf, ff, rt, ft; int promoChar; /* 'q' if a promotion and promoCharIn was NULLCHAR */ int count; /* Number of possibilities found */ int captures; /* [HGM] oneclick: number of matching captures */ } DisambiguateClosure; /* Disambiguate a partially-known move */ void Disambiguate P((Board board, int flags, DisambiguateClosure *closure)); /* Convert coordinates to normal algebraic notation. promoChar must be NULLCHAR or '.' if not a promotion. */ ChessMove CoordsToAlgebraic P((Board board, int flags, int rf, int ff, int rt, int ft, int promoChar, char out[MOVE_LEN])); extern int quickFlag, killX, killY, kill2X, kill2Y, legNr; xboard-4.9.1/INSTALL0000644000175000001440000001701312717001265010755 00000000000000Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). The file `configure.ac' is used to create `configure' by a program called `autoconf'. You only need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. Please use the autogen.sh shell script, which will run all the autotools to generate the `configure' script if it is missing. The simplest way to compile this package is: 0. If the configure script is missing, run ./autogen.sh in the source directory 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. xboard-4.9.1/config.guess0000755000175000001440000013111012407335704012243 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2013 Free Software Foundation, Inc. timestamp='2013-06-10' # This file 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 3 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, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches with a ChangeLog entry to config-patches@gnu.org. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` ;; esac case "${UNAME_MACHINE}" in i?86) test -z "$VENDOR" && VENDOR=pc ;; *) test -z "$VENDOR" && VENDOR=unknown ;; esac test -f /etc/SuSE-release -o -f /.buildenv && VENDOR=suse # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-${VENDOR}-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-${VENDOR}-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-${VENDOR}-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-${VENDOR}-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-${VENDOR}-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-${VENDOR}-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-${VENDOR}-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-${VENDOR}-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-${VENDOR}-osf1mk else echo ${UNAME_MACHINE}-${VENDOR}-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-${VENDOR}-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-${VENDOR}-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-${VENDOR}-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-${VENDOR}-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-${VENDOR}-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-${VENDOR}-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-${VENDOR}-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-${VENDOR}-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-${VENDOR}-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-${VENDOR}-linux-${LIBC}"; exit; } ;; or1k:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-${VENDOR}-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-${VENDOR}-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-${VENDOR}-linux-${LIBC} ;; PA8*) echo hppa2.0-${VENDOR}-linux-${LIBC} ;; *) echo hppa-${VENDOR}-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-${VENDOR}-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-${VENDOR}-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-${VENDOR}-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-${VENDOR}-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-${VENDOR}-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-${VENDOR}-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-${VENDOR}-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-${VENODR}-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-${VENDOR}-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-${VENODR}-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-${VENDOR}-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-${VENDOR}-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-${VENDOR}-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-${VENDOR}-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-${VENDOR}-tops10 exit ;; *:TENEX:*:*) echo pdp10-${VENDOR}-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-${VENDOR}-tops20 exit ;; *:ITS:*:*) echo pdp10-${VENDOR}-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-${VENDOR}-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-${VENDOR}-esx exit ;; esac eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: xboard-4.9.1/gamelist.c0000644000175000001440000004466612717001265011713 00000000000000/* * gamelist.c -- Functions to manage a gamelist * * Copyright 1995, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include #include #if STDC_HEADERS # include # include #else /* not STDC_HEADERS */ # if HAVE_STRING_H # include # else /* not HAVE_STRING_H */ # include # endif /* not HAVE_STRING_H */ #endif /* not STDC_HEADERS */ #include "common.h" #include "frontend.h" #include "backend.h" #include "parser.h" #include "moves.h" #include "gettext.h" #ifdef ENABLE_NLS # define _(s) gettext (s) # define N_(s) gettext_noop (s) #else # define _(s) (s) # define N_(s) s #endif /* Variables */ List gameList; extern Board initialPosition; extern int quickFlag; extern int movePtr; /* Local function prototypes */ static void GameListDeleteGame P((ListGame *)); static ListGame *GameListCreate P((void)); static void GameListFree P((List *)); static int GameListNewGame P((ListGame **)); /* [AS] Wildcard pattern matching */ Boolean HasPattern (const char * text, const char * pattern) { while( *pattern != '\0' ) { if( *pattern == '*' ) { while( *pattern == '*' ) { pattern++; } if( *pattern == '\0' ) { return TRUE; } while( *text != '\0' ) { if( HasPattern( text, pattern ) ) { return TRUE; } text++; } } else if( (*pattern == *text) || ((*pattern == '?') && (*text != '\0')) ) { pattern++; text++; continue; } return FALSE; } return TRUE; } Boolean SearchPattern (const char * text, const char * pattern) { Boolean result = TRUE; if( pattern != NULL && *pattern != '\0' ) { if( *pattern == '*' ) { result = HasPattern( text, pattern ); } else { result = FALSE; while( *text != '\0' ) { if( HasPattern( text, pattern ) ) { result = TRUE; break; } text++; } } } return result; } /* Delete a ListGame; implies removint it from a list. */ static void GameListDeleteGame (ListGame *listGame) { if (listGame) { if (listGame->gameInfo.event) free(listGame->gameInfo.event); if (listGame->gameInfo.site) free(listGame->gameInfo.site); if (listGame->gameInfo.date) free(listGame->gameInfo.date); if (listGame->gameInfo.round) free(listGame->gameInfo.round); if (listGame->gameInfo.white) free(listGame->gameInfo.white); if (listGame->gameInfo.black) free(listGame->gameInfo.black); if (listGame->gameInfo.fen) free(listGame->gameInfo.fen); if (listGame->gameInfo.resultDetails) free(listGame->gameInfo.resultDetails); if (listGame->gameInfo.timeControl) free(listGame->gameInfo.timeControl); if (listGame->gameInfo.extraTags) free(listGame->gameInfo.extraTags); if (listGame->gameInfo.outOfBook) free(listGame->gameInfo.outOfBook); ListNodeFree((ListNode *) listGame); } } /* Free the previous list of games. */ static void GameListFree (List *gameList) { while (!ListEmpty(gameList)) { GameListDeleteGame((ListGame *) gameList->head); } } /* Initialize a new GameInfo structure. */ void GameListInitGameInfo (GameInfo *gameInfo) { gameInfo->event = NULL; gameInfo->site = NULL; gameInfo->date = NULL; gameInfo->round = NULL; gameInfo->white = NULL; gameInfo->black = NULL; gameInfo->result = GameUnfinished; gameInfo->fen = NULL; gameInfo->resultDetails = NULL; gameInfo->timeControl = NULL; gameInfo->extraTags = NULL; gameInfo->whiteRating = -1; /* unknown */ gameInfo->blackRating = -1; /* unknown */ gameInfo->variant = VariantNormal; gameInfo->variantName = NULL; gameInfo->outOfBook = NULL; gameInfo->resultDetails = NULL; } /* Create empty ListGame; returns ListGame or NULL, if out of memory. * * Note, that the ListGame is *not* added to any list */ static ListGame * GameListCreate () { ListGame *listGame; if ((listGame = (ListGame *) ListNodeCreate(sizeof(*listGame)))) { GameListInitGameInfo(&listGame->gameInfo); } return(listGame); } /* Creates a new game for the gamelist. */ static int GameListNewGame (ListGame **listGamePtr) { if (!(*listGamePtr = (ListGame *) GameListCreate())) { GameListFree(&gameList); return(ENOMEM); } ListAddTail(&gameList, (ListNode *) *listGamePtr); return(0); } /* Build the list of games in the open file f. * Returns 0 for success or error number. */ int GameListBuild (FILE *f) { ChessMove cm, lastStart; int gameNumber; ListGame *currentListGame = NULL; int error, scratch=100, plyNr=0, fromX, fromY, toX, toY; int offset; char lastComment[MSG_SIZ], buf[MSG_SIZ]; TimeMark t, t2; GetTimeMark(&t); GameListFree(&gameList); yynewfile(f); gameNumber = 0; movePtr = 0; lastStart = (ChessMove) 0; yyskipmoves = FALSE; do { yyboardindex = scratch; offset = yyoffset(); quickFlag = plyNr + 1; cm = (ChessMove) Myylex(); switch (cm) { case GNUChessGame: if ((error = GameListNewGame(¤tListGame))) { rewind(f); yyskipmoves = FALSE; return(error); } currentListGame->number = ++gameNumber; currentListGame->offset = offset; if(1) { CopyBoard(boards[scratch], initialPosition); plyNr = 0; currentListGame->moves = PackGame(boards[scratch]); } if (currentListGame->gameInfo.event != NULL) { free(currentListGame->gameInfo.event); } currentListGame->gameInfo.event = StrSave(yy_text); lastStart = cm; break; case XBoardGame: lastStart = cm; break; case MoveNumberOne: switch (lastStart) { case GNUChessGame: break; /* ignore */ case PGNTag: lastStart = cm; break; /* Already started */ case (ChessMove) 0: case MoveNumberOne: case XBoardGame: if ((error = GameListNewGame(¤tListGame))) { rewind(f); yyskipmoves = FALSE; return(error); } currentListGame->number = ++gameNumber; currentListGame->offset = offset; if(1) { CopyBoard(boards[scratch], initialPosition); plyNr = 0; currentListGame->moves = PackGame(boards[scratch]); } lastStart = cm; break; default: break; /* impossible */ } break; case PGNTag: lastStart = cm; if ((error = GameListNewGame(¤tListGame))) { rewind(f); yyskipmoves = FALSE; return(error); } currentListGame->number = ++gameNumber; currentListGame->offset = offset; ParsePGNTag(yy_text, ¤tListGame->gameInfo); do { yyboardindex = 1; offset = yyoffset(); cm = (ChessMove) Myylex(); if (cm == PGNTag) { ParsePGNTag(yy_text, ¤tListGame->gameInfo); } } while (cm == PGNTag || cm == Comment); if(1) { int btm=0; if(currentListGame->gameInfo.fen) ParseFEN(boards[scratch], &btm, currentListGame->gameInfo.fen, FALSE); else CopyBoard(boards[scratch], initialPosition); plyNr = (btm != 0); currentListGame->moves = PackGame(boards[scratch]); } if(cm != NormalMove) break; case IllegalMove: if(appData.testLegality) break; case NormalMove: /* Allow the first game to start with an unnumbered move */ yyskipmoves = FALSE; if (lastStart == (ChessMove) 0) { if ((error = GameListNewGame(¤tListGame))) { rewind(f); yyskipmoves = FALSE; return(error); } currentListGame->number = ++gameNumber; currentListGame->offset = offset; if(1) { CopyBoard(boards[scratch], initialPosition); plyNr = 0; currentListGame->moves = PackGame(boards[scratch]); } lastStart = MoveNumberOne; } case WhiteCapturesEnPassant: case BlackCapturesEnPassant: case WhitePromotion: case BlackPromotion: case WhiteNonPromotion: case BlackNonPromotion: case WhiteKingSideCastle: case WhiteQueenSideCastle: case BlackKingSideCastle: case BlackQueenSideCastle: case WhiteKingSideCastleWild: case WhiteQueenSideCastleWild: case BlackKingSideCastleWild: case BlackQueenSideCastleWild: case WhiteHSideCastleFR: case WhiteASideCastleFR: case BlackHSideCastleFR: case BlackASideCastleFR: fromX = currentMoveString[0] - AAA; fromY = currentMoveString[1] - ONE; toX = currentMoveString[2] - AAA; toY = currentMoveString[3] - ONE; plyNr++; ApplyMove(fromX, fromY, toX, toY, currentMoveString[4], boards[scratch]); if(currentListGame && currentListGame->moves) PackMove(fromX, fromY, toX, toY, boards[scratch][toY][toX]); break; case WhiteWins: // [HGM] rescom: save last comment as result details case BlackWins: case GameIsDrawn: case GameUnfinished: if(!currentListGame) break; if(currentListGame->gameInfo.result == GameUnfinished) currentListGame->gameInfo.result = cm; // correct result tag with actual result if (currentListGame->gameInfo.resultDetails != NULL) { free(currentListGame->gameInfo.resultDetails); } if(yy_text[0] == '{') { char *p; safeStrCpy(lastComment, yy_text+1, sizeof(lastComment)/sizeof(lastComment[0])); if((p = strchr(lastComment, '}'))) *p = 0; currentListGame->gameInfo.resultDetails = StrSave(lastComment); } break; default: break; } if(gameNumber % 1000 == 0) { snprintf(buf, MSG_SIZ, _("Reading game file (%d)"), gameNumber); DisplayTitle(buf); DoEvents(); } } while (cm != (ChessMove) 0); if(currentListGame) { if(!currentListGame->moves) DisplayError("Game cache overflowed\nPosition-searching might not work properly", 0); if (appData.debugMode) { for (currentListGame = (ListGame *) gameList.head; currentListGame->node.succ; currentListGame = (ListGame *) currentListGame->node.succ) { fprintf(debugFP, "Parsed game number %d, offset %ld:\n", currentListGame->number, currentListGame->offset); PrintPGNTags(debugFP, ¤tListGame->gameInfo); } } } if(appData.debugMode) { GetTimeMark(&t2);printf("GameListBuild %ld msec\n", SubtractTimeMarks(&t2,&t)); } quickFlag = 0; PackGame(boards[scratch]); // for appending end-of-game marker. DisplayTitle("WinBoard"); rewind(f); yyskipmoves = FALSE; return 0; } /* Clear an existing GameInfo structure. */ void ClearGameInfo (GameInfo *gameInfo) { if (gameInfo->event != NULL) { free(gameInfo->event); } if (gameInfo->site != NULL) { free(gameInfo->site); } if (gameInfo->date != NULL) { free(gameInfo->date); } if (gameInfo->round != NULL) { free(gameInfo->round); } if (gameInfo->white != NULL) { free(gameInfo->white); } if (gameInfo->black != NULL) { free(gameInfo->black); } if (gameInfo->resultDetails != NULL) { free(gameInfo->resultDetails); } if (gameInfo->fen != NULL) { free(gameInfo->fen); } if (gameInfo->timeControl != NULL) { free(gameInfo->timeControl); } if (gameInfo->extraTags != NULL) { free(gameInfo->extraTags); } if (gameInfo->variantName != NULL) { free(gameInfo->variantName); } if (gameInfo->outOfBook != NULL) { free(gameInfo->outOfBook); } GameListInitGameInfo(gameInfo); } /* [AS] Replaced by "dynamic" tag selection below */ char * GameListLineOld (int number, GameInfo *gameInfo) { char *event = (gameInfo->event && strcmp(gameInfo->event, "?") != 0) ? gameInfo->event : gameInfo->site ? gameInfo->site : "?"; char *white = gameInfo->white ? gameInfo->white : "?"; char *black = gameInfo->black ? gameInfo->black : "?"; char *date = gameInfo->date ? gameInfo->date : "?"; int len = 10 + strlen(event) + 2 + strlen(white) + 1 + strlen(black) + 11 + strlen(date) + 1; char *ret = (char *) malloc(len); sprintf(ret, "%d. %s, %s-%s, %s, %s", number, event, white, black, PGNResult(gameInfo->result), date); return ret; } #define MAX_FIELD_LEN 80 /* To avoid overflowing the buffer */ char * GameListLine (int number, GameInfo * gameInfo) { char buffer[2*MSG_SIZ]; char * buf = buffer; char * glt = appData.gameListTags; buf += sprintf( buffer, "%d.", number ); while( *glt != '\0' ) { *buf++ = ' '; switch( *glt ) { case GLT_EVENT: strncpy( buf, gameInfo->event ? gameInfo->event : "?", MAX_FIELD_LEN ); break; case GLT_SITE: strncpy( buf, gameInfo->site ? gameInfo->site : "?", MAX_FIELD_LEN ); break; case GLT_DATE: strncpy( buf, gameInfo->date ? gameInfo->date : "?", MAX_FIELD_LEN ); break; case GLT_ROUND: strncpy( buf, gameInfo->round ? gameInfo->round : "?", MAX_FIELD_LEN ); break; case GLT_PLAYERS: strncpy( buf, gameInfo->white ? gameInfo->white : "?", MAX_FIELD_LEN ); buf[ MAX_FIELD_LEN-1 ] = '\0'; buf += strlen( buf ); *buf++ = '-'; strncpy( buf, gameInfo->black ? gameInfo->black : "?", MAX_FIELD_LEN ); break; case GLT_RESULT: safeStrCpy( buf, PGNResult(gameInfo->result), 2*MSG_SIZ ); break; case GLT_WHITE_ELO: if( gameInfo->whiteRating > 0 ) sprintf( buf, "%d", gameInfo->whiteRating ); else safeStrCpy( buf, "?" , 2*MSG_SIZ); break; case GLT_BLACK_ELO: if( gameInfo->blackRating > 0 ) sprintf( buf, "%d", gameInfo->blackRating ); else safeStrCpy( buf, "?" , 2*MSG_SIZ); break; case GLT_TIME_CONTROL: strncpy( buf, gameInfo->timeControl ? gameInfo->timeControl : "?", MAX_FIELD_LEN ); break; case GLT_VARIANT: strncpy( buf, gameInfo->variantName ? gameInfo->variantName : VariantName(gameInfo->variant), MAX_FIELD_LEN ); // strncpy( buf, VariantName(gameInfo->variant), MAX_FIELD_LEN ); break; case GLT_OUT_OF_BOOK: strncpy( buf, gameInfo->outOfBook ? gameInfo->outOfBook : "?", MAX_FIELD_LEN ); break; case GLT_RESULT_COMMENT: strncpy( buf, gameInfo->resultDetails ? gameInfo->resultDetails : "res?", MAX_FIELD_LEN ); break; default: break; } buf[MAX_FIELD_LEN-1] = '\0'; buf += strlen( buf ); glt++; if( *glt != '\0' ) { *buf++ = ','; } } *buf = '\0'; return strdup( buffer ); } char * GameListLineFull (int number, GameInfo * gameInfo) { char * event = gameInfo->event ? gameInfo->event : "?"; char * site = gameInfo->site ? gameInfo->site : "?"; char * white = gameInfo->white ? gameInfo->white : "?"; char * black = gameInfo->black ? gameInfo->black : "?"; char * round = gameInfo->round ? gameInfo->round : "?"; char * date = gameInfo->date ? gameInfo->date : "?"; char * oob = gameInfo->outOfBook ? gameInfo->outOfBook : ""; char * reason = gameInfo->resultDetails ? gameInfo->resultDetails : ""; int len = 64 + strlen(event) + strlen(site) + strlen(white) + strlen(black) + strlen(date) + strlen(oob) + strlen(reason); char *ret = (char *) malloc(len); sprintf(ret, "%d, \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\", \"%s\"", number, event, site, round, white, black, PGNResult(gameInfo->result), reason, date, oob ); return ret; } // --------------------------------------- Game-List options dialog -------------------------------------- // back-end typedef struct { char id; char * name; } GLT_Item; // back-end: translation table tag id-char <-> full tag name static GLT_Item GLT_ItemInfo[] = { { GLT_EVENT, "Event" }, { GLT_SITE, "Site" }, { GLT_DATE, "Date" }, { GLT_ROUND, "Round" }, { GLT_PLAYERS, "Players" }, { GLT_RESULT, "Result" }, { GLT_WHITE_ELO, "White Rating" }, { GLT_BLACK_ELO, "Black Rating" }, { GLT_TIME_CONTROL,"Time Control" }, { GLT_VARIANT, "Variant" }, { GLT_OUT_OF_BOOK,PGN_OUT_OF_BOOK }, { GLT_RESULT_COMMENT, "Result Comment" }, // [HGM] rescom { 0, 0 } }; char lpUserGLT[LPUSERGLT_SIZE]; // back-end: convert the tag id-char to a full tag name char * GLT_FindItem (char id) { char * result = 0; GLT_Item * list = GLT_ItemInfo; while( list->id != 0 ) { if( list->id == id ) { result = list->name; break; } list++; } return result; } // back-end: build the list of tag names void GLT_TagsToList (char *tags) { char * pc = tags; GLT_ClearList(); while( *pc ) { GLT_AddToList( GLT_FindItem(*pc) ); pc++; } GLT_AddToList( " --- Hidden tags --- " ); pc = GLT_ALL_TAGS; while( *pc ) { if( strchr( tags, *pc ) == 0 ) { GLT_AddToList( GLT_FindItem(*pc) ); } pc++; } GLT_DeSelectList(); } // back-end: retrieve item from dialog and translate to id-char char GLT_ListItemToTag (int index) { char result = '\0'; char name[MSG_SIZ]; GLT_Item * list = GLT_ItemInfo; if( GLT_GetFromList(index, name) ) { while( list->id != 0 ) { if( strcmp( list->name, name ) == 0 ) { result = list->id; break; } list++; } } return result; } // back-end: add items id-chars one-by-one to temp tags string void GLT_ParseList () { char * pc = lpUserGLT; int idx = 0; char id; do { id = GLT_ListItemToTag( idx ); *pc++ = id; idx++; } while( id != '\0' ); } xboard-4.9.1/FAQ.html0000644000175000001440000025307012717001265011226 00000000000000 XBoard and WinBoard: Frequently Asked Questions

XBoard and WinBoard: Frequently Asked Questions

This document answers some frequently asked questions about the graphical chess interfaces XBoard and WinBoard. A hyperlinked version of this FAQ is available on the Web through the page http://www.gnu.org/software/xboard/FAQ.html.

This FAQ is in need of revision. Please contact us if you'd like to help update it.


Outline


Detailed contents


[A] Introduction and hot topics


[A.1] What are XBoard and WinBoard?

XBoard and WinBoard are graphical user interfaces for chess. XBoard runs with the X Window System on Unix systems (including GNU/Linux); see topic [B.1]. WinBoard runs on true 32-bit Microsoft Windows operating systems, such as Windows 95, 98, NT, 2000, ME, XP, Vista, and should continue to work on future 32-bit Windows systems. It does not work on Windows CE (also known as Pocket PC), nor does it work on 16-bit Windows systems such as Windows 3.1. See topic [B.2].


[A.2] Where can I get chess information and chess software?

As a shortcut to most things mentioned in this FAQ, try Tim Mann's Chess Web page, http://www.tim-mann.org/chess.html. This page page is currently a very bad place to get the latest released versions of XBoard and WinBoard and the most up-to-date version of this FAQ, though. A better place is the WinBoard forum. Also see our Savannah project pages at https://savannah.gnu.org/projects/xboard/.

If you have other questions about XBoard/WinBoard that aren't answered in this FAQ, you can try Aaron Tay's WinBoard and Chess Engines FAQ, atdefunct URL.

For general news and information about chess, try the CCC forum or the WinBoard forum. Anothe possibility is the newsgroup hierarchy rec.games.chess.*, especially the groups rec.games.chess.misc and rec.games.chess.computer. Both of the latter groups have very informative FAQs maintained by Steve Pribut; look for them on the newsgroups or at defunct URL.

Like other GNU software, you can get XBoard, and WinBoard by anonymous FTP from ftp://ftp.gnu.org/pub/gnu/ and its many mirror sites. Look in the subdirectories xboard, and winboard. The .tar.gz suffix on the files there indicates they were packed with tar and compressed with gzip. The .exe or .zip suffixes indicate files that were packed and compressed with zip.

For other chess software, try the Internet Chess Library. Use anonymous FTP to connect to ftp.freechess.org, or go to the Web page http://www.freechess.org/. You can get chess software, game collections, the FAQ file for rec.games.chess, and other chess-related material there, in the directory pub/chess. The FTP server can automatically decompress files for you as you download them, useful if you don't have gzip.

Here is a sample anonymous ftp session. Some of the ftp server's responses are abbreviated, but all the commands you must type are included.

    % ftp ftp.gnu.org
    Connected to ftp.gnu.org
    Name: anonymous
    Password: your-email-address@your-site
    ftp> binary
    200 Type set to I.
    ftp> cd /pub/gnu/xboard
    ftp> dir
    -rw-r--r-- 1 14910 wheel  1057625 May 20 00:25 xboard-4.2.7.tar.gz
    ftp> get xboard-4.2.7.tar.gz
    150 BINARY connection for xboard-4.2.7.tar.gz (1057625 bytes).
    226 Transfer complete.
    ftp> quit

[A.3] What are the current version numbers for XBoard and WinBoard?

At this writing, the current version numbers are:

  • XBoard 4.4.0
  • WinBoard 4.4.0

[A.4] Who is working on this project?

Please see our Savannah project pages at https://savannah.gnu.org/projects/xboard/ for a list of active developers. Many others occasionally contribute suggestions and snippets of code, for which we are grateful.

[A.5] How do I report bugs, offer help, etc.?

Bug reports, suggestions, and offers to help on XBoard or WinBoard should be sent to bug-xboard@gnu.org.

Beginner questions and discussion about the program may get faster answers on the WinBoard Forum at http://www.open-aurec.com/wbforum/. This forum also constains a section dedicated to propose and discuss new features for WinBoard / XBoard or WinBoard protocol, and reposrt bugs, and offers downloads of pre-installed packages of WinBoard bundled with other software, useful for conducting computer-computer tournaments.

If you are developing a chess engine that works with XBoard or WinBoard (or an alternative GUI that works with such engines), see the Chess Engines mailing list, hosted at http://groups.yahoo.com/group/chess-engines. For better response, join the above-mentioned WinBoard forum, or the CCC forum.

Any time you want to report a possible bug in XBoard or WinBoard, we need to know exactly what you did, and exactly what error (or other) messages you got.

If you are using Unix, run the "script" program, run XBoard with the -debug flag (if you get as far as running it), do whatever is necessary to reproduce the problem, type "exit" to the shell, and mail us the resulting typescript file. We also need to know what hardware/operating system combination you are using. The command "uname -a" will usually tell you this; include its output in your typescript.

If you are using MS Windows, run WinBoard with the -debug flag, and send us a copy of the WinBoard.debug file. If you aren't sure how to add command-line flags to WinBoard, you can hit Ctrl+Alt+F12 to create a WinBoard.debug file after WinBoard starts, but that is not as good, because a few messages that would have been printed at the start are lost.

Either way, please send us the exact text of the commands you typed and the output you got, not just your recollection of approximately what they were. The messages may seem meaningless to you, but they are very meaningful to us and essential for diagnosing problems.


[A.6] What are the future plans for XBoard and WinBoard?

Our plans are always in flux. As with most free software projects, the next release will happen when it happens -- or it may never happen. This has always been the policy for XBoard/WinBoard. Releases have never been promised in specific time frames.

Starting in November 2003, several new developers have joined the project, and work is now hosted at https://savannah.gnu.org/projects/xboard/. Lots of work is just getting underway, but nothing is far along yet.

Here is a partial list of items that have a nonzero probability of happening in finite time.

  • Small bug fixes. Occasionally someone sends us a fix, or reports a small bug very clearly so that we're able to fix it in a few minutes work.
  • Protocol version 3. The members of the chess engine authors' mailing list discussed a set of proposed features for the next version of the XBoard/WinBoard chess engine communication protocol. The WinBoard 4.3 fork has taken the protocol in a different direction, though, extending version 2 with new features as they were needed, rather than upgrading to a new protocol in a single sweep. It does not seem likely that there will be a v3 protocol in the foreseeable future.
  • Contributed features. Several people have mailed me code to add various features. Most of this code is available on the XBoard/WinBoard extensions page at http://www.tim-mann.org/extensions.html, but it is not in any official releases yet. We are in the process of getting folks to formally assign the copyrights on their contributions to the Free Software Foundation so that we can include it in official releases in the future.
  • Internationalization. Several people have expressed interest in internationalizing XBoard/WinBoard. Version 4.4 implements internationalization in its XBoard branch, and includes (partial) Turkish and German translations. For WinBoard a suitable way for internationalization still has to be found, as all menu strings there are not in the C code, but in a Windows resource file. In any case, we will need more translators, to update the existing translations (for version 4.2.7) to the current version, and to provide translaions for oter languages. Watch for news on the xboard-devel mailing list on our Savannah pages.

[B] XBoard and WinBoard


[B.1] What is XBoard?

XBoard is a graphical user interface for chess. It displays a chessboard on the screen, accepts moves made with the mouse, and loads and saves games in Portable Game Notation (PGN). XBoard is free software. It serves as a front-end for many different chess services, including:

Chess engines that will run on your machine and play a game against you or help you analyze, such as GNU Chess and Crafty (topic [D.3] below).

Chess servers on the Internet, where you can connect to play chess with people from all over the world, watch other users play, or just hang out and chat.

Correspondence chess played by electronic mail. The cmail program (topic [B.6] below) automates the tasks of parsing email from your opponent, playing his moves out on your board, and mailing your reply move after you've chosen it.

The Web and your own saved games. You can use XBoard as a helper application to view PGN games in your Web browser, or to load and save your own PGN files.

XBoard runs under Unix or Unix-compatible systems. It requires the X Window System, version X11R4 or later. There are also ports of XBoard to 32-bit Microsoft Windows and to the Amiga. See topics [B.2] and [B.3] respectively.


[B.2] Is there an XBoard for Microsoft Windows? What is WinBoard? How do I install WinBoard?

WinBoard is a port of XBoard to 32-bit Microsoft Windows systems, such as Windows 95, 98, NT, 2000, ME, and XP. It uses the same back end chess code as XBoard, but the front end graphics code is a complete rewrite. WinBoard is free software.

The WinBoard distribution includes a sample Chess engine.

The WinBoard distribution also includes the ICC timestamp and FICS timeseal programs (topic [B.12]).

cmail (topic [B.6]) has not been ported to Windows. All the other XBoard functions are included in WinBoard. The International Email Chess Group web site at http://www.iecg.org/ recommends ECTool (http://www.ectool.nu/) for playing correspondence chess under Windows.

You install WinBoard as follows. Download the WinBoard package to your PC (see topic [A.2]). It will be a file with a name like winboard-4_0_0.exe. Double-click on this file in the Explorer or File Manager to run it. Follow the on-screen prompts.


[B.3] Is there an XBoard for the Amiga? What is AmyBoard?

AmyBoard is a port of XBoard to the Amiga, by Jochen Wiedmann. The distribution includes a port of GNU Chess. AmyBoard is free software.

The current version of AmyBoard is 330.5 (based on XBoard 3.3.0). No one is currently maintaining it.

System requirements:

  • An Amiga (obviously :-), running OS 2.04 or later, 2Mb RAM or more.
  • MUI 2.0 or later.
  • Workbench or another screen with no less than 640x400 pixels (adjustable with the MUI-Prefs); this restriction is just because we don't have bitmaps with less than 40x40 pixels per square. If someone contributes bitmaps with 20x20 or 20x25, they will work with any Hires mode.

If you would like to use an ICS, you need an Internet connection via either

  • a telnet-like program, or
  • a terminal program reading from stdin and writing to stdout.

AmyBoard is available in the Internet Chess Library (topic [A.2]).


[B.4] Is there an XBoard for the Macintosh?

Note: I am not a Mac user and have not tried this myself, so I cannot answer questions about it.

Because MacOS X has a Unix base, XBoard will compile and run on it. You do need an X11 (X Window System) server and client libraries. I'm told that these come standard with MacOS X 10.3 and later. Once you install the X11 package, XBoard is reported to compile and run without changes.

You can avoid having to compile XBoard (and GNU Chess) yourself by using the Fink sofware packaging system. See http://fink.sourceforge.net/ and http://finkcommander.sourceforge.net/ for more info on Fink.

There is no version of XBoard or WinBoard that runs with the native (non-X11) Mac graphical interface, and none that runs on MacOS 9 or earlier.


[B.5] Does XBoard run on VMS?

No. This port would probably be a lot easier than the Win32 and Amiga ports were, because VMS has the X Window system (under the name DECwindows) and is now POSIX compliant. If you are working on this, send mail to bug-xboard@gnu.org to let us know.


[B.6] What is cmail?

cmail is a program that helps you play and keep track of electronic mail correspondence chess games using XBoard. It is distributed with XBoard and has its own manual page. cmail is free software. It was written by Even Welsh. cmail has not been ported to Windows; sorry.


[B.7] How do I build XBoard? Do I need gcc?

The first step to building XBoard is to get the distribution file. See topic [A.2] for places you can ftp the software from.

Next, decide what directory tree you are going to install XBoard in. The default is /usr/local, but you probably don't have write access to that directory unless you are a system administrator. If you do, type the following to install it there:

    gzip -cd xboard-*.tar.gz | tar -xvf -
    cd xboard-*/
    ./configure
    make
    su
    make install

If you want to install xboard in your personal home directory ($HOME/bin), type this:

    gzip -cd xboard-*.tar.gz | tar -xvf -
    cd xboard-*/
    ./configure --prefix=$HOME
    make
    make install

If the first step above fails because you don't have gzip, see topic [A.2], and ask a local Unix expert if you need more help. If you have any problems with the last two steps, read the READ_ME and INSTALL files in the xboard-*/ directory. You will also find this FAQ there.

You don't need to have gcc to build XBoard. Almost any Unix C compiler should do.


[B.8] Can I use XBoard or WinBoard to play a game of chess with another human?

The only way for two humans on different machines to play chess in real time using XBoard/WinBoard is to use an Internet Chess Server as an intermediary. That is, each player runs his own copy of XBoard or WinBoard, both of them log into an ICS, and they play a game there. Two copies of XBoard/WinBoard cannot communicate with each other directly.

Instructions on how to get started with Internet chess are included with the XBoard and WinBoard distributions. The network addresses included in the distribution may not always be current. The oldest and largest ICS is the Internet Chess Club at chessclub.com, which now has a fee for registered use, but still allows free unregistered use. There are also many newer sites with no fees, using the Free Internet Chess Server implementation (FICS). The most active FICS site is freechess.org. On these and most other chess servers, the port number to use is 5000.

If you don't have network connectivity to any ICS site, you can run your own server using a version of the FICS code, but this is not easy. See http://www.tim-mann.org/ics.html#ownics for advice and pointers.

The cmail program included with XBoard lets you play email postal games with another human; see topic [B.6].

Two humans can play chess on the same machine using one copy of XBoard/WinBoard in Edit Game mode, but the clocks don't run in this mode, so it's of limited usefulness.

See also topic [D.2], Winsock Chess.


[B.9] Will WinBoard run on Windows 3.1? How about Windows CE (also known as Pocket PC)?

WinBoard does not run on Windows 3.1, Windows for Workgroups 3.11, etc., not even with the Win32s compatibility package. The main problem is that Win32s does not have threads or real concurrent processes. A port of WinBoard to Windows 3.1 is possible in theory, but it would be difficult and messy, and no one is going to do it.

WinBoard does not run on Windows CE (also known as Pocket PC). I don't know what would be required to port it.

WinBoard does run well on full 32-bit versions of Windows, such as Windows 95, 98, NT, 2000, ME, XP, and Vista, and should continue to work on future 32-bit Windows systems. To use the help files in Vista, you will need to install the WinHlp32.exe from MicroSoft on your Vista system.


[B.10] How do I use XBoard or WinBoard as an external viewer for PGN files with my Web browser?

  1. On Unix systems:
    • Add the following line to the file .mime.types in your home directory. (Create the file if it doesn't exist already.)
          application/x-chess-pgn    pgn
      
    • Add the following line to the file .mailcap in your home directory. (Create the file if it doesn't exist already.)
          application/x-chess-pgn; xboard -ncp -lgf %s
      
    • Exit from your Web browser and restart it.
  2. On MS Windows systems:

    The exact procedure depends on which Web browser you are using. The current version of WinBoard automatically configures itself as your PGN viewer for local files, Netscape 4.x and later, and Internet Explorer. This automatic setup probably works for all other current Web browsers, too.


[B.11] How do I use WinBoard as an external viewer for PGN files with the MS Windows File Manager or Explorer?

WinBoard sets this up automatically when you install it, except on old versions of Windows NT (prior to 4.0). On Windows NT 3.51 or earlier, go to the File Manager, click on the File menu, select Associate, enter "pgn" as the extension, and use the Browse button to find your copy of WinBoard and set up the association.


[B.12] How do I use ICC timestamp or FICS timeseal with XBoard?

First, get the appropriate version of timestamp or timeseal for your machine from ftp.chessclub.com or ftp.freechess.org. Second, be sure that you can connect using XBoard without timestamp/timeseal. Third, be sure that you can connect using timestamp/timeseal without XBoard. See the help files on ICC and FICS or ask people online if you have problems.

If you are in a completely ordinary situation, where your machine is directly on the Internet and you can connect to ICC or FICS without timestamp/timeseal using just the command "xboard -ics" or "xboard -ics -icshost freechess.org", change that command to one of the following:

    xboard -ics -icshost chessclub.com -icshelper timestamp

    xboard -ics -icshost freechess.org -icshelper timeseal

If you have a firewall between your machine and the ICS, see topic [B.19].

If you normally have to use the "/icscomm" command line option on xboard to log into a second machine, and then telnet to ICC or FICS from there, you are going to have to run the Unix version of timestamp or timeseal on the second machine. (If the second machine is not running Unix, you are out of luck.) Get the appropriate version of timestamp or timeseal onto the shell machine via FTP; see the help files on ICC and FICS for instructions. Then simply run it when you would normally run telnet. In this configuration you are not protected against lag between your PC and the shell machine, or for lag caused by heavy load on the shell machine itself from other users.

For further information on timestamp and timeseal, see the help files on ICC and FICS.


[B.13] How do I use ICC timestamp or FICS timeseal with WinBoard?

If you select an ICS from either the WinBoard Startup dialog or the Windows Start submenu that WinBoard installs, WinBoard automatically runs timestamp or timeseal if the ICS you chose is known to support it.

If you are constructing a WinBoard command line by hand, add the option "/icshelper timestamp" or "/icshelper timeseal" to the WinBoard command line to use timestamp or timeseal. Both timestamp.exe and timeseal.exe are included in the WinBoard distribution. They both function identically to the Unix versions, as documented in "help timestamp" on ICC and "help timeseal" on FICS.

If you have a firewall between your machine and the ICS, see topic [B.19].

If you normally have to use the "/icscomm" command line option on WinBoard to log into a shell account, and then telnet to ICC or FICS from there, you are going to have to run the Unix version of timestamp or timeseal on the shell machine. (If the shell account is not on a Unix machine, you are out of luck.) Get the appropriate version of timestamp or timeseal onto the shell machine via FTP; see the help files on ICC and FICS for instructions. Then simply run it when you would normally run telnet. In this configuration you are not protected against lag between your PC and the shell machine, or for lag caused by heavy load on the shell machine itself from other users.

For further information on timestamp and timeseal, see the help files on ICC and FICS.


[B.14] How do I play bughouse with XBoard or WinBoard?

XBoard and WinBoard have full bughouse support. Offboard piece holdings are shown next to the board, and you drop offboard pieces by dragging them with the mouse (holding the left button down) to their drop square, or left-click the piece and the drop square, just like when you enter any ordinary move.

XBoard and WinBoard can display only one board at a time, but you can observe your partner's game by running a second copy of the program and logging in as a guest. (Unfortunately, this is not possible if you are using the /icscomm option.) To observe your partner's games automatically, use the "follow" or "pfollow" ICS command; see the ICS online help for details.


[B.16] What is Zippy? How can I interface a chess program to the Internet Chess Servers?

Zippy is an interface that lets a compatible chess engine (such as GNU Chess or Crafty) act as a computer player on an Internet Chess Server. Zippy is included in both the XBoard and WinBoard distributions. It is implemented as a small amount of additional code within XBoard or WinBoard. For documentation, see the file zippy.README, included in both distributions or available from my chess Web page, http://www.tim-mann/chess.html. The version of zippy.README on my Web page is often more up-to-date than those in the XBoard/WinBoard distributions. You'll also find a "biography" of Zippy and pointers to the original Zippy the Pinhead comic strips on my Web page. Please read zippy.README carefully before you ask me any questions about Zippy.

Using a computer to choose your moves on a chess server is considered cheating unless your account is on the computer (C) list. Read "help computer" on your favorite server for details on their policy. Most of the servers have plenty of computers running now, so they will not be excited about having you run a new one unless you have written your own chess engine. They don't really need yet another Crafty or GNU Chess clone.


[B.17] How can I interface my own chess program to XBoard or WinBoard?

This is a non-trivial task. XBoard and WinBoard were not designed with a clean interface for talking to chess programs; they were written to work with an existing version of GNU Chess that expects to be talking to a person. Your program has to emulate GNU Chess's rather idiosyncratic command structure to work with XBoard and WinBoard. We are gradually cleaning up, improving, and documenting the interface as newer versions of XBoard and WinBoard come out, however.

For documentation, see the file engine-intf.html, included in both distributions or available from Tim Mann's chess Web page, http://www.tim-mann.org/chess.html. The version of engine-intf.html on Tim's Web page might totally obsolete, though. To know how the current WinBoard or XBoard version communicate with their engines, use the documentation in the XBoard/WinBoard distributions, or on the WinBoard forum.


[B.18] How can I recompile WinBoard from source?

The source code for WinBoard is available from the author's Web page, http://www.tim-mann.org/chess.html.

WinBoard is currently developed using gcc under Cygwin. To build WinBoard with the free Cygwin tools, available from http://www.cygwin.com/), use the command "make -f makefile.gcc" from the winboard directory of the source distribution.

You can build the program from the MSVC++ GUI by opening the project file (winboard.dsp) and telling MSVC++ to build the project. You can also build it from the the command line by using the nmake program supplied with MSVC++. The makefile for MSVC is makefile.ms in the winboard directory.

WinBoard 4.2.5 was successfully compiled with the net release of Cygwin as downloaded on 20-March-2001 (cygwin1.dll 1.1.8, gcc 2.95.2-6, binutils 20001221-1, flex 2.5.4-1), but exhibits a command-line parsing bug; see item 511 in the ToDo file that comes with WinBoard. WinBoard 4.1.0 does not compile with Cygwin. WinBoard 4.0.7 is known to compile with Cygwin BL20.1.

To build WinBoard with Borland C++ 4.5, use "borland.mak", supplied with the WinBoard sources, as the Makefile. Support for Borland C++ was contributed by Don Fong and has not been tested by the author of WinBoard.

WinBoard is a Win32 application, so you definitely need a compiler and tool set that supports Win32. In particular, older versions of DJGPP can build only 32-bit MSDOS programs; that is, programs that use a DOS extender to get a 32-bit address space and do not make any Windows calls. The latest versions of DJGPP are said to be able to build Win32 programs when used with the proper extension package(s), but this is not known to work with WinBoard. Use Cygwin instead.

See also topic [C.16].


[B.19] How can I use XBoard or WinBoard to talk to an Internet Chess Server through a firewall or proxy?

There is no single answer to this question, because there are many different kinds of firewalls in use. They work in various different ways and have various different security policies. This answer can only provide hints.

Note that you can't access Internet Chess Servers through a Web proxy, because they are not a Web service. You talk to them through a raw TCP connection, not an HTTP connection. If you can only access the Web through a proxy, there may be a firewall that stops you from making direct TCP connections, but there may also be a way through it. Read on for hints, and contact your local system administrator if you need more information about your local configuration.

A helpful user mailed me the following explanation of how to use WinBoard with WinGate:

"I have managed to setup WinBoard though my WinGate proxy. I have the Office version. What I needed to do was to setup the TCP/IP connection to add the User/Host name and my provider service name for the DNS, but I had to leave the HOST IP address blank. I have not played with all the variations, so it may be just that I have the DNS lookup enabled."

I hope this helps, though I don't find it very clear. I don't have a copy of WinGate myself and can't help if you have questions about it.

If you are using some other non-SOCKS firewall, read the FIREWALLS section in your XBoard or WinBoard documentation (man page, info document, or Help file). If you can telnet to a chess server in some way, then you can almost certainly connect to it with xboard/WinBoard, though in some cases you may not be able to run timestamp or timeseal. The timestamp and timeseal protocols require a clean, 8-bit wide TCP connection from your machine to the ICS, which some firewalls do not provide.

If you have a SOCKS firewall and are using XBoard, you should be able to SOCKSify xboard and use it. See http://www.socks.nec.com/ for information about SOCKS and socksification. However, if you do this, you can't use timestamp or timeseal; what you really need is a socksified version of timestamp or timeseal. This is hard because the source code for timestamp and timeseal is proprietary; the folks running the chess servers don't give it out because that would make it too easy to cheat. On some versions of Unix, you may be able to socksify a program that you don't have the source code to by running it with an appropriate dynamic library; see http://www.socks.nec.com/. For others, you might be able to get a pre-built socksified version from the chess server administrators. For timeseal versions, see ftp://ftp.freechess.org/pub/chess/timeseal/. For timestamp versions, the directory would be ftp://ftp.chessclub.com/pub/icc/timestamp/, but at this writing there don't seem to be any socksified timestamps there. Once you have a socksified timestamp or timeseal, simply run it with a normal, non-socksified xboard in place of the standard timestamp or timeseal.

If you have a SOCKS firewall and you are using WinBoard, we now know how to make this configuration work, complete with timestamp or timeseal!

Start by getting SocksCap32. This software is freely available from http://www.socks.nec.com/. Install it on your machine, read the documentation, and learn to use it. You may find it useful with many other programs besides WinBoard.

Next, don't socksify WinBoard. Socksifying WinBoard itself doesn't let you use it with timestamp or timeseal. For some reason I don't understand -- something strange that SocksCap32 does -- the socksified WinBoard runs but does nothing, and timestamp/timeseal runs all by itself in its own window.

Instead, use the following workaround. Follow the instructions exactly; don't try to skip steps or simplify things.

First, make SocksCap32 application profiles for timestamp and timeseal. Use the following command lines in the SocksCap32 profiles. Name the first profile "timestamp" and the second "timeseal".

    "c:\program files\winboard\timestamp.exe" chessclub.com 5000 -p 5000
    "c:\program files\winboard\timeseal.exe" freechess.org 5000 -p 5000

Second, run timestamp or timeseal by itself, socksified, using its profile. This will open an unneeded, black window that will not respond to typing. Minimize it to the task bar and ignore it. It will go away when you exit from WinBoard.

Next, run WinBoard using the following command line. Make a shortcut or type this command into an MS-DOS Prompt box. Don't run WinBoard itself socksified, just run it directly.

    "c:\program files\winboard.exe" /ics /icshost=localhost /icsport=5000

After you get this working, you can try getting the timestamp window to auto-minimize by starting it from a shortcut instead of from the SocksCap32 control window. As it says in the SocksCap32 help file, put the following in the Target field of a shortcut's Properties page:

    "c:\program files\sockscap32\sc32.exe" timestamp

Then select "Run: Minimized" on the same page. Do the same for timeseal.

Another method that can work is to use a .bat file to start both timestamp and WinBoard. It would look something like this:

    REM --
    REM -- icc.bat
    REM -- Start timestamp under SocksCap32 and use WinBoard to connect to it.
    REM -- The string "timestamp" refers to a SocksCap32 profile for timestamp.
    REM --  Do not change it to the filename of the timestamp program!
    REM --
    start /minimized "c:\program files\sockscap32\sc32.exe" timestamp
    cd "c:\program files\winboard"
    winboard /ics /icshost=localhost /icsport=5000

This workaround has a problem if you want to run two copies of WinBoard at once, talking to the same chess server twice (for bughouse) or to two different chess servers. If you need to do that, you will need to run a separate copy of timestamp with a different port number for each connection. You'll need to make a second set of profile entries with a different value after the -p flag (say, 5001) and you'll need to change the WinBoard command line /icsport=5000 for the second WinBoard to match.


[B.20] How can I use XBoard or WinBoard on chess.net with accuclock?

I believe chess.net provides a Win32 command-line version of accuclock that will work with WinBoard. Please see the documentation on the chess.net server itself; don't ask the author of WinBoard.

I don't know whether chess.net provides versions of accuclock for Unix at this time. Ask them.


[B.21] Can I get Zippy to do one or more ICS commands automatically at the start or end of each game?

By default, Zippy automatically sends the command "gameend" to ICS at the end of each game. You can alias this command (using the ICS "alias" feature) to anything you want. On ICC, you can use the "multi" feature to alias gameend to several commands, but other servers don't have that feature. Zippy doesn't send anything at the start of the game by default.

You can get Zippy to send one or more commands of your choosing, at the start and/or end of each game, by using the -zippyGameStart and -zippyGameEnd command line options, newly added in version 4.0.3. Both xboard and WinBoard have (somewhat obscure) ways of getting newlines into this option to send several commands. Here is an example of one way to do it for each.

    xboard -ics -zp -xrm '*zippyGameStart: say hi\nsay prepare to die\n'

    WinBoard /ics /zp /zippyGameEnd='say thanks\nseek 5 0\nseek 2 12\n'

[B.22] How do I print from WinBoard?

WinBoard does not have built-in printing functionality. If you want to print a picture of the board, press Alt+PrintScrn, run the standard Windows application Paintbrush, select Paste, and print from there. If you want to print a list of moves, save your game as a PGN file, then open the PGN file with Notepad or any other plain text editor and print it from there.

WinBoard 4.4 has a menu item "Save Diagram..." in the file menu, which saves the board part of the display as a Windows .bmp file, but only if the board size is not too big.


[B.23] Can I get Zippy to automatically reconnect to ICS when its connection breaks?

There isn't a perfect solution to this problem yet, but a pretty good one is to write a shell script (for xboard) or .bat script (for WinBoard) that automatically restarts the program whenever it exits. Use the -xexit flag so that you don't get a popup dialog that must be dismissed with the OK button before the program will exit. The gap in this solution is that your connection to ICS can sometimes get into a state where the program does not notice that the connection is broken until the next time it tries to send a command. Perhaps some future version of xboard/WinBoard will have an option to send a harmless command every five minutes or so.

Anyway, here is a sample Windows .bat file that restarts WinBoard each time it exits. Thanks to Jason Williamson. It assumes that you have put your computer account's name and password in a file named logon.ini.

REM --
REM -- wbrecon.bat
REM -- Start WinBoard in Zippy mode, and restart it each time it exits.
REM -- Add or change parameters as needed for your application.
REM --
:loop
start /w winboard /zp /ics /icslogon logon.ini /xexit /xautoraise
REM -- The next line is to have a short delay setup for 139 seconds.
REM -- Leave it out if it doesn't work on the version of Windows you use.
TYPE NUL | CHOICE.COM /N /CY /TY,99 >NUL
goto loop

Here is a Unix shell script to do the same thing for xboard. It's a bit more elaborate. It is based on the script I use for the original Zippy. It logs all ICS output to a file named zippy.out, and it lets you type commands to Zippy by running "cat > zippy.fifo".

#! /bin/sh
host="204.178.125.65 -icsport 5000 -telnet -telnetProgram timestamp"
#host="164.58.253.13 -icsport 5000 -telnet -telnetProgram timeseal"
out=zippy.out
fifo=zippy.fifo
ZIPPYPASSWORD='something'
export ZIPPYPASSWORD
ZIPPYPASSWORD2='orother'
export ZIPPYPASSWORD2
ZIPPYLINES=`pwd`/all.lines
export ZIPPYLINES
ZIPPYGAMEEND='say Yow, that was FUN!
gameend'
export ZIPPYGAMEEND
zippylogon=`pwd`/logon.ini
DISPLAY=`hostname`:0.0
export DISPLAY
mv -f $out ${out}.old
rm -f $fifo
mkfifo $fifo
pid=$$
( while [ true ] ; do cat -u $fifo ; done ) | \
      ( while [ true ] ; do
          xboard -iconic -ics -icshost $host \
                 -zt -zp -xbell -xanimate \
                 -xautosave -xquiet -fcp "gnuchessx -h" \
                 -icslogon $zippylogon -xexit -autoflag -xautoraise $*
          sleep 600
        done ) > $out 2>&1 &

[B.24] The chess engines are too strong and always beat me. How can I adjust the difficulty level to make them weaker?

The best way is to get a weaker chess engine. On the ChessWar website you will find a rating list of virtually all engines that are able to play under XBoard/WinBoard, from super-humanly strong to ridculously weak. Most of them can be downloaded for free from the internet.

A way to get that effect is to limit the time the engine can use for deciding on its move. The time-odds options or menu items in the time-control dialog) can be used to this end. This is only of limited help, as engines do not weeken that much at faster time-control, and there is a practical limit to how fast you can order the engine to go. Also feel free to use Retract Move if you make a blunder.

Many chess coaches will let you switch sides after they get a stronger position so that you can get experience playing positions where you are winning. You can try this with XBoard/WinBoard by using the Machine White or Machine Black menu command to make the machine take over your position.

The -depth command-line option to XBoard/WinBoard can also be used to weaken the engine (see the man page or Help file). It's a bit of a nuisance to set command line options in Windows, but see topic [C.7] for instructions.

Other ways of weakening engines are engine-specific. Many of them let you adjust various parameters, and if you choose bad settings, the engine will play more poorly. Consult whatever documentation came with the engine you are using.


[B.25] May I use the piece bitmaps from XBoard/WinBoard in my own program?

The piece bitmaps used in XBoard and WinBoard were designed by Elmar Bartel. He released them under the GNU General Public License. This means that if your program is also free software distributed under the GPL, you can use them freely. If your program is distributed under some other license, including commercial, shareware, or non-GPL freeware, then you cannot use the bitmaps unless you obtain special permission from Elmar. See the file README.bitmaps that comes with the XBoard and WinBoard source code for more information and an email address you can write to.


[B.26] How can I get rid of these silly logos that this new WinBoard displays above the board?

WinBoard 4.4.0 has an option /autoLogo, which makes is search for bitmap files to display as logo, in the engine directory or in the folder "logos". If you see logos without having asked for them, the settings in your winboard.ini file probably contains the line

/autoLogo=true

Just change that to /autoLogo=false. You can also achieve that by starting WinBoard through the startup dialog (from the start menu), and then tick "additional options" at the bottom, and type /autoLogo=false in the edit field, before pressing OK. If you then later select "Save Settings Now" from the Option menu, or when "Save Settings on Exit" is on, and you close WinBoard, this will automatically end up in your settings field.

When /autoLogo=false, logos will only be displayed if you explicitly ask for them, by running WinBoard with the option /firstLogo=FILENAME.bmp or /secondLogo=FILENAME.bmp. (Which will not be stored in the winboard.ini, but might of course be hidden somewhere in a settings file mentioned on the command line as @SETTINGSFILE.ini.)


[B.27] How can I install logos for other engines, Internet Chess Servers or Human users?

With the option /autoLogo=true, (which is remembered in your settings file), WinBoard automatically looks into the engine folder (specified by the /fd="..." or /sd="..." option), for a file called "logo.bmp". If it is found, it is used as a logo for the engine when it plays. So all you have to do is put a logo.bmp file there. Popular logo formats are 100x50 and 130x65; many engine logos are available from David Dahlem or Graham Banks

It is possible to overrule the /autoLogo by explicitly using a /firstLogo="FILENAME.bmp" or /secondLogo="FILENAME.bmp" with the engine on the engine line in the startup dialog. This is useful for engines that run with an adapter like Polyglot, when you have only one polyglot on your system, used by many engines. E.g. for Fruit the engine line to be typed in or selected from the combo box is

"polyglot fruit.ini" /firstLogo="D:\Engines\Fruit\logo.bmp" /fd="D:\Engines\Polyglot"
This prevents WinBoard looking for the logo in the Polyglot folder.

For Internet Chess Servers and Human users the logos should be in the "logos" sub-folder of the folder where WinBoard is installed. With /autoLogo=true, WinBoard would look for a logo file in that folder with the same name as the ICS, suffixed with .bmp (e.g. freechess.org.bmp) or the Human username (specified by the /userName="..." option or taken from the system), suffixed by .bmp, e.g. administrator.bmp)


[B.28] Is there readline/history support for the input in XBoard/Winboard?

There is a special ICS input box that has history support which is the standard in Winboard and can be used in XBoard too.

Another good tip from Michel van der Bergh is to use the rlwarp program together with XBoard which gives you full readline support. Just run "rlwrap xboard" instead of just "xboard". The rlwarp program should be available for most linux distributions or can be downloaded at: http://utopia.knoware.nl/~hlub/uck/rlwrap/.


[C] XBoard and WinBoard, bugs and problems


[C.1] I can't build XBoard because the X11/Xaw/... include files are not found.

These are the header files for the Athena Widgets library, which XBoard uses heavily. Some versions of Unix don't supply these files, but they are part of the standard X distribution, freely available from MIT.

For general information on getting missing X sources, see the FAQ on comp.windows.x. Note that you may be missing only the header files, or you may be missing the libraries themselves too.

HP-UX users are missing only the header files. You can get them by anonymous FTP as follows. (But first check with your system administrator to see if someone else at your site has already done this.) Get the archive file /hpux9/X11R5/Core/Xaw-5.00.tar.gz (Xaw header files) via anonymous FTP from the site hpux.csc.liv.ac.uk (138.253.42.172), or one of the other official sites---Germany: hpux.ask.uni-karlsruhe.de (129.13.200.57), US: hpux.cae.wisc.edu (144.92.4.15), France: hpux.cict.fr (192.70.79.53) or Netherlands: hpux.ced.tudelft.nl (130.161.140.100). Unpack the archive using gzip and follow the instructions in its README and/or HPUX.Install files. Thanks to Richard Lloyd for this information.

If you have the Xaw header files installed in a different place than the other X11 headers, you may need to configure XBoard with an extra flag to help it find them. For example, if yours are in /foo/bar/X11/Xaw, try this:

    rm config.cache
    (setenv CFLAGS -I/foo/bar ; configure)

Also see topic [C.2].


[C.2] Configuring or building XBoard fails due to missing header files, missing libraries, or undefined symbols.

Perhaps you have the X server and client programs installed on your machine, but not the X header files and link-time libraries. If so, you can run existing X programs, but you cannot compile a new X program from source code. In this case the XBoard configure script will fail and will tell you to look at this question in the FAQ. Many GNU/Linux distributions put the headers and libraries in a separate package, which you might not have installed. If you are using RedHat, install the XFree86-devel package. If you are using some other kind of Unix, ask your system administrator where to find the X header files and link-time libraries. If this is not your problem, read on.

The configure script for XBoard looks for X libraries and header files in some common places. Sometimes it fails: If yours are installed in an odd place, it may not find them at all. If you have more than one version of X installed on your system, it may find the "wrong" one, or occasionally it may find libraries from one version and incompatible header files from another. You can work around these problems by telling the configure script where the files are. For example:

    configure --x-includes=/odd/place/include \
              --x-libraries=/odd/place/lib

The directory named in the argument to --x-includes must have a subdirectory "X11" that contains the actual .h files. That is, if your X.h file has full pathname /odd/place/X11R6/include/X11/X.h, then you must give the argument --x-includes=/odd/place/X11R6/include.

Some linkers have bugs that cause bogus error messages when you try to link X programs. The configure script includes a workaround for a bug of this kind that exists in some SunOS 4.x.x installations. See the FAQ on comp.windows.x for more information about problems of this kind.

If all else fails, check whether anyone else at your site has been able to compile any X programs on your system. Your X installation might be buggy. If so, the system administrator at your site might know how to fix or work around the problem.

Also see topic [C.1].


[C.3] I have problems using WinBoard on ICS with a modem. I'm not running SLIP or PPP, but just dialing in to an ordinary login account ("shell account").

Here are solutions to some common problems in this area.

Some people want to connect to ICS through HyperTerminal or some other terminal program first, then run WinBoard. This is not how it works. WinBoard wants to talk directly with your modem, acting as a terminal program itself. Start out with the modem "on hook" (not making a call).

Run WinBoard with a command line like this (adding more options if desired):

    WinBoard /ics /icscom com1

Use com2, com3, or com4 in place of com1 if your modem is connected to one of those ports.

After you start WinBoard, you may need to change some of the options in the Communications dialog (on the Options menu). The dialog has the usual options for talking to modems: bits per second, bits per byte, parity, number of stop bits. You will probably want to use Save Settings Now when you're done.

Next, type dialing commands to your modem in the text window that WinBoard creates. You may need to turn off Local Line Editing on the Options menu while you are typing commands to your modem. Turn it back on when you're done. See the WinBoard Help file for instructions if you see your typing echoed an extra time after you hit Enter.


[C.4] I have problems using WinBoard on ICS with Windows 95 and SLIP or PPP. When trying to start up, it gets the error "Address family not supported by protocol family" (or some equally strange message).

WinBoard is a 32-bit application, but some Winsock (TCP/IP) implementations support only 16-bit applications. You get a strange looking error message if you try to use a 32-bit application because there is no standard Winsock error code number for "32-bit application not supported."

Microsoft TCP/IP works with both 16-bit and 32-bit applications, supports SLIP, PPP, Ethernet, etc., and is included with Windows 95 and later Windows systems. If possible, I recommend that you uninstall whatever Winsock you are using and install Microsoft TCP/IP instead. For more information, see http://walden.mo.net/~rymabry/95winfaq.html (the Win95-L FAQ).

Trumpet Winsock 2.1 (and earlier) supports only 16-bit applications, and hence does not work with WinBoard. But there is a beta-test release available that does support 32-bit applications. I have not tried it with WinBoard, but it should work. See Trumpet's Web page http://www.trumpet.com.au/wsk/winsock.htm for more information.

The 16-bit versions of America On-Line's software do not support 32-bit Winsock applications. Get the 32-bit version. At one time the 32-bit version was called "AOL for Windows 95," but I imagine that has changed. Hopefully the current versions are all 32-bit.

A few versions of Winsock may have bugs that prevent Windows timestamp/timeseal from working with them. I'm not sure if such bugs exist in any versions that actually have 32-bit support, so this point might be moot. Again, Microsoft TCP/IP is known to work.


[C.5] When I try to run WinBoard, I get the message "Failed to start chess program gnuchess on localhost: NO LANGFILE (file gnuchess.lan not found)".

This message means that WinBoard is trying to run GNU Chess, but GNU Chess cannot find a file that it needs, named gnuchess.lan. If you see it, you've probably customized WinBoard's /fcp, /fd, /scp, and/or /sd options and made a mistake in the process. Review what you did, and see the WinBoard help file.


[C.6] I want to use XBoard or WinBoard as an Internet Chess Server interface, but the ICS Client option is grayed out on the menu.

XBoard and WinBoard have three major modes that can't be changed from the menus: local chess engine mode, ICS mode, and standalone mode.

With XBoard, you have to set the mode using command-line options. Local chess engine mode is the default, -ics selects ICS mode, and -ncp ("no chess program") selects standalone mode.

With WinBoard, if you don't set the mode using command-line options, you get a dialog box asking which mode you want. To bypass the dialog box, use -cp ("chess program") for local chess engine mode, or -ics or -ncp as with XBoard. Also see topic [C.7].


[C.7] How do I give command-line options to a Windows program like WinBoard?

There are many ways; pick your favorite:

  • Type the command line into an MS-DOS Prompt box. Example: "WinBoard -ics".
  • Make a Windows shortcut for WinBoard. You can do this by right-dragging WinBoard.exe to the desktop and selecting "Create Shortcut(s) Here" from the menu that appears. Right-click on the shortcut, select Properties, and click the Shortcut tab. The command-line text box is labelled "Target" instead of "Command line" just to confuse you. Edit the text in this box, adding the command line options to the end.
  • Choose Run from the Start menu, or File / Run from the Program Manager or File Manager, and type the command line into the dialog you get. You may have to give WinBoard's full drivespec and filename if it is not in a directory on your search path.
  • Make a Program Manager icon for WinBoard. You can do this by dragging WinBoard.exe from the File Manager into the Program Manager, or by using File / New in the Program Manager. Select the icon and choose File / Properties. Edit the Command Line text box to add the command-line options to the end.

[C.9] When I exit from WinBoard after using it to play against a chess program on my machine, the chess program keeps running in the background.

Be sure you have the current versions of WinBoard and the chess engine you are using. WinBoard 3.4.1 and earlier had a bug that caused this problem to occur with all chess engines. A buggy chess engine that does not respond to the "quit" command will also cause this.

If you still see this problem, you can stop the rogue chess engine by pressing Ctrl+Alt+Del, selecting the chess engine process from the menu, and pressing the End Task button.


[C.12] Why do my ICS opponents often get extra time after they make their moves? Why do I sometimes lose time off my clock after I make my move?

If you are playing with the ICS incremental clock, both you and your opponent get a set amount of extra time after each move.

If your or your opponent has netlag, your opponent might appear to get extra time, especially if your opponent is using timestamp or timeseal. The ICS charges each player who is using timestamp or timeseal only for the time between when the player received his opponent's move and the time he sent his own move. Thus delays in network transmission do not count against either player. But WinBoard counts down the display of your opponent's clock on your screen under the assumption that there is no netlag. When his move comes in, if there was netlag, the ICS may not have really charged him for that much time, and WinBoard corrects the clock to what the ICS says it should read.

If you are not using timestamp or timeseal, you may appear to lose time off your clock at some point after you make your move. In this case, the ICS charges you for the time between when it sent you your opponent's move and the time it received your move. Thus delays in network transmission count against you. WinBoard stops counting down the display of your clock on your screen (and starts your opponent's) when you make your move. When the ICS echoes your move back to you, it may have charged you for more time than that, and WinBoard corrects the clocks to what the ICS says they should read.

See "help lag" and "help timestamp" or "help timeseal" on your ICS for more detailed information.


[C.13] I can't run WinBoard unless I delete the WinBoard.ini file each time!

Most people don't have this problem, but two or three people using Windows NT 4.0 with Service Pack 3 or 4 have reported it. I have no idea what causes this problem. Contrary to what was reported in a previous version of this FAQ, reinstalling the service pack after installing WinBoard does not seem to solve the problem.


[C.15] I get errors compiling XBoard's parser.c.

The file parser.c is automatically generated from parser.l. The copy included with XBoard 4.0.2 was generated by lex on Tru64 Unix and has problems compiling and linking on current GNU/Linux versions. The copy included with XBoard 4.0.3 was generated by flex on a GNU/Linux machine, but it too won't necessarily work on other versions of Unix. If you have this problem, you can fix it by deleting parser.c and letting the Makefile re-create it from parser.l. This will work if you have either lex or flex on your system. Flex is available in all GNU/Linux distributions and can be obtained at no charge from the Free Software Foundation, www.fsf.org.


[C.16] I get an error building WinBoard from source because "flex" is not found.

The file parser.c is automatically generated from parser.l. The Makefile included with the WinBoard source kit has a rule for generating parser.c using the program "flex", which will fail if you don't have flex. However, the source kit also includes a ready-made copy of parser.c, so you don't really need flex unless you have made changes to parser.l. Check that you still have a copy of parser.c; if you don't, unpack the WinBoard source zip file again to get one. Either set the last-modified time of parser.c to be later than that of parser.l, delete parser.l, or comment out the Makefile rule for building parser.c from parser.l, and then try building WinBoard again.

If you do want to change parser.l and rebuild parser.c, you can get flex as part of the free Cygwin kit from http://sourceware.cygnus.com/cygwin/. You can probably also get flex for Windows by itself from various other places around the Internet. It is free software distributed by the Free Software Foundation, www.fsf.org.


[C.17] XBoard hangs shortly after connecting to an ICS when used with dxterm, cmdtool, dtterm, kterm, konsole, or other substitutes for xterm.

After connecting to a chess server, XBoard 4.0.2 and later sends an escape sequence to its terminal that is meant to display your handle and the ICS host name (for example, "user@chessclub.com") in the terminal's banner and icon. It seems that several of the alternative X terminal programs have a bug that makes them hang when sent this escape sequence.

You can work around the problem by using xterm, nxterm, rxvt, aterm, xiterm, or gnome-terminal, all of which seem to work fine. In fact, current versions of kterm and konsole seem to work fine too, so if you are having problems with one of them, be sure you are not running an outdated version.

Alternatively, you can disable this feature by commenting out the body of DisplayIcsInteractionTitle in xboard.c and recompling xboard.


[C.18] The WinBoard pieces show up in the wrong colors, appear distorted, or are not visible at all.

This can happen if you have a bug in your Windows display driver. Check with the manufacturer of your display card, the manufacturer of your computer, or Microsoft to see if there is an updated driver available. You can usually download updated drivers from the Web.

If you can't find an updated driver, you can try running Windows using a different number of colors and/or disabling some of the hardware acceleration features on your display card. To change the number of colors, go to Windows Start / Settings / Control Panel / Display / Settings / Color Palette. To disable hardware acceleration features, go to Windows Start / Settings / Control Panel / Display / Settings / Advanced Properties / Performance / Hardware Acceleration.

It's also possible that Windows has the right driver for your hardware already but you are not using it. It may help to reinstall your driver. Go to Windows Start / Settings / Control Panel / System and delete your display card (maybe even your monitor too), then reboot. Windows should automatically re-detect your card and monitor and re-install the drivers; if it doesn't, run Start / Settings / Control Panel / Add New Hardware to force it to.

If all else fails, try Monochrome mode. On WinBoard's menus, go to Options / Color and check Monochrome. WinBoard will display in black and white.


[C.19] XBoard or WinBoard tells me "Error: first chess program (...) exited unexpectedly".

This message means that your chess engine crashed, probably due to a bug in the engine, or because you have it configured incorrectly. You can try running XBoard or WinBoard again with the "-debug" flag on the command line. This will print out all the messages received from the chess engine. (With WinBoard, the messages go into a file called WinBoard.debug; with XBoard, they go to the xterm that you started XBoard from.)

If you are using GNU Chess and you see this problem as soon as it starts up, most likely GNU Chess is exiting with an error message. If you see the message "NO LANGFILE", it means that you did not install GNU Chess correctly, and it is unable to find the file gnuchess.lang. Make sure that you defined LIBDIR in the gnuchess Makefile, and that gnuchess.lang is in that directory. If gnuchess.lang is not there, you probably didn't type "make install" in the gnuchess src directory; you must do this to install gnuchess.lang (and the gnuchess book). If you defined LIBDIR to something that is not an absolute pathname (that is, to something that does not start with a "/"), GNU Chess will work only if you run it from the GNU Chess "src" directory where you built it.


[C.20] XBoard tells me "Warning: Cannot allocate colormap entry", or "too few colors available; trying monochrome mode", or "XPM pieces cannot be used in monochrome mode".

You are running your X server with 8-bit color depth, and you are running some program that has used up all 256 of your colors. Netscape tends to do this, or maybe you have a background image that uses up all of your colors.

If you have a modern machine, you probably have enough display memory to run your X server with 16-, 24-, or 32-bit color depth. If you're using "startx" to start the X server, try giving the command as "startx -- -bpp 24" (or 16, or 32). On newer X servers you may have to use -depth instead of -bpp. Further details on configuring your X server are beyond the scope of this FAQ.

If you must run in 8-bit mode, try the following: Avoid background images that use up all your colors. If you run Netscape, try starting it up with the -install command-line option; this gives Netscape its own private colormap that X will switch to when Netscape has the keyboard focus.

If all else fails, another possibility is to run xboard in monochrome (black and white) mode by giving it the -mono command-line option. XBoard will try this by itself in some cases. Monochrome mode works only with bitmap pieces, not pixmap pieces, so trying to use it may give you the error "XPM pieces cannot be used in monochrome mode". To get around this, either use the -bitmapDirectory command line option to point XBoard to the directory containing the bitmap pieces included with the XBoard source code, or rebuild XBoard with pixmap support disabled, using "./configure --disable-xpm ; make clean ; make".


[C.21] When I log in to freechess.org, the Enter key doesn't work, and I have to use Ctrl+J instead. But when I use WinBoard, Ctrl+J doesn't work either, so I'm stuck.

This is a pretty rare problem. It should only arise if you have to reach freechess.org by telnetting (or connecting with WinBoard /icsport=23) from a Windows PC to a Unix box, and then telnetting from there to freechess.org. The Enter key should always work when connecting directly from your PC to freechess.org.

The best way to get around the problem is to run timeseal on the intermediate Unix box instead of telnet. Get the appropriate version of timeseal for your box from ftp.freechess.org and follow the directions in the help files on FICS.

If you can't run timeseal for some reason, there are some things you can do to make telnet stay in line mode instead of going to character mode. Then the Enter key will work. First, try "telnet freechess.org 5000" instead of "telnet freechess.org." If that still doesn't work, then when the Enter key stops working, type the following. Here < and > surround the names of keys.

    <Ctrl+S><Ctrl+]>mode line<Enter>

[C.22] XBoard says, "Failed to start first chess program fairymax on localhost: fairymax: No such file or directory."

XBoard is looking for the Fairy-Max chess engine. If you didn't want to use XBoard with Fairy-Max, please see topic [C.6]. If you did want to use Fairy-Max, be sure you have it installed and that it is on your $PATH. If you wanted to use GNU Chess instead, see topic [D.6].


[D] Crafty and other topics


[D.1] What is XChess?

XChess is an older chessboard program that is no longer supported. XChess was written for X version 10, and you may or may not be able to build and run it on an X11 system.

XChess has only one significant feature that is not present in XBoard: Two humans can play chess using XChess on different machines, without using the Internet Chess Server as an intermediary. This feature is of interest only if you don't have network connectivity to the Internet Chess Server.

Note: There actually have been several different programs called "XChess" in circulation at various times. The above describes one that was associated with GNU Chess.


[D.2] What is Winsock Chess?

Winsock Chess is a program that lets two people play chess across a network. It runs only under Microsoft Windows. Some of the code in Winsock Chess is derived from GNU Chess, but it is not maintained by the GNU Chess team. You can get a copy from the Internet Chess Library; see topic [A.2]. For more information, contact its author, Donald Munro, ccahdm@beluga.upe.ac.za.


[D.3] What is Crafty?

Crafty is a freely-available chess program written by Bob Hyatt. Bob is the main author of the well-known chess program Cray Blitz. Crafty is a very strong program, its code is available, commented and fairly readable, and its author is actively working on improvements.

You can download Crafty from ftp://ftp.cis.uab.edu/pub/hyatt/. Start by getting the read.me file and reading it. Among other things, this file contains instructions on how to install Crafty as a command-line application on your machine.

There is a Crafty mailing list. To subscribe, send email to majordomo@cis.uab.edu, with "subscribe crafty-list" in the body.


[D.4] How do I use Crafty with XBoard?

First, you need to get Crafty and install it as a command-line application on your machine. See topic [D.3].

To use Crafty with XBoard, give the -fcp parameter like this:

    xboard -fcp "./crafty" -fd crafty_directory

Here crafty_directory is the directory where you installed Crafty. You can add more xboard options at the end of the command line.

Crafty 15.14 or later is required to work properly with XBoard 4.0.0 or later. We generally recommend using the latest versions of both XBoard and Crafty.


[D.5] How do I use Crafty with WinBoard?

First, you need to get Crafty and install it as a command-line application on your machine. See topic [D.3]. It is best to use the latest version of Crafty with the latest version of WinBoard to make sure all features are compatible and function correctly. You can install Crafty in any directory you like.

You also need to get WinBoard and install it in the normal way using its built-in installer. You can do that either before or after you install Crafty.

After both Crafty and WinBoard are installed separately, follow the directions in the WinBoard Help file (included with WinBoard) for connecting new chess engines to WinBoard.

If you want to have Crafty act as an automated computer player on a chess server, see topic [B.16]. Before you try to get that working, be sure you can play against Crafty locally, first without WinBoard, then with it. Also be sure you can use WinBoard to play on the chess server yourself, without having Crafty connected to it. You have to crawl before you can walk!


[D.6] How do I use GNU Chess with XBoard?

By default, XBoard tries to use Fairy-Max by running the command "fairymax". That's why if you don't have Fairy-Max, you get the error message "Failed to start first chess program fairymax on localhost: fairymax: No such file or directory."

If you have GNU Chess 5, the command should be "gnuchess xboard" instead. To make XBoard use this command, give the -fcp parameter like this:

    xboard -fcp "gnuchess xboard" 
If you instaled GNU Chess as a package, the operating system usually knows where to find it, and GNU Chess knwos where to find its data files, such as the opening book. If GNU Chess is installed in a non-compliant way, e.g. together with its book file in a user directory, you must use:
    xboard -fd gnuchess_directory -fcp "./gnuchess xboard" 

Here gnuchess_directory is the directory where you installed GNU Chess 5 and its book. In all cases you can add more xboard options at the end of the command line.

If you want to use GNU Chess 4, the command should be "gnuchessx" instead. To make XBoard use this command, give the -fcp parameter like this:

    xboard -fcp "gnuchessx" 

The same applies for non-compliant installs as for GNU Chess 5: the install directory has to be given with the -fd argument.


[D.7] How do I use GNU Chess with WinBoard?

Well, why would you want to? If you want a strong free engine, use Crafty, Glaurung, Fruit or Toga. If you wnt an engine that plays many variants, use Fairy-Max, Pulsar or Sjeng. But the procedure to install and run those is not any different than for GNU Chess.

If you want to use a WinBoard-compatible chess engine that is not automatically installed with the download, you will have to download it yourself. Most chess engines are downloaded as a compressed archive (e.g. a .zip file), and on downloadig it, the decompression software on your Windows system is automatically invoked when you seected "Open" in the download dialog. You can then click "extract all files", and you are prompted for a place to put the unpacked stuff. The place it proposes is usually no good, so browse to the folder in which you installed the winBoard download (where you see the Fairy-Max and WinBoard folders).

When the archiv contained a single folder, (with files in it), unpack it there. If the archive contained a lot of small files, first create a folder, and browse there, before you unpack. (To get all the files in a single place, not mixed with others, so you can easily delete it again.) Say you unpacked in a folder named "NewEngine", which now sits next to your "WinBoard" folder amongst the chess files on your system. Say there is a file "Engine.exe" in this "NewEngine" folder.

Then to run the engine with WinBoard, you have to enter the command:

        winboard /fcp="Engine.exe" /fd="..\NewEngine"

Sometimes engines need parameters on their command line, e.g. to set the hash-table size, or tell them they have to deal with WinBoard. These should then go within the quotes around the Engine.exe file name, directly behind it, and separated from it (and each other) by spaces. See any README files that come with the engine to learn how exactly the engine has to be invoked.


[D.8] What is Fairy-Max?

Fairy-Max is a chess engine that plays chess at a level where you don't need to be a super GM to still have a chance to beat it. Apart from normal chess it plays many variants as well, such as Capablanca or Gothic Chess, Knightmate, etc. Dedicated versions of it are available to play Shatranj and Xiangqi (Chinese Chess).


[D.9] What is UCI? What is Polyglot?

UCI, or Universal Chess Interface, is a standard for communication between chess engines and its Graphical User Interface, that was created as an alternative to the way XBoard / WinBoard does it. (The latter way having become known as "WinBoard protocol"). XBoard / WinBoard do not understand a word of UCI, so UCI engines cannnot be run directly as engine under them.

Polyglot is an adapter that translates WB protocol to UCI. It bhaves like it is a WB engine, but, without XBoard / WinBoard knowing about this, it consults an UCI engine for getting the moves. With the aid of Polyglot, any UCI engine can be run under WinBoard. Polyglot is available as a Debian package for Linux, and is included in the WinBoard installation. Polyglot is open source software released under the GPL.


[D.10] How can I run a UCI engine under XBoard / WinBoard?

First you have to download and install the UCI engine. This is similar to installing WinBoard engines, see D.7. Furthermore, you have to make sure that Polyglot is nstalled on your system, in a place where XBoard / WinBoard can find it. There are then two ways to run the UCI engine:

In the first method, the only thing you have to do is add an extra option to the command that invokes XBoard / WinBoard, to tell it that the engine is UCI:

        xboard -fcp "fruit" -fUCI

        winboard /fcp="Fruit_21.exe" /fd="..\Fruit" /fUCI

The second method is more complicated, but also more versatile. UCI engines accept many settings from their GUI than XBoard / WinBoard usually send to a WB engine. Polyglot can provide such settings from a file dedicated to that engine, usully referred to as a "polyglot.ini" file (although the actual name can be different.) If the engine you downloaded comes with a polyglot.ini file for it, you can force Polyglot to use this file with engine settings by invoking it explicitly from XBoard / WinBoard:

        xboard -fcp "polyglot INIFILE"

        winboard /fcp="polyglot INIFILE" /fd="POLYGLOTDIR"

INIFILE is the name of the polyglot.ini file (possibly a path name, such as "PG\fruit.ini", while POLYGLOTDIR should be the directory (path) name were the Polyglot executable is located. The directory and name of the actual engine are described in the polygot.ini file, and XBoard / WinBoard need not be aware of them.

If you don't have a polyglot.ini file for the engine, you would have to make one. How to do that is beyond the scope of this FAQ. Refer to the Polyglot documentation for this, or use method 1.


** End of XBoard/WinBoard FAQ ** xboard-4.9.1/install-sh0000755000175000001440000001271112717001265011730 00000000000000#! /bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 xboard-4.9.1/depcomp0000755000175000001440000005601612407335704011313 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2013-05-30.07; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: xboard-4.9.1/cmail.in0000644000175000001440000020166512717001265011351 00000000000000#! @PERLPATH@ ## (configure will change the top line to the location of perl on your system) #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## cmail: a tool to aid playing chess by email ## Copyright (C) 1993,2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. ## ## cmail 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 3 of the License, or (at ## your option) any later version. ## ## cmail 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, see http://www.gnu.org/licenses/. * ## ## Email: evan@quadstone.co.uk ## Snailmail: Evan Welsh ## Quadstone Ltd ## 16 Chester Street ## Edinburgh EH3 7RA ## Scotland #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Print verbose diagnostics for debugging sub debug { if ($DEBUG) { local ($old) = select ; ## Remember selected output select (logfile) ; $| = 1 ; ## Keep it flushed print @_ ; ## Print arguments select ($old) ; } } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Create a directory for storing games in if it doesn't already exist sub need_chess_dir { local ($old) ; ## ################################################################# ## ## Check for existence of the named chess directory ## ################################################################# ## if (! (-d "$CMAILDIR")) { ## ############################################################# ## ## Ask user for confirmation if attached to tty ## ############################################################# ## if (-t) { $old = select ; ## Remember selected output select (stdout) ; ## Write to standard output $| = 1 ; ## Keep it flushed print ( "CMail directory \"$CMAILDIR\" does not exist." . " Create it? [y/q]: ") ; $_ = ; ## Read response from tty die "Bye!\n" if (/^[qQ].*/) ; ## Quit if q selected select ($old) ; ## Re-select the old output } ## ############################################################# ## ## Create a cmail directory or die ## ############################################################# ## die "cmail: Can't create CMail directory: \"$CMAILDIR\"\n" unless mkdir ("$CMAILDIR", 511) ; print ( "Created cmail directory \"$CMAILDIR\".\n" . "You can move it but remember to set the CMAIL_DIR" . " environment variable.\n") ; } ## ################################################################# ## ## Change to the $CMAILDIR directory whether newly created or not ## ################################################################# ## die "Couldn't changed directory to \"$CMAILDIR\"\n" unless (chdir "$CMAILDIR") ; ## ################################################################# ## ## Check for existence of the named chess directory ## ################################################################# ## if (! (-d "$ARCDIR")) { ## ############################################################# ## ## Ask user for confirmation if attached to tty ## ############################################################# ## if (-t) { $old = select ; ## Remember selected output select (stdout) ; ## Write to standard output $| = 1 ; ## Keep it flushed print ( "Archive directory \"$ARCDIR\" does not exist." . " Create it? [y/q]: ") ; $_ = ; ## Read response from tty die "Bye!\n" if (/^[qQ].*/) ; ## Quit if q selected select ($old) ; ## Re-select the old output } ## ############################################################# ## ## Create a chess directory or die ## ############################################################# ## die "cmail: Can't create archive directory: \"$ARCDIR\"\n" unless mkdir ("$ARCDIR", 511) ; print ( "Created archive directory \"$ARCDIR\".\n" . "You can move it but remember to set the CMAIL_ARCDIR" . " environment variable.\n") ; } } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Parse command-line arguments sub parse_flags { ## ################################################################# ## ## Set up defaults from the environment or from hard-wired constants ## ################################################################# ## $SHOWC = 0 ; $SHOWW = 0 ; $OUTPUT_POS = $ENV{'CMAIL_OUTPUT_POS'} ; $LOGFILE = $ENV{'CMAIL_LOGFILE'} ; $MAILPROG = $ENV{'CMAIL_MAILPROG'} ; $MAILPROG = "/usr/sbin/sendmail" if ( (-x "/usr/sbin/sendmail") && (! $MAILPROG)) ; $MAILPROG = "/usr/lib/sendmail" if ( (-x "/usr/lib/sendmail") && (! $MAILPROG)) ; $MAILPROG = "/etc/sendmail" if ( (-x "/usr/lib/sendmail") && (! $MAILPROG)) ; $MAILPROG = "/usr/ucb/Mail" if ( (-x "/usr/ucb/Mail") && (! $MAILPROG)) ; $MAILPROG = "/usr/ucb/mail" if ( (-x "/usr/ucb/mail") && (! $MAILPROG)) ; $MAILPROG = "Mail" unless ($MAILPROG) ; $HOMEDIR = $ENV{'HOME'} ; $CMAILDIR = $ENV{'CMAIL_DIR'} ; $CMAILDIR = $ENV{'CHESSDIR'} unless ($CMAILDIR) ; $CMAILDIR = "$HOMEDIR/Chess" unless ($CMAILDIR) ; $CMAILDIR = "~/Chess" unless ($HOMEDIR) ; $NUM_GAMES = "?" ; $NUM_WGAMES = "?" ; $NUM_BGAMES = "?" ; $TIME_DELAY = $ENV{'CMAIL_TIME_DELAY'} ; $TIME_DELAY = 0 unless ($TIME_DELAY) ; $PW_NAME = &get_pw_name () ; $MY_NNAME = $PW_NAME ; $MY_NNAME = $ENV{'LOGNAME'} unless ($MY_NNAME) ; $MY_NNAME = $ENV{'USER'} unless ($MY_NNAME) ; $MY_NNAME = "?" unless ($MY_NNAME) ; $PGN_EVENT = "Email correspondence game" ; $PGN_SITE = "NET"; $PGN_ROUND = "-"; $PGN_MODE = "EM"; $SEND_MAIL = 1 ; $REMAIL = 0 ; $LOAD_XBOARD = 1 unless $ENV{'CMAIL_NO_XBOARD'} ; $REUSE = 1 ; @TD_FLAGS = ("-td", $TIME_DELAY) ; @NCP_FLAGS = ("-ncp") ; ## ################################################################# ## ## Define the usage string ## ################################################################# ## $USAGE = ("cmail [-h] [-c] [-w] [-[x]v] [-[x]mail] [-[x]xboard] [-[x]reuse] [-remail] [-game ] [-(w|b|)games ] [-(me|opp) ] [-(w|b|my|opp)name ] [-(w|b|my|opp)na ] [-dir ] [-arcdir ] [-mailprog ] [-logFile ] [-event ] [-site ] [-round ] [-mode ]") ; ## ################################################################# ## ## Overwrite defaults if specified on the command-line ## ################################################################# ## @UNREC_ARGS = () ; while ($ARGV = shift) { $UNREC = 0 if ($ARGV =~ /^-/) ; if ("$ARGV" eq "-h") {die ("Usage: $USAGE\n") ;} elsif ("$ARGV" eq "-c") {$SHOWC = 1 ;} elsif ("$ARGV" eq "-w") {$SHOWW = 1 ;} elsif ("$ARGV" eq "-v") {$DEBUG = 1 ; @DEBUG_FLAGS = ("-debug") ;} elsif ("$ARGV" eq "-xv") {$DEBUG = 0 ; $QUIET = 1 ;} elsif ("$ARGV" eq "-mail") {$SEND_MAIL = 1 ;} elsif ("$ARGV" eq "-xmail") {$SEND_MAIL = 0 ;} elsif ("$ARGV" eq "-xboard") {$LOAD_XBOARD = 1 ;} elsif ("$ARGV" eq "-xxboard") {$LOAD_XBOARD = 0 ;} elsif ("$ARGV" eq "-reuse") {$REUSE = 1 ;} elsif ("$ARGV" eq "-xreuse") {$REUSE = 0 ;} elsif ("$ARGV" eq "-remail") {$LOAD_XBOARD = 0 ; $SEND_MAIL = 1 ; $REMAIL = 1 ;} elsif ("$ARGV" eq "-game") {$PGN_GAME = shift ;} elsif ("$ARGV" eq "-games") {$NUM_GAMES = shift ;} elsif ("$ARGV" eq "-wgames") {$NUM_WGAMES = shift ;} elsif ("$ARGV" eq "-bgames") {$NUM_BGAMES = shift ;} elsif ("$ARGV" eq "-me") {$MY_NNAME = shift ;} elsif ("$ARGV" eq "-opp") {$OPP_NNAME = shift ;} elsif ("$ARGV" eq "-myname") {$MY_FNAME = shift ;} elsif ("$ARGV" eq "-oppname") {$OPP_FNAME = shift ;} elsif ("$ARGV" eq "-wname") {$WHITE_FNAME = shift ;} elsif ("$ARGV" eq "-bname") {$BLACK_FNAME = shift ;} elsif ("$ARGV" eq "-myna") {$MY_ADDRESS = shift ;} elsif ("$ARGV" eq "-oppna") {$OPP_ADDRESS = shift ;} elsif ("$ARGV" eq "-wna") {$WHITENA = shift ;} elsif ("$ARGV" eq "-bna") {$BLACKNA = shift ;} elsif ("$ARGV" eq "-dir") {$CMAILDIR = shift ;} elsif ("$ARGV" eq "-arcdir") {$ARCDIR = shift ;} elsif ("$ARGV" eq "-mailprog") {$MAILPROG = shift ;} elsif ("$ARGV" eq "-logFile") {$LOGFILE = shift ;} elsif ("$ARGV" =~ /^-(td|timeDelay)$/) {@TD_FLAGS = ($ARGV, shift) ;} elsif ("$ARGV" =~ /^-noChessComputer$/) {@NCP_FLAGS = ($ARGV, shift) ;} elsif ("$ARGV" =~ /^-[x]?ncp$/) {@NCP_FLAGS = ($ARGV) ;} elsif ("$ARGV" eq "-event") {$PGN_EVENT = shift ;} elsif ("$ARGV" eq "-site") {$PGN_SITE = shift ;} elsif ("$ARGV" eq "-round") {$PGN_ROUND = shift ;} elsif ("$ARGV" eq "-mode") {$PGN_MODE = shift ;} elsif ("$ARGV" =~ /^-/ || $UNREC) { push(@UNREC_ARGS, $ARGV) ; $UNREC = 1 ; } else { die("cmail: Unrecognised flag \"$ARGV\"\nUsage: $USAGE\n") ; } } ## ################################################################# ## ## Assign a value to $ARCDIR if not specified on the command line ## ################################################################# ## $ARCDIR = $ENV{'CMAIL_ARCDIR'} unless ($ARCDIR) ; $ARCDIR = $CMAILDIR unless ($ARCDIR) ; $ENV{'CMAIL_ARCDIR'} = $ARCDIR ; ## Make sure this is set for xboard ## ################################################################# ## ## Propagate some CMAIL variables through xboard to the cmail ## grandchild so that it uses the same important variables as this one ## ################################################################# ## $ENV{'CMAIL_MAILPROG'} = $MAILPROG ; $ENV{'CMAIL_DIR'} = $CMAILDIR ; $ENV{'CHESSDIR'} = $CMAILDIR ; ## Make xboard use $CMAILDIR $ENV{'CMAIL_ARCDIR'} = $ARCDIR ; if ($LOGFILE) { $ENV{'CMAIL_LOGFILE'} = $LOGFILE ; } else { $LOGFILE = "&STDERR" ; } ## ################################################################# ## ## Work out how many games of each colour will be played ## ################################################################# ## die "cmail: Illegal number of games: $NUM_GAMES\n" if ($NUM_GAMES < 0) ; die "cmail: Illegal number of white games: $NUM_WGAMES\n" if ($NUM_WGAMES < 0) ; die "cmail: Illegal number of black games: $NUM_BGAMES\n" if ($NUM_BGAMES < 0) ; if ("$NUM_GAMES" ne "?") { if ("$NUM_WGAMES" eq "?") { if ("$NUM_BGAMES" eq "?") { $NUM_BGAMES = int($NUM_GAMES / 2) ; } $NUM_WGAMES = $NUM_GAMES - $NUM_BGAMES ; } elsif ("$NUM_BGAMES" eq "?") { $NUM_BGAMES = $NUM_GAMES - $NUM_WGAMES ; } } elsif ("$NUM_WGAMES" eq "?") { if ("$NUM_BGAMES" eq "?") { $NUM_GAMES = 1 ; $NUM_WGAMES = 1 ; $NUM_BGAMES = 0 ; } else { $NUM_GAMES = $NUM_BGAMES ; $NUM_WGAMES = 0 ; } } else { if ("$NUM_BGAMES" eq "?") { $NUM_GAMES = $NUM_WGAMES ; $NUM_BGAMES = 0 ; } else { $NUM_GAMES = $NUM_WGAMES + $NUM_BGAMES ; } } die "cmail: Illegal number of games: $NUM_GAMES\n" if ("$NUM_GAMES" eq "0") ; die ( "cmail: Inconsistent numbers of games specified:" . " $NUM_WGAMES + $NUM_BGAMES != $NUM_GAMES\n") unless ($NUM_GAMES == $NUM_WGAMES + $NUM_BGAMES) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Initialisation of variables and environment sub showGPL { ## ################################################################# ## ## Show copyright notice ## ################################################################# ## while () { last if (/^{END OF GPL COPYRIGHT}$/) ; s/\$Revision[:] (.*) \$/$1/ ; print ; } ## ################################################################# ## ## Show conditions if requested ## ################################################################# ## while () { last if (/^{END OF GPL CONDITIONS}$/) ; print if ($SHOWW) ; } ## ################################################################# ## ## Show warranty if requested ## ################################################################# ## if ($SHOWC) { print "\n" if ($SHOWW) ; print while () ; } exit 0 if ($SHOWC || $SHOWW) ; ## Abort if showed conditions or warranty } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Initialisation of variables and environment sub initialise { local ($p) = "[.PRNBQKprnbqk]" ; local ($l) = "$p $p $p $p $p $p $p $p\n" ; local ($board) = "$l$l$l$l$l$l$l$l" ; local ($tp) = ".* to play\n" ; $posdiag = "\{--------------\n$board$tp--------------\}\n+" ; &parse_flags (@ARGV) ; ## Parse command-line arguments &showGPL unless $QUIET ; open (tty, "< /dev/tty") ; ## Open tty for reading &need_chess_dir () ; ## Check for the existence of CMAILDIR open (logfile, ">$LOGFILE") if ($DEBUG) ; ## Default is STDERR &debug ("Called \n") ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Prompt for a game name, if use a default sub prompt_for_game_name { &debug ("Called \n") ; local ($old) = select ; ## Remember the selected output select (stdout); ## Prompt goes to stdout $| = 1 ; ## Keep it flushed print "Game name [ to use default]: " ; die "cmail: tty not open\n" unless (-t) ; =~ /(.*)/ ; ## Read line from tty $PGN_GAME = "$1" ; ## Assign to game name select ($old) ; ## Re-select the old output } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Prompt for opponent's address sub prompt_for_opp_address { &debug ("Called \n") ; local ($old) = select ; ## Remember the selected output select (stdout); ## Prompt goes to stdout $| = 1 ; ## Keep it flushed ## ################################################################# ## ## Prompt for opponent's email address ## ################################################################# ## print "Opponent's email address: " ; die "cmail: tty not open\n" unless (-t) ; =~ /(.*)/ ; $OPP_ADDRESS = $1 ; ## ################################################################# ## ## Use name as default if still blank ## ################################################################# ## $OPP_ADDRESS = $OPP_NNAME if ("" eq $OPP_ADDRESS) ; select ($old) ; ## Re-select the old output } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Prompt for opponent's name sub prompt_for_opp_name { &debug ("Called \n") ; local ($old) = select ; ## Remember the selected output select (stdout) ; ## Prompt goes to stdout $| = 1 ; ## Keep it flushed print "Opponent's name: " ; die "cmail: tty not open\n" unless (-t) ; ## Check tty is open =~ /(.*)/ ; ## Read line from tty $OPP_NNAME = $1 ; ## Match! die "cmail: Can't proceed without the opponent's name.\n" unless ($OPP_NNAME) ; select ($old) ; ## Re-select the old output } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Prompt for move sub prompt_for_move { local ($prompt) = shift ; local ($pattern) = shift ; &debug ("Called \n") ; local ($move) = "" ; local ($old) = select ; ## Remember the selected output select (stdout) ; ## Write to stdout $| = 1 ; ## Keep it flushed die "cmail: tty not open\n" unless (-t) ; ## Check tty is open do { print $prompt ; =~ /(.*)/ ; ## Read line from tty $move = $1 ; ## Match! } until ($move =~ /^$pattern$/) ; select ($old) ; ## Re-select the old output return ($move) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Load the game sub play_game { &debug ("Called \n") ; $| = 1 ; ## Start flushing output buffer ## ################################################################# ## ## Load xboard unless inhibited by command-line arguments ## ################################################################# ## if (($STARTING_NEW_GAME) && ($NUM_WGAMES == 0)) { print ( "Bypassing xboard and mailing $NUM_BGAMES empty" . " black games.\n") ; } elsif ($LOAD_XBOARD) { ## ############################################################# ## ## Remove output file from previous run, but preserve ## $PGN_GAME.game.out.* because they will be empty black games ## ############################################################# ## unlink "$PGN_GAME.out" ; ## ############################################################# ## ## Invoke xboard with loads of flags ## ############################################################# ## if ($PGN_GAME) { if (@ARCHIVE) { local ($date) = &get_date_from_games (@ARCHIVE) ; $XBOARD_ARGS = join (' ', (("-lgf", "'$ARCDIR/$PGN_GAME.$date.archive'"), @NCP_FLAGS, "-xics", @TD_FLAGS, @DEBUG_FLAGS, @UNREC_ARGS)) ; } else { $XBOARD_ARGS = join (' ', (("-cmail", "'$PGN_GAME'"), @TD_FLAGS, @NCP_FLAGS, "-xics", @DEBUG_FLAGS, @UNREC_ARGS)) ; } } else { $PGN_GAME = "unknown.cmail" ; $XBOARD_ARGS = join (' ', (("-lgf", "'$PGN_GAME'"), @NCP_FLAGS, "-xics", @TD_FLAGS, @DEBUG_FLAGS, @UNREC_ARGS)) ; $REUSE = 0 ; } $LOG_FILE = "$PGN_GAME.log" ; &debug ("Invoking xboard with args: $XBOARD_ARGS\n") ; $PID_FILE = "$PGN_GAME.pid" ; if ( (! $REUSE) || (! ( (-f $PID_FILE) && ($XBOARD_PID = `cat '$PID_FILE'`) && ("$XBOARD_PID" =~ /^\d+$/) && (kill "SIGUSR1", $XBOARD_PID)))) { print "Loading xboard for game \"$PGN_GAME\"..." ; # system ("gdb xboard") ; system ( "{ ({ xboard $XBOARD_ARGS & } ;" . " echo \$! > '$PID_FILE' ;" . " wait ;" . " rm '$PID_FILE') & } >'$LOG_FILE' 2>&1") ; print ( "done.\n" . "If nothing happens look for an error message in\n" . "$CMAILDIR/$LOG_FILE\n") ; } else { print ("Revived existing xboard for game \"$PGN_GAME\".\n" . "If nothing happens" . " remove $CMAILDIR/$PID_FILE and try again.\n") ; } return 1 ; } return 0 ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Enter moves on tty instead of xboard sub play_on_tty { &debug ("Called \n") ; local (@results) = @_ ; local (@games, $game, $to_play) ; ## ################################################################# ## ## Check we have access to tty ## ################################################################# ## if (open(STDIN, '/dev/tty')) { ## ############################################################# ## ## Read in games ## ############################################################# ## local ($infile) = "$PGN_GAME.game.in" ; if (-f $infile) { @games = &get_games_from_file($infile) ; &debug ("Read in games from \"$infile\"\n") ; if (@results) { foreach $game (@games) { $result = shift (@results) ; if ($result && ($game =~ /\[Result\s+"[^*]+"\]/)) { $game = "" ; } } } ## ################################################################# ## ## Accept move on tty for each game in turn ## ################################################################# ## local ($comment_orig, $comment, $comment_line, $pos, $move, $normal_move, $action, $result) ; foreach $game (@games) { next unless $game ; $game =~ s/[\s\n]*[*]?[\s\n]*$// ; $pos = "" ; $pos = $1 if ($game =~ s/($posdiag)//) ; print $game, "\n\n", $pos ; ($number, $to_play) = &get_to_play ($game) ; $comment_orig = "" ; $game_nocomment = $game ; if ($game_nocomment =~ s/\n?{\n?([^{]*)}$//) { $comment_orig = $1 ; $comment_orig =~ s/([^\n])$/$1\n/ ; # &debug ("Comment is:\n{\n$comment_orig}\n") ; } if ($game =~ /\[Result\s+"[^*]+"\]/) { &prompt_for_move ("Game finished, press \"Return\" to continue: ", "") ; next ; } $tmpgame = $game_nocomment ; $comment = $comment_orig ; outer: while (1) { if ($game =~ /{\n?.* offers a draw\n?}$/) { $move = &prompt_for_move ("Enter move [MOVE/(r)esign/(a)ccept/(c)omment/re(t)ry]: ", "([-a-h0-9PRNBQK][-a-h0-9PRNBQK]+|[ract])") ; } else { $move = &prompt_for_move ("Enter move [MOVE/(r)esign/(c)omment/re(t)ry]: ", "([-a-h0-9PRNBQK][-a-h0-9PRNBQK]+|[rct])") ; } $normal_move = 0 ; $result = "" ; if ($move =~ /^\s*r\s*$/i) { if ($to_play eq "White") { $result = "0-1" ; } else { $result = "1-0" ; } $move = "\n{$to_play resigns} $result" ; } elsif ($move =~ /^\s*a\s*$/i) { $move = "\n{Draw agreed} $result" ; } elsif ($move =~ /^\s*c\s*$/i) { while ($comment_line = &prompt_for_move ("Enter comment: ", ".*")) { $comment .= $comment_line . "\n" ; } next ; } elsif ($move =~ /^\s*t\s*$/i) { print $game, "\n\n", $pos ; $tmpgame = $game_nocomment ; $comment = $comment_orig ; print "Try again.\n" ; next ; } else { $normal_move = 1 ; } $tmpgame .= "\n{\n" . $comment . "}" if ($comment) ; if (! $normal_move) { $tmpgame .= "$move" ; } elsif ($to_play eq "White") { $tmpgame .= "\n$number. $move" ; } elsif ($tmpgame =~ /}$/) { $tmpgame .= "\n$number. ... $move" ; } else { $tmpgame .= " $move" ; } $tmpgame =~ s/\[Result\s+"(.*)"\]/[Result "$result"]/ if ($result) ; $comment = "" ; middle: while (1) { if ($normal_move) { $action = &prompt_for_move ("Enter action [(d)raw/(c)omment/(s)end/re(t)ry]: ", "[dcst]") ; } elsif ($result) { $action = &prompt_for_move ("Enter action [(s)end/re(t)ry]: ", "[st]") ; } else { $action = &prompt_for_move ("Enter action [(c)omment/(s)end/re(t)ry]: ", "[cst]") ; } if ($action =~ /^\s*d\s*$/i) { if ($normal_move) { $comment .= "$to_play offers a draw\n" ; while (1) { $action = &prompt_for_move ("Enter action [(c)omment/(s)end/re(t)ry]: ", "[cst]") ; if ($action =~ /^\s*c\s*$/i) { while ($comment_line = &prompt_for_move ("Enter comment: ", ".*")) { $comment .= $comment_line . "\n" ; } next ; } elsif ($action =~ /^\s*t\s*$/i) { print $game, "\n\n", $pos ; $tmpgame = $game_nocomment ; $comment = $comment_orig ; print "Try again.\n" ; next outer; } elsif ($action =~ /^\s*s\s*$/i) { $tmpgame .= "\n{\n" . $comment . "}" ; last middle ; } } } else { print "You can't offer a draw at this point.\n" ; next ; } } elsif ($action =~ /^\s*c\s*$/i) { if ($result) { print "You can't enter a comment after the game is finished.\n" ; } else { while ($comment_line = &prompt_for_move ("Enter comment: ", ".*")) { $comment .= $comment_line . "\n" ; } } next ; } elsif ($action =~ /^\s*t\s*$/i) { print $game, $pos ; $tmpgame = $game_nocomment ; $comment = $comment_orig ; print "Try again.\n" ; next outer; } elsif ($action =~ /^\s*s\s*$/i) { $tmpgame .= "\n{\n" . $comment . "}\n" if ($comment) ; last ; } } last ; } $tmpgame .= "\n*" if ($normal_move) ; $tmpgame .= "\n\n" ; $game = $tmpgame ; } } else { die "cmail: No games to be read\n" ; } } else { die "cmail: Can't open tty" ; } return (@games) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Find the game the user wants by any means possible sub find_game { &debug ("Called \n") ; ## ################################################################# ## ## Ask user for a game name if not already known ## ################################################################# ## &prompt_for_game_name () if ("" eq "$PGN_GAME") ; ## ################################################################# ## ## Find out opponent's details ## ################################################################# ## if ("" eq "$PGN_GAME") { ## ############################################################# ## ## Failed to find the game name so construct a default from players ## ############################################################# ## &prompt_for_opp_name () if ("" eq "$OPP_NNAME") ; ## Ask user die "cmail: Can't proceed without your opponent's short name (-opp)\n" if ("" eq "$OPP_NNAME") ; die "cmail: Can't proceed without your own short name (-me)\n" if ("" eq "$MY_NNAME") ; if ($NUM_WGAMES > 0) { $PGN_GAME = "$MY_NNAME-vs-$OPP_NNAME" ; ## Construct default } else { $PGN_GAME = "$OPP_NNAME-vs-$MY_NNAME" ; ## Construct default } } elsif (("" eq "$OPP_ADDRESS") && ("" ne "$RETURN_ADDRESS")) { $OPP_ADDRESS = $RETURN_ADDRESS ; ## Use return address instead &debug ( "Using return address \"$OPP_ADDRESS\"" . " for opponent address\n") ; } ## ################################################################# ## ## If no $PGN_GAME.game.in file, assume we're starting a new game ## ################################################################# ## &start_new_game () unless (-f "$PGN_GAME.game.in") ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Get the date sub get_date { local ($the_time) = time ; local ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime ($the_time) ; $mon ++ ; $year += 1900 ; if ($mon < 10) { $mon = "0$mon" ; } if ($mday < 10) { $mday = "0$mday" ; } "$year.$mon.$mday" ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Start a new game sub start_new_game { print ( "Starting new game" . " -- $NUM_WGAMES as white, $NUM_BGAMES as black.\n") ; local ($to_play) = "white" ; $move_num = 0 ; $STARTING_NEW_GAME = 1 ; local (@game) ; ## ################################################################# ## ## Ask user for opponent's email address if unknown ## ################################################################# ## &prompt_for_opp_address () if ("" eq "$OPP_ADDRESS") ; ## ################################################################# ## ## Give up if we haven't got anywhere to send a move to ## ################################################################# ## die "cmail: Can't proceed without your opponent's email address.\n" if ("" eq "$OPP_ADDRESS") ; ## ################################################################# ## ## Create an empty game file ## ################################################################# ## open (GAMEFILE, "> $PGN_GAME.game.in") ; for ($j = 1; $j <= $NUM_GAMES; $j ++) { $PW_GCOS = &get_pw_gcos () ; $PGN_MYCOL = $MY_FNAME ; $PGN_MYCOL = $PW_GCOS unless $PGN_MYCOL ; $PGN_MYCOL = $MY_NNAME unless $PGN_MYCOL ; $PGN_MYCOLNA = $MY_ADDRESS ; $PGN_MYCOLNA = "?" unless ($PGN_MYCOLNA) ; $PGN_OPPCOL = $OPP_FNAME ; $PGN_OPPCOL = "?" unless ($PGN_OPPCOL) ; $PGN_OPPCOLNA = $OPP_ADDRESS ; $PGN_OPPCOLNA = "?" unless ($PGN_OPPCOLNA) ; if ($j > $NUM_WGAMES) { $PGN_WHITE = $PGN_OPPCOL ; $PGN_BLACK = $PGN_MYCOL ; $PGN_WHITENA = $PGN_OPPCOLNA ; $PGN_BLACKNA = $PGN_MYCOLNA ; } else { $PGN_WHITE = $PGN_MYCOL ; $PGN_BLACK = $PGN_OPPCOL ; $PGN_WHITENA = $PGN_MYCOLNA ; $PGN_BLACKNA = $PGN_OPPCOLNA ; } ## ######################################################### ## ## If we only have one colour of game then allow command-line ## colour specs to override ## ######################################################### ## if (! ($NUM_WGAMES && $NUM_BGAMES)) { $PGN_WHITE = $WHITE_FNAME if ($WHITE_FNAME) ; $PGN_BLACK = $BLACK_FNAME if ($BLACK_FNAME) ; $PGN_WHITENA = $WHITENA if ($WHITENA) ; $PGN_BLACKNA = $BLACKNA if ($BLACKNA) ; } $PGN_DATE = &get_date () ; $PGN_DATE = "?" unless ($PGN_DATE) ; if ($NUM_GAMES > 1) { $SUFFIX = ".$j" ; } else { $SUFFIX = "" ; } @game = ("[Event \"$PGN_EVENT\"]\n", "[Site \"$PGN_SITE\"]\n", "[Date \"$PGN_DATE\"]\n", "[Round \"$PGN_ROUND\"]\n", "[White \"$PGN_WHITE\"]\n", "[Black \"$PGN_BLACK\"]\n", "[Result \"*\"]\n", "[WhiteNA \"$PGN_WHITENA\"]\n", "[BlackNA \"$PGN_BLACKNA\"]\n", "[Mode \"$PGN_MODE\"]\n", "[CmailGameName \"$PGN_GAME$SUFFIX\"]\n\n*\n") ; if ($j > $NUM_WGAMES) { open (GAMEOUTFILE, "> $PGN_GAME.game.out.$j") ; print GAMEOUTFILE @game ; close (GAMEOUTFILE) ; } else { print GAMEFILE @game ; } } close (GAMEFILE) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Get the password file gcos (full name) entry sub get_pw_entry { local ($name, $passwd, $uid, $gid, $quota, $comment, $gcos, $dir, $shell) = getpwuid ($<); ($name, $gcos) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Get password file gcos (full name) entry sub get_pw_gcos { local ($PW_GCOS) ; if (! $PW_GCOS) { ($dummy, $PW_GCOS) = &get_pw_entry () ; $PW_GCOS =~ s/^\s*([^,()]+[^ ,()])[ ]*[,()].*$/$1/; if ($PW_GCOS =~ /^([^,()]+)\s+([^\s,()]+)$/) { ## Multi-word name $PW_GCOS = $2 . ", " . $1 ; } elsif ($PW_GCOS !~ /^([^\s,()]+)/) { ## No sensible gcos entry $PW_GCOS = "" ; } ## Else leave it as one word &debug ("PW full name is \"$PW_GCOS\"\n"); } return $PW_GCOS ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Get password file user name entry sub get_pw_name { local ($PW_NAME) ; ($PW_NAME, $dummy) = &get_pw_entry () ; &debug ("PW name is $PW_NAME\n"); return $PW_NAME ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Analyse the email message sub analyse_email_message { local ($new_result, $delete_result, $unfinished, $finished) = (0, 0, 0, 0) ; local ($gamefile, @games) ; ## ################################################################# ## ## Slurp the mail message ## ################################################################# ## die "cmail: No games on standard input" unless (@games = &get_games_from_file ("STDIN")) ; ## ################################################################# ## ## Is the message a real cmail message or just a chess game? $PGN_GAME ## will have been set by calling get_games_from_file if it's real ## ################################################################# ## print "Processing game message..." ; if ($PGN_GAME) { ## ############################################################# ## ## Restore the results file from the archive if ## necessary. This is helpful if the user pipes in an old ## message for take-back purposes or whatever. ## ############################################################# ## if (! -f "$PGN_GAME.res") { ## Find what date would have been used to create the archive foreach (@games) { if (/\[Date\s"(.*)"\]/) { $date = $1 ; last ; ## Assume all dates are the same } } ## Restore results file from archive directory if it exists if ($date && (-f "$ARCDIR/$PGN_GAME.$date.archive")) { if (system ("cp", "$ARCDIR/$PGN_GAME.$date.archive", "$PGN_GAME.res")) { print stderr ( "\nWarning: couldn't restore results file" . " from archive\n") ; } else { print "restored results file from archive..." ; } } } ## ############################################################# ## ## Find existing results, if any. ## ############################################################# ## local (@results) = &get_games_from_file ("$PGN_GAME.res") ; ## ############################################################# ## ## Parse each game ## ############################################################# ## foreach $game (@games) { next unless ($game) ; ($game_name, $game_num) = &get_game_name_and_number ($game) ; $result = 0 ; @game = split("\n", $game) ; foreach (@game) { if (/^\[(Black|White)\s*"[?]"\]$/) { $colour = $1; $PW_GCOS = &get_pw_gcos () unless ($PW_GCOS) ; $PW_GCOS = "$MY_NNAME" unless ($PW_GCOS) ; s/".*"/"$PW_GCOS"/ ; &debug ("Changed $colour tag to be $_") ; } elsif (/^\[((Black|White)NA)\s*"(.*)"\]$/) { $NA = $3 ; if ($NA eq "?") { if ($RETURN_ADDRESS) { $NA = $RETURN_ADDRESS ; } else { $NA = "??" ; } $_ = "[$1 \"$NA\"]" ; &debug ("Changed $1 tag.\n") ; } if ($2 eq "White") { $PGN_WHITENA = $NA ; &debug ("WhiteNA tag is \"$PGN_WHITENA\"\n") ; } else { $PGN_BLACKNA = $NA ; &debug ("BlackNA tag is \"$PGN_BLACKNA\"\n") ; } } elsif (/\[Result\s*"(.*)"\]$/) { if ($1 ne "*") { $result = 1 ; $finished ++ ; } else { $unfinished ++ ; } } elsif (/^(.*[^\d]+)?\d+[.]\s*([^\s*]*\s+)?[^\s.*]+(\s*\d+[.]\s*)?[\s*]*$/) { if ($2) { $to_play = "white" ; } else { $to_play = "black" ; } &debug ("$to_play to play\n") ; } } ## ######################################################### ## ## Reconstruct possibly edited game ## ######################################################### ## $game = join ("\n", @game) . "\n\n" ; ## ######################################################### ## ## Build up results array ## ######################################################### ## if ($result) { $results[$game_num] = $games[$game_num] ; $new_result = 1 ; } elsif ($results[$game_num]) { ## Deleting a result does actually make sense if the user ## pipes in an old message for take-back purposes or whatever $results[$game_num] = "" ; $delete_result = 1 ; } ## ######################################################### ## ## Remove old .out files ## ######################################################### ## unlink <$PGN_GAME.game.out.*> ; ## ######################################################### ## ## Write ongoing games to game file and append new results ## ######################################################### ## die "cmail: Can't open file for writing:" . " \"$CMAILDIR/$PGN_GAME.game.in\"\n" unless open (gamefile, ">$PGN_GAME.game.in") ; &debug (@games) ; print gamefile @games ; close (gamefile) ; } ## ############################################################# ## ## Print how many finished/unfinished games were found ## ############################################################# ## printf ("%d unfinished %s and %d finished %s...", $unfinished, ($unfinished == 1) ? "game" : "games", $finished, ($finished == 1) ? "game" : "games") ; ## ############################################################# ## ## Write results back to results file if there were any results ## in the input ## ############################################################# ## if ($new_result || $delete_result) { die ( "cmail: Can't open results file for writing:" . "\"$CMAILDIR/$PGN_GAME.res\"\n") unless open (resfile, ">$PGN_GAME.res") ; print resfile @results ; close (resfile) ; } ## ############################################################# ## ## Archive results if there are no unfinished games ## ############################################################# ## @ARCHIVE = @results unless ($unfinished) ; ## ############################################################# ## ## Figure out return address if not known ## ############################################################# ## if (! $RETURN_ADDRESS) { if ($to_play eq "black") { $RETURN_ADDRESS = $PGN_WHITENA unless ("$PGN_WHITENA" eq "?") ; } else { $RETURN_ADDRESS = $PGN_BLACKNA unless ("$PGN_BLACKNA" eq "?") ; } } ## ############################################################# ## ## Decide to include position diagrams in output if not already ## decided and a position diagram was found in the input ## ############################################################# ## if ("$OUTPUT_POS" eq "") { if (grep (/$posdiag/, @games)) { $OUTPUT_POS = "y" ; # Output position only if it was input } else { $OUTPUT_POS = "n" ; } } $ENV{'CMAIL_OUTPUT_POS'} = $OUTPUT_POS ; ## ############################################################# ## ## Check that we have enough info about the players to continue ## ############################################################# ## &find_game () ; } else { ## ############################################################# ## ## Set up xboard for viewing non-cmail PGN file ## ############################################################# ## local ($file) = "unknown.cmail" ; print "done.\nDumping non-cmail file into $CMAILDIR/$file..." ; die "cmail: Can't open file for writing: \"$CMAILDIR/$file\"\n" unless open (gamefile, ">$file") ; print gamefile @games ; close (gamefile) ; } print "done.\n" ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Sort two filenames by the numeric suffix sub sort_by_numeric_suffix { $a =~ /[.](\d+)$/ ; local ($na) = $1 ; $b =~ /[.](\d+)$/ ; local ($nb) = $1 ; return ($na <=> $nb) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# sub get_game_name_and_number { local ($game) = join ("\n", @_) ; local ($game_name, $game_num) ; die "CMailGameName tag missing\n" unless ($game =~ /\[C[Mm]ailGameName\s+"(.*)"\]/) ; ## ################################################################# ## ## Set game name and number ## ################################################################# ## $game_name = $1 ; if ($game_name =~ s/^(.*)[.](\d+)$/$1/) { $game_num = $2 ; } else { $game_num = 1 ; } ## ################################################################# ## ## Set $PGN_GAME as a side-effect or check validity ## ################################################################# ## if ($PGN_GAME) { die ( "cmail: Mismatched game names in input message:\n" . "\"$PGN_GAME\", \"$game_name\"\n") if ("$PGN_GAME" ne "$game_name") ; } else { $PGN_GAME = $game_name ; &debug ("PGN_GAME set to \"$PGN_GAME\"\n") ; } return ($game_name, $game_num) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Read in a file of games and split into separate games sub get_games_from_file { local ($file) = shift ; local (@file, $first_line) ; ## Slurp stdin if ($file eq "STDIN") { if ($first_line = ) { ## Necessary to handle no input case @file = ; ## Slurp stdin @file = ($first_line, @file) ; foreach (@file) { ## Strip off leading quotation characters s/^[^\s]*>// ; s/^[ \t]+// ; ## Find return address and set it as a side-effect if ( /^From:?.*<([^>]+)>.*\n$/ || /^From:? *([^ ]*).*\n$/) { $RETURN_ADDRESS = $1 ; ## Default for opp's email &debug ("Found opponent's email address", " \"$RETURN_ADDRESS\"\n") ; } elsif (/\[C[Mm]ailGameName\s+"(.*)"\]/) { $PGN_GAME = $1 ; $PGN_GAME =~ s/[.]\d+$// ; } } return (@file) unless ($PGN_GAME) ; if (grep (/\{--------------|\[Event/, @file)) { shift (@file) while ($file[0] !~ /\{--------------|\[Event/) ; } } else { return () ; } } else { return () unless (open (file, "<$file")) ; @file = ; ## Slurp file close (file) ; } local (@games, $game_name, $game_num, $game, $tag) ; ## ################################################################# ## ## Remove headers and leading blanks ## ################################################################# ## local (@tgames) = split (/($posdiag\[Event|\[Event)/, join ('', @file)) ; shift (@tgames) while (!$tgames[0]) ; ## ################################################################# ## ## Set up @games array with proper game numbers ## ################################################################# ## while (@tgames) { $game = shift (@tgames) . shift (@tgames) ; ($game_name, $game_num) = &get_game_name_and_number ($game) ; $games[$game_num] = $game ; } return (@games) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Analyse output files and send the move sub send_move { &debug ("Called \n") ; ## ################################################################# ## ## Cat the pos (if it exists), game and result (if it exists) files ## into the .out file. ## ################################################################# ## local ($unfinished, $finished) = (0, 0) ; local (@results, $move, $move_msg, $to_play, $number) ; ## ################################################################# ## ## Find any .game.out.* files ## ################################################################# ## local (@outfiles) = (<$PGN_GAME.game.out.*>) ; @outfiles = grep (/[.]\d+$/, @outfiles) ; ## Ignore autosave files @outfiles = sort sort_by_numeric_suffix @outfiles ; ## Sort ## ################################################################# ## ## Find .res file if it exists ## ################################################################# ## local ($resfile) = "$PGN_GAME.res" ; if (-f $resfile) { @results = &get_games_from_file($resfile) ; &debug ("Read in results\n") ; } else { @results = () ; &debug ("No results to read\n") ; } ## ################################################################# ## ## Find .out file if it exists ## ################################################################# ## local ($outfile) = "$PGN_GAME.out" ; if (! ($REMAIL || $LOAD_XBOARD)) { @games = &play_on_tty (@results) ; } elsif (@outfiles) { foreach (@outfiles) { die "Can't open game file \"$_\" for reading" unless (open (game, "<$_")) ; die "Empty game file \"$_\"" unless ($game = join ('', )) ; close (game) ; &debug ("Read in game file \"$_\"\n") ; ## Remove position diagram if it wasn't in the input msg $game =~ s/($posdiag)// if ("$OUTPUT_POS" ne "y") ; ($game_name, $game_num) = &get_game_name_and_number ($game) ; $games[$game_num] = $game ; } &debug ("Read in games from output files\n") ; $games[0] = "" ; } else { &debug ("No games to read from STDIN\n") ; if (-f $outfile) { @games = &get_games_from_file($outfile) ; } else { die "Can't find any game files\n" unless (@results) ; } } ## ################################################################# ## ## Process games ## ################################################################# ## if (@games) { ## ############################################################# ## ## Find opponent's email address in games ## ############################################################# ## $OPP_ADDRESS = &get_opp_address_from_games (@games) unless ($OPP_ADDRESS) ; ## ############################################################# ## ## Collect the .game.out.* files into the .out file, remembering ## the move number of the last line and whether result or not ## ############################################################# ## $unfinished = 0 ; $move_num = 0 ; $move = blank ; ## Write games to output file die "Can't open output file \"$PGN_GAME.out\" for writing\n" unless open (outfile, ">$PGN_GAME.out") ; print outfile @games ; close (outfile) ; $game_num = -1 ; $num_games = 0 ; foreach $game (@games) { $game_num ++ ; next unless ($game) ; $num_games ++ ; ## Determine last move and whether result or not $result = 0 ; foreach (split(/\n/, $game)) { if (/^(.*[^\d]+|)(\d+)[.]+\s*[^\s.]*\s+(\S+)\s*$/) { $move_num = $2 ; $move = $3 ; } elsif (/^\[Result\s*"(.*)"\]$/) { if ($1 ne "*") { $result = 1 ; $finished ++ ; } else { $unfinished ++ ; } } } $results[$game_num] = $game if ($result) ; } ## Write result files back to $PGN_GAME.res if (@results) { die "Can't open results file $PGN_GAME.res for writing\n" unless open (resfile, ">$PGN_GAME.res") ; print resfile @results ; close (results) ; } unlink <$PGN_GAME.game.out.*> ; ## ############################################################# ## ## Just say how many games are in the message ## ############################################################# ## if ($num_games > 1) { $move_msg = "$num_games games" ; } else { $move_msg = "1 game" ; } ## ############################################################# ## ## Print how many finished/unfinished games were found ## ############################################################# ## printf ("Sending %d unfinished %s and %d finished %s.\n", $unfinished, ($unfinished == 1) ? "game" : "games", $finished, ($finished == 1) ? "game" : "games") ; ## ############################################################# ## ## Send the mail message to opponent's address unless bypassed ## ############################################################# ## if ($SEND_MAIL) { local ($subject) = "cmail $move_msg <$PGN_GAME>" ; if ($MAILPROG =~ /sendmail/) { $opened = open (mail, "|$MAILPROG $OPP_ADDRESS") ; print mail "To: $OPP_ADDRESS\n"; print mail "Subject: $subject\n"; print mail "Mime-Version: 1.0\n"; print mail "Content-Type: application/x-chess;name=$PGN_GAME.pgn\n\n"; } else { $opened = open (mail, "|$MAILPROG -s \"$subject\" $OPP_ADDRESS") ; } if ($opened) { print mail @games ; close (mail) ; print ( "Mailed cmail message to \"$OPP_ADDRESS\":\n" . "$move_msg <$PGN_GAME>\n") ; @ARCHIVE = @results unless ($unfinished) ; } else { die "Failed to mail cmail message.\n" ; } } else { print ( "Email not sent (as requested).\n" . "Would have mailed cmail message to \"$OPP_ADDRESS\":\n" . "$NUM_GAMES games <$PGN_GAME>\n") ; } } else { if (@results) { print "Email not sent (the game is over).\n" ; } else { die "No games found\n" ; } } } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Get date from array of games sub get_date_from_games { local (@games) = @_ ; local ($date) = "nodate" ; foreach (@games) { if (/\[Date\s"(.*)"\]/) { $date = $1 ; last ; ## Assume all dates are the same } } return ($date) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Determine which colour is to play and the move number sub get_to_play { &debug ("Called \n") ; local ($game) = shift ; local ($number, $to_play) = (1, "White") ; $game =~ s/{[^}]*}//g ; $game =~ s/[\s\n]*[*][\s\n]*$// ; if ($game =~ /(\d+)[.][\n ]*([.]*)[\n ]*([^\n.]*)[\n\s]*[10-]*[\n\s]*$/) { $number = $1 ; if ($game =~ /\[Result "0-1"\]/) { $to_play = "Black" ; } elsif ($game =~ /\[Result "1-0"\]/) { $to_play = "White" ; } elsif (($2 ne "") || (($3 =~ / /) || ($3 eq ""))) { $to_play = "White" ; $number ++ ; } else { $to_play = "Black" ; } } &debug ("$to_play to play on move $number\n") ; return ($number, $to_play) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Get opp address from array of games sub get_opp_address_from_games { &debug ("Called \n") ; local (@games) = @_ ; local ($opp_address) = "" ; local ($number, $to_play, $tag) ; foreach (@games) { next unless $_ ; ($number, $to_play) = &get_to_play ($_) ; $tag = ( ($to_play eq "White") ? "WhiteNA" : "BlackNA") ; if (/\[$tag\s"(.*)"\]/) { $opp_address = $1 ; die "cmail: Empty \"$tag\" tag\n" unless ($opp_address) ; &debug ("Found opponent's address \"$opp_address\" from games.\n") ; last ; ## Assume all opp addresses are the same } else { die "cmail: Can't find \"$tag\" tag\n" ; } } die "cmail: Can't find opponent's email address\n" unless ($opp_address) ; return ($opp_address) ; } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Archive @ARCHIVE in the $ARCDIR directory sub archive { return () unless (@ARCHIVE) ; local ($date) = &get_date_from_games (@ARCHIVE) ; local ($file) = "$ARCDIR/$PGN_GAME.$date.archive" ; if (open (archive, ">$file")) { print archive @ARCHIVE ; close (archive) ; print "Archived game in $file\n" ; local (@remove) = <$PGN_GAME*> ; @remove = grep ($_ ne "$PGN_GAME.$date.archive", @remove) ; ## Don't delete archive unlink (@remove) ; } else { print "Couldn't open \"$file\" to archive game\n" ; } } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# ## Main body sub main { local (@games) = () ; &initialise () ; ## Initialise variables etc. if (-t || $REMAIL) { ## No input directed (invoked from a shell rather than a mailer) &debug ("Interactive!\n") ; &find_game () ; ## Get the necessary info about the game } else { &debug ("Piping!\n") ; &analyse_email_message () ; ## Analyse the mail message } if (! &play_game ()) { ## Load the game &send_move () ; ## Analyse output and send moves } &archive () ; ## Archive games if all finished close (tty) ; ## Tidy up close (logfile) if ($DEBUG) ; ## Tidy up } #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# &main () ; #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=# __END__ cmail (From XBoard version @PACKAGE_VERSION@), Copyright (C) 1993 Free Software Foundation, Inc. cmail comes with ABSOLUTELY NO WARRANTY; for details type `cmail -w'. cmail is free software, and you are welcome to redistribute it under certain conditions; type `cmail -c' for details. {END OF GPL COPYRIGHT} GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. {END OF GPL CONDITIONS} GNU GENERAL PUBLIC LICENSE NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. xboard-4.9.1/ics-parsing.txt0000644000175000001440000001325612717001265012711 00000000000000Parsing of ICS Output Updated to match xboard/WinBoard 4.0.2 ============================================================================== This document describes how xboard and WinBoard parse ICS output. The general parsing method is to compare a list of patterns against the current line (whether partial or complete) each time new input is received from ICS. The patterns are considered in a fixed order. The pattern matching is not "anchored", so unmatched text at the beginning of a line (including the prompt, usually) is skipped. Whenever a pattern is matched, the characters are "consumed" and matching begins again with the next unmatched character, starting at the top of the list. The last pattern is "\n", causing characters up to a newline to be discarded if they have not matched any patterns. The pattern language is very simple. Every character but "*" must match literally. "*" matches zero or more characters that don't include a newline and don't match the character immediately following the *, if any. A "*" at the end of a pattern will not match until a complete line is received This method of pattern matching is rather fragile. The patterns have to be chosen quite carefully to avoid unexpected results. For example, at one time "* shouts: *" was used to match shouts, while "<12>" was used to match the start of a board. If someone shouted "<12>", xboard would succeed in ignoring the <12> only if all the characters from the ">" to the next newline were received at one time, so that the shout pattern could match before the start-of-board pattern was considered. (This usually happens on TCP connections, but is not guaranteed.) The patterns intentionally allow text in finger notes to be parsed and colorized as tells, shouts, etc. I did this because Zek once said that ZIICS users like this feature, even though he originally considered it a bug in ZIICS, and so he doesn't dare change it. I may eventually change it anyway so that people stop reporting it as a bug. Here is the complete list of patterns that xboard looks for, in order. The list was obtained by grepping the source code for "looking_at", my procedure for pattern-matching. Some of these are specific to FICS, some to ICC, and some may be outdated---that is, they may reflect messages that no ICS produces anymore. Occasionally the same pattern appears more than once because earlier occurrences were inside if/then/else statements. There may also be a couple of places where I do a test without calling looking_at. zippy.c (runs first if Zippy is active, otherwise skipped): "* kibitzes: Hello from Crafty" "* is in the computer list." "* * is a computer *" "* offers to be your bughouse partner" "* tells you: [automatic message] I chose you" "* agrees to be your partner" "are no longer *'s partner" "no longer have a bughouse partner" "partner has disconnected" "partner has just chosen a new partner" "* tells you: [automatic message] I'm no longer your" "* (your partner) tells you: *" "* tells you: *" "* says: *" "--> * *" "* shouts: *" "* kibitzes: *" "* whispers: *" "You have * message*." "* has left a message for you." "* just sent you a message." "--* (*:*): *" "*. * (*:*): *" "*. * at *:*: *" "*(*): *" "*(*)(*): *" "Notification: * has arrived" "Not sent -- * is censoring you" "command is currently turned off" "* * match * * requested with * (*)" "* * match * requested with * (*)" * has made an alternate proposal of * * match * *." "Challenge: * (*) *(*) * * * * Loaded from *" "Challenge: * (*) *(*) * * * * : * * Loaded from *" "Challenge: * (*) *(*) * * * * : * *" "Challenge: * (*) *(*) * * * * * *" "Challenge: * (*) *(*) * * * *" "offers you a draw" "requests that the game be aborted" "would like to abort" "requests adjournment" "would like to adjourn" backend.c: "ics%" /* right after login only; nonessential */ "chessclub.com" /* before login; turns on ICC mode */ "\"*\" is *a registered name" "Logging you in as \"*\"" "Your name will be \"*\"" "* s-shouts: " "* c-shouts: " "--->" /* seen in FICS login, not a shout */ "* shouts: " "--> " "* tells you: " "* (your partner) tells you: " "* says: " "* has left a message " "* just sent you a message:\n" "*. * (*:*): " "*. * at *:*: " "* whispers: " "* kibitzes: " "*)(*): *" /* channel tell or allobs or admin comment */ "*(*): *" /* channel tell or allobs or admin comment */ "*)(*)(*): *" /* channel tell */ "Challenge:" "* offers you" "* offers to be" "* would like to" "* requests to" "Your opponent offers" "Your opponent requests" "\\ " /* continuation line */ "Black Strength :" /* need to issue "style 12; refresh" */ "<<< style 10 board >>>" /* need to issue "style 12; refresh" */ "<10>" /* need to issue "style 12; refresh" */ "#@#" /* need to issue "style 12; refresh" */ "login:" "\n<12> " "<12> " "\n " " " "* *vs. * *--- *" /* move list coming */ "* * match, initial time: * minute*, increment: * second" "Move " /* move list is here */ "% " /* end of prompt; nonessential */ "}*" /* ends a move list */ "Adding game * to observation list" "Game notification: * (*) vs. * (*)" "Entering examine mode for game *" "has made you an examiner of game *" "Illegal move" "Not a legal move" "Your king is in check" "It isn't your turn" "It is not your move" "still have time" "not out of time" "either player is out of time" "has timeseal; checking" "added * seconds to" "seconds were added to" "clock paused" "clock resumed" "Creating: * (*)* * (*)" "Creating: * (*) [*] * (*)" "{Game * (* vs. *) *}*" "Removing game * from observation" "no longer observing game *" "Game * (*) has no examiners" "no longer examining game *" "\n" "*% " /* end of prompt; nonessential */ xboard-4.9.1/draw.h0000644000175000001440000000643212717001265011035 00000000000000/* * draw.h -- declarations shared between xboard.c and draw.c * * Copyright 1991 by Digital Equipment Corporation, Maynard, * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * The following terms apply to Digital Equipment Corporation's copyright * interest in XBoard: * ------------------------------------------------------------------------ * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Digital not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * ------------------------------------------------------------------------ * * The following terms apply to the enhanced version of XBoard * distributed by the Free Software Foundation: * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #define DRAWABLE(X) ((cairo_surface_t *) ((X)->choice)) // defined in xboard.c void ResizeBoardWindow P((int w, int h, int inhibit)); void CreateGrid P((void)); void CreateGCs P((int redo)); void DelayedDrag P((void)); extern int lineGap, squareSize; // defined in draw.c void CreateGCs P((int redo)); void CreateAnyPieces P((int p)); void CreatePNGPieces P((char *pieceDir)); void CreateGrid P((void)); void DrawSegment P((int x, int y, int *lastX, int *lastY, int p)); void DrawRectangle P((int left, int top, int right, int bottom, int side, int style)); void DrawEvalText P((char *buf, int cbBuf, int y)); void DrawText P((char *string, int x, int y, int align)); extern Option *disp; extern char svgDir[]; // defined in evaldraw.c float Color P((char *col, int n)); // defined in xoptions.c void GraphExpose P((Option *opt, int x, int y, int w, int h)); xboard-4.9.1/evalgraph.c0000644000175000001440000002436112717001265012045 00000000000000/* * evalgraph.c - Evaluation graph back-end part * * Author: Alessandro Scotti (Dec 2005) * * Copyright 2005 Alessandro Scotti * * Enhancments Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, * 2016 Free Software Foundation, Inc. * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ // code refactored by HGM to obtain front-end / back-end separation #include "config.h" #include #if STDC_HEADERS # include # include #else /* not STDC_HEADERS */ # if HAVE_STRING_H # include # else /* not HAVE_STRING_H */ # include # endif /* not HAVE_STRING_H */ #endif /* not STDC_HEADERS */ #include "common.h" #include "frontend.h" #include "backend.h" #include "evalgraph.h" /* Module globals */ ChessProgramStats_Move * currPvInfo; int currFirst = 0; int currLast = 0; int currCurrent = -1; int range = 1; int differentialView; int nWidthPB = 0; int nHeightPB = 0; int MarginX = 18; int MarginW = 4; int MarginH = 4; // back-end static void DrawLine (int x1, int y1, int x2, int y2, int penType) { DrawSegment( x1, y1, NULL, NULL, PEN_NONE ); DrawSegment( x2, y2, NULL, NULL, penType ); } // back-end static void DrawLineEx (int x1, int y1, int x2, int y2, int penType) { int savX, savY; DrawSegment( x1, y1, &savX, &savY, PEN_NONE ); DrawSegment( x2, y2, NULL, NULL, penType ); DrawSegment( savX, savY, NULL, NULL, PEN_NONE ); } // back-end static int GetPvScore (int index) { int score = currPvInfo[ index ].score; if(differentialView) score = index < currLast-1 ? -currPvInfo[ index+1 ].score - score : 0; if( index & 1 ) score = -score; /* Flip score for black */ return score; } char * MakeEvalTitle (char *title) { int score, depth; static char buf[MSG_SIZ]; if( currCurrent <0 ) return title; // currCurrent = -1 crashed WB on start without ini file! score = currPvInfo[ currCurrent ].score; depth = currPvInfo[ currCurrent ].depth; if( depth <=0 ) return title; if( currCurrent & 1 ) score = -score; /* Flip score for black */ snprintf(buf, MSG_SIZ, "%s {%d: %s%.2f/%-2d %d}", title, currCurrent/2+1, score>0 ? "+" : " ", score/100., depth, (currPvInfo[currCurrent].time+50)/100); return buf; } // back-end /* For a centipawn value, this function returns the height of the corresponding histogram, centered on the reference axis. Note: height can be negative! */ static int GetValueY (int value) { if( value < -range*700 ) value = -range*700; if( value > +range*700 ) value = +range*700; if(value > 100*range) value += (appData.zoom - 1)*100*range; else if(value < -100*range) value -= (appData.zoom - 1)*100*range; else value *= appData.zoom; return (nHeightPB / 2) - (int)(value * (nHeightPB - 2*MarginH) / ((1200. + 200.*appData.zoom)*range)); } // the brush selection is made part of the DrawLine, by passing a style argument // the wrapper for doing the text output makes this back-end static void DrawAxisSegmentHoriz (int value, Boolean drawValue) { int y = GetValueY( range*value*100 ); if( drawValue ) { char buf[MSG_SIZ], *b = buf; if( value > 0 ) *b++ = '+'; sprintf(b, "%d", range*value); DrawEvalText(buf, strlen(buf), y); } // [HGM] counts on DrawEvalText to have select transparent background for dotted line! DrawLine( MarginX, y, MarginX + MarginW, y, PEN_BLACK ); // Y-axis tick marks DrawLine( MarginX + MarginW, y, nWidthPB - MarginW, y, PEN_DOTTED ); // hor grid } // The DrawLines again must select their own brush. // the initial brush selection is useless? BkMode needed for dotted line and text static void DrawAxis () { int cy = nHeightPB / 2, space = nHeightPB/(6 + appData.zoom); DrawAxisSegmentHoriz( +5, TRUE ); DrawAxisSegmentHoriz( +3, space >= 20 ); DrawAxisSegmentHoriz( +1, space >= 20 && space*appData.zoom >= 40 ); DrawAxisSegmentHoriz( 0, TRUE ); DrawAxisSegmentHoriz( -1, space >= 20 && space*appData.zoom >= 40 ); DrawAxisSegmentHoriz( -3, space >= 20 ); DrawAxisSegmentHoriz( -5, TRUE ); DrawLine( MarginX + MarginW, cy, nWidthPB - MarginW, cy, PEN_BLACK ); // x-axis DrawLine( MarginX + MarginW, MarginH, MarginX + MarginW, nHeightPB - MarginH, PEN_BLACK ); // y-axis } // back-end static void DrawHistogram (int x, int y, int width, int value, int side) { int left, top, right, bottom; if( value > -appData.evalThreshold*range && value < +appData.evalThreshold*range ) return; left = x; right = left + width + 1; if( value > 0 ) { top = GetValueY( value ); bottom = y+1; } else { top = y; bottom = GetValueY( value ) + 1; } if( width == MIN_HIST_WIDTH ) { right--; DrawRectangle( left, top, right, bottom, side, FILLED ); } else { DrawRectangle( left, top, right, bottom, side, OPEN ); } } // back-end static void DrawSeparator (int index, int x) { if( index > 0 ) { if( index == currCurrent ) { DrawLineEx( x, MarginH, x, nHeightPB - MarginH, PEN_BLUEDOTTED ); } else if( (index % 20) == 0 ) { DrawLineEx( x, MarginH, x, nHeightPB - MarginH, PEN_DOTTED ); } } } // made back-end by replacing MoveToEx and LineTo by DrawSegment /* Actually draw histogram as a diagram, cause there's too much data */ static void DrawHistogramAsDiagram (int cy, int paint_width, int hist_count) { double step; int i; /* Rescale the graph every few moves (as opposed to every move) */ hist_count -= hist_count % 8; hist_count += 8; hist_count /= 2; step = (double) paint_width / (hist_count + 1); for( i=0; i<2; i++ ) { int index = currFirst; int side = (currCurrent + i + 1) & 1; /* Draw current side last */ double x = MarginX + MarginW; if( (index & 1) != side ) { x += step / 2; index++; } DrawSegment( (int) x, cy, NULL, NULL, PEN_NONE ); index += 2; while( index < currLast ) { x += step; DrawSeparator( index, (int) x ); /* Extend line up to current point */ if( currPvInfo[index].depth > 0 ) { DrawSegment((int) x, GetValueY( GetPvScore(index) ), NULL, NULL, (side==0 ? PEN_BOLDWHITE: PEN_BOLDBLACK) ); } index += 2; } } } // back-end, delete pen selection static void DrawHistogramFull (int cy, int hist_width, int hist_count) { int i; // SelectObject( hdcPB, GetStockObject(BLACK_PEN) ); for( i=0; i 0 ) { DrawHistogram( x, cy, hist_width, GetPvScore(index), index & 1 ); } } } typedef struct { int cy; int hist_width; int hist_count; int paint_width; } VisualizationData; // back-end static Boolean InitVisualization (VisualizationData *vd) { Boolean result = FALSE; vd->cy = nHeightPB / 2; vd->hist_width = MIN_HIST_WIDTH; vd->hist_count = currLast - currFirst; vd->paint_width = nWidthPB - MarginX - 2*MarginW; if( vd->hist_count > 0 ) { result = TRUE; /* Compute width */ vd->hist_width = vd->paint_width / vd->hist_count; if( vd->hist_width > MAX_HIST_WIDTH ) vd->hist_width = MAX_HIST_WIDTH; vd->hist_width -= vd->hist_width % 2; } return result; } // back-end static void DrawHistograms () { VisualizationData vd; int i; double step = 1; if( InitVisualization( &vd ) ) { if( vd.hist_width < MIN_HIST_WIDTH ) { DrawHistogramAsDiagram( vd.cy, vd.paint_width, vd.hist_count ); step = 0.5*vd.paint_width / (((vd.hist_count | 7) + 1)/2 + 1.); } else { DrawHistogramFull( vd.cy, step = vd.hist_width, vd.hist_count ); } } if(!differentialView) return; differentialView = 0; DrawSegment( MarginX + MarginW, vd.cy, NULL, NULL, PEN_NONE ); for( i=0; i= start_x && InitVisualization( &vd ) ) { /* Almost an hack here... we duplicate some of the paint logic */ if( vd.hist_width < MIN_HIST_WIDTH ) { double step; vd.hist_count -= vd.hist_count % 8; vd.hist_count += 8; vd.hist_count /= 2; step = (double) vd.paint_width / (vd.hist_count + 1); step /= 2; result = (int) (0.5 + (double) (x - start_x) / step); } else { result = (x - start_x) / vd.hist_width; } } if( result >= currLast ) { result = -1; } return result; } // init and display part split of so they can be moved to front end void PaintEvalGraph (void) { VariantClass v = gameInfo.variant; range = (gameInfo.holdingsWidth && v != VariantSuper && v != VariantGreat && v != VariantSChess) ? 2 : 1; // [HGM] double range in drop games /* Draw */ DrawRectangle(0, 0, nWidthPB, nHeightPB, 2, FILLED); DrawAxis(); DrawHistograms(); } xboard-4.9.1/book.c0000644000175000001440000013515312717001265011030 00000000000000/* * book.c -- code for probing Polyglot opening books * * This code was first released in the public domain by Michel Van den Bergh. * The array Random64 is taken from the Polyglot source code. * I am pretty sure that a table of random numbers is never protected * by copyright. * * It s adapted by H.G. Muller for working with xboard / Winboard * * The following terms apply to the enhanced version of XBoard distributed * by the Free Software Foundation: * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * * ------------------------------------------------------------------------ */ #include "config.h" #include #include #include #include #include #include "common.h" #include "frontend.h" #include "backend.h" #include "moves.h" #include "gettext.h" #ifdef ENABLE_NLS # define _(s) gettext (s) # define N_(s) gettext_noop (s) #else # define _(s) (s) # define N_(s) s #endif #ifdef _MSC_VER typedef unsigned __int64 uint64; #else typedef unsigned long long int uint64; #endif #ifdef _MSC_VER # define U64(u) (u##ui64) #else # define U64(u) (u##ULL) #endif typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned int uint32; typedef struct { uint64 key; uint16 move; uint16 weight; uint16 learnPoints; uint16 learnCount; } entry_t; entry_t entry_none = { 0, 0, 0, 0 }; char *promote_pieces=" nbrqac=+"; uint64 Random64[781] = { U64(0x9D39247E33776D41), U64(0x2AF7398005AAA5C7), U64(0x44DB015024623547), U64(0x9C15F73E62A76AE2), U64(0x75834465489C0C89), U64(0x3290AC3A203001BF), U64(0x0FBBAD1F61042279), U64(0xE83A908FF2FB60CA), U64(0x0D7E765D58755C10), U64(0x1A083822CEAFE02D), U64(0x9605D5F0E25EC3B0), U64(0xD021FF5CD13A2ED5), U64(0x40BDF15D4A672E32), U64(0x011355146FD56395), U64(0x5DB4832046F3D9E5), U64(0x239F8B2D7FF719CC), U64(0x05D1A1AE85B49AA1), U64(0x679F848F6E8FC971), U64(0x7449BBFF801FED0B), U64(0x7D11CDB1C3B7ADF0), U64(0x82C7709E781EB7CC), U64(0xF3218F1C9510786C), U64(0x331478F3AF51BBE6), U64(0x4BB38DE5E7219443), U64(0xAA649C6EBCFD50FC), U64(0x8DBD98A352AFD40B), U64(0x87D2074B81D79217), U64(0x19F3C751D3E92AE1), U64(0xB4AB30F062B19ABF), U64(0x7B0500AC42047AC4), U64(0xC9452CA81A09D85D), U64(0x24AA6C514DA27500), U64(0x4C9F34427501B447), U64(0x14A68FD73C910841), U64(0xA71B9B83461CBD93), U64(0x03488B95B0F1850F), U64(0x637B2B34FF93C040), U64(0x09D1BC9A3DD90A94), U64(0x3575668334A1DD3B), U64(0x735E2B97A4C45A23), U64(0x18727070F1BD400B), U64(0x1FCBACD259BF02E7), U64(0xD310A7C2CE9B6555), U64(0xBF983FE0FE5D8244), U64(0x9F74D14F7454A824), U64(0x51EBDC4AB9BA3035), U64(0x5C82C505DB9AB0FA), U64(0xFCF7FE8A3430B241), U64(0x3253A729B9BA3DDE), U64(0x8C74C368081B3075), U64(0xB9BC6C87167C33E7), U64(0x7EF48F2B83024E20), U64(0x11D505D4C351BD7F), U64(0x6568FCA92C76A243), U64(0x4DE0B0F40F32A7B8), U64(0x96D693460CC37E5D), U64(0x42E240CB63689F2F), U64(0x6D2BDCDAE2919661), U64(0x42880B0236E4D951), U64(0x5F0F4A5898171BB6), U64(0x39F890F579F92F88), U64(0x93C5B5F47356388B), U64(0x63DC359D8D231B78), U64(0xEC16CA8AEA98AD76), U64(0x5355F900C2A82DC7), U64(0x07FB9F855A997142), U64(0x5093417AA8A7ED5E), U64(0x7BCBC38DA25A7F3C), U64(0x19FC8A768CF4B6D4), U64(0x637A7780DECFC0D9), U64(0x8249A47AEE0E41F7), U64(0x79AD695501E7D1E8), U64(0x14ACBAF4777D5776), U64(0xF145B6BECCDEA195), U64(0xDABF2AC8201752FC), U64(0x24C3C94DF9C8D3F6), U64(0xBB6E2924F03912EA), U64(0x0CE26C0B95C980D9), U64(0xA49CD132BFBF7CC4), U64(0xE99D662AF4243939), U64(0x27E6AD7891165C3F), U64(0x8535F040B9744FF1), U64(0x54B3F4FA5F40D873), U64(0x72B12C32127FED2B), U64(0xEE954D3C7B411F47), U64(0x9A85AC909A24EAA1), U64(0x70AC4CD9F04F21F5), U64(0xF9B89D3E99A075C2), U64(0x87B3E2B2B5C907B1), U64(0xA366E5B8C54F48B8), U64(0xAE4A9346CC3F7CF2), U64(0x1920C04D47267BBD), U64(0x87BF02C6B49E2AE9), U64(0x092237AC237F3859), U64(0xFF07F64EF8ED14D0), U64(0x8DE8DCA9F03CC54E), U64(0x9C1633264DB49C89), U64(0xB3F22C3D0B0B38ED), U64(0x390E5FB44D01144B), U64(0x5BFEA5B4712768E9), U64(0x1E1032911FA78984), U64(0x9A74ACB964E78CB3), U64(0x4F80F7A035DAFB04), U64(0x6304D09A0B3738C4), U64(0x2171E64683023A08), U64(0x5B9B63EB9CEFF80C), U64(0x506AACF489889342), U64(0x1881AFC9A3A701D6), U64(0x6503080440750644), U64(0xDFD395339CDBF4A7), U64(0xEF927DBCF00C20F2), U64(0x7B32F7D1E03680EC), U64(0xB9FD7620E7316243), U64(0x05A7E8A57DB91B77), U64(0xB5889C6E15630A75), U64(0x4A750A09CE9573F7), U64(0xCF464CEC899A2F8A), U64(0xF538639CE705B824), U64(0x3C79A0FF5580EF7F), U64(0xEDE6C87F8477609D), U64(0x799E81F05BC93F31), U64(0x86536B8CF3428A8C), U64(0x97D7374C60087B73), U64(0xA246637CFF328532), U64(0x043FCAE60CC0EBA0), U64(0x920E449535DD359E), U64(0x70EB093B15B290CC), U64(0x73A1921916591CBD), U64(0x56436C9FE1A1AA8D), U64(0xEFAC4B70633B8F81), U64(0xBB215798D45DF7AF), U64(0x45F20042F24F1768), U64(0x930F80F4E8EB7462), U64(0xFF6712FFCFD75EA1), U64(0xAE623FD67468AA70), U64(0xDD2C5BC84BC8D8FC), U64(0x7EED120D54CF2DD9), U64(0x22FE545401165F1C), U64(0xC91800E98FB99929), U64(0x808BD68E6AC10365), U64(0xDEC468145B7605F6), U64(0x1BEDE3A3AEF53302), U64(0x43539603D6C55602), U64(0xAA969B5C691CCB7A), U64(0xA87832D392EFEE56), U64(0x65942C7B3C7E11AE), U64(0xDED2D633CAD004F6), U64(0x21F08570F420E565), U64(0xB415938D7DA94E3C), U64(0x91B859E59ECB6350), U64(0x10CFF333E0ED804A), U64(0x28AED140BE0BB7DD), U64(0xC5CC1D89724FA456), U64(0x5648F680F11A2741), U64(0x2D255069F0B7DAB3), U64(0x9BC5A38EF729ABD4), U64(0xEF2F054308F6A2BC), U64(0xAF2042F5CC5C2858), U64(0x480412BAB7F5BE2A), U64(0xAEF3AF4A563DFE43), U64(0x19AFE59AE451497F), U64(0x52593803DFF1E840), U64(0xF4F076E65F2CE6F0), U64(0x11379625747D5AF3), U64(0xBCE5D2248682C115), U64(0x9DA4243DE836994F), U64(0x066F70B33FE09017), U64(0x4DC4DE189B671A1C), U64(0x51039AB7712457C3), U64(0xC07A3F80C31FB4B4), U64(0xB46EE9C5E64A6E7C), U64(0xB3819A42ABE61C87), U64(0x21A007933A522A20), U64(0x2DF16F761598AA4F), U64(0x763C4A1371B368FD), U64(0xF793C46702E086A0), U64(0xD7288E012AEB8D31), U64(0xDE336A2A4BC1C44B), U64(0x0BF692B38D079F23), U64(0x2C604A7A177326B3), U64(0x4850E73E03EB6064), U64(0xCFC447F1E53C8E1B), U64(0xB05CA3F564268D99), U64(0x9AE182C8BC9474E8), U64(0xA4FC4BD4FC5558CA), U64(0xE755178D58FC4E76), U64(0x69B97DB1A4C03DFE), U64(0xF9B5B7C4ACC67C96), U64(0xFC6A82D64B8655FB), U64(0x9C684CB6C4D24417), U64(0x8EC97D2917456ED0), U64(0x6703DF9D2924E97E), U64(0xC547F57E42A7444E), U64(0x78E37644E7CAD29E), U64(0xFE9A44E9362F05FA), U64(0x08BD35CC38336615), U64(0x9315E5EB3A129ACE), U64(0x94061B871E04DF75), U64(0xDF1D9F9D784BA010), U64(0x3BBA57B68871B59D), U64(0xD2B7ADEEDED1F73F), U64(0xF7A255D83BC373F8), U64(0xD7F4F2448C0CEB81), U64(0xD95BE88CD210FFA7), U64(0x336F52F8FF4728E7), U64(0xA74049DAC312AC71), U64(0xA2F61BB6E437FDB5), U64(0x4F2A5CB07F6A35B3), U64(0x87D380BDA5BF7859), U64(0x16B9F7E06C453A21), U64(0x7BA2484C8A0FD54E), U64(0xF3A678CAD9A2E38C), U64(0x39B0BF7DDE437BA2), U64(0xFCAF55C1BF8A4424), U64(0x18FCF680573FA594), U64(0x4C0563B89F495AC3), U64(0x40E087931A00930D), U64(0x8CFFA9412EB642C1), U64(0x68CA39053261169F), U64(0x7A1EE967D27579E2), U64(0x9D1D60E5076F5B6F), U64(0x3810E399B6F65BA2), U64(0x32095B6D4AB5F9B1), U64(0x35CAB62109DD038A), U64(0xA90B24499FCFAFB1), U64(0x77A225A07CC2C6BD), U64(0x513E5E634C70E331), U64(0x4361C0CA3F692F12), U64(0xD941ACA44B20A45B), U64(0x528F7C8602C5807B), U64(0x52AB92BEB9613989), U64(0x9D1DFA2EFC557F73), U64(0x722FF175F572C348), U64(0x1D1260A51107FE97), U64(0x7A249A57EC0C9BA2), U64(0x04208FE9E8F7F2D6), U64(0x5A110C6058B920A0), U64(0x0CD9A497658A5698), U64(0x56FD23C8F9715A4C), U64(0x284C847B9D887AAE), U64(0x04FEABFBBDB619CB), U64(0x742E1E651C60BA83), U64(0x9A9632E65904AD3C), U64(0x881B82A13B51B9E2), U64(0x506E6744CD974924), U64(0xB0183DB56FFC6A79), U64(0x0ED9B915C66ED37E), U64(0x5E11E86D5873D484), U64(0xF678647E3519AC6E), U64(0x1B85D488D0F20CC5), U64(0xDAB9FE6525D89021), U64(0x0D151D86ADB73615), U64(0xA865A54EDCC0F019), U64(0x93C42566AEF98FFB), U64(0x99E7AFEABE000731), U64(0x48CBFF086DDF285A), U64(0x7F9B6AF1EBF78BAF), U64(0x58627E1A149BBA21), U64(0x2CD16E2ABD791E33), U64(0xD363EFF5F0977996), U64(0x0CE2A38C344A6EED), U64(0x1A804AADB9CFA741), U64(0x907F30421D78C5DE), U64(0x501F65EDB3034D07), U64(0x37624AE5A48FA6E9), U64(0x957BAF61700CFF4E), U64(0x3A6C27934E31188A), U64(0xD49503536ABCA345), U64(0x088E049589C432E0), U64(0xF943AEE7FEBF21B8), U64(0x6C3B8E3E336139D3), U64(0x364F6FFA464EE52E), U64(0xD60F6DCEDC314222), U64(0x56963B0DCA418FC0), U64(0x16F50EDF91E513AF), U64(0xEF1955914B609F93), U64(0x565601C0364E3228), U64(0xECB53939887E8175), U64(0xBAC7A9A18531294B), U64(0xB344C470397BBA52), U64(0x65D34954DAF3CEBD), U64(0xB4B81B3FA97511E2), U64(0xB422061193D6F6A7), U64(0x071582401C38434D), U64(0x7A13F18BBEDC4FF5), U64(0xBC4097B116C524D2), U64(0x59B97885E2F2EA28), U64(0x99170A5DC3115544), U64(0x6F423357E7C6A9F9), U64(0x325928EE6E6F8794), U64(0xD0E4366228B03343), U64(0x565C31F7DE89EA27), U64(0x30F5611484119414), U64(0xD873DB391292ED4F), U64(0x7BD94E1D8E17DEBC), U64(0xC7D9F16864A76E94), U64(0x947AE053EE56E63C), U64(0xC8C93882F9475F5F), U64(0x3A9BF55BA91F81CA), U64(0xD9A11FBB3D9808E4), U64(0x0FD22063EDC29FCA), U64(0xB3F256D8ACA0B0B9), U64(0xB03031A8B4516E84), U64(0x35DD37D5871448AF), U64(0xE9F6082B05542E4E), U64(0xEBFAFA33D7254B59), U64(0x9255ABB50D532280), U64(0xB9AB4CE57F2D34F3), U64(0x693501D628297551), U64(0xC62C58F97DD949BF), U64(0xCD454F8F19C5126A), U64(0xBBE83F4ECC2BDECB), U64(0xDC842B7E2819E230), U64(0xBA89142E007503B8), U64(0xA3BC941D0A5061CB), U64(0xE9F6760E32CD8021), U64(0x09C7E552BC76492F), U64(0x852F54934DA55CC9), U64(0x8107FCCF064FCF56), U64(0x098954D51FFF6580), U64(0x23B70EDB1955C4BF), U64(0xC330DE426430F69D), U64(0x4715ED43E8A45C0A), U64(0xA8D7E4DAB780A08D), U64(0x0572B974F03CE0BB), U64(0xB57D2E985E1419C7), U64(0xE8D9ECBE2CF3D73F), U64(0x2FE4B17170E59750), U64(0x11317BA87905E790), U64(0x7FBF21EC8A1F45EC), U64(0x1725CABFCB045B00), U64(0x964E915CD5E2B207), U64(0x3E2B8BCBF016D66D), U64(0xBE7444E39328A0AC), U64(0xF85B2B4FBCDE44B7), U64(0x49353FEA39BA63B1), U64(0x1DD01AAFCD53486A), U64(0x1FCA8A92FD719F85), U64(0xFC7C95D827357AFA), U64(0x18A6A990C8B35EBD), U64(0xCCCB7005C6B9C28D), U64(0x3BDBB92C43B17F26), U64(0xAA70B5B4F89695A2), U64(0xE94C39A54A98307F), U64(0xB7A0B174CFF6F36E), U64(0xD4DBA84729AF48AD), U64(0x2E18BC1AD9704A68), U64(0x2DE0966DAF2F8B1C), U64(0xB9C11D5B1E43A07E), U64(0x64972D68DEE33360), U64(0x94628D38D0C20584), U64(0xDBC0D2B6AB90A559), U64(0xD2733C4335C6A72F), U64(0x7E75D99D94A70F4D), U64(0x6CED1983376FA72B), U64(0x97FCAACBF030BC24), U64(0x7B77497B32503B12), U64(0x8547EDDFB81CCB94), U64(0x79999CDFF70902CB), U64(0xCFFE1939438E9B24), U64(0x829626E3892D95D7), U64(0x92FAE24291F2B3F1), U64(0x63E22C147B9C3403), U64(0xC678B6D860284A1C), U64(0x5873888850659AE7), U64(0x0981DCD296A8736D), U64(0x9F65789A6509A440), U64(0x9FF38FED72E9052F), U64(0xE479EE5B9930578C), U64(0xE7F28ECD2D49EECD), U64(0x56C074A581EA17FE), U64(0x5544F7D774B14AEF), U64(0x7B3F0195FC6F290F), U64(0x12153635B2C0CF57), U64(0x7F5126DBBA5E0CA7), U64(0x7A76956C3EAFB413), U64(0x3D5774A11D31AB39), U64(0x8A1B083821F40CB4), U64(0x7B4A38E32537DF62), U64(0x950113646D1D6E03), U64(0x4DA8979A0041E8A9), U64(0x3BC36E078F7515D7), U64(0x5D0A12F27AD310D1), U64(0x7F9D1A2E1EBE1327), U64(0xDA3A361B1C5157B1), U64(0xDCDD7D20903D0C25), U64(0x36833336D068F707), U64(0xCE68341F79893389), U64(0xAB9090168DD05F34), U64(0x43954B3252DC25E5), U64(0xB438C2B67F98E5E9), U64(0x10DCD78E3851A492), U64(0xDBC27AB5447822BF), U64(0x9B3CDB65F82CA382), U64(0xB67B7896167B4C84), U64(0xBFCED1B0048EAC50), U64(0xA9119B60369FFEBD), U64(0x1FFF7AC80904BF45), U64(0xAC12FB171817EEE7), U64(0xAF08DA9177DDA93D), U64(0x1B0CAB936E65C744), U64(0xB559EB1D04E5E932), U64(0xC37B45B3F8D6F2BA), U64(0xC3A9DC228CAAC9E9), U64(0xF3B8B6675A6507FF), U64(0x9FC477DE4ED681DA), U64(0x67378D8ECCEF96CB), U64(0x6DD856D94D259236), U64(0xA319CE15B0B4DB31), U64(0x073973751F12DD5E), U64(0x8A8E849EB32781A5), U64(0xE1925C71285279F5), U64(0x74C04BF1790C0EFE), U64(0x4DDA48153C94938A), U64(0x9D266D6A1CC0542C), U64(0x7440FB816508C4FE), U64(0x13328503DF48229F), U64(0xD6BF7BAEE43CAC40), U64(0x4838D65F6EF6748F), U64(0x1E152328F3318DEA), U64(0x8F8419A348F296BF), U64(0x72C8834A5957B511), U64(0xD7A023A73260B45C), U64(0x94EBC8ABCFB56DAE), U64(0x9FC10D0F989993E0), U64(0xDE68A2355B93CAE6), U64(0xA44CFE79AE538BBE), U64(0x9D1D84FCCE371425), U64(0x51D2B1AB2DDFB636), U64(0x2FD7E4B9E72CD38C), U64(0x65CA5B96B7552210), U64(0xDD69A0D8AB3B546D), U64(0x604D51B25FBF70E2), U64(0x73AA8A564FB7AC9E), U64(0x1A8C1E992B941148), U64(0xAAC40A2703D9BEA0), U64(0x764DBEAE7FA4F3A6), U64(0x1E99B96E70A9BE8B), U64(0x2C5E9DEB57EF4743), U64(0x3A938FEE32D29981), U64(0x26E6DB8FFDF5ADFE), U64(0x469356C504EC9F9D), U64(0xC8763C5B08D1908C), U64(0x3F6C6AF859D80055), U64(0x7F7CC39420A3A545), U64(0x9BFB227EBDF4C5CE), U64(0x89039D79D6FC5C5C), U64(0x8FE88B57305E2AB6), U64(0xA09E8C8C35AB96DE), U64(0xFA7E393983325753), U64(0xD6B6D0ECC617C699), U64(0xDFEA21EA9E7557E3), U64(0xB67C1FA481680AF8), U64(0xCA1E3785A9E724E5), U64(0x1CFC8BED0D681639), U64(0xD18D8549D140CAEA), U64(0x4ED0FE7E9DC91335), U64(0xE4DBF0634473F5D2), U64(0x1761F93A44D5AEFE), U64(0x53898E4C3910DA55), U64(0x734DE8181F6EC39A), U64(0x2680B122BAA28D97), U64(0x298AF231C85BAFAB), U64(0x7983EED3740847D5), U64(0x66C1A2A1A60CD889), U64(0x9E17E49642A3E4C1), U64(0xEDB454E7BADC0805), U64(0x50B704CAB602C329), U64(0x4CC317FB9CDDD023), U64(0x66B4835D9EAFEA22), U64(0x219B97E26FFC81BD), U64(0x261E4E4C0A333A9D), U64(0x1FE2CCA76517DB90), U64(0xD7504DFA8816EDBB), U64(0xB9571FA04DC089C8), U64(0x1DDC0325259B27DE), U64(0xCF3F4688801EB9AA), U64(0xF4F5D05C10CAB243), U64(0x38B6525C21A42B0E), U64(0x36F60E2BA4FA6800), U64(0xEB3593803173E0CE), U64(0x9C4CD6257C5A3603), U64(0xAF0C317D32ADAA8A), U64(0x258E5A80C7204C4B), U64(0x8B889D624D44885D), U64(0xF4D14597E660F855), U64(0xD4347F66EC8941C3), U64(0xE699ED85B0DFB40D), U64(0x2472F6207C2D0484), U64(0xC2A1E7B5B459AEB5), U64(0xAB4F6451CC1D45EC), U64(0x63767572AE3D6174), U64(0xA59E0BD101731A28), U64(0x116D0016CB948F09), U64(0x2CF9C8CA052F6E9F), U64(0x0B090A7560A968E3), U64(0xABEEDDB2DDE06FF1), U64(0x58EFC10B06A2068D), U64(0xC6E57A78FBD986E0), U64(0x2EAB8CA63CE802D7), U64(0x14A195640116F336), U64(0x7C0828DD624EC390), U64(0xD74BBE77E6116AC7), U64(0x804456AF10F5FB53), U64(0xEBE9EA2ADF4321C7), U64(0x03219A39EE587A30), U64(0x49787FEF17AF9924), U64(0xA1E9300CD8520548), U64(0x5B45E522E4B1B4EF), U64(0xB49C3B3995091A36), U64(0xD4490AD526F14431), U64(0x12A8F216AF9418C2), U64(0x001F837CC7350524), U64(0x1877B51E57A764D5), U64(0xA2853B80F17F58EE), U64(0x993E1DE72D36D310), U64(0xB3598080CE64A656), U64(0x252F59CF0D9F04BB), U64(0xD23C8E176D113600), U64(0x1BDA0492E7E4586E), U64(0x21E0BD5026C619BF), U64(0x3B097ADAF088F94E), U64(0x8D14DEDB30BE846E), U64(0xF95CFFA23AF5F6F4), U64(0x3871700761B3F743), U64(0xCA672B91E9E4FA16), U64(0x64C8E531BFF53B55), U64(0x241260ED4AD1E87D), U64(0x106C09B972D2E822), U64(0x7FBA195410E5CA30), U64(0x7884D9BC6CB569D8), U64(0x0647DFEDCD894A29), U64(0x63573FF03E224774), U64(0x4FC8E9560F91B123), U64(0x1DB956E450275779), U64(0xB8D91274B9E9D4FB), U64(0xA2EBEE47E2FBFCE1), U64(0xD9F1F30CCD97FB09), U64(0xEFED53D75FD64E6B), U64(0x2E6D02C36017F67F), U64(0xA9AA4D20DB084E9B), U64(0xB64BE8D8B25396C1), U64(0x70CB6AF7C2D5BCF0), U64(0x98F076A4F7A2322E), U64(0xBF84470805E69B5F), U64(0x94C3251F06F90CF3), U64(0x3E003E616A6591E9), U64(0xB925A6CD0421AFF3), U64(0x61BDD1307C66E300), U64(0xBF8D5108E27E0D48), U64(0x240AB57A8B888B20), U64(0xFC87614BAF287E07), U64(0xEF02CDD06FFDB432), U64(0xA1082C0466DF6C0A), U64(0x8215E577001332C8), U64(0xD39BB9C3A48DB6CF), U64(0x2738259634305C14), U64(0x61CF4F94C97DF93D), U64(0x1B6BACA2AE4E125B), U64(0x758F450C88572E0B), U64(0x959F587D507A8359), U64(0xB063E962E045F54D), U64(0x60E8ED72C0DFF5D1), U64(0x7B64978555326F9F), U64(0xFD080D236DA814BA), U64(0x8C90FD9B083F4558), U64(0x106F72FE81E2C590), U64(0x7976033A39F7D952), U64(0xA4EC0132764CA04B), U64(0x733EA705FAE4FA77), U64(0xB4D8F77BC3E56167), U64(0x9E21F4F903B33FD9), U64(0x9D765E419FB69F6D), U64(0xD30C088BA61EA5EF), U64(0x5D94337FBFAF7F5B), U64(0x1A4E4822EB4D7A59), U64(0x6FFE73E81B637FB3), U64(0xDDF957BC36D8B9CA), U64(0x64D0E29EEA8838B3), U64(0x08DD9BDFD96B9F63), U64(0x087E79E5A57D1D13), U64(0xE328E230E3E2B3FB), U64(0x1C2559E30F0946BE), U64(0x720BF5F26F4D2EAA), U64(0xB0774D261CC609DB), U64(0x443F64EC5A371195), U64(0x4112CF68649A260E), U64(0xD813F2FAB7F5C5CA), U64(0x660D3257380841EE), U64(0x59AC2C7873F910A3), U64(0xE846963877671A17), U64(0x93B633ABFA3469F8), U64(0xC0C0F5A60EF4CDCF), U64(0xCAF21ECD4377B28C), U64(0x57277707199B8175), U64(0x506C11B9D90E8B1D), U64(0xD83CC2687A19255F), U64(0x4A29C6465A314CD1), U64(0xED2DF21216235097), U64(0xB5635C95FF7296E2), U64(0x22AF003AB672E811), U64(0x52E762596BF68235), U64(0x9AEBA33AC6ECC6B0), U64(0x944F6DE09134DFB6), U64(0x6C47BEC883A7DE39), U64(0x6AD047C430A12104), U64(0xA5B1CFDBA0AB4067), U64(0x7C45D833AFF07862), U64(0x5092EF950A16DA0B), U64(0x9338E69C052B8E7B), U64(0x455A4B4CFE30E3F5), U64(0x6B02E63195AD0CF8), U64(0x6B17B224BAD6BF27), U64(0xD1E0CCD25BB9C169), U64(0xDE0C89A556B9AE70), U64(0x50065E535A213CF6), U64(0x9C1169FA2777B874), U64(0x78EDEFD694AF1EED), U64(0x6DC93D9526A50E68), U64(0xEE97F453F06791ED), U64(0x32AB0EDB696703D3), U64(0x3A6853C7E70757A7), U64(0x31865CED6120F37D), U64(0x67FEF95D92607890), U64(0x1F2B1D1F15F6DC9C), U64(0xB69E38A8965C6B65), U64(0xAA9119FF184CCCF4), U64(0xF43C732873F24C13), U64(0xFB4A3D794A9A80D2), U64(0x3550C2321FD6109C), U64(0x371F77E76BB8417E), U64(0x6BFA9AAE5EC05779), U64(0xCD04F3FF001A4778), U64(0xE3273522064480CA), U64(0x9F91508BFFCFC14A), U64(0x049A7F41061A9E60), U64(0xFCB6BE43A9F2FE9B), U64(0x08DE8A1C7797DA9B), U64(0x8F9887E6078735A1), U64(0xB5B4071DBFC73A66), U64(0x230E343DFBA08D33), U64(0x43ED7F5A0FAE657D), U64(0x3A88A0FBBCB05C63), U64(0x21874B8B4D2DBC4F), U64(0x1BDEA12E35F6A8C9), U64(0x53C065C6C8E63528), U64(0xE34A1D250E7A8D6B), U64(0xD6B04D3B7651DD7E), U64(0x5E90277E7CB39E2D), U64(0x2C046F22062DC67D), U64(0xB10BB459132D0A26), U64(0x3FA9DDFB67E2F199), U64(0x0E09B88E1914F7AF), U64(0x10E8B35AF3EEAB37), U64(0x9EEDECA8E272B933), U64(0xD4C718BC4AE8AE5F), U64(0x81536D601170FC20), U64(0x91B534F885818A06), U64(0xEC8177F83F900978), U64(0x190E714FADA5156E), U64(0xB592BF39B0364963), U64(0x89C350C893AE7DC1), U64(0xAC042E70F8B383F2), U64(0xB49B52E587A1EE60), U64(0xFB152FE3FF26DA89), U64(0x3E666E6F69AE2C15), U64(0x3B544EBE544C19F9), U64(0xE805A1E290CF2456), U64(0x24B33C9D7ED25117), U64(0xE74733427B72F0C1), U64(0x0A804D18B7097475), U64(0x57E3306D881EDB4F), U64(0x4AE7D6A36EB5DBCB), U64(0x2D8D5432157064C8), U64(0xD1E649DE1E7F268B), U64(0x8A328A1CEDFE552C), U64(0x07A3AEC79624C7DA), U64(0x84547DDC3E203C94), U64(0x990A98FD5071D263), U64(0x1A4FF12616EEFC89), U64(0xF6F7FD1431714200), U64(0x30C05B1BA332F41C), U64(0x8D2636B81555A786), U64(0x46C9FEB55D120902), U64(0xCCEC0A73B49C9921), U64(0x4E9D2827355FC492), U64(0x19EBB029435DCB0F), U64(0x4659D2B743848A2C), U64(0x963EF2C96B33BE31), U64(0x74F85198B05A2E7D), U64(0x5A0F544DD2B1FB18), U64(0x03727073C2E134B1), U64(0xC7F6AA2DE59AEA61), U64(0x352787BAA0D7C22F), U64(0x9853EAB63B5E0B35), U64(0xABBDCDD7ED5C0860), U64(0xCF05DAF5AC8D77B0), U64(0x49CAD48CEBF4A71E), U64(0x7A4C10EC2158C4A6), U64(0xD9E92AA246BF719E), U64(0x13AE978D09FE5557), U64(0x730499AF921549FF), U64(0x4E4B705B92903BA4), U64(0xFF577222C14F0A3A), U64(0x55B6344CF97AAFAE), U64(0xB862225B055B6960), U64(0xCAC09AFBDDD2CDB4), U64(0xDAF8E9829FE96B5F), U64(0xB5FDFC5D3132C498), U64(0x310CB380DB6F7503), U64(0xE87FBB46217A360E), U64(0x2102AE466EBB1148), U64(0xF8549E1A3AA5E00D), U64(0x07A69AFDCC42261A), U64(0xC4C118BFE78FEAAE), U64(0xF9F4892ED96BD438), U64(0x1AF3DBE25D8F45DA), U64(0xF5B4B0B0D2DEEEB4), U64(0x962ACEEFA82E1C84), U64(0x046E3ECAAF453CE9), U64(0xF05D129681949A4C), U64(0x964781CE734B3C84), U64(0x9C2ED44081CE5FBD), U64(0x522E23F3925E319E), U64(0x177E00F9FC32F791), U64(0x2BC60A63A6F3B3F2), U64(0x222BBFAE61725606), U64(0x486289DDCC3D6780), U64(0x7DC7785B8EFDFC80), U64(0x8AF38731C02BA980), U64(0x1FAB64EA29A2DDF7), U64(0xE4D9429322CD065A), U64(0x9DA058C67844F20C), U64(0x24C0E332B70019B0), U64(0x233003B5A6CFE6AD), U64(0xD586BD01C5C217F6), U64(0x5E5637885F29BC2B), U64(0x7EBA726D8C94094B), U64(0x0A56A5F0BFE39272), U64(0xD79476A84EE20D06), U64(0x9E4C1269BAA4BF37), U64(0x17EFEE45B0DEE640), U64(0x1D95B0A5FCF90BC6), U64(0x93CBE0B699C2585D), U64(0x65FA4F227A2B6D79), U64(0xD5F9E858292504D5), U64(0xC2B5A03F71471A6F), U64(0x59300222B4561E00), U64(0xCE2F8642CA0712DC), U64(0x7CA9723FBB2E8988), U64(0x2785338347F2BA08), U64(0xC61BB3A141E50E8C), U64(0x150F361DAB9DEC26), U64(0x9F6A419D382595F4), U64(0x64A53DC924FE7AC9), U64(0x142DE49FFF7A7C3D), U64(0x0C335248857FA9E7), U64(0x0A9C32D5EAE45305), U64(0xE6C42178C4BBB92E), U64(0x71F1CE2490D20B07), U64(0xF1BCC3D275AFE51A), U64(0xE728E8C83C334074), U64(0x96FBF83A12884624), U64(0x81A1549FD6573DA5), U64(0x5FA7867CAF35E149), U64(0x56986E2EF3ED091B), U64(0x917F1DD5F8886C61), U64(0xD20D8C88C8FFE65F), U64(0x31D71DCE64B2C310), U64(0xF165B587DF898190), U64(0xA57E6339DD2CF3A0), U64(0x1EF6E6DBB1961EC9), U64(0x70CC73D90BC26E24), U64(0xE21A6B35DF0C3AD7), U64(0x003A93D8B2806962), U64(0x1C99DED33CB890A1), U64(0xCF3145DE0ADD4289), U64(0xD0E4427A5514FB72), U64(0x77C621CC9FB3A483), U64(0x67A34DAC4356550B), U64(0xF8D626AAAF278509), }; uint64 *RandomPiece =Random64; uint64 *RandomCastle =Random64+768; uint64 *RandomEnPassant =Random64+772; uint64 *RandomTurn =Random64+780; uint64 hash (int moveNr) { int r, f, p_enc, squareNr, pieceGroup; uint64 key=0, holdingsKey=0, Zobrist; VariantClass v = gameInfo.variant; switch(v) { case VariantNormal: case VariantFischeRandom: // compatible with normal case VariantNoCastle: case VariantXiangqi: // for historic reasons; does never collide anyway because of other King type break; case VariantGiveaway: // in opening same as suicide key += VariantSuicide; break; case VariantGothic: // these are special cases of CRC, and can share book case VariantCapablanca: v = VariantCapaRandom; default: key += v; // variant type incorporated in key to allow mixed books without collisions } for(f=0; f= (int)BlackPawn) ? (int)BlackPawn :(int)WhitePawn; if(j >= WhitePBishop && j != WhiteKing) promoted++, j -= WhiteTokin; if(j > (int)WhiteQueen) j++; // make space for King if(j > (int) WhiteKing) j = (int)WhiteQueen + 1; p_enc = 2*j + ((int)p < (int)BlackPawn); // holdings squares get nmbers immediately after board; first left, then right holdings if(f == BOARD_LEFT-2) squareNr = (BOARD_RGHT - BOARD_LEFT)*BOARD_HEIGHT + r; else if(f == BOARD_RGHT+1) squareNr = (BOARD_RGHT - BOARD_LEFT + 1)*BOARD_HEIGHT + r; else squareNr = (BOARD_RGHT - BOARD_LEFT)*r + (f - BOARD_LEFT); // note that in normal Chess squareNr < 64 and p_enc < 12. The following code // maps other pieces and squares in this range, and then modify the corresponding // Zobrist random by rotating its bitpattern according to what the piece really was. pieceGroup = p_enc / 12; p_enc = p_enc % 12; Zobrist = RandomPiece[64*p_enc + (squareNr & 63)]; if(pieceGroup & 4) Zobrist *= 987654321; switch(pieceGroup & 3) { case 1: // pieces 5-10 (FEACWM) Zobrist = (Zobrist << 16) ^ (Zobrist >> 48); break; case 2: // pieces 11-16 (OHIJGD) Zobrist = (Zobrist << 32) ^ (Zobrist >> 32); break; case 3: // pieces 17-20 (VLSU) Zobrist = (Zobrist << 48) ^ (Zobrist >> 16); break; } if(promoted) Zobrist ^= 123456789*RandomPiece[squareNr & 63]; if(squareNr & 64) Zobrist = (Zobrist << 8) ^ (Zobrist >> 56); if(squareNr & 128) Zobrist = (Zobrist << 4) ^ (Zobrist >> 60); // holdings have separate (additive) key, to encode presence of multiple pieces on same square if(f == BOARD_LEFT-2) holdingsKey += Zobrist * boards[moveNr][r][f+1]; else if(f == BOARD_RGHT+1) holdingsKey += Zobrist * boards[moveNr][r][f-1]; else key ^= Zobrist; } } } if(boards[moveNr][CASTLING][2] != NoRights) { if(boards[moveNr][CASTLING][0] != NoRights) key^=RandomCastle[0]; if(boards[moveNr][CASTLING][1] != NoRights) key^=RandomCastle[1]; } if(boards[moveNr][CASTLING][5] != NoRights) { if(boards[moveNr][CASTLING][3] != NoRights) key^=RandomCastle[2]; if(boards[moveNr][CASTLING][4] != NoRights) key^=RandomCastle[3]; } f = boards[moveNr][EP_STATUS]; if(f >= 0 && f < 8){ if(!WhiteOnMove(moveNr)){ // the test for neighboring Pawns might not be needed, // as epStatus already kept track of it, but better safe than sorry. if((f>0 && boards[moveNr][3][f-1]==BlackPawn)|| (f<7 && boards[moveNr][3][f+1]==BlackPawn)){ key^=RandomEnPassant[f]; } }else{ if((f>0 && boards[moveNr][4][f-1]==WhitePawn)|| (f<7 && boards[moveNr][4][f+1]==WhitePawn)){ key^=RandomEnPassant[f]; } } } if(WhiteOnMove(moveNr)){ key^=RandomTurn[0]; } return key + holdingsKey; } #define MOVE_BUF 100 // fs routines read from memory buffer if no file specified static unsigned char *memBuf, *memPtr; static int bufSize; Boolean mcMode; int fsseek (FILE *f, int n, int mode) { if(f) return fseek(f, n, mode); if(mode == SEEK_SET) memPtr = memBuf + n; else if(mode == SEEK_END) memPtr = memBuf + 16*bufSize + n; return memPtr < memBuf || memPtr > memBuf + 16*bufSize; } int fstell (FILE *f) { if(f) return ftell(f); return memPtr - memBuf; } int fsgetc (FILE *f) { if(f) return fgetc(f); if(memPtr >= memBuf + 16*bufSize) return EOF; return *memPtr++ ; } int int_from_file (FILE *f, int l, uint64 *r) { int i,c; for(i=0;ikey=r; ret=int_from_file(f,2,&r); if(ret) return 1; entry->move=r; ret=int_from_file(f,2,&r); if(ret) return 1; entry->weight=r; ret=int_from_file(f,2,&r); if(ret) return 1; entry->learnCount=r; ret=int_from_file(f,2,&r); if(ret) return 1; entry->learnPoints=r; return 0; } int find_key (FILE *f, uint64 key, entry_t *entry) { int first, last, middle; entry_t last_entry,middle_entry; first=-1; if(fsseek(f,-16,SEEK_END)){ *entry=entry_none; entry->key=key+1; //hack return -1; } last=fstell(f)/16; entry_from_file(f,&last_entry); while(1){ if(last-first==1){ *entry=last_entry; return last; } middle=(first+last)/2; fsseek(f,16*middle,SEEK_SET); entry_from_file(f,&middle_entry); if(key<=middle_entry.key){ last=middle; last_entry=middle_entry; }else{ first=middle; } } } static int xStep[] = { 0, 1, 1, 1, 0,-1,-1,-1 }; static int yStep[] = { 1, 1, 0,-1,-1,-1, 0, 1 }; void move_to_string (char move_s[20], uint16 move) { int f,fr,ff,t,tr,tf,p; int width = BOARD_RGHT - BOARD_LEFT, size; // allow for alternative board formats size = width * BOARD_HEIGHT; p = move / (size*size); move = move % (size*size); f = move / size; fr = f / width; ff = f % width; t = move % size; tr = t / width; tf = t % width; snprintf(move_s, 9, "%c%d%c%d", ff + 'a', fr + 1 - (BOARD_HEIGHT == 10), tf + 'a', tr + 1 - (BOARD_HEIGHT == 10)); if(IS_SHOGI(gameInfo.variant) && p) { if(p == 2) p = 10; // Lion moves, for boards so big that 10 is out of range else if(p != 7) p = 8; // use '+' for all others that do not explicitly defer } // kludge: encode drops as special promotion code if(gameInfo.holdingsSize && p == 9) { move_s[0] = f + '@'; // from square encodes piece type move_s[1] = '@'; // drop symbol p = 0; } else if(p == 10) { // decode Lion move int i = t & 7, j = t >> 3 & 7; tf = ff + xStep[i] + xStep[j]; tr = fr + yStep[i] + yStep[j]; // calculate true to-square snprintf(move_s, 20, "%c%d%c%d,%c%d%c%d", ff + 'a', fr + 1 - (BOARD_HEIGHT == 10), ff + xStep[i] + 'a', fr + yStep[i] + 1 - (BOARD_HEIGHT == 10), ff + xStep[i] + 'a', fr + yStep[i] + 1 - (BOARD_HEIGHT == 10), tf + 'a', tr + 1 - (BOARD_HEIGHT == 10) ); p = 0; } // add promotion piece, if any if(p){ int len = strlen(move_s); move_s[len] = promote_pieces[p]; move_s[len+1] = '\0'; } if(gameInfo.variant != VariantNormal) return; // correct FRC-style castlings in variant normal. // [HGM] This is buggy code! e1h1 could very well be a normal R or Q move. if(!strcmp(move_s,"e1h1")){ safeStrCpy(move_s,"e1g1", 6); }else if(!strcmp(move_s,"e1a1")){ safeStrCpy(move_s,"e1c1", 6); }else if(!strcmp(move_s,"e8h8")){ safeStrCpy(move_s,"e8g8", 6); }else if(!strcmp(move_s,"e8a8")){ safeStrCpy(move_s,"e8c8", 6); } } int GetBookMoves (FILE *f, int moveNr, entry_t entries[], int max) { // retrieve all entries for given position from book in 'entries', return number. entry_t entry; int offset; uint64 key; int count; int ret; key = hash(moveNr); if(appData.debugMode) fprintf(debugFP, "book key = %08x%08x\n", (unsigned int)(key>>32), (unsigned int)key); offset=find_key(f, key, &entry); if(entry.key != key) { return FALSE; } entries[0] = entry; count=1; fsseek(f, 16*(offset+1), SEEK_SET); while(1){ ret=entry_from_file(f, &entry); if(ret){ break; } if(entry.key != key){ break; } if(count == max) break; entries[count++] = entry; } return count; } static int dirty; int ReadFromBookFile (int moveNr, char *book, entry_t entries[]) { // retrieve all entries for given position from book in 'entries', return number. static FILE *f = NULL; static char curBook[MSG_SIZ]; if(book == NULL) return -1; if(dirty) { if(f) fclose(f); dirty = 0; f = NULL; } if(!f || strcmp(book, curBook)){ // keep book file open until book changed strncpy(curBook, book, MSG_SIZ); if(f) fclose(f); f = fopen(book,"rb"); } if(!f){ DisplayError(_("Polyglot book not valid"), 0); appData.usePolyglotBook = FALSE; return -1; } return GetBookMoves(f, moveNr, entries, MOVE_BUF); } // next three made into subroutines to facilitate future changes in storage scheme (e.g. 2 x 3 bytes) static int wins(entry_t *e) { return e->learnPoints; } static int losses(entry_t *e) { return e->learnCount; } static void CountMove (entry_t *e, int result) { switch(result) { case 0: e->learnCount ++; break; case 1: e->learnCount ++; // count draw as win + loss case 2: e->learnPoints ++; break; } } #define MERGESIZE 2048 #define HASHSIZE 1024*1024*4 entry_t *memBook, *hashTab, *mergeBuf; int bookSize=1, mergeSize=1, mask = HASHSIZE-1; void InitMemBook () { static int initDone = FALSE; if(initDone) return; memBook = (entry_t *) calloc(1024*1024, sizeof(entry_t)); hashTab = (entry_t *) calloc(HASHSIZE, sizeof(entry_t)); mergeBuf = (entry_t *) calloc(MERGESIZE+5, sizeof(entry_t)); memBook[0].key = -1LL; mergeBuf[0].key = -1LL; initDone = TRUE; } char * MCprobe (int moveNr) { int count, count2, games, i, choice=0; entry_t entries[MOVE_BUF]; float nominal[MOVE_BUF], tot, deficit, max, min; static char move_s[6]; InitMemBook(); memBuf = (unsigned char*) memBook; bufSize = bookSize; // in MC mode book resides in memory count = GetBookMoves(NULL, moveNr, entries, MOVE_BUF); if(count < 0) count = 0; // don't care about miss yet memBuf = (unsigned char*) mergeBuf; bufSize = mergeSize; // there could be moves still waiting to be merged count2 = count + GetBookMoves(NULL, moveNr, entries+count, MOVE_BUF - count); if(appData.debugMode) fprintf(debugFP, "MC probe: %d/%d (%d+%d)\n", count, count2,bookSize,mergeSize); if(!count2) return NULL; tot = games = 0; for(i=0; i max) max = deficit, choice = i; if(deficit < min) min = deficit; } // note that a single move will never be underplayed if(max - min > 0.5*sqrt(nominal[choice])) { // if one of the listed moves is significantly under-played, play it now. move_to_string(move_s, entries[choice].move); if(appData.debugMode) fprintf(debugFP, "book move field = %d\n", entries[choice].move); return move_s; } return NULL; // otherwise fake book miss to force engine think, hoping for hitherto unplayed move. } char *ProbeBook (int moveNr, char *book) { // entry_t entries[MOVE_BUF]; int count; int i, j; static char move_s[6]; int total_weight; if(moveNr >= 2*appData.bookDepth) return NULL; if(mcMode) return MCprobe(moveNr); if((count = ReadFromBookFile(moveNr, book, entries)) <= 0) return NULL; // no book, or no hit if(appData.bookStrength != 50) { // transform weights double power = 0, maxWeight = 0.0; if(appData.bookStrength) power = (100.-appData.bookStrength)/appData.bookStrength; for(i=0; i maxWeight) maxWeight = entries[i].weight; for(i=0; i 0) entries[i].weight = appData.bookStrength || weight == 1.0 ? 1e4*exp(power * log(weight)) + 0.5 : 0.0; } } total_weight = 0; for(i=0; i> 12; // create random < total_weight total_weight = 0; for(i=0; i j) break; } if(i >= count) DisplayFatalError(_("Book Fault"), 0, 1); // safety catch, cannot happen move_to_string(move_s, entries[i].move); if(appData.debugMode) fprintf(debugFP, "book move field = %d\n", entries[i].move); return move_s; } extern char yy_textstr[]; entry_t lastEntries[MOVE_BUF]; char * MovesToText(int count, entry_t *entries) { int i, totalWeight = 0; char algMove[12]; char *p = (char*) malloc(40*count+1); for(i=0; i= 4) { CoordsToAlgebraic(boards[currentMove], PosFlags(currentMove), i1-ONE+'0', c1-AAA, i2-ONE+'0', c2-AAA, c3, algMove); } buf[0] = NULLCHAR; if(entries[i].learnCount || entries[i].learnPoints) snprintf(buf, MSG_SIZ, " {%d/%d}", entries[i].learnPoints, entries[i].learnCount); snprintf(p+strlen(p), 40, "%5.1f%% %5d %s%s\n", 100*entries[i].weight/(totalWeight+0.001), entries[i].weight, algMove, buf); //lastEntries[i] = entries[i]; } return p; } static int CoordsToMove (int fromX, int fromY, int toX, int toY, char promoChar) { int i, width = BOARD_RGHT - BOARD_LEFT; int to = toX - BOARD_LEFT + toY * width; int from = fromX - BOARD_LEFT + fromY * width; for(i=0; promote_pieces[i]; i++) if(promote_pieces[i] == promoChar) break; if(!promote_pieces[i]) i = 0; else if(i == 9 && gameInfo.variant == VariantChu) i = 1; // on 12x12 only 3 promotion codes available, so use 1 to indicate promotion if(fromY == DROP_RANK) i = 9, from = ToUpper(PieceToChar(fromX)) - '@'; if(killX >= 0) { // multi-leg move int dx = killX - fromX, dy = killY - fromY; for(i=0; i<8; i++) if(dx == xStep[i] && dy == yStep[i]) { int j; dx = toX - killX; dy = toY - killY; for(j=0; j<8; j++) if(dx == xStep[j] && dy == yStep[j]) { // special encoding in to-square, with promoType = 2. Assumes board >= 64 squares! return i + 8*j + (2 * width * BOARD_HEIGHT + from) * width * BOARD_HEIGHT; } } i = 0; // if not a valid Lion move, ignore kill-square and promoChar } return to + (i * width * BOARD_HEIGHT + from) * width * BOARD_HEIGHT; } int TextToMoves (char *text, int moveNum, entry_t *entries) { int i, w, count=0; uint64 hashKey = hash(moveNum); int fromX, fromY, toX, toY; ChessMove moveType; char promoChar, valid; float dummy; entries[0].key = hashKey; // make sure key is returned even if no moves while((i=sscanf(text, "%f%%%d", &dummy, &w))==2 || (i=sscanf(text, "%d", &w))==1) { if(i == 2) text = strchr(text, '%') + 1; // skip percentage if(w == 1) text = strstr(text, "1 ") + 2; // skip weight that could be recognized as move number one valid = ParseOneMove(text, moveNum, &moveType, &fromX, &fromY, &toX, &toY, &promoChar); text = strstr(text, yy_textstr) + strlen(yy_textstr); // skip what we parsed if(!valid || moveType != NormalMove && moveType != WhiteDrop && moveType != BlackDrop && moveType != FirstLeg && moveType != WhitePromotion && moveType != BlackPromotion && moveType != WhiteCapturesEnPassant && moveType != BlackCapturesEnPassant && moveType != WhiteKingSideCastle && moveType != BlackKingSideCastle && moveType != WhiteQueenSideCastle && moveType != BlackQueenSideCastle && moveType != WhiteNonPromotion && moveType != BlackNonPromotion) continue; if(*text == ' ' && sscanf(text+1, "{%hd/%hd}", &entries[count].learnPoints, &entries[count].learnCount) == 2) { text = strchr(text+1, '}') + 1; } else { entries[count].learnPoints = 0; entries[count].learnCount = 0; } entries[count].move = CoordsToMove(fromX, fromY, toX, toY, promoChar); killX = killY = -1; entries[count].key = hashKey; entries[count].weight = w; count++; } return count; } Boolean bookUp; int currentCount; Boolean DisplayBook (int moveNr) { entry_t entries[MOVE_BUF]; int count; char *p; if(!bookUp) return FALSE; count = currentCount = ReadFromBookFile(moveNr, appData.polyglotBook, entries); if(count < 0) return FALSE; p = MovesToText(count, entries); EditTagsPopUp(p, NULL); free(p); addToBookFlag = FALSE; return TRUE; } void EditBookEvent() { bookUp = TRUE; bookUp = DisplayBook(currentMove); } void int_to_file (FILE *f, int l, uint64 r) { int i; for(i=l-1;i>=0;i--) fputc(r>>8*i & 255, f); } void entry_to_file (FILE *f, entry_t *entry) { int_to_file(f,8,entry->key); int_to_file(f,2,entry->move); int_to_file(f,2,entry->weight); int_to_file(f,2,entry->learnCount); int_to_file(f,2,entry->learnPoints); } char buf1[4096], buf2[4096]; void SaveToBook (char *text) { entry_t entries[MOVE_BUF], entry; int count = TextToMoves(text, currentMove, entries); int offset, i, len1=0, len2, readpos=0, writepos=0; FILE *f; if(!count && !currentCount) return; f=fopen(appData.polyglotBook, "rb+"); if(!f){ DisplayError(_("Polyglot book not valid"), 0); return; } offset=find_key(f, entries[0].key, &entry); if(entries[0].key != entry.key && currentCount) { DisplayError(_("Hash keys are different"), 0); fclose(f); return; } if(count != currentCount) { readpos = 16*(offset + currentCount); writepos = 16*(offset + count); fsseek(f, readpos, SEEK_SET); readpos += len1 = fread(buf1, 1, 4096 - 16*currentCount, f); // salvage some entries immediately behind change } fsseek(f, 16*(offset), SEEK_SET); for(i=0; i writepos) { fsseek(f, readpos, SEEK_SET); readpos += len1 = fread(buf1, 1, 4096, f); } else len1 = 0; // wrote already past old EOF fsseek(f, writepos, SEEK_SET); fwrite(buf2, 1, len2, f); writepos += len2; } while(len1); } dirty = 1; fclose(f); } void NewEntry (entry_t *e, uint64 key, int move, int result) { e->key = key; e->move = move; e->learnPoints = 0; e->learnCount = 0; CountMove(e, result); } void Merge () { int i; if(appData.debugMode) fprintf(debugFP, "book merge %d moves (old size %d)\n", mergeSize, bookSize); bookSize += --mergeSize; for(i=bookSize-1; mergeSize; i--) { while(mergeSize && (i < mergeSize || mergeBuf[mergeSize-1].key >= memBook[i-mergeSize].key)) memBook[i--] = mergeBuf[--mergeSize]; if(i < 0) break; memBook[i] = memBook[i-mergeSize]; } if(mergeSize) DisplayFatalError("merge error", 0, 0); // impossible mergeSize = 1; mergeBuf[0].key = -1LL; } void AddToBook (int moveNr, int result) { entry_t entry; int offset, start, move; uint64 key; int i, j, fromY, toY; char fromX, toX, promo; extern char moveList[][MOVE_LEN]; if(!moveList[moveNr][0] || moveList[moveNr][0] == '\n') return; // could be terminal position if(appData.debugMode) fprintf(debugFP, "add move %d to book %s", moveNr, moveList[moveNr]); // calculate key and book representation of move key = hash(moveNr); if(moveList[moveNr][1] == '@') { sscanf(moveList[moveNr], "%c@%c%d", &promo, &toX, &toY); fromX = CharToPiece(WhiteOnMove(moveNr) ? ToUpper(promo) : ToLower(promo)); fromY = DROP_RANK; promo = NULLCHAR; } else sscanf(moveList[moveNr], "%c%d%c%d%c", &fromX, &fromY, &toX, &toY, &promo), fromX -= AAA, fromY -= ONE - '0'; move = CoordsToMove(fromX, fromY, toX-AAA, toY-ONE+'0', promo); // if move already in book, just add count memBuf = (unsigned char*) memBook; bufSize = bookSize; // in MC mode book resides in memory offset = find_key(NULL, key, &entry); while(memBook[offset].key == key) { if(memBook[offset].move == move) { CountMove(memBook+offset, result); return; } else offset++; } // move did not occur in the main book memBuf = (unsigned char*) mergeBuf; bufSize = mergeSize; // it could be amongst moves still waiting to be merged start = offset = find_key(NULL, key, &entry); while(mergeBuf[offset].key == key) { if(mergeBuf[offset].move == move) { if(appData.debugMode) fprintf(debugFP, "found in book merge buf @ %d\n", offset); CountMove(mergeBuf+offset, result); return; } else offset++; } if(start != offset) { // position was in mergeBuf, but move is new if(appData.debugMode) fprintf(debugFP, "add in book merge buf @ %d\n", offset); for(i=mergeSize++; i>offset; i--) mergeBuf[i] = mergeBuf[i-1]; // make room NewEntry(mergeBuf+offset, key, move, result); return; } // position was not in mergeBuf; look in hash table i = (key & mask); offset = -1; while(hashTab[i].key) { // search in hash table (necessary because sought item could be re-hashed) if(hashTab[i].key == 1 && offset < 0) offset = i; // remember first invalidated entry we pass if(!((hashTab[i].key - key) & ~1)) { // hit if(hashTab[i].move == move) { CountMove(hashTab+i, result); for(j=mergeSize++; j>start; j--) mergeBuf[j] = mergeBuf[j-1]; } else { // position already in hash now occurs with different move; move both moves to mergeBuf for(j=mergeSize+1; j>start+1; j--) mergeBuf[j] = mergeBuf[j-2]; NewEntry(mergeBuf+start+1, key, move, result); mergeSize += 2; } hashTab[i].key = 1; // kludge to invalidate hash entry mergeBuf[start] = hashTab[i]; mergeBuf[start].key = key; if(mergeSize >= MERGESIZE) Merge(); return; } i = i+1 & mask; // wrap! } // position did not yet occur in hash table. Put it there if(offset < 0) offset = i; NewEntry(hashTab+offset, key, move, result); if(appData.debugMode) fprintf(debugFP, "book hash @ %d (%d-%d)\n", offset, hashTab[offset].learnPoints, hashTab[offset].learnCount); } void AddGameToBook (int always) { int i, result; if(!mcMode && !always) return; InitMemBook(); switch(gameInfo.result) { case GameIsDrawn: result = 1; break; case WhiteWins: result = 2; break; case BlackWins: result = 0; break; default: return; // don't treat games with unknown result } if(appData.debugMode) fprintf(debugFP, "add game to book (%d-%d)\n", backwardMostMove, forwardMostMove); for(i=backwardMostMove; i text && start[-1] != ' ' && start[-1] != '\t') start--; while(*end && *++end != ' ' && *end != '\n') ; *end = NULLCHAR; // find clicked word if(start != end) TypeInDoneEvent(start); // fake it was typed in move type-in } void FlushBook () { FILE *f; int i; InitMemBook(); Merge(); // flush merge buffer to memBook if(f = fopen(appData.polyglotBook, "wb")) { for(i=0; i #endif extern GameInfo gameInfo; /* ICS vars used with backend.c and zippy.c */ enum ICS_TYPE { ICS_GENERIC, ICS_ICC, ICS_FICS, ICS_CHESSNET /* not really supported */ }; enum ICS_TYPE ics_type; /* pgntags.c prototypes */ char *PGNTags P((GameInfo *)); void PrintPGNTags P((FILE *f, GameInfo *)); int ParsePGNTag P((char *, GameInfo *)); char *PGNResult P((ChessMove result)); /* gamelist.c prototypes */ /* A game node in the double linked list of games. */ typedef struct XB_ListGame { ListNode node; int number; int position; int moves; unsigned long offset; /* Byte offset of game within file. */ GameInfo gameInfo; /* Note that some entries may be NULL. */ } ListGame; extern int border; extern int doubleClick; extern int storedGames; extern int opponentKibitzes; extern ChessSquare gatingPiece; extern List gameList; extern int lastLoadGameNumber; void ClearGameInfo P((GameInfo *)); int GameListBuild P((FILE *)); void GameListInitGameInfo P((GameInfo *)); char *GameListLine P((int, GameInfo *)); char * GameListLineFull P(( int, GameInfo *)); void InitSearch P((void)); int GameContainsPosition P((FILE *f, ListGame *lg)); void GLT_TagsToList P(( char * tags )); void GLT_ParseList P((void)); int NamesToList P((char *name, char **engines, char **mnemonics, char *group)); int CreateTourney P((char *name)); char *MakeName P((char *templ)); void SwapEngines P((int n)); void Substitute P((char *participants, int expunge)); extern char* StripHighlight P((char *)); /* returns static data */ extern char* StripHighlightAndTitle P((char *)); /* returns static data */ extern void ics_update_width P((int new_width)); extern Boolean set_cont_sequence P((char *new_seq)); extern int wrap P((char *dest, char *src, int count, int width, int *lp)); int Explode P((Board board, int fromX, int fromY, int toX, int toY)); typedef enum { CheckBox, ComboBox, TextBox, Button, Spin, ResetButton, SaveButton, ListBox, Graph, PopUp, FileName, PathName, Slider, Message, Fractional, Label, Icon, BoxBegin, BoxEnd, BarBegin, BarEnd, DropDown, Break, EndMark, Skip } Control; typedef struct XB_OPT { // [HGM] options: descriptor of UCI-style option int value; // current setting, starts as default int min; // Also used for flags int max; void *handle; // for use by front end void *target; // for use by front end char *textValue; // points to beginning of text value in name field char **choice; // points to array of combo choices in cps->combo Control type; char *name; // holds both option name and text value (in allocated memory) char **font; } Option; typedef struct XB_CPS { char *which; int maybeThinking; ProcRef pr; InputSourceRef isr; char *twoMachinesColor; /* "white\n" or "black\n" */ char *program; char *host; char *dir; struct XB_CPS *other; char *initString; char *computerString; int sendTime; /* 0=don't, 1=do, 2=test */ int sendDrawOffers; int useSigint; int useSigterm; int offeredDraw; /* countdown */ int reuse; int useSetboard; /* 0=use "edit"; 1=use "setboard" */ int extendedEdit;/* 1=also set holdings with "edit" */ int useSAN; /* 0=use coordinate notation; 1=use SAN */ int usePing; /* 0=not OK to use ping; 1=OK */ int lastPing; int lastPong; int usePlayother;/* 0=not OK to use playother; 1=OK */ int useColors; /* 0=avoid obsolete white/black commands; 1=use them */ int useUsermove; /* 0=just send move; 1=send "usermove move" */ int sendICS; /* 0=don't use "ics" command; 1=do */ int sendName; /* 0=don't use "name" command; 1=do */ int sdKludge; /* 0=use "sd DEPTH" command; 1=use "depth\nDEPTH" */ int stKludge; /* 0=use "st TIME" command; 1=use "level 1 TIME" */ int excludeMoves;/* 0=don't use "exclude" command; 1=do */ char *tidy; int matchWins; char *variants; int analysisSupport; int analyzing; int protocolVersion; int initDone; int pseudo; /* Added by Tord: */ int useFEN960; /* 0=use "KQkq" style FENs, 1=use "HAha" style FENs */ int useOOCastle; /* 0="O-O" notation for castling, 1="king capture rook" notation */ /* End of additions by Tord */ int scoreIsAbsolute; /* [AS] 0=don't know (standard), 1=score is always from white side */ int isUCI; /* [AS] 0=no (Winboard), 1=UCI (requires Polyglot) */ int hasOwnBookUCI; /* [AS] 0=use GUI or Polyglot book, 1=has own book */ /* [HGM] time odds */ float timeOdds; /* factor through which we divide time for this engine */ int debug; /* [HGM] ignore engine debug lines starting with '#' */ int maxNrOfSessions; /* [HGM] secondary TC: max args in 'level' command */ int accumulateTC; /* [HGM] secondary TC: how to handle extra sessions */ int drawDepth; /* [HGM] egbb: search depth to play egbb draws */ int nps; /* [HGM] nps: factor for node count to replace time */ int supportsNPS; int alphaRank; /* [HGM] shogi: engine uses shogi-type coordinates */ int maxCores; /* [HGM] SMP: engine understands cores command */ int memSize; /* [HGM] memsize: engine understands memory command */ char *egtFormats; /* [HGM] EGT: supported tablebase formats */ int bookSuspend; /* [HGM] book: go was deferred because of book hit */ int pause; /* [HGM] pause: 1=supports it, 2=actually paused */ int highlight; /* [HGM] engine wants to get lift and put commands */ int nrOptions; /* [HGM] options: remembered option="..." features */ #define MAX_OPTIONS 200 Option option[MAX_OPTIONS]; int comboCnt; char *comboList[20*MAX_OPTIONS]; char *optionSettings; void *programLogo; /* [HGM] logo: bitmap of the logo */ char *fenOverride; /* [HGM} FRC: force FEN casling & ep fields by hand */ char userError; /* [HGM] crash: flag to suppress fatal-error messages*/ char reload; /* [HGM] options: flag to resend options with xreuse */ } ChessProgramState; extern ChessProgramState first, second; /* Search stats from chessprogram */ typedef struct { char movelist[2*MSG_SIZ]; /* Last PV we were sent */ int depth; /* Current search depth */ int nr_moves; /* Total nr of root moves */ int moves_left; /* Moves remaining to be searched */ char move_name[MOVE_LEN]; /* Current move being searched, if provided */ u64 nodes; /* # of nodes searched */ int time; /* Search time (centiseconds) */ int score; /* Score (centipawns) */ int got_only_move; /* If last msg was "(only move)" */ int got_fail; /* 0 - nothing, 1 - got "--", 2 - got "++" */ int ok_to_send; /* handshaking between send & recv */ int line_is_book; /* 1 if movelist is book moves */ int seen_stat; /* 1 if we've seen the stat01: line */ } ChessProgramStats; extern ChessProgramStats_Move pvInfoList[MAX_MOVES]; extern Boolean shuffleOpenings; extern ChessProgramStats programStats; extern int opponentKibitzes; // used by wengineo.c extern int errorExitStatus; extern char *recentEngines; extern char *comboLine; extern Boolean partnerUp, twoBoards; extern char engineVariant[]; char *EngineDefinedVariant P((ChessProgramState *cps, int n)); void SettingsPopUp P((ChessProgramState *cps)); // [HGM] really in front-end, but CPS not known in frontend.h int WaitForEngine P((ChessProgramState *cps, DelayedEventCallback x)); void Load P((ChessProgramState *cps, int n)); int MultiPV P((ChessProgramState *cps, int kind)); void MoveHistorySet P(( char movelist[][2*MOVE_LEN], int first, int last, int current, ChessProgramStats_Move * pvInfo )); void MakeEngineOutputTitle P((void)); void LoadTheme P((void)); void CreateBookEvent P((void)); char *SupportedVariant P((char *list, VariantClass v, int w, int h, int s, int proto, char *engine)); char *CollectPieceDescriptors P((void)); void RefreshSettingsDialog P((ChessProgramState *cps, int val)); void StartChessProgram P((ChessProgramState *cps)); void SendToICS P((char *s)); int PosFlags P((int n)); /* A point in time */ typedef struct { long sec; /* Assuming this is >= 32 bits */ int ms; /* Assuming this is >= 16 bits */ } TimeMark; extern TimeMark programStartTime; void GetTimeMark P((TimeMark *)); long SubtractTimeMarks P((TimeMark *, TimeMark *)); #endif /* XB_BACKEND */ xboard-4.9.1/README0000644000175000001440000000450512717001265010606 00000000000000What is XBoard? =============== XBoard is a graphical chessboard for the X Window System. It can serve as a user interface for chess engines such as Fairy-Max, Crafty or GNU Chess, for the Internet Chess Server, or for electronic mail correspondence chess. It supports all major forms of chess, such as international chess, xiangqi and shogi. XBoard can also be used by itself as viewer for stored chess games. See the manual page for further details. XBoard is free software, copyrighted by the Free Software Foundation and released under the GNU General Public License (GPL). See the file COPYING for details. You can build xboard on most systems with the following commands. ./configure make See the file INSTALL for more detailed instructions. See the file FAQ.html for answers to frequently asked questions. What is WinBoard? ================= WinBoard is a port of XBoard to run natively on Windows. It is part of the XBoard project and is released under the same terms as XBoard. You can build WinBoard using the free Cygwin toolchain from www.cygnus.com with the following commands. cd winboard make -f makefile.gcc You can build WinBoard using Microsoft Visual C with the following commands, or by opening the project in Visual Studio and clicking the build button. cd winboard nmake -f makefile.ms Reporting problems ================== Report bugs and problems with XBoard and WinBoard to . With XBoard, please use the "script" program to start a typescript, run XBoard with the -debug command line option, and include the typescript output in your message. With WinBoard, please use the /debug command line option and include the contents of the file WinBoard.debug. Also tell us what kind of machine and what operating system version you are using. On Unix, the command "uname -a" will tell you this. On Windows, right-click on My Computer and select Properties. Here is a sample of approximately what you should type (on Unix): script uname -a ./configure make ./xboard -debug exit mail bug-xboard@gnu.org Subject: Your short description of the problem Your detailed description of the problem ~r typescript . If you improve XBoard, please send a message about your changes, and we will get in touch with you about merging them in to the main line of development. xboard-4.9.1/m4/0000755000175000001440000000000012747544037010336 500000000000000xboard-4.9.1/m4/intlmacosx.m40000644000175000001440000000475312405103157012673 00000000000000# intlmacosx.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2004-2013 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on Mac OS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in Mac OS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFPreferencesCopyAppValue(NULL, NULL)]])], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in Mac OS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFLocaleCopyCurrent();]])], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) xboard-4.9.1/m4/progtest.m40000644000175000001440000000555012421746651012367 00000000000000# progtest.m4 serial 4 (gettext-0.14.2) dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ(2.50) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in [[\\/]]* | ?:[[\\/]]*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) xboard-4.9.1/m4/gettext.m40000644000175000001440000003457012421746651012210 00000000000000# gettext.m4 serial 60 (gettext-0.17) dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2006. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *);], [bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST(INTLOBJS) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) xboard-4.9.1/m4/nls.m40000644000175000001440000000226612421746651011315 00000000000000# nls.m4 serial 3 (gettext-0.15) dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ(2.50) AC_DEFUN([AM_NLS], [ AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ]) xboard-4.9.1/m4/po.m40000644000175000001440000004460612421746651011143 00000000000000# po.m4 serial 15 (gettext-0.17) dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2003. AC_PREREQ(2.50) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.17]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <&1 conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) xboard-4.9.1/m4/lib-prefix.m40000644000175000001440000001503612421746651012561 00000000000000# lib-prefix.m4 serial 5 (gettext-0.15) dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing dnl the basename of the libdir, either "lib" or "lib64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. The current dnl practice is that on a system supporting 32-bit and 64-bit instruction dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit dnl libraries go under $prefix/lib. We determine the compiler's default dnl mode by looking at the compiler's library search path. If at least dnl of its elements ends in /lib64 or points to a directory whose absolute dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the dnl default, namely "lib". acl_libdirstem=lib searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ]) xboard-4.9.1/m4/iconv.m40000644000175000001440000001375312421746651011642 00000000000000# iconv.m4 serial AM6 (gettext-0.17) dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [ dnl This tests against bugs in AIX 5.1 and HP-UX 11.11. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi AC_TRY_RUN([ #include #include int main () { /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) return 1; } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) return 1; return 0; }], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no], [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) xboard-4.9.1/m4/lib-link.m40000644000175000001440000007205512421746651012225 00000000000000# lib-link.m4 serial 13 (gettext-0.17) dnl Copyright (C) 2001-2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. AC_PREREQ(2.54) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Autoconf >= 2.61 supports dots in --with options. define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix], [ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` LIB[]NAME[]_PREFIX="$basedir" additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) xboard-4.9.1/svg/0000755000175000001440000000000012747544037010615 500000000000000xboard-4.9.1/svg/BlackLShield.svg0000644000175000001440000001530012717001265013522 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteGoldSilver.svg0000644000175000001440000000734512717001265014326 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteHSword.svg0000644000175000001440000001116012717001265013450 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackCanon.svg0000644000175000001440000000770112717001265013242 00000000000000 image/svg+xml xboard-4.9.1/svg/WhitePromoHorse.svg0000644000175000001440000001102012717001265014332 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteRShield.svg0000644000175000001440000001503112717001265013575 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteAdvisor.svg0000644000175000001440000000762312717001265013662 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteHawk.svg0000644000175000001440000001556612717001265013152 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackGoldLance.svg0000644000175000001440000000673112717001265014036 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackPromoHorse.svg0000644000175000001440000001174512717001265014304 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteRook.svg0000644000175000001440000000637512717001265013170 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackCopper.svg0000644000175000001440000001150712717001265013433 00000000000000 image/svg+xml xboard-4.9.1/svg/WhitePromoSword.svg0000644000175000001440000000650612717001265014365 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackCrownedRook.svg0000644000175000001440000000750612717001265014443 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteNightrider.svg0000644000175000001440000001044112717001265014342 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackArchbishop.svg0000644000175000001440000001405712717001265014270 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteIron.svg0000644000175000001440000001663012717001265013160 00000000000000 image/svg+xml xboard-4.9.1/svg/eo_White.svg0000644000175000001440000000532012717001265013005 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackZebra.svg0000644000175000001440000002156512717001265013253 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackDragon.svg0000644000175000001440000001346212717001265013417 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteGnu.svg0000644000175000001440000002513312717001265013000 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteAxe.svg0000644000175000001440000000640712717001265012767 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteSword.svg0000644000175000001440000000707512717001265013352 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackHawk.svg0000644000175000001440000001643312717001265013100 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteLion.svg0000644000175000001440000002167712717001265013161 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackWolf.svg0000644000175000001440000001470112717001265013111 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteDuck.svg0000644000175000001440000001352612717001265013140 00000000000000 image/svg+xml xboard-4.9.1/svg/WhitePromoRook.svg0000644000175000001440000000764512717001265014206 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackGoldPawn.svg0000644000175000001440000000601112717001265013710 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackQueen.svg0000644000175000001440000000770212717001265013262 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteHat.svg0000644000175000001440000001107112717001265012757 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackPromoHSword.svg0000644000175000001440000000750312717001265014427 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteDragon.svg0000644000175000001440000001232512717001265013460 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteQueen.svg0000644000175000001440000001740512717001265013327 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackGoldKnight.svg0000644000175000001440000000726412717001265014242 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteGoldKnight.svg0000644000175000001440000000741512717001265014304 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackPegasus.svg0000644000175000001440000002302512717001265013610 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteBishop.svg0000644000175000001440000001175212717001265013475 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackAxe.svg0000644000175000001440000001041612717001265012716 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteArchbishop.svg0000644000175000001440000001235412717001265014332 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackCobra.svg0000644000175000001440000001232112717001265013224 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackPromoDragon.svg0000644000175000001440000001072012717001265014426 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackCrownedBishop.svg0000644000175000001440000001201312717001265014742 00000000000000 image/svg+xml xboard-4.9.1/svg/WhitePromoHSword.svg0000644000175000001440000000662512717001265014477 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackKing.svg0000644000175000001440000001302712717001265013072 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteDolphin.svg0000644000175000001440000001233212717001265013641 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteFlag.svg0000644000175000001440000001102412717001265013112 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackButterfly.svg0000644000175000001440000001655712717001265014175 00000000000000 image/svg+xml xboard-4.9.1/svg/icon_black.svg0000644000175000001440000000627312717001265013336 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackMarshall.svg0000644000175000001440000001203512717001265013743 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackViking.svg0000644000175000001440000001102212717001265013422 00000000000000 image/svg+xml xboard-4.9.1/svg/eo_Clear.svg0000644000175000001440000000200712717001265012752 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackLeopard.svg0000644000175000001440000002435712717001265013600 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteCommoner.svg0000644000175000001440000000757212717001265014035 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackPrincess.svg0000644000175000001440000001501512717001265013767 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackPromoSword.svg0000644000175000001440000000737212717001265014323 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteZebra.svg0000644000175000001440000002101112717001265013301 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteUnicorn.svg0000644000175000001440000001571312717001265013667 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteWizard.svg0000644000175000001440000001444112717001265013507 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackUnicorn.svg0000644000175000001440000001600212717001265013613 00000000000000 image/svg+xml xboard-4.9.1/svg/WhitePromoBishop.svg0000644000175000001440000001140212717001265014502 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteGold.svg0000644000175000001440000000711112717001265013130 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackRook.svg0000644000175000001440000000706012717001265013114 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackDuck.svg0000644000175000001440000001357212717001265013075 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteKing.svg0000644000175000001440000001050212717001265013131 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteGoldLance.svg0000644000175000001440000000711112717001265014073 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteClaw.svg0000644000175000001440000001736112717001265013141 00000000000000 image/svg+xml xboard-4.9.1/svg/WhitePegasus.svg0000644000175000001440000001667512717001265013671 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackCub.svg0000644000175000001440000002151112717001265012710 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteCobra.svg0000644000175000001440000001052512717001265013274 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteMarshall.svg0000644000175000001440000001224112717001265014006 00000000000000 image/svg+xml xboard-4.9.1/svg/eo_Analyzing.svg0000644000175000001440000001023512717001265013662 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteLance.svg0000644000175000001440000000571512717001265013275 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackPromoRook.svg0000644000175000001440000001015112717001265014124 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteChancellor.svg0000644000175000001440000002233712717001265014324 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackLance.svg0000644000175000001440000000571512717001265013231 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackGold.svg0000644000175000001440000000673412717001265013076 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackSword.svg0000644000175000001440000000775112717001265013307 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackTower.svg0000644000175000001440000001160212717001265013277 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackHat.svg0000644000175000001440000001110212717001265012706 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteButterfly.svg0000644000175000001440000001626012717001265014230 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteTower.svg0000644000175000001440000001201212717001265013337 00000000000000 image/svg+xml xboard-4.9.1/svg/WhitePrincess.svg0000644000175000001440000001531412717001265014035 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackBishop.svg0000644000175000001440000001275312717001265013433 00000000000000 image/svg+xml xboard-4.9.1/svg/WhitePromoDragon.svg0000644000175000001440000001061212717001265014472 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackHCrown.svg0000644000175000001440000001667712717001265013420 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteCrownedBishop.svg0000644000175000001440000001114612717001265015014 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackLeft.svg0000644000175000001440000001507312717001265013077 00000000000000 image/svg+xml xboard-4.9.1/svg/icon_white.svg0000644000175000001440000000673112717001265013401 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackCamel.svg0000644000175000001440000001341012717001265013217 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteLeopard.svg0000644000175000001440000002426112717001265013636 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackLion.svg0000644000175000001440000002150212717001265013100 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteGoldPawn.svg0000644000175000001440000000626212717001265013764 00000000000000 image/svg+xml xboard-4.9.1/svg/WhitePawn.svg0000644000175000001440000000356012717001265013154 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackKnight.svg0000644000175000001440000001211512717001265013423 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteHCrown.svg0000644000175000001440000001717712717001265013460 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteCub.svg0000644000175000001440000002177412717001265012767 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackClaw.svg0000644000175000001440000001731312717001265013072 00000000000000 image/svg+xml xboard-4.9.1/svg/eo_Ponder.svg0000644000175000001440000001242212717001265013155 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackWizard.svg0000644000175000001440000001523312717001265013443 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteLeft.svg0000644000175000001440000002157412717001265013146 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteCanon.svg0000644000175000001440000000674012717001265013310 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackIron.svg0000644000175000001440000001444312717001265013114 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackFlag.svg0000644000175000001440000001405412717001265013054 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteKnight.svg0000644000175000001440000001115112717001265013466 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackGnu.svg0000644000175000001440000002255212717001265012736 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteViking.svg0000644000175000001440000001037612717001265013501 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteWolf.svg0000644000175000001440000001702012717001265013152 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackDolphin.svg0000644000175000001440000001237212717001265013601 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackElephant.svg0000644000175000001440000001712012717001265013740 00000000000000 image/svg+xml xboard-4.9.1/svg/eo_Unknown.svg0000644000175000001440000000531712717001265013372 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteRight.svg0000644000175000001440000002311012717001265013315 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteElephant.svg0000644000175000001440000001531212717001265014005 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackNightrider.svg0000644000175000001440000001312712717001265014302 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackGoldSilver.svg0000644000175000001440000000717112717001265014257 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackRight.svg0000644000175000001440000001502612717001265013260 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackPromoBishop.svg0000644000175000001440000001256712717001265014453 00000000000000 image/svg+xml xboard-4.9.1/svg/eo_Black.svg0000644000175000001440000000530512717001265012744 00000000000000 image/svg+xml xboard-4.9.1/svg/eo_Thinking.svg0000644000175000001440000001057212717001265013505 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackAdvisor.svg0000644000175000001440000001010012717001265013576 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackCommoner.svg0000644000175000001440000001031112717001265013752 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteCopper.svg0000644000175000001440000001034712717001265013500 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackRShield.svg0000644000175000001440000001552412717001265013540 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteCrownedRook.svg0000644000175000001440000000731112717001265014501 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackHSword.svg0000644000175000001440000001007212717001265013405 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackChancellor.svg0000644000175000001440000001513112717001265014252 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteLShield.svg0000644000175000001440000001456512717001265013602 00000000000000 image/svg+xml xboard-4.9.1/svg/BlackPawn.svg0000644000175000001440000000357112717001265013112 00000000000000 image/svg+xml xboard-4.9.1/svg/WhiteCamel.svg0000644000175000001440000001336112717001265013270 00000000000000 image/svg+xml xboard-4.9.1/compile0000755000175000001440000001624512407335704011314 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey . # # 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, 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, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: xboard-4.9.1/zippy.README0000644000175000001440000004525012717001265011762 00000000000000Zippy README file For version xboard/WinBoard 4.2.4 and later only ----------------------------------------------------- Zippy is a program that lets GNU Chess act as a computer player on an Internet Chess Server. It also works with Crafty. Zippy is unsupported, experimental code. Zippy is based on XBoard, a graphical interface to GNU Chess and to the ICS for the X Window system on Unix. Zippy consists of exactly the same code as XBoard, plus one extra module that ties together the otherwise-separate functions of talking to GNU Chess and talking to the ICS. Zippy is included in the XBoard distribution. There is also a version of Zippy that is based on WinBoard, a port of XBoard to Win32 (Microsoft Windows NT and Windows 95). WinBoard does *not* run on Windows 3.1 or 3.11, not even with Win32s. In versions 3.5 and later, the Zippy code is included in WinBoard.exe. If you use Zippy, I ask you to do the following: - Don't expect fast response if you send me mail about problems. It might take weeks for me to get back to you, or I might answer right away. Try to solve problems yourself before you mail me about them. Try asking someone who is actively running a Zippy-based player on ICC or FICS for help getting started. Mail me only if you get stuck. - Be honest. Tell the admins of whatever ICS you use that your player is a computer, so that it gets put onto the computer list, and follow the ICS computer policies. On ICC these are in "help computer"; read this file and abide by what it says. - If you want to interface some other chess program to ICS, feel free to start with this code. Some documentation is in the file engine-intf.html in the distribution. - Please do not use the -zt flag to have your program shout Zippy the Pinhead sayings (or other things that my Zippy shouts). One pinhead per server is plenty, and I'd like to keep the franchise. Feel free to use -zt to have your program shout some other kind of sayings if you like. Some of the jokes that Zippy shouts on ICC came from ftp://ftp.cco.caltech.edu/pub/humor. The poetry came from Project Gutenberg; try http://www.cs.cmu.edu/Web/booktitles.html as a starting point. You might find other suitable material at these sites. Prose tends to work poorly because it is dull when shouted in isolated 250-character chunks. --Tim Mann http://www.tim-mann.org/chess.html * * * Unix: To build the Zippy version of xboard, on most systems just do: configure --enable-zippy make Windows: WinBoard.exe (versions 3.5 and later) includes the Zippy code. There is no longer a distinct WinZippy.exe. In both xboard and WinBoard, the Zippy features are off by default. You can activate them with two new resources/command line options, and you can fine-tune them with some new environment variables, all described below. You will probably want to make a shell script or Windows .BAT file that sets the environment variables you want to use and invokes Zippy with the right command line options for your situation. Some examples are at the bottom of this file. If you have problems building or running Zippy, see the rest of the xboard documentation: INSTALL documents the configure program, while READ_ME and xboard.man (or xboard.txt) document xboard itself, and WinBoard.hlp documents WinBoard. FAQ answers some frequently asked questions. The file engine-intf.html contains some information about the interface between xboard/WinBoard and GNU Chess (or other chess engines). =========== NEW OPTIONS =========== -zippyPlay True/False or -zp/-xzp If zippyPlay is set to True, when xboard is in -ics mode, it will interface a chess engine to the ICS instead of letting you play. You must also set -ics when you use this mode. In zippyPlay mode, xboard blindly issues an accept command for every (well, almost every, see below) challenge it gets, without remembering anything about the challenge afterwards. This means that often it will get several challenges very close together and try to accept them all! ICS gives an error message for every accept command after the one that actually starts a match, but xboard just happily ignores the message. xboard doesn't actually start the chess engine playing until the first board image comes in from ICS. The getMoveList option controls how adjourned games are continued. If it is True (the default), xboard fetches the move list from ICS and feeds it into the chess program before having the program start play. If False, xboard feeds the current position into the chess program and has it start from there. The latter option gets the program going sooner, but can cause problems with detection of en passant legality, castling legality (if a king or rook has moved and then returned to its home square), draw by repetition, and draw by the 50 move rule. In zippyPlay mode, colorization in the ICS interaction window, and the sounds corresponding to colors in that window, do not work. zippyPassword and related features (see below) capture the tells, etc., before they can be matched by the color/sound code. -zippyTalk True/False or -zt/-xzt If zippyTalk is set to True and xboard is in -ics mode: (1) It will reply to anything said to it with a saying (if there is a file of sayings in its working directory). This includes channel tells and shouts where its name is mentioned. Some things it says to opponents in specific situations will also be made Zippy-ish; you might want to change that. See zippyLines below for the file format. (2) If a player XXX in your notify list logs on, xboard sends the command "greet XXX" to ICS and tells XXX something from its sayings file. You can alias this to whatever you like. If XXX is censoring you, he is automatically removed from your notify list. (3) If a player XXX in your notify list logs off, xboard sends the command "farewell XXX" to ICS. You can alias this to whatever you like. Note that the player is already gone, so telling him something is futile. If zippyTalk is on, colorization in the ICS interaction window, and the sounds corresponding to colors in that window, do not work. The reply feature captures the tells, etc., before they can be matched by the color/sound code. In both -zp and -zt modes, if admin X spoofs Zippy, Zippy sends the command "spoofedby X" to ICS. You can alias this to something if you want; otherwise it will produce a harmless error message. -zippyPinhead string In zippyTalk mode, if user XXX shouts anything containing this string, xboard sends the command "insult XXX" to ICS. You can alias "insult" to whatever you like. This feature is disabled if the option is not set. -zippyPassword string If someone does an ICS "tell" to xboard that begins with this password, it will type the same string back as a command with the password stripped off. For example, if the password is !%%! and xboard sees the string "Darooha tells you: !%%!shout Hi there", it will type the command "shout Hi there" to the ICS. This feature is disabled if the option is not set. -zippyPassword2 string If someone does an ICS "tell" to xboard that begins with this password, it will send the same string directly to the chess engine with the password stripped off. This feature is disabled if the option is not set. Use with caution. -zippyWrongPassword string This is a joke feature. If player XXX does an ICS "tell" to xboard that begins with this password, it will send the command "wrong XXX" to ICS. ICS does not define a "wrong" command, but you can alias it to whatever you like. The feature is supposed to be used after you've changed the zippyPassword, so that people who knew the old password get a funny message. Disabled if not set. -zippyUseI True/False or -zui/-xzui If this option is true, Zippy's shouts use the "i" command with funny verbs; otherwise they use the "shout" command. Default is true. The variable is automatically set to false if the "i" command is disabled on ICS by the admins. -zippyLines filename Name of the file Zippy looks in for sayings when -zt is set. Default: yow.lines. File format: There must be a single ^ character or null character (control-@, ASCII code \000) after each saying. Sayings can have newlines in them; Zippy will remove them. Sayings can be at most about 250 characters; longer ones will be ignored. The first saying in the file is never used; you should put a comment there. If you have only one or two sayings in your file, Zippy may get into a loop trying to choose one. Zippy chooses a saying by seeking to a random character position in the file, skipping ahead to the *next* null character, and printing the saying that starts there. If it hits end of file without finding a new saying, it tries again. Yes, this is a dumb algorithm. -zippyAcceptOnly string Normally, Zippy automatically accepts challenges from all opponents. If this option is set to an ICS login name, Zippy will auto-accept challenges only from that opponent. Set the option to an invalid name like "0" if you don't want Zippy to auto-accept any challenges. You can still accept challenges manually. Setting this option also suppresses the zippyGameEnd feature described below. Default: not set. -zippyNoplayCrafty True/False or -znc/-xznc If this option is set to True, if Zippy's opponent kibitzes "Hello from Crafty" within the first couple of moves, Zippy will abort the game and add the opponent to his noplay list. Default: False. -zippyGameStart string At the start of each game Zippy plays (including resuming from adjournment), it sends this string to ICS, followed by a newline. If the option is not set, nothing is sent. -zippyGameEnd string At the end of each game, Zippy sends this string to ICS, followed by a newline. If you do not set this option, the string "gameend" is sent. This is not a legal ICS command, but you can alias it to whatever you like, or you can leave it undefined, which will cause ICS to print a harmless error message after each game. If you want to send more than one command at the end of the game, on ICC you can alias gameend to a "multi" command (see the ICC help files), but on FICS that does not work. Instead, use the -zippyGameEnd option to have a string of several commands sent, with newlines in between. For example, you could give WinBoard the command line option -zippyGameEnd=\"say thanks\\nseek 5 0\\nseek 2 12\\n\" Note the extra backslashes: these are essential, because the shell will strip them from the command before passing it to XBoard, and XBoard needs to see the quotes (which would otherwise be stripped by the shell as well), because only within quotes it will recognize the \n as a linefeed. -zippyAdjourn True/False or -zadj/-xzadj Zippy will allow its opponent to adjourn if this option is set to true. Default: False. -zippyAbort True/False or -zab/-xzab Zippy will allow its opponent to abort if this option is set to true. Default: False. -zippyVariants string Zippy will decline to play chess variants unless their names (as given in engine-intf.html) are listed in this option. Default: "normal". Example: "suicide,losers,bughouse,normal". Obviously, zippyVariants other than "normal" will work only if your chess engine can play those variants. GNU Chess certainly cannot, but there are some suicide and bughouse engines available. While playing bughouse, Zippy passes certain extra information on to the engine; see engine-intf.html. -zippyBughouse int This option controls how Zippy handles bughouse partner requests. If zippyBughouse is set to 0, Zippy will decline any offers of partnership and tell the offerer that it cannot play bughouse. If zippyBughouse is set to 1, Zippy will decline offers, but you can make Zippy your partner by having *it* offer *you* partnership (by using zippyPassword or typing directly into its window). If zippyBughouse is set to 2, Zippy will accept all offers of partnership, even if it already has a partner. zippyBughouse must be at least 1 for partner tells to be relayed to the engine with the ptell command. -zippyMaxGames int -zippyReplayTimeout If zippyMaxGames > 0, Zippy will play at most the given number of consecutive games against the same opponent. Thereafter, Zippy will decline all challenges from that opponent (with an explanatory tell) until either someone else has played or zippyReplayTimeout seconds have elapsed. Defaults: zippyMaxGames=0, zippyReplayTimeout=120. Note: If you use these options and you have Zippy doing seeks, be sure to include the "m" flag in the ICS seek command. If you use "seek m", when a player responds to the seek, the ICS gives Zippy a challenge that it can either accept or decline. If you use a seek without the "m" flag, the ICS immediately starts a game between Zippy and the first opponent to respond, giving Zippy no choice about whether to accept or decline. -zippyShortGame int If zippyShortGame > 0, Zippy will decline all challenges from an opponent that terminated a game before the given number of ply (with an explanatory tell) until either someone else has played or zippyReplayTimeout seconds have elapsed. Do not set the number of moves to large; the number of ply during which opponents can abort a game without rating change would be a good setting. Default: zippyShortGame=0. ===================== ENVIRONMENT VARIABLES ===================== For backward compatibility with version 4.0.2 and earlier only, most of the command line options listed above can also be set as environment variables. For boolean options, use 0 for false, 1 for true in the corresponding environment variable. The following environment variables are supported.: ZIPPYPINHEAD, ZIPPYPASSWORD, ZIPPYPASSWORD2, ZIPPYWRONGPASSWORD, ZIPPYUSEI, ZIPPYLINES, ZIPPYACCEPTONLY, ZIPPYNOPLAYCRAFTY, ZIPPYGAMESTART, ZIPPYGAMEEND, ZIPPYADJOURN, ZIPPYABORT, ZIPPYVARIANTS, ZIPPYBUGHOUSE Warnings: (1) If both the command line option and the corresponding environment variable are set, the environment variable takes precedence! (2) Some of the environment variables have names that are too long for Solaris 2.5's /bin/csh. Use the command line options instead. (3) Newer options DO NOT have environment variables. If you don't see it in the list above, it doesn't exist. (4) In the future the environment variables may go away entirely. It would be a good idea to stop using them now and switch to the command line options. You may also want to customize other things by editing zippy.c and recompiling the program. ===================== ICS VARIABLE SETTINGS ===================== You need to do the following settings on ICS: set highlight 0 <-- I'm not sure this is still needed set oldmatch 0 set examine 0 If you want to use the zippyPassword remote-control feature, it's a good idea to do the following, so that commands you give Zippy won't be truncated because the ICS wrapped a "tell" to a new line: set wrap 0 <-- on ICC, or set width 255 <-- on FICS You will probably want to turn on server-side autoflagging too: set autoflag 1 ====== SIMULS ====== It has been discovered that Zippy can play simuls on ICC (but not on FICS). If you arrange for Zippy to send the ICC command "simulize" in the -zippyGameStart string, it will accept additional games while playing. Zippy will use the same engine for every game, so whenever it switches opponents, the engine's state will be reset with the "new" command. This will of course weaken its play, so don't enable simuls if you want your engine to have the highest possible rating. Zippy was never designed to work with simuls; it just works by accident, and it hasn't been tested much. So please report any bugs you notice, but don't expect them to be fixed rapidly. Be sure to use xboard/WinBoard 4.2.4 or later for simuls, because some obscure bugs are fixed in that version that affect starting a game in the middle (as with resuming from adjournments or switching opponents in a simul). As noted under -zippyPlay above, you should have -getMoveList on to ensure that the engine knows the game history after switching boards and thus handles draw by repetition and by the 50-move rule correctly. It should, however, also work to turn off this option to speed things up and reduce network bandwidth, if you don't mind the engine occasionally failing to see draw possibilities. Unfortunately, though, with Crafty 18.3 (and probably other versions too) as the engine, users trying this have experienced Crafty crashes. This looks to me like a Crafty bug, but I wasn't able to reproduce it, so it remains a mystery. ======== EXAMPLES ======== Here are some small example command lines. You may want to use more options; see the man page, info file, or help file, and perhaps the FAQ file too. You may want to put the command line into a Unix shell script or Windows .BAT file, which is simply a text file of commands. On Unix, turn on execute permission for the file (chmod a+x file); on Windows, give it the extension .BAT. You can then run it just like an ordinary program. Please do not ask me questions about how to make a shell script or .BAT file; these are not functions of xboard/WinBoard, but basic operating system features that you can learn about from introductory books, friends, teachers, or the online help for your system. The examples below should be more than enough to get you started. Unix command lines: # xboard + GNU Chess on chessclub.com xboard -zp -ics -icshost chessclub.com -icshelper timestamp \ -zippyPassword beer # xboard + GNU Chess on freechess.org xboard -zp -ics -icshost freechess.org -icshelper timeseal \ # xboard + Crafty on chessclub.com xboard -zp -ics -icshost chessclub.com \ -fd /home/crafty -fcp crafty -icshelper timestamp \ -zippyPassword beer # xboard + Crafty on freechess.org xboard -zp -ics -icshost freechess.org -autoflag \ -fd /home/crafty -fcp crafty -icshelper timeseal \ -zippyPassword beer Windows command lines: REM WinBoard + GNU Chess on chessclub.com WinBoard -zp -ics -icshost chessclub.com -fcp GNUChess -icshelper timestamp -zippyPassword beer REM WinBoard + GNU Chess on freechess.org WinBoard -zp -ics -icshost freechess.org -fcp GNUChess -icshelper timeseal -zippyPassword beer REM WinBoard + Crafty on chessclub.com WinBoard -zp -ics -icshost chessclub.com -fd C:\Crafty -fcp WCrafty -icshelper timestamp -zippyPassword beer REM WinBoard + Crafty on freechess.org WinBoard -zp -ics -icshost freechess.org -fd C:\Crafty -fcp WCrafty -icshelper timestamp -zippyPassword beer xboard-4.9.1/engineoutput.h0000644000175000001440000000541112717001265012622 00000000000000/* * wengineo.h -- Clipboard routines for WinBoard * * Copyright 2000, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ // [HGM] define numbers to indicate icons, for referring to them in platform-independent way #define nColorBlack 1 #define nColorWhite 2 #define nColorUnknown 3 #define nClear 4 #define nPondering 5 #define nThinking 6 #define nAnalyzing 7 // [HGM] same for output fields (note that there are two of each type, one per color) #define nColorIcon 1 #define nLabel 2 #define nStateIcon 3 #define nStateData 4 #define nLabelNPS 5 #define nMemo 6 /* must match the ranking of the TextBox in following option list! */ #define STRIDE 7 /* must match the number of option in one pane! */ #define MEMO (nMemo-1) /* Module variables */ #define H_MARGIN 2 #define V_MARGIN 2 #define LABEL_V_DISTANCE 1 /* Distance between label and memo */ #define SPLITTER_SIZE 4 /* Distance between first memo and second label */ #define ICON_SIZE 14 enum ENGINE_STATE { STATE_UNKNOWN, STATE_THINKING, STATE_IDLE, STATE_PONDERING, STATE_ANALYZING }; extern int windowMode; extern char exclusionHeader[]; extern int highTextStart[2], highTextEnd[2], endPV; // back-end called by front-end void SetEngineState( int which, enum ENGINE_STATE state, char * state_data ); // front-end called by back-end void SetEngineColorIcon( int which ); void SetIcon( int which, int field, int nIcon ); void DoSetWindowText(int which, int field, char *s_label); void InsertIntoMemo( int which, char * text, int where ); void DoClearMemo(int which); void ResizeWindowControls( int mode ); int EngineOutputDialogExists(); void SetEngineOutputTitle( char *title ); void Collapse P((int colNr)); void InitEngineOutput P((Option *opt, Option *memo2)); // XB only void DrawWidgetIcon P((Option *opt, int nIcon)); // XB only xboard-4.9.1/childio.h0000644000175000001440000000476012717001265011515 00000000000000/* * childio.h -- set up communication with child processes * * Copyright 1991 by Digital Equipment Corporation, Maynard, * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * The following terms apply to Digital Equipment Corporation's copyright * interest in XBoard: * ------------------------------------------------------------------------ * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Digital not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * ------------------------------------------------------------------------ * * The following terms apply to the enhanced version of XBoard * distributed by the Free Software Foundation: * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ void SetUpChildIO P((int to_prog[2], int from_prog[2])); xboard-4.9.1/nhistory.c0000644000175000001440000000660512717001265011754 00000000000000/* * New (WinBoard-style) Move history for XBoard * * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * ------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include #include #include "common.h" #include "frontend.h" #include "backend.h" #include "dialogs.h" #include "gettext.h" #ifdef ENABLE_NLS # define _(s) gettext (s) # define N_(s) gettext_noop (s) #else # define _(s) (s) # define N_(s) s #endif // templates for calls into back-end (= history.c; should be moved to history.h header shared with it!) void RefreshMemoContent P((void)); void MemoContentUpdated P((void)); // variables in xoptions.c extern Option historyOptions[]; // ------------- low-level front-end actions called by MoveHistory back-end ----------------- void ClearHistoryMemo () { SetWidgetText(&historyOptions[0], "", HistoryDlg); } // the bold argument says 0 = normal, 1 = bold typeface // the colorNr argument says 0 = font-default, 1 = gray int AppendToHistoryMemo (char * text, int bold, int colorNr) { return AppendText(&historyOptions[0], text); // for now ignore bold & color stuff, as Xaw cannot handle that } void HighlightMove (int from, int to, Boolean highlight) { HighlightText (&historyOptions[0], from, to, highlight); } char *historyText; int SelectMove (Option *opt, int n, int x, int y, char *text, int index) { if(n != 3 && n != 1) return FALSE; // only on button-1 and 3 press FindMoveByCharIndex( index ); // [HGM] also does the actual moving to it, now return (n == 3); // suppress context menu for button 3, but allow selection with button 1 } Option historyOptions[] = { { 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 400, NULL, (void*) &historyText, NULL , (char**) &SelectMove, TextBox, "", &appData.historyFont }, { 0, NO_OK, 0, NULL, (void*) NULL, "", NULL, EndMark , "" } }; void ScrollToCurrent (int caretPos) { ScrollToCursor(&historyOptions[0], caretPos); } // ------------ standard entry points into MoveHistory code ----------- Boolean MoveHistoryIsUp () { return shellUp[HistoryDlg]; } Boolean MoveHistoryDialogExists () { return DialogExists(HistoryDlg); } void HistoryPopUp () { if(GenericPopUp(historyOptions, _("Move list"), HistoryDlg, BoardWindow, NONMODAL, appData.topLevel)) AddHandler(&historyOptions[0], HistoryDlg, 0); MarkMenu("View.MoveHistory", HistoryDlg); } void HistoryShowProc () { if (!shellUp[HistoryDlg]) { ASSIGN(historyText, ""); HistoryPopUp(); RefreshMemoContent(); MemoContentUpdated(); } else PopDown(HistoryDlg); ToNrEvent(currentMove); } xboard-4.9.1/xboard.xml0000644000175000001440000000651112717001265011726 00000000000000 PGN chess game notation تدوينة لعبة الشطرنج PGN Zaciem ab šachmatnaj partyi PGN Zaciem ab šachmatnaj partyi PGN Игра шах — PGN notació de joc d'escacs PGN Šachová notace PGN PGN-skakspilsnotation PGN-Schachspielnotation PGN chess game notation Notación de partida de ajedrez PGN PGN xake jokoaren notazioa PGN-šakkipelinotaatio notation de jeu d'échecs PGN nodaireacht chluiche ficheall PGN PGN sakkfeljegyzés Notasi permainan catur PGN Notazione partita a scacchi PGN PGN チェスゲーム記録 PGN шахмат ойыны PGN 체스게임 기보 PGN šachmatų žaidimo žymėjimas PGN šaha spēles notācija PGN sjakkspillnotasjon PGN-schaakspelnotatie PGN-sjakkspelnotasjon Plik PGN notacji gry w szachy Notação de jogo de xadrez PGN Notație joc șah PGN шахматная партия PGN Njoftim loje shahu PGN PGN-schackpartinotation запис гри у шахи PGN Cách ghi lượt chơi cờ PGN PGN 象棋游戏注记 PGN chess position XBoard tournament XBoard options xboard-4.9.1/configure0000755000175000001440000114626012747544034011654 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for xboard 4.9.1. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and bug-xboard@gnu.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do $0: have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='xboard' PACKAGE_TARNAME='xboard' PACKAGE_VERSION='4.9.1' PACKAGE_STRING='xboard 4.9.1' PACKAGE_BUGREPORT='bug-xboard@gnu.org' PACKAGE_URL='' gt_needs= # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS CONFIGURE_OPTIONS ZIPPY_FALSE ZIPPY_TRUE CONF_LDFLAGS CONF_CFLAGS POST_XMULIB PRE_XMULIB FRONTEND_LIBS FRONTEND_CFLAGS SW_VERS withXaw_FALSE withXaw_TRUE withGTK_FALSE withGTK_TRUE X_EXTRA_LIBS X_LIBS X_PRE_LIBS X_CFLAGS XMKMF GTK_LIBS GTK_CFLAGS GAMEDATADIR MIMEDIR DESKTOPDIR SVGICONSDIR ICONSDIR XDG_ICON_RESOURCE XDG_DESKTOP_MENU XDG_MIME ENABLE_UPDATE_MIMEDB_FALSE ENABLE_UPDATE_MIMEDB_TRUE NLS_ENABLED_FALSE NLS_ENABLED_TRUE OSX_APP_FALSE OSX_APP_TRUE CAIRO_LIBS CAIRO_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG PKGCONFIG EGREP GREP PERLPATH AWKPATH NROFFFLAGS NROFF MINFO RSH POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS host_os host_vendor host_cpu host build_os build_vendor build_cpu build XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS CPP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_nls with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix with_gtk with_Xaw3d with_Xaw with_iconsdir with_svgiconsdir with_desktopdir with_mimedir with_gamedatadir enable_update_mimedb enable_osxapp with_x enable_ptys enable_zippy enable_sigint ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR CAIRO_CFLAGS CAIRO_LIBS GTK_CFLAGS GTK_LIBS XMKMF' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures xboard 4.9.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/xboard] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names X features: --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of xboard 4.9.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --disable-update-mimedb disable the update-mime-database after install [default=no] --enable-osxapp build a OSX app [default=no] --enable-ptys force use of pseudo-ttys with child processes --enable-zippy support interfacing a chess program to ICS (default) --enable-sigint sending SIGINT (^C) wakes up GNU Chess (default) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-gtk use GTK front-end (default) --with-Xaw3d use Xaw3d front-end (not fully supported anymore) --with-Xaw use Xaw front-end --with-iconsdir=DIR path where icons get installed (default: $datadir/icons/hicolor/48x48/apps) --with-svgiconsdir=DIR path where svg icons get installed (default: $datadir/icons/hicolor/scalable/apps) --with-desktopdir=DIR path where desktop files get installed (default: $datadir/applications) --with-mimedir=DIR path where mime files get installed (default: $datadir/mime/packages) --with-gamedatadir=DIR path where game data files get installed (default: $datadir/games/xboard) --with-x use the X Window System Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path CAIRO_CFLAGS C compiler flags for CAIRO, overriding pkg-config CAIRO_LIBS linker flags for CAIRO, overriding pkg-config GTK_CFLAGS C compiler flags for GTK, overriding pkg-config GTK_LIBS linker flags for GTK, overriding pkg-config XMKMF Path to xmkmf, Makefile generator for X Window System Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF xboard configure 4.9.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## --------------------------------- ## ## Report this to bug-xboard@gnu.org ## ## --------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by xboard $as_me 4.9.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi gt_needs="$gt_needs " # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='xboard' VERSION='4.9.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=0;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' ac_config_headers="$ac_config_headers config.h" if test -z "$CFLAGS" ; then CFLAGS=" " fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 $as_echo_n "checking for library containing strerror... " >&6; } if ${ac_cv_search_strerror+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strerror (); int main () { return strerror (); ; return 0; } _ACEOF for ac_lib in '' cposix; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_strerror=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_strerror+:} false; then : break fi done if ${ac_cv_search_strerror+:} false; then : else ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 $as_echo "$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. if test "${enable_nls+set}" = set; then : enableval=$enable_nls; USE_NLS=$enableval else USE_NLS=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } GETTEXT_MACRO_VERSION=0.17 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgfmt", so it can be a program name with args. set dummy msgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGFMT" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$MSGFMT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 $as_echo "$MSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "gmsgfmt", so it can be a program name with args. set dummy gmsgfmt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_GMSGFMT+:} false; then : $as_echo_n "(cached) " >&6 else case $GMSGFMT in [\\/]* | ?:[\\/]*) ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" ;; esac fi GMSGFMT=$ac_cv_path_GMSGFMT if test -n "$GMSGFMT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 $as_echo "$GMSGFMT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XGETTEXT+:} false; then : $as_echo_n "(cached) " >&6 else case "$XGETTEXT" in [\\/]* | ?:[\\/]*) ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" ;; esac fi XGETTEXT="$ac_cv_path_XGETTEXT" if test "$XGETTEXT" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 $as_echo "$XGETTEXT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # Extract the first word of "msgmerge", so it can be a program name with args. set dummy msgmerge; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_MSGMERGE+:} false; then : $as_echo_n "(cached) " >&6 else case "$MSGMERGE" in [\\/]* | ?:[\\/]*) ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$MSGMERGE" != ":"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 $as_echo "$MSGMERGE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$localedir" || localedir='${datadir}/locale' test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 $as_echo_n "checking for ld used by GCC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in *GNU* | *'with BFD'*) test "$with_gnu_ld" != no && break ;; *) test "$with_gnu_ld" != yes && break ;; esac fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi fi LD="$acl_cv_path_LD" if test -n "$LD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 $as_echo "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi acl_libdirstem=lib searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` LIBICONV_PREFIX="$basedir" additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 $as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFPreferencesCopyAppValue=yes else gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 $as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then $as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 $as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFLocaleCopyCurrent=yes else gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 $as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then $as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if eval \${$gt_func_gnugettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libc=yes" else eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if ${am_cv_func_iconv_works+:} false; then : $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi if test "$cross_compiling" = yes; then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static const char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) return 1; } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; const char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, (char **) &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) return 1; } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) return 1; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : am_cv_func_iconv_works=yes else am_cv_func_iconv_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi LIBS="$am_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` LIBINTL_PREFIX="$basedir" additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if eval \${$gt_func_gnugettext_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libintl=yes" else eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include $gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" for ac_prog in remsh rsh do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RSH+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RSH"; then ac_cv_prog_RSH="$RSH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RSH="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RSH=$ac_cv_prog_RSH if test -n "$RSH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RSH" >&5 $as_echo "$RSH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$RSH" && break done test -n "$RSH" || RSH="rsh" for ac_prog in makeinfo do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MINFO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MINFO"; then ac_cv_prog_MINFO="$MINFO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MINFO="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MINFO=$ac_cv_prog_MINFO if test -n "$MINFO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MINFO" >&5 $as_echo "$MINFO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$MINFO" && break done test -n "$MINFO" || MINFO="makeinfo_not_found" if test "$MINFO" = makeinfo_not_found ; then echo Please install \"makeinfo\" exit 1 fi cat >>confdefs.h <<_ACEOF #define REMOTE_SHELL "$RSH" _ACEOF # Extract the first word of "nroff", so it can be a program name with args. set dummy nroff; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NROFF+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NROFF"; then ac_cv_prog_NROFF="$NROFF" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NROFF="nroff -man" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_NROFF" && ac_cv_prog_NROFF="cat" fi fi NROFF=$ac_cv_prog_NROFF if test -n "$NROFF"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5 $as_echo "$NROFF" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi for ac_prog in awk mawk gawk nawk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_AWKPATH+:} false; then : $as_echo_n "(cached) " >&6 else case $AWKPATH in [\\/]* | ?:[\\/]*) ac_cv_path_AWKPATH="$AWKPATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_AWKPATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi AWKPATH=$ac_cv_path_AWKPATH if test -n "$AWKPATH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWKPATH" >&5 $as_echo "$AWKPATH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWKPATH" && break done for ac_prog in perl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PERLPATH+:} false; then : $as_echo_n "(cached) " >&6 else case $PERLPATH in [\\/]* | ?:[\\/]*) ac_cv_path_PERLPATH="$PERLPATH" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PERLPATH="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PERLPATH=$ac_cv_path_PERLPATH if test -n "$PERLPATH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERLPATH" >&5 $as_echo "$PERLPATH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PERLPATH" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if ${ac_cv_header_sys_wait_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef WEXITSTATUS # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) #endif #ifndef WIFEXITED # define WIFEXITED(stat_val) (((stat_val) & 255) == 0) #endif int main () { int s; wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_sys_wait_h=yes else ac_cv_header_sys_wait_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 $as_echo "$ac_cv_header_sys_wait_h" >&6; } if test $ac_cv_header_sys_wait_h = yes; then $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if eval \${$as_ac_Header+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in stropts.h sys/time.h string.h unistd.h sys/systeminfo.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in fcntl.h sys/fcntl.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF break fi done for ac_header in sys/socket.h lan/socket.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF break fi done ac_fn_c_check_header_mongrel "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default" if test "x$ac_cv_header_stddef_h" = xyes; then : else $as_echo "#define X_WCHAR 1" >>confdefs.h fi for ac_func in _getpty grantpt setitimer usleep do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in gettimeofday ftime do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF break fi done for ac_func in random rand48 do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF break fi done for ac_func in gethostname sysinfo do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF break fi done ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" if test "x$ac_cv_func_setlocale" = xyes; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setlocale in -li" >&5 $as_echo_n "checking for setlocale in -li... " >&6; } if ${ac_cv_lib_i_setlocale+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-li $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char setlocale (); int main () { return setlocale (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_i_setlocale=yes else ac_cv_lib_i_setlocale=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_i_setlocale" >&5 $as_echo "$ac_cv_lib_i_setlocale" >&6; } if test "x$ac_cv_lib_i_setlocale" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBI 1 _ACEOF LIBS="-li $LIBS" else $as_echo "#define X_LOCALE 1" >>confdefs.h fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpseudotty in -lseq" >&5 $as_echo_n "checking for getpseudotty in -lseq... " >&6; } if ${ac_cv_lib_seq_getpseudotty+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lseq $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char getpseudotty (); int main () { return getpseudotty (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_seq_getpseudotty=yes else ac_cv_lib_seq_getpseudotty=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_seq_getpseudotty" >&5 $as_echo "$ac_cv_lib_seq_getpseudotty" >&6; } if test "x$ac_cv_lib_seq_getpseudotty" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSEQ 1 _ACEOF LIBS="-lseq $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler understands -Wall -Wno-parentheses" >&5 $as_echo_n "checking whether compiler understands -Wall -Wno-parentheses... " >&6; } SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wall -Wno-parentheses" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } CFLAGS="$SAVE_CFLAGS" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext for ac_prog in pkg-config do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_PKGCONFIG+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$PKGCONFIG"; then ac_cv_prog_PKGCONFIG="$PKGCONFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PKGCONFIG="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PKGCONFIG=$ac_cv_prog_PKGCONFIG if test -n "$PKGCONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 $as_echo "$PKGCONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PKGCONFIG" && break done test -n "$PKGCONFIG" || PKGCONFIG="pkgconfig_not_found" if test "x$PKGCONFIG" = xpkgconfig_not_found; then : as_fn_error $? "cannot find pkg-config! Please install it." "$LINENO" 5 fi if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5 $as_echo_n "checking for CAIRO... " >&6; } if test -n "$CAIRO_CFLAGS"; then pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" cairo >= 1.2.0 pangocairo librsvg-2.0 >= 2.14.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " cairo >= 1.2.0 pangocairo librsvg-2.0 >= 2.14.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags " cairo >= 1.2.0 pangocairo librsvg-2.0 >= 2.14.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$CAIRO_LIBS"; then pkg_cv_CAIRO_LIBS="$CAIRO_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" cairo >= 1.2.0 pangocairo librsvg-2.0 >= 2.14.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " cairo >= 1.2.0 pangocairo librsvg-2.0 >= 2.14.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs " cairo >= 1.2.0 pangocairo librsvg-2.0 >= 2.14.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " cairo >= 1.2.0 pangocairo librsvg-2.0 >= 2.14.0 " 2>&1` else CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " cairo >= 1.2.0 pangocairo librsvg-2.0 >= 2.14.0 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$CAIRO_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( cairo >= 1.2.0 pangocairo librsvg-2.0 >= 2.14.0 ) were not met: $CAIRO_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables CAIRO_CFLAGS and CAIRO_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables CAIRO_CFLAGS and CAIRO_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS CAIRO_LIBS=$pkg_cv_CAIRO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi FRONTEND_CFLAGS="" FRONTEND_LIBS="" # Check whether --with-gtk was given. if test "${with_gtk+set}" = set; then : withval=$with_gtk; with_GTK=$withval else with_GTK="yes" fi # Check whether --with-Xaw3d was given. if test "${with_Xaw3d+set}" = set; then : withval=$with_Xaw3d; with_Xaw3d="$withval" else with_Xaw3d="no" fi if test "x$with_Xaw3d" = xyes; then : with_GTK="no" fi # Check whether --with-Xaw was given. if test "${with_Xaw+set}" = set; then : withval=$with_Xaw; with_Xaw="$withval" else with_Xaw="no" fi if test "x$with_Xaw" = xyes; then : with_GTK="no" fi # Check whether --with-iconsdir was given. if test "${with_iconsdir+set}" = set; then : withval=$with_iconsdir; ICONSDIR="$withval" else ICONSDIR='$(datadir)/icons/hicolor/48x48/apps' fi # Check whether --with-svgiconsdir was given. if test "${with_svgiconsdir+set}" = set; then : withval=$with_svgiconsdir; SVGICONSDIR="$withval" else SVGICONSDIR='$(datadir)/icons/hicolor/scalable/apps' fi # Check whether --with-desktopdir was given. if test "${with_desktopdir+set}" = set; then : withval=$with_desktopdir; DESKTOPDIR="$withval" else DESKTOPDIR='$(datadir)/applications' fi # Check whether --with-mimedir was given. if test "${with_mimedir+set}" = set; then : withval=$with_mimedir; MIMEDIR="$withval" else MIMEDIR='$(datadir)/mime/packages' fi # Check whether --with-gamedatadir was given. if test "${with_gamedatadir+set}" = set; then : withval=$with_gamedatadir; GAMEDATADIR="$withval" else GAMEDATADIR='$(datadir)/games/xboard' fi # Check whether --enable-update-mimedb was given. if test "${enable_update_mimedb+set}" = set; then : enableval=$enable_update_mimedb; enable_mimedb="no" else enable_mimedb="yes" fi # Check whether --enable-osxapp was given. if test "${enable_osxapp+set}" = set; then : enableval=$enable_osxapp; enable_OSXAPP=$enableval else enable_OSXAPP="no" fi if test x"$enable_OSXAPP" = x"yes"; then : prefix=`pwd`/XBoard.app/Contents $as_echo "#define OSXAPP 1" >>confdefs.h with_GTK="yes" enable_mimedb="no" datarootdir='$(prefix)/Resources' datadir='$(datarootdir)/share' sysconfdir='$(datarootdir)/etc' infodir='$(datadir)/info' mandir='$(datadir)/man' bindir='$(prefix)/MacOS' localedir='$(datadir)/locale' GAMEDATADIR='$(datadir)/xboard' fi if test x"$enable_OSXAPP" = x"yes"; then OSX_APP_TRUE= OSX_APP_FALSE='#' else OSX_APP_TRUE='#' OSX_APP_FALSE= fi if test x"$USE_NLS" = x"yes"; then NLS_ENABLED_TRUE= NLS_ENABLED_FALSE='#' else NLS_ENABLED_TRUE='#' NLS_ENABLED_FALSE= fi if test x"$enable_mimedb" = x"yes"; then ENABLE_UPDATE_MIMEDB_TRUE= ENABLE_UPDATE_MIMEDB_FALSE='#' else ENABLE_UPDATE_MIMEDB_TRUE='#' ENABLE_UPDATE_MIMEDB_FALSE= fi if test x"$enable_mimedb" = x"yes"; then # Extract the first word of "xdg-mime", so it can be a program name with args. set dummy xdg-mime; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XDG_MIME+:} false; then : $as_echo_n "(cached) " >&6 else case $XDG_MIME in [\\/]* | ?:[\\/]*) ac_cv_path_XDG_MIME="$XDG_MIME" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XDG_MIME="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XDG_MIME=$ac_cv_path_XDG_MIME if test -n "$XDG_MIME"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XDG_MIME" >&5 $as_echo "$XDG_MIME" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xdg-desktop-menu", so it can be a program name with args. set dummy xdg-desktop-menu; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XDG_DESKTOP_MENU+:} false; then : $as_echo_n "(cached) " >&6 else case $XDG_DESKTOP_MENU in [\\/]* | ?:[\\/]*) ac_cv_path_XDG_DESKTOP_MENU="$XDG_DESKTOP_MENU" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XDG_DESKTOP_MENU="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XDG_DESKTOP_MENU=$ac_cv_path_XDG_DESKTOP_MENU if test -n "$XDG_DESKTOP_MENU"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XDG_DESKTOP_MENU" >&5 $as_echo "$XDG_DESKTOP_MENU" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "xdg-icon-resource", so it can be a program name with args. set dummy xdg-icon-resource; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_XDG_ICON_RESOURCE+:} false; then : $as_echo_n "(cached) " >&6 else case $XDG_ICON_RESOURCE in [\\/]* | ?:[\\/]*) ac_cv_path_XDG_ICON_RESOURCE="$XDG_ICON_RESOURCE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_XDG_ICON_RESOURCE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi XDG_ICON_RESOURCE=$ac_cv_path_XDG_ICON_RESOURCE if test -n "$XDG_ICON_RESOURCE"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XDG_ICON_RESOURCE" >&5 $as_echo "$XDG_ICON_RESOURCE" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test x"$with_GTK" = x"yes" ; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 $as_echo_n "checking for GTK... " >&6; } if test -n "$GTK_CFLAGS"; then pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gtk+-2.0 >= 2.16.0 gmodule-2.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-2.0 >= 2.16.0 gmodule-2.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_CFLAGS=`$PKG_CONFIG --cflags " gtk+-2.0 >= 2.16.0 gmodule-2.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GTK_LIBS"; then pkg_cv_GTK_LIBS="$GTK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \" gtk+-2.0 >= 2.16.0 gmodule-2.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-2.0 >= 2.16.0 gmodule-2.0 ") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTK_LIBS=`$PKG_CONFIG --libs " gtk+-2.0 >= 2.16.0 gmodule-2.0 " 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs " gtk+-2.0 >= 2.16.0 gmodule-2.0 " 2>&1` else GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gtk+-2.0 >= 2.16.0 gmodule-2.0 " 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK_PKG_ERRORS" >&5 as_fn_error $? "Package requirements ( gtk+-2.0 >= 2.16.0 gmodule-2.0 ) were not met: $GTK_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GTK_CFLAGS=$pkg_cv_GTK_CFLAGS GTK_LIBS=$pkg_cv_GTK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi FRONTEND_CFLAGS=$GTK_CFLAGS FRONTEND_LIBS=$GTK_LIBS with_Xaw="no" fi if test x"$with_GTK" = x"no" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 $as_echo_n "checking for X... " >&6; } # Check whether --with-x was given. if test "${with_x+set}" = set; then : withval=$with_x; fi # $have_x is `yes', `no', `disabled', or empty when we do not yet know. if test "x$with_x" = xno; then # The user explicitly disabled X. have_x=disabled else case $x_includes,$x_libraries in #( *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : $as_echo_n "(cached) " >&6 else # One or both of the vars are not set, and there is no cached value. ac_x_includes=no ac_x_libraries=no rm -f -r conftest.dir if mkdir conftest.dir; then cd conftest.dir cat >Imakefile <<'_ACEOF' incroot: @echo incroot='${INCROOT}' usrlibdir: @echo usrlibdir='${USRLIBDIR}' libdir: @echo libdir='${LIBDIR}' _ACEOF if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. for ac_var in incroot usrlibdir libdir; do eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" done # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. for ac_extension in a so sl dylib la dll; do if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && test -f "$ac_im_libdir/libX11.$ac_extension"; then ac_im_usrlibdir=$ac_im_libdir; break fi done # Screen out bogus values from the imake configuration. They are # bogus both because they are the default anyway, and because # using them would break gcc on systems where it needs fixed includes. case $ac_im_incroot in /usr/include) ac_x_includes= ;; *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; esac case $ac_im_usrlibdir in /usr/lib | /usr/lib64 | /lib | /lib64) ;; *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; esac fi cd .. rm -f -r conftest.dir fi # Standard set of common directories for X headers. # Check X11 before X11Rn because it is often a symlink to the current release. ac_x_header_dirs=' /usr/X11/include /usr/X11R7/include /usr/X11R6/include /usr/X11R5/include /usr/X11R4/include /usr/include/X11 /usr/include/X11R7 /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 /usr/local/X11/include /usr/local/X11R7/include /usr/local/X11R6/include /usr/local/X11R5/include /usr/local/X11R4/include /usr/local/include/X11 /usr/local/include/X11R7 /usr/local/include/X11R6 /usr/local/include/X11R5 /usr/local/include/X11R4 /usr/X386/include /usr/x386/include /usr/XFree86/include/X11 /usr/include /usr/local/include /usr/unsupported/include /usr/athena/include /usr/local/x11r5/include /usr/lpp/Xamples/include /usr/openwin/include /usr/openwin/share/include' if test "$ac_x_includes" = no; then # Guess where to find include files, by looking for Xlib.h. # First, try using that file with no special directory specified. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # We can compile using X headers with no special include directory. ac_x_includes= else for ac_dir in $ac_x_header_dirs; do if test -r "$ac_dir/X11/Xlib.h"; then ac_x_includes=$ac_dir break fi done fi rm -f conftest.err conftest.i conftest.$ac_ext fi # $ac_x_includes = no if test "$ac_x_libraries" = no; then # Check for the libraries. # See if we find them without any special options. # Don't add to $LIBS permanently. ac_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { XrmInitialize () ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBS=$ac_save_LIBS # We can link X programs with no special library path. ac_x_libraries= else LIBS=$ac_save_LIBS for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` do # Don't even attempt the hair of trying to link an X program! for ac_extension in a so sl dylib la dll; do if test -r "$ac_dir/libX11.$ac_extension"; then ac_x_libraries=$ac_dir break 2 fi done done fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi # $ac_x_libraries = no case $ac_x_includes,$ac_x_libraries in #( no,* | *,no | *\'*) # Didn't find X, or a directory has "'" in its name. ac_cv_have_x="have_x=no";; #( *) # Record where we found X for the cache. ac_cv_have_x="have_x=yes\ ac_x_includes='$ac_x_includes'\ ac_x_libraries='$ac_x_libraries'" esac fi ;; #( *) have_x=yes;; esac eval "$ac_cv_have_x" fi # $with_x != no if test "$have_x" != yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 $as_echo "$have_x" >&6; } no_x=yes else # If each of the values was on the command line, it overrides each guess. test "x$x_includes" = xNONE && x_includes=$ac_x_includes test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries # Update the cache value to reflect the command line values. ac_cv_have_x="have_x=yes\ ac_x_includes='$x_includes'\ ac_x_libraries='$x_libraries'" { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 $as_echo "libraries $x_libraries, headers $x_includes" >&6; } fi if test "$no_x" = yes; then # Not all programs may use this symbol, but it does not hurt to define it. $as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= else if test -n "$x_includes"; then X_CFLAGS="$X_CFLAGS -I$x_includes" fi # It would also be nice to do this for all -L options, not just this one. if test -n "$x_libraries"; then X_LIBS="$X_LIBS -L$x_libraries" # For Solaris; some versions of Sun CC require a space after -R and # others require no space. Words are not sufficient . . . . { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 $as_echo_n "checking whether -R must be followed by a space... " >&6; } ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" ac_xsave_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } X_LIBS="$X_LIBS -R$x_libraries" else LIBS="$ac_xsave_LIBS -R $x_libraries" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } X_LIBS="$X_LIBS -R $x_libraries" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 $as_echo "neither works" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_c_werror_flag=$ac_xsave_c_werror_flag LIBS=$ac_xsave_LIBS fi # Check for system-dependent libraries X programs must link with. # Do this before checking for the system-independent R6 libraries # (-lICE), since we may need -lsocket or whatever for X linking. if test "$ISC" = yes; then X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" else # Martyn Johnson says this is needed for Ultrix, if the X # libraries were built with DECnet support. And Karl Berry says # the Alpha needs dnet_stub (dnet does not exist). ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dnet_dnet_ntoa=yes else ac_cv_lib_dnet_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 $as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldnet_stub $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dnet_ntoa (); int main () { return dnet_ntoa (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dnet_stub_dnet_ntoa=yes else ac_cv_lib_dnet_stub_dnet_ntoa=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 $as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" fi fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_xsave_LIBS" # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, # to get the SysV transport functions. # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) # needs -lnsl. # The nsl library prevents programs from opening the X display # on Irix 5.2, according to T.E. Dickey. # The functions gethostbyname, getservbyname, and inet_addr are # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" if test "x$ac_cv_func_gethostbyname" = xyes; then : fi if test $ac_cv_func_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } if ${ac_cv_lib_nsl_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_nsl_gethostbyname=yes else ac_cv_lib_nsl_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" fi if test $ac_cv_lib_nsl_gethostbyname = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 $as_echo_n "checking for gethostbyname in -lbsd... " >&6; } if ${ac_cv_lib_bsd_gethostbyname+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lbsd $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_bsd_gethostbyname=yes else ac_cv_lib_bsd_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 $as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" fi fi fi # lieder@skyler.mavd.honeywell.com says without -lsocket, # socket/setsockopt and other routines are undefined under SCO ODT # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary # on later versions), says Simon Leinen: it contains gethostby* # variants that don't use the name server (or something). -lsocket # must be given before -lnsl if both are needed. We assume that # if connect needs -lnsl, so does gethostbyname. ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" if test "x$ac_cv_func_connect" = xyes; then : fi if test $ac_cv_func_connect = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 $as_echo_n "checking for connect in -lsocket... " >&6; } if ${ac_cv_lib_socket_connect+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char connect (); int main () { return connect (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_socket_connect=yes else ac_cv_lib_socket_connect=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 $as_echo "$ac_cv_lib_socket_connect" >&6; } if test "x$ac_cv_lib_socket_connect" = xyes; then : X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" fi fi # Guillermo Gomez says -lposix is necessary on A/UX. ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" if test "x$ac_cv_func_remove" = xyes; then : fi if test $ac_cv_func_remove = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 $as_echo_n "checking for remove in -lposix... " >&6; } if ${ac_cv_lib_posix_remove+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lposix $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char remove (); int main () { return remove (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_posix_remove=yes else ac_cv_lib_posix_remove=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 $as_echo "$ac_cv_lib_posix_remove" >&6; } if test "x$ac_cv_lib_posix_remove" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" fi fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" if test "x$ac_cv_func_shmat" = xyes; then : fi if test $ac_cv_func_shmat = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 $as_echo_n "checking for shmat in -lipc... " >&6; } if ${ac_cv_lib_ipc_shmat+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lipc $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shmat (); int main () { return shmat (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ipc_shmat=yes else ac_cv_lib_ipc_shmat=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 $as_echo "$ac_cv_lib_ipc_shmat" >&6; } if test "x$ac_cv_lib_ipc_shmat" = xyes; then : X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" fi fi fi # Check for libraries that X11R6 Xt/Xaw programs need. ac_save_LDFLAGS=$LDFLAGS test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to # check for ICE first), but we must link in the order -lSM -lICE or # we get undefined symbols. So assume we have SM if we have ICE. # These have to be linked with before -lX11, unlike the other # libraries we check for below, so use a different variable. # John Interrante, Karl Berry { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 $as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IceConnectionNumber (); int main () { return IceConnectionNumber (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ICE_IceConnectionNumber=yes else ac_cv_lib_ICE_IceConnectionNumber=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 $as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" fi LDFLAGS=$ac_save_LDFLAGS fi if test -n "$no_x" ; then as_fn_error $? " \" $PACKAGE requires the X Window System header files and libraries! They were not found on your system. See FAQ topic C.2. configure failed\"" "$LINENO" 5 fi save_cflags="$CFLAGS" save_cppflags="$CPPFLAGS" CFLAGS="$CFLAGS $X_CFLAGS" CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_fn_c_check_header_mongrel "$LINENO" "X11/Intrinsic.h" "ac_cv_header_X11_Intrinsic_h" "$ac_includes_default" if test "x$ac_cv_header_X11_Intrinsic_h" = xyes; then : xt="yes" else xt="no" fi CFLAGS="$save_cflags" CPPFLAGS="$save_cppflags" if test "$xt" = "no" ; then as_fn_error $? "Xt headers not found. Please install the X11 packages." "$LINENO" 5 fi FRONTEND_LIBS= if test x"$with_Xaw3d" != x"no"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XawTextReplace in -lXaw3d" >&5 $as_echo_n "checking for XawTextReplace in -lXaw3d... " >&6; } if ${ac_cv_lib_Xaw3d_XawTextReplace+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lXaw3d -lXaw $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XawTextReplace (); int main () { return XawTextReplace (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_Xaw3d_XawTextReplace=yes else ac_cv_lib_Xaw3d_XawTextReplace=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xaw3d_XawTextReplace" >&5 $as_echo "$ac_cv_lib_Xaw3d_XawTextReplace" >&6; } if test "x$ac_cv_lib_Xaw3d_XawTextReplace" = xyes; then : FRONTEND_LIBS="-lXaw3d" $as_echo "#define USE_XAW3D 1" >>confdefs.h else as_fn_error $? "--with-Xaw3d was given, but test for Xaw3d failed. Make sure that you have Xaw3d installed, else you might want to try the configure option --without-Xaw3d" "$LINENO" 5 fi fi if test x"$with_Xaw3d" = x"no" ; then with_Xaw=yes save_cflags="$CFLAGS" save_cppflags="$CPPFLAGS" CFLAGS="$CFLAGS $X_CFLAGS" CPPFLAGS="$CPPFLAGS $X_CFLAGS" ac_fn_c_check_header_mongrel "$LINENO" "X11/Xaw/Dialog.h" "ac_cv_header_X11_Xaw_Dialog_h" "$ac_includes_default" if test "x$ac_cv_header_X11_Xaw_Dialog_h" = xyes; then : xaw_headers="yes" else xaw_headers="no" fi CFLAGS="$save_cflags" CPPFLAGS="$save_cppflags" if test x"$xaw_headers" = x"no" ; then as_fn_error $? "Xaw headers not found. Please install the Xaw package and headers." "$LINENO" 5 fi FRONTEND_LIBS="-lXaw" fi fi if test x"$with_GTK" = x"yes"; then withGTK_TRUE= withGTK_FALSE='#' else withGTK_TRUE='#' withGTK_FALSE= fi if test x"$with_Xaw3d" = x"yes" || test x"$with_Xaw" = x"yes"; then withXaw_TRUE= withXaw_FALSE='#' else withXaw_TRUE='#' withXaw_FALSE= fi USE_PTYS=0 case "$host" in *-*-hpux* ) $as_echo "#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, \"/dev/pty/tty%c%x\", c, i);" >>confdefs.h $as_echo "#define PTY_NAME_SPRINTF sprintf (pty_name, \"/dev/ptym/pty%c%x\", c, i);" >>confdefs.h if test "$GCC" = yes; then CONF_CFLAGS="-fwritable-strings" else CONF_CFLAGS="-Aa -D_HPUX_SOURCE" fi if test -d /opt/hppd/include/X11; then X_CFLAGS="$X_CFLAGS -I/opt/hppd/include" X_LIBS="$X_LIBS -L/opt/hppd/lib" elif test -d /usr/contrib/X11R5/include; then X_CFLAGS="$X_CFLAGS -I/usr/contrib/X11R5/include" X_LIBS="$X_LIBS -L/usr/contrib/X11R5/lib" elif test -d /usr/contrib/mitX11R5/include; then X_CFLAGS="$X_CFLAGS -I/usr/contrib/mitX11R5/include" X_LIBS="$X_LIBS -L/usr/contrib/mitX11R5/lib" elif test -d /MIT/X11R5/include; then X_CFLAGS="$X_CFLAGS -I/MIT/X11R5/include" X_LIBS="$X_LIBS -L/MIT/X11R5/lib" elif test -d /usr/local/include/X11R5; then X_CFLAGS="$X_CFLAGS -I/usr/local/include/X11R5" X_LIBS="$X_LIBS -L/usr/local/lib/X11R5" fi if test -d /usr/include/X11R5; then X_CFLAGS="$X_CFLAGS -I/usr/include/X11R5" X_LIBS="$X_LIBS -L/usr/lib/X11R5 -L/usr/lib/X11R4" elif test -d /usr/include/X11R4; then X_CFLAGS="$X_CFLAGS -I/usr/include/X11R4" X_LIBS="$X_LIBS -L/usr/lib/X11R4" fi ;; romp-ibm-aix* ) $as_echo "#define IBMRTAIX 1" >>confdefs.h ;; i386-ibm-aix ) if test "$GCC" = yes; then CONF_CFLAGS="-fwritable-strings" fi ;; *-*-aix3* | *-*-bosx* ) $as_echo "#define PTY_ITERATION for (c = 0; !c; c++)" >>confdefs.h $as_echo "#define PTY_NAME_SPRINTF strcpy (pty_name, \"/dev/ptc\");" >>confdefs.h $as_echo "#define PTY_TTY_NAME_SPRINTF strcpy (pty_name, ttyname (fd));" >>confdefs.h ;; *-*-cxux* ) $as_echo "#define FIRST_PTY_LETTER 'A'" >>confdefs.h $as_echo "#define LAST_PTY_LETTER 'P'" >>confdefs.h ;; *-*-uniplus* ) $as_echo "#define UNIPLUS 1" >>confdefs.h ;; *-*-rtu* ) $as_echo "#define FIRST_PTY_LETTER 'z'" >>confdefs.h $as_echo "#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, \"/dev/ttyp%x\", i);" >>confdefs.h $as_echo "#define PTY_NAME_SPRINTF sprintf (pty_name, \"/dev/pty%x\", i);" >>confdefs.h $as_echo "#define RTU 1" >>confdefs.h ;; *-*-iris* | *-*-irix3* ) $as_echo "#define PTY_ITERATION for (c = 0; !c; c++)" >>confdefs.h $as_echo "#define PTY_NAME_SPRINTF strcpy (pty_name, \"/dev/ptc\");" >>confdefs.h $as_echo "#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, \"/dev/ttyq%d\", minor(stb.st_rdev));" >>confdefs.h ;; *-*-irix* ) ;; *-*-sunos4* | *-*-solaris1* ) if test "$GCC" = yes; then PRE_XMULIB="-static" POST_XMULIB="-dynamic" else PRE_XMULIB="-Bstatic" POST_XMULIB="-Bdynamic" fi ;; *-*-sunos5* | *-*-solaris2* ) X_LIBS="$X_LIBS -lelf" ;; *-*-sco* ) $as_echo "#define PTY_ITERATION for (i = 0; ; i++)" >>confdefs.h $as_echo "#define PTY_NAME_SPRINTF sprintf (pty_name, \"/dev/ptyp%d\", i);" >>confdefs.h $as_echo "#define PTY_TTY_NAME_SPRINTF sprintf (pty_name, \"/dev/ttyp%d\", i);" >>confdefs.h ;; *-*-dynix* | *-*-ptx* ) ;; *-*-esix* ) ;; *-*-usg5-4* | *-*-sysvr4* ) ;; *-*-usg* | *-*-sysv* | *-*-aix* ) ;; vax-*-ultrix ) if test "$GCC" = yes; then CONF_CFLAGS="-fwritable-strings" fi ;; *-apple-* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Apple support is experimental, please report any problems to bug-xboard@gnu.org" >&5 $as_echo "$as_me: WARNING: Apple support is experimental, please report any problems to bug-xboard@gnu.org" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: use --enable-osxapp to enable the build target and automatically adjust target directories" >&5 $as_echo "$as_me: WARNING: use --enable-osxapp to enable the build target and automatically adjust target directories" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Building an OSX app currently relies on some programs such as dylib that we don't test for" >&5 $as_echo "$as_me: WARNING: Building an OSX app currently relies on some programs such as dylib that we don't test for" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: patches welcome ;)" >&5 $as_echo "$as_me: WARNING: patches welcome ;)" >&2;} # Extract the first word of "sw_vers", so it can be a program name with args. set dummy sw_vers; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SW_VERS+:} false; then : $as_echo_n "(cached) " >&6 else case $SW_VERS in [\\/]* | ?:[\\/]*) ac_cv_path_SW_VERS="$SW_VERS" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_SW_VERS="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi SW_VERS=$ac_cv_path_SW_VERS if test -n "$SW_VERS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SW_VERS" >&5 $as_echo "$SW_VERS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$SW_VERS" != "x"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking Mac OS X version" >&5 $as_echo_n "checking Mac OS X version... " >&6; } MACOSX_VERSION=`$SW_VERS -productVersion` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MACOSX_VERSION" >&5 $as_echo "$MACOSX_VERSION" >&6; } fi FRONTEND_LIBS="$FRONTEND_LIBS -headerpad_max_install_names " if test x"$enable_OSXAPP" = x"yes" ; then FRONTEND_LIBS="$FRONTEND_LIBS -lgtkmacintegration-gtk2" fi FRONTEND_CFLAGS="$FRONTEND_CFLAGS -I/opt/local/include -L/opt/local/lib" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ptys or pipes should be used" >&5 $as_echo_n "checking whether ptys or pipes should be used... " >&6; } # Check whether --enable-ptys was given. if test "${enable_ptys+set}" = set; then : enableval=$enable_ptys; if test "$enableval" = yes; then USE_PTYS=1 enable_ptys="ptys" { $as_echo "$as_me:${as_lineno-$LINENO}: result: ptys (user override)" >&5 $as_echo "ptys (user override)" >&6; } fi if test "$enableval" = no; then USE_PTYS=0 enable_ptys="pipes" { $as_echo "$as_me:${as_lineno-$LINENO}: result: pipes (user override)" >&5 $as_echo "pipes (user override)" >&6; } fi else if test "$USE_PTYS" = 1; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: ptys" >&5 $as_echo "ptys" >&6; } enable_ptys="ptys" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: pipes" >&5 $as_echo "pipes" >&6; } enable_ptys="pipes" fi fi cat >>confdefs.h <<_ACEOF #define USE_PTYS $USE_PTYS _ACEOF # Check whether --enable-zippy was given. if test "${enable_zippy+set}" = set; then : enableval=$enable_zippy; else enable_zippy="no" fi if test x"$enable_zippy" != x"no"; then $as_echo "#define ZIPPY 1" >>confdefs.h else $as_echo "#define ZIPPY 0" >>confdefs.h fi if test x$enable_zippy != xno; then ZIPPY_TRUE= ZIPPY_FALSE='#' else ZIPPY_TRUE='#' ZIPPY_FALSE= fi # Check whether --enable-sigint was given. if test "${enable_sigint+set}" = set; then : enableval=$enable_sigint; if test "$enableval" = yes; then $as_echo "#define ATTENTION 1" >>confdefs.h fi enable_sigint=$enableval else enable_sigint="yes" $as_echo "#define ATTENTION 1" >>confdefs.h fi if test x"$with_Xaw3d" = x"yes" -o x"$with_Xaw" = x"yes" ; then X_LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS -lXmu -lX11 -lXt " fi CONFIGURE_OPTIONS="prefix=$prefix; datarootdir=$datarootdir; \ datadir=$datadir; gamedatadir=$GAMEDATADIR; desktopdir=$DESKTOPDIR; \ mimedir=$MIMEDIR; iconsdir=$ICONSDIR; svgiconsdir=$SVGICONSDIR; infodir=$infodir; \ sysconfigdir=$sysconfigdir; update_mimedb=$enable_mimedb; NLS=$USE_NLS; \ GTK=$with_GTK; Xaw3d=$with_Xaw3d; Xaw=$with_Xaw; \ ptys=$enable_ptys; zippy=$enable_zippy; sigint=$enable_sigint" ac_config_files="$ac_config_files Makefile cmail po/Makefile.in osxapp/Info.plist" ac_config_commands="$ac_config_commands test-stamp-h" ac_config_commands="$ac_config_commands chmod-cmail" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${OSX_APP_TRUE}" && test -z "${OSX_APP_FALSE}"; then as_fn_error $? "conditional \"OSX_APP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${NLS_ENABLED_TRUE}" && test -z "${NLS_ENABLED_FALSE}"; then as_fn_error $? "conditional \"NLS_ENABLED\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_UPDATE_MIMEDB_TRUE}" && test -z "${ENABLE_UPDATE_MIMEDB_FALSE}"; then as_fn_error $? "conditional \"ENABLE_UPDATE_MIMEDB\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${withGTK_TRUE}" && test -z "${withGTK_FALSE}"; then as_fn_error $? "conditional \"withGTK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${withXaw_TRUE}" && test -z "${withXaw_FALSE}"; then as_fn_error $? "conditional \"withXaw\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ZIPPY_TRUE}" && test -z "${ZIPPY_FALSE}"; then as_fn_error $? "conditional \"ZIPPY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by xboard $as_me 4.9.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ xboard config.status 4.9.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "cmail") CONFIG_FILES="$CONFIG_FILES cmail" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; "osxapp/Info.plist") CONFIG_FILES="$CONFIG_FILES osxapp/Info.plist" ;; "test-stamp-h") CONFIG_COMMANDS="$CONFIG_COMMANDS test-stamp-h" ;; "chmod-cmail") CONFIG_COMMANDS="$CONFIG_COMMANDS chmod-cmail" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "test-stamp-h":C) test -z "$CONFIG_HEADERS" || date > stamp-h ;; "chmod-cmail":C) chmod 755 cmail ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo "" echo " Configurations summary:" echo "" echo " prefix: $prefix " echo " datarootdir: $datarootdir " echo " datadir: $datadir " echo " gamedatadir: $GAMEDATADIR " echo " desktopdir: $DESKTOPDIR " echo " mimedir: $MIMEDIR " echo " iconsdir: $ICONSDIR " echo " svgiconsdir: $SVGICONSDIR " echo " infodir: $infodir (info files will go here)" echo " sysconfdir: $sysconfdir (xboard.conf will go here)" echo "" echo " update mimedb: $enable_mimedb" echo "" echo " NLS support: $USE_NLS" echo "" echo " GTK: $with_GTK" echo " Xaw3d: $with_Xaw3d" echo " Xaw: $with_Xaw" echo "" echo " ptys: $enable_ptys" echo " zippy: $enable_zippy" echo " sigint: $enable_sigint" xboard-4.9.1/draw.c0000644000175000001440000011117212717001265011026 00000000000000/* * draw.c -- drawing routines for XBoard * * Copyright 1991 by Digital Equipment Corporation, Maynard, * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * The following terms apply to Digital Equipment Corporation's copyright * interest in XBoard: * ------------------------------------------------------------------------ * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Digital not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * ------------------------------------------------------------------------ * * The following terms apply to the enhanced version of XBoard * distributed by the Free Software Foundation: * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include #include #include #include #include #include #if STDC_HEADERS # include # include #else /* not STDC_HEADERS */ extern char *getenv(); # if HAVE_STRING_H # include # else /* not HAVE_STRING_H */ # include # endif /* not HAVE_STRING_H */ #endif /* not STDC_HEADERS */ #if ENABLE_NLS #include #endif #include "common.h" #include "backend.h" #include "board.h" #include "menus.h" #include "dialogs.h" #include "evalgraph.h" #include "gettext.h" #include "draw.h" #ifdef __EMX__ #ifndef HAVE_USLEEP #define HAVE_USLEEP #endif #define usleep(t) _sleep2(((t)+500)/1000) #endif #ifdef ENABLE_NLS # define _(s) gettext (s) # define N_(s) gettext_noop (s) #else # define _(s) (s) # define N_(s) s #endif #define SOLID 0 #define OUTLINE 1 Boolean cairoAnimate; Option *currBoard; cairo_surface_t *csBoardWindow; static cairo_surface_t *pngPieceImages[2][(int)BlackPawn]; // png 256 x 256 images static cairo_surface_t *pngPieceBitmaps[2][(int)BlackPawn]; // scaled pieces as used static cairo_surface_t *pngPieceBitmaps2[2][(int)BlackPawn]; // scaled pieces in store static RsvgHandle *svgPieces[2][(int)BlackPawn]; // vector pieces in store static cairo_surface_t *pngBoardBitmap[2], *pngOriginalBoardBitmap[2]; int useTexture, textureW[2], textureH[2]; #define pieceToSolid(piece) &pieceBitmap[SOLID][(piece) % (int)BlackPawn] #define pieceToOutline(piece) &pieceBitmap[OUTLINE][(piece) % (int)BlackPawn] #define White(piece) ((int)(piece) < (int)BlackPawn) char svgDir[MSG_SIZ] = SVGDIR; char *crWhite = "#FFFFB0"; char *crBlack = "#AD5D3D"; struct { int x1, x2, y1, y2; } gridSegments[BOARD_RANKS + BOARD_FILES + 2]; void SwitchWindow (int main) { currBoard = (main ? &mainOptions[W_BOARD] : &dualOptions[3]); // CsBoardWindow = DRAWABLE(currBoard); } static void NewCanvas (Option *graph) { cairo_t *cr; int w = graph->max, h = graph->value; if(graph->choice) cairo_surface_destroy((cairo_surface_t *) graph->choice); graph->choice = (char**) cairo_image_surface_create (CAIRO_FORMAT_ARGB32, w, h); // paint white, to prevent weirdness when people maximize window and drag pieces over space next to board cr = cairo_create ((cairo_surface_t *) graph->choice); cairo_rectangle (cr, 0, 0, w, h); cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 1.0); cairo_fill(cr); cairo_destroy (cr); graph->min &= ~REPLACE; } static cairo_surface_t * CsBoardWindow (Option *opt) { // test before every draw event if we need to resize the canvas if(opt->min & REPLACE) NewCanvas(opt); return DRAWABLE(opt); } void SelectPieces(VariantClass v) { int i; for(i=0; i<2; i++) { int p; for(p=0; p<=(int)WhiteKing; p++) pngPieceBitmaps[i][p] = pngPieceBitmaps2[i][p]; // defaults if(v == VariantShogi && BOARD_HEIGHT != 7) { // no exceptions in Tori Shogi pngPieceBitmaps[i][(int)WhiteCannon] = pngPieceBitmaps2[i][(int)WhiteTokin]; pngPieceBitmaps[i][(int)WhiteNightrider] = pngPieceBitmaps2[i][(int)WhitePKnight]; pngPieceBitmaps[i][(int)WhiteGrasshopper] = pngPieceBitmaps2[i][(int)WhitePLance]; pngPieceBitmaps[i][(int)WhiteSilver] = pngPieceBitmaps2[i][(int)WhitePSilver]; pngPieceBitmaps[i][(int)WhiteQueen] = pngPieceBitmaps2[i][(int)WhiteLance]; pngPieceBitmaps[i][(int)WhiteFalcon] = pngPieceBitmaps2[i][(int)WhiteMonarch]; // for Sho Shogi } #ifdef GOTHIC if(v == VariantGothic) { pngPieceBitmaps[i][(int)WhiteMarshall] = pngPieceBitmaps2[i][(int)WhiteSilver]; } #endif if(v == VariantSChess) { pngPieceBitmaps[i][(int)WhiteAngel] = pngPieceBitmaps2[i][(int)WhiteFalcon]; pngPieceBitmaps[i][(int)WhiteMarshall] = pngPieceBitmaps2[i][(int)WhiteAlfil]; } if(v == VariantChuChess) { pngPieceBitmaps[i][(int)WhiteNightrider] = pngPieceBitmaps2[i][(int)WhiteLion]; } } } #define BoardSize int void InitDrawingSizes (BoardSize boardSize, int flags) { // [HGM] resize is functional now, but for board format changes only (nr of ranks, files) int boardWidth, boardHeight; static int oldWidth, oldHeight; static VariantClass oldVariant; static int oldTwoBoards = 0, oldNrOfFiles = 0; if(!mainOptions[W_BOARD].handle) return; if(boardSize == -2 && gameInfo.variant != oldVariant && oldNrOfFiles && oldNrOfFiles != BOARD_WIDTH) { // called because variant switch changed board format squareSize = ((squareSize + lineGap) * oldNrOfFiles + 0.5*BOARD_WIDTH) / BOARD_WIDTH; // keep total width fixed if(appData.overrideLineGap < 0) lineGap = squareSize < 37 ? 1 : squareSize < 59 ? 2 : squareSize < 116 ? 3 : 4; squareSize -= lineGap; CreatePNGPieces(appData.pieceDirectory); CreateGrid(); } oldNrOfFiles = BOARD_WIDTH; if(oldTwoBoards && !twoBoards) PopDown(DummyDlg); oldTwoBoards = twoBoards; if(appData.overrideLineGap >= 0) lineGap = appData.overrideLineGap; boardWidth = lineGap + BOARD_WIDTH * (squareSize + lineGap); boardHeight = lineGap + BOARD_HEIGHT * (squareSize + lineGap); if(boardWidth != oldWidth || boardHeight != oldHeight) { // do resizing stuff only if size actually changed oldWidth = boardWidth; oldHeight = boardHeight; CreateGrid(); CreateAnyPieces(0); // redo texture scaling /* * Inhibit shell resizing. */ ResizeBoardWindow(boardWidth, boardHeight, 0); DelayedDrag(); } // [HGM] pieces: tailor piece bitmaps to needs of specific variant // (only for xpm) if(gameInfo.variant != oldVariant) { // and only if variant changed SelectPieces(gameInfo.variant); oldVariant = gameInfo.variant; } CreateAnimVars(); } void ExposeRedraw (Option *graph, int x, int y, int w, int h) { // copy a selected part of the buffer bitmap to the display cairo_t *cr = cairo_create((cairo_surface_t *) graph->textValue); cairo_set_source_surface(cr, (cairo_surface_t *) graph->choice, 0, 0); cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); cairo_rectangle(cr, x, y, w, h); cairo_fill(cr); cairo_destroy(cr); } static int modV[2], modH[2]; static void CreatePNGBoard (char *s, int kind) { float w, h; static float n[2] = { 1., 1. }; if(!appData.useBitmaps || s == NULL || *s == 0 || *s == '*') { useTexture &= ~(kind+1); return; } textureW[kind] = 0; // prevents bitmap from being used if not succesfully loaded if(strstr(s, ".png")) { cairo_surface_t *img = cairo_image_surface_create_from_png (s); if(cairo_surface_status(img) == CAIRO_STATUS_SUCCESS) { char c, *p = s, *q; int r, f; if(pngOriginalBoardBitmap[kind]) cairo_surface_destroy(pngOriginalBoardBitmap[kind]); if(n[kind] != 1.) cairo_surface_destroy(pngBoardBitmap[kind]); useTexture |= kind + 1; pngOriginalBoardBitmap[kind] = img; w = textureW[kind] = cairo_image_surface_get_width (img); h = textureH[kind] = cairo_image_surface_get_height (img); transparency[kind] = cairo_image_surface_get_format (img) == CAIRO_FORMAT_ARGB32; n[kind] = 1.; modV[kind] = modH[kind] = -1; while((q = strchr(p+1, '-'))) p = q; // find last '-' if(strlen(p) < 11 && sscanf(p, "-%dx%d.pn%c", &f, &r, &c) == 3 && c == 'g') { if(f == 0 || r == 0) f = BOARD_WIDTH, r = BOARD_HEIGHT; // 0x0 means 'fits any', so make it fit textureW[kind] = (w*BOARD_WIDTH)/f; // sync cutting locations with square pattern textureH[kind] = (h*BOARD_HEIGHT)/r; n[kind] = (r*squareSize + 0.99)/h; // scale to make it fit exactly vertically modV[kind] = r; modH[kind] = f; } else if((p = strstr(s, "xq")) && (p == s || p[-1] == '/')) { // assume full-board image for Xiangqi while(0.8*squareSize*BOARD_WIDTH > n[kind]*w || 0.8*squareSize*BOARD_HEIGHT > n[kind]*h) n[kind]++; } else { while(squareSize > n[kind]*w || squareSize > n[kind]*h) n[kind]++; } if(n[kind] == 1.) pngBoardBitmap[kind] = img; else { // create scaled-up copy of the raw png image when it was too small cairo_surface_t *cs = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, n[kind]*w, n[kind]*h); cairo_t *cr = cairo_create(cs); pngBoardBitmap[kind] = cs; textureW[kind] *= n[kind]; textureH[kind] *= n[kind]; // cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); cairo_scale(cr, n[kind], n[kind]); cairo_set_source_surface (cr, img, 0, 0); cairo_paint (cr); cairo_destroy (cr); } } } } char *pngPieceNames[] = // must be in same order as internal piece encoding { "Pawn", "Knight", "Bishop", "Rook", "Queen", "Advisor", "Elephant", "Archbishop", "Marshall", "Gold", "Commoner", "Canon", "Nightrider", "CrownedBishop", "CrownedRook", "Crown", "Chancellor", "Hawk", "Lance", "Cobra", "Unicorn", "Lion", "Sword", "Zebra", "Camel", "Tower", "Wolf", "Hat", "Duck", "Lance", "Dragon", "Gnu", "Cub", "LShield", "Pegasus", "Wizard", "Copper", "Iron", "Viking", "Flag", "Axe", "Dolphin", "Leopard", "Claw", "Left", "Butterfly", "PromoBishop", "PromoRook", "HCrown", "RShield", "Prince", "Phoenix", "Kylin", "Drunk", "Right", "GoldPawn", "GoldKnight", "PromoHorse", "PromoDragon", "GoldLance", "GoldSilver", "HSword", "PromoSword", "PromoHSword", "Princess", "King", NULL }; char *backupPiece[] = { // pieces that map on other in default theme ("Crown" - "Drunk") "Princess", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "Chancellor", NULL, NULL, "Knight", NULL, "Commoner", NULL, NULL, NULL, "Canon", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "King", "Queen", "Lion", "Elephant" }; RsvgHandle * LoadSVG (char *dir, int color, int piece, int retry) { char buf[MSG_SIZ]; RsvgHandle *svg=svgPieces[color][piece]; RsvgDimensionData svg_dimensions; GError *svgerror=NULL; cairo_surface_t *img; cairo_t *cr; char *name = (retry ? backupPiece[piece - WhiteGrasshopper] : pngPieceNames[piece]); if(!name) return NULL; snprintf(buf, MSG_SIZ, "%s/%s%s.svg", dir, color ? "Black" : "White", name); if(!svg && *dir) { svg = rsvg_handle_new_from_file(buf, &svgerror); if(!svg) { // failed! If -pid name starts with "sub_" we try to load the piece from the parent directory char *p = buf, *q; safeStrCpy(buf, dir, MSG_SIZ); while((q = strchr(p, '/'))) p = q + 1; if(!strncmp(p, "sub_", 4)) { if(p == buf) safeStrCpy(buf, ".", MSG_SIZ); else p[-1] = NULLCHAR; // strip last directory off path return LoadSVG(buf, color, piece, retry); } } if(!svg && *appData.inscriptions) { // if there is no piece-specific SVG, but we make inscriptions, try general background snprintf(buf, MSG_SIZ, "%s/%sTile.svg", dir, color ? "Black" : "White"); svg = rsvg_handle_new_from_file(buf, &svgerror); } } if(svg) { rsvg_handle_get_dimensions(svg, &svg_dimensions); img = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, squareSize, squareSize); cr = cairo_create(img); cairo_scale(cr, squareSize/(double) svg_dimensions.width, squareSize/(double) svg_dimensions.height); rsvg_handle_render_cairo(svg, cr); if(cairo_surface_status(img) == CAIRO_STATUS_SUCCESS) { if(pngPieceImages[color][piece]) cairo_surface_destroy(pngPieceImages[color][piece]); pngPieceImages[color][piece] = img; } cairo_destroy(cr); return svg; } if(!retry && piece >= WhiteGrasshopper && piece <= WhiteDrunk) // pieces that are only different in kanji sets return LoadSVG(dir, color, piece, 1); if(svgerror) g_error_free(svgerror); return NULL; } static void ScaleOnePiece (int color, int piece, char *pieceDir) { float w, h; char buf[MSG_SIZ]; cairo_surface_t *img, *cs; cairo_t *cr; g_type_init (); svgPieces[color][piece] = LoadSVG("", color, piece, 0); // this fills pngPieceImages if we had cached svg with bitmap of wanted size if(!pngPieceImages[color][piece]) { // we don't have cached bitmap (implying we did not have cached svg) if(*pieceDir) { // user specified piece directory snprintf(buf, MSG_SIZ, "%s/%s%s.png", pieceDir, color ? "Black" : "White", pngPieceNames[piece]); img = cairo_image_surface_create_from_png (buf); // try if there are png pieces there if(cairo_surface_status(img) != CAIRO_STATUS_SUCCESS) { // there were not svgPieces[color][piece] = LoadSVG(pieceDir, color, piece, 0); // so try if he has svg there } else pngPieceImages[color][piece] = img; } } if(!pngPieceImages[color][piece]) { // we still did not manage to acquire a piece bitmap static int warned = 0; if(!(svgPieces[color][piece] = LoadSVG(svgDir, color, piece, 0)) // try to fall back on installed svg && !warned && strcmp(pngPieceNames[piece], "Tile")) { // but do not complain about missing 'Tile' char *msg = _("No default pieces installed!\nSelect your own using '-pieceImageDirectory'."); printf("%s (%s)\n", msg, pngPieceNames[piece]); // give up DisplayError(msg, 0); warned = 1; // prevent error message being repeated for each piece type } } img = pngPieceImages[color][piece]; // create new bitmap to hold scaled piece image (and remove any old) if(pngPieceBitmaps2[color][piece]) cairo_surface_destroy (pngPieceBitmaps2[color][piece]); pngPieceBitmaps2[color][piece] = cs = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, squareSize, squareSize); if(!img) return; // scaled copying of the raw png image cr = cairo_create(cs); w = cairo_image_surface_get_width (img); h = cairo_image_surface_get_height (img); cairo_scale(cr, squareSize/w, squareSize/h); cairo_set_source_surface (cr, img, 0, 0); cairo_paint (cr); cairo_destroy (cr); if(!appData.trueColors || !*pieceDir) { // operate on bitmap to color it (king-size hack...) int stride = cairo_image_surface_get_stride(cs)/4; int *buf = (int *) cairo_image_surface_get_data(cs); int i, j, p; sscanf(color ? appData.blackPieceColor+1 : appData.whitePieceColor+1, "%x", &p); // replacement color cairo_surface_flush(cs); for(i=0; i> 24; r = c >> 16 & 255; // alpha and red, where red is the 'white' weight, since white is #FFFFCC in the source images f = (color ? a - r : r)/255.; // fraction of black or white in the mix that has to be replaced buf[i*stride + j] = c & 0xFF000000; // alpha channel is kept at same opacity buf[i*stride + j] += ((int)(f*(p&0xFF0000)) & 0xFF0000) + ((int)(f*(p&0xFF00)) & 0xFF00) + (int)(f*(p&0xFF)); // add desired fraction of new color if(color) buf[i*stride + j] += r | r << 8 | r << 16; // details on black pieces get their weight added in pure white if(appData.monoMode) { if(a < 64) buf[i*stride + j] = 0; // if not opaque enough, totally transparent else if(2*r < a) buf[i*stride + j] = 0xFF000000; // if not light enough, totally black else buf[i*stride + j] = 0xFFFFFFFF; // otherwise white } } cairo_surface_mark_dirty(cs); } } void CreatePNGPieces (char *pieceDir) { int p; for(p=0; pngPieceNames[p]; p++) { ScaleOnePiece(0, p, pieceDir); ScaleOnePiece(1, p, pieceDir); } SelectPieces(gameInfo.variant); } void CreateAnyPieces (int p) { // [HGM] taken out of main if(p) CreatePNGPieces(appData.pieceDirectory); CreatePNGBoard(appData.liteBackTextureFile, 1); CreatePNGBoard(appData.darkBackTextureFile, 0); } static void ClearPieces () { int i, p; for(i=0; i<2; i++) for(p=0; p> 4*n & 255; return c/255.; } void SetPen (cairo_t *cr, float w, char *col, int dash) { static const double dotted[] = {4.0, 4.0}; static int len = sizeof(dotted) / sizeof(dotted[0]); cairo_set_line_width (cr, w); cairo_set_source_rgba (cr, Color(col, 4), Color(col, 2), Color(col, 0), 1.0); if(dash) cairo_set_dash (cr, dotted, len, 0.0); } void DrawSeekAxis( int x, int y, int xTo, int yTo ) { cairo_t *cr; /* get a cairo_t */ cr = cairo_create (CsBoardWindow(currBoard)); cairo_move_to (cr, x, y); cairo_line_to(cr, xTo, yTo ); SetPen(cr, 2, "#000000", 0); cairo_stroke(cr); /* free memory */ cairo_destroy (cr); GraphExpose(currBoard, x-1, yTo-1, xTo-x+2, y-yTo+2); } void DrawSeekBackground( int left, int top, int right, int bottom ) { cairo_t *cr = cairo_create (CsBoardWindow(currBoard)); cairo_rectangle (cr, left, top, right-left, bottom-top); cairo_set_source_rgba(cr, 0.8, 0.8, 0.4,1.0); cairo_fill(cr); /* free memory */ cairo_destroy (cr); GraphExpose(currBoard, left, top, right-left, bottom-top); } void DrawSeekText(char *buf, int x, int y) { cairo_t *cr = cairo_create (CsBoardWindow(currBoard)); cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, 12.0); cairo_move_to (cr, x, y+4); cairo_set_source_rgba(cr, 0, 0, 0,1.0); cairo_show_text( cr, buf); /* free memory */ cairo_destroy (cr); GraphExpose(currBoard, x-5, y-10, 60, 15); } void DrawSeekDot(int x, int y, int colorNr) { cairo_t *cr = cairo_create (CsBoardWindow(currBoard)); int square = colorNr & 0x80; colorNr &= 0x7F; if(square) cairo_rectangle (cr, x-squareSize/9, y-squareSize/9, 2*(squareSize/9), 2*(squareSize/9)); else cairo_arc(cr, x, y, squareSize/9, 0.0, 2*M_PI); SetPen(cr, 2, "#000000", 0); cairo_stroke_preserve(cr); switch (colorNr) { case 0: cairo_set_source_rgba(cr, 1.0, 0, 0,1.0); break; case 1: cairo_set_source_rgba (cr, 0.0, 0.7, 0.2, 1.0); break; default: cairo_set_source_rgba (cr, 1.0, 1.0, 0.0, 1.0); break; } cairo_fill(cr); /* free memory */ cairo_destroy (cr); GraphExpose(currBoard, x-squareSize/8, y-squareSize/8, 2*(squareSize/8), 2*(squareSize/8)); } void InitDrawingHandle (Option *opt) { // CsBoardWindow = DRAWABLE(opt); currBoard = opt; } void CreateGrid () { int i, j; if (lineGap == 0) return; /* [HR] Split this into 2 loops for non-square boards. */ for (i = 0; i < BOARD_HEIGHT + 1; i++) { gridSegments[i].x1 = 0; gridSegments[i].x2 = lineGap + BOARD_WIDTH * (squareSize + lineGap); gridSegments[i].y1 = gridSegments[i].y2 = lineGap / 2 + (i * (squareSize + lineGap)); } for (j = 0; j < BOARD_WIDTH + 1; j++) { gridSegments[j + i].y1 = 0; gridSegments[j + i].y2 = lineGap + BOARD_HEIGHT * (squareSize + lineGap); gridSegments[j + i].x1 = gridSegments[j + i].x2 = lineGap / 2 + (j * (squareSize + lineGap)); } } void DrawGrid() { /* draws a grid starting around Nx, Ny squares starting at x,y */ int i; float odd = (lineGap & 1)/2.; cairo_t *cr; /* get a cairo_t */ cr = cairo_create (CsBoardWindow(currBoard)); cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); SetPen(cr, lineGap, "#000000", 0); /* lines in X */ for (i = 0; i < BOARD_WIDTH + BOARD_HEIGHT + 2; i++) { int h = (gridSegments[i].y1 == gridSegments[i].y2); // horizontal cairo_move_to (cr, gridSegments[i].x1 + !h*odd, gridSegments[i].y1 + h*odd); cairo_line_to (cr, gridSegments[i].x2 + !h*odd, gridSegments[i].y2 + h*odd); cairo_stroke (cr); } /* free memory */ cairo_destroy (cr); return; } void DrawBorder (int x, int y, int type, int odd) { cairo_t *cr; char *col; switch(type) { case 0: col = "#000000"; break; case 1: col = appData.highlightSquareColor; break; case 2: col = appData.premoveHighlightColor; break; default: col = "#808080"; break; // cannot happen } cr = cairo_create(CsBoardWindow(currBoard)); cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); cairo_rectangle(cr, x+odd/2., y+odd/2., squareSize+lineGap, squareSize+lineGap); SetPen(cr, lineGap, col, 0); cairo_stroke(cr); cairo_destroy(cr); // GraphExpose(currBoard, x - lineGap/2, y - lineGap/2, squareSize+2*lineGap+odd, squareSize+2*lineGap+odd); } static int CutOutSquare (int x, int y, int *x0, int *y0, int kind) { int W = BOARD_WIDTH, H = BOARD_HEIGHT; int nx = x/(squareSize + lineGap), ny = y/(squareSize + lineGap); *x0 = 0; *y0 = 0; if(textureW[kind] < squareSize || textureH[kind] < squareSize) return 0; if(modV[kind] > 0) nx %= modH[kind], ny %= modV[kind]; // tile fixed-format board periodically to extend it if(textureW[kind] < W*squareSize) *x0 = (textureW[kind] - squareSize) * nx/(W-1); else *x0 = textureW[kind]*nx / W + (textureW[kind] - W*squareSize) / (2*W); if(textureH[kind] < H*squareSize) *y0 = (textureH[kind] - squareSize) * ny/(H-1); else *y0 = textureH[kind]*ny / H + (textureH[kind] - H*squareSize) / (2*H); return 1; } void DrawLogo (Option *opt, void *logo) { cairo_surface_t *img; cairo_t *cr; int w, h; if(!opt) return; cr = cairo_create(CsBoardWindow(opt)); cairo_rectangle (cr, 0, 0, opt->max, opt->value); cairo_set_source_rgba(cr, 0.5, 0.5, 0.5, 1.0); cairo_fill(cr); // paint background in case logo does not exist if(logo) { img = cairo_image_surface_create_from_png (logo); if(cairo_surface_status(img) == CAIRO_STATUS_SUCCESS) { w = cairo_image_surface_get_width (img); h = cairo_image_surface_get_height (img); // cairo_scale(cr, (float)appData.logoSize/w, appData.logoSize/(2.*h)); cairo_scale(cr, (float)opt->max/w, (float)opt->value/h); cairo_set_source_surface (cr, img, 0, 0); cairo_paint (cr); } cairo_surface_destroy (img); } cairo_destroy (cr); GraphExpose(opt, 0, 0, opt->max, opt->value); } static void BlankSquare (cairo_surface_t *dest, int x, int y, int color, ChessSquare piece, int fac) { // [HGM] extra param 'fac' for forcing destination to (0,0) for copying to animation buffer int x0, y0, texture = (useTexture & color+1) && CutOutSquare(x, y, &x0, &y0, color); cairo_t *cr; cr = cairo_create (dest); if(!texture || transparency[color]) // draw color also (as background) when texture could be transparent { // evenly colored squares char *col = NULL; switch (color) { case 0: col = appData.darkSquareColor; break; case 1: col = appData.lightSquareColor; break; case 2: col = "#000000"; break; default: col = "#808080"; break; // cannot happen } SetPen(cr, 2.0, col, 0); cairo_rectangle (cr, fac*x, fac*y, squareSize, squareSize); cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); cairo_fill (cr); } if (texture) { cairo_set_source_surface (cr, pngBoardBitmap[color], x*fac - x0, y*fac - y0); cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); cairo_rectangle (cr, x*fac, y*fac, squareSize, squareSize); cairo_fill (cr); } cairo_destroy (cr); } static void pngDrawPiece (cairo_surface_t *dest, ChessSquare piece, int square_color, int x, int y) { int kind; cairo_t *cr; if ((int)piece < (int) BlackPawn) { kind = 0; } else { kind = 1; piece -= BlackPawn; } if(piece == WhiteKing && kind == appData.jewelled) piece = WhiteZebra; if(appData.upsideDown && flipView) kind = 1 - kind; // swap white and black pieces BlankSquare(dest, x, y, square_color, piece, 1); // erase previous contents with background cr = cairo_create (dest); cairo_set_source_surface (cr, pngPieceBitmaps[kind][piece], x, y); cairo_paint(cr); cairo_destroy (cr); } static char *markerColor[8] = { "#FFFF00", "#FF0000", "#00FF00", "#0000FF", "#00FFFF", "#FF00FF", "#FFFFFF", "#000000" }; void DoDrawDot (cairo_surface_t *cs, int marker, int x, int y, int r) { cairo_t *cr; cr = cairo_create(cs); cairo_arc(cr, x+r/2, y+r/2, r/2, 0.0, 2*M_PI); if(appData.monoMode) { SetPen(cr, 2, marker == 2 ? "#000000" : "#FFFFFF", 0); cairo_stroke_preserve(cr); SetPen(cr, 2, marker == 2 ? "#FFFFFF" : "#000000", 0); } else { SetPen(cr, 2, markerColor[marker-1], 0); } cairo_fill(cr); cairo_destroy(cr); } void DrawDot (int marker, int x, int y, int r) { // used for atomic captures; no need to draw on backup DoDrawDot(CsBoardWindow(currBoard), marker, x, y, r); GraphExpose(currBoard, x-r, y-r, 2*r, 2*r); } static void DrawUnicode (cairo_surface_t *canvas, char *string, int x, int y, char id, int flip, int size, int vpos) { // cairo_text_extents_t te; cairo_t *cr; int s = 1 - 2*flip; PangoLayout *layout; PangoFontDescription *desc; PangoRectangle r; char fontName[MSG_SIZ]; cr = cairo_create (canvas); layout = pango_cairo_create_layout(cr); pango_layout_set_text(layout, string, -1); snprintf(fontName, MSG_SIZ, "Sans Normal %dpx", size*squareSize/64); desc = pango_font_description_from_string(fontName); pango_layout_set_font_description(layout, desc); pango_font_description_free(desc); pango_layout_get_pixel_extents(layout, NULL, &r); cairo_translate(cr, x + squareSize/2 - s*r.width/2, y + (32+vpos*s)*squareSize/64 - s*r.height/2); if(s < 0) cairo_rotate(cr, G_PI); cairo_set_source_rgb(cr, (id == '+' ? 1.0 : 0.0), 0.0, 0.0); pango_cairo_update_layout(cr, layout); pango_cairo_show_layout(cr, layout); g_object_unref(layout); cairo_destroy(cr); } void DrawText (char *string, int x, int y, int align) { int xx = x, yy = y; cairo_text_extents_t te; cairo_t *cr; cr = cairo_create (CsBoardWindow(currBoard)); cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); cairo_set_font_size (cr, align < 0 ? 2*squareSize/3 : squareSize/4); // calculate where it goes cairo_text_extents (cr, string, &te); if (align == 1) { xx += squareSize - te.width - te.x_bearing - 1; yy += squareSize - te.height - te.y_bearing - 1; } else if (align == 2) { xx += te.x_bearing + 1, yy += -te.y_bearing + 1; } else if (align == 3) { xx += squareSize - te.width -te.x_bearing - 1; yy += -te.y_bearing + 3; } else if (align == 4) { xx += te.x_bearing + 1, yy += -te.y_bearing + 3; } cairo_move_to (cr, xx-1, yy); if(align < 3) cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); else cairo_set_source_rgb (cr, 1.0, 1.0, 1.0); cairo_show_text (cr, string); cairo_destroy (cr); } void InscribeKanji (cairo_surface_t *canvas, ChessSquare piece, int x, int y) { char *p, *q, buf[20], nr = 1; int i, n, size = 40, flip = appData.upsideDown && flipView == (piece < BlackPawn); if(piece == EmptySquare) return; if(piece >= BlackPawn) piece = BLACK_TO_WHITE piece; p = appData.inscriptions; if(*p > '0' && *p < '3') nr = *p++ - '0'; // nr of kanji per piece n = piece; i = 0; while(piece > WhitePawn) { if(*p == '/') p++, piece = n - WhitePBishop; // secondary series if(*p++ == NULLCHAR) { if(n != WhiteKing) return; p = q; break; } q = p - 1; while((*p & 0xC0) == 0x80) p++; // skip UTF-8 continuation bytes if(*q != '.' && ++i < nr) continue; // yet more kanji for the current piece piece--; i = 0; } strncpy(buf, p, 20); for(q=buf; (*++q & 0xC0) == 0x80;); // skip first unicode if(nr > 1) { p = q; while((*++p & 0xC0) == 0x80) {} // skip second unicode *p = NULLCHAR; size = 30; i = 16; DrawUnicode(canvas, q, x, y, PieceToChar(n), flip, size, -10); } else i = 4; *q = NULLCHAR; DrawUnicode(canvas, buf, x, y, PieceToChar(n), flip, size, i); } void DrawOneSquare (int x, int y, ChessSquare piece, int square_color, int marker, char *tString, char *bString, int align) { // basic front-end board-draw function: takes care of everything that can be in square: // piece, background, coordinate/count, marker dot if (piece == EmptySquare) { BlankSquare(CsBoardWindow(currBoard), x, y, square_color, piece, 1); } else { pngDrawPiece(CsBoardWindow(currBoard), piece, square_color, x, y); if(appData.inscriptions[0]) InscribeKanji(CsBoardWindow(currBoard), piece, x, y); } if(align) { // square carries inscription (coord or piece count) if(align > 1) DrawText(tString, x, y, align); // top (rank or count) if(bString && *bString) DrawText(bString, x, y, 1); // bottom (always lower right file ID) } if(marker) { // print fat marker dot, if requested DoDrawDot(CsBoardWindow(currBoard), marker, x + squareSize/4, y+squareSize/4, squareSize/2); } } /**** Animation code by Hugh Fisher, DCS, ANU. ****/ /* Masks for XPM pieces. Black and white pieces can have different shapes, but in the interest of retaining my sanity pieces must have the same outline on both light and dark squares, and all pieces must use the same background square colors/images. */ static cairo_surface_t *c_animBufs[3*NrOfAnims]; // newBuf, saveBuf static void InitAnimState (AnimNr anr) { if(c_animBufs[anr]) cairo_surface_destroy (c_animBufs[anr]); if(c_animBufs[anr+2]) cairo_surface_destroy (c_animBufs[anr+2]); c_animBufs[anr+4] = CsBoardWindow(currBoard); c_animBufs[anr+2] = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, squareSize, squareSize); c_animBufs[anr] = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, squareSize, squareSize); } void CreateAnimVars () { InitAnimState(Game); InitAnimState(Player); } static void CairoOverlayPiece (ChessSquare piece, cairo_surface_t *dest) { static cairo_t *pieceSource; pieceSource = cairo_create (dest); cairo_set_source_surface (pieceSource, pngPieceBitmaps[!White(piece)][piece % BlackPawn], 0, 0); if(doubleClick) cairo_paint_with_alpha (pieceSource, 0.6); else cairo_paint(pieceSource); cairo_destroy (pieceSource); if(appData.inscriptions[0]) InscribeKanji(dest, piece, 0, 0); } void InsertPiece (AnimNr anr, ChessSquare piece) { CairoOverlayPiece(piece, c_animBufs[anr]); } void DrawBlank (AnimNr anr, int x, int y, int startColor) { BlankSquare(c_animBufs[anr+2], x, y, startColor, EmptySquare, 0); } void CopyRectangle (AnimNr anr, int srcBuf, int destBuf, int srcX, int srcY, int width, int height, int destX, int destY) { cairo_t *cr; c_animBufs[anr+4] = CsBoardWindow(currBoard); cr = cairo_create (c_animBufs[anr+destBuf]); cairo_set_source_surface (cr, c_animBufs[anr+srcBuf], destX - srcX, destY - srcY); cairo_rectangle (cr, destX, destY, width, height); cairo_fill (cr); cairo_destroy (cr); if(c_animBufs[anr+destBuf] == CsBoardWindow(currBoard)) // suspect that GTK needs this! GraphExpose(currBoard, destX, destY, width, height); } void SetDragPiece (AnimNr anr, ChessSquare piece) { } /* [AS] Arrow highlighting support */ void DoDrawPolygon (cairo_surface_t *cs, Pnt arrow[], int nr) { cairo_t *cr; int i; cr = cairo_create (cs); cairo_move_to (cr, arrow[nr-1].x, arrow[nr-1].y); for (i=0;i:C[Xeȏ{tsy}st{}}}zytrlihe^[][TSTVOIMVL>>>[Eks}sz}st}{wvvriehf][[ZWWVPSSOOMC<>rm?اzzwzwvy{}zwwtrkfeeb[ZXWSTPOLIML?5OJ]ŋ{w{y}zwvz}{ywtrliee^ZZXSPPMLOLFFH;ZC{ֲyw}{wvy}}}}{wslkie^[ZXPPOJJJIFC:f̳wsy}{tlrz{{{}}z{ysrokfd]ZWSMLHEE<8:ebAștvy}tlsy{{yvwvrmlid_[WTSMFC?;4?ozPX}yz}{smvzyz{}}}{}}{wtssmhed^XVTOJFCA:8_{dS{{zwwyvy{{zyyzzyz{{{zywvsrolhe_ZWSMLJE>:>dyeZzwyzyyz{zywwy{{wttvtmkihe_[VSOHA<87Tsres{yyz{{zwyyywwwwvvwywvtrlkkieb^[XTOLFAJ^ovyzy{yyzz{zywwwwyyzzzyywwvvssolifeb^[ZWSPV^ehhilow}}}{{zwtommossssrrooooomlheb^[XWTV]dfhfimt{}}}{yvromosttsroomoooomkheb^[XTV[dffehlsz}zwtrrrstsrommlllllifd_]ZVVZbeffehlt{yvtttvvvtroommlkihe_]XTTZ_efeehks}}zwvtvwvtsrromlkifeb]ZTTZbeeddfho{{ywvvwwvtsromlkheb_]XWZ_efedfhlw}{ywwwwvvtsromkhfd_]XX^defedfhmy{zywvvtttssomkhe_]Z[_ehheeeflv}{{zywvttttsrmieb^[^ehiifffhmv}{zzyywvvvvtsrmkfb_^dfhihfffiov{{ywwwwwwwvvwwwwvsoie^XSOPXer}zyz}{zz{}zwttvwyz{{}}}{{{zwslfb]WX_ly{wvwz{{ytrstvyzyywwyyyywvssromliedkt}vrtz}{yvtvvwzzyywvtttvwvtsrrstvvtssvz}{}{z{}}{ywwwwwwvsrsrookd]eoy}wosyzzyyz{}{yvwyy{}}{zyz}}}}zzyyzzywvtssstssssvvz}y{{z{{ytsrsstwyzyyvsrlhdhs{ztw{}}wvyz{}{{zzz{}}}}}{zyyywyyywywvvvvtvwyyzz{{}}}}{zyzzzywvttvwz{}}}{zyyyyyywsty}}yy{}}{{{}}}{zzyzz{{{{zywyywwywvwwwyyvtvvvvvwz{{z{}}}}}}}}}}}{}}}}{{zzyzzyvvsroolhdbhs}ytty}zz{}}}}}}}{zzz{zzywtrmheb_^bis{zvsty}{{zz{}}zyvtttsolhdb^^^_emy{yvwz}zyy{}{wtrmkkkiihe_[ZVV^r{zyw}{{zyz{}}}{zvrmkhikkhe^ZWTTVV]t{sszz{{yy{{vrommlkihedd_[WVTPPSWlvms{y}}}yvrlkkfb^]]^_[ZWVSJIFIbykry{{}}}}wtolifd_^]]][WVVMJJC77Xwelyz}}ww{}{tmiebb__b_^[XTPOIFA;48ihft}vry}}vokfd_][[]_]XTSJIF?;7.Is^{ztvy{tohed_[XZ[[ZZSLIFAA?71bdo}vvv}y}}{tmkhfd^ZWWTTTOMLIC>;8?8-HObúmi{wz{okms}zwzrrrmhb][__[XVTSOJA<:5&0^Swlzy}yloty{trsoke^dfdb^XWXSIE>::58Weýsw{oo}}rs{{}wtttsmffhhe^XVVPIA;:784VSszmir{wzzywyzwmffhe]WTPMLF<:;;70&mW{wztkkv}{{wz}wlfdeb[VVPLIJA;>><;*7heá{m{smmy}}z{{}zyz{tkeb^[]ZPJLMIC>>>;8*Altwv{rrsv}}}}zvtrib_bbZTSPOMMLHCEC;4Zh{}{wts{}zwvtsrliifeeb_^^]]ZXWSPMJXvzlv}{{}}}}yvy{}}{}}zywvtsomkhhhfe_^[XXVTOJM^hehir{zwwtwwtrrtyz{zz}}{ywtrmlkkieb^[[[XVSMLZhhhimzzwvvwwvsrswzz{{{}}}{zwtroomkhebb_][XVSPOSdoihms{{zwvvwwtrosvz{{{{{ywwvvsmkhhed_^]ZXWTPOMM^y}ov}{zzytsvyyywsrtw{{z{{{zyvssroomihffedb^[[][VVTPPSZy}o}wyyzvmloov{zyyy{{}}}yzzwwtommlkiffhhfd_^bb_^]^_[Z[WP_i{vtsy{rkow{zzww{}z}{}{zywwwtrrtvtrrsrmlllifffe_^df^X[Z^i}y}}zwyyyzywyzz{}}ztstw}}}zywyyywvsstsollmmiefhb^bd_bddddbfktzywyywwwwy{{zzzz{ywwy{{yz{zwwwyywwwvttvtoorrmkkkikihhkiehmiekmov{zzywwyyyyz{{zz{zywyz{{{zwwzzyvvwyyyyvtvvtrossrmmoommmmmoolhkmklmrw}{zzyzzz{{}}}}}}}{{{}}}}zvy{{wwyzzzyywvvvvrrstsoorrmmomklolikmoorw{}{{{{{{}}{{{{{}}{}}{{{{zzzz{{{{{{zzzywwwwvvttssttsrstrorromlklommv{}}}}}}}{{}yw{}{yz}}{{zwz}{z{}{zz{ywwwwwttwyvvwwvvwvttwwvtvwwwvvvwvtsrswzvw{z{{}}z{{z}}{}}}}{{}}{zzzzzywwwwwwvvwwwwyyyyz{zyyz{{z{}}{{{}{yy{}{yy}wy}vv{}wty}yy{}{}}{}{{}{y{{yz{zwy}yvyzyvw{zyz{{{z{{z{}{{{z{z}}{{}{}{}}{z}}}{}}{{}}}}}}}}}}}}{{{{}}}{{{}}}}}{}z}}}{{}z{{}}}}{{}}}}y{{}}}}}z{{{z}}}}{z}}z}}}z}{{y{{}{{z}{{z{}{}{{}z}{ww}w}z}y}w}}}{{}}z{{{}{}{}}{}}}{{{}}{}}yzz{}}{{{yzzz{{{yzyy{z}{{{wy{{}y}yy{}z{v{w{y}zy}}{}{z{z{{{}vr}zyyzy{zy{ywzz{{ww}zwtyzw{{yy{w{v{}y}{}{y{yz}vy}z}wwzv}{mvsvz}}w{}vyryy}wyzv}zyw{z{v}y{v{z{}{wyyvw}zzv}}}zwsvvy{w{zv}{ywyzzw{}z{{}w{{}s}twyt}}wzz}y}{{z}y}}{{z}}{w{{{{wyws}}vy}w{t}{vyzz{}v}rty{{tw}zzzzzyzwyyyrwtv{w{v{v}{}wzs}w{{{yzz{zv}z}y}}tzty}{ywtso{tzv{y}ttzzy}y}}zy{}zwsvr{s{}wyztytzyswzzw{{w}w{{zzytzz}t}{z{zwy}ywzzttyy{z{}{w}{}w}{yy}}zz}w{{}{z{zz{{}}{z{}}}{y{}{yzv{t}z{y}}}{{{z}z}}{{}y}}}{}{}}{}}}}}}}}{}{}}}}}}}{}}}{y{{}{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}{yyy}{z}{{}}}}}z}z}}z}}{{}}z{}yw{zwy{zw{wzyz{}}}zzz}yzzy{z{{{}{{{}zz}{}{z}}}{{}{}{}}{}}}}}}}{}}{}}{}}}}}}}}}{}}}}}{}}}}}}}}}}}}}}}}{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}{}}{}}}}}}}}}}}}}}}}}}}}{}}}}}{}}}}}{}}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~xboard-4.9.1/sounds/squeak.wav0000644000175000001440000000316412717001265013251 00000000000000RIFFlWAVEfmt **dataHpgfhjlhovh]agipompbffiginncccW\fjqpXZbmoilwd]ahgdmtzp[[\\^dj||cXZ^dfjxd[db`gkpf^d^_gipv\\]Y^jlwaM`ifjqut^\_dnhipX^cbnnlo\gnfcfvl`imggfp|cafcjjhh^jfepptqd^_k}ZZl`\dc|iV_`[Z]vnYac\Waadj`^^c{cmmadhqlaklfepgVgn`bnnRXjgbms_\`Y]loZ\b[WgiWalYOgaVag\bxu`^g]Tfh]`bRXjY\dWVxlfg`PNhwaZi_C_qih`^Xkrgfpcbsnvmf\vZYenjlZN\XSelXXMMZwWc`SKag`WR\tpokXMTofnf\ansp_^zmblg`riWig[hxX\jcdqR`m\XWJSW]vONYNUxKNSMagNVTNci`\NPwNS][j^PGHajPKFS|SEGPn]PNDZgRTJRvRPRRq~`WSPl^TTJ\wNKNH\pMRRCZmHPQMh\FWTEf]E[[DadM\VCdnLX^QbsRYbYaVOgi]j]_j\\z{c_caan|Y`dXV{p_gZSa{a\cg[`igk^Xcw`el`Wuitn]SepfacTaohhbSOuga`aXXyg[`kWQxke_`[ZpkUZgYNpt[U\`XdqWTea\igS^h[Upr\[ggYg{bZptflxijwpbdmqhmi^\fz~\isYSXhh]`VLT`~~TOXZ[\lkQZc_`guo\`b\kyv`Zekmf`QQkfadgdXjieokse]mldll{ySdrhkcasafia^in`X^bhb\wtTYf\^mo~^Q^binmxzodlm`l|xq\[dpvuymxboard-4.9.1/sounds/tell.wav0000644000175000001440000001313212717001265012714 00000000000000RIFFRWAVEfmt ++data.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~x{~{|~|~~|~|~|~~~{~{{|x{~|~~y~|~~{y~x{~y|{{v|yq{~|{~||{yxqv~y{s|{syx{~tt|~|{{vt~{~vpt{|yx{|sq~||v~xtv~vttn{{{xnx{v||{~~xy{||y~yy|y~qps|~|~||~|tstqy~yxy|vx~yy~yx|{yy~ynq|x{|y~~{y~yx{~x~qy{{{~|yyyx||v~{y~{||~y~{|~~~~~|{y|y{~|yx|y{{{{|~||y~{~|~y~y|{|{||~{{y{xy||~{|~|~~|~|~~~~{{{~|{|||~{|~~|~~~~~~|~~|~~~||~|~|{~{{|~~{~~||~|y~y~||~~|~{~~|~~|||~|{|~~|||||{~|~~~~~|{~~~~~~~~~~~|{{~~|{y|y|x{|{{vx{tt|vs{{vtv{|vx|||{x{~~{vx~~~~~|{yyxttssqqstsnpsnkkklkifhhddda^Vp~~~~~|{~|{xyyxtstspppnnnkllfcc`^[SSUPXvsv~{v|~y{|ytstvssqnnpqlhikf```^UPPKHQ{xnlsxxtt~~|xvxvsqstvtsqqnkhd`^]XSQKH@`ɹ~h]av|tqxysy|x{tv~|{{||ysnqtvspkiid^YVPNNH>8qඎnUM^yslx{kcn~|tnt{y{|{tnpv{xsnkhc^YSQQQKA8t߹qSFUvyn{{h^k{{x|xqs{ytx{xqlnttqia[USPIEF5P͛x]@Aavsż|yq]Ysqp{tpv|xtx{xplqtsk`YUSPKFE;]Ģ{s^EE^~xqqph`ntks|{x~~vpqxytppsph`XPIHIEFtıxi[MSi{xsqkdhy~npx~|~~qkptxqppnlcYQIEECSxdQHYs{tqnkhn|tnqx{~yplpqqpnlhc[SKEAA^tcMMd{plnnlp{~sqv{~~vsqsttqkd]VPI@>Hl~kXFNhxhfklpvxvxxv{~|~yttyyxtqkcYSMF@>IxylUESlqhklnt{|~~||~xtsv{|yvsnh]SIC>=V{viPMav~nknsx{~||{xtsv{|ytnh`XQMH;As{qxt]KYl~qlpsv||xxy{{{~~xnha[VSNH=FvpinqaQ^l|{pqvtv~{~xqv|~{tld^YXVSNFItlahpi]fqx~vpkq|~yy||~{vv{xpkd`][][YUIQth^cllfpxyqiiq|xy~|{{||{|~|slhdddddhd`VMSqnfhnpnv|{{nip~~{yy~{{~|~~yqlklllppnha]UIKakhcfhp{||vicky~{~{xx~|yxvvsqqssttsnic]UPNXv~qa[aft~yldhly~~~|{~|~||~|{{{yyy{|~|{xvvtsplhc^YUQVivdU[`p~tc]^fx{yvsxx{||~{xxvxy~|xtqqpsstssqlhd^YXYav{d^afv~qkhks|~|xtssx~{yy{||xvx|{xtqqssvxyyyvsnkhfffhhikv~xifdlv~|vqnqsy~{vvssvy|||xx{||~~{xx{~|{yyyy||~~~~{yxvsqppppqqqnkkilt{|tnlpt||{yvxy~~{yxxxy|~|{{||||~~~~~~||||{{{{{y{|{|{{yvvvvvttttsttstssstx||yyy{~~|{{{{|~|{{{||~~|{||~|{{yyyy{||~~~|{yxvvvxxyyyxxxvttsqqqssvx{|xttx{~||{{y{{|~~{yxxy{~~~~|~~~~~~||{{{{{{||||||{{{{yyyxxxvvvvxxvvtttvx{~{xvvx||||{|||~~|{yyy{~|~~~~~~~|~|||||||||{{{{{{y{{{{{{{{yyyyyyyyxxxxvvvvxxyy{|~~|{{{|~~||||~~~||||~|||~~~~|||~|~~~~~~||||{{{{{{{||||||{{{yyyyyyyyyyyy{{{{|||~~~~|||~~~~~||~~~~~~~~~~~~~~~~~~~~~~~~~~||||||||||~~~~|||||{{{{{{{|||{{{{{{{{{|||||||~~~~~~~~~~~~~|||||~~~~|||||||~~~~~~~|||||||||||||||||||{||{{{|{{{{{{{{{{{{{||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|||||||||||||||||||||{{{{{{{{{{{{{{{y{{{|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~||||||||||||||||||||||||||{{{{{{{{{{{{||~~~~~~~~~~~~~~~~~~||||~~~~~~~~~~~|~~~~~~~|||||||||||||||||||||||{{{{{{{{{{{{yy{{|~~~|||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~|||||||||||||||||||||{|{{{{{{yyyyyyyy{|~~||{||~~~~~||~~~~~~~~~~~~~~~~~~~~~~~~~~~||||||||||||||||||||{{{{{{{yyyyxyy{|~~|{{|||~~~|||||~~~~~||||~~~~~~~~|||||~~|~|||||||||||||||||||||||{{{{{{yyyyxyy{{|~~||||~~~~||||~~~~~~~~~~~~~~~~~||||||||||||||||||||||||||{{{{{{{{{{{{yyyyyyyy{|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|||||||||||||||||||||||{{{{{{{{{{{{{||~~~~~~~~~~~~~~~~~~~||||||||||||||||||~||||~~~~~~~||||||~~~~~|||||~~~~|||||||||||~~~~~~~~~~~~~~||||||||||||||||~~~~~~~|||||~~~~~~~||||||||||||{{{{{{{||||||||~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~|||||||~~|||{|{{||||||||||||||||||||||~~~~~~||~~~~~~~~~~~~~~~~~~~||||||||~~||||{{{||~~~~||~~~||||~~~~~~~||||~~~~~~~~~~~~||||~~~~|||~~~~|~~~~~~~~~~~~~~~~~|~~~~~~~~||||~~~~~~~~~~~~~~~~|||||~~~~~||~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~xboard-4.9.1/sounds/README0000644000175000001440000000056212717001265012120 00000000000000The sound files in this directory are in the public domain. alarm.wav, challenge.wav, channel1.wav, channel.wav, draw.wav, kibitz.wav, lose.wav, request.wav, seek.wav, shout.wav, sshout.wav, tell.wav, unfinished.wav, and win.wav were recorded and contributed by Timothy Mann on 17 September 2000. move.wav was recorded and contributed by Pete Galati in February 1999. xboard-4.9.1/sounds/challenge.wav0000644000175000001440000001611412717001265013701 00000000000000RIFFDWAVEfmt ++data ~~~~~~~~}}~}}|~}~|}{|}|||}z~|~yyy||||~|{|~~{~{|y||umr||ywy|tt~{|wy|rq|~y{uy|yuu|u~to{xr~wx|~xtyyxrr{{{w~|wryuo~{|y|~~~ut~{|yux|{{{{{t|{~|tyywr{yt~{wy|w~yy{~{x|~{ux{~uu{u||qux~|{y~r|y{~|uq{x~{{y~xx~~~|rwtyy|yu{yy{|wuy|y~u|||w{yu~w|~w|{~~||wxyyx{{x|||{|~~||~{yxy{~~yy{~~~x~{xy{|~{~|{y|~y|||{~{x||{|y~xw{{~~r{~|{|y~||~x{~|~|~~{~~~|~|~~~|~~~{~~||~|{~~~~|~~~~~y{~|y{||yx~yuxyywtwxuywttqotokmkkg^oy|~~y||||yutrrrqonmnkkmhhmhdgfa]`\VZptyx|y~{~~wwy{ytrtqqnjjhfgd]Z\\`\VVU[lo~|yy~~|~||~{yuqonmjhdafga]Z]`]\UMXnrywoux|~~y{y{|wtoonkkgaaacacc``]VXUN]}}yw~ynmt{yy~{ywx~xrqoomggfacgkhd^``ZYTNWxtw~yqot~ur{|{rw~~{unmkjkgc`ajkf^Z^^VZUFZruu{|~wqt{~tq{{{xw{|wrjddfghhddccgdWRT]^LS̻}ruyxw{~{xx{~yx~{{~xuwtkd]]gkhdcddc`YPMSUPgլ|ortx|qrtx~~w{{y{y~wqnmf]Z]fkkmhab[WQIQWQsخyqtty|qnowwt{{{~umdcccacdfhjhaWLJJPPTȘ~xqhŷ{qdf|{uqu~xu{{rg^\]dgdacfb]SIGGJ[ϥyto|ykduy|~wuy||ytoh`^]`ddfaYXUJDGI^Ƨrvxo°lgxyntyy{wy{{|~wnga^\\^cca]YOFB9Gzln|pĭ{y{ttyjgns~{|ztx|~rg^Z\``\]\WPJC;)zьW4 Uެh=5פe7?H"0t˕a5$VԿZ:+CrҴwNES_i̊_G63Fκxkdaji]l~Q2\vMIOP_lk^[vjkvjLBQnpTGIVruXHFQi|sh^Zbp~kYNOZpznjg`[_pƼcJ=8@Vu}iXNHJTawþqYB;CVrr``huwmjirxk`VS\lzsgbgn|kcckxm]PLRf~~gWMN_x|qllmt|}ysposxxpjkmprw|}~rjfkry|{{zqmkgcckqyzkb[[enu{v|zqmpxuokilw~}zvrss||uqooqt{}rjcabiv{tifemy}wtvumdaju{unoszvutw|}|zxvy{}wqmnmnu|vqmmmmuz||~wrrsv|{rkjmuwspqx|slgjr{zx{|zvqolpyyrqsz{rmgiox~zwv|}yutux|{|~}|~}|xwwwz~~|||~zvtprrxz}zywwz|~~{yxxz{~}xwwwwyzy{}|vomotz~ztsqrvx}~||yxzz}|yvsw{{yyxz|~zxvx||~zvyy~~ysrsuy~{wvwx|z{xy~|wuvy~}yyxy|~~|xwyz~z|{}z{{{zvxy|}{{|}}~|}}|~~}|}{y|}}|~~~}}}~}{|}~~}~~}~~~~|zxxz}~}~|}}~~~||||~}z||~~||}{|{|~||{}|}|z~}~|{{z}}}}}~~|z}|}{|{}~}|yx{|~~}~}~~{}~~}}~~}~~}}~~~~~}}}}}~}~~~~~~~~}~~~~|||~}~~~~~~~~~~}~}~~}~~~~~~~~~~~~~~~~~~~~~~}}}~~~~~~~~~xboard-4.9.1/sounds/laser.wav0000644000175000001440000000360412717001265013065 00000000000000RIFF|WAVEfmt **dataXxfizwrwlQWkk|pd}VBdwrgR_٧Q/:kƱpS\YcѓL*2Pưo.(8tӰvJ@1&Z]#DYPiJUiZ?Svnp>1Ed鿜R'1PkѲkGFUangI3Ctko٬C#0Slr\ZƳNF]MEazwMCFFBJ`s~z6Gln~K*BNETi۹a/8gʮqE2LdnìP*/TnpT$'dĀ`^6RR%$9gX,&FȾ_clqyQ2G]6.I_CFaS\NPkl~oSZt]L`r_mc`umgnwr|aRSzal`TnXOt|Ocp:Ex{dXHiSHvJWff[We+RԋIW89~CefA`̎5Jڢ<.дd>w]JϹW R΀>`߉1>׎'.\ Gل;Yԛ<ty4JȶlMh{cpm^ngbzj`qxQȩ]'AȵzR]{mjzw>@rws}|U3Wָu;Lvs>0gkCv̱nQAOfzҦi<<Ò{rT4=xܷmK70G-.b@SzġzO$0oqO:A|WAOyq`Uu`NLl|rHIhgOekn{}d^mv`\}waj|QEWnfjRZWaPUǐH9lr_hG]THqWQfk_Pzu4FѧcQU0{Ȅ9Lx@R֣@<߾R[~Fhp>kw$:͕HR؟>3>ix4ޠD=ܸ_QЎ@>~|NVd`wZbkcygio~d^ȖJ0cxbwlbpIJqtbf<0f̤lQezyʵf#&tܛgXhq^l؀+3foHGxXVGSlܱc(6Rw̑A(Uոp(7xǴÀE NѼg0)^ŲP#.HeƼn0#EWfŸzFHSgtisêz>!>Q^mhϵyI5>UgaaʌfR;7Lc̽Q1)Fguʰ;"4[}֨wdE ;~G,?ϾC*|)+bZMbИO&'Vյz?'Lrhdf}dO]jniav|WDaretiPXe\vrttsitɔR1Gxl}xYPzvVatgx|77*SǪ^gjksT\u̽ytwtbWPOSOI?8,9㼤lYYX|f[q}Ͳvt|wru|p\RIGMOF?51|δ}XNHkqev{Ѻripy~vvy{gXKBEMJB;4mӿ\LA`vulz|Ѿ~pemx}vrrzm\PEAGHA=;p[IA]qwq}~н{l`kzznnqzo\QFAEGD>=sXC>[p}yϻyfZk}unmq{zgYNFBCA@6LβoI8EaxʯpZYq}mkowp^SKDDCA=:mʒR=5PkξbQbynkmqwaUNHDED@4Tӯc@-@`ınTVowlko{xbTNHEGGD5CsB-5T{¸yYQgvponw|cSMHFIID8<{E--Nv`PbzĴsprrxfTLHGJJD97r͉E+'HqeO]uʼpmrw{hTKHFJIF97sЈH*%DngR[r}ihrziTKHGKJH<2iґH'AllQWnƬyjgp{jVKHIOMH=/`כK(;fsTTh˳}icmzoZOKJPSMG2=k3'NcOZqèp`ds|fVQOQUVKB+A׹`*-X~`LXrɫp\^q{j\WURUWM@/5xu1#N~mMPfԺzdXf~tf_\XVVTG>+@ӹc+0V~eLQiԷscXhxka]WSSVMC03s}8'I{|sRPcξmacv}pe`\YX[XKA-7xr6,LzuXVeqifnwmfedc_ZULD4.dѓG!!CptaTXrǼqhkv}sligfea]XRI9-^ΙM)$Kqzp²`QUqķsjmy~vonlifc`]\SF1;uxC&:]wuzSR_{tuy{vsojjifdbZK4,aИP/0UtzyZQZu|z}wtsrsrmgecZK:.YʡX50Wrvx[KVs~xz||~vstwxupkgc[L=.RĩbA4Xovz]O]x|~{u{}wx|~{tlijnj`M7%Oƥ];4\urx]Te|tnyzx|vnknqpiXD5*SöW9;hyo~wYVotupcpxpx~vmjr{~xgQ:.#L^EIs}trwcd|yu|yl`qsqtjfp~nZC862YcO[vs{zrr{ynkkz{vxwmknz|jYKCEE>li]f}yw}~vvsipvy{~qmrxvfYSQPO=J{`]t~|tzvr{uln{yvux}vnje^WNE7Fs^byujttutu|}ystw}~xtpni`XQJ>Cy{np|~phuzx~~~|yyuvz|||||}|wne_ZXUODVyvx{qq|{||~yvx|{xy}zqhca_ZSLGdzx}{rmx~{~wz~yy}}xwz}}zwqmmkfaXPIJkt{}vst~{||}}zxx{|{xwwuqmhc`ZSMRquwsv}~{|{xyz{{{xwxytpligb[RKRv}vrrz}||}}|xy}~{ywwy{yupljhcZROWvzw}or~}~~}}zx{{xwxz{ysponjbZTQWrzu~pr~~~~{y|zwvxzzwtponjc\WSVmzurq}~}~|z{~{xwxzzyuqnnlhaZVUb~w{|tx}~|z{}}|zwwxzxtqolie_ZV[qz~|y||z{~~}zyyzzyxvttsqmhb][Z`sz|~~||||}~|zxxxxxwusplhea^\ew{z|}||||}}|{zzzzzyxwusqmjgddjs{}{z{~~~}}{zyyyyxwvtrpomkighlqttssux{~~~~}}|zyxyyyyxwvtrpnljikosttstvx|~~~}|zyyyzyyxwusrqonlklorssstvx{~~~~~~}|zyyyyyyxwvtsrqpnmnqtuttuvx{~~~~~~}|zzzzzyyxwutsrqpnnprtutuvvx{~~~}}|{zyyxxxxxxvutsrqpoqsuvuvvwx{~~~~~}|{zyyyxxxxxwvutsrrqrtuvwwxxy{}~~}}}|{{zyyyxxxxwvvutssrsuvwxxxyz|~~~}}||{{zyyxxxxxwwvvuttsstvwxyyyz{}~}|||{{zyyxxxxxxwwwvvuuuuvwxyzz{{|}~}||{{{zzyyxxxxxxxwwwwvvvvvwyzz{{||}~}|{{zzyyyyyxxxxxxxxxxxxxxwyz{|||}}~~}|{zzzzyyyyyyyyyyyyyyyzzyyz{|}}}~~~}}||{{zzyyyyyyyyyyyyyyzzzz{{{|}~~~~}}}}}||||}}}|||}}}}~~~~~~~~~~xboard-4.9.1/sounds/draw.wav0000644000175000001440000002066012717001265012715 00000000000000RIFF!WAVEfmt ++data!~~~~~~~~~~~~~~~~}~~~~~~~~~~~~}}~~}~~~}~~~~~~~||||{{zzzyyywvwvtttssssssstxzz}}}|zx{}~~|}||y{|zy{zzxz|{}}~||zwutsromopolopsqqv|~}}|x}~yx|}}}y{}z{|{{||{}}}~}}~}{zzxxusspoomklpmloqopqpy~y}y|{wx|w{y~{zy}~}xyzyyxyy{{z}||}|{yxvuupnmkmkiiijmnmmpros|~}|~{vwz~~|}|{zywxxuwwwyxxzzzzyvwwsqpnmmijllijlnq~wZex~owttv{}{~}}|zwvwuvtruutuvtvxwtutsqnnlkkjhehjifcyuyx|}sq}~|||zxtsttsrsrsvtsuuvwsrusqooopmikljgeagyyyvw{}|yx||}~}}}~|xwwxxvsruuuutuvxxxwxywvwxtvxswuutusu~~~~~~~~}}~|}|||}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}{||~}~~~~~~~~~~~~~~~~~~~~~~~}}}~~}}~}~~}~~~|~}z{}{|zz~~~~~~|y~}~}}z|}yz}}|}{}}z~}y|}{~~||y}}z{|z}y}~{~}xy~~z~}}|uvxtwwz|y|}w{}tyvu{~}y|{xyzrvz{zqupqulv~|y|}yz}yu{}y~vrtvxvtwxzy}{x{|utq~~twwxy~|u{~{vyz|~y}}{z}}y{{txop{xhpsy{{}}|v|||}{|}}|w~~|xy{y~}xz}{}|{z~}~~{z|x{~zv~|xx}y|zzz~{~~|~z}|z~|y|z||zzy}}{|~~~}}~{|y||z|}~}{}}~x~{~|}}|~x~yz|zz|{||{}{}}~~~|||xzyuyuuwvtxssstprollkiprr}|w}|}|~~{}|~~}}{{|}|{zzyyzxxwvxuwtqropnkigdeknqxxv}{}~~}~~~|~~~}}}}|{zywxvvvtssuroplnigdfnoszxw~~}~}||}~}~|}~}}}}}|{zyzxxwvvuvwustoprmkihglqqtxvx~{|~}}~~}}~~z~{z{{|{w{zwxzzuvwwsvwvuwyxy{~~~}}|||||||||}}}}~~~~~}}||{{{z{zzyyyxxxxxwxxyyyz{{|}~~~}}}}||||||}}}}~~~~~~~~}}}}||||{|{{{z{{{{{{{||}}~~~}}}}|||||}}}}}}~~}~~~~~~~~~~~~~~~~~}}}}}}}}}}}}|||||||||||}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}~~~~~wv}z~}z}~z|}~{~x|}{~~~~{}~yz{y~t~y}z|~|wzz}~y}}}}x~|}}~~~y~y~z~|}~~~~~}}x~}~}}~{~}~~}zy|t{xyy~}~~z|z~~}y}y}~}y~~~z~~~z{{{x}}z~}z{}|z~|{}}~~~}|~zz|||}{yvxz{zwttvuvwwtsuv|~~|{~}{zyz{zwuttuvtrolkjjhb][YVV]k{zpjklnrx~vsuwy{{z{}}~~{voieccca^[XVUUVYf{xtsrrnjhhjr~yssuy{{ywwz}unihhiiheb__aba]YTS]q|ldcjquvusu|}qjioy{uswyzvqkffimpplfa^\ZXSPXl|k`Z^fpz}|zwroorzzrnnqtvurligilonjcZSMIGNbzfYRU`m|rjilpsvz~{{}~{xuttttsqnmlkkkjf_WME@G^ĭ{eTJL[qxe[[dq}vqqv}}xtomkkllkifb\ULD>E_β~qaTKL\wpc\\h{ytsvz{tmhfgkmmje^VMF?v֧yG0:K_yrUABXzƲ}i^_m|rdXRU`nz}nW?."(NƖb3.=QoiM@Hb©tcZasuj]UU]ju}}q_I7*%>rکr;%1A_vYKK[y­yaX`qthZSV_lws_J8+#;o{?%,8Ww]PMZxŰvYOYovhYQU_js}~p^J8)#?sq7"(6[q[QPaĭiUPYp|l`YY^grytgUC3*+QϜ`1'-Bkm]UUgϾ`KPb{tg]X]fow~rcO>/)/]ŌQ+&.Gu|h^Y`yŭkUP^usd\[^eozwjZJ=4.>g㽇Q,(0Kwyia\d}ǻ\MObl_VXaiuqeUG974?gR+&.Ftzke`f|]IF]~i\SX`kyrcUK?::=YѤh9%*6`~ngccoĴx]LRlvh\W^gszl]QHC>CDPw۸|G'&-L|riecjīdPKYwiYUZepteWPNIHKHLlĊM&#?użsjfacw˸sQFMis`WVbo{{ocXRNKIIICa͓M"3lʿ}~||shgeex¶vYHYksbVZcq~ulaWQNLNLRM_̞\-"0a|}}}znmkiqrXTh|zkcbio|~sf\UQPTYYZRX}֫lP|uvuz~~uomt}ropw}wtstvxzyxwspljd_\YVQcȥ]C9E\ysuv~sons|omqw~zxwvvwzywyvsokga]]]ZXlbMGSeyvvvytswxrsy~|xvwwwy{{zzxrlgb_]_ba_peQLXi|}~~xvx|{uv{~}~~|zyywvwvrpnkgeed`]kr[R[f~|~zww~vvw|~|}~~||{wusrqoomkgecb]dzvbW^h}~}yx||xz}}}}~~{{zvutrqonkhfdb`k{we^dm{}~~~~|||{yvutrppplkjfebky{lfjr~~}{|||{|zwusrrqpomjigfp|ymlpw}~~~{{zyyyywvtsssrsqnmjgku|yrtw~|~~{z|~}zwvwxxxxwvuuusrrpnnnszxwz}~|{{~}{yxxxyyyxxxwuvvuttsstw||~~~}|}}~~~}{{{{{||{yxwwwxyzyyxwuvuuw|~~}||{{||}}}}|{zzyz{{{||{{{zyyzz{{||~~~|{zzzz{{{{{{zzz{{{{{{{{{{|||{||}~~~~~~}}}}}}|||||}}}}}|||||}}~~}~}}~~~~~~~~~~~~~~~}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~xboard-4.9.1/sounds/slap.wav0000644000175000001440000000556512717001265012726 00000000000000RIFFm WAVEfmt ++dataI Ã=T0FUK-10bbX2f@3CZdSZZz=7_eaGyb{P}avpS|lX^w{rz^gx[{ye|Jcxv[Aobpp|irp[xvgijxrqccZt;aRBǬPAqsdPqydlCv[Pɬs>/>Si_hN^{ltoGcdmL7lsQ\gˮCH\w.=p@6?VNH,X؅)YɌ=/Tp~nlnk`R3mnk`lk9lvf=SbΜg(.h~}p:^-"oۚ4"ӟj^ZsG/~M>nyiQi{IXm|[8Ny]ERҼT4}Ռ=3k_l[iɚ_l38I0=xk.e8AZH`|ZmcW~_;OLj~Y1h¬WSbB_¸l}7\ch{h̠@&Gj>DB}Q!`'kU5T;&<t wsQF !"P$G%$%#!!"r"""![i?d|D6 gbH q4En$(bo~|[0*={Ot-5jcPiwMGnY  1 W ( y P I  M, X| I495J%vu^)uRXbqlv5 Y2+0ek  = : ZO"V/g_h-_U 4 D ~)^mMy-Q_w B+2}Ik4_g-D@  q 1:{I%uc%/g f]  }6) P6fV 5 1mYF|h*BMBhhEy}`}5R)T$t_ UrQXXv!-4E6`)Sy"U7` p 4  H W =  Y Mr#RJhLVS9G4D|X5-k3x0S';/tA_ q 7=-6Hrx=#Ou0bXa0Pe*)"$su=X,y`U*$a8(MljAM6ph4p(NY]uTx;{uxb/rUiOiBm/a80_5G.k-I-%6vU0sGM [BZ jN[pCihFO uNGAFZ`_fyP)NZmt{i!G.ass2]#)9_ AS- aRTdkEnn^bPc9s EZypTQ@(d^OGOB.whX`gccbcVENJ6  $2J`ddqv]NAB?DNT^gmowv[O^gXA05=d,!=++FFAYef_\egh̾vmfdXLMMMJAA770*)'/# !  #)%,.0<<95662/2..2/.,**+*+.0.+///2345756;>@CDGJMQRTY\^bigjmsvy}yvppmfdb_\[XUQNROOMJGEEA@A<::999665533110/-0/.0101257857:<:?ACFHJKLPRSVXX^abcfilpotwx|~~{{zxwwussroppppnnmnmikjhfefcebba_``]^[\X[YWXVVVUWWWVUTTTUSSTTUTUSSUSTVVVYYZ[Z\]_`accehhimlqqruwxzz~}~}||z{zzywwuvtttqqpoonmlllkljkjihighgghfgfhefgffgghfigggggfhhfggghhfigigihijijjjkjkmmmnppqrttuuvxyzy|}}~~}}{|{z{zyyyxxxxxvxvvvuutvtvtvuvuvuvsutusutttstsstrrrrrqqpqoqpppoopnpoonppnppqorprrtrssstusvvwvwwxxxz{zzz{||||~}~~~~~~}}}}{}||||z|{|{zzz{yzzzyyyy{wzzwyzywywxywxvxxwwwwvwuwutvtvtuttttutttttvtuuuwvwuxxvzxxzxzy{z|z}{}}}}~|~~~~~~~~~~}}|}||}}{}}{|{}|{{}{{}{{||{{{||{{{||y{{|{{y|zz{{y|{{z{{|z{z}z|{|{|{{|{|}z||||{|{}{|{}{|||||||||||}|}|}~}}~~}~~~~~~~~~~~}~~~}~~~~}~~~}}|~}}||}|}|}||}|||}{}||}|}||}}|}}}}}~}}}~~}~~~}~}~~~}~~~~~}~~~~~~~~}~}~~~~~~}~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~xboard-4.9.1/sounds/woodthunk.wav0000644000175000001440000000353612717001265014005 00000000000000RIFFVWAVEfmt VVdata1yyyzzyzzzzyzzyyyyzzzzyxyyz{{{|~n\LA<Uo{^;)*:tg(c϶~gWQVfzɬsU5$Hpr]F,$6I[jwſ|gTC4(*9K]oùwnga]YVSQQSW\bhov{}~{yxvxz|}|xpfYK>1&"'.5;BHMRV[^adfec^YQG>71+('),048=AFJNTZahntwxyxvtqmjgeca_\XTOKHFFIPZgu}vqmieb`__`adhntzzuplhecaaacgmt|zwuttvwy{}xusrqqqrrsttvxz|yrkc]ZXWXZ^eks{}zwtromlkjlosw}~ytokgca`__`cehlptw{~~yupmjfdegiknruxz|~}{{{{z{|}~~~~}zxxwvuttssrrqpppqrtvwxxxwvtrrqqrsuw{|yz||{{zz{{{{|~}||||||}~~||||{{{|}|zyywuromljklnqvz{}{xusrqqpqruwy{}}zxwvuuvxxvwz{|~|{zyzzzz{}~|{zyxwwwwxyz{|}~~}|zywusrqpoopqrstttttssssrsstuuvvwvvvvuuvvwwxyyz{|}~~}|{zyxwvvvwxz|}}ytpmjiijloruwxzz{|}~~~~~~~}}||{zyyxvusrpoooopqrsttuuuuvwxyyyyyyxxwvvuuuuvwxyz{{{{zyxxwwwwxz{}~~}~~~{{|}}~~~~~}|{zyxwvvuuuvvwwwxxxyyxxxxxxxxxxxxxxwvutsrqqqqrrsuvy{~{xusqonnnoqsvy}~{xvtrpnmllkkkkkllmoprux{~{xusqpopqruwy|~~}}}}~~~~~}||{yxxwvvvvvwyz|~~|zxwuttttvx{}~}|yxxwuuvvvvwwxy{~|xvsrppprstvxy{|}~~~}}}|{||}~~~}|||{zyyyyz|~~}|||{{||||}~|yxvuttsrrsstuvwyzz|}~~~}||||}~~~~~}}|{yyyxxwwvvwxxxz{{{|||}||}}}}~~|zywwvvvxboard-4.9.1/sounds/click.wav0000644000175000001440000000420612717001265013043 00000000000000RIFF~WAVEfmt ++dataY||~~|z~t|t|~vrttb~^|pnbd|`phjtpxlnzx|vzxx~xx|xv~xvzv|zzp~vrtxz~|~~|||~zp~vv|z~zz|zz~~|||zzx~|x|~zt~0N.HTT>hvdjbtlp|zxppt~v||x~vvrr~pr~~xfnnhhlrlrrvrjrpprxx|x|~~tzzz|x|~x~zxxxrztp~bzhjnhrpfrdjl^dfnnf`lhlnprrttvztzz|||trtxrjlljhhdbfbbd^\^`^\`\`fd`hjjjlrnttnrxrxz|~~xztxzzxvpnrphlhlllhljjnnlpnjnljjnprttvxz|||~~zzzxxtvvtvttttrntprnprnlpppplnnvrtrttxvtxxzzz~z|z|||~~~~zz~|||~|zxzzzxzxvvtxzzzxxzz|||zzzz||z||~~|~~~~~|~~~~~~~~~~~~~~~~~~~~||~||||||z|zzzzz|z~|z~||z||||||~~~~~~~~~~~~~~~~~~|~~||||~|zz|z||z|||z||||||||z|z|~z|||z|~||||||~z~||~|~||~~|~~~~~~~~~~~~~~~~~~~~~~~~~~|~~||||~||zz|z|||||||z|~||||||z||||~~~~~~~~~~~||~||||~~||~~~~|~|~|~|~~~||~|~~~~~~~~~~~~~~~|~~|~~||||||||||z|zz~|||z~~|~~~~~~~~~~~~|||~~~~~|~~~~~~~~~~~~~~~~~~~~~~~|~~||~|||||||||||||||||||zzzz|||||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~||||~||||~|||||||||~|||~~~|~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~||||||||||||||~~~~~||~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~||~|~||~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~|~~~~~~~~~~~~|px~xzxv~rv~xtz~~zx|~||~xzx~x~zz~|||~~pxvz|~~|tr~t|r|~rhtt|p~fjphrv||~pxv|v~~x|~z|z|~xzv~t~~z||~|x~~x~px|rz~~t~xzz~v|xz||z~|~~z~~~~z||~|~z~~|~~|~|~z||z~z||~~|~~|~||z~z|~~~||z|zz|zz||z|||||~~~~~~|~~||z|||~|~~~~~~|~|~|~~~~~~~~~~~~~~~~~~~||~|~~~~~|~~|||||||x||||||~~|~||||||zzz|z~~z~~~|~~~|~~~~~~~~~~~~~~~~||~~~~~~~~~~~~~~~~~~~~~~~||~|||||||~~~~~~|zz~|z||||~|~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~xboard-4.9.1/sounds/request.wav0000644000175000001440000002170012717001265013444 00000000000000RIFF#WAVEfmt ++data#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}|||{{zzyxwwwvvutsrrqrrrrrsstuvwyz{|~~|{yyxwvvvvuuuuuuututsqpomljigeca_]ZWUUVX\_emw|wutvxz{|}~}|{ywussrqomljihggfeca_^^]ZXVUVY^bhq}|yvuvxz|}~}|}~~{xvsqnkihhgghgedefd`^\YVRPPOKGFKT_oü~yvsrrrrsv}~wvy~yqlklmkhfdehlnmjfffec_ZTPOMID@>?CJR^outvvqmou}}xy~zrjgghfcabgjihhiiiheb^XRMIEB<426;:68I^s׹ibkuwqmsȷtv{rnookfbcgknomkmoomic_[WSMID>88;8106?GMUoѫo]fvztnrɷvu|vnklljfbaelpokijmnkfa]YTPLH@::=<746:@GLWyŬwpyxst{}vrnmlkgcbcfihecdgijhgdeknjdbadffd`^agkjffjnsy}~}{zyyzzzyyyyyzyzyxzyyzyxxxyy|zxyz{{{zy{}~~}|{||~~}|~~~~~~~~~~~~~~~~}}}}~~}}~~~~~~~~~~~}}}}}}}}}|}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}~~~~~~~~~~~~~~~vnwyyi]bh{|eXV^qyld`is}rjikr}wplmqw{ussuz~zwvwy||zz{~~~~}~zwtsvx|}yuuuwz~|yxxy{}}~|zzz}}xutvy~~{xuwx|}yyz}}z{{}~~~~}}~~}~|{|{~~|{{}{z{z}|{{||{|}}~}}{{zxyyz{~~~~~~~}~}~|}|}}}}}{zzwxwvwvwywxxvuvsssqsqqrppqpnpooomllljmlmpnqqoppmpqnsrsvuwvxwwxy{{~~}{}{}~}|yxvssrppnlljjljlmllmllkikkknonqrrvwvzxwzwvwsstrsuuwxwz{yz|xyywwvtvutyyy||{}{{}zz}}~~~|{}|}|yuqqpqtuxz{{{zyxvvustuuuutsrrsuvwxxwutronnmmmnonqrsuuvvvutsrqrsux{|}~{{{yy{|}{yyxxyzyyxvtqppoooorstvwxyyyyyyz{{{z{{{}~~xsmic_ZUQKECEM[p׹wpqw~ϵqkoz}{wrkbYPMLKKJF=3' Qƌ_B49EQ_ddcl빃U80@]}|od`cjsvtkYF6--3;AA6!DqSLOU_[K@?Mmۜe?4@\|ĺjUPYrmRA>DS`d]L8!JċcND?GWSN_wQDHXoˬn[Tc|n`ZY`de_SLA6* CΝnXIFA499Bl͓iLGR^im|սg]gz~xqjbWSV]ca[K32ծ}W>(&!,FYbI>GRbsּvigs~seZVX_jrsbM4 pޤYF,# )Njԫ`RBJVezǣh`lnYRYer}}s_E+ }mQD-#1cѬp\TFPbyl`dwxh[V\kz~scP<&KnTE4&&/\ͦnVPOTmϼi_ctwi\Ycv{hV@-  _v_ME7',?w氌obSQUdӹvecn{rieermYH;+% /bXFA-,=b×v`ZQXd~{pgk}wljpz|j[MB92573& pj\TP;-6YsfaYYe~IJroovrvstytcSIILKF=2# ilaTO90Cbuf`W^srpos~xsz}siebb`bdaWK=,&f[PB5;Omӝ{g]UVi}Ÿwa^htyleiwzpgbdltxvri_UH@5)4nZQGDDP_{߮jXS^iv¯zh[duzx}wps{tlhjihffda\TH2 LՕr\SFO]_sѴwd\cnx|sktxz{}{z|zwsprvxurnhaa^YQNMF:5\ѮubZ`jnq{xx|{x}||{}|zzxvroqqrpomkkkmkjkhc`\][bjwvwvz}~~~}||~~}zyyyw{{|{yzxxxwvuwxwx|~|{yuvrsqsy{{}{~~}{{{{{{{~~}|{wwz{yy{x{{wyyvruwsuvwqzqyrqwoupvoxr{q{uysxvtuyr|o{tu|yz{u{r{vxpipwzw~os|yz|x||uyu}stzzww|~z|}}}~~~}y|w{}~}x}}{xz}xx}z{|yx|xu~yxxyuutty~{vt{}{~{pv|{wqzzvx}{yxvsv|~y|~~~{}{vzwrpqu}toty}|xqopt~uqvodo}y}|~wpnq~w|}ytx|~z~vu}w|}{}|~yzz}{w{~xvw}{{{}}~{z{~}wstvv|||}~|y{}zyzytyvurjpxwtumhu|xsx{t{{yvnmy~z{|{wuts{~vqrpdmzrrysr{{soiquhhquuuw}ywwy}~xrssvv{wyxogo|}{~{{{{oanwr|{qg]calvxu|tefvupls~iqphejzzinyyu`nny|y~p_eei|{nnrv|po{~wzon|~xxxwy{xzqw|iryz{|wjs~|su|}svqovrsru}j`[yoW`wvaahzventx|xusy{iOgrtssy}vljlcarsmvsaeox{hfj~xrzzbaistjw{vu}vohqwpx}vsqztw|v~zwuyy~lly|sqrxwtmmovw}~vtgh|{{so{}v|yx|yu~}z~}uy|x}{zz{~{yy{}~{}}ox~~}wx{pw~~~{v|}~z~ztusz|up}vu{zsrx~~uny~ts}}~}~~|x{~}yx{~~~z~~z~}~}}~}}~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~}~~~~~~~~~~zz~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~x~}}}{~~|}wy}ollpmsjl~{|vyhx}|x~x{iqfz}|t~p|nmyz~{{s~vz|~|{}z{y|||~}xsx{{|t}suv~}{}{}z~yy}{y}}}{vyz{ywy}{~x{z}tzyz}~~|~}y~zyy~w}y||{z~|{~{|~yx|v~|x~z~||~{|z}}|{|~|~||{{~zx~{y|}zx~|v}yvz|wy~{y{{z}~yz~||}|}}|}z~}~~~}}}~~~~}}|{~~}~{|~}|~{}|{z||{||}}||{{z{}}||}~~}}|}~}|}}~~~~~~~}~~~}}~}||||~~}~|~}||}||}~{}}~~~|}~~~|||}~}|~}||}}{|zy{zz{{{{||z{z{}}|{}~}~}|zz{{{||||}}|}|{||||}|}|}~~~}~~}|}|{|}}|~}|~|||{z{|z{~}|}}}~}}~~}~~~~}~~~~}}~~}~~~~}~}}~~~}x}~|~~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~xboard-4.9.1/sounds/kibitz.wav0000644000175000001440000001506612717001265013260 00000000000000RIFF.WAVEfmt ++data ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~z|}z}}zzyxxzx}|xzvxzy~|y~y||z}z~}|~~}~}~}~}zz~}x|~~y|~~z|z||||||~z||~}||~~|zz~zz~|z|~|y}v~z~~~y|yv||zz~}}}~~~|z}}|z}~~|}~|}}~~|~}}}~}}}~~|}}}~~~~~~}~}~}~}~~}~~~}~~}~}}~~}|~}~~}~}~}~~z|~~|~~~~}}~~~}~}~}}}}~|~}}~~~~}~~}~}}~~~}~z~~~~~~~}~}}~~~}~}~|}|~~~}}~~~}~~~~}~}~~~~~}}~~}}~~~~~~~~~~~~~~~~~~}~~}~~~~~~~~~~~~}}~~}}~~~~}~~~~}~}~~~~~~~~~~~~~~}~~~~~~~}~~~~|}|z|z|zxyyxvvtvxrrvutvutxvxyy}|}~~}zyyvutrqnmjiedd`ZY\VQMFVfnxytuyxnx}|xuplinqpprvz|zzzyvphe`YUMFA<>ya]νmljiprfi~|uqqpjdhqrrtvz|yvune]VMFA8*YrVxΫvee\drparxmimplhmrvz}|~}umhdXPE<5*4vb\˾zzjdZUfzrl}~vieltrqtv|~||zpdZTMD6,!>bfƲrqxlhXPbyvx|xxvqhhmry}zy~|urneXNE<4-5`znlrnihdVXiqtyuqnlmnntz}}}~ztmeZNE>56Pijlytpqjadhipz|rmmmmnpptvx|}yvtpie^XRUbjlnuy~~}|zyxyz~~}zyxvuvvvxxyyyyzzyxvutrrttrtuvxyz|~~}}}||zyyxvuutrrqpqrttuvxyz|}~~}}}}|||zzyyyxxvvutttuuuvxxyy|}~~~}}|||zzzyyyyyxxvvuuuuuuuvvxxyz|}~~~}}}||zzzzzyyyyxxxvvvvvvvxxxyz||}~~~~}}}||zzzzyyxxxvvuuuvvvvvvxxyz}~~~~~~~}}||||||zyyyxxvuuttuvttttvxz}|z||zzzyxxvurnjie^XYdmmjp|}zyyxqmt}zuqpqqplmrtrqpmhb^VMTfpimy}xurtrnjt~ytpquvvuv|~|vrpi`XLA>I^lfnxpjfffffjr}qiilnqvy}zpe]YTNHB>AMjiXVXYaiqz~rmjifdfpyztnlmpnllmmppidb^XY]hvy~vlllhmry~xqnpqpr|}yvuttvxz~zuqnjfda\YYVU\m~~ynhfimv}xpjiimquyyrrrpqvyz~zz|}|z|~~|z|yvtqplea^^\]dp||rqnhfpx~|tmifjnqv}|xurqtyzzzxvvuvxy}|zvvvvvxz|}}}}|zyvrqnlllmqv~yyxrquyz|xvtuvx|~}zyvvxxyz}~~|zyz}||~~|zzzzz||z|}~~~~~~}}}|||||}}}~~~~~~}~~}}}}||}}}}}}~}}}|zzzzyxvvutuy|~}|yyz|}}|zyxyyz|}~~}|||zz||}~~~}}}|||~~~}}}}~|z|}}}}}}~~~~~}~~}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}~~~~~~~~~~~~~~~}~~~~~~~~~}}~~~}~}}~~~}~~~~~~~~~~~~~~~}~~~~~~}}~}~}~~}~}}}}~~~~}~}|~~~}~}}~}~}~~~~}}~~}~~}~~~}}}}~~~}}~}~~|~~}}~}|z|}}~|}}~}}}|}~~}}}~~~~~~}}}}~~~~}}~|~|}}}||}}|zyz~}}}~}}}~~~~~~}~}}~~}}|~}}~|}}~}|}}}}}}}}}~}y||z~~}~~}~~~~|z}~}}~~}}~~||~~~~~~}~~~~}||~~|}~~}}~~~}|zz|||}~}}|}}||zz~~}}||~~}~~~}~~~|}~~}}~}}~~~~~~~~~~~}}}~~~}||~}}~~~~~~}~~~}|}~zz}}|~~~~~}~~~}|}~~}z}}}}}~|z}}}}|}~x|~yxx~||}}|}~~~~}||~~~~}~}|~~~}z}~xy}}~~}}}}~~}z}|z~~~}~~~zx|~~}~~}~}|y|}~}~~}|~}|}~|}~zz|~}|||zy}~~~}}~|y}~}~~~~~|zy~ztxxuyuv}}|}~~~~z|||~~~~z}~zzyx|}}}}~~yyyvy}~|yzyvx|~zzy~zv|yvzz|~|~~~}~}z~||||~~|yztu|}y}~}~zyzxu}|ux}}~}}z}~}}z~|}}}}~||}|z}}zz|zz}}yy}~}}|}}yz~}~~~}z}~~~xx||yyyz|zz}}~~~|z~|xz~~yxy~~}}~z}~~|||~~}~}|}}zz~~~}}zx}|z}~|}~~}~z}}|z|~|}}}}|~|}~||}|yzz}}~}yzyyyz~z|}||~}~}~z|z|~z}~~zzzy~}vy}zz}||~y|~}~~|v~xuzz||}z|~y|~~~}y~|z}~||~~}}}}}zzzz~}}~~~z|~y|}|z}|x~z|}}~~~~||~}|~}}}~}||}~~||~~~|}~z~}||~~}~|~~~}~~~}~~~~}}}zzz|~}~}}}}||}~~}~~~~|}}}}zz}zxyz~y~}zx}}~~~|~~~~}|z~y~z|}}}~}z~||~|}}~}~~|}}~}}}~|~~~~}~~~~~~}~}~~}~~~~~~}~}~~}~~~~~~~~~~~~~~~~~~~~~}~~}~}~~~~~~~~~~~~~~~~~~~}}~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~xboard-4.9.1/sounds/ding1.wav0000644000175000001440000002374612717001265012772 00000000000000RIFF'WAVEfmt "VDdata'   .]U$-)N6g,=9mc0` %ԼmϨ:5 25D-2ug:u qAQs1C/_*&2y-NXb@:)@HW~fO4Dy%"wj$7 ['6:*QkF<+1$̻7 A{!iN/eO M14^B:Yy4E: .B( V; A9D'!)mc @ڛiH & eD wݬ1B<'208 XbE T | 6 ƒnrH]?w ھA..ʚ t$^` mn`3C 8l! (=(]w7?'1x Tn l50*j .ױ#]<f\"O¿=D0 p9ݥ& 7خgG "R-8@3#B0+-/ /F.hW"A0 NS526t1 8) δA_s 3nòss3p37 #ƾ_ǒ%2j"7,  8uMFX,@3b,Qq5e7{ ZQR(]1zT'c|M6 !EٔX7''fC{d @3Ʃ  !+8ֺL8U!!7 ?.X շ `+?xN Y>.; V!?(}e'D.m w8.8+i/!0d!|QE=FM 9,. ?4 (Yq/=,( , h & %#VFY.n ( -L|=* T% Y,enS2>uZ$Q/ 3&\*j C bܾT1x6g} ,!|\^'Z3% d^`e~ڈW 4 G<2x W'p1fa> 0==7 Hp  Q@8,%Rfe;Z#NB(@1X %luk0 "S)oYzU&J 3;ZP"- $,K tTX f %4z X%z?=z U;< L7^? #=H1 P'`IM*M5v '}N@^#q/9(װW!lN&A5$llIwv!)}N> vF sslBZ l + vL j O$ ^~z-'"l?V3xoQ;nj g! cNr"I 2wu7@@SB>Y9N2 ~u D U  ! xE~>i"G H eS { s "N * #  6cRu :Yi #D"e&31 8 h$ N a{a a)/ !_6%)fB43~C:3w B6=y"9 <6e߭(/YX4O p FE NZ =2 Tha$ P^  s( 'F0@-+37J-} En~vi_P]~*ozD EbmW ea6}Gqu V0sD  Y Yjyq(6w k",.NCO L^ C +ZgU o"BW$( HDjW q+!0]!Zx5 5`6+c%., X;5P)h]U,Nd p@YP@@ 75 vc S! *\d,UD@' ) c"A   K "/G cZ [([ <3?t=VV +\"+Je q *TD8 i~T\l Ydvb0 \)MwG!:Q#N QY v!wOrPv )e a#l a Ag b7x:9*#bX .%  ;/< xtHE: :uv|/*l: 6gR rSq#&. H T 1}( OF}Q 3} D Wg{ XnD#jVX</+6 .[R:x(2n! !cyv3=KMsv?}1v,  }P,_ m ^  I |UWx 0, J TRq U  sebld mo RLi' zm@*y/ 7w(a+^"VxRg: G% S,@  W ,3] cH 6 Gn h No  'Y&dk:1&i~#$5 !H Y4{`g @d*1{ fsllq3?FX -Gs% 4IU y{d12 k: 0 {C# @LZW e}ya l US v)4x Qr 84xmK l hZX]lB#0l@ aQ6;:%*Bb xfl g  w9` +p|s LQ G=/  6h [| 8  E(co\Q +?{  y}Hxr n (i67=]Tpc N gbc9s C ^ 3y\Q  I<C+{j  _ h '!gZ1 X 8  Gl@5F;4M  KAu A~bNwi; p7< FVQc]X4&lB 8rX8D O p M _ x$xK >R= j N { nC  5ZUO \qU` 0r 4=  M27~t nF9 [ Bg-Zr#F; pH /2* xG~~i w#E/ \Q'~JU g* W N7+ \I$ g =``U +xos [L(" 4 "l hg s Eo4F  ~&v FsgF=Xm_;  N|Nn  ^Ae5 <T8zZt YC D z@) U 4,E  Pc\ Sa4 cc + z U eec@dye H= ze_iiyf T31G/= "m)oGL c s rF;"Y( R{4n -)cK 0TU ICL=| Gsg)*] gWm :'FsNLK WO9 ~o-$> u AU@  fscn! 9K?* !B Wh$M  4x$CU (#xW*V($}_ AY+ 9_&U7*xU Fs$Sl_N^: :Sr$cJD -toT3 ^|yxuS ;QL0 BW /93E n$^a(#%#0"i~6o0"Ufh 9[bH\&5cAbfBZ) c;uO-4]V%[c)^R1&zhA\UR`}v1f{>?Hx7 b.Qnjlz@E-t"f\,t=1N+2Q0a(}(f)@npnmT6xGM.8V;N0l CPJEnZ=M^K4hF?[<n@@2m}Az S2[d@(:"?z[)QZ=Y!laQ.vS?%ctNK[4axBZ{+Y"bUf$#`T,:E\;@tOoG f.Rl[boV:~\A6OSk)8a/8!#u}mZ|2.tA KL)UdG@Z8Q8n[Uw|Ey%^ZL%X;?vX7#]6r*2gK!N8,6AGhtG) fK-}t>W+{<k6MX7 GVlb<].v-BUwyvWGE9OWUL f(|A}R Q?Sg82F 3 !/ xboard-4.9.1/sounds/sshout.wav0000644000175000001440000002261612717001265013310 00000000000000RIFF%WAVEfmt ++datab%~~~~~~yxtr{zvw{|wtx~ysquvsrrpqsolfdfhlsz~|stvuvx}vqtvwvxwssvyz|~ywqmlnorswxtqwwnbabd\\`jwvqpprxzttuy}xwxyy|zvokpuwtorvpdYRPNIELQTw²za\^`ejs~gZ]gqy|sifkw}wpmnokgjnkc[WTQJED?7CoǬ_HHTcotzɭcOM\o~wrnhjxumfccfecba_WQIDE?6;94xڣΰxH:=CA;mխsjbRXnŵx~z{}wqkgecdhkkf_ZYRL>;?HC>CEpӽye[h}}zytnhc`beiie`]\WYZN:6@>4)Atldy~|~~~|wtqlid_[__]YX]Z[ZXLD<:GIHd}{zyxyxxxtnjfeb_[][UX]db`TPQTZ\X[o{||xutttsnklmifffdcdfhbdc^_ccfhqoow~~zytvtpuqvptjvplpnoimkjkhsozzvwwxw}~ry~~xuw~|qqsx~xorw{t}zwtzyuzx{~~yx|}||yv{~w~ut{yy}~wx{{}|||{{|{|w~{uutrt|~~zvyy}}}}~xy{}|zv|{~{~{qvxy}{xv~|{|}zy~~v~{y{|}{y~~|~|~~|yx}yw{{}|y~|wy~}xy~~x{}||yz~yz}|v{~|~y~{~|z~{|vw{{|~y}|}y}yvx{{}|}}~y}~z|}z{{wy|}y|~z~~zu{{|~~~|~|ttv|zz}}}ws~w{{u~{{zz~{zy{|~v{|ywwyzy{|{z{{{xrq}|{|}}yr|}y{~}xs~zv}xtz}sz}v}yy{zztuyut~}|~yzwurr~~}zy}|}yy{~~xs||z~~zrs}shv{|~|xqsuz{u{xu{|{|{y|}{s|xrt~yww{~zz{|{{xqwzvuwx}~~xz}~~{x~}{vuyul~wz|qws~~~}~~~x|}~wwxw~~{x|x{xxvy||vz~yyx~}qx}}zuoz}~vx~x{~{wq}zvy}{||t|~wx~yz~w}{z}|}|z~~|w}{||ys}pn~my{xtxxys~uy{nqprotyb{x~vt~xvyzzyy|suz}}yqyszy~v{{xqy}wruww~{}}{z~{z|{vzuyy|zupqvyxzyx~{zv~{y|yz}~~ouuyz~|~{}zxtwuttr|z|||||}y~}|{~~}{wxw{|~~zxvswy~{|zyo}xpexwpxwpppnot}uy|vtuz|y|w}~~y}}{{{}{}{w||vzy}}x}xw}~yvpy|}zwxsr}v|v}w}z}wvy~w}zzz~x}zzr}zxszvuxt}~t~tz}yy|~|~~~}wrxt{}y{x~zuvsy{j|yuu~~~}x~xyzy}xwsytvzzt{|}~{xsx|un}|{~x~w~o|}y}l}xsw~~{trz~{{w}~pzhju{{vpxofx|}z~zoo|w{{ysyry~zq}zuv{~{w{s{|xr}yhxpryv{ou|zusqla||lzoztzyz{tyzxkuuwz}||{~p~iv~r{p{uxuy|joqsr}qq~wuxmnrzzwmkm}p||}y~{zzy{yyp}{thus~{pzp||s{zop{x}{vzyz|~txn~xy}|}x}}{~t|zz}u{pw}yvvy}yyx|tzu{z~zyvyy~{w{o||ypzw~~{uqywxurtqyvyyywx~r~sz{szswr|z~v~m~|x{|vt}}w~t{~}}su~~wo~zo|z~u}~w{ty|r|vzw|u}|}xyytrw{u}}~z|{y}px}w~n}yz~p|uxuszzw~}{zx}zz~~|~rrx}}v{y{|~wtq|xy}}~}|{w~}t~}yxwrx~|w}z~}q~{n}zx~xp|l|tzw|{{xztr|vvyy~wx~{xyxuvor~~x||~}~|xyvty{|wyt~|w{|qsuqxx~|s~xv{sx{}yt||y}}tvzvy~}s~vo{lwts|s|rxrwpz{uwuwqx|zx}s|t{utuv{wk|o|oxvs{lyvqrtowh}zrtjtrmvssr}}yzgwmzoqxx|z|y|~{yrmyw}s|qws}u~v}xz|v{ty~u}x~x|~yzxtywt~zz~v|~ozq||l{ps~vt~p|wx}|}~~y}uxzsxz|z{yz~y{|x~|~}||~|}~z|~~z|{{{~~~|{}}|}|~~||{~~~}~}z}{|~||}}~}~~~~~~}~}}~~||~}{zz||ywwz|wuxwvwvwvutuvtpptwspqrsx}{|||{{{{|{zyyxutuusrrqqqpmlmmjdccb_ZZ\aizyrrz{uqrx}}||~}}}~~~}|{z{|yvvyzyvtvwwwuttvsqqsqkgimjebdhihflyxos}|wsw{~~}|{yx|}|}}|}}|xxyyxxyz|}|yxxxyyxutvwvrqstromoqrpnnopsyyqr|{z||{{}{xwxz~~}~~~}zyz|}|zz|~~}|zyyz|{xvvxz|zxuuuvwtsruwtsponpttrnpsy~~yxyz{}zy{}~~~~}|||z{~~}ywvx{{{|~~}zyvuvxyzzzz{{wsrtvtswvrpqsompssqtx}z|}}~~}|}}~~}}~}|zz||{z{}~||||zy{|{zz|{|zzzvuuy{ywy{wsptsrqnmkmpuywsp{}zux{z}|z|~~~~}{}~|||{||}~}~}||}}|{{|z{}}|z{|{xxzyyvwxwtstuurqpqtvvtrsv}~|}}~~~~~~{{}~~}~|{{zxy|~}~~zz{{zxz~~~}yuuwxz||zwuvtvtsqoqqsuwwuttvy}}~~~}~}~}}||{|}}}|}}|{{{{|{{|||{{{|zxwwxxxyywuvtttqsspqqqrtvz|}||~~~||{{|||}}}|{zzzz{{{{{{{{{zyxwvwyzzyyxwvttsqopqquy~~|}~}}~~~}}|}~~~}}|{{{|}}|||{|{||{zzzyz{}~~~~}|{{{{{{}~~~~~~}|{{z|~}ywvwyyzzyvv|{xwxz~|{{}~~~||{|}}}||zyyyz{{{{zyxxwvutsrqqppomknw~wrqsy{xuuw{~||}}~}}}~}}}~~~}}~~~~~~~~}}}~~~~}}|||||}}~~}~}}}}~~~~~~}}}}~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~}}||~}~~|||{||}}~}~}}}}~~~~|}|{}~}}~{{}~~|~}|{~|||yz~}{~~}}}~~~~|~}}|}~~||||}~~~~~~~~}~~~}}~~}~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~w}}~~|~~}~z~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~xboard-4.9.1/sounds/win.wav0000644000175000001440000002054012717001265012552 00000000000000RIFFX!WAVEfmt ++data4!}}~}}}}~~~~}~~}}~~~~~~~~~~}~~~}}~}}}}~~~}}}~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~}~~~}~~~}~~~}}}~}~}~}~}~~}}}~~}}~}}}~}}~~}}}~}}}~~}}~~}}~~~}~~~~~~~~}~~}~~~~~~~~~~~~~~~~~|}}|||||zzzzyzyyzyyyyxzyyyyyyyyyyyzzz|}}~~~~}}}}}}~~~}~~~}}~}}}}}}||||zzzzyyyyxyyvvxxvvvuuutttttutxzuz}|}|}|z||z|||}}}~~~}~}}||zzzzzyxxxvvvtutsstqpqqpstquxu}z~|}}uv|vtyyvy|x|~~~|~|yzzxxxvvuuttsssopqoomkkooosqt|y~z}}uvzvuxxuy}xz~}~}zzyyvvvutttppqpllmllhghiptli|vzyxzyusuuustvxzyy~~~}y|yvvvtstopqollkhkhbcgksm`q}o~vzxquyxutv|~yy~~~~zvxyusqssolmmkihgfd__s}^Uiqztusx}|vu|zz}}|~~~zxx|xqttqqolooihkiffcc_`ySWbt}}}vu~uvy~}y~}}z}vqsvpkomkligkidfg``c\ZxYMlkt}ymqzpvzz|}}}z|yyvqlpphgffgf`^bb^YY[VbsAk^}s|sgysoy||}|}xvxvqlllihfcdd_^_[VVWUqU=scȺ}tuof|utu|}~}}}zvqqtoghhcbc_[\_ZSSU[~EMqiϽqosdvyoz|}}zxtyxoilmib_cd[V\[QONWBE|iǪˡ|osmmuvq~|~|yvmpuphffff_YZ`\SNQO[|BQu̳̬mmvok~~qyz|zvquxldfikdZW^_YRRRQNOp_@xz̝ͽzsgkv}sgl}}y~vuzytkdhkbZZYWURNNLM`~qObʾus~qghs|ulq~}~tmpqof`_\ZWVSNJEMcuiWcxsy|xmfmvtqvz|~|}|vqlmld_`_WSSROHMbohdiz|vvxvspquvx|}~~yvtpligd`[YYVQNJN`lhgmu}xuqtxxutx}}yxxtpifdb\ZYUOMHM\hdgps~~|xssxzxyz}zuqmkhf`[WUSQLHObggotv~zz|}yssuxz~~|xqkfdb_ZUOIEHWdfhmpzyutuxvsqqtzzxxuqoh`\ZYUQHDM[bgost~~yusstvxuuy|~zxtokhc_\YSNHIS^bksvx|xuvxz|z|~|xuqoid_\ZVQLINY_dovx~~~|xxxyz|~}ytmkfb^YSNJEHQY^itx|}|zyxxxxyz~}zuqlhc^ZSOJHJRY`ltx~~|zz||}}}|}~|yvsolhc^ZSOLLQW^hqv||yz|}~~}}|||}}~}zvsoifdb^ZVQNNSZbktz~|||~~}|zyxvusplgd`\YVRQQUZ`it|~~~}|yvsoligc_[WUOMNRY_hsz~}}}~~~}|xuqmigc`_[YUQOOSY`ku}}}}}||zyuqoid`_[ZWUSSVY^dmu}~}|yxvuspmidb_[YUSSUY^dmv~~|yxvutqolifc`^[WUUVZ^fmu}}zxuspmlkhfdb_\YWVWZ^fmu}|xusolkhgfc`^[YYYZ^dkt|}yvsolkhhgddb^ZYYZ\bhpy~|yxupokiifdcb`^[Z[^_dlt}}zxvspmlihfdcb_^\\^_bgmt|~}zvuspolkihgfcb_^[\^bflsz~|yutpoolkkiggdc`^\\^bdisy~|yvtpoomlmmkkigdb_^\_bflt|}yutsppqqqsqpmkhfc`^[_bgmu~}yusqqsuvxxusokhfdb_\\^cgmv~~zvvuvxyzzzxvqokigfdb_[\`dks|~|xxxx|}}~~|yuqolkkihd`ZUV[`ix~zzyy|}~zvusstsspmic\ULFJU`o~~}}z|||~}|xtpmkifb\UME?DVdsxz~|xvz}yx|}}|xqkc\WSNIE==Oku}~|yvz~~~|usqlhd_YSLFD@89Uy}z}~~yx~}vssplgc^YRNLFA;4Iy}}~uqu||}ztssqlhc\WSQNIB<74Zi||vv|~}tu~zvusmkhfb[WUOJHEB7Epd~x}~zvy}}|xyvqmifdb\YUQONF@7AgU~~}suz~uuyvxvslgffb[WRNONE@5JZj~ĺuT3$)4@N_pƽ|]:%+:ESfxɽ~hH-)7ESfzĹ~a<',;GWk~ʾa?1:GSbvµhH49GP]rʿb<-9EO^tͽ]1!0AK\tϽyK&&:FRg·X1*Wv¬e85Ng̴~I1Eeëa<<[~ȿO/?cҽ{G/Ho{Q9My`DFkiC?\ñW?O~PAYuMHiYG^]FYPDfVFesPZhYmpc}a^tSX|k^tgurxr_kn_kxboard-4.9.1/sounds/honkhonk.wav0000644000175000001440000001176012717001265013600 00000000000000RIFFWAVEfmt ++data~~{z|z|{~~{{z}w{{}|}x|w}r}klo}r~y}}{w{}z~~tt{r}nj|t}vzzxyp~{{x~jtllptzxvv{v|uxyiwXxYiiru{stvoto|{}uf~^riwx{}qf}gyzlu|oevo{q{{tuopw|fr{emkpqu|z~{q}xr~h`}iryruq}z~xtlwwW{dlyvus|qz|zu~{e`gphrvtofyzyqtaxfYyeszylxiux|~{|lhhwZwgos}ukvl~z~|qt`]d`mut}k~h~|}{}zmsP\\if~~l}qbxzy|xqhQlhMv]vkut}lnx|xt}dgRwPkZktlutyczxyww`ryK\[ef}prkhwwy|suijPshVkcxqtjlutwvps`\hvV|ybtwwlvuw}qxsa}hXzTocoyykqwlzq{t{fuwSYe]j}vsjkzqyrzgnLZX\ctwiisu}nwniRr\PfZ~swkmpu{juwbVgdFrUvqpq|pqstpo|[bZmE{~Xnyip~tqwsmcSdZmGv\h{]rtszjq]U{b[qLu\bw^}r{\oTx[}d[tMpSa_bkoqOfVpnl`uKuFiKpuZbZ_foprpUxLv|NeZSr~clulrpMmTe^[aTqwujltz^sn_vz_vtb~v|a}l{|sjvrkyjtzw{|bj]wmylon}|`v\jk}wty{|~my]{~ca]Zn`ru~~~f}`gl\px[~etsrm`xZuySc`eu}r{wk{~dytc`tmj|xzy|xpxpppqxvvxtmzxy}yyywzssr~rrtuxyuy{{}}uwuzn|isjo{qtz~vx~yyvzv}wt{qtumuzkyyvs|r~s{zwzvwkx|kyvvz{tyyw{w}~|{xz}}|{~z~y|~y~zrp~x}xq~yv{y}xzw|y{z|{{{zsv||ty}~{~yu|w|}wwrvutz~z~wy{}{{}{}~u}|x}}y~}~|}}y{uy|}||xx}t|ty{yzz~zw}}zy{vz~wxxyur{uu}wy|zwxux|z}~wztshlcun{ml{wvw~|vu~uuzxnqoknuxvtuv}{qtnevfylyz|}y~tzx~pmWyOu^}lqwhfd~|trtidrq}wypvhdzme|shot{|vz{yyxx}oioo{yl~sz}{zpzx`xlrsmuy|}{}~k_cihzvirw}x~}}o|pWx\rrbjp~y~nkjwXqbh~sdypj{}{yu}\Pi\fzwnm{otu|wqtZTZc_|monjwttotrVu_JrWtnmimqp{jton`ioOUiukgnrs|piz]}d]zPnajtdstn}xxnz_oqQPc_j~qjmlvqzmujmT~WX_a|lpppvlntwjWo]KeSxjkrlxn|oxzifdcHtKppcrmwqxjqkzh^lD~NftanowrrlpiyqYvCwMhy^quvmnljjzwZyFuMexaw|~y|ofj^dytYuDsJdl[}nwkXt[oorSz8sCc[a{^vlOi^}wutRu7uŎ8mHrpV`V[m{uwVx={9|yEbYOx{akjy]rBjM`]YowTcysl]rclP_iRut\de|h[{csqogk~y\o`kzrh]ctllxxhrckdqtv~czs}lnjhihm{x{v|jzypsgy`rg|gjmgz}ksgid|evcecoq{}qy_zY|o_]}vf~uu}}}juftXhmveik{_~o|_rlkw{lghyrTjYyqnod{}`vm||wn{uWMfe~{npeok~wprm_qevxwhq^sceuwjvmp}_xgkg]d^lgf~jgkhrz|hwbu~rzreyp\vi~xau[mllcZakpzmyfrir{iplayvjst{yzr~jk}ybn{ms~vyy}ytn}yoouzywssvp|zz|{zwvv}~omlelkvq~~{z{|usxqz~ptqqspsvrvxuxz{x~~{w}zxrxsyuwxz~zzzw|w|vzz}x{}~x|}|w{uxupprt}vy{~~zzq{zqz~|z{}||~z~~|}y{}z}wr~zrywzz}~zx|x~wx{u}wyyx{ryr~zw{||wx}x}~{xwws{zz~t|su~w}z~~}{|}~}xywzz|tr}t|t}wxyyy||}{w{twsvwvx{|{z~yyxxt{t}x}~}{yz{{x{w}||{~zz{||z{vyvz~wzzw~{{|{~xt~~t~}xz|~z|{~}{{y}xz~~{}{z}|y}{y~z~x{x|z|{y~|z}|zz~x|x}x~}yz||z|yx|vzx{x}}yzz{z{~}|y}x|x~{zz}|~}|~z|x|y|}{~{}{~~{~z~~z}~z}}}~{~~|~}~}{}|~}|~~||~}{}~}~~}~}~}}}}|}~}~~~~~~~~~}~}~~}|~}|~~|}~}~~~~~~~~~~}}}~~}~}~~~}~}~~~~~~~~~~}~~}}~~~~~~~}}}~~~~}~~~}~~~~}}}}}~}~~~~~~~~~~~~}~~~~~}~~~~~~~~~~~~~~~~}~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~xboard-4.9.1/sounds/gong.wav0000644000175000001440000012213012717001265012705 00000000000000RIFFPWAVEfmt @@data,~~~~}{zz{||||}~~}|{{{|||||}~{zz}{uqmkkmquy|{vsrsuy|}{zyz|~~}{zyxwvwyz|~~|zyz|}}}zwtrrstwz}}zwvtuz}~~||}}~~~~{xusrruz}xsqpqsux|}yussttwz{}xokjmsy}|zyywvxyz||||~~}~~}zxvvx}}xvuwz}~xrqsw}|xsnnqv|vle`bgmrux{|zwqkgccfmw~vokknqtvxxwuttw}zy{~~xrqpqstvy{}~}|wrnlloszyqkku|xvxz{}~|yuqrxvsssqlijnu{nXLJR\fntz{xuqmkmoomknt|void^XVXbo~}xx|z{|{ytqqu{}oechpu{}xsojikosu|xux}~{xvwwvyxtqmkjhgho{t^LFLZiqtz|qcXRNRZahmqv{{~ufZXaoz}{}yjfkx~uoljpx{yvxwlgksy~vrv|~{wyyty{sh\TPXfqvtpr{ytvvcct|srx~tdXV\dggjowusw{{vngfly|vyzh\\ajyugbisy{}{sowwqprtwvnkr~~yroni`^eqslny}{phfmvh^\^ds~~ykhox|xt|~qko{ys}{|~wkc^`eozwieqylmyvruz{xtv}}vljm~qkoojghjmuxqmq}o\Xdpjcll^`gotuxwoqlTFBN`p}~}xu|}s~wkcelkjuz|yso|{ien{^NTkyxvno||y}uwxhcmy}ys|ursmdcnwsikzqimw{~|laVV\\fv|}~tddrrmjnzzhTFNgzyi`be^TVhwy}{urwrysoz~kR@@^v\Z^esxtrs|lZXdmnlrz}xoeZdxijuntrvq^Zf~ydRNR\hru{vjk{{~}o\LRf||wi\Zkvlq}ybTVXRN\s~nq}yrq}yswzqVBBTi{q\Xfjhn|{z~p`ZXoo^Zaenznovqyx|whTFPjŮyb\^mzzucLHVkgVPNXuipx^Zhr~nXTdqhczqjiafqmks}ŰeF9DZ`^\humqwtt{mcehdk~sZNjsa`r{rw\FFXyulzfP\yvfxm\Zbn~y\Tbecl|t`dxt`aaexff^\j{objqrgRdr}~ozj^i}zkbZq^^w~c@Hb{{n\flbhsx|sdRJTpwoJNf|wV\xwtjhdXbv`^s{t{|ZRc{xcijvsmgbexud^bgjlko~{VTbjkek~~xjg}fDLvwqVJh|}rmz~qg|xb^ykqnqxrfTHFVxwanrfcl~x\PZfvl\RTl|h\h}XZquZXl{winz~}~{{oX\oveLPn{g^fi`au|fc|{vk^fv|}|vnvmV`xdizxiZVuwpni|eVRZu{w|ultsgNFetaTc}g\l{vy{^i~adp{|gTXhwn{^bx{ojcu|~ifjug=9bnk}^czwZV^vlk{}zojslvzuxpdrou}nlomuksww}zuusnu}V\yzz|g\ZgVDV|~kjupmvfinnjNNzu\^wx~um|ujVZrridnvdojLPmuf\\}{xvysoqsyvmeZq~orhfhv}ruvtlahoyyxvmxkZ^qr}j\izzjj}zp`io\czw{|vrnn||{rvwxwz~ts|x{l\B^~|symPVwxcszsy~ufekmkr|}sqjouup|ooxizuxqty{}vwwsz|cutP\wr`Zg|ymvzjm{g{sovqmns||u~xigoc\~}^toXZziRbwteN\w|e`rxj~y|n`bt|}n||pzvuso~|y{qnukVtr`hvyxzv|{rum|oybef\Xkusdg||zqy~ruwuulbt|syu^rthnnLcu^~l^}tn|`psZ=P~\a{zvpu{iXd{x||c^{ttvvowolufZfzxvv~umojmf\dhf|ekzz{i`mgkozs{m^^xyfvgjgZirRnqJ=hxj~ruo|wj}{bet|hotuwxsqgt~vo{}tzji|x}vhr}njukaoz}yro{|v}~yw}ucaovdaktgjiozvyne~x~m~olbegj\PZx{flnbrq}ykZ^efXbrox{tm^b}ykxɶ}X\aXzyk}mojhuuzsdenT\lo^~sz|xhkkDLtwosmxhemlhxw|}v~~Z\urqwbqrkTqVFtojswwy~t{ob`o\Xzwt}aFNnlXliqhfvy~~vvkjvxogs~ZXi`tnZkbytfunlnfwwrzssydac~}yj{vxwal|~y~}mRXoy}mlzqlfu~s}xp|suuf}oeo|vx}lcuhXsixz^h|~guveq|{}yuxn}{eoshvpfkw^l{t`alh}r^exztcfjzqo\k}qiXn}{uohuvm^^|orxzxwx}|{}z~z\yjZrqm~f^zkbvzla{sn|}fNknbvkxkf~~u^nzqNLvto{~{^vtrno|}|z{jtuZbsxJPryunosicz~lev|ryrbuZTrgXmtn~v\i~XmcHJxxavz}wql{o^bjyunNg~wos|{q~{yrtlisdZvj|wll~qZJbhHV~~y{mtuoq^`z}rl{{o}NP{yr{ynstl\k}nrq~z{wphswNVg\u|vvihqjoyveZjwwrwrwslmVl{}rfmqgkx}{wcs|uqv}{zyucTr{wufi}nVvy^^VXvmqyp{vnnhi|nxrh{tvlyns`~|VLawc}xcz~NNqdvq}r|{yg|im{tofXVuc\e}wuqvkVuh`inyl~ilzgxzyoev{{yvtv^gzioe^nwvZ\{aerhqnRdv~{jrTFw|jjdlrvd^a\lxntxyleZlsyzyrsxrq{h`cz{rhismmkTclevszqZvkdq~o{{vru{yu~sisv\cnm{}immafN^kpzzzdi|nlmwu{{gNZjZhvzyeg{y^kpTmy}rxsuymvyqy{|~yyZXkrt~upvcoyhH^emucXdxdzqqsxsfzv}txfjllbdfykn}}r{jlxz}xs}s}wjpr{kNezznrmz~naujtxws~{ntl^h{{vtvx{z{ohzlZqtjrckuldyyetiu}lioss{hsq{slmt}mfuyohu}twhrui}fxbiy~fmz\Zr|oxu~^xsvx|rto|k{l`jnlz{l\o}w^qoenx|xacehuoZ^cwxdawk^w~|q}syv}|tyom~pamyq^t{pvzau}qhrjrrswnuvydu^blTZ|~ZX}whyow}qx}vxz}o~vl|m`dwVRudqslkxsnvliZ^mhTcxLc~sjxp^mqp~nXlgHJVZ~hu^Vvd{xgi{jTlgVlnkjzjtyayu\z}n~u|{|n{ZRiw}boqk~jzwzuu|z}xy{crsbn}~xqun^kfXgoXo|lqusz{mzzdvycJrrZVqbb|sty^adZzws~v{suJP}pXjz\hu^gh|~k|ticyvy~ixylc}oT\jfx|gugVf{gu{{qeNVrmDXiVtm^uw`bkyt{irupgm~\ZyqargZ|tqzkxkVn~vv|}k|zeNVft~x}vtmyo^~wwqt\\^NgT\r\Trqe}~uqmrstvwhhV=bhZVi^^}Zc~~qydRm|TZcej~vmggbl}{pfcblojPcfX^cBTrJbwer|{tzcpw\fmjixaX^\zXTn~xpmv|tkZh{ZXzZ^yrfolqtoks}{x~u}sjykfsk`nqLZ{efoha\hjjxpe}ZLu~RJm`ixy|emr^fwziw~ot~pjlmtXZxj\ntymezwefu}ts|{bixzTt~gRZy^dyz}rxjXxxht|t}}eseejaZ{rj~RcZoyvxblugbyrng~s~~^`jpyqk|}ruoZvys~vmxehxqX^zur{}xrfu~qorwznf~vhVqhXgzqvoZqwZ\rw||~f^sihrtw}wuz}}qntohmxzw}rzwsjojXctx{xxqktvrvy}t{s~pir}jus{|qv~uktzqovgtnrtotjv{cg~lZs|nu{usryzt{rmxgd{tx~vae{os`\|sdtsr{ig~qhxuel{ymyrzv}{rskty|~nu{zz{{oi~lRl|nuvnpwyrrqvymtx}|tez~w}q~qlsfaqz|aiogosvn\ushrtzu~adlrtuunk}q~q|phwrwhd{mumXg{{{u}{v{c`o}cptTumfeksl{}tlgy|lvvsgr^krpoamwirwv}}~zx{{{jr|~w}}qny}kttr{~{yqcq}vmuzuky{rwqxzpywsxpjv~~|tnu{~tiq}{vz}|nmxvZfy}edwyuzwt|smvvcesifm~ywy^ohdu{pah~``u}to{xjXjrw~pq{ilywy~v|xz~vungdfytfmz|||uy{||y}ujr~}{e^hlnzqq~tmzyikt}|wvrv}{z{lo~ziqvouo~vg{trvyz~~~tu|zjdnorynxxzzw}xjyyfkujmvwlnxxlrqvym|s^hzr~lj|zrung{nkxqpxuyptux~ljs}yt{~ytjszr|{w{y||pj{zuv{jj|yr~wdl{y{{svjnljmlzmja|jiy{omx|vxtvyqlz|k|ymx{~kqyxz{ohx{umvt|yogxyuqno{pshnz~}vopquv}w|zush\rstliwvpmzjdr|}qprzqn}fhz|z|rku}{sjkis}vygs{{zwiosjoz}}uwiam~u{{mNazlzsss{{qtmmw{ynbb}ohlw\Z}xflzxkurmr|yoxpVTZ{qlqvpche}`gacwwzlb{jbi~{zx~{uixjV^|ghh}kat`Vmtmlkv|sq}uxuj`f~ekxtoysqoxl`vvsiT^{y{vxsh{{}txhZ\skgs~rwin{cgn{|klv~}n{~vt~qf|xqmkytw~}y\Tfq`jrujeunVzvlzfa{~tft`nyzaZ|tb^mrsuw}\PcuVVwzo}~nhi|zkhuwqma^{vaZmyos|mtxmstl{v~~rah|xpssw~epz~yikx}ojxuo|j~sxr{lXc|~ys|qlnzruusqlqz~c\kxm}yr~}sz^Xq}muz~zv{{rzm^e~y^ounxf{egzflu}|ek}|zxon{xz{wwlThyqtjZmvvlgrxq{}uw}|xulk|ytt~uzwfk|ymrzz~nq~wnuetr|odzyxvuwuhnggy}gZyekz~~uwxxrytws~ttzx}p^l{suw~xan{xx^Tqxzsbrrchkxzsk^oxsohvnr}zqjs{tnfo}|npx}~{vvzjpwxzrequm}kzymy~norwqanhdvvzwlyltyy|y}tx|vvx|{c^jueurvtwrntmnakqvsvvmlqslzz}~syyvh^cq}szo^txwszypyyu{n}~{~omv~}vx|gg~nqvwtwwxtrz{ztu}}x~{tuxrrsuvmuqnxywsuvvzru}{s}uw~zs{ry}}wns{zzx}yxdg~|ms{sy{{~}xsnv}zvy||yto}~t|x{{{hqsuo^vzrtxy{ztsvlsv~~qz|{{~}{zts~{suqmqu{||zoitvolw~z}hizsgxszy|rnu}xu~vZZvi`e{}qmvvwugoz}yxom|{}qjo~zws|mwuz~~quwyvyy{uu|~igwy~|xnw}xxs~vuv}xslx|wzw{~xsx~uvyocyupnw{oj{qhqjpwjzx|x{xwnklx||~~}sw}lhqsw}~|xvt~yrforqswnv{tsw|mm{}ytqis}wgZrumdkvrtyr~{wz~vrwv~wvvzxstuliy~xy|tqyvw}|ywuvrv~riq~|}wtntxplo~ia~zxzlk|ii~zxroy}uw~v~zst}}~tswrnr}|zuy|sbmz|}ru~yyzxz}uzqir}pu~|{{sdgmtyzro}|~ninwy~~y{rzxwlo~vx|uv~zxvy||tu}|wvx~|lls||}}u}velxy~||~wz}|xkl{}{~~}stth|u|whv{rzzzz|}vnrwyur|xxqjrzy}vrxr|vwur{ov~u}t{~{}|stytz~{zwov~yzhctzwts~}yqlxxqz}tr~xivuyyqt||u||}yv}{mvx|~~{vwy}}sq}}|syolwgdyr}h\w}nk{|t|mlxmxu{}rsmorqvyxvjfxz|tmqstq{z}}tuzujkqzyw}{{yz~lpz}|rw|uqsolwxo~qnzw{zz}|{v}vn|~{vy~~}vy}y~~~x{|}sryzxp~|~uurhw}|u}yr{nms{~}s{|{~|vy|rk~xwv||ooyolvo{v{}}jnrsy~|}z{utx~yu}}{wrs~~usvxp~|x~||y}zr|}u{xzkiqmwyqxxmxciuenvoqtzwr~rzzw~tnytvmw~tpx~zyx|}wmqqr}t|yqwxw{{{{qxqcjw|~zssxwu~}vov|z}}yw~}{|xm^f~sn{}xswwqnuy}s{nw}pr}ww}lsrgtsvhs|swy{~|yuy|yt|z~~rpu|thp|~}}yloqqqoq~wxbn}|vpswmriqwuzlwvw}xwt|di{uxxw|rv}vty}}{xr{yht|msxkrw|z|xuoeuzuy|}yv{||zvoxs{n^ryuz}~yy{s{uhqy}ytz}uv}~wzilvts{}qzx}{~~slyuzyu{v{~ujprv~qpytp}vosvwu|xylz|sx{|y~xmm|wz~xs|{kq|}~{zzrtyrx~on}sk{zus~{qwwyvy{}{lowjvzwz|yvx~}~{vy{pz{rrx|vs}{|wuwrzyyxs|}|y|ypy}kgztr}~}}yxzstzy~~uvsvyw~ntnl||s~{npzxy}zooytmouz{}{oxwecxvxvklw}zuxw{snvtpz~~wz{|}}|x{{sr~szv|~yzukdm~zyyoty|{wurxyyzx||{vuzzsu}}wy{jku~tqvqoll|}~{|zwunmv{{wy~~tuyqq|yim|~~~|}~~xt}hqs~ztry{qlv~}tnzt{tqwxwvsv|~}tpnswvx|suzrz~z{~tmx~{t}|ibt~lfy~|{w{{qq|zy}{}xywz~}zoqy}sxxnyuzzyxwz|||wtz~}~}yxrvzxz{rz||{z{yz{su|yyut~~z{||y{}{lo|wwzvz~rlp~x}}zy{~|~|wtw}~xlu{y{xy~{|~us{~}~{~wrx~yz{vv~wy{}trtwy{|}zxrlo|x{zty}rtyuwwtw~w||y}y|yqt|wmt{sxx{}mjkkp|nt}yrs||uqvy~}{vv{}}y{~uvw~vwwot~{|udexrq|ynls||ypnw{vttx~yy|~zsrz~}soyyw}{x}|tmqqnlw|xuu~ysjhrx~yvvwzuqw}}{tsx}trw~{yqq|wzz}ut{u{~xuutvsw~}ot{|sxwommv||ttz{xx{ypx~}pruzz}yqs||~|u~}~vllw|{wwysu~~{vw{~z}zx~ysx}~{xyw|xuyxsz{sy{yx{}qt}}upy}zu||{{tv{|zzyz}|z{s{{yypou{u}ww~|xzzzyuw{tx{z{wz~}zxw~}{}hfy~or~}v~yxrwwt~{y{uv|zrr{tkjnvxts{}{xz~ynmwwww{{~~}qiwzqx}~ytvz|xx|sruu{{uy~}~}{yywwtz~tv~{|z{||~zxrq}xytv}wyyv~wnxzpy}}{uw~}x}tox}xw}}|xywt}|y~|{~xjtzvwz{{zpnuuoxzw}zyysorzztv|~yuxzxwz~u|{z{uu~zy}{pnwunynuxzyry~{xw{}rs|x}z}vvx}}qp}}y~~uq|{~}|z~}|ts{{uu}vyzqkt{|w{{x}|}zx{~|z~ywx|~~z{|zupq~zz{~}wy}x~~wvssx}~yvvoq{|zz{z~~wqu}{~y{}yzzxztyyz|xz~|zwv{zux~}|||~{zwz{y~~yy|vy~~}~{uz~~{v{~vysot}~|zvw~yuv{~|{vsz~xx}~|}|xzzuy|y}~uw|~}x}}zuxnxxrw}~y|{sqz}vy{~ux}~z}xw~}ytw}{~|z~||~{|~~|}yxz}vyz}~zx|~}yz~~tu|x}}|}zvz}}ztrz|onz}w{zvz~yz}}y~zzvllsuqy~}|qtz|~wv||}upxzu|{xx||}zruy}sv{|~{z~}uv|{|~{}|vr}~}xikzzu{|}~zsp}|txult~{|~}~|z~rmrw{|u{yqw~{wvw}y|xvwvrv{z{xz~|wvz|zw|{vllyvz}zy}{uoqw}|z~{|xlky~ww}{|}ztpsy~~{{yw~}|zz}y|x{vtx~zyt{~tsx~}~~}hezxpt}}s~}xvvx~}{{~{kn}y{{xux~~up||wuvzzw}~y}~ztwxtzyw}wv~uuvz|}~~ss{{z{~{w{~zxzywuyz||{yz~|wruyz~}xst{yz~y{{tyywzw~yv~vyvtyv~{}z}x{xnu|vw}~qjmvxqlq|{u|trv~}qgtxvu~~wx~|w{vzwoy|vno~~yvy}}lr|~wy|y~vvxvw{|~{w}ptxwwuu~{z}y}yz~}m|z|~yxwrry{v}vz{vroy}vrwx|~yx||uyypt}~~{swyntxs{|w~|sz}~}{}w}{zz|yovxwzrnt}~}~}~~y}zwx{{{xzss}}|yijzzoz~y~~~|xx{ytwtr|yv|vyqjtyqzxr}~yvu{}}zouuuvq{to~yrt|t{ysz|txwsw}{}xz}z}yz{|xos}~ww~vv||tr|~||~||{svv|rnwzsxz{~|yyyupt{vqw|z{ruvv~~|~|}rq{{vov~sltzr{|mn~}|~|z}{v|}z|{y{|uw~su~}}~yv|wnz|ru{~wx|~yxx|y}}x|~pjy~{~zwy{xzxx}}~}uu{uo{x}wv}vw{|{ty|wx|~|x}smuzrt{{}}}vuxx{}||uqoryzz|ps{vxy{{y|z~z}{suxwx}}~{wty~zxy|{|}uz|{|~vz~xyzvprx~zx}yy{~vpy~zor}}rmv~~|{~}sov|{y|srvy}~yw}~xxxt~|wx|vy{uxxuy}~}||{wz}xsu~{x~xpow|{~xsyzxwzxvtglzwqqxuqww{~yoow{vu~{ywsz{~|||yux}yz~x}vps~}|vu{~xy{~z|yw|wqu{~{rnxsjow~|{{|}{z||xw|{uty}{xx~}yusy~yx|~||}xu|}z~}|}~~}}xrw}vu|||usz{y~|uyzwy}}|{}{xx{tqw~yuz|xwx|~z{||xx{~~|yx~|wxy|}w{xst|}xw{~yw}{}wwww~z|}|ulr}xrsx~||~~}~|}~zyz~{{|vuz~|||x{~}zxwyz}v{zwz|}}z{vrzzsu|~yz}~xx}{xzyquyqr{~~~us|}yz~~zy}~|}{y}{y{}~zx}~~}~}vuz|}|}|vz}vw~zyz~}y|~~z{ysnq{}~}zx~yz}tt||z|}zwy||}~xv}{vwwx|~zuz|z}}|zvz}|yw|~xy||{z|||{w|zts{||~z|}zvuz|y}~||}|}yz{}xuuvwz~~{~{|~yww~zxx{~z{~~}z~|usv{zwzy~zxz{}}{~yv|ux}}xsqt|~}|}}{y{||}{|~{y}yuv}|~wu||srw|{xz{vsyxwyu}}{{}~|xz}z{zxxx~{zzx~}{|}}uy|{{}~wy|wz}wt{~vvxz}}}|}|x{wy~yy{|}||~z}}wqr{vt}|wt{yvwxy}|}{{}zy|~y}{|{wxxp{~}sls|uw{w|}|y{vyz~}x}||}}wx~soy~z}~z|{xz}}~{x{yy}srz{{tpr}twzqqv}nl{yrz}vowvs|yy~x||{}{{~x}uw{zzvuzxxy{}ww}xz|~}yzz{woywtzx~{}ytu|~y~yxzuz}or~{{w{~uu}yrs{~||zslt}|vz~yx{}{y}}yztrttwxxtz{ty}yz~xor}ysv~~v|yx~y|~wsxvv|ttzzrx|}vnouy}|nlr{z|}x{{wwy{}~ywy~}wy{zwsvw}}rq~{~|wy|y~xvwv}~try}}{xutssvy}}z{x{}|{}{y~~vtx|yspwzywvz{}x|zsv~}}}yxxzyz|||x{z}|wx{~}zz}{y~~|}~~yx{wvz~~}}}}~yy}{tu{{xxw|~}~z}zy}~}~}}~}}~zw|~tu{xz~}~xw{~~xv|~|wsrw|~}}{}{{~{{}}~~~{{|y}yx~}xx~}}zxx}}~}}z|zvz|wv|zz~{y|vv|~}}~}{}}~{xz~|xw}z{}~~~yxz}{v|}yww}zy{}~}y}zw|||vx~~{~~}z}}{z|{wy|}~~|{}}~}xrw~vsxyv}zyxzz~w}zw|~{|w{|vx|}{ww~{{xy~z}}{}~~zyytw|{wy}{|~{z}}{|~uvyu}|x{~}xv|}zyyvyx|yu{|z|}zx{~{{~z}~{y~~{z{|}|}{zz{{yvy~}yz~}|}}zyuy|y~yzyx~|x}}~|xvy~}zx{|ywvz|vy~~~}|zz}zv|~|ywy}}~|x}|xx~~|z|}tsz|yzz|}yx~}us{~{uv{}|xv}}}||{~|wty~zww{~{xy~~|yvrty{|~~{||z|}~}}{z|}~}}yvy|~~|~zw{{w}~|}{}~{}}yz~{|vvz|~yz~~~~}{{~z{}xz|{~{xx{}|z}zw}z{}}}wvy}~}|z{}~{xz~x{xvyztsy{}uu|{{{{zwz~vsx~{xw{}}~~{}|}{|{~|xzzx}|}}||z}}|}{uy}}y}|}xx{||~}yw{~y{||{{~}y|z{~|~~zxz|}|~}}~~~zy{~{|}yx|zz}|}~zz}}}~~~zy{}~|zyxwyz|~~}yw{}}}~}~z||yxxz}ywy~~||}xzzx~||}|}|xx|~yy~~{y|~}|}}{|~{|||}}y||~}zy|}{y|}|}}~}{xvx~~{z~{yz~}yy|}~~~{y|}y{}zz~}}z~}z{{yz}|~~~}|}~}|{}zy~}}|}xvw}||wuw}|zzz~|}~{}yz}z{~~}zy|{z~~}~~}xx{|||yy}}z|~}~{}~}~~|~~|~~}~~}~|{}}yvx}~{zz~~yy|ytv}}|{|~~{{}|z{}|{~~~|y|}|~~~~zx}|wyxvy}}}{~~zvwz~zz~||~~{{y{{ww{~|x|}zz~~~~~yv|}||~|{}{{~~~||}||xv|}}~}}z|{}~zsv||yy~}}|zxz||~}|}xy~}{wx~}zwx~|~|{{xz}}||~{zz{vtz}xy}zx}}y}zuuz}{~yw{ytu|}|}|x}||~|z}{}{zz{~|z~{||yz~z{|{}~~}yy|~~}yz|~~}|yy}ysw~~~yxyz|~zz~~~||}|yyzvx}{~}vw{y{|z|~{{{{}|}~|z|~z{zwz}~zyz~}zz|{{~}{}~~~zwy~yz~|~|}|~~z}zwy}{}~~zux|y||~}{{{~~~~~}~|||~}~}{zyz~~~~zz|||~xz~z~~~{|~}{~}~zvz||}}|{yuv|wu}|{|}}zy~~xvz~}}~~{|~{z{}|y{|z}~}{}}{}~~}{{}~||}~}}}}~~}~}}||~|~|}~yvx~}}||~}|||~~}~ztv|~}|{~~~|xsv~}~}~{y|}{}}|~|y|~~~zy~{||x{}|~}{zy{yuy~~}~}~||{z~zxww{~{}~|z|~}||{|~|~}}~{yz|}~}}~}~~~~}|}||}}~|}}{|{z}~}~~}}|z~{}|yx{~~~~z{||~|z|z{}|}~~|{~||~}~|||z}~}}}~}||}||}~~||~~~z}}zz}zwz~y{}~}{~~}{z~~{}}zx{{|||}x{||}yy}|{|{}}~~~~~~~zy}}{zz{~~|xz|~}~~~z}||{}|yz}~}}}~||yz}~~}|{}}}{}~}z{~{xz~xz}~~|}}{xx{~}~}~{|}}}||}{}||||}|{~|z~~|||}{xy}~~~~{{}y{~}|zz|}}||}|{{~~}{}{z~zvz~}{{~}||~{|~~|zx{~}~}|}|{}}~~zz}~||~~}}}~~{z||{}{{~~~~{z~~{|yz{|}~}xvx|z~~}{y~|}~~~z|~wtw|~~{y{{x}|z~{z~~}|}}~|xy}}z|{x|z|}z|{y}~}~~}~y{}z|~}xx|zzzz}|zzy}~|~zx}~|~}~}}~}}wu}|z|z{}{}}~}zyy|~~}z|uyzsw|~~~~~|xw~}|~yw{{~}}}|~}{}~wx{z~|z}|{~||xx|}y{~z|}wy~wv|}|{|~{}zy}|yt{{{~~}}{}|}xvz~|{||z{}~}{|}zz}{y{}z}y|}wx|y{||~}}~zz~{uxxw~~|{~}{}}|}zx|}zz}~~|y|}|~||~z||}~~zz{xy}~|~~x{yx~|{|~~|wxyw}~|~~||~~~zw}}{|~}z}}|~{{|~}~~}}|ux~|}z|}wvw{|}~|~~{|{xy~{~zz{}}zz~~}}yx}||||}~~}{{}~|}~}xzzxz~|zz}}{}~zwx}~~}{zxy~~vqv}~}{z|~}~{z{}}|~|z|}|}~|{}~|}~zx{~|}~{~zz|~~}}}|z}yx}||}}{yzvz~}{zz}~}{~}xx~~~~~}~}~{y{|{||~~}|wy~~{~}}~{{}~yxy}}}|yz}zw{{z|||{z|y{~yx||ww{}{z{}{wz|~|{|||}}|~~|}~~||~}~{zz|~}}}}}~~zy}z{~yy||z}}x{|wx~}{||}~{zzz~~|}zz}~~yy~|y{~~}zz}z{~~|||||}}|~~z{{yxz~~{}{zyxz}{{~}{|~|~~|{}|{|~}{z|}yvx|~}}}~z{~~~}|{~~zy{|x{~}}{~~{{~zvw|~yx}}}|{}~~~}}~~~}}~{{~~{{~|yz|{|~|{|}|{~}{|~}yx|}||}}yz{|~zz|~{{|~~{|{xy|~}~{{}~|yy}}~|z|}yy}|}~zx|{z}}|}{xy~~xx||z|~}|||}|{}|xwy}{xy~{|~z{~~~~|}~zz|||zwx{{y||z{}}}{yz}~yz}{{|ywx|}{|}{~||~~|{}}xx|{y|~}~xtv|~|}~}}~~~|||zy{~~~}~}xxxy~|}}}~|~{xz||{xy}~{{}~yuw~}|}|yz{~~~{y|~{z{}~}~~~|{}|{wz~~|ywy}}}yux}z{|y||z}yuv{|yz}~~{{vy~||}~~|z|||~~{|}}~|{}}{}}}~{yz~~}~}yxy{~~~}|xwz~~|}zx{~~~}||~~~|}|||{~~{yxz~~|~}|zwx}~|y|~|xx||z|}}}~~{|~xv|~{|}}z{~~}}~|~~}}~~~~~~|}||~{}~{z}}{z|~~~{}}zz}~yw|zwz}}}|z{~}|~~~}}~|~|zy|~}}}}~|}~}~~~~|{}~~}|zz}~~|~}z{~~~}}{{}}~}|~~~~~|wx}y{||}z}}}}||{|~~~~{z|{y|{|~||}y|~}|}}|}}{{|~~}~~}~{{~||~}||}{|~~||~~{{||~~}||}~}~~~~|}|{|~~|}~~~|~|xy{}}{|}{|~}|}~{y||}|z|~~}}}|{~}~||~}|}~}{|~|}{z|}}}}~~||~}|}~}~}}~~~}~}~}}~{x{}zwx~|}|{~~}~~yz~|{~~~~}zy||}}{|}}}~}z|~~~yx}}}~{|~~}||}~~}~{|~{z~~|zz|~}||{|~}}~|{|~{||y{|}}~}|~|}||~~~}}}|||zz~~}}{z{}~~|{}}~{xy~|{{}~~}~}|}~}}~|||xxz}}~{{|~~|{}~~~}}~~||~~~|z{|}~~zyz|{xz~~|y{{wy~yxz~}{~~{{}~}|}~~~}|~}|}~|yz}|}}{}}|}}|~}z|~~~~~{{|~{{}~~~|~~yz}|z{}}~~}|}~~}|}}~~~|}~~|||}}~}~~~~~}|zz~~}~|ywx|~~||{{|~}}}yvx~~~}|yx{~~~||~~{xx{~|}~}~}~~}ww{~~}~~~}{{~|}~|{}}|{|}}{|~~}{|{||{|~~|{}~||{{|}~}}~~|{}~~{yxxz}~||{{|}~~}}||~~{zvy~~~~}|{{|~~~||~}~{xy{ywy}~||{|~|}~~}{}{z}|z{||z{~{z{~}{|}|}}|}~}~~~zx}~~~{}~|||~}zz}~~~~~}{z}{z}~}z{|{}|z~}z|}{z|~|}|~}~~{{{{|z{~|{{zw}||~|{}|}~{}~{|}{z{}}}|||}}~~~|{}~|||}}~zz~~|||}~|}~|}}~}{||}}~~~~~~|||}~~|{~~{{{wx|~~~}~|z{}~}~~~~~}}~}|||~~}|}}}~{z|~}ywz~|}~}{}||}}~zy{|}~}~~~}|}}}~~}|{~}|}|{}~~~}{{}{x{{x{~~}{|~~|}~~}{}{}~~}~~||~}{{}~}||}~~}}~~~~}{|~}}~}~}~~{z}{|}|}}{}~}|}}||~|{~{zz{}~||||}~}zz}~}~}{z{~~~}}}~~|}~}{xy~~{|}~~|{|}}||~~~{|~~~~}~~~~~~~~~}}~~}~~~}}}~||}~}||~}}~~~~~{z}~|}~~|~~~~~}{}}}}~}||}}}~~}{|}}}|}~~~~~~~|z{|z|~}}|}~~~}}~~~~|}}{|~|}~}}}{|~~~~~~~~~}}~~~{z}~||}~~~}~~}|}~~~}~~}~z{}}~|{~~|}~}{{|}{|~~~~{|~|{}}||~}~}||}|}~}}~}}|}}}|~~~~~~{{}~}{|~~}~}|}~~}~}{{}}}~~~~|||~~}~}~|z~}|}{~}}~~|{}||~}}~~~~~~~}z{~}~~}~}{z|~}}||~~~~}}}~}{|~{z|~}~~~}}}~~}}|{}~}}~}}~~~}|}~~z{~~}z}}}}~}~~}~~}~~~~~}|}~|}~}}~~|~~}~}}~~}z|~~|}~~~{z|~~~~~||~~}~|{~}|~{}}~}~~~}|~}~~|}~}~}|}~}~~}}~}~}{|~~}~~~||~|{~~|}}~~}|~}}~~}{}}|~~~~}~}~~~~~}}~~~~~~~||~|}~~}}~~~}}~}|~~~~~~}~~~~}~}~|}~~~~~~~~~~}~~~~}}}}~}~}}~}}}{}~~~|}~~}~}~}}~~}~}}~~~~}}~~~~~~~~}~}}}|{}~}}~~}}~~}~~~~{|~~~~~~~~}}~~|~~~~~~~}~~}}}~~~~~~~~}|~~~~}~~||~~|{|~~~~~~~}~~}~||}~}}}}}~~~~~~~~~~~~}{|~|~~~}}~~~~~~}~~}|}~~~~~~~~}|}~~~}~~||~~~}~~~~}~~~~~~}~~~~~~~~~~~}}~~~~~~~~~~}~~~}}}}~~}~~}}~~~}~~~~~~}~~~~~~}|~}~~}~~~~~~~~~~}~~~~~~~~~~~~~}~~~~~~}}~~~~~~~~~}}~~~}~~~}}~}~~~|{{}~}~~|||~~|}~~~~~~~~}||~}~~~~~~~}}~||}~~}~~~}~~}~~|}~}~}{z|~~~~|}~~~~~~~~~}}~}}~~}}~~}}}~}~~}~~~~}}}}~~~~~~~~~~~~~~}{|~~}|}~~~~|{|}~}}~{|~~~~~~~~}~~~~~~~~~}}~~~~~}~~}~~|}~~~~~}~~~~~}~~~~~~~~~~~~~~~}}~}}~}|~~}~~~}}~~~~~~~}~~~}~~~~~~~}|}~~~~~}|}~}~~||~~}}~~~~~}~~}~~}|~~~~~~~||~~}~}}~}|}~~}~}~~~~}}~~}}}~}}~~}~~~~}}}}~}~~}}~~}}~}}}}~~~~~}}~~}}~~~~~~~~}}~~~~~~}~}~~~}|}}~~~~~}~~}}}}~~~~~~~~}}~}}~~~~}~~~~}}~}~~~~~~~}}~~~|}~~~~}}~~}~~}}~~}|}~~~}~}}~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~}~~~~~~~~~~~~~}|~~}~~~~~~~~}~~~~}~~~~}}~~}~~~~~}}}~}}}}~}}~~~~~~~~~~}~~~~~}~~}~~~~~~~|}~~~~~~}}~~~~~}}~~~~}~~~~~~~~~~~~~~~~}|}~~~}}~~~~~~~~~~~~~~~~|}}}~~}}~~~~~~~~~~~~~~~~~~}{}~}~~~~~~~~}~~}~~~~}~}~~~}~~}~~~~~}~~~~}|~~}~~}~~~~~~~~~~~~~~~~~~}}~~}}~}~~~~}~~~~}~~~~~~~}~~~~~~~}~~~~~~~~~~~}}~~~~~~~~~~~~~~~~~~~}}~~~~~}}|~~}~~~~~~~~~~~~~~~~~~~~}~~~}}~~~~~~~~~~~~~~~~~~~~~~}~~~~|}~~~~~|}~}~~~~~~~}}~~~}}~~~~}}~}}~~~~~~~~~~}}~~~~~~~~~~~~~~~~}}~~~~~~~~~~~~}~~~~}}~~}}~~~~~~~~~~~~~~~}}~~~~~~~}|}~~~~~~~~~~~}~~~}}~~~~~~~~~~~~~~~~~~~~~~~~~}~~~}}~~}~~~~}~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~}|}~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~}}~}}}~~~~~~~~~~~~~}}~~~~~~~~~~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~}~~~~~~~~~~~~}}~}}~~~~~~~~~~~~~~~~~~~}}~~}}~~~~~~~~~~~~~~~~~~~~~}~~}}}}~~~~~~~~~~~~~}}~~~~~~~~~~~}}~~}~~~~~~~~~~~~~~~~~~~}}}~}}~~~~~~~~~~~}~~~~~~}~~}}~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~xboard-4.9.1/sounds/penalty.wav0000644000175000001440000001420612717001265013433 00000000000000RIFF~WAVEfmt ++dataZtz}wf===KtqN=?[qa^dvo]JFTok_afpzhmzsjjq}rdi³yvdTQQ\}zS==DZmxvmb[caWawvkptpp{wsvw{ykn~kaag¼vt¯{tqsa===KtwO=>Ys^ZbvzfNDSkpklhommqmhmytjgy¼~zaTTZqpM=EZjtqjbddVVezyjhsspzqrsy|vs|{aZ^s¬muxqx{X===YfG=Eem^^gz~jWHGZv}gadixzkt}ukmvqdm³xwgXUTazT?>I_s|vod_gaVavqhotmnzyvxx}ykp}mcagws±~s}qnd===Hs{S==Vzc[at|iQCNdohigismssmlvxmhu¿{jZUXjzT?DWgrvnffj]Tax{lhrtmsqpquzvr}|f_at¹tw°{q}wxU===XkK>Ffqa_kjXHGZv{d[_dq{~sfnwndfpl_l¯v|dVSQaqK==G]mzsma^f^Td|qktvmo{uvxz}wlx~la`k¸tt¿zrorZ===VsK=Dcta]hwdLGXrzkjhfq}mmqmhjwsijºv`UU_|^C=K^itzqjdidUZntiowsr}{rstxztw|q^Za{ znwºtsvsF==Cj]A>Qz{e[cws_NGQjsa_di}pmzylgmxxecz¹}vv_WTYtaD>EWlx{qj_ccTZq{nmvtnwvyxz}sm|e_`tªpyºus}mtT===XmG=Ddo[[hs`KFWqzjhhfqsqtqknztjj|¸~xcWU^xfKDO_kvrkegcVZotilspoz{srquxtw{~zgdkz·zxzqJ==MoaIDVz}h_dvqaOITko_^ch}}nlwvkgmywfd{·}vr[SQVrZB=ASgtzqj_a`T[txkltqmx|tuswznl}va[az¢~s·uyzoqA==?i\==Mu}aU]q~jSAJdqffgh~wmpojgo}zkem²lWQVitO>CSckywqhdeWPa||ngoqktutrtyxt~zfZZl¸tt²sz}{W===XmK=Cam][jiTEI^{f[afs{ou{qhktmai°x~iXSTdtRC@J^mztod^aWQd}sjqtmrzxwv{wmv}n_\f¼vst|sob===Jw}T==Vv^WaxvdKAQmofffjzqqqkjszmfp½~m[TXkwWEGWeo}ypgffTPdzlfmpjtrqqqutq}{i_^m¼wxµt{}zW===XmJ=Can^[j}hTDFZx~dW[al}xmqwpfgp|rdh´z}mYTT`qM==GYhswpg`c\Sa}vlqtno{{vwsvvkm}t`Z`}ž{rµquwmj===AmT==Oyx^T\s{jTDNgsfdcd~{srqjis{mgr´lWQXmtQ@FVckyzqhegYPa~{mgpslsvsssvurzyiZXd½sn²}ot}x\===SsN=?\o\WfjTDFZwm[^cn}sw}tihq}scd~²z}o^WWfvSDCK\jutmf_aWO`{rjptmnz}yxuxxnq~vaY^x |qµtzzqm>==Ak]==Ltx^SZpzgQBKc}tgdef{zwvpimzqgkvaTTd~\DDQ`hq|qhdeYKWqqgmtmm}zttsvwsvztc^dœ}v¸xz{d===OzyQ==T~q\T_ynWDDVsm[Z_h}}{zqrythcdqqaaz¶zt^TR[zZC>CSdm}}rkcb[NWttmqwqjs~uwtwxml{ze]\r¬qz¶sxynuG===d^==JoyaV]s}hTCKdwjecavxwwphjushjvaTTa]DCQ_gptkgj^NYtqgmvqmw}sqptwuwyzzaWZq¦rx»squpB==Do[>=KryaUZrz`JCPjxd^bg{}{tknx|f_r·zxgcdjpQHT[dutgpvmvsg^DA^kZ[dz~t`^etspvzqjs~z^E=DWq|slgd_\dqtvz|sk`_jx|jhgqgbm}zwx{xldosvw}tc[bqaJAHXe}gcjm}shRHcwYMTcy}jjwvmq}w{k[TZq|qgcafv}}qf^PQ^q}md^azdXap|}vqmntzzwrs}}w~}|mbVWdwn_am~{gZYjwbUWbs}wvyzy}zx}x|wf]^m}x{{{~}wvwvx|wnhdfquk_[dqxtkglz{qw{skhs}olwnjwmXHHSbw{jcjxtmqvos}zy}utzzkc`gz~hVNQ\kz{xvstvwz}}thddjz}}zwmeekswyyvqkkvoo{qaUT\k~wonq{vpq{}}{}}}}zojgm~zsjhkqwz~~{xtz}~ztmjjq}}wx|xrw{}{xusokltz}|vmktzyqe[Y^k{wrv{~{vx}zz|~||~vppt~|xztjjqyzx|}vv{~|zxvqhccnsknz~|xtxznjmv~~}}||~}xxzztqooqvyzxx|}{}|utz~}}}{vtvyzwz~{}}xzxqppsx|}{z||{vqlmt|onzzuw{zokq{wtz~{vmkjkqxxutw{}|{wqns|}zzz{{tsv}|zzwstuw|~}zy|{tojkuvsv{}zzz{z|~wsvzrt}umlpstxzxvtvz|}}}}~}}{z{~{yz{|}tqtwzyusrsv|}zwzztrqqty}~tmox{~{{}xpov|vyztokjkqwzyxz}}{}}~~||}}{z{~{}~{{}{}}{z}{z{}}}}~zwtpjgiqz}wtuwwtqt}z{~{zxvx~}}xqtzuvxxxyy{}zxww{zwz}}}}yvwz}z}zz}vtv}|xw{zxy}}}{z}}}}vqnptx~}usw|}|xvx}}}yvw}xst}~~}zwuw|}vrtz{vx}~}|ywy}~|}}}||~~{ww{}}zsootx|~{zz}}}{xvy}{xx{}{zyz}{vtw{{z{|{}~zxwxy|ztsvy{}}{{|}}}}|}}~}z}}{|}|zzzzyy{~ztstx{}}|zvsstvwvuvz}{||zxvuwz}}}}}|}{~~~|ww{}|{zzz}{}|{}}|{zzz}{vttvxzzzxvtvy{{yvux~yz{}}z{}}yvwz}~}zxwwyz{}}~|wvy}}yvuvy}}zwx~~}}~}{z{|}{z{}~}}}{{{z{}}|{zz}~~{wttw{xboard-4.9.1/sounds/roar.wav0000644000175000001440000006013012717001265012717 00000000000000RIFFP`WAVEfmt ++data,`~z|}|}~~}{yy|~{y|}}||{{{x|}{zwz{{}||~}}{}~{wx{{|}||~~{zxvutsqpprttuttuwxwvvvwyyyy|||}zzyzyvssttuvwyxy||z|z{~{zyz{|}{y{|||zyyyzyxyz{{{{}}{{zyunlpromnoqqrsvxyz~}xwvrnnopnkkmnpqrtx{~~~}}~~}zyy|~~}}}|zvqnnqrpnqtqporuvyz}wtqmhfdeffegjkjmpux{~{usopqrqry|zvrjccglrsuz|}xpkea_^cgfeflsvvx~|}}{wwvrptx{}wttsty{~}tnihjjgjnquwxy{~|tmicabbcbdedfnruw}}vqniecfjouzzohd]UONPRUW]ensywld]ZZVUTW_ehgefigegjlmpv{}zwtttrsv{}{xxvtonkihfggnsvwwxy{xuvutvw~}vme`ZRLIFCBAB@AGNSWbn{{rkeZQMJHE?AEFDCELRTV\afls{{smigf`]_`^YY]``_`bdhov{ypke_YRMOU[XX\bc`\\^addir~sdYQI?;9>B@CIMPTV[agknot|}|tlghfghlqpmpvwwvvuxwvy}pifaXRNMKJHLPPS[gpx{ncZRJB?<;8@FNeȾnT?,",7E[mwuokgYMGKVlx`NF>0+5?+ 2FZi~ta^kyz[E82259=BADFH7%  %Ec{~si\SMNRRMJE>BHPMPV^_^TKJXjpj[G2# '+'"#,59@O\emwzztpiegy}n]OB/  +7BSclv~}|wxskaVOF>1#   (5AHJIKNSYbjv{qR9$ )?YiyzgVJ<. "AXl˵r[GHUcrúp][`gpۿzcSMQVVL?6?KTXh{»zkhu˾zzyo`PXnάslbSB;31K[`_oӸse`gxŽn\W_ewl[QF8)$#+:Sj|Ĵs]W[`ikj[RMU^ftvgSGOoûhSEA7( 2Kj~{xcKBA7/,2:GU^_`]`i||maNB85//+,44+ %=YngE4'"  (AScptXB0&$7IRUOMDMS\\[XWPIC=2''%" (-4@HMONQD60CYn~k`M9 ! 0=HB/-@Zh{|r[OC70$  &;NSYgʼ}fH% >Rbt~^C+1^~}xnaG. 0SewaSWhsrnqtwU<:HWZ[_jqx~vvfQDIOYZ]Zcll\<$#06D]ȿtk^L?5*2Pcyû~~fD) />ITdnnwƩwt{zpi]R=81;L_rscmɧfVKGPMMZeqzyle_VUSMJFNXjzԺukhd\WX[ZVJ4%&6Me}xogYKC<2(#.BS[dwϷzbNN[q{fYWfxƽyj`fmzmI4P~̻qldW@+%7Rkzγͺɽs`POU]oкmd^YQIHLTexпμ|eZSU_kuľǼtstqg\WXZ]TA6AHPXckms}|n`PJQbs`VGPd~jL<6:BFMOWaimmj`O>-.C[qǷvd\RHCD??DLME;0,/=NUe̴m^M>74,'/BRfϾ˴}rllqzȵ|plllr˼hI47HW]]bdffhs̼yhUFFOV]fs}ȾÿǴ}}yxz}vj]ZawӵiTA5,$'2>IOSSUanɸyri`YY^gotx|}y~ֽuh_XSTYac\RFGN]p͵xiaVJ=5137IS_nzzzɼ}wjZNB7-"!&+06>B@=GUcoºwjYE/   /8=>;435:CNV]iurmjklxznjdXI;,"  #,8BMVWUNMPW_fkuzrsjcZYWNGB;1% !0>IV_gjlmnponptonqz|{yuoja[VRPT`effhdVA0 "'&3G\h{}shN7& %+-/8@DKVcgc\]esyw|xri\J=2%  .;HLTY\]ekop}vrj_^_ZQPOI;*  *9IUYQFBNatкznaRD:3048=AGJMNQOKIFCBDE@>ADJWbinvz}wk`TMIIA827>HNPROKFDDEFGCAAKYgps\H9/*&%!" !$,003:?ETajoxsd\WOGBEJOTXWPE=60)#"-8DMTXROJNMVi~|yxtoi_SMD5("!*7AMW`hnh\RU`o¹o^ND8+!'.8BHOVbnz{k[OD@;5376/)$!$&*2;BLZgga[]h{û{qfXOGC:5574-#"*1CCCDEGFGMRW_o|~ſvplknmmnsvvofXOIKH@7214?LV^bhntz}~zphfhly~sot}yslaUI?4'%.9EPYbjptyzy{}{ttssywgVC5,''+2;DOYcmwzxtnhikoxǾvmdZOB:2,(&'+29@GLR\gnnorxĹ{vnbVG=5-)+**.38GUeq}ž|}~xrka]XSOS[`]ZYXWY`gmsz|usr}{yz|pc[XSMB9659@LU[^cjnsz}sf_ahyʾzw}~yvzytoh`YVL@1&"+:HQY`iry~}wpiijuz}}ysk`VH>4+!!+9GVairyog]OC<80+-0026;=@GPU]iv}ywwpc[Y[]cmx||z}~rh]SKHH><=CGR^ehihgfgiiiopg_\_bq{mYD92.' $1?LV^dknosqkggmvľzztjdfikkong_QC70*(+1;HWdrvpw˾}xrnhaZTOMPTSQMOPWZainsx|¼yk\RKC@@EJOWZXUX^fpx~~xpkf_XUVWSRTXZXZdmt{wofa[TRX`iptx|{{ý{qcVOJJKKMLPTY`iowyslf`RD;70/3=EUgoyŻytqlhc]VUTUXROLLMPORX^imwwjc\XUSW[_jomltwzyyzwu|ux{p`QKEC>;:?ABGPYcmu~¼zsoprrssqlg_OC<60-)%&-5ANZaflmnqtwymg`WPNJJKLE<5/,+.047;DO[aflr{¿}oaYPGBB@><<=<=>AAFTdwyj_XRMGDEEHMQSV[_bdhnv~¾{wtssy}vqoid_[VUX_bkw̿tdVLE=:=FOX`mxxkf_VRNIJR\gs{|õrlaWOFECFHP\gow~}x}ymaWL@730-.4=EO[cir{}rjdb`bcegfggfedb`_]SGBBDGOYajty{{~voqrxzttssuvz~pbWMF=65:?AIQ]elqrrqssrsvxzvx~yxuuz{yztj_VQNID@??CJS]eikowxuuy{{obYPJGGJMS]fpw|}|}}}|~}pd`[YXYWZ^eny¹ytqlf_[WTSYajr{volig_YUUXamuy~zqqvǼvj]TKB>ENWbnu}od\VQSPLMU[clu{zxxww}zsqqrqnmke_`bcelsvyzvojgdbffhntx~~}~~yuvxvy~{{}qd]VNB=9;@ITbknrtrlea]YTUYcp}~uof]VQOKD=8;@CFJNT[dinsvy|}sfdmz}rlkmmpt}iR<1)'-8=BLWeqyxsngejpx~~zuslgeefgghhjmty{{|xkYMJFJKOQVZ]bjoux|xstuvzyw{ynf^WSRMLMPQV]bcb^XQQSWcn{rnszyoaRGBCHNT^m{ynic__adgir}~qda__jz~xy{vg[PJHEHSaks|wqruzxv~mYMJGIIIIOUZbkoprtz~ý}{~pe\UOIHHKMS\gp|xl`UQMMMRVZ^hqzzvy}~~wtqojmookhfcdehkntz~|zyslgd^YVW[`fmrwy}~}|{vokkn{xkXF<51/.2HR^jy}|{{|{}~vqswog_[][\`kv}|tic^XXY[[`fr~tnnruz}~wi\QKIHIMS[agpx}~{utrttrd[RTQSSY]eoyzy}ºzuuz}~wkc]SKKOMMT_hs~{|zzz{tnge`[XULLQUUWdlprrtuy|~}}zsi_XYXXXbiu~{aNHGIOWbo{}zrh_XTU[dp}wne]Y[\^bnvutwupkeb^`hr~riaUSTSSVVWZ_bgfdfjheiou|}}~|{|yl`WUQV\][_is{}vv{zn^SLKFCCCDGKOU_isxvsrqrtwz|~{ridb_[X[aba_bhnuwz{}}tomokjkjgkqtsstuwxx||vuw~wl`[YVOG?FLQRZ`iu}|{wphcca_`cfgijifeeejljltxz}{{|~{z}|~}wqlhfa^^_^`ddefifefdfjmoqv~tbUNMPYepvyz}|ukaXUW_ix~~ric^ZXX[bjou|}ytpopszussqopnihjhgga`degnu{|zund_[UX_hmsy|~}}}zz|}||}{vrljgggiihkprpspmnv~}~{vqmhgfhklopswv{ypkhfbdgkloqpqrpljjgfgmu{tvtqrs{r]LGOX]guxpkgjjkq{~}ysswwqcXTU^l}~slgea\[]Z[_ccdbcdhid_]alsvif_ZYWSX^bdccbefkssx}~ywmaZZY\eov{zuqhc```__^YWY[\\]\\`dgkoqrw~ulc\VRSSTVY\\^beffjoqv}}tlfdabdgiou|~{wvx{{yvqmljimlqvw{}utu{wpmjigd_]\_`ejmovz{tkjkedeinruwz{}~}zqic`]\]`bceeccflptyzrle_\\ZX[aejpuvtsqqv{{wsqtv{}|zxxvtrty|~oe\[[_hhjlpplkkecddjr}zzy{}{ukfdegjnoonhikmoooomnmqssvvy{}~~|{~yrnnopuy~~~{|||}~}ujd`^babdfgfhlpnigffjps|}urvz~zy{znd[RJHDC?==GUbmuvxyz}{xukffecddaaadefinruz~wsrpppoponllhgieehkmorw{usmb^\ZY[[YXYZ[\^dinu|~}{}~{{xvrturrpnhaYQMMMPV^gnu{|z}}{|wrpoqqokhffecdhijklkkqtw}zsnga`_agkqw||zxsjb[WSSYbjs}}tjfc`^adfiknoplkifa_[WUXZ^ckmpsuuy~|}~{z{yuwxutoomllhdb^\XSNLKIGLMMNMOSZ_aaa^_`cfmu}|xxuqomkkjga[VQLGCBFOYaglnllnnqsrstuwy{y{}pbVNHFEC?@BDJQSSRQMNQU[bflnlimpsxwpligijmjf]ULF@>>CGJIKKMNRUXZZ^^_cfgjpu{xqmmorw||rke^YXYY]`bdhiighhhjjhiiklou{}wsw{~umfaZWUTSSTTWY[_bfimprtuwxz|~|yyxxuromhedda]\ZXVVXVTVUTYbhlsx~{zz|urppsstokhcbbbbdhnrz{zzxuuvxx{{yutsrtvwwrlf\UTU\dmw~{y{~xngc``emx}zwvssqrrt|zvrppsxzvuv{}}}xvpoprvxzxwz|zyy{xwxxz{yzzurokigfhotx~xwvxz}|~}zwuuxzyoggikqyxrpqswyy|wnihhlsy~}||{~|ywxx{zpiggjpxztpsx~yvsokge`_emt{}wqlkllnoosw{||zxuuw{~}}|yvssststz}~zvtsrsw{}{wtsrsvw|~|zyvvwz~~}}zvtux|~yuuuwz~~||~zvrswz~zvrmifhjmsvx{ypfcabfkrv||}}ytljknt{~xrmlmpqv{}{}}}~zyywwz~|yz{}||~}yy{|~~~~xtrqqrtxz{~~||{}~~}~~|}|{ytsomkknruw{|~{wvtvvwz|vtpkjiijmnonkgc`^^bkuzsmloy}tnjghjlnruz~~}zuoifbcglvzxwy{xuplihhfhjnpoppoqusruwvx}ytnifdbbejnpqrsrrponqx}{uqlhhilot{{xvvwz}|{}}xtppty~~ungccfmrx|tmeaacgoy~z}}utwuv~vj\SSY_cinprv}~|wssxzwoklu||zwpkn{{smhc`_^beffiosyzvtrqquxnfb_^`cgkooqsusnhbeiry|}|wj\TRRU[chkortuvrmgfegkr|ztlgca`bdb_ZWWX[\]__acksz~{qf_]`^]cefgihda]ZSQSW]epzxqllns{zslfbaflquvwwutvyyvqke]Z]`fnsuusqlhecaa^_bipx~yslgimu}womosw{~sha\[^aipxxpgb__bjtwoheb__dly|qh`\^elt|{upqu{vkbXSRU]hrz~~yrjb^^`emxxtssw}qjdchoxyne^\\`jr{}upooqtx{{wspmnqtw}|wsprsw{xyxwz}~}~|zwvtpnnmkjnqv|{wtqruzxpmns{tjc][\bjrx~}wqniggjmrw~{vusrtwy|~ytoihijpx|vrnmosy~~yrkgedhmswy||zxusqonnpqsvy~||~{wspnljjikllmnnptwz~{wrqssuvwvy{~~}~|yxyyz{{|}}{yxvuuwz}ztqoquy{vrpqv|~xspquwz~{uqpprv|~{xsnkhhiknrvyyxusrnopty~{wsqojggda``_`abcfgeehmpswz}wrnljjlkkklmmnnoooqrsuuxz}||}|{yutrpnnopqrqnieb_^_bfkpsvwvsronpsw|~|xtsuvwy{||zvsnjhfdfjloqsuwy{|}{xvuy~~}|{zwspnliggimqv|}{{}~~|}|xussrsv{~xsppsw|}}}xspponmnoooprsrppoppppv{{tkd`_adinpqmkjgc```bdfipy|xx{|zy{}xsnkklmorv{|yvuvy~|wqkgfginquy~~{z{}|{zxvspnlhc`^^`adfkotvuutsux{}}xvvvwy|~{vspnmllmnqtwwvurokkkkjjkmooooooonmnmmmnprsuvxxvtrpnmoquz~~}|xspnmmnoprtttttspnljhgffghhjlmopqrrsrpnoqsux{|}~|zwwvutsqoommllkjhecccdeeefgikklnorux{||zyvtuuy}|wtsrssstttvyyxwuroonllllnrvxxxwuuutrstvzzxwwyz}~}|{zzz{}|wtsttvyzzyyywusrqrttwy|~~~}|||{zyxyzxwwvtrrqonoqtx||zy{}~}}}}}zusrsx|{urtvy}}xvvvwz~}{{zyz{|{{ywututstvxz}~~~|{||||zyzzzzz{{|}}{z|{yz|~}zvuttuxz{{ywvtrqrrtuvwyzxxxxwxyz|}wqmkkmoqrw||vpljjmt{|zwussstvy|~~}}~|yvuuvwz~}|zwuvvwwwx{||{zvrpnmlmpsuvuttttuuuuvx{~|{}}|{|~}zvrnlllmqtvxyzzz|~zwvvwz~}{zzxwx{~}{{}}|}~}{zywxzzz{~~}~|ywuuuuvxz|}}|{ywuttuvy|~}|{{{z{||}~}{yxxz{|~}zxusppqruwy{{|{yxxxyz{|}~~~~~~~}|{|}}~~}~}}|{yxwvutuvwxz|~~~||{{}}{zxxxyyzz{ywutrommnoptwz}~~~~|{|}~|zyyz}~|xuronoqsvz}~}{ywwxy|~}zxxxwwxyz{||{yxwvvwxz}~|zywwwxy{|}}~~~}~~}||}~}||||}}||||||}~|{|}|{|}~~~}||}~~}|||{z{{{zzz{|}}~~~}}|}}}}|{zyyyyz|~~}}}}}}{z{zyxyzz{|}|{{zz{|}}~}|{{zxwvuttstuvwwwwxyzzz{}~~}|{zyxxwwwxyyyzyxwwwyz{|~~~~~~~}|{{{{{||||||||zyxxwwxyz|}~~~|{{zz{{|}~~~~}|||{zyyyyzzz{|}}}|{zzywwxz|~~}|{{|~~|{zzzyyyyyyyyyxxwwwwwyz{}~~~}}}~~~~~~~||||}}}~~~|{yxxxyzz{|}~~~~~~~~}~~}|||}|z{{{{{zyyz{|~~}}}|zzzyyyyyz|~}|{zz||||}}}}}}}}~~}}|||}~~}|zzyy{|}~~~}||||||}~~~~}}}}{{|||}~~~~~~~~~~~~~~~}}}}}}}}~~~}}}}}}~~}}}}~~~~~~}||||}~~}}~~}}|||||{||}}}}~~~}}|{{zzzzzyyyzzzzz{{|}~~}}|{{{||||}}||{{zzz{{}~~~~~~}}}|{||||{{{{{{{{{{{{{{{|}~~~}}|}}~~~~}|{{{z{{|}}~~~~~~~}}|||}}}}}}}}|{{{{{{|}~~~~~~~~~~~~~~}}}|||||}}}}~}}}}||}}~~~~}}}}}~~~}}}}}}}}}}}~~~~~~}}|}}}|}}}~~~~~~~~~~~~~~~~}}}}}}}}}}}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~}}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~xboard-4.9.1/sounds/ching.wav0000644000175000001440000001277112717001265013054 00000000000000RIFFWAVEfmt ++data~}y~zyvzzttpquwrjsuf|ileyj`SmoYZeyXbatPzaKLckMęHJk3kV=ʆ?XY9ė@Km@w§IH}?iZN8Zo>tƬSKIanOxT`]|ik}a~gfo]|g^]n{hnlqchixcoozqv||txv~qzq~jt~dzneoug{grxaicsrxqwyv~ty}u|{|{qv~{}y{{qe}esxVi]{TqdHicrZa^vReXKROc?rOM@[ML=`WMȐ9jf4xЙ;Py)n̦N=ۈ.fĻX(َ2K_yխC5o(qͶ?.ގ)8__F.IM+ܑ7TȿH:ƈ7bƦHFz.sӦFHn(xӲH&@m u<-vuL!xVQ$Ձ4JI4מ3B[+vط9Gq-jҢ)CvdB(/Sy@oZun>>~-ELcώ{қǏ@#a-XD(Fտ"k~ O;$",nAG{6)Y(zb،A'j<j֔]5^*l}Wm`m8=VYIQPk֯NAɗ$[Y7(mě7lRyƆD_o.xiTzE{oKs@WR$H`D[IҗYNL:|QQr_|d\Pxb4Q̐MD}1wȿq<9ErZX8ތH\HBs&aWK&N\&xکOZx-gTCĈFonkgm+z(E@յ/YȈ'=rJGÃVR83l°--bѱ"l;2d,&bMo=rTUvE*NWO_KQIA>LޑB2e5Oژ.g7؄kmE?tPDօG֟"c[=i}+tjg,]0αI*KܹV9*H:k;aƧC6LW}?/ufkư9st;gד5WÎnӠd@z}#d|tf(|*dn2yFcp2_JMSWz՜19y lѴ`4~ܠ8E¦9SƽpIlҹDOĕ0MbRiTy`zVkImLmJ/y3L_<ҳC:s;fƺOLGQdRyK_zkU|kI~N\{+dP4ܘ:\z)qХLDՁ;qc?ńNd]Cd|Xjd=mOQ˖4Ro:l˦FMƒ7_u= 1.2.0 pangocairo librsvg-2.0 >= 2.14.0 ]) AC_SUBST(CAIRO_CFLAGS) AC_SUBST(CAIRO_LIBS) dnl | check which front end to use dnl | first check for gtk dnl | then for Xaw3d dnl | and then for Xaw FRONTEND_CFLAGS="" FRONTEND_LIBS="" AC_ARG_WITH([gtk], [AS_HELP_STRING([--with-gtk],[use GTK front-end (default)])], [with_GTK=$withval], [with_GTK="yes"]) AC_ARG_WITH([Xaw3d], [AS_HELP_STRING([--with-Xaw3d],[use Xaw3d front-end (not fully supported anymore)])], [with_Xaw3d="$withval"], [with_Xaw3d="no"]) dnl | overwrite default gtk AS_IF([test "x$with_Xaw3d" = xyes], [with_GTK="no"]) AC_ARG_WITH([Xaw], [AS_HELP_STRING([--with-Xaw],[use Xaw front-end])], [with_Xaw="$withval"], [with_Xaw="no"]) dnl | overwrite default gtk AS_IF([test "x$with_Xaw" = xyes], [with_GTK="no"]) AC_ARG_WITH([iconsdir], [AS_HELP_STRING([--with-iconsdir=DIR], [path where icons get installed (default: $datadir/icons/hicolor/48x48/apps)])], [ICONSDIR="$withval"], [ICONSDIR='$(datadir)/icons/hicolor/48x48/apps']) AC_ARG_WITH([svgiconsdir], [AS_HELP_STRING([--with-svgiconsdir=DIR], [path where svg icons get installed (default: $datadir/icons/hicolor/scalable/apps)])], [SVGICONSDIR="$withval"], [SVGICONSDIR='$(datadir)/icons/hicolor/scalable/apps']) AC_ARG_WITH([desktopdir], [AS_HELP_STRING([--with-desktopdir=DIR], [path where desktop files get installed (default: $datadir/applications)])], [DESKTOPDIR="$withval"], [DESKTOPDIR='$(datadir)/applications']) AC_ARG_WITH([mimedir], [AS_HELP_STRING([--with-mimedir=DIR], [path where mime files get installed (default: $datadir/mime/packages)])], [MIMEDIR="$withval"], [MIMEDIR='$(datadir)/mime/packages']) AC_ARG_WITH([gamedatadir], [AS_HELP_STRING([--with-gamedatadir=DIR], [path where game data files get installed (default: $datadir/games/xboard)])], [GAMEDATADIR="$withval"], [GAMEDATADIR='$(datadir)/games/xboard']) AC_ARG_ENABLE([update-mimedb], [AS_HELP_STRING([--disable-update-mimedb],[disable the update-mime-database after install [default=no]])], [enable_mimedb="no"], [enable_mimedb="yes"]) AC_ARG_ENABLE([osxapp], [AS_HELP_STRING([--enable-osxapp],[build a OSX app [default=no]])], [enable_OSXAPP=$enableval], [enable_OSXAPP="no"]) AS_IF([test x"$enable_OSXAPP" = x"yes"], [ prefix=`pwd`/XBoard.app/Contents AC_DEFINE([OSXAPP], [1], [We are building an OSX APP, redefine some functions]) with_GTK="yes" enable_mimedb="no" datarootdir='$(prefix)/Resources' datadir='$(datarootdir)/share' sysconfdir='$(datarootdir)/etc' infodir='$(datadir)/info' mandir='$(datadir)/man' bindir='$(prefix)/MacOS' localedir='$(datadir)/locale' GAMEDATADIR='$(datadir)/xboard'],[]) AM_CONDITIONAL(OSX_APP, test x"$enable_OSXAPP" = x"yes") AM_CONDITIONAL(NLS_ENABLED, test x"$USE_NLS" = x"yes") AM_CONDITIONAL(ENABLE_UPDATE_MIMEDB, test x"$enable_mimedb" = x"yes") if test x"$enable_mimedb" = x"yes"; then AC_PATH_PROG([XDG_MIME],[xdg-mime]) AC_SUBST(XDG_MIME) AC_PATH_PROG([XDG_DESKTOP_MENU],[xdg-desktop-menu]) AC_SUBST(XDG_DESKTOP_MENU) AC_PATH_PROG([XDG_ICON_RESOURCE],[xdg-icon-resource]) AC_SUBST(XDG_ICON_RESOURCE) fi AC_SUBST(ICONSDIR) AC_SUBST(SVGICONSDIR) AC_SUBST(DESKTOPDIR) AC_SUBST(MIMEDIR) AC_SUBST(GAMEDATADIR) dnl | check for libraries if test x"$with_GTK" = x"yes" ; then PKG_CHECK_MODULES([GTK], [ gtk+-2.0 >= 2.16.0 gmodule-2.0 ]) FRONTEND_CFLAGS=$GTK_CFLAGS FRONTEND_LIBS=$GTK_LIBS with_Xaw="no" fi if test x"$with_GTK" = x"no" ; then dnl | general check for Xaw and Xaw3d AC_PATH_XTRA if test -n "$no_x" ; then AC_MSG_ERROR([ " $PACKAGE requires the X Window System header files and libraries! They were not found on your system. See FAQ topic C.2. configure failed"]) fi save_cflags="$CFLAGS" save_cppflags="$CPPFLAGS" CFLAGS="$CFLAGS $X_CFLAGS" CPPFLAGS="$CPPFLAGS $X_CFLAGS" AC_CHECK_HEADER([X11/Intrinsic.h],[xt="yes"],[xt="no"]) CFLAGS="$save_cflags" CPPFLAGS="$save_cppflags" if test "$xt" = "no" ; then AC_MSG_ERROR([Xt headers not found. Please install the X11 packages.]) fi dnl | check availability of Xaw3d FRONTEND_LIBS= AS_IF([test x"$with_Xaw3d" != x"no"], [AC_CHECK_LIB([Xaw3d], [XawTextReplace], [ FRONTEND_LIBS="-lXaw3d" AC_DEFINE([USE_XAW3D], [1], [Define if you want to use Xaw3d])], [AC_MSG_ERROR([--with-Xaw3d was given, but test for Xaw3d failed. Make sure that you have Xaw3d installed, else you might want to try the configure option --without-Xaw3d])], [-lXaw])]) dnl | no Xaw3d, check for Xaw; make it the default if test x"$with_Xaw3d" = x"no" ; then with_Xaw=yes save_cflags="$CFLAGS" save_cppflags="$CPPFLAGS" CFLAGS="$CFLAGS $X_CFLAGS" CPPFLAGS="$CPPFLAGS $X_CFLAGS" AC_CHECK_HEADER([X11/Xaw/Dialog.h],[xaw_headers="yes"], [xaw_headers="no"]) CFLAGS="$save_cflags" CPPFLAGS="$save_cppflags" if test x"$xaw_headers" = x"no" ; then AC_MSG_ERROR([Xaw headers not found. Please install the Xaw package and headers.]) fi FRONTEND_LIBS="-lXaw" fi fi dnl | make results available in Makefile.am AM_CONDITIONAL([withGTK], [test x"$with_GTK" = x"yes"]) AM_CONDITIONAL([withXaw], [test x"$with_Xaw3d" = x"yes" || test x"$with_Xaw" = x"yes"]) dnl | end Front-end check AC_CANONICAL_HOST dnl| The following info is mostly gathered from GNU Emacs 19.24. Basically, dnl| we are trying to find out whether this is a System-V derivative in dnl| which pipes don't work with select() and if so, whether there is anything dnl| strange about the way to open a pty. Some of the work was done above dnl| by looking for _getpty, grantpt, and getpseudotty. A few other strange dnl| properties of particular systems are also handled here. dnl| 4/6/97 I'm not sure there really are any systems where pipes dnl| don't work with select(), and ptys cause problems on many dnl| systems, so I'm changing the default to disable ptys in all dnl| cases. I will change it back if I get bug reports that are fixed dnl| by doing a "configure --enable-ptys" USE_PTYS=0 case "$host" in *-*-hpux* ) AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty/tty%c%x", c, i);]) AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptym/pty%c%x", c, i);]) dnl| USE_PTYS=1 if test "$GCC" = yes; then CONF_CFLAGS="-fwritable-strings" else dnl| Note: You might be able to build xboard even if your compiler does not dnl| support ANSI C (-Aa). xboard itself does not require ANSI C. I don't dnl| know whether the X header files on HP-UX require it. CONF_CFLAGS="-Aa -D_HPUX_SOURCE" fi dnl| HP doesn't supply a full set of X header files and libraries. People dnl| often have some things installed in one place and some in another. dnl| AC_PATH_XTRA will find only one place, so we try to add all the dnl| likely ones that might be missing here. It might be better to dnl| change AC_PATH_XTRA to try to extract this information from imake, dnl| since folks who install the missing bits often configure their dnl| imake to find them, but I don't want to delve into autoconf and dnl| hack on its internals. if test -d /opt/hppd/include/X11; then X_CFLAGS="$X_CFLAGS -I/opt/hppd/include" X_LIBS="$X_LIBS -L/opt/hppd/lib" elif test -d /usr/contrib/X11R5/include; then X_CFLAGS="$X_CFLAGS -I/usr/contrib/X11R5/include" X_LIBS="$X_LIBS -L/usr/contrib/X11R5/lib" elif test -d /usr/contrib/mitX11R5/include; then X_CFLAGS="$X_CFLAGS -I/usr/contrib/mitX11R5/include" X_LIBS="$X_LIBS -L/usr/contrib/mitX11R5/lib" elif test -d /MIT/X11R5/include; then X_CFLAGS="$X_CFLAGS -I/MIT/X11R5/include" X_LIBS="$X_LIBS -L/MIT/X11R5/lib" elif test -d /usr/local/include/X11R5; then X_CFLAGS="$X_CFLAGS -I/usr/local/include/X11R5" X_LIBS="$X_LIBS -L/usr/local/lib/X11R5" fi if test -d /usr/include/X11R5; then X_CFLAGS="$X_CFLAGS -I/usr/include/X11R5" X_LIBS="$X_LIBS -L/usr/lib/X11R5 -L/usr/lib/X11R4" elif test -d /usr/include/X11R4; then X_CFLAGS="$X_CFLAGS -I/usr/include/X11R4" X_LIBS="$X_LIBS -L/usr/lib/X11R4" fi ;; romp-ibm-aix* ) AC_DEFINE(IBMRTAIX, 1) dnl| USE_PTYS=1 ;; i386-ibm-aix ) dnl| USE_PTYS=1 if test "$GCC" = yes; then CONF_CFLAGS="-fwritable-strings" fi ;; *-*-aix3* | *-*-bosx* ) AC_DEFINE(PTY_ITERATION, [for (c = 0; !c; c++)]) AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");]) AC_DEFINE(PTY_TTY_NAME_SPRINTF, [strcpy (pty_name, ttyname (fd));]) dnl| USE_PTYS=1 ;; *-*-cxux* ) AC_DEFINE(FIRST_PTY_LETTER, 'A') AC_DEFINE(LAST_PTY_LETTER, 'P') dnl| USE_PTYS=1 ;; *-*-uniplus* ) AC_DEFINE(UNIPLUS, 1) dnl| USE_PTYS=1 ;; *-*-rtu* ) AC_DEFINE(FIRST_PTY_LETTER, 'z') AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ttyp%x", i);]) AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/pty%x", i);]) AC_DEFINE(RTU, 1) dnl| USE_PTYS=1 ;; *-*-iris* | *-*-irix3* ) AC_DEFINE(PTY_ITERATION, [for (c = 0; !c; c++)]) AC_DEFINE(PTY_NAME_SPRINTF, [strcpy (pty_name, "/dev/ptc");]) AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ttyq%d", minor(stb.st_rdev));]) dnl| USE_PTYS=1 ;; *-*-irix* ) dnl| USE_PTYS=1 ;; *-*-sunos4* | *-*-solaris1* ) dnl| Work around a bug in the SunOS 4.x linker. Not needed if you have patches dnl| 100512-02 and 100573-03 from Sun. The X FAQ says that the following is dnl| "overkill," but doesn't explain what should be done instead. if test "$GCC" = yes; then PRE_XMULIB="-static" POST_XMULIB="-dynamic" else PRE_XMULIB="-Bstatic" POST_XMULIB="-Bdynamic" fi ;; *-*-sunos5* | *-*-solaris2* ) dnl| USE_PTYS=1 dnl| I'm not sure -lelf is needed, but it was in the old Imakefile. dnl| The other libraries should all be found by Ac_PATH_XTRA or other dnl| code above. X_LIBS="$X_LIBS -lelf" ;; *-*-sco* ) AC_DEFINE(PTY_ITERATION, [for (i = 0; ; i++)]) AC_DEFINE(PTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ptyp%d", i);]) AC_DEFINE(PTY_TTY_NAME_SPRINTF, [sprintf (pty_name, "/dev/ttyp%d", i);]) dnl| USE_PTYS=1 ;; *-*-dynix* | *-*-ptx* ) dnl| USE_PTYS=1 ;; *-*-esix* ) dnl| USE_PTYS=1 ;; *-*-usg5-4* | *-*-sysvr4* ) dnl| USE_PTYS=1 ;; *-*-usg* | *-*-sysv* | *-*-aix* ) dnl| USE_PTYS=1 ;; vax-*-ultrix ) if test "$GCC" = yes; then CONF_CFLAGS="-fwritable-strings" fi ;; dnl| add some libs for OS X *-apple-* ) AC_MSG_WARN([Apple support is experimental, please report any problems to bug-xboard@gnu.org]) AC_MSG_WARN([use --enable-osxapp to enable the build target and automatically adjust target directories]) AC_MSG_WARN([Building an OSX app currently relies on some programs such as dylib that we don't test for]) AC_MSG_WARN([patches welcome ;)]) AC_PATH_PROG(SW_VERS, sw_vers) if test "x$SW_VERS" != "x"; then AC_MSG_CHECKING(Mac OS X version) MACOSX_VERSION=`$SW_VERS -productVersion` AC_MSG_RESULT([$MACOSX_VERSION]) fi FRONTEND_LIBS="$FRONTEND_LIBS -headerpad_max_install_names " if test x"$enable_OSXAPP" = x"yes" ; then FRONTEND_LIBS="$FRONTEND_LIBS -lgtkmacintegration-gtk2" fi FRONTEND_CFLAGS="$FRONTEND_CFLAGS -I/opt/local/include -L/opt/local/lib" ;; esac AC_SUBST(FRONTEND_CFLAGS) AC_SUBST(FRONTEND_LIBS) AC_SUBST(PRE_XMULIB) AC_SUBST(POST_XMULIB) AC_SUBST(CONF_CFLAGS) AC_SUBST(CONF_LDFLAGS) AC_MSG_CHECKING(whether ptys or pipes should be used) AC_ARG_ENABLE( [ptys], [AS_HELP_STRING([--enable-ptys],[force use of pseudo-ttys with child processes])], [if test "$enableval" = yes; then USE_PTYS=1 enable_ptys="ptys" AC_MSG_RESULT([ptys (user override)]) fi if test "$enableval" = no; then USE_PTYS=0 enable_ptys="pipes" AC_MSG_RESULT([pipes (user override)]) fi], [if test "$USE_PTYS" = 1; then AC_MSG_RESULT(ptys) enable_ptys="ptys" else AC_MSG_RESULT(pipes) enable_ptys="pipes" fi]) AC_DEFINE_UNQUOTED(USE_PTYS, $USE_PTYS) dnl | define not to build zippy as a default, so that autoheader is happy AC_ARG_ENABLE( [zippy], [AS_HELP_STRING([--enable-zippy],[support interfacing a chess program to ICS (default)])], [], [enable_zippy="no"]) if test x"$enable_zippy" != x"no"; then AC_DEFINE(ZIPPY, 1,[should zippy be enabled]) else AC_DEFINE(ZIPPY, 0,[should zippy be enabled]) fi AM_CONDITIONAL([ZIPPY], [test x$enable_zippy != xno]) AC_ARG_ENABLE(sigint, [AS_HELP_STRING([--enable-sigint],[sending SIGINT (^C) wakes up GNU Chess (default)])], [if test "$enableval" = yes; then AC_DEFINE(ATTENTION, 1) fi enable_sigint=$enableval ], [enable_sigint="yes" AC_DEFINE(ATTENTION, 1)]) if test x"$with_Xaw3d" = x"yes" -o x"$with_Xaw" = x"yes" ; then dnl | save all information for X in X_LIBS, also add the libraries themself dnl | since AC_PATH_XTRA only adds the paths X_LIBS="$X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS -lXmu -lX11 -lXt " AC_SUBST(X_CFLAGS) AC_SUBST(X_LIBS) fi dnl create a string with configure options that can be passed to the dnl program, good for bug reports and version printout, see output below CONFIGURE_OPTIONS="prefix=$prefix; datarootdir=$datarootdir; \ datadir=$datadir; gamedatadir=$GAMEDATADIR; desktopdir=$DESKTOPDIR; \ mimedir=$MIMEDIR; iconsdir=$ICONSDIR; svgiconsdir=$SVGICONSDIR; infodir=$infodir; \ sysconfigdir=$sysconfigdir; update_mimedb=$enable_mimedb; NLS=$USE_NLS; \ GTK=$with_GTK; Xaw3d=$with_Xaw3d; Xaw=$with_Xaw; \ ptys=$enable_ptys; zippy=$enable_zippy; sigint=$enable_sigint" AC_SUBST(CONFIGURE_OPTIONS) dnl | output Makefile AC_CONFIG_FILES([Makefile cmail po/Makefile.in osxapp/Info.plist]) AC_CONFIG_COMMANDS([test-stamp-h],[test -z "$CONFIG_HEADERS" || date > stamp-h]) AC_CONFIG_COMMANDS([chmod-cmail],[chmod 755 cmail]) AC_OUTPUT dnl dnl Output a summary dnl echo "" echo " Configurations summary:" echo "" echo " prefix: $prefix " echo " datarootdir: $datarootdir " echo " datadir: $datadir " echo " gamedatadir: $GAMEDATADIR " echo " desktopdir: $DESKTOPDIR " echo " mimedir: $MIMEDIR " echo " iconsdir: $ICONSDIR " echo " svgiconsdir: $SVGICONSDIR " echo " infodir: $infodir (info files will go here)" echo " sysconfdir: $sysconfdir (xboard.conf will go here)" echo "" echo " update mimedb: $enable_mimedb" echo "" echo " NLS support: $USE_NLS" echo "" echo " GTK: $with_GTK" echo " Xaw3d: $with_Xaw3d" echo " Xaw: $with_Xaw" echo "" echo " ptys: $enable_ptys" echo " zippy: $enable_zippy" echo " sigint: $enable_sigint" xboard-4.9.1/Makefile.in0000644000175000001440000023731612747544034012014 00000000000000# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2014 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = xboard$(EXEEXT) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(srcdir)/version.texi \ $(srcdir)/stamp-vti $(dist_icon_DATA) $(dist_pixmaps_DATA) \ $(dist_png_DATA) $(dist_shogi_DATA) $(dist_sounds_DATA) \ $(dist_svg_DATA) $(dist_svgicon_DATA) $(dist_themes_DATA) \ $(dist_xiangqi_DATA) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = cmail osxapp/Info.plist CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" \ "$(DESTDIR)$(man6dir)" "$(DESTDIR)$(Applicationsdir)" \ "$(DESTDIR)$(icondir)" "$(DESTDIR)$(pixmapsdir)" \ "$(DESTDIR)$(pngdir)" "$(DESTDIR)$(shogidir)" \ "$(DESTDIR)$(soundsdir)" "$(DESTDIR)$(svgdir)" \ "$(DESTDIR)$(svgicondir)" "$(DESTDIR)$(themesdir)" \ "$(DESTDIR)$(xiangqidir)" "$(DESTDIR)$(mimedir)" \ "$(DESTDIR)$(sysconfdir)" PROGRAMS = $(bin_PROGRAMS) am__xboard_SOURCES_DIST = backend.c backend.h backendz.h book.c \ childio.c childio.h common.h frontend.h gamelist.c ngamelist.c \ gettext.h lists.c lists.h moves.c moves.h parser.c parser.h \ pgntags.c uci.c args.h xboard2.h board.c board.h draw.c draw.h \ dialogs.c dialogs.h engineoutput.c nengineoutput.c \ engineoutput.h evalgraph.c nevalgraph.c evalgraph.h history.c \ nhistory.c menus.c menus.h usounds.c usystem.c usystem.h \ zippy.c zippy.h gtk/xboard.c gtk/xboard.h gtk/xoptions.c \ gtk/xtimer.c gtk/xengineoutput.c xaw/xboard.c xaw/xboard.h \ xaw/xengineoutput.c xaw/xgamelist.c xaw/xgamelist.h \ xaw/xhistory.c xaw/xhistory.h xaw/xoptions.c \ bitmaps/checkmark.bm bitmaps/icon_black.bm \ bitmaps/icon_white.bm @ZIPPY_TRUE@am__objects_1 = zippy.$(OBJEXT) am__dirstamp = $(am__leading_dot)dirstamp am__objects_2 = gtk/xboard.$(OBJEXT) gtk/xoptions.$(OBJEXT) \ gtk/xtimer.$(OBJEXT) gtk/xengineoutput.$(OBJEXT) am__objects_3 = xaw/xboard.$(OBJEXT) xaw/xengineoutput.$(OBJEXT) \ xaw/xgamelist.$(OBJEXT) xaw/xhistory.$(OBJEXT) \ xaw/xoptions.$(OBJEXT) @withGTK_FALSE@@withXaw_TRUE@am__objects_4 = $(am__objects_3) @withGTK_TRUE@am__objects_4 = $(am__objects_2) am_xboard_OBJECTS = backend.$(OBJEXT) book.$(OBJEXT) childio.$(OBJEXT) \ gamelist.$(OBJEXT) ngamelist.$(OBJEXT) lists.$(OBJEXT) \ moves.$(OBJEXT) parser.$(OBJEXT) pgntags.$(OBJEXT) \ uci.$(OBJEXT) board.$(OBJEXT) draw.$(OBJEXT) dialogs.$(OBJEXT) \ engineoutput.$(OBJEXT) nengineoutput.$(OBJEXT) \ evalgraph.$(OBJEXT) nevalgraph.$(OBJEXT) history.$(OBJEXT) \ nhistory.$(OBJEXT) menus.$(OBJEXT) usounds.$(OBJEXT) \ usystem.$(OBJEXT) $(am__objects_1) $(am__objects_4) xboard_OBJECTS = $(am_xboard_OBJECTS) xboard_DEPENDENCIES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(xboard_SOURCES) DIST_SOURCES = $(am__xboard_SOURCES_DIST) AM_V_DVIPS = $(am__v_DVIPS_@AM_V@) am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@) am__v_DVIPS_0 = @echo " DVIPS " $@; am__v_DVIPS_1 = AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@) am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@) am__v_MAKEINFO_0 = @echo " MAKEINFO" $@; am__v_MAKEINFO_1 = AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@) am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@) am__v_INFOHTML_0 = @echo " INFOHTML" $@; am__v_INFOHTML_1 = AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@) am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@) am__v_TEXI2DVI_0 = @echo " TEXI2DVI" $@; am__v_TEXI2DVI_1 = AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@) am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@) am__v_TEXI2PDF_0 = @echo " TEXI2PDF" $@; am__v_TEXI2PDF_1 = AM_V_texinfo = $(am__v_texinfo_@AM_V@) am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@) am__v_texinfo_0 = -q am__v_texinfo_1 = AM_V_texidevnull = $(am__v_texidevnull_@AM_V@) am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) am__v_texidevnull_0 = > /dev/null am__v_texidevnull_1 = INFO_DEPS = $(srcdir)/xboard.info am__TEXINFO_TEX_DIR = $(srcdir) DVIS = xboard.dvi PDFS = xboard.pdf PSS = xboard.ps HTMLS = xboard.html TEXINFOS = xboard.texi TEXI2DVI = texi2dvi TEXI2PDF = $(TEXI2DVI) --pdf --batch MAKEINFOHTML = $(MAKEINFO) --html AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) DVIPS = dvips RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man6dir = $(mandir)/man6 MANS = $(man6_MANS) DATA = $(Applications_DATA) $(dist_icon_DATA) $(dist_pixmaps_DATA) \ $(dist_png_DATA) $(dist_shogi_DATA) $(dist_sounds_DATA) \ $(dist_svg_DATA) $(dist_svgicon_DATA) $(dist_themes_DATA) \ $(dist_xiangqi_DATA) $(mime_DATA) $(sysconf_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ $(LISP)config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/cmail.in \ $(srcdir)/config.h.in $(top_srcdir)/osxapp/Info.plist.in \ $(xboard_TEXINFOS) ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL \ NEWS README TODO compile config.guess config.rpath config.sub \ depcomp install-sh mdate-sh missing mkinstalldirs texinfo.tex DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ AWKPATH = @AWKPATH@ CAIRO_CFLAGS = @CAIRO_CFLAGS@ CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@ CONF_CFLAGS = @CONF_CFLAGS@ CONF_LDFLAGS = @CONF_LDFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DESKTOPDIR = @DESKTOPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FRONTEND_CFLAGS = @FRONTEND_CFLAGS@ FRONTEND_LIBS = @FRONTEND_LIBS@ GAMEDATADIR = @GAMEDATADIR@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_LIBS = @GTK_LIBS@ ICONSDIR = @ICONSDIR@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ LDFLAGS = @LDFLAGS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MIMEDIR = @MIMEDIR@ MINFO = @MINFO@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ MSGMERGE = @MSGMERGE@ NROFF = @NROFF@ NROFFFLAGS = @NROFFFLAGS@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PERLPATH = @PERLPATH@ PKGCONFIG = @PKGCONFIG@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POST_XMULIB = @POST_XMULIB@ POSUB = @POSUB@ PRE_XMULIB = @PRE_XMULIB@ RSH = @RSH@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ SVGICONSDIR = @SVGICONSDIR@ SW_VERS = @SW_VERS@ USE_NLS = @USE_NLS@ VERSION = @VERSION@ XDG_DESKTOP_MENU = @XDG_DESKTOP_MENU@ XDG_ICON_RESOURCE = @XDG_ICON_RESOURCE@ XDG_MIME = @XDG_MIME@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMKMF = @XMKMF@ X_CFLAGS = @X_CFLAGS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @ZIPPY_FALSE@ZPY = ### if we are compiling with ZIPPY we need some extra source files @ZIPPY_TRUE@ZPY = zippy.c zippy.h ### define sources for the front-end and backend GTKsources = gtk/xboard.c gtk/xboard.h \ gtk/xoptions.c gtk/xtimer.c \ gtk/xengineoutput.c Xsources = xaw/xboard.c xaw/xboard.h \ xaw/xengineoutput.c \ xaw/xgamelist.c xaw/xgamelist.h \ xaw/xhistory.c xaw/xhistory.h \ xaw/xoptions.c \ bitmaps/checkmark.bm bitmaps/icon_black.bm bitmaps/icon_white.bm @withGTK_TRUE@FRONTENDsources = $(GTKsources) @withXaw_TRUE@FRONTENDsources = $(Xsources) @withGTK_TRUE@FRONTENDextras = $(Xsources) @withXaw_TRUE@FRONTENDextras = $(GTKsources) @withGTK_TRUE@headers = -I gtk @withXaw_TRUE@headers = -I xaw -DX11 xboard_SOURCES = backend.c backend.h backendz.h \ book.c \ childio.c childio.h \ common.h \ frontend.h \ gamelist.c ngamelist.c \ gettext.h \ lists.c lists.h \ moves.c moves.h \ parser.c parser.h \ pgntags.c \ uci.c \ args.h xboard2.h \ board.c board.h \ draw.c draw.h \ dialogs.c dialogs.h \ engineoutput.c nengineoutput.c engineoutput.h \ evalgraph.c nevalgraph.c evalgraph.h \ history.c nhistory.c \ menus.c menus.h \ usounds.c usystem.c usystem.h \ $(ZPY) $(FRONTENDsources) ### SUBDIRS = po xboard_LDADD = -ldl -lm @FRONTEND_LIBS@ @X_LIBS@ @LIBINTL@ @CAIRO_LIBS@ EXTRA_DIST = pixmaps themes png sounds winboard \ xboard.texi gpl.texinfo texi2man texinfo.tex xboard.man xboard.desktop xboard-config.desktop \ xboard-fen-viewer.desktop xboard-pgn-viewer.desktop xboard-tourney.desktop xboard.xml \ COPYRIGHT FAQ.html engine-intf.html ics-parsing.txt readme.htm zippy.README \ xboard.conf SHORTLOG DIFFSTAT history.c ABOUT-NLS $(FRONTENDextras) DISTCLEANFILES = stamp-h GITVERSION = $(shell sh -c 'git describe --dirty --always 2>/dev/null') AM_CPPFLAGS = -DINFODIR='"$(infodir)"' @X_CFLAGS@ @CAIRO_CFLAGS@ @FRONTEND_CFLAGS@ -DSYSCONFDIR='"$(sysconfdir)"' \ -DLOCALEDIR='"$(localedir)"' -DSVGDIR='"$(svgdir)"' -D__GIT_VERSION='"$(GITVERSION)"' \ -DCONFIGURE_OPTIONS='"@CONFIGURE_OPTIONS@"' -DDATADIR='"$(datadir)/games/xboard"' -DMANDIR='"$(mandir)"' $(headers) ACLOCAL_AMFLAGS = -I m4 info_TEXINFOS = xboard.texi xboard_TEXINFOS = copyright.texi man6_MANS = xboard.man ### config file sysconf_DATA = xboard.conf ### icon files icondir = @ICONSDIR@ dist_icon_DATA = xboard.png svgicondir = @SVGICONSDIR@ dist_svgicon_DATA = xboard.svg ### desktop files for KDE and gnome Applicationsdir = @DESKTOPDIR@ Applications_DATA = xboard.desktop xboard-fen-viewer.desktop xboard-pgn-viewer.desktop xboard-tourney.desktop xboard-config.desktop ### mime file mimedir = @MIMEDIR@ mime_DATA = xboard.xml gamedatadir = @GAMEDATADIR@ ### directory and files for svgs svgdir = $(gamedatadir)/themes/default dist_svg_DATA = svg/icon_white.svg svg/icon_black.svg \ svg/BlackAdvisor.svg svg/WhiteAdvisor.svg \ svg/BlackArchbishop.svg svg/WhiteArchbishop.svg \ svg/BlackBishop.svg svg/WhiteBishop.svg \ svg/BlackCanon.svg svg/WhiteCanon.svg \ svg/BlackChancellor.svg svg/WhiteChancellor.svg \ svg/BlackCobra.svg svg/WhiteCobra.svg \ svg/BlackCommoner.svg svg/WhiteCommoner.svg \ svg/BlackCrownedBishop.svg svg/WhiteCrownedBishop.svg \ svg/BlackCrownedRook.svg svg/WhiteCrownedRook.svg \ svg/BlackElephant.svg svg/WhiteElephant.svg \ svg/BlackGoldKnight.svg svg/WhiteGoldKnight.svg \ svg/BlackGoldLance.svg svg/WhiteGoldLance.svg \ svg/BlackGoldPawn.svg svg/WhiteGoldPawn.svg \ svg/BlackGoldSilver.svg svg/WhiteGoldSilver.svg \ svg/BlackGold.svg svg/WhiteGold.svg \ svg/BlackHawk.svg svg/WhiteHawk.svg \ svg/BlackKing.svg svg/WhiteKing.svg \ svg/BlackKnight.svg svg/WhiteKnight.svg \ svg/BlackLance.svg svg/WhiteLance.svg \ svg/BlackMarshall.svg svg/WhiteMarshall.svg \ svg/BlackNightrider.svg svg/WhiteNightrider.svg \ svg/BlackPawn.svg svg/WhitePawn.svg \ svg/BlackPrincess.svg svg/WhitePrincess.svg \ svg/BlackQueen.svg svg/WhiteQueen.svg \ svg/BlackRook.svg svg/WhiteRook.svg \ svg/BlackUnicorn.svg svg/WhiteUnicorn.svg \ svg/BlackSword.svg svg/WhiteSword.svg \ svg/BlackHSword.svg svg/WhiteHSword.svg \ svg/BlackLeopard.svg svg/WhiteLeopard.svg \ svg/BlackLion.svg svg/WhiteLion.svg \ svg/BlackPromoBishop.svg svg/WhitePromoBishop.svg \ svg/BlackPromoRook.svg svg/WhitePromoRook.svg \ svg/BlackPromoHorse.svg svg/WhitePromoHorse.svg \ svg/BlackPromoDragon.svg svg/WhitePromoDragon.svg \ svg/BlackPromoSword.svg svg/WhitePromoSword.svg \ svg/BlackPromoHSword.svg svg/WhitePromoHSword.svg \ svg/BlackHCrown.svg svg/WhiteHCrown.svg \ svg/BlackDolphin.svg svg/WhiteDolphin.svg \ svg/BlackClaw.svg svg/WhiteClaw.svg \ svg/BlackWolf.svg svg/WhiteWolf.svg \ svg/BlackCamel.svg svg/WhiteCamel.svg \ svg/BlackZebra.svg svg/WhiteZebra.svg \ svg/BlackGnu.svg svg/WhiteGnu.svg \ svg/BlackWizard.svg svg/WhiteWizard.svg \ svg/BlackViking.svg svg/WhiteViking.svg \ svg/BlackIron.svg svg/WhiteIron.svg \ svg/BlackCopper.svg svg/WhiteCopper.svg \ svg/BlackTower.svg svg/WhiteTower.svg \ svg/BlackDragon.svg svg/WhiteDragon.svg \ svg/BlackCub.svg svg/WhiteCub.svg \ svg/BlackButterfly.svg svg/WhiteButterfly.svg \ svg/BlackLeft.svg svg/WhiteLeft.svg \ svg/BlackRight.svg svg/WhiteRight.svg \ svg/BlackHat.svg svg/WhiteHat.svg \ svg/BlackRShield.svg svg/WhiteRShield.svg \ svg/BlackLShield.svg svg/WhiteLShield.svg \ svg/BlackAxe.svg svg/WhiteAxe.svg \ svg/BlackFlag.svg svg/WhiteFlag.svg \ svg/BlackDuck.svg svg/WhiteDuck.svg \ svg/BlackPegasus.svg svg/WhitePegasus.svg \ svg/eo_Analyzing.svg svg/eo_Black.svg \ svg/eo_Clear.svg svg/eo_Ponder.svg \ svg/eo_Thinking.svg svg/eo_Unknown.svg \ svg/eo_White.svg shogidir = $(gamedatadir)/themes/shogi dist_shogi_DATA = \ themes/shogi/WhiteGold.svg themes/shogi/WhiteCrownedBishop.svg\ themes/shogi/WhiteBishop.svg themes/shogi/WhiteKing.svg\ themes/shogi/WhiteKnight.svg themes/shogi/WhiteGoldKnight.svg\ themes/shogi/WhiteLance.svg themes/shogi/WhiteGoldLance.svg\ themes/shogi/WhitePawn.svg themes/shogi/WhiteGoldPawn.svg\ themes/shogi/WhiteRook.svg themes/shogi/WhiteCrownedRook.svg\ themes/shogi/WhiteAdvisor.svg themes/shogi/WhiteGoldSilver.svg\ themes/shogi/BlackGold.svg themes/shogi/BlackCrownedBishop.svg\ themes/shogi/BlackBishop.svg themes/shogi/BlackKing.svg\ themes/shogi/BlackKnight.svg themes/shogi/BlackGoldKnight.svg\ themes/shogi/BlackLance.svg themes/shogi/BlackGoldLance.svg\ themes/shogi/BlackPawn.svg themes/shogi/BlackGoldPawn.svg\ themes/shogi/BlackRook.svg themes/shogi/BlackCrownedRook.svg\ themes/shogi/BlackAdvisor.svg themes/shogi/BlackGoldSilver.svg xiangqidir = $(gamedatadir)/themes/xiangqi dist_xiangqi_DATA = themes/xiangqi/BlackAdvisor.svg themes/xiangqi/WhiteAdvisor.svg \ themes/xiangqi/BlackCanon.svg themes/xiangqi/WhiteCanon.svg \ themes/xiangqi/BlackElephant.svg themes/xiangqi/WhiteElephant.svg \ themes/xiangqi/BlackKnight.svg themes/xiangqi/WhiteKnight.svg \ themes/xiangqi/BlackGold.svg themes/xiangqi/WhiteGold.svg \ themes/xiangqi/BlackPawn.svg themes/xiangqi/WhitePawn.svg \ themes/xiangqi/BlackRook.svg themes/xiangqi/WhiteRook.svg ### directory and files for themes (and other) configuration files themesdir = $(datadir)/games/xboard/themes/conf dist_themes_DATA = conf/shogi conf/xq conf/ics conf/mini conf/mini.fen conf/sho conf/sho.fen ### directory and files for pixmaps pixmapsdir = $(gamedatadir)/pixmaps/textures dist_pixmaps_DATA = pixmaps/cross32.png pixmaps/cross48.png pixmaps/board32.png pixmaps/board48.png pixmaps/ini32.png pixmaps/ini48.png ### directory and files for pngs pngdir = $(gamedatadir)/themes/textures dist_png_DATA = png/hatch.png png/wood_d.png png/wood_l.png png/xqboard-9x10.png ### directory and files for sound files soundsdir = $(gamedatadir)/sounds dist_sounds_DATA = \ sounds/cymbal.wav sounds/pop2.wav sounds/slap.wav sounds/ding1.wav sounds/laser.wav \ sounds/woodthunk.wav sounds/gong.wav sounds/penalty.wav sounds/honkhonk.wav sounds/phone.wav sounds/roar.wav @OSX_APP_TRUE@macportsprefix = $(shell which port | sed s/[/]bin[/]port//) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .dvi .html .info .o .obj .pdf .ps .texi am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 cmail: $(top_builddir)/config.status $(srcdir)/cmail.in cd $(top_builddir) && $(SHELL) ./config.status $@ osxapp/Info.plist: $(top_builddir)/config.status $(top_srcdir)/osxapp/Info.plist.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) gtk/$(am__dirstamp): @$(MKDIR_P) gtk @: > gtk/$(am__dirstamp) gtk/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) gtk/$(DEPDIR) @: > gtk/$(DEPDIR)/$(am__dirstamp) gtk/xboard.$(OBJEXT): gtk/$(am__dirstamp) \ gtk/$(DEPDIR)/$(am__dirstamp) gtk/xoptions.$(OBJEXT): gtk/$(am__dirstamp) \ gtk/$(DEPDIR)/$(am__dirstamp) gtk/xtimer.$(OBJEXT): gtk/$(am__dirstamp) \ gtk/$(DEPDIR)/$(am__dirstamp) gtk/xengineoutput.$(OBJEXT): gtk/$(am__dirstamp) \ gtk/$(DEPDIR)/$(am__dirstamp) xaw/$(am__dirstamp): @$(MKDIR_P) xaw @: > xaw/$(am__dirstamp) xaw/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xaw/$(DEPDIR) @: > xaw/$(DEPDIR)/$(am__dirstamp) xaw/xboard.$(OBJEXT): xaw/$(am__dirstamp) \ xaw/$(DEPDIR)/$(am__dirstamp) xaw/xengineoutput.$(OBJEXT): xaw/$(am__dirstamp) \ xaw/$(DEPDIR)/$(am__dirstamp) xaw/xgamelist.$(OBJEXT): xaw/$(am__dirstamp) \ xaw/$(DEPDIR)/$(am__dirstamp) xaw/xhistory.$(OBJEXT): xaw/$(am__dirstamp) \ xaw/$(DEPDIR)/$(am__dirstamp) xaw/xoptions.$(OBJEXT): xaw/$(am__dirstamp) \ xaw/$(DEPDIR)/$(am__dirstamp) xboard$(EXEEXT): $(xboard_OBJECTS) $(xboard_DEPENDENCIES) $(EXTRA_xboard_DEPENDENCIES) @rm -f xboard$(EXEEXT) $(AM_V_CCLD)$(LINK) $(xboard_OBJECTS) $(xboard_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f gtk/*.$(OBJEXT) -rm -f xaw/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/backend.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/board.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/book.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/childio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dialogs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/draw.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/engineoutput.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evalgraph.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gamelist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/history.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lists.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/menus.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/moves.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nengineoutput.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nevalgraph.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ngamelist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nhistory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pgntags.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uci.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usounds.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/usystem.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zippy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gtk/$(DEPDIR)/xboard.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gtk/$(DEPDIR)/xengineoutput.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gtk/$(DEPDIR)/xoptions.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@gtk/$(DEPDIR)/xtimer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xaw/$(DEPDIR)/xboard.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xaw/$(DEPDIR)/xengineoutput.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xaw/$(DEPDIR)/xgamelist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xaw/$(DEPDIR)/xhistory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xaw/$(DEPDIR)/xoptions.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .texi.info: $(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \ am__cwd=`pwd` && $(am__cd) $(srcdir) && \ rm -rf $$backupdir && mkdir $$backupdir && \ if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ done; \ else :; fi && \ cd "$$am__cwd"; \ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $@ $<; \ then \ rc=0; \ $(am__cd) $(srcdir); \ else \ rc=$$?; \ $(am__cd) $(srcdir) && \ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ fi; \ rm -rf $$backupdir; exit $$rc .texi.dvi: $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \ $< .texi.pdf: $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \ $< .texi.html: $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp) $(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ -o $(@:.html=.htp) $<; \ then \ rm -rf $@ && mv $(@:.html=.htp) $@; \ else \ rm -rf $(@:.html=.htp); exit 1; \ fi $(srcdir)/xboard.info: xboard.texi $(srcdir)/version.texi $(xboard_TEXINFOS) xboard.dvi: xboard.texi $(srcdir)/version.texi $(xboard_TEXINFOS) xboard.pdf: xboard.texi $(srcdir)/version.texi $(xboard_TEXINFOS) xboard.html: xboard.texi $(srcdir)/version.texi $(xboard_TEXINFOS) $(srcdir)/version.texi: $(srcdir)/stamp-vti $(srcdir)/stamp-vti: xboard.texi $(top_srcdir)/configure @(dir=.; test -f ./xboard.texi || dir=$(srcdir); \ set `$(SHELL) $(srcdir)/mdate-sh $$dir/xboard.texi`; \ echo "@set UPDATED $$1 $$2 $$3"; \ echo "@set UPDATED-MONTH $$2 $$3"; \ echo "@set EDITION $(VERSION)"; \ echo "@set VERSION $(VERSION)") > vti.tmp$$$$ && \ (cmp -s vti.tmp$$$$ $(srcdir)/version.texi \ || (echo "Updating $(srcdir)/version.texi" && \ cp vti.tmp$$$$ $(srcdir)/version.texi.tmp$$$$ && \ mv $(srcdir)/version.texi.tmp$$$$ $(srcdir)/version.texi)) && \ rm -f vti.tmp$$$$ $(srcdir)/version.texi.$$$$ @cp $(srcdir)/version.texi $@ mostlyclean-vti: -rm -f vti.tmp* $(srcdir)/version.texi.tmp* maintainer-clean-vti: -rm -f $(srcdir)/stamp-vti $(srcdir)/version.texi .dvi.ps: $(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ $(DVIPS) $(AM_V_texinfo) -o $@ $< uninstall-dvi-am: @$(NORMAL_UNINSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ rm -f "$(DESTDIR)$(dvidir)/$$f"; \ done uninstall-html-am: @$(NORMAL_UNINSTALL) @list='$(HTMLS)'; test -n "$(htmldir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ done uninstall-info-am: @$(PRE_UNINSTALL) @if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \ done; \ else :; fi @$(NORMAL_UNINSTALL) @list='$(INFO_DEPS)'; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ else :; fi); \ done uninstall-pdf-am: @$(NORMAL_UNINSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ done uninstall-ps-am: @$(NORMAL_UNINSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ rm -f "$(DESTDIR)$(psdir)/$$f"; \ done dist-info: $(INFO_DEPS) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; \ for base in $$list; do \ case $$base in \ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$base; then d=.; else d=$(srcdir); fi; \ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ if test -f $$file; then \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \ test -f "$(distdir)/$$relfile" || \ cp -p $$file "$(distdir)/$$relfile"; \ else :; fi; \ done; \ done mostlyclean-aminfo: -rm -rf xboard.t2d xboard.t2p clean-aminfo: -test -z "xboard.dvi xboard.pdf xboard.ps xboard.html" \ || rm -rf xboard.dvi xboard.pdf xboard.ps xboard.html maintainer-clean-aminfo: @list='$(INFO_DEPS)'; for i in $$list; do \ i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done install-man6: $(man6_MANS) @$(NORMAL_INSTALL) @list1='$(man6_MANS)'; \ list2=''; \ test -n "$(man6dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man6dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man6dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.6[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^6][0-9a-z]*$$,6,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man6dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man6dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man6dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man6dir)" || exit $$?; }; \ done; } uninstall-man6: @$(NORMAL_UNINSTALL) @list='$(man6_MANS)'; test -n "$(man6dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^6][0-9a-z]*$$,6,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man6dir)'; $(am__uninstall_files_from_dir) install-ApplicationsDATA: $(Applications_DATA) @$(NORMAL_INSTALL) @list='$(Applications_DATA)'; test -n "$(Applicationsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(Applicationsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(Applicationsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(Applicationsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(Applicationsdir)" || exit $$?; \ done uninstall-ApplicationsDATA: @$(NORMAL_UNINSTALL) @list='$(Applications_DATA)'; test -n "$(Applicationsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(Applicationsdir)'; $(am__uninstall_files_from_dir) install-dist_iconDATA: $(dist_icon_DATA) @$(NORMAL_INSTALL) @list='$(dist_icon_DATA)'; test -n "$(icondir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(icondir)'"; \ $(MKDIR_P) "$(DESTDIR)$(icondir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(icondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \ done uninstall-dist_iconDATA: @$(NORMAL_UNINSTALL) @list='$(dist_icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(icondir)'; $(am__uninstall_files_from_dir) install-dist_pixmapsDATA: $(dist_pixmaps_DATA) @$(NORMAL_INSTALL) @list='$(dist_pixmaps_DATA)'; test -n "$(pixmapsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pixmapsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pixmapsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pixmapsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pixmapsdir)" || exit $$?; \ done uninstall-dist_pixmapsDATA: @$(NORMAL_UNINSTALL) @list='$(dist_pixmaps_DATA)'; test -n "$(pixmapsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pixmapsdir)'; $(am__uninstall_files_from_dir) install-dist_pngDATA: $(dist_png_DATA) @$(NORMAL_INSTALL) @list='$(dist_png_DATA)'; test -n "$(pngdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pngdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pngdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pngdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pngdir)" || exit $$?; \ done uninstall-dist_pngDATA: @$(NORMAL_UNINSTALL) @list='$(dist_png_DATA)'; test -n "$(pngdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pngdir)'; $(am__uninstall_files_from_dir) install-dist_shogiDATA: $(dist_shogi_DATA) @$(NORMAL_INSTALL) @list='$(dist_shogi_DATA)'; test -n "$(shogidir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(shogidir)'"; \ $(MKDIR_P) "$(DESTDIR)$(shogidir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(shogidir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(shogidir)" || exit $$?; \ done uninstall-dist_shogiDATA: @$(NORMAL_UNINSTALL) @list='$(dist_shogi_DATA)'; test -n "$(shogidir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(shogidir)'; $(am__uninstall_files_from_dir) install-dist_soundsDATA: $(dist_sounds_DATA) @$(NORMAL_INSTALL) @list='$(dist_sounds_DATA)'; test -n "$(soundsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(soundsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(soundsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(soundsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(soundsdir)" || exit $$?; \ done uninstall-dist_soundsDATA: @$(NORMAL_UNINSTALL) @list='$(dist_sounds_DATA)'; test -n "$(soundsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(soundsdir)'; $(am__uninstall_files_from_dir) install-dist_svgDATA: $(dist_svg_DATA) @$(NORMAL_INSTALL) @list='$(dist_svg_DATA)'; test -n "$(svgdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(svgdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(svgdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(svgdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(svgdir)" || exit $$?; \ done uninstall-dist_svgDATA: @$(NORMAL_UNINSTALL) @list='$(dist_svg_DATA)'; test -n "$(svgdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(svgdir)'; $(am__uninstall_files_from_dir) install-dist_svgiconDATA: $(dist_svgicon_DATA) @$(NORMAL_INSTALL) @list='$(dist_svgicon_DATA)'; test -n "$(svgicondir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(svgicondir)'"; \ $(MKDIR_P) "$(DESTDIR)$(svgicondir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(svgicondir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(svgicondir)" || exit $$?; \ done uninstall-dist_svgiconDATA: @$(NORMAL_UNINSTALL) @list='$(dist_svgicon_DATA)'; test -n "$(svgicondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(svgicondir)'; $(am__uninstall_files_from_dir) install-dist_themesDATA: $(dist_themes_DATA) @$(NORMAL_INSTALL) @list='$(dist_themes_DATA)'; test -n "$(themesdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(themesdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(themesdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(themesdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(themesdir)" || exit $$?; \ done uninstall-dist_themesDATA: @$(NORMAL_UNINSTALL) @list='$(dist_themes_DATA)'; test -n "$(themesdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(themesdir)'; $(am__uninstall_files_from_dir) install-dist_xiangqiDATA: $(dist_xiangqi_DATA) @$(NORMAL_INSTALL) @list='$(dist_xiangqi_DATA)'; test -n "$(xiangqidir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(xiangqidir)'"; \ $(MKDIR_P) "$(DESTDIR)$(xiangqidir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(xiangqidir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(xiangqidir)" || exit $$?; \ done uninstall-dist_xiangqiDATA: @$(NORMAL_UNINSTALL) @list='$(dist_xiangqi_DATA)'; test -n "$(xiangqidir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(xiangqidir)'; $(am__uninstall_files_from_dir) install-mimeDATA: $(mime_DATA) @$(NORMAL_INSTALL) @list='$(mime_DATA)'; test -n "$(mimedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(mimedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(mimedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mimedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(mimedir)" || exit $$?; \ done uninstall-mimeDATA: @$(NORMAL_UNINSTALL) @list='$(mime_DATA)'; test -n "$(mimedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(mimedir)'; $(am__uninstall_files_from_dir) install-sysconfDATA: $(sysconf_DATA) @$(NORMAL_INSTALL) @list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(sysconfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(sysconfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysconfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \ done uninstall-sysconfDATA: @$(NORMAL_UNINSTALL) @list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(sysconfdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-info -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(INFO_DEPS) $(PROGRAMS) $(MANS) $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(man6dir)" "$(DESTDIR)$(Applicationsdir)" "$(DESTDIR)$(icondir)" "$(DESTDIR)$(pixmapsdir)" "$(DESTDIR)$(pngdir)" "$(DESTDIR)$(shogidir)" "$(DESTDIR)$(soundsdir)" "$(DESTDIR)$(svgdir)" "$(DESTDIR)$(svgicondir)" "$(DESTDIR)$(themesdir)" "$(DESTDIR)$(xiangqidir)" "$(DESTDIR)$(mimedir)" "$(DESTDIR)$(sysconfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f gtk/$(DEPDIR)/$(am__dirstamp) -rm -f gtk/$(am__dirstamp) -rm -f xaw/$(DEPDIR)/$(am__dirstamp) -rm -f xaw/$(am__dirstamp) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-aminfo clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf ./$(DEPDIR) gtk/$(DEPDIR) xaw/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: $(DVIS) html: html-recursive html-am: $(HTMLS) info: info-recursive info-am: $(INFO_DEPS) install-data-am: install-ApplicationsDATA install-dist_iconDATA \ install-dist_pixmapsDATA install-dist_pngDATA \ install-dist_shogiDATA install-dist_soundsDATA \ install-dist_svgDATA install-dist_svgiconDATA \ install-dist_themesDATA install-dist_xiangqiDATA \ install-info-am install-man install-mimeDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook install-dvi: install-dvi-recursive install-dvi-am: $(DVIS) @$(NORMAL_INSTALL) @list='$(DVIS)'; test -n "$(dvidir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \ done install-exec-am: install-binPROGRAMS install-sysconfDATA install-html: install-html-recursive install-html-am: $(HTMLS) @$(NORMAL_INSTALL) @list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ $(am__strip_dir) \ d2=$$d$$p; \ if test -d "$$d2"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \ $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \ else \ list2="$$list2 $$d2"; \ fi; \ done; \ test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \ done; } install-info: install-info-recursive install-info-am: $(INFO_DEPS) @$(NORMAL_INSTALL) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \ $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \ fi; \ for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ esac; \ if test -f $$file; then d=.; else d=$(srcdir); fi; \ file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ if test -f $$ifile; then \ echo "$$ifile"; \ else : ; fi; \ done; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done @$(POST_INSTALL) @if $(am__can_run_installinfo); then \ list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \ for file in $$list; do \ relfile=`echo "$$file" | sed 's|^.*/||'`; \ echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ done; \ else : ; fi install-man: install-man6 install-pdf: install-pdf-recursive install-pdf-am: $(PDFS) @$(NORMAL_INSTALL) @list='$(PDFS)'; test -n "$(pdfdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done install-ps: install-ps-recursive install-ps-am: $(PSS) @$(NORMAL_INSTALL) @list='$(PSS)'; test -n "$(psdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -rf ./$(DEPDIR) gtk/$(DEPDIR) xaw/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-vti mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \ mostlyclean-generic mostlyclean-vti pdf: pdf-recursive pdf-am: $(PDFS) ps: ps-recursive ps-am: $(PSS) uninstall-am: uninstall-ApplicationsDATA uninstall-binPROGRAMS \ uninstall-dist_iconDATA uninstall-dist_pixmapsDATA \ uninstall-dist_pngDATA uninstall-dist_shogiDATA \ uninstall-dist_soundsDATA uninstall-dist_svgDATA \ uninstall-dist_svgiconDATA uninstall-dist_themesDATA \ uninstall-dist_xiangqiDATA uninstall-dvi-am uninstall-html-am \ uninstall-info-am uninstall-man uninstall-mimeDATA \ uninstall-pdf-am uninstall-ps-am uninstall-sysconfDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook uninstall-man: uninstall-man6 .MAKE: $(am__recursive_targets) all install-am install-data-am \ install-strip uninstall-am .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-aminfo \ clean-binPROGRAMS clean-cscope clean-generic cscope \ cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-info dist-lzip dist-shar dist-tarZ dist-xz \ dist-zip distcheck distclean distclean-compile \ distclean-generic distclean-hdr distclean-tags distcleancheck \ distdir distuninstallcheck dvi dvi-am html html-am info \ info-am install install-ApplicationsDATA install-am \ install-binPROGRAMS install-data install-data-am \ install-data-hook install-dist_iconDATA \ install-dist_pixmapsDATA install-dist_pngDATA \ install-dist_shogiDATA install-dist_soundsDATA \ install-dist_svgDATA install-dist_svgiconDATA \ install-dist_themesDATA install-dist_xiangqiDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man6 install-mimeDATA install-pdf install-pdf-am \ install-ps install-ps-am install-strip install-sysconfDATA \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-aminfo \ maintainer-clean-generic maintainer-clean-vti mostlyclean \ mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \ mostlyclean-vti pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-ApplicationsDATA uninstall-am uninstall-binPROGRAMS \ uninstall-dist_iconDATA uninstall-dist_pixmapsDATA \ uninstall-dist_pngDATA uninstall-dist_shogiDATA \ uninstall-dist_soundsDATA uninstall-dist_svgDATA \ uninstall-dist_svgiconDATA uninstall-dist_themesDATA \ uninstall-dist_xiangqiDATA uninstall-dvi-am uninstall-hook \ uninstall-html-am uninstall-info-am uninstall-man \ uninstall-man6 uninstall-mimeDATA uninstall-pdf-am \ uninstall-ps-am uninstall-sysconfDATA .PRECIOUS: Makefile ### the man page depends on several files, so we add a special rule xboard.man: xboard.texi copyright.texi gpl.texinfo version.texi $(srcdir)/texi2man $(srcdir)/xboard.texi > xboard.man || (rm -f xboard.man ; false) ### install mime-type files and corresponding icons and menu entries if enabled during configure install-data-hook: install-mime-database uninstall-hook: uninstall-mime-database install-mime-database: @ENABLE_UPDATE_MIMEDB_TRUE@ -if test -z "$(DESTDIR)" -a -n "$(XDG_MIME)" -a -n "$(XDG_DESKTOP_MENU)" -a -n "$(XDG_ICON_RESOURCE)" ; then \ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_MIME) install --mode system --novendor xboard.xml ;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_DESKTOP_MENU) install --mode system --novendor xboard-pgn-viewer.desktop;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_DESKTOP_MENU) install --mode system --novendor xboard-fen-viewer.desktop;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_DESKTOP_MENU) install --mode system --novendor xboard-tourney.desktop;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_DESKTOP_MENU) install --mode system --novendor xboard-config.desktop;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/board32.png application-x-chess-pgn;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/cross32.png application-x-xboard-trn;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) install --context mimetypes --size 32 pixmaps/ini32.png application-x-xboard-opt;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/board48.png application-x-chess-pgn;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/cross48.png application-x-xboard-trn;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) install --context mimetypes --size 48 pixmaps/ini48.png application-x-xboard-opt;\ @ENABLE_UPDATE_MIMEDB_TRUE@ fi uninstall-mime-database: @ENABLE_UPDATE_MIMEDB_TRUE@ -if test -z "$(DESTDIR)" -a -n "$(XDG_MIME)" -a -n "$(XDG_DESKTOP_MENU)" -a -n "$(XDG_ICON_RESOURCE)" ; then \ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_MIME) uninstall --mode system --novendor xboard.xml;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-pgn-viewer.desktop;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-fen-viewer.desktop;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-tourney.desktop;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_DESKTOP_MENU) uninstall --mode system --novendor xboard-config.desktop;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 board32.png application-x-chess-pgn;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 cross32.png application-x-xboard-trn;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 32 ini32.png application-x-xboard-opt;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 board48.png application-x-chess-pgn;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 cross48.png application-x-xboard-trn;\ @ENABLE_UPDATE_MIMEDB_TRUE@ $(XDG_ICON_RESOURCE) uninstall --context mimetypes --size 48 ini48.png application-x-xboard-opt;\ @ENABLE_UPDATE_MIMEDB_TRUE@ fi @OSX_APP_TRUE@osxapp: all-recursive install install-recursive @OSX_APP_TRUE@ $(MKDIR_P) $(datarootdir)/bin @OSX_APP_TRUE@ $(MKDIR_P) $(datarootdir)/lib @OSX_APP_TRUE@ $(MKDIR_P) $(sysconfdir)/gtk-2.0 @OSX_APP_TRUE@ $(MKDIR_P) $(datadir)/themes @OSX_APP_TRUE@ $(MKDIR_P) $(datadir)/gtk-engines @OSX_APP_TRUE@ $(MKDIR_P) $(gamedatadir)/themes @OSX_APP_TRUE@ $(INSTALL) ./osxapp/Info.plist $(prefix) @OSX_APP_TRUE@ $(INSTALL) ./osxapp/PkgInfo $(prefix) @OSX_APP_TRUE@ $(INSTALL) ./osxapp/XBoard.gtklauncher $(bindir)/XBoard @OSX_APP_TRUE@ $(INSTALL) ./xboard $(bindir)/xboard-bin @OSX_APP_TRUE@ cp -R ./osxapp/icons/. $(datarootdir) @OSX_APP_TRUE@ sed -e 's?-soundProgram "aplay -q"?-soundProgram "afplay"?'\ @OSX_APP_TRUE@ -e 's?-firstChessProgram fairymax?-firstChessProgram "./fairymax"?'\ @OSX_APP_TRUE@ -e 's?-firstChessProgramNames {fairymax?-firstChessProgramNames {"fairymax" -fcp "./fairymax" -fd "~~/../../bin/fairymax"?'\ @OSX_APP_TRUE@ -e 's?"Fruit 2.1" -fcp fruit -fUCI?"fruit" -fcp "./fruit" -fd "~~/../../bin/fruit" -fUCI?'\ @OSX_APP_TRUE@ -e '/"Crafty" -fcp crafty/d'\ @OSX_APP_TRUE@ -e '/"GNU Chess" -fcp gnuchess/d'\ @OSX_APP_TRUE@ -e 's?"icc" -icshost chessclub.com -icshelper timestamp?"icc" -icshost 207.99.83.228 -icshelper timestamp?'\ @OSX_APP_TRUE@ -e 's?"kc" -icshost alanimus.com -icshelper timeseal?"vics" -icshost winboard.nl -icshelper timeseal?'\ @OSX_APP_TRUE@ -e '/; Save user settings./d'\ @OSX_APP_TRUE@ -e '/; Must be last in file to make user options prevail over system-wide settings!/d'\ @OSX_APP_TRUE@ -e '/-saveSettingsOnExit true/d'\ @OSX_APP_TRUE@ -e '/-saveSettingsFile "~\/.xboardrc"/d'\ @OSX_APP_TRUE@ -e '/-settingsFile "~\/.xboardrc"/d'<./xboard.conf >$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '; OSX' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo ';'>>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-clockFont "Sans Bold 26" '>>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-pieceImageDirectory "~~/themes/default"' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-autoLogo true' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-logoDir "~~/logos"' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-logoSize 100' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-openCommand "open"' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-firstDirectory "~~/../../bin/fairymax"' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-secondDirectory "~~/../../bin/fairymax"' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-secondChessProgram "./fairymax"' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-uxiAdapter "uci2wb -%variant %fcp %fd"' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo ';' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '; Save user settings.' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '; Must be last in file to make user options prevail over system-wide settings!' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo ';' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-saveSettingsOnExit true' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-saveSettingsFile "~/Library/Preferences/XBoard.conf"' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ echo '-settingsFile "~/Library/Preferences/XBoard.conf"' >>$(sysconfdir)/xboard.conf @OSX_APP_TRUE@ sed 's?$(macportsprefix)/lib?/tmp/skl/XBoard.app/Contents/Resources/lib?' <$(macportsprefix)/etc/gtk-2.0/gdk-pixbuf.loaders >$(sysconfdir)/gtk-2.0/gdk-pixbuf.loaders @OSX_APP_TRUE@ sed -e 's?$(macportsprefix)/lib?/tmp/skl/XBoard.app/Contents/Resources/lib?' -e 's?$(macportsprefix)/share/locale?/tmp/skl/XBoard.app/Contents/Resources/share/locale?' <$(macportsprefix)/etc/gtk-2.0/gtk.immodules >$(sysconfdir)/gtk-2.0/gtk.immodules @OSX_APP_TRUE@ $(INSTALL) ./osxapp/launcher_rc $(datarootdir)/ @OSX_APP_TRUE@ $(INSTALL) $(macportsprefix)/etc/gtk-2.0/im-multipress.conf $(sysconfdir)/gtk-2.0 @OSX_APP_TRUE@ $(INSTALL) ./osxapp/gtkrc $(sysconfdir)/gtk-2.0/gtkrc @OSX_APP_TRUE@ cp -R $(macportsprefix)/lib/gtk-2.0 $(datarootdir)/lib @OSX_APP_TRUE@ cp -R $(macportsprefix)/lib/gdk-pixbuf-2.0 $(datarootdir)/lib @OSX_APP_TRUE@ cp -R $(macportsprefix)/share/themes/Mac $(datadir)/themes @OSX_APP_TRUE@ cp -R ./osxapp/gtk2-themes/Mac/gtk-2.0 $(datadir)/themes/Mac @OSX_APP_TRUE@ cp -R ./osxapp/themes/default/. $(gamedatadir)/themes/default @OSX_APP_TRUE@ cp $(macportsprefix)/share/gtk-engines/murrine.xml $(datadir)/gtk-engines/murrine.xml @OSX_APP_TRUE@ $(INSTALL) ./png/marble_d.png $(gamedatadir)/themes/textures @OSX_APP_TRUE@ $(INSTALL) ./png/marble_l.png $(gamedatadir)/themes/textures @OSX_APP_TRUE@ $(INSTALL) ./png/xqwood-9x10.png $(gamedatadir)/themes/textures @OSX_APP_TRUE@ cp -R ./osxapp/logos $(gamedatadir)/ @NLS_ENABLED_TRUE@@OSX_APP_TRUE@ cp -R $(macportsprefix)/share/strings/. $(datarootdir)/ @NLS_ENABLED_TRUE@@OSX_APP_TRUE@ for i in po/*gmo; do lang=`basename $$i .gmo`; $(INSTALL) $(macportsprefix)/share/locale/$$lang/LC_MESSAGES/gtk20.mo $(localedir)/$$lang/LC_MESSAGES/; done @OSX_APP_TRUE@ dylibbundler -of -b -x $(bindir)/xboard-bin -d $(datarootdir)/lib -p @executable_path/../Resources/lib @OSX_APP_TRUE@ dylibbundler -of -b -x $(datarootdir)/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-png.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib @OSX_APP_TRUE@ dylibbundler -of -b -x $(datarootdir)/lib/gtk-2.0/2.10.0/immodules/im-quartz.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib @OSX_APP_TRUE@ dylibbundler -of -b -x $(datarootdir)/lib/gtk-2.0/2.10.0/engines/libpixmap.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib @OSX_APP_TRUE@ dylibbundler -of -b -x $(datarootdir)/lib/gtk-2.0/2.10.0/engines/libmurrine.so -d $(datarootdir)/lib -p @executable_path/../Resources/lib @OSX_APP_TRUE@ find ./XBoard.app -name '*.a' -print0 | xargs -0 rm @OSX_APP_TRUE@ rm -r $(datarootdir)/lib/gtk-2.0/include @OSX_APP_TRUE@ rm -r $(datarootdir)/share/applications @OSX_APP_TRUE@ rm $(datarootdir)/share/info/dir @OSX_APP_TRUE@ rm -r $(datarootdir)/share/icons @OSX_APP_TRUE@ rm -r $(datarootdir)/share/mime @OSX_APP_TRUE@ mv $(datarootdir)/share/games/xboard/themes/conf $(datarootdir)/share/xboard/conf @OSX_APP_TRUE@ rm -r $(datarootdir)/share/xboard/pixmaps @OSX_APP_TRUE@ rm -r $(datarootdir)/share/games # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: xboard-4.9.1/winboard/0000755000175000001440000000000012747543737011631 500000000000000xboard-4.9.1/winboard/winboard.dsw0000644000175000001440000000103512717001265014052 00000000000000Microsoft Developer Studio Workspace File, Format Version 6.00 # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! ############################################################################### Project: "winboard"=".\winboard.dsp" - Package Owner=<4> Package=<5> {{{ }}} Package=<4> {{{ }}} ############################################################################### Global: Package=<5> {{{ }}} Package=<3> {{{ }}} ############################################################################### xboard-4.9.1/winboard/makefile.gcc0000644000175000001440000001210412717001265013760 00000000000000# WinBoard makefile using gcc PROJ=winboard OBJS=backend.o book.o gamelist.o lists.o moves.o pgntags.o uci.o zippy.o\ parser.o wbres.o wclipbrd.o wedittags.o wengineoutput.o wevalgraph.o\ wgamelist.o whistory.o history.o winboard.o wlayout.o woptions.o wsnap.o\ wsockerr.o help.o wsettings.o wchat.o engineoutput.o evalgraph.o # make compiling less spammy compile = @echo "$1"; $(CC) $(CFLAGS) $1 # Debugging? USE_DEBUG=0 # JAWS support? JAWS=0 # set this to 1 unless you don't mind linking with cygwin1.dll USE_MINGW=1 # set up for cygwin or not ifeq ($(USE_MINGW),1) CFCYG = -mno-cygwin -DUSE_I64 LFCYG = -mno-cygwin -lmsvcrt endif CC = gcc FLEX = "flex.exe" # we need version 2.5.4 or later, cygwin's is 2.5.35 # "c:/mingw/mingw32/bin/flex.exe" HC="C:/Program Files/Help Workshop/hcrtf" -xn DEFS = -D_WIN32_IE=0x0300 -DWIN32 ifeq ($(JAWS),1) DEFS += -DJAWS endif WARN = -Wall -Wno-char-subscripts -Wno-parentheses ARCH = ifeq ($(USE_DEBUG),0) CFDEBUG = -DNDEBUG OPTS = -Os -frename-registers -funit-at-a-time -fstrict-aliasing -fstrength-reduce else CFDEBUG = -D_DEBUG -DDEBUG -g endif CF = -c $(WARN) -pipe $(CFDEBUG) $(DEFS) -I. -I.. CFLAGS = $(CF) $(ARCH) $(OPTS) $(CFCYG) LFLAGS = $(LFCYG) $(CFDEBUG) -fpic -s -mwindows -lwsock32 -lwinmm -lcomctl32 all: $(PROJ).exe clean: rm -f *~ $(PROJ).exe $(PROJ).err $(PROJ).rbj $(PROJ).RES $(PROJ).res\ *.sbr *.bsc *.o *.obj *.plg *.opt *.ncb *.debug *.bak *.gid *.GID\ *.map *.pdb *.tmp $(PROJ).ini # Update the help file if necessary $(PROJ).hlp : $(PROJ).rtf $(HC) $(PROJ).hpj && @cat $(PROJ).err && @mv $(PROJ).hlp tmp.hlp && @mv tmp.hlp $(PROJ).hlp || true # these moves to get the case right # Update the resource if necessary wbres.o: $(PROJ).rc $(PROJ).h resource.h config.h windres $(DEFS) --use-temp-file --include-dir .. $< -O coff -o $@ $(PROJ).exe: $(OBJS) $(PROJ).hlp $(CC) $(guiflags) $(OBJS) $(LFLAGS) -o $(PROJ).exe winboard.o: winboard.c config.h winboard.h ../common.h ../frontend.h ../backend.h \ ../moves.h defaults.h resource.h wclipbrd.h \ wsockerr.h woptions.h wsnap.h ../lists.h help.h ../args.h $(call compile, $<) backend.o: ../backend.c config.h ../common.h ../frontend.h ../backend.h \ ../parser.h ../moves.h ../zippy.h ../backendz.h ../gettext.h ../lists.h $(call compile, $<) parser.o: ../parser.c config.h ../common.h ../backend.h ../parser.h \ ../frontend.h ../moves.h ../lists.h $(call compile, $<) moves.o: ../moves.c config.h ../backend.h ../common.h ../parser.h \ ../moves.h ../lists.h $(call compile, $<) lists.o: ../lists.c config.h ../lists.h ../common.h $(call compile, $<) gamelist.o: ../gamelist.c config.h ../lists.h ../common.h ../frontend.h \ ../backend.h ../parser.h $(call compile, $<) wclipbrd.o: wclipbrd.c config.h ../common.h ../frontend.h ../backend.h \ winboard.h resource.h wclipbrd.h ../lists.h $(call compile, $<) wedittags.o: wedittags.c config.h ../common.h winboard.h resource.h ../frontend.h \ ../backend.h ../lists.h $(call compile, $<) wgamelist.o: wgamelist.c config.h ../common.h winboard.h resource.h ../frontend.h \ ../backend.h ../lists.h $(call compile, $<) woptions.o: woptions.c config.h ../common.h ../frontend.h ../backend.h ../lists.h \ defaults.h winboard.h resource.h $(call compile, $<) wengineoutput.o: wengineoutput.c ../engineoutput.h config.h ../common.h \ ../frontend.h ../backend.h ../lists.h winboard.h resource.h wsnap.h $(call compile, $<) engineoutput.o: ../engineoutput.c ../engineoutput.h config.h ../common.h \ ../frontend.h ../backend.h ../lists.h $(call compile, $<) whistory.o: whistory.c config.h ../common.h ../frontend.h ../backend.h \ ../lists.h winboard.h resource.h wsnap.h $(call compile, $<) history.o: ../history.c config.h ../common.h ../frontend.h ../backend.h \ ../lists.h $(call compile, $<) wevalgraph.o: wevalgraph.c ../evalgraph.h config.h ../common.h ../frontend.h \ ../backend.h ../lists.h winboard.h resource.h wsnap.h $(call compile, $<) evalgraph.o: ../evalgraph.c ../evalgraph.h config.h ../common.h ../frontend.h \ ../backend.h ../lists.h $(call compile, $<) wlayout.o: wlayout.c config.h ../common.h ../frontend.h winboard.h resource.h $(call compile, $<) wsockerr.o: wsockerr.c wsockerr.h $(call compile, $<) help.o: help.c help.h $(call compile, $<) wsnap.o: wsnap.c wsnap.h $(call compile, $<) pgntags.o: ../pgntags.c config.h ../common.h ../frontend.h ../backend.h \ ../parser.h ../lists.h $(call compile, $<) zippy.o: ../zippy.c config.h ../common.h ../zippy.h ../frontend.h \ ../backend.h ../backendz.h ../lists.h $(call compile, $<) book.o: ../book.c ../common.h ../backend.h ../lists.h $(call compile, $<) uci.o: ../uci.c ../common.h ../backend.h ../frontend.h ../lists.h $(call compile, $<) wsettings.o: wsettings.c ../common.h ../backend.h ../frontend.h ../lists.h $(call compile, $<) wchat.o: wchat.c winboard.h wsnap.h ../common.h ../backend.h ../frontend.h ../lists.h $(call compile, $<) %.o: %.c $(call compile, $<) xboard-4.9.1/winboard/wchat.c0000644000175000001440000003204012717001265013000 00000000000000/* * Chat window (PV) * * Author: H.G.Muller (August 2009) * * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include /* required for all Windows applications */ #include #include #include #include #include #include #include #include "common.h" #include "frontend.h" #include "winboard.h" #include "backend.h" #include "wsnap.h" int chatCount; static int onTop; extern char chatPartner[MAX_CHAT][MSG_SIZ]; HANDLE chatHandle[MAX_CHAT]; static WNDPROC chatInputWindowProc; void SendToICS P((char *s)); void ChatPopUp P((char *s)); void ChatPopDown(); /* Imports from backend.c */ extern int opponentKibitzes; /* Imports from winboard.c */ VOID SaveInHistory(char *cmd); char *PrevInHistory(char *cmd); char *NextInHistory(); extern HWND ChatDialog; extern HINSTANCE hInst; extern HWND hwndConsole; extern char ics_handle[]; extern WindowPlacement wpChat[MAX_CHAT]; extern WindowPlacement wpConsole; extern BoardSize boardSize; /* Module variables */ #define H_MARGIN 5 #define V_MARGIN 5 // front end, although we might make GetWindowRect front end instead static int GetControlWidth( HWND hDlg, int id ) { RECT rc; GetWindowRect( GetDlgItem( hDlg, id ), &rc ); return rc.right - rc.left; } // front end? static int GetControlHeight( HWND hDlg, int id ) { RECT rc; GetWindowRect( GetDlgItem( hDlg, id ), &rc ); return rc.bottom - rc.top; } static void SetControlPos( HWND hDlg, int id, int x, int y, int width, int height ) { HWND hControl = GetDlgItem( hDlg, id ); SetWindowPos( hControl, HWND_TOP, x, y, width, height, SWP_NOZORDER ); } // Also here some of the size calculations should go to the back end, and their actual application to a front-end routine static void ResizeWindowControls( HWND hDlg ) { RECT rc; int clientWidth; int clientHeight; int maxControlWidth; int buttonWidth, buttonHeight; /* Initialize variables */ GetClientRect( hDlg, &rc ); clientWidth = rc.right - rc.left; clientHeight = rc.bottom - rc.top; maxControlWidth = clientWidth - 2*H_MARGIN; buttonWidth = GetControlWidth(hDlg, IDC_Send); buttonHeight = GetControlHeight(hDlg, IDC_Send); /* Resize controls */ SetControlPos( hDlg, IDC_Clear, maxControlWidth+H_MARGIN-2*buttonWidth-5, V_MARGIN, buttonWidth, buttonHeight ); SetControlPos( hDlg, IDC_Send, maxControlWidth+H_MARGIN-buttonWidth, V_MARGIN, buttonWidth, buttonHeight ); SetControlPos( hDlg, IDC_ChatMemo, H_MARGIN, 2*V_MARGIN+buttonHeight, maxControlWidth, clientHeight-3*V_MARGIN-2*buttonHeight ); SetControlPos( hDlg, OPT_ChatInput, H_MARGIN, clientHeight-V_MARGIN-buttonHeight, maxControlWidth, buttonHeight ); // InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo1), NULL, FALSE ); // InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo2), NULL, FALSE ); } // front end. Actual printing of PV lines into the output field static void InsertIntoMemo( HANDLE hDlg, char * text ) { HANDLE hMemo = GetDlgItem(hDlg, IDC_ChatMemo); SendMessage( hMemo, EM_SETSEL, 1000000, 1000000 ); SendMessage( hMemo, EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) text ); SendMessage( hMemo, EM_SCROLLCARET, 0, 0); } LRESULT CALLBACK InterceptArrowKeys(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MSG_SIZ]; char *p; CHARRANGE sel; switch (message) { case WM_KEYDOWN: // cloned from ConsoleInputSubClass() switch (wParam) { case VK_UP: GetWindowText(hwnd, buf, MSG_SIZ); p = PrevInHistory(buf); if (p != NULL) { SetWindowText(hwnd, p); sel.cpMin = 999999; sel.cpMax = 999999; SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel); return 0; } break; case VK_DOWN: p = NextInHistory(); if (p != NULL) { SetWindowText(hwnd, p); sel.cpMin = 999999; sel.cpMax = 999999; SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel); return 0; } break; } } return (*chatInputWindowProc)(hwnd, message, wParam, lParam); } // This seems pure front end LRESULT CALLBACK ChatProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static SnapData sd; char buf[MSG_SIZ], mess[MSG_SIZ]; int partner = -1, i, x, y; static BOOL filterHasFocus[MAX_CHAT]; WORD wMask; HWND hMemo; for(i=0; ipartner), chatPartner[i]); } else EnableWindow( GetDlgItem(hDlg, IDC_Focus1+i-(i>partner)), 0 ); for(i=0; icode == EN_LINK) { ENLINK *pLink = (ENLINK*)lParam; if (pLink->msg == WM_LBUTTONUP) { TEXTRANGE tr; tr.chrg = pLink->chrg; tr.lpstrText = malloc(1+tr.chrg.cpMax-tr.chrg.cpMin); SendMessage( GetDlgItem(hDlg, IDC_ChatMemo), EM_GETTEXTRANGE, 0, (LPARAM)&tr); ShellExecute(NULL, "open", tr.lpstrText, NULL, NULL, SW_SHOW); free(tr.lpstrText); } } break; case WM_COMMAND: /* [AS] If is pressed while editing the filter, it's better to apply the filter rather than selecting the current game. */ if( LOWORD(wParam) == IDC_ChatPartner ) { switch( HIWORD(wParam) ) { case EN_SETFOCUS: filterHasFocus[partner] = TRUE; break; case EN_KILLFOCUS: filterHasFocus[partner] = FALSE; break; } } if( filterHasFocus[partner] && (LOWORD(wParam) == IDC_Send) ) { SetFocus(GetDlgItem(hDlg, OPT_ChatInput)); wParam = IDC_Change; } /* [AS] End command replacement */ switch (LOWORD(wParam)) { case IDCANCEL: /* let Esc key switch focus back to console */ SetFocus(GetDlgItem(hwndConsole, OPT_ConsoleInput)); break; case IDC_Clear: SendMessage( GetDlgItem(hDlg, IDC_ChatMemo), WM_SETTEXT, 0, (LPARAM) "" ); break; case IDC_Change: GetDlgItemText(hDlg, IDC_ChatPartner, chatPartner[partner], MSG_SIZ); for(i=0; i %s\r\n", mess); // echo only tells to handle, not channel InsertIntoMemo(hDlg, buf); snprintf(buf, MSG_SIZ, "xtell %s %s\n", chatPartner[partner], mess); } else snprintf(buf, MSG_SIZ, "tell %s %s\n", chatPartner[partner], mess); } SendToICS(buf); break; case IDC_Focus1: case IDC_Focus2: case IDC_Focus3: case IDC_Focus4: i = LOWORD(wParam) - IDC_Focus1; if(i >= partner) i++; onTop = i; SetFocus(GetDlgItem(hDlg, IDC_Send)); if(chatHandle[i]) { int j; for(j=0; j # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 CFG=winboard - Win32 Jaws Debug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "winboard.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "winboard.mak" CFG="winboard - Win32 Jaws Debug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "winboard - Win32 Release" (based on "Win32 (x86) Application") !MESSAGE "winboard - Win32 Debug" (based on "Win32 (x86) Application") !MESSAGE "winboard - Win32 Jaws Debug" (based on "Win32 (x86) Application") !MESSAGE "winboard - Win32 Jaws Release" (based on "Win32 (x86) Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe MTL=midl.exe RSC=rc.exe !IF "$(CFG)" == "winboard - Win32 Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "Release" # PROP BASE Intermediate_Dir "Release" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Release" # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c # ADD CPP /nologo /MD /W3 /GX /Og /Os /Oy /Gf /I "." /I ".." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /D "YY_NO_UNISTD_H" /YX /Zl /FD /Gs /GA /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /i ".." /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 # ADD LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrt.lib /nologo /subsystem:windows /pdb:none /machine:I386 !ELSEIF "$(CFG)" == "winboard - Win32 Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "Debug" # PROP BASE Intermediate_Dir "Debug" # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Debug" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /D "YY_NO_UNISTD_H" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /i ".." /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept # ADD LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrtd.lib /nologo /subsystem:windows /map /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "winboard - Win32 Jaws Debug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "winboard___Win32_Jaws_Debug" # PROP BASE Intermediate_Dir "winboard___Win32_Jaws_Debug" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "Jaws-Debug" # PROP Intermediate_Dir "Jaws-Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I ".." /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /YX /FD /GZ /c # ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "." /I ".." /D "_DEBUG" /D "JAWS" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /D "YY_NO_UNISTD_H" /YX /FD /GZ /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /i ".." /d "_DEBUG" # ADD RSC /l 0x409 /i ".." /d "_DEBUG" /d "JAWS" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrtd.lib /nologo /subsystem:windows /map /debug /machine:I386 /pdbtype:sept # ADD LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrtd.lib /nologo /subsystem:windows /map /debug /machine:I386 /pdbtype:sept !ELSEIF "$(CFG)" == "winboard - Win32 Jaws Release" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "winboard___Win32_Jaws_Release" # PROP BASE Intermediate_Dir "winboard___Win32_Jaws_Release" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "Jaws-Release" # PROP Intermediate_Dir "Jaws-Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /GX /Og /Os /Oy /Gf /I "." /I ".." /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /YX /Zl /FD /Gs /GA /c # ADD CPP /nologo /MD /W3 /GX /Og /Os /Oy /Gf /I "." /I ".." /D "NDEBUG" /D "JAWS" /D "WIN32" /D "_WINDOWS" /D _WIN32_IE=0x300 /D WINVER=0x400 /D _WIN32_WINDOWS=0x500 /D "YY_NO_UNISTD_H" /YX /Zl /FD /Gs /GA /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 # ADD BASE RSC /l 0x409 /i ".." /d "NDEBUG" # ADD RSC /l 0x409 /i ".." /d "NDEBUG" /d "JAWS" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrt.lib /nologo /subsystem:windows /pdb:none /machine:I386 # ADD LINK32 wsock32.lib comctl32.lib winmm.lib shell32.lib oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib msvcrt.lib /nologo /subsystem:windows /pdb:none /machine:I386 !ENDIF # Begin Target # Name "winboard - Win32 Release" # Name "winboard - Win32 Debug" # Name "winboard - Win32 Jaws Debug" # Name "winboard - Win32 Jaws Release" # Begin Group "Source Files" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File SOURCE=..\backend.c # End Source File # Begin Source File SOURCE=..\book.c # End Source File # Begin Source File SOURCE=..\engineoutput.c # End Source File # Begin Source File SOURCE=..\evalgraph.c # End Source File # Begin Source File SOURCE=..\gamelist.c # End Source File # Begin Source File SOURCE=.\help.c # End Source File # Begin Source File SOURCE=..\history.c # End Source File # Begin Source File SOURCE=..\lists.c # End Source File # Begin Source File SOURCE=..\moves.c # End Source File # Begin Source File SOURCE=..\parser.c # End Source File # Begin Source File SOURCE=..\pgntags.c # End Source File # Begin Source File SOURCE=..\uci.c # End Source File # Begin Source File SOURCE=.\wchat.c # End Source File # Begin Source File SOURCE=.\wclipbrd.c # End Source File # Begin Source File SOURCE=.\wedittags.c # End Source File # Begin Source File SOURCE=.\wengineoutput.c # End Source File # Begin Source File SOURCE=.\wevalgraph.c # End Source File # Begin Source File SOURCE=.\wgamelist.c # End Source File # Begin Source File SOURCE=.\whistory.c # End Source File # Begin Source File SOURCE=.\winboard.c !IF "$(CFG)" == "winboard - Win32 Release" !ELSEIF "$(CFG)" == "winboard - Win32 Debug" !ELSEIF "$(CFG)" == "winboard - Win32 Jaws Debug" # ADD CPP /D WINVER=0x500 # SUBTRACT CPP /D WINVER=0x400 !ELSEIF "$(CFG)" == "winboard - Win32 Jaws Release" # ADD CPP /D WINVER=0x500 # SUBTRACT CPP /D WINVER=0x400 !ENDIF # End Source File # Begin Source File SOURCE=.\winboard.rc # ADD BASE RSC /l 0x409 # ADD RSC /l 0x409 # End Source File # Begin Source File SOURCE=.\wlayout.c # End Source File # Begin Source File SOURCE=.\woptions.c # End Source File # Begin Source File SOURCE=.\wsettings.c # End Source File # Begin Source File SOURCE=.\wsnap.c # End Source File # Begin Source File SOURCE=.\wsockerr.c # End Source File # Begin Source File SOURCE=..\zippy.c # End Source File # End Group # Begin Group "Header Files" # PROP Default_Filter "h;hpp;hxx;hm;inl" # End Group # Begin Group "Resource Files" # PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" # End Group # End Target # End Project xboard-4.9.1/winboard/help.c0000644000175000001440000000542312717001265012627 00000000000000/* * help.h * * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ /* Windows html help function to avoid having to link with the htmlhlp.lib */ #include #include #include "config.h" #include "help.h" FILE *debugFP; HWND WINAPI HtmlHelp( HWND hwnd, LPCSTR helpFile, UINT action, DWORD_PTR data ) { PROCESS_INFORMATION helpProcInfo; STARTUPINFO siStartInfo; char buf[100]; static int status = 0; FILE *f; if(status < 0) return NULL; if(!status) { f = fopen(helpFile, "r"); if(f == NULL) { status = -1; return NULL; } status = 1; fclose(f); } siStartInfo.cb = sizeof(STARTUPINFO); siStartInfo.lpReserved = NULL; siStartInfo.lpDesktop = NULL; siStartInfo.lpTitle = NULL; siStartInfo.dwFlags = STARTF_USESTDHANDLES; siStartInfo.cbReserved2 = 0; siStartInfo.lpReserved2 = NULL; siStartInfo.hStdInput = NULL; siStartInfo.hStdOutput = NULL; siStartInfo.hStdError = debugFP; snprintf(buf, sizeof(buf)/sizeof(buf[0]),"Hh.exe %s", helpFile); // ignore the other parameters; just start the viewer with the help file if( CreateProcess(NULL, buf, /* command line */ NULL, /* process security attributes */ NULL, /* primary thread security attrs */ FALSE, /* handles are inherited */ DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP, NULL, /* use parent's environment */ NULL, &siStartInfo, /* STARTUPINFO pointer */ &helpProcInfo) /* receives PROCESS_INFORMATION */ ) return hwnd; else return NULL; } //HWND WINAPI int MyHelp(HWND hwnd, LPSTR helpFile, UINT action, DWORD_PTR data) { static int status = 0; FILE *f; if(status < 0) return 0; if(!status) { f = fopen(helpFile, "r"); if(f == NULL) { status = -1; return 0; } status = 1; fclose(f); } return WinHelp(hwnd, helpFile, action, data); } xboard-4.9.1/winboard/makefile.ms0000644000175000001440000001413512717001265013651 00000000000000# Command line: nmake /f makefile.ms # Set VCVER=6 for MSVC 4.x through 7.0(aka 2002 aka .NET). # For MSVC 8 (aka 2005) set VCVER=8. Beyond that try 8 first. VCVER=6 # If using MSVC 6.0 or earlier, you will need the latest platform SDK supported. # Set SDK_INC to the include directory after you install it. # See: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm #SDK_INC="C:\Program Files\Microsoft SDK\include" PROJ = winboard OBJS=backend.obj book.obj gamelist.obj lists.obj moves.obj pgntags.obj uci.obj\ zippy.obj parser.obj wclipbrd.obj wedittags.obj wengineoutput.obj wevalgraph.obj\ wgamelist.obj whistory.obj history.obj winboard.obj wlayout.obj woptions.obj wsnap.obj\ wsockerr.obj help.obj wsettings.obj wchat.obj engineoutput.obj evalgraph.obj # Debugging? USE_DEBUG=0 # JAWS support? JAWS=0 CC = @cl RC = @rc LINK = link HC="c:\program files\help workshop\hcrtf.exe" -xn FLEX = "c:/mingw/mingw32/bin/flex.exe" DEFS = -D_WIN32_IE=0x300 -DWIN32 -DWINVER=0x0500 -D_WIN32_WINDOWS=0x500 -D YY_NO_UNISTD_H !if $(JAWS) == 1 DEFS = -DJAWS $(DEFS) !endif #WARN = -W3 ARCH = !if $(VCVER) >= 8 CLIB= libcmt LIBF= -MT DEPRECATE=-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_USE_32BIT_TIME_T !else VSO = -Gf -Og CLIB = msvcrt LIBF = -MD !endif !if $(USE_DEBUG) == 0 CFDEBUG = -DNDEBUG OPTS = -Os -Oy -Gs -GA -Zl $(VSO) $(LIBF) LFDEBUG = $(CLIB).lib !else CFDEBUG = -D_DEBUG -DDEBUG OPTS = -Od -Zi -Fd$(PROJ).pdb $(LIBF)d LFDEBUG = -DEBUG -PDB:$(PROJ).pdb -MAP:$(PROJ).map $(CLIB)d.lib !endif CF = $(CFDEBUG) $(DEFS) $(DEPRECATE) -I. -I.. !if DEFINED(SDK_INC) CF = $(CF) -I$(SDK_INC) !endif CFLAGS = -c -nologo $(WARN) $(CF) $(ARCH) $(OPTS) LFLAGS = -nologo $(LFDEBUG) all: $(PROJ).exe clean: -erase *~ $(PROJ).exe $(PROJ).err $(PROJ).rbj $(PROJ).res *.sbr *.bsc\ *.o *.obj *.plg *.opt *.ncb *.debug *.bak *.gid *.map *.pdb *.ini # Update the help file if necessary $(PROJ).hlp : $(PROJ).rtf $(HC) $(PROJ).hpj -@type $(PROJ).err -@rename $(PROJ).hlp $(PROJ).hlp.tmp -@rename $(PROJ).hlp.tmp $(PROJ).hlp # Update the resource if necessary $(PROJ).res: $(PROJ).rc $(PROJ).h resource.h config.h $(RC) $(CF) -r -fo $(PROJ).res $(PROJ).rc winboard.obj: winboard.c config.h winboard.h ../common.h ../frontend.h \ ../backend.h ../moves.h defaults.h resource.h wclipbrd.h \ wsockerr.h woptions.h wsnap.h ../lists.h help.h ../args.h $(CC) $(CFLAGS) winboard.c backend.obj: ../backend.c config.h ../common.h ../frontend.h ../backend.h \ ../parser.h ../moves.h ../zippy.h ../backendz.h ../gettext.h ../lists.h $(CC) $(CFLAGS) ../backend.c parser.obj: ../parser.c config.h ../common.h ../backend.h ../parser.h \ ../frontend.h ../moves.h ../lists.h $(CC) $(CFLAGS) ../parser.c book.obj: ../book.c ../common.h ../backend.h ../lists.h $(CC) $(CFLAGS) ../book.c gamelist.obj: ../gamelist.c config.h ../lists.h ../common.h ../frontend.h \ ../backend.h ../parser.h $(CC) $(CFLAGS) ../gamelist.c lists.obj: ../lists.c config.h ../lists.h ../common.h $(CC) $(CFLAGS) ../lists.c moves.obj: ../moves.c config.h ../backend.h ../common.h ../parser.h \ ../moves.h ../lists.h $(CC) $(CFLAGS) ../moves.c wclipbrd.obj: wclipbrd.c config.h ../common.h ../frontend.h ../backend.h \ winboard.h resource.h wclipbrd.h ../lists.h $(CC) $(CFLAGS) wclipbrd.c wedittags.obj: wedittags.c config.h ../common.h winboard.h resource.h ../frontend.h \ ../backend.h ../lists.h $(CC) $(CFLAGS) wedittags.c wgamelist.obj: wgamelist.c config.h ../common.h winboard.h resource.h ../frontend.h \ ../backend.h ../lists.h $(CC) $(CFLAGS) wgamelist.c woptions.obj: woptions.c config.h ../common.h ../frontend.h ../backend.h \ ../lists.h defaults.h winboard.h resource.h $(CC) $(CFLAGS) woptions.c wengineoutput.obj: wengineoutput.c config.h ../common.h ../frontend.h ../backend.h \ ../lists.h winboard.h resource.h wsnap.h $(CC) $(CFLAGS) wengineoutput.c engineoutput.obj: ../engineoutput.c ../engineoutput.h config.h ../common.h \ ../frontend.h ../backend.h ../lists.h $(CC) $(CFLAGS) ../engineoutput.c whistory.obj: whistory.c config.h ../common.h ../frontend.h ../backend.h \ ../lists.h winboard.h resource.h wsnap.h $(CC) $(CFLAGS) whistory.c history.obj: ../history.c config.h ../common.h ../frontend.h ../backend.h \ ../lists.h $(CC) $(CFLAGS) ../history.c wevalgraph.obj: wevalgraph.c config.h ../common.h ../frontend.h ../backend.h \ ../lists.h winboard.h resource.h wsnap.h $(CC) $(CFLAGS) wevalgraph.c evalgraph.obj: ../evalgraph.c ../evalgraph.h config.h ../common.h ../frontend.h \ ../backend.h ../lists.h $(CC) $(CFLAGS) ../evalgraph.c wlayout.obj: wlayout.c config.h ../common.h ../frontend.h winboard.h resource.h $(CC) $(CFLAGS) wlayout.c wsockerr.obj: wsockerr.c wsockerr.h $(CC) $(CFLAGS) wsockerr.c help.obj: help.c help.h $(CC) $(CFLAGS) help.c wsnap.obj: wsnap.c wsnap.h $(CC) $(CFLAGS) wsnap.c pgntags.obj: ../pgntags.c config.h ../common.h ../frontend.h ../backend.h \ ../parser.h ../lists.h $(CC) $(CFLAGS) ../pgntags.c zippy.obj: ../zippy.c config.h ../common.h ../zippy.h ../frontend.h \ ../backend.h ../backendz.h ../lists.h $(CC) $(CFLAGS) ../zippy.c uci.obj: ../uci.c ../common.h ../backend.h ../frontend.h ../lists.h $(CC) $(CFLAGS) ../uci.c wsettings.obj: wsettings.c ../common.h ../backend.h ../frontend.h ../lists.h $(CC) $(CFLAGS) wsettings.c wchat.obj: wchat.c winboard.h wsnap.h ../common.h ../backend.h ../frontend.h ../lists.h $(CC) $(CFLAGS) wchat.c $(PROJ).exe: $(OBJS) $(PROJ).res $(PROJ).hlp $(LINK) $(LFLAGS) $(OBJS) wsock32.lib comctl32.lib winmm.lib shell32.lib\ oldnames.lib kernel32.lib advapi32.lib user32.lib gdi32.lib comdlg32.lib\ $(PROJ).res -out:$(PROJ).exe .c.obj: $(CC) $(CFLAGS) $< xboard-4.9.1/winboard/help.h0000644000175000001440000000045512717001265012634 00000000000000#ifdef VISTA #include "htmlhelp.h" #else #ifdef _MSC_VER #if _MSC_VER <= 1200 #define DWORD_PTR DWORD #endif #endif HWND WINAPI HtmlHelp( HWND hwnd, LPCSTR helpFile, UINT action, DWORD_PTR data ); #endif int MyHelp(HWND hwnd, LPSTR helpFile, UINT action, DWORD_PTR data); xboard-4.9.1/winboard/internationalize0000644000175000001440000000022512717001265015030 00000000000000ed $1 /* required for all Windows applications */ #include #include #include /* [AS] Requires NT 4.0 or Win95 */ #include #include "common.h" #include "frontend.h" #include "winboard.h" #include "backend.h" #include "woptions.h" #include "defaults.h" #include #if __GNUC__ #include #include #endif #define _(s) T_(s) #define N_(s) s /* Imports from winboard.c */ extern MyFont *font[NUM_SIZES][NUM_FONTS]; extern HINSTANCE hInst; /* current instance */ extern HWND hwndMain; /* root window*/ extern BOOLEAN alwaysOnTop; extern RECT boardRect; extern COLORREF lightSquareColor, darkSquareColor, whitePieceColor, blackPieceColor, highlightSquareColor, premoveHighlightColor; extern HPALETTE hPal; extern BoardSize boardSize; extern COLORREF consoleBackgroundColor; extern MyColorizeAttribs colorizeAttribs[]; /* do I need the size? */ extern MyTextAttribs textAttribs[]; extern MySound sounds[]; extern ColorClass currentColorClass; extern HWND hwndConsole; extern char *defaultTextAttribs[]; extern HWND commentDialog; extern HWND moveHistoryDialog; extern HWND engineOutputDialog; extern char installDir[]; extern HWND hCommPort; /* currently open comm port */ extern DCB dcb; extern BOOLEAN chessProgram; extern int startedFromPositionFile; /* [HGM] loadPos */ extern int searchTime; /* types */ typedef struct { char *label; unsigned value; } ComboData; typedef struct { char *label; char *name; } SoundComboData; /* module prototypes */ LRESULT CALLBACK GeneralOptions(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK BoardOptions(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK NewVariant(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK IcsOptions(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK FontOptions(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK CommPortOptions(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK LoadOptions(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK SaveOptions(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK TimeControl(HWND, UINT, WPARAM, LPARAM); VOID ChangeBoardSize(BoardSize newSize); VOID PaintSampleSquare( HWND hwnd, int ctrlid, COLORREF squareColor, COLORREF pieceColor, COLORREF squareOutlineColor, COLORREF pieceDetailColor, BOOL isWhitePiece, BOOL isMono, HBITMAP pieces[3] ); VOID PaintColorBlock(HWND hwnd, int ctrlid, COLORREF color); VOID SetBoardOptionEnables(HWND hDlg); BoardSize BoardOptionsWhichRadio(HWND hDlg); BOOL APIENTRY MyCreateFont(HWND hwnd, MyFont *font); VOID UpdateSampleText(HWND hDlg, int id, MyColorizeAttribs *mca); LRESULT CALLBACK ColorizeTextDialog(HWND , UINT, WPARAM, LPARAM); VOID ColorizeTextPopup(HWND hwnd, ColorClass cc); VOID SetIcsOptionEnables(HWND hDlg); VOID SetSampleFontText(HWND hwnd, int id, const MyFont *mf); VOID CopyFont(MyFont *dest, const MyFont *src); void InitSoundComboData(SoundComboData *scd); void ResetSoundComboData(SoundComboData *scd); void InitSoundCombo(HWND hwndCombo, SoundComboData *scd); int SoundDialogWhichRadio(HWND hDlg); VOID SoundDialogSetEnables(HWND hDlg, int radio); char * SoundDialogGetName(HWND hDlg, int radio); void DisplaySelectedSound(HWND hDlg, HWND hCombo, const char *name); VOID ParseCommSettings(char *arg, DCB *dcb); VOID PrintCommSettings(FILE *f, char *name, DCB *dcb); void InitCombo(HANDLE hwndCombo, ComboData *cd); void SelectComboValue(HANDLE hwndCombo, ComboData *cd, unsigned value); VOID SetLoadOptionEnables(HWND hDlg); VOID SetSaveOptionEnables(HWND hDlg); VOID SetTimeControlEnables(HWND hDlg); char * InterpretFileName(char *buf, char *homeDir) { // [HGM] file name relative to homeDir. (Taken out of SafeOptionsDialog, because it is generally useful) char *result = NULL; if ((isalpha(buf[0]) && buf[1] == ':') || (buf[0] == '\\' && buf[1] == '\\')) { return strdup(buf); } else { char buf2[MSG_SIZ], buf3[MSG_SIZ]; char *dummy; GetCurrentDirectory(MSG_SIZ, buf3); SetCurrentDirectory(homeDir); if (GetFullPathName(buf, MSG_SIZ, buf2, &dummy)) { result = strdup(buf2); } else { result = strdup(buf); } SetCurrentDirectory(buf3); } return result; } /*---------------------------------------------------------------------------*\ * * General Options Dialog functions * \*---------------------------------------------------------------------------*/ LRESULT CALLBACK GeneralOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static Boolean oldShowCoords; static Boolean oldBlindfold; static Boolean oldShowButtonBar; static Boolean oldAutoLogo; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ oldShowCoords = appData.showCoords; oldBlindfold = appData.blindfold; oldShowButtonBar = appData.showButtonBar; oldAutoLogo = appData.autoLogo; /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_GeneralOptions); /* Initialize the dialog items */ #define CHECK_BOX(x,y) CheckDlgButton(hDlg, (x), (BOOL)(y)) CHECK_BOX(OPT_AlwaysOnTop, alwaysOnTop); CHECK_BOX(OPT_AlwaysQueen, appData.alwaysPromoteToQueen); CHECK_BOX(OPT_AnimateDragging, appData.animateDragging); CHECK_BOX(OPT_AnimateMoving, appData.animate); CHECK_BOX(OPT_AutoFlag, appData.autoCallFlag); CHECK_BOX(OPT_AutoFlipView, appData.autoFlipView); CHECK_BOX(OPT_AutoRaiseBoard, appData.autoRaiseBoard); CHECK_BOX(OPT_Blindfold, appData.blindfold); CHECK_BOX(OPT_HighlightDragging, appData.highlightDragging); CHECK_BOX(OPT_HighlightLastMove, appData.highlightLastMove); CHECK_BOX(OPT_PeriodicUpdates, appData.periodicUpdates); CHECK_BOX(OPT_PonderNextMove, appData.ponderNextMove); CHECK_BOX(OPT_PopupExitMessage, appData.popupExitMessage); CHECK_BOX(OPT_PopupMoveErrors, appData.popupMoveErrors); CHECK_BOX(OPT_ShowButtonBar, appData.showButtonBar); CHECK_BOX(OPT_ShowCoordinates, appData.showCoords); CHECK_BOX(OPT_ShowThinking, appData.showThinking); CHECK_BOX(OPT_TestLegality, appData.testLegality); CHECK_BOX(OPT_HideThinkFromHuman, appData.hideThinkingFromHuman); CHECK_BOX(OPT_SaveExtPGN, appData.saveExtendedInfoInPGN); CHECK_BOX(OPT_ExtraInfoInMoveHistory, appData.showEvalInMoveHistory); CHECK_BOX(OPT_HighlightMoveArrow, appData.highlightMoveWithArrow); CHECK_BOX(OPT_AutoLogo, appData.autoLogo); // [HGM] logo CHECK_BOX(OPT_SmartMove, appData.oneClick); // [HGM] one-click CHECK_BOX(OPT_AutoTags, appData.autoDisplayTags); // [HGM] CHECK_BOX(OPT_AutoComment, appData.autoDisplayComment); // [HGM] CHECK_BOX(OPT_Headers, appData.headers); // [HGM] CHECK_BOX(OPT_Variations, appData.variations); // [HGM] CHECK_BOX(OPT_AutoExtend, appData.autoExtend); // [HGM] #undef CHECK_BOX EnableWindow(GetDlgItem(hDlg, OPT_AutoFlag), appData.icsActive || !appData.noChessProgram); EnableWindow(GetDlgItem(hDlg, OPT_AutoFlipView), appData.icsActive || !appData.noChessProgram); EnableWindow(GetDlgItem(hDlg, OPT_PonderNextMove), !appData.noChessProgram); EnableWindow(GetDlgItem(hDlg, OPT_PeriodicUpdates), !appData.noChessProgram && !appData.icsActive); EnableWindow(GetDlgItem(hDlg, OPT_ShowThinking), !appData.noChessProgram); return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: /* Read changed options from the dialog box */ #define IS_CHECKED(x) (Boolean)IsDlgButtonChecked(hDlg, (x)) alwaysOnTop = IS_CHECKED(OPT_AlwaysOnTop); appData.alwaysPromoteToQueen = IS_CHECKED(OPT_AlwaysQueen); appData.animateDragging = IS_CHECKED(OPT_AnimateDragging); appData.animate = IS_CHECKED(OPT_AnimateMoving); appData.autoCallFlag = IS_CHECKED(OPT_AutoFlag); appData.autoFlipView = IS_CHECKED(OPT_AutoFlipView); appData.autoRaiseBoard = IS_CHECKED(OPT_AutoRaiseBoard); appData.blindfold = IS_CHECKED(OPT_Blindfold); appData.highlightDragging = IS_CHECKED(OPT_HighlightDragging); appData.highlightLastMove = IS_CHECKED(OPT_HighlightLastMove); PeriodicUpdatesEvent( IS_CHECKED(OPT_PeriodicUpdates)); PonderNextMoveEvent( IS_CHECKED(OPT_PonderNextMove)); appData.popupExitMessage = IS_CHECKED(OPT_PopupExitMessage); appData.popupMoveErrors = IS_CHECKED(OPT_PopupMoveErrors); appData.showButtonBar = IS_CHECKED(OPT_ShowButtonBar); appData.showCoords = IS_CHECKED(OPT_ShowCoordinates); // [HGM] thinking: next three moved up appData.saveExtendedInfoInPGN= IS_CHECKED(OPT_SaveExtPGN); appData.hideThinkingFromHuman= IS_CHECKED(OPT_HideThinkFromHuman); appData.showEvalInMoveHistory= IS_CHECKED(OPT_ExtraInfoInMoveHistory); appData.showThinking = IS_CHECKED(OPT_ShowThinking); ShowThinkingEvent(); // [HGM] thinking: tests four options appData.testLegality = IS_CHECKED(OPT_TestLegality); appData.highlightMoveWithArrow=IS_CHECKED(OPT_HighlightMoveArrow); appData.autoLogo =IS_CHECKED(OPT_AutoLogo); // [HGM] logo appData.oneClick =IS_CHECKED(OPT_SmartMove); // [HGM] one-click appData.autoDisplayTags =IS_CHECKED(OPT_AutoTags); // [HGM] appData.autoDisplayComment =IS_CHECKED(OPT_AutoComment); // [HGM] appData.headers =IS_CHECKED(OPT_Headers); // [HGM] appData.variations =IS_CHECKED(OPT_Variations); // [HGM] appData.autoExtend =IS_CHECKED(OPT_AutoExtend); // [HGM] #undef IS_CHECKED SetWindowPos(hwndMain, alwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); #if AOT_CONSOLE if (hwndConsole) { SetWindowPos(hwndConsole, alwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); } #endif if (!appData.highlightLastMove) { ClearHighlights(); DrawPosition(FALSE, NULL); } /* * for some reason the redraw seems smoother when we invalidate * the board rect after the call to EndDialog() */ EndDialog(hDlg, TRUE); if (oldAutoLogo != appData.autoLogo) { // [HGM] logo: remove any logos when we switch autologo off if(oldAutoLogo) first.programLogo = second.programLogo = NULL; InitDrawingSizes(boardSize, 0); } else if (oldShowButtonBar != appData.showButtonBar) { InitDrawingSizes(boardSize, 0); } else if ((oldShowCoords != appData.showCoords) || (oldBlindfold != appData.blindfold)) { InvalidateRect(hwndMain, &boardRect, FALSE); } return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; } break; } return FALSE; } VOID GeneralOptionsPopup(HWND hwnd) { FARPROC lpProc; lpProc = MakeProcInstance((FARPROC)GeneralOptionsDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_GeneralOptions), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * Board Options Dialog functions * \*---------------------------------------------------------------------------*/ const int SAMPLE_SQ_SIZE = 54; VOID ChangeBoardSize(BoardSize newSize) { if (newSize != boardSize) { boardSize = newSize; InitDrawingSizes(boardSize, 0); } } VOID PaintSampleSquare( HWND hwnd, int ctrlid, COLORREF squareColor, COLORREF pieceColor, COLORREF squareOutlineColor, COLORREF pieceDetailColor, BOOL isWhitePiece, BOOL isMono, HBITMAP pieces[3] ) { HBRUSH brushSquare; HBRUSH brushSquareOutline; HBRUSH brushPiece; HBRUSH brushPieceDetail; HBRUSH oldBrushPiece = NULL; HBRUSH oldBrushSquare; HBITMAP oldBitmapMem; HBITMAP oldBitmapTemp; HBITMAP bufferBitmap; RECT rect; HDC hdcScreen, hdcMem, hdcTemp; HPEN pen, oldPen; HWND hCtrl = GetDlgItem(hwnd, ctrlid); int x, y; const int SOLID = 0; const int WHITE = 1; const int OUTLINE = 2; const int BORDER = 4; InvalidateRect(hCtrl, NULL, TRUE); UpdateWindow(hCtrl); GetClientRect(hCtrl, &rect); x = rect.left + (BORDER / 2); y = rect.top + (BORDER / 2); hdcScreen = GetDC(hCtrl); hdcMem = CreateCompatibleDC(hdcScreen); hdcTemp = CreateCompatibleDC(hdcScreen); bufferBitmap = CreateCompatibleBitmap(hdcScreen, rect.right-rect.left+1, rect.bottom-rect.top+1); oldBitmapMem = SelectObject(hdcMem, bufferBitmap); if (!isMono) { SelectPalette(hdcMem, hPal, FALSE); } brushSquare = CreateSolidBrush(squareColor); brushSquareOutline = CreateSolidBrush(squareOutlineColor); brushPiece = CreateSolidBrush(pieceColor); brushPieceDetail = CreateSolidBrush(pieceDetailColor); /* * first draw the rectangle */ pen = CreatePen(PS_SOLID, BORDER, squareOutlineColor); oldPen = (HPEN) SelectObject(hdcMem, pen); oldBrushSquare = (HBRUSH)SelectObject(hdcMem, brushSquare); Rectangle(hdcMem, rect.left, rect.top, rect.right, rect.bottom); /* * now draw the piece */ if (isMono) { oldBitmapTemp = SelectObject(hdcTemp, pieces[OUTLINE]); BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, hdcTemp, 0, 0, isWhitePiece ? SRCCOPY : NOTSRCCOPY); SelectObject(hdcTemp, oldBitmapTemp); } else { if (isWhitePiece) { oldBitmapTemp = SelectObject(hdcTemp, pieces[WHITE]); oldBrushPiece = SelectObject(hdcMem, brushPiece); BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, hdcTemp, 0, 0, 0x00B8074A); /* Use black for outline of white pieces */ SelectObject(hdcTemp, pieces[OUTLINE]); BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, hdcTemp, 0, 0, SRCAND); } else { /* Use square color for details of black pieces */ oldBitmapTemp = SelectObject(hdcTemp, pieces[SOLID]); oldBrushPiece = SelectObject(hdcMem, brushPiece); BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE, hdcTemp, 0, 0, 0x00B8074A); } SelectObject(hdcMem, oldBrushPiece); SelectObject(hdcTemp, oldBitmapTemp); } /* * copy the memory dc to the screen */ SelectObject(hdcMem, bufferBitmap); BitBlt(hdcScreen, rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top, hdcMem, rect.left, rect.top, SRCCOPY); SelectObject(hdcMem, oldBitmapMem); /* * clean up */ SelectObject(hdcMem, oldBrushSquare); SelectObject(hdcMem, oldPen); DeleteObject(brushPiece); DeleteObject(brushPieceDetail); DeleteObject(brushSquare); DeleteObject(brushSquareOutline); DeleteObject(pen); DeleteDC(hdcTemp); DeleteDC(hdcMem); ReleaseDC(hCtrl, hdcScreen); } VOID PaintColorBlock(HWND hwnd, int ctrlid, COLORREF color) { HDC hdc; HBRUSH brush, oldBrush; RECT rect; HWND hCtrl = GetDlgItem(hwnd, ctrlid); hdc = GetDC(hCtrl); InvalidateRect(hCtrl, NULL, TRUE); UpdateWindow(hCtrl); GetClientRect(hCtrl, &rect); brush = CreateSolidBrush(color); oldBrush = (HBRUSH)SelectObject(hdc, brush); Rectangle(hdc, rect.left, rect.top, rect.right, rect.bottom); SelectObject(hdc, oldBrush); DeleteObject(brush); ReleaseDC(hCtrl, hdc); } VOID SetBoardOptionEnables(HWND hDlg) { if (IsDlgButtonChecked(hDlg, OPT_Monochrome)) { ShowWindow(GetDlgItem(hDlg, OPT_LightSquareColor), SW_HIDE); ShowWindow(GetDlgItem(hDlg, OPT_DarkSquareColor), SW_HIDE); ShowWindow(GetDlgItem(hDlg, OPT_WhitePieceColor), SW_HIDE); ShowWindow(GetDlgItem(hDlg, OPT_BlackPieceColor), SW_HIDE); EnableWindow(GetDlgItem(hDlg, OPT_ChooseLightSquareColor), FALSE); EnableWindow(GetDlgItem(hDlg, OPT_ChooseDarkSquareColor), FALSE); EnableWindow(GetDlgItem(hDlg, OPT_ChooseWhitePieceColor), FALSE); EnableWindow(GetDlgItem(hDlg, OPT_ChooseBlackPieceColor), FALSE); } else { ShowWindow(GetDlgItem(hDlg, OPT_LightSquareColor), SW_SHOW); ShowWindow(GetDlgItem(hDlg, OPT_DarkSquareColor), SW_SHOW); ShowWindow(GetDlgItem(hDlg, OPT_WhitePieceColor), SW_SHOW); ShowWindow(GetDlgItem(hDlg, OPT_BlackPieceColor), SW_SHOW); EnableWindow(GetDlgItem(hDlg, OPT_ChooseLightSquareColor), TRUE); EnableWindow(GetDlgItem(hDlg, OPT_ChooseDarkSquareColor), TRUE); EnableWindow(GetDlgItem(hDlg, OPT_ChooseWhitePieceColor), TRUE); EnableWindow(GetDlgItem(hDlg, OPT_ChooseBlackPieceColor), TRUE); } } BoardSize BoardOptionsWhichRadio(HWND hDlg) { return (IsDlgButtonChecked(hDlg, OPT_SizeTiny) ? SizeTiny : (IsDlgButtonChecked(hDlg, OPT_SizeTeeny) ? SizeTeeny : (IsDlgButtonChecked(hDlg, OPT_SizeDinky) ? SizeDinky : (IsDlgButtonChecked(hDlg, OPT_SizePetite) ? SizePetite : (IsDlgButtonChecked(hDlg, OPT_SizeSlim) ? SizeSlim : (IsDlgButtonChecked(hDlg, OPT_SizeSmall) ? SizeSmall : (IsDlgButtonChecked(hDlg, OPT_SizeMediocre) ? SizeMediocre : (IsDlgButtonChecked(hDlg, OPT_SizeMiddling) ? SizeMiddling : (IsDlgButtonChecked(hDlg, OPT_SizeAverage) ? SizeAverage : (IsDlgButtonChecked(hDlg, OPT_SizeModerate) ? SizeModerate : (IsDlgButtonChecked(hDlg, OPT_SizeMedium) ? SizeMedium : (IsDlgButtonChecked(hDlg, OPT_SizeBulky) ? SizeBulky : (IsDlgButtonChecked(hDlg, OPT_SizeLarge) ? SizeLarge : (IsDlgButtonChecked(hDlg, OPT_SizeBig) ? SizeBig : (IsDlgButtonChecked(hDlg, OPT_SizeHuge) ? SizeHuge : (IsDlgButtonChecked(hDlg, OPT_SizeGiant) ? SizeGiant : (IsDlgButtonChecked(hDlg, OPT_SizeColossal) ? SizeColossal : SizeTitanic ))))))))))))))))); } LRESULT CALLBACK BoardOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static Boolean mono, white, flip, fonts, bitmaps, grid; static BoardSize size; static COLORREF lsc, dsc, wpc, bpc, hsc, phc; static HBITMAP pieces[3]; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_BoardOptions); /* Initialize the dialog items */ switch (boardSize) { case SizeTiny: CheckDlgButton(hDlg, OPT_SizeTiny, TRUE); break; case SizeTeeny: CheckDlgButton(hDlg, OPT_SizeTeeny, TRUE); break; case SizeDinky: CheckDlgButton(hDlg, OPT_SizeDinky, TRUE); break; case SizePetite: CheckDlgButton(hDlg, OPT_SizePetite, TRUE); break; case SizeSlim: CheckDlgButton(hDlg, OPT_SizeSlim, TRUE); break; case SizeSmall: CheckDlgButton(hDlg, OPT_SizeSmall, TRUE); break; case SizeMediocre: CheckDlgButton(hDlg, OPT_SizeMediocre, TRUE); break; case SizeMiddling: CheckDlgButton(hDlg, OPT_SizeMiddling, TRUE); break; case SizeAverage: CheckDlgButton(hDlg, OPT_SizeAverage, TRUE); break; case SizeModerate: CheckDlgButton(hDlg, OPT_SizeModerate, TRUE); break; case SizeMedium: CheckDlgButton(hDlg, OPT_SizeMedium, TRUE); break; case SizeBulky: CheckDlgButton(hDlg, OPT_SizeBulky, TRUE); break; case SizeLarge: CheckDlgButton(hDlg, OPT_SizeLarge, TRUE); break; case SizeBig: CheckDlgButton(hDlg, OPT_SizeBig, TRUE); break; case SizeHuge: CheckDlgButton(hDlg, OPT_SizeHuge, TRUE); break; case SizeGiant: CheckDlgButton(hDlg, OPT_SizeGiant, TRUE); break; case SizeColossal: CheckDlgButton(hDlg, OPT_SizeColossal, TRUE); break; case SizeTitanic: CheckDlgButton(hDlg, OPT_SizeTitanic, TRUE); default: ; // should not happen, but suppresses warning on pedantic compilers } if (appData.monoMode) CheckDlgButton(hDlg, OPT_Monochrome, TRUE); if (appData.allWhite) CheckDlgButton(hDlg, OPT_AllWhite, TRUE); if (appData.upsideDown) CheckDlgButton(hDlg, OPT_UpsideDown, TRUE); if (appData.useBitmaps) CheckDlgButton(hDlg, OPT_Bitmaps, TRUE); if (appData.useFont) CheckDlgButton(hDlg, OPT_PieceFont, TRUE); if (appData.overrideLineGap >= 0) CheckDlgButton(hDlg, OPT_Grid, TRUE); pieces[0] = DoLoadBitmap(hInst, "n", SAMPLE_SQ_SIZE, "s"); pieces[1] = DoLoadBitmap(hInst, "n", SAMPLE_SQ_SIZE, "w"); pieces[2] = DoLoadBitmap(hInst, "n", SAMPLE_SQ_SIZE, "o"); lsc = lightSquareColor; dsc = darkSquareColor; fonts = appData.useFont; wpc = fonts ? appData.fontBackColorWhite : whitePieceColor; bpc = fonts ? appData.fontForeColorBlack : blackPieceColor; hsc = highlightSquareColor; phc = premoveHighlightColor; mono = appData.monoMode; white= appData.allWhite; flip = appData.upsideDown; size = boardSize; bitmaps = appData.useBitmaps; grid = appData.overrideLineGap >= 0; SetBoardOptionEnables(hDlg); return TRUE; case WM_PAINT: PaintColorBlock(hDlg, OPT_LightSquareColor, lsc); PaintColorBlock(hDlg, OPT_DarkSquareColor, dsc); PaintColorBlock(hDlg, OPT_WhitePieceColor, wpc); PaintColorBlock(hDlg, OPT_BlackPieceColor, bpc); PaintColorBlock(hDlg, OPT_HighlightSquareColor, hsc); PaintColorBlock(hDlg, OPT_PremoveHighlightColor, phc); PaintSampleSquare(hDlg, OPT_SampleLightSquare, lsc, wpc, hsc, bpc, TRUE, mono, pieces); PaintSampleSquare(hDlg, OPT_SampleDarkSquare, dsc, bpc, phc, wpc, FALSE, mono, pieces); return FALSE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: /* * if we call EndDialog() after the call to ChangeBoardSize(), * then ChangeBoardSize() does not take effect, although the new * boardSize is saved. Go figure... */ EndDialog(hDlg, TRUE); size = BoardOptionsWhichRadio(hDlg); /* * did any settings change? */ if (size != boardSize) { ChangeBoardSize(size); } if (bitmaps && !appData.useBitmaps) InitTextures(); if ((mono != appData.monoMode) || (lsc != lightSquareColor) || (dsc != darkSquareColor) || (wpc != fonts ? appData.fontBackColorWhite : whitePieceColor) || (bpc != fonts ? appData.fontForeColorBlack : blackPieceColor) || (hsc != highlightSquareColor) || (flip != appData.upsideDown) || (white != appData.allWhite) || (fonts != appData.useFont) || (bitmaps != appData.useBitmaps) || (grid != appData.overrideLineGap >= 0) || (phc != premoveHighlightColor)) { lightSquareColor = lsc; darkSquareColor = dsc; if(fonts) { appData.fontBackColorWhite = wpc; appData.fontForeColorBlack = bpc; } else { whitePieceColor = wpc; blackPieceColor = bpc; } highlightSquareColor = hsc; premoveHighlightColor = phc; appData.monoMode = mono; appData.allWhite = white; appData.upsideDown = flip; appData.useFont = fonts; appData.useBitmaps = bitmaps; if(grid != appData.overrideLineGap >= 0) appData.overrideLineGap = grid - 1; InitDrawingColors(); InitDrawingSizes(boardSize, 0); InvalidateRect(hwndMain, &boardRect, FALSE); } DeleteObject(pieces[0]); DeleteObject(pieces[1]); DeleteObject(pieces[2]); return TRUE; case IDCANCEL: DeleteObject(pieces[0]); DeleteObject(pieces[1]); DeleteObject(pieces[2]); EndDialog(hDlg, FALSE); return TRUE; case OPT_ChooseLightSquareColor: if (ChangeColor(hDlg, &lsc)) PaintColorBlock(hDlg, OPT_LightSquareColor, lsc); PaintSampleSquare(hDlg, OPT_SampleLightSquare, lsc, wpc, hsc, bpc, TRUE, mono, pieces); break; case OPT_ChooseDarkSquareColor: if (ChangeColor(hDlg, &dsc)) PaintColorBlock(hDlg, OPT_DarkSquareColor, dsc); PaintSampleSquare(hDlg, OPT_SampleDarkSquare, dsc, bpc, phc, wpc, FALSE, mono, pieces); break; case OPT_ChooseWhitePieceColor: if (ChangeColor(hDlg, &wpc)) PaintColorBlock(hDlg, OPT_WhitePieceColor, wpc); PaintSampleSquare(hDlg, OPT_SampleLightSquare, lsc, wpc, hsc, bpc, TRUE, mono, pieces); break; case OPT_ChooseBlackPieceColor: if (ChangeColor(hDlg, &bpc)) PaintColorBlock(hDlg, OPT_BlackPieceColor, bpc); PaintSampleSquare(hDlg, OPT_SampleDarkSquare, dsc, bpc, phc, wpc, FALSE, mono, pieces); break; case OPT_ChooseHighlightSquareColor: if (ChangeColor(hDlg, &hsc)) PaintColorBlock(hDlg, OPT_HighlightSquareColor, hsc); PaintSampleSquare(hDlg, OPT_SampleLightSquare, lsc, wpc, hsc, bpc, TRUE, mono, pieces); break; case OPT_ChoosePremoveHighlightColor: if (ChangeColor(hDlg, &phc)) PaintColorBlock(hDlg, OPT_PremoveHighlightColor, phc); PaintSampleSquare(hDlg, OPT_SampleDarkSquare, dsc, bpc, phc, wpc, FALSE, mono, pieces); break; case OPT_DefaultBoardColors: lsc = ParseColorName(LIGHT_SQUARE_COLOR); dsc = ParseColorName(DARK_SQUARE_COLOR); wpc = ParseColorName(WHITE_PIECE_COLOR); bpc = ParseColorName(BLACK_PIECE_COLOR); hsc = ParseColorName(HIGHLIGHT_SQUARE_COLOR); phc = ParseColorName(PREMOVE_HIGHLIGHT_COLOR); mono = FALSE; white= FALSE; flip = FALSE; CheckDlgButton(hDlg, OPT_Monochrome, FALSE); CheckDlgButton(hDlg, OPT_AllWhite, FALSE); CheckDlgButton(hDlg, OPT_UpsideDown, FALSE); PaintColorBlock(hDlg, OPT_LightSquareColor, lsc); PaintColorBlock(hDlg, OPT_DarkSquareColor, dsc); PaintColorBlock(hDlg, OPT_WhitePieceColor, wpc); PaintColorBlock(hDlg, OPT_BlackPieceColor, bpc); PaintColorBlock(hDlg, OPT_HighlightSquareColor, hsc); PaintColorBlock(hDlg, OPT_PremoveHighlightColor, phc); SetBoardOptionEnables(hDlg); PaintSampleSquare(hDlg, OPT_SampleLightSquare, lsc, wpc, hsc, bpc, TRUE, mono, pieces); PaintSampleSquare(hDlg, OPT_SampleDarkSquare, dsc, bpc, phc, wpc, FALSE, mono, pieces); break; case OPT_Monochrome: mono = !mono; SetBoardOptionEnables(hDlg); break; case OPT_AllWhite: white = !white; break; case OPT_UpsideDown: flip = !flip; break; case OPT_Bitmaps: bitmaps = !bitmaps; break; case OPT_PieceFont: fonts = !fonts; break; case OPT_Grid: grid = !grid; break; } break; } return FALSE; } VOID BoardOptionsPopup(HWND hwnd) { FARPROC lpProc = MakeProcInstance((FARPROC)BoardOptionsDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_BoardOptions), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } int radioButton[] = { OPT_VariantNormal, -1, // Loadable OPT_VariantWildcastle, OPT_VariantNocastle, OPT_VariantFRC, OPT_VariantBughouse, OPT_VariantCrazyhouse, OPT_VariantLosers, OPT_VariantSuicide, OPT_VariantGiveaway, OPT_VariantTwoKings, -1, //Kriegspiel OPT_VariantAtomic, OPT_Variant3Check, OPT_VariantShatranj, -1, -1, -1, -1, -1, -1, -1, -1, OPT_VariantShogi, -1, // Chu OPT_VariantCourier, OPT_VariantGothic, OPT_VariantCapablanca, OPT_VariantKnightmate, OPT_VariantFairy, OPT_VariantCylinder, OPT_VariantFalcon, OPT_VariantCRC, OPT_VariantBerolina, OPT_VariantJanus, OPT_VariantSuper, OPT_VariantGreat, -1, // Twilight, OPT_VariantMakruk, OPT_VariantSChess, OPT_VariantGrand, OPT_VariantSpartan, // Spartan OPT_VariantXiangqi, OPT_VariantASEAN, OPT_VariantLion, -2 // sentinel }; VariantClass VariantWhichRadio(HWND hDlg) { int i=0, j; *engineVariant = NULLCHAR; while((j = radioButton[i++]) != -2) { if(j == -1) continue; // no menu button if(IsDlgButtonChecked(hDlg, j) && (appData.noChessProgram || strstr(first.variants, VariantName(i-1)))) return (VariantClass) i-1; } for(i=0; i<15; i++) { // check for engine-defined variants if(IsDlgButtonChecked(hDlg, OPT_EngineVariant+i) ) { GetDlgItemText(hDlg, OPT_EngineVariant+i, engineVariant, MSG_SIZ); // remember name, so we can resolve it later return VariantUnknown; } } return gameInfo.variant; // If no button checked, keep old } void VariantShowRadio(HWND hDlg) { char c = *engineVariant, *v, *p; int i=0, j; CheckDlgButton(hDlg, radioButton[gameInfo.variant], TRUE); *engineVariant = NULLCHAR; // [HGM] kludge to prevent VariantName will always return engineVariant while((j = radioButton[i++]) != -2) { if(j == -1) continue; // no menu button v = VariantName(i-1); p = strstr(first.variants, v); EnableWindow(GetDlgItem(hDlg, j), appData.noChessProgram || p && (!*v || strlen(v) == strlen(p) || p[strlen(v)] == ',')); } *engineVariant = c; for(i=0; i<15; i++) { // initialize engine-defined variants char *v = EngineDefinedVariant(&first, i); // get name of #i if(v) { // there is such a variant EnableWindow(GetDlgItem(hDlg, OPT_EngineVariant+i), TRUE); // and enable the button SetDlgItemText(hDlg, OPT_EngineVariant+i, v); // put its name on button } else EnableWindow(GetDlgItem(hDlg, OPT_EngineVariant+i), FALSE); // no such variant; disable button } } LRESULT CALLBACK NewVariantDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static VariantClass v; static int n1_ok, n2_ok, n3_ok; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_NewVariant); /* Initialize the dialog items */ VariantShowRadio(hDlg); SetDlgItemInt( hDlg, IDC_Files, -1, TRUE ); SendDlgItemMessage( hDlg, IDC_Files, EM_SETSEL, 0, -1 ); SetDlgItemInt( hDlg, IDC_Ranks, -1, TRUE ); SendDlgItemMessage( hDlg, IDC_Ranks, EM_SETSEL, 0, -1 ); SetDlgItemInt( hDlg, IDC_Holdings, -1, TRUE ); SendDlgItemMessage( hDlg, IDC_Ranks, EM_SETSEL, 0, -1 ); n1_ok = n2_ok = n3_ok = FALSE; return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: /* * if we call EndDialog() after the call to ChangeBoardSize(), * then ChangeBoardSize() does not take effect, although the new * boardSize is saved. Go figure... */ EndDialog(hDlg, TRUE); v = VariantWhichRadio(hDlg); if(!appData.noChessProgram) { char *name = VariantName(v), buf[MSG_SIZ]; if (first.protocolVersion > 1 && StrStr(first.variants, name) == NULL) { /* [HGM] in protocol 2 we check if variant is suported by engine */ snprintf(buf, MSG_SIZ, _("Variant %s not supported by %s"), name, first.tidy); DisplayError(buf, 0); return TRUE; /* treat as _("Cancel") if first engine does not support it */ } else if (second.initDone && second.protocolVersion > 1 && StrStr(second.variants, name) == NULL) { snprintf(buf, MSG_SIZ, _("Warning: second engine (%s) does not support this!"), second.tidy); DisplayError(buf, 0); /* use of second engine is optional; only warn user */ } } gameInfo.variant = v; ASSIGN(appData.variant, VariantName(v)); appData.NrFiles = (int) GetDlgItemInt(hDlg, IDC_Files, NULL, FALSE ); appData.NrRanks = (int) GetDlgItemInt(hDlg, IDC_Ranks, NULL, FALSE ); appData.holdingsSize = (int) GetDlgItemInt(hDlg, IDC_Holdings, NULL, FALSE ); if(!n1_ok) appData.NrFiles = -1; if(!n2_ok) appData.NrRanks = -1; if(!n3_ok) appData.holdingsSize = -1; shuffleOpenings = FALSE; /* [HGM] shuffle: possible shuffle reset when we switch */ startedFromPositionFile = FALSE; /* [HGM] loadPos: no longer valid in new variant */ appData.pieceToCharTable = NULL; ASSIGN(appData.pieceNickNames, ""); ASSIGN(appData.colorNickNames, ""); ASSIGN(appData.men, ""); Reset(TRUE, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; case IDC_Ranks: case IDC_Files: case IDC_Holdings: if( HIWORD(wParam) == EN_CHANGE ) { GetDlgItemInt(hDlg, IDC_Files, &n1_ok, FALSE ); GetDlgItemInt(hDlg, IDC_Ranks, &n2_ok, FALSE ); GetDlgItemInt(hDlg, IDC_Holdings, &n3_ok, FALSE ); /*EnableWindow( GetDlgItem(hDlg, IDOK), n1_ok && n2_ok && n3_ok ? TRUE : FALSE );*/ } return TRUE; } break; } return FALSE; } VOID NewVariantPopup(HWND hwnd) { FARPROC lpProc = MakeProcInstance((FARPROC)NewVariantDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_NewVariant), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * ICS Options Dialog functions * \*---------------------------------------------------------------------------*/ BOOL APIENTRY MyCreateFont(HWND hwnd, MyFont *font) { CHOOSEFONT cf; HFONT hf; /* Initialize members of the CHOOSEFONT structure. */ cf.lStructSize = sizeof(CHOOSEFONT); cf.hwndOwner = hwnd; cf.hDC = (HDC)NULL; cf.lpLogFont = &font->lf; cf.iPointSize = 0; cf.Flags = CF_SCREENFONTS|/*CF_ANSIONLY|*/CF_INITTOLOGFONTSTRUCT; cf.rgbColors = RGB(0,0,0); cf.lCustData = 0L; cf.lpfnHook = (LPCFHOOKPROC)NULL; cf.lpTemplateName = (LPSTR)NULL; cf.hInstance = (HINSTANCE) NULL; cf.lpszStyle = (LPSTR)NULL; cf.nFontType = SCREEN_FONTTYPE; cf.nSizeMin = 0; cf.nSizeMax = 0; /* Display the CHOOSEFONT common-dialog box. */ if (!ChooseFont(&cf)) { return FALSE; } /* Create a logical font based on the user's */ /* selection and return a handle identifying */ /* that font. */ hf = CreateFontIndirect(cf.lpLogFont); if (hf == NULL) { return FALSE; } font->hf = hf; font->mfp.pointSize = (float) (cf.iPointSize / 10.0); font->mfp.bold = (font->lf.lfWeight >= FW_BOLD); font->mfp.italic = font->lf.lfItalic; font->mfp.underline = font->lf.lfUnderline; font->mfp.strikeout = font->lf.lfStrikeOut; font->mfp.charset = font->lf.lfCharSet; safeStrCpy(font->mfp.faceName, font->lf.lfFaceName, sizeof(font->mfp.faceName)/sizeof(font->mfp.faceName[0]) ); return TRUE; } VOID UpdateSampleText(HWND hDlg, int id, MyColorizeAttribs *mca) { CHARFORMAT cf; cf.cbSize = sizeof(CHARFORMAT); cf.dwMask = CFM_COLOR|CFM_CHARSET|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT|CFM_FACE|CFM_SIZE; cf.crTextColor = mca->color; cf.dwEffects = mca->effects; safeStrCpy(cf.szFaceName, font[boardSize][CONSOLE_FONT]->mfp.faceName, sizeof(cf.szFaceName)/sizeof(cf.szFaceName[0]) ); /* * The 20.0 below is in fact documented. yHeight is expressed in twips. * A twip is 1/20 of a font's point size. See documentation of CHARFORMAT. * --msw */ cf.yHeight = (int)(font[boardSize][CONSOLE_FONT]->mfp.pointSize * 20.0 + 0.5); cf.bCharSet = DEFAULT_CHARSET; /* should be ignored anyway */ cf.bPitchAndFamily = DEFAULT_PITCH|FF_DONTCARE; SendDlgItemMessage(hDlg, id, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf); } LRESULT CALLBACK ColorizeTextDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static MyColorizeAttribs mca; static ColorClass cc; COLORREF background = (COLORREF)0; switch (message) { case WM_INITDIALOG: cc = (ColorClass)lParam; mca = colorizeAttribs[cc]; /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_Colorize); /* Initialize the dialog items */ CheckDlgButton(hDlg, OPT_Bold, (mca.effects & CFE_BOLD) != 0); CheckDlgButton(hDlg, OPT_Italic, (mca.effects & CFE_ITALIC) != 0); CheckDlgButton(hDlg, OPT_Underline, (mca.effects & CFE_UNDERLINE) != 0); CheckDlgButton(hDlg, OPT_Strikeout, (mca.effects & CFE_STRIKEOUT) != 0); /* get the current background color from the parent window */ SendMessage(GetWindow(hDlg, GW_OWNER),WM_COMMAND, (WPARAM)WM_USER_GetConsoleBackground, (LPARAM)&background); /* set the background color */ SendDlgItemMessage(hDlg, OPT_Sample, EM_SETBKGNDCOLOR, FALSE, background); SetDlgItemText(hDlg, OPT_Sample, T_(mca.name)); UpdateSampleText(hDlg, OPT_Sample, &mca); return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: /* Read changed options from the dialog box */ colorizeAttribs[cc] = mca; textAttribs[cc].color = mca.color; textAttribs[cc].effects = mca.effects; Colorize(currentColorClass, TRUE); if (cc == ColorNormal) { CHARFORMAT cf; cf.cbSize = sizeof(CHARFORMAT); cf.dwMask = CFM_COLOR; cf.crTextColor = mca.color; SendDlgItemMessage(hwndConsole, OPT_ConsoleInput, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf); } EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; case OPT_ChooseColor: ChangeColor(hDlg, &mca.color); UpdateSampleText(hDlg, OPT_Sample, &mca); return TRUE; default: mca.effects = (IsDlgButtonChecked(hDlg, OPT_Bold) ? CFE_BOLD : 0) | (IsDlgButtonChecked(hDlg, OPT_Italic) ? CFE_ITALIC : 0) | (IsDlgButtonChecked(hDlg, OPT_Underline) ? CFE_UNDERLINE : 0) | (IsDlgButtonChecked(hDlg, OPT_Strikeout) ? CFE_STRIKEOUT : 0); UpdateSampleText(hDlg, OPT_Sample, &mca); break; } break; } return FALSE; } VOID ColorizeTextPopup(HWND hwnd, ColorClass cc) { FARPROC lpProc; lpProc = MakeProcInstance((FARPROC)ColorizeTextDialog, hInst); DialogBoxParam(hInst, MAKEINTRESOURCE(DLG_Colorize), hwnd, (DLGPROC)lpProc, (LPARAM) cc); FreeProcInstance(lpProc); } VOID SetIcsOptionEnables(HWND hDlg) { #define ENABLE_DLG_ITEM(x,y) EnableWindow(GetDlgItem(hDlg,(x)), (y)) UINT state = IsDlgButtonChecked(hDlg, OPT_Premove); ENABLE_DLG_ITEM(OPT_PremoveWhite, state); ENABLE_DLG_ITEM(OPT_PremoveWhiteText, state); ENABLE_DLG_ITEM(OPT_PremoveBlack, state); ENABLE_DLG_ITEM(OPT_PremoveBlackText, state); ENABLE_DLG_ITEM(OPT_IcsAlarmTime, IsDlgButtonChecked(hDlg, OPT_IcsAlarm)); #undef ENABLE_DLG_ITEM } LRESULT CALLBACK IcsOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MSG_SIZ]; int number; int i; static COLORREF cbc; static MyColorizeAttribs *mca; COLORREF *colorref; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ mca = colorizeAttribs; for (i=0; i < NColorClasses - 1; i++) { mca[i].color = textAttribs[i].color; mca[i].effects = textAttribs[i].effects; } cbc = consoleBackgroundColor; /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_IcsOptions); /* Initialize the dialog items */ #define CHECK_BOX(x,y) CheckDlgButton(hDlg, (x), (BOOL)(y)) CHECK_BOX(OPT_AutoKibitz, appData.autoKibitz); CHECK_BOX(OPT_AutoComment, appData.autoComment); CHECK_BOX(OPT_AutoObserve, appData.autoObserve); CHECK_BOX(OPT_AutoCreate, appData.autoCreateLogon); CHECK_BOX(OPT_GetMoveList, appData.getMoveList); CHECK_BOX(OPT_LocalLineEditing, appData.localLineEditing); CHECK_BOX(OPT_QuietPlay, appData.quietPlay); CHECK_BOX(OPT_SeekGraph, appData.seekGraph); CHECK_BOX(OPT_AutoRefresh, appData.autoRefresh); CHECK_BOX(OPT_BgObserve, appData.bgObserve); CHECK_BOX(OPT_DualBoard, appData.dualBoard); CHECK_BOX(OPT_SmartMove, appData.oneClick); CHECK_BOX(OPT_Premove, appData.premove); CHECK_BOX(OPT_PremoveWhite, appData.premoveWhite); CHECK_BOX(OPT_PremoveBlack, appData.premoveBlack); CHECK_BOX(OPT_IcsAlarm, appData.icsAlarm); CHECK_BOX(OPT_DontColorize, !appData.colorize); #undef CHECK_BOX snprintf(buf, MSG_SIZ, "%d", appData.icsAlarmTime / 1000); SetDlgItemText(hDlg, OPT_IcsAlarmTime, buf); SetDlgItemText(hDlg, OPT_PremoveWhiteText, appData.premoveWhiteText); SetDlgItemText(hDlg, OPT_PremoveBlackText, appData.premoveBlackText); SetDlgItemText(hDlg, OPT_StartupChatBoxes, appData.chatBoxes); SendDlgItemMessage(hDlg, OPT_SampleShout, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleSShout, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleChannel1, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleChannel, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleKibitz, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleTell, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleChallenge, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleRequest, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleSeek, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleNormal, EM_SETBKGNDCOLOR, 0, cbc); SetDlgItemText(hDlg, OPT_SampleShout, T_(mca[ColorShout].name)); SetDlgItemText(hDlg, OPT_SampleSShout, T_(mca[ColorSShout].name)); SetDlgItemText(hDlg, OPT_SampleChannel1, T_(mca[ColorChannel1].name)); SetDlgItemText(hDlg, OPT_SampleChannel, T_(mca[ColorChannel].name)); SetDlgItemText(hDlg, OPT_SampleKibitz, T_(mca[ColorKibitz].name)); SetDlgItemText(hDlg, OPT_SampleTell, T_(mca[ColorTell].name)); SetDlgItemText(hDlg, OPT_SampleChallenge, T_(mca[ColorChallenge].name)); SetDlgItemText(hDlg, OPT_SampleRequest, T_(mca[ColorRequest].name)); SetDlgItemText(hDlg, OPT_SampleSeek, T_(mca[ColorSeek].name)); SetDlgItemText(hDlg, OPT_SampleNormal, T_(mca[ColorNormal].name)); UpdateSampleText(hDlg, OPT_SampleShout, &mca[ColorShout]); UpdateSampleText(hDlg, OPT_SampleSShout, &mca[ColorSShout]); UpdateSampleText(hDlg, OPT_SampleChannel1, &mca[ColorChannel1]); UpdateSampleText(hDlg, OPT_SampleChannel, &mca[ColorChannel]); UpdateSampleText(hDlg, OPT_SampleKibitz, &mca[ColorKibitz]); UpdateSampleText(hDlg, OPT_SampleTell, &mca[ColorTell]); UpdateSampleText(hDlg, OPT_SampleChallenge, &mca[ColorChallenge]); UpdateSampleText(hDlg, OPT_SampleRequest, &mca[ColorRequest]); UpdateSampleText(hDlg, OPT_SampleSeek, &mca[ColorSeek]); UpdateSampleText(hDlg, OPT_SampleNormal, &mca[ColorNormal]); SetIcsOptionEnables(hDlg); return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case WM_USER_GetConsoleBackground: /* the ColorizeTextDialog needs the current background color */ colorref = (COLORREF *)lParam; *colorref = cbc; return FALSE; case IDOK: /* Read changed options from the dialog box */ GetDlgItemText(hDlg, OPT_IcsAlarmTime, buf, MSG_SIZ); if (sscanf(buf, "%d", &number) != 1 || (number < 0)){ MessageBox(hDlg, _("Invalid ICS Alarm Time"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return FALSE; } #define IS_CHECKED(x) (Boolean)IsDlgButtonChecked(hDlg, (x)) appData.icsAlarm = IS_CHECKED(OPT_IcsAlarm); appData.premove = IS_CHECKED(OPT_Premove); appData.premoveWhite = IS_CHECKED(OPT_PremoveWhite); appData.premoveBlack = IS_CHECKED(OPT_PremoveBlack); appData.autoKibitz = IS_CHECKED(OPT_AutoKibitz); appData.autoComment = IS_CHECKED(OPT_AutoComment); appData.autoObserve = IS_CHECKED(OPT_AutoObserve); appData.autoCreateLogon = IS_CHECKED(OPT_AutoCreate); appData.getMoveList = IS_CHECKED(OPT_GetMoveList); appData.localLineEditing = IS_CHECKED(OPT_LocalLineEditing); appData.quietPlay = IS_CHECKED(OPT_QuietPlay); appData.seekGraph = IS_CHECKED(OPT_SeekGraph); appData.autoRefresh = IS_CHECKED(OPT_AutoRefresh); appData.bgObserve = IS_CHECKED(OPT_BgObserve); appData.dualBoard = IS_CHECKED(OPT_DualBoard); appData.oneClick = IS_CHECKED(OPT_SmartMove); #undef IS_CHECKED appData.icsAlarmTime = number * 1000; GetDlgItemText(hDlg, OPT_PremoveWhiteText, appData.premoveWhiteText, 5); GetDlgItemText(hDlg, OPT_PremoveBlackText, appData.premoveBlackText, 5); GetDlgItemText(hDlg, OPT_StartupChatBoxes, buf, sizeof(buf)); buf[sizeof(buf)-1] = NULLCHAR; appData.chatBoxes = StrSave(buf); // memory leak if (appData.localLineEditing) { DontEcho(); EchoOn(); } else { DoEcho(); EchoOff(); } appData.colorize = (Boolean)!IsDlgButtonChecked(hDlg, OPT_DontColorize); ChangedConsoleFont(); if (!appData.colorize) { CHARFORMAT cf; COLORREF background = ParseColorName(COLOR_BKGD); /* SetDefaultTextAttribs(); Colorize(currentColorClass); */ cf.cbSize = sizeof(CHARFORMAT); cf.dwMask = CFM_COLOR; cf.crTextColor = ParseColorName(COLOR_NORMAL); SendDlgItemMessage(hwndConsole, OPT_ConsoleInput, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf); SendDlgItemMessage(hwndConsole, OPT_ConsoleText, EM_SETBKGNDCOLOR, FALSE, background); SendDlgItemMessage(hwndConsole, OPT_ConsoleInput, EM_SETBKGNDCOLOR, FALSE, background); } if (cbc != consoleBackgroundColor) { consoleBackgroundColor = cbc; if (appData.colorize) { SendDlgItemMessage(hwndConsole, OPT_ConsoleText, EM_SETBKGNDCOLOR, FALSE, consoleBackgroundColor); SendDlgItemMessage(hwndConsole, OPT_ConsoleInput, EM_SETBKGNDCOLOR, FALSE, consoleBackgroundColor); } } for (i=0; i < NColorClasses - 1; i++) { textAttribs[i].color = mca[i].color; textAttribs[i].effects = mca[i].effects; } EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; case OPT_ChooseShoutColor: ColorizeTextPopup(hDlg, ColorShout); UpdateSampleText(hDlg, OPT_SampleShout, &mca[ColorShout]); break; case OPT_ChooseSShoutColor: ColorizeTextPopup(hDlg, ColorSShout); UpdateSampleText(hDlg, OPT_SampleSShout, &mca[ColorSShout]); break; case OPT_ChooseChannel1Color: ColorizeTextPopup(hDlg, ColorChannel1); UpdateSampleText(hDlg, OPT_SampleChannel1, &colorizeAttribs[ColorChannel1]); break; case OPT_ChooseChannelColor: ColorizeTextPopup(hDlg, ColorChannel); UpdateSampleText(hDlg, OPT_SampleChannel, &mca[ColorChannel]); break; case OPT_ChooseKibitzColor: ColorizeTextPopup(hDlg, ColorKibitz); UpdateSampleText(hDlg, OPT_SampleKibitz, &mca[ColorKibitz]); break; case OPT_ChooseTellColor: ColorizeTextPopup(hDlg, ColorTell); UpdateSampleText(hDlg, OPT_SampleTell, &mca[ColorTell]); break; case OPT_ChooseChallengeColor: ColorizeTextPopup(hDlg, ColorChallenge); UpdateSampleText(hDlg, OPT_SampleChallenge, &mca[ColorChallenge]); break; case OPT_ChooseRequestColor: ColorizeTextPopup(hDlg, ColorRequest); UpdateSampleText(hDlg, OPT_SampleRequest, &mca[ColorRequest]); break; case OPT_ChooseSeekColor: ColorizeTextPopup(hDlg, ColorSeek); UpdateSampleText(hDlg, OPT_SampleSeek, &mca[ColorSeek]); break; case OPT_ChooseNormalColor: ColorizeTextPopup(hDlg, ColorNormal); UpdateSampleText(hDlg, OPT_SampleNormal, &mca[ColorNormal]); break; case OPT_ChooseBackgroundColor: if (ChangeColor(hDlg, &cbc)) { SendDlgItemMessage(hDlg, OPT_SampleShout, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleSShout, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleChannel1, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleChannel, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleKibitz, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleTell, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleChallenge, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleRequest, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleSeek, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleNormal, EM_SETBKGNDCOLOR, 0, cbc); } break; case OPT_DefaultColors: for (i=0; i < NColorClasses - 1; i++) ParseAttribs(&mca[i].color, &mca[i].effects, defaultTextAttribs[i]); cbc = ParseColorName(COLOR_BKGD); SendDlgItemMessage(hDlg, OPT_SampleShout, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleSShout, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleChannel1, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleChannel, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleKibitz, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleTell, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleChallenge, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleRequest, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleSeek, EM_SETBKGNDCOLOR, 0, cbc); SendDlgItemMessage(hDlg, OPT_SampleNormal, EM_SETBKGNDCOLOR, 0, cbc); UpdateSampleText(hDlg, OPT_SampleShout, &mca[ColorShout]); UpdateSampleText(hDlg, OPT_SampleSShout, &mca[ColorSShout]); UpdateSampleText(hDlg, OPT_SampleChannel1, &mca[ColorChannel1]); UpdateSampleText(hDlg, OPT_SampleChannel, &mca[ColorChannel]); UpdateSampleText(hDlg, OPT_SampleKibitz, &mca[ColorKibitz]); UpdateSampleText(hDlg, OPT_SampleTell, &mca[ColorTell]); UpdateSampleText(hDlg, OPT_SampleChallenge, &mca[ColorChallenge]); UpdateSampleText(hDlg, OPT_SampleRequest, &mca[ColorRequest]); UpdateSampleText(hDlg, OPT_SampleSeek, &mca[ColorSeek]); UpdateSampleText(hDlg, OPT_SampleNormal, &mca[ColorNormal]); break; default: SetIcsOptionEnables(hDlg); break; } break; } return FALSE; } VOID IcsOptionsPopup(HWND hwnd) { FARPROC lpProc = MakeProcInstance((FARPROC)IcsOptionsDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_IcsOptions), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * Fonts Dialog functions * \*---------------------------------------------------------------------------*/ char *string; // sorry VOID SetSampleFontText(HWND hwnd, int id, const MyFont *mf) { char buf[MSG_SIZ]; HWND hControl; HDC hdc; CHARFORMAT cf; SIZE size; RECT rectClient, rectFormat; HFONT oldFont; POINT center; int len; len = snprintf(buf, MSG_SIZ, "%.0f pt. %s%s%s\n", mf->mfp.pointSize, mf->mfp.faceName, mf->mfp.bold ? " bold" : "", mf->mfp.italic ? " italic" : ""); if(id != OPT_SamplePieceFont) SetDlgItemText(hwnd, id, buf); else SetDlgItemText(hwnd, id, string); hControl = GetDlgItem(hwnd, id); hdc = GetDC(hControl); SetMapMode(hdc, MM_TEXT); /* 1 pixel == 1 logical unit */ oldFont = SelectObject(hdc, mf->hf); /* get number of logical units necessary to display font name */ GetTextExtentPoint32(hdc, buf, len, &size); /* calculate formatting rectangle in the rich edit control. * May be larger or smaller than the actual control. */ GetClientRect(hControl, &rectClient); center.x = (rectClient.left + rectClient.right) / 2; center.y = (rectClient.top + rectClient.bottom) / 2; rectFormat.top = center.y - (size.cy / 2) - 1; rectFormat.bottom = center.y + (size.cy / 2) + 1; rectFormat.left = center.x - (size.cx / 2) - 1; rectFormat.right = center.x + (size.cx / 2) + 1; cf.cbSize = sizeof(CHARFORMAT); cf.dwMask = CFM_FACE|CFM_SIZE|CFM_CHARSET|CFM_BOLD|CFM_ITALIC; cf.dwEffects = 0; if (mf->lf.lfWeight == FW_BOLD) cf.dwEffects |= CFE_BOLD; if (mf->lf.lfItalic) cf.dwEffects |= CFE_ITALIC; safeStrCpy(cf.szFaceName, mf->mfp.faceName, sizeof(cf.szFaceName)/sizeof(cf.szFaceName[0]) ); /* * yHeight is expressed in twips. A twip is 1/20 of a font's point * size. See documentation of CHARFORMAT. --msw */ cf.yHeight = (int)(mf->mfp.pointSize * 20.0 + 0.5); cf.bCharSet = mf->lf.lfCharSet; cf.bPitchAndFamily = mf->lf.lfPitchAndFamily; /* format the text in the rich edit control */ SendMessage(hControl, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) &cf); if(id != OPT_SamplePieceFont) SendMessage(hControl, EM_SETRECT, (WPARAM)0, (LPARAM) &rectFormat); /* clean up */ SelectObject(hdc, oldFont); ReleaseDC(hControl, hdc); } VOID CopyFont(MyFont *dest, const MyFont *src) { dest->mfp.pointSize = src->mfp.pointSize; dest->mfp.bold = src->mfp.bold; dest->mfp.italic = src->mfp.italic; dest->mfp.underline = src->mfp.underline; dest->mfp.strikeout = src->mfp.strikeout; dest->mfp.charset = src->mfp.charset; safeStrCpy(dest->mfp.faceName, src->mfp.faceName, sizeof(dest->mfp.faceName)/sizeof(dest->mfp.faceName[0]) ); CreateFontInMF(dest); } LRESULT CALLBACK FontOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static MyFont workFont[NUM_FONTS+1]; static BOOL firstPaint; static char pieceText[] = "ABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvwxyz"; int i; RECT rect; switch (message) { case WM_INITDIALOG: /* copy the current font settings into a working copy */ for (i=0; i < NUM_FONTS; i++) CopyFont(&workFont[i], font[boardSize][i]); strncpy(workFont[NUM_FONTS].mfp.faceName, appData.renderPiecesWithFont, sizeof(workFont[NUM_FONTS].mfp.faceName)); workFont[NUM_FONTS].mfp.pointSize = 16.; workFont[NUM_FONTS].mfp.charset = DEFAULT_CHARSET; Translate(hDlg, DLG_Fonts); if (!appData.icsActive) EnableWindow(GetDlgItem(hDlg, OPT_ChooseConsoleFont), FALSE); firstPaint = TRUE; /* see rant below */ /* If I don't call SetFocus(), the dialog won't respond to the keyboard * when first drawn. Why is this the only dialog that behaves this way? Is * is the WM_PAINT stuff below?? Sigh... */ SetFocus(GetDlgItem(hDlg, IDOK)); break; case WM_PAINT: /* This should not be necessary. However, if SetSampleFontText() is called * in response to WM_INITDIALOG, the strings are not properly centered in * the controls when the dialog first appears. I can't figure out why, so * this is the workaround. --msw */ if (firstPaint) { SetSampleFontText(hDlg, OPT_SampleClockFont, &workFont[CLOCK_FONT]); SetSampleFontText(hDlg, OPT_SampleMessageFont, &workFont[MESSAGE_FONT]); SetSampleFontText(hDlg, OPT_SampleCoordFont, &workFont[COORD_FONT]); SetSampleFontText(hDlg, OPT_SampleTagFont, &workFont[EDITTAGS_FONT]); SetSampleFontText(hDlg, OPT_SampleCommentsFont, &workFont[COMMENT_FONT]); SetSampleFontText(hDlg, OPT_SampleConsoleFont, &workFont[CONSOLE_FONT]); SetSampleFontText(hDlg, OPT_SampleMoveHistoryFont, &workFont[MOVEHISTORY_FONT]); SetSampleFontText(hDlg, OPT_SampleGameListFont, &workFont[GAMELIST_FONT]); string = appData.fontToPieceTable; SetSampleFontText(hDlg, OPT_SamplePieceFont, &workFont[NUM_FONTS]); firstPaint = FALSE; } break; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: /* again, it seems to avoid redraw problems if we call EndDialog first */ EndDialog(hDlg, FALSE); /* copy modified settings back to the fonts array */ for (i=0; i < NUM_FONTS; i++) CopyFont(font[boardSize][i], &workFont[i]); { // Make new piece-to-char table char buf[MSG_SIZ]; GetDlgItemText(hDlg, OPT_SamplePieceFont, buf, MSG_SIZ); ASSIGN(appData.fontToPieceTable, buf); } ASSIGN(appData.renderPiecesWithFont, workFont[NUM_FONTS].mfp.faceName); // piece font /* a sad necessity due to the original design of having a separate * console font, tags font, and comment font for each board size. IMHO * these fonts should not be dependent on the current board size. I'm * running out of time, so I am doing this hack rather than redesign the * data structure. Besides, I think if I redesigned the data structure, I * might break backwards compatibility with old winboard.ini files. * --msw */ for (i=0; i < NUM_SIZES; i++) { CopyFont(font[i][EDITTAGS_FONT], &workFont[EDITTAGS_FONT]); CopyFont(font[i][CONSOLE_FONT], &workFont[CONSOLE_FONT]); CopyFont(font[i][COMMENT_FONT], &workFont[COMMENT_FONT]); CopyFont(font[i][MOVEHISTORY_FONT], &workFont[MOVEHISTORY_FONT]); CopyFont(font[i][GAMELIST_FONT], &workFont[GAMELIST_FONT]); } /* end sad necessity */ InitDrawingSizes(boardSize, 0); InvalidateRect(hwndMain, NULL, TRUE); if (commentDialog) { SendDlgItemMessage(commentDialog, OPT_CommentText, WM_SETFONT, (WPARAM)font[boardSize][COMMENT_FONT]->hf, MAKELPARAM(TRUE, 0)); GetClientRect(GetDlgItem(commentDialog, OPT_CommentText), &rect); InvalidateRect(commentDialog, &rect, TRUE); } if (editTagsDialog) { SendDlgItemMessage(editTagsDialog, OPT_TagsText, WM_SETFONT, (WPARAM)font[boardSize][EDITTAGS_FONT]->hf, MAKELPARAM(TRUE, 0)); GetClientRect(GetDlgItem(editTagsDialog, OPT_TagsText), &rect); InvalidateRect(editTagsDialog, &rect, TRUE); } if( moveHistoryDialog != NULL ) { SendDlgItemMessage(moveHistoryDialog, IDC_MoveHistory, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0)); SendMessage( moveHistoryDialog, WM_INITDIALOG, 0, 0 ); // InvalidateRect(editTagsDialog, NULL, TRUE); // [HGM] this ws improperly cloned? } if( engineOutputDialog != NULL ) { SendDlgItemMessage(engineOutputDialog, IDC_EngineMemo1, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0)); SendDlgItemMessage(engineOutputDialog, IDC_EngineMemo2, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0)); } if (hwndConsole) { ChangedConsoleFont(); } for (i=0; idef, &workFont[i].mfp); CreateFontInMF(&workFont[i]); } SetSampleFontText(hDlg, OPT_SampleClockFont, &workFont[CLOCK_FONT]); SetSampleFontText(hDlg, OPT_SampleMessageFont, &workFont[MESSAGE_FONT]); SetSampleFontText(hDlg, OPT_SampleCoordFont, &workFont[COORD_FONT]); SetSampleFontText(hDlg, OPT_SampleTagFont, &workFont[EDITTAGS_FONT]); SetSampleFontText(hDlg, OPT_SampleCommentsFont, &workFont[COMMENT_FONT]); SetSampleFontText(hDlg, OPT_SampleConsoleFont, &workFont[CONSOLE_FONT]); SetSampleFontText(hDlg, OPT_SampleMoveHistoryFont, &workFont[MOVEHISTORY_FONT]); SetSampleFontText(hDlg, OPT_SampleGameListFont, &workFont[GAMELIST_FONT]); break; } } return FALSE; } VOID FontsOptionsPopup(HWND hwnd) { FARPROC lpProc = MakeProcInstance((FARPROC)FontOptionsDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_Fonts), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * Sounds Dialog functions * \*---------------------------------------------------------------------------*/ SoundComboData soundComboData[] = { {N_("Move"), NULL}, {N_("Bell"), NULL}, {N_("Roar"), NULL}, {N_("ICS Alarm"), NULL}, {N_("ICS Win"), NULL}, {N_("ICS Loss"), NULL}, {N_("ICS Draw"), NULL}, {N_("ICS Unfinished"), NULL}, {N_("Shout"), NULL}, {N_("SShout/CShout"), NULL}, {N_("Channel 1"), NULL}, {N_("Channel"), NULL}, {N_("Kibitz"), NULL}, {N_("Tell"), NULL}, {N_("Challenge"), NULL}, {N_("Request"), NULL}, {N_("Seek"), NULL}, {NULL, NULL}, }; void InitSoundComboData(SoundComboData *scd) { SoundClass sc; ColorClass cc; int index; /* copy current sound settings to combo array */ for ( sc = (SoundClass)0; sc < NSoundClasses; sc++) { scd[sc].name = strdup(sounds[sc].name); } for ( cc = (ColorClass)0; cc < NColorClasses - 2; cc++) { index = (int)cc + (int)NSoundClasses; scd[index].name = strdup(textAttribs[cc].sound.name); } } void ResetSoundComboData(SoundComboData *scd) { while (scd->label) { if (scd->name != NULL) { free (scd->name); scd->name = NULL; } scd++; } } void InitSoundCombo(HWND hwndCombo, SoundComboData *scd) { char buf[255]; DWORD err; DWORD cnt = 0; SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0); /* send the labels to the combo box */ while (scd->label) { err = SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) T_(scd->label)); if (err != cnt++) { snprintf(buf, MSG_SIZ, "InitSoundCombo(): err '%d', cnt '%d'\n", (int)err, (int)cnt); MessageBox(NULL, buf, NULL, MB_OK); } scd++; } SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) 0, (LPARAM) 0); } int SoundDialogWhichRadio(HWND hDlg) { if (IsDlgButtonChecked(hDlg, OPT_NoSound)) return OPT_NoSound; if (IsDlgButtonChecked(hDlg, OPT_DefaultBeep)) return OPT_DefaultBeep; if (IsDlgButtonChecked(hDlg, OPT_BuiltInSound)) return OPT_BuiltInSound; if (IsDlgButtonChecked(hDlg, OPT_WavFile)) return OPT_WavFile; return -1; } VOID SoundDialogSetEnables(HWND hDlg, int radio) { EnableWindow(GetDlgItem(hDlg, OPT_BuiltInSoundName), radio == OPT_BuiltInSound); EnableWindow(GetDlgItem(hDlg, OPT_WavFileName), radio == OPT_WavFile); EnableWindow(GetDlgItem(hDlg, OPT_BrowseSound), radio == OPT_WavFile); } char * SoundDialogGetName(HWND hDlg, int radio) { static char buf[MSG_SIZ], buf2[MSG_SIZ], buf3[MSG_SIZ]; char *dummy, *ret; switch (radio) { case OPT_NoSound: default: return ""; case OPT_DefaultBeep: return "$"; case OPT_BuiltInSound: buf[0] = '!'; GetDlgItemText(hDlg, OPT_BuiltInSoundName, buf + 1, sizeof(buf) - 1); return buf; case OPT_WavFile: GetDlgItemText(hDlg, OPT_WavFileName, buf, sizeof(buf)); GetCurrentDirectory(MSG_SIZ, buf3); SetCurrentDirectory(installDir); if (GetFullPathName(buf, MSG_SIZ, buf2, &dummy)) { ret = buf2; } else { ret = buf; } SetCurrentDirectory(buf3); return ret; } } void DisplaySelectedSound(HWND hDlg, HWND hCombo, const char *name) { int radio; /* * I think it's best to clear the combo and edit boxes. It looks stupid * to have a value from another sound event sitting there grayed out. */ SetDlgItemText(hDlg, OPT_WavFileName, ""); SendMessage(hCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0); if (appData.debugMode) fprintf(debugFP, "DisplaySelectedSound(,,'%s'):\n", name); switch (name[0]) { case NULLCHAR: radio = OPT_NoSound; break; case '$': if (name[1] == NULLCHAR) { radio = OPT_DefaultBeep; } else { radio = OPT_WavFile; SetDlgItemText(hDlg, OPT_WavFileName, name); } break; case '!': if (name[1] == NULLCHAR) { radio = OPT_NoSound; } else { radio = OPT_BuiltInSound; if (SendMessage(hCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) (name + 1)) == CB_ERR) { SendMessage(hCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0); SendMessage(hCombo, WM_SETTEXT, (WPARAM) 0, (LPARAM) (name + 1)); } } break; default: radio = OPT_WavFile; SetDlgItemText(hDlg, OPT_WavFileName, name); break; } SoundDialogSetEnables(hDlg, radio); CheckRadioButton(hDlg, OPT_NoSound, OPT_WavFile, radio); } char *builtInSoundNames[] = BUILT_IN_SOUND_NAMES; LRESULT CALLBACK SoundOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hSoundCombo; static DWORD index; static HWND hBISN; int radio; MySound tmp; FILE *f; char buf[MSG_SIZ]; char *newName; SoundClass sc; ColorClass cc; SoundComboData *scd; int oldMute; switch (message) { case WM_INITDIALOG: /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_Sound); /* Initialize the built-in sounds combo */ hBISN = GetDlgItem(hDlg, OPT_BuiltInSoundName); InitComboStrings(hBISN, builtInSoundNames); /* Initialize the sound events combo */ index = 0; InitSoundComboData(soundComboData); hSoundCombo = GetDlgItem(hDlg, CBO_Sounds); InitSoundCombo(hSoundCombo, soundComboData); /* update the dialog */ DisplaySelectedSound(hDlg, hBISN, soundComboData[index].name); return TRUE; case WM_COMMAND: /* message: received a command */ if (((HWND)lParam == hSoundCombo) && (HIWORD(wParam) == CBN_SELCHANGE)) { /* * the user has selected a new sound event. We must store the name for * the previously selected event, then retrieve the name for the * newly selected event and update the dialog. */ radio = SoundDialogWhichRadio(hDlg); newName = strdup(SoundDialogGetName(hDlg, radio)); if (strcmp(newName, soundComboData[index].name) != 0) { free(soundComboData[index].name); soundComboData[index].name = newName; } else { free(newName); newName = NULL; } /* now get the settings for the newly selected event */ index = SendMessage(hSoundCombo, CB_GETCURSEL, (WPARAM)0, (LPARAM)0); DisplaySelectedSound(hDlg, hBISN, soundComboData[index].name); return TRUE; } switch (LOWORD(wParam)) { case IDOK: /* * save the name for the currently selected sound event */ radio = SoundDialogWhichRadio(hDlg); newName = strdup(SoundDialogGetName(hDlg, radio)); if (strcmp(soundComboData[index].name, newName) != 0) { free(soundComboData[index].name); soundComboData[index].name = newName; } else { free(newName); newName = NULL; } /* save all the sound names that changed and load the sounds */ for ( sc = (SoundClass)0; sc < NSoundClasses; sc++) { if (strcmp(soundComboData[sc].name, sounds[sc].name) != 0) { free(sounds[sc].name); sounds[sc].name = strdup(soundComboData[sc].name); MyLoadSound(&sounds[sc]); } } for ( cc = (ColorClass)0; cc < NColorClasses - 2; cc++) { index = (int)cc + (int)NSoundClasses; if (strcmp(soundComboData[index].name, textAttribs[cc].sound.name) != 0) { free(textAttribs[cc].sound.name); textAttribs[cc].sound.name = strdup(soundComboData[index].name); MyLoadSound(&textAttribs[cc].sound); } } mute = FALSE; // [HGM] mute: switch sounds automatically on if we select one CheckMenuItem(GetMenu(hwndMain),IDM_MuteSounds,MF_BYCOMMAND|MF_UNCHECKED); ResetSoundComboData(soundComboData); EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: ResetSoundComboData(soundComboData); EndDialog(hDlg, FALSE); return TRUE; case OPT_DefaultSounds: /* can't use SetDefaultSounds() because we need to be able to "undo" if * user selects "Cancel" later on. So we do it the hard way here. */ scd = &soundComboData[0]; while (scd->label != NULL) { if (scd->name != NULL) free(scd->name); scd->name = strdup(""); scd++; } free(soundComboData[(int)SoundBell].name); soundComboData[(int)SoundBell].name = strdup(SOUND_BELL); DisplaySelectedSound(hDlg, hBISN, soundComboData[index].name); break; case OPT_PlaySound: radio = SoundDialogWhichRadio(hDlg); tmp.name = strdup(SoundDialogGetName(hDlg, radio)); tmp.data = NULL; MyLoadSound(&tmp); oldMute = mute; mute = FALSE; // [HGM] mute: always sound when user presses play, ignorig mute setting MyPlaySound(&tmp); mute = oldMute; if (tmp.data != NULL) FreeResource(tmp.data); // technically obsolete fn, but tmp.data is NOT malloc'd mem if (tmp.name != NULL) free(tmp.name); return TRUE; case OPT_BrowseSound: f = OpenFileDialog(hDlg, "rb", NULL, "wav", SOUND_FILT, _("Browse for Sound File"), NULL, NULL, buf); if (f != NULL) { fclose(f); SetDlgItemText(hDlg, OPT_WavFileName, buf); } return TRUE; default: radio = SoundDialogWhichRadio(hDlg); SoundDialogSetEnables(hDlg, radio); break; } break; } return FALSE; } VOID SoundOptionsPopup(HWND hwnd) { FARPROC lpProc; lpProc = MakeProcInstance((FARPROC)SoundOptionsDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_Sound), hwnd, (DLGPROC)lpProc); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * Comm Port dialog functions * \*---------------------------------------------------------------------------*/ #define FLOW_NONE 0 #define FLOW_XOFF 1 #define FLOW_CTS 2 #define FLOW_DSR 3 #define PORT_NONE ComboData cdPort[] = { {"None", PORT_NONE}, {"COM1", 1}, {"COM2", 2}, {"COM3", 3}, {"COM4", 4}, {NULL, 0} }; ComboData cdDataRate[] = { {"110", 110}, {"300", 300}, {"600", 600}, {"1200", 1200}, {"2400", 2400}, {"4800", 4800}, {"9600", 9600}, {"19200", 19200}, {"38400", 38400}, {NULL, 0} }; ComboData cdDataBits[] = { {"5", 5}, {"6", 6}, {"7", 7}, {"8", 8}, {NULL, 0} }; ComboData cdParity[] = { {"None", NOPARITY}, {"Odd", ODDPARITY}, {"Even", EVENPARITY}, {"Mark", MARKPARITY}, {"Space", SPACEPARITY}, {NULL, 0} }; ComboData cdStopBits[] = { {"1", ONESTOPBIT}, {"1.5", ONE5STOPBITS}, {"2", TWOSTOPBITS}, {NULL, 0} }; ComboData cdFlow[] = { {"None", FLOW_NONE}, {"Xoff/Xon", FLOW_XOFF}, {"CTS", FLOW_CTS}, {"DSR", FLOW_DSR}, {NULL, 0} }; VOID ParseCommSettings(char *arg, DCB *dcb) { int dataRate, count; char bits[MSG_SIZ], parity[MSG_SIZ], stopBits[MSG_SIZ], flow[MSG_SIZ]; ComboData *cd; count = sscanf(arg, "%d%*[, ]%[^, ]%*[, ]%[^, ]%*[, ]%[^, ]%*[, ]%[^, ]", &dataRate, bits, parity, stopBits, flow); if (count != 5) goto cant_parse; dcb->BaudRate = dataRate; cd = cdDataBits; while (cd->label != NULL) { if (StrCaseCmp(cd->label, bits) == 0) { dcb->ByteSize = cd->value; break; } cd++; } if (cd->label == NULL) goto cant_parse; cd = cdParity; while (cd->label != NULL) { if (StrCaseCmp(cd->label, parity) == 0) { dcb->Parity = cd->value; break; } cd++; } if (cd->label == NULL) goto cant_parse; cd = cdStopBits; while (cd->label != NULL) { if (StrCaseCmp(cd->label, stopBits) == 0) { dcb->StopBits = cd->value; break; } cd++; } cd = cdFlow; if (cd->label == NULL) goto cant_parse; while (cd->label != NULL) { if (StrCaseCmp(cd->label, flow) == 0) { switch (cd->value) { case FLOW_NONE: dcb->fOutX = FALSE; dcb->fOutxCtsFlow = FALSE; dcb->fOutxDsrFlow = FALSE; break; case FLOW_CTS: dcb->fOutX = FALSE; dcb->fOutxCtsFlow = TRUE; dcb->fOutxDsrFlow = FALSE; break; case FLOW_DSR: dcb->fOutX = FALSE; dcb->fOutxCtsFlow = FALSE; dcb->fOutxDsrFlow = TRUE; break; case FLOW_XOFF: dcb->fOutX = TRUE; dcb->fOutxCtsFlow = FALSE; dcb->fOutxDsrFlow = FALSE; break; } break; } cd++; } if (cd->label == NULL) goto cant_parse; return; cant_parse: ExitArgError(_("Can't parse com port settings"), arg, TRUE); } VOID PrintCommSettings(FILE *f, char *name, DCB *dcb) { char *flow = "??", *parity = "??", *stopBits = "??"; ComboData *cd; cd = cdParity; while (cd->label != NULL) { if (dcb->Parity == cd->value) { parity = cd->label; break; } cd++; } cd = cdStopBits; while (cd->label != NULL) { if (dcb->StopBits == cd->value) { stopBits = cd->label; break; } cd++; } if (dcb->fOutX) { flow = cdFlow[FLOW_XOFF].label; } else if (dcb->fOutxCtsFlow) { flow = cdFlow[FLOW_CTS].label; } else if (dcb->fOutxDsrFlow) { flow = cdFlow[FLOW_DSR].label; } else { flow = cdFlow[FLOW_NONE].label; } fprintf(f, "/%s=%d,%d,%s,%s,%s\n", name, (int)dcb->BaudRate, dcb->ByteSize, parity, stopBits, flow); } void InitCombo(HANDLE hwndCombo, ComboData *cd) { SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0); while (cd->label != NULL) { SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) cd->label); cd++; } } void SelectComboValue(HANDLE hwndCombo, ComboData *cd, unsigned value) { int i; i = 0; while (cd->label != NULL) { if (cd->value == value) { SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) i, (LPARAM) 0); return; } cd++; i++; } } LRESULT CALLBACK CommPortOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MSG_SIZ]; HANDLE hwndCombo; char *p; LRESULT index; unsigned value; int err; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow(hDlg, GW_OWNER)); Translate(hDlg, DLG_CommPort); /* Initialize the dialog items */ /* !! There should probably be some synchronization in accessing hCommPort and dcb. Or does modal nature of this dialog box do it for us? */ hwndCombo = GetDlgItem(hDlg, OPT_Port); InitCombo(hwndCombo, cdPort); p = strrchr(appData.icsCommPort, '\\'); if (p++ == NULL) p = appData.icsCommPort; if ((*p == '\0') || (SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) p) == CB_ERR)) { SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) "None"); } EnableWindow(hwndCombo, hCommPort == NULL); /*!! don't allow change for now*/ hwndCombo = GetDlgItem(hDlg, OPT_DataRate); InitCombo(hwndCombo, cdDataRate); snprintf(buf, MSG_SIZ, "%u", (int)dcb.BaudRate); if (SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) buf) == CB_ERR) { SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0); SendMessage(hwndCombo, WM_SETTEXT, (WPARAM) 0, (LPARAM) buf); } hwndCombo = GetDlgItem(hDlg, OPT_Bits); InitCombo(hwndCombo, cdDataBits); SelectComboValue(hwndCombo, cdDataBits, dcb.ByteSize); hwndCombo = GetDlgItem(hDlg, OPT_Parity); InitCombo(hwndCombo, cdParity); SelectComboValue(hwndCombo, cdParity, dcb.Parity); hwndCombo = GetDlgItem(hDlg, OPT_StopBits); InitCombo(hwndCombo, cdStopBits); SelectComboValue(hwndCombo, cdStopBits, dcb.StopBits); hwndCombo = GetDlgItem(hDlg, OPT_Flow); InitCombo(hwndCombo, cdFlow); if (dcb.fOutX) { SelectComboValue(hwndCombo, cdFlow, FLOW_XOFF); } else if (dcb.fOutxCtsFlow) { SelectComboValue(hwndCombo, cdFlow, FLOW_CTS); } else if (dcb.fOutxDsrFlow) { SelectComboValue(hwndCombo, cdFlow, FLOW_DSR); } else { SelectComboValue(hwndCombo, cdFlow, FLOW_NONE); } return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: /* Read changed options from the dialog box */ #ifdef NOTDEF /* !! Currently we can't change comm ports in midstream */ hwndCombo = GetDlgItem(hDlg, OPT_Port); index = SendMessage(hwndCombo, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); if (index == PORT_NONE) { appData.icsCommPort = ""; if (hCommPort != NULL) { CloseHandle(hCommPort); hCommPort = NULL; } EndDialog(hDlg, TRUE); return TRUE; } SendMessage(hwndCombo, WM_GETTEXT, (WPARAM) MSG_SIZ, (LPARAM) buf); appData.icsCommPort = strdup(buf); if (hCommPort != NULL) { CloseHandle(hCommPort); hCommPort = NULL; } /* now what?? can't really do this; have to fix up the ChildProc and InputSource records for the comm port that we gave to the back end. */ #endif /*NOTDEF*/ hwndCombo = GetDlgItem(hDlg, OPT_DataRate); SendMessage(hwndCombo, WM_GETTEXT, (WPARAM) MSG_SIZ, (LPARAM) buf); if (sscanf(buf, "%u", &value) != 1) { MessageBox(hDlg, _("Invalid data rate"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return TRUE; } dcb.BaudRate = value; hwndCombo = GetDlgItem(hDlg, OPT_Bits); index = SendMessage(hwndCombo, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); dcb.ByteSize = cdDataBits[index].value; hwndCombo = GetDlgItem(hDlg, OPT_Parity); index = SendMessage(hwndCombo, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); dcb.Parity = cdParity[index].value; hwndCombo = GetDlgItem(hDlg, OPT_StopBits); index = SendMessage(hwndCombo, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); dcb.StopBits = cdStopBits[index].value; hwndCombo = GetDlgItem(hDlg, OPT_Flow); index = SendMessage(hwndCombo, CB_GETCURSEL, (WPARAM) 0, (LPARAM) 0); switch (cdFlow[index].value) { case FLOW_NONE: dcb.fOutX = FALSE; dcb.fOutxCtsFlow = FALSE; dcb.fOutxDsrFlow = FALSE; break; case FLOW_CTS: dcb.fOutX = FALSE; dcb.fOutxCtsFlow = TRUE; dcb.fOutxDsrFlow = FALSE; break; case FLOW_DSR: dcb.fOutX = FALSE; dcb.fOutxCtsFlow = FALSE; dcb.fOutxDsrFlow = TRUE; break; case FLOW_XOFF: dcb.fOutX = TRUE; dcb.fOutxCtsFlow = FALSE; dcb.fOutxDsrFlow = FALSE; break; } if (!SetCommState(hCommPort, (LPDCB) &dcb)) { err = GetLastError(); switch(MessageBox(hDlg, "Failed to set comm port state;\r\ninvalid options?", _("Option Error"), MB_ABORTRETRYIGNORE|MB_ICONQUESTION)) { case IDABORT: DisplayFatalError(_("Failed to set comm port state"), err, 1); exit(1); /*is it ok to do this from here?*/ case IDRETRY: return TRUE; case IDIGNORE: EndDialog(hDlg, TRUE); return TRUE; } } EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: break; } break; } return FALSE; } VOID CommPortOptionsPopup(HWND hwnd) { FARPROC lpProc = MakeProcInstance((FARPROC)CommPortOptionsDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_CommPort), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * Load Options dialog functions * \*---------------------------------------------------------------------------*/ int LoadOptionsWhichRadio(HWND hDlg) { return (IsDlgButtonChecked(hDlg, OPT_Exact) ? 1 : (IsDlgButtonChecked(hDlg, OPT_Subset) ? 2 : (IsDlgButtonChecked(hDlg, OPT_Struct) ? 3 : (IsDlgButtonChecked(hDlg, OPT_Material) ? 4 : (IsDlgButtonChecked(hDlg, OPT_Range) ? 5 : (IsDlgButtonChecked(hDlg, OPT_Difference) ? 6 : -1)))))); } VOID SetLoadOptionEnables(HWND hDlg) { UINT state; state = IsDlgButtonChecked(hDlg, OPT_Autostep); EnableWindow(GetDlgItem(hDlg, OPT_ASTimeDelay), state); EnableWindow(GetDlgItem(hDlg, OPT_AStext1), state); } LRESULT CALLBACK LoadOptions(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MSG_SIZ]; float fnumber; int ok; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_LoadOptions); /* Initialize the dialog items */ if (appData.timeDelay >= 0.0) { CheckDlgButton(hDlg, OPT_Autostep, TRUE); snprintf(buf, MSG_SIZ, "%.2g", appData.timeDelay); SetDlgItemText(hDlg, OPT_ASTimeDelay, buf); } else { CheckDlgButton(hDlg, OPT_Autostep, FALSE); } SetLoadOptionEnables(hDlg); SetDlgItemInt(hDlg, OPT_elo1, appData.eloThreshold1, FALSE); SetDlgItemInt(hDlg, OPT_elo2, appData.eloThreshold2, FALSE); SetDlgItemInt(hDlg, OPT_date, appData.dateThreshold, FALSE); SetDlgItemInt(hDlg, OPT_Stretch, appData.stretch, FALSE); CheckDlgButton(hDlg, OPT_Reversed, appData.ignoreColors); CheckDlgButton(hDlg, OPT_Mirror, appData.findMirror); SetDlgItemText(hDlg, OPT_Counts, ""); switch (appData.searchMode) { case 1: CheckDlgButton(hDlg, OPT_Exact, TRUE); break; case 2: CheckDlgButton(hDlg, OPT_Subset, TRUE); break; case 3: CheckDlgButton(hDlg, OPT_Struct, TRUE); break; case 4: CheckDlgButton(hDlg, OPT_Material, TRUE); break; case 5: CheckDlgButton(hDlg, OPT_Range, TRUE); break; case 6: CheckDlgButton(hDlg, OPT_Difference, TRUE); break; } return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: /* Read changed options from the dialog box */ if (IsDlgButtonChecked(hDlg, OPT_Autostep)) { GetDlgItemText(hDlg, OPT_ASTimeDelay, buf, MSG_SIZ); if (sscanf(buf, "%f", &fnumber) != 1) { MessageBox(hDlg, _("Invalid load game step rate"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return FALSE; } appData.timeDelay = fnumber; } else { appData.timeDelay = (float) -1.0; } appData.eloThreshold1 = GetDlgItemInt(hDlg, OPT_elo1, &ok, FALSE); appData.eloThreshold2 = GetDlgItemInt(hDlg, OPT_elo2, &ok, FALSE); appData.dateThreshold = GetDlgItemInt(hDlg, OPT_date, &ok, FALSE); appData.stretch = GetDlgItemInt(hDlg, OPT_Stretch, &ok, FALSE); appData.searchMode = LoadOptionsWhichRadio(hDlg); appData.ignoreColors = IsDlgButtonChecked(hDlg, OPT_Reversed); appData.findMirror = IsDlgButtonChecked(hDlg, OPT_Mirror); GetDlgItemText(hDlg, OPT_Counts, buf, MSG_SIZ); appData.minPieces = appData.maxPieces = 0; sscanf(buf, "%d-%d", &appData.minPieces, &appData.maxPieces); if(appData.maxPieces < appData.minPieces) appData.maxPieces = appData.minPieces; EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: SetLoadOptionEnables(hDlg); break; } break; } return FALSE; } VOID LoadOptionsPopup(HWND hwnd) { FARPROC lpProc = MakeProcInstance((FARPROC)LoadOptions, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_LoadOptions), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * Save Options dialog functions * \*---------------------------------------------------------------------------*/ VOID SetSaveOptionEnables(HWND hDlg) { UINT state; state = IsDlgButtonChecked(hDlg, OPT_Autosave); EnableWindow(GetDlgItem(hDlg, OPT_AVPrompt), state); EnableWindow(GetDlgItem(hDlg, OPT_AVToFile), state); if (state && !IsDlgButtonChecked(hDlg, OPT_AVPrompt) && !IsDlgButtonChecked(hDlg, OPT_AVToFile)) { CheckRadioButton(hDlg, OPT_AVPrompt, OPT_AVToFile, OPT_AVPrompt); } state = state && IsDlgButtonChecked(hDlg, OPT_AVToFile); EnableWindow(GetDlgItem(hDlg, OPT_AVFilename), state); EnableWindow(GetDlgItem(hDlg, OPT_AVBrowse), state); } LRESULT CALLBACK SaveOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MSG_SIZ]; FILE *f; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_SaveOptions); /* Initialize the dialog items */ if (*appData.saveGameFile != NULLCHAR) { CheckDlgButton(hDlg, OPT_Autosave, (UINT) TRUE); CheckRadioButton(hDlg, OPT_AVPrompt, OPT_AVToFile, OPT_AVToFile); SetDlgItemText(hDlg, OPT_AVFilename, appData.saveGameFile); } else if (appData.autoSaveGames) { CheckDlgButton(hDlg, OPT_Autosave, (UINT) TRUE); CheckRadioButton(hDlg, OPT_AVPrompt, OPT_AVToFile, OPT_AVPrompt); } else { CheckDlgButton(hDlg, OPT_Autosave, (UINT) FALSE); } if (appData.oldSaveStyle) { CheckRadioButton(hDlg, OPT_PGN, OPT_Old, OPT_Old); } else { CheckRadioButton(hDlg, OPT_PGN, OPT_Old, OPT_PGN); } CheckDlgButton( hDlg, OPT_OutOfBookInfo, appData.saveOutOfBookInfo ); SetSaveOptionEnables(hDlg); return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: /* Read changed options from the dialog box */ if (IsDlgButtonChecked(hDlg, OPT_Autosave)) { appData.autoSaveGames = TRUE; if (IsDlgButtonChecked(hDlg, OPT_AVPrompt)) { ASSIGN(appData.saveGameFile, ""); // [HGM] make sure value is ALWAYS in allocated memory } else /*if (IsDlgButtonChecked(hDlg, OPT_AVToFile))*/ { GetDlgItemText(hDlg, OPT_AVFilename, buf, MSG_SIZ); if (*buf == NULLCHAR) { MessageBox(hDlg, _("Invalid save game file name"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return FALSE; } FREE(appData.saveGameFile); appData.saveGameFile = InterpretFileName(buf, homeDir); } } else { appData.autoSaveGames = FALSE; ASSIGN(appData.saveGameFile, ""); } appData.oldSaveStyle = IsDlgButtonChecked(hDlg, OPT_Old); appData.saveOutOfBookInfo = IsDlgButtonChecked( hDlg, OPT_OutOfBookInfo ); EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; case OPT_AVBrowse: f = OpenFileDialog(hDlg, "a", NULL, appData.oldSaveStyle ? "gam" : "pgn", GAME_FILT, _("Browse for Auto Save File"), NULL, NULL, buf); if (f != NULL) { fclose(f); SetDlgItemText(hDlg, OPT_AVFilename, buf); } break; default: SetSaveOptionEnables(hDlg); break; } break; } return FALSE; } VOID SaveOptionsPopup(HWND hwnd) { FARPROC lpProc = MakeProcInstance((FARPROC)SaveOptionsDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_SaveOptions), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * Time Control Options dialog functions * \*---------------------------------------------------------------------------*/ VOID SetTimeControlEnables(HWND hDlg) { UINT state; state = IsDlgButtonChecked(hDlg, OPT_TCUseMoves) + 2*IsDlgButtonChecked(hDlg, OPT_TCUseFixed); EnableWindow(GetDlgItem(hDlg, OPT_TCTime), state == 1); EnableWindow(GetDlgItem(hDlg, OPT_TCMoves), state == 1); EnableWindow(GetDlgItem(hDlg, OPT_TCtext1), state == 1); EnableWindow(GetDlgItem(hDlg, OPT_TCtext2), state == 1); EnableWindow(GetDlgItem(hDlg, OPT_TCTime2), !state); EnableWindow(GetDlgItem(hDlg, OPT_TCInc), !state); EnableWindow(GetDlgItem(hDlg, OPT_TCitext1), !state); EnableWindow(GetDlgItem(hDlg, OPT_TCitext2), !state); EnableWindow(GetDlgItem(hDlg, OPT_TCitext3), !state); EnableWindow(GetDlgItem(hDlg, OPT_TCFixed), state == 2); EnableWindow(GetDlgItem(hDlg, OPT_TCftext), state == 2); } LRESULT CALLBACK TimeControl(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MSG_SIZ], *tc; int mps, odds1, odds2, st; float increment; BOOL ok, ok2; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_TimeControl); /* Initialize the dialog items */ if (/*appData.clockMode &&*/ !appData.icsActive) { // [HGM] even if !clockMode, we could want to set it in tournament dialog if (searchTime) { CheckRadioButton(hDlg, OPT_TCUseMoves, OPT_TCUseFixed, OPT_TCUseFixed); SetDlgItemInt(hDlg, OPT_TCFixed, searchTime, FALSE); } else if (appData.timeIncrement == -1) { CheckRadioButton(hDlg, OPT_TCUseMoves, OPT_TCUseFixed, OPT_TCUseMoves); SetDlgItemText(hDlg, OPT_TCTime, appData.timeControl); SetDlgItemInt(hDlg, OPT_TCMoves, appData.movesPerSession, FALSE); SetDlgItemText(hDlg, OPT_TCTime2, ""); SetDlgItemText(hDlg, OPT_TCInc, ""); } else { int i = appData.timeIncrement; if(i == appData.timeIncrement) snprintf(buf, MSG_SIZ, "%d", i); else snprintf(buf, MSG_SIZ, "%4.2f", appData.timeIncrement); CheckRadioButton(hDlg, OPT_TCUseMoves, OPT_TCUseFixed, OPT_TCUseInc); SetDlgItemText(hDlg, OPT_TCTime, ""); SetDlgItemText(hDlg, OPT_TCMoves, ""); SetDlgItemText(hDlg, OPT_TCTime2, appData.timeControl); SetDlgItemText(hDlg, OPT_TCInc, buf); } SetDlgItemInt(hDlg, OPT_TCOdds1, 1, FALSE); SetDlgItemInt(hDlg, OPT_TCOdds2, 1, FALSE); SetTimeControlEnables(hDlg); } return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: mps = appData.movesPerSession; increment = appData.timeIncrement; tc = appData.timeControl; st = 0; /* Read changed options from the dialog box */ if (IsDlgButtonChecked(hDlg, OPT_TCUseFixed)) { st = GetDlgItemInt(hDlg, OPT_TCFixed, &ok, FALSE); if (!ok || st <= 0) { MessageBox(hDlg, _("Invalid max time per move"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return FALSE; } } else if (IsDlgButtonChecked(hDlg, OPT_TCUseMoves)) { increment = -1; mps = GetDlgItemInt(hDlg, OPT_TCMoves, &ok, FALSE); if (!ok || mps <= 0) { MessageBox(hDlg, _("Invalid moves per time control"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return FALSE; } GetDlgItemText(hDlg, OPT_TCTime, buf, MSG_SIZ); if (!ParseTimeControl(buf, increment, mps)) { MessageBox(hDlg, _("Invalid minutes per time control"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return FALSE; } tc = buf; } else { GetDlgItemText(hDlg, OPT_TCInc, buf, MSG_SIZ); ok = (sscanf(buf, "%f%c", &increment, buf) == 1); if (!ok || increment < 0) { MessageBox(hDlg, _("Invalid increment"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return FALSE; } GetDlgItemText(hDlg, OPT_TCTime2, buf, MSG_SIZ); if (!ParseTimeControl(buf, increment, mps)) { MessageBox(hDlg, _("Invalid initial time"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return FALSE; } tc = buf; } odds1 = GetDlgItemInt(hDlg, OPT_TCOdds1, &ok, FALSE); odds2 = GetDlgItemInt(hDlg, OPT_TCOdds2, &ok2, FALSE); if (!ok || !ok2 || odds1 <= 0 || odds2 <= 0) { MessageBox(hDlg, _("Invalid time-odds factor"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return FALSE; } searchTime = st; appData.timeControl = strdup(tc); appData.movesPerSession = mps; appData.timeIncrement = increment; appData.firstTimeOdds = first.timeOdds = odds1; appData.secondTimeOdds = second.timeOdds = odds2; Reset(TRUE, TRUE); EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: SetTimeControlEnables(hDlg); break; } break; } return FALSE; } VOID TimeControlOptionsPopup(HWND hwnd) { if (gameMode != BeginningOfGame) { DisplayError(_("Changing time control during a game is not implemented"), 0); } else { FARPROC lpProc = MakeProcInstance((FARPROC)TimeControl, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_TimeControl), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } } /*---------------------------------------------------------------------------*\ * * Engine Options Dialog functions * \*---------------------------------------------------------------------------*/ #define CHECK_BOX(x,y) CheckDlgButton(hDlg, (x), (BOOL)(y)) #define IS_CHECKED(x) (Boolean)IsDlgButtonChecked(hDlg, (x)) #define INT_ABS( n ) ((n) >= 0 ? (n) : -(n)) LRESULT CALLBACK EnginePlayOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_EnginePlayOptions); /* Initialize the dialog items */ CHECK_BOX(IDC_EpPeriodicUpdates, appData.periodicUpdates); CHECK_BOX(IDC_EpPonder, appData.ponderNextMove); CHECK_BOX(IDC_EpShowThinking, appData.showThinking); CHECK_BOX(IDC_EpHideThinkingHuman, appData.hideThinkingFromHuman); CHECK_BOX(IDC_TestClaims, appData.testClaims); CHECK_BOX(IDC_DetectMates, appData.checkMates); CHECK_BOX(IDC_MaterialDraws, appData.materialDraws); CHECK_BOX(IDC_TrivialDraws, appData.trivialDraws); CHECK_BOX(IDC_ScoreAbs1, appData.firstScoreIsAbsolute); CHECK_BOX(IDC_ScoreAbs2, appData.secondScoreIsAbsolute); SetDlgItemInt( hDlg, IDC_EpDrawMoveCount, appData.adjudicateDrawMoves, TRUE ); SendDlgItemMessage( hDlg, IDC_EpDrawMoveCount, EM_SETSEL, 0, -1 ); SetDlgItemInt( hDlg, IDC_EpAdjudicationThreshold, INT_ABS(appData.adjudicateLossThreshold), TRUE ); SendDlgItemMessage( hDlg, IDC_EpAdjudicationThreshold, EM_SETSEL, 0, -1 ); SetDlgItemInt( hDlg, IDC_RuleMoves, appData.ruleMoves, TRUE ); SendDlgItemMessage( hDlg, IDC_RuleMoves, EM_SETSEL, 0, -1 ); SetDlgItemInt( hDlg, IDC_DrawRepeats, INT_ABS(appData.drawRepeats), TRUE ); SendDlgItemMessage( hDlg, IDC_DrawRepeats, EM_SETSEL, 0, -1 ); return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: /* Read changed options from the dialog box */ PeriodicUpdatesEvent( IS_CHECKED(IDC_EpPeriodicUpdates)); PonderNextMoveEvent( IS_CHECKED(IDC_EpPonder)); appData.hideThinkingFromHuman= IS_CHECKED(IDC_EpHideThinkingHuman); // [HGM] thinking: moved up appData.showThinking = IS_CHECKED(IDC_EpShowThinking); ShowThinkingEvent(); // [HGM] thinking: tests all options that need thinking output appData.testClaims = IS_CHECKED(IDC_TestClaims); appData.checkMates = IS_CHECKED(IDC_DetectMates); appData.materialDraws = IS_CHECKED(IDC_MaterialDraws); appData.trivialDraws = IS_CHECKED(IDC_TrivialDraws); appData.adjudicateDrawMoves = GetDlgItemInt(hDlg, IDC_EpDrawMoveCount, NULL, FALSE ); appData.adjudicateLossThreshold = - (int) GetDlgItemInt(hDlg, IDC_EpAdjudicationThreshold, NULL, FALSE ); appData.ruleMoves = GetDlgItemInt(hDlg, IDC_RuleMoves, NULL, FALSE ); appData.drawRepeats = (int) GetDlgItemInt(hDlg, IDC_DrawRepeats, NULL, FALSE ); first.scoreIsAbsolute = appData.firstScoreIsAbsolute = IS_CHECKED(IDC_ScoreAbs1); second.scoreIsAbsolute = appData.secondScoreIsAbsolute = IS_CHECKED(IDC_ScoreAbs2); EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; case IDC_EpDrawMoveCount: case IDC_EpAdjudicationThreshold: case IDC_DrawRepeats: case IDC_RuleMoves: if( HIWORD(wParam) == EN_CHANGE ) { int n1_ok; int n2_ok; int n3_ok; int n4_ok; GetDlgItemInt(hDlg, IDC_EpDrawMoveCount, &n1_ok, FALSE ); GetDlgItemInt(hDlg, IDC_EpAdjudicationThreshold, &n2_ok, FALSE ); GetDlgItemInt(hDlg, IDC_RuleMoves, &n3_ok, FALSE ); GetDlgItemInt(hDlg, IDC_DrawRepeats, &n4_ok, FALSE ); EnableWindow( GetDlgItem(hDlg, IDOK), n1_ok && n2_ok && n3_ok && n4_ok ? TRUE : FALSE ); } return TRUE; } break; } return FALSE; } VOID EnginePlayOptionsPopup(HWND hwnd) { FARPROC lpProc; lpProc = MakeProcInstance((FARPROC)EnginePlayOptionsDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_EnginePlayOptions), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * UCI Options Dialog functions * \*---------------------------------------------------------------------------*/ INT CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM pData) { switch(uMsg) { case BFFM_INITIALIZED: SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)pData); break; } return 0; } BOOL BrowseForFolder( const char * title, char * path ) { BOOL result = FALSE; BROWSEINFO bi; LPITEMIDLIST pidl; ZeroMemory( &bi, sizeof(bi) ); bi.lpszTitle = title == 0 ? _("Choose Folder") : title; bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpfn = BrowseCallbackProc; bi.lParam = (LPARAM) path; pidl = SHBrowseForFolder( &bi ); if( pidl != 0 ) { IMalloc * imalloc = 0; if( SHGetPathFromIDList( pidl, path ) ) { result = TRUE; } if( SUCCEEDED( SHGetMalloc ( &imalloc ) ) ) { imalloc->lpVtbl->Free(imalloc,pidl); imalloc->lpVtbl->Release(imalloc); } } return result; } int IsMultiFormat(char *s) { char *p = strchr(s, ':'); return p && p != s+1; } LRESULT CALLBACK UciOptionsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MAX_PATH]; int oldCores; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, DLG_OptionsUCI); /* Initialize the dialog items */ SetDlgItemText( hDlg, IDC_PolyglotDir, appData.polyglotDir ); SetDlgItemInt( hDlg, IDC_HashSize, appData.defaultHashSize, TRUE ); if(appData.defaultPathEGTB[0]) SetDlgItemText( hDlg, IDC_PathToEGTB, appData.defaultPathEGTB ); else SetDlgItemText( hDlg, IDC_PathToEGTB, appData.egtFormats ); SetDlgItemInt( hDlg, IDC_SizeOfEGTB, appData.defaultCacheSizeEGTB, TRUE ); CheckDlgButton( hDlg, IDC_UseBook, (BOOL) appData.usePolyglotBook ); SetDlgItemText( hDlg, IDC_BookFile, appData.polyglotBook ); // [HGM] smp: input field for nr of cores: SetDlgItemInt( hDlg, IDC_Cores, appData.smpCores, TRUE ); // [HGM] book: tick boxes for own book use CheckDlgButton( hDlg, IDC_OwnBook1, (BOOL) appData.firstHasOwnBookUCI ); CheckDlgButton( hDlg, IDC_OwnBook2, (BOOL) appData.secondHasOwnBookUCI ); SetDlgItemInt( hDlg, IDC_BookDep, appData.bookDepth, TRUE ); SetDlgItemInt( hDlg, IDC_BookStr, appData.bookStrength, TRUE ); SetDlgItemInt( hDlg, IDC_Games, appData.defaultMatchGames, TRUE ); SendDlgItemMessage( hDlg, IDC_PolyglotDir, EM_SETSEL, 0, -1 ); // [HGM] Yet another ponder duplicate CheckDlgButton( hDlg, OPT_PonderNextMove, (BOOL) appData.ponderNextMove ); return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: GetDlgItemText( hDlg, IDC_PolyglotDir, buf, sizeof(buf) ); appData.polyglotDir = strdup(buf); appData.defaultHashSize = GetDlgItemInt(hDlg, IDC_HashSize, NULL, FALSE ); appData.defaultCacheSizeEGTB = GetDlgItemInt(hDlg, IDC_SizeOfEGTB, NULL, FALSE ); GetDlgItemText( hDlg, IDC_PathToEGTB, buf, sizeof(buf) ); if(IsMultiFormat(buf)) { ASSIGN(appData.egtFormats, buf); } else { ASSIGN(appData.defaultPathEGTB, buf); } GetDlgItemText( hDlg, IDC_BookFile, buf, sizeof(buf) ); appData.polyglotBook = strdup(buf); appData.usePolyglotBook = (Boolean) IsDlgButtonChecked( hDlg, IDC_UseBook ); // [HGM] smp: get nr of cores and ponder: oldCores = appData.smpCores; appData.smpCores = GetDlgItemInt(hDlg, IDC_Cores, NULL, FALSE ); if(appData.smpCores != oldCores) NewSettingEvent(FALSE, &(first.maxCores), "cores", appData.smpCores); PonderNextMoveEvent((Boolean) IsDlgButtonChecked( hDlg, OPT_PonderNextMove )); // [HGM] book: read tick boxes for own book use appData.firstHasOwnBookUCI = (Boolean) IsDlgButtonChecked( hDlg, IDC_OwnBook1 ); appData.secondHasOwnBookUCI = (Boolean) IsDlgButtonChecked( hDlg, IDC_OwnBook2 ); appData.bookDepth = GetDlgItemInt(hDlg, IDC_BookDep, NULL, FALSE ); appData.bookStrength = GetDlgItemInt(hDlg, IDC_BookStr, NULL, FALSE ); appData.defaultMatchGames = GetDlgItemInt(hDlg, IDC_Games, NULL, FALSE ); if(gameMode == BeginningOfGame) Reset(TRUE, TRUE); EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; case IDC_BrowseForBook: { char filter[] = { 'A','l','l',' ','F','i','l','e','s', 0, '*','.','*', 0, 'B','I','N',' ','F','i','l','e','s', 0, '*','.','b','i','n', 0, 0 }; OPENFILENAME ofn; safeStrCpy( buf, "" , sizeof( buf)/sizeof( buf[0]) ); ZeroMemory( &ofn, sizeof(ofn) ); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hDlg; ofn.hInstance = hInst; ofn.lpstrFilter = filter; ofn.lpstrFile = buf; ofn.nMaxFile = sizeof(buf); ofn.lpstrTitle = _("Choose Book"); ofn.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; if( GetOpenFileName( &ofn ) ) { SetDlgItemText( hDlg, IDC_BookFile, buf ); } } return TRUE; case IDC_BrowseForPolyglotDir: if( BrowseForFolder( _("Choose Polyglot Directory"), buf ) ) { SetDlgItemText( hDlg, IDC_PolyglotDir, buf ); strcat( buf, "\\polyglot.exe" ); if( GetFileAttributes(buf) == 0xFFFFFFFF ) { MessageBox( hDlg, _("Polyglot was not found in the specified folder!"), "Warning", MB_OK | MB_ICONWARNING ); } } return TRUE; case IDC_BrowseForEGTB: if( BrowseForFolder( _("Choose EGTB Directory:"), buf ) ) { SetDlgItemText( hDlg, IDC_PathToEGTB, buf ); } return TRUE; case IDC_HashSize: case IDC_SizeOfEGTB: if( HIWORD(wParam) == EN_CHANGE ) { int n1_ok; int n2_ok; GetDlgItemInt(hDlg, IDC_HashSize, &n1_ok, FALSE ); GetDlgItemInt(hDlg, IDC_SizeOfEGTB, &n2_ok, FALSE ); EnableWindow( GetDlgItem(hDlg, IDOK), n1_ok && n2_ok ? TRUE : FALSE ); } return TRUE; } break; } return FALSE; } VOID UciOptionsPopup(HWND hwnd) { FARPROC lpProc; lpProc = MakeProcInstance((FARPROC)UciOptionsDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_OptionsUCI), hwnd, (DLGPROC) lpProc); FreeProcInstance(lpProc); } xboard-4.9.1/winboard/Winboard.dev0000644000175000001440000000777012717001265014007 00000000000000[Project] FileName=Winboard.dev Name=Winboard UnitCount=27 Type=0 Ver=1 ObjFiles= Includes= Libs= PrivateResource=Winboard_private.rc ResourceIncludes=.. MakeIncludes= Compiler=-I.._@@_-I._@@_-DNDEBUG_@@_ CppCompiler= Linker=-fpic_@@_-s_@@_-mwindows_@@_-lwsock32_@@_-lwinmm_@@_-lcomctl32_@@_ IsCpp=0 Icon= ExeOutput= ObjectOutput=./objs OverrideOutput=0 OverrideOutputName=Winboard.exe HostApplication= Folders= CommandLine= UseCustomMakefile=0 CustomMakefile=makefile.gcc IncludeVersionInfo=0 SupportXPThemes=0 CompilerSet=0 CompilerSettings=0000000000001000000100 [Unit1] FileName=wsockerr.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit2] FileName=..\parser.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit3] FileName=wclipbrd.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit4] FileName=wedittags.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit5] FileName=wevalgraph.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit6] FileName=wgamelist.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit7] FileName=whistory.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit8] FileName=winboard.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit9] FileName=wlayout.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit10] FileName=woptions.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit11] FileName=wsnap.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit12] FileName=..\uci.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit13] FileName=..\backend.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit14] FileName=..\book.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit15] FileName=..\gamelist.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit16] FileName=..\lists.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit17] FileName=..\moves.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit18] FileName=..\pgntags.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit19] FileName=winboard.rc CompileCpp=0 Folder=Winboard Compile=1 Link=0 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit20] FileName=..\zippy.c Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= CompileCpp=0 [Unit21] FileName=help.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit22] FileName=wsettings.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit23] FileName=wchat.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit24] FileName=wengineoutput.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit25] FileName=..\evalgraph.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit26] FileName=..\engineoutput.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit27] FileName=..\history.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= xboard-4.9.1/winboard/winboard.hpj0000644000175000001440000000056112717001265014041 00000000000000; This file is maintained by HCW. Do not modify this file directly. ; This help project requires hc 3.1 [OPTIONS] ERRORLOG=winboard.err LCID=0x409 0x0 0x0 ; English (United States) REPORT=Yes TITLE=WinBoard Help BMROOT=bitmaps HLP=.\winboard.hlp [FILES] winboard.rtf [WINDOWS] main="WinBoard Help",,60676,,(r12632256),f2 [CONFIG] BrowseButtons() xboard-4.9.1/winboard/wedittags.c0000644000175000001440000001755412717001265013702 00000000000000/* * wedittags.c -- EditTags window for WinBoard * * Copyright 1995, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include /* required for all Windows applications */ #include #include #include #include #include #include #include #include #include "common.h" #include "frontend.h" #include "backend.h" #include "winboard.h" #define _(s) T_(s) /* Module globals */ static char *editTagsText, **resPtr; static HWND memo; BOOL editTagsUp = FALSE; BOOL canEditTags = FALSE; /* Imports from winboard.c */ extern HINSTANCE hInst; extern HWND hwndMain; extern BoardSize boardSize; LRESULT CALLBACK EditTagsDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static HANDLE hwndText; static int sizeX, sizeY; int len, newSizeX, newSizeY; char *str; RECT rect; MINMAXINFO *mmi; int err; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Initialize the dialog items */ Translate(hDlg, DLG_EditTags); hwndText = memo = GetDlgItem(hDlg, OPT_TagsText); SendMessage(hwndText, WM_SETFONT, (WPARAM)font[boardSize][EDITTAGS_FONT]->hf, MAKELPARAM(FALSE, 0)); SetDlgItemText(hDlg, OPT_TagsText, editTagsText); EnableWindow(GetDlgItem(hDlg, OPT_TagsCancel), canEditTags); EnableWindow(GetDlgItem(hDlg, OPT_EditTags), !canEditTags || bookUp); SendMessage(hwndText, EM_SETREADONLY, !canEditTags, 0); if (bookUp) { SetDlgItemText(hDlg, OPT_EditTags, _("&Play Move")); SetWindowText(hDlg, _("Edit Book")); SetFocus(hwndText); } else if (canEditTags) { SetWindowText(hDlg, _("Edit Tags")); SetFocus(hwndText); } else { SetWindowText(hDlg, _("Tags")); SetFocus(GetDlgItem(hDlg, IDOK)); } if (!editTagsDialog) { editTagsDialog = hDlg; GetClientRect(hDlg, &rect); sizeX = rect.right; sizeY = rect.bottom; SendDlgItemMessage( hDlg, OPT_TagsText, EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS ); if (wpTags.x != CW_USEDEFAULT && wpTags.y != CW_USEDEFAULT && wpTags.width != CW_USEDEFAULT && wpTags.height != CW_USEDEFAULT) { WINDOWPLACEMENT wp; EnsureOnScreen(&wpTags.x, &wpTags.y, 0, 0); wp.length = sizeof(WINDOWPLACEMENT); wp.flags = 0; wp.showCmd = SW_SHOW; wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0; wp.rcNormalPosition.left = wpTags.x; wp.rcNormalPosition.right = wpTags.x + wpTags.width; wp.rcNormalPosition.top = wpTags.y; wp.rcNormalPosition.bottom = wpTags.y + wpTags.height; SetWindowPlacement(hDlg, &wp); GetClientRect(hDlg, &rect); newSizeX = rect.right; newSizeY = rect.bottom; ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY, newSizeX, newSizeY); sizeX = newSizeX; sizeY = newSizeY; } } return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: case OPT_TagsSave: if (canEditTags) { char *p, *q; /* Read changed options from the dialog box */ len = GetWindowTextLength(hwndText); str = (char *) malloc(len + 1); GetWindowText(hwndText, str, len + 1); p = q = str; while (*q) { if (*q == '\r') q++; else *p++ = *q++; } *p = NULLCHAR; err = 0; if(resPtr) *resPtr = strdup(str); else if(bookUp) SaveToBook(str), DisplayBook(currentMove); else err = ReplaceTags(str, &gameInfo); if (err) DisplayError(_("Error replacing tags."), err); free(str); } if(LOWORD(wParam) == IDOK) TagsPopDown(); return TRUE; case IDCANCEL: case OPT_TagsCancel: TagsPopDown(); return TRUE; case OPT_EditTags: if(bookUp) addToBookFlag = !addToBookFlag; else EditTagsEvent(); return TRUE; default: break; } break; case WM_NOTIFY: // [HGM] vari: cloned from whistory.c if( wParam == OPT_TagsText ) { MSGFILTER * lpMF = (MSGFILTER *) lParam; if( lpMF->msg == WM_RBUTTONDOWN ) { POINTL pt; LRESULT index; pt.x = LOWORD( lpMF->lParam ); pt.y = HIWORD( lpMF->lParam ); index = SendDlgItemMessage( hDlg, OPT_TagsText, EM_CHARFROMPOS, 0, (LPARAM) &pt ); hwndText = GetDlgItem(hDlg, OPT_TagsText); // cloned from above len = GetWindowTextLength(hwndText); str = (char *) malloc(len + 1); GetWindowText(hwndText, str, len + 1); if(bookUp) PlayBookMove(str, index); free(str); /* Zap the message for good: apparently, returning non-zero is not enough */ lpMF->msg = WM_USER; return TRUE; } } break; case WM_SIZE: newSizeX = LOWORD(lParam); newSizeY = HIWORD(lParam); ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY, newSizeX, newSizeY); sizeX = newSizeX; sizeY = newSizeY; break; case WM_GETMINMAXINFO: /* Prevent resizing window too small */ mmi = (MINMAXINFO *) lParam; mmi->ptMinTrackSize.x = 100; mmi->ptMinTrackSize.y = 100; break; } return FALSE; } VOID AddBookMove(char *text) { SendMessage( memo, EM_SETSEL, 999999, 999999 ); // [HGM] multivar: choose insertion point SendMessage( memo, EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) text ); } VOID TagsPopDown(void) { if (editTagsDialog) ShowWindow(editTagsDialog, SW_HIDE); CheckMenuItem(GetMenu(hwndMain), IDM_Tags, MF_UNCHECKED); editTagsUp = bookUp = addToBookFlag = FALSE; } VOID EitherTagsPopUp(char *tags, char *msg, BOOLEAN edit) { FARPROC lpProc; char *p, *q; if (msg == NULL) msg = ""; p = (char *) malloc(2 * (strlen(tags) + strlen(msg)) + 2); q = p; while (*tags) { if (*tags == '\n') *q++ = '\r'; *q++ = *tags++; } if (*msg != NULLCHAR) { *q++ = '\r'; *q++ = '\n'; while (*msg) { if (*msg == '\n') *q++ = '\r'; *q++ = *msg++; } } *q = NULLCHAR; if (editTagsText != NULL) free(editTagsText); editTagsText = p; canEditTags = edit; CheckMenuItem(GetMenu(hwndMain), IDM_Tags, MF_CHECKED); if (editTagsDialog) { SendMessage(editTagsDialog, WM_INITDIALOG, 0, 0); ShowWindow(editTagsDialog, SW_SHOW); if(bookUp) SetFocus(hwndMain); } else { lpProc = MakeProcInstance((FARPROC)EditTagsDialog, hInst); CreateDialog(hInst, MAKEINTRESOURCE(DLG_EditTags), hwndMain, (DLGPROC)lpProc); FreeProcInstance(lpProc); } editTagsUp = TRUE; } VOID TagsPopUp(char *tags, char *msg) { HWND hwnd = GetActiveWindow(); EitherTagsPopUp(tags, msg, FALSE); SetActiveWindow(hwnd); } VOID EditTagsPopUp(char *tags, char **dest) { resPtr = dest; EitherTagsPopUp(tags, "", TRUE); } VOID EditTagsProc() { if (editTagsUp && !bookUp) { TagsPopDown(); } else { EditTagsEvent(); } } xboard-4.9.1/winboard/wsettings.c0000644000175000001440000012321112717001265013722 00000000000000/* * woptions.h -- Options dialog box routines for WinBoard * * Copyright 2003, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ /* * Engine-settings dialog. The complexity come from an attempt to present the engine-defined options * in a nicey formatted layout. To this end we first run a back-end pre-formatter, which will distribute * the controls over two columns (the minimum required, as some are double width). It also takes care of * grouping options that start with the same word (mainly for "Polyglot ..." options). It assigns relative * suitability to break points between lines, and in the end decides if and where to break up the list * for display in multiple (2*N) columns. * The thus obtained list representing the topology of the layout is then passed to a front-end routine * that generates the actual dialog box from it. */ #include "config.h" #include #include #include #include #include "common.h" #include "frontend.h" #include "backend.h" #include "winboard.h" #include "backendz.h" #define _(s) T_(s) #define N_(s) s int layoutList[2*MAX_OPTIONS]; int checkList[2*MAX_OPTIONS]; int comboList[2*MAX_OPTIONS]; int buttonList[2*MAX_OPTIONS]; int boxList[2*MAX_OPTIONS]; int groupNameList[2*MAX_OPTIONS]; int breaks[MAX_OPTIONS]; int checks, combos, buttons, layout, groups; char title[MSG_SIZ]; char *engineName, *engineDir, *engineChoice, *engineLine, *nickName, *params; Boolean isUCI, hasBook, storeVariant, v1, addToList, useNick, isUCCI; extern Option installOptions[], matchOptions[]; char *engineList[MAXENGINES] = {""}, *engineMnemonic[MAXENGINES] = {""}; void (*okFunc)(); ChessProgramState *activeCps; Option *activeList; int InstallOK P((void)); typedef int ButtonCallback(HWND h); ButtonCallback *comboCallback; void PrintOpt(int i, int right, Option *optionList) { if(i<0) { if(!right) fprintf(debugFP, "%30s", ""); } else { Option opt = optionList[i]; switch(opt.type) { case Slider: case Spin: fprintf(debugFP, "%20.20s [ +/-]", opt.name); break; case TextBox: case FileName: case PathName: fprintf(debugFP, "%20.20s [______________________________________]", opt.name); break; case Label: fprintf(debugFP, "%41.41s", opt.name); break; case CheckBox: fprintf(debugFP, "[x] %-26.25s", opt.name); break; case ComboBox: fprintf(debugFP, "%20.20s [ COMBO ]", opt.name); break; case Button: case SaveButton: case ResetButton: fprintf(debugFP, "[ %26.26s ]", opt.name); case Message: default: break; } } fprintf(debugFP, right ? "\n" : " "); } void CreateOptionDialogTest(int *list, int nr, Option *optionList) { int line; for(line = 0; line < nr; line+=2) { PrintOpt(list[line+1], 0, optionList); PrintOpt(list[line], 1, optionList); } } void LayoutOptions(int firstOption, int endOption, char *groupName, Option *optionList) { int i, b = strlen(groupName), stop, prefix, right, nextOption, firstButton = buttons; Control lastType, nextType=Label; nextOption = firstOption; while(nextOption < endOption) { checks = combos = 0; stop = 0; lastType = Button; // kludge to make sure leading Spin will not be prefixed // first separate out buttons for later treatment, and collect consecutive checks and combos while(nextOption < endOption && !stop) { switch(nextType = optionList[nextOption].type) { case CheckBox: checkList[checks++] = nextOption; lastType = CheckBox; break; case ComboBox: comboList[combos++] = nextOption; lastType = ComboBox; break; case ResetButton: case SaveButton: case Button: buttonList[buttons++] = nextOption; lastType = Button; break; case TextBox: case ListBox: case FileName: case PathName: case Slider: case Label: case Spin: stop++; default: case Message: ; // cannot happen } nextOption++; } // We now must be at the end, or looking at a spin or textbox (in nextType) if(!stop) nextType = Button; // kudge to flush remaining checks and combos undistorted // Take a new line if a spin follows combos or checks, or when we encounter a textbox if((combos+checks || nextType == TextBox || nextType == ListBox || nextType == FileName || nextType == PathName || nextType == Label) && layout&1) { layoutList[layout++] = -1; } // The last check or combo before a spin will be put on the same line as that spin (prefix) // and will thus not be grouped with other checks and combos prefix = -1; if(nextType == Spin && lastType != Button) { if(lastType == CheckBox) prefix = checkList[--checks]; else if(lastType == ComboBox) prefix = comboList[--combos]; } // if a combo is followed by a textbox, it must stay at the end of the combo/checks list to appear // immediately above the textbox, so treat it as check. (A check would automatically be and remain there.) if((nextType == TextBox || nextType == ListBox || nextType == FileName || nextType == PathName) && lastType == ComboBox) checkList[checks++] = comboList[--combos]; // Now append the checks behind the (remaining) combos to treat them as one group for(i=0; i< checks; i++) comboList[combos++] = checkList[i]; // emit the consecutive checks and combos in two columns right = combos/2; // rounded down if odd! for(i=0; i0; i--) { // extra high text edit breaks[layout/2] = -1; layoutList[layout++] = -1; layoutList[layout++] = -1; } } else if(nextType == TextBox || nextType == FileName || nextType == PathName || nextType == Label) { // A textBox is double width, so must be left-adjusted, and the right column remains empty breaks[layout/2] = lastType == Button ? 0 : 100; layoutList[layout++] = -1; layoutList[layout++] = nextOption - 1; if(optionList[nextOption-1].min) { // extra high text edit: goes right of existing listbox layout -= 2; // remove layoutList[layout-2*optionList[nextOption-1].min-2] = nextOption - 1; } } else if(nextType == Spin) { // A spin will go in the next available position (right to left!). If it had to be prefixed with // a check or combo, this next position must be to the right, and the prefix goes left to it. layoutList[layout++] = nextOption - 1; if(prefix >= 0) layoutList[layout++] = prefix; } } // take a new line if needed if(layout&1) layoutList[layout++] = -1; // emit the buttons belonging in this group; loose buttons are saved for last, to appear at bottom of dialog if(b) { while(buttons > firstButton) layoutList[layout++] = buttonList[--buttons]; if(layout&1) layoutList[layout++] = -1; } } char * EndMatch(char *s1, char *s2) { char *p, *q; p = s1; while(*p) p++; q = s2; while(*q) q++; while(p > s1 && q > s2 && *p == *q) { p--; q--; } if(p[1] == 0) return NULL; return p+1; } void DesignOptionDialog(int nrOpt, Option *optionList) { int k=0, n=0; char buf[MSG_SIZ]; layout = 0; buttons = groups = 0; while(k < nrOpt) { // k steps through 'solitary' options // look if we hit a group of options having names that start with the same word int groupSize = 1, groupNameLength = 50; sscanf(optionList[k].name, "%s", buf); // get first word of option name while(k + groupSize < nrOpt && strstr(optionList[k+groupSize].name, buf) == optionList[k+groupSize].name) { int j; for(j=0; j 3) { // We found a group to terminates the current section LayoutOptions(n, k, "", optionList); // flush all solitary options appearing before the group groupNameList[groups] = groupNameLength; boxList[groups++] = layout; // group start in even entries LayoutOptions(k, k+groupSize, buf, optionList); // flush the group boxList[groups++] = layout; // group end in odd entries k = n = k + groupSize; } else k += groupSize; // small groups are grouped with the solitary options } if(n != k) LayoutOptions(n, k, "", optionList); // flush remaining solitary options // decide if and where we break into two column pairs // Emit buttons and add OK and cancel // for(k=0; k extern HINSTANCE hInst; typedef struct { DLGITEMTEMPLATE item; WORD code; WORD controlType; wchar_t d1, data; WORD creationData; } Item; struct { DLGTEMPLATE header; WORD menu; WORD winClass; wchar_t title[20]; WORD pointSize; wchar_t fontName[14]; Item control[MAX_OPTIONS]; } template = { { DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | DS_SETFONT, 0, 0, 0, 0, 295, 300 }, 0x0000, 0x0000, L"Engine #1 Settings ", 8, L"MS Sans Serif" }; char * AddCR(char *s) { char *p=s, *q; int n=0; while(p = strchr(p, '\n')) p++, n++; // count linefeeds p = q = malloc(strlen(s) + n + 1); while(*p++ = *s++) if(p[-1] == '\n') p[-1] = '\r', *p++ = '\n'; return q; } void SetOptionValues(HWND hDlg, ChessProgramState *cps, Option *optionList) // Put all current option values in controls, and write option names next to them { HANDLE hwndCombo; int i, k; char **choices, *name; for(i=0; i optionList[j].max) new = optionList[j].max; if(!cps) { *(int*)optionList[j].target = new; break; } changed = 2*(optionList[j].value != new); optionList[j].value = new; break; case TextBox: case FileName: case PathName: if(cps) len = MSG_SIZ - strlen(optionList[j].name) - 9, text = newText; else len = GetWindowTextLength(GetDlgItem(hDlg, 2001+2*i)) + 1, text = (char*) malloc(len); success = GetDlgItemText( hDlg, 2001+2*i, text, len ); if(!success) text[0] = NULLCHAR; // empty string can be valid input if(!cps) { char *p; p = (optionList[j].type != FileName ? strdup(text) : InterpretFileName(text, homeDir)); // all files relative to homeDir! FREE(*(char**)optionList[j].target); *(char**)optionList[j].target = p; free(text); text = p; while(*p++ = *text++) if(p[-1] == '\r') p--; // crush CR break; } changed = strcmp(optionList[j].textValue, newText) != 0; safeStrCpy(optionList[j].textValue, newText, MSG_SIZ - (optionList[j].textValue - optionList[j].name) ); break; case CheckBox: new = IsDlgButtonChecked( hDlg, 2000+2*i ); if(!cps) { *(Boolean*)optionList[j].target = new; break; } changed = 2*(optionList[j].value != new); optionList[j].value = new; break; case ComboBox: choices = (char**) optionList[j].textValue; success = GetDlgItemText( hDlg, 2001+2*i, newText, MSG_SIZ ); if(!success) break; new = -1; for(k=0; k 0) { if(*(char**)optionList[j].target) free(*(char**)optionList[j].target); *(char**)optionList[j].target = strdup(optionList[j].choice[new]); break; } changed = new >= 0 && (optionList[j].value != new); if(changed) optionList[j].value = new; break; case ListBox: if(optionList[j].textValue) *(int*) optionList[j].textValue = SendDlgItemMessage(hDlg, 2001+2*i, LB_GETCURSEL, 0, 0); case Button: default: break; // are treated instantly, so they have been sent already } if(changed == 2) snprintf(buf, MSG_SIZ, "option %s=%d\n", optionList[j].name, new); else if(changed == 1) snprintf(buf, MSG_SIZ, "option %s=%s\n", optionList[j].name, newText); if(changed) SendToProgram(buf, cps); } if(!cps && okFunc) return ((ButtonCallback*) okFunc)(0); return 1; } char *defaultExt[] = { NULL, "pgn", "fen", "exe", "trn", "bin", "log", "ini" }; HWND settingsDlg; LRESULT CALLBACK SettingsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MSG_SIZ]; int i, j, ext; switch( message ) { case WM_INITDIALOG: // CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER)); SetOptionValues(hDlg, activeCps, activeList); settingsDlg = hDlg; SetFocus(GetDlgItem(hDlg, IDCANCEL)); break; case WM_COMMAND: switch( LOWORD(wParam) ) { case IDOK: if(!GetOptionValues(hDlg, activeCps, activeList)) return FALSE; EndDialog( hDlg, 0 ); comboCallback = NULL; activeCps = NULL; settingsDlg = NULL; return TRUE; case IDCANCEL: EndDialog( hDlg, 1 ); comboCallback = NULL; activeCps = NULL; settingsDlg = NULL; return TRUE; default: // program-defined push buttons i = LOWORD(wParam); if( i>=2000 && i < 2000+2*(layout+buttons)) { j = layoutList[(i - 2000)/2]; if(j == -2) { char filter[] = "All files\0*.*\0Game files\0*.pgn;*.gam\0Position files\0*.fen;*.epd;*.pos\0" "EXE files\0*.exe;*.jar\0Tournament files (*.trn)\0*.trn\0" "BIN Files\0*.bin\0LOG Files\0*.log\0INI Files\0*.ini\0" "Image files\0*.bmp\0\0"; OPENFILENAME ofn; GetDlgItemText( hDlg, i+3, buf, MSG_SIZ ); ZeroMemory( &ofn, sizeof(ofn) ); ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hDlg; ofn.hInstance = hInst; ofn.lpstrFilter = filter; ofn.nFilterIndex = 1L + (ext = activeCps ? 0 : activeList[layoutList[(i-2000)/2+1]].max & 31); ofn.lpstrDefExt = defaultExt[ext]; ofn.lpstrFile = buf; ofn.nMaxFile = sizeof(buf); ofn.lpstrTitle = _("Choose File"); ofn.Flags = OFN_FILEMUSTEXIST | OFN_LONGNAMES | OFN_HIDEREADONLY; if( activeList[layoutList[(i-2000)/2+1]].max & 32 ? GetOpenFileName( &ofn ) : GetSaveFileName( &ofn ) ) { SetDlgItemText( hDlg, i+3, buf ); } } else if(j == -3) { GetDlgItemText( hDlg, i+3, buf, MSG_SIZ ); if( BrowseForFolder( _("Choose Folder:"), buf ) ) { SetDlgItemText( hDlg, i+3, buf ); } } if(j < 0) break; if(comboCallback && activeList[j].type == ComboBox && HIWORD(wParam) == CBN_SELCHANGE) { if(j > 5) break; // Yegh! Must solve problem with more than one combobox in dialog (*comboCallback)(hDlg); break; } else if(activeList[j].type == ListBox && HIWORD(wParam) == /*LBN_SELCHANGE*/ LBN_DBLCLK) { ((ButtonCallback *) activeList[j].target)(hDlg); break; } else if( activeList[j].type == SaveButton) GetOptionValues(hDlg, activeCps, activeList); else if( activeList[j].type != Button) break; else if( !activeCps ) { (*(ButtonCallback*) activeList[j].target)(hDlg); break; } snprintf(buf, MSG_SIZ, "option %s\n", activeList[j].name); SendToProgram(buf, activeCps); } break; } break; } return FALSE; } void AddControl(int x, int y, int w, int h, int type, int style, int n) { int i; i = template.header.cdit++; template.control[i].item.style = style; template.control[i].item.dwExtendedStyle = 0; template.control[i].item.x = x; template.control[i].item.y = y; template.control[i].item.cx = w; template.control[i].item.cy = h; template.control[i].item.id = 2000 + n; template.control[i].code = 0xFFFF; template.control[i].controlType = type; template.control[i].d1 = ' '; template.control[i].data = 0; template.control[i].creationData = 0; } void AddOption(int x, int y, Control type, int i) { int extra, num = ES_NUMBER; switch(type) { case Spin+100: num = 0; // needs text control for accepting negative numbers case Slider: case Spin: AddControl(x, y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i); AddControl(x+95, y, 50, 11, 0x0081, ES_AUTOHSCROLL | num | WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i+1); break; case TextBox: extra = 13*activeList[layoutList[i/2]].min; // when extra high, left-align and put description text above it AddControl(x+(extra?50:0), y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i); AddControl(x+(extra?50:95), y+(extra?13:0), extra?105:200, 11+(extra?extra-13:0), 0x0081, ES_AUTOHSCROLL | WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP | (extra ? ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL :0), i+1); break; case ListBox: AddControl(x, y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i); extra = 13*activeList[layoutList[i/2]].min; AddControl(x, y+13, 105, 11+extra-13, 0x0083, LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_BORDER | LBS_NOTIFY | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i+1); break; case Label: extra = activeList[layoutList[i/2]].value; AddControl(x+extra, y+1, 290-extra, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i); break; case FileName: case PathName: AddControl(x, y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i); AddControl(x+95, y, 180, 11, 0x0081, ES_AUTOHSCROLL | WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i+1); AddControl(x+275, y, 20, 12, 0x0080, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i-2); layoutList[i/2-1] = -2 - (type == PathName); break; case CheckBox: AddControl(x, y, 145, 11, 0x0080, BS_AUTOCHECKBOX | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i); break; case ComboBox: AddControl(x, y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i); AddControl(x+95, y-1, !activeCps && x<10 ? 120 : 50, 500, 0x0085, CBS_AUTOHSCROLL | CBS_DROPDOWN | WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_VSCROLL, i+1); break; case Button: case ResetButton: case SaveButton: AddControl(x-2, y, 65, 13, 0x0080, BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i); case Message: default: break; } } void CreateDialogTemplate(int *layoutList, int nr, Option *optionList) { int i, ii, j, x=1, y=0, maxY=0, buttonRows, breakPoint = 1000, k=0; template.header.cdit = 0; template.header.cx = 307; buttonRows = (buttons + 1 + 3)/4; // 4 per row, rounded up if(nr > 50) { breakPoint = (nr+2*buttonRows+1)/2 & ~1; template.header.cx = 625; } for(ii=0; ii>1)-2, 301, 13*(boxList[k+1]-boxList[k]>>1)+8, 0x0082, WS_VISIBLE | WS_CHILD | SS_BLACKFRAME, 2400); AddControl(x+60, y+13*(i>>1)-6, 10*groupNameList[k]/3, 10, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, 2*(ii+MAX_OPTIONS)); } j = layoutList[i]; if(j >= 0) { int neg = (optionList[j].type == Spin && optionList[j].min < 0 ? 100 : 0); // flags spin with negative range AddOption(x+155-150*(i&1), y+13*(i>>1)+5, optionList[j].type + neg, 2*i); // listboxes have the special power to adjust the width of the column they are in if(optionList[j].type == ListBox) x -= optionList[j].value, template.header.cx -= optionList[j].value; } if(k < groups && ii+1 == boxList[k+1]) { k += 2; y += 4; } if(ii+1 >= breakPoint && breaks[ii+1>>1] >= 0) { x += 318; maxY = y+13*(ii+1>>1)+5; y = -13*(ii+1>>1); breakPoint = 1000; } } // add butons at the bottom of dialog window y += 13*(nr>>1)+5; for(i=0; ioption; snprintf(title, MSG_SIZ, _("%s Engine Settings (%s)"), T_(cps->which), cps->tidy); DesignOptionDialog(cps->nrOptions, cps->option); CreateDialogTemplate(layoutList, layout, cps->option); DialogBoxIndirect( hInst, &template.header, hwnd, (DLGPROC)lpProc ); FreeProcInstance(lpProc); return; } void RefreshSettingsDialog (ChessProgramState *cps, int val) { int isUp = (settingsDlg != NULL); if(val == 1) { if(activeCps == cps && isUp) SetOptionValues(settingsDlg, cps, activeList); return; } if(settingsDlg) EndDialog(settingsDlg, 1); comboCallback = NULL; activeCps = NULL; settingsDlg = NULL; if(val == 3 || isUp) EngineOptionsPopup(hwndMain, cps); } int EnterGroup P((HWND hDlg)); static int engineNr, selected; int InstallOK() { if(selected >= 0) { ASSIGN(engineLine, engineList[selected]); } if(engineLine[0] == '#') { DisplayError(_("Select single engine from the group"), 0); return 0; } if(isUCCI) isUCI = 2; if(!engineNr) Load(&first, 0); else Load(&second, 1); return 1; } Option installOptions[] = { // { 0, 0, 0, NULL, (void*) &engineLine, (char*) engineMnemonic, engineList, ComboBox, N_("Select engine from list:") }, { 195, 14, 0, NULL, (void*) &EnterGroup, (char*) &selected, engineMnemonic, ListBox, N_("Select engine from list:") }, { 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("or specify one below:") }, { 0, 0, 0, NULL, (void*) &nickName, NULL, NULL, TextBox, N_("Nickname (optional):") }, { 0, 0, 0, NULL, (void*) &useNick, NULL, NULL, CheckBox, N_("Use nickname in PGN tag") }, { 0, 0, 32+3, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine (.exe or .jar):") }, { 0, 0, 0, NULL, (void*) ¶ms, NULL, NULL, TextBox, N_("command-line parameters:") }, { 0, 0, 0, NULL, (void*) &wbOptions, NULL, NULL, TextBox, N_("Special WinBoard options:") }, { 0, 0, 0, NULL, (void*) &engineDir, NULL, NULL, PathName, N_("directory:") }, { 95, 0, 0, NULL, NULL, NULL, NULL, Label, N_("(Directory will be derived from engine path when left empty)") }, { 0, 0, 0, NULL, (void*) &addToList, NULL, NULL, CheckBox, N_("Add this engine to the list") }, { 0, 0, 0, NULL, (void*) &hasBook, NULL, NULL, CheckBox, N_("Must not use GUI book") }, { 0, 0, 0, NULL, (void*) &storeVariant, NULL, NULL, CheckBox, N_("Force current variant with this engine") }, { 0, 0, 0, NULL, (void*) &isUCI, NULL, NULL, CheckBox, N_("UCI") }, { 0, 0, 0, NULL, (void*) &v1, NULL, NULL, CheckBox, N_("WB protocol v1 (skip waiting for features)") }, { 0, 0, 0, NULL, (void*) &isUCCI, NULL, NULL, CheckBox, N_("UCCI/USI/Arena960 (through /uxiAdapter)") }, { 0, 1, 0, NULL, (void*) &InstallOK, "", NULL, EndMark , "" } }; void GenericPopup(HWND hwnd, Option *optionList) { FARPROC lpProc = MakeProcInstance( (FARPROC) SettingsProc, hInst ); int n=0; while(optionList[n].type != EndMark) n++; activeCps = NULL; activeList = optionList; DesignOptionDialog(n, optionList); CreateDialogTemplate(layoutList, layout, optionList); DialogBoxIndirect( hInst, &template.header, hwnd, (DLGPROC)lpProc ); FreeProcInstance(lpProc); return; } int EnterGroup(HWND hDlg) { char buf[MSG_SIZ]; HANDLE hwndCombo = GetDlgItem(hDlg, 2001+2*1); int i = SendDlgItemMessage(hDlg, 2001+2*1, LB_GETCURSEL, 0, 0); if(i == 0) buf[0] = NULLCHAR; // back to top level else if(engineList[i][0] == '#') safeStrCpy(buf, engineList[i], MSG_SIZ); // group header, open group else { ASSIGN(engineLine, engineList[i]); if(isUCCI) isUCI = 2; if(!engineNr) Load(&first, 0); else Load(&second, 1); EndDialog( hDlg, 0 ); return 0; // normal line, select engine } installOptions[0].max = NamesToList(firstChessProgramNames, engineList, engineMnemonic, buf); // replace list by only the group contents SendMessage(hwndCombo, LB_RESETCONTENT, 0, 0); SendMessage(hwndCombo, LB_ADDSTRING, 0, (LPARAM) buf); for(i=1; i= 0) { ASSIGN(engineLine, engineList[selected]); } if(engineLine[0] == '#') { DisplayError(_("Select single theme from the group"), 0); return 0; } LoadTheme(); return 1; } Option themeOptions[] = { { 195, 14, 0, NULL, (void*) &PickTheme, (char*) &selected, engineMnemonic, ListBox, N_("Select theme from list:") }, { 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("or specify new theme below:") }, { 0, 0, 0, NULL, (void*) &nickName, NULL, NULL, TextBox, N_("Theme name:") }, { 0, 0, 0, NULL, (void*) &appData.useBitmaps, NULL, NULL, CheckBox, N_("Use board textures") }, { 0, 0, 32+0, NULL, (void*) &appData.liteBackTextureFile, NULL, NULL, FileName, N_("Light-square texture:") }, { 0, 0, 32+0, NULL, (void*) &appData.darkBackTextureFile, NULL, NULL, FileName, N_("Dark-square texture:") }, { 0, 0, 3, NULL, (void*) &appData.darkBackTextureMode, "", NULL, Spin, N_("Dark reorientation mode:") }, { 0, 0, 3, NULL, (void*) &appData.liteBackTextureMode, "", NULL, Spin, N_("Light reorientation mode:") }, { 0, 0, 0, NULL, (void*) &appData.useBorder, NULL, NULL, CheckBox, N_("Draw border around board") }, { 0, 0, 32+0, NULL, (void*) &appData.border, NULL, NULL, FileName, N_("Optional border bitmap:") }, { 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_(" Beware: a specified piece font will prevail over piece bitmaps") }, { 0, 0, 0, NULL, (void*) &appData.pieceDirectory, NULL, NULL, PathName, N_("Directory with piece bitmaps:") }, { 0, 0, 0, NULL, (void*) &appData.useFont, NULL, NULL, CheckBox, N_("Use piece font") }, { 0, 50, 150, NULL, (void*) &appData.fontPieceSize, "", NULL, Spin, N_("Font size (%):") }, { 0, 0, 0, NULL, (void*) &appData.renderPiecesWithFont, NULL, NULL, TextBox, N_("Font name:") }, { 0, 0, 0, NULL, (void*) &appData.fontToPieceTable, NULL, NULL, TextBox, N_("Font piece to char:") }, // { 0, 0, 0, NULL, (void*) &DeleteTheme, NULL, NULL, Button, N_("Up") }, // { 0, 0, 0, NULL, (void*) &DeleteTheme, NULL, NULL, Button, N_("Down") }, { 0, 0, 0, NULL, (void*) &DeleteTheme, NULL, NULL, Button, N_("Delete Theme") }, { 0, 1, 0, NULL, (void*) &ThemeOK, "", NULL, EndMark , "" } }; void DeleteTheme (HWND hDlg) { char *p, *q; int i, selected = SendDlgItemMessage(hDlg, 2001+2*1, LB_GETCURSEL, 0, 0); HANDLE hwndCombo = GetDlgItem(hDlg, 2001+2*1); if(selected < 0) return; if(p = strstr(appData.themeNames, engineList[selected])) { if(q = strchr(p, '\n')) strcpy(p, q+1); } themeOptions[0].max = NamesToList(appData.themeNames, engineList, engineMnemonic, ""); // replace list by only the group contents SendMessage(hwndCombo, LB_RESETCONTENT, 0, 0); SendMessage(hwndCombo, LB_ADDSTRING, 0, (LPARAM) ""); for(i=1; i(::?ϙ1c~@~x@~x@~@`??<???xboard-4.9.1/winboard/shogibitmaps/sb58o.bmp0000644000175000001440000000101612717001265015656 00000000000000BM>(::<|o~{y|s'OO?0??ϟ??xboard-4.9.1/winboard/shogibitmaps/sa58o.bmp0000644000175000001440000000101612717001265015655 00000000000000BM>(::????~?y9ߘy?ϟO Cq??????????xboard-4.9.1/winboard/shogibitmaps/README0000644000175000001440000000012712717001265015100 00000000000000These bitmaps are distributed under the GNU GENERAL PUBLIC LICENSE coming with xboard. xboard-4.9.1/winboard/shogibitmaps/largeking.bmp0000644000175000001440000042746212717001265016702 00000000000000BM2/6(.xboard-4.9.1/winboard/shogibitmaps/sl58w.bmp0000644000175000001440000000101612717001265015700 00000000000000BM>(::??????xboard-4.9.1/winboard/shogibitmaps/sn58w.bmp0000644000175000001440000000101612717001265015702 00000000000000BM>(::??????xboard-4.9.1/winboard/shogibitmaps/sf58o.bmp0000644000175000001440000000101612717001265015662 00000000000000BM>(::?|D|  `Fbqx|Ic1{x{8ss'qs7''3Hs?>???xboard-4.9.1/winboard/shogibitmaps/sp58o.bmp0000644000175000001440000000101612717001265015674 00000000000000BM>(::??????p|?x?38?9>~??xboard-4.9.1/winboard/shogibitmaps/sp58w.bmp0000644000175000001440000000101612717001265015704 00000000000000BM>(::???????xboard-4.9.1/winboard/shogibitmaps/sc58o.bmp0000644000175000001440000000101612717001265015657 00000000000000BM>(::??x?~~>G>c~|}|0 |<|<8?(::??<~???88qǏ?????xboard-4.9.1/winboard/shogibitmaps/sr58o.bmp0000644000175000001440000000101612717001265015676 00000000000000BM>(::|oggc??9a<f{fGf3&3dć????xboard-4.9.1/winboard/shogibitmaps/sk58w.bmp0000644000175000001440000000101612717001265015677 00000000000000BM>(::?????????xboard-4.9.1/winboard/shogibitmaps/sg58o.bmp0000644000175000001440000000101612717001265015663 00000000000000BM>(::?988??xboard-4.9.1/winboard/shogibitmaps/sw58o.bmp0000644000175000001440000000101612717001265015703 00000000000000BM>(::?qlj! 9998>߸~~}1 @`<|0#Ǐ?????xboard-4.9.1/winboard/shogibitmaps/sw58w.bmp0000644000175000001440000000101612717001265015713 00000000000000BM>(::??????xboard-4.9.1/winboard/shogibitmaps/king.bmp0000644000175000001440000000624612717001265015660 00000000000000BM 6(--pxdWHm1:7TgooodccZZZ@@A877/*.##$                                                 xboard-4.9.1/winboard/shogibitmaps/su58o.bmp0000644000175000001440000000101612717001265015701 00000000000000BM>(::???xboard-4.9.1/winboard/shogibitmaps/ss58o.bmp0000644000175000001440000000101612717001265015677 00000000000000BM>(::?{9??9<1@c??????xboard-4.9.1/winboard/shogibitmaps/sr58w.bmp0000644000175000001440000000101612717001265015706 00000000000000BM>(::?????????xboard-4.9.1/winboard/shogibitmaps/sk58o.bmp0000644000175000001440000000101612717001265015667 00000000000000BM>(::x0$<<<~|gC?I?Lb?fcs{ߎpx?????xboard-4.9.1/winboard/shogibitmaps/sl58o.bmp0000644000175000001440000000101612717001265015670 00000000000000BM>(::}''33?@@9Crx|xs??xboard-4.9.1/winboard/wsockerr.c0000644000175000001440000000715512717001265013542 00000000000000/* * wsockerr.c * * Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ /* Windows sockets error map */ /* These messages ought to be in the Windows message catalog! */ #include #include #include "wsockerr.h" ErrorMap errmap[] = { {WSAEINTR, "Interrupted system call"}, {WSAEBADF, "Bad file number"}, {WSAEACCES, "Permission denied"}, {WSAEFAULT, "Bad address"}, {WSAEINVAL, "Invalid argument"}, {WSAEMFILE, "Too many open files"}, {WSAEWOULDBLOCK, "Operation would block"}, {WSAEINPROGRESS, "Operation now in progress"}, {WSAEALREADY, "Operation already in progress"}, {WSAENOTSOCK, "Socket operation on non-socket"}, {WSAEMSGSIZE, "Message too long"}, {WSAEPROTOTYPE, "Protocol wrong type for socket"}, {WSAENOPROTOOPT, "Protocol not available"}, {WSAEPROTONOSUPPORT, "Protocol not supported"}, {WSAESOCKTNOSUPPORT, "Socket type not supported"}, {WSAEOPNOTSUPP, "Operation not supported on socket"}, {WSAEPFNOSUPPORT, "Protocol family not supported"}, {WSAEAFNOSUPPORT, "Address family not supported by protocol family"}, {WSAEADDRINUSE, "Address already in use"}, {WSAEADDRNOTAVAIL, "Can't assign requested address"}, {WSAENETDOWN, "Network is down"}, {WSAENETUNREACH, "Network is unreachable"}, {WSAENETRESET, "Network dropped connection on reset"}, {WSAECONNABORTED, "Software caused connection abort"}, {WSAECONNRESET, "Connection reset by peer"}, {WSAENOBUFS, "No buffer space available"}, {WSAEISCONN, "Socket is already connected"}, {WSAENOTCONN, "Socket is not connected"}, {WSAESHUTDOWN, "Can't send after socket shutdown"}, {WSAETOOMANYREFS, "Too many references: can't splice"}, {WSAETIMEDOUT, "Connection timed out"}, {WSAECONNREFUSED, "Connection refused"}, {WSAELOOP, "Too many levels of symbolic links"}, {WSAENAMETOOLONG, "File name too long"}, {WSAEHOSTDOWN, "Host is down"}, {WSAEHOSTUNREACH, "No route to host"}, {WSAENOTEMPTY, "Directory not empty"}, {WSAEPROCLIM, "Too many processes"}, {WSAEUSERS, "Too many users"}, {WSAEDQUOT, "Disc quota exceeded"}, {WSAESTALE, "Stale NFS file handle"}, {WSAEREMOTE, "Too many levels of remote in path"}, {WSAEDISCON, "Undocumented Winsock error code WSAEDISCON"}, {WSASYSNOTREADY, "Winsock subsystem unusable"}, {WSAVERNOTSUPPORTED, "Required Winsock version is not supported"}, {WSANOTINITIALISED, "Winsock not initialized"}, {WSAHOST_NOT_FOUND, "Host name not found by name server (authoritative)"}, {WSATRY_AGAIN, "Host name not found by name server (nonauthoritative), or name server failure"}, {WSANO_RECOVERY, "Nonrecoverable name server error"}, {WSANO_DATA, "Host name has no address data of required type"}, {0, NULL} }; xboard-4.9.1/winboard/jaws.c0000644000175000001440000013266012717001265012647 00000000000000/* * JAWS.c -- Code for Windows front end to XBoard to use it with JAWS * * Copyright 1991 by Digital Equipment Corporation, Maynard, * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * XBoard borrows its colors and the bitmaps.xchess bitmap set from XChess, * which was written and is copyrighted by Wayne Christopher. * * The following terms apply to Digital Equipment Corporation's copyright * interest in XBoard: * ------------------------------------------------------------------------ * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Digital not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * ------------------------------------------------------------------------ * * The following terms apply to the enhanced version of XBoard * distributed by the Free Software Foundation: * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ // This file collects all patches for the JAWS version, so they can all be included in winboard.c // in one big swoop. At the bottom of this file you can read instructions for how to patch // WinBoard to work with JAWS with the aid of this file. Note that the code in this file // is for WinBoard 4.3 and later; for older WB versions you would have to throw out the // piece names for all pieces from Guard to Unicorn, #define ONE as '1', AAA as 'a', // BOARD_LEFT as 0, BOARD_RGHT and BOARD_HEIGHT as 8, and set holdingssizes to 0. // You will need to build with jaws.rc in stead of winboard.rc. // from resource.h #define IDM_PossibleAttackMove 1800 #define IDM_PossibleAttacked 1801 #define IDM_SayMachineMove 1802 #define IDM_ReadRow 1803 #define IDM_ReadColumn 1804 #define IDM_SayCurrentPos 1805 #define IDM_SayAllBoard 1806 #define IDM_SayUpperDiagnols 1807 #define IDM_SayLowerDiagnols 1808 #define IDM_SayClockTime 1810 #define IDM_SayWhosTurn 1811 #define IDM_SayKnightMoves 1812 #define ID_SHITTY_HI 1813 #define IDM_SayWhitePieces 1816 #define IDM_SayBlackPieces 1817 // from common.h, but 'extern' added to it, so the actual declaraton can remain in backend.c extern long whiteTimeRemaining, blackTimeRemaining, timeControl, timeIncrement; // from moves.c, added WinBoard_F piece types and ranks / files char *squareToChar[] = { "ay", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l" }; char *squareToNum[] = {"naught", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; char *ordinals[] = {"zeroth", "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "nineth"}; char *pieceToName[] = { "White Pawn", "White Knight", "White Bishop", "White Rook", "White Queen", "White Guard", "White Elephant", "White Arch Bishop", "White Chancellor", "White General", "White Man", "White Cannon", "White Night Rider", "White Crowned Bishop", "White Crowned Rook", "White Grass Hopper", "White Veteran", "White Falcon", "White Amazon", "White Snake", "White Unicorn", "White King", "Black Pawn", "Black Knight", "Black Bishop", "Black Rook", "Black Queen", "Black Guard", "Black Elephant", "Black Arch Bishop", "Black Chancellor", "Black General", "Black Man", "Black Cannon", "Black Night Rider", "Black Crowned Bishop", "Black Crowned Rook", "Black Grass Hopper", "Black Veteran", "Black Falcon", "Black Amazon", "Black Snake", "Black Unicorn", "Black King", "Empty" }; char *pieceTypeName[] = { "Pawn", "Knight", "Bishop", "Rook", "Queen", "Guard", "Elephant", "Arch Bishop", "Chancellor", "General", "Man", "Cannon", "Night Rider", "Crowned Bishop", "Crowned Rook", "Grass Hopper", "Veteran", "Falcon", "Amazon", "Snake", "Unicorn", "King", "Pawn", "Knight", "Bishop", "Rook", "Queen", "Guard", "Elephant", "Arch Bishop", "Chancellor", "General", "Man", "Cannon", "Night Rider", "Crowned Bishop", "Crowned Rook", "Grass Hopper", "Veteran", "Falcon", "Amazon", "Snake", "Unicorn", "King", "Empty" }; int CoordToNum(c) char c; { if(isdigit(c)) return c - ONE; if(c >= 'a') return c - AAA; return 0; } char* PieceToName(p, i) ChessSquare p; int i; { if(i) return pieceToName[(int) p]; return pieceTypeName[(int) p]; } char* SquareToChar(x) int x; { return squareToChar[x - BOARD_LEFT]; } char* SquareToNum(y) int y; { return squareToNum[y + (gameInfo.boardHeight < 10)]; } // from winboard.c: all new routines #define JFWAPI __declspec(dllimport) JFWAPI BOOL WINAPI JFWSayString (LPCTSTR lpszStrinToSpeak, BOOL bInterrupt); typedef JFWAPI BOOL (WINAPI *PSAYSTRING)(LPCTSTR lpszStrinToSpeak, BOOL bInterrupt); PSAYSTRING RealSayString; VOID SayString(char *mess, BOOL flag) { // for debug file static char buf[8000], *p; int l = strlen(buf); if(appData.debugMode) fprintf(debugFP, "SAY '%s'\n", mess); if(l) buf[l++] = ' '; // separate by space from previous safeStrCpy(buf+l, _(mess), 8000-1-l); // buffer if(!flag) return; // wait for flush if(p = StrCaseStr(buf, "Xboard adjudication:")) { int i; for(i=19; i>1; i--) p[i] = p[i-1]; p[1] = ' '; } RealSayString(buf, !strcmp(mess, " ")); // kludge to indicate flushing of interruptable speach if(appData.debugMode) fprintf(debugFP, "SPEAK '%s'\n", buf); buf[0] = NULLCHAR; } //static int fromX = 0, fromY = 0; static int oldFromX, oldFromY; static int timeflag; static int suppressClocks = 0; static int suppressOneKey = 0; static HANDLE hAccelJAWS; typedef struct { char *name; int code; } MenuItemDesc; MenuItemDesc menuItemJAWS[] = { {"Say Clock &Time\tAlt+T", IDM_SayClockTime }, {"-", 0 }, {"Say Last &Move\tAlt+M", IDM_SayMachineMove }, {"Say W&ho's Turn\tAlt+X", IDM_SayWhosTurn }, {"-", 0 }, {"Say Complete &Position\tAlt+P",IDM_SayAllBoard }, {"Say &White Pieces\tAlt+W", IDM_SayWhitePieces }, {"Say &Black Pieces\tAlt+B", IDM_SayBlackPieces }, {"Say Board &Rank\tAlt+R", IDM_ReadRow }, {"Say Board &File\tAlt+F", IDM_ReadColumn }, {"-", 0 }, {"Say &Upper Diagonals\tAlt+U", IDM_SayUpperDiagnols }, {"Say &Lower Diagonals\tAlt+L", IDM_SayLowerDiagnols }, {"Say K&night Moves\tAlt+N", IDM_SayKnightMoves }, {"Say Current &Square\tAlt+S", IDM_SayCurrentPos }, {"Say &Attacks\tAlt+A", IDM_PossibleAttackMove }, {"Say Attacke&d\tAlt+D", IDM_PossibleAttacked }, {NULL, 0} }; ACCEL acceleratorsJAWS[] = { {FVIRTKEY|FALT, 'T', IDM_SayClockTime }, {FVIRTKEY|FALT, 'M', IDM_SayMachineMove }, {FVIRTKEY|FALT, 'X', IDM_SayWhosTurn }, {FVIRTKEY|FALT, 'P', IDM_SayAllBoard }, {FVIRTKEY|FALT, 'W', IDM_SayWhitePieces }, {FVIRTKEY|FALT, 'B', IDM_SayBlackPieces }, {FVIRTKEY|FALT, 'R', IDM_ReadRow }, {FVIRTKEY|FALT, 'F', IDM_ReadColumn }, {FVIRTKEY|FALT, 'U', IDM_SayUpperDiagnols }, {FVIRTKEY|FALT, 'L', IDM_SayLowerDiagnols }, {FVIRTKEY|FALT, 'N', IDM_SayKnightMoves }, {FVIRTKEY|FALT, 'S', IDM_SayCurrentPos }, {FVIRTKEY|FALT, 'A', IDM_PossibleAttackMove }, {FVIRTKEY|FALT, 'D', IDM_PossibleAttacked } }; void AdaptMenu() { HMENU menuMain, menuJAWS; MENUBARINFO helpMenuInfo; int i; helpMenuInfo.cbSize = sizeof(helpMenuInfo); menuMain = GetMenu(hwndMain); menuJAWS = CreatePopupMenu(); for(i=0; menuItemJAWS[i].name; i++) { if(menuItemJAWS[i].name[0] == '-') AppendMenu(menuJAWS, MF_SEPARATOR, (UINT_PTR) 0, NULL); else AppendMenu(menuJAWS, MF_ENABLED|MF_STRING, (UINT_PTR) menuItemJAWS[i].code, (LPCTSTR) _(menuItemJAWS[i].name)); } InsertMenu(menuMain, 7, MF_BYPOSITION|MF_POPUP|MF_ENABLED|MF_STRING, (UINT_PTR) menuJAWS, "&JAWS"); oldMenuItemState[8] = oldMenuItemState[7]; DrawMenuBar(hwndMain); } BOOL InitJAWS() { // to be called at beginning of WinMain, after InitApplication and InitInstance HINSTANCE hApi = LoadLibrary("jfwapi32.dll"); if(!hApi) { DisplayInformation("Missing jfwapi32.dll"); return (FALSE); } RealSayString = (PSAYSTRING)GetProcAddress(hApi, "JFWSayString"); if(!RealSayString) { DisplayInformation("SayString returned a null pointer"); return (FALSE); } { // [HGM] kludge to reduce need for modification of winboard.c: make tinyLayout menu identical // to standard layout, so that code for switching between them does not have to be deleted int i; AdaptMenu(); menuBarText[0][8] = menuBarText[0][7]; menuBarText[0][7] = "&JAWS"; for(i=0; i<9; i++) menuBarText[2][i] = menuBarText[1][i] = menuBarText[0][i]; } hAccelJAWS = CreateAcceleratorTable(acceleratorsJAWS, 14); /* initialize cursor position */ fromX = fromY = 0; SetHighlights(fromX, fromY, -1, -1); DrawPosition(FALSE, NULL); oldFromX = oldFromY = -1; if(hwndConsole) SetFocus(hwndConsole); return TRUE; } int beeps[] = { 1, 0, 0, 0, 0 }; int beepCodes[] = { 0, MB_OK, MB_ICONERROR, MB_ICONQUESTION, MB_ICONEXCLAMATION, MB_ICONASTERISK }; static int dropX = -1, dropY = -1; VOID KeyboardEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { ChessSquare currentPiece; char *piece, *xchar, *ynum ; int n, beepType = 1; // empty beep if(fromX == -1 || fromY == -1) { // if we just dropped piece, stay at that square fromX = dropX; fromY = dropY; dropX = dropY = -1; // but only once } if(fromX == -1 || fromY == -1) { fromX = BOARD_LEFT; fromY = 0; } switch(wParam) { case VK_LEFT: if(fromX == BOARD_RGHT+1) fromX -= 2; else if(fromX == BOARD_LEFT) { if(fromY >= BOARD_HEIGHT - gameInfo.holdingsSize) fromX -= 2; else beepType = 0; } else if(fromX > BOARD_LEFT) fromX--; else beepType = 0; // off-board beep break; case VK_RIGHT: if(fromX == BOARD_LEFT-2) fromX += 2; else if(fromX == BOARD_RGHT-1) { if(fromY < gameInfo.holdingsSize) fromX += 2; else beepType = 0; } else if(fromX < BOARD_RGHT-1) fromX++; else beepType = 0; break; case VK_UP: if(fromX == BOARD_RGHT+1) { if(fromY < gameInfo.holdingsSize - 1) fromY++; else beepType = 0; } else if(fromY < BOARD_HEIGHT-1) fromY++; else beepType = 0; break; case VK_DOWN: if(fromX == BOARD_LEFT-2) { if(fromY > BOARD_HEIGHT - gameInfo.holdingsSize) fromY--; else beepType = 0; } else if(fromY > 0) fromY--; else beepType = 0; break; } SetHighlights(fromX, fromY, -1, -1); DrawPosition(FALSE, NULL); currentPiece = boards[currentMove][fromY][fromX]; piece = PieceToName(currentPiece,1); if(beepType == 1 && currentPiece != EmptySquare) beepType = currentPiece < (int) BlackPawn ? 2 : 3; // white or black beep if(beeps[beepType] == beeps[1] && (fromX == BOARD_RGHT+1 || fromX == BOARD_LEFT-2)) beepType = 4; // holdings beep beepType = beeps[beepType]%6; if(beepType) MessageBeep(beepCodes[beepType]); if(fromX == BOARD_LEFT - 2) { SayString("black holdings", FALSE); if(currentPiece != EmptySquare) { char buf[MSG_SIZ]; n = boards[currentMove][fromY][1]; snprintf(buf, MSG_SIZ, "%d %s%s", n, PieceToName(currentPiece,0), n == 1 ? "" : "s"); SayString(buf, FALSE); } SayString(" ", TRUE); } else if(fromX == BOARD_RGHT + 1) { SayString("white holdings", FALSE); if(currentPiece != EmptySquare) { char buf[MSG_SIZ]; n = boards[currentMove][fromY][BOARD_WIDTH-2]; snprintf(buf, MSG_SIZ,"%d %s%s", n, PieceToName(currentPiece,0), n == 1 ? "" : "s"); SayString(buf, FALSE); } SayString(" ", TRUE); } else if(fromX >= BOARD_LEFT && fromX < BOARD_RGHT) { char buf[MSG_SIZ]; xchar = SquareToChar(fromX); ynum = SquareToNum(fromY); if(currentPiece != EmptySquare) { snprintf(buf, MSG_SIZ, "%s %s %s", xchar, ynum, piece); } else snprintf(buf, MSG_SIZ, "%s %s", xchar, ynum); SayString(buf, FALSE); SayString(" ", TRUE); } return; } int PosFlags(int nr); typedef struct { int rf, ff, rt, ft; int onlyCaptures; int count; } ReadClosure; extern void ReadCallback P((Board board, int flags, ChessMove kind, int rf, int ff, int rt, int ft, VOIDSTAR closure)); void ReadCallback(board, flags, kind, rf, ff, rt, ft, closure) Board board; int flags; ChessMove kind; int rf, ff, rt, ft; VOIDSTAR closure; { register ReadClosure *cl = (ReadClosure *) closure; ChessSquare possiblepiece; char *piece, *xchar, *ynum ; //if(appData.debugMode) fprintf(debugFP, "%c%c%c%c\n", ff+AAA, rf+ONE, ft+AAA, rt+ONE); if(cl->ff == ff && cl->rf == rf) { possiblepiece = board[rt][ft]; if(possiblepiece != EmptySquare) { piece = PieceToName(possiblepiece,1); xchar = SquareToChar(ft); ynum = SquareToNum(rt); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); cl->count++; } } if(cl->ft == ft && cl->rt == rt) { possiblepiece = board[rf][ff]; piece = PieceToName(possiblepiece,1); xchar = SquareToChar(ff); ynum = SquareToNum(rf); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); cl->count++; } } VOID PossibleAttackMove() { ReadClosure cl; ChessSquare piece, victim; int removedSelectedPiece = 0, swapColor; //if(appData.debugMode) fprintf(debugFP, "PossibleAttackMove %d %d %d %d\n", fromX, fromY, oldFromX, oldFromY); if(fromY < 0 || fromY >= BOARD_HEIGHT) return; if(fromX < BOARD_LEFT || fromX >= BOARD_RGHT) { SayString("holdings",TRUE); return; } piece = boards[currentMove][fromY][fromX]; if(piece == EmptySquare) { // if square is empty, try to substitute selected piece if(oldFromX >= 0 && oldFromY >= 0) { piece = boards[currentMove][oldFromY][oldFromX]; boards[currentMove][oldFromY][oldFromX] = EmptySquare; removedSelectedPiece = 1; SayString("Your", FALSE); SayString(PieceToName(piece, 0), FALSE); SayString("would have", FALSE); } else { SayString("You must select a piece first", TRUE); return; } } victim = boards[currentMove][fromY][fromX]; boards[currentMove][fromY][fromX] = piece; // make sure piece is actally there SayString("possible captures from here are", FALSE); swapColor = piece < (int)BlackPawn && !WhiteOnMove(currentMove) || piece >= (int)BlackPawn && WhiteOnMove(currentMove); cl.count = 0; cl.rf = fromY; cl.ff = fromX; cl.rt = cl.ft = -1; GenLegal(boards[currentMove], PosFlags(currentMove + swapColor), ReadCallback, (VOIDSTAR) &cl); if(cl.count == 0) SayString("None", FALSE); SayString("", TRUE); // flush boards[currentMove][fromY][fromX] = victim; // repair if( removedSelectedPiece ) boards[currentMove][oldFromY][oldFromX] = piece; } VOID PossibleAttacked() { ReadClosure cl; ChessSquare piece = EmptySquare, victim; if(fromY < 0 || fromY >= BOARD_HEIGHT) return; if(fromX < BOARD_LEFT || fromX >= BOARD_RGHT) { SayString("holdings",TRUE); return; } if(oldFromX >= 0 && oldFromY >= 0) { // if piece is selected, remove it piece = boards[currentMove][oldFromY][oldFromX]; boards[currentMove][oldFromY][oldFromX] = EmptySquare; } SayString("Pieces that can capture you are", FALSE); victim = boards[currentMove][fromY][fromX]; // put dummy piece on target square, to activate Pawn captures boards[currentMove][fromY][fromX] = WhiteOnMove(currentMove) ? WhiteQueen : BlackQueen; cl.count = 0; cl.rt = fromY; cl.ft = fromX; cl.rf = cl.ff = -1; GenLegal(boards[currentMove], PosFlags(currentMove+1), ReadCallback, (VOIDSTAR) &cl); if(cl.count == 0) SayString("None", FALSE); SayString("You are defended by", FALSE); boards[currentMove][fromY][fromX] = WhiteOnMove(currentMove) ? BlackQueen : WhiteQueen; cl.count = 0; cl.rt = fromY; cl.ft = fromX; cl.rf = cl.ff = -1; GenLegal(boards[currentMove], PosFlags(currentMove), ReadCallback, (VOIDSTAR) &cl); if(cl.count == 0) SayString("None", FALSE); SayString("", TRUE); // flush boards[currentMove][fromY][fromX] = victim; // put back original occupant if(oldFromX >= 0 && oldFromY >= 0) { // put back possibl selected piece boards[currentMove][oldFromY][oldFromX] = piece; } } VOID ReadRow() { ChessSquare currentpiece; char *piece, *xchar, *ynum ; int xPos, count=0; ynum = SquareToNum(fromY); if(fromY < 0) return; for (xPos=BOARD_LEFT; xPos BOARD_LEFT && fromY < BOARD_HEIGHT-1) { SayString("The diagnol squares to your upper left contain", FALSE); yPos = fromY+1; xPos = fromX-1; while(yPos=BOARD_LEFT) { currentpiece = boards[currentMove][yPos][xPos]; piece = PieceToName(currentpiece,1); xchar = SquareToChar(xPos); ynum = SquareToNum(yPos); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); yPos++; xPos--; } } else SayString("There is no squares to your upper left", FALSE); SayString("", TRUE); // flush } VOID SayLowerDiagnols() { ChessSquare currentpiece; char *piece, *xchar, *ynum ; int yPos, xPos; if(fromX < 0 || fromY < 0) return; if(fromX < BOARD_RGHT-1 && fromY > 0) { SayString("The diagnol squares to your lower right contain", FALSE); yPos = fromY-1; xPos = fromX+1; while(yPos>=0 && xPos BOARD_LEFT && fromY > 0) { SayString("The diagnol squares to your lower left contain", FALSE); yPos = fromY-1; xPos = fromX-1; while(yPos>=0 && xPos>=BOARD_LEFT) { currentpiece = boards[currentMove][yPos][xPos]; piece = PieceToName(currentpiece,1); xchar = SquareToChar(xPos); ynum = SquareToNum(yPos); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); yPos--; xPos--; } } else SayString("There is no squares to your lower left", FALSE); SayString("", TRUE); // flush } VOID SayKnightMoves() { ChessSquare currentpiece, oldpiece; char *piece, *xchar, *ynum ; oldpiece = boards[currentMove][fromY][fromX]; if(oldpiece == WhiteKnight || oldpiece == BlackKnight) SayString("The possible squares a Knight could move to are", FALSE); else SayString("The squares a Knight could possibly attack from are", FALSE); if (fromY+2 < BOARD_HEIGHT && fromX-1 >= BOARD_LEFT) { currentpiece = boards[currentMove][fromY+2][fromX-1]; if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing)) || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare)) || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight)) { piece = PieceToName(currentpiece,1); xchar = SquareToChar(fromX-1); ynum = SquareToNum(fromY+2); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); } } if (fromY+2 < BOARD_HEIGHT && fromX+1 < BOARD_RGHT) { currentpiece = boards[currentMove][fromY+2][fromX+1]; if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing)) || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare)) || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight)) { piece = PieceToName(currentpiece,1); xchar = SquareToChar(fromX+1); ynum = SquareToNum(fromY+2); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); } } if (fromY+1 < BOARD_HEIGHT && fromX+2 < BOARD_RGHT) { currentpiece = boards[currentMove][fromY+1][fromX+2]; if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing)) || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare)) || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight)) { piece = PieceToName(currentpiece,1); xchar = SquareToChar(fromX+2); ynum = SquareToNum(fromY+1); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); } } if (fromY-1 >= 0 && fromX+2 < BOARD_RGHT) { currentpiece = boards[currentMove][fromY-1][fromX+2]; if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing)) || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare)) || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight)) { piece = PieceToName(currentpiece,1); xchar = SquareToChar(fromX+2); ynum = SquareToNum(fromY-1); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); } } if (fromY-2 >= 0 && fromX+1 < BOARD_RGHT) { currentpiece = boards[currentMove][fromY-2][fromX+1]; if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing)) || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare)) || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight)) { piece = PieceToName(currentpiece,1); xchar = SquareToChar(fromX+1); ynum = SquareToNum(fromY-2); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); } } if (fromY-2 >= 0 && fromX-1 >= BOARD_LEFT) { currentpiece = boards[currentMove][fromY-2][fromX-1]; if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing)) || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare)) || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight)) { piece = PieceToName(currentpiece,1); xchar = SquareToChar(fromX-1); ynum = SquareToNum(fromY-2); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); } } if (fromY-1 >= 0 && fromX-2 >= BOARD_LEFT) { currentpiece = boards[currentMove][fromY-1][fromX-2]; if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing)) || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare)) || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight)) { piece = PieceToName(currentpiece,1); xchar = SquareToChar(fromX-2); ynum = SquareToNum(fromY-1); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); } } if (fromY+1 < BOARD_HEIGHT && fromX-2 >= BOARD_LEFT) { currentpiece = boards[currentMove][fromY+1][fromX-2]; if(((oldpiece == WhiteKnight) && (currentpiece > WhiteKing)) || ((oldpiece == BlackKnight) && (currentpiece < BlackPawn || currentpiece == EmptySquare)) || (oldpiece == EmptySquare) && (currentpiece == WhiteKnight || currentpiece == BlackKnight)) { piece = PieceToName(currentpiece,1); xchar = SquareToChar(fromX-2); ynum = SquareToNum(fromY+1); SayString(xchar , FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); } } SayString("", TRUE); // flush } VOID SayPieces(ChessSquare p) { ChessSquare currentpiece; char *piece, *xchar, *ynum ; int yPos, xPos, count = 0; char buf[50]; if(p == WhitePlay) SayString("White pieces", FALSE); else if(p == BlackPlay) SayString("Black pieces", FALSE); else if(p == EmptySquare) SayString("Pieces", FALSE); else { snprintf(buf, sizeof(buf)/sizeof(buf[0]),"%ss", PieceToName(p,1)); SayString(buf, FALSE); } SayString("are located", FALSE); for(yPos=0; yPos= BlackPawn && currentpiece <= BlackKing || p == WhitePlay && currentpiece >= WhitePawn && currentpiece <= WhiteKing ) piece = PieceToName(currentpiece,0); else if(p == EmptySquare && currentpiece != EmptySquare) piece = PieceToName(currentpiece,1); else if(p == currentpiece) piece = NULL; else continue; if(count == 0) SayString("at", FALSE); xchar = SquareToChar(xPos); ynum = SquareToNum(yPos); SayString(xchar , FALSE); SayString(ynum, FALSE); if(piece) SayString(piece, FALSE); count++; } } if(count == 0) SayString("nowhere", FALSE); SayString("", TRUE); // flush } VOID SayCurrentPos() { ChessSquare currentpiece; char *piece, *xchar, *ynum ; if(fromX < BOARD_LEFT) { SayString("You strayed into the white holdings", FALSE); return; } if(fromX >= BOARD_RGHT) { SayString("You strayed into the black holdings", FALSE); return; } currentpiece = boards[currentMove][fromY][fromX]; piece = PieceToName(currentpiece,1); ynum = SquareToNum(fromY); xchar = SquareToChar(fromX); SayString("Your current position is", FALSE); SayString(xchar, FALSE); SayString(ynum, FALSE); SayString(piece, FALSE); if(((fromX-BOARD_LEFT) ^ fromY)&1) SayString("on a light square",FALSE); else SayString("on a dark square",FALSE); PossibleAttacked(); SayString("", TRUE); // flush } VOID SayAllBoard() { int Xpos, Ypos; ChessSquare currentpiece; char *piece, *ynum ; if(gameInfo.holdingsWidth) { int first = 0; for(Ypos=0; Ypos=BOARD_HEIGHT - gameInfo.holdingsSize; Ypos--) { int n = boards[currentMove][Ypos][1]; if(n) { char buf[MSG_SIZ]; if(!first++) SayString("black holds", FALSE); currentpiece = boards[currentMove][Ypos][0]; piece = PieceToName(currentpiece,0); snprintf(buf, MSG_SIZ, "%d %s%s", n, piece, (n==1 ? "" : "s") ); SayString(buf, FALSE); } } } for(Ypos=BOARD_HEIGHT-1; Ypos>=0; Ypos--) { ynum = ordinals[Ypos + (gameInfo.boardHeight < 10)]; SayString(ynum, FALSE); SayString("rank", FALSE); for(Xpos=BOARD_LEFT; Xpos 1) snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%d %ss", count, piece); else snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%s", piece); Xpos--; SayString(buf, FALSE); } else { int count = 0, oldX = Xpos; while(Xpos < BOARD_RGHT && boards[currentMove][Ypos][Xpos] == EmptySquare) Xpos++, count++; if(Xpos == BOARD_RGHT && oldX == BOARD_LEFT) SayString("all", FALSE); else{ if(count > 1) { char buf[10]; snprintf(buf, sizeof(buf)/sizeof(buf[0]),"%d", count); SayString(buf, FALSE); } Xpos--; } SayString("empty", FALSE); } } } SayString("", TRUE); // flush } VOID SayWhosTurn() { if(gameMode == MachinePlaysBlack || gameMode == IcsPlayingWhite) { if(WhiteOnMove(currentMove)) SayString("It is your turn", FALSE); else SayString("It is your opponents turn", FALSE); } else if(gameMode == MachinePlaysWhite || gameMode == IcsPlayingBlack) { if(WhiteOnMove(currentMove)) SayString("It is your opponents turn", FALSE); else SayString("It is your turn", FALSE); } else { if(WhiteOnMove(currentMove)) SayString("White is on move here", FALSE); else SayString("Black is on move here", FALSE); } SayString("", TRUE); // flush } extern char *commentList[]; VOID SayMachineMove(int evenIfDuplicate) { int len, xPos, yPos, moveNr, secondSpace = 0, castle = 0, n; ChessSquare currentpiece; char *piece, *xchar, *ynum, *p, checkMark = 0; char c, buf[MSG_SIZ], comment[MSG_SIZ]; static char disambiguation[2]; static int previousMove = 0; if(appData.debugMode) fprintf(debugFP, "Message = '%s'\n", messageText); if(gameMode == BeginningOfGame) return; if(messageText[0] == '[') return; comment[0]= 0; if(isdigit(messageText[0])) { // message is move, possibly with thinking output int dotCount = 0, spaceCount = 0; sscanf(messageText, "%d", &moveNr); len = 0; // [HGM] show: better extraction of move while (messageText[len] != NULLCHAR) { if(messageText[len] == '.' && spaceCount == 0) dotCount++; if(messageText[len] == ' ') { if(++spaceCount == 2) secondSpace = len; } if(messageText[len] == '{') { // we detected a comment if(isalpha(messageText[len+1]) ) sscanf(messageText+len, "{%[^}]}", comment); break; } if(messageText[len] == '[') { // we detected thinking output int depth; float score=0; char c, lastMover = (dotCount == 3 ? 'B' : 'W'); if(sscanf(messageText+len+1, "%d]%c%f", &depth, &c, &score) > 1) { if(c == ' ') { // if not explicitly specified, figure out source of thinking output switch(gameMode) { case MachinePlaysWhite: case IcsPlayingWhite: c = 'W'; break; case IcsPlayingBlack: case MachinePlaysBlack: c = 'B'; default: break; } } if(c != lastMover && !evenIfDuplicate) return; // line is thinking output of future move, ignore. if(2*moveNr - (dotCount < 2) == previousMove) return; // do not repeat same move; likely ponder output snprintf(buf, MSG_SIZ, "score %s %d at %d ply", score > 0 ? "plus" : score < 0 ? "minus" : "", (int) (fabs(score)*100+0.5), depth ); SayString(buf, FALSE); // move + thinking output describing it; say it. } while(messageText[len-1] == ' ') len--; // position just behind move; break; } if(messageText[len] == '(') { // ICS time printed behind move while(messageText[len+1] && messageText[len] != ')') len++; // skip it } len++; } if(secondSpace) len = secondSpace; // position behind move if(messageText[len-1] == '+' || messageText[len-1] == '#') { /* you are in checkmate */ len--; // strip off check or mate indicator checkMark = messageText[len]; // make sure still seen after we stip off promo piece } if(messageText[len-2] == '=') { /* promotion */ len-=2; // strip off promotion piece SayString("promotion", FALSE); } n = 2*moveNr - (dotCount < 2); if(previousMove != 2*moveNr + (dotCount > 1) || evenIfDuplicate) { char number[20]; previousMove = 2*moveNr + (dotCount > 1); // remember move nr of move last spoken snprintf(number, sizeof(number)/sizeof(number[0]),"%d", moveNr); yPos = CoordToNum(messageText[len-1]); /* turn char coords to ints */ xPos = CoordToNum(messageText[len-2]); if(xPos < 0 || xPos > 11) return; // prevent crashes if no coord string available to speak if(yPos < 0 || yPos > 9) return; currentpiece = boards[n][yPos][xPos]; piece = PieceToName(currentpiece,0); ynum = SquareToNum(yPos); xchar = SquareToChar(xPos); c = messageText[len-3]; if(c == 'x') c = messageText[len-4]; if(!isdigit(c) && c < 'a' && c != '@') c = 0; disambiguation[0] = c; SayString(WhiteOnMove(n) ? "Black" : "White", FALSE); SayString("move", FALSE); SayString(number, FALSE); // if(c==0 || c=='@') SayString("a", FALSE); // intercept castling moves p = StrStr(messageText, "O-O-O"); if(p && p-messageText < len) { SayString("queen side castling",FALSE); castle = 1; } else { p = StrStr(messageText, "O-O"); if(p && p-messageText < len) { SayString("king side castling",FALSE); castle = 1; } } if(!castle) { SayString(piece, FALSE); if(c == '@') SayString("dropped on", FALSE); else if(c) SayString(disambiguation, FALSE); SayString("to", FALSE); SayString(xchar, FALSE); SayString(ynum, FALSE); if(messageText[len-3] == 'x') { currentpiece = boards[n-1][yPos][xPos]; if(currentpiece != EmptySquare) { piece = PieceToName(currentpiece,0); SayString("Capturing a",FALSE); SayString(piece, FALSE); } else SayString("Capturing onn passann",FALSE); } } if(checkMark == '+') SayString("check", FALSE); else if(checkMark == '#') { SayString("finishing off", FALSE); SayString(WhiteOnMove(n) ? "White" : "Black", FALSE); } } /* say comment after move, possibly with result */ p = NULL; if(StrStr(messageText, " 1-0")) p = "white wins"; else if(StrStr(messageText, " 0-1")) p = "black wins"; else if(StrStr(messageText, " 1/2-1/2")) p = "game ends in a draw"; if(comment[0]) { if(p) { if(!StrCaseStr(comment, "draw") && !StrCaseStr(comment, "white") && !StrCaseStr(comment, "black") ) { SayString(p, FALSE); SayString("due to", FALSE); } } SayString(comment, FALSE); // alphabetic comment (usually game end) } else if(p) SayString(p, FALSE); if(commentDialog && commentList[currentMove]) SetFocus(commentDialog); } else { /* starts not with digit */ if(StrCaseStr(messageText, "illegal")) PlayIcsUnfinishedSound(); SayString(messageText, FALSE); } SayString("", TRUE); // flush } VOID SayClockTime() { char buf1[50], buf2[50]; char *str1, *str2; static long int lastWhiteTime, lastBlackTime; suppressClocks = 1; // if user is using alt+T command, no reason to display them if(abs(lastWhiteTime - whiteTimeRemaining) < 1000 && abs(lastBlackTime - blackTimeRemaining) < 1000) suppressClocks = 0; // back on after two requests in rapid succession snprintf(buf1, sizeof(buf1)/sizeof(buf1[0]),"%s", TimeString(whiteTimeRemaining)); str1 = buf1; SayString("White clock", FALSE); SayString(str1, FALSE); snprintf(buf2, sizeof(buf2)/sizeof(buf2[0]), "%s", TimeString(blackTimeRemaining)); str2 = buf2; SayString("Black clock", FALSE); SayString(str2, FALSE); lastWhiteTime = whiteTimeRemaining; lastBlackTime = blackTimeRemaining; SayString("", TRUE); // flush } VOID Toggle(Boolean *b, char *mess) { *b = !*b; SayString(mess, FALSE); SayString("is now", FALSE); SayString(*b ? "on" : "off", FALSE); SayString("", TRUE); // flush } /* handles keyboard moves in a click-click fashion */ VOID KeyboardMove(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { ChessSquare currentpiece; char *piece; static BOOLEAN sameAgain = FALSE; switch (message) { case WM_KEYDOWN: sameAgain = FALSE; if(oldFromX == fromX && oldFromY == fromY) { sameAgain = TRUE; /* click on same square */ break; } else if(oldFromX != -1) { ChessSquare pdown, pup; pdown = boards[currentMove][oldFromY][oldFromX]; pup = boards[currentMove][fromY][fromX]; if (gameMode == EditPosition || !((WhitePawn <= pdown && pdown <= WhiteKing && WhitePawn <= pup && pup <= WhiteKing) || (BlackPawn <= pdown && pdown <= BlackKing && BlackPawn <= pup && pup <= BlackKing))) { /* EditPosition, empty square, or different color piece; click-click move is possible */ char promoChoice = NULLCHAR; if (HasPromotionChoice(oldFromX, oldFromY, fromX, fromY, &promoChoice)) { if (appData.alwaysPromoteToQueen) { UserMoveEvent(oldFromX, oldFromY, fromX, fromY, 'q'); } else { toX = fromX; toY = fromY; fromX = oldFromX; fromY = oldFromY; PromotionPopup(hwnd); fromX = toX; fromY = toY; } } else { UserMoveEvent(oldFromX, oldFromY, fromX, fromY, promoChoice); } oldFromX = oldFromY = -1; break; } } /* First downclick, or restart on a square with same color piece */ if (OKToStartUserMove(fromX, fromY)) { oldFromX = fromX; oldFromY = fromY; currentpiece = boards[currentMove][fromY][fromX]; piece = PieceToName(currentpiece,1); SayString(piece, FALSE); SayString("selected", TRUE); } else { oldFromX = oldFromY = -1; } break; case WM_KEYUP: if (oldFromX == fromX && oldFromY == fromY) { /* Upclick on same square */ if (sameAgain) { /* Clicked same square twice: abort click-click move */ oldFromX = oldFromY = -1; currentpiece = boards[currentMove][fromY][fromX]; piece = PieceToName(currentpiece,0); SayString(piece, FALSE); SayString("unselected", TRUE); } } } } int NiceTime(int x) { // return TRUE for times we want to announce if(x<0) return 0; x = (x+50)/100; // tenth of seconds if(x <= 100) return (x%10 == 0); if(x <= 600) return (x%100 == 0); if(x <= 6000) return (x%600 == 0); return (x%3000 == 0); } #define JAWS_ARGS \ { "beepOffBoard", ArgInt, (LPVOID) beeps, TRUE, (ArgIniType) 1 },\ { "beepEmpty", ArgInt, (LPVOID) (beeps+1), TRUE, (ArgIniType) 0 },\ { "beepWhite", ArgInt, (LPVOID) (beeps+2), TRUE, (ArgIniType) 0 },\ { "beepBlack", ArgInt, (LPVOID) (beeps+3), TRUE, (ArgIniType) 0 },\ { "beepHoldings", ArgInt, (LPVOID) (beeps+4), TRUE, (ArgIniType) 0 },\ #define JAWS_ALT_INTERCEPT \ if(suppressOneKey) {\ suppressOneKey = 0;\ if(GetKeyState(VK_MENU) < 0 && GetKeyState(VK_CONTROL) < 0) break;\ }\ if ((char)wParam == 022 && gameMode == EditPosition) { /* . Pop up piece menu */\ POINT pt; int x, y;\ SquareToPos(fromY, fromX, &x, &y);\ dropX = fromX; dropY = fromY;\ pt.x = x; pt.y = y;\ if(gameInfo.variant != VariantShogi)\ MenuPopup(hwnd, pt, LoadMenu(hInst, "PieceMenu"), -1);\ else\ MenuPopup(hwnd, pt, LoadMenu(hInst, "ShogiPieceMenu"), -1);\ break;\ }\ #define JAWS_REPLAY \ case '\020': /* ctrl P */\ { char buf[MSG_SIZ];\ if(GetWindowText(hwnd, buf, MSG_SIZ-1))\ SayString(buf, TRUE);\ }\ return 0;\ #define JAWS_KBDOWN_NAVIGATION \ \ \ if(GetKeyState(VK_MENU) < 0 && GetKeyState(VK_CONTROL) < 0) {\ /* Control + Alt + letter used for speaking piece positions */\ static int lastTime; static char lastChar;\ int mine = 0, time = GetTickCount(); char c;\ \ if((char)wParam == lastChar && time-lastTime < 250) mine = 1;\ lastChar = wParam; lastTime = time;\ c = wParam;\ \ if(gameMode == IcsPlayingWhite || gameMode == MachinePlaysBlack) mine = !mine;\ \ if(ToLower(c) == 'x') {\ SayPieces(mine ? WhitePlay : BlackPlay);\ suppressOneKey = 1;\ break;\ } else\ if(CharToPiece(c) != EmptySquare) {\ SayPieces(CharToPiece(mine ? ToUpper(c) : ToLower(c)));\ suppressOneKey = 1;\ break;\ }\ }\ \ switch (wParam) {\ case VK_LEFT:\ case VK_RIGHT:\ case VK_UP:\ case VK_DOWN:\ KeyboardEvent(hwnd, message, wParam, lParam);\ break;\ case VK_SPACE:\ shiftKey = GetKeyState(VK_SHIFT) < 0;\ KeyboardMove(hwnd, message, wParam, lParam);\ break;\ }\ #define JAWS_KBUP_NAVIGATION \ switch (wParam) {\ case VK_SPACE:\ KeyboardMove(hwnd, message, wParam, lParam);\ break;\ }\ #define JAWS_MENU_ITEMS \ case IDM_PossibleAttackMove: /*What can I possible attack from here */\ PossibleAttackMove();\ break;\ \ case IDM_PossibleAttacked: /*what can possible attack this square*/\ PossibleAttacked();\ break;\ \ case IDM_ReadRow: /* Read the current row of pieces */\ ReadRow();\ break;\ \ case IDM_ReadColumn: /* Read the current column of pieces */\ ReadColumn();\ break;\ \ case IDM_SayCurrentPos: /* Say current position including color */\ SayCurrentPos();\ break;\ \ case IDM_SayAllBoard: /* Say the whole board from bottom to top */\ SayAllBoard();\ break;\ \ case IDM_SayMachineMove: /* Say the last move made */\ timeflag = 1;\ SayMachineMove(1);\ break;\ \ case IDM_SayUpperDiagnols: /* Says the diagnol positions above you */\ SayUpperDiagnols();\ break;\ \ case IDM_SayLowerDiagnols: /* Say the diagnol positions below you */\ SayLowerDiagnols();\ break;\ \ case IDM_SayBlackPieces: /*Say the opponents pieces */\ SayPieces(BlackPlay);\ break;\ \ case IDM_SayWhitePieces: /*Say the opponents pieces */\ SayPieces(WhitePlay);\ break;\ \ case IDM_SayClockTime: /*Say the clock time */\ SayClockTime();\ break;\ \ case IDM_SayWhosTurn: /* Say whos turn it its */\ SayWhosTurn();\ break;\ \ case IDM_SayKnightMoves: /* Say Knights (L-shaped) move */\ SayKnightMoves();\ break;\ \ case OPT_PonderNextMove: /* Toggle option setting */\ Toggle(&appData.ponderNextMove, "ponder");\ break;\ \ case OPT_AnimateMoving: /* Toggle option setting */\ Toggle(&appData.animate, "animate moving");\ break;\ \ case OPT_AutoFlag: /* Toggle option setting */\ Toggle(&appData.autoCallFlag, "auto flag");\ break;\ \ case OPT_AlwaysQueen: /* Toggle option setting */\ Toggle(&appData.alwaysPromoteToQueen, "always promote to queen");\ break;\ \ case OPT_TestLegality: /* Toggle option setting */\ Toggle(&appData.testLegality, "legality testing");\ break;\ \ case OPT_HideThinkFromHuman: /* Toggle option setting */\ Toggle(&appData.hideThinkingFromHuman, "hide thinking");\ ShowThinkingEvent();\ break;\ \ case OPT_SaveExtPGN: /* Toggle option setting */\ Toggle(&appData.saveExtendedInfoInPGN, "extended P G N info");\ break;\ \ case OPT_ExtraInfoInMoveHistory: /* Toggle option setting */\ Toggle(&appData.showEvalInMoveHistory, "extra info in move histoty");\ break;\ \ #define JAWS_ACCEL \ !(!frozen && TranslateAccelerator(hwndMain, hAccelJAWS, &msg)) && #define JAWS_INIT if (!InitJAWS()) return (FALSE); #define JAWS_DELETE(X) #define JAWS_SILENCE if(suppressClocks) return; #define JAWS_COPYRIGHT \ SetDlgItemText(hDlg, OPT_MESS, "Auditory/Keyboard Enhancements By: Ed Rodriguez (sort of)"); #define SAY(S) SayString((S), TRUE) #define SAYMACHINEMOVE() SayMachineMove(0) // After inclusion of this file somewhere early in winboard.c, the remaining part of the patch // is scattered over winboard.c for actually calling the routines. xboard-4.9.1/winboard/resource.h0000644000175000001440000006711012717001265013534 00000000000000//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by winboard.rc // #define MANIFEST_RESOURCE_ID 1 #define IDM_NewGame 100 #define IDM_LoadGame 101 #define IDM_SaveGame 102 #define IDM_Exit 103 #define IDM_LoadPosition 104 #define IDM_SavePosition 105 #define IDM_EditPosition 106 #define IDM_FlipView 107 #define IDM_MachineWhite 108 #define IDM_MachineBlack 109 #define IDM_TwoMachines 110 #define IDM_EditGame 111 #define IDM_Forward 112 #define IDM_Backward 113 #define IDM_ToEnd 114 #define IDM_ToStart 115 #define IDM_Pause 116 #define IDM_CallFlag 117 #define IDM_Draw 118 #define IDM_SaveDiagram 119 #define IDM_Abort 120 #define IDM_Adjourn 122 #define IDM_Resign 124 #define IDM_Hint 125 #define IDM_IcsClient 126 #define IDM_TimeControl 131 #define IDM_LoadOptions 132 #define IDM_SaveOptions 133 #define IDM_EditGame2 134 #define IDM_EditPosition2 135 #define IDM_CommPort 147 #define IDM_EditComment 148 #define IDM_LoadNextGame 149 #define IDM_LoadPrevGame 150 #define IDM_ReloadGame 151 #define IDM_Accept 153 #define IDM_Decline 154 #define IDM_StopObserving 155 #define IDM_StopExamining 156 #define IDM_Revert 157 #define IDM_TruncateGame 158 #define IDM_MoveNow 159 #define IDM_RetractMove 160 #define IDM_Upload 161 #define IDM_MailMove 164 #define IDM_ReloadCMailMsg 165 #define IDM_Book 166 #define IDM_AboutGame 167 #define IDM_EditServers 169 #define IDM_ShowGameList 170 #define IDM_EditTags 171 #define IDM_Tags 172 #define IDM_Comment 173 #define IDM_Debug 174 #define IDM_EditProgs1 175 #define IDM_LoadProg1 176 #define IDM_AnalysisMode 177 #define IDM_AnalyzeFile 178 #define IDM_Annotate 179 #define IDM_CopyGame 180 #define IDM_PasteGame 181 #define IDM_CopyPosition 182 #define IDM_PastePosition 183 #define IDM_NewVariant 184 #define IDM_TypeInName 185 #define IDM_MachineBoth 186 #define IDM_MuteSounds 187 #define IDM_Match 188 #define IDM_CreateBook 189 #define OPT_TCtext1 202 #define OPT_TCTime 203 #define OPT_TCtext2 204 #define OPT_Autosave 206 #define OPT_AVPrompt 208 #define OPT_AVToFile 209 #define OPT_AVFilename 210 #define OPT_Autostep 214 #define OPT_ASTimeDelay 215 #define OPT_AStext1 216 #define OPT_TCMoves 217 #define IDM_HELPCONTENTS 300 #define IDM_HELPSEARCH 301 #define IDM_HELPHELP 302 #define IDM_ABOUT 303 #define IDM_CommandX 310 #define IDM_CommandXLast 399 #define DLG_TimeControl 400 #define ABOUTBOX_Version 401 #define OPT_TCUseMoves 402 #define OPT_TCUseInc 403 #define OPT_TCitext1 405 #define OPT_TCitext2 406 #define OPT_TCInc 407 #define OPT_TCitext3 408 #define OPT_TCTime2 409 #define OPT_TCOdds1 410 #define OPT_TCOdds2 411 #define OPT_TCUseFixed 412 #define OPT_TCFixed 413 #define OPT_TCftext 414 #define DLG_PremoveOptions 450 #define DLG_GeneralOptions 453 #define DLG_IcsOptions 454 #define DLG_BoardOptions 455 #define DLG_Fonts 456 #define DLG_NewGameFRC 457 #define DLG_GameListOptions 458 #define DLG_MoveHistory 459 #define IDM_ThemeOptions 460 #define DLG_EvalGraph 461 #define DLG_EngineOutput 463 #define DLG_EnginePlayOptions 464 #define IDI_WHITE_14 466 #define IDI_BLACK_14 467 #define DLG_OptionsUCI 467 #define IDI_PONDER_14 468 #define IDI_TRANS_14 469 #define IDI_CLOCK_14 470 #define IDI_UNKNOWN_14 471 #define IDI_BALOON_14 472 #define IDI_ANALYZE_14 473 #define IDI_ANALYZE2_14 474 #define DLG_Promotion 500 #define PB_Queen 502 #define PB_Rook 503 #define PB_Bishop 504 #define PB_Knight 505 #define PB_Chancellor 506 /* [HGM] Capablanca pieces */ #define PB_Archbishop 507 #define IDC_Yes 520 #define IDC_No 521 #define IDC_Centaur 522 #define EP_White 600 #define EP_WhitePawn 601 #define EP_WhiteKnight 602 #define EP_WhiteBishop 603 #define EP_WhiteRook 604 #define EP_WhiteQueen 605 #define EP_Black 606 #define EP_BlackPawn 607 #define EP_BlackKnight 608 #define EP_BlackBishop 609 #define EP_BlackRook 610 #define EP_BlackQueen 611 #define EP_EmptySquare 612 #define EP_ClearBoard 613 #define EP_WhiteKing 614 #define EP_BlackKing 615 #define DP_Pawn 616 #define DP_Knight 617 #define DP_Bishop 618 #define DP_Rook 619 #define DP_Queen 620 #define EP_WhiteCardinal 630 #define EP_WhiteMarshall 631 #define EP_WhiteAlfil 632 #define EP_WhiteCannon 633 #define EP_WhiteFerz 634 #define EP_WhiteWazir 635 #define EP_BlackCardinal 640 #define EP_BlackMarshall 641 #define EP_BlackAlfil 642 #define EP_BlackCannon 643 #define EP_BlackFerz 644 #define EP_BlackWazir 645 #define EP_Promote 650 #define EP_Demote 651 #define DLG_LoadOptions 700 #define DLG_SaveOptions 800 #define OPT_PGN 802 #define OPT_Old 803 #define DLG_CommPort 900 #define OPT_Port 901 #define OPT_DataRate 902 #define OPT_Bits 903 #define OPT_Parity 904 #define OPT_StopBits 905 #define OPT_Flow 910 #define OPT_SerialHelp 911 #define DLG_BoardSize 1000 #define OPT_Small 1001 #define OPT_SizeSmall 1001 #define OPT_Medium 1002 #define OPT_SizeBulky 1002 #define OPT_Large 1003 #define DLG_EditComment 1004 #define OPT_ClearComment 1005 #define OPT_EditComment 1006 #define OPT_CommentText 1007 #define DLG_ViewComment 1008 #define DLG_GameList 1009 #define OPT_GameListPrev 1010 #define OPT_GameListText 1011 #define OPT_GameListLoad 1012 #define OPT_GameListNarrow 1010 #define OPT_GameListNext 1013 #define OPT_GameListClose 1014 #define DLG_EditTags 1015 #define OPT_TagsText 1016 #define DLG_Analysis 1017 #define OPT_AnalysisText 1018 #define DLG_Error 1019 #define OPT_ErrorIcon 1020 #define IDD_DIALOG1 1021 #define DLG_ConsoleRich 1022 #define IDC_EDIT1 1023 #define OPT_DarkSquareColor 1023 #define IDC_GameListFilter 1023 #define IDC_NFG_Edit 1023 #define IDC_EpDrawMoveCount 1023 #define IDC_PolyglotDir 1023 #define OPT_TagsSave 1023 #define OPT_ConsoleText 1024 #define OPT_LightSquareColor 1024 #define OPT_CommandInput 1025 #define OPT_WhitePieceColor 1025 #define OPT_QuestionInput 1026 #define OPT_BlackPieceColor 1026 #define OPT_ChessEngineName 1027 #define OPT_HighlightSquareColor 1027 #define OPT_WavFileName 1028 #define OPT_PremoveHighlightColor 1028 #define OPT_IndexNumber 1029 #define OPT_SampleLightSquare 1029 #define OPT_Move 1030 #define OPT_SampleDarkSquare 1030 #define OPT_PremoveWhiteText 1031 #define IDC_EDIT2 1032 #define IDC_EpAdjudicationThreshold 1032 #define IDC_HashSize 1032 #define OPT_ConsoleInput 1033 #define OPT_AdditionalOptions 1034 #define OPT_PremoveBlackText 1035 #define OPT_ErrorText 1036 #define OPT_IcsAlarmTime 1037 #define OPT_Name 1038 #define DLG_Console 1100 #define DLG_PromotionKing 1102 #define DLG_Colorize 1106 #define DLG_Command 1122 #define DLG_Question 1123 #define DLG_Startup 1124 #define DLG_Sound 1127 #define DLG_IndexNumber 1149 #define DLG_TypeInMove 1151 #define DLG_TypeInName 1152 #define OPT_IndexNumberOld 1155 #define IDM_Rematch 1203 #define IDA_PAGEUP 1216 #define IDA_PAGEDOWN 1217 #define IDA_CTRLHOME 1218 #define IDA_CTRLEND 1219 #define IDA_TAB 1221 #define IDM_SaveSettings 1223 #define IDM_Iconize 1224 #define IDM_DirectCommand1 1226 #define IDM_DirectCommand2 1227 #define IDM_Copy 1229 #define IDM_Paste 1230 #define IDM_MatchX 1231 #define IDM_ObserveX 1232 #define IDM_FingerX 1233 #define IDM_TellX 1234 #define IDM_QuickPaste 1235 #define IDM_MessageX 1237 #define IDM_VarsX 1238 #define IDM_Cut 1240 #define IDM_Undo 1242 #define IDM_SelectAll 1243 #define IDM_SaveSettingsOnExit 1280 #define IDM_LoadNextPosition 1286 #define IDM_ReloadPosition 1287 #define IDM_LoadPrevPosition 1288 #define IDM_TypeInMove 1291 #define IDM_PopupExitMessage 1292 #define IDM_Training 1293 #define IDM_GeneralOptions 1299 #define IDM_BoardOptions 1300 #define IDM_Fonts 1301 #define IDM_UserAdjudication_White 1302 #define IDM_UserAdjudication_Black 1303 #define IDM_UserAdjudication_Draw 1304 #define IDM_NewGameFRC 1305 #define IDM_GameListOptions 1306 #define PB_King 1307 #define IDM_ShowMoveHistory 1307 #define IDM_PasteAny 1309 #define IDM_ShowEvalGraph 1310 #define IDM_CopyGameListToClipboard 1311 #define OPT_Bold 1312 #define IDM_ShowEngineOutput 1312 #define OPT_Italic 1313 #define IDM_EnginePlayOptions 1313 #define OPT_Underline 1314 #define IDM_OptionsUCI 1314 #define OPT_Strikeout 1315 #define OPT_ChooseColor 1316 #define OPT_Sample 1318 #define OPT_SampleSShout 1319 #define OPT_CancelComment 1320 #define OPT_SampleChannel1 1320 #define OPT_SampleChannel 1321 #define OPT_SampleKibitz 1322 #define OPT_SampleTell 1324 #define OPT_EditTags 1325 #define OPT_SampleChallenge 1325 #define OPT_TagsCancel 1326 #define OPT_SampleRequest 1326 #define OPT_CommandText 1327 #define OPT_QuestionText 1327 #define OPT_SampleSeek 1327 #define OPT_ChessEngine 1328 #define OPT_SampleNormal 1328 #define OPT_ChessServer 1329 #define OPT_View 1330 #define OPT_ChessServerName 1331 #define OPT_NoSound 1333 #define OPT_DefaultBeep 1334 #define OPT_SystemSound 1335 #define OPT_BuiltInSound 1336 #define OPT_WavFile 1337 #define OPT_BuiltInSoundName 1339 #define OPT_SystemSoundName 1340 #define OPT_BrowseSound 1341 #define OPT_PlaySound 1342 #define OPT_AVBrowse 1343 #define OPT_SecondChessEngineName 1344 #define OPT_AnyAdditional 1345 #define OPT_Premove 1346 #define OPT_PremoveWhite 1347 #define OPT_PremoveBlack 1348 #define OPT_IcsAlarm 1349 #define CBO_Sounds 1350 #define OPT_DefaultSounds 1351 #define OPT_AlwaysOnTop 1352 #define OPT_AutoCreate 1352 #define OPT_AutoFlag 1353 #define OPT_AlwaysQueen 1354 #define OPT_AutoComment 1458 #define OPT_AnimateDragging 1355 #define OPT_AutoObserve 1355 #define OPT_AnimateMoving 1356 #define OPT_GetMoveList 1356 #define OPT_AutoFlipView 1357 #define OPT_LocalLineEditing 1357 #define OPT_HighlightDragging 1358 #define OPT_QuietPlay 1358 #define OPT_HighlightLastMove 1359 #define OPT_PeriodicUpdates 1360 #define OPT_ChooseLightSquareColor 1360 #define OPT_PonderNextMove 1361 #define OPT_ChooseDarkSquareColor 1361 #define OPT_PopupExitMessage 1362 #define OPT_ChooseWhitePieceColor 1362 #define OPT_PopupMoveErrors 1363 #define OPT_ChooseBlackPieceColor 1363 #define OPT_ShowCoordinates 1364 #define OPT_ChooseHighlightSquareColor 1364 #define OPT_ShowThinking 1365 #define OPT_ChoosePremoveHighlightColor 1365 #define OPT_TestLegality 1366 #define OPT_Blindfold 1367 #define OPT_SizeTiny 1368 #define OPT_SizeTeeny 1369 #define OPT_SizeDinky 1370 #define OPT_SizePetite 1371 #define OPT_SizeSlim 1372 #define OPT_SizeMediocre 1374 #define OPT_SizeMiddling 1375 #define OPT_SizeAverage 1376 #define OPT_SizeModerate 1377 #define OPT_SizeMedium 1378 #define OPT_SizeLarge 1379 #define OPT_SizeBig 1380 #define OPT_SizeHuge 1381 #define OPT_SizeGiant 1382 #define OPT_SizeColossal 1383 #define OPT_SizeTitanic 1384 #define OPT_Monochrome 1385 #define OPT_DefaultBoardColors 1386 #define OPT_ChooseShoutColor 1387 #define OPT_ChooseSShoutColor 1388 #define OPT_ChooseChannel1Color 1389 #define OPT_ChooseChannelColor 1390 #define OPT_ChooseKibitzColor 1391 #define OPT_ChooseBackgroundColor 1392 #define OPT_ChooseTellColor 1393 #define OPT_ChooseChallengeColor 1394 #define OPT_ChooseRequestColor 1395 #define OPT_ChooseSeekColor 1396 #define OPT_ChooseNormalColor 1397 #define OPT_DefaultColors 1398 #define IDM_Minimize 1400 #define OPT_SampleShout 1400 #define IDM_Sounds 1401 #define OPT_SampleClockFont 1401 #define IDM_IcsOptions 1402 #define OPT_SampleCoordFont 1402 #define OPT_DontColorize 1403 #define OPT_SampleMessageFont 1403 #define OPT_SampleTagFont 1404 #define OPT_SampleCommentsFont 1405 #define OPT_SampleConsoleFont 1406 #define OPT_MessageFont 1407 #define OPT_ClockFont 1408 #define OPT_CoordFont 1409 #define OPT_EditTagsFont 1410 #define OPT_CommentsFont 1411 #define OPT_MessageFont5 1412 #define OPT_ChooseClockFont 1413 #define OPT_ChooseMessageFont 1414 #define OPT_ChooseCoordFont 1415 #define OPT_ChooseTagFont 1416 #define OPT_ChooseCommentsFont 1417 #define OPT_ChooseConsoleFont 1418 #define OPT_DefaultFonts 1419 #define OPT_ChooseMoveHistoryFont 1420 #define OPT_AutoRaiseBoard 1421 #define OPT_SampleMoveHistoryFont 1421 #define OPT_ShowButtonBar 1422 #define OPT_MessageFont6 1422 #define OPT_SaveExtPGN 1423 #define OPT_HideThinkFromHuman 1424 #define IDC_GameListDoFilter 1425 #define IDC_NFG_Random 1426 #define IDC_NFG_Label 1427 #define IDC_GameListTags 1428 #define IDC_GLT 1429 #define IDC_GLT_Up 1430 #define IDC_GLT_Down 1431 #define IDC_GLT_Restore 1432 #define IDC_GLT_Default 1433 #define IDC_GLT_RestoreTo 1434 #define IDC_MoveHistory 1435 #define OPT_OutOfBookInfo 1436 #define OPT_ExtraInfoInMoveHistory 1437 #define OPT_HighlightMoveArrow 1438 #define OPT_AutoLogo 1439 #define OPT_AutoTags 1440 #define OPT_Headers 1441 #define OPT_Variations 1442 #define OPT_AutoExtend 1443 #define IDC_BUTTON1 1440 #define IDC_BrowseForPolyglotDir 1440 #define IDC_BrowseForEGTB 1441 #define IDC_BrowseForBook 1442 #define IDC_EngineMemo1 1443 #define IDC_EngineMemo2 1444 #define IDC_EngineLabel1 1445 #define IDC_EngineLabel2 1446 #define IDC_EpShowThinking 1447 #define IDC_EpHideThinkingHuman 1448 #define IDC_EpPonder 1449 #define IDC_EpPeriodicUpdates 1450 #define IDC_Engine1_NPS 1451 #define IDC_Engine2_NPS 1452 #define IDC_Color1 1459 #define IDC_Color2 1460 #define IDC_StateIcon1 1461 #define IDC_StateData1 1462 #define IDC_StateData2 1463 #define IDC_StateIcon2 1464 #define IDC_PathToEGTB 1466 #define IDC_SizeOfEGTB 1467 #define IDC_BookFile 1469 #define IDC_UseBook 1470 #define IDC_OwnBook1 1471 #define IDC_OwnBook2 1472 #define IDC_Cores 1473 #define IDC_BookDep 1474 #define IDC_BookStr 1475 #define IDC_Games 1476 #define DLG_NewVariant 1500 #define OPT_VariantGothic 1501 #define OPT_VariantCrazyhouse 1502 #define OPT_VariantBughouse 1503 #define OPT_VariantCourier 1504 #define OPT_VariantShatranj 1505 #define OPT_VariantShogi 1506 #define OPT_VariantXiangqi 1507 #define OPT_VariantCapablanca 1508 #define OPT_VariantTwoKings 1509 #define OPT_VariantKnightmate 1510 #define OPT_VariantLosers 1511 #define OPT_VariantSuicide 1512 #define OPT_VariantAtomic 1513 #define OPT_VariantNormal 1514 #define OPT_VariantFairy 1515 #define OPT_VariantFRC 1516 #define OPT_VariantCylinder 1517 #define OPT_VariantFalcon 1518 #define OPT_VariantCRC 1519 #define OPT_VariantBerolina 1520 #define OPT_VariantSuper 1521 #define OPT_VariantJanus 1522 #define OPT_VariantWildcastle 1523 #define OPT_VariantNocastle 1524 #define OPT_VariantGiveaway 1525 #define OPT_Variant3Check 1526 #define OPT_VariantGreat 1527 #define OPT_VariantTwilight 1528 #define OPT_VariantMakruk 1529 #define OPT_VariantSChess 1530 #define OPT_VariantSpartan 1531 #define OPT_VariantASEAN 1532 #define OPT_VariantGrand 1534 #define OPT_VariantLion 1535 #define OPT_EngineVariant 1560 #define IDC_Files 1550 #define IDC_Ranks 1551 #define IDC_Holdings 1552 #define IDC_TestClaims 1600 #define IDC_DetectMates 1601 #define IDC_MaterialDraws 1602 #define IDC_TrivialDraws 1603 #define IDC_RuleMoves 1604 #define IDC_DrawRepeats 1605 #define IDC_ScoreAbs1 1606 #define IDC_ScoreAbs2 1607 #define IDM_FlipClock 1700 #define OPT_AllWhite 1701 #define OPT_UpsideDown 1702 #define DLG_Chat 1720 #define IDC_Change 1721 #define IDC_ChatPartner 1722 #define IDC_ChatMemo 1723 #define OPT_ChatInput 1724 #define IDC_Clear 1725 #define IDC_Send 1726 #define IDM_NewChat 1727 #define IDC_Focus1 1730 #define IDC_Focus2 1731 #define IDC_Focus3 1732 #define IDC_Focus4 1733 #define OPT_SeekGraph 1750 #define OPT_AutoRefresh 1751 #define OPT_BgObserve 1752 #define OPT_DualBoard 1753 #define OPT_SmartMove 1754 #define OPT_StartupChatBoxes 1755 #define OPT_AutoKibitz 1756 #define IDC_SPECIFY_ENG_STATIC 1814 #define IDC_SPECIFY_SERVER_STATIC 1815 #define OPT_MESS 1818 #define IDM_Engine1Options 1890 #define IDM_Engine2Options 1891 #define IDM_EditBook 1892 #define IDM_Tourney 1894 #define IDC_STATIC -1 // static strings that were made dynamic to allow run-time translation #define IDC_Babble 1900 #define GPB_Factors 1901 #define IDC_Factor1 1902 #define IDC_Factor2 1903 #define IDC_Directories 1904 #define IDC_IndexNr 1905 #define IDC_Port 1906 #define IDC_Rate 1907 #define IDC_Bits 1908 #define IDC_Parity 1909 #define IDC_Stop 1910 #define IDC_Flow 1911 #define IDC_ChessBoard 1912 #define IDC_Welcome 1913 #define IDC_Index 1914 #define IDC_Event 1915 #define IDC_Sec 1916 #define IDC_Boxes 1917 #define GPB_Premove 1918 #define GPB_General 1919 #define GPB_Colors 1920 #define GPB_Alarm 1921 #define IDC_Light 1922 #define IDC_Dark 1923 #define IDC_White 1924 #define IDC_Black 1925 #define IDC_High 1926 #define IDC_PreHigh 1927 #define GPB_Size 1928 #define IDC_Height 1929 #define IDC_Width 1930 #define IDC_Hand 1931 #define IDC_Pieces 1932 #define IDC_Def 1933 #define GPB_Board 1934 #define GPB_Current 1935 #define GPB_All 1936 #define IDC_Partner 1937 #define IDC_Draw 1938 #define IDC_Threshold 1939 #define IDC_Moves 1940 #define IDC_Centi 1941 #define IDC_Rule 1942 #define IDC_Repeats 1943 #define GPB_Adjudications 1944 #define GPB_Apply 1945 #define IDC_PolyDir 1946 #define IDC_Hash 1947 #define IDC_Path 1948 #define IDC_Cache 1949 #define IDC_CPU 1950 #define IDC_Depth 1951 #define IDC_Variation 1952 #define IDC_DefGames 1953 #define GPB_Variant 1954 #define OPT_MessageFont7 1955 #define OPT_SampleGameListFont 1956 #define OPT_ChooseGameListFont 1957 #define OPT_elo1 1958 #define OPT_elo2 1959 #define OPT_date 1960 #define OPT_elo1t 1961 #define OPT_elo2t 1962 #define OPT_datet 1963 #define OPT_thresholds 1964 #define OPT_Exact 1965 #define OPT_Subset 1966 #define OPT_Struct 1967 #define OPT_Material 1968 #define OPT_Range 1969 #define OPT_Difference 1970 #define OPT_Stretch 1971 #define OPT_Stretcht 1972 #define OPT_Reversed 1973 #define OPT_SearchMode 1974 #define OPT_Mirror 1975 #define OPT_Bitmaps 1976 #define OPT_PieceFont 1977 #define OPT_MessageFont8 1978 #define OPT_SamplePieceFont 1979 #define OPT_ChoosePieceFont 1980 #define OPT_GameListFind 1981 #define OPT_Grid 1983 #define IDM_LoadProg2 1984 #define OPT_Counts 1985 #define OPT_Ranget 1986 #define IDM_SaveSelected 1987 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 468 #define _APS_NEXT_COMMAND_VALUE 1315 #define _APS_NEXT_CONTROL_VALUE 1471 #define _APS_NEXT_SYMED_VALUE 1404 #endif #endif xboard-4.9.1/winboard/language/0000755000175000001440000000000012717001265013372 500000000000000xboard-4.9.1/winboard/language/romanian.lng0000644000175000001440000013404112717001265015623 00000000000000## WinBoard language file ## ## LANGUAGE NAME IN ENGLISH / TRANSLATED ## v1.0 beta 1 ## ## Translation by NAME (DATE) ## SAME AS ABOVE, TRANSLATED ## WEB ADDRESS OF TRANSLATOR ## ## If you revise this, please insert your date, name and description. ## TRANSLATION OF MESSAGE ABOVE ## TRANSLATION BY 11-oct-2011. Dl Silvian Rucsandescu din Iasi. ## Of duplicats, only the first occurrence will be used, even if it was in ## a different dialog! For this reason you will only see an 'OK' in the ## About Box. After you translated it there, this translation will be used ## for all other dialogs as well. ## o Use ## for comments, to make iteasy to find them scattered throughout the translation ## o Careful with temptation of direct translation, by example 'movimiento' for 'move' when 'jugada' is better. ## o Try to use short phrases, more text doesn't imply more clearness. ## o Check that your translation is right, does it mean what it does? ## o Test your translation, check every dialog. ## o For standard chess names check Wikipedia for confirmation. ## o For menus, assign shortcuts (character &) until you finish the translation. ## preferably it should be unique in the applicable menu, so it depends on translation of other items! winboard.rc MENUS: ## Pleace keep the accelerator-key indications on the menu items, and keep ## the keystrokes the same (for now). (Alt, Ctrl and Shift can be translated.) "&New Game\tCtrl-N" === "Partida Noua" "New Sh&uffle Game..." === "Partida Noua Shuffle" "New &Variant...\tAlt+Shift+V" === "Varianta Noua" "&Load Game...\tCtrl-O" === "Incarca Partida" "&Save Game...\tCtrl-S" === "Salveaza Partida" "L&oad Position...\tCtrl+Shift+O" === "Incarca Pozitia" "S&ave Position...\tCtrl+Shift+S" === "Salveaza Pozitia" "Save as &Diagram..." === "Salveaza ca Diagrama" "&Quit" === "Inchide" ## Next six currently not used "Load &Next Game\tAlt+PgDn" === "Incarca Partida Urmatoare" "Load &Previous Game\tAlt+PgUp" === "Incarca Partida Precedenta" "&Reload Same Game" === "Reincarca Aceeasi Partida" "Load N&ext Position\tAlt+Shift+PgDn" === "Incarca Urmatoarea Pozitie" "Load Pre&vious Position\tAlt+Shift+PgUp" === "Incarca Precedenta Pozitie" "Reload Sa&me Position" === "Reincarca Aceeasi Pozitie" "&Copy Game To Clipboard\tCtrl+C" === "Copie Partida pe Clipboard" "C&opy Position To Clipboard\tCtrl+Shift+C" === "Copie Pozitia pe Clipboard" "Copy Game List to Clipboard" === "Copie Lista Partidelor pe Clipboard" "&Paste Game From Clipboard\tCtrl+V" === "Copie Partida din Clipboard" "P&aste Position From Clipboard\tCtrl+Shift+V" === "Copie Pozitia din Clipboard" "&Edit Game\tCtrl+E" === "Editeaza Partida" "E&dit Position\tCtrl+Shift+E" === "Editeaza Pozitia" "Edit Ta&gs..." === "Editeaza Eticheta" "Edit Co&mment..." === "Editeaza Comentariul" "Enter &Username..." === "Introdu Nume Utilizator" "&Revert\tHome" === "Revenire" "&Annotate" === "Adnotare" "&Truncate Game\tEnd" === "Scurteaza Partida" "&Backward\tAlt+Left" === "Inapoi" "&Forward\tAlt+Right" === "Inainte" "Back to &Start\tAlt+Home" === "Inapoi la Start" "For&ward to End\tAlt+End" === "Inainte la Sfarsit" "Flip &View\tF2" === "Vizualizare Inversa" "&Swap Clocks" === "Schimba Ceasurile" "Engine &Output\tAlt+Shift+O" === "Calculatia Motorului" "Move &History\tAlt+Shift+H" === "Istoricul Mutarilor" "Evaluation &Graph\tAlt+Shift+E" === "Graficul Evaluarii" "Game &List\tAlt+Shift+G" === "Lista Partidelor" "Open &New Chat Window" === "Deschide Fereastra Noua de Chat" "Type In &Move...\tAlt+I" === "Introdu Mutari" "&Tags" === "Eticheta" "&Comments" === "Comentarii" "&Game List Tags..." === "Eticheta Partidei" "&Board..." === "Tabla" "&Fonts..." === "Fonturi" "Machine &White\tCtrl+W" === "Motorul la Alb" "Machine &Black\tCtrl+B" === "Motorul la Negru" "&Two Machines\tCtrl+T" === "Doua Motoare" "Machine Both" === "Ambele Motoare" "&Analysis Mode\tCtrl+A" === "Modul de Analiza" "Analyze &File\tCtrl+F" === "Fisierul de Analizat" "&Edit Game\tCtrl+E" === "Editeaza Partida" "E&dit Position\tCtrl+Shift+E" === "Editeaza Pozitia" "Trai&ning" === "Antrenament" "&ICS Client" === "ICS Client" "&Machine Match" === "Partida Intre Motoare" "&Pause\tPause" === "Pauza" "&Accept\tF3" === "Accept" "D&ecline\tF4" === "Refuz" "Re&match\tF12" === "Rejucare" "Call &Flag\tF5" === "Caderea Steagului" "&Draw\tF6" === "Remiza" "Ad&journ\tF7" === "Intrerupere" "A&bort\tF8" === "Renunt" "&Resign\tF9" === "Cedez" "Stop &Observing\tF10" === "Opreste Observarea" "Stop E&xamining\tF11" === "Opreste Examinarea" "&Upload to Examine" === "Incarca spre Examinare" "Adjudicate to &White" === "Adjudecat la Alb" "Adjudicate to &Black" === "Adjudecat la Negru" "Adjudicate &Draw" === "Adjudecat Remiza" "Install 1st..." === "Instaleaza motorul 1" "Install 2nd..." === "Instaleaza motorul 2" "Engine #&1 Settings..." === "Setare Motorul nr 1" "Engine #&2 Settings..." === "Setare Motorul nr 2" "&Hint..." === "Sugestie" "&Book..." === "Carte de Deschideri" "&Move Now\tCtrl+M" === "Muta Acum" "&Retract Move\tCtrl+X" === "Retrage Mutarea" "&Mute all Sounds" === "Fara Sunet" "&General..." === "Optiuni Generale" "&Time Control...\tAlt+Shift+T" === "Controlul Timpului" "Common &Engine...\tAlt+Shift+U" === "Setari Comune Enginelor UCI" "Ad&judications...\tAlt+Shift+J" === "Adjudecarea" "&Load Game...\tAlt+Shift+L" === "Incarca Partida" "&Save Game...\tAlt+Shift+S" === "Salveaza Partida" "G&ame List..." === "Optiunile Listei de Partide" "Soun&ds..." === "Sunetul" "&ICS..." === "ICS" "Add ICS..." === "Adauga ICS" "Comm&unications..." === "Comunicatii" "Save Settings &Now" === "Salveaza Setarile Acum" "Save Settings on E&xit" === "Salveaza Setarile la Iesire" "Help &Contents\tF1" === "Continutul Ajutorului" "Help &Index" === "Indexul Ajutorului" "How to &Use Help" === "Cum se Foloseste Ajutorul" "&About WinBoard" === "Despre WinBoard" "White" === "Albul" "Promote" === "Transforma" "Pawn" === "Pion" "Knight" === "Cal" "Bishop" === "Nebun" "Rook" === "Tura" "Queen" === "Dama" "King" === "Rege" ## The next 2 are pieces for Capablanca Chess. Use the names from the Wikipedia entry for this, ## rather than litteral translations of the English names! "Archbishop" === "Arhiepiscop" "Chancellor" === "Cancelar" ## Next 2 Xiangqi (Chinese Chess) pieces. Google for 'Xiangqi' in the target language to get the standard translation. "Elephant" === "Elefant" "Cannon" === "Tun" "Empty Square" === "Camp Liber" "Black" === "Negru" "Demote" === "Degradeaza" "Clear Board " === "Curata Tabla" ## Next 3: Shogi pieces. "Gold" === "Aur" "Silver" === "Argint" "Lance" === "Lancie" "Drop" === "Cadere" "Cop&y and Paste" === "Copie si Scrie" "&Copy" === "Copie" "&Paste" === "Scrie" "&Undo" === "Revenire" "Cu&t" === "Taie" "&Copy" === "Copie" "&Paste" === "Scrie" "Select &All" === "Selecteaza Totul" DIALOGS: ABOUTBOX ## Pehaps copyright notices best left untranslated? "About WinBoard" === "Despre Winboard" "OK" === "OK" "Chessboard for Windows" === "WinBoard GUI pentru Windows" "Copyright 1991 Digital Equipment Corporation" === "" "Enhancements Copyright 1992-2014 Free Software Foundation" === "" "Enhancements Copyright 2005\r\nAlessandro Scotti" === "" ## What happened with H.G.Muller? [He sold his copyrights to FSF for $1] ## The following string of 6 spaces can be translated to an acknowledgement of the translator, ## like "Traduccin por scar Toledo G.". "Tradus de Dl Silvian Rucsandescu Iasi" === "Tradus de Dl Silvian Rucsandescu Iasi " "WinBoard 0.0.0" === "WinBoard 4.5.3" ABOUTBOX2 ## Weird, it is needed? [Normally not. It is a built-in 'Easter Egg' joke.] "galactic" === "galactic" TIME CONTROL DIALOG "Time Control" === "Controlul Timpului" "Conventional chess clock" === "Ceas Conventional" "Incremental clock" === "Ceas cu Incrementare" "Cancel" === "Anuleaza" ## Next is there really only for the benefit of blind users of the JAWS version... "Use arrow keys to specify which clock setting type, then press tab to alter values." === "Foloseste sagetile pentru a specifica setarile ceasului, apoi apsai butonul pentru a modifica valorile." "Fixed time per move" === "Timp fix pe mutare" "Number of moves:" === "Numarul de mutari" "Within number of minutes:" === "In numarul de minute " "Initial number of minutes:" === "Numarul initial de minute" "Plus number of seconds per move:" === "Plus numarul de secunde pe mutare" "Maximum seconds per move:" === "Maximul de secunde pe mutare" "Time-Odds Factors:" === "Timpi Diferiti" "Engine #1:" === "Motorul nr 1" "Engine #2:" === "Motorul nr 2" LOAD OPTIONS "Load Game Options" === "Incarca Optiunile Partidei" "Load games with &automatic stepping" === "Incarca partidele cu rulare automata" "&seconds per move" === "secunde pe mutare" "when filtering game list on position, use thresholds:" === "cand se filtreaza lista de partide dupa pozitie , foloseste limitele" "Search Mode: " === "Modul de Cautare" "Match exact &position" === "Cauta pozitia exacta" "Match if position is s&ubset" === "Cauta daca pozitia este continuta" "Match material with e&xact pawn structure" === "Cauta pozitii cu aceeasi structura de pioni" "Match &material" === "Cauta material" "Material &range (upper board-half is optional)" === "Gama de material (jumtatea de sus a tablei este opionala)" "Material &difference (optional material balanced)" === "Diferenta materiala (material optional echilibrat)" "Also match reversed &colors" === "Cauta de asemenea culorile inversate" "Also match &left-right mirror image" === "Cauta de asemenea imaginea in oglinda stanga-dreapta" "minimum Elo for &best player" === "ELO minim pentru cel mai bun jucator" "minimum Elo for &weakest players" === "ELO minim pentru cel mai slab jucator" "or later &year" === "sau mai tarziu anul" "co&nsecutive positions" === "pozitii consecutive" SAVE OPTIONS DIALOG "Save Game Options" === "Salveaza Optiunile Partidei" "Save As: " === "Salveaza ca" "Save games automatically" === "Salveaza partidele automat" "Prompt for filename" === "Prompter pentru numele fisierului" "To file:" === "Spre fisierul" "PGN" === "PGN" "Old" === "Vechi" "Browse..." === "Cauta" "Save out of book info in PGN" === "Salveaza iesirea din cartea de deschideri in PGN" 1536 ## This dialog is only used in some older Windows versions, so you might not be ableto test it. "Open" === "Deschide" "File &Name:" === "Denumirea Fisierului" "&Directories:" === "Directorul" "List Files of &Type:" === "Listeaza Fisierele de Tipul" "Dri&ves:" === "Partitia" "&Help" === "Ajutor" "&Index number:" === "Numarul de index" COMMPORT ## Always disabled if you are not actually using an ICS through a comport, so difficult to test. "Communication Port Settings" === "Setarile Portului de Comunicare" "Net&work..." === "Reteaua" "&Port:" === "Port" "Data &Rate:" === "Rata de Transfer a Datelor" "Data &Bits:" === "Numarul de Biti ai datelor" "P&arity:" === "Paritatea" "&Stop Bits:" === "Stop Biti" "F&low:" === "Functionare" EDIT COMMENT "Edit Comment" === "Editeaza Comentariul" "&Clear" === "Sterge" "&Edit" === "Editeaza" PROMOTION POPUP "Promote to:" === "Transforma in" ## next used in Shogi as promotion-popup header "Promote?" === "Transformi?" "Promotion" === "Transformare" "&Queen" === "Regina" "&Rook" === "Turn" "&Bishop" === "Nebun" "K&night" === "Cal" "&King" === "Rege" "&Cancel" === "Anuleaza" "Chance&llor" === "Cancelar" "&Archbishop" === "Arhiepiscop" "YES" === "DA" "NO" === "NU" "C&entaur" === "Centaur" GAME LIST "Game List" === "Lista Partidelor" "&Load" === "Incarca" "&Prev" === "Precedenta" "&Next" === "Urmatoarea" "&Close" === "Inchide" "Filter" === "Filtreaza" EDIT TAGS "Edit Tags" === "Editeaza Eticheta" ERROR "ICS Interaction" === "Interactiune ICS" "Dialog" === "Dialog" "Error" === "Eroare" ## I don't think the next will really appear ever. "Sorry Charlie" === "Imi pare rau Charlie" COLORIZE "I C S Interaction Colors" === "Interactiunea culorilor I C S" "Interaction Colors" === "Interactiunea Culorilor" "Premove" === "Mutare Anticipata" "Alarm" === "Alarma" "Colors" === "Culori" "&Choose Color..." === "Alege Culoarea" "&Bold" === "" "&Italic" === "" "&Underline" === "Subliniaza" "&Strikeout" === "Barat" QUESTION ## next one seems only a placeholder, and never appears? [might also be just a programmer's joke...] "Enter a chess engine command or just type something stupid that will completely screw things up." === "Abracadabra" "Question" === "Intrebare" "Enter" === "Introdu" STARTUP DIALOG "WinBoard Startup" === "Pornire WinBoard" "What would you like to do?" === "Ce ai dori s facei ?" "&Play against a chess engine or match two engines" === "Joaca contra unui motor de sah sau meci inte doua motoare" "&Use an Internet Chess Server" === "Foloseste un Server de Sah pe Internet" "Just &view or edit game files" === "Vizualizeaza sau editeaza fisierele partidelor" "Specify Chess &Engines:" === "Specifica Motoarele de Sah" "Specify Chess &Server:" === "Specifica Serverul de Sah" "&Additional options" === "Optiuni Suplimentare" INDEX (IN FILE-BROWSE DIALOG) "Inde&x number:" === "Numarul de index" MOVE TYPE-IN "Type in a move" === "Introdu o mutare" USER-NAME TYPE-IN "Type in your name" === "Scriei numele Dvs" SOUND DIALOG "Sounds" === "Sunetul" "&Event:" === "Evenimentul" "&No sound" === "Fara sunet" "&Default beep" === "Bip default" "&Built-in sound:" === "Sunetul continut de program " "&WAV file:" === "Fisier WAV" "B&rowse..." === "Cauta" "&Play" === "Joaca" "&Defaults" === "Defaults" GENERAL OPTIONS DIALOG ## pleace keep the indication of the accelerator keys for the same keystroke ## Note: finely tuned spaces to align keys at right "General Options" === "Optiuni Generale" "Always on &Top" === "Intotdeauna Deasupra" "Always &Queen Ctrl+Shift+Q" === "Intotdeauna Dama" "Animate &Dragging" === "Tragere Animata" "&Animate Moving Ctrl+Shift+A" === "Mutare Animata" "Auto &Flag Ctrl+Shift+F" === "Steag Automat" "Auto Flip &View" === "Intoarce Tabla Automat" "Auto &Raise Board" === "Fereastra Deasupra" "&Blindfold" === "Sah Orb" "Highlight Dra&gging" === "Marcheaza campurile de plecare - sosire" "Highlight Last &Move" === "Marcheaza ultima mutare" "Periodic &Updates" === "Updateuri periodice" "Ponder &Next Move Ctrl+Shift+P" === "Motorul permanent" "&Popup Exit Message" === "Afiseaza un mesaj inainte de iesire" "Popup Move &Errors" === "Afiseaza un mesaj la mutarile gresite" "Show Butt&on Bar" === "Afiseaza bara cu butoanele de comanda" "Show &Coordinates" === "Afiseaza coordonatele" "&Show Thinking" === "Arata calculatia motorului" "Test &Legality Ctrl+Shift+L" === "Testeaza legalitatea mutarii" "&Hide Thinking Ctrl+Shift+H" === "Ascunde calculatia motorului" "&Info in Move History Ctrl+Shift+I" === "Informatii in lista de mutari" "&Send Engine Think" === "Transmite calculatia motorului" "E&xtended PGN Info Ctrl+Shift+X" === "Informatii PGN extinse" "Highlight with Arro&w" === "Marcheaza cu sageata" "Displa&y Logos" === "Afiseaza logourile motoarelor" "One-Click Move" === "Mutare printr-un click" ICS OPTIONS "ICS Options" === "Optiunile ICS" "&Auto Comment" === "Comentariu Automat" "Auto &Observe" === "Observatie Automata" "&Get Move List" === "Primeste Lista de Mutari" "&Local Line Editing" === "Editarea Liniei Locale" "&Quiet Play" === "Joc Tacut" "&Premove" === "Mutare Anticipata" "&White first move" === "Albul are prima mutare" "&Black first move" === "Negrul are prima mutare" "&Sound alarm at" === "Suna alarma la" "seconds" === "secunde" "Choose..." === "Alege" "Do ¬ colorize messages" === "Nu colora mesajele" "&Auto Kibitz" === "Auto Kibitz" "Auto Kibit&z" === "Auto Kibitz" "See&k Graph" === "Cerceteaza Graficul" "auto-&Refresh" === "Auto-Refresh" "Bckgnd Obser&ve" === "Observare din background" "&Dual Board" === "Tabla duala" "One-Click &Move" === "Mutare printr-un click" "Background..." === "In spate" "&Defaults..." === "Implicite" "Startup &Chat Boxes:" === "Porneste Boxele de Conversatie" "General" === "General" BOARD OPTIONS ## (NOTE: AllWhite uses the white (outline-style) piece bitmaps for both sides ## FlipBlack draws the black pieces upside down) "Board Options" === "Optiunile Tablei" "Defaults" === "Implicite" "Light Squares" === "Campuri deschise" "Dark Squares" === "Campuri inchise" "White Pieces" === "Piesele Albe" "Black Pieces" === "Piesele Negre" "Square Highlights" === "Marcheaza Campul" "Premove Highlights" === "Marcheaza Anticipata" "Monochrome" === "Monocrom" "All White" === "Totul Alb" "Flip Black" === "Intoarce Negrele" "Size" === "Marimea" BOARD SIZES (translate as number?) ## Don't put numbers, or nobody will translate them. [True. But do we really want them translated?] ## This is a space for imagination! "&Tiny" === "Foarte Mica" "T&eeny" === "Mititica" "&Dinky" === "Micuta" "&Petite" === "Mica 1" "Sl&im" === "Mica 2" "&Small" === "Mica" "Medi&ocre" === "Nu chiar mica" "&Middling" === "Mijlocie" "&Average" === "Normala" "Mode&rate" === "Moderata" "Medi&um" === "Medie" "Bul&ky" === "Groasa" "&Large" === "Larga" "&Big" === "Mare" "&Huge" === "Enorma" "&Giant" === "Giganta" "&Colossal" === "Colosala" "Tita&nic" === "Titanica" FONTS "Fonts" === "Fonturi" "Current Board Size" === "Marimea curenta a Tablei" "All Board Sizes" === "Toate marimile Tablei" "&Revert to Defaults" === "Revenire la Implicite" "Clocks" === "Ceasurile" "Messages" === "Mesajele" "Coordinates" === "Coordonatele" "Tags" === "Etichetele" "Comments" === "Comentariile" "I C S Interaction" === "Interactiune I C S" "&Color..." === "Culoarea..." "Move History, Engine Output" === "Lista Mutarilor,Calculatia Motorului" ADJUDICATIONS DIALOG "Adjudications" === "Adjudecarea" "Ponder Next Move" === "Calculeaza Urmatoarea Mutare" "Enable and Show Thinking (recommended)" === "Comuteaza si Arata Calculatia (recomandat)" "Hide Thinking when Playing against Human" === "Ascunde Calculatia la Jocul contra Oamenilor " "Periodic Updates (for Analysis Mode)" === "Updateuri Periodice (pentru Modul de Analiza)" "Adjudications in non-ICS games" === "Adjudecarea in partidele non-ICS" "Adjudicate draw after:" === "Adjudeca remiza dupa" "moves" === "mutari" "Win/loss adjudication threshold:" === "limita de adjudecare castig/pierdere" "centipawns" === "centipioni" "&Verify Engine Claims" === "Verifica Solicitarile Motorului" "Detect &Mates" === "Detecteaza Maturile" "Draw if &Insufficient Material" === "Remiza daca Materialul este Insuficient" "Adjudicate &Trivial Draws" === "Adjudeca Remizele Clare" "Apply" === "Aplica" ## next 2 are suffixed to a text-edit containing a number (50 or 3) "-move rule" === "-regula celor 50" "-fold repeats" === "-a repetare" "Engine #1 Score is Absolute" === "Motorul 1 Scorul este Absolut" "Engine #2 Score is Absolute" === "Motorul 2 Scorul este Absolut" COMMON ENGINE DIALOG "Common Engine Settings" === "Setari Comune Enginelor UCI" "Polyglot Directory:" === "Directorul pt. Polyglot" "Hash Size (MB):" === "Marimea Hashului (MB)" "EGTB Path:" === "Adresa bazelor de final" "EGTB Size (MB):" === "Hashul bazelor de final (MB)" "Use Book:" === "Utilizeaza Cartea" "Max nr of CPUs:" === "Nr. max. de CPUs" "First has Own Book" === "Albul are cartea sa" "Second has Own Book" === "Negrul are cartea sa" "Book Depth:" === "Profunzimea Cartii" "Book Variation:" === "Variatia Cartii" "Default Match Games:" === "Meciuri Implicite" NEW-VARIANT DIALOG ## (NOTE: the 'holdings' are the pieces standing next to the board ('in hand') "Variants" === "Variantele de Sah" "Variant" === "Varianta" "Board size:" === "Marimea tablei" "ranks" === "randuri" "files" === "coloane" "Holdings with room for:" === "Pegatiti-va pentru" "pieces" === "piese" "('-1' means defaults for selected variant)" === "('-1' inseamna "implicit" pentru varianta selectata)" VARIANT NAMES: "&normal" === "" "&FRC" === "" "&wildcastle" === "" "&nocastle" === "" "&losers" === "" "&giveaway" === "" "s&uicide" === "" "&3Check" === "" "&twokings" === "" "&atomic" === "" "cra&zyhouse" === "" "&bughouse" === "" "&Twilight" === "" "Sp&artan" === "" "&shogi" === "" "su&per" === "" "&knightmate" === "" "&Berolina" === "" "c&ylinder" === "" "&fairy" === "" "&makruk" === "" "&gothic" === "" "&capablanca" === "" "&Janus" === "" "&CRC" === "" "&Falcon" === "" "cou&rier" === "" "&Great" === "" "&Shatranj" === "" "&xiangqi" === "" NEW SHUFFLE GAME "New Shuffle Game" === "Partida Noua Shuffle" "&Start Position Number:" === "Pozitia de Start Numarul" "Random" === "La Intamplare" GAME-LIST OPTIONS DIALOG "Game List Options" === "Optiunile Listei Partidei" "PGN &Tags:" === "PGN si Etichete" "&Up" === "Sus" "&Down" === "Jos" "Default" === "Implicit" "Factory" === "Fabrica" "Restore to:" === "Restaureaza" MOVE HISTORY WINDOW "Move History" === "Istoricul Mutarilor" EVALUATION GRAPH "Evaluation Graph" === "Graficul de Evaluare" ENGINE OUTPUT WINDOW "Engine output" === "Calculatia Motorului" "Engine #1" === "Motorul nr. 1" "NPS" === "NPS" "Engine #2" === "Motorul nr. 2" CHAT BOXES "Chat Window" === "Fereastra de Conversatie" "Chat partner:" === "Partenerul de Conversatie" "Clear" === "Sterge" "Send" === "Trimite" winboard.c "&File" === "Fisier" "&Edit" === "Editeaza" "&View" === "Vizualizare" "&Mode" === "Mod" "&Action" === "Actiune " "&Step" === "Pas" "E&ngine" === "Motor" "&Options" === "Optiuni" "&Help" === "Ajutor" "You can only start a match from the initial position." === "Puteti incepe o partida doar din pozitia initiala" "Font name too long:" === "Denumirea fontului prea lunga" "Font point size missing:" === "Lipseste marimea fontului" "Can't parse color name %s" === "Nu poate analiza numele culorii %s" "Unrecognized board size value" === "Marimea tablei necunoscuta" "Unrecognized argument" === "Argument necunoscut" "No value provided for argument" === "Nici o valoare alocata argumentului" "Incomplete \\ escape in value for" === "Incomplet \\ pierdere in valoare pentru" "Failed to open indirection file" === "Ratata deschiderea fisierului incorect " "Unrecognized boolean argument value" === "Valoarea argumentului boolean necunoscuta" "Unrecognized argument" === "Argument necunoscut" "Too many colors" === "Prea multe culori" "&Minimize\tCtrl+F4" === "Micsoreaza" "White: %s" === "Albul: %s" "We only care about the height here" === "Avem grija doar de inaltime aici" "Cannot build game list" === "Nu se poate construi lista de partide" "Load Game from File" === "Incarca Partida din Fisierul" "Load Position from File" === "Incarca Pozitia din Fisierul" "Save Game to File" === "Salveaza Partida in Fisierul" "Save Diagram to File" === "Salveaza Diagrama in Fisierul" "Save Position to File" === "Salveaza Pozitia in Fisierul" "%s does not support analysis" === "%s nu suporta analiza" "Analyze Game from File" === "Analizeaza Partida din Fisierul" "Unable to activate help" === "Imposibil sa activeze ajutorul" "Send to chess program:" === "Trimite programului de sah" "Send to second chess program:" === "Trimite programului de sah nr 2" "Direct Command" === "Comanda Directa" "Error loading sound %s" === "Eroare la incarcarea sunetului %s" "Error playing sound %s" === "Eroare la rularea sunetului %s" "File open failed" === "Deschiderea fisierului ratata" "Internal error in file dialog box" === "Eroare interna in casuta de dialog a fisierului" "Option Error" === "Optiunea Eroare" "Choose an option, or cancel to exit" === "Alege o optiune, ori anuleaza pentru iesire" "Unable to activate help" === "Imposibil de activat ajutorul" "Displayed move is not current" === "Mutarea afisata nu este cea curenta" "Could not parse move" === "Nu s-a putut interpreta mutarea" "%s:\nError code %d" === "%s:\nEroare de cod %d" "Error" === "Eroare" "Fatal Error" === "Eroare Fatala" "Exiting" === "Iesind" "%s:\nError code %d" === "%s:\nEroare de cod %d" "Note" === "Nota" "Error writing to chess program" === "Eroare de scris catre programul de sah" "User" === "Utilizator" "Unknown" === "Necunoscut" "White" === "Albul" "Black" === "Negrul" "Save Game to File" === "Salveaza Partida in Fisierul" "Not implemented" === "Neimplementat" "Shout Text" === "Text de Iesire" "SShout/CShout" === "" "Channel 1 Text" === "Text Canal 1" "Channel Text" === "Text Canal" "Kibitz Text" === "Text Kibitz" "Tell Text" === "Spune Textul" "Challenge Text" === "Textul pentru Intrecere" "Request Text" === "Cerere" "Seek Text" === "Textul de Cautare" "Normal Text" === "Text Normal" "None" === "Nimic" "Pawn" === "Pion" "Knight" === "Cal" "Bishop" === "Nebun" "Rook" === "Turn" "Queen" === "Dama" "Information" === "Informatie" wclipbrd.c "Unable to convert position to FEN." === "Imposibil sa transform pozitia in FEN" "Unable to copy FEN to clipboard." === "Imposibil sa copii FEN-ul spre clipboard " "Cannot create temporary file name." === "Nu pot creia un nume de fisier temporar " "Cannot open temporary file." === "Nu pot deschide un fisier temporar" "Cannot write to temporary file." === "Nu pot scrie catre un fisier temporar" "Cannot reopen temporary file." === "Nu pot redeschide fisierul temporar" "Cannot determine size of file." === "Nu pot determina marimea fisierului" "Cannot allocate clipboard buffer." === "Nu pot aloca buferul clipboardului" "Cannot read from temporary file." === "Nu pot citi din fisierul temporar" "Error reading from temporary file." === "Eroare de citire din fisierul temporar" "Cannot copy text to clipboard" === "Nu pot copia textul pe clipboard" "Unable to allocate memory for clipboard." === "Incapabil sa aloc memorie pentru clipboard" "Unable to lock clipboard memory." === "Imposibil sa blochez memoria clipboardului" "Cannot unlock clipboard memory." === "Imposibil sa deblochez memoria clipboardului" "Cannot open clipboard." === "Nu pot deschide clipboardul" "Cannot empty clipboard." === "Nu pot sterge clipboardul" "Cannot copy text to clipboard." === "Nu pot copia textul pe clipboard" "Cannot close clipboard." === "Nu pot inchide clipboardul" "Unable to paste FEN from clipboard." === "Imposibil sa copii FENul din clipboard" "Unable to create temporary file." === "Imposibil sa creiez un fisier temporar" "Error writing to temporary file." === "Eroare de scris in fisierul temporar" "Unable to open clipboard." === "Imposibil sa deschid clipboardul" "No text in clipboard." === "Nici un text in clipboard" "Unable to lock clipboard memory." === "Imposibil sa blochez memoria clipboardului" "Unable to allocate memory for text string." === "Imposibil sa aloc memorie pentru stringul urmator" "Unable to unlock clipboard memory." === "Imposibil sa deblochez memoria clipboardului" "Unable to close clipboard." === "Imposibil sa inchid clipboardul" woptions.c ## For now, do NOT translate sound names, because WinBoard will no longer recognize them "Move" === "" "Bell" === "" "ICS Alarm" === "" "ICS Win" === "" "ICS Loss" === "" "ICS Draw" === "" "ICS Unfinished" === "" "Shout" === "" "SShout/CShout" === "" "Channel 1" === "" "Channel" === "" "Kibitz" === "" "Tell" === "" "Challenge" === "" "Request" === "" "Seek" === "" ## end of sound names "Browse for Sound File" === "Cauta Fisierul de Sunet" "Can't parse com port settings" === "Nu se pot analiza setarile portului de comunicare" "Option Error" === "Optiunea Eroare" "Invalid data rate" === "Rata de date invalida" "Option Error" === "Optiunea Eroare" "Failed to set comm port state;\r\ninvalid options?" === "Esuat in setarea portului de comunicatii;\r\ninvalid options?" "Failed to set comm port state" === "Esuat in setarea portului de comunicatii" "Invalid load game step rate" === "Rata de derulare a incarcarii partidei invalida" "Invalid save game file name" === "Numele fisierului de salvare a partidei invalid" "Browse for Auto Save File" === "Cauta Auto Salvarea Fisierului" "Invalid moves per time control" === "Mutari pe timpul de control invalide" "Invalid minutes per time control" === "Minute pe timpul de control invalide" "Invalid increment" === "Increment invalid" "Invalid initial time" === "Timp initial invalid" "Changing time control during a game is not implemented" === "Schimbarea timpului de control in timpul partidei nu este implementata" "Variant %s not supported by %s" === "Varianta %s nu este suportata de %s" "Warning: second engine (%s) does not support this!" === "Atentie: al doielea motor (%s) nu suporta aceasta" "Invalid ICS Alarm Time" === "Timp de Alarma ICS Invalid" "Invalid max time per move" === "Timp maxim pe mutare invalid" "Invalid time-odds factor" === "Factorul de diferenta de timp invalid" "Choose Folder" === "Alege Folderul" "Choose Book" === "Alege Cartea de Deschideri" "Choose Polyglot Directory" === "Alege Directorul pentru Polyglot" "Choose EGTB Directory:" === "Alege Directorul pentru EGTB" "Polyglot was not found in the specified folder!" === "Polyglot nu a fost gasit in directorul specificat!" wgamelist.c "No game selected" === "Nici o partida selectata" "Can't go forward any further" === "Nu poate merge mai departe" "Can't back up any further" === "Nu se poate inapoi mai mult" "No game list" === "Fara lista de partide" "Game List" === "Lista de Partide" "Game list not loaded or empty" === "Lista de partide neincarcata sau goala" "%s - %d/%d games" === "%d (%d,%d-%d,%d) partide" wedittags.c "Edit Tags" === "Editeaza Eticheta" "Tags" === "Eticheta" "Error replacing tags." === "Eroare la inlocuirea etichetei" wsettings.c "%s Engine Settings (%s)" === "%s Setarile Motorului (%s)" "OK" === "OK" "Cancel" === "Inchide" wchat.c "Chat Window %s" === "Fereastra de Conversatie %s" backend.c "bad timeControl option %s" === "optiune incorecta de timp %s" "bad searchTime option %s" === "optiune incotecta de timp de cautare %s " ## following to will appear in combinationslike "first engine" "first" === "primul" "second" === "al doielea" "protocol version %d not supported" === "versiunea de protocol %d nu este suportata" "Variant %s supported only in ICS mode" === "Varianta %s suportata doar in modul ICS" "Unknown variant name %s" === "Numele variantei necunoscut %s" "Starting chess program" === "Porneste programul de sah" "Could not open comm port %s" === "Nu se poate deschide portul de comunicatii %s" "Could not connect to host %s, port %s" === "Nu se poate conecta la gazda %s, portul %s" "Unknown initialMode %s" === "Modul initial necunoscut %s" "Can't have a match with no chess programs" === "Nu putem avea un meci fara programe de sah" "Bad game file" === "Fisierul partidei incorect" "Bad position file" === "Fisierul pozitiei incorect" "AnalyzeFile mode requires a game file" === "Modul AnalizaFisierului cere un fisier de partida" "Analysis mode requires a chess engine" === "Modul de analiza cere un motor de sah " "Analysis mode does not work with ICS mode" === "Analiza nu lucreaza cu modul ICS" "MachineWhite mode requires a chess engine" === "Modul MasinaAlba cere un motor de sah" "MachineWhite mode does not work with ICS mode" === "Modul MasinaAlba nu merge cu modul ICS" "MachineBlack mode requires a chess engine" === "Modul MasinaNeagra cere un motor de sah" "MachineBlack mode does not work with ICS mode" === "Modul MasinaNeagra nu merge cu modul ICS" "TwoMachines mode does not work with ICS mode" === "Modul DouaMasini nu merge cu modul ICS" "TwoMachines mode requires a chess engine" === "Modul DouaMasini cere un motor de sah" "Training mode requires a game file" === "Modul de antrenamernt cere un fisier de partide" "Error writing to ICS" === "Eroare de scris catre ICS" "Error reading from keyboard" === "Eroare de citit din claviatura" "Got end of file from keyboard" === "Scoate textul din claviatura" "Error writing to ICS" === "Eroare de scris catre ICS" "Error writing to display" === "Eroare de scris catre afisaj" "Error gathering move list: two headers" === "Eroare de colectare la lista mutarilor: doua anteturi" "Error gathering move list: nested" === "Eroare de colectare la lista mutarilor: imbricate" "Connection closed by ICS" === "Conexiune inchisa de ICS" "Error reading from ICS" === "Eroare de citire de la ICS" "Failed to parse board string:\n\"%s\"" === "Esuat in analiza stringului tablei:\n\"%s\"" "Game too long; increase MAX_MOVES and recompile" === "Partida prea lunga: mareste MAX_MOVES si recompileaza" "Error gathering move list: extra board" === "Eroare colectare lista mutari: extra board" "Illegal move \"%s\" from ICS" === "Mutare ilegala \"%s\" de la ICS " "Couldn't parse move \"%s\" from ICS" === "Nu se poate analiza mutarea \"%s\" de la ICS" ## The leading 'say' is used as ICS command here, and should NOT be translated. Only the message behind it. "say Internal error; bad moveType %d (%d,%d-%d,%d)" === "Eroare interna :tip de mutare gresit %d (%d,%d-%d,%d)" "You are playing Black" === "Tu joci cu Negrul" "You are playing White" === "Tu joci cu Albul" "It is White's turn" === "Este randul Albului" "It is Black's turn" === "Este randul Negrului" "Displayed position is not current" === "Pozitia afisata nu este cea curenta" "Illegal move" === "Mutare ilegala" "End of game" === "Sfarsitul partidei" "Incorrect move" === "Mutare incorecta" ## next 6: Second (first 3) or first (other) '%s' will be substituted for 'first' or 'second'. "Illegal move \"%s\" from %s machine" === "Mutare ilegala \"%s\" de la primul calculator" "Illegal move \"%s\" (rejected by %s chess program)" === "Mutare ilegala \"%s\" (respinsa de de catre primul program de sah)" "Failed to start %s chess program %s on %s: %s\n" === "Esuat in pornirea %s primului program de sah pe %s: %s\n" "Error writing to %s chess program" === "Eroare de scris catre primul program de sah" "Error: %s chess program (%s) exited unexpectedly" === "Eroare primul program de sah a iesit neasteptat" "Error reading from %s chess program (%s)" === "Eroare de citire de la primul program de sah" "Forfeit due to illegal move" === "Forfait datorat unei mutari ilegale" "%s does not support analysis" === "%s nu suporta analiza" "Hint: %s" === "Ajutor: %s" "Machine accepts your draw offer" === "Computerul accepta oferta Dvs de remiza" "Machine offers a draw\nSelect Action / Draw to agree" === "Computerul ofera o remiza\nSelecteaza Actiunea / Agreati remiza " "%s (only move)" === "%s (doar mutarea)" "Ambiguous move in ICS output: \"%s\"" === "Mutare ICS ambigua: \"%s\"" "Illegal move in ICS output: \"%s\"" === "Mutare ICS ilegala: \"%s\"" "Gap in move list" === "Decalaj in lista de mutari" "Game too long; increase MAX_MOVES and recompile" === "Partida prea lunga; mariti MAX_MOVES si recompilati" "Variant %s not supported by %s" === "Varianta %s nu este suportata de catre %s" "Startup failure on '%s'" === "Start esuat pentru'%s'" "Waiting for first chess program" === "Asteptam primul program de sah" "Waiting for second chess program" === "Asteptam al doilea program de sah" "Match %s vs. %s: final score %d-%d-%d" === "Partida %s vs. %s: scorul final %d-%d-%d" "Stalemate" === "Remiza" "Illegal move: %d.%s%s" === "Mutare ilegala: %d.%s%s" "Ambiguous move: %d.%s%s" === "Mutare ambigua: %d.%s%s" "Can't open \"%s\"" === "Nu pot deschide \"%s\"" "Cannot build game list" === "Nu pot construi lista de partide" "No more games in this message" === "Nici o partida in acest mesaj" "No game has been loaded yet" === "Nici o partida nu a fost inca incarcata" "Can't back up any further" === "Fara revenire la mutari mai departe" "Game number out of range" === "Numarul partidei in afara seriei" "Can't seek on game file" === "Nu se poate cauta in fisierul partidei" "Game not found in file" === "Partida negasita in fisier" "Bad FEN position in file" === "FEN incorect in fisier" "No moves in game" === "Nu mai sunt mutari in partida" "No position has been loaded yet" === "Nici o pozitie nu a fost inca incarcata" "Can't back up any further" === "Fara revenire la mutari mai departe" "Can't open \"%s\"" === "Nu pot deschide \"%s\"" "Can't seek on position file" === "Nu se poate cauta in fisierul pozitiei" "Position not found in file" === "Pozitie negasita in fisier" "Bad FEN position in file" === "FEN incorect in fisier" "Black to play" === "Negrul la mutare" "White to play" === "Albul la mutare" "Can't open \"%s\"" === "Can't open \"%s\"" "You have edited the game history.\nUse Reload Same Game and make your move again." === "Ai editat istoria partidei.\nFoloseste Reincarca Aceeasi Partida si fa mutarea ta din nou." "You have entered too many moves.\nBack up to the correct position and try again." === "Ai introdus prea multe mutari.\nRevino la pozitia corecta si incearca din nou." "Displayed position is not current.\nStep forward to the correct position and try again." === "Pozitia afisata nu este curenta.\nMergi inainte spre pozitia corecta si incearca din nou." "You have not made a move yet" === "Nu ai facut inca o mutare" "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." === "Mesajul de CMail nu este incarcat.\nFoloseste Reincarca Mesajul de CMail si fa mutarea din nou." "No unfinished games" === "Nu exista partide neterminate" "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." === "Ai trimis deja o mutare.\nAsteapta pana o mutare soseste de la oponent.\nPentru a retrimite mutarea, tipareste\n\"cmail -remail -partida %s\"\nu linia de comanda." "Failed to invoke cmail" === "Esuat in invocarea cmail" "Waiting for reply from opponent\n" === "Asteptand replica de la oponent\n" "Still need to make move for game\n" === "Inca trebuie facuta mutarea pentru partida\n" "Still need to make moves for both games\n" === "Inca trebuiesc facute mutarile pentru ambele partide\n" "Still need to make moves for all %d games\n" === "Inca trebuiesc facute mutari pentru toate %d partidele\n" "Still need to make a move for game %s\n" === "Inca trebuie facuta o mutare pentru partida %s\n" "No unfinished games\n" === "Nu exista partide neterminate\n" "Ready to send mail\n" === "Gata sa trimit mailul\n" "Still need to make moves for games %s\n" === "Inca trebuiesc facute mutari pentru partidele %s\n" "Edit comment" === "Editeaza comentariul" "Edit comment on %d.%s%s" === "Editeaza comentariul pentru %d.%s%s" "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis." === "Declansata analiza...\nDaca acest mesaj ramane, programul Dvs de sah nu suporta analiza." "It is not White's turn" === "Nu este randul Albului" "It is not Black's turn" === "Nu este randul Negrului" "Wait until your turn,\nor select Move Now" === "Asteapta pana este randul tau,\sau selecteaza Muta Acum" "Starting second chess program" === "Porneste al doilea program de sah" "Training mode off" === "Inchide Modul de antrenament" "Training mode on" === "Deschide Modul de antrenament" "Already at end of game" === "Deja la finalul partidei" "Warning: You are still playing a game" === "Atentie: inca joci o partida" "Warning: You are still observing a game" === "Atentie: inca observi o partida" "Warning: You are still examining a game" === "Atentie: inca examinezi o partida" "It is Black's turn" === "Este randul Negrului" "It is White's turn" === "Este randul Albului" "That square is occupied" === "Acel camp este ocupat" "There is no pending offer on this move" === "Nu exist nici o ofert n curs pe aceast mutare" "Your opponent is not out of time" === "Adversarul tau nu a depasit timpul" "Black offers a draw" === "Negrul ofera o remiza" "White offers a draw" === "Albul ofera o remiza" "You must make your move before offering a draw" === "Trebuie sa faci o mutare inainte de a oferi o remiza" "You are not examining a game" === "Nu examinezi o partida" "You can't revert while pausing" === "Nu putei reveni n timp ce asteptati" "Wait until your turn,\nor select Move Now" === "Asteapta pana iti vine randul,\sau selecteaza Muta Acum" "It is your turn" === "Este randul tau" "Wait until your turn" === "Asteapta pana este randul tau" "No hint available" === "Nici un ajutor disponibil" "Analysis (%s)" === "Analiza (%s)" "Comment" === "Comentariu" "Comment on %d.%s%s" === "Conentariu despre %d.%s%s" "Both flags fell" === "Cad ambele steaguri" "White's flag fell" === "Cade steagul albului" "Black's flag fell" === "Cade steagul negrului" "Bad FEN position in clipboard" === "Positie FEN incorecta in clipboard" "No response from ICS" === "Niciun raspuns de la ICS" "You cannot do this while you are playing or observing" === "Nu poti face asta cand joci sau observi" "Click in holdings to choose piece" === "Faceti click pentru a alege piesa" END-OF-GAME MESSAGES (should they be translated?) ## I think that only for visualization and not for PGN, as PGN files are shared all around the world ## [OK, I adapted the source that way. So please translate.] "Game aborted" === "Partida esuata" "White wins on time" === "Albul castiga la timp" "Black wins on time" === "Negrul castiga la timp" "Both players ran out of time" === "Ambii jucatori au depasit timpul" "White resigns" === "Albul cedeaza" "Black resigns" === "Negrul cedeaza" "White mates" === "Albul da mat" "Black mates" === "Negrul da mat" "Draw" === "Remiza" "Draw agreed" === "Remiza prin intelegere" "Xboard adjudication: King destroyed" === "Adjudecare Xboard: Regele distrus" "Xboard adjudication: Bare king" === "Rege singur" "Xboard adjudication: 3rd check" === "Adjudecare Xboard: al treilea sah" "Xboard adjudication: Stalemate" === "Adjudecare Xboard: Pat" "Xboard adjudication: Checkmate" === "Adjudecare Xboard: Mat" "Xboard adjudication: Insufficient mating material" === "Adjudecare Xboard: material insuficient" "Xboard adjudication: Trivial draw" === "Adjudecare Xboard: Remiza banala" "XBoard adjudication: repetition draw" === "Adjudecare Xboard: remiza prin repetitie" "Xboard adjudication: perpetual checking" === "Adjudecare Xboard: sah etern" "Xboard adjudication: perpetual chasing" === "Adjudecare Xboard: alungare continua" "%Xboard adjudication: perpetual chasing of" === "Adjudecare Xboard: alungare continua" "Xboard adjudication: 50-move rule" === "Adjudecare Xboard: regula celor 50 de mutari" "Draw claim: 50-move rule" === "Cerere de remiza: regula celor 50 de mutari" "Draw claim: 3-fold repetition" === "Cerere de remiza: a treia repetitie" "Draw claim: insufficient mating material" === "Cerere de remiza: material insuficient pentru mat" "Xboard adjudication: long game" === "Adjudecare Xboard: partida lunga" "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d" === "Xboard: Forfait datorat unei mutari ilegale: %s (%c%c%c%c) res=%d" "Xboard: Forfeit due to illegal move: %s (%c%c%c%c)%c" === "Xboard: Forfait datoratunei mutari ilegale: %s (%c%c%c%c)%c" "Xboard adjudication" === "Adjudecare Xboard" "User adjudication" === "Adjudecare utilizator" "False win claim: '%s'" === "Cerere de castig falsa: '%s'" "False draw claim: '%s'" === "Cerere de remiza falsa: '%s'" "xboard exit" === "Iesire Xboard" # NEW STRINGS FOR EXPERIMENTAL TM VERSION: # MENU "Edit Boo&k..." === "Editeaza Cartea" "Edit Engine List..." === "Editeaza Lista Motoarelor" "Load Engine..." === "Incarca Motorul" "Tournament..." === "Turneu" # LOAD ENGINE DIALOG "First" === "Primul" "Second" === "Al doilea" "Choose File" === "Alege Fisierul" "Choose Folder:" === "Alege Folderul" "Select engine from list:" === "Alege motorul din lista" "or specify one below:" === "sau specifica unul mai jos" "Nickname (optional):" === "Pseudonim (optional)" "Use nickname in PGN tag" === "Foloseste pseudonimul in eticheta PGN" "Engine (*.exe):" === "Motor (*.exe)" "command-line parameters:" === "parametrii liniei de comanda" "directory:" === "directorul" "(Directory will be derived from engine path when left empty)" === "(Directorul va deriva din adresa motorului cand nu se completeaza)" "Add this engine to the list" === "Adauga aceasta engina in lista" "Must not use GUI book" === "Trebuie sa nu foloseasca cartea GUIului" "UCI" === "UCI" "WB protocol v1 (skip waiting for features)" === "WB protocol v1 (sari peste asteptarea caracteristicilor)" "UCCI / USI (uses specified /uxiAdapter)" === "UCCI / USI (foloseste specificatele /uxiAdapter)" "Force current variant with this engine" === "Forteaza varianta curenta cu acest motor" "Load mentioned engine as" === "Incarca Motorul mentionat ca" "Load Engine" === "Incarca Motorul" # TOURNAMENT OPTIONS DIALOG "Tournament file:" === "Fisierul de turneu" "If you specify an existing file, the rest of this dialog will be ignored." === "Daca specificati un fisier existent, restul acestui dialog va fi ignorat." "Otherwise, the file will be created, with the settings you specify below:" === "Altfel, fisierul va fi creat, cu setarile pe care le specificati mai jos" "Select Engine:" === "Alege Motorul" "Use Swiss pairing engine (cycles = rounds)" === "Utilizai motorul de asociere elveian (cicluri = runde)" "Tourney type (0=RR, 1=gauntlet):" === "Tipul Turneului (0=RR, 1=gauntlet)" "Sync after cycle" === "Sincronizare dupa ciclu" "Number of tourney cycles:" === "Numarul de cicluri" "Sync after round" === "Sincronizare dupa runda" "Games per Match / Pairing:" === "Partide pe Meci/Pereche" "File for saving tourney games:" === "Fisier de salvat partidele turneului" "Game File with Opening Lines:" === "Fisierul de Partide cu Liniile de Deschidere" "Game Number:" === "Partida Numarul" "File with Start Positions:" === "Fisier cu Pozitiile de Start" "Position Number:" === "Pozitia Numarul" "Step through lines/positions in file" === "Mergi printre linii/pozitii in fisier" "Rewind after (0 = never):" === "Deruleaza dupa (0 = niciodata)" "Use each line/position twice" === "Foloseste fiecare linie/pozitie de doua ori" "Pause between Games (ms):" === "Pauza intre Partide (ms)" "Tournament and Match Options" === "Optiunile pentru Turneu si Meci" "Tourney participants:" === "Participantii la turneu" "Replace Engine" === "Inlocuieste Motorul" "Upgrade Engine" === "Upgradeaza Motorul" "Time Control..." === "Timpul de control" "Common Engine..." === "Motor comun" "Clone Tourney" === "Turneu de Clone" xboard-4.9.1/winboard/language/chinese(trad).lng0000644000175000001440000007641312717001265016441 00000000000000winboard.rc " " === "Translation by Morning Yellow && Liuzy" MENUS "&New Game\tCtrl-N" === "}sѧ(&N)\tCtrl-N" "New Sh&uffle Game..." === "~PC(&u)..." "New &Variant...\tAlt+Shift+V" === "sܺ(&V)...\tAlt+Shift+V" "&Load Game...\tCtrl-O" === "Jѧ(&L)...\tCtrl-O" "Load &Next Game\tAlt+PgDn" === "JU@ѧ(&N)\tAlt+PgDn" "Load &Previous Game\tAlt+PgUp" === "JW@ѧ(&P)\tAlt+PgUp" "&Reload Same Game" === "sJP@ѧ(&R)" "&Save Game...\tCtrl-S" === "xsѧ(&S)...\tCtrl-S" "&Copy Game To Clipboard\tCtrl+C" === "ƻsѧŶKï(&C)\tCtrl+C" "&Paste Game From Clipboard\tCtrl+V" === "KWѧ۰ŶKï(&P)\tCtrl+V" "Copy Game List to Clipboard" === "ƻsCCŶKï" "L&oad Position...\tCtrl+Shift+O" === "J(&O)...\tCtrl+Shift+O" "Load N&ext Position\tAlt+Shift+PgDn" === "JU@(&E)\tAlt+Shift+PgDn" "Load Pre&vious Position\tAlt+Shift+PgUp" === "JW@(&V)\tAlt+Shift+PgUp" "Reload Sa&me Position" === "sJP@(&M)" "S&ave Position...\tCtrl+Shift+S" === "xs(&A)...\tCtrl+Shift+S" "Save as &Diagram..." === "xsϪ...(&D)" "C&opy Position To Clipboard\tCtrl+Shift+C" === "ƻsŶKï(&Y)\tCtrl+Shift+C" "P&aste Position From Clipboard\tCtrl+Shift+V" === "qŶKïKW(&T)\tCtrl+Shift+V" "E&xit" === "}(&X)" "&Quit" === "}(&Q)" "&Edit Game\tCtrl+E" === "sѧ(&E)\tCtrl+E" "E&dit Position\tCtrl+Shift+E" === "s觽(&d)\tCtrl+Shift+E" "&Tags" === "s(&T)" "&Comments" === "s(&C)..." "&Game List Tags..." === "CC..." "Machine &White\tCtrl+W" === "q(&W)\tCtrl+W" "Machine &Black\tCtrl+B" === "q(&B)\tCtrl+B" "Two &Machines\tCtrl+T" === "q(&M)\tCtrl+T" "Machine Both" === "qM" "&Machine Match" === "q(&M)" "&Analysis Mode\tCtrl+A" === "RҦ(&A)\tCtrl+A" "Analyze &File\tCtrl+F" === "Rɮ(&F)\tCtrl+F" "&ICS Client" === "&ICSȤ" "Edit &Game\tCtrl+E" === "sѧ(&G)\tCtrl+E" "&Edit Position\tShift+Ctrl+E" === "s觽(&E)\tShift+Ctrl+E" "Trai&ning" === "Vm(&N)" "Engine &Output\tAlt+Shift+O" === "ܤX\tAlt+Shift+O" "Evaluation &Graph\tAlt+Shift+E" === "ܵ\tAlt+Shift+E" "Game &List\tAlt+Shift+G" === "ܴѧC(&L)\tAlt+Shift+G" "Move &History\tAlt+Shift+H" === "ܾv۪k\tAlt+Shift+H" "Open &New Chat Window" === "}ѵ" "Edit Ta&gs..." === "s(&T)" "Edit Co&mment..." === "s(&C)..." "Enter &Username..." === "JΤW(&U)" "&Pause\tPause" === "Ȱ(&P)\tPause" "&Accept\tF3" === "(&A)\tF3" "D&ecline\tF4" === "ڵ(&C)\tF4" "Re&match\tF12" === "(&M)\tF12" "Call &Flag\tF5" === "WɧPt(&F)\tF5" "&Draw\tF6" === "M(&D)\tF6" "Ad&journ\tF7" === "ʽL(&J)\tF7" "A&bort\tF8" === "(&B)\tF8" "&Resign\tF9" === "{(&R)\tF9" "Stop &Observing\tF10" === "[(&O)\tF10" "Stop E&xamining\tF11" === "s(&X)\tF11" "&Upload to Examine" === "Wˬd(&U)" "Adjudicate to &White" === "MĹ (&W)" "Adjudicate to &Black" === "MĹ (&B)" "Adjudicate &Draw" === "Х(&D)" "Type In &Move...\tAlt+I" === "J۪k(&Y)...\tAlt+I" "&Backward\tAlt+Left" === "U@(&B)\tAlt+Left" "&Forward\tAlt+Right" === "W@(&F)\tAlt+Right" "Back to &Start\tAlt+Home" === "_l(&S)\tAlt+Home" "For&ward to End\tAlt+End" === "̫᧽(&E)\tAlt+End" "&Revert\tHome" === "_(&V)" "&Annotate" === "(&A)" "&Truncate Game\tEnd" === "I_۪᭱k(&T)" "&Move Now\tCtrl+M" === "ߧY(&M)\tCtrl+M" "&Retract Move\tCtrl+X" === "(&R)\tCtrl+X" "Flip &View\tF2" === "½ѽL(&V)\tF2" "&Swap Clocks" === "洫(&C)" "&Mute all Sounds" === "ҦnR(&M)" "&General..." === "@ﶵ(&G)..." "&Board..." === "ѽLﶵ(&B)..." "Ad&judications...\tAlt+Shift+J" === "PM(&j)...\tAlt+Shift+J" "Common &Engine...\tAlt+Shift+U" === "qΤ]w(&E)...\tAlt+Shift+U" "Engine #&1 Settings..." === " #1 ]w" "Engine #&2 Settings..." === " #2 ]w" "&ICS..." === "&ICSﶵ..." "&Fonts..." === "rﶵ(&F)..." "Soun&ds..." === "nﶵ(&D)..." "G&ame List..." === "CC..." "Comm&unications..." === "qT]w(&U)..." "&Load Game...\tAlt+Shift+L" === "Jѧﶵ(&L)...\tAlt+Shift+L" "&Save Game...\tAlt+Shift+S" === "xsѧﶵ(&S)...\tAlt+Shift+S" "&Time Control...\tAlt+Shift+T" === "ɶ]w(&T)...\tAlt+Shift+T" "Save Settings &Now" === "ߧYxs]w(&N)" "Save Settings on E&xit" === "}xs]w(&X)" "Help &Contents\tF1" === "DD(&C)\tF1" "Help &Index" === "(&I)" "How to &Use Help" === "pϥλ(&U)" "&Hint..." === "(&H)..." "&Book..." === "}w(&B)..." "&About WinBoard" === "WinBoard(&A)" "White" === "" "Promote" === "" "Pawn" === "L" "Knight" === "" "Bishop" === "H" "Rook" === "" "Queen" === "Z" "King" === "" "Archbishop" === "v" "Chancellor" === "_" "Elephant" === "H" "Cannon" === "" "Empty Square" === "MŮl" "Black" === "¤" "Demote" === "" "Clear Board " === "MŴѽL" "Drop" === "" "Cop&y and Paste" === "ƻsöKW(&Y)" "&Copy" === "ƻs(&C)" "&Paste" === "KW(&P)" "&Undo" === "_(&U)" "Cu&t" === "ŤU(&T)" "&Copy" === "ƻs(&C)" "&Paste" === "KW(&P)" "Select &All" === "(&A)" DIALOGS "&Animate Moving Ctrl+Shift+A" === "ʵe(&A) Ctrl+Shift+A" "&Auto Comment" === "۰ʵ(&A)" "&Average" === "54" "&Big" === "87" "&Bishop" === "H(&B)" "&Black first move" === "¤(&B)" "&Blindfold" === "(&B)" "&Bold" === "[(&B)" "&Cancel" === "(&C)" "&Choose Background Color..." === "ܭIC(&C)..." "&Choose Color..." === "C(&C)..." "&Clear" === "M(&C)" "&Close" === "(&C)" "&Colossal" === "116" "&Default ICS Colors" === "w]ICSC(&D)" "&Dinky" === "29" "&Directories:" === "Ƨ(&D)" "&Edit" === "s(&E)" "&Edit" === "s(&E)" "&Get Move List" === "o۪kC(&G)" "&Giant" === "108" "&Help" === "(&H)" "Highlight Dra&gging" === "즲ش(&H)" "&Huge" === "95" "&Index number:" === "Ǹ(&I)" "&Italic" === "(&I)" "&King" === "(&K)" "&Large" === "80" "&Load" === "J(&L)" "&Local Line Editing" === "aݽs(&L)" "&Middling" === "49" "&Next" === "U@(&N)" "&Petite" === "33" "&Popup Exit Message" === "}ɴ(&P)" "&Port:" === "s(&P)" "&Premove" === "w(&P)" "&Prev" === "W@(&P)" "&Queen" === "Z(&Q)" "&Quiet Play" === "lLn(&Q)" "&Revert to Defaults" === "_w](&R)" "&Rook" === "(&R)" "&Show Thinking" === "ܫҲӸ`(&S)" "&Small" === "40" "&Sound alarm at" === "nĵi(&S)" "&Stop Bits:" === "줸(&S)" "&Strikeout" === "Ru(&S)" "&Tiny" === "21" "&Underline" === "u(&U)" "&White first move" === "(&W)" "&Additional options" === "[ﶵ(&A)" "Always &Queen Ctrl+Shift+Q" === "`OܬӦZ(&Q) Ctrl+Shift+Q" "Always on &Top" === "`b̫e(&T)" "Animate &Dragging" === "ʵe즲(&D)" "Auto &Flag Ctrl+Shift+F" === "۰ʶWɧPt(&F) Ctrl+Shift+F" "Auto &Observe" === "۰[(&O)" "Auto &Raise Board" === "۰ʧܴѽLjp(&R)" "Auto Flip &View" === "۰½ѽL(&V)" "Black Pieces" === "¤l" "Browse..." === "s..." "Built-in sound:" === "n" "Bul&ky" === "72" "Cancel" === "" "Chessboard for Windows" === "WindowsUqlڶHѴѽL" "Choose..." === "..." "Clocks" === "" "Comments" === "" "Conventional chess clock" === "ɬq" "Coordinates" === "" "Copyright 1991 Digital Equipment Corporation" === "Copyright 1991 Digital Equipment Corporation" "Dark Squares" === "®" "Data &Bits:" === "Ʀ줸(&B)" "Data &Rate:" === "ǿv(&R)" "Default beep" === "w]n" "Defaults" === "w]" "Do ¬ colorize messages" === "nTۦ(&N)" "Dri&ves:" === "Ϻо(&V)" "Enter" === "J" "Event:" === "ƥ" "F&low:" === "(&L)" "File &Name:" === "ɮצW(&N)" "Help" === "" "Highlight Last &Move" === "аOW@۪k(&M)" "ICS Interaction" === "ICS" "Incremental clock" === "[ɨ" "Inde&x number:" === "Ǹ(&X)" "Just &view or edit game files" === "u[ݩνsѧ(&v)" "K&night" === "(&N)" "Light Squares" === "ծ" "List Files of &Type:" === "ɮ(&T)" "Load games with automatic stepping" === "Jѧ۰ʨ" "Medi&ocre" === "45" "Medi&um" === "64" "Messages" === "T" "Mode&rate" === "58" "Monochrome" === "¥" "Net&work..." === "(&W)..." "No sound" === "Ln" "OK" === "Tw" "Old" === "®榡" "P&arity:" === "(&A)" "PGN" === "PGN榡" "Periodic &Updates" === "ws(&U)" "Play" === "" "Ponder &Next Move Ctrl+Shift+P" === "PB(&N) Ctrl+Shift+P" "Popup Move &Errors" === "ܿ~۪k(&E)" "Premove Highlights" === "wѼаO" "Promote pawn to:" === "Lܬ" "Prompt for filename" === "ɮצW" "Save As: " === "xs" "Save games automatically" === "۰xsѧ" "Show &Coordinates" === "ܧ(&C)" "Show Butt&on Bar" === "ܫs(&O)" "Sl&im" === "37" "Sorry Charlie" === "藍_AդU" "Square Highlights" === "lаO" "T&eeny" === "25" "Tags" === "" "Test &Legality Ctrl+Shift+L" === "ˬd۪kXz(&L) Cl+Sh+L" "Tita&nic" === "129" "To file:" === "ɮ" "Use an Internet Chess Server" === "nWڶHѪAȾ" "WAV file:" === "WAVɮ" "White Pieces" === "l" "WinBoard 0.0.0" === "WinBoard 0.0.0" "galactic" === "galactic" "minutes initially," === "_lɶ" "minutes" === "" "moves in" === "B" "plus" === "" "seconds per move" === "C@B[" "seconds per move" === "@B" "seconds" === "" "Save As:" === "xs" "What would you like to do?" === "pϥΡH" "Interaction Colors" === "ʲ" "Premove" === "w" "Alarm" === "" "Colors" === "C" "Size" === "jp" "Current Board Size" === "eѽLjp" "All Board Sizes" === "ҦѽLjp" "Number of moves:" === "B" "Within number of minutes:" === "" "Initial number of minutes:" === "_lɶ" "Plus number of seconds per move:" === "C@B[" "Ponder Next Move" === "PB(&N)" "Enable and Show Thinking (recommended)" === "ܫҲӸ`" "Periodic Updates (for Analysis Mode)" === "ws(RҦ)" "Game List Options" === "ѧCﶵ" "PGN &Tags:" === "PGN(&T)" "Default" === "w]" "Sounds" === "n" "&Event:" === "ƥ(&E)" "&No sound" === "Ln(&N)" "&Default beep" === "w]n(&D)" "&Built-in sound:" === "n(&B)" "&WAV file:" === "&WAVɮ" "B&rowse..." === "s...(&B)" "&Play" === "(&P)" "&Defaults" === "w](&D)" "I C S Interaction" === "I C S 椬" "About WinBoard" === "WinBoard" "Time Control" === "ɶ]w" "Load Game Options" === "Jѧﶵ" "Save Game Options" === "xsѧﶵ" "Open" === "}" "Communication Port Settings" === "qTs]w" "Edit Comment" === "s" "Promotion" === "" "Game List" === "ѧC" "Edit Tags" === "s" "ICS Interaction" === "ICS椬" "Dialog" === "" "Error" === "~" "ICS Interaction Colors" === "ICS椬C" "Question" === "" "WinBoard Startup" === "WinBoardҰ" "Type in a move" === "J۪k" "General Options" === "@ﶵ" "ICS Options" === "ICS]w" "Board Options" === "ѽLﶵ" "Fonts" === "r" NEW "&Up" === "VW" "&Down" === "VU" "Filter" === "Lo" "All White" === "" "Flip Black" === "¦" "Specify Chess &Engines:" === "w(&E)" "Specify Chess &Server:" === "wAȾ(&S)" "New Shuffle Game..." === "~PC..." "New Variant...\tAlt+Shift+V" === "sܺ...\tAlt+Shift+V" "Copy Game List to Clipboard" === "ƻsCCŶKï" "Save &Diagram..." === "xsϪ...(&D)" "Machine Both" === "M" "Machine Matc&h" === "(&h)" "Show Engine &Output\tAlt+Shift+O" === "ܤX\tAlt+Shift+O" "Show Evaluation Graph\tAlt+Shift+E" === "ܵ\tAlt+Shift+E" "Show Move History\tAlt+Shift+H" === "۪ܵk\tAlt+Shift+H" "Open Chat Window" === "}ѵ" "Enter &Username..." === "JΤW(&U)" "&Upload to Examine" === "Wˬd(&U)" "Adjudicate to &White" === "MĹ (&W)" "Adjudicate to &Black" === "MĹ (&B)" "Adjudicate &Draw" === "Х(&D)" "&Annotate" === "(&A)" "&Truncate Game" === "I_(&T)" "Swap &Clocks" === "洫(&C)" "&Mute all Sounds" === "ҦnR(&M)" "Adjudications...\tAlt+Shift+J" === "PM...\tAlt+Shift+J" "Common Engine...\tAlt+Shift+U" === "qΤ]w...\tAlt+Shift+U" "Engine #1 Settings..." === " #1 ]w" "Engine #2 Settings..." === " #2 ]w" "Game List..." === "CC..." "Promote" === "" "Archbishop" === "v" "Chancellor" === "_" "Elephant" === "H" "Cannon" === "" "Demote" === "" "Lance" === "" "Silver" === "ȱN" "Gold" === "N" "Fixed time per move" === "TwB" "Maximum seconds per move:" === "̤jB()" "Time-Odds Factors:" === "ɶ" "Engine #1:" === " #1" "Engine #2:" === " #2" "Save out of book info in PGN" === "bPGNxswT" "&Send Engine Think" === "oe(&S)" "E&xtended PGN Info Ctrl+Shift+X" === "XiPGNT Ctrl+Shift+X" "&Hide Thinking Ctrl+Shift+H" === "ä Ctrl+Shift+H" "&Info in Move History Ctrl+Shift+I" === "۪kCܰT Cl+Sh+I" "Highlight with Arro&w" === "νbYX" "Displa&y Logos" === "ܤлx(&y)" "&Auto Kibitz" === "۰\"kibitz\"(&A)" "See&k Graph" === "iϪ(&k)" "auto-&Refresh" === "۰ʨsϪ(&R)" "Bckgnd Obser&ve" === "I[(&v)" "&Dual Board" === "ѽL(&D)" "One-Click &Move" === "(&M)" "Background..." === "I..." "&Defaults..." === "w](&D)" "Startup &Chat Boxes:" === "ҰʲѮ(&C)" "General" === "@" " YES" === "O" " NO" === "_" "Move History, Engine Output" === "vk,X" "New Shuffle Game" === "~PC" "&Start Position Number:" === "ҰʦmX(&S)" "Random" === "H" "Move History" === "vk" "Evaluation Graph" === "f" "Engine output" === "X" "Engine #1" === " #1" "NPS" === "NPS" "Engine #2" === " #2" "Chat Window" === "ѵ" "Chat partner:" === "ѹ٦" "Clear" === "M" "Send" === "oe" "Adjudications" === "PM" "Hide Thinking when Playing against Human" === "PHٮëҲӸ`" "Adjudications in non-ICS games" === "PMDICSC" "Adjudicate draw after:" === "X۫PM" "moves" === "۪k" "Win/loss adjudication threshold:" === "/ĹPMe" "centipawns" === "ʤ@L" "&Verify Engine Claims" === "Ҥn(&V)" "Detect &Mates" === "˴N(&M)" "Draw if &Insufficient Material" === "lOɧPM(&I)" "Adjudicate &Trivial Draws" === "²MѧPM(&T)" "Apply" === "M" "-move rule" === "kWh" "-fold repeats" === "" "Engine #1 Score is Absolute" === " #1 O" "Engine #2 Score is Absolute" === " #2 O" "Common Engine Settings" === "qΤ]w" "Polyglot Directory:" === " Polyglot Ƨ" "Hash Size (MB):" === "jp(MB)" "EGTB Path:" === "EGTB |" "EGTB Size (MB):" === "EGTB jp(MB)" "Use Book:" === "ϥήw" "Max nr of CPUs:" === "̤jCPU" "First has Own Book" === "1ۥήw" "Second has Own Book" === "2ۥήw" "Book Depth:" === "w۪k`" "Book Variation:" === "wܨ" "Default Match Games:" === "w]ɹ什" "Variants" === "ܺ" "Variant" === "ܺ" "Board size:" === "ѽLjp" "ranks" === "" "files" === "C" "Holdings with room for:" === "i֦Ѥlƥ" "('-1' means defaults for selected variant)" === "-1ܹw]" "Type In Your Name" === "Je Naam, Sufferd!" "&Play against a chess engine or match two engines" === "H٩ιq(&P)" "&Use an Internet Chess Server" === "nWڶHѪAȾ(&U)" winboard.c "&File" === "ɮ(&F)" "&Mode" === "Ҧ(&M)" "&Action" === "欰(&A)" "&Step" === "۪k(&S)" "&Options" === "ﶵ(&O)" "&Help" === "(&H)" "Font name too long:" === "rW٤Ӫ" "Font point size missing:" === "Srjp" "Can't parse color name %s" === "LkѧOCW %s" "Unrecognized board size value" === "LkѧOѽLjp" "Unrecognized argument" === "LkѧOѼ" "No value provided for argument" === "SȴѵѼ" "Incomplete \\ escape in value for" === "Τ_" "Failed to open indirection file" === "Lk}ɮ" "Unrecognized boolean argument value" === "LkѧO޿Ѽƭ" "Unrecognized argument" === "LkѧOѼ" "Too many colors" === "CӦh" "&Minimize\tCtrl+F4" === "̤p(&M)\tCtrl+F4" "White: %s" === " %s" "We only care about the height here" === "o̧ڭ̥u`" "Cannot build game list" === "LkإߴѧC" "Load Game from File" === "qɮ׸Jѧ" "Load Position from File" === "qɮ׸JL" "Save Game to File" === "xsѧɮ" "Save Position to File" === "xsLɮ" "%s does not support analysis" === "%s R\" "Analyze Game from File" === "qɮפRѧ" "Unable to activate help" === "Lk}" "Send to chess program:" === "oeĤ@ӰڶHѵ{" "Send to second chess program:" === "oeĤGӰڶHѵ{" "Direct Command" === "JRO" "Error loading sound %s" === "Jn %s ~" "Error playing sound %s" === "n %s ~" "File open failed" === "Lk}ɮ" "Internal error in file dialog box" === "ɮ׹ܮت~" "Option Error" === "ﶵ~" "Choose an option, or cancel to exit" === "ܤ@ӿﶵAΪ̫s}" "Unable to activate help" === "Lk}" "Displayed move is not current" === "ܪ۪kOe۪k" "Could not parse move" === "LkѪR۪k" "%s:\nError code %d" === "%s:\n~ %d" "Error" === "~" "Fatal Error" === "Y~" "Exiting" === "}" "%s:\nError code %d" === "%s:\n~ %d" "ܰT" === "ܰT" "Note" === "" "Error writing to chess program" === "oeTڶHѵ{ɥX" "User" === "Τ" "Unknown" === "" "White" === "" "Black" === "¤" "Save Game to File" === "xsѧɮ" "Not implemented" === "\|@" "Shout Text" === "qsr" "SShout/CShout" === "jnqsr" "Channel 1 Text" === "WDIr" "Channel Text" === "WDr" "Kibitz Text" === "Lr" "Tell Text" === "Dr" "Challenge Text" === "DԤr" "Request Text" === "ܽФr" "Seek Text" === "jMr" "Normal Text" === "`r" "None" === "L" "Pawn" === "L" "Knight" === "" "Bishop" === "H" "Rook" === "" "Queen" === "Z" "Information" === "T" wclipbrd.c "Unable to convert position to FEN." === "LkLƬFEN" "Unable to copy FEN to clipboard." === "LkƻsFENŶKï" "Cannot create temporary file name." === "Lkإ{ɮ" "Cannot open temporary file." === "Lk}{ɮ" "Cannot write to temporary file." === "LkgJ{ɮ" "Cannot reopen temporary file." === "LkA}{ɮ" "Cannot determine size of file." === "LkTwɮפjp" "Cannot determine size of file." === "LkTwɮפjp" "Cannot allocate clipboard buffer." === "LktŶKïwİ" "Cannot read from temporary file." === "LkŪX{ɮ" "Error reading from temporary file." === "ŪX{ɮ׮ɥX" "Cannot copy text to clipboard" === "LkƻsrŶKï" "Unable to allocate memory for clipboard." === "LkŶKïtxsŶ" "Unable to lock clipboard memory." === "LkwŶKïxsŶ" "Cannot unlock clipboard memory." === "LkŶKïxsŶ" "Cannot open clipboard." === "Lk}ŶKï" "Cannot empty clipboard." === "LkMŰŶKï" "Cannot copy text to clipboard." === "LkƻsrŶKï" "Cannot close clipboard." === "LkŶKï" "Unable to paste FEN from clipboard." === "LkqŶKïKWFEN" "Unable to create temporary file." === "Lkإ{ɮ" "Error writing to temporary file." === "gJ{ɮ׮ɥX" "Unable to open clipboard." === "Lk}ŶKï" "No text in clipboard." === "ŶKïSr" "Unable to lock clipboard memory." === "LkwŶKïxsŶ" "Unable to allocate memory for text string." === "LkrtxsŶ" "Unable to unlock clipboard memory." === "LkŶKïxsŶ" "Unable to close clipboard." === "LkŶKï" woptions.c "Variant %s not supported by %s" === " %s Q %s Ҥ" "Warning: second engine (%s) does not support this!" === "ĵi: ĤGӤ(%s) !" "Invalid ICS Alarm Time" === "ICSDk" "Invalid max time per move" === "Xk̤jB" "Invalid time-odds factor" === "Xkɶ" "Choose Folder" === "ܸƧ" "Choose Book" === "ܥήw" "Choose Polyglot Directory" === " Polyglot Ƨ" "Choose EGTB Directory:" === " EGTB Ƨ" "Polyglot was not found in the specified folder!" === "wƧo{ Polyglot " wgamelist.c "No game selected" === "S襤ѧ" "Can't go forward any further" === "LkAeiF" "Can't back up any further" === "LkAhF" "No game list" === "SѧC" "Game List" === "ѧC" "Game list not loaded or empty" === "ѧCJΪť" "%s - %d/%d games" === "%s - %d/%d ѧ" "Game list not loaded or empty" === "ѧCJΪť" wedittags.c "Edit Tags" === "s" "Tags" === "" "Error replacing tags." === "ҿ~" wsettings.c "%s Engine Settings (%s)" === "%s ]w (%s)" "OK" === "Tw" "Cancel" === "" backend.c "bad timeControl option %s" === "Dk\"timeControl\"(ɶ)ﶵ %s" "bad searchTime option %s" === "Dk\"searchTime\"(jMɶ)ﶵ %s" "first" === "Ĥ@" "second" === "ĤG" "protocol version %d not supported" === "qTw %d Q" "Variant %s supported only in ICS mode" === " %s ubICSҦU" "Unknown variant name %s" === "W %s" "Starting chess program" === "ҰʰڶHѵ{" "Could not open comm port %s" === "Lk}qTs %s" "Could not connect to host %s, port %s" === "LksD %s s %s" "Unknown initialMode %s" === "\"initialMode\"(lҦ)ﶵ %s" "Can't have a match with no chess programs" === "SHѵ{ɵLki" "Bad game file" === "ѧɮ׿~" "Bad position file" === "Lɮ׿~" "AnalyzeFile mode requires a game file" === "\"AnalyzeFile\"(Rɮ)Ҧw@Ӵѧɮ" "Analysis mode requires a chess engine" === "\"Analysis\"(R)ҦҰʰڶHѤ" "Analysis mode does not work with ICS mode" === "\"Analysis\"(R)ҦLkbICSҦUu@" "MachineWhite mode requires a chess engine" === "\"MachineWhite\"(q)ҦҰʰڶHѤ" "MachineWhite mode does not work with ICS mode" === "\"MachineWhite\"(q)ҦLkbICSҦUB" "MachineBlack mode requires a chess engine" === "\"MachineBlack\"(q)ҦҰʰڶHѤ" "MachineBlack mode does not work with ICS mode" === "\"MachineBlack\"(q)ҦLkbICSҦUB" "TwoMachines mode does not work with ICS mode" === "\"TwoMachines\"(q)ҦLkbICSҦUB" "TwoMachines mode requires a chess engine" === "\"TwoMachines\"(R)ҦҰʰڶHѤ" "Training mode requires a game file" === "\"Training\"(Vm)Ҧw@Ӵѧɮ" "Error writing to ICS" === "oeTICSɥX" "Error reading from keyboard" === "ŪLɥX" "Got end of file from keyboard" === "ŪLɹJɮק" "Error writing to ICS" === "oeTICSɥX" "Error writing to display" === "oeTܾɥX" "Error gathering move list: two headers" === "Ū۪kɥXAX{Ӷ}Y" "Error gathering move list: nested" === "Ū۪kɥXA_~" "Connection closed by ICS" === "sQICS" "Error reading from ICS" === "ŪICSTɥX" "Failed to parse board string:\n\"%s\"" === "LkѪRѽLr\n\"%s\"" "Game too long; increase MAX_MOVES and recompile" === "ѧӪAݭnW[\"MAX_MOVES\"íssĶ" "Error gathering move list: extra board" === "Ū۪kɥXAWXѽL" "Illegal move \"%s\" from ICS" === "qICSŪ줣Xk۪k\"%s\"" "Couldn't parse move \"%s\" from ICS" === "LkѪRqICSŪ쪺۪k\"%s\"" "say Internal error; bad moveType %d (%d,%d-%d,%d)" === "say ~ADk\"moveType\"(۪k) %d (%d,%d-%d,%d)" "You are playing Black" === "Ab" "You are playing White" === "Ab" "It is White's turn" === "訫" "It is Black's turn" === "¤訫" "Displayed position is not current" === "ܪLOeL" "Illegal move" === "۪k~" "End of game" === "ѧ" "Incorrect move" === "۪k~" "Illegal move \"%s\" from %s machine" === "q%sŪ줣Xk۪k\"%s\"" "Forfeit due to illegal move" === "]Xz۪kӥdzW" "%s does not support analysis" === "%s R\" "Illegal move \"%s\" (rejected by %s chess program)" === "Xk۪k\"%s\" (%sڶHѵ{ڵӵ۪k)" "Failed to start %s chess program %s on %s: %s\n" === "LkҰ%sڶHѵ{ %s(bD %s W)A%s\n" "Hint: %s" === " %s" "White resigns" === "{" "Black resigns" === "¤{" "White mates" === "谵" "Black mates" === "¤谵" "Draw" === "M" "Draw agreed" === "өM" "Machine accepts your draw offer" === "qPNM" "Machine offers a draw\nSelect Action / Draw to agree" === "qM\nܬO_M" "%s (only move)" === "%s (ߤ@۪k)" "Ambiguous move in ICS output: \"%s\"" === "ICSXT۪k\"%s\"" "Illegal move in ICS output: \"%s\"" === "ICSXT۪k\"%s\"" "Gap in move list" === "۪k_}" "Game too long; increase MAX_MOVES and recompile" === "ѧӪAݭnW[\"MAX_MOVES\"íssĶ" "Variant %s not supported by %s" === " %s Q %s " "Startup failure on '%s'" === "LkҰ'%s'" "Waiting for first chess program" === "ݲĤ@ӰڶHѵ{" "Waiting for second chess program" === "ݲĤGӰڶHѵ{" "Match %s vs. %s: final score %d-%d-%d" === " %s vs. %s: ̲פ %d-%d-%d" "Stalemate" === "x" "Illegal move: %d.%s%s" === "Xk۪k %d.%s%s" "Ambiguous move: %d.%s%s" === "T۪k %d.%s%s" "Can't open \"%s\"" === "Lk}\"%s\"" "Cannot build game list" === "LkإߴѧC" "No more games in this message" === "oT]thѧ" "No game has been loaded yet" === "|ѧJ" "Can't back up any further" === "LkAhF" "Game number out of range" === "ѧƶqWXd" "Can't seek on game file" === "LkjMѧɮ" "Game not found in file" === "ɮפSѧ" "Bad FEN position in file" === "ɮפFENL~" "No moves in game" === "ѧS۪k" "No position has been loaded yet" === "|LJ" "Can't back up any further" === "LkAhF" "Can't open \"%s\"" === "Lk}\"%s\"" "Can't seek on position file" === "LkjMLɮ" "Position not found in file" === "ɮפSL" "Bad FEN position in file" === "ɮפFENL~" "Black to play" === "¤訫" "White to play" === "訫" "Can't open \"%s\"" === "Lk}\"%s\"" "You have edited the game history.\nUse Reload Same Game and make your move again." === "ѧwgsLF\n\"sJP@ѧ\"~ਫ" "You have entered too many moves.\nBack up to the correct position and try again." === "AJFLh۪k\nh^쥿TLAդ@" "Displayed position is not current.\nStep forward to the correct position and try again." === "ܪLOeL\neieLAդ@" "You have not made a move yet" === "A|" "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." === "|JcmailT.\nsJCMailTís." "No unfinished games" === "sbѧ" "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." === "AwHeX@ӵ۪k\nе۪kǰeܹ\nYsHe۪k, bROCJ\n\"cmail -remail -game %s\"\n" "Failed to invoke cmail" === "Iscmail" "Waiting for reply from opponent\n" === "ݹ^\n" "Still need to make move for game\n" === "ѧݨ\n" "Still need to make moves for both games\n" === "ѧҤݨ\n" "Still need to make moves for all %d games\n" === "Ҧ %d ѧҤݨ\n" "Still need to make a move for game %s\n" === "ѧ %s ݨ\n" "No unfinished games\n" === "sbѧ\n" "Ready to send mail\n" === "dzưeHN\n" "Still need to make moves for games %s\n" === "ѧ %s ݨ\n" "Edit comment" === "s" "Edit comment on %d.%s%s" === "s %d.%s%s" "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis." === "ҰʤRҦ...\npGoT@dۡANAڶHѵ{RC" "It is not White's turn" === "S訫" "It is not Black's turn" === "S¤訫" "Wait until your turn,\nor select Move Now" === "ݦܽA\nΪ̿\"ߧY\"" "Starting second chess program" === "ҰʲĤGӰڶHѵ{" "Training mode off" === "VmҦw" "Training mode on" === "VmҦw}" "Already at end of game" === "ѧwg" "Warning: You are still playing a game" === "`NGAbiѧ" "Warning: You are still observing a game" === "`NGAb[Ѵѧ" "Warning: You are still examining a game" === "`NGAbsѧ" "It is Black's turn" === "¤訫" "It is White's turn" === "訫" "That square is occupied" === "lwѤl" "Draw agreed" === "өM" "There is no pending offer on this move" === "ӵ۪kSݩwij" "Both players ran out of time" === "賣WɤF" "Black wins on time" === "WɧPt" "Your opponent is not out of time" === "SW" "Both players ran out of time" === "賣WɤF" "White wins on time" === "¤WɧPt" "Your opponent is not out of time" === "SW" "Draw agreed" === "өM"1,$g/=== ""/d "Black offers a draw" === "¤责M" "White offers a draw" === "责M" "You must make your move before offering a draw" === "Ѥ~ണM" "Draw agreed" === "өM" "Game aborted" === "ѧ_" "You are not examining a game" === "SRѧ" "You can't revert while pausing" === "Ȱɤ_ѧ" "Wait until your turn,\nor select Move Now" === "ݹ⨫\nΪ̿\"ߧYl\"" "It is your turn" === "A" "Wait until your turn" === "ݹ⨫" "No hint available" === "SiΪ" "Error writing to %s chess program" === "oeT%sڶHѵ{ɥX" "Error: %s chess program (%s) exited unexpectedly" === "~G%sڶHѵ{(%s)`פ" "Error reading from %s chess program (%s)" === "q%sڶHѵ{(%s)TɥX" "Analysis (%s)" === "R(%s)" "Comment" === "" "Comment on %d.%s%s" === " %d.%s%s" "Both flags fell" === "賣WɤF" "White's flag fell" === "W" "Black wins on time" === "WɧPt" "Black's flag fell" === "¤W" "White wins on time" === "¤WɧPt" "Bad FEN position in clipboard" === "ŶKïFENL~" "No response from ICS" === "ICS T" "You cannot do this while you are playing or observing" === "Uѩ[Ѯɤi榹ާ@" "Click in holdings to choose piece" === "IܤѤl" END-OF-GAME MESSAGES (should they be translated? You can translate it as "ѧGT") "Xboard adjudication: King destroyed" === "Xboard PMGQ" "Xboard adjudication: Bare king" === "Xboard PMGN" "Xboard adjudication: 3rd check" === "Xboard PMG3Nx" "Xboard adjudication: Stalemate" === "Xboard PMGx" "Xboard adjudication: Checkmate" === "Xboard PMGN" "Xboard adjudication: Insufficient mating material" === "Xboard PMGlO" "Xboard adjudication: Trivial draw" === "Xboard PMG@M" "XBoard adjudication: repetition draw" === "Xboard PMG`M" "Xboard adjudication: perpetual checking" === "Xboard PMGN" "Xboard adjudication: perpetual chasing" === "Xboard PMG" "%Xboard adjudication: perpetual chasing of" === "Xboard PMG" "Xboard adjudication: 50-move rule" === "Xboard PMG50^XPMWh" "Draw claim: 50-move rule" === "MnG50^XPMWh" "Draw claim: 3-fold repetition" === "MnG3`" "Draw claim: insufficient mating material" === "MnGlO" "Xboard adjudication: long game" === "Xboard PMG什L" "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d" === "XboardGѧOѨBdzW %s (%c%c%c%c) res=%d" "Xboard: Forfeit due to illegal move: %s (%c%c%c%c)%c" === "XboardGDkѨBdzW %s (%c%c%c%c)%c" "Xboard adjudication" === "Xboard PM" "User adjudication" === "ΤPM" "False win claim: '%s'" === "Ĺn" "False draw claim: '%s'" === "Mn" "xboard exit" === "xboard }" xboard-4.9.1/winboard/language/deutsch.lng0000644000175000001440000010563612717001265015466 00000000000000## WinBoard 4.5.0 language file ## German/Deutsch v1.0 beta 1 ## Translation by Oliver Uwira ## ## If you revise this, please insert your date, name and description. ## Falls Sie diese Datei berarbeiten, tragen Sie bitte Ihren Namen, ## das Datum und eine kurze Beschreibung hier ein. ## ## 07. November 2010 Oliver Uwira ## Ersterstellung ## Anmerkungen fr bersetzer: (empfohlen auch fr lang450.txt) ## o Benutzen Sie ## Kommentare fr erklrungsbedrftige Eintrge. ## o Beachten Sie, dass wortwrtliche bersetzungen in der Zielsprache ungewhnlich klingen knnen, z.B. "Knigin" anstatt dem richtigen "Dame". ## o Versuchen Sie, kurze bersetzungen zu finden. Mehr Text fhrt nicht automatisch zu besserem Verstndnis. ## o berprfen Sie Ihre bersetzung. Gibt sie die Bedeutung des Ursprungstext klar wieder? ## o Testen Sie Ihre bersetzung. ## o Vergeben Sie Shortcuts (ber das Zeichen &). " " === "bersetzung: Oliver Uwira" winboard.rc MENUS: "&New Game\tCtrl-N" === "&Neue Partie\tCtrl+N" "New Sh&uffle Game..." === "Neue Partie - Shuffleschach..." "New &Variant...\tAlt+Shift+V" === "Neue Partie - Variante...\tAlt+Umschalt+V" "&Load Game...\tCtrl-O" === "Partie &laden...\tCtrl+O" "Load &Next Game\tAlt+PgDn" === "Nchste Partie laden\tAlt+PgDn" "Load &Previous Game\tAlt+PgUp" === "Vorherige Partie laden\tAlt+PgUp" "&Reload Same Game" === "Partie erneut laden" "&Save Game...\tCtrl-S" === "Partie &speichern...\tCtrl+S" "&Copy Game To Clipboard\tCtrl+C" === "Partie &kopieren\tCtrl+C" "&Paste Game From Clipboard\tCtrl+V" === "Partie &einfgen\tCtrl+V" "Copy Game List to Clipboard" === "Partieliste kopieren" "L&oad Position...\tCtrl+Shift+O" === "Stellung laden...\tCtrl+Umschalt+O" "Load N&ext Position\tAlt+Shift+PgDn" === "Nchste Stellung laden\tAlt+Umschalt+PgDn" "Load Pre&vious Position\tAlt+Shift+PgUp" === "Vorherige Stellung laden\tAlt+Umschalt+PgUp" "Reload Sa&me Position" === "Stellung erneut laden" "S&ave Position...\tCtrl+Shift+S" === "Stellung speichern...\tCtrl+Umschalt+S" "Save as &Diagram..." === "Diagramm speichern..." "C&opy Position To Clipboard\tCtrl+Shift+C" === "Stellung kopieren\tAlt+Umschalt+C" "P&aste Position From Clipboard\tCtrl+Shift+V" === "Stellung einfgen\tAlt+Umschalt+V" "&Quit" === "Beenden" "Machine &White\tCtrl+W" === "Engine Wei\tCtrl+W" "Machine &Black\tCtrl+B" === "Engine Schwarz\tCtrl+B" "&Two Machines\tCtrl+T" === "Zwei Engines\tCtrl+T" "Machine Both" === "Engine gegen sich selbst" "&Machine Match" === "Turnier" "&Analysis Mode\tCtrl+A" === "Analysemodus\tCtrl+A" "Analyze &File\tCtrl+F" === "Datei analysieren\tCtrl+F" "&ICS Client" === "Mit ICS verbinden" "&Edit Game\tCtrl+E" === "Partie bearbeiten\tCtrl+E" "E&dit Position\tCtrl+Shift+E" === "Stellung bearbeiten\tCtrl+Umschalt+E" "Trai&ning" === "Trai&ning" "Engine &Output\tAlt+Shift+O" === "Engineausgabe anzeigen\tAlt+Umschalt+O" "Evaluation &Graph\tAlt+Shift+E" === "Bewertungsgraph anzeigen\tAlt+Umschalt+E" "Game &List\tAlt+Shift+G" === "Partieliste anzeigen\tAlt+Umschalt+G" "Move &History\tAlt+Shift+H" === "Notation anzeigen\tAlt+Umschalt+H" "Open &New Chat Window" === "Chatfenster ffnen" "Edit Ta&gs..." === "&Tags bearbeiten" "Edit Co&mment..." === "&Kommentar bearbeiten" "&Tags" === "&Tags" "&Comments" === "&Kommentar" "Enter &Username..." === "Ben&utzernamen eingeben" "&Pause\tPause" === "&Pause\tPausa" "&Accept\tF3" === "&Annehmen\tF3" "D&ecline\tF4" === "Abl&ehnen\tF4" "Re&match\tF12" === "Rcks&piel\tF12" "Call &Flag\tF5" === "Zeit &reklamieren\tF5" "&Draw\tF6" === "&Remis\tF6" "Ad&journ\tF7" === "Vertagen\tF7" "A&bort\tF8" === "Abbrechen\tF8" "&Resign\tF9" === "Auf&geben\tF9" "Stop &Observing\tF10" === "Zuschauen beenden\tF10" "Stop E&xamining\tF11" === "Analyse beenden\tF11" "&Upload to Examine" === "Z&ur Analyse hochladen" "Adjudicate to &White" === "Abschtzung - Wei gewinnt" "Adjudicate to &Black" === "Abschtzung - Schwarz gewinnt" "Adjudicate &Draw" === "Abschtzung - Remis" "Type In &Move...\tAlt+I" === "&Zug eingeben...\tAlt+I" "&Backward\tAlt+Left" === "Zurck\tAlt+Links" "&Forward\tAlt+Right" === "&Vorwrts\tAlt+Rechts" "Back to &Start\tAlt+Home" === "Zum &Anfang\tAlt+Anfang" "Forward to &End\tAlt+End" === "Zum &Ende\tAlt+Ende" "&Revert\tHome" === "Rckgngig\tAnfang" "&Annotate" === "Kommentieren" "&Truncate Game\tEnd" === "Res&tliche Zge lschen\tEnde" "&Move Now\tCtrl+M" === "Ziehe &jetzt\tCtrl+M" "&Retract Move\tCtrl+X" === "Zurck&nehmen\tCtrl+X" "Flip &View\tF2" === "&Brett drehen\tF2" "&Swap Clocks" === "Uhren taus&chen" "&Mute all Sounds" === "Lautlos" "&General..." === "&Allgemein" "&Board..." === "Brett..." "Ad&judications...\tAlt+Shift+J" === "Abschtzungen...\tAlt+Umschalt+J" "Common &Engine...\tAlt+Shift+U" === "Standardengine...\tAlt+Umschalt+U" "Engine #&1 Settings..." === "Engine #1 konfigurieren..." "Engine #&2 Settings..." === "Engine #2 konfigurieren..." "Install 1st..." === "Installieren in Engineliste 1..." "Install 2nd..." === "Installieren in Engineliste 2..." "&ICS..." === "&ICS..." "Add ICS..." === "Neue ICS..." "&Fonts..." === "&Schriftarten..." "Soun&ds..." === "&Klnge..." "G&ame List..." === "Partieliste..." "&Game List Tags..." === "Partieliste Tags..." "Comm&unications..." === "Porteinstellungen..." "&Load Game...\tAlt+Shift+L" === "Partie &laden...\tAlt+Umschalt+L" "&Save Game...\tAlt+Shift+S" === "Partie &speichern...\tAlt+Umschalt+S" "&Time Control...\tAlt+Shift+T" === "&Zeitkontrolle..." "Save Settings &Now" === "Einstellungen sofort speichern" "Save Settings on E&xit" === "Einstellungen nach Beenden speichern" "Help &Contents\tF1" === "In&halt\tF1" "Help &Index" === "&Index" "How to &Use Help" === "Wie benutzt man die Hilfe" "&Hint..." === "&Tipp..." "&Book..." === "&Erffnungsbuch..." "&About WinBoard" === "ber WinBoard" "White" === "Wei" "Promote" === "Schwarz" "Pawn" === "Bauer" "Knight" === "Springer" "Bishop" === "Lufer" "Rook" === "Turm" "Queen" === "Dame" "King" === "Knig" "Archbishop" === "Erzbischof" "Chancellor" === "Kanzler" "Elephant" === "Elefant" "Cannon" === "Kanone" "Empty Square" === "Leeres Feld" "Black" === "Schwarz" "Demote" === "Degradieren" "Clear Board " === "Brett leeren " "Gold" === "Gold" "Silver" === "Silber" "Lance" === "Lanze" "Drop" === "Einsetzen" "Cop&y and Paste" === "Kopieren &und einfgen" "&Copy" === "&Kopieren" "&Paste" === "&Einfgen" "&Undo" === "&Rckgngig" "Cu&t" === "A&usschneiden" "&Copy" === "&Kopieren" "&Paste" === "&Einfgen" "Select &All" === "&Alles auswhlen" DIALOGS: ABOUTBOX "About WinBoard" === "ber WinBoard" "OK" === "OK" "Chessboard for Windows" === "Schachbrett fr Windows" "Copyright 1991 Digital Equipment Corporation" === "Copyright (c) Digital Equipment Corporation 1991" "Enhancements Copyright 1992-2014 Free Software Foundation" === "Weiter Copyright (c) Free Software Fundation 1992-2014" "Enhancements Copyright 2005\r\nAlessandro Scotti" === "Weiter Copyright (c) \r\nAlessandro Scotti 2005" "WinBoard 0.0.0" === "WinBoard 0.0.0" ABOUTBOX2 "galactic" === "galaktisch" TIME CONTROL DIALOG "Time Control" === "Zeitkontrolle" "Conventional chess clock" === "Normale Schachuhr" "Incremental clock" === "Schachuhr mit Inkrement" "Cancel" === "Abbrechen" "Use arrow keys to specify which clock setting type, then press tab to alter values." === "Benutzen Sie die Pfeiltasten zur Auswahlt des Uhrentyps und verwenden Sie anschlieend die Tabulatortaste, um die Uhr zu stellen." "Fixed time per move" === "Feste Zeit pro Zug" "Number of moves:" === "Anzahl Zge:" "Within number of minutes:" === "in Anzahl Minuten:" "Initial number of minutes:" === "Initiale Anzahl Minuten:" "Plus number of seconds per move:" === "Plus Anzahl Sekunden pro Zug:" "Maximum seconds per move:" === "Maximale Anzahl Sekunden pro Zug" "Time-Odds Factors:" === "Zeitvorgabe:" "Engine #1:" === "Engine #1:" "Engine #2:" === "Engine #2:" LOAD OPTIONS DIALOG "Load Game Options" === "Partieeinstellungen laden" "Load games with automatic stepping" === "Partien mit automatischen Schritten laden" ## Make it wider. It could say "segundos por jugada" "seconds per move" === "Sekunden pro Zug" SAVE OPTIONS DIALOG "Save Game Options" === "Partieeinstellungen speichern" "Save As: " === "Stil speichern" "Save games automatically" === "Partien automatisch speichern" "Prompt for filename" === "Dateinamen eingeben" "To file:" === "Datei:" "PGN" === "PGN" "Old" === "Alt" "Browse..." === "Durchsuchen..." "Save out of book info in PGN" === "Verlassen des Erffnungsbuchs in PGN markieren" 1536 "Open" === "ffnen" "File &Name:" === "Datei&name:" "&Directories:" === "&Verzeichnisse:" "List Files of &Type:" === "Datei&typ:" "Dri&ves:" === "&Partitionen:" "&Help" === "&Hilfe" "&Index number:" === "&Zugnummer:" COMMPORT "Communication Port Settings" === "Porteinstellungen" "Net&work..." === "&Netzwerk" "&Port:" === "&Port:" "Data &Rate:" === "&bertragungsrate:" "Data &Bits:" === "&Bits:" "P&arity:" === "P&aritt:" "&Stop Bits:" === "&Stop Bits:" "F&low:" === "Datenf&luss:" EDIT COMMENT "Edit comment" === "Kommentar bearbeiten" "&Clear" === "&Leeren" "&Edit" === "&Bearbeiten" PROMOTION POPUP "Promotion" === "Umwandlung" "&Queen" === "&Dame" "&Rook" === "&Turm" "&Bishop" === "&Lufer" "K&night" === "&Springer" "&King" === "&Knig" "&Cancel" === "&Abbrechen" ## This text doesn't appear in WB (remove comment and string if deleted from lang450.txt) "Promote pawn to:" === "Bauern umwandeln in:" ## This text appears and it is not in lang450.txt (remove comment if added to lang450.txt) "Promote to:" === "Umwandeln in:" "Chance&llor" === "Kanz&ler" "&Archbishop" === "Er&zbischof" " YES" === " JA" " NO" === " NEIN" "C&entaur" === "Z&entaurus" GAME LIST "Game List" === "Partieliste" "&Load" === "&Laden" "&Prev" === "&Vorschau" "&Next" === "&Weiter" "&Close" === "&Schlieen" "Filter" === "Filter" EDIT TAGS "Edit Tags" === "Tags bearbeiten" ERROR "ICS Interaction" === "ICS Interaktion" "Dialog" === "Dialog" "Error" === "Fehler" "Sorry Charlie" === "Pech gehabt" COLORIZE "I C S Interaction Colors" === "Interaktionsfarben I C S" "Interaction Colors" === "Interaktionsfarben" "Premove" === "Zugeingabe vorab" "Alarm" === "Alarm" "Colors" === "Farben" "&Choose Color..." === "&Farbe auswhlen..." "&Bold" === "&Fett" "&Italic" === "&Kursiv" "&Underline" === "&Unterstrichen" "&Strikeout" === "&Durchgestrichen" QUESTION ## Really appears this? weird "Enter a chess engine command or just type something stupid that will completely screw things up." === "Geben Sie ein Kommand fr die Schachengine ein oder geben Sie etwas Unsinniges ein, das das Programm abstrzen lsst." "Question" === "Frage" "Enter" === "Eingabe" STARTUP DIALOG "WinBoard Startup" === "WinBoard starten" "What would you like to do?" === "Was mchten Sie tun?" "&Play against a chess engine or match two engines" === "Gegen ein &Schachprogramm spielen oder ein Match zwischen zwei Schachprogrammen starten" "&Use an Internet Chess Server" === "Mit einem &Internetschachserver (ICS) verbinden" "Just &view or edit game files" === "Nur &Partien nachspielen oder bearbeiten" "Specify Chess &Engines:" === "&Schachprogramme auswhlen:" "Specify Chess &Server:" === "&Internetschachserver auswhlen:" "&Additional options" === "&Erweiterte Einstellungen" INDEX "Type in a move" === "Geben Sie einen Zug ein" "Inde&x number:" === "Zugnummer" SOUND DIALOG "Sounds" === "Klnge" "&Event:" === "&Ereignis:" "&No sound" === "&Lautlos" ## Make it wider, it could say "Bip por defecto" "&Default beep" === "&Standardton" "&Built-in sound:" === "&Mitgelieferte Klnge" ## Make it wider, it could say "Archivo WAV:" "&WAV file:" === "&WAV-Datei:" "B&rowse..." === "&Durchsuchen..." "&Play" === "&Abspielen" "&Defaults" === "&Standardton" GENERAL OPTIONS DIALOG ## In this dialog, buttons OK/Cancel are not aligned at the right ## Note: finely tuned spaces to align keys at right (add this comment to lang450.txt for commodity) "General Options" === "Allgemeine Einstellungen" "Always on &Top" === "Immer im Vordergrund" "Always &Queen Ctrl+Shift+Q" === "Immer &Dame Ctrl+Umschalt+Q" "Animate &Dragging" === "&Animiertes Ziehen" "&Animate Moving Ctrl+Shift+A" === "Animierte &Zge Ctrl+Umschalt+A" "Auto &Flag Ctrl+Shift+F" === "Autom. &Zeitreklamation Ctrl+Umschalt+F" "Auto Flip &View" === "&Brett automatisch drehen" "Auto &Raise Board" === "&Brett im Vordergrund halten" "&Blindfold" === "Blindspiel" "Highlight Dra&gging" === "&Ziehen hervorheben" "Highlight Last &Move" === "&Letzten Zug hervorhaben" "Periodic &Updates" === "&Regelmig aktualisieren" ## Was wrong in lang450.txt (remove comment if corrected in lang450.txt) "Ponder &Next Move Ctrl+Shift+P" === "Auf &Gegnerzeit rechnen Ctrl+Umschalt+P" "&Popup Exit Message" === "&Rckfrage vor Beenden" "Popup Move &Errors" === "&Inkorrekten Zug anzeigen" "Show Butt&on Bar" === "&Schalterleiste anzeigen" "Show &Coordinates" === "&Koordinaten anzeigen" "&Show Thinking" === "&Computerausgabe anzeigen" "Test &Legality Ctrl+Shift+L" === "&Legalitt berprfen Ctrl+Umschalt+L" "&Hide Thinking Ctrl+Shift+H" === "C&omp. ausgabe ausblenden Ctrl+Ums+H" "&Info in Move History Ctrl+Shift+I" === "&Informationen in Notation Ctrl+Umschalt+I" "&Send Engine Think" === "Computerausgabe &bertragen" "E&xtended PGN Info Ctrl+Shift+X" === "&Erweiterte Inf. in PGN Ctrl+Umschalt+X" "Highlight with Arro&w" === "Mit &Pfeil hervorheben" "Displa&y Logos" === "&Logos anzeigen" "One-Click Move" === "Ein-Klick-Eingabe" ICS OPTIONS "ICS Options" === "ICS Optionen" "&Auto Comment" === "&Autom. Kommentare" "Auto &Observe" === "Automatisches &Zuschauen" "&Get Move List" === "&Zugliste" "&Local Line Editing" === "&Lokale Zeile bearbeiten" "&Quiet Play" === "&Stilles Spiel" "&Premove" === "&Zugeingabe vorab" "&White first move" === "1. Zug &Wei" "&Black first move" === "1. Zug &Schwarz" "&Sound alarm at" === "&Alarm bei" "seconds" === "Sekunden" "Choose..." === "Auswhlen..." "Do ¬ colorize messages" === "Keine &Nachrichtenfarben" "&Auto Kibitz" === "&Autom. Kibitzen" "See&k Graph" === "&Suchgraph" "auto-&Refresh" === "&Autom. aktualisieren" "Bckgnd Obser&ve" === "&Im Hintergrund zuschauen" "&Dual Board" === "&Doppeltes Brett" "One-Click &Move" === "&Ein-Klick-Eingabe" "Background..." === "Hintergrund..." "&Defaults..." === "&Standard..." "Startup &Chat Boxes:" === "ffne Chatfenster:" "General" === "Allgemein" BOARD OPTIONS (NOTE: AllWhite uses the white pieces for both sides FlipBlack plots the blck pieces upside down) "Board Options" === "Brettoptionen" "Defaults" === "Standard" "Light Squares" === "Weie Felder" "Dark Squares" === "Schwarze Felder" "White Pieces" === "Weie Figuren" "Black Pieces" === "Schwarze Figuren" "Square Highlights" === "Felder hervorheben" "Premove Highlights" === "Vorabeingabe hervorheben" "Monochrome" === "Monochrome" "All White" === "Alle Wei" "Flip Black" === "Drehe Schwarz" "Size" === "Gre" BOARD SIZES (translate as number?) ## Don't put numbers, or nobody will translate them. ## This is a space for imagination (useful note to add to lang450.txt). "&Tiny" === "&Mini" "T&eeny" === "&Sehr winzig" "&Dinky" === "&Winziger" "&Petite" === "W&inzig" "Sl&im" === "Sehr &klein" "&Small" === "K&leiner" "Medi&ocre" === "Kl&ein" "&Middling" === "&Solala" "&Average" === "&Durchschnitt" "Mode&rate" === "&Moderat" "Medi&um" === "&Normal" "Bul&ky" === "M&assiv" "&Large" === "&Gro" "&Big" === "G&rer" "&Huge" === "Sehr gr&o" "&Giant" === "Gigan&tisch" "&Colossal" === "Kol&losal" "Tita&nic" === "Tita&nisch" FONTS "Fonts" === "Schriftarten" "Current Board Size" === "Aktuelle Brettgre" "All Board Sizes" === "Alle Brettgren" "&Revert to Defaults" === "&Standardeinstellung" "Clocks" === "Uhren" "Messages" === "Nachrichten" "Coordinates" === "Koordinaten" "Tags" === "Markierungen" "Comments" === "Kommentare" "I C S Interaction" === "ICS Kommunikation" "&Color..." === "&Farben..." "Move History, Engine Output" === "Notation, Engineausgabe" ADJUDICATIONS DIALOG "Adjudications" === "Abschtzungen" ## Make wider next four controls, text could be more clear "Ponder Next Move" === "Auf Gegnerzeit rechnen" "Enable and Show Thinking (recommended)" === "Engineausgabe anzeigen (empfohlen)" "Hide Thinking when Playing against Human" === "Engineausgabe im Spiel gegen Menschen ausblenden" "Periodic Updates (for Analysis Mode)" === "Regelmig aktualisieren (im Analysemodus)" "Adjudications in non-ICS games" === "Abschtzungen in Nicht-ICS-Partien" ## Make it wider "Adjudicate draw after:" === "Als Remis abschtzen nach:" ## Make it wider "moves" === "Zge" "Win/loss adjudication threshold:" === "Gewinn-/Verlustabschtzung bei:" ## Make it wider "centipawns" === "1/100 Bauerneinheit" "&Verify Engine Claims" === "&berprfe Enginereklamationen" "Detect &Mates" === "&Matterkennung" "Draw if &Insufficient Material" === "&Remis falls kein Mattmaterial" "Adjudicate &Trivial Draws" === "&Klare Remis abschtzen" "Apply" === "bernehmen" ## Make wider next four (currently cutted) "-move rule" === "-Zge-Regel" "-fold repeats" === "-fache Wiederholung" "Engine #1 Score is Absolute" === "Bewertung Engine #1 ist absolut" "Engine #2 Score is Absolute" === "Bewertung Engine #2 ist absolut" COMMON ENGINE DIALOG "Common Engine Settings" === "Allgemeine Einstellungen (Engines)" "Polyglot Directory:" === "Verzeichnis Polyglot:" "Hash Size (MB):" === "Hashgre (MB):" ## Make wider next four "EGTB Path:" === "Verzeichnis EGTB:" "EGTB Size (MB):" === "Gre EGTB (MB):" "Use Book:" === "Buch verwenden:" "Max nr of CPUs:" === "Max. Prozessoren:" "First has Own Book" === "Eigenes Buch (Engine #1)" "Second has Own Book" === "Eigenes Buch (Engine #2)" "Book Depth:" === "Buchtiefe:" "Book Variation:" === "Buchvariation:" "Default Match Games:" === "Anzahl Matchpartien" NEW-VARIANT DIALOG (NOTE: the 'holdings' are the pieces standing next to the board ('in hand') "Variants" === "Varianten" "Variant" === "Variante" "Board size:" === "Brettgre" ## Make it wider (currently cutted) "ranks" === "Reihe" "files" === "Linie" "Holdings with room for:" === "Figuren zum Einsetzen:" "pieces" === "Figuren" ## Make it wider (so 'val.' becomes 'valor', and 'sel.' becomes 'seleccionada') "('-1' means defaults for selected variant)" === "('-1' bedeutet Standard fr ausgewhlte Variante)" VARIANT NAMES: "&normal" === "&Normal" "&FRC" === "&FRC" "&wildcastle" === "&Wildcastle" "&nocastle" === "&Nocastle" "&losers" === "&Losers" "&giveaway" === "&Ruberschach" "s&uicide" === "&Selbstmord" "&3Check" === "&Drei Schachs" "&twokings" === "&Zwei Knige" "&atomic" === "&Atomschach" "cra&zyhouse" === "Cra&zyhouse" "&bughouse" === "&Tandem" "&Twilight" === "&Twilight" "&shogi" === "&Shogi" "su&per" === "Su&per" "&knightmate" === "&Springermatt" "&Berolina" === "&Berolina" "c&ylinder" === "&Zylinderschach" "&fairy" === "&Mrchenschach" "&makruk" === "&Makruk" "&gothic" === "&Gothic" "&capablanca" === "&Capablanca" "&Janus" === "&Janus" "&CRC" === "&CRC" "&Falcon" === "&Falcon" "cou&rier" === "&Courier" "&Great" === "&Groschach" "&Shatranj" === "&Shatanj" "&xiangqi" === "&Xiangqi" NEW SHUFFLE GAME "New Shuffle Game" === "Neue Partie FRC" "&Start Position Number:" === "Startposition Nr.:" "Random" === "Zufllig" GAME-LIST OPTIONS DIALOG "Game List Options" === "Einstellungen (Partieliste)" "PGN &Tags:" === "&PGN-Tags:" ## Make wider next five "&Up" === "&Aufwrts" "&Down" === "A&bwrts" "Default" === "Standard" "Factory" === "Fabrik" "Restore to:" === "Wiederherstellen nach:" MOVE HISTORY WINDOW "Move History" === "Notation" EVALUATION GRAPH "Evaluation Graph" === "Bewertungsgraph" ENGINE OUTPUT WINDOW "Engine output" === "Engineausgabe" "Engine #1" === "Engine #1" "NPS" === "Kn./Sec." "Engine #2" === "Engine #2" CHAT BOXES "Chat Window" === "Chatfenster" "Chat partner:" === "Chatpartner:" "Clear" === "Leeren" "Send" === "Senden" winboard.c "&File" === "&Datei" "&Mode" === "&Modus" "&Action" === "&Partie" "&Step" === "&Zug" "&Options" === "&Optionen" "&Help" === "Hilfe" "Font name too long:" === "Schriftname zu lang:" "Font point size missing:" === "Schriftgre fehlt:" "Can't parse color name %s" === "Unbekannte Farbe: %s" "Unrecognized board size value" === "Unbekannte Brettgre" "Unrecognized argument" === "Unbekannter Parameter" "No value provided for argument" === "Fehlender Wert fr Parameter" "Incomplete \\ escape in value for" === "Escapezeichen \\ nicht komplett in Wert fr" "Failed to open indirection file" === "Konnte Umleitungsdatei nicht ffnen" "Unrecognized boolean argument value" === "Ungltiger Wert fr boolschen Parameter" "Unrecognized argument" === "Unbekannter Parameter" "Too many colors" === "Zu viele Farben" "&Minimize\tCtrl+F4" === "&Minimieren\tCtrl+F4" "White: %s" === "Wei: %s" "We only care about the height here" === "Hier ist nur die Hhe wichtig" "Cannot build game list" === "Konnte Partieliste nicht erzeugen" "Load Game from File" === "Partie aus Datei laden" "Load Position from File" === "Stellung aus Datei laden" "Save Game to File" === "Partie in Datei speichern" "Save Position to File" === "Stellung in Datei speichern" "%s does not support analysis" === "%s untersttzt Analysemodus nicht" "Analyze Game from File" === "Analysiere Partie aus Datei" "Unable to activate help" === "Hilfe konnte nicht aktiviert werden" "Send to chess program:" === "An Engine senden:" "Send to second chess program:" === "An Engine #2 senden:" "Direct Command" === "Direkter Befehl" "Error loading sound %s" === "Konnte Klang %s nicht laden" "Error playing sound %s" === "Konnte Klang %s nicht abspielen" "File open failed" === "Konnte Datei nicht ffnen" "Internal error in file dialog box" === "Interner Fehler in Dateidialog" "Option Error" === "Fehler (Option)" "Choose an option, or cancel to exit" === "Option auswhlen oder abbrechen" "Unable to activate help" === "Hilfe konnte nicht aktiviert werden" "Displayed move is not current" === "Angezeigter Zug ist nicht aktuell" "Could not parse move" === "Konnte Zug nicht verarbeiten" "%s:\nError code %d" === "%s:\nFehler %d" "Error" === "Fehler" "Fatal Error" === "Schwerer Fehler" "Exiting" === "Beende..." "%s:\nError code %d" === "%s:\nFehler %d" "Note" === "Beachte" "Error writing to chess program" === "Fehler beim Senden an Engine" "User" === "Benutzer" "Unknown" === "Unbekannt" "White" === "Wei" "Black" === "Schwarz" "Save Game to File" === "Partie in Datei speichern" "Not implemented" === "Nicht implementiert" ## What is this? appears that it can be without translation "Shout Text" === "" "SShout/CShout" === "" "Channel 1 Text" === "Text (Kanal 1)" "Channel Text" === "Text (Kanal)" "Kibitz Text" === "Text (Kibitz)" "Tell Text" === "Text (Chat)" "Challenge Text" === "Text (Fordern)" "Request Text" === "Text (Forderung)" "Seek Text" === "Text (Suche)" "Normal Text" === "Text (Standard)" "None" === "Nichts" "Pawn" === "Bauer" "Knight" === "Springer" "Bishop" === "Lufer" "Rook" === "Turm" "Queen" === "Dame" "Information" === "Information" wclipbrd.c "Unable to convert position to FEN." === "Konnte Stellung nicht nach FEN konvertieren." "Unable to copy FEN to clipboard." === "Konnte FEN nicht in Zwischenablage kopieren" "Cannot create temporary file name." === "Konnte temporre Datei nicht erstellen" "Cannot open temporary file." === "Konnte temporre Datei nicht ffnen" "Cannot write to temporary file." === "Konnte temporre Datei nicht schreiben" "Cannot reopen temporary file." === "Konnte temporre Datei nicht erneut ffnen" "Cannot determine size of file." === "Konnte Dateigre nicht bestimmen" "Cannot allocate clipboard buffer." === "Nicht genug Speicher fr Zwischenablage" "Cannot read from temporary file." === "Konnte temporre Datei nicht lesen" "Error reading from temporary file." === "Fehler beim Lesen temporrer Datei" "Cannot copy text to clipboard" === "Konnte Text nicht in Zwischenablage kopieren" "Unable to allocate memory for clipboard." === "Nicht genug Speicher fr Zwischenablage" "Unable to lock clipboard memory." === "Konnte Speicher fr Zwischenablage nicht blockieren" "Cannot unlock clipboard memory." === "Konnte Speicher fr Zwischenablage nicht freigeben" "Cannot open clipboard." === "Konnte Zwischenablage nicht ffnen" "Cannot empty clipboard." === "" "Cannot copy text to clipboard." === "" "Cannot close clipboard." === "" "Unable to paste FEN from clipboard." === "" "Unable to create temporary file." === "" "Error writing to temporary file." === "" "Unable to open clipboard." === "" "No text in clipboard." === "" "Unable to lock clipboard memory." === "" "Unable to allocate memory for text string." === "" "Unable to unlock clipboard memory." === "" "Unable to close clipboard." === "" woptions.c "Move" === "" "Bell" === "" "ICS Alarm" === "" "ICS Win" === "" "ICS Loss" === "" "ICS Draw" === "" "ICS Unfinished" === "" ## What is this? appears that it can be without translation "Shout" === "" "SShout/CShout" === "" "Channel 1" === "" "Channel" === "" "Kibitz" === "" "Tell" === "" "Challenge" === "" "Request" === "" "Seek" === "" "Browse for Sound File" === "" "Can't parse com port settings" === "" "Option Error" === "" "Invalid data rate" === "" "Option Error" === "" "Failed to set comm port state;\r\ninvalid options?" === "" "Failed to set comm port state" === "" "Invalid load game step rate" === "" "Invalid save game file name" === "" "Browse for Auto Save File" === "" "Invalid moves per time control" === "" "Invalid minutes per time control" === "" "Invalid increment" === "" "Invalid initial time" === "" "Changing time control during a game is not implemented" === "" "Variant %s not supported by %s" === "" "Warning: second engine (%s) does not support this!" === "" "Invalid ICS Alarm Time" === "" "Invalid max time per move" === "" "Invalid time-odds factor" === "" "Choose Folder" === "" "Choose Book" === "" "Choose Polyglot Directory" === "" "Choose EGTB Directory:" === "" "Polyglot was not found in the specified folder!" === "" wgamelist.c "No game selected" === "" "Can't go forward any further" === "" "Can't back up any further" === "" "No game list" === "" "Game List" === "" "Game list not loaded or empty" === "" "%s - %d/%d games" === "" wedittags.c "Edit Tags" === "" "Tags" === "" "Error replacing tags." === "" wsettings.c "%s Engine Settings (%s)" === "" "OK" === "" "Cancel" === "" backend.c "bad timeControl option %s" === "" "bad searchTime option %s" === "" "first" === "" "second" === "" "protocol version %d not supported" === "" "Variant %s supported only in ICS mode" === "" "Unknown variant name %s" === "" "Starting chess program" === "" "Could not open comm port %s" === "" "Could not connect to host %s, port %s" === "" "Unknown initialMode %s" === "" "Can't have a match with no chess programs" === "" "Bad game file" === "" "Bad position file" === "" "AnalyzeFile mode requires a game file" === "" "Analysis mode requires a chess engine" === "" "Analysis mode does not work with ICS mode" === "" "MachineWhite mode requires a chess engine" === "" "MachineWhite mode does not work with ICS mode" === "" "MachineBlack mode requires a chess engine" === "" "MachineBlack mode does not work with ICS mode" === "" "TwoMachines mode does not work with ICS mode" === "" "TwoMachines mode requires a chess engine" === "" "Training mode requires a game file" === "" "Error writing to ICS" === "" "Error reading from keyboard" === "" "Got end of file from keyboard" === "" "Error writing to ICS" === "" "Error writing to display" === "" "Error gathering move list: two headers" === "" "Error gathering move list: nested" === "" "Connection closed by ICS" === "" "Error reading from ICS" === "" "Failed to parse board string:\n\"%s\"" === "" "Game too long; increase MAX_MOVES and recompile" === "" "Error gathering move list: extra board" === "" "Illegal move \"%s\" from ICS" === "" "Couldn't parse move \"%s\" from ICS" === "" ## 'say' must not be translated (add this comment to lang450.txt) "say Internal error; bad moveType %d (%d,%d-%d,%d)" === "" "You are playing Black" === "" "You are playing White" === "" "It is White's turn" === "" "It is Black's turn" === "" "Displayed position is not current" === "" "Illegal move" === "" "End of game" === "" "Incorrect move" === "" ## Second %s is translated 'first' or 'second'. (add this comment to lang450.txt) "Illegal move \"%s\" from %s machine" === "" "Forfeit due to illegal move" === "" "%s does not support analysis" === "" ## Second %s is translated 'first' or 'second' (add this comment to lang450.txt) "Illegal move \"%s\" (rejected by %s chess program)" === "" ## First %s is translated 'first' or 'second' (add this comment to lang450.txt) "Failed to start %s chess program %s on %s: %s\n" === "" "Hint: %s" === "" "Machine accepts your draw offer" === "" "Machine offers a draw\nSelect Action / Draw to agree" === "" "%s (only move)" === "" "Ambiguous move in ICS output: \"%s\"" === "" "Illegal move in ICS output: \"%s\"" === "" "Gap in move list" === "" "Game too long; increase MAX_MOVES and recompile" === "" "Variant %s not supported by %s" === "" "Startup failure on '%s'" === "" "Waiting for first chess program" === "" "Waiting for second chess program" === "" "Match %s vs. %s: final score %d-%d-%d" === "" "Stalemate" === "" "Illegal move: %d.%s%s" === "" "Ambiguous move: %d.%s%s" === "" "Can't open \"%s\"" === "" "Cannot build game list" === "" "No more games in this message" === "" "No game has been loaded yet" === "" "Can't back up any further" === "" "Game number out of range" === "" "Can't seek on game file" === "" "Game not found in file" === "" "Bad FEN position in file" === "" "No moves in game" === "" "No position has been loaded yet" === "" "Can't back up any further" === "" "Can't open \"%s\"" === "" "Can't seek on position file" === "" "Position not found in file" === "" "Bad FEN position in file" === "" "Black to play" === "" "White to play" === "" "Can't open \"%s\"" === "" "You have edited the game history.\nUse Reload Same Game and make your move again." === "" "You have entered too many moves.\nBack up to the correct position and try again." === "" "Displayed position is not current.\nStep forward to the correct position and try again." === "" "You have not made a move yet" === "" "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." === "" "No unfinished games" === "" "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." === "" "Failed to invoke cmail" === "" "Waiting for reply from opponent\n" === "" "Still need to make move for game\n" === "" "Still need to make moves for both games\n" === "" "Still need to make moves for all %d games\n" === "" "Still need to make a move for game %s\n" === "" "No unfinished games\n" === "" "Ready to send mail\n" === "" "Still need to make moves for games %s\n" === "" "Edit comment" === "" "Edit comment on %d.%s%s" === "" "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis." === "" "It is not White's turn" === "" "It is not Black's turn" === "" "Wait until your turn,\nor select Move Now" === "" "Starting second chess program" === "" "Training mode off" === "" "Training mode on" === "" "Already at end of game" === "" "Warning: You are still playing a game" === "" "Warning: You are still observing a game" === "" "Warning: You are still examining a game" === "" "It is Black's turn" === "" "It is White's turn" === "" "That square is occupied" === "" "There is no pending offer on this move" === "" "Your opponent is not out of time" === "" "Black offers a draw" === "" "White offers a draw" === "" "You must make your move before offering a draw" === "" "You are not examining a game" === "" "You can't revert while pausing" === "" "Wait until your turn,\nor select Move Now" === "" "It is your turn" === "" "Wait until your turn" === "" "No hint available" === "" ## First %s is translated 'first' or 'second' (add this comment to lang450.txt) "Error writing to %s chess program" === "" ## First %s is translated 'first' or 'second' (add this comment to lang450.txt) "Error: %s chess program (%s) exited unexpectedly" === "" ## First %s is translated 'first' or 'second' (add this comment to lang450.txt) "Error reading from %s chess program (%s)" === "" "Analysis (%s)" === "" "Comment" === "" "Comment on %d.%s%s" === "" "Both flags fell" === "" "White's flag fell" === "" "Black's flag fell" === "" "Bad FEN position in clipboard" === "" "No response from ICS" === "" "You cannot do this while you are playing or observing" === "" "Click in holdings to choose piece" === "" END-OF-GAME MESSAGES (should they be translated?) ## I think that only for visualization and not for PGN, as PGN files are shared all around the world ## [Well, this is currently not possible, they are used for both. And it only appears as a comment in the PGN.] "Game aborted" === "" "White wins on time" === "" "Black wins on time" === "" "Both players ran out of time" === "" "White resigns" === "" "Black resigns" === "" "White mates" === "" "Black mates" === "" "Draw" === "" "Draw agreed" === "" "Xboard adjudication: King destroyed" === "" "Xboard adjudication: Bare king" === "" "Xboard adjudication: 3rd check" === "" "Xboard adjudication: Stalemate" === "" "Xboard adjudication: Checkmate" === "" "Xboard adjudication: Insufficient mating material" === "" "Xboard adjudication: Trivial draw" === "" "XBoard adjudication: repetition draw" === "" "Xboard adjudication: perpetual checking" === "" "Xboard adjudication: perpetual chasing" === "" "%Xboard adjudication: perpetual chasing of" === "" "Xboard adjudication: 50-move rule" === "" "Draw claim: 50-move rule" === "" "Draw claim: 3-fold repetition" === "" "Draw claim: insufficient mating material" === "" "Xboard adjudication: long game" === "" "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d" === "" "Xboard: Forfeit due to illegal move: %s (%c%c%c%c)%c" === "" "Xboard adjudication" === "" "User adjudication" === "" "False win claim: '%s'" === "" "False draw claim: '%s'" === "" "xboard exit" === "" ## One forgetted string (remove comment if added to lang450.txt) "Type in your name" === "Geben sie ihre namen ein" xboard-4.9.1/winboard/language/italiano.lng0000644000175000001440000013324112717001265015620 00000000000000## WinBoard 4.5.0 language file ## ## Italian / Italiano ## v1.0 beta 1 ## ## Translation by Giorgio Medeot (09-nov-2010) ## Traduzione di Giorgio Medeot ## WEB ADDRESS OF TRANSLATOR ## ## If you revise this, please insert your date, name and description. ## Se modificate questo file, inserite la data, il vostro nome e la descrizione della modifica ## ## For example: ## Per esempio: ## 24-ago-2010. Juan Prez (j@xyz.p). Corrected translation for xyzzy. ## Notes for translators (can be deleted from the file after translation): ## Just write the translations between the second pair of quotes ## Things like %s, %d and %c must be preserved in the original order ## Empty translated strings will be ignored, so there is no reason ## to delete those for which you don't know a translation, ## and you can start testing everything immediately. ## Simply rename this file to LANGUAGE.lng, and WinBoard should see it, ## and allow you to use the option /language=LANGUAGE. ## You are encouraged to call up the corresponding WinBoard dialog while ## working on the translation, to see in which context the strings are used. ## This is why the strings below are sorted by dialog ## ## Of duplicats, only the first occurrence will be used, even if it was in ## a different dialog! For this reason you will only see an 'OK' in the ## About Box. After you translated it there, this translation will be used ## for all other dialogs as well. ## o Use ## for comments, to make it easy to find them scattered throughout the translation ## o Careful with temptation of direct translation, by example 'movimiento' for 'move' when 'jugada' is better. ## o Try to use short phrases, more text doesn't imply more clearness. ## o Check that your translation is right, does it mean what it does? ## o Test your translation, check every dialog. ## o For standard chess names check Wikipedia for confirmation. ## o For menus, assign shortcuts (character &) until you finish the translation. ## preferably it should be unique in the applicable menu, so it depends on translation of other items! " " === "Traduzione di Giorgio Medeot" winboard.rc MENUS: ## Pleace keep the accelerator-key indications on the menu items, and keep ## the keystrokes the same (for now). (Alt, Ctrl and Shift can be translated.) "&New Game\tCtrl-N" === "&Nuova partita\tCtrl-N" "New Sh&uffle Game..." === "Nuova partita Shu&ffle..." "New &Variant...\tAlt+Shift+V" === "Nuova &variante...\tAlt+Shift+V" "&Load Game...\tCtrl-O" === "&Apri partita da file...\tCtrl-O" "&Save Game...\tCtrl-S" === "&Salva partita...\tCtrl-S" "L&oad Position...\tCtrl+Shift+O" === "Apri &posizione da file...\tCtrl+Shift+O" "S&ave Position...\tCtrl+Shift+S" === "&Salva posizione...\tCtrl+Shift+S" "Save as &Diagram..." === "Salva come &immagine..." "&Quit" === "&Esci" ## Next six currently not used "Load &Next Game\tAlt+PgDn" === "Partita successiva\tAlt+PgDn" "Load &Previous Game\tAlt+PgUp" === "Partita precedente\tAlt+PgUp" "&Reload Same Game" === "Riapri partita corrente" "Load N&ext Position\tAlt+Shift+PgDn" === "Posizione successiva\tAlt+Shift+PgDn" "Load Pre&vious Position\tAlt+Shift+PgUp" === "Posizione precedente\tAlt+Shift+PgUp" "Reload Sa&me Position" === "Riapri posizione corrente" "&Copy Game To Clipboard\tCtrl+C" === "&Copia partita\tCtrl+C" "C&opy Position To Clipboard\tCtrl+Shift+C" === "&Copia posizione\tCtrl+Shift+C" "Copy Game List to Clipboard" === "Copia &lista partite" "&Paste Game From Clipboard\tCtrl+V" === "&Incolla partita\tCtrl+V" "P&aste Position From Clipboard\tCtrl+Shift+V" === "&Incolla posizione\tCtrl+Shift+V" "&Edit Game\tCtrl+E" === "&Modifica partita\tCtrl+E" "E&dit Position\tCtrl+Shift+E" === "&Modifica posizione\tCtrl+Shift+E" "Edit Ta&gs..." === "Mo&difica informazioni partita..." "Edit Co&mment..." === "Mo&difica commento..." "Enter &Username..." === "Inserisci nome &utente..." "&Revert\tHome" === "&Ripristina\tHome" "&Annotate" === "A&nnota" "&Truncate Game\tEnd" === "Tr&onca la partita\tEnd" "&Backward\tAlt+Left" === "&Indietro\tAlt+Left" "&Forward\tAlt+Right" === "&Avanti\tAlt+Right" "Back to &Start\tAlt+Home" === "&Torna all'inizio\tAlt+Home" "For&ward to End\tAlt+End" === "Vai alla &fine\tAlt+End" "Flip &View\tF2" === "&Ruota la scacchiera\tF2" "&Swap Clocks" === "Scambia gli &orologi" "Engine &Output\tAlt+Shift+O" === "&Output del motore di gioco\tAlt+Shift+O" "Move &History\tAlt+Shift+H" === "Lista &mosse\tAlt+Shift+H" "Evaluation &Graph\tAlt+Shift+E" === "&Grafico della valutazione\tAlt+Shift+E" "Game &List\tAlt+Shift+G" === "&Lista partite\tAlt+Shift+G" "Open &New Chat Window" === "Apri nuova Chat" "Type In &Move...\tAlt+I" === "&Digita mossa...\tAlt+I" "&Tags" === "&Informazioni partita" "&Comments" === "&Commenti" "&Game List Tags..." === "Impostazioni &lista partite..." "&Board..." === "&Scacchiera..." "&Fonts..." === "&Fonts..." "Machine &White\tCtrl+W" === "&Bianco al motore di gioco\tCtrl+W" "Machine &Black\tCtrl+B" === "&Nero al motore di gioco\tCtrl+B" "&Two Machines\tCtrl+T" === "Mo&tore di gioco 1 vs 2\tCtrl+T" "Machine Both" === "Osserva motore di gioco" "&Analysis Mode\tCtrl+A" === "&Avvia analisi\tCtrl+A" "Analyze &File\tCtrl+F" === "Analizza &file\tCtrl+F" "&Edit Game\tCtrl+E" === "Mo&difica partita\tCtrl+E" "E&dit Position\tCtrl+Shift+E" === "Mo&difica posizione\tCtrl+Shift+E" "Trai&ning" === "Allenamento" "&ICS Client" === "Connetti ad un &ICS" "&Machine Match" === "Matc&h tra i motori di gioco" "&Pause\tPause" === "&Pausa\tPause" "&Accept\tF3" === "&Accetta\tF3" "D&ecline\tF4" === "&Declina\tF4" "Re&match\tF12" === "&Rigioca\tF12" "Call &Flag\tF5" === "Chiama il &Tempo\tF5" "&Draw\tF6" === "&Offri Patta\tF6" "Ad&journ\tF7" === "A&ggiorna\tF7" "A&bort\tF8" === "&Interrompi\tF8" "&Resign\tF9" === "Abband&ona\tF9" "Stop &Observing\tF10" === "Smetti di o&sservare\tF10" "Stop E&xamining\tF11" === "Smetti di &esaminare\tF11" "&Upload to Examine" === "&Carica su ICS per esaminare" "Adjudicate to &White" === "Aggiudica al &Bianco" "Adjudicate to &Black" === "Aggiudica al &Nero" "Adjudicate &Draw" === "Aggiudica come &Patta" "Install 1st..." === "Installa motore 1..." "Install 2nd..." === "Installa motore 2..." "Engine #&1 Settings..." === "Impostazioni motore &1" "Engine #&2 Settings..." === "Impostazioni motore &2" "&Hint..." === "&Suggerimento..." "&Book..." === "&Libro delle aperture..." "&Move Now\tCtrl+M" === "&Muovi subito\tCtrl+M" "&Retract Move\tCtrl+X" === "&Annulla mossa\tCtrl+X" "&Mute all Sounds" === "Modalit silen&ziosa" "&General..." === "&Generali..." "&Time Control...\tAlt+Shift+T" === "Controllo &Tempo...\tAlt+Shift+T" "Common &Engine...\tAlt+Shift+U" === "&Motori di gioco...\tAlt+Shift+U" "Ad&judications...\tAlt+Shift+J" === "&Aggiudicazioni...\tAlt+Shift+J" "&Load Game...\tAlt+Shift+L" === "Apertura &partita...\tAlt+Shift+L" "&Save Game...\tAlt+Shift+S" === "Sal&vataggio partita...\tAlt+Shift+S" "G&ame List..." === "&Lista partite..." "Soun&ds..." === "Suo&ni..." "&ICS..." === "&ICS..." "Add ICS..." === "Aggiungi ICS..." "Comm&unications..." === "&Comunicazioni..." "Save Settings &Now" === "&Salva impostazioni" "Save Settings on E&xit" === "Salva impostazioni all'&uscita" "Help &Contents\tF1" === "&Guida in linea\tF1" "Help &Index" === "&Indice della Guida" "How to &Use Help" === "&Utilizzo della Guida" "&About WinBoard" === "Informazioni su &Winboard" "White" === "Bianco" "Promote" === "Promuovi" "Pawn" === "Pedone" "Knight" === "Cavallo" "Bishop" === "Alfiere" "Rook" === "Torre" "Queen" === "Donna" "King" === "Re" ## The next 2 are pieces for Capablanca Chess. Use the names from the Wikipedia entry for this, ## rather than litteral translations of the English names! "Archbishop" === "Arcivescovo" "Chancellor" === "Cancelliere" ## Next 2 are Xiangqi (Chinese Chess) pieces. Google for 'Xiangqi' in the target language to get the standard translation. "Elephant" === "Elefante" "Cannon" === "Cannone" ## Next 3 are Shogi (Japanese Chess) pieces. Google for 'Shogi' in the target language to get the standard translation. "Lance" === "Lancia" "Silver" === "Generale Argento" "Gold" === "Generale Oro" "Empty Square" === "Casa vuota" "Black" === "Nero" "Demote" === "Degrada" "Clear Board " === "Svuota scacchiera" "Drop" === "Paracadutaggio" "Cop&y and Paste" === "Co&pia e Incolla" "&Copy" === "&Copia" "&Paste" === "&Incolla" "&Undo" === "&Annulla" "Cu&t" === "&Taglia" "&Copy" === "&Copia" "&Paste" === "&Incolla" "Select &All" === "&Seleziona tutto" DIALOGS: ABOUTBOX ## Perhaps copyright notices best left untranslated? "About WinBoard" === "Informazioni su Winboard" "OK" === "OK" "Chessboard for Windows" === "Interfaccia per gli Scacchi e varianti per Windows" "Copyright 1991 Digital Equipment Corporation" === "Copyright (C) 1991 Digital Equipment Corporation" "Enhancements Copyright 1992-2014 Free Software Foundation" === "Modifiche Copyright (C) 1992-2014 Free Software Foundation" "Enhancements Copyright 2005\r\nAlessandro Scotti" === "Modifiche Copyright (C) 2005\r\nAlessandro Scotti" ## What happened with H.G.Muller? [He sold his copyrights to FSF for $1] ## The following string of 6 spaces can be translated to an acknowledgement of the translator, ## like "Traduccin por scar Toledo G.". " " === "Traduzione italiana di Giorgio Medeot" "WinBoard 0.0.0" === "WinBoard 4.5.0" ABOUTBOX2 ## Weird, is it needed? [Normally not. It is a built-in 'Easter Egg' joke.] "galactic" === "galattico TIME CONTROL DIALOG "Time Control" === "Controllo Tempo" "Conventional chess clock" === "Orologio tradizionale" "Incremental clock" === "Orologio con incremento" "Cancel" === "Cancella" ## Next is there really only for the benefit of blind users of the JAWS version... "Use arrow keys to specify which clock setting type, then press tab to alter values." === "Usa le frecce per specificare quale tipo di orologio utilizzare, poi premi il tasto tabulazione per modificare i valori." "Fixed time per move" === "Tempo per mossa fisso" "Number of moves:" === "Mosse:" "Within number of minutes:" === "In minuti:" "Initial number of minutes:" === "Tempo iniziale in minuti:" "Plus number of seconds per move:" === "Secondi aggiuntivi per mossa:" "Maximum seconds per move:" === "Secondi per mossa:" "Time-Odds Factors:" === "Riduci il tempo di un fattore:" "Engine #1:" === "Motore 1:" "Engine #2:" === "Motore 2:" LOAD OPTIONS DIALOG "Load Game Options" === "Impostazioni apertura partita" "Load games with automatic stepping" === "Apri partite attivando replay automatico" "seconds per move" === "secondi per mossa" SAVE OPTIONS DIALOG "Save Game Options" === "Impostazioni salvataggio partita" ##"Save Style" === "Tipo file: " "Save As: " === "Tipo file: " "Save games automatically" === "Salva automaticamente" "Prompt for filename" === "Chiedi sempre dove salvare" "To file:" === "Salva in:" "PGN" === "" "Old" === "Formato Winboard 3.x" "Browse..." === "Sfoglia..." "Save out of book info in PGN" === "Salva informazioni 'out of book' nel PGN" 1536 ## This dialog is only used in some older Windows versions, so you might not be able to test it. "Open" === "Apri file" "File &Name:" === "&Nome file:" "&Directories:" === "Cerca &in:" "List Files of &Type:" === "&Tipo file:" "Dri&ves:" === "&Unit:" "&Help" === "&Aiuto" "&Index number:" === "I&ndice:" COMMPORT ## Always disabled if you are not actually using an ICS through a comport, so difficult to test. "Communication Port Settings" === "Impostazioni porta di comunicazione" "Net&work..." === "Re&te..." "&Port:" === "&Porta:" "Data &Rate:" === "Data &rate:" "Data &Bits:" === "Data &bits:" "P&arity:" === "P&arit:" "&Stop Bits:" === "&Stop bits" "F&low:" === "F&lusso" EDIT COMMENT "Edit Comment" === "Modifica commento" "&Clear" === "&Cancella" "&Edit" === "&Modifica" PROMOTION POPUP "Promote to:" === "Promuovi a:" ## next used in Shogi as promotion-popup header "Promote?" === "Promuovi?" "Promotion" === "Promozione" "&Queen" === "&Donna" "&Rook" === "&Torre" "&Bishop" === "&Alfiere" "K&night" === "&Cavallo" "&King" === "&Re" "&Cancel" === "&Cancella" "Chance&llor" === "&Cancelliere" "&Archbishop" === "&Arcivescovo" "YES" === "SI" "NO" === "NO" "C&entaur" === "&Centauro" GAME LIST "Game List" === "Lista partite" "&Load" === "&Apri" "&Prev" === "&Prec" "&Next" === "&Succ" "&Close" === "&Chiudi" "Filter" === "Filtro" EDIT TAGS "Edit Tags" === "Modifica informazioni" ERROR "ICS Interaction" === "Console ICS" "Dialog" === "Dialogo" "Error" === "Errore" ## I don't think the next will really appear ever. "Sorry Charlie" === "Spiacente Ciccio" COLORIZE "I C S Interaction Colors" === "Colori Console ICS" "Interaction Colors" === "Colori Console" "Premove" === "Premossa" "Alarm" === "Allarme" "Colors" === "Colori" "&Choose Color..." === "Scegli &colori" "&Bold" === "&Grassetto" "&Italic" === "&Corsivo" "&Underline" === "&Sottolineato" "&Strikeout" === "&Barrato" QUESTION ## next one seems only a placeholder, and never appears? [might also be just a programmer's joke...] "Enter a chess engine command or just type something stupid that will completely screw things up." === "Digita un comando per il motore di gioco" "Question" === "Comando diretto" "Enter" === "Invia" STARTUP DIALOG "WinBoard Startup" === "Avvio di Winboard" "What would you like to do?" === "Selezionare una delle seguenti azioni:" "&Play against a chess engine or match two engines" === "&Partita contro un motore di gioco o match tra due motori" "&Use an Internet Chess Server" === "&Connetti ad un Internet Chess Server" "Just &view or edit game files" === "&Apri o modifica una partita su file" "Specify Chess &Engines:" === "Specificare &motore di gioco:" "Specify Chess &Server:" === "Specificare indirizzo &ICS:" "&Additional options" === "&Opzioni aggiuntive:" INDEX (IN FILE-BROWSE DIALOG) "Inde&x number:" === "I&ndice:" MOVE TYPE-IN "Type in a move" === "Digita una mossa" USER-NAME TYPE-IN "Type in your name" === "Inserisci il tuo nome" SOUND DIALOG "Sounds" === "Impostazioni suoni" "&Event:" === "&Evento:" "&No sound" === "&Silenzioso" "&Default beep" === "&Beep" "&Built-in sound:" === "Suoni &predefiniti:" "&WAV file:" === "&File WAV:" "B&rowse..." === "&Apri..." "&Play" === "A&scolta" "&Defaults" === "&Default" GENERAL OPTIONS DIALOG ## please keep the indication of the accelerator keys for the same keystroke ## Note: finely tuned spaces to align keys at right "General Options" === "Impostazioni generali" "Always on &Top" === "Sempre in &primo piano" "Always &Queen Ctrl+Shift+Q" === "Promuovi a &Donna Ctrl+Shift+Q" "Animate &Dragging" === "&Trascinamento animato" "&Animate Moving Ctrl+Shift+A" === "&Mosse animate Ctrl+Shift+A" "Auto &Flag Ctrl+Shift+F" === "Aggiudica sul &tempo Ctrl+Shift+F" "Auto Flip &View" === "Ruota &vista automaticamente" "Auto &Raise Board" === "Porta in p&rimo piano" "&Blindfold" === "Alla &cieca" "Highlight Dra&gging" === "Eviden&zia trascinamento" "Highlight Last &Move" === "&Evidenzia l'ultima mossa" "Periodic &Updates" === "&Aggiornamenti continui" "Ponder &Next Move Ctrl+Shift+P" === "Pe&nsa sul mio tempo Ctrl+Shift+P" "&Popup Exit Message" === "C&hiedi conferma alla chiusura" "Popup Move &Errors" === "Mostra pop&up per mosse errate" "Show Butt&on Bar" === "Mostra &barra dei pulsanti" "Show &Coordinates" === "Mostra c&oordinate" "&Show Thinking" === "Mo&stra output del motore" "Test &Legality Ctrl+Shift+L" === "Verifica mosse i&llegali Ctrl+Shift+L" "&Hide Thinking Ctrl+Shift+H" === "N&ascondi analisi Ctrl+Shift+H" "&Info in Move History Ctrl+Shift+I" === "&Informazioni nella Lista mosse Ctrl+Shift+I" "&Send Engine Think" === "Invia l'output del &motore di gioco" "E&xtended PGN Info Ctrl+Shift+X" === "&Informazioni PGN estese Ctrl+Shift+X" "Highlight with Arro&w" === "Evidenzia con una &freccia" "Displa&y Logos" === "Mostra i &loghi" "One-Click Move" === "Muovi con click &singolo" ICS OPTIONS "ICS Options" === "Impostazioni ICS" "&Auto Comment" === "&Commenti automatici" "Auto &Observe" === "&Osserva automaticamente" "&Get Move List" === "Scarica lista &mosse" "&Local Line Editing" === "Modifiche in &locale" "&Quiet Play" === "Non &disturbare durante il gioco" "&Premove" === "&Premosse" "&White first move" === "1 mossa &Bianco" "&Black first move" === "1 mossa &Nero" "&Sound alarm at" === "Avvi&sa a" "seconds" === "secondi" "Choose..." === "Scegli..." "Do ¬ colorize messages" === "Non colorare i &messaggi" "&Auto Kibitz" === "&Auto Kibitz" "Auto Kibit&z" === "Auto Kibit&z" "See&k Graph" === "Grafico delle &richieste" "auto-&Refresh" === "Auto a&ggiorna" "Bckgnd Obser&ve" === "&Osserva in bckgnd" "&Dual Board" === "Doppia &scacchiera" "One-Click &Move" === "&Mossa con click singolo" "Background..." === "Sfondo..." "&Defaults..." === "&Default..." "Startup &Chat Boxes:" === "Apri &Chat all'avvio:" "General" === "Generali" BOARD OPTIONS ## (NOTE: AllWhite uses the white (outline-style) piece bitmaps for both sides ## FlipBlack draws the black pieces upside down) "Board Options" === "Impostazioni scacchiera" "Defaults" === "Default" "Light Squares" === "Case bianche" "Dark Squares" === "Case nere" "White Pieces" === "Pezzi bianchi" "Black Pieces" === "Pezzi neri" "Square Highlights" === "Case evidenziate" "Premove Highlights" === "Premosse evidenziate" "Monochrome" === "Monocromatico" "All White" === "Neri a colore pieno" "Flip Black" === "Neri capovolti" "Size" === "Dimensioni" BOARD SIZES (translate as number?) ## Don't put numbers, or nobody will translate them. [True. But do we really want them translated?] ## This is a space for imagination! "&Tiny" === "&Minima" "T&eeny" === "&Scricciola" "&Dinky" === "&Minuscola" "&Petite" === "&Piccina" "Sl&im" === "&Ridotta" "&Small" === "&Piccola" "Medi&ocre" === "&Contenuta" "&Middling" === "&Modesta" "&Average" === "&Usuale" "Mode&rate" === "&Moderata" "Medi&um" === "&Media" "Bul&ky" === "&Ampia" "&Large" === "&Estesa" "&Big" === "&Grande" "&Huge" === "&Imponente" "&Giant" === "&Gigantesca" "&Colossal" === "&Colossale" "Tita&nic" === "&Titanica" FONTS "Fonts" === "Font" "Current Board Size" === "Dmensione scacchiera corrente" "All Board Sizes" === "Impostazioni globali" "&Revert to Defaults" === "Valori di &default" "Clocks" === "Orologi" "Messages" === "Messaggi" "Coordinates" === "Coordinate" "Tags" === "Tags" "Comments" === "Commenti" "I C S Interaction" === "Console ICS" "&Color..." === "&Colori..." "Move History, Engine Output" === "Lista mosse,\noutput motore" ADJUDICATIONS DIALOG "Adjudications" === "Impostazioni aggiudicazioni" "Ponder Next Move" === "Pensa sul mio tempo" "Enable and Show Thinking (recommended)" === "Abilita e mostra output del motore (raccomandato)" "Hide Thinking when Playing against Human" === "Nascondi l'output del motore se gioca contro un uomo" "Periodic Updates (for Analysis Mode)" === "Aggiornamenti continui (per Modalit di analisi)" "Adjudications in non-ICS games" === "Aggiudicazioni in partite non ICS" "Adjudicate draw after:" === "Aggiudica patta dopo:" "moves" === "mosse" "Win/loss adjudication threshold:" === "Limite per aggiudicare vinta/persa:" "centipawns" === "centipawn" "&Verify Engine Claims" === "&Verifica gli annunci del motore" "Detect &Mates" === "Individua scacco &matto" "Draw if &Insufficient Material" === "Patta per materiale &insufficiente" "Adjudicate &Trivial Draws" === "Aggiudica patte &triviali" "Apply" === "Applica regole" ## next 2 are suffixed to a text-edit containing a number (50 or 3) "-move rule" === "mosse irreversibili" "-fold repeats" === "ripetizioni di posizione" "Engine #1 Score is Absolute" === "Output motore 1 sempre riferito al Bianco" "Engine #2 Score is Absolute" === "Output motore 2 sempre riferito al Bianco" COMMON ENGINE DIALOG "Common Engine Settings" === "Impostazioni motori di gioco" "Polyglot Directory:" === "Cartella Polyglot:" "Hash Size (MB):" === "Dimensione Hash [MB]:" "EGTB Path:" === "Cartella EGTB:" "EGTB Size (MB):" === "Dimensione EGTB [MB]:" "Use Book:" === "Libro aperture:" "Max nr of CPUs:" === "Num max di CPU:" "First has Own Book" === "Libro proprio per motore 1" "Second has Own Book" === "Libro proprio per motore 2" "Book Depth:" === "Profondit Libro:" "Book Variation:" === "Varianti Libro:" "Default Match Games:" === "Partite per match:" NEW-VARIANT DIALOG ## (NOTE: the 'holdings' are the pieces standing next to the board ('in hand') "Variants" === "Varianti di gioco" "Variant" === "Variante" "Board size:" === "Scacchiera:" "ranks" === "traverse" "files" === "colonne" "Holdings with room for:" === "Num max di pezzi in mano" "pieces" === "pezzi" "('-1' means defaults for selected variant)" === "('-1' per il default della variante selezionata)" VARIANT NAMES: "&normal" === "&Normale" "&FRC" === "&FRC" "&wildcastle" === "&Wildcastle" "&nocastle" === "&Nocastle" "&losers" === "&Losers" "&giveaway" === "&Giveaway" "s&uicide" === "S&uicide" "&3Check" === "&3Check" "&twokings" === "&Twokings" "&atomic" === "&Atomic" "cra&zyhouse" === "Cra&zyhouse" "&bughouse" === "&Bughouse" "&Twilight" === "&Twilight" "&shogi" === "&Shogi" "su&per" === "Su&per" "&knightmate" === "&Knightmate" "&Berolina" === "&Berolina" "c&ylinder" === "&Cilindrici" "&fairy" === "&Fairy" "&makruk" === "&Makruk" "&gothic" === "&Gothic" "&capablanca" === "&Capablanca" "&Janus" === "&Janus" "&CRC" === "&CRC" "&Falcon" === "&Falcon" "cou&rier" === "Cou&rier" "&Great" === "&Great" "&Shatranj" === "&Shatranj" "&xiangqi" === "&Xiangqi" NEW SHUFFLE GAME "New Shuffle Game" === "Partita Shuffle" "&Start Position Number:" === "Disposizione iniziale:" "Random" === "Casuale" GAME-LIST OPTIONS DIALOG "Game List Options" === "Impostazioni lista partite" "PGN &Tags:" === "&Informazioni PGN:" "&Up" === "Muovi &su" "&Down" === "Muovi &giu" "Default" === "Default" "Factory" === "Fabbrica" "Restore to:" === "Reimposta:" MOVE HISTORY WINDOW "Move History" === "Lista mosse" EVALUATION GRAPH "Evaluation Graph" === "Grafico della valutazione" ENGINE OUTPUT WINDOW "Engine output" === "Output del motore di gioco" "Engine #1" === "Motore 1" "NPS" === "" "Engine #2" === "Motore 2" CHAT BOXES "Chat Window" === "Finestra della Chat" "Chat partner:" === "Compagno di chat:" "Clear" === "Cancella" "Send" === "Invia" winboard.c "&File" === "&File" "&Edit" === "&Modifica" "&View" === "&Visualizza" "&Mode" === "&Modalit" "&Action" === "&Azioni" "&Step" === "&Avanzamento" "E&ngine" === "&Motore" "&Options" === "&Impostazioni" "&Help" === "&Aiuto" "You can only start a match from the initial position." === "Un match pu essere avviato solo dalla posizione iniziale." "Font name too long:" === "Nome del font troppo lungo:" "Font point size missing:" === "Dimensione del font mancante:" "Can't parse color name %s" === "Impossibile leggere nome del colore %s" "Unrecognized board size value" === "Dimensione scacchiera non riconosciuta" "Unrecognized argument" === "Argomento non riconosciuto" "No value provided for argument" === "Valore mancante per l'argomento" "Incomplete \\ escape in value for" === "Escape \\ incompleto nel valore per" "Failed to open indirection file" === "Apertura fallita per il file di reindirizzamneto" "Unrecognized boolean argument value" === "Valore non valido per argomento booleano" "Unrecognized argument" === "Argomento non riconosciuto" "Too many colors" === "Troppi colori" "&Minimize\tCtrl+F4" === "&Minimizza\tCtrl+F4" "White: %s" === "Bianco: %s" "We only care about the height here" === "Qui solo l'altezza significativa" "Cannot build game list" === "Impossibile costruire lista delle partite" "Load Game from File" === "Apri partita da file" "Load Position from File" === "Apri posizione da file" "Save Game to File" === "Salva partita" "Save Position to File" === "Salva posizione" "%s does not support analysis" === "%s non supporta l'analisi" "Analyze Game from File" === "Analizza partita da file" "Unable to activate help" === "Impossibile aprire file della guida" "Send to chess program:" === "Invia al motore di gioco:" "Send to second chess program:" === "Invia al secondo motore di gioco" "Direct Command" === "Comando diretto" "Error loading sound %s" === "Errore nell'apertura del suono %s" "Error playing sound %s" === "Errore nella riproduzione del suono %s" "File open failed" === "Apertura file fallita" "Internal error in file dialog box" === "Errore interno nella finestra di dialogo apertura file" "Option Error" === "Errore nelle opzioni" "Choose an option, or cancel to exit" === "Scegli un'opzione o premi Cancella per uscire" "Unable to activate help" === "Impossibile aprire file della guida" "Displayed move is not current" === "La mossa mostrata non quella corrente" "Could not parse move" === "Impossibile leggere mossa" "%s:\nError code %d" === "%s:\nCodice errore %d" "Error" === "Errore" "Fatal Error" === "Errore fatale" "Exiting" === "Chiusura in corso" "%s:\nError code %d" === "%s:\nCodice errore %d" "Note" === "Nota" "Error writing to chess program" === "Errore in scrittura sul motore di gioco" "User" === "Utente" "Unknown" === "Sconosciuto" "White" === "Bianco" "Black" === "Nero" "Save Game to File" === "Salva partita" "Not implemented" === "Non implementato" "Shout Text" === "Testo Shout" "SShout/CShout" === "" "Channel 1 Text" === "Testo Canale 1" "Channel Text" === "Testo Canale" "Kibitz Text" === "Testo Kibitz" "Tell Text" === "Testo Tell" "Challenge Text" === "Testo Challenge" "Request Text" === "Testo Richiesta" "Seek Text" === "Testo Seek" "Normal Text" === "Testo normale" "None" === "Nessuno" "Pawn" === "Pedone" "Knight" === "Cavallo" "Bishop" === "Alfiere" "Rook" === "Torre" "Queen" === "Donna" "Information" === "Informazione" wclipbrd.c "Unable to convert position to FEN." === "Impossibile convertire posizione in FEN." "Unable to copy FEN to clipboard." === "Impossibile copiare FEN negli Appunti." "Cannot create temporary file name." === "Impossibile creare nome file temporaneo." "Cannot open temporary file." === "Impossibile aprire file temporaneo." "Cannot write to temporary file." === "Impossibile scrivere su file temporaneo." "Cannot reopen temporary file." === "Impossibile riaprire file temporaneo." "Cannot determine size of file." === "Impossibile determinare la dimensione del file." "Cannot allocate clipboard buffer." === "Impossibile allocare il buffer per gli Appunti." "Cannot read from temporary file." === "Impossibile leggere da file temporaneo." "Error reading from temporary file." === "Errore in lettura da file temporaneo." "Cannot copy text to clipboard" === "Impossibile copiare il testo negli Appunti" "Unable to allocate memory for clipboard." === "Impossibile allocare la memoria per gli Appunti." "Unable to lock clipboard memory." === "Impossibile riservare la memoria per gli Appunti." "Cannot unlock clipboard memory." === "Impossibile rilasciare la memoria per gli Appunti." "Cannot open clipboard." === "Impossibile aprire gli Appunti." "Cannot empty clipboard." === "Impossibile svuotare gli Appunti" "Cannot copy text to clipboard." === "Impossibile copiare il testo negli Appunti." "Cannot close clipboard." === "Impossibile chiudere gli Appunti." "Unable to paste FEN from clipboard." === "Impossibile incollare FEN dagli Appunti." "Unable to create temporary file." === "Impossibile creare file temporaneo." "Error writing to temporary file." === "Errore in scrittura su file temporaneo." "Unable to open clipboard." === "Impossibile aprire gli Appunti." "No text in clipboard." === "NEssun testo negli Appunti." "Unable to lock clipboard memory." === "Impossibile riservare la memoria per gli Appunti." "Unable to allocate memory for text string." === "Impossibile allocare la memoria per il testo." "Unable to unlock clipboard memory." === "Impossibile rilasciare la memoria per gli Appunti." "Unable to close clipboard." === "Impossibile chiudere gli Appunti." woptions.c ## For now, do NOT translate sound names, because WinBoard will no longer recognize them "Move" === "" "Bell" === "" "ICS Alarm" === "" "ICS Win" === "" "ICS Loss" === "" "ICS Draw" === "" "ICS Unfinished" === "" "Shout" === "" "SShout/CShout" === "" "Channel 1" === "" "Channel" === "" "Kibitz" === "" "Tell" === "" "Challenge" === "" "Request" === "" "Seek" === "" ## end of sound names "Browse for Sound File" === "Sfoglia..." "Can't parse com port settings" === "Impossibile leggere le impostazioni per la porta COM" "Option Error" === "Errore nelle impostazioni" "Invalid data rate" === "Data Rate non valido" "Option Error" === "Errore nelle impostazioni" "Failed to set comm port state;\r\ninvalid options?" === "Settaggio della porta COM fallito;\r\nimpostazioni non valide?" "Failed to set comm port state" === "Settaggio dello stato della porta COM fallito" "Invalid load game step rate" === "Velocit replay partita non valida" "Invalid save game file name" === "Nome file per salvataggio partita non valido" "Browse for Auto Save File" === "Sfoglia nome file Salvataggio Automatico" "Invalid moves per time control" === "Numero mosse per sessione non valido" "Invalid minutes per time control" === "Valore minuti per sessione non valido" "Invalid increment" === "Valore incremento non valido" "Invalid initial time" === "Valore tempo iniziale non valido" "Changing time control during a game is not implemented" === "La possibilit di modificare il controllo di tempo durante la partita non implementata" "Variant %s not supported by %s" === "La variante %s non supportata da %s" "Warning: second engine (%s) does not support this!" === "Attenzione: il secondo motore di gioco (%s) non supporta questa azione!" "Invalid ICS Alarm Time" === "Valore per allarme controllo tempo ICS non valido" "Invalid max time per move" === "Valore tempo massimo per mossa non valido" "Invalid time-odds factor" === "Fattore di riduzione del tempo non valido" "Choose Folder" === "Scegli cartella" "Choose Book" === "Scegli Libro aperture" "Choose Polyglot Directory" === "Scegli cartella Polyglot" "Choose EGTB Directory:" === "Scegli cartella EGTB:" "Polyglot was not found in the specified folder!" === "Polyglot non stato trovato nella cartella specificata!" wgamelist.c "No game selected" === "Nessuna partita selezionata" "Can't go forward any further" === "Impossibile avanzare oltre" "Can't back up any further" === "Impossibile tornare pi indietro" "No game list" === "Nessuna lista partite" "Game List" === "Lista partite" "Game list not loaded or empty" === "Lista partite vuota o non caricata" "%s - %d/%d games" === "%s - %d/%d partite" wedittags.c "Edit Tags" === "Modifica informazioni" "Tags" === "Campi" "Error replacing tags." === "Errore nella sostituzione dei campi" wsettings.c "%s Engine Settings (%s)" === "Impostazioni %s motore di gioco (%s)" "OK" === "OK" "Cancel" === "Cancella" backend.c "bad timeControl option %s" === "Opzione timeControl non corretta: %s" "bad searchTime option %s" === "Opzione searchTime non corretta: %s" ## following to will appear in combinations like "first engine" "first" === "primo" "second" === "secondo" "protocol version %d not supported" === "Versione %d del protocollo non supportata" "Variant %s supported only in ICS mode" === "La variante %s supportata solo in modalit ICS" "Unknown variant name %s" === "Nome di variante sconosciuto: %s" "Starting chess program" === "Avvio del motore di gioco" "Could not open comm port %s" === "Apertura della porta comm %s fallita" "Could not connect to host %s, port %s" === "Connessione all'host %s, porta %s fallita" "Unknown initialMode %s" === "Valore per initialMode non riconosciuto: %s" "Can't have a match with no chess programs" === "Impossibile avviare un match senza specificare alcun motore di gioco" "Bad game file" === "File partita non riconosciuto" "Bad position file" === "File posizione non riconosciuto" "AnalyzeFile mode requires a game file" === "La modalit 'Analizza file' richiede un file partita" "Analysis mode requires a chess engine" === "La modalit Analisi richiede un motore di gioco" "Analysis mode does not work with ICS mode" === "La funzione di Analisi non disponibile in modalit ICS" "MachineWhite mode requires a chess engine" === "La modalit 'Bianco al motore di gioco' richiede almeno un motore" "MachineWhite mode does not work with ICS mode" === "La funzione 'Bianco al motore di gioco' non disponibile in modalit ICS" "MachineBlack mode requires a chess engine" === "La modalit 'Nero al motore di gioco' richiede almeno un motore" "MachineBlack mode does not work with ICS mode" === "La funzione 'Nero al motore di gioco' non disponibile in modalit ICS" "TwoMachines mode does not work with ICS mode" === "La funzione 'Motore di gioco 1 vs 2' non disponibile in modalit ICS" "TwoMachines mode requires a chess engine" === "La modalit 'Motore di gioco 1 vs 2' richiede almeno un motore di gioco" "Training mode requires a game file" === "La modalit Allenamento richiede un file partita" "Error writing to ICS" === "Errore in scrittura sull'ICS" "Error reading from keyboard" === "Errore in lettura da tastiera" "Got end of file from keyboard" === "Ricevuto carattere di Fine file (EOF) dalla tastiera" "Error writing to ICS" === "Errore in scrittura sull'ICS" "Error writing to display" === "Errore in scrittura sul display" "Error gathering move list: two headers" === "Errore nella lettura della lista mosse: sono presenti due intestazioni" "Error gathering move list: nested" === "Errore nella lettura della lista mosse: mosse annidate" "Connection closed by ICS" === "Connessione chiusa dal'ICS" "Error reading from ICS" === "Errore in lettura dall'ICS" "Failed to parse board string:\n\"%s\"" === "Lettura della descrizione posizione fallita:\n\"%s\"" "Game too long; increase MAX_MOVES and recompile" === "Partita troppo lunga; incrementare il valore di MAX_MOVES e ricompilare" "Error gathering move list: extra board" === "Errore nela lettura della lista mosse: presente una posizione in pi" "Illegal move \"%s\" from ICS" === "Mossa illegale dall'ICS: \"%s\"" "Couldn't parse move \"%s\" from ICS" === "Impossibile interpretare la mossa dall'ICS: \"%s\"" ## The leading 'say' is used as ICS command here, and should NOT be translated. Only the message behind it. "say Internal error; bad moveType %d (%d,%d-%d,%d)" === "say Errore interno; moveType malformato %d (%d,%d-%d,%d)" "You are playing Black" === "Stai giocando con il Nero" "You are playing White" === "Stai giocando con il Bianco" "It is White's turn" === "Il tratto al Bianco" "It is Black's turn" === "Il tratto al Nero" "Displayed position is not current" === "La posizione mostrata non quella corrente" "Illegal move" === "Mossa illegale" "End of game" === "Termine della partita" "Incorrect move" === "Mossa non corretta" ## next 6: Second (first 3) or first (other) '%s' will be substituted for 'first' or 'second'. "Illegal move \"%s\" from %s machine" === "Mossa illegale \"%s\" dal %s motore di gioco" "Illegal move \"%s\" (rejected by %s chess program)" === "Mossa illegale \"%s\" (rifiutata dal %s motore di gioco)" "Failed to start %s chess program %s on %s: %s\n" === "Avvio del %s motore di gioco %s su %s fallito: %s\n" "Error writing to %s chess program" === "Errore in scrittura sul %s motore di gioco" "Error: %s chess program (%s) exited unexpectedly" === "Errore: il %s motore di gioco (%s) terminato in maniera inaspettata" "Error reading from %s chess program (%s)" === "Errore in lettura dal %s motore di gioco (%s)" "Forfeit due to illegal move" === "Forfeit decretato per mossa illegale" "%s does not support analysis" === "%s non supporta la modalit di analisi" "Hint: %s" === "Suggerimento: %s" "Machine accepts your draw offer" === "Il motore di gioco accetta la tua offerta di patta" "Machine offers a draw\nSelect Action / Draw to agree" === "Il motore di gioco offre la patta\nPer accettare seleziona il men Azioni / Offri Patta" "%s (only move)" === "%s (unica mossa)" "Ambiguous move in ICS output: \"%s\"" === "Mossa ambigua nell'output dell'ICS: \"%s\"" "Illegal move in ICS output: \"%s\"" === "Mossa illegale nell'output dell'ICS: \"%s\"" "Gap in move list" === "Mosse mancanti nella lista mosse" "Game too long; increase MAX_MOVES and recompile" === "Partita troppo lunga; incrementare il valore di MAX_MOVES e ricompilare" "Variant %s not supported by %s" === "La variante %s non supportata da %s" "Startup failure on '%s'" === "Avvio di '%s' fallito" "Waiting for first chess program" === "In attesa del primo motore di gioco" "Waiting for second chess program" === "In attesa del secondo motore di gioco" "Match %s vs. %s: final score %d-%d-%d" === "Match %s vs %s: punteggio finale %d-%d-%d" "Stalemate" === "Stallo" "Illegal move: %d.%s%s" === "Mossa illegale: %d.%s%s" "Ambiguous move: %d.%s%s" === "Mossa ambigua: %d.%s%s" "Can't open \"%s\"" === "Impossibile aprire \"%s\"" "Cannot build game list" === "Impossibile costruire la lista partite" "No more games in this message" === "In questo messaggio non sono presenti altre partite" "No game has been loaded yet" === "Non ancora stata caricata nessuna partita" "Can't back up any further" === "Impossibile risalire oltre" "Game number out of range" === "Indice superiore al numero di partite" "Can't seek on game file" === "Impossibile effettuare la ricerca nel file di partita" "Game not found in file" === "Partita non trovata nel file" "Bad FEN position in file" === "Stringa FEN di posizione scorretta nel file" "No moves in game" === "Partita senza mosse" "No position has been loaded yet" === "Non ancora stata caricata nessuna posizione" "Can't back up any further" === "Impossibile risalire oltre" "Can't open \"%s\"" === "Impossibile aprire \"%s\"" "Can't seek on position file" === "Impossibile effettuare la ricerca nel file di posizione" "Position not found in file" === "Posizione non trovata nel file" "Bad FEN position in file" === "Stringa FEN di posizione scorretta nel file" "Black to play" === "Il tratto al Nero" "White to play" === "Il tratto al Bianco" "Can't open \"%s\"" === "Impossibile aprire \"%s\"" "You have edited the game history.\nUse Reload Same Game and make your move again." === "La lista mosse stata modificata.\nUtilizzare 'Riapri partita corrente' e ripetere la mossa" "You have entered too many moves.\nBack up to the correct position and try again." === "Sono state immesse troppe mosse.\nRitornare alla posizione corretta e riprovare." "Displayed position is not current.\nStep forward to the correct position and try again." === "La posizione mostrata non quella corrente.\nAvanzare fino alla posizione corretta e riprovare." "You have not made a move yet" === "Non hai ancora fatto alcuna mossa" "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." === "Il messaggio cmail non stato caricato.\Utilizzare 'Ricarica Messaggio CMail e reimmettere la mossa." "No unfinished games" === "Non presente nessuna partita non terminata" "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." === "E' gi stata postata una mossa.\nAttendere sino a quando non viene inviata una mossa dall'avversario.\nPer reinviare la stessa mossa, digitare\n\"cmail -remail -game %s\"\nsulla riga di comando." "Failed to invoke cmail" === "Impossibile aprire l'applicazione cmail" "Waiting for reply from opponent\n" === "In attesa di risposta dall'avversario\n" "Still need to make move for game\n" === "Occorre ancora eseguire la mossa per la partita\n" "Still need to make moves for both games\n" === "Occorre ancora eseguire mosse per entrambe le partite\n" "Still need to make moves for all %d games\n" === "Occorre ancora eseguire mosse per tutte le %d partite\n" "Still need to make a move for game %s\n" === "Occorre ancora eseguire una mossa per la partita %s\n" "No unfinished games\n" === "Non presente nessuna partita non terminata" "Ready to send mail\n" === "Pronto all'invio della posta\n" "Still need to make moves for games %s\n" === "Occorre ancora eseguire mosse per le partite %s\n" "Edit comment" === "Modifica commento" "Edit comment on %d.%s%s" === "Modifica commento a %d.%s%s" ##"Starting analysis mode...\nIf this message stays up, your chess program does not support analysis." === "Comenzando modo de anlisis...\nSi este mensaje permanece, su programa de ajedrez no admite anlisis." "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis." === "Avvio della modalit di analisi...\nSe questo messaggio rimane visibile, il motore di gioco non supporta la modalit di analisi." "It is not White's turn" === "Il tratto non al Bianco" "It is not Black's turn" === "Il tratto non al Nero" "Wait until your turn,\nor select Move Now" === "Attendi il tuo turno,\noppure seleziona 'Muovi subito'" "Starting second chess program" === "Avvio del secondo motore di gioco" "Training mode off" === "Modalit Allenamento disattivata" "Training mode on" === "Modalit Allenamento attivata" "Already at end of game" === "Gi alla fine della partita" "Warning: You are still playing a game" === "Avviso: Stai ancora giocando una partita" "Warning: You are still observing a game" === "Avviso: Stai ancora osservando una partita" "Warning: You are still examining a game" === "Avviso: Stai ancora esaminando una partita" "It is Black's turn" === "Il tratto al Nero" "It is White's turn" === "Il tratto al Bianco" "That square is occupied" === "La casa gi occupata" "There is no pending offer on this move" === "Non vi alcuna offerta pendente a questa mossa" "Your opponent is not out of time" === "Il tuo avversario non ha ancora esaurito il proprio tempo" "Black offers a draw" === "Il Nero offre la patta" "White offers a draw" === "Il Bianco ofre la patta" "You must make your move before offering a draw" === "Devi eseguire la tua mossa prima di offrire la patta" "You are not examining a game" === "Non stai esaminando alcuna partita" "You can't revert while pausing" === "Non possibile ripristinare mentre la pausa attiva" "Wait until your turn,\nor select Move Now" === "Attendi il tuo turno,\noppure seleziona 'Muovi subito'" "It is your turn" === "E' il tuo turno" "Wait until your turn" === "Attendi il tuo turno" "No hint available" === "Nessun suggerimento disponibile" "Analysis (%s)" === "Analisi (%s)" "Comment" === "Commento" "Comment on %d.%s%s" === "Commento a %d.%s%s" "Both flags fell" === "Tempo esaurito per entrambi" "White's flag fell" === "Tempo esaurito per il Bianco" "Black's fell" === "Tempo esaurito per il Nero" "Bad FEN position in clipboard" === "Stringa FEN di posizione scorretta negli Appunti" "No response from ICS" === "Nessuna risposta dall'ICS" "You cannot do this while you are playing or observing" === "Questa operazione non pu essere eseguita mentre si sta giocando o osservando una partita" "Click in holdings to choose piece" === "Cliccare sui pezzi 'in mano' per sceglierne uno" END-OF-GAME MESSAGES (should they be translated?) ## I think that only for visualization and not for PGN, as PGN files are shared all around the world ## [OK, I adapted the source that way. So please translate.] "Game aborted" === "Partita abortita" "White wins on time" === "Il Bianco vince sul tempo" "Black wins on time" === "Il Nero vince sul tempo" "Both players ran out of time" === "Tempo esaurito per entrambi i giocatori" "White resigns" === "Il Bianco abbandona" "Black resigns" === "Il Nero abbandona" "White mates" === "Il Bianco matta" "Black mates" === "Il Nero matta" "Draw" === "Patta" "Draw agreed" === "Patta concordata" "Xboard adjudication: King destroyed" === "Aggiudicazione di Xboard: Re distrutto" "Xboard adjudication: Bare king" === "Aggiudicazione di Xboard: Resta solo il re" "Xboard adjudication: 3rd check" === "Aggiudicazione di Xboard: Terzo scacco" "Xboard adjudication: Stalemate" === "Aggiudicazione di Xboard: Stallo" "Xboard adjudication: Checkmate" === "Aggiudicazione di Xboard: Scacco matto" "Xboard adjudication: Insufficient mating material" === "Aggiudicazione di Xboard: Materiale insufficiente" "Xboard adjudication: Trivial draw" === "Aggiudicazione di Xboard: Patta triviale" "XBoard adjudication: repetition draw" === "Aggiudicazione di Xboard: Patta per ripetizione" "Xboard adjudication: perpetual checking" === "Aggiudicazione di Xboard: Scacco perpetuo" "Xboard adjudication: perpetual chasing" === "Aggiudicazione di Xboard: Minaccia perpetua" "%Xboard adjudication: perpetual chasing of" === "Aggiudicazione di Xboard: Minaccia perpetua" "Xboard adjudication: 50-move rule" === "Aggiudicazione di Xboard: Regola delle 50 mosse" "Draw claim: 50-move rule" === "Patta dichiarata: Regola delle 50 mosse" "Draw claim: 3-fold repetition" === "Patta dichiarata: Terza ripetizione" "Draw claim: insufficient mating material" === "Patta dichiarata: Materiale insufficiente" "Xboard adjudication: long game" === "Aggiudicazione di Xboard: Partita lunga" "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d" === "Xboard: Forfeit decretato per mossa non valida: %s (%c%c%c%c) res=%d" "Xboard: Forfeit due to illegal move: %s (%c%c%c%c)%c" === "Xboard: Forfeit decretato per mossa illegale: %s (%c%c%c%c)%c" "Xboard adjudication" === "Aggiudicazione di Xboard" "User adjudication" === "Aggiudicazione dell'utente" "False win claim: '%s'" === "Falsa dichiarazione di vittoria: '%s'" "False draw claim: '%s'" === "Falsa dichiarazione di patta: '%s'" "xboard exit" === "Chiusura di Xboard" xboard-4.9.1/winboard/language/chinese(simp).lng0000644000175000001440000010033512717001265016446 00000000000000winboard.rc " " === "Translation by Morning Yellow && Liuzy" MENUS "&New Game\tCtrl-N" === "(&N)\tCtrl-N" "New Sh&uffle Game..." === "ϴϷ(&u)..." "New &Variant...\tAlt+Shift+V" === "±(&V)...\tAlt+Shift+V" "&Load Game...\tCtrl-O" === "(&L)...\tCtrl-O" "Load &Next Game\tAlt+PgDn" === "һ(&N)\tAlt+PgDn" "Load &Previous Game\tAlt+PgUp" === "һ(&P)\tAlt+PgUp" "&Reload Same Game" === "ͬһ(&R)" "&Save Game...\tCtrl-S" === "(&S)...\tCtrl-S" "&Copy Game To Clipboard\tCtrl+C" === "ֵ(&C)\tCtrl+C" "&Paste Game From Clipboard\tCtrl+V" === "ճԼ(&P)\tCtrl+V" "Copy Game List to Clipboard" === "Ϸб" "L&oad Position...\tCtrl+Shift+O" === "(&O)...\tCtrl+Shift+O" "Load N&ext Position\tAlt+Shift+PgDn" === "һ(&E)\tAlt+Shift+PgDn" "Load Pre&vious Position\tAlt+Shift+PgUp" === "һ(&V)\tAlt+Shift+PgUp" "Reload Sa&me Position" === "ͬһ(&M)" "S&ave Position...\tCtrl+Shift+S" === "(&A)...\tCtrl+Shift+S" "Save as &Diagram..." === "ͼ...(&D)" "C&opy Position To Clipboard\tCtrl+Shift+C" === "ƾ浽(&Y)\tCtrl+Shift+C" "P&aste Position From Clipboard\tCtrl+Shift+V" === "Ӽճ(&T)\tCtrl+Shift+V" "E&xit" === "˳(&X)" "&Quit" === "˳(&Q)" "&Edit Game\tCtrl+E" === "༭(&E)\tCtrl+E" "E&dit Position\tCtrl+Shift+E" === "༭(&d)\tCtrl+Shift+E" "&Tags" === "༭ǩ(&T)" "&Comments" === "༭ע(&C)..." "&Game List Tags..." === "Ϸб..." "Machine &White\tCtrl+W" === "ִ(&W)\tCtrl+W" "Machine &Black\tCtrl+B" === "ִ(&B)\tCtrl+B" "&Two Machines\tCtrl+T" === "Զ(&M)\tCtrl+T" "Machine Both" === "ִ׺ͺ" "&Machine Match" === "(&M)" "&Analysis Mode\tCtrl+A" === "ģʽ(&A)\tCtrl+A" "Analyze &File\tCtrl+F" === "ļ(&F)\tCtrl+F" "&ICS Client" === "&ICSͻ" "Edit &Game\tCtrl+E" === "༭(&G)\tCtrl+E" "&Edit Position\tShift+Ctrl+E" === "༭(&E)\tShift+Ctrl+E" "Trai&ning" === "ѵ(&N)" "Engine &Output\tAlt+Shift+O" === "ʾ\tAlt+Shift+O" "Evaluation &Graph\tAlt+Shift+E" === "ʾͼ\tAlt+Shift+E" "Game &List\tAlt+Shift+G" === "ʾб(&L)\tAlt+Shift+G" "Move &History\tAlt+Shift+H" === "ʾŷ\tAlt+Shift+H" "Open &New Chat Window" === "촰" "Edit Ta&gs..." === "༭ǩ(&T)" "Edit Co&mment..." === "༭ע(&C)..." "Enter &Username..." === "û(&U)" "&Pause\tPause" === "ͣ(&P)\tPause" "&Accept\tF3" === "(&A)\tF3" "D&ecline\tF4" === "ܾ(&C)\tF4" "Re&match\tF12" === "(&M)\tF12" "Call &Flag\tF5" === "ʱи(&F)\tF5" "&Draw\tF6" === "(&D)\tF6" "Ad&journ\tF7" === "(&J)\tF7" "A&bort\tF8" === "ֹ(&B)\tF8" "&Resign\tF9" === "(&R)\tF9" "Stop &Observing\tF10" === "ֹͣԹ(&O)\tF10" "Stop E&xamining\tF11" === "ֹͣо(&X)\tF11" "&Upload to Examine" === "ϴ(&U)" "Adjudicate to &White" === "þӮ (&W)" "Adjudicate to &Black" === "þӮ (&B)" "Adjudicate &Draw" === "ٲ(&D)" "Type In &Move...\tAlt+I" === "ŷ(&Y)...\tAlt+I" "&Backward\tAlt+Left" === "һ(&B)\tAlt+Left" "&Forward\tAlt+Right" === "һ(&F)\tAlt+Right" "Back to &Start\tAlt+Home" === "ʼ(&S)\tAlt+Home" "For&ward to End\tAlt+End" === "(&E)\tAlt+End" "&Revert\tHome" === "ָ(&V)" "&Annotate" === "ע(&A)" "&Truncate Game\tEnd" === "ضϺŷ(&T)" "&Move Now\tCtrl+M" === "(&M)\tCtrl+M" "&Retract Move\tCtrl+X" === "(&R)\tCtrl+X" "Flip &View\tF2" === "ת(&V)\tF2" "&Swap Clocks" === "ӱ(&C)" "&Mute all Sounds" === "(&M)" "&General..." === "ѡ(&G)..." "&Board..." === "ѡ(&B)..." "Ad&judications...\tAlt+Shift+J" === "о(&j)...\tAlt+Shift+J" "Common &Engine...\tAlt+Shift+U" === "ͨ(&E)...\tAlt+Shift+U" "Engine #&1 Settings..." === " #1 " "Engine #&2 Settings..." === " #2 " "&ICS..." === "&ICSѡ..." "&Fonts..." === "ѡ(&F)..." "Soun&ds..." === "ѡ(&D)..." "G&ame List..." === "Ϸб..." "Comm&unications..." === "ͨѶ˿(&U)..." "&Load Game...\tAlt+Shift+L" === "ѡ(&L)...\tAlt+Shift+L" "&Save Game...\tAlt+Shift+S" === "ѡ(&S)...\tAlt+Shift+S" "&Time Control...\tAlt+Shift+T" === "ʱ(&T)...\tAlt+Shift+T" "Save Settings &Now" === "(&N)" "Save Settings on E&xit" === "˳ʱ(&X)" "Help &Contents\tF1" === "(&C)\tF1" "Help &Index" === "(&I)" "How to &Use Help" === "ʹð(&U)" "&Hint..." === "ʾ(&H)..." "&Book..." === "ֿ(&B)..." "&About WinBoard" === "WinBoard(&A)" "White" === "׷" "Promote" === "" "Pawn" === "" "Knight" === "" "Bishop" === "" "Rook" === "" "Queen" === "" "King" === "" "Archbishop" === "ʦ" "Chancellor" === "" "Elephant" === "" "Cannon" === "" "Empty Square" === "ո" "Black" === "ڷ" "Demote" === "" "Clear Board " === "" "Drop" === "ȡ" "Cop&y and Paste" === "Ʋճ(&Y)" "&Copy" === "(&C)" "&Paste" === "ճ(&P)" "&Undo" === "(&U)" "Cu&t" === "(&T)" "&Copy" === "(&C)" "&Paste" === "ճ(&P)" "Select &All" === "ȫѡ(&A)" DIALOGS "&Animate Moving Ctrl+Shift+A" === "(&A) Ctrl+Shift+A" "&Auto Comment" === "Զע(&A)" "&Average" === "54" "&Big" === "87" "&Bishop" === "(&B)" "&Black first move" === "ڷ(&B)" "&Blindfold" === "ä(&B)" "&Bold" === "Ӵ(&B)" "&Cancel" === "ȡ(&C)" "&Choose Background Color..." === "ѡ񱳾ɫ(&C)..." "&Choose Color..." === "ѡɫ(&C)..." "&Clear" === "(&C)" "&Close" === "ر(&C)" "&Colossal" === "116" "&Default ICS Colors" === "ĬICSɫ(&D)" "&Dinky" === "29" "&Directories:" === "Ŀ¼(&D)" "&Edit" === "༭(&E)" "&Edit" === "༭(&E)" "&Get Move List" === "ȡŷб(&G)" "&Giant" === "108" "&Help" === "(&H)" "Highlight Dra&gging" === "קĿʾ(&H)" "&Huge" === "95" "&Index number:" === "(&I)" "&Italic" === "б(&I)" "&King" === "(&K)" "&Large" === "80" "&Load" === "(&L)" "&Local Line Editing" === "б༭(&L)" "&Middling" === "49" "&Next" === "һ(&N)" "&Petite" === "33" "&Popup Exit Message" === "˳ʱʾ(&P)" "&Port:" === "˿(&P)" "&Premove" === "Ԥ(&P)" "&Prev" === "һ(&P)" "&Queen" === "(&Q)" "&Quiet Play" === "(&Q)" "&Revert to Defaults" === "ָĬ趨(&R)" "&Rook" === "(&R)" "&Show Thinking" === "ʾ˼ϸ(&S)" "&Small" === "40" "&Sound alarm at" === "(&S)" "&Stop Bits:" === "ֹͣλ(&S)" "&Strikeout" === "ɾ(&S)" "&Tiny" === "21" "&Underline" === "»(&U)" "&White first move" === "׷(&W)" "&Additional options" === "ѡ(&A)" "Always &Queen Ctrl+Shift+Q" === "Ϊ(&Q) Ctrl+Shift+Q" "Always on &Top" === "ǰ(&T)" "Animate &Dragging" === "ק(&D)" "Auto &Flag Ctrl+Shift+F" === "Զʱи(&F) Ctrl+Shift+F" "Auto &Observe" === "ԶԹ(&O)" "Auto &Raise Board" === "Զı̴С(&R)" "Auto Flip &View" === "Զת(&V)" "Black Pieces" === "" "Browse..." === "..." "Built-in sound:" === "ڽ" "Bul&ky" === "72" "Cancel" === "ȡ" "Chessboard for Windows" === "Windowsµĵӹ" "Choose..." === "ѡ..." "Clocks" === "ʱ" "Comments" === "ע" "Conventional chess clock" === "ʱ" "Coordinates" === "" "Copyright 1991 Digital Equipment Corporation" === "Copyright 1991 Digital Equipment Corporation" "Dark Squares" === "ڸ" "Data &Bits:" === "λ(&B)" "Data &Rate:" === "(&R)" "Default beep" === "Ĭ" "Defaults" === "Ĭ" "Do ¬ colorize messages" === "ҪϢɫ(&N)" "Dri&ves:" === "(&V)" "Enter" === "" "Event:" === "¼" "F&low:" === "(&L)" "File &Name:" === "ļ(&N)" "Help" === "" "Highlight Last &Move" === "Ŀʾһŷ(&M)" "ICS Interaction" === "ICS" "Incremental clock" === "ʱ" "Inde&x number:" === "(&X)" "Just &view or edit game files" === "ֻۿ༭(&v)" "K&night" === "(&N)" "Light Squares" === "׸" "List Files of &Type:" === "ļ(&T)" "Load games with automatic stepping" === "Զ" "Medi&ocre" === "45" "Medi&um" === "64" "Messages" === "Ϣ" "Mode&rate" === "58" "Monochrome" === "ڰ" "Net&work..." === "(&W)..." "No sound" === "" "OK" === "ȷ" "Old" === "ɸʽ" "P&arity:" === "У(&A)" "PGN" === "PGNʽ" "Periodic &Updates" === "ڸ(&U)" "Play" === "" "Ponder &Next Move Ctrl+Shift+P" === "ͬ˼(&N) Ctrl+Shift+P" "Popup Move &Errors" === "ʾŷ(&E)" "Premove Highlights" === "Ԥ" "Promote pawn to:" === "Ϊ" "Prompt for filename" === "ʾļ" "Save As: " === "" "Save games automatically" === "Զ" "Show &Coordinates" === "ʾ(&C)" "Show Butt&on Bar" === "ʾť(&O)" "Sl&im" === "37" "Sorry Charlie" === "Բ𣬸" "Square Highlights" === "ӱ" "T&eeny" === "25" "Tags" === "ǩ" "Test &Legality Ctrl+Shift+L" === "ŷ(&L) Cl+Sh+L" "Tita&nic" === "129" "To file:" === "ļ" "Use an Internet Chess Server" === "¼Ϲ" "WAV file:" === "WAVļ" "White Pieces" === "" "WinBoard 0.0.0" === "WinBoard 0.0.0" "galactic" === "galactic" "minutes initially," === "ʼʱ" "minutes" === "" "moves in" === "" "plus" === "" "seconds per move" === "ÿһ" "seconds per move" === "һ" "seconds" === "" "Save As:" === "" "What would you like to do?" === "ʹã" "Interaction Colors" === "ɫ" "Premove" === "Ԥ" "Alarm" === "ʾ" "Colors" === "ɫ" "Size" === "С" "Current Board Size" === "ǰ̴С" "All Board Sizes" === "̴С" "Number of moves:" === "" "Within number of minutes:" === "" "Initial number of minutes:" === "ʼʱ" "Plus number of seconds per move:" === "ÿһ" "Ponder Next Move" === "ͬ˼(&N)" "Enable and Show Thinking (recommended)" === "ʾ˼ϸ" "Periodic Updates (for Analysis Mode)" === "ڸ(ģʽ)" "Game List Options" === "бѡ" "PGN &Tags:" === "PGNǩ(&T)" "Default" === "Ĭ" "Sounds" === "" "&Event:" === "¼(&E)" "&No sound" === "(&N)" "&Default beep" === "Ĭ(&D)" "&Built-in sound:" === "ڽ(&B)" "&WAV file:" === "&WAVļ" "B&rowse..." === "...(&B)" "&Play" === "(&P)" "&Defaults" === "Ĭ(&D)" "I C S Interaction" === "I C S " "About WinBoard" === "WinBoard" "Time Control" === "ʱ" "Load Game Options" === "ѡ" "Save Game Options" === "ѡ" "Open" === "" "Communication Port Settings" === "ͨѶ˿" "Edit Comment" === "༭ע" "Promotion" === "" "Game List" === "б" "Edit Tags" === "༭ǩ" "ICS Interaction" === "ICS" "Dialog" === "Ի" "Error" === "" "ICS Interaction Colors" === "ICSɫ" "Question" === "ʾ" "WinBoard Startup" === "WinBoard" "Type in a move" === "ŷ" "General Options" === "ѡ" "ICS Options" === "ICS" "Board Options" === "ѡ" "Fonts" === "" NEW "&Up" === "" "&Down" === "" "Filter" === "" "All White" === "ȫɫ" "Flip Black" === "תɫ" "Specify Chess &Engines:" === "ָ(&E)" "Specify Chess &Server:" === "ָ(&S)" "New Shuffle Game..." === "ϴϷ..." "New Variant...\tAlt+Shift+V" === "±...\tAlt+Shift+V" "Copy Game List to Clipboard" === "Ϸб" "Save &Diagram..." === "ͼ...(&D)" "Machine Both" === "ִ׺ͺ" "Machine Matc&h" === "(&h)" "Show Engine &Output\tAlt+Shift+O" === "ʾ\tAlt+Shift+O" "Show Evaluation Graph\tAlt+Shift+E" === "ʾͼ\tAlt+Shift+E" "Show Move History\tAlt+Shift+H" === "ʾŷ\tAlt+Shift+H" "Open Chat Window" === "촰" "Enter &Username..." === "û(&U)" "&Upload to Examine" === "ϴ(&U)" "Adjudicate to &White" === "þӮ (&W)" "Adjudicate to &Black" === "þӮ (&B)" "Adjudicate &Draw" === "ٲ(&D)" "&Annotate" === "ע(&A)" "&Truncate Game" === "ض(&T)" "Swap &Clocks" === "ӱ(&C)" "&Mute all Sounds" === "(&M)" "Adjudications...\tAlt+Shift+J" === "о...\tAlt+Shift+J" "Common Engine...\tAlt+Shift+U" === "ͨ...\tAlt+Shift+U" "Engine #1 Settings..." === " #1 " "Engine #2 Settings..." === " #2 " "Game List..." === "Ϸб..." "Promote" === "" "Archbishop" === "ʦ" "Chancellor" === "" "Elephant" === "" "Cannon" === "" "Demote" === "" "Lance" === "㳵" "Silver" === "" "Gold" === "" "Fixed time per move" === "̶ʱ" "Maximum seconds per move:" === "ʱ()" "Time-Odds Factors:" === "ʱ䱶" "Engine #1:" === " #1" "Engine #2:" === " #2" "Save out of book info in PGN" === "PGNбϢ" "&Send Engine Think" === "˼(&S)" "E&xtended PGN Info Ctrl+Shift+X" === "չPGNϢ Ctrl+Shift+X" "&Hide Thinking Ctrl+Shift+H" === "˼ Ctrl+Shift+H" "&Info in Move History Ctrl+Shift+I" === "ŷбʾϢ Cl+Sh+I" "Highlight with Arro&w" === "üͷͻƶ" "Displa&y Logos" === "ʾ־(&y)" "&Auto Kibitz" === "Զ\"kibitz\"(&A)" "See&k Graph" === "ѡͼ(&k)" "auto-&Refresh" === "Զˢͼ(&R)" "Bckgnd Obser&ve" === "̨۲(&v)" "&Dual Board" === "˫(&D)" "One-Click &Move" === "ƶ(&M)" "Background..." === "..." "&Defaults..." === "ȱʡ(&D)" "Startup &Chat Boxes:" === "(&C)" "General" === "" " YES" === "" " NO" === "" "Move History, Engine Output" === "ʷϵĶ,ķ" "New Shuffle Game" === "ϴϷ" "&Start Position Number:" === "λú(&S)" "Random" === "" "Move History" === "ŷ" "Evaluation Graph" === "ͼ" "Engine output" === "" "Engine #1" === " #1" "NPS" === "NPS" "Engine #2" === " #2" "Chat Window" === "촰" "Chat partner:" === "" "Clear" === "" "Send" === "" "Adjudications" === "о" "Hide Thinking when Playing against Human" === "˶ʱ˼ϸ" "Adjudications in non-ICS games" === "оICSϷ" "Adjudicate draw after:" === "źо" "moves" === "ŷ" "Win/loss adjudication threshold:" === "/Ӯоֵ" "centipawns" === "ٷ֮һ" "&Verify Engine Claims" === "֤(&V)" "Detect &Mates" === "⽫ɱ(&M)" "Draw if &Insufficient Material" === "ʱк(&I)" "Adjudicate &Trivial Draws" === "һо(&T)" "Apply" === "Ӧ" "-move rule" === "" "-fold repeats" === "ظ" "Engine #1 Score is Absolute" === " #1 ǾԷ" "Engine #2 Score is Absolute" === " #2 ǾԷ" "Common Engine Settings" === "ͨ" "Polyglot Directory:" === " Polyglot Ŀ¼" "Hash Size (MB):" === "Hash С(MB)" "EGTB Path:" === "EGTB ·" "EGTB Size (MB):" === "EGTB С(MB)" "Use Book:" === "ʹÿ" "Max nr of CPUs:" === "CPU" "First has Own Book" === "1ÿ" "Second has Own Book" === "2ÿ" "Book Depth:" === "ŷ" "Book Variation:" === "" "Default Match Games:" === "ȱʡԾ" "Variants" === "" "Variant" === "" "Board size:" === "̴С" "ranks" === "" "files" === "" "Holdings with room for:" === "ӵеĿ" "('-1' means defaults for selected variant)" === "-1ʾȱʡ" "Type In Your Name" === "Je Naam, Sufferd!" "&Play against a chess engine or match two engines" === "˻ĻԶ(&P)" "&Use an Internet Chess Server" === "¼Ϲ(&U)" winboard.c "&File" === "ļ(&F)" "&Mode" === "ģʽ(&M)" "&Action" === "Ϊ(&A)" "&Step" === "ŷ(&S)" "&Options" === "ѡ(&O)" "&Help" === "(&H)" "&View" === "(&V)" "E&ngine" === "(&N)" "Font name too long:" === "̫" "Font point size missing:" === "ûС" "Can't parse color name %s" === "޷ʶɫ %s" "Unrecognized board size value" === "޷ʶ̴С" "Unrecognized argument" === "޷ʶIJ" "No value provided for argument" === "ûֵṩ" "Incomplete \\ escape in value for" === "жϵֵ" "Failed to open indirection file" === "޷򿪼ļ" "Unrecognized boolean argument value" === "޷ʶ߼ֵ" "Unrecognized argument" === "޷ʶIJ" "Too many colors" === "ɫ̫" "&Minimize\tCtrl+F4" === "С(&M)\tCtrl+F4" "White: %s" === "׷ %s" "We only care about the height here" === "ֻע߶" "Cannot build game list" === "޷б" "Load Game from File" === "ļ" "Load Position from File" === "ļ" "Save Game to File" === "ֵļ" "Save Position to File" === "浽ļ" "%s does not support analysis" === "%s ַ֧" "Analyze Game from File" === "ļ" "Unable to activate help" === "޷򿪰" "Send to chess program:" === "͸һ" "Send to second chess program:" === "͸ڶ" "Direct Command" === "ֱ" "Error loading sound %s" === " %s " "Error playing sound %s" === " %s " "File open failed" === "޷ļ" "Internal error in file dialog box" === "ļԻڲ" "Option Error" === "ѡ" "Choose an option, or cancel to exit" === "ѡһѡ߰ȡť˳" "Unable to activate help" === "޷򿪰" "Displayed move is not current" === "ʾŷǵǰŷ" "Could not parse move" === "޷ŷ" "%s:\nError code %d" === "%s:\n %d" "Error" === "" "Fatal Error" === "ش" "Exiting" === "˳" "%s:\nError code %d" === "%s:\n %d" "ʾϢ" === "ʾϢ" "Note" === "ע" "Error writing to chess program" === "Ϣʱ" "User" === "û" "Unknown" === "δ֪" "White" === "׷" "Black" === "ڷ" "Save Game to File" === "ֵļ" "Not implemented" === "δʵ" "Shout Text" === "" "SShout/CShout" === "" "Channel 1 Text" === "ƵI" "Channel Text" === "Ƶ" "Kibitz Text" === "" "Tell Text" === "˵" "Challenge Text" === "ս" "Request Text" === "" "Seek Text" === "" "Normal Text" === "" "None" === "" "Pawn" === "" "Knight" === "" "Bishop" === "" "Rook" === "" "Queen" === "" "Information" === "" wclipbrd.c "Unable to convert position to FEN." === "޷ѾתΪFEN" "Unable to copy FEN to clipboard." === "޷FEN" "Cannot create temporary file name." === "޷ʱļ" "Cannot open temporary file." === "޷ʱļ" "Cannot write to temporary file." === "޷дʱļ" "Cannot reopen temporary file." === "޷ٴδʱļ" "Cannot determine size of file." === "޷ȷļС" "Cannot determine size of file." === "޷ȷļС" "Cannot allocate clipboard buffer." === "޷Ļ" "Cannot read from temporary file." === "޷ʱļ" "Error reading from temporary file." === "ʱļʱ" "Cannot copy text to clipboard" === "޷ֵ" "Unable to allocate memory for clipboard." === "޷Ϊ洢ռ" "Unable to lock clipboard memory." === "޷Ĵ洢ռ" "Cannot unlock clipboard memory." === "޷ΪĴ洢ռ" "Cannot open clipboard." === "޷򿪼" "Cannot empty clipboard." === "޷ռ" "Cannot copy text to clipboard." === "޷ֵ" "Cannot close clipboard." === "޷رռ" "Unable to paste FEN from clipboard." === "޷ӼճFEN" "Unable to create temporary file." === "޷ʱļ" "Error writing to temporary file." === "дʱļʱ" "Unable to open clipboard." === "޷򿪼" "No text in clipboard." === "û" "Unable to lock clipboard memory." === "޷Ĵ洢ռ" "Unable to allocate memory for text string." === "޷Ϊַ洢ռ" "Unable to unlock clipboard memory." === "޷ԼĴ洢ռ" "Unable to close clipboard." === "޷رռ" woptions.c "Variant %s not supported by %s" === " %s %s ֧" "Warning: second engine (%s) does not support this!" === ": ڶ(%s) ִ֧!" "Invalid ICS Alarm Time" === "ICSǷ" "Invalid max time per move" === "ʱǷ" "Invalid time-odds factor" === "ʱ䱶Ƿ" "Choose Folder" === "ѡĿ¼" "Choose Book" === "ѡÿ" "Choose Polyglot Directory" === "ѡ Polyglot Ŀ¼" "Choose EGTB Directory:" === "ѡ EGTB Ŀ¼" "Polyglot was not found in the specified folder!" === "ѡĿ¼δ Polyglot " wgamelist.c "No game selected" === "ûѡ" "Can't go forward any further" === "޷ǰ" "Can't back up any further" === "޷ٺ" "No game list" === "ûб" "Game List" === "б" "Game list not loaded or empty" === "" "%s - %d/%d games" === "%s - %d/%d " "Game list not loaded or empty" === "бδػΪ" wedittags.c "Edit Tags" === "༭ǩ" "Tags" === "ǩ" "Error replacing tags." === "滻ǩ" wsettings.c "%s Engine Settings (%s)" === "%s (%s)" "OK" === "ȷ" "Cancel" === "ȡ" backend.c "bad timeControl option %s" === "Ƿ\"timeControl\"(ʱ)ѡ %s" "bad searchTime option %s" === "Ƿ\"searchTime\"(ʱ)ѡ %s" "first" === "һ" "second" === "ڶ" "protocol version %d not supported" === "Э汾 %d ֧" "Variant %s supported only in ICS mode" === " %s ֻICSģʽ֧" "Unknown variant name %s" === "δ֪ı %s" "Starting chess program" === "" "Could not open comm port %s" === "޷ͨѶ˿ %s" "Could not connect to host %s, port %s" === "޷ %s ˿ %s" "Unknown initialMode %s" === "δ֪\"initialMode\"(ʼģʽ)ѡ %s" "Can't have a match with no chess programs" === "ûʱ޷б" "Bad game file" === "ļ" "Bad position file" === "ļ" "AnalyzeFile mode requires a game file" === "\"AnalyzeFile\"(ļ)ģʽָһļ" "Analysis mode requires a chess engine" === "\"Analysis\"()ģʽ" "Analysis mode does not work with ICS mode" === "\"Analysis\"()ģʽ޷ICSģʽ¹" "MachineWhite mode requires a chess engine" === "\"MachineWhite\"(ִ)ģʽ" "MachineWhite mode does not work with ICS mode" === "\"MachineWhite\"(ִ)ģʽ޷ICSģʽ" "MachineBlack mode requires a chess engine" === "\"MachineBlack\"(ִ)ģʽ" "MachineBlack mode does not work with ICS mode" === "\"MachineBlack\"(ִ)ģʽ޷ICSģʽ" "TwoMachines mode does not work with ICS mode" === "\"TwoMachines\"(Զ)ģʽ޷ICSģʽ" "TwoMachines mode requires a chess engine" === "\"TwoMachines\"()ģʽ" "Training mode requires a game file" === "\"Training\"(ѵ)ģʽָһļ" "Error writing to ICS" === "ϢICSʱ" "Error reading from keyboard" === "ȡʱ" "Got end of file from keyboard" === "ȡʱļβ" "Error writing to ICS" === "ϢICSʱ" "Error writing to display" === "Ϣʾʱ" "Error gathering move list: two headers" === "ȡŷʱͷ" "Error gathering move list: nested" === "ȡŷʱǶ״" "Connection closed by ICS" === "ӱICSر" "Error reading from ICS" === "ȡICSϢʱ" "Failed to parse board string:\n\"%s\"" === "޷ַ\n\"%s\"" "Game too long; increase MAX_MOVES and recompile" === "̫Ҫ\"MAX_MOVES\"±" "Error gathering move list: extra board" === "ȡŷʱ" "Illegal move \"%s\" from ICS" === "ICSŷ\"%s\"" "Couldn't parse move \"%s\" from ICS" === "޷ICSŷ\"%s\"" "say Internal error; bad moveType %d (%d,%d-%d,%d)" === "say ڲ󣬷Ƿ\"moveType\"(ŷ) %d (%d,%d-%d,%d)" "You are playing Black" === "ִ" "You are playing White" === "ִ" "It is White's turn" === "ֵ׷" "It is Black's turn" === "ֵڷ" "Displayed position is not current" === "ʾľ治ǵǰ" "Illegal move" === "ŷ" "End of game" === "ֽ" "Incorrect move" === "ŷ" "Illegal move \"%s\" from %s machine" === "%sŷ\"%s\"" "Forfeit due to illegal move" === "߲ŷ" "%s does not support analysis" === "%s ַ֧" "Illegal move \"%s\" (rejected by %s chess program)" === "ŷ\"%s\" (%sܾܸŷ)" "Failed to start %s chess program %s on %s: %s\n" === "޷%s %s( %s )%s\n" "Hint: %s" === "ʾ %s" "White resigns" === "׷" "Black resigns" === "ڷ" "White mates" === "׷ɱ" "Black mates" === "ڷɱ" "Draw" === "" "Draw agreed" === "Э̺" "Machine accepts your draw offer" === "..." "Machine offers a draw\nSelect Action / Draw to agree" === "\nѡǷ" "%s (only move)" === "%s (Ψһŷ)" "Ambiguous move in ICS output: \"%s\"" === "ICSȷŷ\"%s\"" "Illegal move in ICS output: \"%s\"" === "ICSȷŷ\"%s\"" "Gap in move list" === "ŷϿ" "Game too long; increase MAX_MOVES and recompile" === "̫Ҫ\"MAX_MOVES\"±" "Variant %s not supported by %s" === " %s %s ֧" "Startup failure on '%s'" === "޷'%s'" "Waiting for first chess program" === "ȴһ" "Waiting for second chess program" === "ȴڶ" "Match %s vs. %s: final score %d-%d-%d" === " %s vs. %s: ձȷ %d-%d-%d" "Stalemate" === "ƺ" "Illegal move: %d.%s%s" === "ŷ %d.%s%s" "Ambiguous move: %d.%s%s" === "ȷŷ %d.%s%s" "Can't open \"%s\"" === "޷\"%s\"" "Cannot build game list" === "޷б" "No more games in this message" === "Ϣ" "No game has been loaded yet" === "δ" "Can't back up any further" === "޷ٺ" "Game number out of range" === "Χ" "Can't seek on game file" === "޷ļ" "Game not found in file" === "ļûҵ" "Bad FEN position in file" === "ļеFEN" "No moves in game" === "ûŷ" "No position has been loaded yet" === "δо" "Can't back up any further" === "޷ٺ" "Can't open \"%s\"" === "޷\"%s\"" "Can't seek on position file" === "޷ļ" "Position not found in file" === "ļûŵ" "Bad FEN position in file" === "ļеFEN" "Black to play" === "ֵڷ" "White to play" === "ֵ׷" "Can't open \"%s\"" === "޷\"%s\"" "You have edited the game history.\nUse Reload Same Game and make your move again." === "Ѿ༭\nִ\"ͬһ\"֮" "You have entered too many moves.\nBack up to the correct position and try again." === "˹ŷ\n˻صȷľһ" "Displayed position is not current.\nStep forward to the correct position and try again." === "ʾľ治ǵǰ\nǰǰһ" "You have not made a move yet" === "һҲû߹" "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." === "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." "No unfinished games" === "No unfinished games" "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." === "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." "Failed to invoke cmail" === "Failed to invoke cmail" "Waiting for reply from opponent\n" === "Waiting for reply from opponent\n" "Still need to make move for game\n" === "Still need to make move for game\n" "Still need to make moves for both games\n" === "Still need to make moves for both games\n" "Still need to make moves for all %d games\n" === "Still need to make moves for all %d games\n" "Still need to make a move for game %s\n" === "Still need to make a move for game %s\n" "No unfinished games\n" === "No unfinished games\n" "Ready to send mail\n" === "Ready to send mail\n" "Still need to make moves for games %s\n" === "Still need to make moves for games %s\n" "Edit comment" === "༭ע" "Edit comment on %d.%s%s" === "༭ע %d.%s%s" "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis." === "ģʽ...\nϢһֱţ˵Ĺַ֧" "It is not White's turn" === "ûֵ׷" "It is not Black's turn" === "ûֵڷ" "Wait until your turn,\nor select Move Now" === "ȴ\nѡ\"\"" "Starting second chess program" === "ڶ" "Training mode off" === "ѵģʽѹر" "Training mode on" === "ѵģʽѴ" "Already at end of game" === "Ѿ" "Warning: You are still playing a game" === "ע⣺ڽ" "Warning: You are still observing a game" === "ע⣺Թ" "Warning: You are still examining a game" === "ע⣺о" "It is Black's turn" === "ֵڷ" "It is White's turn" === "ֵ׷" "That square is occupied" === "ѷ" "Draw agreed" === "Э̺" "There is no pending offer on this move" === "ŷûд" "Both players ran out of time" === "˫ʱ" "Black wins on time" === "׷ʱи" "Your opponent is not out of time" === "ûгʱ" "Both players ran out of time" === "˫ʱ" "White wins on time" === "ڷʱи" "Your opponent is not out of time" === "ûгʱ" "Draw agreed" === "Э̺"1,$g/=== ""/d "Black offers a draw" === "׷" "White offers a draw" === "ڷ" "You must make your move before offering a draw" === "" "Draw agreed" === "Э̺" "Game aborted" === "ж" "You are not examining a game" === "ûз" "You can't revert while pausing" === "ͣʱܸԭ" "Wait until your turn,\nor select Move Now" === "ȴ\nѡ\"\"" "It is your turn" === "ֵ" "Wait until your turn" === "ȴ" "No hint available" === "ûпõʾ" "Error writing to %s chess program" === "Ϣ%sʱ" "Error: %s chess program (%s) exited unexpectedly" === "%s(%s)ͻȻ˳" "Error reading from %s chess program (%s)" === "%s(%s)Ϣʱ" "Analysis (%s)" === "(%s)" "Comment" === "ע" "Comment on %d.%s%s" === "ע %d.%s%s" "Both flags fell" === "˫ʱ" "White's flag fell" === "׷ʱ" "Black wins on time" === "׷ʱи" "Black's flag fell" === "ڷʱ" "White wins on time" === "ڷʱи" "Bad FEN position in clipboard" === "FEN" "No response from ICS" === "ICS δӦ" "You cannot do this while you are playing or observing" === "Թʱܽд˲" "Click in holdings to choose piece" === "ѡֳֵ" END-OF-GAME MESSAGES (should they be translated?) "Xboard adjudication: King destroyed" === "Xboard о" "Xboard adjudication: Bare king" === "Xboard о⽫" "Xboard adjudication: 3rd check" === "Xboard о3ν" "Xboard adjudication: Stalemate" === "Xboard о" "Xboard adjudication: Checkmate" === "Xboard о" "Xboard adjudication: Insufficient mating material" === "Xboard оȡʤ" "Xboard adjudication: Trivial draw" === "Xboard оһ" "XBoard adjudication: repetition draw" === "Xboard оѭ" "Xboard adjudication: perpetual checking" === "Xboard о" "Xboard adjudication: perpetual chasing" === "Xboard о׽" "%Xboard adjudication: perpetual chasing of" === "Xboard о׽" "Xboard adjudication: 50-move rule" === "Xboard о50غк͹" "Draw claim: 50-move rule" === "50غк͹" "Draw claim: 3-fold repetition" === "3ѭ" "Draw claim: insufficient mating material" === "ȡʤ" "Xboard adjudication: long game" === "Xboard оԾֹ" "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d" === "Xboardδʶ岽¸ %s (%c%c%c%c) res=%d" "Xboard: Forfeit due to illegal move: %s (%c%c%c%c)%c" === "XboardǷ岽¸ %s (%c%c%c%c)%c" "Xboard adjudication" === "Xboard о" "User adjudication" === "ûо" "False win claim: '%s'" === "Ӯʧ" "False draw claim: '%s'" === "ʧ" "xboard exit" === "xboard ˳" xboard-4.9.1/winboard/language/spanish.lng0000644000175000001440000012443512717001265015472 00000000000000## WinBoard 4.5.0 language file ## Spanish/Espaol v1.0 ## Translation by scar Toledo G. ## ## If you revise this, please insert your date, name and description. ## Si usted revisa esto, por favor inserte su fecha, nombre y descripcin. ## ## Aug/24/2010 scar Toledo G. http://nanochess.110mb.com/ ## First beta translation ## Aug/25/2010 scar Toledo G. ## Second beta, enhanced translation. Added notes for translators. ## Nov/29/2010 scar Toledo G. ## Final revision, added new string, adjusted messages for new menu reorganization. ## Notes for translators: (suggested also for lang450.txt) ## o Use ## for comments, find them scattered around this translation ## o Careful with temptation of direct translation, by example 'movimiento' for 'move' when 'jugada' is better. ## o Try to use short phrases, more text doesn't imply more clearness. ## o Check that your translation is right, does it mean what it does? ## o Test your translation, check every dialog. ## o For standard chess names check Wikipedia for confirmation. ## o For menus, assign shortcuts (character &) until you finish the translation. winboard.rc MENUS: "&New Game\tCtrl-N" === "&Nueva partida\tCtrl+N" "New Sh&uffle Game..." === "Nueva partida revuelta..." "New &Variant...\tAlt+Shift+V" === "Nueva variante...\tAlt+Mays+V" "&Load Game...\tCtrl-O" === "&Leer partida...\tCtrl+O" "L&oad Position...\tCtrl+Shift+O" === "Lee&r posicin...\tCtrl+Mays+O" "&Save Game...\tCtrl-S" === "&Guardar partida...\tCtrl+S" "S&ave Position...\tCtrl+Shift+S" === "Guardar po&sicin...\tCtrl+Mays+S" "Save as &Diagram..." === "Guardar &diagrama..." "&Quit" === "&Salir" ## Next six strings not used now. "Load &Next Game\tAlt+PgDn" === "Partida s&iguiente\tAlt+PgDn" "Load &Previous Game\tAlt+PgUp" === "Par&tida previa\tAlt+PgUp" "&Reload Same Game" === "Releer la &misma partida" "Load N&ext Position\tAlt+Shift+PgDn" === "Posicin si&guiente\tAlt+Mays+PgDn" "Load Pre&vious Position\tAlt+Shift+PgUp" === "Posici&n previa\tAlt+Mays+PgUp" "Reload Sa&me Position" === "Releer la mism&a posicin" "&Copy Game To Clipboard\tCtrl+C" === "&Copiar partida\tCtrl+C" "C&opy Position To Clipboard\tCtrl+Shift+C" === "C&opiar posicin\tAlt+Mays+C" "Copy Game List to Clipboard" === "Copiar lista de &partidas" "&Paste Game From Clipboard\tCtrl+V" === "&Pegar partida\tCtrl+V" "P&aste Position From Clipboard\tCtrl+Shift+V" === "Peg&ar posicin\tAlt+Mays+V" "&Edit Game\tCtrl+E" === "&Editar partida\tCtrl+E" "E&dit Position\tCtrl+Shift+E" === "E&ditar posicin\tCtrl+Mays+E" "Edit Ta&gs..." === "Editar c&ircunstancias" "Edit Co&mment..." === "Editar co&mentarios" "Enter &Username..." === "Introducir nombre de &usuario..." "&Revert\tHome" === "&Revertir\tHome" "&Annotate" === "&Anotar" "&Truncate Game\tEnd" === "&Truncar partida\tEnd" "&Backward\tAlt+Left" === "Jugada &anterior\tAlt+Izquierda" "&Forward\tAlt+Right" === "&Siguiente jugada\tAlt+Derecha" "Back to &Start\tAlt+Home" === "&Primera jugada\tAlt+Inicio" "For&ward to End\tAlt+End" === "&Ultima jugada\tAlt+Fin" "Flip &View\tF2" === "&Tablero invertido\tF2" "&Swap Clocks" === "Intercambiar relojes" "Engine &Output\tAlt+Shift+O" === "Mostrar &salida del motor\tAlt+Mays+O" "Evaluation &Graph\tAlt+Shift+E" === "Mostrar &grfica de evaluacin\tAlt+Mays+E" "Game &List\tAlt+Shift+G" === "Mostrar &lista de partidas\tAlt+Mays+G" "Move &History\tAlt+Shift+H" === "Mostrar lista de &jugadas\tAlt+Mays+H" "Open &New Chat Window" === "Abrir ventana de conversacin" "Type In &Move...\tAlt+I" === "T&eclear jugada...\tAlt+I" "&Tags" === "C&ircunstancias" "&Comments" === "&Comentarios" "&Game List Tags..." === "Opciones de lista de &partidas..." "&Board..." === "Opciones del t&ablero..." "&Fonts..." === "Opciones de ti&pografa..." "Machine &White\tCtrl+W" === "El programa juega con &blancas\tCtrl+W" "Machine &Black\tCtrl+B" === "El programa juega con &negras\tCtrl+B" "&Two Machines\tCtrl+T" === "Juegan d&os programas\tCtrl+T" "Machine Both" === "Programa contra si mismo" "&Analysis Mode\tCtrl+A" === "&Anlisis\tCtrl+A" "Analyze &File\tCtrl+F" === "A&nalizar archivo\tCtrl+F" "&Edit Game\tCtrl+E" === "&Editar partida\tCtrl+E" "E&dit Position\tShift+Ctrl+E" === "E&ditar posicin\tCtrl+Mays+E" "Trai&ning" === "Ent&renamiento" "&ICS Client" === "Conectado a un &ICS" "&Machine Match" === "&Torneo de dos programas" "&Pause\tPause" === "&Pausa\tPausa" "&Accept\tF3" === "&Acepto\tF3" "D&ecline\tF4" === "&Rehuso\tF4" "Re&match\tF12" === "Pido &desquite\tF12" "Call &Flag\tF5" === "&Pedir la bandera\tF5" "&Draw\tF6" === "&Tablas\tF6" "Ad&journ\tF7" === "Ap&lazamiento\tF7" "A&bort\tF8" === "A&nulacin\tF8" "&Resign\tF9" === "&Me rindo\tF9" "Stop &Observing\tF10" === "Dejo de obser&var\tF10" "Stop E&xamining\tF11" === "Dejo de e&xaminar\tF11" "&Upload to Examine" === "Enviar para examinar" "Adjudicate to &White" === "Adjudicar a blancas" "Adjudicate to &Black" === "Adjudicar a negras" "Adjudicate &Draw" === "Adjudicar tablas" "Engine #&1 Settings..." === "Configuracin motor #&1..." "Engine #&2 Settings..." === "Configuracin motor #&2..." "Install 1st..." === "Lista de motores #1..." "Install 2nd..." === "Lista de motores #2..." "&Hint..." === "&Dame una pista..." "&Book..." === "Repertorio de &aperturas..." "&Move Now\tCtrl+M" === "&Forzar jugada\tCtrl+M" "&Retract Move\tCtrl+X" === "&Revocar jugada\tCtrl+X" "&Mute all Sounds" === "&Apagar los sonidos" "&General..." === "&Generales..." "&Time Control...\tAlt+Shift+T" === "&Controles de tiempo..." "Common &Engine...\tAlt+Shift+U" === "Para los motores...\tAlt+Mays+U" "Ad&judications...\tAlt+Shift+J" === "Adjudicaciones...\tAlt+Mays+J" "&Load Game...\tAlt+Shift+L" === "Para &leer partida...\tAlt+Mays+L" "&Save Game...\tAlt+Shift+S" === "Para gua&rdar partida...\tAlt+Mays+S" "G&ame List..." === "Lista de &partidas..." "Soun&ds..." === "Soni&do..." "&ICS..." === "&ICS..." "Add ICS..." === "Nueva ICS..." "Comm&unications..." === "Com&unicaciones..." "Save Settings &Now" === "Salvar config. a&hora" "Save Settings on E&xit" === "Salvar config. al &salir del programa" "Help &Contents\tF1" === "&Contenido\tF1" "Help &Index" === "&Indice alfabtico" "How to &Use Help" === "Modo de utilizar la ayuda" "&About WinBoard" === "Acerca de &WinBoard" "White" === "Blancas" "Promote" === "Coronar" "Pawn" === "Pen" "Knight" === "Caballo" "Bishop" === "Alfil" "Rook" === "Torre" "Queen" === "Dama" "King" === "Rey" "Archbishop" === "Arzobispo" "Chancellor" === "Canciller" "Elephant" === "Elefante" "Cannon" === "Can" "Empty Square" === "Vaciar el escaque" "Black" === "Negras" "Demote" === "Degradar" "Clear Board " === "Limpiar el tablero " "Gold" === "Oro" "Silver" === "Plata" "Lance" === "Lanza" "Drop" === "Soltar" "Cop&y and Paste" === "Cop&iar y pegar" "&Copy" === "&Copiar" "&Paste" === "&Pegar" "&Undo" === "&Deshacer" "Cu&t" === "Cor&tar" "&Copy" === "&Copiar" "&Paste" === "&Pegar" "Select &All" === "&Seleccionar todo" DIALOGS: ABOUTBOX "About WinBoard" === "Acerca de WinBoard" "OK" === "Aceptar" "Chessboard for Windows" === "Tablero de ajedrez para Windows" ## Following 3 strings doesn't get translated :( "Copyright 1991 Digital Equipment Corporation" === "(c) Copyright Digital Equipment Corporation 1991" "Enhancements Copyright 1992-2014 Free Software Foundation" === "Mejoras (c) Copyright Free Software Fundation 1992-2010" "Enhancements Copyright 2005\r\nAlessandro Scotti" === "Mejoras (c) Copyright\r\nAlessandro Scotti 2005" ## What happened with H.G.Muller? ## Absolutely needed a link to download the most recent version " " === "Traduccin por scar Toledo G." "WinBoard 0.0.0" === "WinBoard 0.0.0" ABOUTBOX2 "galactic" === "galctico" TIME CONTROL DIALOG "Time Control" === "Control de tiempo" "Conventional chess clock" === "Reloj convencional de ajedrez" "Incremental clock" === "Reloj incremental" "Cancel" === "Cancelar" "Use arrow keys to specify which clock setting type, then press tab to alter values." === "Utilice las flechas del teclado para especificar el tipo de configuracin de reloj, despus oprima Tab para alterar los valores." "Fixed time per move" === "Tiempo fijo por jugada" "Number of moves:" === "Nmero jugadas:" "Within number of minutes:" === "Durante (minutos):" "Initial number of minutes:" === "Nmero inicial de minutos:" "Plus number of seconds per move:" === "Segundos extra por jugada:" "Maximum seconds per move:" === "Mximo de segundos por jugada:" "Time-Odds Factors:" === "Factores de tiempo:" "Engine #1:" === "Motor #1:" "Engine #2:" === "Motor #2:" LOAD OPTIONS DIALOG "Load Game Options" === "Opciones al leer partida" "Load games with automatic stepping" === "Carga partida con avance automtico" "seconds per move" === "segundos por jugada" SAVE OPTIONS DIALOG "Save Game Options" === "Opciones al salvar partida" "Save As: " === "Estilo" "Save games automatically" === "Salvar partidas automtico" "Prompt for filename" === "Pedir nombre" "To file:" === "Archivo:" "PGN" === "PGN" "Old" === "Viejo" "Browse..." === "Ver" "Save out of book info in PGN" === "Incluir en PGN info. al dejar libro de aperturas" 1536 ## Used in old Windows versions (still working?) "Open" === "Abrir" "File &Name:" === "&Nombre:" "&Directories:" === "&Directorios:" "List Files of &Type:" === "Listar de &tipo:" "Dri&ves:" === "&Unidades:" "&Help" === "Ay&uda" "&Index number:" === "N&m. ndice" COMMPORT ## Not tested, I could not access it. "Communication Port Settings" === "Configuracin comunicaciones" "Net&work..." === "&Red..." "&Port:" === "&Puerta:" "Data &Rate:" === "&Velocidad:" "Data &Bits:" === "&Bits:" "P&arity:" === "P&aridad:" "&Stop Bits:" === "Bits pa&rada:" "F&low:" === "F&lujo:" EDIT COMMENT "Edit Comment" === "Editar comentario" "&Clear" === "&Limpiar" "&Edit" === "&Edicin" PROMOTION POPUP "Promotion" === "Coronacin" "&Queen" === "&Dama" "&Rook" === "&Torre" "&Bishop" === "&Alfil" "K&night" === "Ca&ballo" "&King" === "&Rey" "&Cancel" === "&Cancelar" ## This text appears and it is not in lang450.txt (remove comment if added to lang450.txt) "Promote to:" === "Coronar a:" "Promote?" === "Coronar?:" "Chance&llor" === "Canci&ller" "&Archbishop" === "Ar&zobispo" " YES" === " SI" " NO" === " NO" "C&entaur" === "C&entauro" GAME LIST "Game List" === "Lista de juegos" "&Load" === "&Leer" "&Prev" === "&Previo" "&Next" === "&Siguiente" "&Close" === "&Cerrar" "Filter" === "Filtro" EDIT TAGS "Edit Tags" === "Circunstancias" ERROR "ICS Interaction" === "Interaccin ICS" "Dialog" === "Dilogo" "Error" === "Error" "Sorry Charlie" === "Lo siento amigo" COLORIZE "I C S Interaction Colors" === "Colores interaccin I C S" "Interaction Colors" === "Colores interaccin" "Premove" === "Pre-mov." "Alarm" === "Alarma" "Colors" === "Colores" "&Choose Color..." === "&Escoger color..." "&Bold" === "&Negrita" "&Italic" === "&Itlica" "&Underline" === "&Subrayado" "&Strikeout" === "&Tachado" QUESTION ## Next string currently not used "Enter a chess engine command or just type something stupid that will completely screw things up." === "Introduzca una orden para el motor o slo teclee algo tonto que arruinar completamente las cosas." "Question" === "Pregunta" "Enter" === "Entrar" STARTUP DIALOG "WinBoard Startup" === "Inicio de WinBoard" "What would you like to do?" === "Qu le gustara hacer?" "&Play against a chess engine or match two engines" === "&Jugar contra un motor de ajedrez o torneo de dos motores" "&Use an Internet Chess Server" === "&Utilizar un servidor de ajedrez de Internet (ICS)" "Just &view or edit game files" === "Slo &ver o editar archivos de partidas" "Specify Chess &Engines:" === "Especifique &motores de ajedrez:" "Specify Chess &Server:" === "Especifique &servidor de ajedrez:" "&Additional options" === "Opciones extras" INDEX "Type in a move" === "Introduzca una jugada" "Inde&x number:" === "Nm. ndi&ce" SOUND DIALOG "Sounds" === "Sonidos" "&Event:" === "&Evento:" "&No sound" === "&Sin sonido" "&Default beep" === "Bip por &defecto" "&Built-in sound:" === "Sonido &interno" "&WAV file:" === "Archivo &WAV:" "B&rowse..." === "E&xaminar..." "&Play" === "&Reproducir" "&Defaults" === "&Por defecto" GENERAL OPTIONS DIALOG ## Note: finely tuned spaces to align keys at right (add this comment to lang450.txt for commodity) "General Options" === "Opciones generales" "Always on &Top" === "Siempre al &frente" "Always &Queen Ctrl+Shift+Q" === "Siempre &dama Ctrl+Mays+Q" "Animate &Dragging" === "Animar &arrastre" "&Animate Moving Ctrl+Shift+A" === "Animar &movimiento Ctrl+Mays+A" "Auto &Flag Ctrl+Shift+F" === "&Bandera automtica Ctrl+Mays+F" "Auto Flip &View" === "Cambio de &lado automtico" "Auto &Raise Board" === "&Tablero al frente (automtico)" "&Blindfold" === "A &ciegas" "Highlight Dra&gging" === "Iluminar a&rrastre" "Highlight Last &Move" === "Iluminar ltima ju&gada" "Periodic &Updates" === "Act&ualizacin peridica" ## Was wrong in lang450.txt (remove comment if corrected in lang450.txt) "Ponder &Next Move Ctrl+Shift+P" === "Prever &prx.jugada Ctrl+Mays+P" "&Popup Exit Message" === "&Ventana al salir" "Popup Move &Errors" === "Ventana si &error en jugada" "Show Butt&on Bar" === "Mostrar barra de boto&nes" "Show &Coordinates" === "Mostrar coordenada&s" "&Show Thinking" === "Mostrar cog&itaciones" "Test &Legality Ctrl+Shift+L" === "Checar &legalidad Ctrl+Mays+L" "&Hide Thinking Ctrl+Shift+H" === "Ocultar cogitacin Ctrl+Mays+H" "&Info in Move History Ctrl+Shift+I" === "Info. en lista jugadas Ctrl+Mays+I" "&Send Engine Think" === "Enviar cogitaciones del motor" "E&xtended PGN Info Ctrl+Shift+X" === "Info. PGN extendida Ctrl+Mays+X" "Highlight with Arro&w" === "Iluminar con flecha" "Displa&y Logos" === "Mostrar logotipos" "One-Click Move" === "Moviemento de un click" ICS OPTIONS "ICS Options" === "Opciones ICS" "&Auto Comment" === "&Auto-comentario" "Auto &Observe" === "Auto-&Observar" "&Get Move List" === "L&eer lista jugadas" "&Local Line Editing" === "Edicin de lnea &local" "&Quiet Play" === "Jugar en s&ilencio" "&Premove" === "&Moviemento prev." "&White first move" === "1er. mov. &blancas" "&Black first move" === "1er. mov. &negras" "&Sound alarm at" === "&Sonar alarma en" "seconds" === "segundos" "Choose..." === "Escoger..." "Do ¬ colorize messages" === "N&o colorear mensajes" "&Auto Kibitz" === "&Auto Kibitz" "Auto Kibit&z" === "Auto Kibit&z" "See&k Graph" === "&Buscar grfica" "auto-&Refresh" === "auto-&Refresco" "Bckgnd Obser&ve" === "M&irar en el fondo" "&Dual Board" === "Tablero &dual" "One-Click &Move" === "&Moviemento de un click" "Background..." === "Fondo..." "&Defaults..." === "&Por defecto..." "Startup &Chat Boxes:" === "Cajones de pltica:" "General" === "General" BOARD OPTIONS ## (NOTE: AllWhite uses the white pieces for both sides ## FlipBlack plots the black pieces upside down) "Board Options" === "Opciones de tablero" "Defaults" === "Por defecto" "Light Squares" === "Cuadros claros" "Dark Squares" === "Cuadros obscuros" "White Pieces" === "Piezas blancas" "Black Pieces" === "Piezas negras" "Square Highlights" === "Cuadro iluminado" "Premove Highlights" === "Iluminacin pre.mov." "Monochrome" === "Monocromo" "All White" === "Slo blancas" "Flip Black" === "Girar negras" "Size" === "Tamao" BOARD SIZES ## This is a space for imagination (useful note to add to lang450.txt). "&Tiny" === "&Infimo" "T&eeny" === "Dimin&uto" "&Dinky" === "&Pigmeo" "&Petite" === "E&nano" "Sl&im" === "Pequein" "&Small" === "Pe&queo" "Medi&ocre" === "Medio&cre" "&Middling" === "Esca&so" "&Average" === "Ra&zonable" "Mode&rate" === "Mode&rado" "Medi&um" === "&Medio" "Bul&ky" === "Apara&toso" "&Large" === "&Grande" "&Big" === "&Enorme" "&Huge" === "Inmen&so" "&Giant" === "Gigante" "&Colossal" === "Colos&al" "Tita&nic" === "Titnico" FONTS "Fonts" === "Tipografa" "Current Board Size" === "Tamao actual del tablero" "All Board Sizes" === "Todos los tamaos de tablero" "&Revert to Defaults" === "&Volver a por defecto" "Clocks" === "Relojes" "Messages" === "Mensajes" "Coordinates" === "Coordenadas" "Tags" === "Circunstancias" "Comments" === "Comentarios" "I C S Interaction" === "Interaccin ICS" "&Color..." === "&Color..." "Move History, Engine Output" === "Lista jugadas, salida motor" ADJUDICATIONS DIALOG "Adjudications" === "Adjudicaciones" "Ponder Next Move" === "Prever siguente jugada" "Enable and Show Thinking (recommended)" === "Activa y muestra cogitaciones(recomendado)" "Hide Thinking when Playing against Human" === "Ocultar cogitaciones al jugar contra humano" "Periodic Updates (for Analysis Mode)" === "Actualizacin peridica (en anlisis)" "Adjudications in non-ICS games" === "Adjudicaciones en juegos no-ICS" "Adjudicate draw after:" === "Adjudicar mate despus de:" "moves" === "jugadas" "Win/loss adjudication threshold:" === "Lmite para adjudicar juego:" "centipawns" === "centipeones" "&Verify Engine Claims" === "&Verificar avisos del motor" "Detect &Mates" === "Detectar &mates" "Draw if &Insufficient Material" === "Tablas si hay material &insufficiente" "Adjudicate &Trivial Draws" === "Adjudicar tablas &triviales" "Apply" === "Aplicar" "-move rule" === "-jugadas (regla)" "-fold repeats" === "-veces (repeticin)" "Engine #1 Score is Absolute" === "Puntuacin motor #1 es absoluta" "Engine #2 Score is Absolute" === "Puntuacin motor #2 es absoluta" COMMON ENGINE DIALOG "Common Engine Settings" === "Configuracin comn de motor" "Polyglot Directory:" === "Carpeta Polyglot:" "Hash Size (MB):" === "Tamao hash (MB):" "EGTB Path:" === "Carpeta EGTB:" "EGTB Size (MB):" === "Tamao EGTB (MB):" "Use Book:" === "Usar libro:" "Max nr of CPUs:" === "Nmero max. CPUs:" "First has Own Book" === "Primero tiene libro propio" "Second has Own Book" === "Segundo tiene libro propio" "Book Depth:" === "Profundo libro:" "Book Variation:" === "Variacin libro:" "Default Match Games:" === "Partidas torneo p/def" NEW-VARIANT DIALOG ## (NOTE: the 'holdings' are the pieces standing next to the board ('in hand') "Variants" === "Variantes" "Variant" === "Variante" "Board size:" === "Tamao de tablero" "ranks" === "columnas" "files" === "filas" "Holdings with room for:" === "Admitir en mano hasta:" "pieces" === "piezas" "('-1' means defaults for selected variant)" === "('-1' indica valor por defecto para variante seleccionada)" VARIANT NAMES: "&normal" === "&normal" "&FRC" === "" "&wildcastle" === "" "&nocastle" === "" "&losers" === "" "&giveaway" === "" "s&uicide" === "s&uicida" "&3Check" === "" "&twokings" === "" "&atomic" === "&atmico" "cra&zyhouse" === "" "&bughouse" === "" "&Twilight" === "" "&shogi" === "" "su&per" === "" "&knightmate" === "" "&Berolina" === "" "c&ylinder" === "c&ilindro" "&fairy" === "" "&makruk" === "" "&gothic" === ">ico" "&capablanca" === "" "&Janus" === "" "&CRC" === "" "&Falcon" === "" "cou&rier" === "" "&Great" === "" "&Shatranj" === "" "&xiangqi" === "" NEW SHUFFLE GAME "New Shuffle Game" === "Nueva partida revuelta" "&Start Position Number:" === "Nm. de pos. inicial:" "Random" === "Aleatorio" GAME-LIST OPTIONS DIALOG "Game List Options" === "Opciones de lista de partidas" "PGN &Tags:" === "&Etiquetas PGN:" "&Up" === "&Arriba" "&Down" === "A&bajo" "Default" === "Por defecto" "Factory" === "De fbrica" "Restore to:" === "Restaurar a" MOVE HISTORY WINDOW "Move History" === "Lista de jugadas" EVALUATION GRAPH "Evaluation Graph" === "Grfica de evaluacin" ENGINE OUTPUT WINDOW "Engine output" === "Salida de motores" "Engine #1" === "Motor #1" "NPS" === "NPS" "Engine #2" === "Motor #2" CHAT BOXES "Chat Window" === "Ventana de pltica" "Chat partner:" === "Quin platica:" "Clear" === "Limpiar" "Send" === "Enviar" winboard.c "&File" === "&Archivo" "&Edit" === "&Editar" "&View" === "&Ver" "&Mode" === "&Modo" "&Action" === "&Partida" "E&ngine" === "Moto&r" "&Step" === "&Jugada" "&Options" === "&Opciones" "&Help" === "Ay&uda" "Font name too long:" === "Nombre tipogrfico muy largo:" "Font point size missing:" === "Falta tamao tipogrfico:" "Can't parse color name %s" === "No se pudo analizar nombre de color %s" "Unrecognized board size value" === "Valor no reconocido de tamao de tablero" "Unrecognized argument" === "Parametro no reconocido" "No value provided for argument" === "No se dio valor para parametro" "Incomplete \\ escape in value for" === "Escape \\ incompleto en valor para" "Failed to open indirection file" === "Falla al abrir archivo de indireccin" "Unrecognized boolean argument value" === "Valor no reconocido para parametro booleano" "Unrecognized argument" === "Parametro no reconocido" "Too many colors" === "Demasiados colores" "&Minimize\tCtrl+F4" === "&Minimizar\tCtrl+F4" "White: %s" === "Blancas: %s" "We only care about the height here" === "Aqu solo importa la altura" "Cannot build game list" === "No se pudo armar lista de partidas" "Load Game from File" === "Leer partida desde archivo" "Load Position from File" === "Leer posicin desde archivo" "Save Game to File" === "Salvar partida a archivo" "Save Position to File" === "Salvar posicin a archivo" "%s does not support analysis" === "%s no admite anlisis" "Analyze Game from File" === "Analizar juego desde archivo" "Unable to activate help" === "No se pudo activar la ayuda" "Send to chess program:" === "Enviar al programa de ajedrez:" "Send to second chess program:" === "Enviar al segundo programa de ajedrez:" "Direct Command" === "Orden directa" "Error loading sound %s" === "Error al cargar sonido %s" "Error playing sound %s" === "Error al ejecutar sonido %s" "File open failed" === "Falla al abrir archivo" "Internal error in file dialog box" === "Error interno en archivo de caja de dilogo" "Option Error" === "Error de opcin" "Choose an option, or cancel to exit" === "Escoja una opcin o cancelar para salir" "Unable to activate help" === "Imposible activar ayuda" "Displayed move is not current" === "La jugada ilustrada no es la actual" "Could not parse move" === "No se pudo analizar la jugada" "%s:\nError code %d" === "%s:\nCdigo de error %d" "Error" === "Error" "Fatal Error" === "Error fatal" "Exiting" === "Saliendo" "%s:\nError code %d" === "%s:\nCdigo de error %d" "Note" === "Nota" "Error writing to chess program" === "Error al escribir al programa de ajedrez" "User" === "Usuario" "Unknown" === "Desconocido" "White" === "Blancas" "Black" === "Negras" "Save Game to File" === "Salvar partida en archivo" "Not implemented" === "No implementado" "Shout Text" === "Texto Shout" "SShout/CShout" === "" "Channel 1 Text" === "Texto canal 1" "Channel Text" === "Texto de canal" "Kibitz Text" === "Texto kibitz" "Tell Text" === "Texto tell" "Challenge Text" === "Texto desafo" "Request Text" === "Texto de pedido" "Seek Text" === "Texto de bsqueda" "Normal Text" === "Texto normal" "None" === "Ninguno" "Pawn" === "Pen" "Knight" === "Caballo" "Bishop" === "Alfil" "Rook" === "Torre" "Queen" === "Dama" "Information" === "Informacin" wclipbrd.c "Unable to convert position to FEN." === "Imposible convertir posicin a FEN." "Unable to copy FEN to clipboard." === "Imposible copiar FEN a portapapeles." "Cannot create temporary file name." === "No se pudo crear nombre de archivo temporal" "Cannot open temporary file." === "No se pudo abrir archivo temporal" "Cannot write to temporary file." === "No se pudo escribir a archivo temporal" "Cannot reopen temporary file." === "No se pudo reabrir archivo temporal" "Cannot determine size of file." === "No se pudo determinar el tamao del archivo" "Cannot allocate clipboard buffer." === "No se pudo asignar buffer para el portapapeles" "Cannot read from temporary file." === "No se pudo leer de archivo temporal" "Error reading from temporary file." === "Error al leer de archivo temporal" "Cannot copy text to clipboard" === "No se pudo copiar texto al portapapeles" "Unable to allocate memory for clipboard." === "Imposible asignar memoria para el portapapeles" "Unable to lock clipboard memory." === "Imposible proteger memoria del portapapeles" "Cannot unlock clipboard memory." === "Imposible desproteger memoria del portapapeles" "Cannot open clipboard." === "No se puede abrir el portapapeles" "Cannot empty clipboard." === "No se puede vaciar el portapapeles" "Cannot copy text to clipboard." === "No se puede copiar texto al portapapeles" "Cannot close clipboard." === "No se puede cerrar el portapapeles" "Unable to paste FEN from clipboard." === "Imposible pegar FEN desde el portapapeles." "Unable to create temporary file." === "Imposible crear archivo temporal." "Error writing to temporary file." === "Error al escribir a archivo temporal." "Unable to open clipboard." === "Imposible abrir el portapapeles" "No text in clipboard." === "No hay texto en el portapapeles." "Unable to lock clipboard memory." === "Imposible proteger memora del portapapeles" "Unable to allocate memory for text string." === "Imposible asignar memoria para cadena de texto" "Unable to unlock clipboard memory." === "Imposible desproteger memoria del portapapeles" "Unable to close clipboard." === "Imposible cerrar portapapeles" woptions.c ## "Move" === "Jugada" ## "Bell" === "Campana" ## "ICS Alarm" === "Alarma ICS" ## "ICS Win" === "Gana ICS" ## "ICS Loss" === "Pierde ICS" ## "ICS Draw" === "Empate ICS" ## "ICS Unfinished" === "Sin terminar ICS" ## "Shout" === "" ## "SShout/CShout" === "" ## "Channel 1" === "Canal 1" ## "Channel" === "Canal" ## "Kibitz" === "Kibitz" ## "Tell" === "Decir" ## "Challenge" === "Desafiar" ## "Request" === "Pedir" ## "Seek" === "Buscar" "Browse for Sound File" === "Buscar archivo de audio" "Can't parse com port settings" === "No se puede leer configuracin de puerta COM" "Option Error" === "Error de opcin" "Invalid data rate" === "Velocidad incorrecta" "Option Error" === "Error de opcin" "Failed to set comm port state;\r\ninvalid options?" === "Falla al poner estado de puerta de comunicaciones;\r\nopciones invlidas?" "Failed to set comm port state" === "Falla al poner estado de puerta de comunicaciones" "Invalid load game step rate" === "Velocidad de paso invlida para leer partida" "Invalid save game file name" === "Nombre de archivo invlido para salvar partida" "Browse for Auto Save File" === "Buscar el archivo de salvado automtico" "Invalid moves per time control" === "Control invlido de jugadas por tiempo" "Invalid minutes per time control" === "Control invlido de minutos por tiempo" "Invalid increment" === "Incremento invlido" "Invalid initial time" === "Tiempo inicial invlido" "Changing time control during a game is not implemented" === "No est implementado cambiar el control de tiempo durante un juego" "Variant %s not supported by %s" === "La variante %s no es admitida por %s" "Warning: second engine (%s) does not support this!" === "Advertencia: el segundo motor (%s) no admite esto!" "Invalid ICS Alarm Time" === "Tiempo de alarma ICS invlido" "Invalid max time per move" === "Tiempo mximo por jugada es invlido" "Invalid time-odds factor" === "Factor de tiempo es invlido" "Choose Folder" === "Escoja carpeta" "Choose Book" === "Escoja libro" "Choose Polyglot Directory" === "Escoja directorio Polyglot" "Choose EGTB Directory:" === "Escoja directorio EGTB" "Polyglot was not found in the specified folder!" === "Polyglot no fue encontrado en la carpeta especificada!" wgamelist.c "No game selected" === "Ninguna partida seleccionada" "Can't go forward any further" === "Ya no se puede ir ms adelante" "Can't back up any further" === "Ya no se puede ir ms atrs" "No game list" === "No hay lista de partidas" "Game List" === "Lista de partidas" "Game list not loaded or empty" === "Lista de partidas no cargada o vaca" "%s - %d/%d games" === "%s - %d/%d partidas" wedittags.c "Edit Tags" === "Editar circunstancias" "Tags" === "Etiquetas" "Error replacing tags." === "Error al reemplazar etiquetas" wsettings.c "%s Engine Settings (%s)" === "Config. motor %s (%s)" "OK" === "Aceptar" "Cancel" === "Cancelar" backend.c "bad timeControl option %s" === "opcin timeControl incorrecta %s" "bad searchTime option %s" === "opcin searchTime incorrecta %s" ## Note that translation cannot be "primero" because it is for a composed string, check ahead "first" === "primer" "second" === "segundo" "protocol version %d not supported" === "versin %d del protocolo no es admitida" "Variant %s supported only in ICS mode" === "La variante %s solo se admite en modo ICS" "Unknown variant name %s" === "Nombre de variante desconocido %s" "Starting chess program" === "Iniciando programa de ajedrez" "Could not open comm port %s" === "No se pudo abrir la puerta de comunicaciones %s" "Could not connect to host %s, port %s" === "No se pudo conectar al servidor %s, puerta %s" "Unknown initialMode %s" === "Modo inicial desconocido %s" "Can't have a match with no chess programs" === "No se puede tener una partida sin programas de ajedrez" "Bad game file" === "archivo de partidas incorrecto" "Bad position file" === "archivo de posicin incorrecto" "AnalyzeFile mode requires a game file" === "El modo anlisis de archivo requiere un archivo de partida" "Analysis mode requires a chess engine" === "El modo de anlisis requiere un motor de ajedrez" "Analysis mode does not work with ICS mode" === "El modo de anlisis no funciona con el modo ICS" "MachineWhite mode requires a chess engine" === "El modo de mquina con blancas requiere un motor de ajedrez" "MachineWhite mode does not work with ICS mode" === "El modo de mquina con blancas no funciona con el modo ICS" "MachineBlack mode requires a chess engine" === "El modo de mquina con negras requiere un motor de ajedrez" "MachineBlack mode does not work with ICS mode" === "El modo de mquina con negras no funciona con el modo ICS" "TwoMachines mode does not work with ICS mode" === "El modo de dos mquinas no funciona con el modo ICS" "TwoMachines mode requires a chess engine" === "El modo de dos mquinas requiere un motor de ajedrez" "Training mode requires a game file" === "El modo de entrenamiento requiere un archivo de partidas" "Error writing to ICS" === "Error al escribir a ICS" "Error reading from keyboard" === "Error al leer el teclado" "Got end of file from keyboard" === "Se obtuvo del teclado un fin de archivo" "Error writing to ICS" === "Error al escribir a ICS" "Error writing to display" === "Error al escribir a la pantalla" "Error gathering move list: two headers" === "Error al recolectar lista de jugadas: dos encabezados" "Error gathering move list: nested" === "Error al recolectar lista de jugadas: anidado" "Connection closed by ICS" === "Conexin cerrada por ICS" "Error reading from ICS" === "Error al leer de ICS" "Failed to parse board string:\n\"%s\"" === "Falla al analizar cadena de tablero:\n\"%s\"" "Game too long; increase MAX_MOVES and recompile" === "Juego demasiado largo; incremente MAX_MOVES y recompile" "Error gathering move list: extra board" === "Error al recolectar lista de jugadas: tablero extra" "Illegal move \"%s\" from ICS" === "Jugada ilegal \"%s\" de ICS" "Couldn't parse move \"%s\" from ICS" === "No se pudo analizar jugada \"%s\" de ICS" ## 'say' must not be translated (add this comment to lang450.txt) "say Internal error; bad moveType %d (%d,%d-%d,%d)" === "say Error interno; moveType incorrecto %d (%d,%d-%d,%d)" "You are playing Black" === "Usted juega negras" "You are playing White" === "Usted juega blancas" "It is White's turn" === "Turno de las blancas" "It is Black's turn" === "Turno de las negras" "Displayed position is not current" === "La posicin mostrada no es la actual" "Illegal move" === "Jugada ilegal" "End of game" === "Fin del juego" "Incorrect move" === "Jugada incorrecta" ## Second %s is translated 'first' or 'second'. (add this comment to lang450.txt) "Illegal move \"%s\" from %s machine" === "Jugada ilegal \"%s\" del %s motor" "Forfeit due to illegal move" === "Detenido por jugada ilegal" "%s does not support analysis" === "%s no admite anlisis" ## Second %s is translated 'first' or 'second' (add this comment to lang450.txt) "Illegal move \"%s\" (rejected by %s chess program)" === "Jugada ilegal \"%s\" (rechazada por %s programa de ajedrez)" ## First %s is translated 'first' or 'second' (add this comment to lang450.txt) "Failed to start %s chess program %s on %s: %s\n" === "Falla al iniciar %s programa de ajedrez %s en %s: %s\n" "Hint: %s" === "Sugerencia: %s" "Machine accepts your draw offer" === "La mquina acepta su oferta de tablas" "Machine offers a draw\nSelect Action / Draw to agree" === "La mquina ofrece tablas\nSeleccione accin / Tablas para acordar" "%s (only move)" === "%s (jugada nica)" "Ambiguous move in ICS output: \"%s\"" === "Jugada ambigua en salida ICS: \"%s\"" "Illegal move in ICS output: \"%s\"" === "Jugada ilegal en salida ICS: \"%s\"" "Gap in move list" === "Hueco en lista de jugadas" "Game too long; increase MAX_MOVES and recompile" === "Juego demasiado largo; incremente MAX_MOVES y recompile" "Variant %s not supported by %s" === "Variante %s no es admitida por %s" "Startup failure on '%s'" === "Falla al iniciar '%s'" "Waiting for first chess program" === "Esperando al primer programa de ajedrez" "Waiting for second chess program" === "Esperando al segundo programa de ajedrez" "Match %s vs. %s: final score %d-%d-%d" === "Partida %s vs. %s: puntuacin final %d-%d-%d" "Stalemate" === "Mate ahogado" "Illegal move: %d.%s%s" === "Jugada ilegal: %d.%s%s" "Ambiguous move: %d.%s%s" === "Jugada ambigua: %d.%s%s" "Can't open \"%s\"" === "No se puede abrir \"%s\"" "Cannot build game list" === "No se puede armar lista de partidas" "No more games in this message" === "No hay ms partidas en este mensaje" "No game has been loaded yet" === "Ninguna partida se ha cargado an" "Can't back up any further" === "No se puede ir ms atrs" "Game number out of range" === "Nmero de partida fuera de rango" "Can't seek on game file" === "No se puede buscar en archivo de partidas" "Game not found in file" === "Partida no hallada en archivo" "Bad FEN position in file" === "Posicin FEN incorrecta en archivo" "No moves in game" === "Ninguna jugada en la partida" "No position has been loaded yet" === "Ninguna posicin se ha cargado an" "Can't back up any further" === "No se puede ir ms atrs" "Can't open \"%s\"" === "No se puede abrir \"%s\"" "Can't seek on position file" === "No se puede buscar en archivo de partidas" "Position not found in file" === "No se hall la posicin en el archivo" "Bad FEN position in file" === "Posicin FEN incorrecta en archivo" "Black to play" === "Las negras juegan" "White to play" === "Las blancas juegan" "Can't open \"%s\"" === "No se puede abrir \"%s\"" "You have edited the game history.\nUse Reload Same Game and make your move again." === "Usted edit la lista de jugadas.\nUtilice Recargar misma partida y realice su jugada de nuevo." "You have entered too many moves.\nBack up to the correct position and try again." === "Usted entr demasiados jugadas.\nRetroceda a la posicin correcta y vuelva a intentar" "Displayed position is not current.\nStep forward to the correct position and try again." === "La posicin ilustrada no es la actual.\nAdelante a la posicin correcta y vuelva a intentar." "You have not made a move yet" === "Usted todava no hace una jugada" "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." === "El mensaje cmail no est cargado.\nUtilice Reload CMail Message y realice su jugada de nuevo." "No unfinished games" === "No hay partidas sin terminar" "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." === "Usted ya envi una jugada.\nEspere hasta que llegue una jugada de su oponente.\nPara reenviar la misma jugada, teclee\n\"cmail -remail -game %s\"\nen la lnea de comandos." "Failed to invoke cmail" === "Falla al invocar cmail" "Waiting for reply from opponent\n" === "Esperando respuesta del oponente\n" "Still need to make move for game\n" === "Todava necesita hacer una jugada para la partida\n" "Still need to make moves for both games\n" === "Todava necesita hacer jugadas para ambas partidas\n" "Still need to make moves for all %d games\n" === "Todava necesita hacer jugadas para las %d partidas\n" "Still need to make a move for game %s\n" === "Todava necesita hacer una jugada para la partida %s\n" "No unfinished games\n" === "No hay juegos sin terminar\n" "Ready to send mail\n" === "Listo para enviar correo\n" "Still need to make moves for games %s\n" === "Todava necesita hacer jugadas para las partidas %s\n" "Edit comment" === "Editar comentario" "Edit comment on %d.%s%s" === "Editar comentario en %d.%s%s" "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis." === "Comenzando modo de anlisis...\nSi este mensaje permanece, su programa de ajedrez no admite anlisis." "It is not White's turn" === "No es turno de las blancas" "It is not Black's turn" === "No es turno de las negras" "Wait until your turn,\nor select Move Now" === "Espere su turno,\no seleccione Forzar Jugada" "Starting second chess program" === "Comenzado el segundo programa de ajedrez" "Training mode off" === "Modo de entrenamiento apagado" "Training mode on" === "Modo de entrenamiento activo" "Already at end of game" === "Ya se encuentra al final de la partida" "Warning: You are still playing a game" === "Advertencia: Usted todava est jugando una partida" "Warning: You are still observing a game" === "Advertencia: Usted todava est observando una partida" "Warning: You are still examining a game" === "Advertencia: Usted todava est examinando una partida" "It is Black's turn" === "Es turno de las negras" "It is White's turn" === "Es turno de las blancas" "That square is occupied" === "Ese cuadro est ocupado" "There is no pending offer on this move" === "No hay oferta pendiente para esta jugada" "Your opponent is not out of time" === "Su oponente no est fuera de tiempo" "Black offers a draw" === "Las negras ofrecen tablas" "White offers a draw" === "Las blancas ofrecen tablas" "You must make your move before offering a draw" === "Debe hacer su jugada antes de ofrecer tablas" "You are not examining a game" === "Usted no est examinando una partida" "You can't revert while pausing" === "No puede revertir si est en pausa" "Wait until your turn,\nor select Move Now" === "Espere su turno,\no seleccione Forzar Jugada" "It is your turn" === "Es su turno" "Wait until your turn" === "Espero su turno" "No hint available" === "No hay sugerencia disponible" ## First %s is translated 'first' or 'second' (add this comment to lang450.txt) "Error writing to %s chess program" === "Error al escribir al %s programa de ajedrez" ## First %s is translated 'first' or 'second' (add this comment to lang450.txt) "Error: %s chess program (%s) exited unexpectedly" === "Error: el %s programa de ajedrez (%s) termin inesperadamente" ## First %s is translated 'first' or 'second' (add this comment to lang450.txt) "Error reading from %s chess program (%s)" === "Error al leer del %s programa de ajedrez (%s)" "Analysis (%s)" === "Anlisis (%s)" "Comment" === "Comentario" "Comment on %d.%s%s" === "Comentario de %d.%s%s" "Both flags fell" === "Ambas banderas cayeron" "White's flag fell" === "La bandera blanca cay" "Black's flag fell" === "La bandera negra cay" "Bad FEN position in clipboard" === "Posicin FEN incorrecta en portapapeles" "No response from ICS" === "No hay respuesta de ICS" "You cannot do this while you are playing or observing" === "Usted no puede hacer esto mientras juega u observa" "Click in holdings to choose piece" === "Haga click para escoger pieza" END-OF-GAME MESSAGES "Game aborted" === "Partida abortada" "White wins on time" === "Las blancas ganan por tiempo" "Black wins on time" === "Las negras ganan por tiempo" "Both players ran out of time" === "Ambos jugadores se quedaron sin tiempo" "White resigns" === "Las blancas se resignan" "Black resigns" === "Las negras se resignan" "White mates" === "Las blancas dan mate" "Black mates" === "Las negras dan mate" "Draw" === "Tablas" "Draw agreed" === "Tablas acordadas" "Xboard adjudication: King destroyed" === "XBoard adjudica: Rey destruido" "Xboard adjudication: Bare king" === "XBoard adjudica: Rey solitario" "Xboard adjudication: 3rd check" === "XBoard adjudica: 3er. jaque" "Xboard adjudication: Stalemate" === "XBoard adjudica: Mate ahogado" "Xboard adjudication: Checkmate" === "XBoard adjudica: Jaquemate" "Xboard adjudication: Insufficient mating material" === "XBoard adjudica: Material insuficiente para dar mate" "Xboard adjudication: Trivial draw" === "XBoard adjudica: Tablas triviales" "XBoard adjudication: repetition draw" === "XBoard adjudica: Tablas por repeticin" "Xboard adjudication: perpetual checking" === "XBoard adjudica: Jaque perpetuo" "Xboard adjudication: perpetual chasing" === "XBoard adjudica: Persecucin perpetua" "%Xboard adjudication: perpetual chasing of" === "XBoard adjudica: Persecucin perpetua" "Xboard adjudication: 50-move rule" === "XBoard adjudica: regla de las 50 jugadas" "Draw claim: 50-move rule" === "Pide tablas: regla de las 50 jugadas" "Draw claim: 3-fold repetition" === "Pide tablas: 3 repeticiones de posicin" "Draw claim: insufficient mating material" === "Pide tablas: material insuficiente para dar mate" "Xboard adjudication: long game" === "XBoard adjudica: juego largo" "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d" === "XBoard: Perdido por jugada invlida: %s (%c%c%c%c) res=%d" "Xboard: Forfeit due to illegal move: %s (%c%c%c%c)%c" === "XBoard: Perdido por jugada ilegal: %s (%c%c%c%c)%c" "Xboard adjudication" === "XBoard adjudica" "User adjudication" === "El usuario adjudica" "False win claim: '%s'" === "Falso aviso de ganar: '%s'" "False draw claim: '%s'" === "Falso aviso de tablas: '%s'" "xboard exit" === "XBoard termina" ## One forgetted string (remove comment if added to lang450.txt) "Type in your name" === "Introduzca su nombre" "You can only start a match from the initial position" === "Slo se puede iniciar un torneo desde la posicin inicial" xboard-4.9.1/winboard/language/nederlands.lng0000644000175000001440000015162412717001265016144 00000000000000## WinBoard language file ## ## Dutch / Nederlands ## v1.2 ## ## Translation by H.G.Muller (July 19, 2011) ## Vertaald door H.G.Muller (19 juli 2011) ## http://www.open-aurec.com/wbforum ## 3-oct-2011. H.G.Muller. Added a few missing translations. ## 7-oct-2011. H.G.Muller. Redid Load Options dialog, new Tournament dialog strings ## 10-feb-2012. H.G.Muller. Added some strings in Load Engine, Tournament and Board dialogs ## 1-feb-2010. H.G.Muller. Added new strings for version 4.7.0 ## ## If you revise this, please insert your date, name and description. ## AUB uw naam en datum hierboven bijschrijven als u dit bestand bijwerkt ## winboard.rc MENUS: ## Pleace keep the accelerator-key indications on the menu items, and keep ## the keystrokes the same (for now). (Alt, Ctrl and Shift can be translated.) "&New Game\tCtrl-N" === "&Nieuwe partij\tCtrl-N" "New Sh&uffle Game..." === "Openingsstelling Sch&udden..." "New &Variant...\tAlt+Shift+V" === "Nieuwe Schaak&variant...\tAlt+Shift+V" "&Load Game...\tCtrl-O" === "Partij &Inlezen...\tCtrl-O" "&Save Game...\tCtrl-S" === "Partij &Opslaan...\tCtrl-S" "L&oad Position...\tCtrl+Shift+O" === "Stelling In&lezen...\tCtrl+Shift+O" "S&ave Position...\tCtrl+Shift+S" === "Stelling Op&slaan...\tCtrl+Shift+S" "Save as &Diagram..." === "Opslaan als &Diagram" "&Quit" === "&Afsluiten" ## Next six currently not used "Load &Next Game\tAlt+PgDn" === "" "Load &Previous Game\tAlt+PgUp" === "" "&Reload Same Game" === "" "Load N&ext Position\tAlt+Shift+PgDn" === "Vol&gende stelling\tAlt+Shift+PgDn" "Load Pre&vious Position\tAlt+Shift+PgUp" === "Vo&rige Stelling\tAlt+Shift+PgUp" "Reload Sa&me Position" === "" "&Copy Game To Clipboard\tCtrl+C" === "Partij &Kopiren\tCtrl+C" "C&opy Position To Clipboard\tCtrl+Shift+C" === "Stelling K&opiren\tCtrl+Shift+C" "Copy Game List to Clipboard" === "Partijenover&zicht Kopiren" "&Paste Game From Clipboard\tCtrl+V" === "Partij &Plakken\tCtrl+V" "P&aste Position From Clipboard\tCtrl+Shift+V" === "Stelling P&lakken\tCtrl+Shift+V" "&Edit Game\tCtrl+E" === "Partij &Bewerken\tCtrl+E" "E&dit Position\tCtrl+Shift+E" === "Stelling B&ewerken\tCtrl+Shift+E" "Edit Ta&gs..." === "P G N &Titels Bewerken..." "Edit Co&mment..." === "&Commentaar Bewerken..." "Enter &Username..." === "Gebruikers&naam Invoeren..." "&Revert\tHome" === "&Herstel Vorige Variant" "&Annotate" === "Becommentarier met &Variant" "&Truncate Game\tEnd" === "Partij &Afkappen\tEnd" "&Backward\tAlt+Left" === "Stap Te&rug\tAlt+Left" "&Forward\tAlt+Right" === "Stap &Vooruit\tAlt+Right" "Back to &Start\tAlt+Home" === "Naar Be&gin\tAlt+Home" "For&ward to End\tAlt+End" === "Naar Ein&d\tAlt+End" "Flip &View\tF2" === "Bord &Omdraaien\tF2" "&Swap Clocks" === "&Klokken Verwisselen" "Engine &Output\tAlt+Shift+O" === "O&verwogen Zetten\tAlt+Shift+O" "Move &History\tAlt+Shift+H" === "&Zettenlijst\tAlt+Shift+H" "Evaluation &Graph\tAlt+Shift+E" === "&Scoregrafiek\tAlt+Shift+E" "Game &List\tAlt+Shift+G" === "&Partijenoverzicht\tAlt+Shift+G" "Open &New Chat Window" === "Open &Nieuw Kwebbelvenster" "Type In &Move...\tAlt+I" === "Zet &Intypen...\tAlt+I" "&Tags" === "P G N &Titels" "&Comments" === "&Commentaar" "&Game List Tags..." === "Partijenove&rzicht titels..." "&Board..." === "Schaak&bord..." "&Fonts..." === "&Lettertypen..." "Machine &White\tCtrl+W" === "Computer &Wit\tCtrl+W" "Machine &Black\tCtrl+B" === "Computer &Zwart\tCtrl+B" "&Two Machines\tCtrl+T" === "&Twee Programma's\tCtrl+T" "Machine Both" === "" "&Analysis Mode\tCtrl+A" === "&Analyseren\tCtrl+A" "Analyze &File\tCtrl+F" === "Bestan&d Analyseren\tCtrl+F" "&Edit Game\tCtrl+E" === "Partij &Bewerken\tCtrl+E" "E&dit Position\tCtrl+Shift+E" === "Stelling B&ewerken\tCtrl+Shift+E" "Trai&ning" === "T&raining" "&ICS Client" === "&Internet Verbinding" "&Machine Match" === "&Computer Tweekamp" "&Pause\tPause" === "&Pauze\tPause" "&Accept\tF3" === "&Accepteer Uitdaging\tF3" "D&ecline\tF4" === "&Uitdaging afwijzen\tF4" "Re&match\tF12" === "&Opnieuw Uitdagen\tF12" "Call &Flag\tF5" === "&Vlag Gevallen\tF5" "&Draw\tF6" === "&Remise Aanbieden\tF6" "Ad&journ\tF7" === "A&fbreken\tF7" "A&bort\tF8" === "&Beindigen\tF8" "&Resign\tF9" === "&Geef Op\tF9" "Stop &Observing\tF10" === "&Stop met Toekijken\tF10" "Stop E&xamining\tF11" === "Stop met Anal&yseren\tF11" "&Upload to Examine" === "&Partij Overzenden" "Adjudicate to &White" === "Arbitreer Winst &Wit" "Adjudicate to &Black" === "Arbitreer Winst &Zwart" "Adjudicate &Draw" === "Arbitreer Re&mise" "Install 1st..." === "Installeer &eerste" "Install 2nd..." === "Installeer t&weede" "Engine #&1 Settings..." === "Programma #&1 Instellingen" "Engine #&2 Settings..." === "Programma #&2 Instellingen" "&Hint..." === "&Hint" "&Book..." === "&Boekzetten" "&Move Now\tCtrl+M" === "&Zet Onmiddelijk" "&Retract Move\tCtrl+X" === "Zet &Terugnemen" "&Mute all Sounds" === "Geluid &Uit" "&General..." === "&Algemeen..." "&Time Control...\tAlt+Shift+T" === "Speel&duur...\tAlt+Shift+T" "Common &Engine...\tAlt+Shift+U" === "&Globale Engine...\tAlt+Shift+U" "Ad&judications...\tAlt+Shift+J" === "Ar&bitrage...\tAlt+Shift+J" "&Load Game...\tAlt+Shift+L" === "&Inlees...\tAlt+Shift+L" "&Save Game...\tAlt+Shift+S" === "&Opslag...\tAlt+Shift+S" "G&ame List..." === "&Partijenoverzicht..." "Soun&ds..." === "Ge&luiden..." "&ICS..." === "Internet &Schaakdiensten" "Add ICS..." === "Internet Schaakdienst &Toevoegen" "Comm&unications..." === "&Com-poort Instellingen..." "Save Settings &Now" === "Instellingen &Nu Opslaan" "Save Settings on E&xit" === "Inste&llingen Opslaan bij Afsluiten" "Help &Contents\tF1" === "&Help Inhoud\tF1" "Help &Index" === "Help Inde&x" "How to &Use Help" === "Help &Gebruiken" "&About WinBoard" === "WinBoard &Info" "White" === "Wit" "Promote" === "Promoveer" "Pawn" === "Pion" "Knight" === "Paard" "Bishop" === "Loper" "Rook" === "Toren" "Queen" === "Dame" "King" === "Koning" ## The next 2 are pieces for Capablanca Chess. Use the names from the Wikipedia entry for this, ## rather than litteral translations of the English names! "Archbishop" === "Aartsbischop" "Chancellor" === "Kanselier" ## Next 2 Xiangqi (Chinese Chess) pieces. Google for 'Xiangqi' in the target language to get the standard translation. "Elephant" === "Olifant" "Cannon" === "Kanon" "Empty Square" === "Leeg Veld" "Black" === "Zwart" "Demote" === "Degradeer" "Clear Board " === "Leeg Bord" ## Next 3: Shogi pieces. "Gold" === "Goud" "Silver" === "Zilver" "Lance" === "Lans" "Drop" === "Inzetten" "Cop&y and Paste" === "Kopier en Plak" "&Copy" === "Kopier" "&Paste" === "Plak" "&Undo" === "Ongedaan Maken" "Cu&t" === "Knippen" "&Copy" === "Kopiren" "&Paste" === "Plakken" "Select &All" === "Alles Selecteren" DIALOGS: ABOUTBOX ## Pehaps copyright notices best left untranslated? "About WinBoard" === "Info" "OK" === "OK" "Chessboard for Windows" === "Schaakbord voor Windows" "Copyright 1991 Digital Equipment Corporation" === "" "Enhancements Copyright 1992-2014 Free Software Foundation" === "" "Enhancements Copyright 2005\r\nAlessandro Scotti" === "" ## What happened with H.G.Muller? [He sold his copyrights to FSF for $1] ## The following string of 6 spaces can be translated to an acknowledgement of the translator, ## like "Traduccin por scar Toledo G.". " " === "Nederlandse vertaling: H.G.Muller" "WinBoard 0.0.0" === "" ABOUTBOX2 ## Weird, it is needed? [Normally not. It is a built-in 'Easter Egg' joke.] "galactic" === "" TIME CONTROL DIALOG "Time Control" === "Speelduur Instellen" "Conventional chess clock" === "Klassieke Schaakklok" "Incremental clock" === "Incrementele Klok" "Cancel" === "Annuleren" ## Next is there really only for the benefit of blind users of the JAWS version... "Use arrow keys to specify which clock setting type, then press tab to alter values." === "Gebruik pijltjestoetsen om kloktype te kiezen, en dan de tabulatortoets om de waarden te veranderen" "Fixed time per move" === "Gongschaak" "Number of moves:" === "Aantal zetten:" "Within number of minutes:" === "In aantal minuten:" "Initial number of minutes:" === "Aanvangstijd (min):" "Plus number of seconds per move:" === "Plus aantal seconden per zet:" "Maximum seconds per move:" === "Maximum seconden per zet" "Time-Odds Factors:" === "Tijdvoorgift Factoren:" "Engine #1:" === "Schaakprog 1:" "Engine #2:" === "Schaakprog 2:" LOAD OPTIONS DIALOG "Load Game Options" === "Opties voor Inlezen Partijen" "Load games with &automatic stepping" === "Stap &automatisch door partij" "&seconds per move" === "&seconden per zet" "when filtering game list on position, use thresholds:" === "Gebruikte drempels bij zoeken stelling:" "Search Mode: " === "Zoekmethode:" "Match exact &position" === "Alleen e&xacte stelling" "Match if position is s&ubset" === "M&ogelijk met extra materiaal" "Match material with e&xact pawn structure" === "Zelfde materiaal, met exacte &pion opstelling" "Match &material" === "Zelfde &materiaal" "Material &range (upper board-half is optional)" === "Materiaal&interval (bovenste bordhelft optioneel)" "Material &difference (optional material balanced)" === "Materiaal&verschil (optioneel deel evenwichtig)" "Also match reversed &colors" === "Accepteer ook verwisselde &kleuren" "Also match &left-right mirror image" === "Accepteer &links-rechts spiegeling" "minimum Elo for &best player" === "minimum Elo &beste speler" "minimum Elo for &weakest players" === "minimum Elo &zwakste speler" "or later &year" === "of een later &jaar" "co&nsecutive positions" === "opee&nvolgende stellingen" SAVE OPTIONS DIALOG "Save Game Options" === "Opties voor Opslaan Partijen" "Save As: " === "Opslaan als:" "Save games automatically" === "Sla partijen automatisch op" "Prompt for filename" === "Vraag telkens om bestandsnaam" "To file:" === "Op bestand:" "PGN" === "P G N" "Old" === "Oud formaat" "Browse..." === "Bladeren..." "Save out of book info in PGN" === "Uit-boek info opslaan in P G N" 1536 ## This dialog is only used in some older Windows versions, so you might not be ableto test it. "Open" === "Open" "File &Name:" === "Bestandsnaam:" "&Directories:" === "Map" "List Files of &Type:" === "List van bestandstypen" "Dri&ves:" === "Schijf" "&Help" === "Help" "&Index number:" === "Index nummer" COMMPORT ## Always disabled if you are not actually using an ICS through a comport, so difficult to test. "Communication Port Settings" === "Communicatiepoort Instellingen" "Net&work..." === "Netwerk" "&Port:" === "Poort" "Data &Rate:" === "Data Snelheid" "Data &Bits:" === "Data Bits" "P&arity:" === "Pariteit" "&Stop Bits:" === "Stop Bits" "F&low:" === "Vloed" EDIT COMMENT "Edit Comment" === "Commentaar Bewerken" "&Clear" === "Wissen" PROMOTION POPUP "Promote to:" === "Promoveer tot:" ## next used in Shogi as promotion-popup header "Promote?" === "Promoveren?" "Promotion" === "Promotie" "&Queen" === "&Dame" "&Rook" === "&Toren" "&Bishop" === "&Loper" "K&night" === "&Paard" "&King" === "&Koning" "&Cancel" === "&Annuleren" "Chance&llor" === "Kan&selier" "&Archbishop" === "Aarts&bischop" "YES" === "&JA" "NO" === "&NEE" "C&entaur" === "&Centaur" GAME LIST "Game List" === "Partijenoverzicht" "&Load" === "&Inlezen" "&Prev" === "Vo&rige" "&Next" === "&Volgende" "&Close" === "&Sluiten" "Filter" === "&Filter" EDIT TAGS "Edit Tags" === "P G N Titels Bewerken" ERROR "ICS Interaction" === "ICS Interactie" "Dialog" === "Dialoog" "Error" === "Fout" ## I don't think the next will really appear ever. "Sorry Charlie" === "" COLORIZE "I C S Interaction Colors" === "I C S Interactie Kleuren" "Interaction Colors" === "Interactie Kleuren" "Premove" === "Voor&zet" "Alarm" === "Tijdnood Alarm" "Colors" === "Kleuren" "&Choose Color..." === "&Kies Kleur..." "&Bold" === "&Vet" "&Italic" === "&Cursief" "&Underline" === "&Onderstreep" "&Strikeout" === "&Doorstreep" QUESTION ## next one seems only a placeholder, and never appears? [might also be just a programmer's joke...] "Enter a chess engine command or just type something stupid that will completely screw things up." === "" "Question" === "Vraag" "Enter" === "" STARTUP DIALOG "WinBoard Startup" === "Opstarten WinBoard" "What would you like to do?" === "Waarvoor wilt u WinBoard gebruiken?" "&Play against a chess engine or match two engines" === "&Spelen tegen de computer, of twee programma's tegen elkaar" "&Use an Internet Chess Server" === "Een &Internet Schaakdienst gebruiken" "Just &view or edit game files" === "&Alleen partijen uit bestand bekijken of bewerken" "Specify Chess &Engines:" === "Specificeer Schaak&programma's" "Specify Chess &Server:" === "Specificeer Internet Schaak&dienst" "&Additional options" === "&Overige opties" INDEX (IN FILE-BROWSE DIALOG) "Inde&x number:" === "Inde&x nummer" MOVE TYPE-IN "Type in a move" === "Type een zet" USER-NAME TYPE-IN "Type in your name" === "Typ uw naam" SOUND DIALOG "Sounds" === "Geluid" "&Event:" === "&Gebeurtenis" "&No sound" === "&Stilte" "&Default beep" === "Standaard &piepje" "&Built-in sound:" === "&Ingebouwd geluid" "&WAV file:" === "&WAV bestand:" "B&rowse..." === "&Bladeren..." "&Play" === "&Afspelen" "&Defaults" === "Stan&daard" GENERAL OPTIONS DIALOG ## pleace keep the indication of the accelerator keys for the same keystroke ## Note: finely tuned spaces to align keys at right "General Options" === "Algemene Instellingen" "Always on &Top" === "Altijd &Voorgrond" "Always &Queen Ctrl+Shift+Q" === "Alti&jd Dame Ctrl+Shift+Q" "Animate &Dragging" === "&Sleep Stukken" "&Animate Moving Ctrl+Shift+A" === "Sch&uif Stukken Ctrl+Shift+A" "Auto &Flag Ctrl+Shift+F" === "&Automatisch Vlag Claimen Ctrl+Shift+F" "Auto Flip &View" === "Automatische Bord &Orintatie" "Auto &Raise Board" === "Automatisch naar Voorgrond" "&Blindfold" === "&Blind Schaken" "Highlight Dra&gging" === "Toon &Doelveld(en)" "Highlight Last &Move" === "Acce&ntueer Laatste Zet" "Periodic &Updates" === "Period&iek &Bijwerken" "Ponder &Next Move Ctrl+Shift+P" === "Denk in &Tijd Tegenstander Ctrl+Shift+P" "&Popup Exit Message" === "Toon &Mededeling bij Afsluiten" "Popup Move &Errors" === "Waarschuw bij &Foute Zetten" "Show Butt&on Bar" === "Toon &Knoppenpaneel" "Show &Coordinates" === "Toon Bord&cordinaten" "&Show Thinking" === "Toon Bedenksels" "Test &Legality Ctrl+Shift+L" === "&Weiger Onreglemetaire Zetten Ctrl+Shift+L" "&Hide Thinking Ctrl+Shift+H" === "Verberg &Gedachten Ctrl+Shift+H" "&Info in Move History Ctrl+Shift+I" === "Scores in Zettenlijst Ctrl+Shift+I" "&Send Engine Think" === "Rapporteer Bedenksels" "E&xtended PGN Info Ctrl+Shift+X" === "Vermeld Scores in P G N Ctrl+Shift+X" "Highlight with Arro&w" === "Accentueren met &Pijl" "Displa&y Logos" === "Toon &Logo's" "One-Click Move" === "Tu&rbo-zet" ICS OPTIONS "ICS Options" === "Instellingen Internet Schaakdienst" "&Auto Comment" === "&Commentaar opvangen" "Auto &Observe" === "&Automatisch Toekijken" "&Get Move List" === "Ophalen Zetten&lijst" "&Local Line Editing" === "&Bewerk Regels ter Plaatse" "&Quiet Play" === "&Rustig Spelen" "&Premove" === "&Voorzet" "&White first move" === "&Wit's eerste zet" "&Black first move" === "&Zwart's eerste zet" "&Sound alarm at" === "&Waarschuw bij" "seconds" === "sec" "Choose..." === "Kies..." "Do ¬ colorize messages" === "Boodschappen &niet kleuren" "&Auto Kibitz" === "Auto-Kibitz" "Auto Kibit&z" === "" "See&k Graph" === "Zoek&grafiek" "auto-&Refresh" === "Zel&f-verversend" "Bckgnd Obser&ve" === "Verdekt Toekijken" "&Dual Board" === "&Dubbel Bord" "One-Click &Move" === "&Turbo-zet" "Background..." === "Achtergrond..." "&Defaults..." === "&Standaard..." "Startup &Chat Boxes:" === "&Kwebbelvensters:" "General" === "Algemeen" BOARD OPTIONS ## (NOTE: AllWhite uses the white (outline-style) piece bitmaps for both sides ## FlipBlack draws the black pieces upside down) "Board Options" === "Schaakbord Instellingen" "Defaults" === "Standaard" "Light Squares" === "Lichte Velden" "Dark Squares" === "Donkere Velden" "White Pieces" === "Witte Stukken" "Black Pieces" === "Zwarte Stukken" "Square Highlights" === "Accentuering" "Premove Highlights" === "Accentuering Voorzet" "Monochrome" === "Zwart-Wit" "All White" === "Beiden Wit" "Flip Black" === "Zwart Omkeren" "Use Board Textures" === "Bord inkleuren" "Use Piece Font" === "Externe stukken" "Suppress Grid" === "Onderdruk belijning" "Size" === "Bordgrootte" BOARD SIZES (translate as number?) ## Don't put numbers, or nobody will translate them. [True. But do we really want them translated?] ## This is a space for imagination! "&Tiny" === "" "T&eeny" === "" "&Dinky" === "" "&Petite" === "" "Sl&im" === "" "&Small" === "" "Medi&ocre" === "" "&Middling" === "" "&Average" === "" "Mode&rate" === "" "Medi&um" === "" "Bul&ky" === "" "&Large" === "" "&Big" === "" "&Huge" === "" "&Giant" === "" "&Colossal" === "" "Tita&nic" === "" FONTS "Fonts" === "Lettertypen" "Current Board Size" === "Huidige Bordgrootte" "All Board Sizes" === "Alle Bordgroottes" "&Revert to Defaults" === "Gebruik Standaardwaarden" "Clocks" === "Klokken" "Messages" === "Mededelingen" "Coordinates" === "Cordinaten" "Tags" === "P G N Titels" "Comments" === "Commentaar" "I C S Interaction" === "I C S Interactie" "Piece Font" === "Externe stukken" "&Color..." === "Kleur..." "Move History, Engine Output" === "Zettenlijst, Overwogen Zetten" ADJUDICATIONS DIALOG "Adjudications" === "Arbitrage" "Ponder Next Move" === "Denk in Tijd Tegenstander" "Enable and Show Thinking (recommended)" === "Raporteer Bedenksels" "Hide Thinking when Playing against Human" === "Verberg Gedachten voor Gebruiker" "Periodic Updates (for Analysis Mode)" === "Periodiek Bijwerken (bij Analyse)" "Adjudications in non-ICS games" === "Arbitrage in Lokale Partijen" "Adjudicate draw after:" === "Geef Remise na:" "moves" === "zetten" "Win/loss adjudication threshold:" === "Win/verlies drempel" "centipawns" === "centi-pion" "&Verify Engine Claims" === "Controleer Partijresultaat" "Detect &Mates" === "Detecteer Mat en Pat" "Draw if &Insufficient Material" === "Remise als geen Matpotentieel" "Adjudicate &Trivial Draws" === "Arbitreer Simpele Remises" "Apply" === "Toepassen:" ## next 2 are suffixed to a text-edit containing a number (50 or 3) "-move rule" === "-zettenregel" "-fold repeats" === "-voudige herhaling" "Engine #1 Score is Absolute" === "Programma #1 geeft Score voor Wit" "Engine #2 Score is Absolute" === "Programma #2 geeft Score voor Wit" COMMON ENGINE DIALOG "Common Engine Settings" === "Globale Instellingen" "Polyglot Directory:" === "Polyglot Map:" "Hash Size (MB):" === "Tabelgrootte (MB):" "EGTB Path:" === "EGTB pad:" "EGTB Size (MB):" === "EGTB buffer (MB):" "Use Book:" === "Openingsboek:" "Max nr of CPUs:" === "Max aantal CPUs:" "First has Own Book" === "Prog #1 heeft eigen Boek" "Second has Own Book" === "Prog #2 heeft eigen Boek" "Book Depth:" === "Boekdiepte:" "Book Variation:" === "Boekvariatie:" "Default Match Games:" === "Partijen in Tweekamp" NEW-VARIANT DIALOG ## (NOTE: the 'holdings' are the pieces standing next to the board ('in hand') "Variants" === "Schaakvarianten" "Variant" === "Schaakariant" "Board size:" === "Bordgrootte:" "ranks" === "rijen" "files" === "lijnen" "Holdings with room for:" === "Ruimte voor:" "pieces" === "stukken in de hand" "('-1' means defaults for selected variant)" === "('-1' betekent standaardwaarde voor gekozen variant)" VARIANT NAMES: "&normal" === "Standard" "&FRC" === "Chess960" "&wildcastle" === "" "&nocastle" === "" "&losers" === "" "&giveaway" === "weg&gevertje" "s&uicide" === "" "&3Check" === "" "&twokings" === "" "&atomic" === "" "cra&zyhouse" === "" "&bughouse" === "doorgeefschaak" "&Twilight" === "" "Sp&artan" === "Spartaans" "&shogi" === "Japans (&shogi)" "su&per" === "Superschaak" "&knightmate" === "" "&Berolina" === "" "c&ylinder" === "cylinder" "&fairy" === "sprookjes" "&makruk" === "Thais (&makruk)" "&gothic" === "Gotisch" "&capablanca" === "" "&Janus" === "" "&CRC" === "" "&Falcon" === "" "cou&rier" === "" "&Great" === "" "&Shatranj" === "" "&xiangqi" === "Chinees (&xiangqi)" NEW SHUFFLE GAME "New Shuffle Game" === "Willekeurig Opzetten" "&Start Position Number:" === "&Nummer Beginopstelling" "Random" === "&zomaar een" GAME-LIST OPTIONS DIALOG "Game List Options" === "Partijoverzicht Opties" "PGN &Tags:" === "PGN &Titels" "&Up" === "&Op" "&Down" === "&Neer" "Default" === "&Standaard" "Factory" === "&Fabrieks" "Restore to:" === "&Herstel naar:" MOVE HISTORY WINDOW "Move History" === "Zettenlijst" EVALUATION GRAPH "Evaluation Graph" === "Scoregrafiek" ENGINE OUTPUT WINDOW "Engine Output" === "Overwogen zetten" "%s (%d reversible plies)" === "%s (%d omkeerbare zetten)" "Engine #1" === "Programma #1" "NPS" === "" "Engine #2" === "Programma #1" CHAT BOXES "Chat Window" === "Kwebbelvenster" "Chat partner:" === "&Klets met" "Clear" === "&Wis" "Send" === "&Zend" winboard.c "&File" === "&Bestand" "&Edit" === "Be&werk" "&View" === "Beel&d" "&Mode" === "&Modus" "&Action" === "&Actie" "&Step" === "&Stap" "E&ngine" === "&Schaakprog" "&Options" === "&Opties" "&Help" === "&Help" "You can only start a match from the initial position." === "Een tweekamp kan alleen starten vanuit de openingsstelling" "Font name too long:" === "" "Font point size missing:" === "" "Can't parse color name %s" === "" "Unrecognized board size value" === "Ongeldige bordgrootte" "Unrecognized argument" === "Waarde onherkenbaar" "No value provided for argument" === "Waarde van optie ontbreekt" "Incomplete \\ escape in value for" === "Onvolledige \\ in waarde van" "Failed to open indirection file" === "Openen indirectie bestand mislukt" "Unrecognized boolean argument value" === "Onherkenbare waarde" "Unrecognized argument" === "Onherkenbaar argument" "Too many colors" === "Teveel kleuren" "&Minimize\tCtrl+F4" === "&Minimaliseer\tCtrl+F4" "White: %s" === "Wit: %s" "We only care about the height here" === "Alleen de hoogte telt hier" "Cannot build game list" === "Maken van partijenoverzicht mislukt" "Load Game from File" === "Partij van bestand inlezen" "Load Position from File" === "Stelling van bestand inlezen" "Save Game to File" === "Partij opslaan in bestand" "Save Diagram to File" === "Diagram opslaan in bestand" "Save Position to File" === "Stelling opslaan in bestand" "%s does not support analysis" === "%s kan niet analyseren" "Analyze Game from File" === "Analyseer Partij van Bestand" "Unable to activate help" === "Activeren helpprogramma mislukt" "Send to chess program:" === "Zend naar schaakprogramma:" "Send to second chess program:" === "Zend naar tweede schaakprogramma" "Direct Command" === "Rechtstreekse opdracht" "Error loading sound %s" === "Fout bij inlezen geluid %s" "Error playing sound %s" === "Fout bij afspelen geluid %s" "File open failed" === "Openen bestand mislukt" "Internal error in file dialog box" === "Interne fout in bestandsdialoog" "Option Error" === "Optie Fout" "Choose an option, or cancel to exit" === "Kies een optie, of annuleer" "Unable to activate help" === "" "Displayed move is not current" === "Getoonde zet is niet de huidige" "Could not parse move" === "Onbegrijpelijke zet" "%s:\nError code %d" === "%s:\nFout code %d" "Error" === "Fout" "Fatal Error" === "Fatale Fout" "Exiting" === "Afsluiten" "Note" === "Let op" "Error writing to chess program" === "Fout bij zenden naar schaakprogramma" "User" === "Gebruiker" "Unknown" === "Onbekend" "White" === "Wit" "Black" === "Zwart" "Save Game to File" === "Partij Opslaan in Bestand" "Not implemented" === "Niet Gemplementeerd" "Shout Text" === "" "SShout/CShout" === "" "Channel 1 Text" === "" "Channel Text" === "" "Kibitz Text" === "" "Tell Text" === "" "Challenge Text" === "" "Request Text" === "" "Seek Text" === "" "Normal Text" === "" "None" === "" "Pawn" === "Pion" "Knight" === "Paard" "Bishop" === "Loper" "Rook" === "Toren" "Queen" === "Dame" "Information" === "Informatie" wclipbrd.c "Unable to convert position to FEN." === "Kan stelling niet in FEN omzetten" "Unable to copy FEN to clipboard." === "Kan FEN niet naar klembord kopiren" "Cannot create temporary file name." === "Maken van tijdelijk opslagbestand mislukt" "Cannot open temporary file." === "Openen van tijdelijk opslagbestand mislukt" "Cannot write to temporary file." === "Schrijven naar tijdelijk opslagbestand mislukt" "Cannot reopen temporary file." === "Heropenen van tijdelijk opslagbestand mislukt" "Cannot determine size of file." === "Kan grootte van bestand niet bepalen" "Cannot allocate clipboard buffer." === "Reserveren ruimte op klembord mislukt" "Cannot read from temporary file." === "Lezen van tijdelijk opslagbestand mislukt" "Error reading from temporary file." === "Fout bij lezen van tijdelijk opslagbestand" "Cannot copy text to clipboard" === "Kan tekst niet naar klembord kopiren" "Unable to allocate memory for clipboard." === "Reserveren geheugenruimte voor klembord mislukt" "Unable to lock clipboard memory." === "Vergrendelen van klembordgeheugen mislukt" "Cannot unlock clipboard memory." === "Ontgrendelen van klembordgeheugen mislukt" "Cannot open clipboard." === "Openen klembord mislukt" "Cannot empty clipboard." === "Ledigen klembord mislukt" "Cannot copy text to clipboard." === "Kopiren van tekst naar klembord mislukt" "Cannot close clipboard." === "Afsluiten klembord mislukt" "Unable to paste FEN from clipboard." === "Plakken FEN vanaf klembord mislukt" "Unable to create temporary file." === "" "Error writing to temporary file." === "" "Unable to open clipboard." === "" "No text in clipboard." === "" "Unable to lock clipboard memory." === "" "Unable to allocate memory for text string." === "" "Unable to unlock clipboard memory." === "" "Unable to close clipboard." === "" woptions.c ## For now, do NOT translate sound names, because WinBoard will no longer recognize them "Move" === "" "Bell" === "" "ICS Alarm" === "" "ICS Win" === "" "ICS Loss" === "" "ICS Draw" === "" "ICS Unfinished" === "" "Shout" === "" "SShout/CShout" === "" "Channel 1" === "" "Channel" === "" "Kibitz" === "" "Tell" === "" "Challenge" === "" "Request" === "" "Seek" === "" ## end of sound names "Browse for Sound File" === "Bladeren voor Geluidsbestand" "Can't parse com port settings" === "" "Option Error" === "Optie Fout" "Invalid data rate" === "" "Option Error" === "" "Failed to set comm port state;\r\ninvalid options?" === "" "Failed to set comm port state" === "" "Invalid load game step rate" === "" "Invalid save game file name" === "" "Browse for Auto Save File" === "Bladeren voor automatische partijopslag" "Invalid moves per time control" === "Ongeldig aantal zetten per periode" "Invalid minutes per time control" === "Ongeldig aantal minuten per periode" "Invalid increment" === "Ongeldige tijdophoging" "Invalid initial time" === "Ongeldige starttijd" "Changing time control during a game is not implemented" === "De speelduur kan niet veranderd worden als een partij nog bezig is" "Variant %s not supported by %s" === "Schaakvariant %s kan door %s niet gespeeld worden" "Warning: second engine (%s) does not support this!" === "Pas op: het tweede schaakprogramma (%s) kan dit niet!" "Invalid ICS Alarm Time" === "Ongeldige tijdnoodwaarschuwingstijd" "Invalid max time per move" === "Ongeldige maximum tijd per zet" "Invalid time-odds factor" === "Ongeldige tijdsvoorgiftfactor" "Choose Folder" === "Kies Map" "Choose Book" === "Kies Openingsboek" "Choose Polyglot Directory" === "Kies Polyglot Map" "Choose EGTB Directory:" === "Kies EGTB Map:" "Polyglot was not found in the specified folder!" === "Polyglot is niet aanwezig in de gekozen map!" wgamelist.c "No game selected" === "Geen partij geselecteerd" "Can't go forward any further" === "U bent al aan het eind" "Can't back up any further" === "U bent al aan het begin" "No game list" === "Geen partijenoverzicht" "Game List" === "Partijenoverzicht" "Game list not loaded or empty" === "Partijenoverzicht niet gemaakt of leeg" "%s - %d/%d games" === "%s - %d/%d partijen" wedittags.c "Edit Tags" === "P G N Titels Bewerken" "Tags" === "P G N Titels" "Error replacing tags." === "Fout bij vervangen P G N Titels" wsettings.c "%s Engine Settings (%s)" === "Instellingen %s Schaakprogramma" "OK" === "OK" "Cancel" === "Annuleren" wchat.c "Chat Window %s" === "Kwebbelvenster %s" backend.c "bad timeControl option %s" === "Misvormde speeltijd instelling" "bad searchTime option %s" === "misvormde zoektijd instelling" ## following to will appear in combinationslike "first engine" "first" === "eerste" "second" === "tweede" "protocol version %d not supported" === "protocol versie %d niet ondersteund" "Variant %s supported only in ICS mode" === "Schaakvariant %s werkt alleen op Internet Schaakdienst" "Unknown variant name %s" === "Onbekende schaakvariant %s" "Starting chess program" === "Schaakprogramma opstarten" "Could not open comm port %s" === "Kan com poort %s niet openen" "Could not connect to host %s, port %s" === "Verbinding maken met %s (poort %s) mislukt" "Unknown initialMode %s" === "Onbekende startmodus %s" "Can't have a match with no chess programs" === "Tweekamp is niet mogelik zonder schaakprogramma's" "Bad game file" === "Foutief partijenbestand" "Bad position file" === "Foutief stellingenbestand" "AnalyzeFile mode requires a game file" === "Partij analyseren vereist een partijenbestand" "Analysis mode requires a chess engine" === "Analyseren vereist een schaakprogramma" "Analysis mode does not work with ICS mode" === "Analyseren werkt niet met een Internet Schaakdienst" "MachineWhite mode requires a chess engine" === "Computer Wit verseist een schaakprogramma" "MachineWhite mode does not work with ICS mode" === "Computer Wit werkt niet met een Internet Schaakdienst" "MachineBlack mode requires a chess engine" === "Computer Zwart verseist een schaakprogramma" "MachineBlack mode does not work with ICS mode" === "Computer Zwart werkt niet met een Internet Schaakdienst" "TwoMachines mode does not work with ICS mode" === "Twee Programma's werkt niet met een Internet Schaakdienst" "TwoMachines mode requires a chess engine" === "Twee Programma's verseist een schaakprogramma" "Training mode requires a game file" === "Training vereist eenpartijenbestand" "Error writing to ICS" === "Fout bij zenden naar Interenet Schaakdienst" "Error reading from keyboard" === "Fout bij invoer toetsenbord" "Got end of file from keyboard" === "'Einde bestand' ontvangen van toetsenbord" "Error writing to display" === "Fout bij scrijven op beeldscherm" "Error gathering move list: two headers" === "Fout bij ophalen zettenlijst: twee koppen" "Error gathering move list: nested" === "Fout bij ophalen zettenlijst: n binnen ander" "Connection closed by ICS" === "Verbinding verbroken door Internet Schaakdienst" "Error reading from ICS" === "Fout bij ontvangen van Interenet Schaakdienst" "Failed to parse board string:\n\"%s\"" === "Onbegrijpelijk bord:\n\"%s\"" "Game too long; increase MAX_MOVES and recompile" === "Partij te lang" "Error gathering move list: extra board" === "Fout bij ophalen zettenlijst: extra bord" "Illegal move \"%s\" from ICS" === "Onreglementaire zet \"%s\" van Internet Schaakdienst" "Couldn't parse move \"%s\" from ICS" === "Onbegrijpelijke zet \"%s\" van Internet Schaakdienst" ## The leading 'say' is used as ICS command here, and should NOT be translated. Only the message behind it. "say Internal error; bad moveType %d (%d,%d-%d,%d)" === "" "You are playing Black" === "U speelt met Zwart" "You are playing White" === "U speelt met Wit" "It is White's turn" === "Wit is aan zet" "It is Black's turn" === "Zwart is aan zet" "Displayed position is not current" === "Getoonde stelling is niet de huidige" "Illegal move" === "Onreglementaire zet" "End of game" === "Einde partij" "Incorrect move" === "Incorrecte zet" ## next 6: Second (first 3) or first (other) '%s' will be substituted for 'first' or 'second'. "Illegal move \"%s\" from %s machine" === "Onreglementaire zet \"%s\" van %s schaakprogramma" "Illegal move \"%s\" (rejected by %s chess program)" === "Onreglementaire zet \"%s\" (geweigerd door %s schaakprogramma)" "Failed to start %s chess program %s on %s: %s\n" === "Opstarten %s schaakprogramma %s op %s mislukt: %s\n" "Error writing to %s chess program" === "Fout bij zenden naar %s schaakprogramma" "Error: %s chess program (%s) exited unexpectedly" === "Fout: %s schaakprogramma onverwacht gestopt" "Error reading from %s chess program (%s)" === "Fout bij ontvangen van %s schaakprogramma (%s)" "Forfeit due to illegal move" === "Verloren wegens onreglementaire zet" "%s does not support analysis" === "%s kan niet analyseren" "Hint: %s" === "" "Machine accepts your draw offer" === "Schaakprogramma neemt remiseaanbod aan" "Machine offers a draw\nSelect Action / Draw to agree" === "Schaakprogramma bied remise aan\nKies Actie" "%s (only move)" === "%s (enige zet)" "Ambiguous move in ICS output: \"%s\"" === "Dubbelzinnige zet in bericht van Internet Schaakdienst: \"%s\"" "Illegal move in ICS output: \"%s\"" === "Onreglementaire zet in bericht van Internet Schaakdienst: \"%s\"" "Gap in move list" === "Lacune in zettenlijst" "Startup failure on '%s'" === "Opstarten '%s' mislukt" "Waiting for first chess program" === "Wacht op eerste schaakprogramma" "Waiting for second chess program" === "Wacht op tweede schaakprogramma" "Match %s vs. %s: final score %d-%d-%d" === "Tweekamp %s tegen %s: eindscore %d-%d-%d" "Stalemate" === "Pat" "Illegal move: %d.%s%s" === "Onreglementaire zet: %d.%s%s" "Ambiguous move: %d.%s%s" === "Dubelzinnige zet: %d.%s%s" "Can't open \"%s\"" === "Openen \"%s\" mislukt" "Cannot build game list" === "Maken partijenoverzicht mislukt" "No more games in this message" === "Geen partijen meer in dit bericht" "No game has been loaded yet" === "Er is nog geen partij ingelezen" "Game number out of range" === "Er is geen partij met dat nummer" "Can't seek on game file" === "Spoelen door partijenbestand mislukt" "Game not found in file" === "Het bestand bevat geen partij" "Bad FEN position in file" === "Ongeldige FEN stelling in bestand" "No moves in game" === "Partij zonder zetten" "No position has been loaded yet" === "Er is nog geen stelling ingelezen" "Can't seek on position file" === "Spoelen door stellingenbestand mislukt" "Position not found in file" === "Bestand bevat geen stelling" "Black to play" === "Zwart aan zet" "White to play" === "Wit aan zet" "You have edited the game history.\nUse Reload Same Game and make your move again." === "U heeft de partij bewerkt.\nGebruik Herlaad Partij en herhaaluw zet" "You have entered too many moves.\nBack up to the correct position and try again." === "U heeftteveel zetten ingevoerd.\nStap terug naarde juiste stelling, and probeer het opnieuw" "Displayed position is not current.\nStep forward to the correct position and try again." === "De getoonde stelling is niet de huidige.\nStap vooruit naar de juiste stelling en probeer het opnieuw" "You have not made a move yet" === "U heeft nog geen zet gedaan" "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." === "Het cmail bericht is niet ingelezen.\nGebruik CMailbericht Herladen, en doe u zet opnieuw" "No unfinished games" === "Geen actieve partijen" "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." === "" "Failed to invoke cmail" === "" "Waiting for reply from opponent\n" === "" "Still need to make move for game\n" === "" "Still need to make moves for both games\n" === "" "Still need to make moves for all %d games\n" === "" "Still need to make a move for game %s\n" === "" "No unfinished games\n" === "" "Ready to send mail\n" === "" "Still need to make moves for games %s\n" === "" "Edit comment" === "Commentaar Bewerken" "Edit comment on %d.%s%s" === "Commentaar op %d.%s%s" "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis." === "" "It is not White's turn" === "Wit is niet aan zet" "It is not Black's turn" === "Zwart is niet aan zet" "Wait until your turn,\nor select Move Now" === "Wacht op uw beurt,\nof kies nu een zet" "Starting second chess program" === "Bezig met opstarten tweede schaakprogramma" "Training mode off" === "Trainingmodus uit" "Training mode on" === "Trainingmodus aan" "Already at end of game" === "U bent alaan het eind" "Warning: You are still playing a game" === "Pas op: Uw partij is nog bezig" "Warning: You are still observing a game" === "Pas op: U bent nog toeschouwer bij een partij" "Warning: You are still examining a game" === "Pas op: U bent nog een partij aan het analyseren" "It is Black's turn" === "Zwart is aan zet" "It is White's turn" === "Wit is aan zet" "That square is occupied" === "Dat veld is bezet" "There is no pending offer on this move" === "Er is geen remiseaanbod gedaan op deze zet" "Your opponent is not out of time" === "Uw tegenstander is nog niet door zijn vlag" "Black offers a draw" === "Zwart biedt remise aan" "White offers a draw" === "Wit biedt remise aan" "You must make your move before offering a draw" === "U moet zetten voordat u remise aanbiedt" "You are not examining a game" === "U bent geenpartij aan het analyseren" "You can't revert while pausing" === "Herstellen gedurende een pauze is niet mogelijk" "It is your turn" === "U bent aan zet" "Wait until your turn" === "Wacht op uw beurt" "No hint available" === "Geen hint beschikbaar" "Analysis (%s)" === "Analyse (%s)" "Comment" === "Commentaar" "Comment on %d.%s%s" === "Commentaar op %d.%s%s" "Both flags fell" === "Bijde vlaggen zijn gevallen" "White's flag fell" === "Wit's vlag is gavalen" "Black's flag fell" === "Zwart's vlag is gevallen" "Bad FEN position in clipboard" === "Ongeldige FEN stelling op klembord" "No response from ICS" === "Geen respons van Internet Schaakdienst" "You cannot do this while you are playing or observing" === "Dit kan niet als u aan het spelen of toeschouwen bent" "Click in holdings to choose piece" === "Klik in de voorraad om een stuk te kiezen" "Click clock to clear board" === "Klik op klok voor leeg bord" "Pull pawn backwards to under-promote" === "Trek pion terug voor minor promotie" END-OF-GAME MESSAGES (should they be translated?) ## I think that only for visualization and not for PGN, as PGN files are shared all around the world ## [OK, I adapted the source that way. So please translate.] "Game aborted" === "Partij afgelazen" "White wins on time" === "Wit wint op tijd" "Black wins on time" === "Zwart wint op tijd" "Both players ran out of time" === "Beide spelers overschreden hun tijd" "White resigns" === "Wit geeft op" "Black resigns" === "Zwart geeft op" "White mates" === "Zwart staat mat" "Black mates" === "Wit staat mat" "Draw" === "Remise" "Draw agreed" === "Remise overeengekomen" "Xboard adjudication: King destroyed" === "XBoard arbitrage: Koning opgeblazen" "Xboard adjudication: Bare king" === "XBoard arbitrage: Kale koning" "Xboard adjudication: 3rd check" === "XBoard arbitrage: 3e schaakje" "Xboard adjudication: Stalemate" === "XBoard arbitrage: Pat" "Xboard adjudication: Checkmate" === "XBoard arbitrage: Schaakmat" "Xboard adjudication: Insufficient mating material" === "XBoard arbitrage: Geen matpotentiel" "Xboard adjudication: Trivial draw" === "XBoard arbitrage: Simpele remise" "XBoard adjudication: repetition draw" === "XBoard arbitrage: zettenherhaling" "Xboard adjudication: perpetual checking" === "XBoard arbitrage: eeuwig schaak" "Xboard adjudication: perpetual chasing" === "XBoard arbitrage: eeuwig najagen" "%Xboard adjudication: perpetual chasing of" === "XBoard arbitrage: eeuwig najagen van" "Xboard adjudication: 50-move rule" === "XBoard arbitrage: 50-zettenregel" "Draw claim: 50-move rule" === "Remise opgeist: 50-zettenregel" "Draw claim: 3-fold repetition" === "Remise opgeist: 3x zelfde stelling" "Draw claim: insufficient mating material" === "Remise opgeist: geen matpotentiel" "Xboard adjudication: long game" === "XBoard arbitrage: lange partij" "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d" === "XBoard: ongeldige zet: %s (%c%c%c%c) res=%d" "Xboard: Forfeit due to illegal move: %s (%c%c%c%c)%c" === "XBoard: onreglementaire zet: %s (%c%c%c%c)%c" "Xboard adjudication" === "XBoard arbitrage" "User adjudication" === "Gebruiker arbitrage" "False win claim: '%s'" === "Onterechte winsteis: '%s'" "False draw claim: '%s'" === "Onterechte remiseis: '%s'" "xboard exit" === "XBoard afgesloten" # NEW STRINGS FOR EXPERIMENTAL TM VERSION: # MENU "Edit Boo&k..." === "Openingsboek Be&werken" "Edit Engine List..." === "&Lijst met Schaakprogs Bewerken..." "Load Engine..." === "&Schaakprogramma Wisselen..." "Tournament..." === "Toernooi..." # LOAD ENGINE DIALOG "First" === "Eerste" "Second" === "Tweede" "Choose File" === "Kies Bestand" "Choose Folder:" === "Kies Map:" "Select engine from list:" === "Kies schaakprog van &lijst:" "or specify one below:" === "of specificeer er een hieronder" "Nickname (optional):" === "Bijnaam (optioneel)" "Use nickname in PGN tag" === "Gebruik bijnaam in P G N titel" "Engine (*.exe):" === "&Schaakprog (*.exe)" "command-line parameters:" === "&Parameters bij opstartbevel" "directory:" === "&map:" "(Directory will be derived from engine path when left empty)" === "(de map wordt afgeleid van het pad wanneer u het leeg laat)" "Add this engine to the list" === "&Voeg schaakprogramma toe aan lijst" "Must not use GUI book" === "Gebruik gezamenlijk openings&boek niet" "UCI" === "&UCI" "WB protocol v1 (skip waiting for features)" === "WB protocol v&1 (wacht niet of 'features')" "UCCI / USI (uses specified /uxiAdapter)" === "UCCI/USI (gebruik ingestelde uxiAdapter)" "Force current variant with this engine" === "Alleen met huidige schaakvariant" "Load mentioned engine as" === "&Gebruik schaakprogramma als" "Load Engine" === "Wisselen Schaakprogramma" "You did not specify the engine executable" === "U heeft geen schaakprogramma (.exe bestand) gespecificeerd" "Select single engine from the group" === "Kies een schaakprogramma uit deze groep" # TOURNAMENT OPTIONS DIALOG "Tournament file:" === "Toernooibestand:" "If you specify an existing file, the rest of this dialog will be ignored." === "Als u een bestaand bestand aangeeft wordt de rest van deze dialoog genegeerd" "Otherwise, the file will be created, with the settings you specify below:" === "Zo niet, dan wordt het bestand aangemaakt met onderstaande gegevens" "Select Engine:" === "Selecteer Schaakprogramma" "Use Swiss pairing engine (cycles = rounds)" === "Zwitsers (cycli = rondes)" "Tourney type (0=RR, 1=gauntlet):" === "Toernooitype (0=competitie)" "Sync after cycle" === "Synchroniseer na cyclus" "Number of tourney cycles:" === "Aantal toernooicycli:" "Sync after round" === "Synchroniseer na ronde" "Games per Match / Pairing:" === "Partijen per paring/tweekamp" "File for saving tourney games:" === "Bestand voor toernooipartijen:" "Game File with Opening Lines:" === "Bestand met Openingszetten:" "Game Number:" === "Partijnummer" "File with Start Positions:" === "Bestand met Beginstellingen:" "Position Number:" === "Stellingnummer" "Step through lines/positions in file" === "Stap door openingen/stellingen in bestand" "Rewind after (0 = never):" === "Terugspoelen na: (0 = nooit)" "Use each line/position twice" === "Gebruik elke opening/stelling 2x" "Pause between Games (ms):" === "Pauze tussen partijen (ms):" "Tournament and Match Options" === "Toernooi en Tweekamp Instellingen" "Tourney participants:" === "Deelnemers:" "Replace Engine" === "Vervang Speler" "Upgrade Engine" === "Invaller" "Time Control..." === "Speelduur..." "Common Engine..." === "Glob. Instellingen..." "Clone Tourney" === "Kloon Toernooi" "Make all use GUI book by default" === "Gebruik openingsboek voor iedereen" "You must supply a tournament file,\nfor storing the tourney progress" === "U moet een toernooibestand specificeren,\nwaarin de voortgang kan worden bijgehouden" "Not enough participants" === "Niet genoeg deelnemers voor een dergelijk toernooi" "Continue Later" === "Straks afmaken" "First you must specify an existing tourney file to clone" === "U moet eerst een bestand om te klonen specificeren" "No engine %s is installed" === "Er is geen schaakprogramma %s genstalleerd" # THEMES DIALOG "Board themes" === "Schaakbord thema's" "Select theme from list:" === "Kies thema uit de lijst:" "or specify new theme below:" === "of specifficeer een nieuw thema hieronder:" "Theme name:" === "Thema naam:" "Use board textures" === "Kleur bord in" "Light-square texture:" === "Patroon lichte velden" "Dark-square texture:" === "Patroon donkere velden" "Dark reorientation mode:" === "donkere orientatiemethode:" "Light reorientation mode:" === "lichte orientatiemethode:" "Draw border around board" === "Bord met rand" "Optional border bitmap:" === "Rand afbeelding" " Beware: a specified piece font will prevail over piece bitmaps" === " Let op: een schaakfiguren lettertype prevaleert over plaatjes" "Directory with piece bitmaps:" === "Map met stukkenplaatjes" "Use piece font" === "Gebruik schaakfiguur lettertype" "Font size (%):" === "Afmeting lettertype(%)" "Font name:" === "Lettertype:" "Font piece to char:" === "Letters voor stukken:" "Delete Theme" === "Verwijder thema" "Select single theme from the group" === "Selecteer een enkel thema uit de groep" # book.c "Could not create book" === "Kon geen openingen bestand maken" "Polyglot book not valid" === "Polyglot openingboek ongeldig" "Hash keys are different" === "" "Book Fault" === "Boek fout" "Book file exists! Try again for overwrite." === "Openingsboek bestaat al. Probeer het nog eens om het te overschrijven." # NEW MENU ITEMS IN 4.7 "Save Games to &Book" === "Sla partijen op als openings&boek" "Colo&rs..." === "Kleu&ren..." "&Board Themes..." === "&Bord stijlen..." "Load &First Engine..." === "1e Schaakprogramma &Wisselen..." "Load &Second Engine..." === "2e &Schaakprogramma Wisselen..." "Auto &Create Logon" === "Bewaar login in&fo" JAWS strings # board coords, files "ay" === "a" "b" === "" "c" === "" "d" === "" "e" === "" "f" === "" "g" === "" "h" === "" "i" === "" "j" === "" "k" === "" "l" === "" # board coords, ranks "naught" === "nul" "zeroth" === "nulde" "first" === "eerste" "second" === "tweede" "third" === "derde" "fourth" === "vierde" "fifth" === "vijfde" "sixth" === "zesde" "seventh" === "zevende" "eighth" === "achtste" "nineth" === "negende" # piece names "White Pawn" === "Witte Pion" "White Knight" === "Wit Paard" "White Bishop" === "Witte Loper" "White Rook" === "Witte Toren" "White Queen" === "Witte Dame" "White Guard" === "Witte Paleiswacht" "White Elephant" === "Witte Olifant" "White Arch Bishop" === "Witte Aartsbischop" "White Chancellor" === "Witte Kanselier" "White General" === "Witte Generaal" "White Man" === "Witte Burger" "White Cannon" === "Wit Kanon" "White Night Rider" === "Witte Nachtruiter" "White Crowned Bishop" === "Witte Gekroonde Loper" "White Crowned Rook" === "Witte Gekroonde Toren" "White Grass Hopper" === "Witte Sprinkhaan" "White Veteran" === "Witte Veteraan" "White Falcon" === "Witte Valk" "White Amazon" === "Witte Amazone" "White Snake" === "Witte Cobra" "White Unicorn" === "Witte Eenhoorn" "White King" === "Witte Koning" "Black Pawn" === "Zwarte Pion" "Black Knight" === "Zwart Paard" "Black Bishop" === "Zwarte Loper" "Black Rook" === "Zwarte Toren" "Black Queen" === "Zwarte Dame" "Black Guard" === "Zwarte Paleiswacht" "Black Elephant" === "Zwarte Olifant" "Black Arch Bishop" === "Zwarte Aartsbischop" "Black Chancellor" === "Zwarte Kanselier" "Black General" === "Zwarte Generaal" "Black Man" === "Zwarte Burger" "Black Cannon" === "Zwart Kanon" "Black Night Rider" === "Zwarte Nachtruiter" "Black Crowned Bishop" === "Zwarte Gekroonde Loper" "Black Crowned Rook" === "Zwarte Gekroonde Toren" "Black Grass Hopper" === "Zwarte Sprinkhaan" "Black Veteran" === "Zwarte Veteraan" "Black Falcon" === "Zwarte Valk" "Black Amazon" === "Zwarte Amazone" "Black Snake" === "Zwarte Cobra" "Black Unicorn" === "Zwarte Eenhoorn" "Black King" === "Zwarte Koning" "Empty" === "Leeg" "Pawn" === "Pion" "Knight" === "Paard" "Bishop" === "Loper" "Rook" === "Toren" "Queen" === "Dame" "Guard" === "Paleiswacht" "Elephant" === "Olifant" "Arch Bishop" === "Aartsbischop" "Chancellor" === "Kanselier" "General" === "Generaal" "Man" === "Burger" "Cannon" === "Kanon" "Night Rider" === "Nachtruiter" "Crowned Bishop" === "Gekroonde Loper" "Crowned Rook" === "Gekroonde Toren" "Grass Hopper" === "Sprinkhaan" "Veteran" === "Veteraan" "Falcon" === "Valk" "Amazon" === "Amazone" "Snake" === "Cobra" "Unicorn" === "Eenhoorn" "King" === "Koning" # JAWS menu "Say Clock &Time\tAlt+T" === "Lees &Klokken\tAlt+T" "Say Last &Move\tAlt+M" === "Zeg Laatste &Zet\tAlt+M" "Say W&ho's Turn\tAlt+X" === "Zeg Wie &aan Zet is\tAlt+X" "Say Complete &Position\tAlt+P" === "Lees hele &Stelling op\tAlt+P" "Say &White Pieces\tAlt+W" === "Noem &Witte Stukken\tAlt+W" "Say &Black Pieces\tAlt+B" === "Noem &Zwarte Stukken\tAlt+B" "Say Board &Rank\tAlt+R" === "Lees &Rij op\tAlt+R" "Say Board &File\tAlt+F" === "Lees &Lijn Op\tAlt+F" "Say &Upper Diagonals\tAlt+U" === "Lees &Bovendiagonalen op\tAlt+U" "Say &Lower Diagonals\tAlt+L" === "Lees &Onderdiagonalen op\tAlt+L" "Say K&night Moves\tAlt+N" === "Noem &Paard Zetten\tAlt+N" "Say Current &Square\tAlt+S" === "Noem &Huidig Veld\tAlt+S" "Say &Attacks\tAlt+A" === "Noem Aan&vallers\tAlt+A" "Say Attacke&d\tAlt+D" === "Noem Aan&gevallenen\tAlt+D" "black holdings" === "zwarte voorraad" "white holdings" === "witte voorraad" "holdings" === "voorraad" "Your" === "Uw" "would have" === "zou hebben" "You must select a piece first" === "U moet eerst een stuk activeren" "possible captures from here are" === "Mogelijke slagzetten van hieruit" "None" === "Geen" "Pieces that can capture you are" === "Stukken die u kunt slaan zijn" "You are defended by" === "U staat gedekt door" "rank" === "rij" "empty" === "leeg" "file empty" === "lijn leeg" "The diagnol squares to your upper right contain" === "De diagonaal rechts boven u bevat" "There is no squares to your upper right" === "Er zijn geen velden rechts boven u" "The diagnol squares to your upper left contain" === "De diagonaal links boven u bevat" "There is no squares to your upper left" === "Er zijn geen velden links boven u" "The diagnol squares to your lower right contain" === "De diagonaal rechts onder u bevat" "There is no squares to your lower right" === "Er zijn geen velden rechts onder u" "The diagnol squares to your lower left contain" === "De diagonaal links onder u bevat" "There is no squares to your lower left" === "Er zijn geen velden links onder u" "The possible squares a Knight could move to are" === "Velden waareen paard heen zou kunnen zijn" "The squares a Knight could possibly attack from are" === "De velden van waaruit een paard u zou kunnen aanvallen zijn" "White pieces" === "Witte stukken" "Black pieces" === "Zwarte stukken" "Pieces" === "Stukken" "are located" === "bevinden zich" "at" === "op" "nowhere" === "nergens" "You strayed into the white holdings" === "U bent de witte voorraad binnengestapt" "You strayed into the black holdings" === "U bent de zwarte voorraad binnengestapt" "Your current position is" === "Uw huidige locatie is" "on a light square" === "op een licht veld" "on a dark square" === "op een donker veld" "white holds" === "wit heeft voorradig" "black holds" === "zwart heeft voorradig" "all" === "alles" "It is your turn" === "U bent aan zet" "It is your opponents turn" === "Uw tegenstander is aan zet" "White is on move here" === "Wit is aan zet" "Black is on move here" === "wart is aan zet" "score %s %d at %d ply" === "Score %d %d bij %d halve zetten" "plus" === "plus" "minus" === "minus" "promotion" === "promotie" "move" === "zet" "queen side castling" === "lange rokade" "king side castling" === "korte rokade" "dropped on" === "neergezet op" "to" === "naar" "Capturing a" === "en slaat een" "Capturing onn passann" === "en slaat en passant" "check" === "schaak" "finishing off" === "en verslaat" "white wins" === "wit wint" "black wins" === "zwart wint" "game ends in a draw" === "partij eindigt in remise" "draw" === "remise" "due to" === "vanwege" "illegal" === "onreglementair" "White clock" === "witte klok" "Black clock" === "zwarte klok" "is now" === "is nu" "on" === "aan" "off" === "uit" "selected" === "geactiveerd" "unselected" === "gedeactiveerd" "ponder" === "peins" "animate moving" === "verschuiven stukken" "auto flag" === "automatisch vlaggen" "always promote to queen" === "altijd to dame promoveren" "legality testing" === "weiger onreglementaire zetten" "hide thinking" === "verberg gedachten" "extended P G N info" === "scores in P G N" "extra info in move history" === "scores in zettenlijst" xboard-4.9.1/winboard/language/russian.lng0000644000175000001440000012675212717001265015515 00000000000000## WinBoard 4.5.1 language file ## Encoding: Win-1251 ## Win-1251 should be set as the default encoding for nonunicode programs (on WinXP) ## ## Russian/ ## v1.0 beta 1 ## ## Translation by Hr. Burunduk (2011.04.14) ## Based on the WinBoard 4.2.6 translation by A.V.Serdiukov (.., 2003) ## ## ## If you revise this, please insert your date, name and description. ## , , , , . ## For example: ## : ## 24-ago-2010. Juan Perez (j@xyz.p). Corrected translation for xyzzy. ## Notes for translators (can be deleted from he file after translation): ## Just write the translations between the second pair of quotes ## Things like %s, %d and %c must be preserved in the original order ## Empty translated strings will be ignored, so there is no reason ## to delete those for which you don't know a translation, ## and you can start testing everything immediately. ## Simply rename this file to LANGUAGE.lng, and WinBoard should see it, ## and allow you to use the option /language=LANGUAGE. ## You are encouraged to call up the corresponding WinBoard dialog while ## working on the translation, to see in which context the strings are used. ## This is why the strings below are sorted by dialog ## ## Of duplicats, only the first occurrence will be used, even if it was in ## a different dialog! For this reason you will only see an 'OK' in the ## About Box. After you translated it there, this translation will be used ## for all other dialogs as well. ## o Use ## for comments, to make iteasy to find them scattered throughout the translation ## o Careful with temptation of direct translation, by example 'movimiento' for 'move' when 'jugada' is better. ## o Try to use short phrases, more text doesn't imply more clearness. ## o Check that your translation is right, does it mean what it does? ## o Test your translation, check every dialog. ## o For standard chess names check Wikipedia for confirmation. ## o For menus, assign shortcuts (character &) until you finish the translation. ## preferably it should be unique in the applicable menu, so it depends on translation of other items! winboard.rc MENUS: ## Pleace keep the accelerator-key indications on the menu items, and keep ## the keystrokes the same (for now). (Alt, Ctrl and Shift can be translated.) "&New Game\tCtrl-N" === "& \tCtrl-N" "New Sh&uffle Game..." === " & ..." "New &Variant...\tAlt+Shift+V" === " &...\tAlt+Shift+V" "&Load Game...\tCtrl-O" === "& ...\tCtrl-O" "&Save Game...\tCtrl-S" === "& ...\tCtrl-S" "L&oad Position...\tCtrl+Shift+O" === "& ...\tCtrl+Shift+O" "S&ave Position...\tCtrl+Shift+S" === "& ...\tCtrl+Shift+S" "Save as &Diagram..." === " &..." "&Quit" === "&" ## Next six currently not used "Load &Next Game\tAlt+PgDn" === " & \tAlt+PgDn"" "Load &Previous Game\tAlt+PgUp" === " & \tAlt+PgUp" "&Reload Same Game" === "& " "Load N&ext Position\tAlt+Shift+PgDn" === "& \tAlt+Shift+PgDn" "Load Pre&vious Position\tAlt+Shift+PgUp" === "& \tAlt+Shift+PgUp" "Reload Sa&me Position" === "& " "&Copy Game To Clipboard\tCtrl+C" === "& \tCtrl+C" "C&opy Position To Clipboard\tCtrl+Shift+C" === "& \tCtrl+Shift+C" "Copy Game List to Clipboard" === " & " "&Paste Game From Clipboard\tCtrl+V" === "& \tCtrl+V" "P&aste Position From Clipboard\tCtrl+Shift+V" === "& \tCtrl+Shift+V" "&Edit Game\tCtrl+E" === "& \tCtrl+E" "E&dit Position\tCtrl+Shift+E" === "& \tCtrl+Shift+E" "Edit Ta&gs..." === "& ..." "Edit Co&mment..." === "& ..." "Enter &Username..." === "& ..." "&Revert\tHome" === "&\tHome" "&Annotate" === "& " "&Truncate Game\tEnd" === "& \tEnd" "&Backward\tAlt+Left" === "&\tAlt+Left" "&Forward\tAlt+Right" === "&\tAlt+Right" "Back to &Start\tAlt+Home" === " &\tAlt+Home" "For&ward to End\tAlt+End" === " &\tAlt+End" "Flip &View\tF2" === "& \tF2" "&Swap Clocks" === " & " "Engine &Output\tAlt+Shift+O" === "& \tAlt+Shift+O" "Move &History\tAlt+Shift+H" === " &\tAlt+Shift+H" "Evaluation &Graph\tAlt+Shift+E" === "& \tAlt+Shift+E" "Game &List\tAlt+Shift+G" === "& \tAlt+Shift+G" "Open &New Chat Window" === " &" "Type In &Move...\tAlt+I" === "& ...\tAlt+I" "&Tags" === "&" "&Comments" === "&" "&Game List Tags..." === "& ..." "&Board..." === "&..." "&Fonts..." === "&..." "Machine &White\tCtrl+W" === " &\tCtrl+W" "Machine &Black\tCtrl+B" === " &\tCtrl+B" "&Two Machines\tCtrl+T" === "& \tCtrl+T" "Machine Both" === " &" "&Analysis Mode\tCtrl+A" === "&\tCtrl+A" "Analyze &File\tCtrl+F" === " &\tCtrl+F" "&Edit Game\tCtrl+E" === "& \tCtrl+E" "E&dit Position\tCtrl+Shift+E" === "& \tCtrl+Shift+E" "Trai&ning" === "&" "&ICS Client" === "& ICS" "&Machine Match" === " & " "&Pause\tPause" === "&" "&Accept\tF3" === "&\tF3" "D&ecline\tF4" === "&\tF4" "Re&match\tF12" === "&\tF12" "Call &Flag\tF5" === "& \tF5" "&Draw\tF6" === "&\tF6" "Ad&journ\tF7" === "&\tF7" "A&bort\tF8" === "&\tF8" "&Resign\tF9" === "&\tF9" "Stop &Observing\tF10" === " & \tF10" "Stop E&xamining\tF11" === " & \tF11" "&Upload to Examine" === "& " "Adjudicate to &White" === " &" "Adjudicate to &Black" === " &" "Adjudicate &Draw" === " &" "Install 1st..." === "1- & ..." "Install 2nd..." === "2- & ..." "Engine #&1 Settings..." === " &1..." "Engine #&2 Settings..." === " &2..." "&Hint..." === "&..." "&Book..." === "&..." "&Move Now\tCtrl+M" === " &!\tCtrl+M" "&Retract Move\tCtrl+X" === " &\tCtrl+X" "&Mute all Sounds" === " &" "&General..." === "&..." "&Time Control...\tAlt+Shift+T" === " &...\tAlt+Shift+T" "Common &Engine...\tAlt+Shift+U" === "& ...\tAlt+Shift+U" "Ad&judications...\tAlt+Shift+J" === "&...\tAlt+Shift+J" "&Load Game...\tAlt+Shift+L" === "&...\tAlt+Shift+L" "&Save Game...\tAlt+Shift+S" === "&...\tAlt+Shift+S" "G&ame List..." === "& ..." "Soun&ds..." === "&..." "&ICS..." === "&ICS..." "Add ICS..." === "& ICS..." "Comm&unications..." === "&..." "Save Settings &Now" === "& " "Save Settings on E&xit" === " &" "Help &Contents\tF1" === "&\tF1" "Help &Index" === "&" "How to &Use Help" === " & " "&About WinBoard" === " & WinBoard" "White" === "" "Promote" === "" "Pawn" === "" "Knight" === "" "Bishop" === "" "Rook" === "" "Queen" === "" "King" === "" ## The next 2 are pieces for Capablanca Chess. Use the names from the Wikipedia entry for this, ## rather than litteral translations of the English names! "Archbishop" === "" "Chancellor" === "" ## Next 2 Xiangqi (Chinese Chess) pieces. Google for 'Xiangqi' in the target language to get the standard translation. "Elephant" === " (.)" "Cannon" === "" "Empty Square" === " " "Black" === "" "Demote" === "" "Clear Board " === " " ## Next 3: Shogi pieces. "Gold" === "" "Silver" === "" "Lance" === "" "Drop" === "" "Cop&y and Paste" === " " "&Copy" === "" "&Paste" === "" "&Undo" === "" "Cu&t" === "" "&Copy" === "" "&Paste" === "" "Select &All" === " " DIALOGS: ABOUTBOX ## Pehaps copyright notices best left untranslated? "About WinBoard" === " WinBoard" "OK" === "OK" "Chessboard for Windows" === " Windows" "Copyright 1991 Digital Equipment Corporation" === "" "Enhancements Copyright 1992-2014 Free Software Foundation" === "" "Enhancements Copyright 2005\r\nAlessandro Scotti" === "" ## What happened with H.G.Muller? [He sold his copyrights to FSF for $1] ## The following string of 6 spaces can be translated to an acknowledgement of the translator, ## like "Traduccion por Oscar Toledo G.". " " === ": .. (2003), Hr.Burunduk (2011)" "WinBoard 0.0.0" === "" ABOUTBOX2 ## Weird, it is needed? [Normally not. It is a built-in 'Easter Egg' joke.] ## It's a "galactic software ltd." bitmap, no need to translate. "galactic" === "" TIME CONTROL DIALOG "Time Control" === " " "Conventional chess clock" === " " "Incremental clock" === " " "Cancel" === "" ## Next is there really only for the benefit of blind users of the JAWS version... "Use arrow keys to specify which clock setting type, then press tab to alter values." === " , tab ." "Fixed time per move" === " " "Number of moves:" === " :" "Within number of minutes:" === " :" "Initial number of minutes:" === " , :" "Plus number of seconds per move:" === " :" "Maximum seconds per move:" === " :" "Time-Odds Factors:" === " :" "Engine #1:" === " 1-:" "Engine #2:" === " 2-:" LOAD OPTIONS DIALOG "Load Game Options" === " " "Load games with automatic stepping" === " " "seconds per move" === ". " SAVE OPTIONS DIALOG "Save Game Options" === " " "Save As: " === " : " "Save games automatically" === " " "Prompt for filename" === " " "To file:" === " :" "PGN" === "PGN" "Old" === "" "Browse..." === "..." "Save out of book info in PGN" === " PGN" 1536 ## This dialog is only used in some older Windows versions, so you might not be ableto test it. "Open" === "" "File &Name:" === " :" "&Directories:" === ":" "List Files of &Type:" === " :" "Dri&ves:" === ":" "&Help" === "&" "&Index number:" === ":" COMMPORT ## Always disabled if you are not actually using an ICS through a comport, so difficult to test. "Communication Port Settings" === " COM-" "Net&work..." === "..." "&Port:" === ":" "Data &Rate:" === ":" "Data &Bits:" === " :" "P&arity:" === ":" "&Stop Bits:" === "-:" "F&low:" === ":" EDIT COMMENT "Edit Comment" === " " "&Clear" === "&" "&Edit" === "&" PROMOTION POPUP "Promote to:" === "" ## next used in Shogi as promotion-popup header "Promote?" === "?" "Promotion" === "" "&Queen" === "&" "&Rook" === "&" "&Bishop" === "&" "K&night" === "&" "&King" === "&" "&Cancel" === "&" "Chance&llor" === "&" "&Archbishop" === "&" "YES" === "" "NO" === "" "C&entaur" === "&" GAME LIST "Game List" === " " "&Load" === "&" "&Prev" === "" "&Next" === "" "&Close" === "&" "Filter" === "" EDIT TAGS "Edit Tags" === " " ERROR "ICS Interaction" === " ICS" "Dialog" === "" "Error" === "" ## I don't think the next will really appear ever. "Sorry Charlie" === ", !" COLORIZE "I C S Interaction Colors" === " ICS" "Interaction Colors" === " " "Premove" === " " "Alarm" === "" "Colors" === "" "&Choose Color..." === " " "&Bold" === "" "&Italic" === "" "&Underline" === "" "&Strikeout" === "" QUESTION ## next one seems only a placeholder, and never appears? [might also be just a programmer's joke...] "Enter a chess engine command or just type something stupid that will completely screw things up." === " - , ." "Question" === "" "Enter" === "" STARTUP DIALOG "WinBoard Startup" === " WinBoard" "What would you like to do?" === " " "&Play against a chess engine or match two engines" === "& " "&Use an Internet Chess Server" === "& " "Just &view or edit game files" === "& " "Specify Chess &Engines:" === " " "Specify Chess &Server:" === " " "&Additional options" === "& " INDEX (IN FILE-BROWSE DIALOG) "Inde&x number:" === ":" MOVE TYPE-IN "Type in a move" === " " USER-NAME TYPE-IN "Type in your name" === " " SOUND DIALOG "Sounds" === "" "&Event:" === "" "&No sound" === " " "&Default beep" === " " "&Built-in sound:" === " :" "&WAV file:" === "WAV-" "B&rowse..." === "..." "&Play" === "" "&Defaults" === "" GENERAL OPTIONS DIALOG ## pleace keep the indication of the accelerator keys for the same keystroke ## Note: finely tuned spaces to align keys at right "General Options" === " " "Always on &Top" === " " "Always &Queen Ctrl+Shift+Q" === " CS+Q" "Animate &Dragging" === " " "&Animate Moving Ctrl+Shift+A" === " CS+A" "Auto &Flag Ctrl+Shift+F" === " CS+F" "Auto Flip &View" === " " "Auto &Raise Board" === " " "&Blindfold" === " " "Highlight Dra&gging" === " " "Highlight Last &Move" === " " "Periodic &Updates" === " " "Ponder &Next Move Ctrl+Shift+P" === " CS+P" "&Popup Exit Message" === " " "Popup Move &Errors" === " " "Show Butt&on Bar" === " " "Show &Coordinates" === " " "&Show Thinking" === " " "Test &Legality Ctrl+Shift+L" === " CS+L" "&Hide Thinking Ctrl+Shift+H" === " CS+H" "&Info in Move History Ctrl+Shift+I" === " CS+I" "&Send Engine Think" === " " "E&xtended PGN Info Ctrl+Shift+X" === " PGN CS+X" "Highlight with Arro&w" === " " "Displa&y Logos" === " " "One-Click Move" === " " ICS OPTIONS "ICS Options" === " ICS" "&Auto Comment" === "" "Auto &Observe" === " " "&Get Move List" === " " "&Local Line Editing" === " " "&Quiet Play" === " " "&Premove" === " " "&White first move" === "1- " "&Black first move" === "1- " "&Sound alarm at" === " " "seconds" === "." "Choose..." === "..." "Do ¬ colorize messages" === " " "&Auto Kibitz" === "" "Auto Kibit&z" === "" "See&k Graph" === " " "auto-&Refresh" === "" "Bckgnd Obser&ve" === " " "&Dual Board" === " " "One-Click &Move" === " " "Background..." === " ..." "&Defaults..." === "" "Startup &Chat Boxes:" === " (/ ;):" "General" === "" BOARD OPTIONS ## (NOTE: AllWhite uses the white (outline-style) piece bitmaps for both sides ## FlipBlack draws the black pieces upside down) "Board Options" === " " "Defaults" === "" "Light Squares" === " " "Dark Squares" === " " "White Pieces" === " " "Black Pieces" === " " "Square Highlights" === " " "Premove Highlights" === ". " "Monochrome" === "" "All White" === " " "Flip Black" === " " "Size" === "" BOARD SIZES ## Don't put numbers, or nobody will translate them. [True. But do we really want them translated?] ## This is a space for imagination! "&Tiny" === "" "T&eeny" === "" "&Dinky" === "" "&Petite" === "" "Sl&im" === "" "&Small" === "" "Medi&ocre" === "" "&Middling" === "" "&Average" === "" "Mode&rate" === "" "Medi&um" === "" "Bul&ky" === "" "&Large" === "" "&Big" === "" "&Huge" === "" "&Giant" === "" "&Colossal" === "" "Tita&nic" === "" FONTS "Fonts" === "" "Current Board Size" === " " "All Board Sizes" === " " "&Revert to Defaults" === " " "Clocks" === "" "Messages" === "" "Coordinates" === "" "Tags" === "" "Comments" === "" "I C S Interaction" === " ICS" "&Color..." === "..." "Move History, Engine Output" === " , " ADJUDICATIONS DIALOG "Adjudications" === "" "Ponder Next Move" === " " "Enable and Show Thinking (recommended)" === " ()" "Hide Thinking when Playing against Human" === " " "Periodic Updates (for Analysis Mode)" === " ( )" "Adjudications in non-ICS games" === " ICS" "Adjudicate draw after:" === " " "moves" === "" "Win/loss adjudication threshold:" === "/ " "centipawns" === " " "&Verify Engine Claims" === " " "Detect &Mates" === " " "Draw if &Insufficient Material" === " " "Adjudicate &Trivial Draws" === " . " "Apply" === " " ## next 2 are suffixed to a text-edit containing a number (50 or 3) "-move rule" === " " "-fold repeats" === "- " "Engine #1 Score is Absolute" === " 1 - " "Engine #2 Score is Absolute" === " 2 - " COMMON ENGINE DIALOG "Common Engine Settings" === " " "Polyglot Directory:" === "Polyglot :" "Hash Size (MB):" === " ():" "EGTB Path:" === " :" "EGTB Size (MB):" === " ():" "Use Book:" === ":" "Max nr of CPUs:" === "Max CPU:" "First has Own Book" === " 1" "Second has Own Book" === " 2" "Book Depth:" === " :" "Book Variation:" === ":" "Default Match Games:" === " :" NEW-VARIANT DIALOG ## (NOTE: the 'holdings' are the pieces standing next to the board ('in hand') "Variants" === "" "Variant" === "" "Board size:" === " " ## , . "ranks" === "" "files" === "" "Holdings with room for:" === " :" "pieces" === "" "('-1' means defaults for selected variant)" === "'-1' - " VARIANT NAMES: "&normal" === "" "&FRC" === " (960)" "&wildcastle" === "" "&nocastle" === "" "&losers" === " ()" "&giveaway" === "" "s&uicide" === "" "&3Check" === "3 " "&twokings" === "" "&atomic" === "" "cra&zyhouse" === "" "&bughouse" === "" "&Twilight" === "" "Sp&artan" === "" "&shogi" === "" "su&per" === "" "&knightmate" === "" "&Berolina" === "" "c&ylinder" === "" "&fairy" === "" "&makruk" === "" "&gothic" === "" "&capablanca" === "" "&Janus" === "" "&CRC" === "" "&Falcon" === "" "cou&rier" === "" "&Great" === "" "&Shatranj" === "" "Seira&wan" === "" "&xiangqi" === "" NEW SHUFFLE GAME "New Shuffle Game" === " " "&Start Position Number:" === " :" "Random" === "" GAME-LIST OPTIONS DIALOG "Game List Options" === " " "PGN &Tags:" === " PGN :" "&Up" === "" "&Down" === "" "Default" === "" "Factory" === "" "Restore to:" === " " MOVE HISTORY WINDOW "Move History" === " " EVALUATION GRAPH "Evaluation Graph" === " " ENGINE OUTPUT WINDOW "Engine output" === " " "Engine #1" === " 1" "NPS" === "NPS (./.)" "Engine #2" === " 2" CHAT BOXES "Chat Window" === " " "Chat partner:" === ":" "Clear" === "" "Send" === "." winboard.c "&File" === "&" "&Edit" === "&" "&View" === "&" "&Mode" === "&" "&Action" === "&" "&Step" === "&" "E&ngine" === "&" "&Options" === "&" "&Help" === "&" ## One-letter menu for small board sizes "&F" === "&" "&E" === "&" "&V" === "&" "&M" === "&" "&A" === "&" "&N" === "&" "&O" === "&" "&H" === "&?" "You can only start a match from the initial position." === " ." "Font name too long:" === " :" "Font point size missing:" === " :" "Can't parse color name %s" === " %s" "Unrecognized board size value" === " " "Unrecognized argument" === " " "No value provided for argument" === " " "Incomplete \\ escape in value for" === " \\ " "Failed to open indirection file" === " INI-" "Unrecognized boolean argument value" === " " "Unrecognized argument" === " " "Too many colors" === " " "&Minimize\tCtrl+F4" === "\tCtrl+F4" "White: %s" === ": %s" "We only care about the height here" === " " "Cannot build game list" === " " "Load Game from File" === " " "Load Position from File" === " " "Save Game to File" === " " "Save Diagram to File" === " " "Save Position to File" === " " "%s does not support analysis" === "%s " "Analyze Game from File" === " " "Unable to activate help" === " " "Send to chess program:" === " :" "Send to second chess program:" === " :" "Direct Command" === " " "Error loading sound %s" === " %s" "Error playing sound %s" === " %s" "File open failed" === " " "Internal error in file dialog box" === " " "Option Error" === " " "Choose an option, or cancel to exit" === " \"\" " "Unable to activate help" === " " "Displayed move is not current" === " " "Could not parse move" === " " "%s:\nError code %d" === "%s:\n %d" "Error" === "" "Fatal Error" === " " "Exiting" === "" "%s:\nError code %d" === "%s:\n %d" "Note" === "" "Error writing to chess program" === " " "User" === "" "Unknown" === "" "White" === "" "Black" === "" "Save Game to File" === " " "Not implemented" === " " "Shout Text" === "Shout" "SShout/CShout" === "" "Channel 1 Text" === "Channel 1" "Channel Text" === "Channel" "Kibitz Text" === "Kibitz" "Tell Text" === "Tell" "Challenge Text" === "Challenge" "Request Text" === "Request" "Seek Text" === "Seek" "Normal Text" === " " "None" === "" "Pawn" === "" "Knight" === "" "Bishop" === "" "Rook" === "" "Queen" === "" "Information" === "" wclipbrd.c "Unable to convert position to FEN." === " FEN." "Unable to copy FEN to clipboard." === " (FEN) ." "Cannot create temporary file name." === " ." "Cannot open temporary file." === " ." "Cannot write to temporary file." === " ." "Cannot reopen temporary file." === " ." "Cannot determine size of file." === " ." "Cannot allocate clipboard buffer." === " " "Cannot read from temporary file." === " ." "Error reading from temporary file." === " ." "Cannot copy text to clipboard" === " ." "Unable to allocate memory for clipboard." === " ." "Unable to lock clipboard memory." === " ." "Cannot unlock clipboard memory." === " ." "Cannot open clipboard." === " ." "Cannot empty clipboard." === " ." "Cannot copy text to clipboard." === " ." "Cannot close clipboard." === " ." "Unable to paste FEN from clipboard." === " (FEN) ." "Unable to create temporary file." === " ." "Error writing to temporary file." === " ." "Unable to open clipboard." === " ." "No text in clipboard." === " ." "Unable to lock clipboard memory." === " ." "Unable to allocate memory for text string." === " ." "Unable to unlock clipboard memory." === " ." "Unable to close clipboard." === " ." woptions.c ## For now, do NOT translate sound names, because WinBoard will no longer recognize them "Move" === "" "Bell" === "" "ICS Alarm" === "" "ICS Win" === "" "ICS Loss" === "" "ICS Draw" === "" "ICS Unfinished" === "" "Shout" === "" "SShout/CShout" === "" "Channel 1" === "" "Channel" === "" "Kibitz" === "" "Tell" === "" "Challenge" === "" "Request" === "" "Seek" === "" ## end of sound names "Browse for Sound File" === " " "Can't parse com port settings" === " COM-." "Option Error" === " " "Invalid data rate" === " ." "Option Error" === " " "Failed to set comm port state;\r\ninvalid options?" === " COM-;\r\n ?" "Failed to set comm port state" === " COM-." "Invalid load game step rate" === " ." "Invalid save game file name" === " " "Browse for Auto Save File" === " " "Invalid moves per time control" === " " "Invalid minutes per time control" === " " "Invalid increment" === " " "Invalid initial time" === " " "Changing time control during a game is not implemented" === " " "Variant %s not supported by %s" === " %s %s" "Warning: second engine (%s) does not support this!" === ": (%s) !" "Invalid Alarm Time" === " ICS" "Invalid max time per move" === " " "Invalid time-odds factor" === " " "Choose Folder" === " " "Choose Book" === " " "Choose Polyglot Directory" === " Polyglot" "Choose EGTB Directory:" === " :" "Polyglot was not found in the specified folder!" === "Polyglot !" wgamelist.c "No game selected" === " " "Can't go forward any further" === " " "Can't back up any further" === " " "No game list" === " " "Game List" === " " "Game list not loaded or empty" === " " "%s - %d/%d games" === "%s - %d/%d " wedittags.c "Edit Tags" === " " "Tags" === "" "Error replacing tags." === " ." wsettings.c "%s Engine Settings (%s)" === " %s (%s)" "OK" === "OK" "Cancel" === "" wchat.c "Chat Window %s" === " %s" backend.c "bad timeControl option %s" === "timeControl: %s" "bad searchTime option %s" === "searchTime: %s" ## following to will appear in combinationslike "first engine" "first" === "1" "second" === "2" "protocol version %d not supported" === " %d " "Variant %s supported only in ICS mode" === " %s ICS" "Unknown variant name %s" === " %s" "Starting chess program" === " " "Could not open comm port %s" === " COM- %s" "Could not connect to host %s, port %s" === " %s, %s" "Unknown initialMode %s" === "initialMode: %s" "Can't have a match with no chess programs" === " " "Bad game file" === " " "Bad position file" === " " "AnalyzeFile mode requires a game file" === " : " "Analysis mode requires a chess engine" === " " "Analysis mode does not work with ICS mode" === " ICS" "MachineWhite mode requires a chess engine" === " \" \" " "MachineWhite mode does not work with ICS mode" === " \" \" ICS" "MachineBlack mode requires a chess engine" === " \" \" ()" "MachineBlack mode does not work with ICS mode" === " \" \" ICS" "TwoMachines mode does not work with ICS mode" === " \" \" ICS" "TwoMachines mode requires a chess engine" === " \" \" " "Training mode requires a game file" === " " "Error writing to ICS" === " ICS" "Error reading from keyboard" === " " "Got end of file from keyboard" === " " "Error writing to ICS" === " ICS" "Error writing to display" === " " "Error gathering move list: two headers" === " : " "Error gathering move list: nested" === " : " "Connection closed by ICS" === " ICS " "Error reading from ICS" === " ICS" "Failed to parse board string:\n\"%s\"" === " :\n\"%s\"" "Game too long; increase MAX_MOVES and recompile" === " : MAX_MOVES " "Error gathering move list: extra board" === " : " "Illegal move \"%s\" from ICS" === " "%s" ICS" "Couldn't parse move \"%s\" from ICS" === " "%s" ICS" ## The leading 'say' is used as ICS command here, and should NOT be translated. Only the message behind it. "say Internal error; bad moveType %d (%d,%d-%d,%d)" === "" "You are playing Black" === " " "You are playing White" === " " "It is White's turn" === " " "It is Black's turn" === " " "Displayed position is not current" === " " "Illegal move" === " " "End of game" === " " "Incorrect move" === " " ## next 6: Second (first 3) or first (other) '%s' will be substituted for 'first' or 'second'. "Illegal move \"%s\" from %s machine" === " \"%s\" %s" "Illegal move \"%s\" (rejected by %s chess program)" === " \"%s\" ( %s)" "Failed to start %s chess program %s on %s: %s\n" === " %s %s %s: %s\n" "Error writing to %s chess program" === " %s" "Error: %s chess program (%s) exited unexpectedly" === ": %s (%s) " "Error reading from %s chess program (%s)" === " %s (%s)" "Forfeit due to illegal move" === " " "%s does not support analysis" === "%s " "Hint: %s" === ": %s" "Machine accepts your draw offer" === " " "Machine offers a draw\nSelect Action / Draw to agree" === " .\n , /" "%s (only move)" === "%s ( )" "Ambiguous move in ICS output: \"%s\"" === " ICS: \"%s\"" "Illegal move in ICS output: \"%s\"" === " ICS: \"%s\"" "Gap in move list" === " " "Game too long; increase MAX_MOVES and recompile" === " : MAX_MOVES " "Variant %s not supported by %s" === " %s %s" "Startup failure on '%s'" === " '%s'" "Waiting for first chess program" === " " "Waiting for second chess program" === " " "Match %s vs. %s: final score %d-%d-%d" === " %s %s: %d-%d-%d" "Stalemate" === "" "Illegal move: %d.%s%s" === " : %d.%s%s" "Ambiguous move: %d.%s%s" === " : %d.%s%s" "Can't open \"%s\"" === " \"%s\"" "Cannot build game list" === " " "No more games in this message" === " " "No game has been loaded yet" === " " "Can't back up any further" === " " "Game number out of range" === " - " "Can't seek on game file" === " " "Game not found in file" === " " "Bad FEN position in file" === " FEN " "No moves in game" === " " "No position has been loaded yet" === " " "Can't back up any further" === " " "Can't open \"%s\"" === " \"%s\"" "Can't seek on position file" === " " "Position not found in file" === " " "Bad FEN position in file" === " FEN " "Black to play" === " " "White to play" === " " "Can't open \"%s\"" === " \"%s\"" "You have edited the game history.\nUse Reload Same Game and make your move again." === " .\n \" \" ." "You have entered too many moves.\nBack up to the correct position and try again." === " .\n ." "Displayed position is not current.\nStep forward to the correct position and try again." === " .\n ." "You have not made a move yet" === " " "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." === " CMail .\n \"Reload CMail Message\" ." "No unfinished games" === " " "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." === " .\n .\n :\n\"cmail -remail -game %s\"\n ." "Failed to invoke cmail" === " cmail" "Waiting for reply from opponent\n" === " \n" "Still need to make move for game\n" === " \n" "Still need to make moves for both games\n" === " \n" "Still need to make moves for all %d games\n" === " %d \n" "Still need to make a move for game %s\n" === " %s\n" "No unfinished games\n" === " \n" "Ready to send mail\n" === " \n" "Still need to make moves for games %s\n" === " %s\n" "Edit comment" === " " "Edit comment on %d.%s%s" === " %d.%s%s" "Starting analysis mode...If this message stays up, your chess program does not support analysis." === " ...\n , , " "It is not White's turn" === " " "It is not Black's turn" === " " "Wait until your turn,\nor select Move Now" === " ,\n \" \"" "Starting second chess program" === " " "Training mode off" === " " "Training mode on" === "" "Already at end of game" === " " "Warning: You are still playing a game" === ": " "Warning: You are still observing a game" === ": " "Warning: You are still examining a game" === ": " "It is Black's turn" === " " "It is White's turn" === " " "That square is occupied" === " " "There is no pending offer on this move" === " " "Your opponent is not out of time" === " " "Black offers a draw" === " " "White offers a draw" === " " "You must make your move before offering a draw" === " , " "You are not examining a game" === " " "You can't revert while pausing" === " \"\"" "Wait until your turn,\nor select Move Now" === " ,\n \" \"" "It is your turn" === " " "Wait until your turn" === " " "No hint available" === " " "Analysis (%s)" === " (%s)" "Comment" === "" "Comment on %d.%s%s" === " %d.%s%s" "Both flags fell" === " " "White's flag fell" === " " "Black's flag fell" === " " "Bad FEN position in clipboard" === " FEN" "No response from ICS" === " ICS " "You cannot do this while you are playing or observing" === " " "Click in holdings to choose piece" === " , " END-OF-GAME MESSAGES (should they be translated?) ## I think that only for visualization and not for PGN, as PGN files are shared all around the world ## [OK, I adapted the source that way. So please translate.] "Game aborted" === " " "White wins on time" === " " "Black wins on time" === " " "Both players ran out of time" === " " "White resigns" === " " "Black resigns" === " " "White mates" === " " "Black mates" === " " "Draw" === "" "Draw agreed" === " " "Xboard adjudication: King destroyed" === " Xboard: " "Xboard adjudication: Bare king" === " Xboard: " "Xboard adjudication: 3rd check" === " Xboard: " "Xboard adjudication: Stalemate" === " Xboard: " "Xboard adjudication: Checkmate" === " Xboard: " "Xboard adjudication: Insufficient mating material" === " Xboard: " "Xboard adjudication: Trivial draw" === " Xboard: " "XBoard adjudication: repetition draw" === " Xboard: - " "Xboard adjudication: perpetual checking" === " Xboard: " "Xboard adjudication: perpetual chasing" === " Xboard: " "%Xboard adjudication: perpetual chasing of" === " Xboard: " "Xboard adjudication: 50-move rule" === " Xboard: 50 " "Draw claim: 50-move rule" === " : 50 " "Draw claim: 3-fold repetition" === " : " "Draw claim: insufficient mating material" === " : " "Xboard adjudication: long game" === " Xboard: " "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d" === "Xboard: - : %s (%c%c%c%c) res=%d" "Xboard: Forfeit due to illegal move: %s (%c%c%c%c)%c" === "Xboard: - : %s (%c%c%c%c)%c" "Xboard adjudication" === " Xboard" "User adjudication" === " " "False win claim: '%s'" === " : '%s'" "False draw claim: '%s'" === " : '%s'" "xboard exit" === " Xboard" xboard-4.9.1/winboard/language/vietnamese.lng0000644000175000001440000007741112717001265016166 00000000000000## WinBoard language file ## ## LANGUAGE NAME IN ENGLISH / TRANSLATED ## v1.0 beta 1 ## ## Translation by Nguyen Pham (27 Jan 2011) ## Ngi dich: Pham Hng Nguyn (27/01/2011) ## xqfan.com ## ## If you revise this, please insert your date, name and description. ## TRANSLATION OF MESSAGE ABOVE ## ## For example: ## TRANSLATION OF FOR EXAMPLE ## 24-ago-2010. Juan Prez (j@xyz.p). Corrected translation for xyzzy. ## Notes for translators (can be deleted from he file after translation): ## Just write the translations between the second pair of quotes ## Things like %s, %d and %c must be preserved in the original order ## Empty translated strings will be ignored, so there is no reason ## to delete those for which you don't know a translation, ## and you can start testing everything immediately. ## Simply rename this file to LANGUAGE.lng, and WinBoard should see it, ## and allow you to use the option /language=LANGUAGE. ## You are encouraged to call up the corresponding WinBoard dialog while ## working on the translation, to see in which context the strings are used. ## This is why the strings below are sorted by dialog ## ## Of duplicats, only the first occurrence will be used, even if it was in ## a different dialog! For this reason you will only see an 'OK' in the ## About Box. After you translated it there, this translation will be used ## for all other dialogs as well. ## o Use ## for comments, to make iteasy to find them scattered throughout the translation ## o Careful with temptation of direct translation, by example 'movimiento' for 'move' when 'jugada' is better. ## o Try to use short phrases, more text doesn't imply more clearness. ## o Check that your translation is right, does it mean what it does? ## o Test your translation, check every dialog. ## o For standard chess names check Wikipedia for confirmation. ## o For menus, assign shortcuts (character &) until you finish the translation. ## preferably it should be unique in the applicable menu, so it depends on translation of other items! winboard.rc MENUS: ## Pleace keep the accelerator-key indications on the menu items, and keep ## the keystrokes the same (for now). (Alt, Ctrl and Shift can be translated.) "New &Game\tCtrl-N" === "Vn Mi\tCtrl-N" "New Sh&uffle Game..." === "Tro Bn..." "New &Variant...\tAlt+Shift+V" === "Bin Mi...\tAlt+Shift+&V" "&Load Game...\tCtrl-O" === "Tai Vn C...\tCtr&l-O" "&Save Game...\tCtrl-S" === "Lu Vn C...\tCtrl-&S" "L&oad Position...\tCtrl+Shift+O" === "Tai Th C...\tCtrl+Shift+&O" "S&ave Position...\tCtrl+Shift+S" === "Lu Th C...\tCtrl+Shift+S" "Save as &Diagram..." === "Lu Thnh Biu ..." "&Quit" === "Thot" ## Next six currently not used "Load &Next Game\tAlt+PgDn" === "Tai V&n Tip\tAlt+PgDn" "Load &Previous Game\tAlt+PgUp" === "Tai Vn Trc" "&Reload Same Game" === "Tai Lai Vn C" "Load N&ext Position\tAlt+Shift+PgDn" === "Tai Th C Tip" "Load Pre&vious Position\tAlt+Shift+PgUp" === "Tai Th C Trc" "Reload Sa&me Position" === "Tai Lai Th C" "&Copy Game To Clipboard\tCtrl+C" === "&Chp Vn C Vo Clipboard\tCtrl+C" "C&opy Position To Clipboard\tCtrl+Shift+C" === "Chp Th C Vo Clipb&oard\tCtrl+Shift+C" "Copy Game List to Clipboard" === "Copy Danh Sch Cc Vn C Vo Clipboard" "&Paste Game From Clipboard\tCtrl+V" === "Dn Vn C T Clipboard\tCtrl+V" "P&aste Position From Clipboard\tCtrl+Shift+V" === "Dn Th C T Clipbo&ard\tCtrl+Shift+V" "&Edit Game\tCtrl+E" === "Soan Vn C\tCtrl+&E" "E&dit Position\tCtrl+Shift+E" === "Soan Th C\tCtrl+Shift+E" "Edit Ta&gs..." === "Soan Cc The..." "Edit &Comment..." === "Soan Binh Ch..." "Enter &Username..." === Nhp Username..." "&Revert\tHome" === "Ngc Lai\tHome" "&Annotate" === "Ch Giai" "&Truncate Game\tEnd" === "C&t Ngn Vn C\tEnd" "&Backward\tAlt+Left" === "Quay Tr Lai\tAlt+Left" "&Forward\tAlt+Right" === "i Tip\tAlt+Right" "Back to &Start\tAlt+Home" === "Quay Lai n u\tAlt+Home" "For&ward to End\tAlt+End" === "i Tip Ti Cui\tAlt+End" "Flip &View\tF2" === "Lt Ngc Bn C\tF2" "&Swap Clocks" === "i ng H" "Engine &Output\tAlt+Shift+O" === "In Ra Cua Cc Chng Trinh C\tAlt+Shift+&O" "Move &History\tAlt+Shift+H" === "Cc Nc i\tAlt+Shift+&H" "Evaluation &Graph\tAlt+Shift+E" === " Thi Lng &Gi\tAlt+Shift+E" "Game &List\tAlt+Shift+G" === "Danh Sch Cc Vn C\tA<+Shift+G" "Open &New Chat Window" === "M Ca S i Thoai Mi" "Type In &Move...\tAlt+I" === "Binh Ch Cho Nc i...\tAlt+I" "&Tags" === "Cc The" "&Comments" === "Binh &Ch" "&Game List Tags..." === "Cc The cua Danh Sch Vn C" "&Board..." === "&Bn C..." "&Fonts..." === "Cc &Fonts..." "Machine &White\tCtrl+W" === "My Chi Bn Trng\tCtrl+&W" "Machine &Black\tCtrl+B" === "My Chi &Bn en\tCtrl+B" "&Two Machines\tCtrl+T" === "My Chi Ca Hai Bn\tCtrl+&T" "Machine Both" === "My Chi Ca Hai Bn" "&Analysis Mode\tCtrl+A" === "Ch Phn Tch\tCtrl+&A" "Analyze &File\tCtrl+F" === "Phn Tch &File\tCtrl+F" "&Edit Game\tCtrl+E" === "Soan Thao Vn C\tCtrl+&E" "E&dit Position\tCtrl+Shift+E" === "Soan Thao Th C\tCtrl+Shift+E" "Trai&ning" === "a&ng Dy My" "&ICS Client" === "Kt Ni Chi Vi My Chu &ICS" "&Machine Match" === "Trn u Vi &My" "&Pause\tPause" === "Tam Dng\t&Pause" "&Accept\tF3" === "Chp Nhn\tF3" "D&ecline\tF4" === "T Chi\tF4" "Re&match\tF12" === "Chi Vn Na\tF12" "Call &Flag\tF5" === "t C\t&F5" "&Draw\tF6" === "Hoa\tF6" "Ad&journ\tF7" === "\tF7" "A&bort\tF8" === "Bo\tF8" "&Resign\tF9" === "Nhn Thua\tF9" "Stop &Observing\tF10" === "Ngng Xem" "Stop E&xamining\tF11" === "Ngng Th" "&Upload to Examine" === "Tai " "Adjudicate to &White" === "Phn X Trng Thng" "Adjudicate to &Black" === "Phn X en Thng" "Adjudicate &Draw" === "Phn X Hoa" "Install 1st..." === "Ci t Ngi Chi Th Nht" "Install 2nd..." === "Ci t Ngi Chi Th Hai" "Engine #&1 Settings..." === "t Tham S Cho Chng Trinh Chi 1..." "Engine #&2 Settings..." === "t Tham S Cho Chng Trinh Chi 2..." "&Hint..." === "Gi Y..." "&Book..." === "Cm Nang Khai Cuc..." "&Move Now\tCtrl+M" === "Phai i Ngay\tCtrl+M" "&Retract Move\tCtrl+X" === "Hoan Nc i Va Ri\tCtrl+X" "&Mute all Sounds" === "Ngng Pht m Thanh" "&General..." === "Chung..." "&Time Control...\tAlt+Shift+T" === "t Thi Gian...\tAlt+Shift+T" "Common &Engine...\tAlt+Shift+U" === "Chng Trinh C Chung...\tAlt+Shift+U" "Ad&judications...\tAlt+Shift+J" === "Phn X Kt Qua...\tAlt+Shift+J" "&Load Game...\tAlt+Shift+L" === "Tai Vn C...\tAlt+Shift+L" "&Save Game...\tAlt+Shift+S" === "Lu Vn C...\tAlt+Shift+S" "G&ame List..." === "Danh Sch Vn C" "Soun&ds..." === "m Thanh" "&ICS..." === "&ICS..." "Add ICS..." === "Thm ICS..." "Comm&unications..." === "Kt Ni...." "Save Settings &Now" === "Lu Cc Tham S &Ngay" "Save Settings on E&xit" === "Lu Cc Tham S Khi Kt Thc" "Help &Contents\tF1" === "Ni Dung Hng Dn" "Help &Index" === "Hng Dn" "How to &Use Help" === "S Dung Hng Dn" "&About WinBoard" === "Thng Tin V WinBoard" "White" === "Trng" "Promote" === "Phong Cp" "Pawn" === "Tt" "Knight" === "Ma" "Bishop" === "Tng" "Rook" === "Xe" "Queen" === "Hong Hu" "King" === "Vua" ## The next 2 are pieces for Capablanca Chess. Use the names from the Wikipedia entry for this, ## rather than litteral translations of the English names! "Archbishop" === "Si" "Chancellor" === "Xe" ## Next 2 Xiangqi (Chinese Chess) pieces. Google for 'Xiangqi' in the target language to get the standard translation. "Elephant" === "Tng" "Cannon" === "Pho" "Empty Square" === " Trng" "Black" === "en" "Demote" === "" "Clear Board " === "Xa Bn C" ## Next 3: Shogi pieces. "Gold" === "Vng" "Silver" === "Bac" "Lance" === "ng" "Drop" === "t" "Cop&y and Paste" === "Chp v Dn" "&Copy" === "Chp" "&Paste" === "Dn" "&Undo" === "Lai Nh Trc" "Cu&t" === "Ct" "&Copy" === "Chp" "&Paste" === "Dn" "Select &All" === "Chon Tt Ca" DIALOGS: ABOUTBOX ## Pehaps copyright notices best left untranslated? "About WinBoard" === "Thng Tin V WinBoard" "OK" === "c" "Chessboard for Windows" === "Bn C Cho Windows" "Copyright 1991 Digital Equipment Corporation" === "Ban Quyn 1991 Digital Equipment Corporation" "Enhancements Copyright 1992-2014 Free Software Foundation" === "" "Enhancements Copyright 2005\r\nAlessandro Scotti" === "" ## What happened with H.G.Muller? [He sold his copyrights to FSF for $1] ## The following string of 6 spaces can be translated to an acknowledgement of the translator, ## like "Traduccin por scar Toledo G.". " " === "" "WinBoard 0.0.0" === "WinBoard 0.0.0" ABOUTBOX2 ## Weird, it is needed? [Normally not. It is a built-in 'Easter Egg' joke.] "galactic" === "" TIME CONTROL DIALOG "Time Control" === "Thi gian chi" "Conventional chess clock" === "ng h qui chun" "Incremental clock" === "ng h tng tin" "Cancel" === "Bo" ## Next is there really only for the benefit of blind users of the JAWS version... "Use arrow keys to specify which clock setting type, then press tab to alter values." === "Dng cc phm mui tn chon kiu ng h mong mun, ri bm phm tab thay i gi tri." "Fixed time per move" === "Thi gian c inh cho mi nc i" "Number of moves:" === "S nc i" "Within number of minutes:" === "Trong s pht:" "Initial number of minutes:" === "Khi u vi s pht" "Plus number of seconds per move:" === "S giy thm cho mi nc:" "Maximum seconds per move:" === "S giy cc ai cho mi nc" "Time-Odds Factors:" === "H s thi gian le" "Engine #1:" === "Chng trinh c 1:" "Engine #2:" === "Chng trinh c 2:" LOAD OPTIONS DIALOG "Load Game Options" === "Cc La Chon Tai Vn C" "Load games with automatic stepping" === "Tai cc vn c v t ng i qun" "seconds per move" === "s giy mi nc" SAVE OPTIONS DIALOG "Save Game Options" === "Cc La Chon Lu Vn C" "Save Style" === "Kiu Lu" "Save games automatically" === "Lu t ng cc vn c" "Prompt for filename" === "Nhc tn file" "To file:" === "ra file:" "PGN" === "PGN" "Old" === "Cu" "Browse..." === "Xem" "Save out of book info in PGN" === "Lu thng tin khi ht cm nang khai cuc vo PGN" 1536 ## This dialog is only used in some older Windows versions, so you might not be ableto test it. "Open" === "M" "File &Name:" === "T&n File:" "&Directories:" === "Th Muc:" "List Files of &Type:" === "Danh Sch File Vi Kiu:" "Dri&ves:" === " ia:" "&Help" === "&Hng Dn" "&Index number:" === "Chi Muc:" COMMPORT ## Always disabled if you are not actually using an ICS through a comport, so difficult to test. "Communication Port Settings" === "" "Net&work..." === "" "&Port:" === "" "Data &Rate:" === "" "Data &Bits:" === "" "P&arity:" === "" "&Stop Bits:" === "" "F&low:" === "" EDIT COMMENT "Edit Comment" === "Soan Binh Ch" "&Clear" === "Xa" "&Edit" === "Soan" PROMOTION POPUP "Promote to:" === "Phong cp thnh:" ## next used in Shogi as promotion-popup header "Promote?" === "Phong cp?" "Promotion" === "Phong cp" "&Queen" === "Hong Hu" "&Rook" === "Xe" "&Bishop" === "Tng" "K&night" === "Ma" "&King" === "Vua" "&Cancel" === "Bo" "Chance&llor" === "Xe" "&Archbishop" === "Si" "YES" === "ng Y" "NO" === "Khng" "C&entaur" === "" GAME LIST "Game List" === "Danh Sch Vn C" "&Load" === "Tai" "&Prev" === "Trc" "&Next" === "Tip" "&Close" === "ng" "Filter" === "Loc" EDIT TAGS "Edit Tags" === "Soan cc the" ERROR "ICS Interaction" === "" "Dialog" === "" "Error" === "" ## I don't think the next will really appear ever. "Sorry Charlie" === "" COLORIZE "I C S Interaction Colors" === "" "Interaction Colors" === "" "Premove" === "" "Alarm" === "" "Colors" === "" "&Choose Color..." === "" "&Bold" === "" "&Italic" === "" "&Underline" === "" "&Strikeout" === "" QUESTION ## next one seems only a placeholder, and never appears? [might also be just a programmer's joke...] "Enter a chess engine command or just type something stupid that will completely screw things up." === "" "Question" === "" "Enter" === "" STARTUP DIALOG "WinBoard Startup" === "WinBoard ang Khi ng" "What would you like to do?" === "Ban Mun Lm Gi?" "&Play against a chess engine or match two engines" === "Chi vi mt chng trinh c hoc cho hai chng trinh u vi nhau" "&Use an Internet Chess Server" === "Kt ni v chi vi mt my chu c" "Just &view or edit game files" === "Chi xem hoc soan thao cc file vn c" "Specify Chess &Engines:" === "Chon Cc Chng Trinh C:" "Specify Chess &Server:" === "Chon My Chu Chi C" "&Additional options" === "Cc la chon thm" INDEX (IN FILE-BROWSE DIALOG) "Inde&x number:" === "S chi muc" MOVE TYPE-IN "Type in a move" === "" USER-NAME TYPE-IN "Type in your name" === "" SOUND DIALOG "Sounds" === "m thanh" "&Event:" === "S kin:" "&No sound" === "Khng m thanh" "&Default beep" === "Ting tt ngm inh" "&Built-in sound:" === "m thanh c sn" "&WAV file:" === "File m thanh WAV" "B&rowse..." === "Xem..." "&Play" === "Chi" "&Defaults" === "Ngm inh" GENERAL OPTIONS DIALOG ## pleace keep the indication of the accelerator keys for the same keystroke ## Note: finely tuned spaces to align keys at right "General Options" === "Cc La Chon Chung" "Always on &Top" === "Lun Ni Ln Trn" "Always &Queen Ctrl+Shift+Q" === "Lun L Hong Hu Ctrl+Shift+&Q" "Animate &Dragging" === "" "&Animate Moving Ctrl+Shift+A" === "" "Auto &Flag Ctrl+Shift+F" === "T ng t C" "Auto Flip &View" === "T ng Xoay Bn C" "Auto &Raise Board" === "T ng Hin Bn C" "&Blindfold" === "M Qung" "Highlight Dra&gging" === "nh Du Khi ang Ko Qun C" "Highlight Last &Move" === "nh Du Nc Cui" "Periodic &Updates" === "Cp Nht Theo Chu Ky" "Ponder &Next Move Ctrl+Shift+P" === "Tip Tuc Tnh Trc" "&Popup Exit Message" === "Bt Ca S Thot Chng trinh" "Popup Move &Errors" === "Bt Ca S Li Nc i" "Show Butt&on Bar" === "Hin Thanh Nt Bm" "Show &Coordinates" === "Hin Toa " "&Show Thinking" === "Hin Tnh Ton" "Test &Legality Ctrl+Shift+L" === "Kim Tra Hp &L" "&Hide Thinking Ctrl+Shift+H" === "n Suy Nghi" "&Info in Move History Ctrl+Shift+I" === "Thng Tin trong Nc i" "&Send Engine Think" === "Lnh Cho Chng Trinh Suy Nghi" "E&xtended PGN Info Ctrl+Shift+X" === "Thng Tin M rng Trong PGN" "Highlight with Arro&w" === "nh Du Vi Mui Tn" "Displa&y Logos" === "Hin Logo" "One-Click Move" === "i Qun Vi Chi Mt Bm" ICS OPTIONS "ICS Options" === "" "&Auto Comment" === "" "Auto &Observe" === "" "&Get Move List" === "" "&Local Line Editing" === "" "&Quiet Play" === "" "&Premove" === "" "&White first move" === "" "&Black first move" === "" "&Sound alarm at" === "" "seconds" === "" "Choose..." === "" "Do ¬ colorize messages" === "" "&Auto Kibitz" === "" "Auto Kibit&z" === "" "See&k Graph" === "" "auto-&Refresh" === "" "Bckgnd Obser&ve" === "" "&Dual Board" === "" "One-Click &Move" === "" "Background..." === "" "&Defaults..." === "" "Startup &Chat Boxes:" === "" "General" === "" BOARD OPTIONS ## (NOTE: AllWhite uses the white (outline-style) piece bitmaps for both sides ## FlipBlack draws the black pieces upside down) "Board Options" === "" "Defaults" === "" "Light Squares" === "" "Dark Squares" === "" "White Pieces" === "" "Black Pieces" === "" "Square Highlights" === "" "Premove Highlights" === "" "Monochrome" === "" "All White" === "" "Flip Black" === "" "Size" === "" BOARD SIZES (translate as number?) ## Don't put numbers, or nobody will translate them. [True. But do we really want them translated?] ## This is a space for imagination! "&Tiny" === "" "T&eeny" === "" "&Dinky" === "" "&Petite" === "" "Sl&im" === "" "&Small" === "" "Medi&ocre" === "" "&Middling" === "" "&Average" === "" "Mode&rate" === "" "Medi&um" === "" "Bul&ky" === "" "&Large" === "" "&Big" === "" "&Huge" === "" "&Giant" === "" "&Colossal" === "" "Tita&nic" === "" FONTS "Fonts" === "" "Current Board Size" === "" "All Board Sizes" === "" "&Revert to Defaults" === "" "Clocks" === "" "Messages" === "" "Coordinates" === "" "Tags" === "" "Comments" === "" "I C S Interaction" === "" "&Color..." === "" "Move History, Engine Output" === "" ADJUDICATIONS DIALOG "Adjudications" === "" "Ponder Next Move" === "" "Enable and Show Thinking (recommended)" === "" "Hide Thinking when Playing against Human" === "" "Periodic Updates (for Analysis Mode)" === "" "Adjudications in non-ICS games" === "" "Adjudicate draw after:" === "" "moves" === "" "Win/loss adjudication threshold:" === "" "centipawns" === "" "&Verify Engine Claims" === "" "Detect &Mates" === "" "Draw if &Insufficient Material" === "" "Adjudicate &Trivial Draws" === "" "Apply" === "" ## next 2 are suffixed to a text-edit containing a number (50 or 3) "-move rule" === "" "-fold repeats" === "" "Engine #1 Score is Absolute" === "" "Engine #2 Score is Absolute" === "" COMMON ENGINE DIALOG "Common Engine Settings" === "" "Polyglot Directory:" === "" "Hash Size (MB):" === "" "EGTB Path:" === "" "EGTB Size (MB):" === "" "Use Book:" === "" "Max nr of CPUs:" === "" "First has Own Book" === "" "Second has Own Book" === "" "Book Depth:" === "" "Book Variation:" === "" "Default Match Games:" === "" NEW-VARIANT DIALOG ## (NOTE: the 'holdings' are the pieces standing next to the board ('in hand') "Variants" === "" "Variant" === "" "Board size:" === "" "ranks" === "" "files" === "" "Holdings with room for:" === "" "pieces" === "" "('-1' means defaults for selected variant)" === "" VARIANT NAMES: "&normal" === "" "&FRC" === "" "&wildcastle" === "" "&nocastle" === "" "&losers" === "" "&giveaway" === "" "s&uicide" === "" "&3Check" === "" "&twokings" === "" "&atomic" === "" "cra&zyhouse" === "" "&bughouse" === "" "&Twilight" === "" "&shogi" === "" "su&per" === "" "&knightmate" === "" "&Berolina" === "" "c&ylinder" === "" "&fairy" === "" "&makruk" === "" "&gothic" === "" "&capablanca" === "" "&Janus" === "" "&CRC" === "" "&Falcon" === "" "cou&rier" === "" "&Great" === "" "&Shatranj" === "" "&xiangqi" === "" NEW SHUFFLE GAME "New Shuffle Game" === "" "&Start Position Number:" === "" "Random" === "" GAME-LIST OPTIONS DIALOG "Game List Options" === "" "PGN &Tags:" === "" "&Up" === "" "&Down" === "" "Default" === "" "Factory" === "" "Restore to:" === "" MOVE HISTORY WINDOW "Move History" === "" EVALUATION GRAPH "Evaluation Graph" === "" ENGINE OUTPUT WINDOW "Engine output" === "" "Engine #1" === "" "NPS" === "" "Engine #2" === "" CHAT BOXES "Chat Window" === "" "Chat partner:" === "" "Clear" === "" "Send" === "" winboard.c "&File" === "" "&Edit" === "" "&View" === "" "&Mode" === "" "&Action" === "" "&Step" === "" "E&ngine" === "" "&Options" === "" "&Help" === "" "You can only start a match from the initial position" === "" "Font name too long:" === "" "Font point size missing:" === "" "Can't parse color name %s" === "" "Unrecognized board size value" === "" "Unrecognized argument" === "" "No value provided for argument" === "" "Incomplete \\ escape in value for" === "" "Failed to open indirection file" === "" "Unrecognized boolean argument value" === "" "Unrecognized argument" === "" "Too many colors" === "" "&Minimize\tCtrl+F4" === "" "White: %s" === "" "We only care about the height here" === "" "Cannot build game list" === "" "Load Game from File" === "" "Load Position from File" === "" "Save Game to File" === "" "Save Position to File" === "" "%s does not support analysis" === "" "Analyze Game from File" === "" "Unable to activate help" === "" "Send to chess program:" === "" "Send to second chess program:" === "" "Direct Command" === "" "Error loading sound %s" === "" "Error playing sound %s" === "" "File open failed" === "" "Internal error in file dialog box" === "" "Option Error" === "" "Choose an option, or cancel to exit" === "" "Unable to activate help" === "" "Displayed move is not current" === "" "Could not parse move" === "" "%s:\nError code %d" === "" "Error" === "" "Fatal Error" === "" "Exiting" === "" "%s:\nError code %d" === "" "Note" === "" "Error writing to chess program" === "" "User" === "" "Unknown" === "" "White" === "" "Black" === "" "Save Game to File" === "" "Not implemented" === "" "Shout Text" === "" "SShout/CShout" === "" "Channel 1 Text" === "" "Channel Text" === "" "Kibitz Text" === "" "Tell Text" === "" "Challenge Text" === "" "Request Text" === "" "Seek Text" === "" "Normal Text" === "" "None" === "" "Pawn" === "" "Knight" === "" "Bishop" === "" "Rook" === "" "Queen" === "" "Information" === "" wclipbrd.c "Unable to convert position to FEN." === "" "Unable to copy FEN to clipboard." === "" "Cannot create temporary file name." === "" "Cannot open temporary file." === "" "Cannot write to temporary file." === "" "Cannot reopen temporary file." === "" "Cannot determine size of file." === "" "Cannot allocate clipboard buffer." === "" "Cannot read from temporary file." === "" "Error reading from temporary file." === "" "Cannot copy text to clipboard" === "" "Unable to allocate memory for clipboard." === "" "Unable to lock clipboard memory." === "" "Cannot unlock clipboard memory." === "" "Cannot open clipboard." === "" "Cannot empty clipboard." === "" "Cannot copy text to clipboard." === "" "Cannot close clipboard." === "" "Unable to paste FEN from clipboard." === "" "Unable to create temporary file." === "" "Error writing to temporary file." === "" "Unable to open clipboard." === "" "No text in clipboard." === "" "Unable to lock clipboard memory." === "" "Unable to allocate memory for text string." === "" "Unable to unlock clipboard memory." === "" "Unable to close clipboard." === "" woptions.c ## For now, do NOT translate sound names, because WinBoard will no longer recognize them "Move" === "" "Bell" === "" "ICS Alarm" === "" "ICS Win" === "" "ICS Loss" === "" "ICS Draw" === "" "ICS Unfinished" === "" "Shout" === "" "SShout/CShout" === "" "Channel 1" === "" "Channel" === "" "Kibitz" === "" "Tell" === "" "Challenge" === "" "Request" === "" "Seek" === "" ## end of sound names "Browse for Sound File" === "" "Can't parse com port settings" === "" "Option Error" === "" "Invalid data rate" === "" "Option Error" === "" "Failed to set comm port state;\r\ninvalid options?" === "" "Failed to set comm port state" === "" "Invalid load game step rate" === "" "Invalid save game file name" === "" "Browse for Auto Save File" === "" "Invalid moves per time control" === "" "Invalid minutes per time control" === "" "Invalid increment" === "" "Invalid initial time" === "" "Changing time control during a game is not implemented" === "" "Variant %s not supported by %s" === "" "Warning: second engine (%s) does not support this!" === "" "Invalid ICS Alarm Time" === "" "Invalid max time per move" === "" "Invalid time-odds factor" === "" "Choose Folder" === "" "Choose Book" === "" "Choose Polyglot Directory" === "" "Choose EGTB Directory:" === "" "Polyglot was not found in the specified folder!" === "" wgamelist.c "No game selected" === "" "Can't go forward any further" === "" "Can't back up any further" === "" "No game list" === "" "Game List" === "" "Game list not loaded or empty" === "" "%s - %d/%d games" === "" wedittags.c "Edit Tags" === "" "Tags" === "" "Error replacing tags." === "" wsettings.c "%s Engine Settings (%s)" === "" "OK" === "" "Cancel" === "" backend.c "bad timeControl option %s" === "" "bad searchTime option %s" === "" ## following to will appear in combinationslike "first engine" "first" === "" "second" === "" "protocol version %d not supported" === "" "Variant %s supported only in ICS mode" === "" "Unknown variant name %s" === "" "Starting chess program" === "" "Could not open comm port %s" === "" "Could not connect to host %s, port %s" === "" "Unknown initialMode %s" === "" "Can't have a match with no chess programs" === "" "Bad game file" === "" "Bad position file" === "" "AnalyzeFile mode requires a game file" === "" "Analysis mode requires a chess engine" === "" "Analysis mode does not work with ICS mode" === "" "MachineWhite mode requires a chess engine" === "" "MachineWhite mode does not work with ICS mode" === "" "MachineBlack mode requires a chess engine" === "" "MachineBlack mode does not work with ICS mode" === "" "TwoMachines mode does not work with ICS mode" === "" "TwoMachines mode requires a chess engine" === "" "Training mode requires a game file" === "" "Error writing to ICS" === "" "Error reading from keyboard" === "" "Got end of file from keyboard" === "" "Error writing to ICS" === "" "Error writing to display" === "" "Error gathering move list: two headers" === "" "Error gathering move list: nested" === "" "Connection closed by ICS" === "" "Error reading from ICS" === "" "Failed to parse board string:\n\"%s\"" === "" "Game too long; increase MAX_MOVES and recompile" === "" "Error gathering move list: extra board" === "" "Illegal move \"%s\" from ICS" === "" "Couldn't parse move \"%s\" from ICS" === "" ## The leading 'say' is used as ICS command here, and should NOT be translated. Only the message behind it. "say Internal error; bad moveType %d (%d,%d-%d,%d)" === "" "You are playing Black" === "" "You are playing White" === "" "It is White's turn" === "" "It is Black's turn" === "" "Displayed position is not current" === "" "Illegal move" === "" "End of game" === "" "Incorrect move" === "" ## next 6: Second (first 3) or first (other) '%s' will be substituted for 'first' or 'second'. "Illegal move \"%s\" from %s machine" === "" "Illegal move \"%s\" (rejected by %s chess program)" === "" "Failed to start %s chess program %s on %s: %s\n" === "" "Error writing to %s chess program" === "" "Error: %s chess program (%s) exited unexpectedly" === "" "Error reading from %s chess program (%s)" === "" "Forfeit due to illegal move" === "" "%s does not support analysis" === "" "Hint: %s" === "" "Machine accepts your draw offer" === "" "Machine offers a draw\nSelect Action / Draw to agree" === "" "%s (only move)" === "" "Ambiguous move in ICS output: \"%s\"" === "" "Illegal move in ICS output: \"%s\"" === "" "Gap in move list" === "" "Game too long; increase MAX_MOVES and recompile" === "" "Variant %s not supported by %s" === "" "Startup failure on '%s'" === "" "Waiting for first chess program" === "" "Waiting for second chess program" === "" "Match %s vs. %s: final score %d-%d-%d" === "" "Stalemate" === "" "Illegal move: %d.%s%s" === "" "Ambiguous move: %d.%s%s" === "" "Can't open \"%s\"" === "" "Cannot build game list" === "" "No more games in this message" === "" "No game has been loaded yet" === "" "Can't back up any further" === "" "Game number out of range" === "" "Can't seek on game file" === "" "Game not found in file" === "" "Bad FEN position in file" === "" "No moves in game" === "" "No position has been loaded yet" === "" "Can't back up any further" === "" "Can't open \"%s\"" === "" "Can't seek on position file" === "" "Position not found in file" === "" "Bad FEN position in file" === "" "Black to play" === "" "White to play" === "" "Can't open \"%s\"" === "" "You have edited the game history.\nUse Reload Same Game and make your move again." === "" "You have entered too many moves.\nBack up to the correct position and try again." === "" "Displayed position is not current.\nStep forward to the correct position and try again." === "" "You have not made a move yet" === "" "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." === "" "No unfinished games" === "" "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." === "" "Failed to invoke cmail" === "" "Waiting for reply from opponent\n" === "" "Still need to make move for game\n" === "" "Still need to make moves for both games\n" === "" "Still need to make moves for all %d games\n" === "" "Still need to make a move for game %s\n" === "" "No unfinished games\n" === "" "Ready to send mail\n" === "" "Still need to make moves for games %s\n" === "" "Edit comment" === "" "Edit comment on %d.%s%s" === "" "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis." === "Comenzando modo de anlisis...\nSi este mensaje permanece, su programa de ajedrez no admite anlisis." "It is not White's turn" === "" "It is not Black's turn" === "" "Wait until your turn,\nor select Move Now" === "" "Starting second chess program" === "" "Training mode off" === "" "Training mode on" === "" "Already at end of game" === "" "Warning: You are still playing a game" === "" "Warning: You are still observing a game" === "" "Warning: You are still examining a game" === "" "It is Black's turn" === "" "It is White's turn" === "" "That square is occupied" === "" "There is no pending offer on this move" === "" "Your opponent is not out of time" === "" "Black offers a draw" === "" "White offers a draw" === "" "You must make your move before offering a draw" === "" "You are not examining a game" === "" "You can't revert while pausing" === "" "Wait until your turn,\nor select Move Now" === "" "It is your turn" === "" "Wait until your turn" === "" "No hint available" === "" "Analysis (%s)" === "" "Comment" === "" "Comment on %d.%s%s" === "" "Both flags fell" === "" "White's flag fell" === "" "Black's flag fell" === "" "Bad FEN position in clipboard" === "" "No response from ICS" === "" "You cannot do this while you are playing or observing" === "" "Click in holdings to choose piece" === "" END-OF-GAME MESSAGES (should they be translated?) ## I think that only for visualization and not for PGN, as PGN files are shared all around the world ## [OK, I adapted the source that way. So please translate.] "Game aborted" === "Vn c bi bo d" "White wins on time" === "Trng thng thi gian" "Black wins on time" === "en thng thi gian" "Both players ran out of time" === "Ca hai bn ht thi gian" "White resigns" === "Trng Xin Thua" "Black resigns" === "en Xin Thua" "White mates" === "Trng Chiu Ht" "Black mates" === "en Chiu Ht" "Draw" === "Hoa" "Draw agreed" === "ng y hoa" "Xboard adjudication: King destroyed" === "" "Xboard adjudication: Bare king" === "" "Xboard adjudication: 3rd check" === "" "Xboard adjudication: Stalemate" === "" "Xboard adjudication: Checkmate" === "" "Xboard adjudication: Insufficient mating material" === "" "Xboard adjudication: Trivial draw" === "" "XBoard adjudication: repetition draw" === "" "Xboard adjudication: perpetual checking" === "" "Xboard adjudication: perpetual chasing" === "" "%Xboard adjudication: perpetual chasing of" === "" "Xboard adjudication: 50-move rule" === "" "Draw claim: 50-move rule" === "" "Draw claim: 3-fold repetition" === "" "Draw claim: insufficient mating material" === "" "Xboard adjudication: long game" === "" "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d" === "" "Xboard: Forfeit due to illegal move: %s (%c%c%c%c)%c" === "" "Xboard adjudication" === "" "User adjudication" === "" "False win claim: '%s'" === "" "False draw claim: '%s'" === "" "xboard exit" === "" xboard-4.9.1/winboard/res/0000755000175000001440000000000012717001265012400 500000000000000xboard-4.9.1/winboard/res/winboard.exe.manifest0000644000175000001440000000124412717001265016436 00000000000000 Winboard 32-bit application. xboard-4.9.1/winboard/bitmaps/0000755000175000001440000000000012717001265013246 500000000000000xboard-4.9.1/winboard/bitmaps/p33s.bmp0000644000175000001440000000050612717001265014457 00000000000000BMF>(!!} } ??????xboard-4.9.1/winboard/bitmaps/c72w.bmp0000644000175000001440000000163612717001265014456 00000000000000BM>(HH`??????xboard-4.9.1/winboard/bitmaps/f72w.bmp0000644000175000001440000000163612717001265014461 00000000000000BM>(HH`???????xboard-4.9.1/winboard/bitmaps/b58s.bmp0000644000175000001440000000101612717001265014445 00000000000000BM>(::} } ?? ??       ? ? ?xboard-4.9.1/winboard/bitmaps/q72s.bmp0000644000175000001440000000163612717001265014470 00000000000000BM>(HH`} } ????@??@@   ppx?x?x????????xboard-4.9.1/winboard/bitmaps/c58w.bmp0000644000175000001440000000101612717001265014452 00000000000000BM>(::} } ??????xboard-4.9.1/winboard/bitmaps/s72s.bmp0000644000175000001440000000163612717001265014472 00000000000000BM>(HH`??????????????~80|??xboard-4.9.1/winboard/bitmaps/e49w.bmp0000644000175000001440000000070612717001265014461 00000000000000BM>(11 0ǀǀ?>||???xboard-4.9.1/winboard/bitmaps/r80o.bmp0000644000175000001440000000177612717001265014471 00000000000000BM>(PP  ????????????????????????xboard-4.9.1/winboard/bitmaps/n45o.bmp0000644000175000001440000000064612717001265014461 00000000000000BM>(--h} } 888888888x/xxxxx~?]xboard-4.9.1/winboard/bitmaps/r87o.bmp0000644000175000001440000000212212717001265014462 00000000000000BMR>(WW} } ????????xboard-4.9.1/winboard/bitmaps/w72o.bmp0000644000175000001440000000163612717001265014472 00000000000000BM>(HH`??? ρ|??????????????y?p??????xboard-4.9.1/winboard/bitmaps/l45o.bmp0000644000175000001440000000064612717001265014457 00000000000000BM>(--h} } =}}}xboard-4.9.1/winboard/bitmaps/k21w.bmp0000644000175000001440000000022212717001265014446 00000000000000BM>(Txxxx8xboard-4.9.1/winboard/bitmaps/b54s.bmp0000644000175000001440000000075612717001265014453 00000000000000BM>(66} } x0||<| ?00000000xboard-4.9.1/winboard/bitmaps/a58w.bmp0000644000175000001440000000101612717001265014450 00000000000000BM>(::} } ? ????xboard-4.9.1/winboard/bitmaps/wn72s.bmp0000644000175000001440000000163612717001265014654 00000000000000BM>(HH`?? |~??????????~~~~? ?8??????xboard-4.9.1/winboard/bitmaps/r25s.bmp0000644000175000001440000000024212717001265014457 00000000000000BM>(d} } π????????cxboard-4.9.1/winboard/bitmaps/r54o.bmp0000644000175000001440000000075612717001265014467 00000000000000BM>(66} } ????xx>y>>xboard-4.9.1/winboard/bitmaps/m33w.bmp0000644000175000001440000000050612717001265014460 00000000000000BMF>(!!????xboard-4.9.1/winboard/bitmaps/p29s.bmp0000644000175000001440000000026212717001265014463 00000000000000BM>(t} } ????xboard-4.9.1/winboard/bitmaps/n29o.bmp0000644000175000001440000000026212717001265014455 00000000000000BM>(t} } 8888888x{xǽxxx???sxboard-4.9.1/winboard/bitmaps/a37w.bmp0000644000175000001440000000054612717001265014454 00000000000000BMf>(%%(} } xx 8x<???xx888xxboard-4.9.1/winboard/bitmaps/k58o.bmp0000644000175000001440000000101612717001265014452 00000000000000BM>(::} } ??s|??????0?<????xboard-4.9.1/winboard/bitmaps/a64s.bmp0000644000175000001440000000107612717001265014447 00000000000000BM>>(@@  ??g????????xboard-4.9.1/winboard/bitmaps/k80w.bmp0000644000175000001440000000177612717001265014472 00000000000000BM>(PP?????????xboard-4.9.1/winboard/bitmaps/q58s.bmp0000644000175000001440000000101612717001265014464 00000000000000BM>(::} } ???   ppp>x?????@?@?@|@||~?xboard-4.9.1/winboard/bitmaps/b33w.bmp0000644000175000001440000000050612717001265014445 00000000000000BMF>(!!???xboard-4.9.1/winboard/bitmaps/k116o.bmp0000644000175000001440000000357612717001265014542 00000000000000BM~>(tt@} } ????????>???????????~????????0??GG?G??????????>??????????xboard-4.9.1/winboard/bitmaps/a40s.bmp0000644000175000001440000000057612717001265014445 00000000000000BM~>(((@  >?_???xboard-4.9.1/winboard/bitmaps/k87s.bmp0000644000175000001440000000212212717001265014457 00000000000000BMR>(WW} } ??????<xx?<ǀp~<x~88~88~888~88p8~8<|x8~<x|<xp???cハ?ハ?ハハ?8??xboard-4.9.1/winboard/bitmaps/n72o.bmp0000644000175000001440000000163612717001265014461 00000000000000BM>(HH`} } ?????????????s?????σ3q??xboard-4.9.1/winboard/bitmaps/o72o.bmp0000644000175000001440000000163612717001265014462 00000000000000BM>(HH`??>?????????????????????????????????p??xboard-4.9.1/winboard/bitmaps/a54o.bmp0000644000175000001440000000075612717001265014446 00000000000000BM>(66} } 0|<<|0??'c?|||??xboard-4.9.1/winboard/bitmaps/cv37s.bmp0000644000175000001440000000054612717001265014640 00000000000000BMf>(%%(  ??? ''qxboard-4.9.1/winboard/bitmaps/p25o.bmp0000644000175000001440000000024212717001265014451 00000000000000BM>(d} } ߀߀xboard-4.9.1/winboard/bitmaps/f72o.bmp0000644000175000001440000000163612717001265014451 00000000000000BM>(HH`??Gg???(__t?????????<~xboard-4.9.1/winboard/bitmaps/a58o.bmp0000644000175000001440000000101612717001265014440 00000000000000BM>(::} } ? ?G?? ????????xboard-4.9.1/winboard/bitmaps/b29s.bmp0000644000175000001440000000026212717001265014445 00000000000000BM>(t} } 888_xboard-4.9.1/winboard/bitmaps/r25w.bmp0000644000175000001440000000024212717001265014463 00000000000000BM>(d?????????cxboard-4.9.1/winboard/bitmaps/w72w.bmp0000644000175000001440000000163612717001265014502 00000000000000BM>(HH`?????????????xboard-4.9.1/winboard/bitmaps/n58s.bmp0000644000175000001440000000101612717001265014461 00000000000000BM>(::} }  ?`|???<<xxx<???xboard-4.9.1/winboard/bitmaps/l49w.bmp0000644000175000001440000000070612717001265014470 00000000000000BM>(11???????????xboard-4.9.1/winboard/bitmaps/q21o.bmp0000644000175000001440000000022212717001265014444 00000000000000BM>(T  xxxxxxwXڈxboard-4.9.1/winboard/bitmaps/b40s.bmp0000644000175000001440000000057612717001265014446 00000000000000BM~>(((@  >??xboard-4.9.1/winboard/bitmaps/icon_ob.ico0000644000175000001440000000207612717001265015277 00000000000000 0& V( @@  %BPa X (   @@@@0@@0``0`E"*<Q@aA~??( @~??xboard-4.9.1/winboard/bitmaps/h72o.bmp0000644000175000001440000000163612717001265014453 00000000000000BM>(HH`?????????????s??? <>???σ3q??xboard-4.9.1/winboard/bitmaps/q29s.bmp0000644000175000001440000000026212717001265014464 00000000000000BM>(t} }  ?xxxx8888888瘇8}80axxboard-4.9.1/winboard/bitmaps/h49s.bmp0000644000175000001440000000070612717001265014460 00000000000000BM>(1177777777?O/G/Co!oo__߀  ? ߀/s`xboard-4.9.1/winboard/bitmaps/c45o.bmp0000644000175000001440000000064612717001265014446 00000000000000BM>(--h} } xϟx~~ϟxxxboard-4.9.1/winboard/bitmaps/p29o.bmp0000644000175000001440000000026212717001265014457 00000000000000BM>(t} } ϟ?xboard-4.9.1/winboard/bitmaps/r58o.bmp0000644000175000001440000000101612717001265014461 00000000000000BM>(::} } ????????????????????????????????????????????Ϟ|Ϟ|||xboard-4.9.1/winboard/bitmaps/b58o.bmp0000644000175000001440000000101612717001265014441 00000000000000BM>(::} } ? ?G?? ??????????????xboard-4.9.1/winboard/bitmaps/cv33s.bmp0000644000175000001440000000050612717001265014630 00000000000000BMF>(!!} } 88?88????@?@``< 07 @xboard-4.9.1/winboard/bitmaps/c37o.bmp0000644000175000001440000000054612717001265014446 00000000000000BMf>(%%(} } wwww88{{oooo{{88wwwwxboard-4.9.1/winboard/bitmaps/e33s.bmp0000644000175000001440000000050612717001265014444 00000000000000BMF>(!!0XFAÀǀðÀqxboard-4.9.1/winboard/bitmaps/b54w.bmp0000644000175000001440000000075612717001265014457 00000000000000BM>(660|<<|?xboard-4.9.1/winboard/bitmaps/c33w.bmp0000644000175000001440000000050612717001265014446 00000000000000BMF>(!!} } ???π????π???xboard-4.9.1/winboard/bitmaps/r25o.bmp0000644000175000001440000000024212717001265014453 00000000000000BM>(d} } ?ocxboard-4.9.1/winboard/bitmaps/a72s.bmp0000644000175000001440000000163612717001265014450 00000000000000BM>(HH`?~???0???????xboard-4.9.1/winboard/bitmaps/n29s.bmp0000644000175000001440000000026212717001265014461 00000000000000BM>(t} } 8x<xxx `'11{xboard-4.9.1/winboard/bitmaps/r108w.bmp0000644000175000001440000000337612717001265014560 00000000000000BM>(ll??xboard-4.9.1/winboard/bitmaps/unknown_14.ico0000644000175000001440000000044612717001265015671 00000000000000(<<xboard-4.9.1/winboard/bitmaps/a72w.bmp0000644000175000001440000000163612717001265014454 00000000000000BM>(HH`?~?????????xboard-4.9.1/winboard/bitmaps/b80o.bmp0000644000175000001440000000177612717001265014451 00000000000000BM>(PP  0? ~~????????????????xboard-4.9.1/winboard/bitmaps/n64w.bmp0000644000175000001440000000107612717001265014470 00000000000000BM>>(@@???????????@xboard-4.9.1/winboard/bitmaps/w33w.bmp0000644000175000001440000000050612717001265014472 00000000000000BMF>(!!??xboard-4.9.1/winboard/bitmaps/cv64s.bmp0000644000175000001440000000107612717001265014637 00000000000000BM>>(@@} } ??????c@c````0??0p@`8Ãxboard-4.9.1/winboard/bitmaps/analyze2_14.ico0000644000175000001440000000044612717001265015717 00000000000000(wwwwwwwpww?<  <xboard-4.9.1/winboard/bitmaps/board.ico0000644000175000001440000000207612717001265014756 00000000000000 & 0( @{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{( @xboard-4.9.1/winboard/bitmaps/cv54s.bmp0000644000175000001440000000075612717001265014642 00000000000000BM>(66} } ??????????33``p?0?8 pqAaxboard-4.9.1/winboard/bitmaps/p21s.bmp0000644000175000001440000000022212717001265014447 00000000000000BM>(T  xxxxboard-4.9.1/winboard/bitmaps/b129s.bmp0000644000175000001440000000512212717001265014526 00000000000000BMR >( } } ?????????p????xboard-4.9.1/winboard/bitmaps/dk72s.bmp0000644000175000001440000000163612717001265014626 00000000000000BM>(HH`????????ccc??xboard-4.9.1/winboard/bitmaps/k45o.bmp0000644000175000001440000000064612717001265014456 00000000000000BM>(--h} } ߀_p{xxxϟxxboard-4.9.1/winboard/bitmaps/n108o.bmp0000644000175000001440000000337612717001265014544 00000000000000BM>(ll} } ?????????????qpx?????ǟ????????srpxx|>????`xg|#CqGxboard-4.9.1/winboard/bitmaps/n58o.bmp0000644000175000001440000000101612717001265014455 00000000000000BM>(::} } ?????y??????G`p`Dgxboard-4.9.1/winboard/bitmaps/q25w.bmp0000644000175000001440000000024212717001265014462 00000000000000BM>(d"#"#"1c9c8w8ccxboard-4.9.1/winboard/bitmaps/cv33w.bmp0000644000175000001440000000050612717001265014634 00000000000000BMF>(!!} } pppp<x@??xboard-4.9.1/winboard/bitmaps/b116s.bmp0000644000175000001440000000357612717001265014535 00000000000000BM~>(tt@} } @???????@??@?xboard-4.9.1/winboard/bitmaps/h33o.bmp0000644000175000001440000000050612717001265014443 00000000000000BMF>(!!} } }?π߿ππߟߟA?c?gxboard-4.9.1/winboard/bitmaps/cv45s.bmp0000644000175000001440000000064612717001265014640 00000000000000BM>(--h??!~| @ ?? xboard-4.9.1/winboard/bitmaps/dk33s.bmp0000644000175000001440000000050612717001265014616 00000000000000BMF>(!!} } ?????xboard-4.9.1/winboard/bitmaps/r33w.bmp0000644000175000001440000000050612717001265014465 00000000000000BMF>(!!????xboard-4.9.1/winboard/bitmaps/ln72s.bmp0000644000175000001440000000163612717001265014641 00000000000000BM>(HH`?? ???p`?0pf?8f?83; 33? 1# ` ǀ ```afcbccc3c@3c@3c@3cccc cC 0p?`?0c0?c0 f0>00```??xboard-4.9.1/winboard/bitmaps/wolf72o.bmp0000644000175000001440000000163612717001265015173 00000000000000BM>(HH`||????>?~???????Ͽϟ???????q???xboard-4.9.1/winboard/bitmaps/r37s.bmp0000644000175000001440000000054612717001265014471 00000000000000BMf>(%%(} } xboard-4.9.1/winboard/bitmaps/g72w.bmp0000644000175000001440000000163612717001265014462 00000000000000BM>(HH`} } ???????<>>~?~???????????xboard-4.9.1/winboard/bitmaps/k37o.bmp0000644000175000001440000000054612717001265014456 00000000000000BMf>(%%(} } ?C|pwxxwwx|wxboard-4.9.1/winboard/bitmaps/p40w.bmp0000644000175000001440000000057612717001265014470 00000000000000BM~>(((@??xboard-4.9.1/winboard/bitmaps/a72o.bmp0000644000175000001440000000163612717001265014444 00000000000000BM>(HH`?~?~<????p???????xboard-4.9.1/winboard/bitmaps/wl49s.bmp0000644000175000001440000000070612717001265014653 00000000000000BM>(11?@_ 8>p_p ???xboard-4.9.1/winboard/bitmaps/n25o.bmp0000644000175000001440000000024212717001265014447 00000000000000BM>(d} } {Njπw?Wxboard-4.9.1/winboard/bitmaps/r49s.bmp0000644000175000001440000000070612717001265014472 00000000000000BM>(11} } ?????xboard-4.9.1/winboard/bitmaps/as33o.bmp0000644000175000001440000000050612717001265014617 00000000000000BMF>(!!ހݾ]}ww므߀o{{}]׽{{{߀޽{{ۀxboard-4.9.1/winboard/bitmaps/q45w.bmp0000644000175000001440000000064612717001265014474 00000000000000BM>(--h ``00``00`08x8x|xx|x|~x~x8~~~?||~?xboard-4.9.1/winboard/bitmaps/a33s.bmp0000644000175000001440000000050612717001265014440 00000000000000BMF>(!!} } xboard-4.9.1/winboard/bitmaps/cv64o.bmp0000644000175000001440000000107612717001265014633 00000000000000BM>>(@@} } ???????>???>???>?>?>?39?y?????~?|qgO????ý33xboard-4.9.1/winboard/bitmaps/k21o.bmp0000644000175000001440000000022212717001265014436 00000000000000BM>(T  xxxx8w'xboard-4.9.1/winboard/bitmaps/b95w.bmp0000644000175000001440000000226212717001265014456 00000000000000BM>(__t????????xboard-4.9.1/winboard/bitmaps/l49o.bmp0000644000175000001440000000070612717001265014460 00000000000000BM>(11????????~?xboard-4.9.1/winboard/bitmaps/l40s.bmp0000644000175000001440000000057612717001265014460 00000000000000BM~>(((@  )????xboard-4.9.1/winboard/bitmaps/q129w.bmp0000644000175000001440000000512212717001265014551 00000000000000BMR >( ?88<<<<<<?~~??~~?~~??????????????????xboard-4.9.1/winboard/bitmaps/k45w.bmp0000644000175000001440000000064612717001265014466 00000000000000BM>(--hxx88888xx?xboard-4.9.1/winboard/bitmaps/l54s.bmp0000644000175000001440000000075612717001265014465 00000000000000BM>(66  Ix0?0000000000000???xboard-4.9.1/winboard/bitmaps/c33s.bmp0000644000175000001440000000050612717001265014442 00000000000000BMF>(!!} } ?π77 0??   ?? 077π?xboard-4.9.1/winboard/bitmaps/n72w.bmp0000644000175000001440000000163612717001265014471 00000000000000BM>(HH`?????????p?0p??xboard-4.9.1/winboard/bitmaps/q45o.bmp0000644000175000001440000000064612717001265014464 00000000000000BM>(--h} } O-ٝϝϞooooo{{}x{}x}~x~x8X~~~?}}~?xboard-4.9.1/winboard/bitmaps/n45w.bmp0000644000175000001440000000064612717001265014471 00000000000000BM>(--h888888888xxxxxx~?xboard-4.9.1/winboard/bitmaps/as49o.bmp0000644000175000001440000000070612717001265014630 00000000000000BM>(11o{w߀_￀^z{~o?߿~߀w߀?߿_~~߽߿~~~~߿߿￀?xboard-4.9.1/winboard/bitmaps/k29w.bmp0000644000175000001440000000026212717001265014462 00000000000000BM>(tx88x0`xboard-4.9.1/winboard/bitmaps/as72o.bmp0000644000175000001440000000163612717001265014627 00000000000000BM>(HH`?88Ϗ|~|<<<~????G8<|~~>(@@  ?p?????x??????`q`88`ppp? 0?8899s?pa?<p< 0?3333s?xboard-4.9.1/winboard/bitmaps/cv54o.bmp0000644000175000001440000000075612717001265014636 00000000000000BM>(66} } y>y>x>x>?g????7xboard-4.9.1/winboard/bitmaps/k25w.bmp0000644000175000001440000000024212717001265014454 00000000000000BM>(d?Axboard-4.9.1/winboard/bitmaps/c33o.bmp0000644000175000001440000000050612717001265014436 00000000000000BMF>(!!} } π7?π￀_￀π?7πxboard-4.9.1/winboard/bitmaps/b29o.bmp0000644000175000001440000000026212717001265014441 00000000000000BM>(t} } 8}8?/{}ϟxboard-4.9.1/winboard/bitmaps/h49w.bmp0000644000175000001440000000070612717001265014464 00000000000000BM>(11???`xboard-4.9.1/winboard/bitmaps/q58o.bmp0000644000175000001440000000101612717001265014460 00000000000000BM>(::} } ??? ?<@xlax|?p|?bx?fy?'y'qcssO#qO'y>?'???????@?@|@π|Ϟ||~xboard-4.9.1/winboard/bitmaps/n21w.bmp0000644000175000001440000000022212717001265014451 00000000000000BM>(Tр@ 88xxboard-4.9.1/winboard/bitmaps/k64w.bmp0000644000175000001440000000107612717001265014465 00000000000000BM>>(@@?????????????????xboard-4.9.1/winboard/bitmaps/n80s.bmp0000644000175000001440000000177612717001265014471 00000000000000BM>(PP  <<<<<<<<<<<==yyAy`y y0?y{ ?@` 0??<<x88?<???xboard-4.9.1/winboard/bitmaps/a33w.bmp0000644000175000001440000000050612717001265014444 00000000000000BMF>(!!} } xboard-4.9.1/winboard/bitmaps/p45s.bmp0000644000175000001440000000064612717001265014467 00000000000000BM>(--h} } ????xboard-4.9.1/winboard/bitmaps/c40w.bmp0000644000175000001440000000057612717001265014453 00000000000000BM~>(((@  ~xboard-4.9.1/winboard/bitmaps/p108w.bmp0000644000175000001440000000337612717001265014556 00000000000000BM>(ll????xboard-4.9.1/winboard/bitmaps/k54w.bmp0000644000175000001440000000075612717001265014470 00000000000000BM>(66??????||<<<<<<|| |xboard-4.9.1/winboard/bitmaps/k40s.bmp0000644000175000001440000000057612717001265014457 00000000000000BM~>(((@  ? x0_}?/6" k I @"0oϟxboard-4.9.1/winboard/bitmaps/n54w.bmp0000644000175000001440000000075612717001265014473 00000000000000BM>(66|<<<<<<<<<<<|||?|||p? >?xboard-4.9.1/winboard/bitmaps/f72s.bmp0000644000175000001440000000163612717001265014455 00000000000000BM>(HH`9?p?????????xboard-4.9.1/winboard/bitmaps/b116o.bmp0000644000175000001440000000357612717001265014531 00000000000000BM~>(tt@} } ?p??@???A??????????????xboard-4.9.1/winboard/bitmaps/n25w.bmp0000644000175000001440000000024212717001265014457 00000000000000BM>(dx?Gxboard-4.9.1/winboard/bitmaps/c37w.bmp0000644000175000001440000000054612717001265014456 00000000000000BMf>(%%(} } 8888xboard-4.9.1/winboard/bitmaps/r95s.bmp0000644000175000001440000000226212717001265014472 00000000000000BM>(__t} } ???????????xboard-4.9.1/winboard/bitmaps/n116w.bmp0000644000175000001440000000357612717001265014555 00000000000000BM~>(tt@??p0????? ????xboard-4.9.1/winboard/bitmaps/p40s.bmp0000644000175000001440000000057612717001265014464 00000000000000BM~>(((@  ??xboard-4.9.1/winboard/bitmaps/k116s.bmp0000644000175000001440000000357612717001265014546 00000000000000BM~>(tt@} } ??x?????????x??????????? ?????>>xqx8?<?8?x?p???øpøxǀ<<8x||??88>888?8?88??xboard-4.9.1/winboard/bitmaps/l72w.bmp0000644000175000001440000000163612717001265014467 00000000000000BM>(HH`??????xboard-4.9.1/winboard/bitmaps/r129w.bmp0000644000175000001440000000512212717001265014552 00000000000000BMR >( ?????????xboard-4.9.1/winboard/bitmaps/l37s.bmp0000644000175000001440000000054612717001265014463 00000000000000BMf>(%%(} } W# ? ? ?   xboard-4.9.1/winboard/bitmaps/q87w.bmp0000644000175000001440000000212212717001265014471 00000000000000BMR>(WW????0008888><x>||~||~||~>?>???xboard-4.9.1/winboard/bitmaps/b64o.bmp0000644000175000001440000000107612717001265014444 00000000000000BM>>(@@  ???O???xboard-4.9.1/winboard/bitmaps/icon_w.bmp0000644000175000001440000000027612717001265015151 00000000000000BM>(   ???=77 `@0xboard-4.9.1/winboard/bitmaps/n49o.bmp0000644000175000001440000000070612717001265014462 00000000000000BM>(11} } /πππππ߀??.nxboard-4.9.1/winboard/bitmaps/n45s.bmp0000644000175000001440000000064612717001265014465 00000000000000BM>(--h} } xxxxxxxxxxG? ?/_@xboard-4.9.1/winboard/bitmaps/e129o.bmp0000644000175000001440000000512212717001265014525 00000000000000BMR >( ????????yyy<q<?|I>?<<x~y~?ǟǟǏ?>|y9?????><<|||yyyyyyyy998<??0????xboard-4.9.1/winboard/bitmaps/q40s.bmp0000644000175000001440000000057612717001265014465 00000000000000BM~>(((@  ?>>? A`A`xboard-4.9.1/winboard/bitmaps/b45s.bmp0000644000175000001440000000064612717001265014451 00000000000000BM>(--h} } x88x????????xboard-4.9.1/winboard/bitmaps/k49s.bmp0000644000175000001440000000070612717001265014463 00000000000000BM>(11} } 9#C??@O@'@`   P H$b#/߀~4??'xboard-4.9.1/winboard/bitmaps/k129w.bmp0000644000175000001440000000512212717001265014543 00000000000000BMR >( ??????p???????????????????xboard-4.9.1/winboard/bitmaps/b40o.bmp0000644000175000001440000000057612717001265014442 00000000000000BM~>(((@  >?o>xboard-4.9.1/winboard/bitmaps/p49o.bmp0000644000175000001440000000070612717001265014464 00000000000000BM>(11} } xboard-4.9.1/winboard/bitmaps/b129o.bmp0000644000175000001440000000512212717001265014522 00000000000000BMR >( } } ????????????????????????????????????????xboard-4.9.1/winboard/bitmaps/cv37o.bmp0000644000175000001440000000054612717001265014634 00000000000000BMf>(%%(  <www?y???߯_? ?xboard-4.9.1/winboard/bitmaps/w33o.bmp0000644000175000001440000000050612717001265014462 00000000000000BMF>(!!?߀׀?cˀ;߀xboard-4.9.1/winboard/bitmaps/n116s.bmp0000644000175000001440000000357612717001265014551 00000000000000BM~>(tt@} } 0?`000xx?||<?0>>?>?|?|| >|??~>>??????xboard-4.9.1/winboard/bitmaps/wp33o.bmp0000644000175000001440000000050612717001265014642 00000000000000BMF>(!!?߀׀?cˀ;߀xboard-4.9.1/winboard/bitmaps/r29s.bmp0000644000175000001440000000026212717001265014465 00000000000000BM>(t} } xxx8a8axboard-4.9.1/winboard/bitmaps/q40o.bmp0000644000175000001440000000057612717001265014461 00000000000000BM~>(((@  xC|O}>y>y]znݻonݻoݻׯxboard-4.9.1/winboard/bitmaps/q54w.bmp0000644000175000001440000000075612717001265014476 00000000000000BM>(66????????  <>~~| ~? ~? xx p?8 <???>xboard-4.9.1/winboard/bitmaps/n33s.bmp0000644000175000001440000000050612717001265014455 00000000000000BMF>(!!} } |>777'oo@O߀@@?0gxboard-4.9.1/winboard/bitmaps/r108o.bmp0000644000175000001440000000337612717001265014550 00000000000000BM>(ll} } ??????????????xboard-4.9.1/winboard/bitmaps/b108w.bmp0000644000175000001440000000337612717001265014540 00000000000000BM>(ll???????????xboard-4.9.1/winboard/bitmaps/k95w.bmp0000644000175000001440000000226212717001265014467 00000000000000BM>(__t?????????????????>?xboard-4.9.1/winboard/bitmaps/b72s.bmp0000644000175000001440000000163612717001265014451 00000000000000BM>(HH`} } ?<??????<<???xboard-4.9.1/winboard/bitmaps/q37w.bmp0000644000175000001440000000054612717001265014474 00000000000000BMf>(%%(xxÎxǏxǏ?8>߾8xboard-4.9.1/winboard/bitmaps/r45o.bmp0000644000175000001440000000064612717001265014465 00000000000000BM>(--h|}}>xboard-4.9.1/winboard/bitmaps/r72s.bmp0000644000175000001440000000163612717001265014471 00000000000000BM>(HH`} } ????????xboard-4.9.1/winboard/bitmaps/n21o.bmp0000644000175000001440000000022212717001265014441 00000000000000BM>(T  ?џOϯϘ88xCxboard-4.9.1/winboard/bitmaps/o49s.bmp0000644000175000001440000000070612717001265014467 00000000000000BM>(11~?~?~< '''@@??xboard-4.9.1/winboard/bitmaps/c64o.bmp0000644000175000001440000000107612717001265014445 00000000000000BM>>(@@  ?O????|>O??ϟ??g'g?ϟ???????xboard-4.9.1/winboard/bitmaps/icon_o.ico0000644000175000001440000000050612717001265015131 00000000000000 0( @~?gxboard-4.9.1/winboard/bitmaps/dk33o.bmp0000644000175000001440000000050612717001265014612 00000000000000BMF>(!!} } ?߀߀߀xboard-4.9.1/winboard/bitmaps/o33w.bmp0000644000175000001440000000050612717001265014462 00000000000000BMF>(!!?xboard-4.9.1/winboard/bitmaps/q25o.bmp0000644000175000001440000000024212717001265014452 00000000000000BM>(d} } ߀ǀ7ݛꪫꪫ֪k9k8Nw9nck_xboard-4.9.1/winboard/bitmaps/ws49o.bmp0000644000175000001440000000070612717001265014656 00000000000000BM>(11?߀o??c߀_߀߀߀??xboard-4.9.1/winboard/bitmaps/n33o.bmp0000644000175000001440000000050612717001265014451 00000000000000BMF>(!!} } }?πππߟߟ??Ogxboard-4.9.1/winboard/bitmaps/wl49o.bmp0000644000175000001440000000070612717001265014647 00000000000000BM>(11?߀o??s߀_s߀߀߀??xboard-4.9.1/winboard/bitmaps/p72s.bmp0000644000175000001440000000163612717001265014467 00000000000000BM>(HH`} } ???????????xboard-4.9.1/winboard/bitmaps/k72s.bmp0000644000175000001440000000163612717001265014462 00000000000000BM>(HH`} } 8??<<????`?ǃfx8fpf?f?ÀÀ<<fpf88?p?>Ã|?y?ß?~?xboard-4.9.1/winboard/bitmaps/c40s.bmp0000644000175000001440000000057612717001265014447 00000000000000BM~>(((@  ~~A#''#! @~xboard-4.9.1/winboard/bitmaps/as33w.bmp0000644000175000001440000000050612717001265014627 00000000000000BMF>(!!AA??xboard-4.9.1/winboard/bitmaps/p54w.bmp0000644000175000001440000000075612717001265014475 00000000000000BM>(66????xboard-4.9.1/winboard/bitmaps/wolf49o.bmp0000644000175000001440000000070612717001265015174 00000000000000BM>(11?;߸x|>߀߀߀߀߀?߀~~7xboard-4.9.1/winboard/bitmaps/k45s.bmp0000644000175000001440000000064612717001265014462 00000000000000BM>(--h} } ǀ_Goxx8 @@(xHxL ~PS\__ȟ?xboard-4.9.1/winboard/bitmaps/l72o.bmp0000644000175000001440000000163612717001265014457 00000000000000BM>(HH`"?c????????>>xboard-4.9.1/winboard/bitmaps/wolf49s.bmp0000644000175000001440000000070612717001265015200 00000000000000BM>(11!@ @?? 08? ?@?@? ??xboard-4.9.1/winboard/bitmaps/p58o.bmp0000644000175000001440000000101612717001265014457 00000000000000BM>(::} } ??????xboard-4.9.1/winboard/bitmaps/h49o.bmp0000644000175000001440000000070612717001265014454 00000000000000BM>(11/πππππ߀??|?x`?.nxboard-4.9.1/winboard/bitmaps/n95o.bmp0000644000175000001440000000226212717001265014462 00000000000000BM>(__t} } ??????????????????ǟ???? ?xx(11???߀߀߀??߿o__o߿??߀߀߀???xboard-4.9.1/winboard/bitmaps/k54s.bmp0000644000175000001440000000075612717001265014464 00000000000000BM>(66} } ??????~?????8qp8||<<<<3<1<x|xx<| |yxboard-4.9.1/winboard/bitmaps/r72o.bmp0000644000175000001440000000163612717001265014465 00000000000000BM>(HH`} } ?????????~?~?~?~?~?xboard-4.9.1/winboard/bitmaps/r45s.bmp0000644000175000001440000000064612717001265014471 00000000000000BM>(--h????>>>xboard-4.9.1/winboard/bitmaps/r54w.bmp0000644000175000001440000000075612717001265014477 00000000000000BM>(66??>>>xboard-4.9.1/winboard/bitmaps/b54o.bmp0000644000175000001440000000075612717001265014447 00000000000000BM>(66} } 0|<<|0??'c???01yy1xboard-4.9.1/winboard/bitmaps/a58s.bmp0000644000175000001440000000101612717001265014444 00000000000000BM>(::} } ? ???  ?      xboard-4.9.1/winboard/bitmaps/u49o.bmp0000644000175000001440000000070612717001265014471 00000000000000BM>(11&π{π}πππ߀??w.wnxboard-4.9.1/winboard/bitmaps/u72w.bmp0000644000175000001440000000163612717001265014500 00000000000000BM>(HH`?A???~????p?@0p???xboard-4.9.1/winboard/bitmaps/g72s.bmp0000644000175000001440000000163612717001265014456 00000000000000BM>(HH`} } ???????????8?8?<<?|?~~xboard-4.9.1/winboard/bitmaps/o49o.bmp0000644000175000001440000000070612717001265014463 00000000000000BM>(11~?>߀߀߀߀߀߀߀߀߀߀߀߀ǀ׀ǀ??π??xboard-4.9.1/winboard/bitmaps/k108s.bmp0000644000175000001440000000337612717001265014545 00000000000000BM>(ll} } ???>?x?>q>q|qqqx8?(PP   y ?|>????????????????xboard-4.9.1/winboard/bitmaps/as49s.bmp0000644000175000001440000000070612717001265014634 00000000000000BM>(11?xp ? _?@@ ?A "p? ?@@? "@A@ ?????????xboard-4.9.1/winboard/bitmaps/wolf49w.bmp0000644000175000001440000000070612717001265015204 00000000000000BM>(11???????xboard-4.9.1/winboard/bitmaps/b25w.bmp0000644000175000001440000000024212717001265014443 00000000000000BM>(d>{???xboard-4.9.1/winboard/bitmaps/k49w.bmp0000644000175000001440000000070612717001265014467 00000000000000BM>(11?0?xboard-4.9.1/winboard/bitmaps/e33w.bmp0000644000175000001440000000050612717001265014450 00000000000000BMF>(!!@ÀǀÀÀxboard-4.9.1/winboard/bitmaps/c40o.bmp0000644000175000001440000000057612717001265014443 00000000000000BM~>(((@  ~~~}}~~xboard-4.9.1/winboard/bitmaps/n29w.bmp0000644000175000001440000000026212717001265014465 00000000000000BM>(t8888888xxx<xxx?#sxboard-4.9.1/winboard/bitmaps/l37o.bmp0000644000175000001440000000054612717001265014457 00000000000000BMf>(%%(} } W߿߿߿wwwxboard-4.9.1/winboard/bitmaps/b37s.bmp0000644000175000001440000000054612717001265014451 00000000000000BMf>(%%(} } xx 8x<????     ??xboard-4.9.1/winboard/bitmaps/c54s.bmp0000644000175000001440000000075612717001265014454 00000000000000BM>(66} } 1yy1??<?x<8p00`` ? ?  ??``008p<??<1yy1xboard-4.9.1/winboard/bitmaps/k33s.bmp0000644000175000001440000000050612717001265014452 00000000000000BMF>(!!} } ?p??`?????O@'@@   P ,#,/?xboard-4.9.1/winboard/bitmaps/o33o.bmp0000644000175000001440000000050612717001265014452 00000000000000BMF>(!!w?xboard-4.9.1/winboard/bitmaps/wn72o.bmp0000644000175000001440000000163612717001265014650 00000000000000BM>(HH`??? ρ|??????????y?p??????xboard-4.9.1/winboard/bitmaps/cv45w.bmp0000644000175000001440000000064612717001265014644 00000000000000BM>(--h?>|x??xboard-4.9.1/winboard/bitmaps/cross.ico0000644000175000001440000000137612717001265015022 00000000000000 ( @ ϙϙxboard-4.9.1/winboard/bitmaps/q116s.bmp0000644000175000001440000000357612717001265014554 00000000000000BM~>(tt@} } ?@????????  <<~<~<>>~??????????xboard-4.9.1/winboard/bitmaps/s49w.bmp0000644000175000001440000000070612717001265014477 00000000000000BM>(11??π࿀?????xboard-4.9.1/winboard/bitmaps/dk49w.bmp0000644000175000001440000000070612717001265014633 00000000000000BM>(11??????xboard-4.9.1/winboard/bitmaps/camel49o.bmp0000644000175000001440000000070612717001265015306 00000000000000BM>(11?oo珀w}xboard-4.9.1/winboard/bitmaps/e49s.bmp0000644000175000001440000000070612717001265014455 00000000000000BM>(11Y.3]naq1ǀǀ ?>}|        C???xboard-4.9.1/winboard/bitmaps/g33w.bmp0000644000175000001440000000050612717001265014452 00000000000000BMF>(!!} }  !a a ??ߟÇÇxboard-4.9.1/winboard/bitmaps/n21s.bmp0000644000175000001440000000022212717001265014445 00000000000000BM>(T  ɀ!xx xboard-4.9.1/winboard/bitmaps/q49s.bmp0000644000175000001440000000070612717001265014471 00000000000000BM>(11} } ;߀????  8 8 x<<||π|π???????xboard-4.9.1/winboard/bitmaps/b80w.bmp0000644000175000001440000000177612717001265014461 00000000000000BM>(PP??????????xboard-4.9.1/winboard/bitmaps/icon_ow.ico0000644000175000001440000000207612717001265015324 00000000000000 0& V( @?=/'g: ~??( @~??xboard-4.9.1/winboard/bitmaps/white_14.ico0000644000175000001440000000044612717001265015312 00000000000000(<  <xboard-4.9.1/winboard/bitmaps/b87s.bmp0000644000175000001440000000212212717001265014446 00000000000000BMR>(WW} } |??? ??888888888888?????xboard-4.9.1/winboard/bitmaps/r80w.bmp0000644000175000001440000000177612717001265014501 00000000000000BM>(PP?xboard-4.9.1/winboard/bitmaps/clock_14.ico0000644000175000001440000000044612717001265015265 00000000000000(?|<  <|xboard-4.9.1/winboard/bitmaps/v49o.bmp0000644000175000001440000000070612717001265014472 00000000000000BM>(11??[;π?Ǜxboard-4.9.1/winboard/bitmaps/p80w.bmp0000644000175000001440000000177612717001265014477 00000000000000BM>(PP????xboard-4.9.1/winboard/bitmaps/k72w.bmp0000644000175000001440000000163612717001265014466 00000000000000BM>(HH`????????x???xboard-4.9.1/winboard/bitmaps/g49s.bmp0000644000175000001440000000070612717001265014457 00000000000000BM>(11} } ???p?@???xboard-4.9.1/winboard/bitmaps/c58o.bmp0000644000175000001440000000101612717001265014442 00000000000000BM>(::} } >>???ss?s??>?ϟ?g?O?O?O?gϟ?>???sss???>>xboard-4.9.1/winboard/bitmaps/wp33s.bmp0000644000175000001440000000050612717001265014646 00000000000000BMF>(!!?'<|3CÀ 0?xboard-4.9.1/winboard/bitmaps/q87s.bmp0000644000175000001440000000212212717001265014465 00000000000000BMR>(WW} } ?????00088>88>||~||~||~~>?>???xboard-4.9.1/winboard/bitmaps/k108o.bmp0000644000175000001440000000337612717001265014541 00000000000000BM>(ll} } ??0>????`|???????????????????q??xboard-4.9.1/winboard/bitmaps/m33o.bmp0000644000175000001440000000050612717001265014450 00000000000000BMF>(!!?? ߀߀xboard-4.9.1/winboard/bitmaps/cv40s.bmp0000644000175000001440000000057612717001265014635 00000000000000BM~>(((@  ?g8xboard-4.9.1/winboard/bitmaps/b21s.bmp0000644000175000001440000000022212717001265014431 00000000000000BM>(T  p  xboard-4.9.1/winboard/bitmaps/r40o.bmp0000644000175000001440000000057612717001265014462 00000000000000BM~>(((@  ??xboard-4.9.1/winboard/bitmaps/r87w.bmp0000644000175000001440000000212212717001265014472 00000000000000BMR>(WW???????xboard-4.9.1/winboard/bitmaps/l54o.bmp0000644000175000001440000000075612717001265014461 00000000000000BM>(66  ????<ϟϟ???yyy333xboard-4.9.1/winboard/bitmaps/v33o.bmp0000644000175000001440000000050612717001265014461 00000000000000BMF>(!!π~{ x?|xboard-4.9.1/winboard/bitmaps/wp72s.bmp0000644000175000001440000000163612717001265014656 00000000000000BM>(HH`?? |~???????? 8? ????xboard-4.9.1/winboard/bitmaps/v49s.bmp0000644000175000001440000000070612717001265014476 00000000000000BM>(11@@ _ ` ?C @8?8d d?xboard-4.9.1/winboard/bitmaps/q95o.bmp0000644000175000001440000000226212717001265014465 00000000000000BM>(__t} } ???x<???????? `@??` ?8889?>?~??~????ǏǏǏ㏏Ǐ??G???GGG>?????> >?~?~?~?x<xboard-4.9.1/winboard/bitmaps/b25o.bmp0000644000175000001440000000024212717001265014433 00000000000000BM>(d} } >{Ƀ߀߀߀߀߀>xboard-4.9.1/winboard/bitmaps/l45w.bmp0000644000175000001440000000064612717001265014467 00000000000000BM>(--h} } ????xboard-4.9.1/winboard/bitmaps/ws33s.bmp0000644000175000001440000000050612717001265014651 00000000000000BMF>(!!?'<|3C@ÀC 0?xboard-4.9.1/winboard/bitmaps/r64o.bmp0000644000175000001440000000107612717001265014464 00000000000000BM>>(@@  ?????????????ϟ?ϟ???xboard-4.9.1/winboard/bitmaps/b108o.bmp0000644000175000001440000000337612717001265014530 00000000000000BM>(ll} } ???????????????????????xboard-4.9.1/winboard/bitmaps/r21o.bmp0000644000175000001440000000022212717001265014445 00000000000000BM>(T  88xxx!xxxboard-4.9.1/winboard/bitmaps/q33o.bmp0000644000175000001440000000050612717001265014454 00000000000000BMF>(!!} } ?߀???߀?O( o淀ַ׀׀箺瞼Ϟ~_}9}>xboard-4.9.1/winboard/bitmaps/cv64w.bmp0000644000175000001440000000107612717001265014643 00000000000000BM>>(@@} } ?????????????~|p`@???xboard-4.9.1/winboard/bitmaps/v49w.bmp0000644000175000001440000000070612717001265014502 00000000000000BM>(11??C??xboard-4.9.1/winboard/bitmaps/n49s.bmp0000644000175000001440000000070612717001265014466 00000000000000BM>(11} } 77777777?//!ooo?__߀@   /0s0xxboard-4.9.1/winboard/bitmaps/f33s.bmp0000644000175000001440000000050612717001265014445 00000000000000BMF>(!!} } ;?#??xboard-4.9.1/winboard/bitmaps/wn33s.bmp0000644000175000001440000000050612717001265014644 00000000000000BMF>(!!?'<|3CÀ 0?xboard-4.9.1/winboard/bitmaps/p37s.bmp0000644000175000001440000000054612717001265014467 00000000000000BMf>(%%(} } ?xboard-4.9.1/winboard/bitmaps/b95o.bmp0000644000175000001440000000226212717001265014446 00000000000000BM>(__t} } G??????x<??? ???????xboard-4.9.1/winboard/bitmaps/black_14.ico0000644000175000001440000000044612717001265015246 00000000000000(<  <xboard-4.9.1/winboard/bitmaps/k25o.bmp0000644000175000001440000000024212717001265014444 00000000000000BM>(d} } ?ooπ/]xboard-4.9.1/winboard/bitmaps/m49s.bmp0000644000175000001440000000070612717001265014465 00000000000000BM>(11??|~?0??????xboard-4.9.1/winboard/bitmaps/wolf72s.bmp0000644000175000001440000000163612717001265015177 00000000000000BM>(HH`?00 a A??|@<||8p@0``0  00???????xboard-4.9.1/winboard/bitmaps/a64w.bmp0000644000175000001440000000107612717001265014453 00000000000000BM>>(@@  ????????xboard-4.9.1/winboard/bitmaps/q21s.bmp0000644000175000001440000000022212717001265014450 00000000000000BM>(T  xxxxx8888ȈȈوxboard-4.9.1/winboard/bitmaps/a49w.bmp0000644000175000001440000000070612717001265014455 00000000000000BM>(11?????xboard-4.9.1/winboard/bitmaps/b64s.bmp0000644000175000001440000000107612717001265014450 00000000000000BM>>(@@  ??@????xboard-4.9.1/winboard/bitmaps/q64s.bmp0000644000175000001440000000107612717001265014467 00000000000000BM>>(@@  ??~~????   `pp???????????????xboard-4.9.1/winboard/bitmaps/b45w.bmp0000644000175000001440000000064612717001265014455 00000000000000BM>(--hx88x???????xboard-4.9.1/winboard/bitmaps/README.bitmaps0000644000175000001440000000164412717001265015511 00000000000000This directory provides bitmaps with the same size and naming conventions as those distributed till xboard-3.** These bitmaps are distributed under the GNU GENERAL PUBLIC LICENSE coming with xboard. The bitmaps contained herein were converted from my MetaFont version of chess font. These are designed very well to deliver good rastered images on low resolution devices. The general shape of these fonts are designed after very old typefaces used in printing chess books. They are not as fancy as the currently used bitmaps of xboard, but I like them in their 'san serif'-ness - may be others too. The MetaFont source of this font may be obtained from me under the GNU GENERAL PUBLIC LICENSE. To convert the pk-Files to bitmaps I used the conversion tool mftobdf to generate X11-bdf - fonts, and then used a small C program, to write the xbm-files. 5.Feb.1994 Elmar Bartel bartel@informatik.tu-muenchen.de xboard-4.9.1/winboard/bitmaps/q49w.bmp0000644000175000001440000000070612717001265014475 00000000000000BM>(11????  8 88x<<||π|π???????xboard-4.9.1/winboard/bitmaps/q64w.bmp0000644000175000001440000000107612717001265014473 00000000000000BM>>(@@?????   ppp???????????????xboard-4.9.1/winboard/bitmaps/q95w.bmp0000644000175000001440000000226212717001265014475 00000000000000BM>(__t??????????????????>?????>????xboard-4.9.1/winboard/bitmaps/wp72o.bmp0000644000175000001440000000163612717001265014652 00000000000000BM>(HH`??? ρ|??????????y?p??????xboard-4.9.1/winboard/bitmaps/c49s.bmp0000644000175000001440000000070612717001265014453 00000000000000BM>(11???߀߀߀?8 @@ 8?߀߀߀???xboard-4.9.1/winboard/bitmaps/b49o.bmp0000644000175000001440000000070612717001265014446 00000000000000BM>(11} } wx??`??xboard-4.9.1/winboard/bitmaps/b72o.bmp0000644000175000001440000000163612717001265014445 00000000000000BM>(HH`} } ?~?~<????p???~<<~~~~<xboard-4.9.1/winboard/bitmaps/w72s.bmp0000644000175000001440000000163612717001265014476 00000000000000BM>(HH`?? |~?????????? 8? ????xboard-4.9.1/winboard/bitmaps/camel72o.bmp0000644000175000001440000000163612717001265015305 00000000000000BM>(HH`???????9?3?s?g????????G????wg/????xboard-4.9.1/winboard/bitmaps/r64s.bmp0000644000175000001440000000107612717001265014470 00000000000000BM>>(@@  ????????????????xboard-4.9.1/winboard/bitmaps/a45s.bmp0000644000175000001440000000064612717001265014450 00000000000000BM>(--h} } x88xx?xx??xboard-4.9.1/winboard/bitmaps/r29o.bmp0000644000175000001440000000026212717001265014461 00000000000000BM>(t} } xxx m8axboard-4.9.1/winboard/bitmaps/s72o.bmp0000644000175000001440000000163612717001265014466 00000000000000BM>(HH`????????????????~81???xboard-4.9.1/winboard/bitmaps/w49s.bmp0000644000175000001440000000070612717001265014477 00000000000000BM>(11?@_ 8>pp_ ???xboard-4.9.1/winboard/bitmaps/ln33o.bmp0000644000175000001440000000050612717001265014625 00000000000000BMF>(!!ۯck7{܀Z;Zj}ۀޯso~gxboard-4.9.1/winboard/bitmaps/q95s.bmp0000644000175000001440000000226212717001265014471 00000000000000BM>(__t} } ???||???????????????>????>????xboard-4.9.1/winboard/bitmaps/p108o.bmp0000644000175000001440000000337612717001265014546 00000000000000BM>(ll} } ????????????xboard-4.9.1/winboard/bitmaps/l64s.bmp0000644000175000001440000000107612717001265014462 00000000000000BM>>(@@  ??????????????xboard-4.9.1/winboard/bitmaps/r95o.bmp0000644000175000001440000000226212717001265014466 00000000000000BM>(__t} } ???xboard-4.9.1/winboard/bitmaps/k58s.bmp0000644000175000001440000000101612717001265014456 00000000000000BM>(::} } ?Cq?83p33sacs333ps8s|?3303<?3?3?xboard-4.9.1/winboard/bitmaps/r37o.bmp0000644000175000001440000000054612717001265014465 00000000000000BMf>(%%(} } p;wwxboard-4.9.1/winboard/bitmaps/dk72o.bmp0000644000175000001440000000163612717001265014622 00000000000000BM>(HH`?????????~?~?~?~?~???~xboard-4.9.1/winboard/bitmaps/b45o.bmp0000644000175000001440000000064612717001265014445 00000000000000BM>(--h} } xx=ϟ??xboard-4.9.1/winboard/bitmaps/p72o.bmp0000644000175000001440000000163612717001265014463 00000000000000BM>(HH`} } ????????????????<(11@DxB| ???@@@@pp`xboard-4.9.1/winboard/bitmaps/l58w.bmp0000644000175000001440000000101612717001265014463 00000000000000BM>(::  ??????xboard-4.9.1/winboard/bitmaps/c54o.bmp0000644000175000001440000000075612717001265014450 00000000000000BM>(66} } 1yy1I??<??x?<????????ϟϟ??x?<??<I1yy1xboard-4.9.1/winboard/bitmaps/trans_14.ico0000644000175000001440000000044612717001265015321 00000000000000(xboard-4.9.1/winboard/bitmaps/r21s.bmp0000644000175000001440000000022212717001265014451 00000000000000BM>(T  88xxxxxxboard-4.9.1/winboard/bitmaps/p64w.bmp0000644000175000001440000000107612717001265014472 00000000000000BM>>(@@?????????xboard-4.9.1/winboard/bitmaps/r54s.bmp0000644000175000001440000000075612717001265014473 00000000000000BM>(66} } ?>>>xboard-4.9.1/winboard/bitmaps/ws33o.bmp0000644000175000001440000000050612717001265014645 00000000000000BMF>(!!?߀׀?c~_ˀ;߀xboard-4.9.1/winboard/bitmaps/v72o.bmp0000644000175000001440000000163612717001265014471 00000000000000BM>(HH`><|xyy9??g?'a ??s?? ?a3???xboard-4.9.1/winboard/bitmaps/p49s.bmp0000644000175000001440000000070612717001265014470 00000000000000BM>(11} } ?xboard-4.9.1/winboard/bitmaps/h33w.bmp0000644000175000001440000000050612717001265014453 00000000000000BMF>(!!} } |>??xboard-4.9.1/winboard/bitmaps/k64o.bmp0000644000175000001440000000107612717001265014455 00000000000000BM>>(@@  ????????????????????????xboard-4.9.1/winboard/bitmaps/zebra72o.bmp0000644000175000001440000000163612717001265015327 00000000000000BM>(HH`} } ????????0????p????ywq|8<|><&&σ3q??xboard-4.9.1/winboard/bitmaps/w49w.bmp0000644000175000001440000000070612717001265014503 00000000000000BM>(11???xboard-4.9.1/winboard/bitmaps/r116o.bmp0000644000175000001440000000357612717001265014551 00000000000000BM~>(tt@} } ???????????????????????????????????????xboard-4.9.1/winboard/bitmaps/b64w.bmp0000644000175000001440000000107612717001265014454 00000000000000BM>>(@@????xboard-4.9.1/winboard/bitmaps/m72o.bmp0000644000175000001440000000163612717001265014460 00000000000000BM>(HH`8?`??? ??????>>>>??>?xboard-4.9.1/winboard/bitmaps/e72w.bmp0000644000175000001440000000163612717001265014460 00000000000000BM>(HH`?p 80?x?|?~????xboard-4.9.1/winboard/bitmaps/ln49o.bmp0000644000175000001440000000070612717001265014636 00000000000000BM>(11O-4qyomGo7wn6?ހހހހ݀݀ۀۀ݀݀~ۀ?7>π߿;?῀?xxboard-4.9.1/winboard/bitmaps/c72s.bmp0000644000175000001440000000163612717001265014452 00000000000000BM>(HH`8|||8??8q|||8qp8 00p````p088p??8>|>|>|8??>>>xboard-4.9.1/winboard/bitmaps/f49o.bmp0000644000175000001440000000070612717001265014452 00000000000000BM>(11??߀π?߀߀߀߀߀??}{o?xboard-4.9.1/winboard/bitmaps/n40o.bmp0000644000175000001440000000057612717001265014456 00000000000000BM~>(((@  _;??7xboard-4.9.1/winboard/bitmaps/ws72o.bmp0000644000175000001440000000163612717001265014655 00000000000000BM>(HH`??? ρ|?????????????y?p??????xboard-4.9.1/winboard/bitmaps/p64s.bmp0000644000175000001440000000107612717001265014466 00000000000000BM>>(@@  ?????????xboard-4.9.1/winboard/bitmaps/w49o.bmp0000644000175000001440000000070612717001265014473 00000000000000BM>(11??߀o??πo߀߀?xboard-4.9.1/winboard/bitmaps/zebra49s.bmp0000644000175000001440000000070612717001265015334 00000000000000BM>(11} } 77?7?/!ooo??__߀C?=(.!0kW/0s0xxboard-4.9.1/winboard/bitmaps/r108s.bmp0000644000175000001440000000337612717001265014554 00000000000000BM>(ll} } ????xboard-4.9.1/winboard/bitmaps/wn49s.bmp0000644000175000001440000000070612717001265014655 00000000000000BM>(11?@_ 8><_< ???xboard-4.9.1/winboard/bitmaps/e33o.bmp0000644000175000001440000000050612717001265014440 00000000000000BMF>(!!=6ZVXۀ׿ۏ{ÿ}}}~xboard-4.9.1/winboard/bitmaps/q29o.bmp0000644000175000001440000000026212717001265014460 00000000000000BM>(t} }  ?x(%%(} } xo?<uuvvxvxۮxׯ^xׯ?8>Xﯾ߾8vwxboard-4.9.1/winboard/bitmaps/n64o.bmp0000644000175000001440000000107612717001265014460 00000000000000BM>>(@@  ?????8?|??????O?ß??y?Nx?Nxboard-4.9.1/winboard/bitmaps/l37w.bmp0000644000175000001440000000054612717001265014467 00000000000000BMf>(%%(} } ???xboard-4.9.1/winboard/bitmaps/n72s.bmp0000644000175000001440000000163612717001265014465 00000000000000BM>(HH`} } ?????????ppx?x0<<x<<yyy?<x|?<?8|xboard-4.9.1/winboard/bitmaps/o72s.bmp0000644000175000001440000000163612717001265014466 00000000000000BM>(HH`???????????xboard-4.9.1/winboard/bitmaps/a37o.bmp0000644000175000001440000000054612717001265014444 00000000000000BMf>(%%(} } xx'x</??xxxsxboard-4.9.1/winboard/bitmaps/b21o.bmp0000644000175000001440000000022212717001265014425 00000000000000BM>(T   ps'xboard-4.9.1/winboard/bitmaps/k49o.bmp0000644000175000001440000000070612717001265014457 00000000000000BM>(11} } =? #?߀߀7?xboard-4.9.1/winboard/bitmaps/l58s.bmp0000644000175000001440000000101612717001265014457 00000000000000BM>(::  ?   ? ?       ???xboard-4.9.1/winboard/bitmaps/r29w.bmp0000644000175000001440000000026212717001265014471 00000000000000BM>(txxx8a8axboard-4.9.1/winboard/bitmaps/n54o.bmp0000644000175000001440000000075612717001265014463 00000000000000BM>(66} } |<<<<<<<<<<<?|||?|3||s????σ@`@O>?xboard-4.9.1/winboard/bitmaps/dk49o.bmp0000644000175000001440000000070612717001265014623 00000000000000BM>(11??>?xboard-4.9.1/winboard/bitmaps/b116w.bmp0000644000175000001440000000357612717001265014541 00000000000000BM~>(tt@??@?????xboard-4.9.1/winboard/bitmaps/camel49s.bmp0000644000175000001440000000070612717001265015312 00000000000000BM>(11???H  xg0 @xboard-4.9.1/winboard/bitmaps/b72w.bmp0000644000175000001440000000163612717001265014455 00000000000000BM>(HH`?~?????xboard-4.9.1/winboard/bitmaps/f33o.bmp0000644000175000001440000000050612717001265014441 00000000000000BMF>(!!} } ??ۀ?}?;?xboard-4.9.1/winboard/bitmaps/q21w.bmp0000644000175000001440000000022212717001265014454 00000000000000BM>(Txxxxxx88؈xboard-4.9.1/winboard/bitmaps/cv40w.bmp0000644000175000001440000000057612717001265014641 00000000000000BM~>(((@  ??xboard-4.9.1/winboard/bitmaps/galactic.bmp0000644000175000001440000027361612717001265015454 00000000000000BMw6(Xs  o%?(<0-&^^+SJ`0q3&343f3/+~3@P3463u@5e$7475333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___www                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   xboard-4.9.1/winboard/bitmaps/r64w.bmp0000644000175000001440000000107612717001265014474 00000000000000BM>>(@@????????????????xboard-4.9.1/winboard/bitmaps/m33s.bmp0000644000175000001440000000050612717001265014454 00000000000000BMF>(!! ????xboard-4.9.1/winboard/bitmaps/cv72o.bmp0000644000175000001440000000163612717001265014634 00000000000000BM>(HH`} } ??????????????q????? ? c}GO?xboard-4.9.1/winboard/bitmaps/f49s.bmp0000644000175000001440000000070612717001265014456 00000000000000BM>(11?/߀?~??0 ??@??~ ?xboard-4.9.1/winboard/bitmaps/h72w.bmp0000644000175000001440000000163612717001265014463 00000000000000BM>(HH`?????????p?0p??xboard-4.9.1/winboard/bitmaps/p129s.bmp0000644000175000001440000000512212717001265014544 00000000000000BMR >( } } ???????xboard-4.9.1/winboard/bitmaps/r40w.bmp0000644000175000001440000000057612717001265014472 00000000000000BM~>(((@????xboard-4.9.1/winboard/bitmaps/k95s.bmp0000644000175000001440000000226212717001265014463 00000000000000BM>(__t} } ? ?||????????||???????>|p|?p>ppǀ88888888q?xboard-4.9.1/winboard/bitmaps/n33w.bmp0000644000175000001440000000050612717001265014461 00000000000000BMF>(!!|>??xboard-4.9.1/winboard/bitmaps/p129w.bmp0000644000175000001440000000512212717001265014550 00000000000000BMR >( ???????xboard-4.9.1/winboard/bitmaps/cv54w.bmp0000644000175000001440000000075612717001265014646 00000000000000BM>(66} } ?? ?xboard-4.9.1/winboard/bitmaps/m49w.bmp0000644000175000001440000000070612717001265014471 00000000000000BM>(11????????xboard-4.9.1/winboard/bitmaps/q129s.bmp0000644000175000001440000000512212717001265014545 00000000000000BMR >( } } 8???8<<<<?<<?|>??~~??~~??????????????????xboard-4.9.1/winboard/bitmaps/zebra72s.bmp0000644000175000001440000000163612717001265015333 00000000000000BM>(HH`} } ?ǟǀϟ??????????ppx?x0<<xx<<<Iqyyg  `0p 08 8<8> ?< X |?<?8|xboard-4.9.1/winboard/bitmaps/r49o.bmp0000644000175000001440000000070612717001265014466 00000000000000BM>(11} } ??>xboard-4.9.1/winboard/bitmaps/b37o.bmp0000644000175000001440000000054612717001265014445 00000000000000BMf>(%%(} } xx'x</??߿'wwwxboard-4.9.1/winboard/bitmaps/q80o.bmp0000644000175000001440000000177612717001265014470 00000000000000BM>(PP  ???>|???@8O0 cx??Ǚ?99sy3ϟ3ǟ?????????????????????????ϟϟϟ??xboard-4.9.1/winboard/bitmaps/q54o.bmp0000644000175000001440000000075612717001265014466 00000000000000BM>(66????????08s0l1px|9`x|dx<Dy<Ly 13O3~O3~3| ~?~?xyp?8 <?1?y?>1xboard-4.9.1/winboard/bitmaps/k40o.bmp0000644000175000001440000000057612717001265014453 00000000000000BM~>(((@  ?~ÿ?>ϟxboard-4.9.1/winboard/bitmaps/n64s.bmp0000644000175000001440000000107612717001265014464 00000000000000BM>>(@@  ?????????????pp(d} } ?_π **U Uxboard-4.9.1/winboard/bitmaps/ln49s.bmp0000644000175000001440000000070612717001265014642 00000000000000BM>(11O@ oG@H H$$`|I% 8% % % %!!##!!#ǀ$$$d@??xboard-4.9.1/winboard/bitmaps/ln72o.bmp0000644000175000001440000000163612717001265014635 00000000000000BM>(HH`??2xOxo~|n~fl~ri??>s??3?3?g?Ǚ?;3?#?? 8sss;9{9{??̜?̜?̜?̜???OO>GO?c?x???????xboard-4.9.1/winboard/bitmaps/p49w.bmp0000644000175000001440000000070612717001265014474 00000000000000BM>(11?xboard-4.9.1/winboard/bitmaps/s72w.bmp0000644000175000001440000000163612717001265014476 00000000000000BM>(HH`??????????????~80??xboard-4.9.1/winboard/bitmaps/w33s.bmp0000644000175000001440000000050612717001265014466 00000000000000BMF>(!!?'<|@3CÀ 0?xboard-4.9.1/winboard/bitmaps/f33w.bmp0000644000175000001440000000050612717001265014451 00000000000000BMF>(!!} } ?xboard-4.9.1/winboard/bitmaps/wolf72w.bmp0000644000175000001440000000163612717001265015203 00000000000000BM>(HH`??????????xboard-4.9.1/winboard/bitmaps/n37w.bmp0000644000175000001440000000054612717001265014471 00000000000000BMf>(%%(xxxxxxx~x>@???xboard-4.9.1/winboard/bitmaps/k29s.bmp0000644000175000001440000000026212717001265014456 00000000000000BM>(t} } ?x8X X@Xe0x5`xboard-4.9.1/winboard/bitmaps/p33o.bmp0000644000175000001440000000050612717001265014453 00000000000000BMF>(!!} } ??xboard-4.9.1/winboard/bitmaps/r58w.bmp0000644000175000001440000000101612717001265014471 00000000000000BM>(::?????????????????????????||||xboard-4.9.1/winboard/bitmaps/b87w.bmp0000644000175000001440000000212212717001265014452 00000000000000BMR>(WW|~~~?????xboard-4.9.1/winboard/bitmaps/q72o.bmp0000644000175000001440000000163612717001265014464 00000000000000BM>(HH`} } ??x??????A=~? 0?q>|>O|x#q~3s~scώ~qgϞ~y?Ϟ~y?|>|>|88|>|>|<>8<<xboard-4.9.1/winboard/bitmaps/n129s.bmp0000644000175000001440000000512212717001265014542 00000000000000BMR >( } } ??8????>?>????? @??8? ??000??????|?|???`p????xboard-4.9.1/winboard/bitmaps/r116w.bmp0000644000175000001440000000357612717001265014561 00000000000000BM~>(tt@????????xboard-4.9.1/winboard/bitmaps/cv58s.bmp0000644000175000001440000000101612717001265014634 00000000000000BM>(::} } ??????? `p0c|? xboard-4.9.1/winboard/bitmaps/b87o.bmp0000644000175000001440000000212212717001265014442 00000000000000BMR>(WW} } |!??~?~~?|???????????|8||||8xboard-4.9.1/winboard/bitmaps/n80w.bmp0000644000175000001440000000177612717001265014475 00000000000000BM>(PP??@?????xboard-4.9.1/winboard/bitmaps/e72o.bmp0000644000175000001440000000163612717001265014450 00000000000000BM>(HH`?p|~r~8~Ü>>>s'93?ys?|;?~r98C`8ϟϟ?Ϗß??????????g#??xboard-4.9.1/winboard/bitmaps/p87o.bmp0000644000175000001440000000212212717001265014460 00000000000000BMR>(WW} } ???????????~|||?xboard-4.9.1/winboard/bitmaps/p54o.bmp0000644000175000001440000000075612717001265014465 00000000000000BM>(66} } ????x?xxboard-4.9.1/winboard/bitmaps/k29o.bmp0000644000175000001440000000026212717001265014452 00000000000000BM>(t} } ????xx7`xboard-4.9.1/winboard/bitmaps/r116s.bmp0000644000175000001440000000357612717001265014555 00000000000000BM~>(tt@} } ???????????xboard-4.9.1/winboard/bitmaps/n58w.bmp0000644000175000001440000000101612717001265014465 00000000000000BM>(::?x????xboard-4.9.1/winboard/bitmaps/cv33o.bmp0000644000175000001440000000050612717001265014624 00000000000000BMF>(!!} } ppwwo{πG?߀߀?%xboard-4.9.1/winboard/bitmaps/v33s.bmp0000644000175000001440000000050612717001265014465 00000000000000BMF>(!!@ @@@ /߀?a{π?xboard-4.9.1/winboard/bitmaps/icon_w.ico0000644000175000001440000000050612717001265015141 00000000000000 0( @???=77 `@0xboard-4.9.1/winboard/bitmaps/q25s.bmp0000644000175000001440000000024212717001265014456 00000000000000BM>(d} } O߀π#"#"1c9c8c8wc㿀xboard-4.9.1/winboard/bitmaps/u49w.bmp0000644000175000001440000000070612717001265014501 00000000000000BM>(11x|???0p`xboard-4.9.1/winboard/bitmaps/a49s.bmp0000644000175000001440000000070612717001265014451 00000000000000BM>(11??`???xboard-4.9.1/winboard/bitmaps/r45w.bmp0000644000175000001440000000064612717001265014475 00000000000000BM>(--h??>>>xboard-4.9.1/winboard/bitmaps/q40w.bmp0000644000175000001440000000057612717001265014471 00000000000000BM~>(((@??? A``Ǐxboard-4.9.1/winboard/bitmaps/r33o.bmp0000644000175000001440000000050612717001265014455 00000000000000BMF>(!!} } ?߀߀߀xboard-4.9.1/winboard/bitmaps/r87s.bmp0000644000175000001440000000212212717001265014466 00000000000000BMR>(WW} } ???????xboard-4.9.1/winboard/bitmaps/c64w.bmp0000644000175000001440000000107612717001265014455 00000000000000BM>>(@@  ???@?????xboard-4.9.1/winboard/bitmaps/l40w.bmp0000644000175000001440000000057612717001265014464 00000000000000BM~>(((@  ????xboard-4.9.1/winboard/bitmaps/wn49o.bmp0000644000175000001440000000070612717001265014651 00000000000000BM>(11?߀o??߀_߀߀߀??xboard-4.9.1/winboard/bitmaps/b29w.bmp0000644000175000001440000000026212717001265014451 00000000000000BM>(t888xboard-4.9.1/winboard/bitmaps/p40o.bmp0000644000175000001440000000057612717001265014460 00000000000000BM~>(((@>?xboard-4.9.1/winboard/bitmaps/p25w.bmp0000644000175000001440000000024212717001265014461 00000000000000BM>(d?xboard-4.9.1/winboard/bitmaps/q80w.bmp0000644000175000001440000000177612717001265014500 00000000000000BM>(PP????88x???????????????????????????xboard-4.9.1/winboard/bitmaps/s49s.bmp0000644000175000001440000000070612717001265014473 00000000000000BM>(11??π࿀???`? `?xboard-4.9.1/winboard/bitmaps/b33o.bmp0000644000175000001440000000050612717001265014435 00000000000000BMF>(!!} } ~~~}}??xboard-4.9.1/winboard/bitmaps/n49w.bmp0000644000175000001440000000070612717001265014472 00000000000000BM>(11???`xboard-4.9.1/winboard/bitmaps/q33w.bmp0000644000175000001440000000050612717001265014464 00000000000000BMF>(!!???ǀǀ8<Ϟ<>~|9|?>>?xboard-4.9.1/winboard/bitmaps/c72o.bmp0000644000175000001440000000163612717001265014446 00000000000000BM>(HH`8|||8<|~??8q|||8q?>???ϏǟǟϏ???>??8>|>|>|8?>?>>>>xboard-4.9.1/winboard/bitmaps/cv40o.bmp0000644000175000001440000000057612717001265014631 00000000000000BM~>(((@  {{xoxboard-4.9.1/winboard/bitmaps/q45s.bmp0000644000175000001440000000064612717001265014470 00000000000000BM>(--h} }  ``00``00`08x8x||~?xboard-4.9.1/winboard/bitmaps/q29w.bmp0000644000175000001440000000026212717001265014470 00000000000000BM>(txxxx8888888瘇=}=8xxboard-4.9.1/winboard/bitmaps/cv45o.bmp0000644000175000001440000000064612717001265014634 00000000000000BM>(--h߿C}{_?kgk\xboard-4.9.1/winboard/bitmaps/p87s.bmp0000644000175000001440000000212212717001265014464 00000000000000BMR>(WW} } ????????xboard-4.9.1/winboard/bitmaps/r21w.bmp0000644000175000001440000000022212717001265014455 00000000000000BM>(T88xxxxxxboard-4.9.1/winboard/bitmaps/l33w.bmp0000644000175000001440000000050612717001265014457 00000000000000BMF>(!!xboard-4.9.1/winboard/bitmaps/p108s.bmp0000644000175000001440000000337612717001265014552 00000000000000BM>(ll} } ????xboard-4.9.1/winboard/bitmaps/n40s.bmp0000644000175000001440000000057612717001265014462 00000000000000BM~>(((@  7777777?/G/ooxo_ gハ?xboard-4.9.1/winboard/bitmaps/r95w.bmp0000644000175000001440000000226212717001265014476 00000000000000BM>(__t??xboard-4.9.1/winboard/bitmaps/p45o.bmp0000644000175000001440000000064612717001265014463 00000000000000BM>(--h} } ?ϟ??xboard-4.9.1/winboard/bitmaps/k87o.bmp0000644000175000001440000000212212717001265014453 00000000000000BMR>(WW} } ???ǀ?0?????~~~~8~8~|~??????c???|??xboard-4.9.1/winboard/bitmaps/icon_whi.ico0000644000175000001440000000207612717001265015466 00000000000000 0& V( @?=/'g: ~??( @~??xboard-4.9.1/winboard/bitmaps/l54w.bmp0000644000175000001440000000075612717001265014471 00000000000000BM>(66  ????xboard-4.9.1/winboard/bitmaps/q49o.bmp0000644000175000001440000000070612717001265014465 00000000000000BM>(11??};~!?6gs߀߀߀߀߀{o﯀}o}oπ}oπ߻߻?xboard-4.9.1/winboard/bitmaps/as72w.bmp0000644000175000001440000000163612717001265014637 00000000000000BM>(HH`?~<?|<><<<~?~<????<~?xboard-4.9.1/winboard/bitmaps/v72s.bmp0000644000175000001440000000163612717001265014475 00000000000000BM>(HH` O?xq??pG0a`  ``c??xboard-4.9.1/winboard/bitmaps/n108s.bmp0000644000175000001440000000337612717001265014550 00000000000000BM>(ll} } ????@>`|?`|?`x?   >|??>>??? `pxboard-4.9.1/winboard/bitmaps/as49w.bmp0000644000175000001440000000070612717001265014640 00000000000000BM>(11?xp ??? p????????????xboard-4.9.1/winboard/bitmaps/p21w.bmp0000644000175000001440000000022212717001265014453 00000000000000BM>(Txxxxxboard-4.9.1/winboard/bitmaps/p87w.bmp0000644000175000001440000000212212717001265014470 00000000000000BMR>(WW????????xboard-4.9.1/winboard/bitmaps/g33o.bmp0000644000175000001440000000050612717001265014442 00000000000000BMF>(!!} } pOJʦkkmmmm??ߟoo۷۷xboard-4.9.1/winboard/bitmaps/l33o.bmp0000644000175000001440000000050612717001265014447 00000000000000BMF>(!!_ ___xboard-4.9.1/winboard/bitmaps/r72w.bmp0000644000175000001440000000163612717001265014475 00000000000000BM>(HH`????????xboard-4.9.1/winboard/bitmaps/r49w.bmp0000644000175000001440000000070612717001265014476 00000000000000BM>(11?????xboard-4.9.1/winboard/bitmaps/p95w.bmp0000644000175000001440000000226212717001265014474 00000000000000BM>(__t????????????xboard-4.9.1/winboard/bitmaps/l49s.bmp0000644000175000001440000000070612717001265014464 00000000000000BM>(11???????????xboard-4.9.1/winboard/bitmaps/b33s.bmp0000644000175000001440000000050612717001265014441 00000000000000BMF>(!!} } =???xboard-4.9.1/winboard/bitmaps/b37w.bmp0000644000175000001440000000054612717001265014455 00000000000000BMf>(%%(xx 8x<??????xboard-4.9.1/winboard/bitmaps/p58s.bmp0000644000175000001440000000101612717001265014463 00000000000000BM>(::} } ???xboard-4.9.1/winboard/bitmaps/h72s.bmp0000644000175000001440000000163612717001265014457 00000000000000BM>(HH`?????????`<<p<<y yy??<x~<|?h?0p??xboard-4.9.1/winboard/bitmaps/n129w.bmp0000644000175000001440000000512212717001265014546 00000000000000BMR >( ??????????????o?xboard-4.9.1/winboard/bitmaps/p29w.bmp0000644000175000001440000000026212717001265014467 00000000000000BM>(t????xboard-4.9.1/winboard/bitmaps/n80o.bmp0000644000175000001440000000177612717001265014465 00000000000000BM>(PP  ?3?????3?11?O???????c?q?<x>??xboard-4.9.1/winboard/bitmaps/a54w.bmp0000644000175000001440000000075612717001265014456 00000000000000BM>(66} } 0|<<|?|||?xboard-4.9.1/winboard/bitmaps/k95o.bmp0000644000175000001440000000226212717001265014457 00000000000000BM>(__t} } ??????~????????>???????????????????????>?????xboard-4.9.1/winboard/bitmaps/n108w.bmp0000644000175000001440000000337612717001265014554 00000000000000BM>(ll?????????????????@pxboard-4.9.1/winboard/bitmaps/m72w.bmp0000644000175000001440000000163612717001265014470 00000000000000BM>(HH`????????xboard-4.9.1/winboard/bitmaps/k54o.bmp0000644000175000001440000000075612717001265014460 00000000000000BM>(66} } ????????||<<<<3<1<x|x|? |xy1xboard-4.9.1/winboard/bitmaps/r58s.bmp0000644000175000001440000000101612717001265014465 00000000000000BM>(::} } ?????????????????????????????||||xboard-4.9.1/winboard/bitmaps/k58w.bmp0000644000175000001440000000101612717001265014462 00000000000000BM>(::?0<???xboard-4.9.1/winboard/bitmaps/p95s.bmp0000644000175000001440000000226212717001265014470 00000000000000BM>(__t} } ????????????xboard-4.9.1/winboard/bitmaps/a54s.bmp0000644000175000001440000000075612717001265014452 00000000000000BM>(66} } 0|<<|?03?O0000||0|000?xboard-4.9.1/winboard/bitmaps/n95s.bmp0000644000175000001440000000226212717001265014466 00000000000000BM>(__t} } ? ??>>?>?|?||` 000<?><|?>??x??xboard-4.9.1/winboard/bitmaps/as72s.bmp0000644000175000001440000000163612717001265014633 00000000000000BM>(HH`?~<?|<><<<~? @G0 /`~<@` @0?a0# ` 0`0`? ?0?`  0`0?`` <0~0 `?xboard-4.9.1/winboard/bitmaps/b40w.bmp0000644000175000001440000000057612717001265014452 00000000000000BM~>(((@>??xboard-4.9.1/winboard/bitmaps/p116o.bmp0000644000175000001440000000357612717001265014547 00000000000000BM~>(tt@} } ?????????????????????????xboard-4.9.1/winboard/bitmaps/p95o.bmp0000644000175000001440000000226212717001265014464 00000000000000BM>(__t} } ???????????????????????xboard-4.9.1/winboard/bitmaps/k87w.bmp0000644000175000001440000000212212717001265014463 00000000000000BMR>(WW??~~~~~~~` ?????xboard-4.9.1/winboard/bitmaps/p80s.bmp0000644000175000001440000000177612717001265014473 00000000000000BM>(PP  ????xboard-4.9.1/winboard/bitmaps/f49w.bmp0000644000175000001440000000070612717001265014462 00000000000000BM>(11??????xboard-4.9.1/winboard/bitmaps/r37w.bmp0000644000175000001440000000054612717001265014475 00000000000000BMf>(%%(xboard-4.9.1/winboard/bitmaps/convert.exe0000644000175000001440000003474612717001265015367 00000000000000MZ@ !L!This program cannot be run in DOS mode. $PEL H 8  @`w PD.text   `.data0 @.rdata0@@.bssp@.idataDP@U]E1ۉu1=wC=r[$1҉T$ tzt$л؋u]]=twJ=t؋u]]=t[=u$1t$ tjt$=$D$ v# l$ 1D$d t0R$ ?$L$4 %$ D$ 'US$$@U EED$ @$@@D$ ED$@@D$@@td @P@t@@D$P@@0$P@t(@@D$P@@P$g K @!D$@@D$@@$$VD$P@@$P@@U$P@&U$P@&U P@]t&U P@]ᐐU\'WVS }U 0@D$B$0@D$\$$>H1$@~\$\$\$ 0@\$D$D$$1ɉ$@&~$0@D$D$1111ۉf$:ùt&'% IyG$ù% IyG$ù% IyG$ù% IyG ;@9‰U 11Z;tASB@zt"z\uB@zu11;'<.@<u\$1$0@D$\$$40@D$v\$$J0@fHG1K$e0@FD$;ȃÅ])Ӄ)ȉ ÅR$l0@Fq$e0@ÉD$^F$ !1;8H$o0@e[^_]Ã)A&$t0@$$0@] C$0@D$ΐU @8t @BR @uÍ&US@t)t'@Ku$ @:Y[]1=@ @@u뾍'U @@t]f] @@냐U0@Q@0@r]ÐUSX5 PX1ة 1%ft 0@@t 0@@t 0@@t 0@@t 0@@ t 0@@@ t 0@@=v,0@@@t 0@@[]à 0@@M[ 0@@]ÐU]ÐQ=r -) ̋@%P@%P@%P@%P@%P@%P@%P@%P@%P@%P@%P@%P@%P@%P@%P@%P@@@rbBM%c%c%c%c%c%ch=%d, w=%d #define %s_width %d #define %s_height %d static char %s_bits[] = { 0x%02x, };usage is: convert %s does not have bitmap format file %s not found @P RPP4RPPQQ"Q4Q>QFQPQ\QfQnQvQ~QQQQQQQPQQ"Q4Q>QFQPQ\QfQnQvQ~QQQQQQQ'__getmainargs<__p__environ>__p__fmodeP__set_app_typey_cexit_iob^_onexit_setmodeatexit*exit1fgetc8fopenBfscanfprintfputcharputssignalExitProcessSetUnhandledExceptionFilterPPPPPPPPPPPPPPPPPmsvcrt.dllPPKERNEL32.dll.filegcrt1.c P 2 B _atexit __onexit .text*.data.bss.filegconvert.c_main .text4'.data.bss.rdata.file"gCRTglob.c.text .data.bss.file*gCRTfmode.c.text .data.bss.file2gtxtmode.c.text .data.bss .file@ggccmain.cU p.0 b  uP ___main .text  .data .bss .fileJgpseudo-reloc.c .text(.data0.bss0.fileTgcpu_features.c  .text  .data0.bss0.file_gCRT_fp10.c_fpreset    .text .data0.bss@.fileg.text .data0.bss@probe done- .text -.data0.bssP.text@ .data0.bssP.text@ .data0.bssP.idata$7.idata$5.idata$4T.idata$6>.text@ .data0.bssP.idata$7.idata$5.idata$4L.idata$6".textH .data0.bssP.idata$7.idata$5.idata$4`.idata$6\.textH .data0.bssP.idata$7.idata$5.idata$4X.idata$6F.textH .data0.bssP.idata$7.idata$5.idata$4P.idata$64.textP .data0.bssP.idata$7.idata$5.idata$4D.idata$6.textX .data0.bssP.idata$7.idata$5.idata$4.idata$6.text` .data0.bssP.idata$7.idata$5.idata$4H.idata$6.texth .data0.bssP.idata$7.idata$5.idata$4\.idata$6P.textp .data0.bssP.idata$7.idata$5.idata$4@.idata$6.textx .data0.bssP.idata$7.idata$5.idata$4x.idata$6.text .data0.bssP.idata$7.idata$5.idata$4|.idata$6.text .data0.bssP.idata$7.idata$5.idata$4h.idata$6n.text .data0.bssP.idata$7 .idata$5.idata$4p.idata$6~.text .data0.bssP.idata$7.idata$5.idata$4d.idata$6f.text .data0.bssP.idata$7.idata$5.idata$4t.idata$6.text .data0.bssP.idata$7.idata$5.idata$4l.idata$6v.filegfakehname@fthunk.text .data0.bssP.idata$2.idata$5.idata$4<.filegfake.text .data0.bssP.idata$4.idata$5.idata$7  .text .data0.bssP.idata$7,.idata$5.idata$4.idata$6.text .data0.bssP.idata$70.idata$5.idata$4.idata$6.file(gfakehnamefthunk.text .data0.bssP.idata$2.idata$5.idata$4.file6gfake.text .data0.bssP.idata$4.idata$5.idata$74 __cexitH  _putcharx   #2`  >  ]`@l  `@`@ `@_puts   !-;^vP  `@`@__dll__@ 6T__argcf  u0p   @ p`@__alloca `@__argv _fopen  __fmode__end__`@_fgetc  _signalX  - ;T`@ft`@0$/h  9G\j_exit  _printf  4`@_fscanf  __gnu_exception_handler@4___mingw_CRTStartup_mainCRTStartup_WinMainCRTStartup_initialized___do_global_dtors___do_global_ctors__pei386_runtime_relocator___cpu_features_init__fpresetpseudo-reloc-list.c___RUNTIME_PSEUDO_RELOC_LIST____imp___setmode__data_start_____DTOR_LIST____imp___onexit___p__fmode_SetUnhandledExceptionFilter@4___tls_start____libmsvcrt_a_iname__size_of_stack_commit____size_of_stack_reserve____major_subsystem_version_____crt_xl_start_____crt_xi_start_____chkstk___crt_xi_end____imp____p__environ__imp___iob__bss_start_____RUNTIME_PSEUDO_RELOC_LIST_END____size_of_heap_commit_____p__environ___crt_xp_start____imp__putchar___crt_xp_end____imp__signal__imp__puts__minor_os_version____imp__atexit__head_libmsvcrt_a__image_base____imp__exit__section_alignment____RUNTIME_PSEUDO_RELOC_LIST____imp____p__fmode_ExitProcess@4__data_end_____getmainargs__CTOR_LIST_____set_app_type__bss_end____CRT_fmode___crt_xc_end_____crt_xc_start_____CTOR_LIST____imp__fgetc__file_alignment____major_os_version____DTOR_LIST____size_of_heap_reserve_____crt_xt_start____subsystem____imp__fopen__imp____getmainargs___tls_end____imp__fscanf__imp__ExitProcess@4___cpu_features__imp__SetUnhandledExceptionFilter@4__major_image_version____loader_flags____CRT_glob__setmode__imp__printf__head_libkernel32_a__imp___cexit__minor_subsystem_version____minor_image_version____imp____set_app_type__RUNTIME_PSEUDO_RELOC_LIST_END____libkernel32_a_iname___crt_xt_end__xboard-4.9.1/winboard/bitmaps/cv49s.bmp0000644000175000001440000000070612717001265014641 00000000000000BM>(11>>>>????<0? ?@3@c ハxboard-4.9.1/winboard/bitmaps/b25s.bmp0000644000175000001440000000024212717001265014437 00000000000000BM>(d} } >{?>?>?xboard-4.9.1/winboard/bitmaps/p33w.bmp0000644000175000001440000000050612717001265014463 00000000000000BMF>(!!??????xboard-4.9.1/winboard/bitmaps/wp49s.bmp0000644000175000001440000000070612717001265014657 00000000000000BM>(11?@_ 8>_ ???xboard-4.9.1/winboard/bitmaps/camel72s.bmp0000644000175000001440000000163612717001265015311 00000000000000BM>(HH`000 `?``@0`?C?00`? <??? ? 8?xboard-4.9.1/winboard/bitmaps/k37w.bmp0000644000175000001440000000054612717001265014466 00000000000000BMf>(%%(xx88888xxboard-4.9.1/winboard/bitmaps/wl33s.bmp0000644000175000001440000000050612717001265014642 00000000000000BMF>(!!?'<|3CÀ 0?xboard-4.9.1/winboard/bitmaps/q108w.bmp0000644000175000001440000000337612717001265014557 00000000000000BM>(ll???  ``88|||?????????p?p?ppp??????xboard-4.9.1/winboard/bitmaps/wl72o.bmp0000644000175000001440000000163612717001265014646 00000000000000BM>(HH`??? ρ|???????????????y?p??????xboard-4.9.1/winboard/bitmaps/wn33o.bmp0000644000175000001440000000050612717001265014640 00000000000000BMF>(!!?߀׀?c?ˀ?;߀xboard-4.9.1/winboard/bitmaps/q108o.bmp0000644000175000001440000000337612717001265014547 00000000000000BM>(ll} } ??x????????@C??pxcÀ8px?|#?#?c?c88||q|q88?????qq?1??1??1???p?p?ppp?? ????????????????xboard-4.9.1/winboard/bitmaps/dk33w.bmp0000644000175000001440000000050612717001265014622 00000000000000BMF>(!!} } ?????xboard-4.9.1/winboard/bitmaps/o49w.bmp0000644000175000001440000000070612717001265014473 00000000000000BM>(11??xboard-4.9.1/winboard/bitmaps/ln33w.bmp0000644000175000001440000000050612717001265014635 00000000000000BMF>(!!xboard-4.9.1/winboard/bitmaps/n116o.bmp0000644000175000001440000000357612717001265014545 00000000000000BM~>(tt@} } ????>?LJ??q1???????O??|8?????>8??0??xboard-4.9.1/winboard/bitmaps/e72s.bmp0000644000175000001440000000163612717001265014454 00000000000000BM>(HH`?pr8s'93?yp?|8?~r<8`0 ??ppp00000000000?8??xboard-4.9.1/winboard/bitmaps/k33o.bmp0000644000175000001440000000050612717001265014446 00000000000000BMF>(!!} } ??_??xboard-4.9.1/winboard/bitmaps/q58w.bmp0000644000175000001440000000101612717001265014470 00000000000000BM>(::???  `ppx>????????@?@|@|||~xboard-4.9.1/winboard/bitmaps/icon_b.ico0000644000175000001440000000207612717001265015120 00000000000000 0& V( @000000 ````@` 0|>???9}( @|>???9}xboard-4.9.1/winboard/bitmaps/l58o.bmp0000644000175000001440000000101612717001265014453 00000000000000BM>(::  ?3???<<??????xboard-4.9.1/winboard/bitmaps/k33w.bmp0000644000175000001440000000050612717001265014456 00000000000000BMF>(!!??????? ?xboard-4.9.1/winboard/bitmaps/q80s.bmp0000644000175000001440000000177612717001265014474 00000000000000BM>(PP  ??@???88xx??????????????????????xboard-4.9.1/winboard/bitmaps/k108w.bmp0000644000175000001440000000337612717001265014551 00000000000000BM>(ll??????p?xboard-4.9.1/winboard/bitmaps/ln33s.bmp0000644000175000001440000000050612717001265014631 00000000000000BMF>(!!C@ B $O $"C B$TTTDH`x 0 #PCAP0xboard-4.9.1/winboard/bitmaps/l40o.bmp0000644000175000001440000000057612717001265014454 00000000000000BM~>(((@  E}}}xboard-4.9.1/winboard/bitmaps/cv49w.bmp0000644000175000001440000000070612717001265014645 00000000000000BM>(11||||??>80??xboard-4.9.1/winboard/bitmaps/n129o.bmp0000644000175000001440000000512212717001265014536 00000000000000BMR >( } } ??? ???ÃÃ?Á????????????????????0??op ?xboard-4.9.1/winboard/bitmaps/g49o.bmp0000644000175000001440000000070612717001265014453 00000000000000BM>(11?#3f{>>}޾ݽݽ۽??_wwwxboard-4.9.1/winboard/bitmaps/e49o.bmp0000644000175000001440000000070612717001265014451 00000000000000BM>(11}3=]nmu5ǀZ׀ww7w|?}?_______{_o??xboard-4.9.1/winboard/bitmaps/p54s.bmp0000644000175000001440000000075612717001265014471 00000000000000BM>(66} } ????xboard-4.9.1/winboard/bitmaps/ws49s.bmp0000644000175000001440000000070612717001265014662 00000000000000BM>(11?@_ 8>_pp  ???xboard-4.9.1/winboard/bitmaps/b21w.bmp0000644000175000001440000000022212717001265014435 00000000000000BM>(T xboard-4.9.1/winboard/bitmaps/a49o.bmp0000644000175000001440000000070612717001265014445 00000000000000BM>(11wx??`?߀??xboard-4.9.1/winboard/bitmaps/v72w.bmp0000644000175000001440000000163612717001265014501 00000000000000BM>(HH`??a?xboard-4.9.1/winboard/bitmaps/q33s.bmp0000644000175000001440000000050612717001265014460 00000000000000BMF>(!!} } ??`????ǀǀ8<Ϟ<>>>p|9(!!} } ????xboard-4.9.1/winboard/bitmaps/n40w.bmp0000644000175000001440000000057612717001265014466 00000000000000BM~>(((@8??xboard-4.9.1/winboard/bitmaps/cv58o.bmp0000644000175000001440000000101612717001265014630 00000000000000BM>(::} } ????3g??7?gg;ٿ????>?xboard-4.9.1/winboard/bitmaps/baloon_14.ico0000644000175000001440000000044612717001265015444 00000000000000(|  xboard-4.9.1/winboard/bitmaps/wp49o.bmp0000644000175000001440000000070612717001265014653 00000000000000BM>(11?߀o??߀_߀߀߀??xboard-4.9.1/winboard/bitmaps/c49w.bmp0000644000175000001440000000070612717001265014457 00000000000000BM>(11?????????xboard-4.9.1/winboard/bitmaps/q87o.bmp0000644000175000001440000000212212717001265014461 00000000000000BMR>(WW} } ?????????8?g0B?=x??????1Ǐ?1Ï?1>88>88>><|x><|||x~<|||xG~<|||q|~18181888>?>?8|||??8xboard-4.9.1/winboard/bitmaps/dk72w.bmp0000644000175000001440000000163612717001265014632 00000000000000BM>(HH`?????????xboard-4.9.1/winboard/bitmaps/n54s.bmp0000644000175000001440000000075612717001265014467 00000000000000BM>(66} } ||||||||||||><< ?<<<x`ypyy ??xboard-4.9.1/winboard/bitmaps/p116s.bmp0000644000175000001440000000357612717001265014553 00000000000000BM~>(tt@} } ???????xboard-4.9.1/winboard/bitmaps/l64w.bmp0000644000175000001440000000107612717001265014466 00000000000000BM>>(@@  ??????????????xboard-4.9.1/winboard/bitmaps/p80o.bmp0000644000175000001440000000177612717001265014467 00000000000000BM>(PP  ??????????????xboard-4.9.1/winboard/bitmaps/k80s.bmp0000644000175000001440000000177612717001265014466 00000000000000BM>(PP  x?s??``s`98p0pp 0`88?8?9?9?s?s??pcpq8 08x891s?xboard-4.9.1/winboard/bitmaps/p64o.bmp0000644000175000001440000000107612717001265014462 00000000000000BM>>(@@  ?????????????xboard-4.9.1/winboard/bitmaps/a49c.bmp0000644000175000001440000000272212717001265014431 00000000000000BMv(11\xboard-4.9.1/winboard/bitmaps/b108s.bmp0000644000175000001440000000337612717001265014534 00000000000000BM>(ll} } ????????????xboard-4.9.1/winboard/bitmaps/o33s.bmp0000644000175000001440000000050612717001265014456 00000000000000BMF>(!!G ?xboard-4.9.1/winboard/bitmaps/k129o.bmp0000644000175000001440000000512212717001265014533 00000000000000BMR >( } } ??????p?????????????????p?????????????????????xboard-4.9.1/winboard/bitmaps/h33s.bmp0000644000175000001440000000050612717001265014447 00000000000000BMF>(!!} } |>777'o op@O߀?x gxboard-4.9.1/winboard/bitmaps/k72o.bmp0000644000175000001440000000163612717001265014456 00000000000000BM>(HH`} } p?@|>?????????<<~~?????y??~?<xboard-4.9.1/winboard/bitmaps/b58w.bmp0000644000175000001440000000101612717001265014451 00000000000000BM>(::? ????????xboard-4.9.1/winboard/bitmaps/ws72s.bmp0000644000175000001440000000163612717001265014661 00000000000000BM>(HH`?? |~??????? ?q?? 8??????xboard-4.9.1/winboard/bitmaps/n37o.bmp0000644000175000001440000000054612717001265014461 00000000000000BMf>(%%(} } xxxxxxx~x_?oxboard-4.9.1/winboard/bitmaps/k21s.bmp0000644000175000001440000000022212717001265014442 00000000000000BM>(T  xxxx8H (P((&ĩxxboard-4.9.1/winboard/bitmaps/b95s.bmp0000644000175000001440000000226212717001265014452 00000000000000BM>(__t} } ?||?????xboard-4.9.1/winboard/bitmaps/l64o.bmp0000644000175000001440000000107612717001265014456 00000000000000BM>>(@@  ????????c?????~~?????xboard-4.9.1/winboard/bitmaps/n87o.bmp0000644000175000001440000000212212717001265014456 00000000000000BMR>(WW} } ?????3!  q??????ǃc O<><?xGpA???xboard-4.9.1/winboard/bitmaps/p116w.bmp0000644000175000001440000000357612717001265014557 00000000000000BM~>(tt@???????xboard-4.9.1/winboard/bitmaps/l45s.bmp0000644000175000001440000000064612717001265014463 00000000000000BM>(--h} } ????xboard-4.9.1/winboard/bitmaps/r129o.bmp0000644000175000001440000000512212717001265014542 00000000000000BMR >( } } ???????????xboard-4.9.1/winboard/bitmaps/g72o.bmp0000644000175000001440000000163612717001265014452 00000000000000BM>(HH`} } ~???@?"Do?0 ??=ü?????ϟ㟜ǟǟϟ<>y>y~y?~y?9O9O3q????q?q????q?xboard-4.9.1/winboard/bitmaps/l33s.bmp0000644000175000001440000000050612717001265014453 00000000000000BMF>(!!G@@@AACCxboard-4.9.1/winboard/bitmaps/convert.c0000644000175000001440000000366512717001265015024 00000000000000#include // [HGM] This program converts a WinBoard monochrome .bmp piece-symbol bitmap file // to a .bm C-source file suitable for inclusion in xboard as buit-in bitmap. // You will have to convert the bitmaps one by one, and re-direct the output to the desired file! main(int argc, char **argv) { int i, j, k, d, cnt; char c, *p, data[10000], *name; unsigned char h, w; FILE *f; if(argc<2) { printf("usage is: convert \n"); exit(0); } f = fopen(argv[1], "rb"); if(f == NULL) { printf("file %s not found\n", argv[1]); exit(0); } if(fscanf(f, "BM%c", &i) != 1) { printf("%s does not have bitmap format\n"); exit(0); } for(i=0; i<15; i++) fgetc(f); fscanf(f, "%c%c%c%c%c", &h, &i, &i, &i, &w); for(i=0; i<39; i++) fgetc(f); // printf("h=%d, w=%d\n", h, w); p = data; for(i=0; i>1) | (c&0x80); c <<= 1; } *p++ = d; c = fgetc(f); for(k=0; k<8; k++) { d = (d>>1) | (c&0x80); c <<= 1; } *p++ = d; c = fgetc(f); for(k=0; k<8; k++) { d = (d>>1) | (c&0x80); c <<= 1; } *p++ = d; c = fgetc(f); for(k=0; k<8; k++) { d = (d>>1) | (c&0x80); c <<= 1; } *p++ = d; } } fclose(f); name = argv[1]; for(i=0; argv[1][i]; i++) if(argv[1][i] == '\\') name = argv[1]+i+1; for(i=0; name[i]; i++) if(name[i] == '.') name[i] = 0; printf("#define %s_width %d\n", name, w); printf("#define %s_height %d\n", name, h); printf("static unsigned char %s_bits[] = {\n", name); cnt = 0; for(i=h-1; i>=0; i--) { for(j=0; j>(8+j-w); // for(k=0; k<8; k++) { // printf("%c", c&1 ? 'X' : '.'); // c >>= 1; // } if(cnt!=0) printf(","); printf("0x%02x", c&255); if(++cnt % 15 == 0) { printf("\n"); } } } printf("\n};\n"); } xboard-4.9.1/winboard/bitmaps/p21o.bmp0000644000175000001440000000022212717001265014443 00000000000000BM>(T  xxxxwwwsxboard-4.9.1/winboard/bitmaps/analyze_14.ico0000644000175000001440000000044612717001265015635 00000000000000(pwwpwwwwwwxboard-4.9.1/winboard/bitmaps/b49w.bmp0000644000175000001440000000070612717001265014456 00000000000000BM>(11???????xboard-4.9.1/winboard/bitmaps/cv72w.bmp0000644000175000001440000000163612717001265014644 00000000000000BM>(HH`} } ?????????xboard-4.9.1/winboard/bitmaps/r80s.bmp0000644000175000001440000000177612717001265014475 00000000000000BM>(PP  ?????xboard-4.9.1/winboard/bitmaps/q116w.bmp0000644000175000001440000000357612717001265014560 00000000000000BM~>(tt@????????  >><~<>>~???????xboard-4.9.1/winboard/bitmaps/q72w.bmp0000644000175000001440000000163612717001265014474 00000000000000BM>(HH`????@@   0ppx?x?x???????xboard-4.9.1/winboard/bitmaps/s49o.bmp0000644000175000001440000000070612717001265014467 00000000000000BM>(11π࿀?ߟ??}xboard-4.9.1/winboard/bitmaps/wl33o.bmp0000644000175000001440000000050612717001265014636 00000000000000BMF>(!!?߀׀?cˀﻀ;߀xboard-4.9.1/winboard/bitmaps/as33s.bmp0000644000175000001440000000050612717001265014623 00000000000000BMF>(!!AG / QA A ?D AC#?xboard-4.9.1/winboard/bitmaps/a40o.bmp0000644000175000001440000000057612717001265014441 00000000000000BM~>(((@  >?o??>xboard-4.9.1/winboard/bitmaps/c54w.bmp0000644000175000001440000000075612717001265014460 00000000000000BM>(66} } ??<?<????<??<xboard-4.9.1/winboard/bitmaps/camel49w.bmp0000644000175000001440000000070612717001265015316 00000000000000BM>(11???xboard-4.9.1/winboard/bitmaps/ponder_14.ico0000644000175000001440000000044612717001265015461 00000000000000(?  |xboard-4.9.1/winboard/bitmaps/k129s.bmp0000644000175000001440000000512212717001265014537 00000000000000BMR >( } } ??8??<<???~~?<<<<<<<<??|>?~|>~||>>|>x>|~~?x>|<<??|>?xx???p??xx|>??????????????????xboard-4.9.1/winboard/bitmaps/n87w.bmp0000644000175000001440000000212212717001265014466 00000000000000BMR>(WW?p?????@???xboard-4.9.1/winboard/bitmaps/c45w.bmp0000644000175000001440000000064612717001265014456 00000000000000BM>(--h} } ??x888x?x888x??xboard-4.9.1/winboard/bitmaps/n37s.bmp0000644000175000001440000000054612717001265014465 00000000000000BMf>(%%(} } xxxxxxxxx`  07'O???xboard-4.9.1/winboard/bitmaps/m49o.bmp0000644000175000001440000000070612717001265014461 00000000000000BM>(11??a?߀߀߀?xboard-4.9.1/winboard/bitmaps/tim.bmp0000644000175000001440000001646612717001265014474 00000000000000BM66(PP  '''bbb }}}:::OOO:::'''YYY!!!zzzRRReee:::RRReee:::'''777kkkzzzRRROOOCCC777!!!eee...qqqIII111ܔܓ 9Ѿ-"HH~&UUUZZZ222^^hkMn888888ܓܔDE?$0k-1p,HHU&&&&^2UZ2Z2U2& 8e78888888ѶܔܔF$ɱk-" Hhhl"IHHI&H&22Z22^^ZtT88888888ܓܓE0p,HhH"pS="@""""I~ZZZZZ2&DT888888ܓܔT1"H,hĆ-SVVr="hhZZ222^2^r888888ܓܔܔ-pp,Hl?--SI"&ZZZ22/&&8888887-"H"-_kP0zkkV>>>>CcPPJ r@|,.sn Otc񼵼rplrJܓܓmt,1C666>꣖ʨ @r@ Z Hv%:V""=A#ܓܓܓܘCC666{66)>) {tt,Yv:(aڼ<<l=7^ܓܓܓͳ*CCC6>6{>{>6) y]:CC>>6 )6$>):Pt(:(y-".&ܓܓl&C))CC)):)CC>CCCC C6))(P%((ycy<<"lUlܓI0) ))](0)C:)C)C)<!((({,H2+JU+ij+U&Z h=p.3jLw .z}lhiJJTJ2,0)2ZTq.+i3+·H Hh "3.uX~A.}*&~hhUUUUIr]Kf>P-V5kakac<׳IUU"hYrrph.q㓓XXXx~1z0C>C>{6>]:(](aPV>>6{(]]]Pkaarp" 3瓓#[.ZX"-o*C>C>66))(K]]]](Prt""U.3ujܓ~uZlp100CfC>>>>>Q]](](]((%%(} } www88GGOGG88wwwxboard-4.9.1/winboard/bitmaps/a45w.bmp0000644000175000001440000000064612717001265014454 00000000000000BM>(--h} } x88xxxx??xboard-4.9.1/winboard/bitmaps/a33o.bmp0000644000175000001440000000050612717001265014434 00000000000000BMF>(!!} } ?xboard-4.9.1/winboard/bitmaps/icon_b.bmp0000644000175000001440000000027612717001265015124 00000000000000BM>(   777777|/>oooo_?` 3?9}xboard-4.9.1/winboard/bitmaps/c45s.bmp0000644000175000001440000000064612717001265014452 00000000000000BM>(--h} } ??x0`x@?@0`xx??xboard-4.9.1/winboard/bitmaps/l72s.bmp0000644000175000001440000000163612717001265014463 00000000000000BM>(HH`??????xboard-4.9.1/winboard/bitmaps/p45w.bmp0000644000175000001440000000064612717001265014473 00000000000000BM>(--h????xboard-4.9.1/winboard/bitmaps/p37w.bmp0000644000175000001440000000054612717001265014473 00000000000000BMf>(%%(?xboard-4.9.1/winboard/bitmaps/zebra49o.bmp0000644000175000001440000000070612717001265015330 00000000000000BM>(11} } ?/?ππ߀??C?`qq88.nxboard-4.9.1/winboard/bitmaps/p58w.bmp0000644000175000001440000000101612717001265014467 00000000000000BM>(::???xboard-4.9.1/winboard/bitmaps/r129s.bmp0000644000175000001440000000512212717001265014546 00000000000000BMR >( } } ???????????xboard-4.9.1/winboard/bitmaps/n87s.bmp0000644000175000001440000000212212717001265014462 00000000000000BMR>(WW} } A0? ?x>>>?|?|?|>||?>??? p??xboard-4.9.1/winboard/bitmaps/u72s.bmp0000644000175000001440000000163612717001265014474 00000000000000BM>(HH`?E? ??~????`p <>?A1Xc0p???xboard-4.9.1/winboard/bitmaps/cv72s.bmp0000644000175000001440000000163612717001265014640 00000000000000BM>(HH`} } ????x?x?||<<<<<<<<?<>1qqaǀǀ ??ppx<|  ?xboard-4.9.1/winboard/bitmaps/camel72w.bmp0000644000175000001440000000163612717001265015315 00000000000000BM>(HH`??????????xboard-4.9.1/winboard/bitmaps/p72w.bmp0000644000175000001440000000163612717001265014473 00000000000000BM>(HH`???????????xboard-4.9.1/winboard/bitmaps/a45o.bmp0000644000175000001440000000064612717001265014444 00000000000000BM>(--h} } xx=ϟ?xxx?xboard-4.9.1/winboard/bitmaps/v33w.bmp0000644000175000001440000000050612717001265014471 00000000000000BMF>(!!?{3??xboard-4.9.1/winboard/bitmaps/k116w.bmp0000644000175000001440000000357612717001265014552 00000000000000BM~>(tt@?????????????????????????????? >????xboard-4.9.1/winboard/bitmaps/q64o.bmp0000644000175000001440000000107612717001265014463 00000000000000BM>>(@@  ???|>????`  x<91<(%%(} } <0gxPPxPxTR8 x|wxboard-4.9.1/winboard/bitmaps/cv49o.bmp0000644000175000001440000000070612717001265014635 00000000000000BM>(11|}}}뿀߀߿_~__;?ooxboard-4.9.1/winboard/bitmaps/p25s.bmp0000644000175000001440000000024212717001265014455 00000000000000BM>(d} } ?xboard-4.9.1/winboard/bitmaps/a64o.bmp0000644000175000001440000000107612717001265014443 00000000000000BM>>(@@  ???O????????xboard-4.9.1/winboard/bitmaps/m72s.bmp0000644000175000001440000000163612717001265014464 00000000000000BM>(HH`???????????xboard-4.9.1/winboard/bitmaps/g49w.bmp0000644000175000001440000000070612717001265014463 00000000000000BM>(11????Á?????xboard-4.9.1/winboard/bitmaps/q116o.bmp0000644000175000001440000000357612717001265014550 00000000000000BM~>(tt@} } ???????????x?px8`Ã|<????????????>>?|>?Ǐ<|~?Ǐ<x?>?x?>?q?~?q???>?c>?c>?#<Ǐ<Ǐ?<Ǐ?88811?pGGGGGx ?xboard-4.9.1/winboard/bitmaps/q108s.bmp0000644000175000001440000000337612717001265014553 00000000000000BM>(ll} } ?>?????? ``888|||??????????p?p?ppp??????xboard-4.9.1/winboard/bitmaps/cv37w.bmp0000644000175000001440000000054612717001265014644 00000000000000BMf>(%%(  <<<?????xboard-4.9.1/winboard/bitmaps/p37o.bmp0000644000175000001440000000054612717001265014463 00000000000000BMf>(%%(} } swxboard-4.9.1/winboard/bitmaps/c64s.bmp0000644000175000001440000000107612717001265014451 00000000000000BM>>(@@  ????|>@`p 0 0??? 0 0p`|>???xboard-4.9.1/winboard/bitmaps/u72o.bmp0000644000175000001440000000163612717001265014470 00000000000000BM>(HH`???E? ??~??????s???< F?1σc3q???xboard-4.9.1/winboard/bitmaps/ln49w.bmp0000644000175000001440000000070612717001265014646 00000000000000BM>(11O oG???xboard-4.9.1/winboard/bitmaps/g33s.bmp0000644000175000001440000000050612717001265014446 00000000000000BMF>(!!} }  ??0?0?q?ǟǟπ燀πxboard-4.9.1/winboard/bitmaps/q129o.bmp0000644000175000001440000000512212717001265014541 00000000000000BMR >( } } ????`????~as?????8?8???x??????~~~~~~8??xboard-4.9.1/winboard/bitmaps/a37s.bmp0000644000175000001440000000054612717001265014450 00000000000000BMf>(%%(} } xx 8x<w???  xx 8 88xxboard-4.9.1/winboard/bitmaps/q37s.bmp0000644000175000001440000000054612717001265014470 00000000000000BMf>(%%(} } 0gxxxÎxǏxǏ8>>߾8xboard-4.9.1/winboard/bitmaps/b129w.bmp0000644000175000001440000000512212717001265014532 00000000000000BMR >( ?????????????xboard-4.9.1/winboard/bitmaps/wl72s.bmp0000644000175000001440000000163612717001265014652 00000000000000BM>(HH`?? |~????????8`0`0`0 `088??????xboard-4.9.1/winboard/bitmaps/r40s.bmp0000644000175000001440000000057612717001265014466 00000000000000BM~>(((@  ?????xboard-4.9.1/winboard/bitmaps/cv58w.bmp0000644000175000001440000000101612717001265014640 00000000000000BM>(::} } ??????????xboard-4.9.1/winboard/bitmaps/k40w.bmp0000644000175000001440000000057612717001265014463 00000000000000BM~>(((@??xboard-4.9.1/winboard/bitmaps/ln72w.bmp0000644000175000001440000000163612717001265014645 00000000000000BM>(HH`?? ??????;3#?????xboard-4.9.1/winboard/bitmaps/p129o.bmp0000644000175000001440000000512212717001265014540 00000000000000BMR >( } } ????????????xboard-4.9.1/winboard/bitmaps/b80s.bmp0000644000175000001440000000177612717001265014455 00000000000000BM>(PP  ??????????xboard-4.9.1/winboard/bitmaps/c58s.bmp0000644000175000001440000000101612717001265014446 00000000000000BM>(::} } ???ss>s880``````088>sss???xboard-4.9.1/winboard/bitmaps/b49s.bmp0000644000175000001440000000070612717001265014452 00000000000000BM>(11} } ?? ?????xboard-4.9.1/winboard/bitmaps/n25s.bmp0000644000175000001440000000024212717001265014453 00000000000000BM>(d} }  x37'oO?Gxboard-4.9.1/winboard/bitmaps/o72w.bmp0000644000175000001440000000163612717001265014472 00000000000000BM>(HH`?????????xboard-4.9.1/winboard/bitmaps/q54s.bmp0000644000175000001440000000075612717001265014472 00000000000000BM>(66} } ??????  <|~|| ~? ~? x?x p8 <???>xboard-4.9.1/winboard/bitmaps/dk49s.bmp0000644000175000001440000000070612717001265014627 00000000000000BM>(11??????xboard-4.9.1/winboard/bitmaps/a40w.bmp0000644000175000001440000000057612717001265014451 00000000000000BM~>(((@  >????xboard-4.9.1/winboard/wlayout.c0000644000175000001440000001504712717001265013406 00000000000000/* * Layout management * * Author: Alessandro Scotti (Dec 2005) * * Copyright 2005 Alessandro Scotti * * Enhancements Copyright 2009, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include /* required for all Windows applications */ #include #include #include #include #include #include "common.h" #include "frontend.h" #include "winboard.h" VOID RestoreWindowPlacement( HWND hWnd, WindowPlacement * wp ) { if( wp->x != CW_USEDEFAULT || wp->y != CW_USEDEFAULT || wp->width != CW_USEDEFAULT || wp->height != CW_USEDEFAULT ) { WINDOWPLACEMENT stWP; ZeroMemory( &stWP, sizeof(stWP) ); EnsureOnScreen( &wp->x, &wp->y, 0, 0); stWP.length = sizeof(stWP); stWP.flags = 0; stWP.showCmd = SW_SHOW; stWP.ptMaxPosition.x = 0; stWP.ptMaxPosition.y = 0; stWP.rcNormalPosition.left = wp->x; stWP.rcNormalPosition.right = wp->x + wp->width; stWP.rcNormalPosition.top = wp->y; stWP.rcNormalPosition.bottom = wp->y + wp->height; SetWindowPlacement(hWnd, &stWP); } } VOID InitWindowPlacement( WindowPlacement * wp ) { wp->visible = TRUE; wp->x = CW_USEDEFAULT; wp->y = CW_USEDEFAULT; wp->width = CW_USEDEFAULT; wp->height = CW_USEDEFAULT; } static BOOL IsAttachDistance( int a, int b ) { BOOL result = FALSE; if( a == b ) { result = TRUE; } return result; } static BOOL IsDefaultPlacement( WindowPlacement * wp ) { BOOL result = FALSE; if( wp->x == CW_USEDEFAULT || wp->y == CW_USEDEFAULT || wp->width == CW_USEDEFAULT || wp->height == CW_USEDEFAULT ) { result = TRUE; } return result; } BOOL GetActualPlacement( HWND hWnd, WindowPlacement * wp ) { BOOL result = FALSE; if( hWnd != NULL ) { WINDOWPLACEMENT stWP; ZeroMemory( &stWP, sizeof(stWP) ); stWP.length = sizeof(stWP); GetWindowPlacement( hWnd, &stWP ); wp->x = stWP.rcNormalPosition.left; wp->y = stWP.rcNormalPosition.top; wp->width = stWP.rcNormalPosition.right - stWP.rcNormalPosition.left; wp->height = stWP.rcNormalPosition.bottom - stWP.rcNormalPosition.top; result = TRUE; } return result; } static BOOL IsAttachedByWindowPlacement( LPRECT lprcMain, WindowPlacement * wp ) { BOOL result = FALSE; if( ! IsDefaultPlacement(wp) ) { if( IsAttachDistance( lprcMain->right, wp->x ) || IsAttachDistance( lprcMain->bottom, wp->y ) || IsAttachDistance( lprcMain->left, (wp->x + wp->width) ) || IsAttachDistance( lprcMain->top, (wp->y + wp->height) ) ) { result = TRUE; } } return result; } VOID ReattachAfterMove( LPRECT lprcOldPos, int new_x, int new_y, HWND hWndChild, WindowPlacement * pwpChild ) { if( ! IsDefaultPlacement( pwpChild ) ) { GetActualPlacement( hWndChild, pwpChild ); if( IsAttachedByWindowPlacement( lprcOldPos, pwpChild ) ) { /* Get position delta */ int delta_x = pwpChild->x - lprcOldPos->left; int delta_y = pwpChild->y - lprcOldPos->top; /* Adjust placement */ pwpChild->x = new_x + delta_x; pwpChild->y = new_y + delta_y; /* Move window */ if( hWndChild != NULL ) { SetWindowPos( hWndChild, HWND_TOP, pwpChild->x, pwpChild->y, 0, 0, SWP_NOZORDER | SWP_NOSIZE ); } } } } extern FILE *debugFP; VOID ReattachAfterSize( LPRECT lprcOldPos, int new_w, int new_h, HWND hWndChild, WindowPlacement * pwpChild ) { if( ! IsDefaultPlacement( pwpChild ) ) { GetActualPlacement( hWndChild, pwpChild ); if( IsAttachedByWindowPlacement( lprcOldPos, pwpChild ) ) { /* Get delta of lower right corner */ int delta_x = new_w - (lprcOldPos->right - lprcOldPos->left); int delta_y = new_h - (lprcOldPos->bottom - lprcOldPos->top); /* Adjust size & placement */ if(pwpChild->x + pwpChild->width >= lprcOldPos->right && (pwpChild->x + pwpChild->width < screenGeometry.right - 5 || delta_x > 0) ) // keep right edge glued to display edge if touching pwpChild->width += delta_x; if(pwpChild->x + pwpChild->width >= screenGeometry.right ) // don't move right edge off screen pwpChild->width = screenGeometry.right - pwpChild->x; if(pwpChild->y + pwpChild->height >= lprcOldPos->bottom && (pwpChild->y + pwpChild->height < screenGeometry.bottom - 35 || delta_y > 0) ) // keep bottom edge glued to display edge if touching pwpChild->height += delta_y; if(pwpChild->y + pwpChild->height >= screenGeometry.bottom - 30 ) // don't move bottom edge off screen pwpChild->height = screenGeometry.bottom - 30 - pwpChild->y; if(pwpChild->x >= lprcOldPos->right) pwpChild->width -= delta_x, pwpChild->x += delta_x; if(pwpChild->y >= lprcOldPos->bottom) pwpChild->height -= delta_y, pwpChild->y += delta_y; if(pwpChild->width < 30) pwpChild->width = 30; // force minimum width if(pwpChild->height < 50) pwpChild->height = 50; // force minimum height /* Move window */ if( hWndChild != NULL ) { SetWindowPos( hWndChild, HWND_TOP, pwpChild->x, pwpChild->y, pwpChild->width, pwpChild->height, SWP_NOZORDER ); } } } } xboard-4.9.1/winboard/winboard.rc0000644000175000001440000036054312717001265013675 00000000000000//Microsoft Developer Studio generated resource script. // #include "resource.h" #include "config.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #define APSTUDIO_HIDDEN_SYMBOLS #include "windows.h" #undef APSTUDIO_HIDDEN_SYMBOLS #include "dlgs.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 // moved to "res" subdir to make testing easier-- don't want it in the root MANIFEST_RESOURCE_ID 24 MOVEABLE PURE "res\\winboard.exe.manifest" ///////////////////////////////////////////////////////////////////////////// // // Dialog // ABOUTBOX DIALOG DISCARDABLE 22, 17, 180, 108 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About WinBoard" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,126,89,50,14,WS_GROUP ICON "icon_white",IDC_STATIC,3,6,20,20 LTEXT "Chessboard for Windows",400,25,15,121,8 LTEXT "Copyright 1991 Digital Equipment Corporation",201,6,34, 149,8 LTEXT "Enhancements Copyright 1992-2015 Free Software Foundation", OPT_TCtext1,6,45,121,17 CONTROL "",OPT_TCTime,"Static",SS_BLACKRECT,4,28,159,1 LTEXT "WinBoard 0.0.0",ABOUTBOX_Version,25,5,160,8 LTEXT "Enhancements Copyright 2005\r\nAlessandro Scotti", IDC_STATIC,6,65,120,24 LTEXT " ", OPT_MESS,6,85,120,16 END DLG_TimeControl DIALOG DISCARDABLE 6, 18, 263, 212 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Time Control" FONT 8, "MS Sans Serif" BEGIN LTEXT "Use arrow keys to specify which clock setting type, then press tab to alter values.", IDC_Babble,9,9,231,20 CONTROL "Conventional chess clock",OPT_TCUseMoves,"Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,36,113,10 CONTROL "Incremental clock",OPT_TCUseInc,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,7,73,107,10 CONTROL "Fixed time per move",OPT_TCUseFixed,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,7,124,107,10 LTEXT "Number of moves:",OPT_TCtext1,15,52,58,8,NOT WS_GROUP EDITTEXT OPT_TCMoves,77,52,22,12,ES_AUTOHSCROLL | WS_GROUP LTEXT "Within number of minutes:",OPT_TCtext2,113,54,81,8,NOT WS_GROUP EDITTEXT OPT_TCTime,197,52,32,12,ES_AUTOHSCROLL LTEXT "Initial number of minutes:",OPT_TCitext1,15,89,126,8,NOT WS_GROUP EDITTEXT OPT_TCTime2,147,87,32,12,ES_AUTOHSCROLL | WS_GROUP LTEXT "Plus number of seconds per move:",OPT_TCitext2,15,105,129,8,NOT WS_GROUP EDITTEXT OPT_TCInc,147,103,32,12,ES_AUTOHSCROLL LTEXT "Maximum seconds per move:",OPT_TCftext,15,142,129,8,NOT WS_GROUP EDITTEXT OPT_TCFixed,147,140,32,12,ES_AUTOHSCROLL LTEXT "",OPT_TCitext3,185,148,67,8,NOT WS_GROUP LTEXT "Time-Odds Factors:",GPB_Factors,6,158,150,8,NOT WS_GROUP | WS_TABSTOP LTEXT "Engine #1:",IDC_Factor1,6,173,60,8,NOT WS_GROUP EDITTEXT OPT_TCOdds1,67,171,32,12,ES_AUTOHSCROLL | WS_GROUP LTEXT "Engine #2:",IDC_Factor2,106,173,60,8,NOT WS_GROUP EDITTEXT OPT_TCOdds2,167,171,32,12,ES_AUTOHSCROLL PUSHBUTTON "OK",IDOK,139,190,40,14,WS_GROUP PUSHBUTTON "Cancel",IDCANCEL,195,190,40,14 END DLG_LoadOptions DIALOG DISCARDABLE 10, 18, 170, 281 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Load Game Options" FONT 8, "MS Sans Serif" BEGIN CONTROL "Load games with &automatic stepping",OPT_Autostep,"Button", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,4,160,10 LTEXT "&seconds per move",OPT_AStext1,46,20,90,8,NOT WS_GROUP EDITTEXT OPT_ASTimeDelay,16,16,28,14,ES_AUTOHSCROLL LTEXT "when filtering game list on position, use thresholds:",OPT_thresholds,4,36,160,8,NOT WS_GROUP LTEXT "minimum Elo for &best player",OPT_elo1t,46,54,90,8,NOT WS_GROUP EDITTEXT OPT_elo1,16,50,28,14,ES_AUTOHSCROLL LTEXT "minimum Elo for &weakest players",OPT_elo2t,46,74,90,8,NOT WS_GROUP EDITTEXT OPT_elo2,16,70,28,14,ES_AUTOHSCROLL LTEXT "or later &year",OPT_datet,46,94,94,8,NOT WS_GROUP EDITTEXT OPT_date,16,90,28,14,ES_AUTOHSCROLL LTEXT "co&nsecutive positions",OPT_Stretcht,46,114,94,8,NOT WS_GROUP EDITTEXT OPT_Stretch,16,110,28,14,ES_AUTOHSCROLL LTEXT "final piece count",OPT_Ranget,46,134,94,8,NOT WS_GROUP EDITTEXT OPT_Counts,16,130,28,14,ES_AUTOHSCROLL CONTROL "Match exact &position",OPT_Exact,"Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,6,156,159,10 CONTROL "Match if position is s&ubset",OPT_Subset,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,6,169,159,10 CONTROL "Match material with e&xact pawn structure",OPT_Struct,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,6,182,159,10 CONTROL "Match &material",OPT_Material,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,6,195,159,10 CONTROL "Material &range (upper board-half is optional)",OPT_Range,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,6,208,159,10 CONTROL "Material &difference (optional material balanced)",OPT_Difference,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,6,221,159,10 GROUPBOX "Search Mode: ",OPT_SearchMode,3,146,164,87,WS_GROUP CONTROL "Also match reversed &colors",OPT_Reversed,"Button", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,234,160,10 CONTROL "Also match &left-right mirror image",OPT_Mirror,"Button", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,247,160,10 PUSHBUTTON "OK",IDOK,56,262,50,14,WS_GROUP PUSHBUTTON "Cancel",IDCANCEL,112,262,50,14 END DLG_SaveOptions DIALOG DISCARDABLE 6, 17, 218, 119 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Save Game Options" FONT 8, "MS Sans Serif" BEGIN CONTROL "Save games automatically",OPT_Autosave,"Button", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,4,157,10 CONTROL "Prompt for filename",OPT_AVPrompt,"Button", BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,18,150,10 CONTROL "To file:",OPT_AVToFile,"Button",BS_AUTORADIOBUTTON,16, 32,56,10 EDITTEXT OPT_AVFilename,74,30,117,14,ES_AUTOHSCROLL PUSHBUTTON "...",OPT_AVBrowse,196,30,18,14 GROUPBOX "Save As: ",801,4,48,210,28,WS_GROUP CONTROL "PGN",OPT_PGN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,8, 60,59,10 CONTROL "Old",OPT_Old,"Button",BS_AUTORADIOBUTTON,74,60,114,10 CONTROL "Save out of book info in PGN",OPT_OutOfBookInfo,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,4,82,169,10 PUSHBUTTON "OK",IDOK,108,100,50,14,WS_GROUP PUSHBUTTON "Cancel",IDCANCEL,164,100,50,14 END 1536 DIALOG DISCARDABLE 36, 24, 264, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Open" FONT 8, "Helv" BEGIN LTEXT "File &Name:",1090,6,6,76,9 EDITTEXT 1152,6,16,90,12,ES_AUTOHSCROLL | ES_OEMCONVERT LISTBOX 1120,6,32,90,68,LBS_SORT | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP LTEXT "&Directories:",IDC_Directories,110,6,92,9 LTEXT "",1088,110,18,92,9,SS_NOPREFIX | NOT WS_GROUP LISTBOX 1121,110,32,92,68,LBS_SORT | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP LTEXT "List Files of &Type:",1089,6,104,90,9 COMBOBOX 1136,6,114,90,36,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP LTEXT "Dri&ves:",1091,110,104,92,9 COMBOBOX 1137,110,114,92,68,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "OK",IDOK,208,6,50,14,WS_GROUP PUSHBUTTON "Cancel",IDCANCEL,208,24,50,14,WS_GROUP PUSHBUTTON "&Help",1038,208,46,50,14,NOT WS_VISIBLE | WS_GROUP LTEXT "&Index number:",IDC_IndexNr,208,74,48,8 EDITTEXT OPT_IndexNumberOld,208,84,50,12,ES_AUTOHSCROLL PUSHBUTTON "Net&work...",1037,208,113,50,14,WS_GROUP END DLG_CommPort DIALOG DISCARDABLE 25, 30, 220, 79 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Communication Port Settings" FONT 8, "Helv" BEGIN PUSHBUTTON "OK",IDOK,106,60,50,14 PUSHBUTTON "Cancel",IDCANCEL,164,60,50,14 RTEXT "&Port:",IDC_Port,4,6,40,10 COMBOBOX OPT_Port,49,4,55,60,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP RTEXT "Data &Rate:",IDC_Rate,114,6,40,10,NOT WS_GROUP COMBOBOX OPT_DataRate,159,4,55,100,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP RTEXT "Data &Bits:",IDC_Bits,4,25,40,10,NOT WS_GROUP COMBOBOX OPT_Bits,49,22,55,60,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP RTEXT "P&arity:",IDC_Parity,114,24,40,10,NOT WS_GROUP COMBOBOX OPT_Parity,159,22,55,60,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP RTEXT "&Stop Bits:",IDC_Stop,4,42,40,10,NOT WS_GROUP COMBOBOX OPT_StopBits,49,40,55,60,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP RTEXT "F&low:",IDC_Flow,114,42,40,10,NOT WS_GROUP COMBOBOX OPT_Flow,159,40,55,60,CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Help",OPT_SerialHelp,4,60,50,14,NOT WS_VISIBLE END DLG_EditComment DIALOG DISCARDABLE 6, 18, 302, 102 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Edit Comment" FONT 8, "MS Sans Serif" BEGIN PUSHBUTTON "OK",IDOK,194,84,50,14 PUSHBUTTON "Cancel",OPT_CancelComment,250,84,50,14 CONTROL "",OPT_CommentText,"RICHEDIT",ES_MULTILINE | ES_AUTOHSCROLL | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,2,2,298,78 PUSHBUTTON "&Clear",OPT_ClearComment,2,84,50,14 PUSHBUTTON "&Edit",OPT_EditComment,58,84,50,14 END DLG_PromotionKing DIALOG DISCARDABLE 98, 90, 183, 41 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Promote to:" FONT 8, "MS Sans Serif" BEGIN PUSHBUTTON "Chance&llor",PB_Chancellor,49,4,40,14,NOT WS_TABSTOP PUSHBUTTON "&Archbishop",PB_Archbishop,94,4,40,14,NOT WS_TABSTOP PUSHBUTTON "&Queen",PB_Queen,4,23,40,14,WS_GROUP PUSHBUTTON "&Rook",PB_Rook,49,23,40,14,NOT WS_TABSTOP PUSHBUTTON "&Bishop",PB_Bishop,94,23,40,14,NOT WS_TABSTOP PUSHBUTTON "K&night",PB_Knight,139,23,40,14,NOT WS_TABSTOP PUSHBUTTON "&King",PB_King,4,4,40,14,NOT WS_TABSTOP PUSHBUTTON "&Cancel",IDCANCEL,139,4,40,14,WS_GROUP LTEXT "C&entaur",IDC_Centaur,12,6,25,10 END ABOUTBOX2 DIALOG DISCARDABLE 22, 17, 281, 223 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About WinBoard" FONT 8, "MS Sans Serif" BEGIN RTEXT "Chessboard for Windows",IDC_ChessBoard,196,154,80,8 LTEXT "Copyright 1991 Digital Equipment Corporation",201,4,168, 151,8 LTEXT "Enhancements Copyright 1992-2014 Free Software Foundation", OPT_TCtext1,4,179,126,17 CONTROL "",OPT_TCTime,"Static",SS_BLACKRECT,4,164,272,1 LTEXT "WinBoard 0.0.0",ABOUTBOX_Version,4,154,64,8 CONTROL "galactic",IDC_STATIC,"Static",SS_BITMAP,4,4,15,13 DEFPUSHBUTTON "OK",IDOK,226,204,50,14 LTEXT "Enhancements Copyright 2005\r\nAlessandro Scotti", IDC_STATIC,4,199,183,20 LTEXT "(unofficial version ""X"")",IDC_STATIC,68,154,71,8 END DLG_GameList DIALOG DISCARDABLE 6, 18, 282, 153 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Game List" FONT 8, "MS Sans Serif" BEGIN LISTBOX OPT_GameListText,2,2,277,130,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP PUSHBUTTON "&Thresholds",OPT_GameListLoad,2,136,40,15 PUSHBUTTON "&Find Position",OPT_GameListFind,45,136,48,15 PUSHBUTTON "&Narrow",OPT_GameListNarrow,96,136,30,15 PUSHBUTTON "&Close",OPT_GameListClose,129,136,20,15 PUSHBUTTON ">",OPT_GameListNext,152,136,17,15 PUSHBUTTON "&Filter",IDC_GameListDoFilter,172,136,25,14 EDITTEXT IDC_GameListFilter,201,136,78,14,ES_AUTOHSCROLL END DLG_EditTags DIALOG DISCARDABLE 6, 18, 223, 140 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Edit Tags" FONT 8, "MS Sans Serif" BEGIN PUSHBUTTON "OK",IDOK,114,122,50,14 PUSHBUTTON "Cancel",OPT_TagsCancel,170,122,50,14 PUSHBUTTON "Save",OPT_TagsSave,58,122,50,14 CONTROL "",OPT_TagsText,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,2,2,218,115 PUSHBUTTON "&Edit",OPT_EditTags,2,122,50,14 END WBCONSOLE DIALOG DISCARDABLE 0, 0, 335, 133 STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "I C S" CLASS "WBConsole" FONT 8, "Courier New" BEGIN CONTROL "",OPT_ConsoleText,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | ES_NOHIDESEL | ES_READONLY | ES_NUMBER | WS_BORDER | WS_VSCROLL | WS_TABSTOP,0,0,335,119 CONTROL "",OPT_ConsoleInput,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_NOHIDESEL | ES_NUMBER | WS_BORDER | WS_TABSTOP,0,120,335,13, WS_EX_TRANSPARENT END DLG_Analysis DIALOG DISCARDABLE 0, 0, 294, 62 STYLE WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Dialog" FONT 8, "MS Sans Serif" BEGIN CONTROL "",OPT_AnalysisText,"RICHEDIT",ES_MULTILINE | ES_READONLY | ES_WANTRETURN | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,4,4,286,54 END DLG_Error DIALOG DISCARDABLE 0, 0, 220, 66 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Error" FONT 8, "MS Sans Serif" BEGIN ICON 32515,IDC_STATIC,4,4,21,20 LTEXT "Sorry Charlie",OPT_ErrorText,28,4,188,36 DEFPUSHBUTTON "OK",IDOK,84,48,50,14 END DLG_Colorize DIALOGEX 0, 0, 174, 61 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "I C S Interaction Colors" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,64,42,50,14,WS_GROUP PUSHBUTTON "Cancel",IDCANCEL,120,42,50,14 PUSHBUTTON "&Color...",OPT_ChooseColor,119,4,51,14,WS_GROUP CONTROL "&Bold",OPT_Bold,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,4,24,30,10 CONTROL "&Italic",OPT_Italic,"Button",BS_AUTOCHECKBOX,40,24,30, 10 CONTROL "&Underline",OPT_Underline,"Button",BS_AUTOCHECKBOX,76, 24,45,10 CONTROL "&Strikeout",OPT_Strikeout,"Button",BS_AUTOCHECKBOX,128, 24,42,10 CONTROL "",OPT_Sample,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_GROUP,4,4,106,15,WS_EX_CLIENTEDGE END DLG_Question DIALOG DISCARDABLE 0, 0, 187, 77 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Question" FONT 8, "MS Sans Serif" BEGIN EDITTEXT OPT_QuestionInput,4,36,179,14,ES_AUTOHSCROLL DEFPUSHBUTTON "OK",IDOK,78,58,50,14,WS_GROUP PUSHBUTTON "Cancel",IDCANCEL,134,58,50,14 LTEXT "Enter a chess engine command or just type something stupid that will completely screw things up.", OPT_QuestionText,30,2,153,28 ICON 32514,IDC_STATIC,4,4,20,20 END DLG_Startup DIALOG DISCARDABLE 0, 0, 326, 159 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "WinBoard Startup" FONT 8, "MS Sans Serif" BEGIN GROUPBOX "What would you like to do?",IDC_Welcome,4,4,318,56 CONTROL "&Play against a chess engine or match two engines", OPT_ChessEngine,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,8,17,310,10 CONTROL "&Use an Internet Chess Server",OPT_ChessServer,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,8,30,310,10 CONTROL "Just &view or edit game files",OPT_View,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,8,43,310,10 LTEXT "Specify Chess &Engines:",IDC_SPECIFY_ENG_STATIC,11,63, 200,10 COMBOBOX OPT_ChessEngineName,17,74,244,129,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP COMBOBOX OPT_SecondChessEngineName,17,92,244,129,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP LTEXT "Specify Chess &Server:",IDC_SPECIFY_SERVER_STATIC,11, 108,200,10 COMBOBOX OPT_ChessServerName,17,122,244,129,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP CONTROL "&Additional options",OPT_AnyAdditional,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,11,142,91,10 EDITTEXT OPT_AdditionalOptions,105,142,215,13,ES_AUTOHSCROLL DEFPUSHBUTTON "OK",IDOK,272,73,50,14 PUSHBUTTON "Cancel",IDCANCEL,272,91,50,14 PUSHBUTTON "&Help",IDM_HELPCONTENTS,272,109,50,14 END DLG_IndexNumber DIALOG DISCARDABLE 0, 0, 236, 18 STYLE DS_3DLOOK | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS FONT 8, "MS Sans Serif" BEGIN LTEXT "Inde&x number:",IDC_Index,5,2,46,8 EDITTEXT OPT_IndexNumber,54,0,155,13,ES_AUTOHSCROLL END DLG_TypeInMove DIALOG DISCARDABLE 0, 0, 206, 23 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Type in a move" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,96,4,50,14 PUSHBUTTON "Cancel",IDCANCEL,152,4,50,14 EDITTEXT OPT_Move,4,4,86,13,ES_AUTOHSCROLL END DLG_TypeInName DIALOG DISCARDABLE 0, 0, 206, 23 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Type in your name" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,96,4,50,14 PUSHBUTTON "Cancel",IDCANCEL,152,4,50,14 EDITTEXT OPT_Name,4,4,86,13,ES_AUTOHSCROLL END DLG_Sound DIALOG DISCARDABLE 0, 0, 262, 105 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Sounds" FONT 8, "MS Sans Serif" BEGIN LTEXT "&Event:",IDC_Event,4,7,46,9 COMBOBOX CBO_Sounds,50,4,208,110,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP // GROUPBOX "sound type",IDC_STATIC,8,18,66,62 CONTROL "&No sound",OPT_NoSound,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,12,22,47,10 CONTROL "&Default beep",OPT_DefaultBeep,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,12,36,83,10 CONTROL "&Built-in sound:",OPT_BuiltInSound,"Button", BS_AUTORADIOBUTTON | WS_TABSTOP,12,51,83,10 CONTROL "&WAV file:",OPT_WavFile,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,12,66,83,10 COMBOBOX OPT_BuiltInSoundName,96,48,103,109,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP | WS_GROUP EDITTEXT OPT_WavFileName,96,65,103,12,ES_AUTOHSCROLL PUSHBUTTON "B&rowse...",OPT_BrowseSound,208,64,50,14 PUSHBUTTON "&Play",OPT_PlaySound,208,47,50,14 PUSHBUTTON "Defaults",OPT_DefaultSounds,6,86,50,14 DEFPUSHBUTTON "OK",IDOK,152,86,50,14 PUSHBUTTON "Cancel",IDCANCEL,208,86,50,14 END DLG_GeneralOptions DIALOG DISCARDABLE 0, 0, 300, 225 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "General Options" FONT 8, "MS Sans Serif" BEGIN CONTROL "Always on &Top",OPT_AlwaysOnTop,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,4,6,151,10 CONTROL "Highlight Last &Move",OPT_HighlightLastMove,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,6,151,10 CONTROL "Always &Queen Ctrl+Shift+Q",OPT_AlwaysQueen,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,20,151,10 CONTROL "Periodic &Updates",OPT_PeriodicUpdates,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,20,151,10 CONTROL "Animate &Dragging",OPT_AnimateDragging,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,4,34,151,10 CONTROL "Ponder &Next Move Ctrl+Shift+P",OPT_PonderNextMove,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,34,151,10 CONTROL "&Animate Moving Ctrl+Shift+A",OPT_AnimateMoving,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,4,48,151,10 CONTROL "&Popup Exit Message",OPT_PopupExitMessage,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,48,151,10 CONTROL "Auto &Flag Ctrl+Shift+F",OPT_AutoFlag,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,62,151,10 CONTROL "Popup Move &Errors",OPT_PopupMoveErrors,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,62,151,10 CONTROL "Auto Flip &View",OPT_AutoFlipView,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,4,76,151,10 CONTROL "Show Butt&on Bar",OPT_ShowButtonBar,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,76,151,10 CONTROL "Auto &Raise Board",OPT_AutoRaiseBoard,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,4,90,151,10 CONTROL "Show &Coordinates",OPT_ShowCoordinates,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,90,151,10 CONTROL "&Blindfold",OPT_Blindfold,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,104,151,10 CONTROL "&Send Engine Think",OPT_ShowThinking,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,104,151,10 CONTROL "Highlight Dra&gging",OPT_HighlightDragging,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,4,118,151,10 CONTROL "Test &Legality Ctrl+Shift+L",OPT_TestLegality,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,118,151,10 CONTROL "E&xtended PGN Info Ctrl+Shift+X",OPT_SaveExtPGN,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,4,132,151,10 CONTROL "&Hide Thinking Ctrl+Shift+H",OPT_HideThinkFromHuman,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,156,132,151,10 CONTROL "&Info in Move History Ctrl+Shift+I",OPT_ExtraInfoInMoveHistory, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,146,151,10 CONTROL "Highlight with Arro&w",OPT_HighlightMoveArrow, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,146,151,10 CONTROL "Displa&y Logos",OPT_AutoLogo, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,160,151,10 CONTROL "One-Click Move",OPT_SmartMove, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,160,151,10 CONTROL "auto-Display Tags",OPT_AutoTags, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,174,151,10 CONTROL "auto-Display Comment",OPT_AutoComment, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,174,151,10 CONTROL "Headers in Engine Output",OPT_Headers, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,188,151,10 CONTROL "Enable Variation Trees",OPT_Variations, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,156,188,151,10 CONTROL "Play Analysis PV on Click",OPT_AutoExtend, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,202,151,10 DEFPUSHBUTTON "OK",IDOK,180,206,50,14 PUSHBUTTON "Cancel",IDCANCEL,236,206,50,14 END DLG_IcsOptions DIALOGEX 0, 0, 302, 268 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "ICS Options" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,194,250,50,15 PUSHBUTTON "Cancel",IDCANCEL,248,250,50,15 CONTROL "&Auto Comment",OPT_AutoComment,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,12,73,8 CONTROL "&Auto Kibitz",OPT_AutoKibitz,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,12,73,8 CONTROL "Auto &Observe",OPT_AutoObserve,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,25,73,8 CONTROL "Auto &Create Logon",OPT_AutoCreate,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,25,73,8 CONTROL "&Get Move List",OPT_GetMoveList,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,10,38,150,8 CONTROL "&Local Line Editing",OPT_LocalLineEditing,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,10,51,150,8 CONTROL "&Quiet Play",OPT_QuietPlay,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,64,150,8 CONTROL "See&k Graph",OPT_SeekGraph,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,77,73,8 CONTROL "auto-&Refresh",OPT_AutoRefresh,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,77,73,8 CONTROL "Bckgnd Obser&ve",OPT_BgObserve,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,90,73,8 CONTROL "&Dual Board",OPT_DualBoard,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,94,90,73,8 CONTROL "&Premove",OPT_Premove,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,12,117,10 CONTROL "&White first move",OPT_PremoveWhite,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,180,26,67,10 EDITTEXT OPT_PremoveWhiteText,256,22,25,14,ES_AUTOHSCROLL CONTROL "&Black first move",OPT_PremoveBlack,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,180,40,66,10 EDITTEXT OPT_PremoveBlackText,256,38,25,14,ES_AUTOHSCROLL CONTROL "One-Click &Move",OPT_SmartMove,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,54,117,10 CONTROL "&Sound alarm at",OPT_IcsAlarm,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,180,85,63,10 EDITTEXT OPT_IcsAlarmTime,244,81,18,14,ES_AUTOHSCROLL LTEXT "seconds",IDC_Sec,264,85,33,8 PUSHBUTTON "Choose...",OPT_ChooseShoutColor,97,114,45,15 PUSHBUTTON "Choose...",OPT_ChooseSShoutColor,97,134,45,15 PUSHBUTTON "Choose...",OPT_ChooseChannel1Color,97,154,45,15 PUSHBUTTON "Choose...",OPT_ChooseChannelColor,97,174,45,15 PUSHBUTTON "Choose...",OPT_ChooseKibitzColor,97,194,45,15 PUSHBUTTON "Choose...",OPT_ChooseTellColor,246,114,45,15 PUSHBUTTON "Choose...",OPT_ChooseChallengeColor,246,134,45,15 PUSHBUTTON "Choose...",OPT_ChooseRequestColor,246,154,45,15 PUSHBUTTON "Choose...",OPT_ChooseSeekColor,246,174,45,15 PUSHBUTTON "Choose...",OPT_ChooseNormalColor,246,194,45,15 PUSHBUTTON "Background...",OPT_ChooseBackgroundColor,10,221,50,16 PUSHBUTTON "&Defaults...",OPT_DefaultColors,68,221,50,16 CONTROL "Do ¬ colorize messages",OPT_DontColorize,"Button", BS_AUTOCHECKBOX | WS_TABSTOP,192,225,97,10 CONTROL "",OPT_SampleShout,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,10,114,75,15, WS_EX_CLIENTEDGE CONTROL "",OPT_SampleSShout,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,10,134,75,15, WS_EX_CLIENTEDGE CONTROL "",OPT_SampleChannel1,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,10, 154,75,15,WS_EX_CLIENTEDGE CONTROL "",OPT_SampleChannel,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,10,174,75,15, WS_EX_CLIENTEDGE CONTROL "",OPT_SampleKibitz,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_GROUP,10,194,75,15,WS_EX_CLIENTEDGE CONTROL "",OPT_SampleTell,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,159,114,75,15, WS_EX_CLIENTEDGE CONTROL "",OPT_SampleChallenge,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,159, 134,75,15,WS_EX_CLIENTEDGE CONTROL "",OPT_SampleRequest,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,159,154,75,15, WS_EX_CLIENTEDGE CONTROL "",OPT_SampleSeek,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,159,174,75,15, WS_EX_CLIENTEDGE CONTROL "",OPT_SampleNormal,"RICHEDIT",ES_CENTER | ES_MULTILINE | ES_READONLY | WS_DISABLED | WS_GROUP,159,194,75,15, WS_EX_CLIENTEDGE LTEXT "Startup &Chat Boxes:",IDC_Boxes,4,251,65,8 EDITTEXT OPT_StartupChatBoxes,72,249,90,14,ES_AUTOHSCROLL GROUPBOX "Interaction Colors",GPB_Colors,4,103,294,140 GROUPBOX "Premove",GPB_Premove,174,0,124,69 GROUPBOX "General",GPB_General,4,0,166,101 GROUPBOX "Alarm",GPB_Alarm,174,71,124,30 END DLG_BoardOptions DIALOG DISCARDABLE 0, 0, 224, 262 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Board Options" FONT 8, "MS Sans Serif" BEGIN CONTROL "&Tiny",OPT_SizeTiny,"Button",BS_AUTORADIOBUTTON | WS_GROUP,9,14,50,10 CONTROL "T&eeny",OPT_SizeTeeny,"Button",BS_AUTORADIOBUTTON,9,24, 60,10 CONTROL "&Dinky",OPT_SizeDinky,"Button",BS_AUTORADIOBUTTON,9,34, 60,10 CONTROL "&Petite",OPT_SizePetite,"Button",BS_AUTORADIOBUTTON,9, 44,60,10 CONTROL "Sl&im",OPT_SizeSlim,"Button",BS_AUTORADIOBUTTON,9,54,60, 10 CONTROL "&Small",OPT_SizeSmall,"Button",BS_AUTORADIOBUTTON,9,64, 60,10 CONTROL "Medi&ocre",OPT_SizeMediocre,"Button",BS_AUTORADIOBUTTON, 80,14,60,10 CONTROL "&Middling",OPT_SizeMiddling,"Button",BS_AUTORADIOBUTTON, 80,24,60,10 CONTROL "&Average",OPT_SizeAverage,"Button",BS_AUTORADIOBUTTON, 80,34,60,10 CONTROL "Mode&rate",OPT_SizeModerate,"Button",BS_AUTORADIOBUTTON, 80,44,60,10 CONTROL "Medi&um",OPT_SizeMedium,"Button",BS_AUTORADIOBUTTON,80, 54,60,10 CONTROL "Bul&ky",OPT_SizeBulky,"Button",BS_AUTORADIOBUTTON,80,64, 60,10 CONTROL "&Large",OPT_SizeLarge,"Button",BS_AUTORADIOBUTTON,154, 14,60,10 CONTROL "&Big",OPT_SizeBig,"Button",BS_AUTORADIOBUTTON,154,24,60, 10 CONTROL "&Huge",OPT_SizeHuge,"Button",BS_AUTORADIOBUTTON,154,34, 60,10 CONTROL "&Giant",OPT_SizeGiant,"Button",BS_AUTORADIOBUTTON,154, 44,60,10 CONTROL "&Colossal",OPT_SizeColossal,"Button",BS_AUTORADIOBUTTON, 154,54,60,10 CONTROL "Tita&nic",OPT_SizeTitanic,"Button",BS_AUTORADIOBUTTON, 154,64,60,10 PUSHBUTTON "...",OPT_ChooseLightSquareColor,110,94,20,15 PUSHBUTTON "...",OPT_ChooseDarkSquareColor,110,112,20,15 PUSHBUTTON "...",OPT_ChooseWhitePieceColor,110,130,20,15 PUSHBUTTON "...",OPT_ChooseBlackPieceColor,110,148,20,15 PUSHBUTTON "...",OPT_ChooseHighlightSquareColor,110,166,20,15 PUSHBUTTON "...",OPT_ChoosePremoveHighlightColor,110,184,20,15 CONTROL "Monochrome",OPT_Monochrome,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,210,64,10 CONTROL "All White",OPT_AllWhite,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,179,73,10 CONTROL "Flip Black",OPT_UpsideDown,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,191,73,10 CONTROL "Use Board Textures",OPT_Bitmaps,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,203,73,10 CONTROL "Use Piece Font",OPT_PieceFont,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,215,73,10 CONTROL "Suppress Grid",OPT_Grid,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,140,227,73,10 PUSHBUTTON "Defaults",OPT_DefaultBoardColors,80,206,50,15 EDITTEXT OPT_DarkSquareColor,80,112,25,15,ES_READONLY | WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP EDITTEXT OPT_LightSquareColor,80,94,25,15,ES_READONLY | WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP EDITTEXT OPT_WhitePieceColor,80,130,25,15,ES_READONLY | WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP EDITTEXT OPT_BlackPieceColor,80,148,25,15,ES_READONLY | WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP EDITTEXT OPT_HighlightSquareColor,80,166,25,15,ES_READONLY | WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP GROUPBOX "Colors",GPB_Colors,4,84,215,154 EDITTEXT OPT_PremoveHighlightColor,80,184,25,15,ES_READONLY | WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP LTEXT "Light Squares",IDC_Light,10,98,60,10 LTEXT "Dark Squares",IDC_Dark,10,116,60,10 LTEXT "White Pieces",IDC_White,10,134,60,10 LTEXT "Black Pieces",IDC_Black,10,152,60,10 LTEXT "Square Highlights",IDC_High,10,170,60,10 LTEXT "Premove Highlights",IDC_PreHigh,10,188,70,10 GROUPBOX "Size",GPB_Size,4,4,215,75 EDITTEXT OPT_SampleLightSquare,144,96,39,36,ES_READONLY | WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP EDITTEXT OPT_SampleDarkSquare,144,138,39,36,ES_READONLY | WS_DISABLED | NOT WS_BORDER | NOT WS_TABSTOP DEFPUSHBUTTON "OK",IDOK,84,244,50,14 PUSHBUTTON "Cancel",IDCANCEL,140,244,50,14 END DLG_NewVariant DIALOG DISCARDABLE 0, 0, 224, 270 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Variants" FONT 8, "MS Sans Serif" BEGIN CONTROL "&normal",OPT_VariantNormal,"Button",BS_AUTORADIOBUTTON | WS_GROUP,9,14,70,10 CONTROL "&FRC",OPT_VariantFRC,"Button",BS_AUTORADIOBUTTON,9, 24,70,10 CONTROL "&wildcastle",OPT_VariantWildcastle,"Button",BS_AUTORADIOBUTTON,9,34, 50,10 CONTROL "&nocastle",OPT_VariantNocastle,"Button",BS_AUTORADIOBUTTON,9, 44,70,10 CONTROL "&losers",OPT_VariantLosers,"Button",BS_AUTORADIOBUTTON, 9,54,70,10 CONTROL "&giveaway",OPT_VariantGiveaway,"Button",BS_AUTORADIOBUTTON, 9,64,70,10 CONTROL "s&uicide",OPT_VariantSuicide,"Button",BS_AUTORADIOBUTTON, 9,74,70,10 CONTROL "&3Check",OPT_Variant3Check,"Button",BS_AUTORADIOBUTTON,9,84, 70,10 CONTROL "&twokings",OPT_VariantTwoKings,"Button",BS_AUTORADIOBUTTON,9,94, 70,10 CONTROL "&atomic",OPT_VariantAtomic,"Button",BS_AUTORADIOBUTTON, 9,104,70,10 CONTROL "&Mighty Lion",OPT_VariantLion,"Button",BS_AUTORADIOBUTTON, 9,114,70,10 CONTROL "cra&zyhouse",OPT_VariantCrazyhouse,"Button",BS_AUTORADIOBUTTON,80,14, 70,10 CONTROL "&bughouse",OPT_VariantBughouse,"Button",BS_AUTORADIOBUTTON,80,24,70, 10 CONTROL "Sp&artan",OPT_VariantSpartan,"Button",BS_AUTORADIOBUTTON,80,34,70, 10 CONTROL "&shogi",OPT_VariantShogi,"Button",BS_AUTORADIOBUTTON,80, 44,70,10 CONTROL "su&per",OPT_VariantSuper,"Button",BS_AUTORADIOBUTTON,80, 54,70,10 CONTROL "&knightmate",OPT_VariantKnightmate,"Button",BS_AUTORADIOBUTTON, 80,64,70,10 CONTROL "&Berolina",OPT_VariantBerolina,"Button",BS_AUTORADIOBUTTON,80,74, 70,10 CONTROL "c&ylinder",OPT_VariantCylinder,"Button",BS_AUTORADIOBUTTON,80, 84,70,10 CONTROL "&fairy",OPT_VariantFairy,"Button",BS_AUTORADIOBUTTON,80, 94,70,10 CONTROL "&makruk",OPT_VariantMakruk,"Button",BS_AUTORADIOBUTTON,80, 104,70,10 CONTROL "&ASEAN",OPT_VariantASEAN,"Button",BS_AUTORADIOBUTTON,80, 114,70,10 CONTROL "&gothic",OPT_VariantGothic,"Button",BS_AUTORADIOBUTTON,154,14, 70,10 CONTROL "&capablanca",OPT_VariantCapablanca,"Button",BS_AUTORADIOBUTTON,154, 24,70,10 CONTROL "&Janus",OPT_VariantJanus,"Button",BS_AUTORADIOBUTTON,154,34, 70,10 CONTROL "&CRC",OPT_VariantCRC,"Button",BS_AUTORADIOBUTTON,154,44, 70,10 CONTROL "&Falcon",OPT_VariantFalcon,"Button",BS_AUTORADIOBUTTON,154, 54,70,10 CONTROL "cou&rier",OPT_VariantCourier,"Button",BS_AUTORADIOBUTTON,154,64, 70,10 CONTROL "&Great",OPT_VariantGreat,"Button",BS_AUTORADIOBUTTON,154,74, 70,10 CONTROL "&Shatranj",OPT_VariantShatranj,"Button",BS_AUTORADIOBUTTON,154, 84,70,10 CONTROL "Seira&wan",OPT_VariantSChess,"Button",BS_AUTORADIOBUTTON,154,94,70, 10 CONTROL "&Grand",OPT_VariantGrand,"Button",BS_AUTORADIOBUTTON,154,104,70, 10 CONTROL "&xiangqi",OPT_VariantXiangqi,"Button",BS_AUTORADIOBUTTON,154,114,70, 10 CONTROL "",OPT_EngineVariant+0,"Button",BS_AUTORADIOBUTTON,9,134,70,10 CONTROL "",OPT_EngineVariant+1,"Button",BS_AUTORADIOBUTTON,80,134,70,10 CONTROL "",OPT_EngineVariant+2,"Button",BS_AUTORADIOBUTTON,154,134,70,10 CONTROL "",OPT_EngineVariant+3,"Button",BS_AUTORADIOBUTTON,9,144,70,10 CONTROL "",OPT_EngineVariant+4,"Button",BS_AUTORADIOBUTTON,80,144,70,10 CONTROL "",OPT_EngineVariant+5,"Button",BS_AUTORADIOBUTTON,154,144,70,10 CONTROL "",OPT_EngineVariant+6,"Button",BS_AUTORADIOBUTTON,9,154,70,10 CONTROL "",OPT_EngineVariant+7,"Button",BS_AUTORADIOBUTTON,80,154,70,10 CONTROL "",OPT_EngineVariant+8,"Button",BS_AUTORADIOBUTTON,154,154,70,10 CONTROL "",OPT_EngineVariant+9,"Button",BS_AUTORADIOBUTTON,9,164,70,10 CONTROL "",OPT_EngineVariant+10,"Button",BS_AUTORADIOBUTTON,80,164,70,10 CONTROL "",OPT_EngineVariant+11,"Button",BS_AUTORADIOBUTTON,154,164,70,10 CONTROL "",OPT_EngineVariant+12,"Button",BS_AUTORADIOBUTTON,9,174,70,10 CONTROL "",OPT_EngineVariant+13,"Button",BS_AUTORADIOBUTTON,80,174,70,10 CONTROL "",OPT_EngineVariant+14,"Button",BS_AUTORADIOBUTTON,154,174,70,10 GROUPBOX "Variant",GPB_Variant,4,4,215,185 LTEXT "Board size:",GPB_Board,10,203,40,8,WS_TABSTOP LTEXT "ranks",IDC_Height,77,203,38,8 EDITTEXT IDC_Ranks,60,199,14,14,ES_AUTOHSCROLL LTEXT "files",IDC_Width,133,203,80,8 EDITTEXT IDC_Files,116,199,14,14,ES_AUTOHSCROLL LTEXT "Holdings with room for:",IDC_Hand,10,221,90,8 EDITTEXT IDC_Holdings,93,217,14,14,ES_AUTOHSCROLL LTEXT "pieces",IDC_Pieces,110,221,100,8 LTEXT "('-1' means defaults for selected variant)",IDC_Def,10,237,210,8 DEFPUSHBUTTON "OK",IDOK,114,252,50,14 PUSHBUTTON "Cancel",IDCANCEL,170,252,50,14 END DLG_Fonts DIALOG DISCARDABLE 0, 0, 266, 274 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Fonts" FONT 8, "MS Sans Serif" BEGIN DEFPUSHBUTTON "OK",IDOK,156,256,50,14 PUSHBUTTON "Cancel",IDCANCEL,212,256,50,14 PUSHBUTTON "Choose...",OPT_ChooseClockFont,212,15,45,15 PUSHBUTTON "Choose...",OPT_ChooseMessageFont,212,39,45,15 PUSHBUTTON "Choose...",OPT_ChooseCoordFont,212,63,45,15 PUSHBUTTON "Choose...",OPT_ChooseTagFont,212,101,45,15 PUSHBUTTON "Choose...",OPT_ChooseCommentsFont,212,125,45,15 PUSHBUTTON "Choose...",OPT_ChooseConsoleFont,212,149,45,15 PUSHBUTTON "Choose...",OPT_ChooseMoveHistoryFont,212,174,45,15 PUSHBUTTON "Choose...",OPT_ChooseGameListFont,212,198,45,15 PUSHBUTTON "Choose...",OPT_ChoosePieceFont,212,222,45,15 PUSHBUTTON "&Defaults",OPT_DefaultFonts,3,256,50,15 CONTROL "",OPT_SampleCoordFont,"RICHEDIT",ES_READONLY | WS_DISABLED | WS_BORDER,77,59,130,20 CONTROL "",OPT_SampleTagFont,"RICHEDIT",ES_READONLY | WS_DISABLED | WS_BORDER,77,97,130,20 CONTROL "",OPT_SampleCommentsFont,"RICHEDIT",ES_READONLY | WS_DISABLED | WS_BORDER,77,121,130,20 CONTROL "",OPT_SampleConsoleFont,"RICHEDIT",ES_READONLY | WS_DISABLED | WS_BORDER,77,145,130,20 LTEXT "Clocks",OPT_ClockFont,13,16,63,10,NOT WS_GROUP LTEXT "Messages",OPT_MessageFont,13,40,63,10,NOT WS_GROUP LTEXT "Coordinates",OPT_CoordFont,13,64,63,10,NOT WS_GROUP LTEXT "Tags",OPT_EditTagsFont,13,102,63,10,NOT WS_GROUP LTEXT "Comments",OPT_CommentsFont,13,126,63,10,NOT WS_GROUP LTEXT "I C S Interaction",OPT_MessageFont5,13,150,63,10,NOT WS_GROUP CONTROL "",OPT_SampleClockFont,"RICHEDIT",ES_READONLY | WS_DISABLED | WS_BORDER,77,11,130,20 CONTROL "",OPT_SampleMessageFont,"RICHEDIT",ES_READONLY | WS_DISABLED | WS_BORDER,77,35,130,20 GROUPBOX "Current Board Size",GPB_Current,3,1,259,83 GROUPBOX "All Board Sizes",GPB_All,3,87,259,157 CONTROL "",OPT_SampleMoveHistoryFont,"RICHEDIT",ES_READONLY | WS_DISABLED | WS_BORDER,77,170,130,20 LTEXT "Move History, Engine Output",OPT_MessageFont6,13,171,63,20,NOT WS_GROUP CONTROL "",OPT_SampleGameListFont,"RICHEDIT",ES_READONLY | WS_DISABLED | WS_BORDER,77,194,130,20 LTEXT "Game List",OPT_MessageFont7,13,199,63,20,NOT WS_GROUP CONTROL "",OPT_SamplePieceFont,"RICHEDIT", ES_AUTOHSCROLL | WS_BORDER,77,218,130,20 LTEXT "Piece Font",OPT_MessageFont8,13,223,63,20,NOT WS_GROUP END DLG_NewGameFRC DIALOG DISCARDABLE 0, 0, 176, 47 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "New Shuffle Game" FONT 8, "MS Sans Serif" BEGIN LTEXT "&Start Position Number:",IDC_NFG_Label,4,7,71,8 EDITTEXT IDC_NFG_Edit,76,4,42,14,ES_AUTOHSCROLL PUSHBUTTON "Random",IDC_NFG_Random,122,4,50,14 DEFPUSHBUTTON "OK",IDOK,64,28,50,14 PUSHBUTTON "Cancel",IDCANCEL,122,28,50,14 END DLG_GameListOptions DIALOG DISCARDABLE 0, 0, 218, 150 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Game List Options" FONT 8, "MS Sans Serif" BEGIN LTEXT "PGN &Tags:",IDC_GLT,2,2,158,8 LISTBOX IDC_GameListTags,2,12,153,112,LBS_USETABSTOPS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "&Up",IDC_GLT_Up,164,12,50,14 PUSHBUTTON "&Down",IDC_GLT_Down,164,30,50,14 PUSHBUTTON "Default",IDC_GLT_Restore,164,92,50,14 PUSHBUTTON "Factory",IDC_GLT_Default,164,110,50,14 DEFPUSHBUTTON "OK",IDOK,108,132,50,14 PUSHBUTTON "Cancel",IDCANCEL,164,132,50,14 LTEXT "Restore to:",IDC_GLT_RestoreTo,159,80,58,8 END DLG_MoveHistory DIALOGEX 0, 0, 225, 130 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_TOOLWINDOW CAPTION "Move History" FONT 8, "MS Sans Serif", 0, 0, 0x1 BEGIN CONTROL "",IDC_MoveHistory,"RICHEDIT",ES_MULTILINE | ES_READONLY | WS_BORDER | WS_VSCROLL | WS_TABSTOP,2,2,222,128 END DLG_EvalGraph DIALOGEX 0, 0, 216, 75 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_TOOLWINDOW CAPTION "Evaluation Graph" FONT 8, "MS Sans Serif" BEGIN END DLG_EngineOutput DIALOGEX 0, 0, 266, 167 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_TOOLWINDOW CAPTION "Engine output" FONT 8, "MS Sans Serif" BEGIN RTEXT "NPS",IDC_Engine1_NPS,206,2,57,8 LTEXT "Engine #1",IDC_EngineLabel1,14,2,84,8 CONTROL "",IDC_EngineMemo1,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,0,10,262,72 LTEXT "Engine #2",IDC_EngineLabel2,15,84,103,8 CONTROL "",IDC_EngineMemo2,"RICHEDIT",ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,2,92,262,74 RTEXT "NPS",IDC_Engine2_NPS,210,84,55,8 ICON IDI_UNKNOWN_14,IDC_Color1,2,4,20,20,SS_REALSIZEIMAGE ICON IDI_UNKNOWN_14,IDC_Color2,4,84,20,20 LTEXT "Static",IDC_StateData1,120,2,83,8 ICON IDI_TRANS_14,IDC_StateIcon1,98,0,21,20 LTEXT "Static",IDC_StateData2,186,84,19,8 ICON IDI_TRANS_14,IDC_StateIcon2,164,84,20,20 END DLG_Chat DIALOGEX 0, 0, 290, 106 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_TOOLWINDOW CAPTION "Chat Window" FONT 8, "MS Sans Serif" BEGIN LTEXT "Chat partner:",IDC_Partner,5,5,45,10 EDITTEXT IDC_ChatPartner,50,3,45,13,ES_AUTOHSCROLL PUSHBUTTON "",IDC_Focus1,100,3,30,13 PUSHBUTTON "",IDC_Focus2,133,3,30,13 PUSHBUTTON "",IDC_Focus3,166,3,30,13 PUSHBUTTON "",IDC_Focus4,199,3,30,13 PUSHBUTTON "Clear",IDC_Clear,232,3,25,13 DEFPUSHBUTTON "Send",IDC_Send,262,3,25,13 CONTROL "",IDC_ChatMemo,"RICHEDIT",ES_MULTILINE | ES_READONLY | ES_AUTOVSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP,3,17,284,70 CONTROL "",OPT_ChatInput,"RICHEDIT",ES_AUTOHSCROLL | ES_NOHIDESEL | WS_BORDER | WS_TABSTOP,3,90,284,13 END DLG_EnginePlayOptions DIALOG DISCARDABLE 0, 0, 248, 202 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Adjudications" FONT 8, "MS Sans Serif" BEGIN CONTROL "Ponder Next Move",IDC_EpPonder,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,4,240,10 CONTROL "Enable and Show Thinking (recommended)", IDC_EpShowThinking,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, 4,16,240,10 CONTROL "Hide Thinking when Playing against Human", IDC_EpHideThinkingHuman,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,28,240,10 CONTROL "Periodic Updates (for Analysis Mode)", IDC_EpPeriodicUpdates,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,40,240,10 GROUPBOX "Adjudications in non-ICS games",GPB_Adjudications,4,56,240,98 LTEXT "Adjudicate draw after:",IDC_Draw,10,72,124,8 EDITTEXT IDC_EpDrawMoveCount,136,68,40,14,ES_AUTOHSCROLL LTEXT "moves",IDC_Moves,178,72,22,8 LTEXT "Win/loss adjudication threshold:",IDC_Threshold,10,90,124, 8 EDITTEXT IDC_EpAdjudicationThreshold,136,86,40,14,ES_AUTOHSCROLL LTEXT "centipawns",IDC_Centi,178,90,65,8 CONTROL "&Verify Engine Claims",IDC_TestClaims,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,108,119,10 CONTROL "Detect &Mates", IDC_DetectMates,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, 10,118,119,10 CONTROL "Draw if &Insufficient Material", IDC_MaterialDraws,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,128,119,10 CONTROL "Adjudicate &Trivial Draws", IDC_TrivialDraws,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,138,119,10 GROUPBOX "Apply",GPB_Apply,130,102,106,47 EDITTEXT IDC_RuleMoves,135,113,20,14,ES_AUTOHSCROLL LTEXT "-move rule",IDC_Rule,157,117,75,8 EDITTEXT IDC_DrawRepeats,135,130,20,14,ES_AUTOHSCROLL LTEXT "-fold repeats",IDC_Repeats,157,134,75,8 CONTROL "Engine #1 Score is Absolute", IDC_ScoreAbs1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,156,140,10 CONTROL "Engine #2 Score is Absolute", IDC_ScoreAbs2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,168,140,10 DEFPUSHBUTTON "OK",IDOK,138,185,50,14 PUSHBUTTON "Cancel",IDCANCEL,194,185,50,14 END DLG_OptionsUCI DIALOG DISCARDABLE 0, 0, 248, 160 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Common Engine Settings" FONT 8, "MS Sans Serif" BEGIN LTEXT "Polyglot Directory:",IDC_PolyDir,2,8,78,8 EDITTEXT IDC_PolyglotDir,82,4,140,14,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_BrowseForPolyglotDir,226,4,17,14 LTEXT "Hash Size (MB):",IDC_Hash,2,26,78,8 EDITTEXT IDC_HashSize,82,22,40,14,ES_AUTOHSCROLL LTEXT "Max nr of CPUs:",IDC_CPU,126,26,60,8 EDITTEXT IDC_Cores,187,22,35,14,ES_AUTOHSCROLL LTEXT "EGTB Path:",IDC_Path,2,44,78,8 EDITTEXT IDC_PathToEGTB,82,40,140,14,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_BrowseForEGTB,226,40,17,14 LTEXT "EGTB Size (MB):",IDC_Cache,2,62,78,8 EDITTEXT IDC_SizeOfEGTB,82,58,40,14,ES_AUTOHSCROLL CONTROL "Ponder Next Move",OPT_PonderNextMove,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,136,62,100,10 CONTROL "Use Book:",IDC_UseBook,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,2,80,78,10 EDITTEXT IDC_BookFile,82,76,140,14,ES_AUTOHSCROLL PUSHBUTTON "...",IDC_BrowseForBook,226,76,17,14 CONTROL "First has Own Book",IDC_OwnBook1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,2,94,100,10 CONTROL "Second has Own Book",IDC_OwnBook2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,2,107,100,10 LTEXT "Book Depth:",IDC_Depth,126,98,60,8 EDITTEXT IDC_BookDep,187,94,35,14,ES_AUTOHSCROLL LTEXT "Book Variation:",IDC_Variation,126,116,60,8 EDITTEXT IDC_BookStr,187,112,35,14,ES_AUTOHSCROLL LTEXT "Default Match Games:",IDC_DefGames,2,135,72,8 EDITTEXT IDC_Games,82,131,28,14,ES_AUTOHSCROLL DEFPUSHBUTTON "OK",IDOK,128,142,50,14 PUSHBUTTON "Cancel",IDCANCEL,194,142,50,14 END DLG_Null DIALOG DISCARDABLE 0, 0, 186, 50 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Null" FONT 8, "MS Sans Serif" BEGIN END ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO DISCARDABLE BEGIN DLG_GameList, DIALOG BEGIN RIGHTMARGIN, 258 END DLG_Colorize, DIALOG BEGIN BOTTOMMARGIN, 32 END DLG_GeneralOptions, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 213 TOPMARGIN, 7 BOTTOMMARGIN, 176 END DLG_IcsOptions, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 295 TOPMARGIN, 7 BOTTOMMARGIN, 248 END DLG_BoardOptions, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 187 TOPMARGIN, 7 BOTTOMMARGIN, 243 END DLG_Fonts, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 259 TOPMARGIN, 7 BOTTOMMARGIN, 219 END DLG_NewGameFRC, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 169 TOPMARGIN, 7 BOTTOMMARGIN, 40 END DLG_GameListOptions, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 199 TOPMARGIN, 7 BOTTOMMARGIN, 133 END DLG_MoveHistory, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 218 TOPMARGIN, 7 BOTTOMMARGIN, 123 END DLG_EvalGraph, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 209 TOPMARGIN, 7 BOTTOMMARGIN, 68 END DLG_EngineOutput, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 259 TOPMARGIN, 7 BOTTOMMARGIN, 160 END DLG_EnginePlayOptions, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 201 TOPMARGIN, 7 BOTTOMMARGIN, 122 END DLG_OptionsUCI, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 221 TOPMARGIN, 7 BOTTOMMARGIN, 117 END DLG_Null, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 179 TOPMARGIN, 7 BOTTOMMARGIN, 43 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_WHITE_14 ICON DISCARDABLE "bitmaps/white_14.ico" ICON_BLACK ICON DISCARDABLE "bitmaps/icon_ob.ico" ICON_BOARD ICON DISCARDABLE "bitmaps/board.ico" ICON_WHITE ICON DISCARDABLE "bitmaps/icon_whi.ico" ICON_XTOURNEY ICON DISCARDABLE "bitmaps/cross.ico" IDI_BLACK_14 ICON DISCARDABLE "bitmaps/black_14.ico" IDI_PONDER_14 ICON DISCARDABLE "bitmaps/ponder_14.ico" IDI_TRANS_14 ICON DISCARDABLE "bitmaps/trans_14.ico" IDI_CLOCK_14 ICON DISCARDABLE "bitmaps/clock_14.ico" IDI_UNKNOWN_14 ICON DISCARDABLE "bitmaps/unknown_14.ico" IDI_BALOON_14 ICON DISCARDABLE "bitmaps/baloon_14.ico" IDI_ANALYZE_14 ICON DISCARDABLE "bitmaps/analyze_14.ico" IDI_ANALYZE2_14 ICON DISCARDABLE "bitmaps/analyze2_14.ico" ///////////////////////////////////////////////////////////////////////////// // // Menu // WINBOARD MENU DISCARDABLE BEGIN POPUP "&File" BEGIN MENUITEM "&New Game\tCtrl-N", IDM_NewGame MENUITEM "New Sh&uffle Game...", IDM_NewGameFRC MENUITEM "New &Variant...\tAlt+Shift+V",IDM_NewVariant MENUITEM SEPARATOR MENUITEM "&Load Game...\tCtrl-O", IDM_LoadGame MENUITEM "L&oad Position...\tCtrl+Shift+O", IDM_LoadPosition // MENUITEM "Load &Next Game\tAlt+PgDn", IDM_LoadNextGame // MENUITEM "Load &Previous Game\tAlt+PgUp", IDM_LoadPrevGame // MENUITEM "&Reload Same Game", IDM_ReloadGame MENUITEM "Load N&ext Position\tAlt+Shift+PgDn", IDM_LoadNextPosition MENUITEM "Load Pre&vious Position\tAlt+Shift+PgUp", IDM_LoadPrevPosition // MENUITEM "Reload Sa&me Position", IDM_ReloadPosition MENUITEM SEPARATOR MENUITEM "&Save Game...\tCtrl-S", IDM_SaveGame MENUITEM "S&ave Position...\tCtrl+Shift+S",IDM_SavePosition MENUITEM SEPARATOR MENUITEM "Save as &Diagram...", IDM_SaveDiagram MENUITEM "Save Selected Games...", IDM_SaveSelected MENUITEM "Save Games to &Book", IDM_CreateBook MENUITEM SEPARATOR MENUITEM "&Quit", IDM_Exit END POPUP "&Edit" BEGIN MENUITEM "&Copy Game To Clipboard\tCtrl+C", IDM_CopyGame MENUITEM "C&opy Position To Clipboard\tCtrl+Shift+C", IDM_CopyPosition MENUITEM "Copy Game List to Clipboard", IDM_CopyGameListToClipboard MENUITEM SEPARATOR MENUITEM "&Paste Game From Clipboard\tCtrl+V", IDM_PasteGame MENUITEM "P&aste Position From Clipboard\tCtrl+Shift+V", IDM_PasteAny MENUITEM SEPARATOR MENUITEM "&Edit Game\tCtrl+E", IDM_EditGame2 MENUITEM "E&dit Position\tCtrl+Shift+E",IDM_EditPosition2 MENUITEM SEPARATOR MENUITEM "Edit Ta&gs...", IDM_EditTags MENUITEM "Edit Co&mment...", IDM_EditComment MENUITEM "Edit Boo&k...", IDM_EditBook MENUITEM "Enter &Username...", IDM_TypeInName MENUITEM SEPARATOR MENUITEM "&Revert\tHome", IDM_Revert MENUITEM "&Annotate", IDM_Annotate MENUITEM "&Truncate Game\tEnd", IDM_TruncateGame MENUITEM SEPARATOR MENUITEM "&Backward\tAlt+Left", IDM_Backward MENUITEM "&Forward\tAlt+Right", IDM_Forward MENUITEM "Back to &Start\tAlt+Home", IDM_ToStart MENUITEM "For&ward to End\tAlt+End", IDM_ToEnd END POPUP "&View" BEGIN MENUITEM "Flip &View\tF2", IDM_FlipView MENUITEM "&Swap Clocks", IDM_FlipClock MENUITEM SEPARATOR MENUITEM "Engine &Output\tAlt+Shift+O", IDM_ShowEngineOutput MENUITEM "Move &History\tAlt+Shift+H", IDM_ShowMoveHistory MENUITEM "Evaluation &Graph\tAlt+Shift+E",IDM_ShowEvalGraph MENUITEM "Game &List\tAlt+Shift+G", IDM_ShowGameList MENUITEM "Open &New Chat Window", IDM_NewChat MENUITEM "Type In &Move...\tAlt+I", IDM_TypeInMove MENUITEM SEPARATOR MENUITEM "&Tags", IDM_Tags MENUITEM "&Comments", IDM_Comment MENUITEM SEPARATOR MENUITEM "&Game List Tags...", IDM_GameListOptions MENUITEM "Colo&rs...", IDM_BoardOptions MENUITEM "&Board Themes...", IDM_ThemeOptions MENUITEM "&Fonts...", IDM_Fonts END POPUP "&Mode" BEGIN MENUITEM "Machine &White\tCtrl+W", IDM_MachineWhite MENUITEM "Machine &Black\tCtrl+B", IDM_MachineBlack MENUITEM "&Two Machines\tCtrl+T", IDM_TwoMachines // MENUITEM "Machine Both", IDM_MachineBoth MENUITEM "&Analysis Mode\tCtrl+A", IDM_AnalysisMode MENUITEM "Analyze &Game\tCtrl+G", IDM_AnalyzeFile MENUITEM "&Edit Game\tCtrl+E", IDM_EditGame MENUITEM "E&dit Position\tCtrl+Shift+E",IDM_EditPosition MENUITEM "Trai&ning", IDM_Training, GRAYED MENUITEM "&ICS Client", IDM_IcsClient MENUITEM SEPARATOR MENUITEM "&Machine Match", IDM_Match MENUITEM "&Pause\tPause", IDM_Pause END POPUP "&Action" BEGIN MENUITEM "&Accept\tF3", IDM_Accept MENUITEM "D&ecline\tF4", IDM_Decline MENUITEM "Re&match\tF12", IDM_Rematch MENUITEM SEPARATOR MENUITEM "Call &Flag\tF5", IDM_CallFlag MENUITEM "&Draw\tF6", IDM_Draw MENUITEM "Ad&journ\tF7", IDM_Adjourn MENUITEM "A&bort\tF8", IDM_Abort MENUITEM "&Resign\tF9", IDM_Resign MENUITEM SEPARATOR MENUITEM "Stop &Observing\tF10", IDM_StopObserving MENUITEM "Stop E&xamining\tF11", IDM_StopExamining MENUITEM "&Upload to Examine", IDM_Upload MENUITEM SEPARATOR MENUITEM "Adjudicate to &White", IDM_UserAdjudication_White MENUITEM "Adjudicate to &Black", IDM_UserAdjudication_Black MENUITEM "Adjudicate &Draw", IDM_UserAdjudication_Draw END POPUP "E&ngine" BEGIN MENUITEM "&Edit Engine List...", IDM_EditProgs1 MENUITEM "Load &First Engine...", IDM_LoadProg1 MENUITEM "Load &Second Engine...", IDM_LoadProg2 MENUITEM SEPARATOR MENUITEM "&Common Settings...\tAlt+Shift+U",IDM_OptionsUCI MENUITEM "Engine #&1 Settings...", IDM_Engine1Options MENUITEM "Engine #&2 Settings...", IDM_Engine2Options MENUITEM SEPARATOR MENUITEM "&Hint...", IDM_Hint MENUITEM "&Book...", IDM_Book MENUITEM SEPARATOR MENUITEM "&Move Now\tCtrl+M", IDM_MoveNow MENUITEM "&Retract Move\tCtrl+X", IDM_RetractMove END POPUP "&Options" BEGIN MENUITEM "&Mute all Sounds", IDM_MuteSounds MENUITEM SEPARATOR MENUITEM "&General...", IDM_GeneralOptions MENUITEM "&Time Control...\tAlt+Shift+T",IDM_TimeControl MENUITEM "Ad&judications...\tAlt+Shift+J",IDM_EnginePlayOptions MENUITEM "Tournament...", IDM_Tourney MENUITEM SEPARATOR MENUITEM "&Load Game...\tAlt+Shift+L", IDM_LoadOptions MENUITEM "&Save Game...\tAlt+Shift+S", IDM_SaveOptions MENUITEM "G&ame List...", IDM_GameListOptions MENUITEM SEPARATOR MENUITEM "Soun&ds...", IDM_Sounds MENUITEM "&ICS...", IDM_IcsOptions, GRAYED MENUITEM "Add ICS...", IDM_EditServers MENUITEM "Comm&unications...", IDM_CommPort MENUITEM SEPARATOR MENUITEM "Save Settings &Now", IDM_SaveSettings MENUITEM "Save Settings on E&xit", IDM_SaveSettingsOnExit END POPUP "&Help" BEGIN MENUITEM "Help &Contents\tF1", IDM_HELPCONTENTS MENUITEM "Help &Index", IDM_HELPSEARCH MENUITEM "How to &Use Help", IDM_HELPHELP MENUITEM SEPARATOR MENUITEM "&About WinBoard", IDM_ABOUT END END PIECEMENU MENU DISCARDABLE BEGIN POPUP "" BEGIN MENUITEM "White", EP_White MENUITEM SEPARATOR MENUITEM "Promote", EP_Promote MENUITEM SEPARATOR MENUITEM "Pawn", EP_WhitePawn MENUITEM "Knight", EP_WhiteKnight MENUITEM "Bishop", EP_WhiteBishop MENUITEM "Rook", EP_WhiteRook MENUITEM "Queen", EP_WhiteQueen MENUITEM "King", EP_WhiteKing MENUITEM SEPARATOR MENUITEM "Archbishop", EP_WhiteCardinal MENUITEM "Chancellor", EP_WhiteMarshall MENUITEM "Elephant", EP_WhiteAlfil MENUITEM "Cannon", EP_WhiteCannon MENUITEM SEPARATOR MENUITEM "Empty Square", EP_EmptySquare MENUITEM "Black", EP_Black, MENUBARBREAK MENUITEM SEPARATOR MENUITEM "Demote", EP_Demote MENUITEM SEPARATOR MENUITEM "Pawn", EP_BlackPawn MENUITEM "Knight", EP_BlackKnight MENUITEM "Bishop", EP_BlackBishop MENUITEM "Rook", EP_BlackRook MENUITEM "Queen", EP_BlackQueen MENUITEM "King", EP_BlackKing MENUITEM SEPARATOR MENUITEM "Archbishop", EP_BlackCardinal MENUITEM "Chancellor", EP_BlackMarshall MENUITEM "Elephant", EP_BlackAlfil MENUITEM "Cannon", EP_BlackCannon MENUITEM SEPARATOR MENUITEM "Clear Board ", EP_ClearBoard END END SHOGIPIECEMENU MENU DISCARDABLE BEGIN POPUP "" BEGIN MENUITEM "White", EP_White MENUITEM SEPARATOR MENUITEM "Pawn", EP_WhitePawn MENUITEM "Knight", EP_WhiteKnight MENUITEM "Bishop", EP_WhiteBishop MENUITEM "Rook", EP_WhiteRook MENUITEM "Lance", EP_WhiteQueen MENUITEM "Silver", EP_WhiteFerz MENUITEM "Gold", EP_WhiteWazir MENUITEM "King", EP_WhiteKing MENUITEM SEPARATOR MENUITEM "Promote", EP_Promote MENUITEM SEPARATOR MENUITEM "Empty Square", EP_EmptySquare MENUITEM "Black", EP_Black, MENUBARBREAK MENUITEM SEPARATOR MENUITEM "Pawn", EP_BlackPawn MENUITEM "Knight", EP_BlackKnight MENUITEM "Bishop", EP_BlackBishop MENUITEM "Rook", EP_BlackRook MENUITEM "Lance", EP_BlackQueen MENUITEM "Silver", EP_BlackFerz MENUITEM "Gold", EP_BlackWazir MENUITEM "King", EP_BlackKing MENUITEM SEPARATOR MENUITEM "Demote", EP_Demote MENUITEM SEPARATOR MENUITEM "Clear Board ", EP_ClearBoard END END WHITEPIECEMENU MENU DISCARDABLE BEGIN POPUP "" BEGIN MENUITEM "White", EP_White MENUITEM SEPARATOR MENUITEM "Pawn", EP_WhitePawn MENUITEM "Knight", EP_WhiteKnight MENUITEM "Bishop", EP_WhiteBishop MENUITEM "Rook", EP_WhiteRook MENUITEM "Queen", EP_WhiteQueen MENUITEM "King", EP_WhiteKing MENUITEM SEPARATOR MENUITEM "Empty Square", EP_EmptySquare MENUITEM "Clear Board", EP_ClearBoard END END BLACKPIECEMENU MENU DISCARDABLE BEGIN POPUP "" BEGIN MENUITEM "Black", EP_Black MENUITEM SEPARATOR MENUITEM "Pawn", EP_BlackPawn MENUITEM "Knight", EP_BlackKnight MENUITEM "Bishop", EP_BlackBishop MENUITEM "Rook", EP_BlackRook MENUITEM "Queen", EP_BlackQueen MENUITEM "King", EP_BlackKing MENUITEM SEPARATOR MENUITEM "Empty Square", EP_EmptySquare MENUITEM "Clear Board", EP_ClearBoard END END DROPPIECEMENU MENU DISCARDABLE BEGIN POPUP "" BEGIN MENUITEM "Drop", 0, INACTIVE MENUITEM SEPARATOR MENUITEM "Pawn", DP_Pawn MENUITEM "Knight", DP_Knight MENUITEM "Bishop", DP_Bishop MENUITEM "Rook", DP_Rook MENUITEM "Queen", DP_Queen END END TEXTMENU MENU DISCARDABLE BEGIN POPUP "" BEGIN MENUITEM "Cop&y and Paste", IDM_QuickPaste MENUITEM "&Copy", IDM_Copy MENUITEM "&Paste", IDM_Paste END END INPUTMENU MENU DISCARDABLE BEGIN POPUP "" BEGIN MENUITEM "&Undo", IDM_Undo MENUITEM SEPARATOR MENUITEM "Cu&t", IDM_Cut MENUITEM "&Copy", IDM_Copy MENUITEM "&Paste", IDM_Paste MENUITEM SEPARATOR MENUITEM "Select &All", IDM_SelectAll END END ///////////////////////////////////////////////////////////////////////////// // // Accelerator // WINBOARD ACCELERATORS MOVEABLE PURE BEGIN "1", IDM_DirectCommand1, VIRTKEY, ALT, NOINVERT "2", IDM_DirectCommand2, VIRTKEY, ALT, NOINVERT "I", IDM_TypeInMove, VIRTKEY, ALT, NOINVERT "N", IDM_NewGame, VIRTKEY, CONTROL, NOINVERT "O", IDM_LoadGame, VIRTKEY, CONTROL, NOINVERT "S", IDM_SaveGame, VIRTKEY, CONTROL, NOINVERT "O", IDM_LoadPosition, VIRTKEY, SHIFT, CONTROL, NOINVERT "S", IDM_SavePosition, VIRTKEY, SHIFT, CONTROL, NOINVERT "C", IDM_CopyPosition, VIRTKEY, SHIFT, CONTROL, NOINVERT "V", IDM_PasteAny, VIRTKEY, SHIFT, CONTROL, NOINVERT "O", IDM_ShowEngineOutput, VIRTKEY, ALT, SHIFT, NOINVERT "H", IDM_ShowMoveHistory, VIRTKEY, ALT, SHIFT, NOINVERT "E", IDM_ShowEvalGraph, VIRTKEY, ALT, SHIFT, NOINVERT "G", IDM_ShowGameList, VIRTKEY, ALT, SHIFT, NOINVERT "B", IDM_BoardOptions, VIRTKEY, ALT, SHIFT, NOINVERT "T", IDM_TimeControl, VIRTKEY, ALT, SHIFT, NOINVERT "L", IDM_LoadOptions, VIRTKEY, ALT, SHIFT, NOINVERT "S", IDM_SaveOptions, VIRTKEY, ALT, SHIFT, NOINVERT "J", IDM_EnginePlayOptions, VIRTKEY, ALT, SHIFT, NOINVERT "U", IDM_OptionsUCI, VIRTKEY, ALT, SHIFT, NOINVERT "V", IDM_NewVariant, VIRTKEY, ALT, SHIFT, NOINVERT "P", OPT_PonderNextMove, VIRTKEY, SHIFT, CONTROL, NOINVERT "X", OPT_SaveExtPGN, VIRTKEY, SHIFT, CONTROL, NOINVERT "L", OPT_TestLegality, VIRTKEY, SHIFT, CONTROL, NOINVERT "A", OPT_AnimateMoving, VIRTKEY, SHIFT, CONTROL, NOINVERT "Q", OPT_AlwaysQueen, VIRTKEY, SHIFT, CONTROL, NOINVERT "F", OPT_AutoFlag, VIRTKEY, SHIFT, CONTROL, NOINVERT "H", OPT_HideThinkFromHuman, VIRTKEY, SHIFT, CONTROL, NOINVERT "I", OPT_ExtraInfoInMoveHistory, VIRTKEY, SHIFT, CONTROL, NOINVERT "W", IDM_MachineWhite, VIRTKEY, CONTROL, NOINVERT "B", IDM_MachineBlack, VIRTKEY, CONTROL, NOINVERT "T", IDM_TwoMachines, VIRTKEY, CONTROL, NOINVERT "E", IDM_EditGame, VIRTKEY, CONTROL, NOINVERT "E", IDM_EditPosition, VIRTKEY, SHIFT, CONTROL, NOINVERT "D", IDM_Debug, VIRTKEY, CONTROL, NOINVERT "G", IDM_AnalyzeFile, VIRTKEY, CONTROL, NOINVERT "M", IDM_MoveNow, VIRTKEY, CONTROL, NOINVERT "X", IDM_RetractMove, VIRTKEY, CONTROL, NOINVERT VK_DOWN, IDM_ToEnd, VIRTKEY, ALT, NOINVERT VK_END, IDM_ToEnd, VIRTKEY, ALT, NOINVERT VK_F1, IDM_HELPCONTENTS, VIRTKEY, NOINVERT VK_F10, IDM_StopObserving, VIRTKEY, NOINVERT VK_F11, IDM_StopExamining, VIRTKEY, NOINVERT VK_F12, IDM_Rematch, VIRTKEY, NOINVERT VK_F12, IDM_Debug, VIRTKEY, CONTROL, ALT, NOINVERT VK_F2, IDM_FlipView, VIRTKEY, NOINVERT VK_F3, IDM_Accept, VIRTKEY, NOINVERT VK_F4, IDM_Decline, VIRTKEY, NOINVERT VK_F4, IDM_Minimize, VIRTKEY, CONTROL, NOINVERT VK_F5, IDM_CallFlag, VIRTKEY, NOINVERT VK_F6, IDM_Draw, VIRTKEY, NOINVERT VK_F7, IDM_Adjourn, VIRTKEY, NOINVERT VK_F8, IDM_Abort, VIRTKEY, NOINVERT VK_F9, IDM_Resign, VIRTKEY, NOINVERT VK_HOME, IDM_ToStart, VIRTKEY, ALT, NOINVERT VK_INSERT, IDM_MoveNow, VIRTKEY, ALT, NOINVERT VK_NEXT, IDM_LoadNextGame, VIRTKEY, ALT, NOINVERT VK_NEXT, IDM_LoadNextPosition, VIRTKEY, SHIFT, ALT, NOINVERT VK_PAUSE, IDM_Pause, VIRTKEY, NOINVERT VK_PAUSE, IDM_Pause, VIRTKEY, ALT, NOINVERT VK_PRIOR, IDM_LoadPrevGame, VIRTKEY, ALT, NOINVERT VK_PRIOR, IDM_LoadPrevPosition, VIRTKEY, SHIFT, ALT, NOINVERT VK_LEFT, IDM_Backward, VIRTKEY, ALT, NOINVERT VK_RIGHT, IDM_Forward, VIRTKEY, ALT, NOINVERT END NO_ALT ACCELERATORS MOVEABLE PURE BEGIN VK_DELETE, IDM_RetractMove, VIRTKEY, NOINVERT VK_INSERT, IDM_MoveNow, VIRTKEY, NOINVERT #ifndef JAWS VK_END, IDM_TruncateGame, VIRTKEY, NOINVERT VK_HOME, IDM_Revert, VIRTKEY, NOINVERT VK_NEXT, IDM_LoadNextGame, VIRTKEY, NOINVERT VK_NEXT, IDM_LoadNextPosition, VIRTKEY, SHIFT, NOINVERT VK_PRIOR, IDM_LoadPrevGame, VIRTKEY, NOINVERT VK_PRIOR, IDM_LoadPrevPosition, VIRTKEY, SHIFT, NOINVERT VK_LEFT, IDM_Backward, VIRTKEY, NOINVERT VK_RIGHT, IDM_Forward, VIRTKEY, NOINVERT VK_DOWN, IDM_ToEnd, VIRTKEY, NOINVERT VK_UP, IDM_ToStart, VIRTKEY, NOINVERT VK_DOWN, OPT_GameListNext, VIRTKEY, CONTROL, NOINVERT VK_UP, OPT_GameListPrev, VIRTKEY, CONTROL, NOINVERT #endif END NO_ICS ACCELERATORS DISCARDABLE BEGIN "A", IDM_AnalysisMode, VIRTKEY, CONTROL, NOINVERT "V", IDM_PasteAny, VIRTKEY, CONTROL, NOINVERT END ///////////////////////////////////////////////////////////////////////////// // // Bitmap // P21O BITMAP MOVEABLE PURE "bitmaps/p21o.bmp" N21O BITMAP MOVEABLE PURE "bitmaps/n21o.bmp" B21O BITMAP MOVEABLE PURE "bitmaps/b21o.bmp" R21O BITMAP MOVEABLE PURE "bitmaps/r21o.bmp" K21O BITMAP MOVEABLE PURE "bitmaps/k21o.bmp" Q21O BITMAP MOVEABLE PURE "bitmaps/q21o.bmp" P21S BITMAP MOVEABLE PURE "bitmaps/p21s.bmp" N21S BITMAP MOVEABLE PURE "bitmaps/n21s.bmp" B21S BITMAP MOVEABLE PURE "bitmaps/b21s.bmp" R21S BITMAP MOVEABLE PURE "bitmaps/r21s.bmp" Q21S BITMAP MOVEABLE PURE "bitmaps/q21s.bmp" K21S BITMAP MOVEABLE PURE "bitmaps/k21s.bmp" P21W BITMAP MOVEABLE PURE "bitmaps/p21w.bmp" N21W BITMAP MOVEABLE PURE "bitmaps/n21w.bmp" B21W BITMAP MOVEABLE PURE "bitmaps/b21w.bmp" R21W BITMAP MOVEABLE PURE "bitmaps/r21w.bmp" Q21W BITMAP MOVEABLE PURE "bitmaps/q21w.bmp" K21W BITMAP MOVEABLE PURE "bitmaps/k21w.bmp" P25O BITMAP MOVEABLE PURE "bitmaps/p25o.bmp" N25O BITMAP MOVEABLE PURE "bitmaps/n25o.bmp" B25O BITMAP MOVEABLE PURE "bitmaps/b25o.bmp" R25O BITMAP MOVEABLE PURE "bitmaps/r25o.bmp" Q25O BITMAP MOVEABLE PURE "bitmaps/q25o.bmp" K25O BITMAP MOVEABLE PURE "bitmaps/k25o.bmp" P25S BITMAP MOVEABLE PURE "bitmaps/p25s.bmp" N25S BITMAP MOVEABLE PURE "bitmaps/n25s.bmp" B25S BITMAP MOVEABLE PURE "bitmaps/b25s.bmp" R25S BITMAP MOVEABLE PURE "bitmaps/r25s.bmp" Q25S BITMAP MOVEABLE PURE "bitmaps/q25s.bmp" K25S BITMAP MOVEABLE PURE "bitmaps/k25s.bmp" P25W BITMAP MOVEABLE PURE "bitmaps/p25w.bmp" N25W BITMAP MOVEABLE PURE "bitmaps/n25w.bmp" B25W BITMAP MOVEABLE PURE "bitmaps/b25w.bmp" R25W BITMAP MOVEABLE PURE "bitmaps/r25w.bmp" Q25W BITMAP MOVEABLE PURE "bitmaps/q25w.bmp" K25W BITMAP MOVEABLE PURE "bitmaps/k25w.bmp" P29O BITMAP MOVEABLE PURE "bitmaps/p29o.bmp" N29O BITMAP MOVEABLE PURE "bitmaps/n29o.bmp" B29O BITMAP MOVEABLE PURE "bitmaps/b29o.bmp" R29O BITMAP MOVEABLE PURE "bitmaps/r29o.bmp" Q29O BITMAP MOVEABLE PURE "bitmaps/q29o.bmp" K29O BITMAP MOVEABLE PURE "bitmaps/k29o.bmp" P29S BITMAP MOVEABLE PURE "bitmaps/p29s.bmp" N29S BITMAP MOVEABLE PURE "bitmaps/n29s.bmp" B29S BITMAP MOVEABLE PURE "bitmaps/b29s.bmp" R29S BITMAP MOVEABLE PURE "bitmaps/r29s.bmp" Q29S BITMAP MOVEABLE PURE "bitmaps/q29s.bmp" K29S BITMAP MOVEABLE PURE "bitmaps/k29s.bmp" P29W BITMAP MOVEABLE PURE "bitmaps/p29w.bmp" N29W BITMAP MOVEABLE PURE "bitmaps/n29w.bmp" B29W BITMAP MOVEABLE PURE "bitmaps/b29w.bmp" R29W BITMAP MOVEABLE PURE "bitmaps/r29w.bmp" Q29W BITMAP MOVEABLE PURE "bitmaps/q29w.bmp" K29W BITMAP MOVEABLE PURE "bitmaps/k29w.bmp" P33O BITMAP MOVEABLE PURE "bitmaps/p33o.bmp" N33O BITMAP MOVEABLE PURE "bitmaps/n33o.bmp" B33O BITMAP MOVEABLE PURE "bitmaps/b33o.bmp" R33O BITMAP MOVEABLE PURE "bitmaps/r33o.bmp" Q33O BITMAP MOVEABLE PURE "bitmaps/q33o.bmp" K33O BITMAP MOVEABLE PURE "bitmaps/k33o.bmp" P33S BITMAP MOVEABLE PURE "bitmaps/p33s.bmp" N33S BITMAP MOVEABLE PURE "bitmaps/n33s.bmp" B33S BITMAP MOVEABLE PURE "bitmaps/b33s.bmp" R33S BITMAP MOVEABLE PURE "bitmaps/r33s.bmp" Q33S BITMAP MOVEABLE PURE "bitmaps/q33s.bmp" K33S BITMAP MOVEABLE PURE "bitmaps/k33s.bmp" P33W BITMAP MOVEABLE PURE "bitmaps/p33w.bmp" N33W BITMAP MOVEABLE PURE "bitmaps/n33w.bmp" B33W BITMAP MOVEABLE PURE "bitmaps/b33w.bmp" R33W BITMAP MOVEABLE PURE "bitmaps/r33w.bmp" Q33W BITMAP MOVEABLE PURE "bitmaps/q33w.bmp" K33W BITMAP MOVEABLE PURE "bitmaps/k33w.bmp" P37O BITMAP MOVEABLE PURE "bitmaps/p37o.bmp" N37O BITMAP MOVEABLE PURE "bitmaps/n37o.bmp" B37O BITMAP MOVEABLE PURE "bitmaps/b37o.bmp" R37O BITMAP MOVEABLE PURE "bitmaps/r37o.bmp" Q37O BITMAP MOVEABLE PURE "bitmaps/q37o.bmp" K37O BITMAP MOVEABLE PURE "bitmaps/k37o.bmp" P37S BITMAP MOVEABLE PURE "bitmaps/p37s.bmp" N37S BITMAP MOVEABLE PURE "bitmaps/n37s.bmp" B37S BITMAP MOVEABLE PURE "bitmaps/b37s.bmp" R37S BITMAP MOVEABLE PURE "bitmaps/r37s.bmp" Q37S BITMAP MOVEABLE PURE "bitmaps/q37s.bmp" K37S BITMAP MOVEABLE PURE "bitmaps/k37s.bmp" P37W BITMAP MOVEABLE PURE "bitmaps/p37w.bmp" N37W BITMAP MOVEABLE PURE "bitmaps/n37w.bmp" B37W BITMAP MOVEABLE PURE "bitmaps/b37w.bmp" R37W BITMAP MOVEABLE PURE "bitmaps/r37w.bmp" Q37W BITMAP MOVEABLE PURE "bitmaps/q37w.bmp" K37W BITMAP MOVEABLE PURE "bitmaps/k37w.bmp" P40O BITMAP MOVEABLE PURE "bitmaps/p40o.bmp" N40O BITMAP MOVEABLE PURE "bitmaps/n40o.bmp" B40O BITMAP MOVEABLE PURE "bitmaps/b40o.bmp" R40O BITMAP MOVEABLE PURE "bitmaps/r40o.bmp" Q40O BITMAP MOVEABLE PURE "bitmaps/q40o.bmp" K40O BITMAP MOVEABLE PURE "bitmaps/k40o.bmp" P40S BITMAP MOVEABLE PURE "bitmaps/p40s.bmp" N40S BITMAP MOVEABLE PURE "bitmaps/n40s.bmp" B40S BITMAP MOVEABLE PURE "bitmaps/b40s.bmp" R40S BITMAP MOVEABLE PURE "bitmaps/r40s.bmp" Q40S BITMAP MOVEABLE PURE "bitmaps/q40s.bmp" K40S BITMAP MOVEABLE PURE "bitmaps/k40s.bmp" P40W BITMAP MOVEABLE PURE "bitmaps/p40w.bmp" N40W BITMAP MOVEABLE PURE "bitmaps/n40w.bmp" B40W BITMAP MOVEABLE PURE "bitmaps/b40w.bmp" R40W BITMAP MOVEABLE PURE "bitmaps/r40w.bmp" Q40W BITMAP MOVEABLE PURE "bitmaps/q40w.bmp" K40W BITMAP MOVEABLE PURE "bitmaps/k40w.bmp" P45O BITMAP MOVEABLE PURE "bitmaps/p45o.bmp" N45O BITMAP MOVEABLE PURE "bitmaps/n45o.bmp" B45O BITMAP MOVEABLE PURE "bitmaps/b45o.bmp" R45O BITMAP MOVEABLE PURE "bitmaps/r45o.bmp" Q45O BITMAP MOVEABLE PURE "bitmaps/q45o.bmp" K45O BITMAP MOVEABLE PURE "bitmaps/k45o.bmp" P45S BITMAP MOVEABLE PURE "bitmaps/p45s.bmp" N45S BITMAP MOVEABLE PURE "bitmaps/n45s.bmp" B45S BITMAP MOVEABLE PURE "bitmaps/b45s.bmp" R45S BITMAP MOVEABLE PURE "bitmaps/r45s.bmp" Q45S BITMAP MOVEABLE PURE "bitmaps/q45s.bmp" K45S BITMAP MOVEABLE PURE "bitmaps/k45s.bmp" P45W BITMAP MOVEABLE PURE "bitmaps/p45w.bmp" N45W BITMAP MOVEABLE PURE "bitmaps/n45w.bmp" B45W BITMAP MOVEABLE PURE "bitmaps/b45w.bmp" R45W BITMAP MOVEABLE PURE "bitmaps/r45w.bmp" Q45W BITMAP MOVEABLE PURE "bitmaps/q45w.bmp" K45W BITMAP MOVEABLE PURE "bitmaps/k45w.bmp" P49O BITMAP MOVEABLE PURE "bitmaps/p49o.bmp" N49O BITMAP MOVEABLE PURE "bitmaps/n49o.bmp" B49O BITMAP MOVEABLE PURE "bitmaps/b49o.bmp" R49O BITMAP MOVEABLE PURE "bitmaps/r49o.bmp" Q49O BITMAP MOVEABLE PURE "bitmaps/q49o.bmp" K49O BITMAP MOVEABLE PURE "bitmaps/k49o.bmp" P49S BITMAP MOVEABLE PURE "bitmaps/p49s.bmp" N49S BITMAP MOVEABLE PURE "bitmaps/n49s.bmp" B49S BITMAP MOVEABLE PURE "bitmaps/b49s.bmp" R49S BITMAP MOVEABLE PURE "bitmaps/r49s.bmp" Q49S BITMAP MOVEABLE PURE "bitmaps/q49s.bmp" K49S BITMAP MOVEABLE PURE "bitmaps/k49s.bmp" P49W BITMAP MOVEABLE PURE "bitmaps/p49w.bmp" N49W BITMAP MOVEABLE PURE "bitmaps/n49w.bmp" B49W BITMAP MOVEABLE PURE "bitmaps/b49w.bmp" R49W BITMAP MOVEABLE PURE "bitmaps/r49w.bmp" Q49W BITMAP MOVEABLE PURE "bitmaps/q49w.bmp" K49W BITMAP MOVEABLE PURE "bitmaps/k49w.bmp" P54O BITMAP MOVEABLE PURE "bitmaps/p54o.bmp" N54O BITMAP MOVEABLE PURE "bitmaps/n54o.bmp" B54O BITMAP MOVEABLE PURE "bitmaps/b54o.bmp" R54O BITMAP MOVEABLE PURE "bitmaps/r54o.bmp" Q54O BITMAP MOVEABLE PURE "bitmaps/q54o.bmp" K54O BITMAP MOVEABLE PURE "bitmaps/k54o.bmp" P54S BITMAP MOVEABLE PURE "bitmaps/p54s.bmp" N54S BITMAP MOVEABLE PURE "bitmaps/n54s.bmp" B54S BITMAP MOVEABLE PURE "bitmaps/b54s.bmp" R54S BITMAP MOVEABLE PURE "bitmaps/r54s.bmp" Q54S BITMAP MOVEABLE PURE "bitmaps/q54s.bmp" K54S BITMAP MOVEABLE PURE "bitmaps/k54s.bmp" P54W BITMAP MOVEABLE PURE "bitmaps/p54w.bmp" N54W BITMAP MOVEABLE PURE "bitmaps/n54w.bmp" B54W BITMAP MOVEABLE PURE "bitmaps/b54w.bmp" R54W BITMAP MOVEABLE PURE "bitmaps/r54w.bmp" Q54W BITMAP MOVEABLE PURE "bitmaps/q54w.bmp" K54W BITMAP MOVEABLE PURE "bitmaps/k54w.bmp" P58O BITMAP MOVEABLE PURE "bitmaps/p58o.bmp" N58O BITMAP MOVEABLE PURE "bitmaps/n58o.bmp" B58O BITMAP MOVEABLE PURE "bitmaps/b58o.bmp" R58O BITMAP MOVEABLE PURE "bitmaps/r58o.bmp" Q58O BITMAP MOVEABLE PURE "bitmaps/q58o.bmp" K58O BITMAP MOVEABLE PURE "bitmaps/k58o.bmp" P58S BITMAP MOVEABLE PURE "bitmaps/p58s.bmp" N58S BITMAP MOVEABLE PURE "bitmaps/n58s.bmp" B58S BITMAP MOVEABLE PURE "bitmaps/b58s.bmp" R58S BITMAP MOVEABLE PURE "bitmaps/r58s.bmp" Q58S BITMAP MOVEABLE PURE "bitmaps/q58s.bmp" K58S BITMAP MOVEABLE PURE "bitmaps/k58s.bmp" P58W BITMAP MOVEABLE PURE "bitmaps/p58w.bmp" N58W BITMAP MOVEABLE PURE "bitmaps/n58w.bmp" B58W BITMAP MOVEABLE PURE "bitmaps/b58w.bmp" R58W BITMAP MOVEABLE PURE "bitmaps/r58w.bmp" Q58W BITMAP MOVEABLE PURE "bitmaps/q58w.bmp" K58W BITMAP MOVEABLE PURE "bitmaps/k58w.bmp" P64O BITMAP MOVEABLE PURE "bitmaps/p64o.bmp" N64O BITMAP MOVEABLE PURE "bitmaps/n64o.bmp" B64O BITMAP MOVEABLE PURE "bitmaps/b64o.bmp" R64O BITMAP MOVEABLE PURE "bitmaps/r64o.bmp" Q64O BITMAP MOVEABLE PURE "bitmaps/q64o.bmp" K64O BITMAP MOVEABLE PURE "bitmaps/k64o.bmp" P64S BITMAP MOVEABLE PURE "bitmaps/p64s.bmp" N64S BITMAP MOVEABLE PURE "bitmaps/n64s.bmp" B64S BITMAP MOVEABLE PURE "bitmaps/b64s.bmp" R64S BITMAP MOVEABLE PURE "bitmaps/r64s.bmp" Q64S BITMAP MOVEABLE PURE "bitmaps/q64s.bmp" K64S BITMAP MOVEABLE PURE "bitmaps/k64s.bmp" P64W BITMAP MOVEABLE PURE "bitmaps/p64w.bmp" N64W BITMAP MOVEABLE PURE "bitmaps/n64w.bmp" B64W BITMAP MOVEABLE PURE "bitmaps/b64w.bmp" R64W BITMAP MOVEABLE PURE "bitmaps/r64w.bmp" Q64W BITMAP MOVEABLE PURE "bitmaps/q64w.bmp" K64W BITMAP MOVEABLE PURE "bitmaps/k64w.bmp" P72O BITMAP MOVEABLE PURE "bitmaps/p72o.bmp" N72O BITMAP MOVEABLE PURE "bitmaps/n72o.bmp" B72O BITMAP MOVEABLE PURE "bitmaps/b72o.bmp" R72O BITMAP MOVEABLE PURE "bitmaps/r72o.bmp" Q72O BITMAP MOVEABLE PURE "bitmaps/q72o.bmp" K72O BITMAP MOVEABLE PURE "bitmaps/k72o.bmp" P72S BITMAP MOVEABLE PURE "bitmaps/p72s.bmp" N72S BITMAP MOVEABLE PURE "bitmaps/n72s.bmp" B72S BITMAP MOVEABLE PURE "bitmaps/b72s.bmp" R72S BITMAP MOVEABLE PURE "bitmaps/r72s.bmp" Q72S BITMAP MOVEABLE PURE "bitmaps/q72s.bmp" K72S BITMAP MOVEABLE PURE "bitmaps/k72s.bmp" P72W BITMAP MOVEABLE PURE "bitmaps/p72w.bmp" N72W BITMAP MOVEABLE PURE "bitmaps/n72w.bmp" B72W BITMAP MOVEABLE PURE "bitmaps/b72w.bmp" R72W BITMAP MOVEABLE PURE "bitmaps/r72w.bmp" Q72W BITMAP MOVEABLE PURE "bitmaps/q72w.bmp" K72W BITMAP MOVEABLE PURE "bitmaps/k72w.bmp" P80O BITMAP MOVEABLE PURE "bitmaps/p80o.bmp" N80O BITMAP MOVEABLE PURE "bitmaps/n80o.bmp" B80O BITMAP MOVEABLE PURE "bitmaps/b80o.bmp" R80O BITMAP MOVEABLE PURE "bitmaps/r80o.bmp" Q80O BITMAP MOVEABLE PURE "bitmaps/q80o.bmp" K80O BITMAP MOVEABLE PURE "bitmaps/k80o.bmp" P80S BITMAP MOVEABLE PURE "bitmaps/p80s.bmp" N80S BITMAP MOVEABLE PURE "bitmaps/n80s.bmp" B80S BITMAP MOVEABLE PURE "bitmaps/b80s.bmp" R80S BITMAP MOVEABLE PURE "bitmaps/r80s.bmp" Q80S BITMAP MOVEABLE PURE "bitmaps/q80s.bmp" K80S BITMAP MOVEABLE PURE "bitmaps/k80s.bmp" P80W BITMAP MOVEABLE PURE "bitmaps/p80w.bmp" N80W BITMAP MOVEABLE PURE "bitmaps/n80w.bmp" B80W BITMAP MOVEABLE PURE "bitmaps/b80w.bmp" R80W BITMAP MOVEABLE PURE "bitmaps/r80w.bmp" Q80W BITMAP MOVEABLE PURE "bitmaps/q80w.bmp" K80W BITMAP MOVEABLE PURE "bitmaps/k80w.bmp" P87O BITMAP MOVEABLE PURE "bitmaps/p87o.bmp" N87O BITMAP MOVEABLE PURE "bitmaps/n87o.bmp" B87O BITMAP MOVEABLE PURE "bitmaps/b87o.bmp" R87O BITMAP MOVEABLE PURE "bitmaps/r87o.bmp" Q87O BITMAP MOVEABLE PURE "bitmaps/q87o.bmp" K87O BITMAP MOVEABLE PURE "bitmaps/k87o.bmp" P87S BITMAP MOVEABLE PURE "bitmaps/p87s.bmp" N87S BITMAP MOVEABLE PURE "bitmaps/n87s.bmp" B87S BITMAP MOVEABLE PURE "bitmaps/b87s.bmp" R87S BITMAP MOVEABLE PURE "bitmaps/r87s.bmp" Q87S BITMAP MOVEABLE PURE "bitmaps/q87s.bmp" K87S BITMAP MOVEABLE PURE "bitmaps/k87s.bmp" P87W BITMAP MOVEABLE PURE "bitmaps/p87w.bmp" N87W BITMAP MOVEABLE PURE "bitmaps/n87w.bmp" B87W BITMAP MOVEABLE PURE "bitmaps/b87w.bmp" R87W BITMAP MOVEABLE PURE "bitmaps/r87w.bmp" Q87W BITMAP MOVEABLE PURE "bitmaps/q87w.bmp" K87W BITMAP MOVEABLE PURE "bitmaps/k87w.bmp" P95O BITMAP MOVEABLE PURE "bitmaps/p95o.bmp" N95O BITMAP MOVEABLE PURE "bitmaps/n95o.bmp" B95O BITMAP MOVEABLE PURE "bitmaps/b95o.bmp" R95O BITMAP MOVEABLE PURE "bitmaps/r95o.bmp" Q95O BITMAP MOVEABLE PURE "bitmaps/q95o.bmp" K95O BITMAP MOVEABLE PURE "bitmaps/k95o.bmp" P95S BITMAP MOVEABLE PURE "bitmaps/p95s.bmp" N95S BITMAP MOVEABLE PURE "bitmaps/n95s.bmp" B95S BITMAP MOVEABLE PURE "bitmaps/b95s.bmp" R95S BITMAP MOVEABLE PURE "bitmaps/r95s.bmp" Q95S BITMAP MOVEABLE PURE "bitmaps/q95s.bmp" K95S BITMAP MOVEABLE PURE "bitmaps/k95s.bmp" P95W BITMAP MOVEABLE PURE "bitmaps/p95w.bmp" N95W BITMAP MOVEABLE PURE "bitmaps/n95w.bmp" B95W BITMAP MOVEABLE PURE "bitmaps/b95w.bmp" R95W BITMAP MOVEABLE PURE "bitmaps/r95w.bmp" Q95W BITMAP MOVEABLE PURE "bitmaps/q95w.bmp" K95W BITMAP MOVEABLE PURE "bitmaps/k95w.bmp" P108O BITMAP MOVEABLE PURE "bitmaps/p108o.bmp" N108O BITMAP MOVEABLE PURE "bitmaps/n108o.bmp" B108O BITMAP MOVEABLE PURE "bitmaps/b108o.bmp" R108O BITMAP MOVEABLE PURE "bitmaps/r108o.bmp" Q108O BITMAP MOVEABLE PURE "bitmaps/q108o.bmp" K108O BITMAP MOVEABLE PURE "bitmaps/k108o.bmp" P108S BITMAP MOVEABLE PURE "bitmaps/p108s.bmp" N108S BITMAP MOVEABLE PURE "bitmaps/n108s.bmp" B108S BITMAP MOVEABLE PURE "bitmaps/b108s.bmp" R108S BITMAP MOVEABLE PURE "bitmaps/r108s.bmp" Q108S BITMAP MOVEABLE PURE "bitmaps/q108s.bmp" K108S BITMAP MOVEABLE PURE "bitmaps/k108s.bmp" P108W BITMAP MOVEABLE PURE "bitmaps/p108w.bmp" N108W BITMAP MOVEABLE PURE "bitmaps/n108w.bmp" B108W BITMAP MOVEABLE PURE "bitmaps/b108w.bmp" R108W BITMAP MOVEABLE PURE "bitmaps/r108w.bmp" Q108W BITMAP MOVEABLE PURE "bitmaps/q108w.bmp" K108W BITMAP MOVEABLE PURE "bitmaps/k108w.bmp" P116O BITMAP MOVEABLE PURE "bitmaps/p116o.bmp" N116O BITMAP MOVEABLE PURE "bitmaps/n116o.bmp" B116O BITMAP MOVEABLE PURE "bitmaps/b116o.bmp" R116O BITMAP MOVEABLE PURE "bitmaps/r116o.bmp" Q116O BITMAP MOVEABLE PURE "bitmaps/q116o.bmp" K116O BITMAP MOVEABLE PURE "bitmaps/k116o.bmp" P116S BITMAP MOVEABLE PURE "bitmaps/p116s.bmp" N116S BITMAP MOVEABLE PURE "bitmaps/n116s.bmp" B116S BITMAP MOVEABLE PURE "bitmaps/b116s.bmp" R116S BITMAP MOVEABLE PURE "bitmaps/r116s.bmp" Q116S BITMAP MOVEABLE PURE "bitmaps/q116s.bmp" K116S BITMAP MOVEABLE PURE "bitmaps/k116s.bmp" P116W BITMAP MOVEABLE PURE "bitmaps/p116w.bmp" N116W BITMAP MOVEABLE PURE "bitmaps/n116w.bmp" B116W BITMAP MOVEABLE PURE "bitmaps/b116w.bmp" R116W BITMAP MOVEABLE PURE "bitmaps/r116w.bmp" Q116W BITMAP MOVEABLE PURE "bitmaps/q116w.bmp" K116W BITMAP MOVEABLE PURE "bitmaps/k116w.bmp" P129O BITMAP MOVEABLE PURE "bitmaps/p129o.bmp" N129O BITMAP MOVEABLE PURE "bitmaps/n129o.bmp" B129O BITMAP MOVEABLE PURE "bitmaps/b129o.bmp" R129O BITMAP MOVEABLE PURE "bitmaps/r129o.bmp" Q129O BITMAP MOVEABLE PURE "bitmaps/q129o.bmp" K129O BITMAP MOVEABLE PURE "bitmaps/k129o.bmp" P129S BITMAP MOVEABLE PURE "bitmaps/p129s.bmp" N129S BITMAP MOVEABLE PURE "bitmaps/n129s.bmp" B129S BITMAP MOVEABLE PURE "bitmaps/b129s.bmp" R129S BITMAP MOVEABLE PURE "bitmaps/r129s.bmp" Q129S BITMAP MOVEABLE PURE "bitmaps/q129s.bmp" K129S BITMAP MOVEABLE PURE "bitmaps/k129s.bmp" P129W BITMAP MOVEABLE PURE "bitmaps/p129w.bmp" N129W BITMAP MOVEABLE PURE "bitmaps/n129w.bmp" B129W BITMAP MOVEABLE PURE "bitmaps/b129w.bmp" R129W BITMAP MOVEABLE PURE "bitmaps/r129w.bmp" Q129W BITMAP MOVEABLE PURE "bitmaps/q129w.bmp" K129W BITMAP MOVEABLE PURE "bitmaps/k129w.bmp" GALACTIC BITMAP MOVEABLE PURE "bitmaps/galactic.bmp" TIM BITMAP MOVEABLE PURE "bitmaps/tim.bmp" // [HGM] Some fairy symbols: E72O BITMAP MOVEABLE PURE "bitmaps/e72o.bmp" A72O BITMAP MOVEABLE PURE "bitmaps/a72o.bmp" AA72O BITMAP MOVEABLE PURE "bitmaps/as72o.bmp" C72O BITMAP MOVEABLE PURE "bitmaps/c72o.bmp" CV72O BITMAP MOVEABLE PURE "bitmaps/cv72o.bmp" F72O BITMAP MOVEABLE PURE "bitmaps/f72o.bmp" M72O BITMAP MOVEABLE PURE "bitmaps/m72o.bmp" W72O BITMAP MOVEABLE PURE "bitmaps/w72o.bmp" O72O BITMAP MOVEABLE PURE "bitmaps/o72o.bmp" U72O BITMAP MOVEABLE PURE "bitmaps/u72o.bmp" H72O BITMAP MOVEABLE PURE "bitmaps/h72o.bmp" G72O BITMAP MOVEABLE PURE "bitmaps/g72o.bmp" V72O BITMAP MOVEABLE PURE "bitmaps/v72o.bmp" S72O BITMAP MOVEABLE PURE "bitmaps/s72o.bmp" L72O BITMAP MOVEABLE PURE "bitmaps/l72o.bmp" DK72O BITMAP MOVEABLE PURE "bitmaps/dk72o.bmp" LN72O BITMAP MOVEABLE PURE "bitmaps/ln72o.bmp" WOLF72O BITMAP MOVEABLE PURE "bitmaps/wolf72o.bmp" CAMEL72O BITMAP MOVEABLE PURE "bitmaps/camel72o.bmp" ZEBRA72O BITMAP MOVEABLE PURE "bitmaps/zebra72o.bmp" WP72O BITMAP MOVEABLE PURE "bitmaps/wp72o.bmp" WN72O BITMAP MOVEABLE PURE "bitmaps/wn72o.bmp" WL72O BITMAP MOVEABLE PURE "bitmaps/wl72o.bmp" WS72O BITMAP MOVEABLE PURE "bitmaps/ws72o.bmp" E72S BITMAP MOVEABLE PURE "bitmaps/e72s.bmp" A72S BITMAP MOVEABLE PURE "bitmaps/a72s.bmp" AA72S BITMAP MOVEABLE PURE "bitmaps/as72s.bmp" C72S BITMAP MOVEABLE PURE "bitmaps/c72s.bmp" CV72S BITMAP MOVEABLE PURE "bitmaps/cv72s.bmp" F72S BITMAP MOVEABLE PURE "bitmaps/f72s.bmp" M72S BITMAP MOVEABLE PURE "bitmaps/m72s.bmp" W72S BITMAP MOVEABLE PURE "bitmaps/w72s.bmp" O72S BITMAP MOVEABLE PURE "bitmaps/o72s.bmp" U72S BITMAP MOVEABLE PURE "bitmaps/u72s.bmp" H72S BITMAP MOVEABLE PURE "bitmaps/h72s.bmp" G72S BITMAP MOVEABLE PURE "bitmaps/g72s.bmp" V72S BITMAP MOVEABLE PURE "bitmaps/v72s.bmp" S72S BITMAP MOVEABLE PURE "bitmaps/s72s.bmp" L72S BITMAP MOVEABLE PURE "bitmaps/l72s.bmp" DK72S BITMAP MOVEABLE PURE "bitmaps/dk72s.bmp" LN72S BITMAP MOVEABLE PURE "bitmaps/ln72s.bmp" WOLF72S BITMAP MOVEABLE PURE "bitmaps/wolf72s.bmp" CAMEL72S BITMAP MOVEABLE PURE "bitmaps/camel72s.bmp" ZEBRA72S BITMAP MOVEABLE PURE "bitmaps/zebra72s.bmp" WP72S BITMAP MOVEABLE PURE "bitmaps/wp72s.bmp" WN72S BITMAP MOVEABLE PURE "bitmaps/wn72s.bmp" WL72S BITMAP MOVEABLE PURE "bitmaps/wl72s.bmp" WS72S BITMAP MOVEABLE PURE "bitmaps/ws72s.bmp" E72W BITMAP MOVEABLE PURE "bitmaps/e72w.bmp" A72W BITMAP MOVEABLE PURE "bitmaps/a72w.bmp" AA72W BITMAP MOVEABLE PURE "bitmaps/as72w.bmp" C72W BITMAP MOVEABLE PURE "bitmaps/c72w.bmp" CV72W BITMAP MOVEABLE PURE "bitmaps/cv72w.bmp" F72W BITMAP MOVEABLE PURE "bitmaps/f72w.bmp" M72W BITMAP MOVEABLE PURE "bitmaps/m72w.bmp" W72W BITMAP MOVEABLE PURE "bitmaps/w72w.bmp" O72W BITMAP MOVEABLE PURE "bitmaps/o72w.bmp" U72W BITMAP MOVEABLE PURE "bitmaps/u72w.bmp" H72W BITMAP MOVEABLE PURE "bitmaps/h72w.bmp" G72W BITMAP MOVEABLE PURE "bitmaps/g72w.bmp" V72W BITMAP MOVEABLE PURE "bitmaps/v72w.bmp" S72W BITMAP MOVEABLE PURE "bitmaps/s72w.bmp" L72W BITMAP MOVEABLE PURE "bitmaps/l72w.bmp" DK72W BITMAP MOVEABLE PURE "bitmaps/dk72w.bmp" LN72W BITMAP MOVEABLE PURE "bitmaps/ln72w.bmp" WOLF72W BITMAP MOVEABLE PURE "bitmaps/wolf72w.bmp" CAMEL72W BITMAP MOVEABLE PURE "bitmaps/camel72w.bmp" E49O BITMAP MOVEABLE PURE "bitmaps/e49o.bmp" A49O BITMAP MOVEABLE PURE "bitmaps/a49o.bmp" AA49O BITMAP MOVEABLE PURE "bitmaps/as49o.bmp" C49O BITMAP MOVEABLE PURE "bitmaps/c49o.bmp" CV49O BITMAP MOVEABLE PURE "bitmaps/cv49o.bmp" F49O BITMAP MOVEABLE PURE "bitmaps/f49o.bmp" M49O BITMAP MOVEABLE PURE "bitmaps/m49o.bmp" W49O BITMAP MOVEABLE PURE "bitmaps/w49o.bmp" O49O BITMAP MOVEABLE PURE "bitmaps/o49o.bmp" U49O BITMAP MOVEABLE PURE "bitmaps/u49o.bmp" H49O BITMAP MOVEABLE PURE "bitmaps/h49o.bmp" G49O BITMAP MOVEABLE PURE "bitmaps/g49o.bmp" V49O BITMAP MOVEABLE PURE "bitmaps/v49o.bmp" S49O BITMAP MOVEABLE PURE "bitmaps/s49o.bmp" L49O BITMAP MOVEABLE PURE "bitmaps/l49o.bmp" DK49O BITMAP MOVEABLE PURE "bitmaps/dk49o.bmp" LN49O BITMAP MOVEABLE PURE "bitmaps/ln49o.bmp" WOLF49O BITMAP MOVEABLE PURE "bitmaps/wolf49o.bmp" CAMEL49O BITMAP MOVEABLE PURE "bitmaps/camel49o.bmp" ZEBRA49O BITMAP MOVEABLE PURE "bitmaps/zebra49o.bmp" WP49O BITMAP MOVEABLE PURE "bitmaps/wp49o.bmp" WN49O BITMAP MOVEABLE PURE "bitmaps/wn49o.bmp" WL49O BITMAP MOVEABLE PURE "bitmaps/wl49o.bmp" WS49O BITMAP MOVEABLE PURE "bitmaps/ws49o.bmp" E49S BITMAP MOVEABLE PURE "bitmaps/e49s.bmp" A49S BITMAP MOVEABLE PURE "bitmaps/a49s.bmp" AA49S BITMAP MOVEABLE PURE "bitmaps/as49s.bmp" C49S BITMAP MOVEABLE PURE "bitmaps/c49s.bmp" CV49S BITMAP MOVEABLE PURE "bitmaps/cv49s.bmp" F49S BITMAP MOVEABLE PURE "bitmaps/f49s.bmp" M49S BITMAP MOVEABLE PURE "bitmaps/m49s.bmp" W49S BITMAP MOVEABLE PURE "bitmaps/w49s.bmp" O49S BITMAP MOVEABLE PURE "bitmaps/o49s.bmp" U49S BITMAP MOVEABLE PURE "bitmaps/u49s.bmp" H49S BITMAP MOVEABLE PURE "bitmaps/h49s.bmp" G49S BITMAP MOVEABLE PURE "bitmaps/g49s.bmp" V49S BITMAP MOVEABLE PURE "bitmaps/v49s.bmp" S49S BITMAP MOVEABLE PURE "bitmaps/s49s.bmp" L49S BITMAP MOVEABLE PURE "bitmaps/l49s.bmp" DK49S BITMAP MOVEABLE PURE "bitmaps/dk49s.bmp" LN49S BITMAP MOVEABLE PURE "bitmaps/ln49s.bmp" WOLF49S BITMAP MOVEABLE PURE "bitmaps/wolf49s.bmp" CAMEL49S BITMAP MOVEABLE PURE "bitmaps/camel49s.bmp" ZEBRA49S BITMAP MOVEABLE PURE "bitmaps/zebra49s.bmp" WP49S BITMAP MOVEABLE PURE "bitmaps/wp49s.bmp" WN49S BITMAP MOVEABLE PURE "bitmaps/wn49s.bmp" WL49S BITMAP MOVEABLE PURE "bitmaps/wl49s.bmp" WS49S BITMAP MOVEABLE PURE "bitmaps/ws49s.bmp" E49W BITMAP MOVEABLE PURE "bitmaps/e49w.bmp" A49W BITMAP MOVEABLE PURE "bitmaps/a49w.bmp" AA49W BITMAP MOVEABLE PURE "bitmaps/as49w.bmp" C49W BITMAP MOVEABLE PURE "bitmaps/c49w.bmp" CV49W BITMAP MOVEABLE PURE "bitmaps/cv49w.bmp" F49W BITMAP MOVEABLE PURE "bitmaps/f49w.bmp" M49W BITMAP MOVEABLE PURE "bitmaps/m49w.bmp" W49W BITMAP MOVEABLE PURE "bitmaps/w49w.bmp" O49W BITMAP MOVEABLE PURE "bitmaps/o49w.bmp" U49W BITMAP MOVEABLE PURE "bitmaps/u49w.bmp" H49W BITMAP MOVEABLE PURE "bitmaps/h49w.bmp" G49W BITMAP MOVEABLE PURE "bitmaps/g49w.bmp" V49W BITMAP MOVEABLE PURE "bitmaps/v49w.bmp" S49W BITMAP MOVEABLE PURE "bitmaps/s49w.bmp" L49W BITMAP MOVEABLE PURE "bitmaps/l49w.bmp" DK49W BITMAP MOVEABLE PURE "bitmaps/dk49w.bmp" LN49W BITMAP MOVEABLE PURE "bitmaps/ln49w.bmp" WOLF49W BITMAP MOVEABLE PURE "bitmaps/wolf49w.bmp" CAMEL49W BITMAP MOVEABLE PURE "bitmaps/camel49w.bmp" A33O BITMAP MOVEABLE PURE "bitmaps/a33o.bmp" AA33O BITMAP MOVEABLE PURE "bitmaps/as33o.bmp" C33O BITMAP MOVEABLE PURE "bitmaps/c33o.bmp" CV33O BITMAP MOVEABLE PURE "bitmaps/cv33o.bmp" V33O BITMAP MOVEABLE PURE "bitmaps/v33o.bmp" E33O BITMAP MOVEABLE PURE "bitmaps/e33o.bmp" F33O BITMAP MOVEABLE PURE "bitmaps/f33o.bmp" H33O BITMAP MOVEABLE PURE "bitmaps/h33o.bmp" G33O BITMAP MOVEABLE PURE "bitmaps/g33o.bmp" L33O BITMAP MOVEABLE PURE "bitmaps/l33o.bmp" W33O BITMAP MOVEABLE PURE "bitmaps/w33o.bmp" M33O BITMAP MOVEABLE PURE "bitmaps/m33o.bmp" O33O BITMAP MOVEABLE PURE "bitmaps/o33o.bmp" DK33O BITMAP MOVEABLE PURE "bitmaps/dk33o.bmp" LN33O BITMAP MOVEABLE PURE "bitmaps/ln33o.bmp" WP33O BITMAP MOVEABLE PURE "bitmaps/wp33o.bmp" WN33O BITMAP MOVEABLE PURE "bitmaps/wn33o.bmp" WL33O BITMAP MOVEABLE PURE "bitmaps/wl33o.bmp" WS33O BITMAP MOVEABLE PURE "bitmaps/ws33o.bmp" A33W BITMAP MOVEABLE PURE "bitmaps/a33w.bmp" AA33W BITMAP MOVEABLE PURE "bitmaps/as33w.bmp" C33W BITMAP MOVEABLE PURE "bitmaps/c33w.bmp" CV33W BITMAP MOVEABLE PURE "bitmaps/cv33w.bmp" V33W BITMAP MOVEABLE PURE "bitmaps/v33w.bmp" E33W BITMAP MOVEABLE PURE "bitmaps/e33w.bmp" F33W BITMAP MOVEABLE PURE "bitmaps/f33w.bmp" H33W BITMAP MOVEABLE PURE "bitmaps/h33w.bmp" G33W BITMAP MOVEABLE PURE "bitmaps/g33w.bmp" L33W BITMAP MOVEABLE PURE "bitmaps/l33w.bmp" W33W BITMAP MOVEABLE PURE "bitmaps/w33w.bmp" M33W BITMAP MOVEABLE PURE "bitmaps/m33w.bmp" O33W BITMAP MOVEABLE PURE "bitmaps/o33w.bmp" DK33W BITMAP MOVEABLE PURE "bitmaps/dk33w.bmp" LN33W BITMAP MOVEABLE PURE "bitmaps/ln33w.bmp" A33S BITMAP MOVEABLE PURE "bitmaps/a33s.bmp" AA33S BITMAP MOVEABLE PURE "bitmaps/as33s.bmp" C33S BITMAP MOVEABLE PURE "bitmaps/c33s.bmp" CV33S BITMAP MOVEABLE PURE "bitmaps/cv33s.bmp" V33S BITMAP MOVEABLE PURE "bitmaps/v33s.bmp" E33S BITMAP MOVEABLE PURE "bitmaps/e33s.bmp" F33S BITMAP MOVEABLE PURE "bitmaps/f33s.bmp" H33S BITMAP MOVEABLE PURE "bitmaps/h33s.bmp" G33S BITMAP MOVEABLE PURE "bitmaps/g33s.bmp" L33S BITMAP MOVEABLE PURE "bitmaps/l33s.bmp" W33S BITMAP MOVEABLE PURE "bitmaps/w33s.bmp" M33S BITMAP MOVEABLE PURE "bitmaps/m33s.bmp" O33S BITMAP MOVEABLE PURE "bitmaps/o33s.bmp" DK33S BITMAP MOVEABLE PURE "bitmaps/dk33s.bmp" LN33S BITMAP MOVEABLE PURE "bitmaps/ln33s.bmp" WP33S BITMAP MOVEABLE PURE "bitmaps/wp33s.bmp" WN33S BITMAP MOVEABLE PURE "bitmaps/wn33s.bmp" WL33S BITMAP MOVEABLE PURE "bitmaps/wl33s.bmp" WS33S BITMAP MOVEABLE PURE "bitmaps/ws33s.bmp" A37O BITMAP MOVEABLE PURE "bitmaps/a37o.bmp" L37O BITMAP MOVEABLE PURE "bitmaps/l37o.bmp" C37O BITMAP MOVEABLE PURE "bitmaps/c37o.bmp" CV37O BITMAP MOVEABLE PURE "bitmaps/cv37o.bmp" A40O BITMAP MOVEABLE PURE "bitmaps/a40o.bmp" L40O BITMAP MOVEABLE PURE "bitmaps/l40o.bmp" C40O BITMAP MOVEABLE PURE "bitmaps/c40o.bmp" CV40O BITMAP MOVEABLE PURE "bitmaps/cv40o.bmp" A45O BITMAP MOVEABLE PURE "bitmaps/a45o.bmp" L45O BITMAP MOVEABLE PURE "bitmaps/l45o.bmp" C45O BITMAP MOVEABLE PURE "bitmaps/c45o.bmp" CV45O BITMAP MOVEABLE PURE "bitmaps/cv45o.bmp" A54O BITMAP MOVEABLE PURE "bitmaps/a54o.bmp" L54O BITMAP MOVEABLE PURE "bitmaps/l54o.bmp" C54O BITMAP MOVEABLE PURE "bitmaps/c54o.bmp" CV54O BITMAP MOVEABLE PURE "bitmaps/cv54o.bmp" A58O BITMAP MOVEABLE PURE "bitmaps/a58o.bmp" L58O BITMAP MOVEABLE PURE "bitmaps/l58o.bmp" C58O BITMAP MOVEABLE PURE "bitmaps/c58o.bmp" CV58O BITMAP MOVEABLE PURE "bitmaps/cv58o.bmp" A64O BITMAP MOVEABLE PURE "bitmaps/a64o.bmp" L64O BITMAP MOVEABLE PURE "bitmaps/l64o.bmp" C64O BITMAP MOVEABLE PURE "bitmaps/c64o.bmp" CV64O BITMAP MOVEABLE PURE "bitmaps/cv64o.bmp" A37W BITMAP MOVEABLE PURE "bitmaps/a37w.bmp" L37W BITMAP MOVEABLE PURE "bitmaps/l37w.bmp" C37W BITMAP MOVEABLE PURE "bitmaps/c37w.bmp" CV37W BITMAP MOVEABLE PURE "bitmaps/cv37w.bmp" A40W BITMAP MOVEABLE PURE "bitmaps/a40w.bmp" L40W BITMAP MOVEABLE PURE "bitmaps/l40w.bmp" C40W BITMAP MOVEABLE PURE "bitmaps/c40w.bmp" CV40W BITMAP MOVEABLE PURE "bitmaps/cv40w.bmp" A45W BITMAP MOVEABLE PURE "bitmaps/a45w.bmp" L45W BITMAP MOVEABLE PURE "bitmaps/l45w.bmp" C45W BITMAP MOVEABLE PURE "bitmaps/c45w.bmp" CV45W BITMAP MOVEABLE PURE "bitmaps/cv45w.bmp" A54W BITMAP MOVEABLE PURE "bitmaps/a54w.bmp" L54W BITMAP MOVEABLE PURE "bitmaps/l54w.bmp" C54W BITMAP MOVEABLE PURE "bitmaps/c54w.bmp" CV54W BITMAP MOVEABLE PURE "bitmaps/cv54w.bmp" A58W BITMAP MOVEABLE PURE "bitmaps/a58w.bmp" L58W BITMAP MOVEABLE PURE "bitmaps/l58w.bmp" C58W BITMAP MOVEABLE PURE "bitmaps/c58w.bmp" CV58W BITMAP MOVEABLE PURE "bitmaps/cv58w.bmp" A64W BITMAP MOVEABLE PURE "bitmaps/a64w.bmp" L64W BITMAP MOVEABLE PURE "bitmaps/l64w.bmp" C64W BITMAP MOVEABLE PURE "bitmaps/c64w.bmp" CV64W BITMAP MOVEABLE PURE "bitmaps/cv64w.bmp" A37S BITMAP MOVEABLE PURE "bitmaps/a37s.bmp" L37S BITMAP MOVEABLE PURE "bitmaps/l37s.bmp" C37S BITMAP MOVEABLE PURE "bitmaps/c37s.bmp" CV37S BITMAP MOVEABLE PURE "bitmaps/cv37s.bmp" A40S BITMAP MOVEABLE PURE "bitmaps/a40s.bmp" L40S BITMAP MOVEABLE PURE "bitmaps/l40s.bmp" C40S BITMAP MOVEABLE PURE "bitmaps/c40s.bmp" CV40S BITMAP MOVEABLE PURE "bitmaps/cv40s.bmp" A45S BITMAP MOVEABLE PURE "bitmaps/a45s.bmp" L45S BITMAP MOVEABLE PURE "bitmaps/l45s.bmp" C45S BITMAP MOVEABLE PURE "bitmaps/c45s.bmp" CV45S BITMAP MOVEABLE PURE "bitmaps/cv45s.bmp" A54S BITMAP MOVEABLE PURE "bitmaps/a54s.bmp" L54S BITMAP MOVEABLE PURE "bitmaps/l54s.bmp" C54S BITMAP MOVEABLE PURE "bitmaps/c54s.bmp" CV54S BITMAP MOVEABLE PURE "bitmaps/cv54s.bmp" A58S BITMAP MOVEABLE PURE "bitmaps/a58s.bmp" L58S BITMAP MOVEABLE PURE "bitmaps/l58s.bmp" C58S BITMAP MOVEABLE PURE "bitmaps/c58s.bmp" CV58S BITMAP MOVEABLE PURE "bitmaps/cv58s.bmp" A64S BITMAP MOVEABLE PURE "bitmaps/a64s.bmp" L64S BITMAP MOVEABLE PURE "bitmaps/l64s.bmp" C64S BITMAP MOVEABLE PURE "bitmaps/c64s.bmp" CV64S BITMAP MOVEABLE PURE "bitmaps/cv64s.bmp" SP58O BITMAP MOVEABLE PURE "shogibitmaps/sp58o.bmp" SN58O BITMAP MOVEABLE PURE "shogibitmaps/sn58o.bmp" SB58O BITMAP MOVEABLE PURE "shogibitmaps/sb58o.bmp" SR58O BITMAP MOVEABLE PURE "shogibitmaps/sr58o.bmp" SL58O BITMAP MOVEABLE PURE "shogibitmaps/sl58o.bmp" SK58O BITMAP MOVEABLE PURE "shogibitmaps/sk58o.bmp" SF58O BITMAP MOVEABLE PURE "shogibitmaps/sf58o.bmp" SW58O BITMAP MOVEABLE PURE "shogibitmaps/sw58o.bmp" SU58O BITMAP MOVEABLE PURE "shogibitmaps/su58o.bmp" SH58O BITMAP MOVEABLE PURE "shogibitmaps/sh58o.bmp" SA58O BITMAP MOVEABLE PURE "shogibitmaps/sa58o.bmp" SC58O BITMAP MOVEABLE PURE "shogibitmaps/sc58o.bmp" SG58O BITMAP MOVEABLE PURE "shogibitmaps/sg58o.bmp" SS58O BITMAP MOVEABLE PURE "shogibitmaps/ss58o.bmp" SP58W BITMAP MOVEABLE PURE "shogibitmaps/sp58w.bmp" SN58W BITMAP MOVEABLE PURE "shogibitmaps/sn58w.bmp" SR58W BITMAP MOVEABLE PURE "shogibitmaps/sr58w.bmp" SL58W BITMAP MOVEABLE PURE "shogibitmaps/sl58w.bmp" SK58W BITMAP MOVEABLE PURE "shogibitmaps/sk58w.bmp" SW58W BITMAP MOVEABLE PURE "shogibitmaps/sw58w.bmp" #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""windows.h""\r\n" "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""dlgs.h""\r\n" "\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // WAVE // DING WAVE DISCARDABLE "sounds/ding1.wav" CHING WAVE DISCARDABLE "sounds/ching.wav" CLICK WAVE DISCARDABLE "sounds/click.wav" CYMBAL WAVE DISCARDABLE "sounds/cymbal.wav" DRIP WAVE DISCARDABLE "sounds/drip.wav" GONG WAVE DISCARDABLE "sounds/gong.wav" BEEPBEEP WAVE DISCARDABLE "sounds/honkhonk.wav" LASER WAVE DISCARDABLE "sounds/laser.wav" PENALTY WAVE DISCARDABLE "sounds/penalty.wav" PHONE WAVE DISCARDABLE "sounds/phone.wav" POP WAVE DISCARDABLE "sounds/pop.wav" POP2 WAVE DISCARDABLE "sounds/pop2.wav" SLAP WAVE DISCARDABLE "sounds/slap.wav" SQUEAK WAVE DISCARDABLE "sounds/squeak.wav" SWISH WAVE DISCARDABLE "sounds/swish.wav" THUD WAVE DISCARDABLE "sounds/thud.wav" WHIPCRACK WAVE DISCARDABLE "sounds/whipcrak.wav" MOVE WAVE DISCARDABLE "sounds/move.wav" ALARM WAVE DISCARDABLE "sounds/alarm.wav" CHALLENGE WAVE DISCARDABLE "sounds/challenge.wav" CHANNEL WAVE DISCARDABLE "sounds/channel.wav" CHANNEL1 WAVE DISCARDABLE "sounds/channel1.wav" DRAW WAVE DISCARDABLE "sounds/draw.wav" KIBITZ WAVE DISCARDABLE "sounds/kibitz.wav" LOSE WAVE DISCARDABLE "sounds/lose.wav" REQUEST WAVE DISCARDABLE "sounds/request.wav" SEEK WAVE DISCARDABLE "sounds/seek.wav" SHOUT WAVE DISCARDABLE "sounds/shout.wav" SSHOUT WAVE DISCARDABLE "sounds/sshout.wav" TELL WAVE DISCARDABLE "sounds/tell.wav" UNFINISHED WAVE DISCARDABLE "sounds/unfinished.wav" WIN WAVE DISCARDABLE "sounds/win.wav" ROAR WAVE DISCARDABLE "sounds/roar.wav" ///////////////////////////////////////////////////////////////////////////// // // Version // 1 VERSIONINFO FILEVERSION PACKAGE_FILEVERSION PRODUCTVERSION PACKAGE_FILEVERSION FILETYPE VFT_APP { BLOCK "StringFileInfo" { BLOCK "040904b0" { #ifdef JAWS VALUE "Comments", "Includes support for JAWS screen reader" #endif VALUE "CompanyName", "GNU Project" VALUE "FileVersion", PACKAGE_VERSION VALUE "FileDescription", "Winboard 32-bit GUI for chess" VALUE "InternalName", "Winboard" VALUE "LegalCopyright", "GPLv3 Copyright 2009" VALUE "OriginalFilename", "winboard.exe" VALUE "ProductName", "Winboard" VALUE "ProductVersion", PACKAGE_VERSION #ifdef JAWS VALUE "SpecialBuild", "JAWS (Job Access With Speech) accessiblity build\0" #endif } } BLOCK "VarFileInfo" { VALUE "Translation", 0x0409, 1252 } } #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED xboard-4.9.1/winboard/wsnap.h0000644000175000001440000000316712717001265013037 00000000000000/* * Smart "snapping" for window moving and sizing * * Author: Alessandro Scotti (Dec 2005) * * Copyright 2005 Alessandro Scotti * * ------------------------------------------------------------------------ * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #ifndef WSNAP_H_ #define WSNAP_H_ #include #define MAX_SNAP_POINTS 12 #define SNAP_DISTANCE 4 typedef struct { int x_grid[ MAX_SNAP_POINTS ]; int x_grid_len; int y_grid[ MAX_SNAP_POINTS ]; int y_grid_len; } SnapData; LRESULT OnEnterSizeMove( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam ); LRESULT OnMoving( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam ); LRESULT OnSizing( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam ); LRESULT OnExitSizeMove( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam ); #endif // WSNAP_H_ xboard-4.9.1/winboard/wengineoutput.c0000644000175000001440000003657312717001265014626 00000000000000/* * wengineoutput.c - split-off front-end of Engine output (PV) by HGM * * Author: Alessandro Scotti (Dec 2005) * * Copyright 2005 Alessandro Scotti * * Enhancements Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, * 2016 Free Software Foundation, Inc. * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include /* required for all Windows applications */ #include #include #include #include #include #include #include "common.h" #include "frontend.h" #include "backend.h" #include "winboard.h" #include "wsnap.h" #include "engineoutput.h" /* Module variables */ int windowMode = 1; static BOOLEAN engineOutputDialogUp = FALSE; HICON icons[8]; // [HGM] this front-end array translates back-end icon indicator to handle HWND outputField[2][7]; // [HGM] front-end array to translate output field to window handle // front end static HICON LoadIconEx( int id ) { return LoadImage( hInst, MAKEINTRESOURCE(id), IMAGE_ICON, ICON_SIZE, ICON_SIZE, 0 ); } // [HGM] the platform-dependent way of indicating where output should go is now all // concentrated here, where a table of platform-dependent handles are initialized. // This cleanses most other routines of front-end stuff, so they can go into the back end. static void InitializeEngineOutput() { // [HGM] made this into a table, rather than separate global variables icons[nColorBlack] = LoadIconEx( IDI_BLACK_14 ); icons[nColorWhite] = LoadIconEx( IDI_WHITE_14 ); icons[nColorUnknown] = LoadIconEx( IDI_UNKNOWN_14 ); icons[nClear] = LoadIconEx( IDI_TRANS_14 ); icons[nPondering] = LoadIconEx( IDI_PONDER_14 ); icons[nThinking] = LoadIconEx( IDI_CLOCK_14 ); icons[nAnalyzing] = LoadIconEx( IDI_ANALYZE2_14 ); // [HGM] also make a table of handles to output controls // Note that engineOutputDialog must be defined first! outputField[0][nColorIcon] = GetDlgItem( engineOutputDialog, IDC_Color1 ); outputField[0][nLabel] = GetDlgItem( engineOutputDialog, IDC_EngineLabel1 ); outputField[0][nStateIcon] = GetDlgItem( engineOutputDialog, IDC_StateIcon1 ); outputField[0][nStateData] = GetDlgItem( engineOutputDialog, IDC_StateData1 ); outputField[0][nLabelNPS] = GetDlgItem( engineOutputDialog, IDC_Engine1_NPS ); outputField[0][nMemo] = GetDlgItem( engineOutputDialog, IDC_EngineMemo1 ); outputField[1][nColorIcon] = GetDlgItem( engineOutputDialog, IDC_Color2 ); outputField[1][nLabel] = GetDlgItem( engineOutputDialog, IDC_EngineLabel2 ); outputField[1][nStateIcon] = GetDlgItem( engineOutputDialog, IDC_StateIcon2 ); outputField[1][nStateData] = GetDlgItem( engineOutputDialog, IDC_StateData2 ); outputField[1][nLabelNPS] = GetDlgItem( engineOutputDialog, IDC_Engine2_NPS ); outputField[1][nMemo] = GetDlgItem( engineOutputDialog, IDC_EngineMemo2 ); } // front end static void SetControlPos( HWND hDlg, int id, int x, int y, int width, int height ) { HWND hControl = GetDlgItem( hDlg, id ); SetWindowPos( hControl, HWND_TOP, x, y, width, height, SWP_NOZORDER ); } #define HIDDEN_X 20000 #define HIDDEN_Y 20000 // front end static void HideControl( HWND hDlg, int id ) { HWND hControl = GetDlgItem( hDlg, id ); RECT rc; GetWindowRect( hControl, &rc ); /* Avoid hiding an already hidden control, because that causes many unnecessary WM_ERASEBKGND messages! */ if( rc.left != HIDDEN_X || rc.top != HIDDEN_Y ) { SetControlPos( hDlg, id, 20000, 20000, 100, 100 ); } } // front end, although we might make GetWindowRect front end instead static int GetControlWidth( HWND hDlg, int id ) { RECT rc; GetWindowRect( GetDlgItem( hDlg, id ), &rc ); return rc.right - rc.left; } // front end? static int GetControlHeight( HWND hDlg, int id ) { RECT rc; GetWindowRect( GetDlgItem( hDlg, id ), &rc ); return rc.bottom - rc.top; } static int GetHeaderHeight() { int result = GetControlHeight( engineOutputDialog, IDC_EngineLabel1 ); if( result < ICON_SIZE ) result = ICON_SIZE; return result; } // The size calculations should be backend? If setControlPos is a platform-dependent way of doing things, // a platform-independent wrapper for it should be supplied. static void PositionControlSet( HWND hDlg, int x, int y, int clientWidth, int memoHeight, int idColor, int idEngineLabel, int idNPS, int idMemo, int idStateIcon, int idStateData ) { int label_x = x + ICON_SIZE + H_MARGIN; int label_h = GetControlHeight( hDlg, IDC_EngineLabel1 ); int label_y = y + ICON_SIZE - label_h; int nps_w = GetControlWidth( hDlg, IDC_Engine1_NPS ); int nps_x = clientWidth - H_MARGIN - nps_w; int state_data_w = GetControlWidth( hDlg, IDC_StateData1 ); int state_data_x = nps_x - H_MARGIN - state_data_w; int state_icon_x = state_data_x - ICON_SIZE - 2; int max_w = clientWidth - 2*H_MARGIN; int memo_y = y + ICON_SIZE + LABEL_V_DISTANCE; SetControlPos( hDlg, idColor, x, y, ICON_SIZE, ICON_SIZE ); SetControlPos( hDlg, idEngineLabel, label_x, label_y, state_icon_x - label_x, label_h ); SetControlPos( hDlg, idStateIcon, state_icon_x, y, ICON_SIZE, ICON_SIZE ); SetControlPos( hDlg, idStateData, state_data_x, label_y, state_data_w, label_h ); SetControlPos( hDlg, idNPS, nps_x, label_y, nps_w, label_h ); SetControlPos( hDlg, idMemo, x, memo_y, max_w, memoHeight ); } // Also here some of the size calculations should go to the back end, and their actual application to a front-end routine void ResizeWindowControls( int mode ) { HWND hDlg = engineOutputDialog; // [HGM] used to be parameter, but routine is called from back-end RECT rc; int headerHeight = GetHeaderHeight(); // int labelHeight = GetControlHeight( hDlg, IDC_EngineLabel1 ); // int labelOffset = H_MARGIN + ICON_SIZE + H_MARGIN; // int labelDeltaY = ICON_SIZE - labelHeight; int clientWidth; int clientHeight; int maxControlWidth; int npsWidth; /* Initialize variables */ GetClientRect( hDlg, &rc ); clientWidth = rc.right - rc.left; clientHeight = rc.bottom - rc.top; maxControlWidth = clientWidth - 2*H_MARGIN; npsWidth = GetControlWidth( hDlg, IDC_Engine1_NPS ); /* Resize controls */ if( mode == 0 ) { /* One engine */ PositionControlSet( hDlg, H_MARGIN, V_MARGIN, clientWidth, clientHeight - V_MARGIN - LABEL_V_DISTANCE - headerHeight- V_MARGIN, IDC_Color1, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineMemo1, IDC_StateIcon1, IDC_StateData1 ); /* Hide controls for the second engine */ HideControl( hDlg, IDC_Color2 ); HideControl( hDlg, IDC_EngineLabel2 ); HideControl( hDlg, IDC_StateIcon2 ); HideControl( hDlg, IDC_StateData2 ); HideControl( hDlg, IDC_Engine2_NPS ); HideControl( hDlg, IDC_EngineMemo2 ); SendDlgItemMessage( hDlg, IDC_EngineMemo2, WM_SETTEXT, 0, (LPARAM) "" ); /* TODO: we should also hide/disable them!!! what about tab stops?!?! */ } else { /* Two engines */ int memo_h = (clientHeight - headerHeight*2 - V_MARGIN*2 - LABEL_V_DISTANCE*2 - SPLITTER_SIZE) / 2; int header1_y = V_MARGIN; int header2_y = V_MARGIN + headerHeight + LABEL_V_DISTANCE + memo_h + SPLITTER_SIZE; PositionControlSet( hDlg, H_MARGIN, header1_y, clientWidth, memo_h, IDC_Color1, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineMemo1, IDC_StateIcon1, IDC_StateData1 ); PositionControlSet( hDlg, H_MARGIN, header2_y, clientWidth, memo_h, IDC_Color2, IDC_EngineLabel2, IDC_Engine2_NPS, IDC_EngineMemo2, IDC_StateIcon2, IDC_StateData2 ); } InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo1), NULL, FALSE ); InvalidateRect( GetDlgItem(hDlg,IDC_EngineMemo2), NULL, FALSE ); } static int currentPV; int highTextStart[2], highTextEnd[2]; extern RECT boardRect; VOID GetMemoLine(HWND hDlg, int x, int y) { // [HGM] pv: translate click to PV line, and load it for display char buf[10000]; int index, start, end, memo; POINT pt; pt.x = x; pt.y = y; memo = currentPV ? IDC_EngineMemo2 : IDC_EngineMemo1; index = SendDlgItemMessage( hDlg, memo, EM_CHARFROMPOS, 0, (LPARAM) &pt ); GetDlgItemText(hDlg, memo, buf, sizeof(buf)); if(LoadMultiPV(x, y, buf, index, &start, &end, currentPV)) { SetCapture(hDlg); SendMessage( outputField[currentPV][nMemo], EM_SETSEL, (WPARAM)start, (LPARAM)end ); highTextStart[currentPV] = start; highTextEnd[currentPV] = end; SetFocus(outputField[currentPV][nMemo]); } } // front end. Actual printing of PV lines into the output field void InsertIntoMemo( int which, char * text, int where ) { SendMessage( outputField[which][nMemo], EM_SETSEL, where, where ); // [HGM] multivar: choose insertion point SendMessage( outputField[which][nMemo], EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) text ); if(where < highTextStart[which]) { // [HGM] multiPVdisplay: move highlighting int len = strlen(text); highTextStart[which] += len; highTextEnd[which] += len; SendMessage( outputField[which][nMemo], EM_SETSEL, highTextStart[which], highTextEnd[which] ); } } // front end. Associates an icon with an output field ("control" in Windows jargon). // [HGM] let it find out the output field from the 'which' number by itself void SetIcon( int which, int field, int nIcon ) { if( nIcon != 0 ) { SendMessage( outputField[which][field], STM_SETICON, (WPARAM) icons[nIcon], 0 ); } } // front end wrapper for SetWindowText, taking control number in stead of handle void DoSetWindowText(int which, int field, char *s_label) { SetWindowText( outputField[which][field], s_label ); } void SetEngineOutputTitle(char *title) { SetWindowText( engineOutputDialog, title ); } // This seems pure front end LRESULT CALLBACK EngineOutputProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static SnapData sd; switch (message) { case WM_INITDIALOG: if( engineOutputDialog == NULL ) { engineOutputDialog = hDlg; Translate(hDlg, DLG_EngineOutput); RestoreWindowPlacement( hDlg, &wpEngineOutput ); /* Restore window placement */ ResizeWindowControls( windowMode ); SendDlgItemMessage( hDlg, IDC_EngineMemo1, EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS ); SendDlgItemMessage( hDlg, IDC_EngineMemo2, EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS ); /* Set font */ SendDlgItemMessage( engineOutputDialog, IDC_EngineMemo1, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0 )); SendDlgItemMessage( engineOutputDialog, IDC_EngineMemo2, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0 )); SetEngineState( 0, STATE_IDLE, "" ); SetEngineState( 1, STATE_IDLE, "" ); } return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: break; } break; case WM_MOUSEMOVE: MovePV(LOWORD(lParam) - boardRect.left, HIWORD(lParam) - boardRect.top, boardRect.bottom - boardRect.top); break; case WM_RBUTTONUP: ReleaseCapture(); SendMessage( outputField[currentPV][nMemo], EM_SETSEL, 0, 0 ); highTextStart[currentPV] = highTextEnd[currentPV] = 0; UnLoadPV(); break; case WM_NOTIFY: if( wParam == IDC_EngineMemo1 || wParam == IDC_EngineMemo2 ) { MSGFILTER * lpMF = (MSGFILTER *) lParam; if( lpMF->msg == WM_RBUTTONDOWN && (lpMF->wParam & (MK_CONTROL)) == 0 ) { shiftKey = (lpMF->wParam & MK_SHIFT) != 0; // [HGM] remember last shift status currentPV = (wParam == IDC_EngineMemo2); GetMemoLine(hDlg, LOWORD(lpMF->lParam), HIWORD(lpMF->lParam)); } } break; case WM_GETMINMAXINFO: { MINMAXINFO * mmi = (MINMAXINFO *) lParam; mmi->ptMinTrackSize.x = 100; mmi->ptMinTrackSize.y = 160; } break; case WM_CLOSE: EngineOutputPopDown(); break; case WM_SIZE: ResizeWindowControls( windowMode ); break; case WM_ENTERSIZEMOVE: return OnEnterSizeMove( &sd, hDlg, wParam, lParam ); case WM_SIZING: return OnSizing( &sd, hDlg, wParam, lParam ); case WM_MOVING: return OnMoving( &sd, hDlg, wParam, lParam ); case WM_EXITSIZEMOVE: return OnExitSizeMove( &sd, hDlg, wParam, lParam ); } return FALSE; } // front end void EngineOutputPopUp() { FARPROC lpProc; static int needInit = TRUE; CheckMenuItem(GetMenu(hwndMain), IDM_ShowEngineOutput, MF_CHECKED); if( engineOutputDialog ) { SendMessage( engineOutputDialog, WM_INITDIALOG, 0, 0 ); if( ! engineOutputDialogUp ) { ShowWindow(engineOutputDialog, SW_SHOW); } } else { lpProc = MakeProcInstance( (FARPROC) EngineOutputProc, hInst ); /* Note to self: dialog must have the WS_VISIBLE style set, otherwise it's not shown! */ CreateDialog( hInst, MAKEINTRESOURCE(DLG_EngineOutput), hwndMain, (DLGPROC)lpProc ); FreeProcInstance(lpProc); } // [HGM] displaced to after creation of dialog, to allow initialization of output fields if( needInit ) { InitializeEngineOutput(); needInit = FALSE; } engineOutputDialogUp = TRUE; } // front end void EngineOutputPopDown() { CheckMenuItem(GetMenu(hwndMain), IDM_ShowEngineOutput, MF_UNCHECKED); if( engineOutputDialog ) { ShowWindow(engineOutputDialog, SW_HIDE); } engineOutputDialogUp = FALSE; } // front end. [HGM] Takes handle of output control from table, so only number is passed void DoClearMemo(int which) { SendMessage( outputField[which][nMemo], WM_SETTEXT, 0, (LPARAM) "" ); } // front end (because only other front-end wants to know) int EngineOutputIsUp() { return engineOutputDialogUp; } // front end, to give back-end access to engineOutputDialog int EngineOutputDialogExists() { return engineOutputDialog != NULL; } xboard-4.9.1/winboard/winboard.rtf0000644000175000001440000173076212717001265014071 00000000000000{\rtf1\ansi\ansicpg1252\uc1 \deff5\deflang1033\deflangfe1043{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f4\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times;} {\f5\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Helvetica{\*\falt Arial};}{\f6\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Courier{\*\falt Courier New};}{\f7\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Geneva;} {\f8\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Tms Rmn;}{\f9\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Helv;}{\f10\froman\fcharset0\fprq2{\*\panose 00000000000000000000}MS Serif;} {\f11\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}MS Sans Serif;}{\f12\froman\fcharset0\fprq2{\*\panose 00000000000000000000}New York{\*\falt Times New Roman};}{\f13\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}System;} {\f14\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}Wingdings;}{\f15\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f16\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimSun;} {\f17\froman\fcharset0\fprq0{\*\panose 00000000000000000000}??;}{\f18\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}BookAntiqua-Bold;}{\f19\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}BookAntiqua;} {\f20\froman\fcharset0\fprq0{\*\panose 00000000000000000000}Minion-Regular;}{\f21\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Calibri;}{\f22\froman\fcharset0\fprq0{\*\panose 00000000000000000000}TimesNewRoman;} {\f23\froman\fcharset0\fprq0{\*\panose 00000000000000000000}TimesNewRoman,Italic;}{\f24\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Cambria Math;}{\f25\fnil\fcharset129\fprq1{\*\panose 00000000000000000000}Terminal;} {\f26\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Fixedsys;}{\f27\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Small Fonts;}{\f28\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Czec;} {\f29\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Engl;}{\f30\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Fren;}{\f31\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Germ;} {\f32\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Ital;}{\f33\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Span;}{\f34\fdecor\fcharset2\fprq1{\*\panose 00000000000000000000}WST_Swed;} {\f35\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Marlett;}{\f36\fmodern\fcharset0\fprq1{\*\panose 020b0609040504020204}Lucida Console;}{\f37\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans Unicode;} {\f38\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana;}{\f39\fswiss\fcharset0\fprq2{\*\panose 020b0a04020102020204}Arial Black;}{\f40\fscript\fcharset0\fprq2{\*\panose 030f0702030302020204}Comic Sans MS;} {\f41\fswiss\fcharset0\fprq2{\*\panose 020b0806030902050204}Impact;}{\f42\froman\fcharset0\fprq2{\*\panose 02040502050405020303}Georgia;}{\f43\fswiss\fcharset0\fprq2{\*\panose 020b0603020102020204}Franklin Gothic Medium;} {\f44\froman\fcharset0\fprq2{\*\panose 02040502050505030304}Palatino Linotype;}{\f45\fswiss\fcharset0\fprq2{\*\panose 020b0603020202020204}Trebuchet MS;}{\f46\froman\fcharset2\fprq2{\*\panose 05030102010509060703}Webdings;} {\f47\fscript\fcharset0\fprq2 Estrangelo Edessa;}{\f48\fnil\fcharset0\fprq2 Gautami;}{\f49\fnil\fcharset0\fprq2 Latha;}{\f50\fnil\fcharset0\fprq2 Mangal;}{\f51\fnil\fcharset0\fprq2 MV Boli;}{\f52\fnil\fcharset0\fprq2 Raavi;} {\f53\fnil\fcharset0\fprq2 Shruti;}{\f54\fnil\fcharset0\fprq2 Tunga;}{\f55\froman\fcharset0\fprq2{\*\panose 010a0502050306030303}Sylfaen;}{\f56\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Microsoft Sans Serif;} {\f57\fswiss\fcharset0\fprq2{\*\panose 020b0506020202030204}Arial Narrow;}{\f58\froman\fcharset0\fprq2{\*\panose 02060603020205020403}Rockwell;}{\f59\froman\fcharset0\fprq2{\*\panose 02060903040505020403}Rockwell Extra Bold;} {\f60\fscript\fcharset0\fprq2{\*\panose 03090702030407020403}Mistral;}{\f61\fdecor\fcharset0\fprq2{\*\panose 04020505051007020d02}Blackadder ITC;}{\f62\fscript\fcharset0\fprq2{\*\panose 03070402050302030203}Bradley Hand ITC;} {\f63\fswiss\fcharset0\fprq2{\*\panose 020e0705020206020404}Copperplate Gothic Bold;}{\f64\fswiss\fcharset0\fprq2{\*\panose 020e0507020206020404}Copperplate Gothic Light;}{\f65\fdecor\fcharset0\fprq2{\*\panose 04040404050702020202}Curlz MT;} {\f66\fscript\fcharset0\fprq2{\*\panose 030303020407070d0804}Edwardian Script ITC;}{\f67\froman\fcharset0\fprq2{\*\panose 02090707080505020304}Engravers MT;}{\f68\fswiss\fcharset0\fprq2{\*\panose 020b0805030504020804}Eras Demi ITC;} {\f69\fswiss\fcharset0\fprq2{\*\panose 020b0402030504020804}Eras Light ITC;}{\f70\fswiss\fcharset0\fprq2{\*\panose 020b0504020202050204}Eurostile;}{\f71\fdecor\fcharset0\fprq2{\*\panose 04060505060202020a04}Felix Titling;} {\f72\fswiss\fcharset0\fprq2{\*\panose 020b0503020102020204}Franklin Gothic Book;}{\f73\fswiss\fcharset0\fprq2{\*\panose 020b0703020102020204}Franklin Gothic Demi;}{\f74\fswiss\fcharset0\fprq2{\*\panose 020b0606030402020204}Franklin Gothic Medium Cond;} {\f75\fswiss\fcharset0\fprq2{\*\panose 020b0903020102020204}Franklin Gothic Heavy;}{\f76\fswiss\fcharset0\fprq2{\*\panose 020b0706030402020204}Franklin Gothic Demi Cond;}{\f77\fscript\fcharset0\fprq2{\*\panose 03020402040607040605}French Script MT;} {\f78\fswiss\fcharset0\fprq2{\*\panose 020b0502020202020204}Century Gothic;}{\f79\fscript\fcharset0\fprq2{\*\panose 03050502040202030202}Kristen ITC;}{\f80\fswiss\fcharset0\fprq2{\*\panose 020b0602030504020204}Lucida Sans;} {\f81\fswiss\fcharset0\fprq2{\*\panose 020e0502030308020204}Maiandra GD;}{\f82\fdecor\fcharset0\fprq2{\*\panose 04040403030d02020704}Matisse ITC;}{\f83\fscript\fcharset0\fprq2{\*\panose 03070502060502030205}Papyrus;} {\f84\froman\fcharset0\fprq2{\*\panose 02020502060401020303}Perpetua;}{\f85\fdecor\fcharset0\fprq2{\*\panose 04020404030d07020202}Tempus Sans ITC;}{\f86\fscript\fcharset0\fprq2{\*\panose 03020602050506090804}Vivaldi;} {\f87\froman\fcharset2\fprq2{\*\panose 05020102010507070707}Wingdings 2;}{\f88\froman\fcharset2\fprq2{\*\panose 05040102010807070707}Wingdings 3;}{\f89\fdecor\fcharset0\fprq2{\*\panose 04090605060d06020702}Jokerman;} {\f90\fdecor\fcharset0\fprq2{\*\panose 04040403040a02020202}Juice ITC;}{\f91\fmodern\fcharset0\fprq2{\*\panose 02010509020102010303}OCR A Extended;}{\f92\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Reference 1;} {\f93\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}MS Reference 2;}{\f94\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}MS Reference Sans Serif;}{\f95\fnil\fcharset2\fprq2{\*\panose 05000500000000000000}MS Reference Specialty;} {\f96\froman\fcharset2\fprq2{\*\panose 05050102010205020202}MT Extra;}{\f97\fswiss\fcharset0\fprq2{\*\panose 020b0706040902060204}Haettenschweiler;}{\f98\froman\fcharset0\fprq2{\*\panose 02050604050505020204}Bookman Old Style;} {\f99\fnil\fcharset2\fprq2{\*\panose 01010601010101010101}Monotype Sorts;}{\f100\froman\fcharset0\fprq2{\*\panose 02020404030301010803}Garamond;}{\f101\fnil\fcharset2\fprq2{\*\panose 05000000000000000000}MS Outlook;} {\f102\froman\fcharset0\fprq2{\*\panose 02020503030404060203}Kartika;}{\f103\fnil\fcharset0\fprq2{\*\panose 01010600010101010101}Vrinda;}{\f104\fswiss\fcharset2\fprq2{\*\panose 020b0603050302020204}WinboardF;} {\f105\fswiss\fcharset2\fprq2{\*\panose 020b0603050302020204}Chess Mark;}{\f106\fnil\fcharset0\fprq2{\*\panose 02000500000000000000}Superchess;}{\f107\fswiss\fcharset0\fprq2{\*\panose 020b0603050302020204}Tasc Chess Figurine;} {\f108\fnil\fcharset0\fprq1{\*\panose 02010603010101010101}XIANGQI;}{\f109\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho;}{\f110\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;} {\f111\froman\fcharset128\fprq2{\*\panose 02020600040205080304}MS PMincho;}{\f112\froman\fcharset128\fprq2{\*\panose 02020600040205080304}@MS PMincho;}{\f113\fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}MS Gothic;} {\f114\fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}@MS Gothic;}{\f115\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}MS PGothic;}{\f116\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}@MS PGothic;} {\f117\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}MS UI Gothic;}{\f118\fswiss\fcharset128\fprq2{\*\panose 020b0600070205080204}@MS UI Gothic;}{\f119\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}Gulim;} {\f120\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}@Gulim;}{\f121\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}GulimChe;}{\f122\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}@GulimChe;} {\f123\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}Dotum;}{\f124\fswiss\fcharset129\fprq2{\*\panose 020b0600000101010101}@Dotum;}{\f125\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}DotumChe;} {\f126\fmodern\fcharset129\fprq1{\*\panose 020b0609000101010101}@DotumChe;}{\f127\froman\fcharset129\fprq2{\*\panose 02030600000101010101}Batang;}{\f128\froman\fcharset129\fprq2{\*\panose 02030600000101010101}@Batang;} {\f129\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}BatangChe;}{\f130\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}@BatangChe;}{\f131\froman\fcharset129\fprq2{\*\panose 02030600000101010101}Gungsuh;} {\f132\froman\fcharset129\fprq2{\*\panose 02030600000101010101}@Gungsuh;}{\f133\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}GungsuhChe;}{\f134\fmodern\fcharset129\fprq1{\*\panose 02030609000101010101}@GungsuhChe;} {\f135\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimSun;}{\f136\fmodern\fcharset134\fprq1{\*\panose 02010609030101010101}NSimSun;}{\f137\fmodern\fcharset134\fprq1{\*\panose 02010609030101010101}@NSimSun;} {\f138\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}SimHei;}{\f139\fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@SimHei;}{\f140\fmodern\fcharset136\fprq1{\*\panose 02020309000000000000}MingLiU;} {\f141\fmodern\fcharset136\fprq1{\*\panose 02020309000000000000}@MingLiU;}{\f142\froman\fcharset136\fprq2{\*\panose 02020300000000000000}PMingLiU;}{\f143\froman\fcharset136\fprq2{\*\panose 02020300000000000000}@PMingLiU;} {\f144\froman\fcharset128\fprq1{\*\panose 00000000000000000000}Mincho{\*\falt ??};}{\f145\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Century;}{\f146\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Angsana New;} {\f147\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Cordia New;}{\f148\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Sendnya;}{\f149\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Estrangella Edessa;} {\f150\fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}Arial Unicode MS;}{\f151\fswiss\fcharset0\fprq0{\*\panose 00000000000000000000}Univers (WN);}{\f152\froman\fcharset0\fprq0{\*\panose 00000000000000000000}CG Times (WN);} {\f153\fswiss\fcharset128\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS;}{\f154\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Book Antiqua;}{\f155\fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Monotype Corsiva;} {\f156\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}CA Chess;}{\f157\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}ISDiagram;}{\f158\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}CADiagram;} {\f159\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Alfonso-X;}{\f160\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Adventurer;}{\f161\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Cases;} {\f162\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Marroquin;}{\f163\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Condal;}{\f164\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Harlequin;} {\f165\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Kingdom;}{\f166\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Leipzig;}{\f167\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Line;} {\f168\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Lucena;}{\f169\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Magnetic;}{\f170\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Maya;} {\f171\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Merida Fatx;}{\f172\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Merida;}{\f173\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Millennia-D;} {\f174\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Miscel;}{\f175\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Motif;}{\f176\fswiss\fcharset2\fprq2{\*\panose 00000000000000000000}Chess Mediaeval;} {\f177\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Smart;}{\f178\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Traveller Standard;}{\f179\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess;} {\f180\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Usual;}{\f181\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chess Utrecht;}{\f182\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica1;} {\f183\froman\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica1Mono;}{\f184\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica2;}{\f185\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica2Mono;} {\f186\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica3;}{\f187\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica3Mono;}{\f188\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica4;} {\f189\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica4Mono;}{\f190\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica5;}{\f191\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica5Mono;} {\f192\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica6;}{\f193\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica6Mono;}{\f194\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica7;} {\f195\fnil\fcharset2\fprq2{\*\panose 00000000000000000000}Mathematica7Mono;}{\f196\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Bookup;}{\f197\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Chessmaster9000;} {\f198\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}FigurineCB AriesSP;}{\f199\fnil\fcharset0\fprq1{\*\panose 00000000000000000000}FigurineCB LetterSP;}{\f200\froman\fcharset0\fprq2{\*\panose 00000000000000000000}FigurineCB TimeSP;} {\f201\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}DiagramTTFritz;}{\f202\fmodern\fcharset2\fprq1{\*\panose 00000000000000000000}FigurineCrrCB;}{\f203\froman\fcharset2\fprq2{\*\panose 00000000000000000000}FigurineTmsCB;} {\f204\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}HE_TERMINAL;}{\f205\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Digiface;}{\f206\fnil\fcharset0\fprq2{\*\panose 00000000000000000000}Sydnie;} {\f207\froman\fcharset177\fprq2{\*\panose 00000000000000000000}Times New Roman (Hebrew);}{\f208\froman\fcharset178\fprq2{\*\panose 00000000000000000000}Times New Roman (Arabic);} {\f209\froman\fcharset163\fprq2{\*\panose 00000000000000000000}Times New Roman (Vietnamese);}{\f210\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial (Hebrew);}{\f211\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial (Arabic);} {\f212\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial (Vietnamese);}{\f213\fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Courier New (Hebrew);}{\f214\fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Courier New (Arabic);} {\f215\fmodern\fcharset163\fprq1{\*\panose 00000000000000000000}Courier New (Vietnamese);}{\f216\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Helvetica (Hebrew){\*\falt Arial};} {\f217\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Helvetica (Arabic){\*\falt Arial};}{\f218\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Helvetica (Vietnamese){\*\falt Arial};} {\f219\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Hebrew);}{\f220\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Arabic);} {\f221\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Vietnamese);}{\f222\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Arial Unicode MS (Thai);} {\f223\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Tahoma (Hebrew);}{\f224\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Tahoma (Arabic);}{\f225\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Tahoma (Vietnamese);} {\f226\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Tahoma (Thai);}{\f227\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Lucida Sans Unicode (Hebrew);} {\f228\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Verdana (Vietnamese);}{\f229\froman\fcharset163\fprq2{\*\panose 00000000000000000000}Palatino Linotype (Vietnamese);} {\f230\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Hebrew);}{\f231\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Arabic);} {\f232\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Vietnames;}{\f233\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}Microsoft Sans Serif (Thai);} {\f234\fswiss\fcharset177\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Hebrew);}{\f235\fswiss\fcharset178\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Arabic);} {\f236\fswiss\fcharset163\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Vietnamese);}{\f237\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS (Thai);} {\f238\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Haettenschweiler CE;}{\f239\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Haettenschweiler Cyr;} {\f240\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Haettenschweiler Greek;}{\f241\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Haettenschweiler Tur;} {\f242\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Haettenschweiler Baltic;}{\f243\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}CA Chess Cyr;}{\f244\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}CA Chess Tur;} {\f245\fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}HE_TERMINAL CE;}{\f246\fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Cyr;}{\f247\fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Greek;} {\f248\fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Tur;}{\f249\fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}HE_TERMINAL Baltic;}{\f250\fnil\fcharset161\fprq2{\*\panose 00000000000000000000}Sydnie Greek;} {\f251\fmodern\fcharset128\fprq1{\*\panose 00000000000000000000}Gothic{\*\falt ?????};}{\f252\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}News Gothic MT;}{\f253\fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Lucida Handwriting;} {\f254\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Calisto MT;}{\f255\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Abadi MT Condensed Light;}{\f256\fdecor\fcharset0\fprq2{\*\panose 00000000000000000000}Westminster;} {\f257\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR-A II;}{\f258\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}OCR B MT;}{\f259\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II;} {\f260\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II Condensed;}{\f261\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}QuickType II Mono;}{\f262\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}QuickType II Pi;} {\f263\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Franklin Gothic Medium Cond Gre;}{\f264\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Franklin Gothic Medium Cond Bal;} {\f265\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Franklin Gothic Demi Cond Balti;}{\f266\froman\fcharset238\fprq0{\*\panose 00000000000000000000}?? CE;}{\f267\froman\fcharset162\fprq0{\*\panose 00000000000000000000}?? Tur;} {\f268\fswiss\fcharset0\fprq2{\*\panose 020b0600000000000000}Shogi;}{\f269\fnil\fcharset134\fprq2{\*\panose 00000000000000000000}SimSun-PUA;}{\f270\fnil\fcharset134\fprq2{\*\panose 00000000000000000000}@SimSun-PUA;} {\f271\froman\fcharset222\fprq2{\*\panose 00000000000000000000}AngsanaUPC;}{\f272\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}BrowalliaUPC;}{\f273\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Browallia New;} {\f274\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}CordiaUPC;}{\f275\froman\fcharset222\fprq2{\*\panose 00000000000000000000}DilleniaUPC;}{\f276\froman\fcharset222\fprq2{\*\panose 00000000000000000000}EucrosiaUPC;} {\f277\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}FreesiaUPC;}{\f278\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}IrisUPC;}{\f279\froman\fcharset222\fprq2{\*\panose 00000000000000000000}JasmineUPC;} {\f280\froman\fcharset222\fprq2{\*\panose 00000000000000000000}KodchiangUPC;}{\f281\fswiss\fcharset222\fprq2{\*\panose 00000000000000000000}LilyUPC;}{\f282\fnil\fcharset177\fprq2{\*\panose 00000000000000000000}Aharoni;} {\f283\fnil\fcharset177\fprq2{\*\panose 00000000000000000000}David;}{\f284\fnil\fcharset177\fprq2{\*\panose 00000000000000000000}David Transparent;}{\f285\fnil\fcharset177\fprq2{\*\panose 00000000000000000000}FrankRuehl;} {\f286\fnil\fcharset177\fprq2{\*\panose 00000000000000000000}Levenim MT;}{\f287\fnil\fcharset177\fprq2{\*\panose 00000000000000000000}Miriam;}{\f288\fnil\fcharset177\fprq2{\*\panose 00000000000000000000}Miriam Transparent;} {\f289\fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Miriam Fixed;}{\f290\fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Fixed Miriam Transparent;}{\f291\fnil\fcharset177\fprq2{\*\panose 00000000000000000000}Narkisim;} {\f292\fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Rod;}{\f293\fmodern\fcharset177\fprq1{\*\panose 00000000000000000000}Rod Transparent;}{\f294\fnil\fcharset178\fprq2{\*\panose 00000000000000000000}Traditional Arabic;} {\f295\fnil\fcharset178\fprq2{\*\panose 00000000000000000000}Arabic Transparent;}{\f296\fnil\fcharset178\fprq2{\*\panose 00000000000000000000}Andalus;}{\f297\fnil\fcharset178\fprq2{\*\panose 00000000000000000000}Simplified Arabic;} {\f298\fmodern\fcharset178\fprq1{\*\panose 00000000000000000000}Simplified Arabic Fixed;}{\f299\fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Freestyle Script;}{\f300\fscript\fcharset0\fprq2{\*\panose 00000000000000000000}Pristina;} {\f301\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Cambria;}{\f302\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Candara;}{\f303\fmodern\fcharset0\fprq1{\*\panose 00000000000000000000}Consolas;} {\f304\froman\fcharset0\fprq2{\*\panose 00000000000000000000}Constantia;}{\f305\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Corbel;}{\f306\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Segoe UI;} {\f307\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Calibri CE;}{\f308\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Calibri Cyr;}{\f309\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Calibri Greek;} {\f310\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Calibri Tur;}{\f311\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Calibri Baltic;}{\f312\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Cambria Math CE;} {\f313\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Cambria Math Cyr;}{\f314\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Cambria Math Greek;}{\f315\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Cambria Math Tur;} {\f316\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Cambria Math Baltic;}{\f317\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Century CE;}{\f318\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Century Cyr;} {\f319\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Century Greek;}{\f320\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Century Tur;}{\f321\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Century Baltic;} {\f322\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Arial Unicode MS CE;}{\f323\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Cyr;} {\f324\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Greek;}{\f325\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Tur;} {\f326\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Arial Unicode MS Baltic;}{\f327\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS CE;} {\f328\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Cyr;}{\f329\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Greek;} {\f330\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Tur;}{\f331\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}@Arial Unicode MS Baltic;}{\f332\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Book Antiqua CE;} {\f333\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Book Antiqua Cyr;}{\f334\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Book Antiqua Greek;}{\f335\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Book Antiqua Tur;} {\f336\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Book Antiqua Baltic;}{\f337\fscript\fcharset238\fprq2{\*\panose 00000000000000000000}Monotype Corsiva CE;}{\f338\fscript\fcharset204\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Cyr;} {\f339\fscript\fcharset161\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Greek;}{\f340\fscript\fcharset162\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Tur;} {\f341\fscript\fcharset186\fprq2{\*\panose 00000000000000000000}Monotype Corsiva Baltic;}{\f342\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Cambria CE;}{\f343\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Cambria Cyr;} {\f344\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Cambria Greek;}{\f345\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Cambria Tur;}{\f346\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Cambria Baltic;} {\f347\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Candara CE;}{\f348\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Candara Cyr;}{\f349\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Candara Greek;} {\f350\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Candara Tur;}{\f351\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Candara Baltic;}{\f352\fmodern\fcharset238\fprq1{\*\panose 00000000000000000000}Consolas CE;} {\f353\fmodern\fcharset204\fprq1{\*\panose 00000000000000000000}Consolas Cyr;}{\f354\fmodern\fcharset161\fprq1{\*\panose 00000000000000000000}Consolas Greek;}{\f355\fmodern\fcharset162\fprq1{\*\panose 00000000000000000000}Consolas Tur;} {\f356\fmodern\fcharset186\fprq1{\*\panose 00000000000000000000}Consolas Baltic;}{\f357\froman\fcharset238\fprq2{\*\panose 00000000000000000000}Constantia CE;}{\f358\froman\fcharset204\fprq2{\*\panose 00000000000000000000}Constantia Cyr;} {\f359\froman\fcharset161\fprq2{\*\panose 00000000000000000000}Constantia Greek;}{\f360\froman\fcharset162\fprq2{\*\panose 00000000000000000000}Constantia Tur;}{\f361\froman\fcharset186\fprq2{\*\panose 00000000000000000000}Constantia Baltic;} {\f362\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Corbel CE;}{\f363\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Corbel Cyr;}{\f364\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Corbel Greek;} {\f365\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Corbel Tur;}{\f366\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Corbel Baltic;}{\f367\fswiss\fcharset238\fprq2{\*\panose 00000000000000000000}Segoe UI CE;} {\f368\fswiss\fcharset204\fprq2{\*\panose 00000000000000000000}Segoe UI Cyr;}{\f369\fswiss\fcharset161\fprq2{\*\panose 00000000000000000000}Segoe UI Greek;}{\f370\fswiss\fcharset162\fprq2{\*\panose 00000000000000000000}Segoe UI Tur;} {\f371\fswiss\fcharset186\fprq2{\*\panose 00000000000000000000}Segoe UI Baltic;}{\f372\fnil\fcharset0\fprq2{\*\panose 00000504000000000004}Ultima;}{\f373\froman\fcharset238\fprq2 Times New Roman CE;}{\f374\froman\fcharset204\fprq2 Times New Roman Cyr;} {\f376\froman\fcharset161\fprq2 Times New Roman Greek;}{\f377\froman\fcharset162\fprq2 Times New Roman Tur;}{\f378\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f379\fswiss\fcharset238\fprq2 Arial CE;}{\f380\fswiss\fcharset204\fprq2 Arial Cyr;} {\f382\fswiss\fcharset161\fprq2 Arial Greek;}{\f383\fswiss\fcharset162\fprq2 Arial Tur;}{\f384\fswiss\fcharset186\fprq2 Arial Baltic;}{\f385\fmodern\fcharset238\fprq1 Courier New CE;}{\f386\fmodern\fcharset204\fprq1 Courier New Cyr;} {\f388\fmodern\fcharset161\fprq1 Courier New Greek;}{\f389\fmodern\fcharset162\fprq1 Courier New Tur;}{\f390\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f397\froman\fcharset238\fprq2 Times CE;}{\f398\froman\fcharset204\fprq2 Times Cyr;} {\f400\froman\fcharset161\fprq2 Times Greek;}{\f401\froman\fcharset162\fprq2 Times Tur;}{\f402\froman\fcharset186\fprq2 Times Baltic;}{\f403\fswiss\fcharset238\fprq2 Helvetica CE{\*\falt Arial};} {\f404\fswiss\fcharset204\fprq2 Helvetica Cyr{\*\falt Arial};}{\f406\fswiss\fcharset161\fprq2 Helvetica Greek{\*\falt Arial};}{\f407\fswiss\fcharset162\fprq2 Helvetica Tur{\*\falt Arial};}{\f408\fswiss\fcharset186\fprq2 Helvetica Baltic{\*\falt Arial};} {\f463\fswiss\fcharset238\fprq2 Tahoma CE;}{\f464\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f466\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f467\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f468\fswiss\fcharset186\fprq2 Tahoma Baltic;} {\f471\fnil\fcharset0\fprq2 SimSun;}{\f589\fmodern\fcharset238\fprq1 Lucida Console CE;}{\f590\fmodern\fcharset204\fprq1 Lucida Console Cyr;}{\f592\fmodern\fcharset161\fprq1 Lucida Console Greek;}{\f593\fmodern\fcharset162\fprq1 Lucida Console Tur;} {\f595\fswiss\fcharset238\fprq2 Lucida Sans Unicode CE;}{\f596\fswiss\fcharset204\fprq2 Lucida Sans Unicode Cyr;}{\f598\fswiss\fcharset161\fprq2 Lucida Sans Unicode Greek;}{\f599\fswiss\fcharset162\fprq2 Lucida Sans Unicode Tur;} {\f601\fswiss\fcharset238\fprq2 Verdana CE;}{\f602\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f604\fswiss\fcharset161\fprq2 Verdana Greek;}{\f605\fswiss\fcharset162\fprq2 Verdana Tur;}{\f606\fswiss\fcharset186\fprq2 Verdana Baltic;} {\f607\fswiss\fcharset238\fprq2 Arial Black CE;}{\f608\fswiss\fcharset204\fprq2 Arial Black Cyr;}{\f610\fswiss\fcharset161\fprq2 Arial Black Greek;}{\f611\fswiss\fcharset162\fprq2 Arial Black Tur;}{\f612\fswiss\fcharset186\fprq2 Arial Black Baltic;} {\f613\fscript\fcharset238\fprq2 Comic Sans MS CE;}{\f614\fscript\fcharset204\fprq2 Comic Sans MS Cyr;}{\f616\fscript\fcharset161\fprq2 Comic Sans MS Greek;}{\f617\fscript\fcharset162\fprq2 Comic Sans MS Tur;} {\f618\fscript\fcharset186\fprq2 Comic Sans MS Baltic;}{\f619\fswiss\fcharset238\fprq2 Impact CE;}{\f620\fswiss\fcharset204\fprq2 Impact Cyr;}{\f622\fswiss\fcharset161\fprq2 Impact Greek;}{\f623\fswiss\fcharset162\fprq2 Impact Tur;} {\f624\fswiss\fcharset186\fprq2 Impact Baltic;}{\f625\froman\fcharset238\fprq2 Georgia CE;}{\f626\froman\fcharset204\fprq2 Georgia Cyr;}{\f628\froman\fcharset161\fprq2 Georgia Greek;}{\f629\froman\fcharset162\fprq2 Georgia Tur;} {\f630\froman\fcharset186\fprq2 Georgia Baltic;}{\f631\fswiss\fcharset238\fprq2 Franklin Gothic Medium CE;}{\f632\fswiss\fcharset204\fprq2 Franklin Gothic Medium Cyr;}{\f634\fswiss\fcharset161\fprq2 Franklin Gothic Medium Greek;} {\f635\fswiss\fcharset162\fprq2 Franklin Gothic Medium Tur;}{\f636\fswiss\fcharset186\fprq2 Franklin Gothic Medium Baltic;}{\f637\froman\fcharset238\fprq2 Palatino Linotype CE;}{\f638\froman\fcharset204\fprq2 Palatino Linotype Cyr;} {\f640\froman\fcharset161\fprq2 Palatino Linotype Greek;}{\f641\froman\fcharset162\fprq2 Palatino Linotype Tur;}{\f642\froman\fcharset186\fprq2 Palatino Linotype Baltic;}{\f643\fswiss\fcharset238\fprq2 Trebuchet MS CE;} {\f644\fswiss\fcharset204\fprq2 Trebuchet MS Cyr;}{\f646\fswiss\fcharset161\fprq2 Trebuchet MS Greek;}{\f647\fswiss\fcharset162\fprq2 Trebuchet MS Tur;}{\f648\fswiss\fcharset186\fprq2 Trebuchet MS Baltic;}{\f703\froman\fcharset238\fprq2 Sylfaen CE;} {\f704\froman\fcharset204\fprq2 Sylfaen Cyr;}{\f706\froman\fcharset161\fprq2 Sylfaen Greek;}{\f707\froman\fcharset162\fprq2 Sylfaen Tur;}{\f708\froman\fcharset186\fprq2 Sylfaen Baltic;}{\f709\fswiss\fcharset238\fprq2 Microsoft Sans Serif CE;} {\f710\fswiss\fcharset204\fprq2 Microsoft Sans Serif Cyr;}{\f712\fswiss\fcharset161\fprq2 Microsoft Sans Serif Greek;}{\f713\fswiss\fcharset162\fprq2 Microsoft Sans Serif Tur;}{\f714\fswiss\fcharset186\fprq2 Microsoft Sans Serif Baltic;} {\f715\fswiss\fcharset238\fprq2 Arial Narrow CE;}{\f716\fswiss\fcharset204\fprq2 Arial Narrow Cyr;}{\f718\fswiss\fcharset161\fprq2 Arial Narrow Greek;}{\f719\fswiss\fcharset162\fprq2 Arial Narrow Tur;}{\f720\fswiss\fcharset186\fprq2 Arial Narrow Baltic;} {\f733\fscript\fcharset238\fprq2 Mistral CE;}{\f734\fscript\fcharset204\fprq2 Mistral Cyr;}{\f736\fscript\fcharset161\fprq2 Mistral Greek;}{\f737\fscript\fcharset162\fprq2 Mistral Tur;}{\f738\fscript\fcharset186\fprq2 Mistral Baltic;} {\f805\fswiss\fcharset238\fprq2 Franklin Gothic Book CE;}{\f806\fswiss\fcharset204\fprq2 Franklin Gothic Book Cyr;}{\f808\fswiss\fcharset161\fprq2 Franklin Gothic Book Greek;}{\f809\fswiss\fcharset162\fprq2 Franklin Gothic Book Tur;} {\f810\fswiss\fcharset186\fprq2 Franklin Gothic Book Baltic;}{\f811\fswiss\fcharset238\fprq2 Franklin Gothic Demi CE;}{\f812\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cyr;}{\f814\fswiss\fcharset161\fprq2 Franklin Gothic Demi Greek;} {\f815\fswiss\fcharset162\fprq2 Franklin Gothic Demi Tur;}{\f816\fswiss\fcharset186\fprq2 Franklin Gothic Demi Baltic;}{\f817\fswiss\fcharset238\fprq2 Franklin Gothic Medium Cond CE;}{\f818\fswiss\fcharset204\fprq2 Franklin Gothic Medium Cond Cyr;} {\f820\fswiss\fcharset161\fprq2 Franklin Gothic Medium Cond Greek;}{\f821\fswiss\fcharset162\fprq2 Franklin Gothic Medium Cond Tur;}{\f822\fswiss\fcharset186\fprq2 Franklin Gothic Medium Cond Baltic;} {\f823\fswiss\fcharset238\fprq2 Franklin Gothic Heavy CE;}{\f824\fswiss\fcharset204\fprq2 Franklin Gothic Heavy Cyr;}{\f826\fswiss\fcharset161\fprq2 Franklin Gothic Heavy Greek;}{\f827\fswiss\fcharset162\fprq2 Franklin Gothic Heavy Tur;} {\f828\fswiss\fcharset186\fprq2 Franklin Gothic Heavy Baltic;}{\f829\fswiss\fcharset238\fprq2 Franklin Gothic Demi Cond CE;}{\f830\fswiss\fcharset204\fprq2 Franklin Gothic Demi Cond Cyr;}{\f832\fswiss\fcharset161\fprq2 Franklin Gothic Demi Cond Greek;} {\f833\fswiss\fcharset162\fprq2 Franklin Gothic Demi Cond Tur;}{\f834\fswiss\fcharset186\fprq2 Franklin Gothic Demi Cond Baltic;}{\f841\fswiss\fcharset238\fprq2 Century Gothic CE;}{\f842\fswiss\fcharset204\fprq2 Century Gothic Cyr;} {\f844\fswiss\fcharset161\fprq2 Century Gothic Greek;}{\f845\fswiss\fcharset162\fprq2 Century Gothic Tur;}{\f846\fswiss\fcharset186\fprq2 Century Gothic Baltic;}{\f937\fswiss\fcharset238\fprq2 MS Reference Sans Serif CE;} {\f938\fswiss\fcharset204\fprq2 MS Reference Sans Serif Cyr;}{\f940\fswiss\fcharset161\fprq2 MS Reference Sans Serif Greek;}{\f941\fswiss\fcharset162\fprq2 MS Reference Sans Serif Tur;}{\f942\fswiss\fcharset186\fprq2 MS Reference Sans Serif Baltic;} {\f961\froman\fcharset238\fprq2 Bookman Old Style CE;}{\f962\froman\fcharset204\fprq2 Bookman Old Style Cyr;}{\f964\froman\fcharset161\fprq2 Bookman Old Style Greek;}{\f965\froman\fcharset162\fprq2 Bookman Old Style Tur;} {\f966\froman\fcharset186\fprq2 Bookman Old Style Baltic;}{\f973\froman\fcharset238\fprq2 Garamond CE;}{\f974\froman\fcharset204\fprq2 Garamond Cyr;}{\f976\froman\fcharset161\fprq2 Garamond Greek;}{\f977\froman\fcharset162\fprq2 Garamond Tur;} {\f978\froman\fcharset186\fprq2 Garamond Baltic;}{\f1013\fnil\fcharset162\fprq2 Superchess Tur;}{\f1029\fmodern\fcharset0\fprq1 MS Mincho;}{\f1027\fmodern\fcharset238\fprq1 MS Mincho CE;}{\f1028\fmodern\fcharset204\fprq1 MS Mincho Cyr;} {\f1030\fmodern\fcharset161\fprq1 MS Mincho Greek;}{\f1031\fmodern\fcharset162\fprq1 MS Mincho Tur;}{\f1032\fmodern\fcharset186\fprq1 MS Mincho Baltic;}{\f1035\fmodern\fcharset0\fprq1 @MS Mincho;}{\f1033\fmodern\fcharset238\fprq1 @MS Mincho CE;} {\f1034\fmodern\fcharset204\fprq1 @MS Mincho Cyr;}{\f1036\fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f1037\fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f1038\fmodern\fcharset186\fprq1 @MS Mincho Baltic;}{\f1041\froman\fcharset0\fprq2 MS PMincho;} {\f1039\froman\fcharset238\fprq2 MS PMincho CE;}{\f1040\froman\fcharset204\fprq2 MS PMincho Cyr;}{\f1042\froman\fcharset161\fprq2 MS PMincho Greek;}{\f1043\froman\fcharset162\fprq2 MS PMincho Tur;}{\f1044\froman\fcharset186\fprq2 MS PMincho Baltic;} {\f1047\froman\fcharset0\fprq2 @MS PMincho;}{\f1045\froman\fcharset238\fprq2 @MS PMincho CE;}{\f1046\froman\fcharset204\fprq2 @MS PMincho Cyr;}{\f1048\froman\fcharset161\fprq2 @MS PMincho Greek;}{\f1049\froman\fcharset162\fprq2 @MS PMincho Tur;} {\f1050\froman\fcharset186\fprq2 @MS PMincho Baltic;}{\f1053\fmodern\fcharset0\fprq1 MS Gothic;}{\f1051\fmodern\fcharset238\fprq1 MS Gothic CE;}{\f1052\fmodern\fcharset204\fprq1 MS Gothic Cyr;}{\f1054\fmodern\fcharset161\fprq1 MS Gothic Greek;} {\f1055\fmodern\fcharset162\fprq1 MS Gothic Tur;}{\f1056\fmodern\fcharset186\fprq1 MS Gothic Baltic;}{\f1059\fmodern\fcharset0\fprq1 @MS Gothic;}{\f1057\fmodern\fcharset238\fprq1 @MS Gothic CE;}{\f1058\fmodern\fcharset204\fprq1 @MS Gothic Cyr;} {\f1060\fmodern\fcharset161\fprq1 @MS Gothic Greek;}{\f1061\fmodern\fcharset162\fprq1 @MS Gothic Tur;}{\f1062\fmodern\fcharset186\fprq1 @MS Gothic Baltic;}{\f1065\fswiss\fcharset0\fprq2 MS PGothic;}{\f1063\fswiss\fcharset238\fprq2 MS PGothic CE;} {\f1064\fswiss\fcharset204\fprq2 MS PGothic Cyr;}{\f1066\fswiss\fcharset161\fprq2 MS PGothic Greek;}{\f1067\fswiss\fcharset162\fprq2 MS PGothic Tur;}{\f1068\fswiss\fcharset186\fprq2 MS PGothic Baltic;}{\f1071\fswiss\fcharset0\fprq2 @MS PGothic;} {\f1069\fswiss\fcharset238\fprq2 @MS PGothic CE;}{\f1070\fswiss\fcharset204\fprq2 @MS PGothic Cyr;}{\f1072\fswiss\fcharset161\fprq2 @MS PGothic Greek;}{\f1073\fswiss\fcharset162\fprq2 @MS PGothic Tur;}{\f1074\fswiss\fcharset186\fprq2 @MS PGothic Baltic;} {\f1077\fswiss\fcharset0\fprq2 MS UI Gothic;}{\f1075\fswiss\fcharset238\fprq2 MS UI Gothic CE;}{\f1076\fswiss\fcharset204\fprq2 MS UI Gothic Cyr;}{\f1078\fswiss\fcharset161\fprq2 MS UI Gothic Greek;}{\f1079\fswiss\fcharset162\fprq2 MS UI Gothic Tur;} {\f1080\fswiss\fcharset186\fprq2 MS UI Gothic Baltic;}{\f1083\fswiss\fcharset0\fprq2 @MS UI Gothic;}{\f1081\fswiss\fcharset238\fprq2 @MS UI Gothic CE;}{\f1082\fswiss\fcharset204\fprq2 @MS UI Gothic Cyr;} {\f1084\fswiss\fcharset161\fprq2 @MS UI Gothic Greek;}{\f1085\fswiss\fcharset162\fprq2 @MS UI Gothic Tur;}{\f1086\fswiss\fcharset186\fprq2 @MS UI Gothic Baltic;}{\f1089\fswiss\fcharset0\fprq2 Gulim;}{\f1087\fswiss\fcharset238\fprq2 Gulim CE;} {\f1088\fswiss\fcharset204\fprq2 Gulim Cyr;}{\f1090\fswiss\fcharset161\fprq2 Gulim Greek;}{\f1091\fswiss\fcharset162\fprq2 Gulim Tur;}{\f1092\fswiss\fcharset186\fprq2 Gulim Baltic;}{\f1095\fswiss\fcharset0\fprq2 @Gulim;} {\f1093\fswiss\fcharset238\fprq2 @Gulim CE;}{\f1094\fswiss\fcharset204\fprq2 @Gulim Cyr;}{\f1096\fswiss\fcharset161\fprq2 @Gulim Greek;}{\f1097\fswiss\fcharset162\fprq2 @Gulim Tur;}{\f1098\fswiss\fcharset186\fprq2 @Gulim Baltic;} {\f1101\fmodern\fcharset0\fprq1 GulimChe;}{\f1099\fmodern\fcharset238\fprq1 GulimChe CE;}{\f1100\fmodern\fcharset204\fprq1 GulimChe Cyr;}{\f1102\fmodern\fcharset161\fprq1 GulimChe Greek;}{\f1103\fmodern\fcharset162\fprq1 GulimChe Tur;} {\f1104\fmodern\fcharset186\fprq1 GulimChe Baltic;}{\f1107\fmodern\fcharset0\fprq1 @GulimChe;}{\f1105\fmodern\fcharset238\fprq1 @GulimChe CE;}{\f1106\fmodern\fcharset204\fprq1 @GulimChe Cyr;}{\f1108\fmodern\fcharset161\fprq1 @GulimChe Greek;} {\f1109\fmodern\fcharset162\fprq1 @GulimChe Tur;}{\f1110\fmodern\fcharset186\fprq1 @GulimChe Baltic;}{\f1113\fswiss\fcharset0\fprq2 Dotum;}{\f1111\fswiss\fcharset238\fprq2 Dotum CE;}{\f1112\fswiss\fcharset204\fprq2 Dotum Cyr;} {\f1114\fswiss\fcharset161\fprq2 Dotum Greek;}{\f1115\fswiss\fcharset162\fprq2 Dotum Tur;}{\f1116\fswiss\fcharset186\fprq2 Dotum Baltic;}{\f1119\fswiss\fcharset0\fprq2 @Dotum;}{\f1117\fswiss\fcharset238\fprq2 @Dotum CE;} {\f1118\fswiss\fcharset204\fprq2 @Dotum Cyr;}{\f1120\fswiss\fcharset161\fprq2 @Dotum Greek;}{\f1121\fswiss\fcharset162\fprq2 @Dotum Tur;}{\f1122\fswiss\fcharset186\fprq2 @Dotum Baltic;}{\f1125\fmodern\fcharset0\fprq1 DotumChe;} {\f1123\fmodern\fcharset238\fprq1 DotumChe CE;}{\f1124\fmodern\fcharset204\fprq1 DotumChe Cyr;}{\f1126\fmodern\fcharset161\fprq1 DotumChe Greek;}{\f1127\fmodern\fcharset162\fprq1 DotumChe Tur;}{\f1128\fmodern\fcharset186\fprq1 DotumChe Baltic;} {\f1131\fmodern\fcharset0\fprq1 @DotumChe;}{\f1129\fmodern\fcharset238\fprq1 @DotumChe CE;}{\f1130\fmodern\fcharset204\fprq1 @DotumChe Cyr;}{\f1132\fmodern\fcharset161\fprq1 @DotumChe Greek;}{\f1133\fmodern\fcharset162\fprq1 @DotumChe Tur;} {\f1134\fmodern\fcharset186\fprq1 @DotumChe Baltic;}{\f1137\froman\fcharset0\fprq2 Batang;}{\f1135\froman\fcharset238\fprq2 Batang CE;}{\f1136\froman\fcharset204\fprq2 Batang Cyr;}{\f1138\froman\fcharset161\fprq2 Batang Greek;} {\f1139\froman\fcharset162\fprq2 Batang Tur;}{\f1140\froman\fcharset186\fprq2 Batang Baltic;}{\f1143\froman\fcharset0\fprq2 @Batang;}{\f1141\froman\fcharset238\fprq2 @Batang CE;}{\f1142\froman\fcharset204\fprq2 @Batang Cyr;} {\f1144\froman\fcharset161\fprq2 @Batang Greek;}{\f1145\froman\fcharset162\fprq2 @Batang Tur;}{\f1146\froman\fcharset186\fprq2 @Batang Baltic;}{\f1149\fmodern\fcharset0\fprq1 BatangChe;}{\f1147\fmodern\fcharset238\fprq1 BatangChe CE;} {\f1148\fmodern\fcharset204\fprq1 BatangChe Cyr;}{\f1150\fmodern\fcharset161\fprq1 BatangChe Greek;}{\f1151\fmodern\fcharset162\fprq1 BatangChe Tur;}{\f1152\fmodern\fcharset186\fprq1 BatangChe Baltic;}{\f1155\fmodern\fcharset0\fprq1 @BatangChe;} {\f1153\fmodern\fcharset238\fprq1 @BatangChe CE;}{\f1154\fmodern\fcharset204\fprq1 @BatangChe Cyr;}{\f1156\fmodern\fcharset161\fprq1 @BatangChe Greek;}{\f1157\fmodern\fcharset162\fprq1 @BatangChe Tur;}{\f1158\fmodern\fcharset186\fprq1 @BatangChe Baltic;} {\f1161\froman\fcharset0\fprq2 Gungsuh;}{\f1159\froman\fcharset238\fprq2 Gungsuh CE;}{\f1160\froman\fcharset204\fprq2 Gungsuh Cyr;}{\f1162\froman\fcharset161\fprq2 Gungsuh Greek;}{\f1163\froman\fcharset162\fprq2 Gungsuh Tur;} {\f1164\froman\fcharset186\fprq2 Gungsuh Baltic;}{\f1167\froman\fcharset0\fprq2 @Gungsuh;}{\f1165\froman\fcharset238\fprq2 @Gungsuh CE;}{\f1166\froman\fcharset204\fprq2 @Gungsuh Cyr;}{\f1168\froman\fcharset161\fprq2 @Gungsuh Greek;} {\f1169\froman\fcharset162\fprq2 @Gungsuh Tur;}{\f1170\froman\fcharset186\fprq2 @Gungsuh Baltic;}{\f1173\fmodern\fcharset0\fprq1 GungsuhChe;}{\f1171\fmodern\fcharset238\fprq1 GungsuhChe CE;}{\f1172\fmodern\fcharset204\fprq1 GungsuhChe Cyr;} {\f1174\fmodern\fcharset161\fprq1 GungsuhChe Greek;}{\f1175\fmodern\fcharset162\fprq1 GungsuhChe Tur;}{\f1176\fmodern\fcharset186\fprq1 GungsuhChe Baltic;}{\f1179\fmodern\fcharset0\fprq1 @GungsuhChe;}{\f1177\fmodern\fcharset238\fprq1 @GungsuhChe CE;} {\f1178\fmodern\fcharset204\fprq1 @GungsuhChe Cyr;}{\f1180\fmodern\fcharset161\fprq1 @GungsuhChe Greek;}{\f1181\fmodern\fcharset162\fprq1 @GungsuhChe Tur;}{\f1182\fmodern\fcharset186\fprq1 @GungsuhChe Baltic;}{\f1185\fnil\fcharset0\fprq2 @SimSun;} {\f1191\fmodern\fcharset0\fprq1 NSimSun;}{\f1197\fmodern\fcharset0\fprq1 @NSimSun;}{\f1215\fmodern\fcharset0\fprq1 MingLiU;}{\f1221\fmodern\fcharset0\fprq1 @MingLiU;}{\f1227\froman\fcharset0\fprq2 PMingLiU;}{\f1233\froman\fcharset0\fprq2 @PMingLiU;} {\f1275\fswiss\fcharset0\fprq2 Arial Unicode MS;}{\f1293\fswiss\fcharset0\fprq2 @Arial Unicode MS;}{\f1981\fswiss\fcharset238\fprq2 Shogi CE;}{\f1982\fswiss\fcharset204\fprq2 Shogi Cyr;}{\f1984\fswiss\fcharset161\fprq2 Shogi Greek;} {\f1985\fswiss\fcharset162\fprq2 Shogi Tur;}{\f1986\fswiss\fcharset186\fprq2 Shogi Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0; \red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid \snext0 Normal;}{\s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\adjustright \b\f5\cgrid \sbasedon0 \snext26 heading 1;}{\s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \b\f5\fs20\cgrid \sbasedon0 \snext0 heading 2;}{\s3\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext0 heading 3;}{\s4\fi-245\li360\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \f11\fs20\cgrid \sbasedon2 \snext4 heading 4;}{\s5\li120\sb80\sl-240\slmult0\keepn\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid \sbasedon0 \snext0 heading 5;}{\*\cs10 \additive Default Paragraph Font;}{\*\cs15 \additive \f5\fs18\up6\lang1033 \sbasedon10 footnote reference;}{ \s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext0 footnote text;}{\s17\li360\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext0 Normal Indent;}{\s18\fi-240\li600\sb60\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid \snext18 Jli;}{\s19\li120\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid \snext19 Ex;}{\s20\li120\sb160\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext29 Sa1;}{\s21\fi-240\li360\sl-240\slmult0\nowidctlpar\tx360\adjustright \f5\fs20\cgrid \snext22 Lb1;}{\s22\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\tx360\adjustright \f5\fs20\cgrid \snext22 Lb2;}{\s23\li360\sb60\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid \snext22 Lp1;}{\s24\fi-1800\li1920\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \tx1920\adjustright \b\f5\fs20\cgrid \snext25 Th;}{ \s25\fi-1800\li1920\sb60\sl-240\slmult0\nowidctlpar\tx1920\adjustright \f5\fs20\cgrid \snext25 Tp;}{\s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext0 Normal 2;}{\s27\li120\sb120\sa120\nowidctlpar\adjustright \f5\fs20\cgrid \snext0 bitmap;}{\s28\li120\sb120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext29 Sa2;}{\s29\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \snext29 Jl;}{\s30\li120\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \snext30 *body;}{\s31\li120\sa60\nowidctlpar\adjustright \b\f151\fs20\cgrid \snext31 *heading;}{\s32\li120\sa60\sl-240\slmult0\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext32 para;}{\s33\fi-280\li400\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext33 jump;}{\s34\fi-280\li400\sa60\nowidctlpar\tx400\adjustright \f151\fs20\cgrid \sbasedon30 \snext34 list bullet;}{\s35\fi-280\li600\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext35 jump indent;}{ \s36\li120\sa60\sl-40\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \f151\fs20\cgrid \sbasedon30 \snext36 table rule;}{\s37\fi-280\li400\sa60\nowidctlpar\tqr\tx280\tx400\adjustright \f151\fs20\cgrid \sbasedon30 \snext37 list number;}{\s38\li120\sb100\sa60\nowidctlpar\adjustright \b\f151\fs20\cgrid \sbasedon31 \snext33 see also;}{\s39\li400\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext39 para indent;}{\s40\fi-1800\li1920\nowidctlpar \tx1920\adjustright \b\f151\fs20\cgrid \sbasedon31 \snext36 table head;}{\s41\fi-1800\li1920\sa60\nowidctlpar\tx1920\adjustright \f151\fs20\cgrid \sbasedon30 \snext41 table text;}{\s42\li120\sb120\sa60\nowidctlpar\adjustright \f151\fs20\cgrid \sbasedon30 \snext35 see also 2;}{\s43\li120\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs20\cgrid \sbasedon30 \snext43 code;}{\s44\sl-120\slmult0\nowidctlpar\adjustright \f152\fs20\cgrid \snext32 *spacing;}{\s45\sl-120\slmult0 \nowidctlpar\adjustright \f152\fs20\cgrid \sbasedon44 \snext45 s6;}{\s46\qj\li360\nowidctlpar\adjustright \f5\cgrid \sbasedon0 \snext46 Help Text;}{\s47\li115\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \f11\fs20\cgrid \sbasedon24 \snext25 Th2;}{\s48\li115\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \adjustright \b\f11\fs16\cgrid \sbasedon24 \snext25 Th3;}{\s49\li115\sb200\sl-240\slmult0 \nowidctlpar\adjustright \f11\fs20\cgrid \sbasedon0 \snext0 Normal 3;}{\s50\fi-1800\li1915\sb120\sa40\sl-240\slmult0\nowidctlpar\brdrb\brdrs\brdrw15\brsp20 \brdrbtw\brdrs\brdrw15\brsp20 \tx1915\adjustright \b\f11\fs20\cgrid \sbasedon0 \snext51 Thh;}{ \s51\fi-1800\li1915\sb60\sl-240\slmult0\nowidctlpar\tx1915\adjustright \f11\fs20\cgrid \sbasedon0 \snext51 Tph;}{\s52\li288\ri-432\sb80\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\adjustright \f5\cgrid \sbasedon0 \snext52 unixman1;}{ \s53\li1440\ri-432\sb80\sa240\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\adjustright \f5\cgrid \sbasedon0 \snext53 unixman2;}{\s54\li115\ri-432\sb80\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\adjustright \f5\cgrid \sbasedon52 \snext54 unixman0;}{ \s55\li288\ri-432\sb80\sa240\sl-240\slmult0\nowidctlpar\tx288\tx864\tx1440\adjustright \f5\cgrid \sbasedon52 \snext55 unixman1a;}{\s56\li115\sa60\sl-240\slmult0\nowidctlpar\adjustright \b\f5\fs20\cgrid \sbasedon2 \snext56 heading 2a;}{ \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext57 endnote text;}{\*\cs58 \additive \super \sbasedon10 endnote reference;}{\*\cs59 \additive \ul\cf2 \sbasedon10 Hyperlink;}{\*\cs60 \additive \ul\cf12 \sbasedon10 FollowedHyperlink;}{\s61\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \cbpat9 \f15\fs20\cgrid \sbasedon0 \snext61 Document Map;}{\s62\li480\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid \sbasedon0 \snext62 Body Text 2;}{ \s63\fi-720\li1440\sb80\sl-240\slmult0\nowidctlpar\adjustright \f2\fs20\cgrid \sbasedon0 \snext63 Body Text Indent 2;}{\s64\li120\sb80\sl-240\slmult0\nowidctlpar\tqc\tx4320\tqr\tx8640\adjustright \f5\fs20\cgrid \sbasedon0 \snext64 header;}{ \s65\li120\sb80\sl-240\slmult0\nowidctlpar\tqc\tx4320\tqr\tx8640\adjustright \f5\fs20\cgrid \sbasedon0 \snext65 footer;}{\s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid \sbasedon0 \snext66 Body Text Indent 3;}}{\*\listtable {\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid74976790}{\list\listtemplateid67698703 \listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid349260549}{\list\listtemplateid67698689\listsimple{\listlevel \levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid470094698}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0 \leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid640160996}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0 \levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid768165129}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1 \levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid781152802}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0 {\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid903878531}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1002394966}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext \'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1021513731}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers \'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1099714113}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360 \jclisttab\tx360 }{\listname ;}\listid1240552867}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1332292840}{\list\listtemplateid67698703\listsimple{\listlevel\levelnfc0\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1358388700} {\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1405952460} {\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid2025940873} {\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid2044863907}} {\*\listoverridetable{\listoverride\listid2025940873\listoverridecount0\ls1}{\listoverride\listid1002394966\listoverridecount0\ls2}{\listoverride\listid470094698\listoverridecount0\ls3}{\listoverride\listid1099714113\listoverridecount0\ls4} {\listoverride\listid1358388700\listoverridecount0\ls5}{\listoverride\listid2044863907\listoverridecount0\ls6}{\listoverride\listid640160996\listoverridecount0\ls7}{\listoverride\listid768165129\listoverridecount0\ls8}{\listoverride\listid903878531 \listoverridecount0\ls9}{\listoverride\listid781152802\listoverridecount0\ls10}{\listoverride\listid1240552867\listoverridecount0\ls11}{\listoverride\listid640160996\listoverridecount0\ls12}{\listoverride\listid349260549\listoverridecount0\ls13} {\listoverride\listid1021513731\listoverridecount0\ls14}{\listoverride\listid1405952460\listoverridecount0\ls15}{\listoverride\listid1332292840\listoverridecount0\ls16}}{\*\revtbl {Unknown;}{Tim Mann;}}{\info{\title + $ # KWinBoard: Chessboard for Windows}{\author TRIO} {\operator hgm}{\creatim\yr2009\mo9\dy9\hr14\min34}{\revtim\yr2011\mo6\dy9\hr9\min6}{\printim\yr1997\mo4\dy22\hr23\min5}{\version34}{\edmins860}{\nofpages90}{\nofwords22792}{\nofchars129918}{\*\company DEC SRC}{\nofcharsws159548}{\vern73}} \margl1417\margr1417\margt1417\margb1417 \widowctrl\endnotes\aendnotes\hyphhotz425\ftnnrlc\aftnnar\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\viewkind4\viewscale100 \fet1{\*\aftnsep \pard\plain \li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\chftnsep \par }}\sectd \linex0\headery709\footery709\colsx709\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4 \pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (} {\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid { \cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super $}{\f1 Contents}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Contents}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Contents}}}{\i\f1\fs32 WinBoard}{\f1\fs32 : Chessboard for Windows \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \par }\pard\plain \s2\li119\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1\cf11 An updated description with the release of version 4.2010xxxx. \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\f1\cf11 \tab \tab \tab \ldblquote For the ultimate WinBoard Experience\rdblquote \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 New features since WinBoard 4.2.7 that are implemented in Allessandro Scotti\rquote s Winboard_x are highlighted in red. }{\f1\cf11 New features in the WinBoard 4.3.xx series by H.G. Muller are highlighted in green}{\f1\cf2 , that in the unified 4.4 series in blue. }{\f1\cf5 Additions for the 4.5 series are in purple}{\f1\cf11 .}{\f1 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Description}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Description}}}{\f1 Description \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\i\f1 WinBoard}{\f1 is a graphical user interface for chess. It displays a chessboa rd on the screen, accepts moves made with the mouse, and loads and saves game files in standard chess notation. WinBoard serves as a front-end for many different services, including: \par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard\plain \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls3\adjustright \f5\fs20\cgrid {\b\i\f1 Chess engines}{\f1 that run on your PC. You can play a game against an engine, set up arbitrary positions, force variations, or watch a game between two engines. }{\i\f1\cf11 Fairy-Max}{\f1 is supplied with WinBoard }{\f1\cf11 4.3.14}{\f1 , and over 100 other free chess engines are available separately. Of these, Crafty is the most popular. See }{\f1\uldb Installing Chess Engines}{\v\f1 InstallingChessEngines}{\f1 for instructions on installing additional chess engines. \par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls3\adjustright {\b\i\f1 Chess servers}{\b\f1 }{\f1 on the Internet. You can play against other Internet Chess Server (ICS) users, observe games they are playing, review games in the ICS libraries, chat, }{\f1\cf2 analyze observed games with a chess program}{\f1 , and more. WinBoard can also be used to run an automated computer player on the ICS, but this feature is for advanced users only and is subject to some caveats; see the separate file zippy.README for information. \par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls3\adjustright {\b\i\f1 The Web}{\f1 and your own saved games. You can use WinBoard as a helper application to view files in your Web browser or the Explorer. You can use it to keep track of email postal games, browse games off the net, or review games you have saved. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Getting Started}} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ GettingStarted}}}{\f1 Getting Started \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBo ard starts up in one of three major modes: chess engine mode, ICS client mode, or game viewer mode. You cannot change between ICS and other modes while WinBoard is running, but you can access all the game viewer features directly from the other two modes. You can switch from game viewer mode to chess engine mode by loading an engine through the Load Engine menu dialog, while WinBoard might make the reverse switch spontaneously if a specified engine is not valid. Also, you can start WinBoard several times t o get multiple chessboard windows running in any combination of modes. \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { You will usually run WinBoard by choosing an item from the Windows Start menu that runs it in the mode you want. If you just double-click on WinBoard.exe, you get a startup dialog asking which mode you want. If you choose chess engine mode, you can then select from the installed engines; if you choose ICS client mode, you can then select from a list of known chess servers. More advanced users can }{\uldb customize}{\v icsNames}{ these lists or type in WinBoard }{\uldb command line options}{\v Options}{ directly. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 After starting WinBoard, you can make }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super K}{\f1 move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 move}}}{\f1 moves in several different ways. To move by dragging, press the left mouse button while the cursor is on one of your pieces, move the cursor to another square, and releas e the button. You can also move by clicking the left mouse button once (press and release) over one of your pieces, moving the cursor to another square, and clicking again. You drop new pieces on the board (when applicable) }{\f1\cf2 by similarly dragging them from the holdings displayed next to the board}{\f1\cf5 . The old way of selecting them from a context menu can still be enabled by an option. In that case,}{\f1 press the right mouse button over a square to bring up the menu; no menu will come up in modes where dropping a new piece is not permitted. }{\f1\cf5 Normally pressing the right mouse button will enable you to see the position at the end of the PV given by an active engine as thinking output. Moving the mouse with the right button kept down will allow you to step through this PV.}{\f1\cf2 }{\f1 You can also make moves by typing them in standard algebraic chess notation. Either a dialog box will pop up for you to type into, or in ICS mode, your typing will be redirected into the ICS interaction window. }{\f1\cf2 In the dialog box you can also type a move number, to call up the position of the current game after that move in the display, or (in Edit Position mode) type a FEN. \par }{\f1 When WinBoard}{\i\f1 }{\f1 is iconized, its }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 icon}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 icon}}}{\f1 icon is a white knight if it is White's turn to move, a black knight if it is Black's turn. \par }{\f1\cf5 Next to the main window, WinBoard does use many auxiliary windows for dedicated tasks. We mention the Engine-Output window (formerly analysis window) for a better display of the thinking output of engines (which you can then right-click to play out the selected P V in the board window), the Game-History window (where the game is displayed in SAN, and where you can double-click a move to call up the corresponding position in the board window), the Evaluation Graph window (where you see a graph of engine scores vs. m o ve number, and can call up the corresponding position in the board window by clicking a point on the graph), the Comment popup (where you can right-click variation comments to play them out on the main board, or add and edit comments), the Game-List windo w (where you see an overview of all games in a game file you loaded, and can select a game for loading by clicking on it, and limit the list to games you are interested in by filtering). These auxiliary windows can be opened or closed as the need arises. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 Additional Information \par }\pard\plain \s29\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\uldb Menus}{\v\f1\uldb Menus}{\f1\uldb \par Shortcut Buttons}{\v\f1\uldb Buttons}{\f1\uldb \par Command Line Options}{\v\f1 Options}{\f1 \par }{\f1\uldb Initialization Files}{\v\f1\uldb Files}{\f1\uldb \par Installing Chess Engines}{\v\f1\uldb InstallingChessEngines}{\f1\uldb \par Firewalls}{\v\f1 Firewalls}{\f1 \par }{\f1\uldb Limitations}{\v\f1 Limitations}{\f1\uldb \par Authors}{\v\f1 Authors}{\f1 \par }{\f1\uldb Copyright}{\v\f1 Copyright}{\f1 \par }{\f1\uldb Frequently Asked Questions}{\v\f1 !ExecFile(FAQ.html)}{\f1 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Menus}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Menus}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super $}{\f1 Menus}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 MENUS \par }\pard\plain \s29\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\uldb File Menu}{\v\f1 FileMenu}{\f1 \par }{\f1\uldb Edit Menu}{\v\f1 EditMenu}{\f1 \par }{\f1\uldb View Menu}{\v\f1 ViewMenu}{\f1 \par }{\f1\uldb Mode Menu}{\v\f1 ModeMenu}{\f1 \par }{\f1\uldb Action Menu}{\v\f1 ActionMenu}{\f1 \par }{\f1\uldb Engine Menu}{\v\f1 EngineMenu}{\f1 \par }{\f1\uldb Options Menu}{\v\f1 OptionsMenu}{\f1 \par }{\f1\uldb Help Menu}{\v\f1 HelpMenu}{\f1 \par }{\f1\uldb ICS Interaction Context Menu}{\v\f1 ICSInteractionContextMenu}{\f1 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 File Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 FileMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super $}{\f1 File Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs18\up6 }{\f1\fs20 File Menu \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 New Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 NewGame}}}{\f1\cf6 New Game (former }{\f1 Reset}{\f1\cf6 ) \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Resets WinBoard and the chess engine (if any) to the beginning of a new chess game. In Internet Chess Server mode, clears the current state of WinBoard, then resynchronizes with ICS by sending a }{\b\f1 refresh }{\f1 command. If you want to stop playing, observing, or examining a game on ICS, use an appropriate command from the }{\f1\uldb Action}{\v\f1 ActionMenu}{\f1 menu, not }{\f1\cf6 New Game}{\f1 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 New Shuffle Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 NewShuffleGame}}}{\f1\cf11 New Shuffle Game \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Brings you to a dialog box where you can enter the number of an opening setup for shuffle variants like FR C, or ask for a random number. After pressing OK, a new game is set up, using this position. The chosen position will continue to be used on every subsequent \ldblquote New Game\rdblquote , }{\f1\cf11 even if you are playing a variant that normally is not shuffled, until you select a new variant through the \ldblquote New Variant\'85\rdblquote menu.}{\f1\cf6 If you enter \ldblquote -1\rdblquote for the position number, new random number is drawn before every game. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 The type of shuffling that is done in reaction to a given position number obeys restrictions that depend on the selected va riant. In variants that allow castling, Kings remain on the central files, Rooks in the corners. In games with FRC-style castlings, the King starts between the Rooks, but apart from that they could be anywhere. In games without castling, there are no rest rictions on King and Rook placement. Pairs of color-bound pieces (such as Bishops) will be placed on oppositely colored squares. In ICS mode this feature has no effect, as the ICS determines the starting position. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 New Variant}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 NewVariant}}}{\f1\cf11 New Variant \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Select a new variant. There are controls to enter a board width, board height and holdings size, but normally you leave them at \lquote -1\rquote , which means the default value for the selected variant will be used (e.g. 8x8 for normal Chess, 9x10 for xiangqi, 10x8 for capablanca, holdings for 5 pieces in crazyhouse). You can set a deviating value for each of the three parameters (e.g. to play a crazyhouse version of xiangqi or capablanca you would set the holdings to 6 or 7). If the board width deviates from the default, the game will start with an empty board. \par The variant will remain in force until you select a new one; i.e. subsequent \ldblquote New Game\rdblquote commands will start a new game of the same variant. In ICS mode this command has no effect, as the ICS determines which variant will be played. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Load Game} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 LoadGame}}}{\f1 Load Game \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Plays a game from a record file. A popup dialog prompts you for the filename. If the file contains more than one game, a second popup dialog displays a list of games (with information drawn from their PGN tags, if any), and you can select the one you want. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The game file parser will accept PGN (portable game notation), or in fact almost any file that contains moves in algebraic notation. Notation of the form }{\i\f1 P@f7}{ \f1 is accepted for piece-drops in bughouse games; this is a nonstandard extension to PGN. If the file includes a PGN position (FEN tag), or a WinBoard position diagram bracketed by "[--" and "--]" before the first move, the game starts from that position. Text enclosed in parentheses, square brackets, or curly braces is assumed to be commentary a nd is displayed in a pop-up window. Any other text in the file is ignored. PGN variations (enclosed in parentheses) }{\f1\cf5 appear in the comment popup amongst genuine comments; to walk the variation tree, you have to right-click them in this window. This will cause WinBoard to load them as the current line. You can revert to the previous line with the }{\f1\uldb\cf5 Revert}{ \v\f1\cf5 variant }{\f1\cf5 command. (Beware! Currently WinBoard\rquote s PGN parser is limited to 3 levels of nesting in variations.)}{\f1 The nonstandard PGN tag }{\f2 [Variant "varname"]}{\f1 functions similarly to the }{\f1\uldb variant}{\v\f1 variant }{\f1 command-line option, allowing games in certain chess variants to be loaded. }{\f1\cf5 Note that it has to appear before any FEN tag!}{\f1 There is also a heuristic to recognize chess variants from the }{\f2 Event}{\f1 tag, by looking for the strings that the Internet Chess Servers put there when saving variant ("wild") games. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Load Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 LoadPosition}}}{\f1 Load Position \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets up a position from a position file. A popup dialog prompts you for the filename. Position files must be in FEN (Forsythe-Edwards notation), or in the format that the } {\f1\uldb Save Position}{\f1 command writes when }{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1 is turned on. }{\f1\cf11 Note that many variants require an extension of the original FEN standard. WinBoard tries to be as universal as possible in understanding FENs when different standards a re raound, but has to make a choice when writing them. In FRC is uses Shredder-FEN (Haha castling notation) , but it understands KQkq as the outermost Rook, so it also reads X-FEN. In Crazyhouse / Bughouse it appends the holdings immediately behind the bo a rd info between brackets [], but on input it also understands bFEN (which puts it behind a slash / as if it were an extra board rank). It uses a tilde ~ behind a piece to indicate it is really a promoted Pawn (like bFEN). In Shogi the holdings are printed like in Crazyhouse, but promoted pieces are represented by a plus sign + before the letter of the original piece. Letters used for the pieces can be set with the /pieceToCharTable command-line option.}{\f1 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Save Game} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 SaveGame}}}{\f1 Save Game \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Appends a record of the current game to a file. A popup dialog prompts you for the filename. If the game did not begin with the standard starting position, the game file includes the starting position used. Game files are saved in the PGN (portable game notation) format, unless the }{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1 option is True, in which case they are saved in an older format that is specific to WinBoard}{\i\f1 .}{\f1 Both formats are human-readable, and both can be read back by the Load Game command. Notation of the form }{ \i\f1 P@f7}{\f1 is generated for piece-drops in bughouse games; this is a nonstandard extension to PGN. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Save Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 SavePosition}}}{\f1 Save Position \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Appends a diagram of the current position to a file. A popup dialog prompts you for the filename. Positions are saved in FEN (Forsythe-Edwards notation) format, unless the }{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1 option is True, in which case they are saved in an older, human-readable format that is specific to WinBoard}{\i\f1 .}{\f1 Both formats can be read back by the Load Position command; however, currently Load Position can load only the first position in a file. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 Save Diagram}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 Save Diagram}}}{\f1\cf11 Save Diagram \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Writes the current board display as a bitmap file. With this command you can use WinBoard as a diagram generator. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Exit}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Exit}}}{\f1 Exit \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Exits from WinBoard. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\f1\super K} {\f1 Edit Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 EditMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super $}{\f1 Edit Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Edit Menu \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Copy Ga me To Clipboard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 CopyGameToClipboard}}}{\f1 Copy Game To Clipboard \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Copies the record of the current game to the Windows clipboard in PGN (portable game notation) format. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Copy Position Clipboard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 CopyPositionToClipboard}}}{\f1 Copy Position To Clipboard \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Places a diagram of the current position (in Forsythe-Edwards notation) into the Windows clipboard. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Paste Game From Clipboard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 PasteGameFromClipboard}}}{\f1 Paste Game From Clipboard \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Plays a game from the Windows clipboard.}{\f1 See }{\f1\uldb Load Game}{\v\f1 LoadGame}{\f1 for a discussion of game file format and parser behavior.}{ \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Paste Position Clipboard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 PastePositionFromClipboard}}}{\f1 Paste Position From Clipboard \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets up a position from the Windows clipboard. Position must be in FEN (Forsythe-Edwards notation). Puts WinBoard into }{\f1\uldb Edit Game}{\v\f1 EditGame}{\f1 mode if it was not there already. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Edit Game} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 EditGame}}}{\f1 Edit Game \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Allows you to make moves for both Black and White, and to change moves after backing up with the }{\f1\uldb Backward}{\v\f1 Backward}{\f1 command. The clocks do not run, but you can adjust their reading by clicking on them. A left-click subtracts one minute, a right-click adds one minute. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In chess engine mode, the chess engine continues to check moves for legality but does not participate in the game. You can bring the chess engine back into the game by selecting }{\f1\uldb Machine White}{\v\f1 MachineWhite}{\f1 , }{\f1\uldb Machine Black} {\v\f1 MachineBlack}{\f1 , or }{\f1\uldb Two Machines}{\v\f1 TwoMachines}{\f1 . \par In ICS mode, the moves are not sent to the ICS: Edit Game takes WinBoard out of ICS Client mode and lets you edit games locally. If you want to edit a game on ICS in a way that other ICS users can see, use the ICS }{\b\f1 examine}{\f1 command or start an ICS match against yourself. \par }{\f1\cf5 If you edit an existing game locally by playing new moves while not at the end, you will create a new variation. (New moves at the end will simply be appended to the existing game.) WinBoard will then shelve the original variation (\lquote main line\rquote ) from beyond the point where you played a new move. You can later revert to that new line with the }{\f1\uldb\cf5 Revert}{\f1\cf5 or }{\f1\uldb\cf5 Annotate}{\f1\cf5 commands. This will discard the variation you just entered, and restores the moves of the ori ginal main line that you overwrote. This procedure can be applied recursively, so you an make (sub-)variations on variations. Rather than entering variations move by move, you can also recall them from PGN variations in the Comment window, by right-clicki ng those. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Edit Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 EditPosition}}}{\f1 Edit Position \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you set up an arbitrary board position. Use the left mouse button to drag pieces to new squares, or to delete a piece by dragging it off the board or dragging an empty square on top of it. To drop a new piece on a square, pre ss the right mouse button over the square. This brings up a menu of pieces. Additional menu choices let you empty the square or clear the board. You can set the side to play next by clicking on the White or Black indicator at the top of the screen. }{ \f1\cf11 The pop-up menu also contains options to \lquote promote\rquote or \lquote demote\rquote the piece currently in the square. (In variants like Crazyhouse a piece has a different representation when it is a promoted Pawn rater than an original piece.) This allows you to create some of the n ot-so-common pieces (e.g. a Unicorn is a promoted King, a Commoner is a demoted King).}{\f1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Selecting Edit Position causes WinBoard}{\i\f1 }{\f1 to discard all remembered moves in the current game. \par In ICS mode, change made to the position by Edit Position are not sent to th e ICS: Edit Position takes WinBoard out of ICS Client mode and lets you edit positions locally. If you want to edit positions on ICS in a way that other ICS users can see, use the ICS }{\b\f1 examine}{\f1 command, or start an ICS match against yourself. (See also }{\f1\uldb ICS Client}{\v\f1 ICSClient}{\f1 above.) \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Edit Tags} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 EditTags}}}{\f1 Edit Tags \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you edit the PGN (portable game notation) tags for the current game. After editing, the tags must still conform to the PGN tag syntax: \par }\pard\plain \s43\li520\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs20\cgrid {\f2 \line ::= \line \line ::= [ ]\line ::= \line ::= \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 See the PGN Standard for full details. Here is an example: \par }\pard\plain \s43\li520\sa60\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs20\cgrid {\f2 \line [Event "Portoroz Interzonal"]\line [Site "Portoroz, Yugoslavia"]\line [Date "1958.08.16"]\line [Round "8"]\line [White "Rob ert J. Fischer"]\line [Black "Bent Larsen"]\line [Result "1-0"] \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Any characters that do not match this syntax are silently ignored. Note that the PGN standard requires all games to have at least the seven tags shown above. Any that you omit will be filled in by WinBoard with }{\f2 "?"}{\f1 (unknown value) or }{\f2 "-" }{\f1 (inapplicable value). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Edit Comment}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 EditComment}}}{\f1 Edit Comment \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Adds or modifies a comment on the current position. Comments are saved by }{\f1\uldb Save Game}{\v\f1 SaveGame}{\f1 and are displayed by }{\f1\uldb Load Game}{\v\f1 LoadGame}{\f1 , }{\f1\uldb Forward}{\v\f1 Forward}{\f1 , and }{\f1\uldb Backward}{\v\f1 Backward}{\f1 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Edit Bookt }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 EditBook}}}{\f1 Edit Book \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Pops up a window listing the moves available in the GUI book (specified in the }{\f1\uldb Common Engine Settings}{\f1 dialog) from the currently displayed position, together with their weights and (optionally in braces) learn info. You can then edit this list, e.g. changing the weights or}{\v\f1 Backward}{\f1 learn info, delete a move (by deleting the line it is on), or even add moves by adding a line. (But be very careful to use the correct format and make sure the move is legal. Invalid lines will result in undefined behavior, which can include loss of all moves listed below it!) On pressing OK the modified info will be written back to the book, replacing the original book contents for that position. Note that the listed percentages are neither used nor updated when you change weigh ts; they are just there to aid interpretation of the weights originally in the book. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 Enter Username}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 EnterUsername}}}{\f1\cf11 Enter Username \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 Allows you to type the name of the human player, which will appear in the PGN header and in the window title. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Revert}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Revert}}}{\f1 Revert \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are examining a game on the ICS, issues the ICS command }{\b\f1 revert}{\f1 . }{\f1\cf2 In local mode, it reverts to the previous line that was loaded in WinBoard, before you started entering a variation on it in }{\f1\uldb\cf2 Edit Game}{\v\f1\cf2 EditGame}{\f1\cf2 or }{\f1\uldb\cf2 Analyze}{\v\f1\cf2 EditGame}{\f1\cf2 mode. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 Annotate}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 Annotate}}}{\f1\cf5 Annotate \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Similar to the }{\f1\uldb\cf5 Revert}{\f1\cf5 command, but in l ocal mode it will add the variation you are abandoning as a comment to the move where it first deviated, in PGN variation format (i.e. in parentheses). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Truncate Game}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 TruncateGame}}}{\f1 Truncate Game \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Discards all remembered moves of the game beyond the current position. Puts WinBoard into }{\f1\uldb Edit Game}{\v\f1 EditGame}{\f1 mode if it was not there already. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Backward}} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Backward}}}{\f1 Backward \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Steps backward through a series of remembered moves. The }{\b\f1 <}{\f1 button is equivalent to selecting Backward}{\f1\cf2 , as is turning the mouse wheel towards you}{ \f1 . In most modes, Backward only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing or observing a game on the ICS, or loading a game. If you select Backward in any of these situations, you will not be allowed to make a d ifferent move. Use }{\f1\uldb Retract Move}{\v\f1 RetractMove}{\f1 or }{\f1\uldb Edit Game}{\v\f1 EditGame}{\f1 if you want to change past moves. \par If you are examining a game on the ICS, the behavior of Backward depends on whether WinBoard}{\i\f1 }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1 mode. If Pause mode is off, Backward issues the ICS command}{\b\f1 backward}{\f1 , which backs up everyone's view of the game and allows you to make a different move. If Pause mode is on, Backward only backs up your local view. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Forward}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Forward}}}{\f1 Forward \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Steps forward through a series of remembered moves (undoing the effect of }{\f1\uldb Backward}{\v\f1\uldb Backward}{\f1 ) or through a game file. The }{\b\f1 >}{\f1 button is equivalent}{\f1\cf2 , as is turning the mouse wheel away from you}{\f1 . \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are examining a game on the ICS, the behavior of Forward depends on whether WinBoard}{\i\f1 }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1 mode. If Pause mode is off, Forward issues the ICS command}{\b\f1 forward}{\f1 , which moves everyone's view of the game forward along the current line. If Pause mode is on, Forward only moves your local view forward, and it will not go past the position the game was in when you paused. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Back to Start}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 BacktoStart}}}{\f1 Back to Start \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Jumps backward to the first remembered position in the game. The }{\b\f1 << }{\f1 button is equivalent. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In most modes, Back to Start only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing o r observing a game on the ICS, or loading a game. If you select Back to Start in any of these situations, you will not be allowed to make a different move. Use }{\f1\uldb Retract Move}{\v\f1 RetractMove}{\f1 or }{\f1\uldb Edit Game}{\v\f1 EditGame}{\f1 if you want to change past moves; or use }{\f1\uldb New Game}{\v\f1 NewGame}{\f1 to start a new game. \par If you are examining a game on the ICS, the behavior of Back to Start depends on whether WinBoard}{\i\f1 }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1 mode. If Pause mode is off, Backward issues the ICS command }{\b\f1 backward 999999}{\f1 , which backs up everyone's view of the game to the start and allows you to make different moves. If Pause mode is on, Back to Start only backs up your local view. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Forwa rd to End}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ForwardtoEnd}}}{\f1 Forward to End \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Jumps forward to the last position in the game. The }{\b\f1 >>}{\f1 button is equivalent. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are examining a game on the ICS, the behavior of Forward to End depends on whether WinBoard}{\i\f1 }{\f1 is in }{\f1\uldb Pause}{\v\f1 Pause}{\f1 mode. If Pause mode is off, Forward to End issues the ICS command }{\b\f1 forward 999999}{\f1 , which moves everyone's view of the game forward to the end of the current line. If Pause mode is on, Forward to End only moves your local view forward, and it will not go past the position the game was in when you paused. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\f1\super K} {\f1 View Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ViewMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super $}{\f1 View Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 View Menu \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Flip View} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 FlipView}}}{\f1 }{\f1\ul Flip View}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Inverts your view of the chessboard. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are playing a game on the ICS, the board is always orie nted at the start of the game so that your pawns move from the bottom of the window towards the top. Otherwise, the starting position is determined by the }{\f1\uldb flipView}{\v\f1 flipViewOption}{\f1 command line option. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\ul\cf11 Swap Clocks}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\ul\cf11 SwapClocks}}}{\f1\cf11 }{\f1\ul\cf11 Swap Clocks}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Interchanges the position of the white and black clocks on the screen. Intended for manually-operated computer-computer games, where the monitor is standing to the side of the playing board, to make sure that the operator sees the time of his own machine on his side of the table. Note that it is possible to adjust the clocks in steps of one minute, by left- (decrement) or right-clicking (increment) it with the mouse in \ldblquote Edit Game\rdblquote mode. (Clicking the clocks in other modes is interpreted as claiming the flag.) \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Show Engine Output}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 Show Engine Output}}}{\f1\cf6 Show Engine Output \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 Open a new window dedicated to showing the thinking output of the engine(s), as controlled by \ldblquote Show Thinking\rdblquote . }{\cf11 In ICS mode kibitzed info of an opponent engine can appear here as well, under control of the /autoKibitz option. }{\cf5 Right-clicking a line of thinking output will al low you to step through the PV it contains on the main board, by vertically moving the mouse, keeping the right-button pressed. \par WinBoard will display lines of thinking output of the same depth ordered by score, (highest score on top), rather than in the or der the engine produced them. Usually this amounts to the same, as a normal engine search will only find new PV (and emit it as thinking output) when it searches a move with a higher score than the previous variation. But when the engine is in multi-varia t ion mode this needs not always be true, and it is more convenient for someone analyzing games to see the moves sorted by score. The order in which the engine found them is only of interest o the engine author, and can still be deduced from the time or nod e count printed with the line.}{\cf6 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Show Move History}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 Show Move History}}}{\f1\cf6 Show Move History \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 Open a new window dedicated to showing the game currently in progress. Double-clicking on a move selects the corresponding position in the board display. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Show Evaluation Graph}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 Show Evaluation Graph}}}{\f1\cf6 Show Evaluation Graph \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 Open a new window dedicated to displaying a graph, representing the development of the engine score(s) from the current game over time. (Needs \ldblquote show Thinking \rdblquote to be enabled in order to work). Clicking a point on the graph selects the corresponding position in the board display. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Show Ga me List}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ShowGameList}}}{\f1 Show Game List \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Shows or hides the list of games generated by the last }{\f1\uldb Load Game}{\v\f1 LoadGame}{\f1 command. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{ \f1\cf2 Open Chat Window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 Open Chat Window}}}{\f1\cf2 Open Chat Window \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf2 Open a new window that in ICS mode can be used to display messages received from ICS tell commands from a specified ICS handle, from a chan nel (when you set the handle to the channel number), }{\cf5 shouts / c-shouts,}{\cf2 or whispers }{\cf5 / kibitzes}{\cf2 from co-observers of a game (when you set the handle to }{\cf5 \ldblquote \rdblquote shouts, \ldblquote c-shouts\rdblquote , \ldblquote whisper\rdblquote or \ldblquote kibitzes\rdblquote }{\cf2 ). You have to press the \ldblquote Change\rdblquote button in the chat window to activate the entered handle}{\cf5 , or type }{\cf2 . Typing into the bottom field of the window will send tell messages to the handle or channel, or whispers to co-observers. You can open up to }{\cf5 five}{\cf2 chat windows. Messages that are diverted to such a chat windo w will not appear in the ICS interaction window. }{\cf5 A window dedicated to shouts will also capture c-shouts (if there is no dedicated c-shout box) and \lquote It\rquote messages, recognizable on the type of brackets used around the shouter name ( [ ], ( ) or < >, respectively).}{\cf6 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Type In Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 TypeInMove}}}{\f1 Type In Move \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Pops up a dialog box, into which you can type moves in standard algebraic chess notation. (You can also get this dialog box by simply starting to type over the chessboard, except in ICS mode, where such typing is redirected into the ICS interaction window.) }{\f1\cf5 Typing a number will have the same effect as stepping forward or backward to the position after that move. In Edit Position mode you can also type a FEN to set up the position.}{\f1 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Tags}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Tags}}}{\f1 Tags \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Shows a window with PGN tags of the current game. Currently a duplicate of Edit Tags in the edit menu. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Comments}} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Comments}}}{\f1 Comments \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Shows a window with Comments to the current move. Currently a duplicate of Edit Comment in the Edit menu. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Game List Tags}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 GameListTags}}}{\f1 }{\f1\ul Game List Tags}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you select which information is displayed in the Game List window. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Board Options} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ BoardOptions}}}{\f1\ul Board \par }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Board Size}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 BoardSizeCmd}}}{\f1 Board Size \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Determines how large the board will be and what fonts and piece bitmaps will be used. On a Titanic board the piece bitmaps are 129x129 pixels, on Colossal 116x116, Giant 108x108, Huge 95x95, Big 87x87, Large 80x80, Bulky 72x7 2, Medium 64x64, Moderate 58x58, Average 54x54, Middling 49x49, Mediocre 45x45, Small 40x40, Slim 37x37, Petite 33x33, Dinky 29x29, Teeny 25x25, and Tiny 21x21. The smaller boards have no system menu, but you can minimize or close them from the File menu. \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 You can also change the board size by dragging the window edges or corners with the mouse. The board will snap to the largest size that fits into the area you outline. \par }{\cf11 Note that only sizes Bulky, Middling and to a lesser extent Petite have built-in bitmaps for the non-FIDE- pieces. Archbishop, Chancellor and the wildcard Lance exist in all sizes from Petite to Bulky, though. In size Moderate, variant shogi uses the traditional Japanese piece representation.}{\f1\cf11 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Board Colors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 BoardColors}}}{\f1 Board Colors \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the colors WinBoard is using to draw the board and pieces. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 All White}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 AllWhite}}}{\f1\cf11 All White \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Uses the representation of the white pieces (a filled-in black outline) also for the black pieces (where you can fill them with another color to distinguish them). If you do not choose a very dark color for the black pieces, they look very ugly without outline, and using this option can fix that. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 Flip Black}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 FlipBlack}}}{\f1\cf11 Flip Black \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Displays the black pieces upside down (or the white pieces in \ldblquote Flip View\rdblquote ). This is useful in Shogi, when you want to use the traditional Japanese representation of the pieces. \par }\pard\plain \s5\li115\sb80\sl-240\slmult0\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid {\b \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Fonts}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Fonts}}}{\f1 }{\f1\ul Fonts}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the fonts WinBoard is using. The clock font, message font and coordinates font are specific to each board size. The tags font, comments font and ICS Interaction font are not dependent on the current size of the board. The \ldblquote Revert to Defaults\rdblquote button will reset the clock font, message font and coordinates font for the current board size, and will set the tags font, message font and Ics Interaction font for all board sizes. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\f1\super K} {\f1 Mode Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ModeMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super $}{\f1 Mode Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Mode Menu \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Machine White}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 MachineWhite}}}{\f1 Machine White \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Forces the chess engine to play white. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Machine Black}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 MachineBlack}}}{\f1 Machine Black \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Forces the chess engine to play black. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Two Machines}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 TwoMachines}}}{\f1 Two Machines \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Starts a game between two chess engines. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 Machine Both}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 Machine Both}}}{\f1\cf11 Machine Both \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 A single chess engine plays itself. Mainly useful for pseudo-engines, that are in fact communication links to another machine, where you want to observe a game that is being played. (E.g. the gothic-chess.com server). This command is not implemented yet (version 4.3.14). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Analysis Mode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 AnalysisMode}}}{\f1 Analysis Mode \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In this mode, you can make moves for both sides on the board. After each move, the chess engine will think about possible replies and display its analysis in a separate window. Some engines allow you to request not merely the score and continuation for the best move, but for several moves (\lquote multi-PV\rquote ). With such engines the number of moves that is displayed can be altered by right-clicking on the words \lquote fewer\rquote or \lquote more\rquote displayed above the engine output. Crafty was the first engine to support analysis, but by now there are many others that support it as well. }{\f1\cf5 With respect to playing variations, the same holds as in }{\f1\uldb\cf5 Edit Game}{\f1\cf5 mode.}{ \f1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf2 From WinBoard 4.4 on this function can also be invoked in \lquote zippy mode\rquote , i.e. when you are logged on to an ICS with an engine loaded. In that case it is not your own moves that t he engine analyzes, but the moves that are played in a game on the ICS that you are observing. You must start observing before you start the analysis mode! See the file zippy.README for how to connect to an ICS and a chess engine running on your local com puter at the same time. (Basically this amounts to adding the /zp command-line option in addition to all options you would need for connecting to the ICS, as well as those needed for running the chess engine.) \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Analyze File}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 AnalyzeFile}}}{\f1 Analyze File \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In this mode, you can load a ga me from a file, and the chess engine will analyze each move as in Analysis Mode. Crafty was the first engine to support this feature, but by now there are many others that support it as well. }{\f1\cf5 From WinBoard 4.5.0 on the operation of this feature has been sl ightly changed: after loading the file, WinBoard will auto-play the moves while the engine is analyzing, and store the results of the analysis. In particular, it captures the score and depth of the last analysis line for every position (so it will appear as comment in the PGN file when you save the game), and add the PV as a comment on PGN variation format. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Edit Game} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 EditGameMode}}}{\f1 Edit Game \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Duplicate of the item in the Edit menu. Note that Edit Gama is WinBoard\rquote s idle mode, and can be used to switch off other, active modes. (E. g. it it can be used to leave AnalysisMode, stop a game between Two Machines, or leave Edit Position.) \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Edit Position}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 EditPositionMode}}}{\f1 Edit Position \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Duplicate of the item in the Edit menu. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Training}} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Training}}}{\f1 Training \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Training mode lets you interactively guess the moves of a game for one of the player s. While in Training mode, the navigation buttons are disabled. You guess the next move of the game by playing the move on the board (or using the }{\uldb Type In Move}{\v\uldb TypeInMove}{ command). If the move played matches the next move of the game, the move is accepted and the opponent\rquote s response is autoplayed. If the move played is incorrect, an error message is displayed. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 ICS Client }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ICSClient}}}{\f1 ICS Client \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This is the normal mode when WinBoard is connected to a chess server. If you have moved into Edit Game or Edit Position mode, you can select this option to get out. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 When you run WinBoard in ICS mode, it starts up a console window in which you can type commands and receive text responses from the chess server. You can use the standard Windows editing keys to edit your command line before pressing Enter. The console window keeps a history of the last few commands you typed. Press the up-arrow key to go back to a previous command; press the down-arrow key to go forward again to a later command. Press the right mouse button in the output are a for a }{\f1\uldb context menu}{\v\f1 ICSInteractionContextMenu}{\f1 of editing commands and ICS command shortcuts. \par Some useful ICS commands include }{\b\f1 who}{\f1 to see who is logged on, }{\b\f1 games}{\f1 to see what games are being played, }{\b\f1 match}{\f1 to challenge another player to a game, }{\b\f1 observe}{\f1 to observe an ongoing game, }{\b\f1 examine}{\f1 or }{\b\f1 smoves}{\f1 to review a recently completed game, and of course }{\b\f1 help}{\f1 . \par Whenever you ask to observe an ongoing game, review a completed game, or resume an adjourned game, WinBoard retrieves and parses the list of past moves from the ICS, so you can review them with }{\f1\uldb Forward}{\v\f1 Forward}{\f1 and }{\f1\uldb Backward}{\v\f1 Backward}{\f1 or save them with }{\f1\uldb Save Game}{\v\f1 SaveGame}{\f1 . \par }{\f1\cf5 In ICS mode a graph of players seeking games can be displayed in stead of the chess board, when you are idle (i.e. not playing, observing or examini ng). When this feature is enabled, left-clicking in the board area will switch between board and the seek graph. For details on this, see the }{\f1\uldb\cf5 Seek Graph}{\f1\cf5 command. \par }{\f1 Some special ICS Client features are activated when you are in }{\b\f1 examine}{\f1 or }{\b\f1 bsetup }{\f1 mode on ICS. See the descriptions of the menu commands }{\f1\uldb Forward}{\v\f1 Forward}{\f1 , }{\f1\uldb Backward}{\v\f1 Backward}{\f1 , } {\f1\uldb Pause}{\v\f1 Pause}{\f1 , and }{\f1\uldb Stop Examining}{\v\f1 StopExamining}{\f1 below. You can also issue the ICS position-editing commands with the mouse. Move pieces by dragging with the left mouse button, or by le ft-clicking once on the starting square and once on the ending square. Press the right mouse button over a square for a context menu that lets you drop a new piece, empty the square, or clear the board. Click on the White or Black clock to set the side to play. You cannot set the side to play or drag pieces to arbitrary squares while examining on ICC, but you can do so in bsetup mode on FICS. You can also make moves by typing them into the ICS window; you may have to do this occasionally if you are playing a chess variant whose rules WinBoard does not understand. }{\f1\cf5 (But this list is getting shorter, and Fischer Random is not on it anymore; you can enter castling there with the mouse by dragging the King on top of the Rook.)}{\f1 \par If you are playing a bughouse game on the ICS, a list of the offboard pieces that each player holds is shown in the window title bar, }{\f1\cf2 and graphically in the holdings area next to the board.}{\f1 To drop an offboard piece, }{\f1\cf2 drag it from the holdings to the board.}{\f1 }{\f1\cf5 (Pressing the right mouse button over an empty square to bring up a context menu will still work if you have set the /dropMenu option.)}{\f1 To observe your partner's games, start a second copy of WinBoard, log in as a guest, and use the ICS }{\b\f1 follow}{\f1 or }{\b\f1 pfollow}{\f1 command in the new window. }{\f1\cf5 You can also use the }{\f1\uldb\cf5 Background Observe}{\f1\cf5 or } {\f1\uldb\cf5 Dual Board}{\f1\cf5 features to follow your partner\rquote s game through a single connection on which you are also playing yourself, in the background (peeking at it by pressing the right mouse button), or on side-by-side boards in the board window.}{\f1 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 Machine Match}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 MachineMatch}}}{\f1\cf5 Machines Match \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Starts or stops a match between two chess engines. The number of games in the match will be taken from the \ldblquote default match games\rdblquote setting in the Options-> Common Engine dialog. When a match is already running, clicking this menu item will cause it to stop after the current game finishes. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Machine Match}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 MachineMatch}}}{\f1 Machine Match \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Starts or stops a match between two chess programs. The number of games will be taken from the}{\f1\cf1 }{\f1\uldb\cf1 defaultMatchGames}{\f1\cf1 }{\f1 option, which is settable through the }{\f1\uldb\cf1 Common Engine Settings}{\f1 m enu dialog. When a match was already in progress, using this menu item will cause it to stop after the current game finishes. When a tournament file was specified, the match will be run as a tournament with the parameters taken from that file, and the tou rnament file will remain valid after stopping, so that you can resume the tournament using this item. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Pause}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Pause}}}{\f1 Pause \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Pauses updates to the board, and if you are playing against a local chess engine, also pauses your clock. To continue, select Pause again, and the display will au tomatically update to the latest position. The }{\b\f1 P}{\f1 (or }{\b\f1 C}{\f1 ) button is equivalent to selecting Pause. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you select Pause when you are playing{\*\bkmkstart WHATSelSavT}{\*\bkmkend WHATSelSavT} {\*\bkmkstart fWHATtopic}against{\*\bkmkend fWHATtopic} a chess engine and it is not your move, the chess engine\rquote s clock will continue to run and it will eventually m ake a move, at which point both clocks will stop. Since board updates are paused, however, you will not see the move until you exit from Pause mode (or select }{\f1\uldb Forward}{\v\f1 Forward}{\f1 ). This behavior is meant to simulate adjournment with a sealed move. \par If you select Pause while you are in }{\b\f1 examine}{\f1 mode on ICS, you can step backward and forward in the current history of the examined game without affecting the other examiners or observers. Select Pause again to reconnect yourself to the current state of the game on ICS. \par If you select Pause while you are loading a game, the game stops loading. You can load more moves one at a time by selecting }{\f1\uldb Forward}{\v\f1 Forward}{\f1 , or resume automatic loading by selecting Pause again. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Action Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ActionMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Action Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Action Menu \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Most of these commands are available in chess server mode only. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Accept}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Accept}}}{\f1 Accept \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Accepts a pending match offer. If there is more than one offer pending, you will have to type in a more specific command instead of using this menu choice. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Decline}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Decline}}}{\f1 Decline \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Declines a pending offer (match, draw, etc.). If there is more than one offer pending, you will have to type in a more specific command instead of using this menu choice. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Rematch}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Rematch}}}{\f1 Rematch \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Issues the ICS }{\b\f1 rematch}{\f1 command, which asks for another game against your last opponent with the same time control and rule set. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Call Flag} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 CallFlag}}}{\f1 Call Flag \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Calls your opponent's flag, claiming a win on time, or claiming a draw if you are both out of time. You can also call your opponent's flag by clicking on his clock. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Draw}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Draw}}}{\f1 Draw \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Offers a draw to your opponent, accepts a pending draw offer from your opponent, or claims a draw by repetition or the 50-move rule, as appropriate. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Adjourn}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Adjourn}}}{\f1 Adjourn \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Asks your opponent to agree to adjourning the current game, or agrees to a pending adjournment offer from your opponent. You continue an adjourned ICS game by challengin g the same player again with the ICS }{\b\f1 match}{\f1 command. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Abort}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Abort}}}{\f1 Abort \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Asks your opponent to agree to abort the current game, or agrees to a pending abort offer from your opponent. An aborted ICS game ends immediately without affecting either player's rating. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Resign}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Resign}}}{\f1 Resign \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Resigns the game to your opponent. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Stop Observing}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 StopObserving}}}{\f1 Stop Observing \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Ends your participation in observing a game, by issuing the ICS }{\b\f1 unobserve}{\f1 command. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Stop Examining}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 StopExamining}}}{\f1 Stop Examining \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Ends your participation in observing a game, by issuing the ICS }{\b\f1 unobserve}{\f1 command. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 Upload to Examine}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 Upload to Examine}}}{\f1\cf5 Upload to Examine \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Starts an examined game on the ICS, and uploads the game currently loaded in WinBoard (by pasting it, or loading from a file) to it. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Adjudicate To White}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 AdjudicateToWhite}}}{\f1\cf6 Adjudicate To White \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 End the current game and stop participating engine. The result will appear in the PGN as a win for white. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Adjudicate To Black}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 AdjudicateToBlack}}}{\f1\cf6 Adjudicate To Black \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Same as above, but game will appear as a win for black. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Adjudicate Draw}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 AdjudicateDraw}}}{\f1\cf6 Adjudicate Draw \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Same as above, but game will appear as a draw. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20\cf6 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super K}{\f1 Engine Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 EngineMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Engine Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Engine Menu \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Hint}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Hint}}}{\f1 Edit Engine List \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This pops up a window where you can edit the list of installe d engines, e.g. to delete or reorder them, or add options that could not be specified in the Load Engine dialog. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Hint}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Hint}}}{\f1 Load Engine \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Pops up a dialog where you can select or specify an engine, to be loaded (possibly replacing a previously loaded engine). You wi ll always have to indicate whether you want to load the engine as first or second engine, through the \lquote Load Engine as\rquote combobox in the lower right. You can even replace engines during a game, without disturbing that game, provided the new engine will not f orce a switch of variant. (Beware that after loading an engine, WinBoard will always be in Edit Game mode, so if you want the new engine to continue playing or analyzing, you will have to use the Mode menu to tell it such.) When you select an already inst alled engine from the \lquote Select Engine from List\rquote combobox, all other fields of the dialog will be ignored. In other cases, you have to specify the engine executable, possible engine arguments (if the engine docs say the engine needs any), and the folder (dir ectory) where the engine should look for its files (if this cannot be deduced automatically from the specification of the engine executable). Usually it will be enough to use the browse button to locate the engine executable. But you will also have to tel l WinBoard (with the aid of checkboxes) if the engine is UCI. If \lquote Add to list\rquote is ticked (which it is by default), the engine will be added to the list of installed engines in your settings file, so that next time you can select it from the combobox. You can also specify a \lquote nickname\rquote , under which the engine will then appear in that combobox, and even choose to use that nickname for it in PGN files for engine-engine games. The info you supply with the checkboxes whether the engine should use GUI book, or (for variant engines) automatically switch to the current variant when loaded, will also be included in the list. For obsolete WinBoard engines, that would normally take a long delay to load because WinBoard is waiting for a response they will not give, you c an tick \lquote WB protocol v1\rquote to speed up the loading process. The UCCI / USI checkbox is for engines that need a special adapter (which should be configured through the }{\f1\uldb uxiAdapter}{\f1 option), which in practice is only important for Xiangqi and Shogi engines. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\cf2\super K}{\cf2 } {\f1\ul\cf2 Engine Settings}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\cf2\super #}{\cf2 }{\f1\ul\cf2 Engine Settings}}}{\f1\ul\cf2 Engine #1 Settings }{\f1\cf2 , }{\f1\ul\cf2 Engine #2 Settings \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 This pops up a dialog that allows the user to set engine-defined options of the mentioned engine (if it is in use). What is in the dialog is entirely determined by the engine. Generally, any changes you make to the con trols are only sent to the engine after you press \ldblquote OK\rdblquote . An exception are engine-defined push buttons; the corresponding signal is sent to the engine immediately when you push those. To see the options of UCI engines, you need a Polyglot adapter that supports the recent WB-protocol extensions. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Hint}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Hint}}}{\f1 Hint \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Displays a move hint from the chess engine. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Book}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Book}}}{\f1 Book \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Displays a list of possible moves from the chess engine\rquote s opening book. The first column gives moves, the second column gives one possible response for each m ove, and the third column shows the number of lines in the book that include the move from the first column. If you select this option and nothing happens, the engine is out of its book or does not support the book command. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Move Now}} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 MoveNow}}}{\f1 Move Now \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Forces the chess engine to move immediately. May not work with all chess engines. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Retract Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 RetractMove}}}{\f1 Retract Move \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Retracts your last move. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In chess engine mode, you can do this only after the chess engine has replied to your move. If the chess engine is still thinking, use }{\f1\uldb Move Now}{\v\f1 MoveNow}{ \f1 first. \par In ICS mode, Retract Move issues the command }{\b\f1 takeback 1 }{\f1 or }{\b\f1 takeback 2}{\f1 , depending on whether it is your opponent's move or yours. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Options Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 OptionsMenu}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Options Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Options Menu \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{ \f1\cf2 }{\f1\ul\cf2 Mute all Sounds}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 }{\f1\ul\cf2 MuteAllSounds}}}{\f1\cf2 }{\f1\ul\cf2 Mute all Sounds}{\f1\cf2 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 Provides a quick way to switch on or off all sounds, without affecting the settings for them. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ General Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ GeneralOptions}}}{\f1\ul General}{\f1 \par }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Always On Top}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 AlwaysOnTop}}}{\f1 Always On Top \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on, WinBoard sets its chessboard to be a }{\i\f1 topmost}{\f1 window, meaning that it always appears on top of all ordinary windows on the screen. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Always Queen}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 AlwaysQueen}}}{\f1 Always Queen \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Always Queen is off, WinBoard brings up a dialog box whenever you move a pawn to the last rank, asking what piece you want to promote it to. If the option is on, your pawns are always promoted to queens. Your opponent can still underpromote, however. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Animate Dragging}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 AnimateDragging}}}{\f1 Animate Dragging \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Animate Dragging is on while y ou are dragging a piece with the mouse, an image of the piece follows the mouse cursor. If Animate Dragging is off, there is no visual feedback while you are \par dragging a piece, but if Animate Moving is on, the move will be animated when it is complete. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Animate Moving}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 AnimateMoving}}}{\f1 Animate Moving \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Animate Moving is on, all piece moves are animated. An image of the piece is shown moving from the old square to the new square when the move is completed (unless the move was already animated by Animate Dragging). If Animate Moving is of f, a moved piece instantly disappears from its old square and reappears on its new square when the move is complete. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Auto Flag} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 AutoflagCmd}}}{\f1 Auto Flag \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on and one player runs out of time before the other, WinBoard will automatically call his flag, claiming a w in on time. In ICS mode, Auto Flag will only call your opponent's flag, not yours, and the ICS may award you a draw instead of a win if you have insufficient mating material. On most chess servers, you can now do}{\b\f1 set autoflag 1 }{\f1 instead and have the server call the flag. In local chess engine mode, WinBoard may call either player's flag and will not take material into account. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Auto Flip View}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ AutoFlipView}}}{\b Auto Flip View \par }{If this option is on when you}{\f1 start a game, the board will be automatically oriented so that your pawns move from the bottom of the window towards the top.}{ \par }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Auto Raise Board}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\super #}{ AutoRaiseBoard}}}{\b Auto Raise Board \par }{If this}{\v autoFlipViewOption}{ option is on, whenever a new game begins, the chessboard window will be deiconized (if necessary) and raised to the top of the stack of windows on your screen. \par }\pard\plain \s2\li120\sb80\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Blindfold}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ BlindfoldCmd}}}{Blindfold \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { If Blindfold is on, WinBoard displays a blank board. Moves can still be entered with the mouse, either by dragging the (invisible) piece or clicking the starting and ending square. You can also enter your move by typing it on the keyboard}{\f1 .}{ \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Highlight Dragging}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 HighlightDragging}}}{\f1 Highlight Dragging \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Highlight Dragging is on while you are dragging a piece with the mouse, the starting square and the square that the mouse cursor is over are highlighted. This option works even if Animate Dragging is off. }{\f1\cf5 Also controls if the option /showTargetSquares, which can cause marking of al squares a piece you \lquote pick up\rquote can legally move to, can be active.}{\f1 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Extended PGN Info}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 ExtendedPGNInfo}}}{\f1\cf6 Extended PGN Info \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The PGN will contain the engine search depth, score and time for each move where the depth is non-zero, as a comment behind the mo ve if this option is on. Works only when \ldblquote Show Thinking\rdblquote is enabled. The recorded time is the time reported by the engine. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Extra Info In Move History}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 ExtraInfoInMoveHistory}}}{\f1\cf6 Extra Info In Move History \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Same as above, but in move-history window. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Highlight Last Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 HighlightLastMove}}}{\f1 Highlight Last Move \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Highlight Last Move is on, after a move is made, the starting and ending squares remain highlighted. In addition, after you use }{\f1\uldb Backward}{\v\f1 Backward}{\f1 or }{\f1\uldb Back to Start}{\v\f1 BackToStart}{\f1 , the starting and ending squares of the last move to be }{\i\f1 unmade}{\f1 are highlighted. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Periodic Updates}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 PeriodicUpdatesCmd}}}{\f1 Periodic Updates \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Periodic Upda tes is on, the Analysis window is updated every two seconds. If not, it is updated only when the best move found changes. The Analysis window currently works only with Crafty, and Periodic Updates may not work with all versions of Crafty. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559 Ponder Next Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 PonderNextMoveCmd}}}{\f1 Ponder Next Move \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is off, the chess engine will think only when it is on move. If the option is on, the engine will also think while waiting for you to make your move. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Popup Exit Message}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 PopupExitMessageCmd}}}{\f1 Popup Exit Message \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on, when WinBoard wants to display a message jus t before exiting, it brings up a modal dialog box and waits for you to click OK before exiting. If the option is off, WinBoard prints exits immediately without showing the message. If }{\f1\uldb debugMode}{\v\f1 debugMode}{\f1 is on, however, the message will appear in the debug log. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Popup Move Errors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 PopupMoveErrorsCmd}}}{\f1 Popup Move Errors \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is off, when you make an error in moving (such as attempting an illegal move or moving the wrong color piece), the error message is displayed in the message area. If the option is on, move errors are displayed in sm all popup windows like other errors. You can dismiss an error popup either by clicking its OK button or by clicking anywhere on the board, including downclicking to start a move. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Show Bu tton Bar}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ShowButtonBarCmd}}}{\f1 Show Button Bar \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Show Button Bar is on, WinBoard displays on-screen }{\f1\uldb buttons}{\v\f1 BUTTONS}{\f1 to step forward, backward, or pause the game. If it is off, the buttons are hidden, making the message line wider. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Show Coords}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ShowCoordsCmd}}}{\f1 Show Coords \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Show Coords is on, WinBoard displays algebraic coordinates along the board's left and bottom edges. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Show Thinking}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ShowThinkingCmd}}}{\f1 Show Thinking \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, WinBoard displays the chess engine\rquote s current search depth and its notion of the score and best line of play from the current position as it is thinking. The score indicates how many pawns ahead (or if negative, behind) the engi ne thinks it is. In matches between two machines, the score is prefixed by W or B to indicate whether it is showing White's thinking or Black's. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Test Legality}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 TestLegalityCmd}}}{\f1 Test Legality \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Test Legality is on, WinBoard tests whether the moves you enter with the mouse or read from game files are legal, and displays an error if they are not. Turn this option off if you are playing a chess variant that WinBoard does not understand. (Bughouse, suicide, and wild variants where the king may castle after starting on the }{\b\f1 d}{\f1 file are generally supported with Test Legality on. }{\f1\cf11 The same holds for variants with non-FIDE pieces, like shatranj, xangqi, shogi, gothic, capablanca, courier, knightmate: WinBoard knows how all pieces occurring in those variants move. Falcon, cylinder and berolina are only partly supported, though, and the latter two should definitely be played with legality testing off, and falcon uses a wildcard piece for the Falcons, so it considers any move of them legal, but might miss checkmates that involve a Falcon. So you shou ld not play it with claim verification switched on.}{\f1 ) \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Hide Thinking From Human}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 HideThinkingFromHuman}}}{\f1\cf6 Hide Thinking From Human \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 An alternative to suppressing the Thinking Output in the display above the board by switching \ldblquote Show Thinking\rdblquote off, but doing it in a way that still allows the extended PGN info to be recorded. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Highlight Move With Arrow}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 HighlightMoveWithArrow}}}{\f1\cf6 Highlight Move With Arrow \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 A big, fat arrow is drawn between the start and target field of the last move, so you cannot possibly miss it. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 Display Logos}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 DisplayLogos}}}{\f1\cf5 Display Logos \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Controls the display of engine, user or ICS logos above the board, next to the clocks, by switching on or off the option /autoLogo.. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Time Control}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 TimeControlCmd}}}{\f1 }{\f1\ul Time Control}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the time control to be used in games against a chess engine. }{\f1\cf5 Three}{\f1 types of timing are available. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 With conventional chess clocks, each player begins with his clock set to the }{\f1\uldb timeControl}{\v\f1 timeControl}{\f1 period. When both players have made }{ \f1\uldb movesPerSession}{\v\f1 movesPerSession}{\f1 moves, a new time control period begins. The time in the new period is added to whatever time the players have left on their clocks. \par With incremental clocks, each player is given an initial time allotment, and a }{\f1\uldb timeIncrement}{\v\f1 timeIncrement}{\f1 is added to his clock after every move. The increment may be zero, in which case the entire game must be finished within the initial time allotment. \par }{\f1\cf5 With fixed time per move, each player gets a certain (maximum) time to make one move, and any left-over time is not carried to subsequent moves. \par Note that in local modes it is always possible to adjust the clocks during a game by Shift + click on it, where a right-click adds a minute, and a left-click subtracts one. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{ \f1\ul\cf6 Global Settings}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\ul\cf6 Global Settings}}}{\f1\ul\cf5 Common Engine Settings \par }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 Polyglot Directory}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 PolyglotDirectory}}}{\f1\cf6 Polyglot Directory \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If WinBoard knows where to find Polyglot, you can install UCI engines as if they were WinBoard engines, and WinBoard will automatically invoke Polyglot as an adapter to run them. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Hash Size}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 HashSize}}}{\f1\cf6 Hash Size, }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 EGTB Path}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 EGTBPath}}}{\f1\cf6 EGTB Path, }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 EGTB Cache Size}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 EGTBCacheSize}}}{\f1\cf6 EGTB Cache Size, }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 Opening Book}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 OpeningBook}}}{\f1\cf6 Opening Book, }{ \cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 Number of CPUs}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 Number of CPUs}}}{\f1\cf6 Number of CPUs \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 These are options that UCI engines expect to be specified. }{\f1\cf2 WinBoard protocol now also allows native WinBoard engines to request similar information, so it might be used for these engines as well. The memory size specified by the WinBoard-protocol \lquote memory\rquote command is the sum of the hash and EGTB cache sizes. The specified opening book, when enabled through the \lquote Use Book\rquote check box, will be used as GUI book for engines that d o not have their own book (as indicated by the check boxes). It must be a book in Polyglot format. }{\f1\cf5 The selection of book moves can be controlled by the setting of \lquote Book Depth\rquote and \lquote Book Variation\rquote . The former determines the number of full moves into the ga me where the book is probed. The latter is a number from 0 to 100 that controls the interpretation of the move weights in the book (100 = ignore weights and select randomly from all listed moves; 0 = always play best move). At 50 the playing frequency exa ctly follows the book weight.}{\f1\cf6 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 Default Match Games}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 DefaultMatchGames}}}{\f1\cf5 Default Match Games \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Sets the number of games that will be played in response to the Mode -> Machine Match menu command. \par }\pard\plain \s5\sb80\sl-240\slmult0\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid {\b \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\ul\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{ \f1\ul\cf6 Adjudications}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\ul\cf6 Adjudications}}}{\f1\ul\cf6 Adjudications \par }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 Ponder Next Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 PonderNextMove}}}{\f1\cf6 Ponder Next Move,}{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super K}{\f1 }{\f1\cf6 Show Thinking}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 ShowThinking}}}{\f1\cf6 Show Thinking, }{\cs58\f1\cf6\super K {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 Hide Thinking From Human}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 HideThinkingFromHuman}}}{\f1\cf6 Hide Thinking from Human and }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{ \f1 }{\f1\cf6 Periodic Updates}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 PeriodicUpdates}}}{\f1\cf6 Periodic Updates \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Duplicates of the controls in the \ldblquote General\rdblquote option menu. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Adjudicate Draw Moves}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 AdjudicateDrawMoves}}}{\f1\cf6 Adjudicate Draw Moves \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Adjudicate a draw after the given number of moves, to prevent games from dragging on forever if two engines in a dead-drawn position, conspire to avoid 50-move draws. This and the folowing options are only active in \ldblquote Two Machines\rdblquote mode. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 Adjudicate Loss Threshold}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 AdjudicateLossThreshold}}}{\f1\cf6 Adjudicate Loss Threshold \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Adjudicate the game as a loss when both engines agree that the (negative) score is below the given threshold for the duration of 6 consecutive plies. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 Verify Claims}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 VerifyClaims}}}{\f1\cf11 Verify Claims \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Verify result claims made by engines when they terminate the game. If needed, correct the results to a loss for the engine making the false claim. Needs \ldblquote Test Legality\rdblquote to be on in order to work. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 Detect Mates}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 DetectMates}}}{\f1\cf11 Detect Mates \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Let WinBoard detect checkmate and st alemate, even before the engine gets the chance to claim it. Useful with buggy engines, that exit without a claim, or just hang. Needs \ldblquote Test Legality\rdblquote to be on in order to work. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 Draw If Insufficient Material}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 DrawIfInsufficientMaterial}}}{\f1\cf11 Draw If Insufficient Material \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is on, WinBoard will recognize KBKB positions with equally colored Bishops, KBK, KNK, and KK positions as draws, even before the engine can claim them. Needs \ldblquote Test Legality\rdblquote to be on in order to work. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 Adjudicate Trivial Draws}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 AdjudicateTrivialDraws}}}{\f1\cf11 Adjudicate Trivial Draws \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is on, KBKB (with B on unlike color), KBKN , KNKN, KNNK, KRKR and KQKQ positions will be adjudicated draw after 6 ply. For KQKQ this is not really sound, and in the future it might be taken out of this option. But as long as tablebase adjudications are not implemented, it seems best to group this end-game with the trivial draws. Needs \ldblquote Test Legality\rdblquote to be on in order to work. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 N-Move Rule}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 N-MoveRule}}}{\f1\cf11 N-Move Rule \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Here you can set the number of reversible moves (non-pawn, non-capture) after which WinBoard should adjudicate a game as draw. Engine draw claims are always con sidered valid after 50 moves (in the context of \ldblquote Verify Claims\rdblquote ), but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to a smaller value if you are impatient. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 N-Fold Repetition Rule}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 N-FoldRepetitionRule}}}{\f1\cf11 N-Fold Repetition Rule \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Here you can set the number of repetitions of the same position that should occur in order for WinBoard to adjudicate the game as draw. Engine draw claims are always considered valid after 3 repetitions (in the context of \ldblquote Verify Claims \rdblquote ) , but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to 2 if you are impatient. (Do not set it to 1!) \par }\pard\plain \s5\li115\sb80\sl-240\slmult0\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid {\b \par }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ Tournament Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ TournamentOptns}}}{\b Tournament \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Tournament File}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 TournamentFIle}}}{\f1 Tournament file \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 To run a tournament, WinBoard needs a file to record its progress, so that you can later resume the tournament when it was interrupted, or set other WinBoard instances to work on it in parallel. So when you want to conduct anything more complex than a simple two-player match with the currently loaded engines, (i.e. when you select a list of participants), you must not leave this field blank. When you enter the name of an existing tournament file, WinBoard will ignore all other input specified in the dialog, and will take it f r om that tournament file instead, effectively joining that tournament (switching to match mode as soon as you press OK, starting to play games for it). This could be useful for resuming an interrupted tournament, or increasing the number of games played co n currently in a tournament that was already running through other WinBoard instances. Specifying a not-yet-existing file will cause WinBoard to create one with that name, according to the tournament parameters specified in the rest of the dialog, before it starts the tournament on \lquote OK\rquote . Provided that you specify participants; without participants no tournament file will be made, but other entered values (e.g. for the file with opening positions) will take effect. WinBoard can be configured to propose a filen ame derived from date and time with the }{\f1\uldb defaultTourneyName}{\f1 option, such that it is likely to not yet exist, so that you will start a new tourney every time you OK the dialog without altering the name. Using an existing tournament file can be more conveniently done by clicking the file icon, when WinBoard is properly installed (so that the .TRN extension is associated with WinBoard in tourney mode). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Select Engine}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 SelectEngine}}}{\f1 Select Engine / Tourney participants \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 With the Select Engine combobox you can pick an engine from your list of installed engines in the settings file, to be added to the tournament. The engines selected so far will be listed in the \lquote Tourney participants\rquote memo. The latter is a normal text edit, so you can use normal text-editing functions to delete engines you selected by accident, or change their order. Do not type names y ourself there, because names that do not exactly match one of the names from the combobox will lead to undefined behavior. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Tourney type}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 TourneyType}}}{\f1 Tourney type \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Here you can specify the type of tournament you want. WinBoard\rquote s intrinsic tournament manager support round-robins (t ype = 0), where each participant plays every other participant, and (multi-)gauntlets, where one (or a few) so-called \lquote gauntlet engines\rquote play an independent set of opponents. In the latter case, you specify the number of gauntlet engines. E.g. if you specified 10 engine, and tourney type = 2, the first 2 engines each play the remaining 8. Default:0 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Tourney Cycles}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 TourneyCycles}}}{\f1 Number of tourney cycles /}{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Games per Pairing}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 GamesPerPairing}} }{\f1 Games per pairing \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 You can specify tourneys where every two opponents play each other multiple times. Such multiple games can be played in a row, as specified by the \lquote number of games per pairing\rquote , or by repeating the entire tournament schedule a number of times (specified by the \lquote number of tourney cycles\rquote ). The total number of times two engine meet will be the product of these two. Games will be counted sequentially through different cycles for the purpose of color assignment or selection of starting positions. E.g. with 3 games per pairing, when engine A played B with w, b, w in the first cycle, it will play b, w, b against B in th e second cycle, and the first game in that cycle will be treated exactly as it would be when it was game number 4 of a simple two-player match. Default is 1 cycle; the number of games per pairing is the same as the default number of match games, stored in your settings file. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Swiss pairing}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 SwissPairing}}}{\f1 Use Swiss pairing engine \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard can also run Swiss tournaments, with the aid of an external \lquote pairing engine\rquote that tells it which engine to play against which, depending on previous results. In this case the pairing engine might atta ch significance to the order in which you specified the participants, and use it as seeding number (e.g. for systems that use ratings to determine pairing). Rounds are synonymous with tourney cycles in this case, and the number of games per pairing will b e forced to 1, meaning the actual specification for it (as well as for tourney type) will be ignored. In the standard install, WinBoard is configured (with the aid of the }{\f1\uldb pairingEngine}{\f1 option) to use a simple pairing engine that comes with it, and implements a non-official, but not all that bad approximation to Swiss. Default: no Swiss. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Sync after Round}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 SyncAfterRound}}}{\f1 Sync after round / }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Sync after Cycle}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 SyncAfterCycle}}}{ \f1 Sync after cycle \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 When multiple instances of WinBoard are used to concurrently run games for the same tourney, the games will be appended to the }{\f1\uldb saveGameFile}{\f1 in the order they finish, so that rounds or cycles could overlap (one starting before the other finishes). This can be inconvenient if you want to derive partial results from the games file, such as standings after each complete round. The sync opt ions, when on, will cause WinBoard to refrain from starting games of the next round or cycle before all games of the previous round or cycle are finished, which guarantees correct ordering in the games file. Default: sync after cycle, but not after round. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 File with Opening Lines}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 OpeningLines}}}{\f1 File with Opening Lines / Start Positions \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard can be requested to let games not start from the standard opening position, but from a position (possibly given as a sequence of moves from yet another position) specified in a file. Indeed, each game o f a pairing can start from a different position, or with a different given sequence of moves in such a file. The file, and the game in it can be specified with the command-line options }{\f1\uldb loadGameFile}{\f1 , }{\f1\uldb loadPositionFile}{\f1 , }{ \f1\uldb loadGameIndex}{\f1 , }{\f1\uldb loadPositionIndex}{\f1 , or in the Tournament Options dialog. (At most one of the two files should be given; games in PGN form also specify starting positions as FENs, and thus make the position file redundant, and therefore ignored.) The indexes can be used to specify the sequence nu mber of the game or position in the file to use for all games. To automatically step through all entities in a file, you have to tick \lquote Step through lines / positions in file\rquote . In this case the \lquote Use each line/position twice\rquote checkbox controls if you step aft er one or two games (so that each engine gets to play the position with both black and white). Note that the stepping occurs within a pairing; all pairings of a tourney will start with the first line or position in the file. You can specify that the index should \lquote rewind\rquote to 1 after it reaches a certain value. Default: No game or position file will be used. The default index if such a file is used is 1. \par }\pard\plain \s5\li115\sb80\sl-240\slmult0\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid {\b \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Load Game} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 LoadGameOptns}}}{\f1 }{\f1\ul Load Game}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change options used while loading games (}{\f1\uldb timeDelay}{\v\f1 timeDelay}{\f1 option). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Save Game} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 SaveGameOptns}}}{\f1 }{\f1\ul Save Game}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change options used for saving games (}{\f1\uldb autoSaveGames}{\v\f1 autoSaveGames}{\f1 , }{\f1\uldb oldSaveStyle}{\v\f1 oldSaveStyle}{\f1 , and }{\f1\uldb saveGameFile}{\v\f1 saveGameFile}{\f1 options). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Game List Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 GameListOptions}}}{\f1 }{\f1\ul Game List}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you select which information is displayed in the Game List window. \par }\pard\plain \s5\li115\sb80\sl-240\slmult0\nowidctlpar\outlinelevel4\adjustright \f5\fs20\ul\cgrid {\b \par }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ ICS Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\super #}{ ICSOptions}}}{\b ICS \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Auto Comment}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 AutoCommentCmd}}}{\f1 Auto Comment \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto C omment is on, any remarks made on ICS while you are observing or playing a game are recorded as a comment on the current move. This includes remarks made with the ICS commands }{\b\f1 say, tell, whisper, }{\f1 and }{\b\f1 kibitz}{\f1 . Limitation: remarks that you type yourself are not \par recognized; WinBoard scans only the output from ICS, not the input you type to it. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Auto Observe}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 AutobsCmd}}}{\f1 Auto Observe \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto Observe is on and you add a player to your }{\b\f1 gnotify}{\f1 list on ICS, WinBoard will automatically observe all of that player's games, unless you are do ing something else (such as observing or playing a game of your own) when one starts. On most chess servers, you can now do }{\b\f1 follow }{\b\i\f1 player}{\f1 instead, and the server will automatically observe all of }{\b\i\f1 player\rquote s}{\f1 games. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 Auto Kibitz}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 AutoKibitzCmd}}}{\f1\cf5 Auto Kibitz \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf5 Auto Kibitz controls how outp ut of computers playing on an ICS is handled. In many tournaments, computers are obliged to kibitz their thinking output to the ICS, and this option will do that automatically, without the engine having to know it. In addition, such kibitzed output by you r opponent will be kept out of the console window, and will be diverted to the engine-output window. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Get Move List}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 GetMoveListCmd}}}{\f1 Get Move List \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Get Move List is on, whenever WinBoard}{\i\f1 }{\f1 receives the first board of a new ICS game (or a different ICS game from the one it is currently displaying), it retrieves the list of past moves from the server. You can then review the moves with the Forward and Backward commands or save them with Save Game. You might want to turn off this option if you are observing several blitz games at once, to keep from wasting time and network bandwidth fetching the move lists over and over. If you turn this option on while a game is in progress, WinBoard}{\i\f1 }{\f1 immediately fetches the current move list. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Local Line Editing}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 LocalLineEditing}}}{\f1 Local Line Editing \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Local Line Editing is }{\b\f1 on}{\f1 , your machine handles echoing, backspacing, etc., for the characters that you type into the ICS Interaction window. Output is forwarded to the ICS only when you hit Enter.The Enter key produces a newline character, also known as Ctrl+J, \\ n, LF, linefeed, or decimal ASCII code 10. In this mode you can force a control character into the edit buffer by preceding it with Ctrl+Q (\ldblquote quote\rdblquote ); however, the edit buffer will not accept certain control characters even when they are quoted in this way. You can force a control character to be sent immediately to ICS, bypassing the edit buffer, by preceding it with Ctrl+S (\ldblquote send \rdblquote ). \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard keeps a history of lines you recently typed in Local Line Editing mode. You can bring back old lines by pressing the cursor up key in the text entry box. Press the cursor down key to go back down to newer lines. \par If Local Line Editing is }{\b\f1 off}{\f1 , all characters are sent to ICS as you type them. The Enter key produces a carriage return character, also known as Ctrl+M, \\r, CR, or decimal ASCII code 13. Use C trl+Backspace if you need the ASCII DEL character. You can enter any character code by holding down the Alt key and typing its decimal value (always beginning with 0) on the numeric keypad; this is a little-known standard feature of Windows. \par In both modes, if WinBoard}{\i\f1 \rquote s }{\f1 internal telnet protocol implementation is active, it translates all \\n characters to the standard telnet end-of-line sequence \\r\\n just before sending them out to ICS; see }{\f1\uldb telnetProgram}{ \v\f1 telnetProgram}{\f1 . \par It is generally not a good idea to turn off this option while connected to ICS. If you are tempted to do so because everything you type is being echoed an extra time, see the paragraph about extra echoes under }{\f1\uldb LIMITATIONS}{\v\f1 LIMITATIONS}{ \f1 below. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Quiet Play }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 QuietPlayCmd}}}{\f1 Quiet Play \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Quiet Play is on, WinBoard will automatically issue an ICS }{\b\f1 set shout 0}{\f1 command whenever you start a game and a }{\b\f1 set shout 1}{\f1 command whenever you finish one. Thus you will not be distracted by shouts from other ICS users while playing. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 Seek Graph}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 SeekGraphCmd}}}{\f1\cf5 Seek Graph, }{\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{\f1\cf5 Auto Refresh}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 AutoRefreshCmd}}}{\f1\cf5 Auto Refresh \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf5 If Seek Graph is on, you can s ummon up a graphical representation of players seeking a game on the ICS in stead of the chess board, by left-clicking the latter when you are not using it. The requested games are separated out by rating and time control. Rated, unrated and wild games ar e displayed in different colors, computers as squares, humans as dots. Hovering the mouse over a dot in the graph will display the details of the corresponding seek ad in the message field above the board. Left-clicking the dot will take up the challenge. Right-clicking dots will \lquote push them to the back\rquote , so you can see seek ads that might have been hidden behind it. Right-clicking off dots will refresh the graph, left-clicking off dots will take the graph down ad display the chess board again. \par In combination with Auto Refresh, the seek graph will be updated automatically. This is only implemented for the FICS and ICC servers. To make switching on of this option effective might require you to log off and on again to the ICS, as it requires changing ICS settin gs that are locked during a session. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 Background Observe}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 BackgndobsCmd}}}{\f1\cf5 Background Observe, }{\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{\f1\cf5 Dual Board}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{ \f1\cf5 DualBoardCmd}}}{\f1\cf5 Dual Board \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf5 If Background Observe is on, boards sent to you by the ICS when you are playing, but which are not of your game, (but of games you are observing), will not be displayed automatically. In stead WinBoard will remember the last board it received that way, and display it when you press the right mouse button in stead of the board of your own game. This feature is meant to enable bughouse players a peek at their partner\rquote s game, without the need to log on to the ICS a second time. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf5 If in addition Dual Board is also on, such background games are even displayed on a second board, side by side with your own game, so that it is always in view. This feature is experimental, and largely undeveloped; there is no animation of moves on this second board, while the effets are undefined if the board format of the observed game is not the same as that of your own game. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Premove}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 PremoveCmd}}}{\f1 Premove \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {Premove allows you to play a move on the board before you have received your opponent\rquote s move. This move is highlighted on the board using the }{\uldb Premove Highlight }{\v\uldb premoveHighlightColor}{ color, and is sent to the ICS as soon as your opponent\rquote s move is received. To cancel a premove, either click twice on the piece that was premoved or premove an illegal move. \par This group of controls allows you to set the following options: }{\uldb premove}{\v premove}{, }{\uldb premoveWhite}{\v premoveWhite}{, }{\uldb premoveWhiteText}{\v premoveWhiteText}{, }{\uldb premoveBlack}{\v premoveBlack}{, }{\uldb premoveBlackText}{\v premoveBlackText}{. \par }\pard\plain \s2\li120\sb80\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\cf5\super K}{\cf5 One-Click Move}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\cf5\super #}{\cf5 OneClickMoveCmd}}}{\cf5 One-Click Move \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf5 When One-Click Move is set, }{\v\cf5 icsAlarmTime}{\cf5 a click on an own piece will immediately move that piece if it only has a single legal move, without waiting for you to click a to-square. Similarly, clicking an opponent piece or empty square will immediately perform the move to th at square, if only a single legal move to it existed. This is the mouse equivalent of having to type only e4 when you mean e2-e4. Finally, double clicking an own piece (or clicking an already selected piece) will make it execute its only capture, which ca n save you some time if the target square was far away. Legality testing has to be switched on for this to work. \par }\pard\plain \s2\li120\sb80\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ ICS Alarm}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ ICSAlarm}}}{ICS Alarm \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {When }{\b icsAlarm}{ is set to True, the }{\uldb alarm sound}{\v soundIcsAlarm}{ is played when your clock counts down to }{\uldb icsAlarmTime}{\v icsAlarmTime}{ seconds . For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the }{\uldb icsAlarmTime}{\v icsAlarmTime}{. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 ICS Interaction Colors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ICSInteractionColors}}}{\f1 ICS Interaction Colors \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the colors and type styles that WinBoard uses to distinguish betw een different types of messages in the ICS Interaction window. The types distinguished are: shout, sshout, channel 1 tell, other channel tell, kibitz (or whisper), personal tell (or new message notification), challenge, request (including abort, adjourn, draw, pause, and takeback), seek, and normal (all other messages). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 Startup Chat Boxes}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 StartupChatBoxes}}}{\f1\cf5 Startup Chat Boxes \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 You can put a semicolon-separated list of ICS handles or channel numbers here, WinBoard will open a chat window for each handle at startup in ICS mode. (See the Open Ch at Window command.) \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Sounds}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Sounds}}}{\f1 }{\f1\ul Sounds}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the sounds that WinBoard plays for various events. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Move Sound}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 MoveSound}}}{\f1 If the Move sound is on, WinBoard alerts you by playing a sound after each of your opponent's moves (or after every move if you are observing a game on the I nternet Chess Server). The sound is not played after moves you make or moves read from a saved game file. If you turn on the Move sound when using WinBoard with the Internet Chess Server, you will probably want to give the }{\b\f1 set bell 0}{\f1 command to the ICS. Ot herwise the ICS will send a bell character after every move (not just yours), causing WinBoard to play the ICS Bell sound too. Alternatively, you could turn off the ICS Bell sound in WinBoard, but that might cause you to miss ICS alerts for other interest ing events. \par The other sound events correspond directly to the types of messages that the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1 option knows how to colorize. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Communications}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Communications}}}{\f1 }{\f1\ul Communications}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Lets you change the communication port parameters when the }{\f1\uldb internetChessServerComPort}{\v\f1 internetChessServerComPort}{\f1 option is in use. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Save Settings Now}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 SaveSettings}}}{\f1 }{\f1\ul Save Settings Now}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Save the current option settings to a file, along with the current window sizes and positions, to be automatically reloaded next time WinBoard is run. See }{\f1\uldb Settings}{\v\f1 Settings}{\f1 for the fine points. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Save Settings on Exit}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 SaveSettingsOnExit}}}{\f1 }{\f1\ul Save Settings on Exit}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is on, the current settings are automatically saved when WinBoard exits, as with Save Settings Now. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Help Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 HelpMenu}}}{\b0\f1\fs18\up6 }{\cs58\f1\fs20\super ${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Help Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Help Menu \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Help Contents}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 HelpContents}}}{\f1 Help Contents \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Brings up this help file, starting at the Contents page. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Search for Help on}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 SearchHelp}}}{\f1 Help Index \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Brings up this help file, starting at the Index/Find dialog. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 How to Use Help}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 HelpHelp}}}{\f1 How to Use Help \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Brings up the standard help file that explains how to use Windows Help. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 About WinBoard}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 AboutWinBoard}}}{\f1 About WinBoard \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Displays the WinBoard version number. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 ICS Interaction Context Menu}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ICSInteractionContextMenu}}}{\b0\f1\fs18\up6 }{\cs58\f1\fs20\super ${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 ICS Interaction Context Menu}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +} {\f1 main}}}{\f1\fs20 ICS Interaction Context Menu \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 To see this m enu, press the right mouse button anywhere in the output (upper) pane of the ICS Interaction window. Pressing the right mouse button in the input (lower) pane gives a standard editing context menu, not described here. Use the }{\b\f1 help}{\f1 command on ICS to learn what these commands mean. \par You can customize the lower part of this menu (below the Paste option) by setting the }{\f1\uldb icsMenu}{\v\f1 icsMenu}{\f1 option. The easiest way to accomplish this is to edit your }{\f1\uldb settings file}{\v\f1 settings}{\f1 with Notepad or another plain text editor. Sorry, there is no graphical user interface for customizing the menu. \par }{\f1\cf5 Note that the menu will pop up under the mouse pointer on the down-click, and that you can already select an item from it on the up-click. The item that is configured to pop up under the mouse pointer can thus be selected by a \lquote blind \rquote static click. If you don\rquote t want that, but rather wants the menu to stay up after the first static click, you should configure an inactive menu item under the pointer. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Copy and Paste}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 CopyAndPaste}}}{\f1 Copy and Paste \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Copies the current selection to the clipboard, then pastes it to the input box. As a shortcut to this function, you can press the middle mouse button (if you have one), or Shift plus the right mouse button. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Copy}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Copy}}}{\f1 Copy \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Copies the current selection to the clipboard. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Paste}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Paste}}}{\f1 Paste \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Pastes the clipboard contents to the input box. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559 Who}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 Who}}}{\f1 Who \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote who\rdblquote }{\b\i\f1 }{\f1 to ICS. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559 Players}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 Players}}}{\f1 Players \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote players\rdblquote }{\b\i\f1 }{\f1 to ICS. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559 Games}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 Games}}}{\f1 Games \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote games\rdblquote }{\b\i\f1 }{\f1 to ICS. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559 Sought}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 Sought}}}{\f1 Sought \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote sought\rdblquote }{\b\i\f1 }{\f1 to ICS. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Tell}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Tell}}}{\f1 Tell (name) \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Inserts \ldblquote tell }{\i\f1 name }{\f1 \rdblquote }{\b\i\f1 }{\f1 into the input box. The string }{\i\f1 name }{\f1 is the current selection if it is not empty. Otherwise }{\i\f1 name }{\f1 is the word surrounding the mouse position, where a \ldblquote word\rdblquote is a string of letters, digits, or hyphens (-), such as an ICS user handle or game number. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\cf5\revised\super\revauth1\revdttm-1506646559 K}{\f1\cf5\revised\revauth1\revdttm-1506646559 }{\f1\cf5 Open Chat Box}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\cf5\revised\super\revauth1\revdttm-1506646559 #}{\f1\cf5\revised\revauth1\revdttm-1506646559 }{\f1\cf5 OpenChatbox}}}{\f1\cf5 Open Chat Box (name) \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Causes WinBoard to open a new Chat Window, with }{\i\f1\cf5 name}{\f1\cf5 in the chat Partner field, where }{\i\f1\cf5 name}{\f1\cf5 is as defined above. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Message}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Message}}}{\f1 Message (name) \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Inserts \ldblquote message }{\i\f1 name }{\f1 \rdblquote }{\b\i\f1 }{\f1 into the input box, where }{\i\f1 name}{\f1 is as defined above. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Finger}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Finger}}}{\f1 Finger (name) \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote finger }{\i\f1 name}{\f1 \rdblquote }{\b\i\f1 }{\f1 to ICS, where }{\i\f1 name}{\f1 is as defined above. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Vars}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Vars}}}{\f1 Vars (name) \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote vars }{\i\f1 name}{\f1 \rdblquote }{\b\i\f1 }{\f1 to ICS, where }{\i\f1 name}{\f1 is as defined above. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Observe}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Observe}}}{\f1 Observe (name) \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote observe }{\i\f1 name}{\f1 \rdblquote }{\b\i\f1 }{\f1 to ICS, where }{\i\f1 name}{\f1 is as defined above. Here }{\i\f1 name}{\f1 can be either a user handle or a game number. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Match}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Match}}}{\f1 Match (name) \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote match }{\i\f1 name}{\f1 \rdblquote }{\b\i\f1 }{\f1 to ICS, where }{\i\f1 name}{\f1 is as defined above. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559 Play}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 Play}}}{\f1 Play (name) \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sends the command \ldblquote play }{\i\f1 name}{\f1 \rdblquote }{\b\i\f1 }{\f1 to ICS, where }{\i\f1 name}{\f1 is as defined above. Here }{\i\f1 name}{\f1 can be either a user handle or a seek ad number. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Buttons}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Buttons}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super $}{\f1 Buttons}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\b0\f1\fs18\up6 }{\f1\fs20 BUTTONS \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Back to Start}}}{\f1 << \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Same as }{\f1\uldb Back to Start}{\v\f1 BacktoStart}{\f1 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Backward}} }{\f1 < \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Same as }{\f1\uldb Backward}{\v\f1 Backward}{\f1 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Pause}}}{ \f1 P \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Same as }{\f1\uldb Pause}{\v\f1 Pause}{\f1 . The button label changes to }{\b\f1 C}{\f1 while WinBoard is pausing. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Forward}}} {\f1 > \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Same as }{\f1\uldb Forward}{\v\f1 Forward}{\f1 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Forward to End}}}{\f1 >> \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Same as }{\f1\uldb Forward to End}{\v\f1 ForwardtoEnd}{\f1 . \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \par }{\cf2 Note that using the mouse wheel has the same effect as using the < or > button. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Command Line Options}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Options}}}{\f1\fs20 }{\cs58\f1\fs20\super #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Options}}}{\f1\fs20 }{\cs58\f1\fs20\super ${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $ }{\f1 Command Line Options}}}{\f1\fs20 }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 COMMAND LINE OPTIONS \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 All WinBoard options can be set either on the command line (if you start WinBoard by typing into an MSDOS Prompt box), in the Properties/Shortcut/Target box of a Windows s hortcut, in a }{\f1\uldb settings file}{\v\f1 settings}{\f1 , or in the Additional Options box of the WinBoard startup dialog. Exactly the same syntax is used in all four places. Most options can also be set from the menus and saved using }{\f1\uldb Save Settings Now}{\v\f1 SaveSettings}{\f1 or }{\f1\uldb Save Settings on Exit}{\v\f1 SaveSettingsOnExit}{\f1 , so most people will not need to read this section. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Most options have two names, a long one that is easy to read and a short one that is easy to type. To turn on a boolean (true/false) option }{\i\f1 opt}{\f1 , you can just give its short name preceded by a minus sign or slash (-}{\i\f1 opt}{\f1 or /}{\i\f1 opt}{\f1 ); to turn one off, prefix the short name by an \ldblquote x\rdblquote or an extra minus sign (-x}{\i\f1 opt}{\f1 or /-}{\i\f1 opt}{\f1 ). To set any other kind of option, or to set a boolean option using its long name, give the value after the name, separated by a space, colon, or equal sign. (-}{\i\f1 opt}{\f1 23 or /}{\i\f1 option}{\f1 :true). If a string option contains spaces or special characters, enclose it in double quotes and use the \\ quoting convention of C to name the special characters. Alternatively, you can enclose a string value in curly braces (/opt=\{string\} ), as long as the value does not contain a closing curly brace. If a filename option contains spaces, enclose it in either single or double quotes. In filename options, the \\ character is not treated speciall y, so use single quotes around the outside of the value if it has double quotes inside (and vice versa). \par When you start WinBoard, it will pop up the Startup dialog box unless you provide sufficient options on the command line for WinBoard to determine whic h major mode to be in and what engines to use or chess server to connect to. To bypass this box, you must at minimum give one of the three options }{\f1\uldb /cp}{\v\f1 cp}{\f1 , /}{\f1\uldb ics}{\v\f1 ics}{\f1 , or /}{\f1\uldb ncp}{\v\f1 ncp}{\f1 . If you give the /cp option, you must also give the /}{\f1\uldb fcp}{\v\f1 fcp}{\f1 and /}{\f1\uldb scp}{\v\f1 scp}{\f1 options. If you give the /ics option, you must also give the /}{\f1\uldb icshost}{\v\f1 icshost}{\f1 option. \par }\pard\plain \s29\fi-240\li360\sb60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\uldb Chess Engine Options}{\v\f1 ChessEngineOptions}{\f1 \par }{\f1\uldb UCI Engine Support !NEW!}{\v\f1 UCIEngineSupport}{\f1 \par }{\f1\uldb Internet Chess Server Options}{\v\f1 InternetChessServerOptions}{\f1 \par }{\f1\uldb Load and Save Options}{\v\f1 LoadAndSaveOptions}{\f1 \par }{\f1\uldb User Interface Options}{\v\f1 UserInterfaceOptions}{\f1 \par }{\f1\uldb Adjudication Options !NEW!}{\v\f1 AdjudicationOptions}{\f1 \par }{\f1\uldb Other Options}{\v\f1 OtherOptions}{\f1 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Chess Engine Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Chess Engine Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ChessEngineOptions}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 Chess Engine Options \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 cp}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 cp}}}{\f1 /cp}{\b0\f1 or}{\f1 /xcp}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 chessProgram}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 chessProgram}}}{\f1 /chessProgram }{\i\f1 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If true, puts WinBoard in chess engine mode. In this mode, you can play against a chess program running on your PC or use it as an analysis partner. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 tc}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 tc}}}{\f1 /tc }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 timeControl}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 timeControl}}}{\f1 /timeControl }{\i\f1 minutes[:seconds] \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Each player begins with his clock set to the timeControl period. Default: 5 minutes. The additional options movesPerSession and timeIncrement are mutually exclusive. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 mps}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 mps}}}{\f1 /mps }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 movesPerSession}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 movesPerSession}}}{\f1 /movesPerSession }{\i\f1 moves}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 When both players have made movesPerSession moves, a new timeControl period is added to both clocks. Default: 40 moves. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 inc}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 inc}}}{\f1 /inc }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 timeIncrement}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 timeIncrement}}}{\f1 /timeIncrement }{\i\f1 seconds \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is specified, movesPerSession is ignored. Instead, after each player's move, timeIncrement seconds are added to his clock. Use -timeIncrement 0 if you want to require the entire game to be played in one timeControl period, with no increment. D efault: -1, which specifies movesPerSession mode. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 clock }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 clock }}}{\f1 /clock }{\b0\f1 or }{\f1 /xclock}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 clockMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 clockMode}}}{\f1 /clockMode }{\i\f1 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Determines whether or not to display the chess clocks. If clockMode is False, the clocks are not shown, but the side that is to play next is still highlighte d. Also, unless searchTime is set, the chess engine still keeps track of the clock time and uses it to determine how fast to make its moves. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 st}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 st}}}{\f1 /st }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 searchTime }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 searchTime }}}{\f1 /searchTime }{\i\f1 minutes[:seconds]}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Tells the chess engine to spend at most the given amount of time searchi ng for each of its moves. Without this option, the engine chooses its search time based on the number of moves and amount of time remaining until the next time control. Setting this option also sets clockMode to False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 sd}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 sd}}}{\f1 /depth }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 searchDepth}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 searchDepth}}}{\f1 /searchDepth }{\i\f1 number}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 T ells the chess engine to look ahead at most the given number of moves when searching for a move to make. Without this option, the engine chooses its search depth based on the number of moves and amount of time remaining until the next time control. With t he option, the engine will cut off its search early if it reaches the specified depth. \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 firstNPS}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 firstNPS}}}{\f1\cf11 /firstNPS }{\i\f1\cf11 number}{\f1\cf11 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf11 secondNPS}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 secondNPS}}}{\f1\cf11 /secondNPS }{\i\f1\cf11 number}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Tells the chess engine to use an internal time standard based on its node count, rather then wall-clock time, to make its time de cisions. The time in virtual seconds should be obtained by dividing the node count through the given }{\i\f1\cf11 number}{\f1\cf11 , like the number was a rate in nodes per second. WinBoard will manage the clocks in accordance with this, relying on the number of nodes reported by the engine in its thinking output. If }{\i\f1\cf11 number}{\f1\cf11 equals zero, it can obviously not be used to convert nodes to seconds, and the time reported by the engine is used to decrement the WinBoard clock. The engine is supposed to report in CPU time it uses, rather t han wall-clock time in this mode. This option can provide fairer conditions for engine-engine matches on heavily loaded machines, or with very fast games (where the wall clock is too inaccurate). \ldblquote Show Thinking\rdblquote must be on for this option to work. Not many engines might support this yet! \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 firstTimeOdds}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 firstTimeOdds}}}{\f1\cf11 /firstTimeOdds }{\i\f1\cf11 factor}{\f1\cf11 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf11 secondTimeOdds}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 secondTimeOdds}}}{\f1\cf11 /secondTimeOdds }{\i\f1\cf11 factor}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Reduces the time given to the mentioned engine by the given }{\i\f1\cf11 factor}{\f1\cf11 . If pondering is off, the effect is indistinguishable from what would happen if the engine was running on a }{\i\f1\cf11 factor}{\f1\cf11 times slower machine. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559 }{\f1\cf11 timeOddsMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 }{\f1\cf11 timeOddsMode}}}{\f1\cf11 /timeOddsMode }{\i\f1\cf11 mode \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 This option determines how the case is handled when both engines have a time-odds handicap. If mode=1, the engine that gets the most time will always get the nominal time, as specified by the time-control options, and its opponent\rquote s time is normalized similarly. If mode=0, both play with reduced time. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559 ponder}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid { \cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 ponder}}}{\f1 /ponder}{\b0\f1 or }{\f1 /xponder}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {\cs58\f1\revised\super\revauth1\revdttm-1506646559 K}{\f1\revised\revauth1\revdttm-1506646559 ponderNextMove}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\pnrnot1\adjustright \f5\fs20\cgrid {\cs58\f1\revised\super\revauth1\revdttm-1506646559 #}{\f1\revised\revauth1\revdttm-1506646559 ponderNextMove}}}{\f1 /ponderNextMove }{\i\f1 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Ponder Next Move}{\v\f1 ponderNextMoveCmd}{\f1 option. Default: True. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 thinking}} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 thinking}}}{\f1 /thinking}{\b0\f1 or }{\f1 /xthinking}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 showThinking}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 showThinking}}}{\f1 /showThinking }{\i\f1 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Show Thinking}{\v\f1 showThinkingCmd}{\f1 option. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 periodic } }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 periodic}}}{\f1 /periodic }{\b0\f1 or }{\f1 /xperiodic}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 periodicUpdates}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 periodicUpdates}}}{ \f1 /periodicUpdates }{\i\f1 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Periodic Updates}{\v\f1 periodicUpdatesCmd}{\f1 option. Default: True. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 mg }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 mg }}}{\f1 /mg }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 matchGames }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 matchGames}}}{\f1 /matchGames }{\i\f1 n \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Automatically runs an }{\b\i\f1 n}{\i\f1 -}{\f1 game match between two chess engines, with alternating colors. If the }{\f1\uldb loadGameFile}{\v\f1 loadGameFile}{\f1 or } {\f1\uldb loadPositionFile}{\v\f1 loadPositionFile}{\f1 option is set, WinBoard will start each game with the given opening moves or the given position; otherwise, the games will start with the standard initial chess position. If the }{\f1\uldb saveGameFile}{\v\f1 saveGameFile}{\f1 option is set, a move record for the match will be appended to the specified file. If the }{\f1\uldb savePositionFile}{\v\f1 savePositionFile}{\f1 option is set, the final position reached in each game of the match will be appended to the specified file. When the match is over, WinBoard will display the match score and exit. Default: 0 (do not run a match). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 mm }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 mm }}}{\f1 /mm }{\b0\f1 or }{\f1 /xmm}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 matchMode }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 matchMode }}}{\f1 /matchMode }{\i\f1 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Provided for backward compatibility. If true and matchGames=0, sets matchGames=1. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 matchPause}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 matchPause}}}{\f1\cf11 /matchPause }{\i\f1\cf11 number}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Sets the length of the pause between games in match mode to }{\i\f1\cf11 number}{\f1\cf11 msec. Default value is 10000, i.e. 10 sec. (If this pause is too short, engines not implementing \lquote ping\rquote will sometimes send th e last move of their previous game only when a new game has started, at which time the move is illegal, and causes them to forfeit the game.) \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 fd}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 fd }}}{\f1 /fd }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 firstDirectory}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 firstDirectory}}}{\f1 /firstDirectory }{\i\f1 dir \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 sd}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super #}{\f1 sd }}}{\f1 /sd }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 secondDirectory}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 secondDirectory}}}{\f1 /secondDirectory }{\i\f1 dir}{\cs58\f1\super }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf11 fcp }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super #}{\f1\cf11 fcp }}}{\f1 /fcp }{\b0\f1 or}{\f1 }{ \cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super K}{\f1\cf11 firstChessProgram }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super #}{\f1\cf11 firstChessProgram }}}{\f1 /firstChessProgram }{\i\f1 command\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super K}{\f1\cf11 scp }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super #}{\f1\cf11 scp }}}{\f1 /scp }{\b0\f1 or}{\f1 }{\cs58\f1\super K {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super K}{\f1\cf11 secondChessProgram }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf11\super #}{\f1\cf11 secondChessProgram}{\f1 }}}{\f1 /secondChessProgram }{\i\f1 command}{\cs58\f1\super }{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Names of the chess engines and working directories in which they are to be run. The second chess engine is started only in Two Machines (match) mode. These arguments are parsed as filenames; that is, the \\ character is interpreted literally, not as a C-style escape. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The }{\i\f1 dir}{\f1 argument specifies the initial working directory for the chess engine. It should usually be the directory where the engine and its working files are installed. If }{\i\f1 dir}{\f1 is not an absolute pathname, it is interpreted relative to the directory from which WinBoard.exe itself was loaded. The }{\i\f1 dir}{\f1 argument is ignored if the chess engine is being run on a remote machine (see firstHost and secondHost below). The default value for }{\i\f1 dir }{ \f1 "", meaning that the chess engine is expected to be installed in the same directory as WinBoard. \par The }{\i\f1 command}{\f1 argument is actually the command line to the chess engine, so if the engine itself needs command line arguments, you can include them by enclosing }{\i\f1 command}{\f1 in single or double quotes. If the engine name or an engine argument has a space in it, use single quotes around the whole }{\i\f1 command, }{\f1 and inside them use double quotes around each item that contains spaces. If the engine name has more than one period in it (for example, }{\f2 QChess1.5.exe}{\f1 ), you must include the "}{\f2 .exe}{\f1 " extension; otherwise you can leave it out. The default value for }{\i\f1 command}{\f1 is "", which brings up the startup dialog to ask which engines you want. \par Examples: \par }\pard\plain \s19\fi-518\li1036\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 WinBoard /cp /fd="C:\\Program Files\\Crafty" /fcp=WCrafty-15.12.exe /scp=GNUChess \par WinBoard /cp /fd="C:\\Miracle Games" /fcp='"Miracle Chess.exe" /wow' /scp=GNUChess \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 The basic rule is thus that what is inside the quotes delimiting the argument to /fcp and /scp, all goes to the engine, and is ignored by WinBoard. WinBoard 4.3.13 and later, however, knows an exception to this: If, within the quotes, the word WBopt appears, everything that follows this word will be interpreted as a WinBoard argument, in stead of being passed to the engine on startup of the latter. (The WBop t itself is also not passed to the engine.) This possibility of hiding WinBoard arguments in the engine command is provided in order to create options that follow the engine in a tournament, when a tournament manager like PSWBTM is used to invoke WinBoard. Because, in order to apply to a given engine, some options need to know if they apply to first or second engine, which might vary during the tournament, options hidden inside the engine command-line can contain \lquote %s\rquote which will be replaced at the time the option is used by \lquote first\rquote or \lquote second\rquote , as applicable. \par Examples: \par }\pard\plain \s19\fi-518\li1036\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\cf11 WinBoard /cp /fd="C:\\Engines\\Crafty" /fcp=\rdblquote WCrafty-15.12 WBopt /%sTimeOdds=2\rdblquote /scp=GNUChess \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Meaning that Crafty will have to play with half the time GNUChess will get. \par }\pard\plain \s19\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 fh }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 fh }}}{\f1 /fh }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 firstHost }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 firstHost }}}{\f1 /firstHost }{\i\f1 host\line }{ \cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 sh }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super #}{\f1 sh }}}{\f1 /sh }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 secondHost }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 secondHost }}}{\f1 /secondHost }{\i\f1 host}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Hosts on which the chess engines are to run. The default for each is "localhost". If you specify another host, WinBoard}{\i\f1 }{\f1 uses }{\f1\uldb rsh}{\v\f1 rsh}{\f1 to run the chess program there. The /fd and /sd flags do not work in conjunction with the se flags; if you need a remote chess engine to run somewhere other than your default login directory on the remote machine, you will have to include a "cd" command in the argument to /fcp or /scp. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 initString }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 initString}}}{\f1 /firstInitString }{\b0\f1 or }{\f1 /initString }{\i\f1 string\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 secondInitString}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 secondInitString}}}{\f1 /secondInitString }{\i\f1 string}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The strings that are sent to initialize the chess engines. Default: "new\\nrandom\\n". The "\\n" sequences represent newlines. You can type "\\ n" on the command line or in a }{\f1\uldb settings file}{\v\f1 settings}{\f1 , and WinBoard will convert it to a newline. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 All chess engines require the "new" command to start a new game. \par You can remove the "random" command if you like; including it causes engines that implement this command (e.g. GNU Chess) to randomize their move selection slightly so that it doesn't play the same mo ves in every game. Even without "random", many engines randomize their choice of moves from their opening book. You can also try adding other commands to the initString; see the applicable engine documentati{\*\bkmkstart _Hlt386545814}o {\*\bkmkstart _Hlt386567280}{\*\bkmkend _Hlt386545814}n{\*\bkmkend _Hlt386567280} for details. Crafty ignores the "random" command; see its documentation for the commands it accepts. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 initString }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 initString}}}{\f1 /firstComputerString }{\i\f1 string\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 secondInitString}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 secondInitString}} }{\f1 /secondComputerString }{\i\f1 string}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If the chess engine is playing against another computer program (whether locally or on a chess server), by default the command "computer\\n " is sent to it. Some chess engines change their playing style when they receive this command. If you do not want the engine to know when it is playing another computer, you can set the string to "". \par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {Note that the computer string is sent to the engine afte r most other initialization commands, and is thus ideal for hiding a WinBoard-protocol command in that should be sent only to one engine, when the WinBoard option that normally specifies this command cannot be differentiated by engine, but is always sent to both engines. E.g. if you want one of the engines to ponder, and the other not. Because it is sent last, it can overrule earlier commands. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 fb }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 fb }}}{\f1 /fb }{\b0\f1 or }{\f1 /xfb}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 firstPlaysBlack }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 firstPlaysBlack}}} {\f1 /firstPlaysBlack }{\i\f1 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 In games between two chess programs, the firstChessProgram normal ly plays white. (This is a change from earlier versions of WinBoard.) If this option is True, firstChessProgram plays black. In a multi-game match, this option affects the colors only for the first game; they still alternate in subsequent games. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 reuse}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 reuse}}}{\f1 /reuse}{\cs58\f1\super }{\b0\f1 or }{\f1 /xreuse}{\b0\f1 , or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 reuseFirst}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 reuseFirst}}}{\f1 /reuseFirst}{\i\f1 true|false\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 reuse2}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 reuse2}}}{\f1 /reuse2}{\cs58\f1\super }{\b0\f1 or }{\f1 /xreuse2}{\b0\f1 , or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 reuseSecond}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 reuseSecond}}}{\f1 /reuseSecond}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is True (the default), WinBoard}{\i\f1 }{\f1 uses the same chess engine process repeatedly when playing multiple games. If the option is False, WinBoard kills off the chess engine after every game and starts a fresh one for the next game. Starting a fresh chess engine can be slow, so it is not recommended. However, some chess engines may not work properly when reused, such as versions of Crafty earlier than 12.0. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 firstProtocolVersion}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 firstProtocolVersion}}}{\f1 /firstProtocolVersion }{\i\f1 ver\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 secondProtocolVersion}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 secondProtocolVersion}}}{\f1 /secondProtocolVersion }{\i\f1 ver}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option specifies which version of the chess engine communication protocol to use. By default, version-number is 2. In version 1, the "protover" command is not sent to the engine; since version 1 i s a subset of version 2, nothing else changes. Other values for version-number are not supported. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 firstScoreAbs}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 firstScoreAbs}}}{\f1\cf6 /firstScoreAbs}{\i\f1\cf6 true|false\line }{\cs58\f1\cf6\super K {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 secondScoreAbs}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super #}{\f1 }{\f1\cf6 secondScoreAbs}}}{\f1\cf6 /secondScoreAbs}{\i\f1\cf6 true|false \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If this option is true, the score reported by the engine is taken to be that in favor of white, even when the engine plays black. Important when winboard uses the score for adjudications, or in PGN reporting. This can be a useful option in combination with WBopt in the engine command-line, see under /fcp.}{\cf6 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2 absoluteAnalysisScore}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 absoluteAnalysisScore}}}{\f1 /absoluteAnalysisScore }{\i\f1 true|false \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 When this opti on is switched on, scores will be reported in the Engine Output window from the white point of view during analysis. When off, and in other modes, it will be reported from the point of view of the side to move. (Note that many engines violate this rule wh ile pondering!) Default: true.}{ \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{ \f1\cf2 niceEngines}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 niceEngines}}}{\f1\cf2 /niceEngines}{\i\f1\cf2 priority \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 This option allows you to lower the priority of the engine processes, so that the generally insatiable hunger for CPU time of chess engines does not interfere so much with smooth operation of WinBoard ( or the rest of your system). Try priority = 10 or even 20 to lower the priority of the engines. Negative values could increase the engine priority, which is not recommended.}{\cf6 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{ \f1\cf2 firstOptions}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 firstOptions}}}{\f1\cf2 /firstOptions}{\i\f1\cf2 string\line }{\cs58\f1\cf2\super K {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2 secondOptions}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\cf2\super #}{\f1\cf2 secondOptions}}}{\f1\cf2 /secondOptions}{\i\f1\cf2 string \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 The given string is a comma-separated list of (option name, option value) pairs, like the following example: \ldblquote style=Karpov,blunder rate=0\rdblquote . If the options announced by the engine at startup through the feature commands of WinBoard protocol matches one of the option names (i.e. \ldblquote style\rdblquote or \ldblquote blunder rate\rdblquote ), it would be set to the given value (i.e. \ldblquote Karpov\rdblquote or 0) through a corresponding option command to the engine. This provided that the type of the value (text or numeric) matches as well.}{\cf6 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{ \f1\cf2 firstNeedsNoncompliantFEN}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 firstNeedsNoncompliantFEN}}}{\f1\cf2 /firstNeedsNoncompliantFEN}{\i\f1\cf2 string \line }{\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2 secondNeedsNoncompliantFEN}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 secondNeedsNoncompliantFEN}}}{\f1\cf2 /secondNeedsNoncompliantFEN}{\i\f1\cf2 string \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 The castling rights and e.p. fields of the FEN sent to the mentioned engine with the setboard command will be replaced by the given string. This can for instance be used to run engines that do not understand Chess960 FENs in variant fisch erandom, to make them at least understand the opening position, through setting the string to \ldblquote KQkq -\rdblquote . (Note you also have to give the e.p. field!) Other possible applications are to provide work-arounds for engines that want to see castling and e.p. fiel ds in variants that do not have castling or e.p. (shatranj, courier, xiangqi, shogi) so that WinBoard would normally omit them (string = \ldblquote - -\ldblquote , or to add variant-specific fields that are not yet supported by WinBoard (e.g. to indicate the number of checks in 3check). \par }{ \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Tournament Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Tournament Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 TournamentOptions}}}{\f1\fs20 Tournament Options \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 tf}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 tf}}}{\f1 /tf }{\i\f1 filename}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 tourneyFile}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 tourneyFile}}}{\f1 /tourneyFile }{\i\f1 filename}{\f1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Specifies the name of the tournament file used in match mode to conduct a multi-player tournament}{\v\f1 ICSLogon}{\f1 . This file is a special settings file, which stores the description of the tournament (including progress info), through normal options (e.g. for time control, load and save files), and through some special-purpose options listed below. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 tt }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 tt }}}{\f1 /tt }{\i\f1 number}{\b0\f1 or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 tourneyType }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 tourneyType }}}{\f1 /tourneyType }{\i\f1 number}{ \f1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Specifies the type of tourney: 0 = round-robin, N>0 = (multi-)gauntlet with N gauntlet engines, -1 = Swiss through external pairing engine}{\v\f1 ICSLogon}{\f1 . Volatile option, but stored in tourney file. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 cy }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 cy }}}{\f1 /cy }{\i\f1 number}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 tourneyCycles }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 tourneyCycles }}}{ \f1 /tourneyCycles }{\i\f1 number}{\f1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Specifies the number of cycles in a tourney}{\v\f1 ICSLogon}{\f1 . Volatile option, but stored in tourney file. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 participants }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 participants}}}{\f1 /participants }{\i\f1 list}{\f1 \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The list is a multi-line text string that specifies engines occurring in the /firstChesProgramNames list in the settings file by their (implied or explicitly given) nickname, one engine per line. The ment ioned engines will play in the tourney. Volatile option, but stored in tourney file. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 results }} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 results}}}{\f1 /results }{\i\f1 string}{\f1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The string of +=- characters lists the result of all played games in a toruney. Games currently playing are listed as *, while a space indicates a game that is not yet played or playing (usually because it was playing, and the aborted). Volatile option, but stored in tourney file. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 defaultTourneyName }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 defaultTourneyName}}}{\f1 /defaultTourneyName }{\i\f1 string}{\f1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Specifies the name of the tournament file WinBoard should propose when the Tournament Options di alog is opened. Any %y, %M, %d, %h, %m, %s in the string are replaced by the current year, month, day of the month, hours, minutes, seconds of the current time, respectively, as two-digit number. A %Y would be replaced by the year as 4-digit number. Defau lt: empty string. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 pairingEngine}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 pairingEngine}}}{\f1 /pairingEngine }{\i\f1 filename}{\f1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Specifies the external program to be used to pair the participants in Swiss tourneys. WinBoard communicates with this engine in the same way as it communicates with Chess engines. The only commands sent to the pairing engine are \ldblquote results }{ \i\f1 N string}{\f1 \rdblquote , where }{\i\f1 N}{\f1 is the number of participants, and }{\i\f1 string}{\f1 the results so far in the format of the results option, and \ldblquote pairing }{\i\f1 N}{\f1 \rdblquote , where N is the number of the tourney game. To the latter the pairing engine should answer with \ldblquote A-B\rdblquote , where A and B are participant numbers (in the range 1-N). (There should be no reply to the results command.) Default: empty string. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\cf6\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 UCI Engine Support}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 }{\f1\cf6 UCI Engine Support}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 UCIEngineSupport}}}{ \f1\fs20\cf6 UCI Engine Support \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 fUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 fUCI}{\f1 }}}{\f1\cf6 /fUCI }{\b0\f1\cf6 or}{\f1\cf6 }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 firstIsUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 firstIsUCI}}}{\f1\cf6 /firstIsUCI}{\i\f1\cf6 true|false}{\f1\cf6 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 sUCI}{\f1 }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 sUCI}{\f1 }}}{\f1\cf6 /sUCI }{\b0\f1\cf6 or}{\f1\cf6 }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 secondIsUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 secondIsUCI}}}{\f1\cf6 /secondIsUCI}{\i\f1\cf6 true|false}{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Indicates if the mentioned engine executable file is an UCI engine,}{\v\cf6 ICSLogon}{\cf6 and should be run with the aid of a protocol adapter rather than directly. The adapterCommand option specifies wchich adapter to use, and which info to pass to it on the command line. In a normal WinBoard install, this will invoke Polyglot. \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 fUCCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 fUCCI}{\f1 }}}{\f1\cf6 /fUCCI }{\b0\f1\cf6 or}{\f1\cf6 }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 fUSI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 fUSI}}}{ \f1\cf6 /fUSI \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 sUCCI}{\f1 }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 sUCCI}{\f1 }}}{\f1\cf6 /sUCCI }{\b0\f1\cf6 or}{\f1\cf6 }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 sUSI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 sUSI}}}{ \f1\cf6 /sUSI \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Similar to the fUCI and sUCI options, but invoking a secondary adapter, specified through he uxiAdapter option. Useful in environments where engines of several alien protocols are around, e.g. for Xiangqi, where UCI and UCCI engines need different adapters.}{\cf6 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 PolyglotDir}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 PolyglotDir}{\f1 }}}{\f1\cf6 /PolyglotDir }{\i\f1\cf6 filename}{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Gives the name of the folder in which Polyglot is installed}{\v\f1\cf6 ICSLogon}{\f1\cf6 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 adapterCommand}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 adapteCommand}{\f1 }}}{\f1\cf6 /adapterCommand }{\i\f1\cf6 command}{\f1\cf6 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 uxiAdapter}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 uxiAdapter}{\f1 }}}{\f1\cf6 /uxiAdapter }{\i\f1\cf6 command}{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Specifies the comma nds to use in stead of the engine command when the fUCI / sUCI (or for uxiAdapter fUCCI and sUCCI) are in force. The command line can contain words of the form %xxx, where xxx is the name of a WinBoard option, such as fcp, fd, cacheSizeEGTB, which will th e n automatically be replaced by the value of that option. (For the second engine the leading f or first will automatically be replaced by s or second.) This allows the engine name and directory, as well as other info known to WinBoard, to be passed to the adapter on its command line}{\v\f1\cf6 ICSLogon}{\f1\cf6 . \par Default adapterCommand is \{polyglot \endash noini \endash ec \ldblquote %fcp\rdblquote \endash ed \ldblquote %fd\rdblquote \} \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 usePolyglotBook}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 usePolyglotBook}{\f1 }}}{\f1\cf6 /usePolyglotBook }{\i\f1\cf6 true|false}{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Specifies if the Polygot book should be used}{\v\f1\cf6 ICSLogon}{\f1\cf6 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 PolyglotBook}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 PolyglotBook}{\f1 }}}{\f1\cf6 /PolyglotBook }{\i\f1\cf6 filename}{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Gives the filename of the opening book that Polyglot should use}{\v\f1\cf6 ICSLogon}{\f1\cf6 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 bookDepth }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 bookDepth}}}{\f1\cf5 /bookDepth }{\i\f1\cf5 number}{\f1\cf5 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Restricts the use of the GUI book to the first }{\i\f1\cf5 number}{\f1\cf5 full moves of the game. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 bookVariation }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 bookVariation}}}{\f1\cf5 /bookVariation }{\i\f1\cf5 number}{\f1\cf5 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Controls the selection of book moves. The default setting of 50 would play the moves with a frequency proportional to the weight listed in the book. Useful settings vary from 0 (always play best move) to 100 (select completely randomly from all listed moves). \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 fNoOwnBookUCI}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 fNoOwnBookUCI}{\f1 }}}{\f1\cf6 /fNoOwnBookUCI }{\b0\f1\cf6 or}{\f1\cf6 }{\cs58\f1\cf6\super K {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 firstXBook}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super #}{\f1 }{\f1\cf6 firstXBook}{\f1 }}}{\f1\cf6 /firstXBook }{\b0\f1\cf6 or}{\f1\cf6 }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 firstHasOwnBookUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 firstHasOwnBookUCI}}}{\f1\cf6 /firstHasOwnBookUCI}{\i\f1\cf6 true|false}{\f1\cf6 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 sNoOwnBookUCI}{\f1 }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 sNoOwnBookUCI}{\f1 }}}{\f1\cf6 /sNoOwnBookUCI }{\b0\f1\cf6 or}{\f1\cf6 }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 secondXBook}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #} {\f1 }{\f1\cf6 secondXBook}{\f1 }}}{\f1\cf6 /secondXBook }{\b0\f1\cf6 or}{\f1\cf6 }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 secondHasOwnBookUCI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 secondHasOwnBookUCI}}}{\f1\cf6 /secondHasOwnBookUCI}{\i\f1\cf6 true|false}{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Indicates if the mentioned engine lacks an opening book or not}{\cf6 . }{\cf2 Engines that have an own opening book will not use the GUI book (as given by /polyglotBook) even if /usePolyglotBook is set to true.}{\cf6 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 defaultHashSize}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 defaultHashSize}{\f1 }}}{\f1\cf6 /defaultHashSize }{\i\f1\cf6 number}{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the size of the hash table to }{\i\f1\cf6 number}{\f1\cf6 MegaBytes}{\v\f1\cf6 ICSLogon}{\f1\cf6 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 defaultCacheSizeEGTB}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 defaultCacheSizeEGTB}{\f1 }}}{\f1\cf6 /defaultCacheSizeEGTB }{\i\f1\cf6 number}{ \f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the size of the EGTB cache to }{\i\f1\cf6 number}{\f1\cf6 MegaBytes}{\v\f1\cf6 ICSLogon}{\f1\cf6 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 defaultPathEGTB}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 defaultPathEGTB}{\f1 }}}{\f1\cf6 /defaultPathEGTB }{\i\f1\cf6 filename}{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Gives the name of the folder where the end-game tablebases are installed}{\v\f1\cf6 ICSLogon}{\f1\cf6 . \par }{ \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Internet Chess Server Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Internet Chess Server Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 InternetChessServerOptions}}}{ \f1\fs20 Internet Chess Server Options \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 ics }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ics }}}{\f1 /ics }{\b0\f1 or }{\f1 /xics}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 internetChessServerMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 internetCh essServerMode}}}{\f1 /internetChessServerMode}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Connect with an Internet Chess Server to play chess against its other users, observe games they are playing, or review games that have recently finished. See }{\f1\uldb ICS Client}{\v\f1 ICSClient}{\f1 Default: False. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 You can create a script file containing ICS commands that WinBoard will type in for you whenever you connect to the ICS. See }{\f1\uldb ICS Logon}{\v\f1 ICSLogon}{\f1 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 icshost }} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 icshost }}}{\f1 /icshost }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 internetChessServerHost }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 internetChessServerHost }}}{\f1 /internetChessServerHost }{\i\f1 hostname}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The host name or numeric address of the Internet Chess Server to connect to when in ICS mode. The default is the empty string, which causes WinBoard to pop up a menu of known ICS sites. The file ics-address{\*\bkmkstart _Hlt386546221}e {\*\bkmkend _Hlt386546221}s.txt in the WinBoard distribution gives slightly more information on these sites. It includes their numeric addresses, which you can use if your site does not have a working name server. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 icsport }} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 icsport }}}{\f1 /icsport }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 internetChessServerPort }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 internetChessServerPort }}}{\f1 /internetChessServerPort }{\i\f1 portnumber}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The port number to use when connecting to a chess server in ICS mode. Default: 5000. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 via }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 via }}}{\f1 /icshelper }{\i\f1 program}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 An external helper program used to communicate with the chess server. Typically }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 timestamp}}}{\i\f1 timestamp}{\f1 for the ICC (chessclub.com) or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super K}{\f1 timeseal}}}{\i\f1 timeseal}{\f1 for FICS (freechess.org, eics.daimi.aau.dk, etc.). This option is shorthand for \ldblquote /useTelnet /telnetProgram }{\i\f1 program}{\f1 \rdblquote }{\b\f1 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 telnet}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 telnet}}}{\f1 /telnet}{\b0\f1 or }{\f1 /xtelnet}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 useTelnet}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 useTelnet}}}{\f1 /useTelnet}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option is poorly named; it should be called }{\b\f1 /useHelper}{\f1 . If set to True, it instructs WinBoard to use an external helper program to communicate with the ICS, as spe cified by the telnetProgram option. The external program must be a pure console application that can communicate with WinBoard through pipes; the Windows telnet application is not suitable. If the option is False (the default), WinBoard communicates with the ICS by opening a Winsock TCP socket and using its own internal implementation of the telnet protocol. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 gateway}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 gateway}}}{\f1 /gateway }{\i\f1 hostname}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set to a host name, WinBoard uses }{\f1\uldb rsh}{\v\f1 rsh}{\f1 to run the telnetProgram remotely on the given host to communicate with the Internet Chess Server instead of using its own internal implementation of the telnet protocol. See the }{\f1\uldb FIREWALLS}{\v\f1 FIREWALLS}{\f1 section below for an explanation of when this option is useful. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 telnetProgram}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 telnetProgram}}}{\f1 /telnetProgram }{\i\f1 program}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option is poorly named; it should be called }{\b\f1 /helperProgram}{\f1 . It gives the name of the remote or external helper program to be used with the gateway or useTelnet option. The default is "telnet". The telnet program is invoked with the value of internetChessServer as the first argument and the v alue of internetChessServerPort as the second argument on its command line. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 icscom }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 icscom }}}{\f1 /icscom }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 internetChessServerComPort }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 internetChessServerComPort }}}{\f1 /internetChessServerComPort }{\i\f1 name}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, WinBoard communicates with the Internet Chess Server using a serial communication port instead of a network c onnection. Use this option if your machine is not connected to a network (not even via SLIP or PPP), but you do have Internet access through another machine by dialing in using a modem or by connecting directly to a serial terminal port. Example: \par }\pard\plain \s19\li120\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 WinBoard /ics /icscom:com1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 After you start WinBoard in this way, type whatever modem commands are necessary to dial out to your Internet provider and log in. You may need to turn off }{\f1\uldb Local Line Editing}{\v\f1 LocalLineEditing}{\f1 on the Options menu while typing commands to the modem, but turn it on again afterwards. Then telnet to the ICS, using a command like "telnet chessclub.com 5000". Important: See the paragraph in the }{ \f1\uldb LIMITATIONS}{\v\f1 LIMITATIONS}{\f1 section below about extra echoes. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 comPortSettings }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 comPortSettings }}}{\f1 /comPortSettings}{\b0\f1 }{\i\f1 \ldblquote dataRate,dataBits,parity,stopBits,flow \rdblquote \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option allows serial port parameters to be set from the command line or a settings file. The values are simply filled in to the }{\f1\uldb Communications}{\v\f1 Communications}{\f1 dialog. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 icslogon } }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 icslogon }}}{\f1 /icslogon }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 internetChessServerLogonScript }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 internetChessServerLogonScript }} }{\f1 /internetChessServerLogonScript }{\i\f1 filename \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you change the name used for the }{\f1\uldb ICS Logon}{\v\f1 ICSLogon}{\f1 file. Default: "ICS.ini". The filename is interpreted relative to WinBoard's installation directory (the directory containing WinBoard.exe). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 autocomm } }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 autocomm }}}{\f1 /autocomm }{\b0\f1 or }{\f1 /xautocomm}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 autoComment }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 autoComment }}}{\f1 /autoComment}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Comment}{\v\f1 AutoCommentCmd}{\f1 option. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 autoflag } }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 autoflag }}}{\f1 /autoflag}{\b0\f1 or }{\f1 /xautoflag}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 autoCallFlag }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 autoCallFlag }}}{\f1 /autoCallFlag}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Flag}{\v\f1\uldb AutoFlag}{\f1 option. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 autobs }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 autobs }}}{\f1 /autobs}{\b0\f1 or }{\f1 /xautobs}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 autoObserve }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 autoObserveCmd }}}{\f1 /autoObserve}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Observe}{\v\f1 autoObserveCmd}{\f1 option. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 autoKibitz}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 autoKibitz}{\f1 }}}{\f1\cf11 /autoKibitz \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Kibitzes the engines last thinking output (depth, score, time, speed, PV) to the ICS in zippy mode. Show Thinking must be on for this option to work. }{\f1\cf2 Also diverts similar kibitz information of an opponent engine that is playing you through the ICS to the engine-output window, as if the engine was playing locally.}{\f1\cf11 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 moves }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 moves }}}{\f1 /moves}{\b0\f1 or }{\f1 /xmoves}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 getMoveList }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 getMoveList }}}{\f1 /getMoveList}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Get Move List}{\v\f1 getMoveListCmd}{\f1 option. Default: True. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 edit}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 edit}}}{\f1 /edit}{\cs58\f1\super }{\b0\f1 or }{\f1 /xedit}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 localLineEditing}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super #}{\f1 localLineEditingOption}}}{\f1 /localLineEditing}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Local Line Editing}{\v\f1 localLineEditing}{\f1 option. Default: True. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 quiet }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 quiet }}}{\f1 /quiet }{\b0\f1 or }{\f1 /xquiet}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 quietPlay }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 quietPlay }}}{\f1 /quietPlay}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Quiet Play}{\v\f1 quietPlayCmd}{\f1 option. Default: False \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 seekGraph (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 opt_seekGraph }}}{\f1\cf5 /seekGraph }{\i\f1\cf5 true|false}{\b0\f1\cf5 , or }{ \cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{\f1\cf5 sg (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 opt_sg}}}{\f1\cf5 /sg \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Enables summoning up of the }{\f1\uldb\cf5 Seek Graph}{\f1\cf5 by left-clicking the board. Default: False \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 autoRefresh (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 opt_autoRefresh }}}{\f1\cf5 /autoRefresh }{\i\f1\cf5 true|false}{\f1\cf5 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Sets the }{\f1\uldb\cf5 Auto Refresh}{\v\f1\cf5 BlindfoldCmd}{\f1\cf5 option of the }{\f1\uldb\cf5 Seek Graph}{\f1\cf5 . Default: False \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 backgroundObserve (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 opt_backgroundObserve }}}{\f1\cf5 /backgroundObserve }{\i\f1\cf5 true|false}{ \f1\cf5 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Sets the }{\f1\uldb\cf5 Background Observe}{\v\f1\cf5 BlindfoldCmd}{\f1\cf5 option for observing other games during play. Default: False \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 dualBoard (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 opt_dualBoard }}}{\f1\cf5 /dualBoard }{\i\f1\cf5 true|false}{\f1\cf5 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Sets the }{\f1\uldb\cf5 Dual Board}{\v\f1\cf5 BlindfoldCmd}{\f1\cf5 option for observing your partner\rquote s bughouse game. Default: False \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 blindfold (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 opt_blindfold }}}{\f1 /blindfold }{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Blindfold}{\v\f1 BlindfoldCmd}{\f1 option. Default: False \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ pre}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ pre}}}{\f1 /pre }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ xpre}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ xpre}}}{\f1 /xpre}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 premove (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 premove}}}{\f1 /p remove}{\i\f1 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Premove}{\v\f1 PremoveCmd}{\f1 option. If set to True, the premove feature is enabled. If set to False, premove is disabled and the other }{\f1\uldb Premove}{\v\f1 PremoveCmd}{\f1 settings are ignored. Default: False. \par }\pard\plain \s2\li115\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ preWhite}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ preWhite}}}{\f1 /prewhite }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ xpreWhite}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ xpreWhite}}}{\f1 /xprewhite}{\b0\f1 , or }{\cs58\f1\super K {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 premoveWhite}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 premoveWhite}}}{\f1 /premoveWhite}{\i\f1 true|false \par }\pard \s2\li115\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 premoveWhiteText}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 premoveWhiteText}}}{\f1 /premoveWhiteText}{\i\f1 movetext \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If }{\b\f1 premoveWhite}{\f1 is set to True and you are playing white in an ICS game, the text specified by the }{\b\f1 premoveWhiteText}{\f1 option is sent to the ICS as soon as the game starts. These options can be set from the }{\f1\uldb Premove}{\v\f1 PremoveCmd}{\f1 section of the }{\f1\uldb ICS Options}{\v\f1\uldb ICSOptions}{\f1 dialog box. The default for }{\b\f1 premoveWhite}{\f1 is False. \par }\pard\plain \s2\li115\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ preBlack}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ preBlack}}}{\f1 /preblack }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ xpreBlack}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ xpreBlack}}}{\f1 /xpreblack}{\b0\f1 , or }{\cs58\f1\super K {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 premoveBlack}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 premoveBlack}}}{\f1 /premoveBlack}{\i\f1 true|false \par }\pard \s2\li115\sa120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 premoveBlackText}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 premoveBlackText}}}{\f1 /premoveBlackText}{\i\f1 movetext \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If }{\b\f1 premoveBlack}{\f1 is set to True and you are playing black in an ICS game, the text specified by the }{\b\f1 premoveBlackText}{\f1 option is sent to the ICS as soon as the first move is received from your opponent, even if you make a different premove on the board before the first white move is received. These options can be set from the }{\f1\uldb Premove}{\v\f1 PremoveCmd}{\f1 section of the }{\f1\uldb ICS Options}{\v\f1\uldb ICSOptions}{\f1 dialog box. The default for }{\b\f1 premoveBlack}{\f1 is False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 \'f2neClickMove (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 opt_oneClickMove }}}{\f1\cf5 /oneClickMove }{\i\f1\cf5 true|false}{\f1\cf5 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Sets the }{\f1\uldb\cf5 One-ClickMove}{\v\f1\cf5 BlindfoldCmd}{\f1\cf5 option. Default: False \par }\pard\plain \li115\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \f5\fs20\cgrid {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ alarm}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ alarm}}}{\b /alarm }{or}{\b }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\super K}{ xalarm}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ xalarm}}}{\b /xalarm}{, or }{\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ icsAlarm}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ icsAlarm}}}{\b /icsAlarm }{\b\i true|false}{\b \par }\pard \li115\sa120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ icsAlarmTime}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ icsAlarmTime}}}{\b /icsAlarmTime }{\b\i milliseconds \par }\pard \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright {When }{\b icsAlarm}{ is set to True, the }{\uldb alarm sound}{\v soundIcsAlarm}{ is played when your clock counts down to }{\b icsAlarmTime}{ seconds. For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the }{\b icsAlarmTime}{. The }{\b icsAlarmTime}{ can be set by selecting }{\uldb ICS Alarm}{\v ICSAlarm}{ from the }{\uldb ICS options}{\v\uldb ICSOptions}{ dialog. The default is 5 seconds. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{ \f1\cf2 keepAlive }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 keepAlive }}}{\f1\cf2 /keepAlive }{\i\f1\cf2 time}{\f1\cf2 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 When }{\i\f1\cf2 time}{\f1\cf2 is non-zero, send a \ldblquote date\rdblquote command every }{\i\f1\cf2 time}{\f1\cf2 minutes after your last move to the ICS, to prevent it from logging you off. (Do not use frivolously! The ICS operator might ban you.) Default: 0.}{\f1 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 chatBoxes (option)}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 opt_chatBoxes }}}{\f1\cf5 /chatBoxes }{\i\f1\cf5 handles}{\f1\cf5 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 Sets the list of }{\f1\uldb\cf5 Chat Windows}{\v\f1\cf5 BlindfoldCmd}{\f1\cf5 to be opened at startup. The given string }{\i\f1\cf5 handles}{\f1\cf5 should be a semicolon-separated list, like \ldblquote shouts;53;Johnny\rdblquote to open 3 chat boxes, to capture all shouts (including c-shouts and \lquote it\rquote messages), the traffic on channel 53, and for a player named Johnny. Default: no chat windows. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20\cf5 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Load and Save Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Load and Save Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 LoadandSaveOptions}}}{\b0\f1\fs18\up6 }{ \f1\fs20 Load and Save Options \par }\pard\plain \s2\li115\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 lgf }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 lgf }}}{\f1 /lgf }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 loadGameFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 loadGameFile }}}{\f1 /loadGameFile }{\i\f1 filena me}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 lgi }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 lgi }}}{\f1 /lgi }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 loadGameIndex }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 loadGameIndex }}}{\f1 /loadGameIndex }{\i\f1 N}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If loadGameFile is set, WinBoard reads the specified game file at startup. You can leave out the name of this option and give just the file name, which is handy if you want to configure WinBoard as a game viewer with a bro wser such as the Windows Explorer or Netscape. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard input. If there is more than one game in the file, WinBoard pops up a menu of the availabl e games, with entries based on their PGN tags. If loadGameIndex is set to }{\i\f1 N, }{\f1 the menu is suppressed and the }{\i\f1 N}{\f1 th game found in the file is loaded immediately. An index value of \endash 1 will cause automatic stepping through the games in match mode, a value of \endash 2 will use each game twice before stepping to the next. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 td }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 td }}}{\f1 /td }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 timeDelay }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 timeDelay }}}{\f1 /timeDelay }{\i\f1 seconds}{\f1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Time delay between moves during }{\f1\uldb Load Game}{\v\f1 LoadGame}{\f1 . Fractional seconds are allowed; try 0.4. A time delay value of -1 tells WinBoard not to step through game files automatically. Default: 1 second. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 sgf }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 sgf }}}{\f1 /sgf }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 saveGameFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 saveGameFile }}}{\f1 /saveGameFile }{\i\f1 filename}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, WinBoard appends a record of every game played to the specified file. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard output. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 autosave } }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 autosave }}}{\f1 /autosave}{\b0\f1 or }{\f1 /xautosave}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 autoSaveGames }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 autoSaveGames }}}{\f1 /autoSaveGames}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is True, at the end of every game WinBoard prompts you for a filename and appends a record of the game to the file you specify. Ignored if saveGameFile is set. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 lpf}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 lpf}}}{\f1 /lpf }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 loadPositionFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 loadPositionFile }}}{\f1 /loadPositionFile }{ \i\f1 filename}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 lpi }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 lpi }}}{\f1 /lpi }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 loadPositionIndex }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 loadPositionIndex }}}{\f1 /loadPositionIndex }{\i\f1 N}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If loadPositionFile is set, WinBoard loads the specified position file at startup. The filename is interpreted relative to WinBoard's initial working directory . The filename "-" specifies the standard input. If loadPositionIndex is set to }{\i\f1 N}{\f1 , the }{\i\f1 N}{\f1 th position found in the file is loaded; otherwise the first is loaded. An index value of \endash 1 will cause automatic stepping through the positions in math mode, a value of \endash 2 will use each position twice before stepping to the next. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 spf }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 spf }}}{\f1 /spf }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 savePositionFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 savePositionFile }}}{\f1 /savePositionFile }{ \i\f1 filename}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set, WinBoard appends the final position reached in every game played to the specified file. The filename is interpreted relative to W inBoard's initial working directory. The file name "-" specifies the standard output. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 pgnExtendedInfo}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 pgnExtendedInfo}{\f1 }}}{\f1\cf6 /pgnExtendedInfo }{\i\f1\cf6 true|false}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If this option is set, WinBoard saves depth, score and time used for each move that the engine found as a comment in the PGN file. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 pgnEventHeader}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 pgnEventHeader}{\f1 }}}{\f1\cf6 /pgnEventHeader }{\i\f1\cf6 string}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the name used in the PGN event tag to }{\i\f1\cf6 string}{\f1\cf6 . \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 saveOutOfBookInfo}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 saveOutOfBookInfo}}}{\f1\cf6 /saveOutOfBookInfo }{\i\f1\cf6 true|false}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Include the information on how the engine(s) game out of its opening book in a special \lquote annotator\rquote tag with the PGN file. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 oldsave }} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 oldsave }}}{\f1 /oldsave }{\b0\f1 or }{\f1 /xoldsave}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 oldSaveStyle }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 oldSaveStyle }}}{\f1 /oldSaveStyle}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is False (the default), WinBoard saves games in PGN (portable game notation) and positions in FEN (Forsythe-Edwards notation). If the option is True, a save style that is compatible with older versions of WinBoard (a nd of xboard) is used instead. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 debug}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 debug}}}{\f1 /debug}{\b0\f1 or }{\f1 /xdebug}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 debugMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 debugMode}}}{\f1 /debugMode}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Writes debugging information to the file \ldblquote WinBoard.debug\rdblquote , including all commands sent to the chess engine, all output received from it, and all commands sent to ICS. You can press Ctrl+Alt+F12 to turn this option on or off while WinBoard is running. Each time you turn it on, any existing debug file is overwritten. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 debugFile}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 debugFile}{\f1 }}}{\f1\cf6 /debugFile}{\cs58\f1\cf6\super }{\f1\cf6 }{\i\f1\cf6 filename}{ \f1\cf6 }{\b0\f1\cf6 or}{\f1\cf6 }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 nameOfDebugFile}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 nameOfDebugFile}{\f1 }}}{\f1\cf6 /nameOfDebugFile}{\i\f1\cf6 filename}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the name of the file to which WinBoard saves debug information (including all communication to and from the engines). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 engineDebugOutput}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 engineDebugOutput}{\f1 }}}{\f1\cf11 /engineDebugOutput}{\cs58\f1\cf11\super }{ \f1\cf11 }{\i\f1\cf11 number}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Specifies how WinBoard should handle unsolicited output from the engine, with respect to saving it in the debug file. The output is further (hopefully) ignored. If }{ \i\f1\cf11 number}{\f1\cf11 =0, WinBoard refrains from writing such spurious output to the debug file. If}{\i\f1\cf11 number}{\f1\cf11 =1, all engine output is written faithfully to the debug file. If }{\i\f1\cf11 number}{\f1\cf11 =2, any protocol-violating line is prefixed with a \lquote #\rquote character, as the engine itself should have done if it wanted to submit info for inclusion in the debug file. }{\f1\cf5 The case }{\i\f1\cf5 number}{\f1\cf5 =3 is similar, but now marks non-compliant engine output with a more conspicuous prefix.}{\f1\cf11 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 This option is provided for the benefit of applications that use the debug fi le as a source of information, such as the broadcaster of live games TLCV / TLCS. Such applications can be protected from spurious engine output that might otherwise confuse them. \par }{ \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 User Interface Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 User Interface Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 UserInterfaceOptions}}}{\b0\f1\fs18\up6 }{\f1\fs20 User Interface Options \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 language}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 language}}}{\f1\cf5 /language}{\i\f1\cf5 filename}{\f1\cf5 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 This persistent option lets WinBoard load a \lquote language file\rquote with the given }{\i\f1\cf5 filename}{\f1\cf5 , which can contain translation lines of the form \ldblquote english text\rdblquote === \ldblquote translated text\rdblquote . WinBoard will then perform the indicated substitutions in its menus, dialogs, and displayed messages. If the }{\i\f1\cf5 filename}{\f1\cf5 does not contain a period, the extension \ldblquote .lng\rdblquote will be appended to it before use. If a file of the given }{\i\f1\cf5 filename}{\f1\cf5 does not exist, no translation will take place, which can be used to switch WinBoard back to English. A full Spanish translation is available through the file espa\'f1 ol.lng. More translation are expected to become available soon, and of course you could make your own by changing the translations in an existing one to the language of your choice. Default: no translation. \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2 firstLogo}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 firstLogo}}}{\f1\cf2 /firstLogo }{\i\f1\cf2 filename}{\f1\cf2 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2 secondLogo}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 secondLogo}}}{\f1\cf2 /secondLogo }{\i\f1\cf2 filename}{\f1\cf2 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 The appearance of either of these options causes WinBoard to reserve space for displaying logos on both sides of the clocks. Normally the first logo goes left, the second right, unless the option \lquote swap clocks\rquote is in effect. The }{\i\f1\cf2 filename}{\f1\cf2 must refer to a bitmap file (.bmp) containing a logo for the particular player (usually a 130x65 or 100x50 bitmap, which will be scaled to the height of two clock lines.) \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{ \f1\cf2 autoLogo}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 autoLogo}}}{\f1\cf2 /autoLogo}{\i\f1\cf2 true|false}{\f1\cf2 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 When true, causes WinBoard to automatically supply a logo for the first and second chess program, by looking for a file named logo.bmp in the engine directory (as specified by the /fd or /sd option), and then displays it like this file was given as an argument to the /firstLogo or /secondLogo option. In this mode it will also look in a sub-folder of its installation folder called \ldblquote logos\rdblquote , for finding logos with names corresponding to the ICS (e.g. \ldblquote chessclub.com.bmp\rdblquote ) or to the human user, should they be involved in a game. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 hideThinkingFromHuman}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 hideThinkingFromHuman}}}{\f1\cf6 /hideThinkingFromHuman}{\i\f1\cf6 true|false}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Prevents the engine thinking output to appear in the display, without necessitating to suppress the sending of this information altogether (so it can still appear in the PGN). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{ \f1\cf2 noGUI}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 noGUI}}}{\f1\cf2 /noGUI \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 Suppresses all GUI functions of WinBoard (to speed up automated ultra-fast engine-engine games, which you don\rquote t want to watch). There will be no board or clock updates, no printing of moves, and no update of the icon on the task bar in this mode.}{\f1 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 pieceNickNames}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 pieceNickNames}}}{\f1\cf5 /pieceNickNames }{\i\f1\cf5 string}{\f1\cf5 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 A volatile option that allows the user to set al ternative characters by which the pieces could be recognized in FEN or SAN. Does not affect FEN or SAN output. This can be useful to load games and positions given in other languages. Piece indicators in FEN and SAN are first matched to the letters in the given }{\i\f1\cf5 string}{\f1\cf5 ; when this match fails, they are matched against the default names. The format of string is the same as that of the /pieceToCharTable option; you can only set a single alternative for each piece. Will only be applied in the variant active when WinBoard was started up. Default value: no nicknames. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 colorNickNames}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 colorNickNames}}}{\f1\cf5 /colorNickNames }{\i\f1\cf5 string}{\f1\cf5 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 A volatile option that allows the user to set alternative characters by which the side to move could be indicated in FEN. Does not affect FEN output. This can be useful to loa d positions given in other languages, or for variants using non-compliant color indicators. The color field in a FEN is first matched to the letters in the given }{\i\f1\cf5 string}{\f1\cf5 ; when this match fails, they are matched against the default names. The first character of }{\i\f1\cf5 string}{\f1\cf5 will be recognized as white, the second as black. Default value: no nicknames. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 top}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 top}}}{\f1 /top }{\b0\f1 or }{\f1 /xtop}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 alwaysOnTop}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 alwaysOnTopOpt}}}{\f1 /alwaysOnTop}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Always On Top}{\v\f1 AlwaysOnTop}{\f1 option. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 queen}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 queen}}}{\f1 /queen}{\b0\f1 or }{\f1 /xqueen}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 alwaysPromoteToQueen}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 alwaysPromoteToQueen}}}{\f1 /alwaysPromoteToQueen}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Always Queen}{\v\f1 AlwaysQueen}{\f1 option. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 drag}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 drag}}}{\f1 /drag}{\b0\f1 or }{\f1 /xdrag}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 animateDragging}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 animateDraggingOpt} }}{\f1 /animateDragging}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Animate Dragging}{\v\f1 animateDragging}{\f1 option. Default: True. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 animate}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 animate}}}{\f1 /animate }{\b0\f1 or }{\f1 /xanimate}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 animateMoving}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 animateMovingOpt}}}{ \f1 /animateMoving}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Animate Moving}{\v\f1 animateMoving}{\f1 option. Default: True. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 flip}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 flip}}}{\f1 /flip }{\b0\f1 or }{\f1 /xflip}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 flipView}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 flipViewOption}}}{\f1 /flipView}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If Auto Flip View is not set, or if you are observing but not participating in a game, then the positioning of the board at the start of each game depends on the flipView opti on. If flipView is False (the default), the board is positioned so that the white pawns move from the bottom to the top; if True, the black pawns move from the bottom to the top. In any case, the }{\f1\uldb Flip View}{\v\f1 FlipView}{\f1 menu command can be used to flip the board after the game starts \par }\pard\plain \li115\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ autoflip}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ autoflip}}}{\b /autoflip}{ or }{\b /xautoflip}{, or }{\cs58\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ autoFlipView}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ autoFlipViewOption}}}{\b /autoFlipView }{\b\i true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Flip View}{\v\f1 AutoFlipView}{\f1 option. Default: True. \par }\pard\plain \li115\sb120\sa60\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\b\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ autoraise}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ autoraise}}}{\b /autoraise}{ or }{\b /xautoraise}{, or }{\cs58\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ autoRaiseBoardOption}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ autoRaiseBoardOption}}}{\b /autoRaiseBoard }{\b\i true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Auto Raise Board}{\v\f1 AutoFlipView}{\f1 option. Default: True. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 highdrag}} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 highdrag}}}{\f1 /highdrag }{\b0\f1 or }{\f1 /xhighdrag}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 highlightDragging\tab \tab }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 highlightDraggingOpt}}}{\f1 /highlightDragging }{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Highlight Dragging}{\v\f1 highlightDragging}{\f1 option. }{\f1\cf5 Must be on for /showTargetSquares to work.}{\f1 Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 showTargetSquares\tab \tab }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 showTargetSquaresOpt}}}{\f1\cf5 /showTargetSquares }{\i\f1\cf5 true|false}{\f1\cf5 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 When set, causes WinBoard to mark all squares the piece you \lquote pick up\rquote can legally move to with big fat dot, in different colors for captures and non-captures. }{\f1\uldb\cf5 Highlight Dragging}{\v\f1\cf5 highlightDragging}{\f1\cf5 must be on for this to work. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 dropMenu\tab \tab }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 dropMenuOpt}}}{\f1\cf5 /dropMenu }{\i\f1\cf5 true|false}{\f1\cf5 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 When set, the right mouse button use d on the board will call up a context menu, (old behavior) rather than allowing you to walk the latest engine PV (new behavior). Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 highlight} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 highlight}}}{\f1 /highlight }{\b0\f1 or }{\f1 /xhighlight}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 highlightLastMove}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 highlightLastMoveOpt}}}{\f1 /highlightLastMove}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Highlight Last Move}{\v\f1 highlightLastMoveOpt}{\f1 option. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 popup}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 popup}}}{\f1 /exit}{\b0\f1 or }{\f1 /xexit}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 popupMoveErrors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 popupMoveErrorsOpt} }}{\f1 /popupExitMessage}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Popup Exit Message}{\v\f1 popupExitMessageCmd}{\f1 menu option. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 popup}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 popup}}}{\f1 /popup}{\b0\f1 or }{\f1 /xpopup}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 popupMoveErrors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 popupMoveErrorsOpt} }}{\f1 /popupMoveErrors}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Popup Move Errors}{\v\f1 popupMoveErrorsCmd}{\f1 menu option. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 coords }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 coords }}}{\f1 /coords }{\b0\f1 or }{\f1 /xcoords}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 showCoords}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 showCoords}}}{\f1 /showCoords}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Show Coords}{\v\f1 showCoords}{\f1 option. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 legal }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 legal }}}{\f1 /legal }{\b0\f1 or }{\f1 /xlegal}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 testLegality }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 testLegality }}}{\f1 /testLegality}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Test Legality}{\v\f1 testLegalityCmd}{\f1 option. Default: True. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 size }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 size }}}{\f1 /size }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 boardSize }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 boardSize }}}{\f1 /boardSize }{\i\f1 sizename}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the }{\f1\uldb Board Size}{\v\f1 BoardSizeCmd}{\f1 option. Also chooses which board size any following Font options will affect. The default is the largest size that will fit on your screen. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ wpc}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ wpc}}}{\f1 /wpc}{\b0\f1 or }{\cs58\b0\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 whitePieceColor}}}{\cs58\f1\super #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 whitePieceColor}}}{\f1 /whitePieceColor }{\i\f1 color \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ bpc}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\super #}{ bpc}}}{\f1 /bpc }{\b0\f1 or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 blackPieceColor}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 blackPieceColor}}}{\f1 /blackPieceColor }{\i\f1 color\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ lsc}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ lsc}}}{\f1 /lsc }{\b0\f1 or}{\i\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 lightSquareColor}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 lightSquareColor}}}{\f1 /lightSquareColor }{\i\f1 color}{\cs58\f1\super }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ dsc}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ dsc}}}{\f1 /dsc }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super K}{\f1 darkSquareColor}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 darkSquareColor}}}{\f1 /darkSquareColor }{\i\f1 color}{\cs58\f1\super }{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Color specifications for white pieces, black pieces, light squares, and dark squares. Colors can be specified only by red/green/blue intensity, either in hexadecimal (as }{ \i\f1 #rrggbb}{\f1 ) or in decimal (as }{\i\f1 rrr,ggg,bbb}{\f1 ). In the latter format, you must enclose the string in quotation marks if you leave spaces after the commas. The defaults are respectively #FFFFCC, #202020, #C8C365, and #77A26D. Available on the }{\f1\uldb Board Colors}{\v\f1 BoardColors}{\f1 section of the }{\f1\uldb Board Options}{\v\f1 BoardOptions}{\f1 dialog. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you are using a }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 grayscale} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 grayscale}}}{\f1 grayscale monitor, try setting the colors to: \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 -whitePieceColor:#FFFFFF\line -blackPieceColor:#000000\line -lightSquareColor:#CCCCCC\line -darkSquareColor:#999999 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ hsc}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ hsc}}}{\f1 /hsc }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 highlightSquareColor}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 highlightSquareColor}}}{\f1 /highlightSquareColor }{\i\f1 color}{ \cs58\f1\super }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ phc}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ phc}}}{\f1 /phc }{\b0\f1 or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 premoveHighlightColor}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 premoveHighlightColor}}}{\f1 /premoveHighlightColor }{\i\f1 color}{\cs58\f1\super }{\f1 \par }{\b0\f1 Color specifications for the }{\b0\f1\uldb Highlight Last Move}{\b0\v\f1 HighlightLastMove}{\b0\f1 and }{\b0\f1\uldb Premove}{\b0\v\f1 PremoveCmd}{\b0\f1 options, respectively. Colors can be specified only by red/green/blue intensity, either in hexadecimal (as }{\b0\i\f1 #rrggbb}{\b0\f1 ) or in decimal (as }{\b0\i\f1 rrr,ggg,bbb}{\b0\f1 ). In the latter format, you must enclose the string in quotation marks if you leave spaces after the commas. The defaults are respectively #FFFF00 and #FF0000, respectively. \par }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 mono }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super #}{\f1 mono }}}{\f1 /mono}{\b0\f1 or }{\f1 /xmono}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 monoMode}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 monoMode}}}{\f1 /monoMode}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Determines whether WinBoard displays its pieces and squares in black and white (True) or color (False, the default). Available in the }{\f1\uldb Board Colors}{\v\f1 BoardColors}{\f1 section of the }{\f1\uldb Board Options}{\v\f1 BoardOptions}{\f1 dialog. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 flipBlack}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 flipBlack}{\f1 }}}{\f1\cf11 /flipBlack}{\i\f1\cf11 true|false}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Determines whether Win Board displays the black pieces upside down (or the white pieces in Flip View). Useful with Shogi with the traditional Japanese pieces, which are not distinguished by color but by orientation. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 allWhite}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 allWhite}{\f1 }}}{\f1\cf11 /allWhite}{\i\f1\cf11 true|false}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Determines whether the white piece bitm aps will be used to display black pieces. The white pieces have a dark outline, which the black pieces lack. This makes the latter look vague if the color you give them is not very dark. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 renderPiecesWithFont}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 renderPiecesWithFont}{\f1 }}}{\f1\cf6 /renderPiecesWithFont }{\i\f1\cf6 fontname} {\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Uses the named true-type font to re nder the pieces, rather than the built-in bitmaps. The font must be installed on your computer. If the name starts with a * it is ignored, allowing you to easily disable a font temporarily in the whinboard.ini file. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 fontPieceToCharTable}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 fontPieceToCharTable}{\f1 }}}{\f1\cf6 /fontPieceToCharTable }{\i\f1\cf6 characterstring}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If font-based rendering of the pieces is used, this table specifies which character of the font alphabet should be used for which piece. The format of the character strings is the same as that of the argument of /pieceToCharTable. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 fontPieceSize}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 fontPieceSize}{\f1 }}}{\f1\cf6 /fontPieceSize }{\i\f1\cf6 number}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The number gives the size of the piece, as a percentage of the square size. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{\f1\cf6 fontPieceBackColorWhite}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\cf6 fontPieceBackColorWhite}}}{\f1\cf6 /fontPieceBackColorWhite }{\i\f1\cf6 color\line }{ \cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{\f1\cf6 fontPieceForeColorWhite}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\cf6 fontPieceForeColorWhite}}}{\f1\cf6 /fontPieceForeColorWhite }{\i\f1\cf6 color\line }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{\f1\cf6 fontPieceBackColorBlack}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\cf6 fontPieceBackColorBlack}}}{\f1\cf6 /fontPieceBackColorBlack }{\i\f1\cf6 color\line }{\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super K}{ }{\f1\cf6 fontPieceForeColorBlack}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\super #}{ }{\f1\cf6 fontPieceForeColorBlack}}}{\f1\cf6 /fontPieceForeColorBlack }{\i\f1\cf6 color}{\cs58\f1\cf6\super }{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Color specifications for white pieces, black pieces that are generated with font-based rendering. \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 liteBackTextureFile}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 liteBackTextureFile}{\f1 }}}{\f1\cf6 /liteBackTextureFile }{\i\f1\cf6 filename}{\f1\cf6 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 darkBackTextureFile}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 darkBackTextureFile}{\f1 }}}{\f1\cf6 /darkBackTextureFile }{\i\f1\cf6 filename}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The filename indicates a bitmap file that should be used to display the light or dark squares, allowing you to make boards that look like wood, marble, etc. A filename starting with * is ignored. \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 liteBackTextureMode}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 liteBackTextureMode}{\f1 }}}{\f1\cf6 /liteBackTextureMode }{\i\f1\cf6 number}{\f1\cf6 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 darkBackTextureMode}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 darkBackTextureMode}{\f1 }}}{\f1\cf6 /darkBackTextureMode }{\i\f1\cf6 number}{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 The number indicates the way the files given in the background-texture options should be used to fill in the squares.}{\cf6\lang1043\cgrid0 Valid texture mod es are 1 (default) and 2. In mode 1 the squares are taken from portions of the texture bitmap and copied without further processing. In mode 2, squares can also be rotated, mirrored and so on in order to provide a little more variety to the texture. The o perations are selected at random so the board will look slightly different every time the program is run.\line }{\cf6 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 overideLineGap}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 overideLineGap}{\f1 }}}{\f1\cf6 /overideLineGap }{\i\f1\cf6 number}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The number specifies the width, in pixels, of the grid lines used to separate the squares. If it is very small (like a singl e pixel), it becomes vey hard to see which squares are highlighted (to indicate the last move), as this highlighting is a color change of these grid lines. Highlighting the moves with an arrow is then recommended. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 highlightMovesWithArrow}{\f1 }} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 highlightMovesWithArrow}{\f1 }}}{\f1\cf6 /highlightMovesWithArrow }{ \i\f1\cf6 true|false}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If this option is true, a big, fat arrow is drawn to indicate the last move. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 highlightArrowColor}{\f1 }} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 highlightArrowColor}{\f1 }}}{\f1\cf6 /highlightArrowColor }{\i\f1\cf6 color}{ \f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Specifies the color of the arrow that highlights the moves. \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 evalHistoColorWhite}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 evalHistoColorWhite}{\f1 }}}{\f1\cf6 /evalHistoColorWhite }{\i\f1\cf6 color}{\f1\cf6 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 evalHistoColorBlack}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 evalHistoColorBlack}{\f1 }}}{\f1\cf6 /evalHistoColorBlack }{\i\f1\cf6 color}{\f1\cf6 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf6 Specifies the colors to be used to plot the white and black scores in the evaluation graph}{\cf6\lang1043\cgrid0 .\line }{ \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorShout }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorShout}}}{\f1 /colorShout}{\i\f1 \ldblquote effects color\rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorSShout}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorSShout}}}{\f1 /colorSShout }{\i\f1 \ldblquote effects color\rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorChannel1}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorChannel1}}}{\f1 /colorChannel1 }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorChannel}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorChannel}}}{\f1 /colorChannel }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorKibitz}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorKibitz}}}{\f1 /colorKibitz }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorTell}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorTell}}}{\f1 /colorTell }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorChallenge}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorChallenge}}}{\f1 /colorChallenge }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorRequest}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorRequest}}}{\f1 /colorRequest }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorSeek}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorSeek}}}{\f1 /colorSeek }{\i\f1 \ldblquote effects color\rdblquote }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorNormal}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorNormal}}}{\f1 /colorNormal }{\i\f1 \ldblquote effects color\rdblquote \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Select colors and effects to colorize messages in the ICS Interaction window. The effects may be any combination of }{\b\f1 b}{\f1 old, }{\b\f1 i}{\f1 talic, }{\b\f1 u}{ \f1 nderline, and }{\b\f1 s}{\f1 trikeout. Colors are specified as for squares and pieces. Available on the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1 section of the }{\f1\uldb ICS Options}{\v\f1 ICSOptions}{\f1 dialog. Limitation: On 256 color displays, Windows chooses the nearest solid color from the system palette, which will not always be close to the color you selected. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorBackground}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorBackground}}}{\f1 /colorBackground }{\i\f1 color \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the background color for the ICS Interaction window. Available on the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1 section of the }{\f1\uldb ICS Options}{\v\f1 ICSOptions}{\f1 dialog. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorize}} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorize}}}{\f1 /colorize}{\cs58\f1\super }{\b0\f1 or }{\f1 /xcolorize}{\b0\f1 , or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 colorizeMessages}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 colorizeMessages}}}{\f1 /colorizeMessages}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If True, WinBoard colorizes messages in the ICS Interaction window with the colors listed above. Default: True. Available in the }{\f1\uldb ICS Interaction Colors}{\v\f1 ICSInteractionColors}{\f1 section of the }{\f1\uldb ICS Options}{\v\f1 ICSOptions}{\f1 dialog. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 clockFont} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 clockFont}}}{\f1 /clockFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 messageFont}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 messageFont }}}{\f1 /messageFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 coordFont}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 coordFont}}}{\f1 /coordFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 tagsFont}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 tagsFont}}}{ \f1 /tagsFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 commentFont}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 commentFont}}}{\f1 /commentFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 icsFont}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 icsFont}}}{\f1 /icsFont \ldblquote }{\i\f1 fontname:size effects}{\f1 \rdblquote \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The fonts used respectively for the clocks, the message display line, rank and file coordinate labels, the Edit Tags dialog, the Edit Comment dialog, and the ICS Interaction window. These options may be given more than once. Each occurrence a ffects the fonts for the current board size; that is, the size given in the last preceding /boardSize option, if any, or else the default size. The font size may contain a decimal point, and the effects may be any combination of }{\b\f1 b}{\f1 old, }{ \b\f1 i}{\f1 talic, }{\b\f1 u}{\f1 nderline, and }{\b\f1 s}{\f1 trikeout. Example: }{\f2\fs16 /clockFont="Arial:20.0 bi".}{\f1 Available on the }{\f1\uldb Fonts}{\v\f1 Fonts}{\f1 menu.}{\f2\fs16 \par }\pard\plain \s2\li115\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundShout}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundShout}}}{ /soundShout}{\i sound\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundSShout}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundSShout}}}{ /soundSShout }{\i sound\line }{ \cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundChannel1}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundChannel1}}}{ /soundChannel1 }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundChannel}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundChannel}}}{ /soundChannel }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundKibitz}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundKibitz}}}{ /soundKibitz }{\i sound}{\line }{ \cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundTell}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super #}{\f1 soundTell}}}{ /soundTell }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundChallenge}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundChallenge}}}{ /soundChallenge }{\i sound}{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundRequest}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundRequest}}}{ /soundRequest }{\i sound}{\line }{\cs58\f1\super K {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundMove}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{ \f1 soundMove}}}{ /soundMove }{\i sound}{\cs58\f1\super }{\line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundBell}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundBell}}}{ /soundBell }{\i sound}{\cs58\f1\super }{ \par }\pard \s2\li115\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundIcsWin}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundIcsWin}}}{\f1 /soundIcsWin }{\i\f1 sound}{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundIcsLoss}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundIcsLoss}}}{\f1 /soundIcsLoss }{\i\f1 sound}{\cs58\f1\super }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundIcsDraw}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundIcsDraw}}}{\f1 /soundIcsDraw }{\i\f1 sound}{\cs58\f1\super }{\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{ \f1 soundIcsUnfinished}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundIcsUnfinished}}}{\f1 /soundIcsUnfinished }{\i\f1 sound}{\cs58\f1\super }{\f1 \par }\pard \s2\li115\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 soundIcsAlarm}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 soundIcsAlarm}}}{\f1 /soundIcsAlarm }{\i\f1 sound}{\cs58\f1\super }{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Associate sounds with WinBoard events. Most of the events are the same ones that cause text colorization. In addition, }{\b\f1 soundMove}{\f1 is played if a chess engine or another player makes a move. }{\b\f1 SoundBell}{\f1 is played if the chess server sends an ASCII BEL character (Ctrl+G). Available on the }{\f1\uldb Sounds}{\v\f1 Sounds}{\f1 menu. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\b SoundIcsWin}{, }{\b soundIcsLoss}{, }{\b soundIcsDraw}{ and }{\b soundIcsUnfinished}{ are played at the conclusion of an ICS game. The result of the game determines which sound is played. \par }{\b SoundIcsAlarm}{ is played when your game clock counts down to }{\uldb icsAlarmTime}{\v\uldb icsAlarmTime}{. \par }\pard \li120\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480\adjustright {\f1 The }{\i\f1 sound}{\f1 argument may be one of the following: \par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\f1 The name of a }{\f2 .wav}{\f1 file. The filename is interpreted relative to WinBoard's installation directory (the directory containing WinBoard.exe). \par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\f2 $}{ \f1 , indicating the default system sound. \par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\f2 !}{ \f1 followed by the name of a built-in WinBoard wave resource. \par {\pntext\pard\plain\f3\fs20\lang1033\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\f2 !}{ \f1 alone, or \ldblquote \rdblquote (empty string), indicating silence. \par }\pard \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright {\f1 The default for soundMove and soundBell is }{\f2 $}{\f1 , while the others default to silence. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 icsMenu}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 icsMenu}}}{\f1 /icsMenu=\{}{\i\f1 entries}{\f1 \} }{\b0\f1 or }{\f1 /icsMenu=@}{\i\f1 filename \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the right-button }{\f1\uldb context menu}{\v\f1 ICSInteractionContextMenu}{\f1 that is available in the upper (output) pane of the ICS Interaction window. It consists of a list of menu entries, one per line. If the option value starts with an @ sign, it is the name of a file that contains the entries. Each entry contains either f our fields separated by commas or the single character }{\f2 "-"}{\f1 . The fields are: \par {\pntext\pard\plain\f5\fs20\lang1033\cgrid \hich\af5\dbch\af0\loch\f5 1.\tab}}\pard\plain \fi-360\li480\sb80\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls14\adjustright \f5\fs20\cgrid {The menu text. If this field begins with }{\f2 "|"}{, the item begins a new column in the menu and the }{\f2 "|"}{ is not shown. If this field contains an }{\f2 "&"}{, the character after the ampersand is underlined in the menu and acts as a keyboard shortcut for the item when the menu is displayed. Do not assign the same shortcut key to two different menu items. \par {\pntext\pard\plain\s26 \f1\fs20\lang1033\cgrid \hich\af1\dbch\af0\loch\f1 2.\tab}}\pard\plain \s26\fi-360\li480\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls14\adjustright \f5\fs20\cgrid {\f1 Text to insert into the input pane. The text cannot include a comma. You can use ICS aliases to get around this limitation. \par {\pntext\pard\plain\s26 \f1\fs20\lang1033\cgrid \hich\af1\dbch\af0\loch\f1 3.\tab}}\pard \s26\fi-360\li480\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls14\adjustright {\f1 A flag (1 or 0) saying whether to insert a space and }{\i\f1 name }{\f1 (see }{\f1\uldb above}{\v\f1 Tell}{\f1 ) after the text. If you set this flag, you might also want to put "(name)" into the menu text as a memory aid. \par {\pntext\pard\plain\s26 \f1\fs20\lang1033\cgrid \hich\af1\dbch\af0\loch\f1 4.\tab}}\pard \s26\fi-360\li480\sl-240\slmult0\nowidctlpar\jclisttab\tx480{\*\pn \pnlvlbody\ilvl0\ls14\pnrnot0\pndec\pnstart1\pnindent360\pnhang{\pntxta .}}\ls14\adjustright {\f1 A flag (1 or 0) saying whether the result should be sent immediately to ICS or left in the input pane for further editing. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 You can now use two special insert texts \ldblquote chat\rdblquote and \ldblquote none\rdblquote in the entry definitions. In stead of being sent to the ICS, WinBoard will recognize them as special cases (they are not valid ICS commands anyway). \ldblquote Chat\rdblquote will open a chat box for the handle you clicked on, \ldblquote none\rdblquote will define a disabled entry (usually used with an item name of spaces), which you could put in the position of the menu that pops up under your mouse pointer, so there would be no default action when you up-click without moving the mouse first. \par }{The entry }{\f2 "-"}{ produces a separator line in the menu. The top three menu entries are always }{\b Copy and Paste}{, }{\b Copy}{, and }{\b Paste}{, but you have full control over the rest of the menu. \par }{\f1 The default menu is: \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 \endash \line &Who,who,0,1\line Playe&rs,players,0,1\line &Games,games,0,1\line &Sought,sought,0,1\line |}{\f2\fs20\cf5 ,none,0,0 \par Open Chat Box (name),chat,1,0}{\f2\fs20 \par &Tell (name),tell,1,0\line M&essage (name),message,1,0\line \endash \line &Finger (name),finger,1,1\line &Vars (name),vars,1,1\line &Observe (name),observe,1,1\line &Match (name),match,1,1\line Pl&ay (name),play,1,1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1 file with a plain text editor such as Notepad. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 icsNames}} #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 icsNames}}}{\f1 /icsNames=\{}{\i\f1 names}{\f1 \} }{\b0\f1 or }{\f1 /icsNames=@}{\i\f1 filename \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the drop-down list of ICS names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text \rdblquote /ics /icsHost=\rdblquote and adds the result to the command-line options. There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings} {\v\f1 settings}{\f1 file with a plain text editor such as Notepad. \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 firstChessProgramNames}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 firstChessProgramNames}}}{\f1 /firstChessProgramNames=\{}{\i\f1 names}{\f1 \} }{\b0\f1 or }{\f1 /firstChessProgramNames="@}{\i\f1 filename}{\f1 " \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the first drop-down list of chess engine names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text \rdblquote /cp /firstChessProgram=\rdblquote and adds the result to the command-line options. \par \par There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1 file with a plain text editor such as Notepad. Example: \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2 /firstChessProgramNames=\{GNUChess\line WCrafty-15_11 /fd="C:\\Program Files\\Crafty"\line ArasanX /fd="C:\\Program Files\\Arasan \\Arasan 4.1"\line "EXchess xb" /fd=C:\\EXchess\line Comet-WB /fd=C:\\Comet\line \} \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 secondChessProgramNames}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 secondChessProgramNames}}}{\f1 /secondChessProgramNames=\{}{\i\f1 names}{\f1 \}}{\b0\f1 or }{\f1 /secondChessProgramNames="@}{\i\f1 filename}{\f1 "}{\i\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 This option lets you customize the second drop-down list of chess engine names that appears in the W inBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text \rdblquote /cp /secondChessProgram=\rdblquote and adds the result to the command-line options. \par \par There is no graphical user interface to set this option. To change it, edit your }{\f1\uldb settings}{\v\f1 settings}{\f1 file with a plain text editor such as Notepad. Example: \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {/secondChessProgramNames=\{GNUChess\line WCrafty-15_11 /sd="C:\\\\Program Files\\\\Crafty\\"\line ArasanX /sd="C:\\Program Files\\ Arasan\\Arasan 4.1"\line "EXchess xb" /sd=C:\\EXchess\line Comet-WB /sd=C:\\Comet\line \}}{\f1 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 singleEngineList}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 singleEngineList}}}{\f1 /singleEngineList }{\i\f1 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is set to true, the }{\f1\uldb secondChessProgramNames}{\f1 option will be ignored, and the value of the }{\f1\uldb firstChessProgramNames}{\f1 option will be used in its place with the required modifications (every option referring to the first engine being replaced by the corresponding one referring to the second). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 xy coordinates of board}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 xy}}}{\f1 /x=}{\i\f1 xcoord }{\f1 /y=}{\i\f1 ycoord \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location of the board window, giving the screen coordinates of the upper left-hand corner. Both arguments must be given together. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 xywh coordinates of Analysis window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 xywh}}}{\f1 /analysisX=}{\i\f1 xcoord }{\f1 /analysisY=}{\i\f1 ycoord}{\f1 /analysisW=}{ \i\f1 width}{\f1 /analysisH=}{\i\f1 height \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf2 These options have been deprecated, as the analysis window is replaced by the more general engine-output window. They are recognized, but ignored, and no longer saved in the winboard.ini file. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 xywh coordinates of Comment window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 xywh}}}{\f1 /commentX=}{\i\f1 xcoord }{\f1 /commentY=}{\i\f1 ycoord}{\f1 /commentW=}{ \i\f1 width}{\f1 /commentH=}{\i\f1 height \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the Comment window, giving the screen coordinates of the upper left-hand corner }{\f1\cf2 (relative to the main window)}{\f1 , the width, and the height. All four arguments must be given together. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 xywh coordinates of Game List window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 xywh}}}{\f1 /gameListX=}{\i\f1 xcoord }{\f1 /gameListY=}{\i\f1 ycoord}{\f1 /gameListW=}{ \i\f1 width}{\f1 /gameListH=}{\i\f1 height \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the Game List window, giving the screen coordinates of the upper left-hand corner }{\f1\cf2 (relative to the main window), }{\f1 the width, and the height. All four arguments must be given together. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 xywh coordinates of ICS Interaction window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 xywh}}}{\f1 /icsX=}{\i\f1 xcoord }{\f1 /icsY=}{\i\f1 ycoord}{\f1 /icsW=}{\i\f1 width}{\f1 /icsH=}{\i\f1 height \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the ICS Interaction window, giving the screen coordinates of the upper left-hand corner }{\f1\cf2 (relative to the main window)}{\f1 , the width, and the height. All four arguments must be given together. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 xywh coordinates of Tags window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 xywh}}}{\f1 /tagsX=}{\i\f1 xcoord }{\f1 /tagsY=}{\i\f1 ycoord}{\f1 /tagsW=}{\i\f1 width}{\f1 /tagsH=}{\i\f1 height \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Sets the initial location and size of the Tags window, giving the screen coordinates of the upper left-hand corner }{\f1\cf2 (relative to the main window)}{\f1 , the width, and the height. All four arguments must be given together. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 xywh coordinates of Move History window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 xywh}}}{\f1\cf6 /moveHistoryX=}{\i\f1\cf6 xcoord }{\f1\cf6 moveHistoryY=}{\i\f1\cf6 ycoord}{\f1\cf6 /moveHistoryW=}{\i\f1\cf6 width}{\f1\cf6 /moveHistoryH=}{\i\f1\cf6 height \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the initial location and size of the move-history window, giving the screen coordinates of the upper left-hand corner}{\f1 }{\f1\cf2 (relative to the main window) }{\f1\cf6 , the width, and the height. All four arguments must be given together. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 xywh coordinates of Evaluation Graph window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 xywh}}}{\f1\cf6 /evalGraphX=}{\i\f1\cf6 xcoord }{\f1\cf6 /evalGraphY=}{\i\f1\cf6 ycoord}{\f1\cf6 /evalGraphW=}{\i\f1\cf6 width}{\f1\cf6 /evalGraphH=}{\i\f1\cf6 height \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the initial location and size of the evaluation-graph window, giving the screen coordinates of the upper left-hand corner}{\f1 }{\f1\cf2 (relative to the main window)}{\f1\cf6 , the width, and the height. All four arguments must be given together. \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 xywh coordinates of Engine Output window}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 xywh}}}{\f1\cf6 /engineOutputX=}{\i\f1\cf6 xcoord }{\f1\cf6 /engineOutputY=}{ \i\f1\cf6 ycoord}{\f1\cf6 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\f1\cf6 /engineOutputW=}{\i\f1\cf6 width}{\f1\cf6 /engineOutputH=}{\i\f1\cf6 height \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Sets the initial location and size of the engine-output window, giving the screen coordinates of the upper left-hand corner}{\f1 }{\f1\cf2 (relative to the main window)}{\f1\cf6 , the width, and the height. All four arguments must be given together. \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 engineOutputUp}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 Window Up}}}{\f1\cf6 /engineOutputUp }{\i\f1\cf6 true|false \par }\pard \s2\li119\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 evalGraphUp}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 Window Up}}}{\f1\cf6 /evalGraphUp }{\i\f1\cf6 true|false}{\f1\cf6 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 moveHistoryUp}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 Window Up}}}{\f1\cf6 /moveHistoryUp }{\i\f1\cf6 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If set to True, the corresponding window is displayed, if False, the window is absent. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 stickyWindows}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 stickyWindows}}}{\f1\cf6 /stickyWindows }{\i\f1\cf6 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Auxiliary windows touching the main window will stay attached to the latter when you move it. \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 autoDisplayComment}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 autoDisplayComment}}}{\f1\cf6 /autoDisplayComment }{\i\f1\cf6 true|false \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 autoDisplayTags}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 autoDisplayTags}}}{\f1\cf6 /autoDisplayTags }{\i\f1\cf6 true|false \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If set to True, these options cause the window with the move comments, and the window with PGN tags, respectively, to pop up automatically when such tags or comments are encountered during the replaying a stored or loaded game. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 gameListTags}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 gameListTags}{\f1 }}}{\f1\cf6 /gameListTags }{\i\f1\cf6 string}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 The }{\i\f1\cf6 string}{\f1\cf6 contains single-character codes specifying the PGN tags that have to be listed for each game in the game-list window, and their order. The meaning of the characters is a=out-of-book info, b=black Elo, e=event, d=date, o=round, p=players, r=result, }{ \f1\cf2 c=result comment, }{\f1\cf6 w=white Elo, s=site, t=time control and v=variant, Default: \ldblquote eprd\rdblquote . \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\cf6\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 Adjudication Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 }{\f1\cf6 Adjudication Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 AdjudicationOptions}}}{ \b0\f1\fs18\cf6\up6 }{\f1\fs20\cf6 Adjudication Options \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 adjudicateLossThreshold}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 adjudicateLossThreshold}{\f1 }}}{\f1\cf6 /adjudicateLossThreshold }{\i\f1\cf6 scorethreshold}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If the given value is non-zero, WinBoard adjudicates the game as a lo ss if both engines agree for a duration of 6 consecutive ply that the score is below the given score threshold for that engine. Make sure the score is interpreted properly by WinBoard, using /firstScoreAbs and /secondScoreAbs if needed.}{\cf6 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 adjudicateDrawMoves}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 adjudicateDrawMoves}{\f1 }}}{\f1\cf6 /adjudicateDrawMoves }{\i\f1\cf6 number}{ \f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 If the given value is non-zero, WinBoard adjudicates the game as a draw if after the given }{\i\f1\cf6 number}{\f1\cf6 of moves it was not yet decided. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 checkMates}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 checkMates}{\f1 }}}{\f1\cf11 /checkMates}{\i\f1\cf11 true|false}{\f1\cf11 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is True, WinBoard detects all checkmates and stalemates, and ends the game as soon as they occur. Legality-testing must be on for this option to work.} { \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 testClaims}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 testClaims}{\f1 }}}{\f1\cf11 /testClaims}{\i\f1\cf11 true|false}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is True, WinBoard verifies all result claims made by engines, and those who send false claims will forfeit the game because of it. Legal ity-testing must be on for this option to work.}{\cf11 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 materialDraws}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 materialDraws}{\f1 }}}{\f1\cf11 /materialDraws}{\i\f1\cf11 true|false}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is True, WinBoard adjudicates games as draws when there is no sufficient material left to create a checkmate. This applies to KBKB with like bishops, and to KBK, KNK and KK. Legality-testing must be on for this option to work.}{\cf11 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 trivialDraws}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 trivialDraws}{\f1 }}}{\f1\cf11 /trivialDraws}{\i\f1\cf11 true|false}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If this option is True, WinBoard adjudicates games as draws that cannot be usualy won without opponent assistance. This applies to KBKB with unlike bishops, and to K BKN, KNKN, KNNK, KRKR and KQKQ. The draw is called after 6 ply into these end-games, to allow quick mates that can occur in some positions. KQKQ does not really belong in this category, and might be taken out in the future. (When bitbase-based adjudicatio ns are implemented.) Legality-testing must be on for this option to work.}{\cf11 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 ruleMoves}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 ruleMoves}{\f1 }}}{\f1\cf11 /ruleMoves }{\i\f1\cf11 number}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If the given value is non-zero, WinBoard adjudicates the game as a draw after the given }{\i\f1\cf11 number}{\f1\cf11 of consecutive reversible moves. Engines can claim draws after 50 moves, irrespective of the value of }{\i\f1\cf11 number}{\f1\cf11 .}{\cf11 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 repeatsToDraw}{\f1 }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 repeatsToDraw}{\f1 }}}{\f1\cf11 /repeatsToDraw }{\i\f1\cf11 number}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 If the given value is non-zero, WinBoard adjudicates the game as a draw if a position is repeated the given }{\i\f1\cf11 number}{\f1\cf11 of times. Engines can claim draws after 3 repeats, (on the 3rd occurrence, actually), irrespective of the value of }{\i\f1\cf11 number}{\f1\cf11 . Beware that positions that have different castling or en-passant rights do not count as repeats, WinBoard is fully e.p. and castling aware!}{\cf11 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20\cf11 \page }{\cs58\f1\fs20\super +{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super +}{\f1 main}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Other Options}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Other Options}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 OtherOptions}}}{\b0\f1\fs18\up6 }{\f1\fs20 Other Options \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 ncp }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ncp }}}{\f1 /ncp}{\b0\f1 or }{\f1 /xncp}{\b0\f1 ,}{\f1 }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 noChessProgram}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 noChessProgram}}}{ \f1 /noChessProgram}{\i\f1 true|false}{\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is True, WinBoard acts as a passive chessboard; it does not start a chess program or connect to ICS. This option also sets clockMode to False. Default: False. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 mode}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 mode}}}{\f1 /mode}{\b0\f1 or }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 initialMode}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 initialMode}}}{\f1 /initialMode }{\i\f1 modename \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If this option is given, WinBoard selects the given }{\i\f1 modename}{\f1 from the }{\f1\uldb Mode menu}{\v\f1 ModeMenu }{\f1 after starting and (if applicable) processing the }{\f1\uldb loadGameFile}{\v\f1 loadGameFile }{\f1 or }{\f1\uldb loadPositionFile}{\v\f1 loadPositionFile }{\f1 option. Default: "". Other supported values are TwoMachines, AnalyzeFile, Analysis, MachineWhite, MachineBlack, EditGame, EditPosition, and Training. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 variant}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 variant}}}{\f1 /variant}{\b0\f1 }{\i\f1 varname}{\f1 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { Activates preliminary, partial support for playing chess variants against a local engine or editing variant games. This flag is not needed in ICS mode. Recognized variant names are: \par }\pard\plain \s20\li119\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {normal\tab \tab Normal chess\line wildcastle\tab Shuffle chess, king can castle from d file\line nocastle\tab Shuffle chess, no castling allowed\line fischerandom\tab Fischer Random shuffle chess\line bughouse\tab Bughouse, ICC/FICS rules\line crazyhouse\tab Crazyhouse, ICC/FICS rules\line losers \tab Lose all pieces or get mated (ICC wild 17)\line suicide\tab Lose all pieces including king (FICS)\line giveaway\tab Try to have no legal moves (ICC wild 26)\line twokings\tab Weird ICC wild 9\line kriegspiel\tab Opponent's pieces are invisible\line atomic \tab Capturing piece explodes (ICC wild 27)\line 3check\tab Win by giving check 3 times (ICC wild 25) \par }\pard\plain \s66\li119\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {xiangqi\tab Chinese Chess (on a 9x10 board)\line shogi\tab \tab Japanese Chess (on a 9x9 board, with piece drops) \line capablanca\tab Capablanca Chess (10x8 board, with Archbishop and Chancellor pieces)\line gothic\tab \tab similar, with a better initial position\line caparandom\tab An FRC-like version of Capablanca Chess (10x8 board) \line janus\tab \tab A game with two Archbishops (10x8 board)\line shatranj\tab Ancient Arabic Chess, with Elephants and General replacing B and Q.\line courier\tab Medieval intermedite between shatranj and modern Chess (on 12x8 board) \line falcon\tab \tab A patented Chess variant with two Falcon pieces (10x8) board \line berolina\tab Pawns capture straight ahead, and move diagonal (legality testing off!)\line cylinder\tab Pieces wrap around the board, as if it were a cylinder (legality testing off!) \line fairy\tab \tab A variant in which all pieces known to WinBoard can participate\line knightmate\tab King moves a Knight, and vice versa \par }{\cf2 makruk\tab Thai Chess (shatranj-like, pawns promote on 6th rank)\line super\tab \tab Superchess, a shuffle variant with B+N, R+N, K+N and Q+N compound\line great\tab \tab Great Shatranj, variant without sliders, on 10x8 board (legality testing off!)\line }{ \par }\pard \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright {In the shuffle variants, WinBoard does now shuffle the pieces, although you can still do it by hand using Edit Position. }{\cf0 Some variants are supported only in ICS mode, in cluding bughouse, and kriegspiel.}{ }{\cf0 The winning/drawing conditions in crazyhouse (off-board interposition on mate) are not fully understood}{\cf2 , but losers, suicide, giveaway, atomic, and 3check this should be OK.}{\cf0 In crazyhouse}{\cf2 , WinBoard now does keep track of off-board pieces.In shatranj it does implement the baring rule when mate detection is switched on}{. }{\cf2 In xiangqi it does implement the rules for perpetual checking and chasing (in Two-Machines mode).}{ \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf5\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super K}{ \f1\cf5 shuffleOpenings}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf5\super #}{\f1\cf5 shuffleOpenings}}}{\f1\cf5 /shuffleOpenings \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf5 This volatile option will cause shufflin g of all pieces on the back rank, even in variants that normally have a fixed opening setup, according to the setting of the /defaultFrcPosition. It will remain in effect untill you select a new variant. In variants with normal castling, corner Rooks and King will be exempted from shuffling. Color-bound pieces such as Bishops will be kept on differently colored squares. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 boardHeight}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 boardHeight}}}{\f1\cf11 /boardHeight }{\i\f1\cf11 height}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard number of board ranks in any variant. If the height is given as \lquote -1\rquote , the default height for the variant is used. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 boardWidth}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 boardWidth}}}{\f1\cf11 /boardWidth }{\i\f1\cf11 width}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard number of board files in any variant. If the width is given as \lquote -1\rquote , the default width for the variant is used. Width a non-standard width, the initial position will always be an empty board, as the usual opening array will not fit. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 holdingsSize}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 holdingsSize}}}{\f1\cf11 /holdingsSize }{\i\f1\cf11 size}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Allows you to set a non-standard size for the holdings in any variant. If the size is given as \lquote -1\rquote , the default holdings size for the variant is used. The first }{\i\f1\cf11 size}{\f1\cf11 piece types will go into the holdings on capture, and you will be able to drop them on the board in stead of making a normal move. If }{\i\f1\cf11 size}{\f1\cf11 equals 0, there will be no holdings. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf6 defaultFrcPosition}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 defaultFrcPosition}}}{\f1\cf6 /defaultFrcPosition }{\i\f1\cf6 number}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 Specifies the number of the opening position in shuffle games like FRC. A value of \lquote -1\rquote means the position is randomly generated by WinBoard. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 pieceToCharTable}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 pieceToCharTable}}}{\f1\cf11 /pieceToCharTable }{\i\f1\cf11 characterstring}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 The characters that are used to represent the piece types WinBoard knows in FEN diagrams and SAN moves. The string argument has to h ave an even length (or it will be ignored), as white and black pieces have to be given separately (in that order). The last letter for each color will be the King. The letters before that will be PNBRQ and then a whole host of fairy pieces in an order tha t has not fully crystallized yet (currently FEACWMOHIJGDVSLU, F=Ferz, Elephant, A=Archbishop, C=Chancellor, W=Wazir, M=Commoner, O=Cannon, H=Nightrider). You should list at least all pieces that occur in the variant you are playing. If you have less than 4 4 characters in the string, the pieces not mentioned will get assigned a period, and you will not be able to distinguish them in FENs. You can also explicitly assign pieces a period, in which case they will not be counted in deciding which captured pieces can go into the holdings. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cf11 A tilde as a piece name does mean this piece is used to represent a promoted Pawn in Crazyhouse-like games, i.e. on capture it turns back onto a Pawn. A + similarly indicate the piece is a Shogi-style promoted piece, that should re vert to its non-promoted version on capture (rather than to a Pawn). \par Note that promoted pieces are represented by pieces 11 further in the list. \par You should not have to use this option often: each variant has its own default setting for the piece representation in FEN, which should be sufficient in normal use. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 rsh }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 rsh }}}{\f1 /rsh }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 remoteShell }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 remoteShell }}}{\f1 /remoteShell }{\i\f1 shellname} {\f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Name of the command used to run programs remotely. If this option is not given, WinBoard}{\i\f1 }{\f1 uses its own built-in implementation of the Unix }{\i\f1 rcmd}{\f1 protocol (the protocol used by }{\i\f1 rsh}{\f1 ). \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 ruser }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ruser }}}{\f1 /ruser }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 remoteUser }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 remoteUser }}}{\f1 /remoteUser }{\i\f1 username}{ \f1 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 User name on the remote system when running programs with the remoteShell. The default is your local user name. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf11\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{ \f1\cf11 userName}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf11 userName}}}{\f1\cf11 /userName }{\i\f1\cf11 username}{\f1\cf11 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Name under which the Human player will be listed in the PGN file. (Default is the login name on your local computer.) \par }\pard\plain \s2\li119\sb120\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 delayBeforeQuit}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 delayBeforeQuit}}}{\f1\cf6 /delayBeforeQuit }{\i\f1\cf6 number}{\f1\cf6 \par }\pard \s2\li119\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright {\cs58\f1\cf6\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 }{\f1\cf6 delayAfterQuit}}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 }{\f1\cf6 delayAfterQuit}}}{\f1\cf6 /delayAfterQuit }{\i\f1\cf6 number}{\f1\cf6 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf6 These options specify how long WinBoard has to wait before sending a termination signal to rogue engine processes, that do not want to react to the \lquote quit\rquote command. The second one determines the pause after killing the engine, to make sure it dies. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 ini }}# {\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ini }}}{\f1 /ini }{\b0\f1 or}{\f1 }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 settingsFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 settingsFile }}}{\f1 /settingsFile }{\i\f1 filename\line }{\cs58\f1\cf2\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super K}{\f1\cf2 saveSettingsFile }}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\cf2\super #}{\f1\cf2 saveSettingsFile }}}{\f1\cf2 /saveSettingsFile }{\i\f1\cf2 filename}{\i\f1 \line }{\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 at sign}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 atsign }}}{\f1 @ }{\i\f1 file-name \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 See }{\f1\uldb Settings}{\v\f1 Settings}{\f1 . \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Initialization files}}K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Files}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Files}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Files}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 INITIALIZATION FILES \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Settings } }}{\f1\fs18\up6 }{\cs58\f1\super #{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Settings }}}{\f1 Settings \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {When WinBoard starts up, it reads option settings from a file named }{\i winboard.ini }{ in its installation directory (the directory containing winboard.exe). Options in this file have the same format as }{\uldb command line options}{\v Options}{, except that they do not all have to be on a sing le line. You can put a comment in a settings file by preceding it with a semicolon (}{\f2 ;}{). \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {The winboard.ini file is read before the command line is processed, so any options you give on the command line override options in the file. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If WinBoard encounters a /}{\f1\uldb settingsFile}{\v\f1 settingsFile}{\f1 }{\i\f1 filename }{\f1 or }{\f1\uldb @}{\v\f1 atsign}{\i\f1 filename }{\f1 option while reading settings (whether from the command line or a file), it reads more settings from the given file before reading the next option. \par The }{\f1\uldb Save Settings Now}{\v\f1 SaveSettings}{\f1 menu command writes the current values of most options to a file. In addition, settings are saved automatically when WinBoard exits if }{\f1\uldb Save Settings on Exit}{\v\f1 SaveSettingsOnExit}{ \f1 is checked. The settings are written to the last file named in a /settingsFile command }{\f1\cf2 that could be s uccessfully read, or in a /saveSettingsFile command (where no attempt is made to read it at all, making it work even if the mentioned file did not exist yet),}{\f1 if any; otherwise to winboard.ini}{\i\f1 .}{\f1 The @ option does not affect which file settings are saved to. \par Warning: Because Save Settings overwrites the last settings file (usually winboard.ini) and only saves a subset of WinBoard's options, you should not add settings of more options to such a file with a text editor. If you do this, your additional options w ill be lost on the next Save Settings. You can change the values of existing settings freely, using Notepad or any plain text editor. Be careful not to do this while WinBoard is running, however, unless you know that Save Settings on Exit is off. Otherwis e all your changes will be overwritten and lost when WinBoard exits. \par }{\f1\cf11 Notice that tournament managers, like PSWBTM, usually call WinBoard with the option not to save settings on exit, so that the entire tournament uses the same settings. So it does make sense to edit \lquote volatile\rquote options, such as /variant, into the settings file before such a tournament.}{\f1 }{\f1\cf2 Also note that a settings file that contains a /settingsFile or /saveSettingsFile option to redirect later saving to another file effectively protects its own contents against being overwritten by saving settings.}{\f1 \par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {\f1 \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\cs58\f1\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 ICS Logon} }#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 ICSLogon}}}{\f1 ICS Logon \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Whenever WinBoard connects to the Internet Chess Server, if it finds a file called }{\i\f1 ICS.ini }{\f1 in its installation directory}{\i\f1 ,}{\f1 it feeds the file's contents to the ICS as commands. Usually the first two lines of the file should be your ICS user name and password. You can specify a different name instead of }{\i\f1 ICS.ini}{\f1 by using the }{\f1\uldb icslogon}{\v\f1 icslogon}{ \f1 command line option. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Installing Chess Engines}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Installing Chess Engines}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0 \nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 InstallingChessEngines}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs20 INSTALLING CHESS ENGINES \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 Introduction \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard is capable of operating with many different chess engines. You can play chess against a compatible engine, set up matches between two engines, or (advanced users only) run an automated computer player on an ICS. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Typically, the main difficulty in installing a new chess engine for use b y WinBoard comes in getting the engine itself running and setting its options appropriately. The connection to WinBoard is relatively straightforward. \par WinBoard-compatible chess engines are Win32 command line programs that you can run by hand in an MS-DOS P rompt box and type human-readable commands to. WinBoard connects to an engine simply by starting the engine up in the background and communicating with it through a pair of pipes. Therefore the basic procedure for installing an engine is: \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 1. Get a copy of the engine and any supporting files it needs. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 2. Install and configure the engine as a command-line program by following the instructions that come with it. Try it out by running it from the command line in an MS-DOS Prompt box and make sure it works. \par 3. Optional, but recommended: Try out the WinBoard plus engine combination by running WinBoard with the proper command line arguments in an MS-DOS Prompt box. \par 4. Create a shortcut on your desktop or Start menu to run the engine with WinBoard. \par 5. Optionally edit your WinBoard.ini file to add the engine to the drop-down lists on WinBoard's startup dialog. \par This document cannot explain steps 1 and 2 in detail for all engines, but we will take you through all five steps in outline, using Crafty as an example. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 Example: Crafty \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 1. Choose a directory to put Crafty in. We'll use }{\f2 C:\\Program Files\\Crafty}{\f1 in this example. Download your copy of Crafty into this directory from its author's FTP site, }{\f2 ftp://ftp.cis.uab.edu/pub/hyatt}{\f1 . At this writing, you will need at least the following files: \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 read.me\line v15/crafty.doc\line v15/crafty.faq\line v15/wcrafty-15.*.exe}{\f1\fs20 (where * is replaced by the largest number there)\line }{\f2\fs20 common/start.zip}{\fs20 \line }{\f2\fs20 common/medium.zip}{\fs20 }{\f1\fs20 (or another book). \par }\pard\plain \s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 2. The first three files are documentation that you can read with a text edit or. Read the read.me file first and follow the instructions carefully. This will take some time. Do not write to the author of WinBoard if you have trouble with the instructions in the Crafty read.me. Try running Crafty from an MS-DOS Prompt box and make sure it works before you go on. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 3. Optional, but recommended: In an MS-DOS Prompt box,}{ }{\f2 cd }{\f1 to the directory where WinBoard is installed, typically }{\f2 "C:\\Program Files\\WinBoard"}{\f1 . Then type the following command line. Use the actual name of the wcrafty file you downloaded, not an }{\f2 *}{\f1 , and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too. \par }\pard\plain \s63\fi-720\li1440\sb80\sl-240\slmult0\nowidctlpar\adjustright \f2\fs20\cgrid {WinBoard /cp /fcp=WCrafty-15.* /fd="C:\\Program Files\\Crafty" /scp=WCrafty-15.* /sd="C:\\Program Files\\Crafty" \par }\pard\plain \s16\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard should start up, with Crafty running as its chess engine. Check that you can play chess against Crafty. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 4. To make a shortcut or Start menu entry for Crafty: Right-click on the desktop and select New/Shortcut. Use the Browse button to fin d your winboard.exe file and get its name into the Command Line box. (It usually will be "C:\\Program Files\\WinBoard\\winboard.exe".) Click in the Command Line box and hit the End key to go to the end. Add the following to the end of the command line, }{ \i\f1 after}{\f1 the closing quotation mark. Use the actual name of the wcrafty file you downloaded, not an }{\f2 *}{\f1 , and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too. \par }\pard\plain \s63\fi-720\li1440\sb80\sl-240\slmult0\nowidctlpar\adjustright \f2\fs20\cgrid {/cp /fcp=WCrafty-15.* /fd="C:\\Program Files\\Crafty" \line /scp=WCrafty-15.* /sd="C:\\Program Files\\Crafty" \par }\pard\plain \s62\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Press Next, choose a name for the shortcut, and press Finish. You can now use this shortcut to run WinBoard with Crafty. Double-click it to check that it works. You can drag or copy the shortcut into your Start menu if you like. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 5. To add Crafty as an option in the WinBoard Startup dialog, edit your }{\f1\uldb WinBoard.ini file}{\v\f1 Settings}{\f1 with Notepad or another plain text editor, carefully following the example shown under }{\f1\uldb /firstChessProgramNames}{\v\f1 firstChessProgramNames}{\f1 above. \par }\pard\plain \s2\li120\sb120\sa60\sl-240\slmult0\nowidctlpar\outlinelevel1\adjustright \b\f5\fs20\cgrid {\f1 For more information \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 If you would like to run an automated computer player on the ICS, see the separate file }{\f2 zippy.README}{\f1 . If you would like to write your own engine to interface to WinBoard, see the separate file }{\f2 engine-intf.html}{\f1 , and join the mailing list mentioned there. Both files are included in the WinBoard distribution. You might also want to get the source code for WinBoard. It is available from the author's Web page, http://www.tim-mann.org/chess.html}{\f2 .}{\f1 \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Firewalls}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Firewalls}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Firewalls}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs18\up6 }{\f1\fs20 FIREWALLS \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 By default, "WinBoard /ics"}{\i\f1 }{\f1 communicates with an Internet Chess Server by opening a TCP socket directly from the machine it is running on to the ICS. If there is a firewall between your machine and the ICS, this won't work. Here are some recipes for getting around common kinds of firewalls using special options to WinBoard}{\i\f1 .}{\f1 Important: See the paragraph in the }{\f1\uldb LIMITATIONS}{\v\f1 LIMITATIONS}{\f1 section below about extra echoes. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Suppose that you can't telnet directly to ICS, but you can telnet to a firewall host, log in, a nd then telnet from there to ICS. Let's say the firewall is called fire.wall.com. Set command-line options as follows: \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 WinBoard -ics -icshost fire.wall.com -icsport 23 \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Then when you run WinBoard}{\i\f1 }{\f1 in ICS mode, you will be prompted to log in to the firewall host. (This works because port 23 is the standard telnet login service.) Do so, then telnet to ICS, using a command like "telnet chessclub.com 5000", or whatever command the firewall provides for telnetting to port 5000. \par If your firewall lets you telnet (o r rlogin) to remote hosts, but doesn't let you telnet to port 5000, you will have to find some other host outside the firewall that does let you do this, and hop through it. For instance, suppose you have an account at foo.edu. Follow the recipe above, bu t instead of typing "telnet chessclub.com 5000" to the firewall, type "telnet foo.edu" (or "rlogin foo.edu"), log in there, and then type "telnet chessclub.com 5000". \par Exception: chessclub.com itself lets you connect to the chess server on the default telnet port (23), which is what you get if you don\rquote t specify a port to the telnet program. But the other chess servers don\rquote t allow this. \par Suppose that you can't telnet directly to ICS, but you can use rsh to run programs on a firewall host, and that host can telnet to ICS. Let's say the firewall is called rsh.wall.com. Set command-line options as follows: \par }\pard\plain \s19\li520\sb60\sl-240\slmult0\keep\nowidctlpar\tx520\tx920\tx1320\tx1720\tx2120\adjustright \f6\fs16\cgrid {\f2\fs20 WinBoard -ics -gateway rsh.wall.com -icshost chessclub.com \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Then when you run WinBoard}{\i\f1 }{\f1 in ICS mode, it will connect to the ICS by using rsh to run the command "telnet chessclub.com 5000" on host rsh.wall.com. \par ICC timestamp and FICS timeseal do not work through many}{\b\f1 }{\f1 firewalls. You can use them only if your firewall gives a clean TCP connection with a full 8-bit wide path. If your firewall allows you to get out only by running a special telnet program, you can't use timestamp or timeseal across it. But if you have access to a computer just outside your firewall, and you have much lower netlag when talking to that computer than to the ICS, it might be worthwhile runn ing timestamp there. Follow the instructions above for hopping through a host outside the firewall (foo.edu in the example), but run timestamp or timeseal on that host instead of telnet. \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Suppose that you have a SOCKS firewall that requires you to go through some extra level of authentication, but after that will give you a clean 8-bit wide TCP connection to the chess server. In that case, if you are using timestamp or timeseal, you need to somehow socksify it; if not, you need to socksify WinBoard itself. S ocksification is beyond the scope of this document, but see the SOCKS Web site at http://www.socks.nec.com/how2socksify.html. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Limitations}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Limitations}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Limitations}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs18\up6 }{\f1\fs20 LIMITATIONS }{\f1\fs20\cf11 AND NON-LIMITATIONS}{\f1\fs20 \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard}{\i\f1 }{\f1 is a Win32 application. It runs only on Windows NT and Windows 95. It does not work on Windows 3.11 or earlier, even with the Win32s compatibility package. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\i\f1 CMail, }{\f1 the companion program to xboard for playing electronic mail correspondence chess, has not been ported to Win32. \par There is no way for two people running copies of WinBoard}{\i\f1 }{\f1 to play each other without going through the Internet Chess Server. \par Under some circumstances, your ICS password may be echoed when you log on. \par If you are connecting to the ICS by running telnet, timestamp, or timeseal on an Internet provider host, you may find th at each line you type is echoed back an extra time after you hit Enter. You can probably turn this echo off. If your Internet provider is a Unix system, type "}{\f2 stty -echo}{\f1 " after you log in to the provider but before you run telnet, timestamp, or timeseal. In addition, you may need to type the sequence \ldblquote }{\f2 Ctrl+Q Ctrl+E Enter}{\f1 \ldblquote after you have finished logging in to ICS. On VMS, type \ldblquote } {\f2 set terminal /noecho /nowrap}{\f1 \rdblquote , and after you telnet to the ICS, type \ldblquote }{\f2 Ctrl+Q Ctrl+] Enter set mode char Enter Enter}{\f1 \rdblquote . It is a good idea to turn off the extra remote echo if you can, because otherwise it can get interleaved with output from the ICS and confuse WinBoard's parsing routines. Don\rquote t just turn off }{\f1\uldb Local Line Editing}{\v\f1 localLineEditing}{\f1 so that you see only the remote echo and not the local one; that will make the interleaving problem worse. \par The game parser recognizes only algebraic notation (SAN). \par The }{\f1\uldb ICS logon}{\v\f1 ICSLogon}{\f1 file does not work properly when you connect to ICS through a Unix gateway host by setting }{\f1\uldb icsPort}{\v\f1 icsPort}{\f1 to 23. The Unix login process apparently discards type-ahead. \par Some WinBoard functions may not work with versions of GNU Chess earlier than 4.0, patchlevel 77. The current version of WinBoard}{\i\f1 }{\f1 works best with Crafty version 15.11 or later. \par }{\f1\cf11 Many of the following points used to be limitations in WinBoard 4.2.7 and earlier, but are now fixed: \par The internal move legality tester in WinBoard 4.3.xx does look at the game history, and is fully aware of castling or en passant-capture rights. }{\f1 It permits castling with the king on the }{\b\f1 d}{\f1 file because this is possible in some "wild 1" games on ICS. The piece-drop menu does not check piece drops in bughouse to see if you actually hold the piece you are trying to drop.}{\f1\cf11 But this way of dropping pieces should be considered an obsolete feature, now that pieces can be dropped by dragging them from the holdings to the board. }{\f1 Anyway, if you would attempt an illegal move when using a chess engine or the ICS,}{\f1\cf11 }{\f1 WinBoard will accept the error message that comes back, undo the move, and let you try another. \par }{\f1\cf11 FEN positions saved by WinBoard}{\i\f1\cf11 }{\f1\cf11 do include correct information about whether castling or en passant are legal, and also handle the 50-move counter. \par }\pard\plain \s20\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The mate detector does not understand that non-contact mate is not really mate in bughouse.}{\f1\cf11 }{\f1 The only problem this causes while playing is minor: a "#" (mate indicator) character will show up after a non-contact mating move in the move list. WinBoard will not assume the game is over at that point,}{\f1\cf11 not even when the option Detect Mates is on. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1\cf11 Edit Gam e mode always uses the rules of the selected variant, which can be a variant that uses piece drops. You can load and edit games that contain piece drops. The (obsolete) piece menus are not active, but you can perform piece drops by dragging pieces from t he holdings. \par Edit Position mode does not allow you to edit the Crazyhouse holdings properly. You cannot drag pieces to the holding, and using the popup menu to put pieces there does not adapt the holding counts and leads to an inconsistent state. Set up Cra zyhouse positions by loading / pasting a bFEN, from there you can set the holdings. \par Fischer Random castling is fully understood. You can enter castlings by dragging the King on top of your Rook. You can probably also play Fischer Random successfully on ICS by typing castling moves into the ICS Interaction window. \par }{\f1 Also see the ToDo file included with the distribution for many other possible bugs, limitations, and ideas for improvement that have been suggested. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Authors}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Authors}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid { \cs58\f1\super $}{\f1 Authors}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs18\up6 }{\f1\fs20 AUTHORS AND CONTRIBUTORS \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 WinBoard is partly based on }{\i\f1 xboard}{\f1 , a chessboard program for Unix and the X Window System. Tim Mann has been responsible for all versions of WinBoard,}{ \i\f1 }{\f1 and for xboard versions 1.3 and beyond. }{\f1\cf11 H.G.Muller is responsible for version 4.3.}{\f1 \par Mark Williams added many features to Wi nBoard 4.1.0, including copy/paste, premove, icsAlarm, autoFlipView, training mode, auto raise, and blindfold. Hugh Fischer added piece animation to xboard, and Henrik Gram added it to WinBoard. Frank McIngvale contributed many xboard}{\i\f1 }{\f1 user interface improvements and improved Crafty support. Jochen Wiedmann ported xboard}{\i\f1 }{\f1 to the Amiga, creating }{\i\f1 AmyBoard}{\f1 , and converted the documentation to texinfo. Elmar Bartel contributed the new piece bitmaps for version 3.2. Evan Welsh wrote }{\i\f1 CMail. }{\f1 John Chanak contributed t he initial implementation of ICS mode. The default color scheme was adapted from Wayne Christopher's }{\i\f1 XChess }{\f1 program. Chris Sears and Dan Sears wrote the original xboard}{\i\f1 . }{\f1 They were responsible for xboard}{\i\f1 }{\f1 versions 1.0 through 1.2. }{\f1\cf6 Allessandro Scotti added ma ny elements to the user interface, including the board textures and font-based rendering, the evaluation-graph, move-history and engine-output window. He was also responsible for adding the UCI support.}{\f1 }{\f1\cf11 H.G. Muller made WinBoard castling- and e.p.-aware, a dded variant support with adjustable board sizes, the Crazyhouse holdings, and the fairy pieces. In addition he added most of the adjudication options, made WinBoard ore robust in dealing with buggy and crashing engines, and extended time control with a t ime-odds and node-count-based modes.}{\f1 \par Send bug reports to . Please run WinBoard with the /debug option and include the output from the resulting WinBoard.debug file in your message. \par }\pard\plain \s66\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cf11\cgrid {\f1 The WinBoard 4.3.xx line is being developed by H.G. Mull er independently of the GNU Savannah xboard project. Bug reports on this version, and suggestions for improvements and additions, are best posted in the WinBoard forum, development section (}{\field{\*\fldinst {\f1 HYPERLINK http://www.open-aurec.com/wbforum) }{\f1 {\*\datafield 00d0c9ea79f9bace118c8200aa004ba90b02000000170000002300000068007400740070003a002f002f007700770077002e006f00700065006e002d00610075007200650063002e0063006f006d002f007700620066006f00720075006d0029000000e0c9ea79f9bace118c8200aa004ba90b460000006800740074007000 3a002f002f007700770077002e006f00700065006e002d00610075007200650063002e0063006f006d002f007700620066006f00720075006d00290000000000000000000000000000000000000000000000000000}}}{\fldrslt {\cs59\ul\cf2 http://www.open-aurec.com/wbforum)}}}{\f1 . \par }{\f1\cf2 Michel van den Bergh provided the code for reading Polyglot opening books. \par Arun Persaud worked with H.G. Muller to combine all the features of the never-released WinBoard 4.2.8 of the Savannah project (mainly by Daniel Mehrmann), and th e never-released 4.3.16 into a unified WinBoard 4.4, which is now available both from the Savannah web site and the WinBoard forum. \par }\pard\plain \s1\li120\sb280\sa120\sl-320\slmult0\nowidctlpar\outlinelevel0\adjustright \b\f5\cgrid {\f1\fs20 \page }{\cs58\f1\fs20\super K{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super K}{\f1 Copyright}}#{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super #}{\f1 Copyright}}${\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super $}{\f1 Copyright}}+{\footnote\ftnalt \pard\plain \s57\li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\cs58\f1\super +}{\f1 main}}}{\f1\fs18\up6 }{\f1\fs20 COPYRIGHT \par }\pard\plain \s26\li120\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts. \line Enhancements Copyright 1992-2009 Free Software Foundation, Inc. \par }\pard\plain \li120\sb80\sl-240\slmult0\nowidctlpar\adjustright \f5\fs20\cgrid {\f1 The following terms apply to Digital Equipment Corporation's copyright interest in WinBoard: \par All Rights Reserved \par Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without f ee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity per taining to distribution of the software without specific, written prior permission. \par DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY S PECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOF TWARE. \par The following terms apply to the enhanced version of WinBoard distributed by the Free Software Foundation: \par 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 3 of the License, or (at your option) any later version. \par 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. \par 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. \par }}xboard-4.9.1/winboard/woptions.h0000644000175000001440000000277512717001265013575 00000000000000/* * woptions.h -- Options dialog box routines for WinBoard * * Copyright 2000, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include VOID GeneralOptionsPopup(HWND hwnd); VOID BoardOptionsPopup(HWND hwnd); VOID IcsOptionsPopup(HWND hwnd); VOID FontsOptionsPopup(HWND hwnd); VOID SoundOptionsPopup(HWND hwnd); VOID CommPortOptionsPopup(HWND hwnd); VOID LoadOptionsPopup(HWND hwnd); VOID SaveOptionsPopup(HWND hwnd); VOID TimeControlOptionsPopup(HWND hwnd); VOID EnginePlayOptionsPopup(HWND hwnd); VOID UciOptionsPopup(HWND hwnd); xboard-4.9.1/winboard/wsnap.c0000644000175000001440000002172712717001265013034 00000000000000/* * Smart "snapping" for window moving and sizing * * Author: Alessandro Scotti (Dec 2005) * * Copyright 2005 Alessandro Scotti * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "wsnap.h" /* Imports from winboard.c */ extern HINSTANCE hInst; extern HWND hwndMain; extern HWND moveHistoryDialog; extern HWND evalGraphDialog; extern HWND engineOutputDialog; extern HWND gameListDialog; static BOOL SnappingEnabled = TRUE; static void AddSnapPoint( int * grid, int * grid_len, int value ) { int len = *grid_len; if( len < MAX_SNAP_POINTS ) { int i; for( i=0; ix_grid, &sd->x_grid_len, rc->left ); AddSnapPoint( sd->x_grid, &sd->x_grid_len, rc->right ); AddSnapPoint( sd->y_grid, &sd->y_grid_len, rc->top ); AddSnapPoint( sd->y_grid, &sd->y_grid_len, rc->bottom ); } static RECT activeRect, mainRect; static int side, loc; // code for edge we were dragging, and its latest coordinate static void AddSnapWindow( HWND hWndCaller, SnapData * sd, HWND hWndSnapWindow ) { if( hWndSnapWindow != NULL && IsWindowVisible(hWndSnapWindow) ) { RECT rc; GetWindowRect( hWndSnapWindow, &rc ); if(hWndSnapWindow == hwndMain) mainRect = rc; if(hWndCaller != hWndSnapWindow) { AddSnapRectangle( sd, &rc ); } else { activeRect = rc; // [HGM] glue: remember original geometry of dragged window } } } static BOOL AdjustToSnapPoint( int * grid, int grid_len, int value, int * snap_size, int * delta ) { BOOL result = FALSE; int i; for( i=0; ix_grid_len = 0; snapData->y_grid_len = 0; side = 0; /* Add desktop area */ if( SystemParametersInfo( SPI_GETWORKAREA, 0, &rc, 0 ) ) { AddSnapRectangle( snapData, &rc ); } if( hWnd != hwndMain ) { /* Add other windows */ AddSnapWindow( hWnd, snapData, hwndMain ); AddSnapWindow( hWnd, snapData, moveHistoryDialog ); AddSnapWindow( hWnd, snapData, evalGraphDialog ); AddSnapWindow( hWnd, snapData, engineOutputDialog ); AddSnapWindow( hWnd, snapData, gameListDialog ); } return 0; } LRESULT OnMoving( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam ) { LPRECT lprc = (LPRECT) lParam; int delta_x = 0; int delta_y = 0; int snap_size_x = SNAP_DISTANCE; int snap_size_y = SNAP_DISTANCE; if( ! SnappingEnabled ) { return FALSE; } AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->left, &snap_size_x, &delta_x ); AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->right, &snap_size_x, &delta_x ); AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->top, &snap_size_y, &delta_y ); AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->bottom, &snap_size_y, &delta_y ); OffsetRect( lprc, delta_x, delta_y ); return TRUE; } LRESULT OnSizing( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam ) { LPRECT lprc = (LPRECT) lParam; int delta_x = 0; int delta_y = 0; int snap_size_x = SNAP_DISTANCE; int snap_size_y = SNAP_DISTANCE; if( ! SnappingEnabled ) { return FALSE; } switch( wParam ) { case WMSZ_BOTTOM: AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->bottom, &snap_size_y, &delta_y ); lprc->bottom += delta_y; side = 4; loc = lprc->bottom; break; case WMSZ_BOTTOMLEFT: AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->bottom, &snap_size_y, &delta_y ); lprc->bottom += delta_y; AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->left, &snap_size_x, &delta_x ); lprc->left += delta_x; break; case WMSZ_BOTTOMRIGHT: AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->bottom, &snap_size_y, &delta_y ); lprc->bottom += delta_y; AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->right, &snap_size_x, &delta_x ); lprc->right += delta_x; break; case WMSZ_LEFT: AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->left, &snap_size_x, &delta_x ); lprc->left += delta_x; side = 1; loc = lprc->left; break; case WMSZ_RIGHT: AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->right, &snap_size_x, &delta_x ); lprc->right += delta_x; side = 2; loc = lprc->right; break; case WMSZ_TOP: AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->top, &snap_size_y, &delta_y ); lprc->top += delta_y; side = 3; loc = lprc->top; break; case WMSZ_TOPLEFT: AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->top, &snap_size_y, &delta_y ); lprc->top += delta_y; AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->left, &snap_size_x, &delta_x ); lprc->left += delta_x; break; case WMSZ_TOPRIGHT: AdjustToSnapPoint( snapData->y_grid, snapData->y_grid_len, lprc->top, &snap_size_y, &delta_y ); lprc->top += delta_y; AdjustToSnapPoint( snapData->x_grid, snapData->x_grid_len, lprc->right, &snap_size_x, &delta_x ); lprc->right += delta_x; break; default: return FALSE; } return TRUE; } static int Adjust( LONG *data, int new, int old , int vertical) { // protect edges that also touch main window if(!vertical && (old == mainRect.left || old == mainRect.right)) return 0; if( vertical && (old == mainRect.top || old == mainRect.bottom)) return 0; // if the coordinate was the same as the old, now make it the same as the new edge position if(*data == old) { *data = new; return 1; } return 0; } static void KeepTouching( int side, int new, int old, HWND hWnd ) { // if the mentioned window was touching on the moved edge, move its touching edge too if( IsWindowVisible(hWnd) ) { RECT rc; int i = 0; GetWindowRect( hWnd, &rc ); switch(side) { // figure out which edge we might need to drag along (if any) case 1: i = Adjust(&rc.right, new, old, 0); break; case 2: i = Adjust(&rc.left, new, old, 0); break; case 3: i = Adjust(&rc.bottom, new, old, 1); break; case 4: i = Adjust(&rc.top, new, old, 1); break; } if(i) { // the correct edge was touching, and is adjusted SetWindowPos(hWnd, HWND_TOP, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, SWP_NOZORDER ); } } } LRESULT OnExitSizeMove( SnapData * snapData, HWND hWnd, WPARAM wParam, LPARAM lParam ) { if(side && hWnd != hwndMain) { // [HGM] glue: we have been sizing, by dragging an edge int *grid = (side > 2 ? snapData->y_grid : snapData->x_grid); int i, pos = -1, len = (side > 2 ? snapData->y_grid_len : snapData->x_grid_len); switch(side) { case 1: pos = activeRect.left; break; case 2: pos = activeRect.right; break; case 3: pos = activeRect.top; break; case 4: pos = activeRect.bottom; break; } for(i=0; i #include #include #include #include "common.h" #include "frontend.h" #include "backend.h" #include "winboard.h" #include "evalgraph.h" #include "wsnap.h" #define WM_REFRESH_GRAPH (WM_USER + 1) /* Module globals */ static BOOLEAN evalGraphDialogUp; static COLORREF crWhite = RGB( 0xFF, 0xFF, 0xB0 ); static COLORREF crBlack = RGB( 0xAD, 0x5D, 0x3D ); static HDC hdcPB = NULL; static HBITMAP hbmPB = NULL; static HPEN pens[PEN_ANY+1]; // [HGM] put all pens in one array static HBRUSH hbrHist[3] = { NULL, NULL, NULL }; Boolean EvalGraphIsUp() { return evalGraphDialogUp; } // [HGM] front-end, added as wrapper to avoid use of LineTo and MoveToEx in other routines (so they can be back-end) void DrawSegment( int x, int y, int *lastX, int *lastY, int penType ) { POINT stPt; if(penType == PEN_NONE) MoveToEx( hdcPB, x, y, &stPt ); else { HPEN hp = SelectObject( hdcPB, pens[penType] ); LineTo( hdcPB, x, y ); SelectObject( hdcPB, hp ); } if(lastX != NULL) { *lastX = stPt.x; *lastY = stPt.y; } } // front-end wrapper for drawing functions to do rectangles void DrawRectangle( int left, int top, int right, int bottom, int side, int style ) { HPEN hp = SelectObject( hdcPB, pens[PEN_BLACK] ); RECT rc; rc.top = top; rc.left = left; rc.bottom = bottom; rc.right = right; if(style == FILLED) FillRect( hdcPB, &rc, hbrHist[side] ); else { SelectObject( hdcPB, hbrHist[side] ); Rectangle( hdcPB, left, top, right, bottom ); } SelectObject( hdcPB, hp ); } // front-end wrapper for putting text in graph void DrawEvalText(char *buf, int cbBuf, int y) { SIZE stSize; SetBkMode( hdcPB, TRANSPARENT ); GetTextExtentPoint32( hdcPB, buf, cbBuf, &stSize ); TextOut( hdcPB, MarginX - stSize.cx - 2, y - stSize.cy / 2, buf, cbBuf ); } // front-end static HBRUSH CreateBrush( UINT style, COLORREF color ) { LOGBRUSH stLB; stLB.lbStyle = style; stLB.lbColor = color; stLB.lbHatch = 0; return CreateBrushIndirect( &stLB ); } // front-end. Create pens, device context and buffer bitmap for global use, copy result to display // The back-end part n the middle has been taken out and moed to PainEvalGraph() static VOID DisplayEvalGraph( HWND hWnd, HDC hDC ) { RECT rcClient; int width; int height; /* Get client area */ GetClientRect( hWnd, &rcClient ); width = rcClient.right - rcClient.left; height = rcClient.bottom - rcClient.top; /* Create or recreate paint box if needed */ if( hbmPB == NULL || width != nWidthPB || height != nHeightPB ) { if( pens[PEN_DOTTED] == NULL ) { pens[PEN_BLACK] = GetStockObject(BLACK_PEN); pens[PEN_DOTTED] = CreatePen( PS_DOT, 0, RGB(0xA0,0xA0,0xA0) ); pens[PEN_BLUEDOTTED] = CreatePen( PS_DOT, 0, RGB(0x00,0x00,0xFF) ); pens[PEN_BOLDWHITE] = CreatePen( PS_SOLID, 2, crWhite ); pens[PEN_BOLDBLACK] = CreatePen( PS_SOLID, 2, crBlack ); hbrHist[0] = CreateBrush( BS_SOLID, crWhite ); hbrHist[1] = CreateBrush( BS_SOLID, crBlack ); hbrHist[2] = CreateBrush( BS_SOLID, GetSysColor( COLOR_3DFACE ) ); // background } if( hdcPB != NULL ) { DeleteDC( hdcPB ); hdcPB = NULL; } if( hbmPB != NULL ) { DeleteObject( hbmPB ); hbmPB = NULL; } hdcPB = CreateCompatibleDC( hDC ); nWidthPB = width; nHeightPB = height; hbmPB = CreateCompatibleBitmap( hDC, nWidthPB, nHeightPB ); SelectObject( hdcPB, hbmPB ); } // back-end painting; calls back front-end primitives for lines, rectangles and text PaintEvalGraph(); SetWindowText(hWnd, MakeEvalTitle(differentialView ? T_("Blunder Graph") : T_("Evaluation Graph"))); /* Copy bitmap into destination DC */ BitBlt( hDC, 0, 0, nWidthPB, nHeightPB, hdcPB, 0, 0, SRCCOPY ); } // Note: Once the eval graph is opened, this window-proc lives forever; een closing the // eval-graph window merely hides it. On opening we re-initialize it, though, so it could // as well hae been destroyed. While it is open it processes the REFRESH_GRAPH commands. LRESULT CALLBACK EvalGraphProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static SnapData sd; PAINTSTRUCT stPS; HDC hDC; switch (message) { case WM_INITDIALOG: Translate(hDlg, DLG_EvalGraph); if( evalGraphDialog == NULL ) { evalGraphDialog = hDlg; RestoreWindowPlacement( hDlg, &wpEvalGraph ); /* Restore window placement */ } return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: break; } break; case WM_ERASEBKGND: return TRUE; case WM_PAINT: hDC = BeginPaint( hDlg, &stPS ); DisplayEvalGraph( hDlg, hDC ); EndPaint( hDlg, &stPS ); break; case WM_MOUSEWHEEL: if((short)HIWORD(wParam) < 0) appData.zoom++; if((short)HIWORD(wParam) > 0 && appData.zoom > 1) appData.zoom--; goto paint; case WM_RBUTTONDOWN: differentialView = !differentialView; case WM_REFRESH_GRAPH: paint: hDC = GetDC( hDlg ); DisplayEvalGraph( hDlg, hDC ); ReleaseDC( hDlg, hDC ); break; case WM_LBUTTONDOWN: if( wParam == 0 || wParam == MK_LBUTTON ) { int index = GetMoveIndexFromPoint( LOWORD(lParam), HIWORD(lParam) ); if( index >= 0 && index < currLast ) { ToNrEvent( index + 1 ); } } return TRUE; case WM_SIZE: InvalidateRect( hDlg, NULL, FALSE ); break; case WM_GETMINMAXINFO: { MINMAXINFO * mmi = (MINMAXINFO *) lParam; mmi->ptMinTrackSize.x = 100; mmi->ptMinTrackSize.y = 100; } break; /* Support for captionless window */ case WM_CLOSE: EvalGraphPopDown(); break; case WM_ENTERSIZEMOVE: return OnEnterSizeMove( &sd, hDlg, wParam, lParam ); case WM_SIZING: return OnSizing( &sd, hDlg, wParam, lParam ); case WM_MOVING: return OnMoving( &sd, hDlg, wParam, lParam ); case WM_EXITSIZEMOVE: return OnExitSizeMove( &sd, hDlg, wParam, lParam ); } return FALSE; } // creates the eval graph, or unhides it. VOID EvalGraphPopUp() { FARPROC lpProc; CheckMenuItem(GetMenu(hwndMain), IDM_ShowEvalGraph, MF_CHECKED); if( evalGraphDialog ) { SendMessage( evalGraphDialog, WM_INITDIALOG, 0, 0 ); if( ! evalGraphDialogUp ) { ShowWindow(evalGraphDialog, SW_SHOW); } } else { crWhite = appData.evalHistColorWhite; crBlack = appData.evalHistColorBlack; lpProc = MakeProcInstance( (FARPROC) EvalGraphProc, hInst ); /* Note to self: dialog must have the WS_VISIBLE style set, otherwise it's not shown! */ CreateDialog( hInst, MAKEINTRESOURCE(DLG_EvalGraph), hwndMain, (DLGPROC)lpProc ); FreeProcInstance(lpProc); } evalGraphDialogUp = TRUE; } // Note that this hides the window. It could as well have destroyed it. VOID EvalGraphPopDown() { CheckMenuItem(GetMenu(hwndMain), IDM_ShowEvalGraph, MF_UNCHECKED); if( evalGraphDialog ) { ShowWindow(evalGraphDialog, SW_HIDE); } evalGraphDialogUp = FALSE; } // This function is the interface to the back-end. It is currently called through the front-end, // though, where it shares the HistorySet() wrapper with MoveHistorySet(). Once all front-ends // support the eval graph, it would be more logical to call it directly from the back-end. VOID EvalGraphSet( int first, int last, int current, ChessProgramStats_Move * pvInfo ) { /* [AS] Danger! For now we rely on the pvInfo parameter being a static variable! */ currFirst = first; currLast = last; currCurrent = current; currPvInfo = pvInfo; if( evalGraphDialog ) { SendMessage( evalGraphDialog, WM_REFRESH_GRAPH, 0, 0 ); } } xboard-4.9.1/winboard/wgamelist.c0000644000175000001440000003603012717001265013671 00000000000000/* * wgamelist.c -- Game list window for WinBoard * * Copyright 1995, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include /* required for all Windows applications */ #include #include #include #include #include #include #include #include "common.h" #include "frontend.h" #include "backend.h" #include "winboard.h" #include "wsnap.h" #define _(s) T_(s) /* Module globals */ static BOOLEAN gameListUp = FALSE; static FILE* gameFile; static char* gameFileName = NULL; /* [AS] Setup the game list according to the specified filter */ int GameListToListBox( HWND hDlg, BOOL boReset, char * pszFilter, struct GameListStats * stats, BOOL byPos, BOOL narrow ) { ListGame * lg = (ListGame *) gameList.head; int nItem; char buf[MSG_SIZ]; BOOL hasFilter = FALSE; int count = 0; struct GameListStats dummy; if(!hDlg) hDlg = gameListDialog; // [HGM] to allow calling from Game List Options dialog if(!hDlg) return 0; /* Initialize stats (use a dummy variable if caller not interested in them) */ if( stats == NULL ) { stats = &dummy; } stats->white_wins = 0; stats->black_wins = 0; stats->drawn = 0; stats->unfinished = 0; if( boReset ) { SendDlgItemMessage(hDlg, OPT_GameListText, LB_RESETCONTENT, 0, 0); } if( pszFilter != NULL ) { if( strlen( pszFilter ) > 0 ) { hasFilter = TRUE; } } if(byPos) InitSearch(); for (nItem = 0; nItem < ((ListGame *) gameList.tailPred)->number; nItem++){ char * st = NULL; BOOL skip = FALSE; int pos = -1; if(nItem % 2000 == 0) { snprintf(buf, MSG_SIZ, _("Scanning through games (%d)"), nItem); SetWindowText(hwndMain, buf); DoEvents(); } if(!narrow || lg->position >= 0) { if( hasFilter ) { st = GameListLine(lg->number, &lg->gameInfo); if( !SearchPattern( st, pszFilter) ) skip = TRUE; } if( !skip && byPos) { if( (pos = GameContainsPosition(gameFile, lg)) < 0) skip = TRUE; } if( ! skip ) { if(!st) st = GameListLine(lg->number, &lg->gameInfo); SendDlgItemMessage(hDlg, OPT_GameListText, LB_ADDSTRING, 0, (LPARAM) st); count++; /* Update stats */ if( lg->gameInfo.result == WhiteWins ) stats->white_wins++; else if( lg->gameInfo.result == BlackWins ) stats->black_wins++; else if( lg->gameInfo.result == GameIsDrawn ) stats->drawn++; else stats->unfinished++; if(!byPos) pos = 0; } } lg->position = pos; if(st) free(st); lg = (ListGame *) lg->node.succ; } SendDlgItemMessage(hDlg, OPT_GameListText, LB_SETCURSEL, 0, 0); SetWindowText(hwndMain, "WinBoard"); return count; } /* [AS] Show number of visible (filtered) games and total on window caption */ static int GameListUpdateTitle( HWND hDlg, char * pszTitle, int item_count, int item_total, struct GameListStats * stats ) { char buf[256]; snprintf( buf, sizeof(buf)/sizeof(buf[0]),_("%s - %d/%d games"), pszTitle, item_count, item_total ); if( stats != 0 ) { sprintf( buf+strlen(buf), " (%d-%d-%d)", stats->white_wins, stats->black_wins, stats->drawn ); } SetWindowText( hDlg, buf ); return 0; } #define MAX_FILTER_LENGTH 128 LRESULT CALLBACK GameListDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static char szDlgTitle[64]; static HANDLE hwndText; int nItem; RECT rect; static int sizeX, sizeY; int newSizeX, newSizeY; MINMAXINFO *mmi; static BOOL filterHasFocus = FALSE; int count; struct GameListStats stats; static SnapData sd; switch (message) { case WM_INITDIALOG: Translate(hDlg, DLG_GameList); GetWindowText( hDlg, szDlgTitle, sizeof(szDlgTitle) ); szDlgTitle[ sizeof(szDlgTitle)-1 ] = '\0'; if (gameListDialog) { SendDlgItemMessage(hDlg, OPT_GameListText, LB_RESETCONTENT, 0, 0); } /* Initialize the dialog items */ hwndText = GetDlgItem(hDlg, OPT_TagsText); /* Set font */ SendDlgItemMessage( hDlg, OPT_GameListText, WM_SETFONT, (WPARAM)font[boardSize][GAMELIST_FONT]->hf, MAKELPARAM(TRUE, 0 )); count = GameListToListBox( hDlg, gameListDialog ? TRUE : FALSE, NULL, &stats, FALSE, FALSE ); SendDlgItemMessage( hDlg, IDC_GameListFilter, WM_SETTEXT, 0, (LPARAM) "" ); SendDlgItemMessage( hDlg, IDC_GameListFilter, EM_SETLIMITTEXT, MAX_FILTER_LENGTH, 0 ); filterHasFocus = FALSE; /* Size and position the dialog */ if (!gameListDialog) { gameListDialog = hDlg; GetClientRect(hDlg, &rect); sizeX = rect.right; sizeY = rect.bottom; if (wpGameList.x != CW_USEDEFAULT && wpGameList.y != CW_USEDEFAULT && wpGameList.width != CW_USEDEFAULT && wpGameList.height != CW_USEDEFAULT) { WINDOWPLACEMENT wp; EnsureOnScreen(&wpGameList.x, &wpGameList.y, 0, 0); wp.length = sizeof(WINDOWPLACEMENT); wp.flags = 0; wp.showCmd = SW_SHOW; wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0; wp.rcNormalPosition.left = wpGameList.x; wp.rcNormalPosition.right = wpGameList.x + wpGameList.width; wp.rcNormalPosition.top = wpGameList.y; wp.rcNormalPosition.bottom = wpGameList.y + wpGameList.height; SetWindowPlacement(hDlg, &wp); GetClientRect(hDlg, &rect); newSizeX = rect.right; newSizeY = rect.bottom; ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY, newSizeX, newSizeY); sizeX = newSizeX; sizeY = newSizeY; } else GetActualPlacement( gameListDialog, &wpGameList ); } GameListUpdateTitle( hDlg, _("Game List"), count, ((ListGame *) gameList.tailPred)->number, &stats ); // [HGM] always update title GameListHighlight(lastLoadGameNumber); return FALSE; case WM_SIZE: newSizeX = LOWORD(lParam); newSizeY = HIWORD(lParam); ResizeEditPlusButtons(hDlg, GetDlgItem(hDlg, OPT_GameListText), sizeX, sizeY, newSizeX, newSizeY); sizeX = newSizeX; sizeY = newSizeY; break; case WM_ENTERSIZEMOVE: return OnEnterSizeMove( &sd, hDlg, wParam, lParam ); case WM_SIZING: return OnSizing( &sd, hDlg, wParam, lParam ); case WM_MOVING: return OnMoving( &sd, hDlg, wParam, lParam ); case WM_EXITSIZEMOVE: return OnExitSizeMove( &sd, hDlg, wParam, lParam ); case WM_GETMINMAXINFO: /* Prevent resizing window too small */ mmi = (MINMAXINFO *) lParam; mmi->ptMinTrackSize.x = 100; mmi->ptMinTrackSize.y = 100; break; case WM_COMMAND: /* [AS] If is pressed while editing the filter, it's better to apply the filter rather than selecting the current game. */ if( LOWORD(wParam) == IDC_GameListFilter ) { switch( HIWORD(wParam) ) { case EN_SETFOCUS: filterHasFocus = TRUE; break; case EN_KILLFOCUS: filterHasFocus = FALSE; break; } } if( filterHasFocus && (LOWORD(wParam) == IDOK) ) { wParam = IDC_GameListDoFilter; } /* [AS] End command replacement */ switch (LOWORD(wParam)) { case OPT_GameListLoad: LoadOptionsPopup(hDlg); return TRUE; case IDOK: nItem = SendDlgItemMessage(hDlg, OPT_GameListText, LB_GETCURSEL, 0, 0); if (nItem < 0) { /* is this possible? */ DisplayError(_("No game selected"), 0); return TRUE; } break; /* load the game*/ case OPT_GameListNext: nItem = SendDlgItemMessage(hDlg, OPT_GameListText, LB_GETCURSEL, 0, 0); nItem++; if (nItem >= ((ListGame *) gameList.tailPred)->number) { /* [AS] Removed error message */ /* DisplayError(_("Can't go forward any further"), 0); */ return TRUE; } SendDlgItemMessage(hDlg, OPT_GameListText, LB_SETCURSEL, nItem, 0); break; /* load the game*/ case OPT_GameListPrev: #if 0 nItem = SendDlgItemMessage(hDlg, OPT_GameListText, LB_GETCURSEL, 0, 0); nItem--; if (nItem < 0) { /* [AS] Removed error message, added return */ /* DisplayError(_("Can't back up any further"), 0); */ return TRUE; } SendDlgItemMessage(hDlg, OPT_GameListText, LB_SETCURSEL, nItem, 0); break; /* load the game*/ #endif /* [AS] */ case OPT_GameListFind: case IDC_GameListDoFilter: { char filter[MAX_FILTER_LENGTH+1]; if( GetDlgItemText( hDlg, IDC_GameListFilter, filter, sizeof(filter) ) >= 0 ) { filter[ sizeof(filter)-1 ] = '\0'; count = GameListToListBox( hDlg, TRUE, filter, &stats, LOWORD(wParam)!=IDC_GameListDoFilter, LOWORD(wParam)==OPT_GameListNarrow ); GameListUpdateTitle( hDlg, _("Game List"), count, ((ListGame *) gameList.tailPred)->number, &stats ); } } return FALSE; break; case IDCANCEL: case OPT_GameListClose: GameListPopDown(); return TRUE; case OPT_GameListText: switch (HIWORD(wParam)) { case LBN_DBLCLK: nItem = SendMessage((HWND) lParam, LB_GETCURSEL, 0, 0); break; /* load the game*/ default: return FALSE; } break; default: return FALSE; } /* Load the game */ { /* [AS] Get index from the item itself, because filtering makes original order unuseable. */ int index = SendDlgItemMessage(hDlg, OPT_GameListText, LB_GETCURSEL, 0, 0); char * text; LRESULT res; if( index < 0 ) { return TRUE; } res = SendDlgItemMessage( hDlg, OPT_GameListText, LB_GETTEXTLEN, index, 0 ); if( res == LB_ERR ) { return TRUE; } text = (char *) malloc( res+1 ); res = SendDlgItemMessage( hDlg, OPT_GameListText, LB_GETTEXT, index, (LPARAM)text ); index = atoi( text ); nItem = index - 1; free( text ); /* [AS] End: nItem has been "patched" now! */ if (cmailMsgLoaded) { CmailLoadGame(gameFile, nItem + 1, gameFileName, TRUE); } else { LoadGame(gameFile, nItem + 1, gameFileName, TRUE); SetFocus(hwndMain); // [HGM] automatic focus switch } } return TRUE; default: break; } return FALSE; } VOID GameListPopUp(FILE *fp, char *filename) { FARPROC lpProc; gameFile = fp; if (gameFileName != filename) { if (gameFileName) free(gameFileName); gameFileName = StrSave(filename); } CheckMenuItem(GetMenu(hwndMain), IDM_ShowGameList, MF_CHECKED); EnableMenuItem(GetMenu(hwndMain), IDM_SaveSelected, MF_ENABLED); if (gameListDialog) { SendMessage(gameListDialog, WM_INITDIALOG, 0, 0); if (!gameListUp) ShowWindow(gameListDialog, SW_SHOW); else SetFocus(gameListDialog); } else { lpProc = MakeProcInstance((FARPROC)GameListDialog, hInst); CreateDialog(hInst, MAKEINTRESOURCE(DLG_GameList), hwndMain, (DLGPROC)lpProc); FreeProcInstance(lpProc); } gameListUp = TRUE; } FILE *GameFile() { return gameFile; } VOID GameListPopDown(void) { CheckMenuItem(GetMenu(hwndMain), IDM_ShowGameList, MF_UNCHECKED); EnableMenuItem(GetMenu(hwndMain), IDM_SaveSelected, MF_GRAYED); if (gameListDialog) ShowWindow(gameListDialog, SW_HIDE); gameListUp = FALSE; } VOID GameListHighlight(int index) { char buf[MSG_SIZ]; int i, j, k, n, res = 0; if (gameListDialog == NULL) return; for(i=64; ; i+=i) { res = SendDlgItemMessage( gameListDialog, OPT_GameListText, LB_GETTEXT, i, (LPARAM)buf ); if(res == LB_ERR || index < atoi( buf )) break; } j = i/2; while(i-j > 1) { n = (i + j) >> 1; res = SendDlgItemMessage( gameListDialog, OPT_GameListText, LB_GETTEXT, n, (LPARAM)buf ); if(res == LB_ERR || index < (k = atoi( buf ))) i = n; else { j = n; if(index == k) break; } } SendDlgItemMessage(gameListDialog, OPT_GameListText, LB_SETCURSEL, j, 0); } VOID GameListDestroy() { GameListPopDown(); if (gameFileName) { free(gameFileName); gameFileName = NULL; } } VOID ShowGameListProc() { if (gameListUp) { if(gameListDialog) SetFocus(gameListDialog); // GameListPopDown(); } else { if (gameFileName) { GameListPopUp(gameFile, gameFileName); } else { DisplayError(_("No game list"), 0); } } } HGLOBAL ExportGameListAsText() { HGLOBAL result = NULL; LPVOID lpMem = NULL; ListGame * lg = (ListGame *) gameList.head; int nItem; DWORD dwLen = 0; if( ! gameFileName || ((ListGame *) gameList.tailPred)->number <= 0 ) { DisplayError(_(_("Game list not loaded or empty")), 0); return NULL; } /* Get list size */ for (nItem = 0; nItem < ((ListGame *) gameList.tailPred)->number; nItem++){ char * st = GameListLineFull(lg->number, &lg->gameInfo); dwLen += strlen(st) + 2; /* Add extra characters for "\r\n" */ free(st); lg = (ListGame *) lg->node.succ; } /* Allocate memory for the list */ result = GlobalAlloc(GHND, dwLen+1 ); if( result != NULL ) { lpMem = GlobalLock(result); } /* Copy the list into the global memory block */ if( lpMem != NULL ) { char * dst = (char *) lpMem; size_t len; lg = (ListGame *) gameList.head; for (nItem = 0; nItem < ((ListGame *) gameList.tailPred)->number; nItem++){ char * st = GameListLineFull(lg->number, &lg->gameInfo); len = sprintf( dst, "%s\r\n", st ); dst += len; free(st); lg = (ListGame *) lg->node.succ; } GlobalUnlock( result ); } return result; } xboard-4.9.1/winboard/winboard.h0000644000175000001440000001770612717001265013520 00000000000000/* * WinBoard.h -- Definitions for Windows NT front end to XBoard * * Copyright 1991 by Digital Equipment Corporation, Maynard, * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * The following terms apply to Digital Equipment Corporation's copyright * interest in XBoard: * ------------------------------------------------------------------------ * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Digital not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * ------------------------------------------------------------------------ * * The following terms apply to the enhanced version of XBoard * distributed by the Free Software Foundation: * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "resource.h" #include /* Types */ typedef struct { char faceName[LF_FACESIZE]; float pointSize; BYTE bold, italic, underline, strikeout; BYTE charset; } MyFontParams; typedef struct { char *def; MyFontParams mfp; LOGFONT lf; HFONT hf; } MyFont; typedef enum { SizeTiny, SizeTeeny, SizeDinky, SizePetite, SizeSlim, SizeSmall, SizeMediocre, SizeMiddling, SizeAverage, SizeModerate, SizeMedium, SizeBulky, SizeLarge, SizeBig, SizeHuge, SizeGiant, SizeColossal, SizeTitanic, NUM_SIZES } BoardSize; typedef struct { COLORREF color; int effects; char *name; } MyColorizeAttribs; typedef struct { char* name; void* data; int flag; // [HGM] needed to indicate if data was malloc'ed or not } MySound; typedef struct { COLORREF color; int effects; MySound sound; } MyTextAttribs; /* Functions */ BOOL InitApplication(HINSTANCE); BOOL InitInstance(HINSTANCE, int, LPSTR); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK BoardSizeDlg(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK ButtonProc(HWND, UINT, WPARAM, LPARAM); VOID InitAppData(LPSTR); VOID InitDrawingColors(VOID); VOID InitDrawingSizes(BoardSize boardSize, int flags); VOID InitMenuChecks(VOID); int ICSInitScript(VOID); BOOL CenterWindow(HWND hwndChild, HWND hwndParent); VOID ResizeEditPlusButtons(HWND hDlg, HWND hText, int sizeX, int sizeY, int newSizeX, int newSizeY); VOID PromotionPopup(HWND hwnd); FILE *OpenFileDialog(HWND hWnd, char *write, char *defName, char *defExt, char *nameFilt, char *dlgTitle, UINT *number, char fileTitle[MSG_SIZ], char fileName[MSG_SIZ]); VOID InputEvent(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); DWORD InputThread(LPVOID arg); DWORD NonOvlInputThread(LPVOID arg); DWORD SocketInputThread(LPVOID arg); BOOL ChangeColor(HWND hwnd, COLORREF *which); VOID ChangeBoardSize(BoardSize newSize); BOOL APIENTRY MyCreateFont(HWND hwnd, MyFont *font); VOID ErrorPopDown(VOID); VOID EnsureOnScreen(int *x, int *y, int minX, int minY); HBITMAP DoLoadBitmap(HINSTANCE hinst, char *piece, int squareSize, char *suffix); COLORREF ParseColorName(char *name); void ParseAttribs(COLORREF *color, int *effects, char* argValue); VOID CreateFontInMF(MyFont *mf); VOID ChangedConsoleFont(); VOID ParseFontName(char *name, MyFontParams *mfp); void InitComboStrings(HANDLE hwndCombo, char **cd); BOOLEAN MyLoadSound(MySound *ms); BOOLEAN MyPlaySound(MySound *ms); VOID ExitArgError(char *msg, char *badArg, Boolean quit); void SaveSettings(char* name); BOOL BrowseForFolder( const char * title, char * path ); VOID TourneyPopup(); VOID LoadEnginePopUp(); VOID LoadOptionsPopup(HWND hDlg); VOID InitTextures(); void ThemeOptionsPopup(HWND hwnd); /* Constants */ #define CLOCK_FONT 0 #define MESSAGE_FONT 1 #define COORD_FONT 2 #define CONSOLE_FONT 3 #define COMMENT_FONT 4 #define EDITTAGS_FONT 5 #define MOVEHISTORY_FONT 6 #define GAMELIST_FONT 7 #define NUM_FONTS 8 /* Positions of some menu items. Origin is zero and separator lines count. */ /* It's gross that these are needed. */ #define ACTION_POS 4 /* Posn of "Action" on menu bar */ #define OPTIONS_POS 6 /* Posn of "Options" on menu bar */ /* end grossness */ extern MyFont *font[NUM_SIZES][NUM_FONTS]; #define WM_USER_Input (WM_USER + 4242) #define WM_USER_Mouseleave (WM_USER + 4243) #define WM_USER_GetConsoleBackground (WM_USER + 4244) #define CLOCK_TIMER_ID 51 #define LOAD_GAME_TIMER_ID 52 #define ANALYSIS_TIMER_ID 53 #define MOUSE_TIMER_ID 54 #define DELAYED_TIMER_ID 55 #define SOLID_PIECE 0 #define OUTLINE_PIECE 1 #define WHITE_PIECE 2 #define COPY_TMP "wbcopy.tmp" #define PASTE_TMP "wbpaste.tmp" /* variables */ extern HINSTANCE hInst; extern HWND hwndMain; extern BoardSize boardSize; // [HGM] Some stuff to allo a platform-independent reference to windows // This should be moved to frontend.h in due time typedef enum { W_Main, W_Console, W_Comment, W_Tags, W_GameList, W_MoveHist, W_EngineOut, NUM_WINDOWS } WindowID; extern WindowPlacement placementTab[NUM_WINDOWS]; extern HWND hwndTab[NUM_WINDOWS]; // this remains pure front-end. void Translate( HWND hDlg, int id); VOID InitWindowPlacement( WindowPlacement * wp ); VOID RestoreWindowPlacement( HWND hWnd, WindowPlacement * wp ); VOID ReattachAfterMove( LPRECT lprcOldPos, int new_x, int new_y, HWND hWndChild, WindowPlacement * pwpChild ); VOID ReattachAfterSize( LPRECT lprcOldPos, int new_w, int new_h, HWND hWndChild, WindowPlacement * pwpChild ); BOOL GetActualPlacement( HWND hWnd, WindowPlacement * wp ); VOID MoveHistoryPopUp(); VOID MoveHistoryPopDown(); extern HWND moveHistoryDialog; VOID EvalGraphPopUp(); VOID EvalGraphPopDown(); extern HWND evalGraphDialog; extern HWND engineOutputDialog; struct GameListStats { int white_wins; int black_wins; int drawn; int unfinished; }; int GameListToListBox( HWND hDlg, BOOL boReset, char * pszFilter, struct GameListStats * stats, BOOL byPos, BOOL narrow ); VOID ShowGameListProc(void); extern HWND gameListDialog; VOID EditTagsProc(void); extern HWND editTagsDialog; extern int screenWidth, screenHeight; extern RECT screenGeometry; // Top-left coordiate of the screen can be different from (0,0) xboard-4.9.1/winboard/language.txt0000644000175000001440000007717312717001265014072 00000000000000## WinBoard language file ## ## LANGUAGE NAME IN ENGLISH / TRANSLATED ## v1.0 beta 1 ## ## Translation by NAME (DATE) ## SAME AS ABOVE, TRANSLATED ## WEB ADDRESS OF TRANSLATOR ## ## If you revise this, please insert your date, name and description. ## TRANSLATION OF MESSAGE ABOVE ## ## For example: ## TRANSLATION OF FOR EXAMPLE ## 24-ago-2010. Juan Prez (j@xyz.p). Corrected translation for xyzzy. ## Notes for translators (can be deleted from he file after translation): ## Just write the translations between the second pair of quotes ## Things like %s, %d and %c must be preserved in the original order ## Empty translated strings will be ignored, so there is no reason ## to delete those for which you don't know a translation, ## and you can start testing everything immediately. ## Simply rename this file to LANGUAGE.lng, and WinBoard should see it, ## and allow you to use the option /language=LANGUAGE. ## You are encouraged to call up the corresponding WinBoard dialog while ## working on the translation, to see in which context the strings are used. ## This is why the strings below are sorted by dialog ## ## Of duplicats, only the first occurrence will be used, even if it was in ## a different dialog! For this reason you will only see an 'OK' in the ## About Box. After you translated it there, this translation will be used ## for all other dialogs as well. ## o Use ## for comments, to make iteasy to find them scattered throughout the translation ## o Careful with temptation of direct translation, by example 'movimiento' for 'move' when 'jugada' is better. ## o Try to use short phrases, more text doesn't imply more clearness. ## o Check that your translation is right, does it mean what it does? ## o Test your translation, check every dialog. ## o For standard chess names check Wikipedia for confirmation. ## o For menus, assign shortcuts (character &) until you finish the translation. ## preferably it should be unique in the applicable menu, so it depends on translation of other items! winboard.rc MENUS: ## Pleace keep the accelerator-key indications on the menu items, and keep ## the keystrokes the same (for now). (Alt, Ctrl and Shift can be translated.) "&New Game\tCtrl-N" === "" "New Sh&uffle Game..." === "" "New &Variant...\tAlt+Shift+V" === "" "&Load Game...\tCtrl-O" === "" "&Save Game...\tCtrl-S" === "" "L&oad Position...\tCtrl+Shift+O" === "" "S&ave Position...\tCtrl+Shift+S" === "" "Save as &Diagram..." === "" "&Quit" === "" ## Next six currently not used "Load &Next Game\tAlt+PgDn" === "" "Load &Previous Game\tAlt+PgUp" === "" "&Reload Same Game" === "" "Load N&ext Position\tAlt+Shift+PgDn" === "" "Load Pre&vious Position\tAlt+Shift+PgUp" === "" "Reload Sa&me Position" === "" "&Copy Game To Clipboard\tCtrl+C" === "" "C&opy Position To Clipboard\tCtrl+Shift+C" === "" "Copy Game List to Clipboard" === "" "&Paste Game From Clipboard\tCtrl+V" === "" "P&aste Position From Clipboard\tCtrl+Shift+V" === "" "&Edit Game\tCtrl+E" === "" "E&dit Position\tCtrl+Shift+E" === "" "Edit Ta&gs..." === "" "Edit Co&mment..." === "" "Enter &Username..." === "" "&Revert\tHome" === "" "&Annotate" === "" "&Truncate Game\tEnd" === "" "&Backward\tAlt+Left" === "" "&Forward\tAlt+Right" === "" "Back to &Start\tAlt+Home" === "" "For&ward to End\tAlt+End" === "" "Flip &View\tF2" === "" "&Swap Clocks" === "" "Engine &Output\tAlt+Shift+O" === "" "Move &History\tAlt+Shift+H" === "" "Evaluation &Graph\tAlt+Shift+E" === "" "Game &List\tAlt+Shift+G" === "" "Open &New Chat Window" === "" "Type In &Move...\tAlt+I" === "" "&Tags" === "" "&Comments" === "" "&Game List Tags..." === "" "&Board..." === "" "&Fonts..." === "" "Machine &White\tCtrl+W" === "" "Machine &Black\tCtrl+B" === "" "&Two Machines\tCtrl+T" === "" "Machine Both" === "" "&Analysis Mode\tCtrl+A" === "" "Analyze &File\tCtrl+F" === "" "&Edit Game\tCtrl+E" === "" "E&dit Position\tCtrl+Shift+E" === "" "Trai&ning" === "" "&ICS Client" === "" "&Machine Match" === "" "&Pause\tPause" === "" "&Accept\tF3" === "" "D&ecline\tF4" === "" "Re&match\tF12" === "" "Call &Flag\tF5" === "" "&Draw\tF6" === "" "Ad&journ\tF7" === "" "A&bort\tF8" === "" "&Resign\tF9" === "" "Stop &Observing\tF10" === "" "Stop E&xamining\tF11" === "" "&Upload to Examine" === "" "Adjudicate to &White" === "" "Adjudicate to &Black" === "" "Adjudicate &Draw" === "" "Install 1st..." === "" "Install 2nd..." === "" "Engine #&1 Settings..." === "" "Engine #&2 Settings..." === "" "&Hint..." === "" "&Book..." === "" "&Move Now\tCtrl+M" === "" "&Retract Move\tCtrl+X" === "" "&Mute all Sounds" === "" "&General..." === "" "&Time Control...\tAlt+Shift+T" === "" "Common &Engine...\tAlt+Shift+U" === "" "Ad&judications...\tAlt+Shift+J" === "" "&Load Game...\tAlt+Shift+L" === "" "&Save Game...\tAlt+Shift+S" === "" "G&ame List..." === "" "Soun&ds..." === "" "&ICS..." === "" "Add ICS..." === "" "Comm&unications..." === "" "Save Settings &Now" === "" "Save Settings on E&xit" === "" "Help &Contents\tF1" === "" "Help &Index" === "" "How to &Use Help" === "" "&About WinBoard" === "" "White" === "" "Promote" === "" "Pawn" === "" "Knight" === "" "Bishop" === "" "Rook" === "" "Queen" === "" "King" === "" ## The next 2 are pieces for Capablanca Chess. Use the names from the Wikipedia entry for this, ## rather than litteral translations of the English names! "Archbishop" === "" "Chancellor" === "" ## Next 2 Xiangqi (Chinese Chess) pieces. Google for 'Xiangqi' in the target language to get the standard translation. "Elephant" === "" "Cannon" === "" "Empty Square" === "" "Black" === "" "Demote" === "" "Clear Board " === "" ## Next 3: Shogi pieces. "Gold" === "" "Silver" === "" "Lance" === "" "Drop" === "" "Cop&y and Paste" === "" "&Copy" === "" "&Paste" === "" "&Undo" === "" "Cu&t" === "" "&Copy" === "" "&Paste" === "" "Select &All" === "" DIALOGS: ABOUTBOX ## Pehaps copyright notices best left untranslated? "About WinBoard" === "" "OK" === "" "Chessboard for Windows" === "" "Copyright 1991 Digital Equipment Corporation" === "" "Enhancements Copyright 1992-2015 Free Software Foundation" === "" "Enhancements Copyright 2005\r\nAlessandro Scotti" === "" ## What happened with H.G.Muller? [He sold his copyrights to FSF for $1] ## The following string of 6 spaces can be translated to an acknowledgement of the translator, ## like "Traduccin por scar Toledo G.". " " === "" "WinBoard 0.0.0" === "" ABOUTBOX2 ## Weird, it is needed? [Normally not. It is a built-in 'Easter Egg' joke.] "galactic" === "" TIME CONTROL DIALOG "Time Control" === "" "Conventional chess clock" === "" "Incremental clock" === "" "Cancel" === "" ## Next is there really only for the benefit of blind users of the JAWS version... "Use arrow keys to specify which clock setting type, then press tab to alter values." === "" "Fixed time per move" === "" "Number of moves:" === "" "Within number of minutes:" === "" "Initial number of minutes:" === "" "Plus number of seconds per move:" === "" "Maximum seconds per move:" === "" "Time-Odds Factors:" === "" "Engine #1:" === "" "Engine #2:" === "" LOAD OPTIONS DIALOG "Load Game Options" === "" "Load games with &automatic stepping" === "" "&seconds per move" === "" "when filtering game list on position, use thresholds:" === "" "Search Mode: " === "" "Match exact &position" === "" "Match if position is s&ubset" === "" "Match material with e&xact pawn structure" === "" "Match &material" === "" "Material &range (upper board-half is optional)" === "" "Material &difference (optional material balanced)" === "" "Also match reversed &colors" === "" "Also match &left-right mirror image" === "" "minimum Elo for &best player" === "" "minimum Elo for &weakest players" === "" "or later &year" === "" "co&nsecutive positions" === "" SAVE OPTIONS DIALOG "Save Game Options" === "" "Save As: " === "" "Save games automatically" === "" "Prompt for filename" === "" "To file:" === "" "PGN" === "" "Old" === "" "Browse..." === "" "Save out of book info in PGN" === "" 1536 ## This dialog is only used in some older Windows versions, so you might not be ableto test it. "Open" === "" "File &Name:" === "" "&Directories:" === "" "List Files of &Type:" === "" "Dri&ves:" === "" "&Help" === "" "&Index number:" === "" COMMPORT ## Always disabled if you are not actually using an ICS through a comport, so difficult to test. "Communication Port Settings" === "" "Net&work..." === "" "&Port:" === "" "Data &Rate:" === "" "Data &Bits:" === "" "P&arity:" === "" "&Stop Bits:" === "" "F&low:" === "" EDIT COMMENT "Edit Comment" === "" "&Clear" === "" "&Edit" === "" PROMOTION POPUP "Promote to:" === "" ## next used in Shogi as promotion-popup header "Promote?" === "" "Promotion" === "" "&Queen" === "" "&Rook" === "" "&Bishop" === "" "K&night" === "" "&King" === "" "&Cancel" === "" "Chance&llor" === "" "&Archbishop" === "" "YES" === "" "NO" === "" "C&entaur" === "" GAME LIST "Game List" === "" "&Load" === "" "&Prev" === "" "&Next" === "" "&Close" === "" "Filter" === "" EDIT TAGS "Edit Tags" === "" ERROR "ICS Interaction" === "" "Dialog" === "" "Error" === "" ## I don't think the next will really appear ever. "Sorry Charlie" === "" COLORIZE "I C S Interaction Colors" === "" "Interaction Colors" === "" "Premove" === "" "Alarm" === "" "Colors" === "" "&Choose Color..." === "" "&Bold" === "" "&Italic" === "" "&Underline" === "" "&Strikeout" === "" QUESTION ## next one seems only a placeholder, and never appears? [might also be just a programmer's joke...] "Enter a chess engine command or just type something stupid that will completely screw things up." === "" "Question" === "" "Enter" === "" STARTUP DIALOG "WinBoard Startup" === "" "What would you like to do?" === "" "&Play against a chess engine or match two engines" === "" "&Use an Internet Chess Server" === "" "Just &view or edit game files" === "" "Specify Chess &Engines:" === "" "Specify Chess &Server:" === "" "&Additional options" === "" INDEX (IN FILE-BROWSE DIALOG) "Inde&x number:" === "" MOVE TYPE-IN "Type in a move" === "" USER-NAME TYPE-IN "Type in your name" === "" SOUND DIALOG "Sounds" === "" "&Event:" === "" "&No sound" === "" "&Default beep" === "" "&Built-in sound:" === "" "&WAV file:" === "" "B&rowse..." === "" "&Play" === "" "&Defaults" === "" GENERAL OPTIONS DIALOG ## pleace keep the indication of the accelerator keys for the same keystroke ## Note: finely tuned spaces to align keys at right "General Options" === "" "Always on &Top" === "" "Always &Queen Ctrl+Shift+Q" === "" "Animate &Dragging" === "" "&Animate Moving Ctrl+Shift+A" === "" "Auto &Flag Ctrl+Shift+F" === "" "Auto Flip &View" === "" "Auto &Raise Board" === "" "&Blindfold" === "" "Highlight Dra&gging" === "" "Highlight Last &Move" === "" "Periodic &Updates" === "" "Ponder &Next Move Ctrl+Shift+P" === "" "&Popup Exit Message" === "" "Popup Move &Errors" === "" "Show Butt&on Bar" === "" "Show &Coordinates" === "" "&Show Thinking" === "" "Test &Legality Ctrl+Shift+L" === "" "&Hide Thinking Ctrl+Shift+H" === "" "&Info in Move History Ctrl+Shift+I" === "" "&Send Engine Think" === "" "E&xtended PGN Info Ctrl+Shift+X" === "" "Highlight with Arro&w" === "" "Displa&y Logos" === "" "One-Click Move" === "" ICS OPTIONS "ICS Options" === "" "&Auto Comment" === "" "Auto &Observe" === "" "&Get Move List" === "" "&Local Line Editing" === "" "&Quiet Play" === "" "&Premove" === "" "&White first move" === "" "&Black first move" === "" "&Sound alarm at" === "" "seconds" === "" "Choose..." === "" "Do ¬ colorize messages" === "" "&Auto Kibitz" === "" "Auto Kibit&z" === "" "See&k Graph" === "" "auto-&Refresh" === "" "Bckgnd Obser&ve" === "" "&Dual Board" === "" "One-Click &Move" === "" "Background..." === "" "&Defaults..." === "" "Startup &Chat Boxes:" === "" "General" === "" BOARD OPTIONS ## (NOTE: AllWhite uses the white (outline-style) piece bitmaps for both sides ## FlipBlack draws the black pieces upside down) "Board Options" === "" "Defaults" === "" "Light Squares" === "" "Dark Squares" === "" "White Pieces" === "" "Black Pieces" === "" "Square Highlights" === "" "Premove Highlights" === "" "Monochrome" === "" "All White" === "" "Flip Black" === "" "Use Board Textures" === "" "Use Piece Font" === "" "Suppress Grid" === "" "Size" === "" BOARD SIZES (translate as number?) ## Don't put numbers, or nobody will translate them. [True. But do we really want them translated?] ## This is a space for imagination! "&Tiny" === "" "T&eeny" === "" "&Dinky" === "" "&Petite" === "" "Sl&im" === "" "&Small" === "" "Medi&ocre" === "" "&Middling" === "" "&Average" === "" "Mode&rate" === "" "Medi&um" === "" "Bul&ky" === "" "&Large" === "" "&Big" === "" "&Huge" === "" "&Giant" === "" "&Colossal" === "" "Tita&nic" === "" FONTS "Fonts" === "" "Current Board Size" === "" "All Board Sizes" === "" "&Revert to Defaults" === "" "Clocks" === "" "Messages" === "" "Coordinates" === "" "Tags" === "" "Comments" === "" "I C S Interaction" === "" "Piece font" === "" "&Color..." === "" "Move History, Engine Output" === "" ADJUDICATIONS DIALOG "Adjudications" === "" "Ponder Next Move" === "" "Enable and Show Thinking (recommended)" === "" "Hide Thinking when Playing against Human" === "" "Periodic Updates (for Analysis Mode)" === "" "Adjudications in non-ICS games" === "" "Adjudicate draw after:" === "" "moves" === "" "Win/loss adjudication threshold:" === "" "centipawns" === "" "&Verify Engine Claims" === "" "Detect &Mates" === "" "Draw if &Insufficient Material" === "" "Adjudicate &Trivial Draws" === "" "Apply" === "" ## next 2 are suffixed to a text-edit containing a number (50 or 3) "-move rule" === "" "-fold repeats" === "" "Engine #1 Score is Absolute" === "" "Engine #2 Score is Absolute" === "" COMMON ENGINE DIALOG "Common Engine Settings" === "" "Polyglot Directory:" === "" "Hash Size (MB):" === "" "EGTB Path:" === "" "EGTB Size (MB):" === "" "Use Book:" === "" "Max nr of CPUs:" === "" "First has Own Book" === "" "Second has Own Book" === "" "Book Depth:" === "" "Book Variation:" === "" "Default Match Games:" === "" NEW-VARIANT DIALOG ## (NOTE: the 'holdings' are the pieces standing next to the board ('in hand') "Variants" === "" "Variant" === "" "Board size:" === "" "ranks" === "" "files" === "" "Holdings with room for:" === "" "pieces" === "" "('-1' means defaults for selected variant)" === "" VARIANT NAMES: "&normal" === "" "&FRC" === "" "&wildcastle" === "" "&nocastle" === "" "&losers" === "" "&giveaway" === "" "s&uicide" === "" "&3Check" === "" "&twokings" === "" "&atomic" === "" "cra&zyhouse" === "" "&bughouse" === "" "&Twilight" === "" "Sp&artan" === "" "&shogi" === "" "su&per" === "" "&knightmate" === "" "&Berolina" === "" "c&ylinder" === "" "&fairy" === "" "&makruk" === "" "&gothic" === "" "&capablanca" === "" "&Janus" === "" "&CRC" === "" "&Falcon" === "" "cou&rier" === "" "&Great" === "" "&Shatranj" === "" "&xiangqi" === "" NEW SHUFFLE GAME "New Shuffle Game" === "" "&Start Position Number:" === "" "Random" === "" GAME-LIST OPTIONS DIALOG "Game List Options" === "" "PGN &Tags:" === "" "&Up" === "" "&Down" === "" "Default" === "" "Factory" === "" "Restore to:" === "" MOVE HISTORY WINDOW "Move History" === "" EVALUATION GRAPH "Evaluation Graph" === "" ENGINE OUTPUT WINDOW "Engine Output" === "" "%s (%d reversible plies)" === "" "Engine #1" === "" "NPS" === "" "Engine #2" === "" CHAT BOXES "Chat Window" === "" "Chat partner:" === "" "Clear" === "" "Send" === "" winboard.c "&File" === "" "&Edit" === "" "&View" === "" "&Mode" === "" "&Action" === "" "&Step" === "" "E&ngine" === "" "&Options" === "" "&Help" === "" "You can only start a match from the initial position." === "" "Font name too long:" === "" "Font point size missing:" === "" "Can't parse color name %s" === "" "Unrecognized board size value" === "" "Unrecognized argument" === "" "No value provided for argument" === "" "Incomplete \\ escape in value for" === "" "Failed to open indirection file" === "" "Unrecognized boolean argument value" === "" "Unrecognized argument" === "" "Too many colors" === "" "&Minimize\tCtrl+F4" === "" "White: %s" === "" "We only care about the height here" === "" "Cannot build game list" === "" "Load Game from File" === "" "Load Position from File" === "" "Save Game to File" === "" "Save Diagram to File" === "" "Save Position to File" === "" "%s does not support analysis" === "" "Analyze Game from File" === "" "Unable to activate help" === "" "Send to chess program:" === "" "Send to second chess program:" === "" "Direct Command" === "" "Error loading sound %s" === "" "Error playing sound %s" === "" "File open failed" === "" "Internal error in file dialog box" === "" "Option Error" === "" "Choose an option, or cancel to exit" === "" "Unable to activate help" === "" "Displayed move is not current" === "" "Could not parse move" === "" "%s:\nError code %d" === "" "Error" === "" "Fatal Error" === "" "Exiting" === "" "%s:\nError code %d" === "" "Note" === "" "Error writing to chess program" === "" "User" === "" "Unknown" === "" "White" === "" "Black" === "" "Save Game to File" === "" "Not implemented" === "" "Shout Text" === "" "SShout/CShout" === "" "Channel 1 Text" === "" "Channel Text" === "" "Kibitz Text" === "" "Tell Text" === "" "Challenge Text" === "" "Request Text" === "" "Seek Text" === "" "Normal Text" === "" "None" === "" "Pawn" === "" "Knight" === "" "Bishop" === "" "Rook" === "" "Queen" === "" "Information" === "" wclipbrd.c "Unable to convert position to FEN." === "" "Unable to copy FEN to clipboard." === "" "Cannot create temporary file name." === "" "Cannot open temporary file." === "" "Cannot write to temporary file." === "" "Cannot reopen temporary file." === "" "Cannot determine size of file." === "" "Cannot allocate clipboard buffer." === "" "Cannot read from temporary file." === "" "Error reading from temporary file." === "" "Cannot copy text to clipboard" === "" "Unable to allocate memory for clipboard." === "" "Unable to lock clipboard memory." === "" "Cannot unlock clipboard memory." === "" "Cannot open clipboard." === "" "Cannot empty clipboard." === "" "Cannot copy text to clipboard." === "" "Cannot close clipboard." === "" "Unable to paste FEN from clipboard." === "" "Unable to create temporary file." === "" "Error writing to temporary file." === "" "Unable to open clipboard." === "" "No text in clipboard." === "" "Unable to lock clipboard memory." === "" "Unable to allocate memory for text string." === "" "Unable to unlock clipboard memory." === "" "Unable to close clipboard." === "" woptions.c ## For now, do NOT translate sound names, because WinBoard will no longer recognize them "Move" === "" "Bell" === "" "ICS Alarm" === "" "ICS Win" === "" "ICS Loss" === "" "ICS Draw" === "" "ICS Unfinished" === "" "Shout" === "" "SShout/CShout" === "" "Channel 1" === "" "Channel" === "" "Kibitz" === "" "Tell" === "" "Challenge" === "" "Request" === "" "Seek" === "" ## end of sound names "Browse for Sound File" === "" "Can't parse com port settings" === "" "Option Error" === "" "Invalid data rate" === "" "Option Error" === "" "Failed to set comm port state;\r\ninvalid options?" === "" "Failed to set comm port state" === "" "Invalid load game step rate" === "" "Invalid save game file name" === "" "Browse for Auto Save File" === "" "Invalid moves per time control" === "" "Invalid minutes per time control" === "" "Invalid increment" === "" "Invalid initial time" === "" "Changing time control during a game is not implemented" === "" "Variant %s not supported by %s" === "" "Warning: second engine (%s) does not support this!" === "" "Invalid ICS Alarm Time" === "" "Invalid max time per move" === "" "Invalid time-odds factor" === "" "Choose Folder" === "" "Choose Book" === "" "Choose Polyglot Directory" === "" "Choose EGTB Directory:" === "" "Polyglot was not found in the specified folder!" === "" wgamelist.c "No game selected" === "" "Can't go forward any further" === "" "Can't back up any further" === "" "No game list" === "" "Game List" === "" "Game list not loaded or empty" === "" "%s - %d/%d games" === "" wedittags.c "Edit Tags" === "" "Tags" === "" "Error replacing tags." === "" wsettings.c "%s Engine Settings (%s)" === "" "OK" === "" "Cancel" === "" wchat.c "Chat Window %s" === "" backend.c "bad timeControl option %s" === "" "bad searchTime option %s" === "" ## following to will appear in combinationslike "first engine" "first" === "" "second" === "" "protocol version %d not supported" === "" "Variant %s supported only in ICS mode" === "" "Unknown variant name %s" === "" "Starting chess program" === "" "Could not open comm port %s" === "" "Could not connect to host %s, port %s" === "" "Unknown initialMode %s" === "" "Can't have a match with no chess programs" === "" "Bad game file" === "" "Bad position file" === "" "AnalyzeFile mode requires a game file" === "" "Analysis mode requires a chess engine" === "" "Analysis mode does not work with ICS mode" === "" "MachineWhite mode requires a chess engine" === "" "MachineWhite mode does not work with ICS mode" === "" "MachineBlack mode requires a chess engine" === "" "MachineBlack mode does not work with ICS mode" === "" "TwoMachines mode does not work with ICS mode" === "" "TwoMachines mode requires a chess engine" === "" "Training mode requires a game file" === "" "Error writing to ICS" === "" "Error reading from keyboard" === "" "Got end of file from keyboard" === "" "Error writing to ICS" === "" "Error writing to display" === "" "Error gathering move list: two headers" === "" "Error gathering move list: nested" === "" "Connection closed by ICS" === "" "Error reading from ICS" === "" "Failed to parse board string:\n\"%s\"" === "" "Game too long; increase MAX_MOVES and recompile" === "" "Error gathering move list: extra board" === "" "Illegal move \"%s\" from ICS" === "" "Couldn't parse move \"%s\" from ICS" === "" ## The leading 'say' is used as ICS command here, and should NOT be translated. Only the message behind it. "say Internal error; bad moveType %d (%d,%d-%d,%d)" === "" "You are playing Black" === "" "You are playing White" === "" "It is White's turn" === "" "It is Black's turn" === "" "Displayed position is not current" === "" "Illegal move" === "" "End of game" === "" "Incorrect move" === "" ## next 6: Second (first 3) or first (other) '%s' will be substituted for 'first' or 'second'. "Illegal move \"%s\" from %s machine" === "" "Illegal move \"%s\" (rejected by %s chess program)" === "" "Failed to start %s chess program %s on %s: %s\n" === "" "Error writing to %s chess program" === "" "Error: %s chess program (%s) exited unexpectedly" === "" "Error reading from %s chess program (%s)" === "" "Forfeit due to illegal move" === "" "%s does not support analysis" === "" "Hint: %s" === "" "Machine accepts your draw offer" === "" "Machine offers a draw\nSelect Action / Draw to agree" === "" "%s (only move)" === "" "Ambiguous move in ICS output: \"%s\"" === "" "Illegal move in ICS output: \"%s\"" === "" "Gap in move list" === "" "Game too long; increase MAX_MOVES and recompile" === "" "Variant %s not supported by %s" === "" "Startup failure on '%s'" === "" "Waiting for first chess program" === "" "Waiting for second chess program" === "" "Match %s vs. %s: final score %d-%d-%d" === "" "Stalemate" === "" "Illegal move: %d.%s%s" === "" "Ambiguous move: %d.%s%s" === "" "Can't open \"%s\"" === "" "Cannot build game list" === "" "No more games in this message" === "" "No game has been loaded yet" === "" "Can't back up any further" === "" "Game number out of range" === "" "Can't seek on game file" === "" "Game not found in file" === "" "Bad FEN position in file" === "" "No moves in game" === "" "No position has been loaded yet" === "" "Can't back up any further" === "" "Can't open \"%s\"" === "" "Can't seek on position file" === "" "Position not found in file" === "" "Bad FEN position in file" === "" "Black to play" === "" "White to play" === "" "Can't open \"%s\"" === "" "You have edited the game history.\nUse Reload Same Game and make your move again." === "" "You have entered too many moves.\nBack up to the correct position and try again." === "" "Displayed position is not current.\nStep forward to the correct position and try again." === "" "You have not made a move yet" === "" "The cmail message is not loaded.\nUse Reload CMail Message and make your move again." === "" "No unfinished games" === "" "You have already mailed a move.\nWait until a move arrives from your opponent.\nTo resend the same move, type\n\"cmail -remail -game %s\"\non the command line." === "" "Failed to invoke cmail" === "" "Waiting for reply from opponent\n" === "" "Still need to make move for game\n" === "" "Still need to make moves for both games\n" === "" "Still need to make moves for all %d games\n" === "" "Still need to make a move for game %s\n" === "" "No unfinished games\n" === "" "Ready to send mail\n" === "" "Still need to make moves for games %s\n" === "" "Edit comment" === "" "Edit comment on %d.%s%s" === "" "Starting analysis mode...\nIf this message stays up, your chess program does not support analysis." === "" "It is not White's turn" === "" "It is not Black's turn" === "" "Wait until your turn,\nor select Move Now" === "" "Starting second chess program" === "" "Training mode off" === "" "Training mode on" === "" "Already at end of game" === "" "Warning: You are still playing a game" === "" "Warning: You are still observing a game" === "" "Warning: You are still examining a game" === "" "It is Black's turn" === "" "It is White's turn" === "" "That square is occupied" === "" "There is no pending offer on this move" === "" "Your opponent is not out of time" === "" "Black offers a draw" === "" "White offers a draw" === "" "You must make your move before offering a draw" === "" "You are not examining a game" === "" "You can't revert while pausing" === "" "Wait until your turn,\nor select Move Now" === "" "It is your turn" === "" "Wait until your turn" === "" "No hint available" === "" "Analysis (%s)" === "" "Comment" === "" "Comment on %d.%s%s" === "" "Both flags fell" === "" "White's flag fell" === "" "Black's flag fell" === "" "Bad FEN position in clipboard" === "" "No response from ICS" === "" "You cannot do this while you are playing or observing" === "" "Click in holdings to choose piece" === "" "failed writing PV" === "" "Bad Seek" === "" "vs." === "" "%s (%d reversible plies)" === "" "Reading game file (%d)" === "" "Click clock to clear board" === "" "Pull pawn backwards to under-promote" === "" END-OF-GAME MESSAGES (should they be translated?) ## I think that only for visualization and not for PGN, as PGN files are shared all around the world ## [OK, I adapted the source that way. So please translate.] "Game aborted" === "" "White wins on time" === "" "Black wins on time" === "" "Both players ran out of time" === "" "White resigns" === "" "Black resigns" === "" "White mates" === "" "Black mates" === "" "Draw" === "" "Draw agreed" === "" "Xboard adjudication: King destroyed" === "" "Xboard adjudication: Bare king" === "" "Xboard adjudication: 3rd check" === "" "Xboard adjudication: Stalemate" === "" "Xboard adjudication: Checkmate" === "" "Xboard adjudication: Insufficient mating material" === "" "Xboard adjudication: Trivial draw" === "" "XBoard adjudication: repetition draw" === "" "Xboard adjudication: perpetual checking" === "" "Xboard adjudication: perpetual chasing" === "" "%Xboard adjudication: perpetual chasing of" === "" "Xboard adjudication: 50-move rule" === "" "Draw claim: 50-move rule" === "" "Draw claim: 3-fold repetition" === "" "Draw claim: insufficient mating material" === "" "Xboard adjudication: long game" === "" "Xboard: Forfeit due to invalid move: %s (%c%c%c%c) res=%d" === "" "Xboard: Forfeit due to illegal move: %s (%c%c%c%c)%c" === "" "Xboard adjudication" === "" "User adjudication" === "" "False win claim: '%s'" === "" "False draw claim: '%s'" === "" "xboard exit" === "" # NEW STRINGS FOR EXPERIMENTAL TM VERSION: # MENU "Edit Boo&k..." === "" "Edit Engine List..." === "" "Load Engine..." === "" "Tournament..." === "" # LOAD ENGINE DIALOG "First" === "" "Second" === "" "Choose File" === "" "Choose Folder:" === "" "Select engine from list:" === "" "or specify one below:" === "" "Nickname (optional):" === "" "Use nickname in PGN tag" === "" "Engine (*.exe):" === "" "command-line parameters:" === "" "directory:" === "" "(Directory will be derived from engine path when left empty)" === "" "Add this engine to the list" === "" "Must not use GUI book" === "" "UCI" === "" "WB protocol v1 (skip waiting for features)" === "" "UCCI / USI (uses specified /uxiAdapter)" === "" "Force current variant with this engine" === "" "Load mentioned engine as" === "" "Load Engine" === "" "You did not specify the engine executable" === "" "Select single engine from the group" === "" # TOURNAMENT OPTIONS DIALOG "Tournament file:" === "" "If you specify an existing file, the rest of this dialog will be ignored." === "" "Otherwise, the file will be created, with the settings you specify below:" === "" "Select Engine:" === "" "Use Swiss pairing engine (cycles = rounds)" === "" "Tourney type (0=RR, 1=gauntlet):" === "" "Sync after cycle" === "" "Number of tourney cycles:" === "" "Sync after round" === "" "Games per Match / Pairing:" === "" "File for saving tourney games:" === "" "Game File with Opening Lines:" === "" "Game Number:" === "" "File with Start Positions:" === "" "Position Number:" === "" "Step through lines/positions in file" === "" "Rewind after (0 = never):" === "" "Use each line/position twice" === "" "Pause between Games (ms):" === "" "Tournament and Match Options" === "" "Tourney participants:" === "" "Replace Engine" === "" "Upgrade Engine" === "" "Time Control..." === "" "Common Engine..." === "" "Clone Tourney" === "" "Make all use GUI book by default" === "" "You must supply a tournament file,\nfor storing the tourney progress" === "" "Not enough participants" === "" "Continue Later" === "" "First you must specify an existing tourney file to clone" === "" "No engine %s is installed" === "" # THEMES DIALOG "Board themes" === "" "Select theme from list:" === "" "or specify new theme below:" === "" "Theme name:" === "" "Use board textures" === "" "Light-square texture:" === "" "Dark-square texture:" === "" "Dark reorientation mode:" === "" "Light reorientation mode:" === "" "Draw border around board" === "" "Optional border bitmap:" === "" " Beware: a specified piece font will prevail over piece bitmaps" === "" "Directory with piece bitmaps:" === "" "Use piece font" === "" "Font size (%):" === "" "Font name:" === "" "Font piece to char:" === "" "Delete Theme" === "" "Select single theme from the group" === "" # book.c "Could not create book" === "" "Polyglot book not valid" === "" "Hash keys are different" === "" "Book Fault" === "" "Book file exists! Try again for overwrite." === "" # NEW MENU ITEMS IN 4.7 "Save Games to &Book" === "" "Colo&rs..." === "" "Load &First Engine..." === "" "Load &Second Engine..." === "" "&Board Themes..." === "" "Auto &Create Logon" === "" xboard-4.9.1/winboard/metascript.txt0000644000175000001440000000025312717001265014443 000000000000001,$g/""/d 1,$g/^[^"]*$/d 1,$g/\\/s//&&/g 1,$g/\//s//\\&/g 1,$g/&[^"]*"$/s//\\&/ 1,$s/===/\/s\/\// 1,$s/$/\/gp/ 1,$s/^/1,$g\// $a w tmp.rc q . w script.txt q xboard-4.9.1/winboard/whistory.c0000644000175000001440000002217412717001265013571 00000000000000/* * Move history for WinBoard * * Author: Alessandro Scotti (Dec 2005) * front-end code split off by HGM * * Copyright 2005 Alessandro Scotti * * Enhancements Copyright 2009, 2010, 2014, 2015, 2016 Free Software * Foundation, Inc. * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * ------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include #include #include #include /* required for all Windows applications */ #include #include #include #include "common.h" #include "frontend.h" #include "backend.h" #include "winboard.h" #include "wsnap.h" // templates for calls into back-end void RefreshMemoContent P((void)); void MemoContentUpdated P((void)); void FindMoveByCharIndex P(( int char_index )); #define DEFAULT_COLOR 0xFFFFFFFF #define H_MARGIN 2 #define V_MARGIN 2 static BOOLEAN moveHistoryDialogUp = FALSE; // ------------- low-level front-end actions called by MoveHistory back-end ----------------- // low-level front-end, after calculating from & to is left to caller // it task is to highlight the indicated characters. (In WinBoard it makes them bold and blue.) void HighlightMove( int from, int to, Boolean highlight ) { CHARFORMAT cf; HWND hMemo = GetDlgItem( moveHistoryDialog, IDC_MoveHistory ); SendMessage( hMemo, EM_SETSEL, from, to); /* Set style */ ZeroMemory( &cf, sizeof(cf) ); cf.cbSize = sizeof(cf); cf.dwMask = CFM_BOLD | CFM_COLOR; if( highlight ) { cf.dwEffects |= CFE_BOLD; cf.crTextColor = RGB( 0x00, 0x00, 0xFF ); } else { cf.dwEffects |= CFE_AUTOCOLOR; } SendMessage( hMemo, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf ); } // low-level front-end, but replace Windows data types to make it callable from back-end // its task is to clear the contents of the move-history text edit void ClearHistoryMemo() { SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, WM_SETTEXT, 0, (LPARAM) "" ); } // low-level front-end, made callable from back-end by passing flags and color numbers // its task is to append the given text to the text edit // the bold argument says 0 = normal, 1 = bold typeface // the colorNr argument says 0 = font-default, 1 = gray int AppendToHistoryMemo( char * text, int bold, int colorNr ) { CHARFORMAT cf; DWORD flags = bold ? CFE_BOLD :0; DWORD color = colorNr ? GetSysColor(COLOR_GRAYTEXT) : DEFAULT_COLOR; HWND hMemo = GetDlgItem( moveHistoryDialog, IDC_MoveHistory ); /* Select end of text */ int cbTextLen = (int) SendMessage( hMemo, WM_GETTEXTLENGTH, 0, 0 ); SendMessage( hMemo, EM_SETSEL, cbTextLen, cbTextLen ); /* Set style */ ZeroMemory( &cf, sizeof(cf) ); cf.cbSize = sizeof(cf); cf.dwMask = CFM_BOLD | CFM_ITALIC | CFM_COLOR | CFM_UNDERLINE; cf.dwEffects = flags; if( color != DEFAULT_COLOR ) { cf.crTextColor = color; } else { cf.dwEffects |= CFE_AUTOCOLOR; } SendMessage( hMemo, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cf ); /* Append text */ SendMessage( hMemo, EM_REPLACESEL, (WPARAM) FALSE, (LPARAM) text ); /* Return offset of appended text */ return cbTextLen; } // low-level front-end; wrapper for the code to scroll the mentioned character in view (-1 = end) void ScrollToCurrent(int caretPos) { if(caretPos < 0) caretPos = (int) SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, WM_GETTEXTLENGTH, 0, 0 ); SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, EM_SETSEL, caretPos, caretPos ); SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, EM_SCROLLCARET, 0, 0 ); } // ------------------------------ call backs -------------------------- // front-end. Universal call-back for any event. Recognized vents are dialog creation, OK and cancel button-press // (dead code, as these buttons do not exist?), mouse clicks on the text edit, and moving / sizing LRESULT CALLBACK HistoryDialogProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) { static SnapData sd; switch (message) { case WM_INITDIALOG: if( moveHistoryDialog == NULL ) { moveHistoryDialog = hDlg; Translate(hDlg, DLG_MoveHistory); /* Enable word wrapping and notifications */ SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, EM_SETTARGETDEVICE, 0, 0 ); SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS ); /* Set font */ SendDlgItemMessage( moveHistoryDialog, IDC_MoveHistory, WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf, MAKELPARAM(TRUE, 0 )); /* Restore window placement */ RestoreWindowPlacement( hDlg, &wpMoveHistory ); } /* Update memo */ RefreshMemoContent(); MemoContentUpdated(); return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: break; } break; case WM_NOTIFY: if( wParam == IDC_MoveHistory ) { MSGFILTER * lpMF = (MSGFILTER *) lParam; if( lpMF->msg == WM_LBUTTONDBLCLK && (lpMF->wParam & (MK_CONTROL | MK_SHIFT)) == 0 ) { POINTL pt; LRESULT index; pt.x = LOWORD( lpMF->lParam ); pt.y = HIWORD( lpMF->lParam ); index = SendDlgItemMessage( hDlg, IDC_MoveHistory, EM_CHARFROMPOS, 0, (LPARAM) &pt ); FindMoveByCharIndex( index ); // [HGM] also does the actual moving to it, now /* Zap the message for good: apparently, returning non-zero is not enough */ lpMF->msg = WM_USER; return TRUE; } } break; case WM_SIZE: SetWindowPos( GetDlgItem( moveHistoryDialog, IDC_MoveHistory ), HWND_TOP, H_MARGIN, V_MARGIN, LOWORD(lParam) - 2*H_MARGIN, HIWORD(lParam) - 2*V_MARGIN, SWP_NOZORDER ); break; case WM_GETMINMAXINFO: { MINMAXINFO * mmi = (MINMAXINFO *) lParam; mmi->ptMinTrackSize.x = 100; mmi->ptMinTrackSize.y = 100; } break; case WM_CLOSE: MoveHistoryPopDown(); break; case WM_ENTERSIZEMOVE: return OnEnterSizeMove( &sd, hDlg, wParam, lParam ); case WM_SIZING: return OnSizing( &sd, hDlg, wParam, lParam ); case WM_MOVING: return OnMoving( &sd, hDlg, wParam, lParam ); case WM_EXITSIZEMOVE: return OnExitSizeMove( &sd, hDlg, wParam, lParam ); } return FALSE; } // ------------ standard entry points into MoveHistory code ----------- // front-end VOID MoveHistoryPopUp() { FARPROC lpProc; CheckMenuItem(GetMenu(hwndMain), IDM_ShowMoveHistory, MF_CHECKED); if( moveHistoryDialog ) { SendMessage( moveHistoryDialog, WM_INITDIALOG, 0, 0 ); if( ! moveHistoryDialogUp ) { ShowWindow(moveHistoryDialog, SW_SHOW); } } else { lpProc = MakeProcInstance( (FARPROC) HistoryDialogProc, hInst ); /* Note to self: dialog must have the WS_VISIBLE style set, otherwise it's not shown! */ CreateDialog( hInst, MAKEINTRESOURCE(DLG_MoveHistory), hwndMain, (DLGPROC)lpProc ); FreeProcInstance(lpProc); } moveHistoryDialogUp = TRUE; // Note that in WIndows creating the dialog causes its call-back to perform // RefreshMemoContent() and MemoContentUpdated() immediately after it is realized. // To port this to X we might have to do that from here. } // front-end VOID MoveHistoryPopDown() { CheckMenuItem(GetMenu(hwndMain), IDM_ShowMoveHistory, MF_UNCHECKED); if( moveHistoryDialog ) { ShowWindow(moveHistoryDialog, SW_HIDE); } moveHistoryDialogUp = FALSE; } // front-end Boolean MoveHistoryIsUp() { return moveHistoryDialogUp; } // front-end Boolean MoveHistoryDialogExists() { return moveHistoryDialog != NULL; } xboard-4.9.1/winboard/WB4Jaws.dev0000644000175000001440000001000112717001265013440 00000000000000[Project] FileName=WB4Jaws.dev Name=Winboard UnitCount=27 Type=0 Ver=1 ObjFiles= Includes= Libs= PrivateResource=Winboard_private.rc ResourceIncludes=.. MakeIncludes= Compiler=-I.._@@_-I._@@_-DNDEBUG_@@_-DJAWS_@@_ CppCompiler= Linker=-fpic_@@_-s_@@_-mwindows_@@_-lwsock32_@@_-lwinmm_@@_-lcomctl32_@@_ IsCpp=0 Icon= ExeOutput= ObjectOutput=.\objs OverrideOutput=1 OverrideOutputName=Winboard.exe HostApplication= Folders= CommandLine= UseCustomMakefile=0 CustomMakefile=makefile.gcc IncludeVersionInfo=0 SupportXPThemes=0 CompilerSet=0 CompilerSettings=0000000000001000000100 [Unit1] FileName=wsockerr.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit2] FileName=..\parser.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit3] FileName=wclipbrd.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit4] FileName=wedittags.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit5] FileName=wevalgraph.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit6] FileName=wgamelist.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit7] FileName=whistory.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit8] FileName=winboard.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit9] FileName=wlayout.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit10] FileName=woptions.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit11] FileName=wsnap.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit12] FileName=..\uci.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit13] FileName=..\backend.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit14] FileName=..\book.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit15] FileName=..\gamelist.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit16] FileName=..\lists.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit17] FileName=..\moves.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit18] FileName=..\pgntags.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit19] FileName=winboard.rc CompileCpp=0 Folder=Winboard Compile=1 Link=0 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit20] FileName=..\zippy.c Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= CompileCpp=0 [Unit21] FileName=help.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit22] FileName=wsettings.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit23] FileName=wchat.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit24] FileName=..\engineoutput.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit25] FileName=..\evalgraph.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit26] FileName=wengineoutput.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= [Unit27] FileName=..\history.c CompileCpp=0 Folder=Winboard Compile=1 Link=1 Priority=1000 OverrideBuildCmd=0 BuildCmd= xboard-4.9.1/winboard/winboard.c0000644000175000001440000117305512717001265013514 00000000000000/* * WinBoard.c -- Windows NT front end to XBoard * * Copyright 1991 by Digital Equipment Corporation, Maynard, * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * XBoard borrows its colors and the bitmaps.xchess bitmap set from XChess, * which was written and is copyrighted by Wayne Christopher. * * The following terms apply to Digital Equipment Corporation's copyright * interest in XBoard: * ------------------------------------------------------------------------ * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Digital not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * ------------------------------------------------------------------------ * * The following terms apply to the enhanced version of XBoard * distributed by the Free Software Foundation: * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if __GNUC__ #include #include #endif #include "common.h" #include "frontend.h" #include "backend.h" #include "winboard.h" #include "moves.h" #include "wclipbrd.h" #include "woptions.h" #include "wsockerr.h" #include "defaults.h" #include "help.h" #include "wsnap.h" #define SLASH '/' #define DATADIR "~~" //void InitEngineUCI( const char * iniDir, ChessProgramState * cps ); int myrandom(void); void mysrandom(unsigned int seed); extern int whiteFlag, blackFlag; Boolean flipClock = FALSE; extern HANDLE chatHandle[]; extern enum ICS_TYPE ics_type; int MySearchPath P((char *installDir, char *name, char *fullname)); int MyGetFullPathName P((char *name, char *fullname)); void DisplayHoldingsCount(HDC hdc, int x, int y, int align, int copyNumber); VOID NewVariantPopup(HWND hwnd); int FinishMove P((ChessMove moveType, int fromX, int fromY, int toX, int toY, /*char*/int promoChar)); void DisplayMove P((int moveNumber)); void ChatPopUp P((char *s)); typedef struct { ChessSquare piece; POINT pos; /* window coordinates of current pos */ POINT lastpos; /* window coordinates of last pos - used for clipping */ POINT from; /* board coordinates of the piece's orig pos */ POINT to; /* board coordinates of the piece's new pos */ } AnimInfo; static AnimInfo animInfo = { EmptySquare, {-1,-1}, {-1,-1}, {-1,-1} }; typedef struct { POINT start; /* window coordinates of start pos */ POINT pos; /* window coordinates of current pos */ POINT lastpos; /* window coordinates of last pos - used for clipping */ POINT from; /* board coordinates of the piece's orig pos */ ChessSquare piece; } DragInfo; static DragInfo dragInfo = { {-1,-1}, {-1,-1}, {-1,-1}, {-1,-1}, EmptySquare }; typedef struct { POINT sq[2]; /* board coordinates of from, to squares */ } HighlightInfo; static HighlightInfo highlightInfo = { {{-1, -1}, {-1, -1}} }; static HighlightInfo premoveHighlightInfo = { {{-1, -1}, {-1, -1}} }; static HighlightInfo partnerHighlightInfo = { {{-1, -1}, {-1, -1}} }; static HighlightInfo oldPartnerHighlight = { {{-1, -1}, {-1, -1}} }; typedef struct { // [HGM] atomic int fromX, fromY, toX, toY, radius; } ExplodeInfo; static ExplodeInfo explodeInfo; /* Window class names */ char szAppName[] = "WinBoard"; char szConsoleName[] = "WBConsole"; /* Title bar text */ char szTitle[] = "WinBoard"; char szConsoleTitle[] = "I C S Interaction"; char *programName; char *settingsFileName; Boolean saveSettingsOnExit; char installDir[MSG_SIZ]; int errorExitStatus; BoardSize boardSize; Boolean chessProgram; //static int boardX, boardY; int minX, minY; // [HGM] placement: volatile limits on upper-left corner int squareSize, lineGap, minorSize; static int winW, winH; static RECT messageRect, whiteRect, blackRect, leftLogoRect, rightLogoRect; // [HGM] logo static int logoHeight = 0; static char messageText[MESSAGE_TEXT_MAX]; static int clockTimerEvent = 0; static int loadGameTimerEvent = 0; static int analysisTimerEvent = 0; static DelayedEventCallback delayedTimerCallback; static int delayedTimerEvent = 0; static int buttonCount = 2; char *icsTextMenuString; char *icsNames; char *firstChessProgramNames; char *secondChessProgramNames; #define PALETTESIZE 256 HINSTANCE hInst; /* current instance */ Boolean alwaysOnTop = FALSE; RECT boardRect; COLORREF lightSquareColor, darkSquareColor, whitePieceColor, blackPieceColor, highlightSquareColor, premoveHighlightColor; COLORREF markerColor[8] = { 0x00FFFF, 0x0000FF, 0x00FF00, 0xFF0000, 0xFFFF00, 0xFF00FF, 0xFFFFFF, 0x000000 }; HPALETTE hPal; ColorClass currentColorClass; static HWND savedHwnd; HWND hCommPort = NULL; /* currently open comm port */ static HWND hwndPause; /* pause button */ static HBITMAP pieceBitmap[3][(int) BlackPawn]; /* [HGM] nr of bitmaps referred to bP in stead of wK */ static HBRUSH lightSquareBrush, darkSquareBrush, blackSquareBrush, /* [HGM] for band between board and holdings */ explodeBrush, /* [HGM] atomic */ markerBrush[8], /* [HGM] markers */ whitePieceBrush, blackPieceBrush, iconBkgndBrush /*, outlineBrush*/; static POINT gridEndpoints[(BOARD_RANKS + BOARD_FILES + 2) * 2]; static DWORD gridVertexCounts[BOARD_RANKS + BOARD_FILES + 2]; static HPEN gridPen = NULL; static HPEN highlightPen = NULL; static HPEN premovePen = NULL; static NPLOGPALETTE pLogPal; static BOOL paletteChanged = FALSE; static HICON iconWhite, iconBlack, iconCurrent; static int doingSizing = FALSE; static int lastSizing = 0; static int prevStderrPort; static HBITMAP userLogo; static HBITMAP liteBackTexture = NULL; static HBITMAP darkBackTexture = NULL; static int liteBackTextureMode = BACK_TEXTURE_MODE_PLAIN; static int darkBackTextureMode = BACK_TEXTURE_MODE_PLAIN; static int backTextureSquareSize = 0; static struct { int x; int y; int mode; } backTextureSquareInfo[BOARD_RANKS][BOARD_FILES]; #if __GNUC__ && !defined(_winmajor) #define oldDialog 0 /* cygwin doesn't define _winmajor; mingw does */ #else #if defined(_winmajor) #define oldDialog (_winmajor < 4) #else #define oldDialog 0 #endif #endif #define INTERNATIONAL #ifdef INTERNATIONAL # define _(s) T_(s) # define N_(s) s #else # define _(s) s # define N_(s) s # define T_(s) s # define Translate(x, y) # define LoadLanguageFile(s) #endif #ifdef INTERNATIONAL Boolean barbaric; // flag indicating if translation is needed // list of item numbers used in each dialog (used to alter language at run time) #define ABOUTBOX -1 /* not sure why these are needed */ #define ABOUTBOX2 -1 int dialogItems[][42] = { { ABOUTBOX, IDOK, OPT_MESS, 400 }, { DLG_TimeControl, IDC_Babble, OPT_TCUseMoves, OPT_TCUseInc, OPT_TCUseFixed, OPT_TCtext1, OPT_TCtext2, OPT_TCitext1, OPT_TCitext2, OPT_TCftext, GPB_Factors, IDC_Factor1, IDC_Factor2, IDOK, IDCANCEL }, { DLG_LoadOptions, OPT_Autostep, OPT_AStext1, OPT_Exact, OPT_Subset, OPT_Struct, OPT_Material, OPT_Range, OPT_Difference, OPT_elo1t, OPT_elo2t, OPT_datet, OPT_Stretch, OPT_Stretcht, OPT_Reversed, OPT_SearchMode, OPT_Mirror, OPT_thresholds, OPT_Ranget, IDOK, IDCANCEL }, { DLG_SaveOptions, OPT_Autosave, OPT_AVPrompt, OPT_AVToFile, OPT_AVBrowse, 801, OPT_PGN, OPT_Old, OPT_OutOfBookInfo, IDOK, IDCANCEL }, { 1536, 1090, IDC_Directories, 1089, 1091, IDOK, IDCANCEL, 1038, IDC_IndexNr, 1037 }, { DLG_CommPort, IDOK, IDCANCEL, IDC_Port, IDC_Rate, IDC_Bits, IDC_Parity, IDC_Stop, IDC_Flow, OPT_SerialHelp }, { DLG_EditComment, IDOK, OPT_CancelComment, OPT_ClearComment, OPT_EditComment }, { DLG_PromotionKing, PB_Chancellor, PB_Archbishop, PB_Queen, PB_Rook, PB_Bishop, PB_Knight, PB_King, IDCANCEL, IDC_Yes, IDC_No, IDC_Centaur }, { ABOUTBOX2, IDC_ChessBoard }, { DLG_GameList, OPT_GameListLoad, OPT_GameListPrev, OPT_GameListNext, OPT_GameListClose, IDC_GameListDoFilter }, { DLG_EditTags, IDOK, OPT_TagsCancel, OPT_EditTags }, { DLG_Error, IDOK }, { DLG_Colorize, IDOK, IDCANCEL, OPT_ChooseColor, OPT_Bold, OPT_Italic, OPT_Underline, OPT_Strikeout, OPT_Sample }, { DLG_Question, IDOK, IDCANCEL, OPT_QuestionText }, { DLG_Startup, IDC_Welcome, OPT_ChessEngine, OPT_ChessServer, OPT_View, IDC_SPECIFY_ENG_STATIC, IDC_SPECIFY_SERVER_STATIC, OPT_AnyAdditional, IDOK, IDCANCEL, IDM_HELPCONTENTS }, { DLG_IndexNumber, IDC_Index }, { DLG_TypeInMove, IDOK, IDCANCEL }, { DLG_TypeInName, IDOK, IDCANCEL }, { DLG_Sound, IDC_Event, OPT_NoSound, OPT_DefaultBeep, OPT_BuiltInSound, OPT_WavFile, OPT_BrowseSound, OPT_DefaultSounds, IDOK, IDCANCEL, OPT_PlaySound }, { DLG_GeneralOptions, IDOK, IDCANCEL, OPT_AlwaysOnTop, OPT_HighlightLastMove, OPT_AlwaysQueen, OPT_PeriodicUpdates, OPT_AnimateDragging, OPT_PonderNextMove, OPT_AnimateMoving, OPT_PopupExitMessage, OPT_AutoFlag, OPT_PopupMoveErrors, OPT_AutoFlipView, OPT_ShowButtonBar, OPT_AutoRaiseBoard, OPT_ShowCoordinates, OPT_Blindfold, OPT_ShowThinking, OPT_HighlightDragging, OPT_TestLegality, OPT_SaveExtPGN, OPT_HideThinkFromHuman, OPT_ExtraInfoInMoveHistory, OPT_HighlightMoveArrow, OPT_AutoLogo ,OPT_SmartMove }, { DLG_IcsOptions, IDOK, IDCANCEL, OPT_AutoComment, OPT_AutoKibitz, OPT_AutoObserve, OPT_GetMoveList, OPT_LocalLineEditing, OPT_QuietPlay, OPT_SeekGraph, OPT_AutoRefresh, OPT_BgObserve, OPT_DualBoard, OPT_Premove, OPT_PremoveWhite, OPT_PremoveBlack, OPT_SmartMove, OPT_IcsAlarm, IDC_Sec, OPT_ChooseShoutColor, OPT_ChooseSShoutColor, OPT_ChooseChannel1Color, OPT_ChooseChannelColor, OPT_ChooseKibitzColor, OPT_ChooseTellColor, OPT_ChooseChallengeColor, OPT_ChooseRequestColor, OPT_ChooseSeekColor, OPT_ChooseNormalColor, OPT_ChooseBackgroundColor, OPT_DefaultColors, OPT_DontColorize, IDC_Boxes, GPB_Colors, GPB_Premove, GPB_General, GPB_Alarm, OPT_AutoCreate }, { DLG_BoardOptions, IDOK, IDCANCEL, OPT_SizeTiny, OPT_SizeTeeny, OPT_SizeDinky, OPT_SizePetite, OPT_SizeSlim, OPT_SizeSmall, OPT_SizeMediocre, OPT_SizeMiddling, OPT_SizeAverage, OPT_SizeModerate, OPT_SizeMedium, OPT_SizeBulky, OPT_SizeLarge, OPT_SizeBig, OPT_SizeHuge, OPT_SizeGiant, OPT_SizeColossal, OPT_SizeTitanic, OPT_ChooseLightSquareColor, OPT_ChooseDarkSquareColor, OPT_ChooseWhitePieceColor, OPT_ChooseBlackPieceColor, OPT_ChooseHighlightSquareColor, OPT_ChoosePremoveHighlightColor, OPT_Monochrome, OPT_AllWhite, OPT_UpsideDown, OPT_DefaultBoardColors, GPB_Colors, IDC_Light, IDC_Dark, IDC_White, IDC_Black, IDC_High, IDC_PreHigh, GPB_Size, OPT_Bitmaps, OPT_PieceFont, OPT_Grid }, { DLG_NewVariant, IDOK, IDCANCEL, OPT_VariantNormal, OPT_VariantFRC, OPT_VariantWildcastle, OPT_VariantNocastle, OPT_VariantLosers, OPT_VariantGiveaway, OPT_VariantSuicide, OPT_Variant3Check, OPT_VariantTwoKings, OPT_VariantAtomic, OPT_VariantCrazyhouse, OPT_VariantBughouse, OPT_VariantTwilight, OPT_VariantShogi, OPT_VariantSuper, OPT_VariantKnightmate, OPT_VariantBerolina, OPT_VariantCylinder, OPT_VariantFairy, OPT_VariantMakruk, OPT_VariantGothic, OPT_VariantCapablanca, OPT_VariantJanus, OPT_VariantCRC, OPT_VariantFalcon, OPT_VariantCourier, OPT_VariantGreat, OPT_VariantSChess, OPT_VariantShatranj, OPT_VariantXiangqi, GPB_Variant, GPB_Board, IDC_Height, IDC_Width, IDC_Hand, IDC_Pieces, IDC_Def }, { DLG_Fonts, IDOK, IDCANCEL, OPT_ChooseClockFont, OPT_ChooseMessageFont, OPT_ChooseCoordFont, OPT_ChooseTagFont, OPT_ChooseCommentsFont, OPT_ChooseConsoleFont, OPT_ChooseMoveHistoryFont, OPT_DefaultFonts, OPT_ClockFont, OPT_MessageFont, OPT_CoordFont, OPT_EditTagsFont, OPT_ChoosePieceFont, OPT_MessageFont8, OPT_SampleGameListFont, OPT_ChooseGameListFont, OPT_MessageFont7, OPT_CommentsFont, OPT_MessageFont5, GPB_Current, GPB_All, OPT_MessageFont6 }, { DLG_NewGameFRC, IDC_NFG_Label, IDC_NFG_Random, IDOK, IDCANCEL }, { DLG_GameListOptions, IDC_GLT, IDC_GLT_Up, IDC_GLT_Down, IDC_GLT_Restore, IDC_GLT_Default, IDOK, IDCANCEL, IDC_GLT_RestoreTo }, { DLG_MoveHistory }, { DLG_EvalGraph }, { DLG_EngineOutput, IDC_EngineLabel1, IDC_Engine1_NPS, IDC_EngineLabel2, IDC_Engine2_NPS }, { DLG_Chat, IDC_Partner, IDC_Clear, IDC_Send, }, { DLG_EnginePlayOptions, IDC_EpPonder, IDC_EpShowThinking, IDC_EpHideThinkingHuman, IDC_EpPeriodicUpdates, GPB_Adjudications, IDC_Draw, IDC_Moves, IDC_Threshold, IDC_Centi, IDC_TestClaims, IDC_DetectMates, IDC_MaterialDraws, IDC_TrivialDraws, GPB_Apply, IDC_Rule, IDC_Repeats, IDC_ScoreAbs1, IDC_ScoreAbs2, IDOK, IDCANCEL }, { DLG_OptionsUCI, IDC_PolyDir, IDC_BrowseForPolyglotDir, IDC_Hash, IDC_Path, IDC_BrowseForEGTB, IDC_Cache, IDC_UseBook, IDC_BrowseForBook, IDC_CPU, IDC_OwnBook1, IDC_OwnBook2, IDC_Depth, IDC_Variation, IDC_DefGames, IDOK, IDCANCEL }, { 0 } }; static char languageBuf[70000], *foreign[1000], *english[1000], *languageFile[MSG_SIZ]; static int lastChecked; static char oldLanguage[MSG_SIZ], *menuText[10][30]; extern int tinyLayout; extern char * menuBarText[][10]; void LoadLanguageFile(char *name) { //load the file with translations, and make a list of the strings to be translated, and their translations FILE *f; int i=0, j=0, n=0, k; char buf[MSG_SIZ]; if(!name || name[0] == NULLCHAR) return; snprintf(buf, MSG_SIZ, "%s%s", name, strchr(name, '.') ? "" : ".lng"); // auto-append lng extension appData.language = oldLanguage; if(!strcmp(buf, oldLanguage)) { barbaric = 1; return; } // this language already loaded; just switch on if((f = fopen(buf, "r")) == NULL) return; while((k = fgetc(f)) != EOF) { if(i >= sizeof(languageBuf)) { DisplayError("Language file too big", 0); return; } languageBuf[i] = k; if(k == '\n') { if(languageBuf[n] == '"' && languageBuf[i-1] == '"') { char *p; if(p = strstr(languageBuf + n + 1, "\" === \"")) { if(p > languageBuf+n+2 && p+8 < languageBuf+i) { if(j >= sizeof(english)) { DisplayError("Too many translated strings", 0); return; } english[j] = languageBuf + n + 1; *p = 0; foreign[j++] = p + 7; languageBuf[i-1] = 0; //if(appData.debugMode) fprintf(debugFP, "translation: replace '%s' by '%s'\n", english[j-1], foreign[j-1]); } } } n = i + 1; } else if(i > 0 && languageBuf[i-1] == '\\') { switch(k) { case 'n': k = '\n'; break; case 'r': k = '\r'; break; case 't': k = '\t'; break; } languageBuf[--i] = k; } i++; } fclose(f); barbaric = (j != 0); safeStrCpy(oldLanguage, buf, sizeof(oldLanguage)/sizeof(oldLanguage[0]) ); } char * T_(char *s) { // return the translation of the given string // efficiency can be improved a lot... int i=0; static char buf[MSG_SIZ]; //if(appData.debugMode) fprintf(debugFP, "T_(%s)\n", s); if(!barbaric) return s; if(!s) return ""; // sanity while(english[i]) { if(!strcmp(s, english[i])) return foreign[i]; if(english[i][0] == '%' && strstr(s, english[i]+1) == s) { // allow translation of strings with variable ending snprintf(buf, MSG_SIZ, "%s%s", foreign[i], s + strlen(english[i]+1)); // keep unmatched portion return buf; } i++; } return s; } void Translate(HWND hDlg, int dialogID) { // translate all text items in the given dialog int i=0, j, k; char buf[MSG_SIZ], *s; if(!barbaric) return; while(dialogItems[i][0] && dialogItems[i][0] != dialogID) i++; // find the dialog description if(dialogItems[i][0] != dialogID) return; // unknown dialog, should not happen GetWindowText( hDlg, buf, MSG_SIZ ); s = T_(buf); if(strcmp(buf, s)) SetWindowText(hDlg, s); // replace by translated string (if different) for(j=1; k=dialogItems[i][j]; j++) { // translate all listed dialog items GetDlgItemText(hDlg, k, buf, MSG_SIZ); if(strlen(buf) == 0) continue; s = T_(buf); if(strcmp(buf, s)) SetDlgItemText(hDlg, k, s); // replace by translated string (if different) } } HMENU TranslateOneMenu(int i, HMENU subMenu) { int j; static MENUITEMINFO info; info.cbSize = sizeof(MENUITEMINFO); info.fMask = MIIM_STATE | MIIM_TYPE; for(j=GetMenuItemCount(subMenu)-1; j>=0; j--){ char buf[MSG_SIZ]; info.dwTypeData = buf; info.cch = sizeof(buf); GetMenuItemInfo(subMenu, j, TRUE, &info); if(i < 10) { if(menuText[i][j]) safeStrCpy(buf, menuText[i][j], sizeof(buf)/sizeof(buf[0]) ); else menuText[i][j] = strdup(buf); // remember original on first change } if(buf[0] == NULLCHAR) continue; info.dwTypeData = T_(buf); info.cch = strlen(buf)+1; SetMenuItemInfo(subMenu, j, TRUE, &info); } return subMenu; } void TranslateMenus(int addLanguage) { int i; WIN32_FIND_DATA fileData; HANDLE hFind; #define IDM_English 1970 if(1) { HMENU mainMenu = GetMenu(hwndMain); for (i=GetMenuItemCount(mainMenu)-1; i>=0; i--) { HMENU subMenu = GetSubMenu(mainMenu, i); ModifyMenu(mainMenu, i, MF_STRING|MF_BYPOSITION|MF_POPUP|EnableMenuItem(mainMenu, i, MF_BYPOSITION), (UINT) subMenu, T_(menuBarText[tinyLayout][i])); TranslateOneMenu(i, subMenu); } DrawMenuBar(hwndMain); } if(!addLanguage) return; if((hFind = FindFirstFile("*.LNG", &fileData)) != INVALID_HANDLE_VALUE) { HMENU mainMenu = GetMenu(hwndMain); HMENU subMenu = GetSubMenu(mainMenu, GetMenuItemCount(mainMenu)-1); AppendMenu(subMenu, MF_SEPARATOR, (UINT_PTR) 0, NULL); AppendMenu(subMenu, MF_ENABLED|MF_STRING|(barbaric?MF_UNCHECKED:MF_CHECKED), (UINT_PTR) IDM_English, (LPCTSTR) "English"); i = 0; lastChecked = IDM_English; do { char *p, *q = fileData.cFileName; int checkFlag = MF_UNCHECKED; languageFile[i] = strdup(q); if(barbaric && !strcmp(oldLanguage, q)) { checkFlag = MF_CHECKED; lastChecked = IDM_English + i + 1; CheckMenuItem(mainMenu, IDM_English, MF_BYCOMMAND|MF_UNCHECKED); } *q = ToUpper(*q); while(*++q) *q = ToLower(*q); p = strstr(fileData.cFileName, ".lng"); if(p) *p = 0; AppendMenu(subMenu, MF_ENABLED|MF_STRING|checkFlag, (UINT_PTR) IDM_English + ++i, (LPCTSTR) fileData.cFileName); } while(FindNextFile(hFind, &fileData)); FindClose(hFind); } } #endif #define IDM_RecentEngines 3000 void RecentEngineMenu (char *s) { if(appData.icsActive) return; if(appData.recentEngines > 0 && *s) { // feature is on, and list non-empty HMENU mainMenu = GetMenu(hwndMain); HMENU subMenu = GetSubMenu(mainMenu, 5); // Engine menu int i=IDM_RecentEngines; recentEngines = strdup(appData.recentEngineList); // remember them as they are in menu AppendMenu(subMenu, MF_SEPARATOR, (UINT_PTR) 0, NULL); while(*s) { char *p = strchr(s, '\n'); if(p == NULL) return; // malformed! *p = NULLCHAR; AppendMenu(subMenu, MF_ENABLED|MF_STRING|MF_UNCHECKED, (UINT_PTR) i++, (LPCTSTR) s); *p = '\n'; s = p+1; } } } typedef struct { char *name; int squareSize; int lineGap; int smallLayout; int tinyLayout; int cliWidth, cliHeight; } SizeInfo; SizeInfo sizeInfo[] = { { "tiny", 21, 0, 1, 2, 0, 0 }, { "teeny", 25, 1, 1, 2, 0, 0 }, { "dinky", 29, 1, 1, 2, 0, 0 }, { "petite", 33, 1, 1, 2, 0, 0 }, { "slim", 37, 2, 1, 1, 0, 0 }, { "small", 40, 2, 1, 1, 0, 0 }, { "mediocre", 45, 2, 1, 0, 0, 0 }, { "middling", 49, 2, 0, 0, 0, 0 }, { "average", 54, 2, 0, 0, 0, 0 }, { "moderate", 58, 3, 0, 0, 0, 0 }, { "medium", 64, 3, 0, 0, 0, 0 }, { "bulky", 72, 3, 0, 0, 0, 0 }, { "large", 80, 3, 0, 0, 0, 0 }, { "big", 87, 3, 0, 0, 0, 0 }, { "huge", 95, 3, 0, 0, 0, 0 }, { "giant", 108, 3, 0, 0, 0, 0 }, { "colossal", 116, 4, 0, 0, 0, 0 }, { "titanic", 129, 4, 0, 0, 0, 0 }, { NULL, 0, 0, 0, 0, 0, 0 } }; #define MF(x) {x, {{0,}, 0. }, {0, }, 0} MyFont fontRec[NUM_SIZES][NUM_FONTS] = { { MF(CLOCK_FONT_TINY), MF(MESSAGE_FONT_TINY), MF(COORD_FONT_TINY), MF(CONSOLE_FONT_TINY), MF(COMMENT_FONT_TINY), MF(EDITTAGS_FONT_TINY), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_TEENY), MF(MESSAGE_FONT_TEENY), MF(COORD_FONT_TEENY), MF(CONSOLE_FONT_TEENY), MF(COMMENT_FONT_TEENY), MF(EDITTAGS_FONT_TEENY), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_DINKY), MF(MESSAGE_FONT_DINKY), MF(COORD_FONT_DINKY), MF(CONSOLE_FONT_DINKY), MF(COMMENT_FONT_DINKY), MF(EDITTAGS_FONT_DINKY), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_PETITE), MF(MESSAGE_FONT_PETITE), MF(COORD_FONT_PETITE), MF(CONSOLE_FONT_PETITE), MF(COMMENT_FONT_PETITE), MF(EDITTAGS_FONT_PETITE), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_SLIM), MF(MESSAGE_FONT_SLIM), MF(COORD_FONT_SLIM), MF(CONSOLE_FONT_SLIM), MF(COMMENT_FONT_SLIM), MF(EDITTAGS_FONT_SLIM), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_SMALL), MF(MESSAGE_FONT_SMALL), MF(COORD_FONT_SMALL), MF(CONSOLE_FONT_SMALL), MF(COMMENT_FONT_SMALL), MF(EDITTAGS_FONT_SMALL), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_MEDIOCRE), MF(MESSAGE_FONT_MEDIOCRE), MF(COORD_FONT_MEDIOCRE), MF(CONSOLE_FONT_MEDIOCRE), MF(COMMENT_FONT_MEDIOCRE), MF(EDITTAGS_FONT_MEDIOCRE), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_MIDDLING), MF(MESSAGE_FONT_MIDDLING), MF(COORD_FONT_MIDDLING), MF(CONSOLE_FONT_MIDDLING), MF(COMMENT_FONT_MIDDLING), MF(EDITTAGS_FONT_MIDDLING), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_AVERAGE), MF(MESSAGE_FONT_AVERAGE), MF(COORD_FONT_AVERAGE), MF(CONSOLE_FONT_AVERAGE), MF(COMMENT_FONT_AVERAGE), MF(EDITTAGS_FONT_AVERAGE), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_MODERATE), MF(MESSAGE_FONT_MODERATE), MF(COORD_FONT_MODERATE), MF(CONSOLE_FONT_MODERATE), MF(COMMENT_FONT_MODERATE), MF(EDITTAGS_FONT_MODERATE), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_MEDIUM), MF(MESSAGE_FONT_MEDIUM), MF(COORD_FONT_MEDIUM), MF(CONSOLE_FONT_MEDIUM), MF(COMMENT_FONT_MEDIUM), MF(EDITTAGS_FONT_MEDIUM), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_BULKY), MF(MESSAGE_FONT_BULKY), MF(COORD_FONT_BULKY), MF(CONSOLE_FONT_BULKY), MF(COMMENT_FONT_BULKY), MF(EDITTAGS_FONT_BULKY), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_LARGE), MF(MESSAGE_FONT_LARGE), MF(COORD_FONT_LARGE), MF(CONSOLE_FONT_LARGE), MF(COMMENT_FONT_LARGE), MF(EDITTAGS_FONT_LARGE), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_BIG), MF(MESSAGE_FONT_BIG), MF(COORD_FONT_BIG), MF(CONSOLE_FONT_BIG), MF(COMMENT_FONT_BIG), MF(EDITTAGS_FONT_BIG), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_HUGE), MF(MESSAGE_FONT_HUGE), MF(COORD_FONT_HUGE), MF(CONSOLE_FONT_HUGE), MF(COMMENT_FONT_HUGE), MF(EDITTAGS_FONT_HUGE), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_GIANT), MF(MESSAGE_FONT_GIANT), MF(COORD_FONT_GIANT), MF(CONSOLE_FONT_GIANT), MF(COMMENT_FONT_GIANT), MF(EDITTAGS_FONT_GIANT), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_COLOSSAL), MF(MESSAGE_FONT_COLOSSAL), MF(COORD_FONT_COLOSSAL), MF(CONSOLE_FONT_COLOSSAL), MF(COMMENT_FONT_COLOSSAL), MF(EDITTAGS_FONT_COLOSSAL), MF(MOVEHISTORY_FONT_ALL), MF (GAMELIST_FONT_ALL) }, { MF(CLOCK_FONT_TITANIC), MF(MESSAGE_FONT_TITANIC), MF(COORD_FONT_TITANIC), MF(CONSOLE_FONT_TITANIC), MF(COMMENT_FONT_TITANIC), MF(EDITTAGS_FONT_TITANIC), MF(MOVEHISTORY_FONT_ALL), MF(GAMELIST_FONT_ALL) }, }; MyFont *font[NUM_SIZES][NUM_FONTS]; typedef struct { char *label; int id; HWND hwnd; WNDPROC wndproc; } MyButtonDesc; #define BUTTON_WIDTH (tinyLayout == 2 ? 16 : 32) #define N_BUTTONS 5 MyButtonDesc buttonDesc[N_BUTTONS] = { {"<<", IDM_ToStart, NULL, NULL}, {"<", IDM_Backward, NULL, NULL}, {"P", IDM_Pause, NULL, NULL}, {">", IDM_Forward, NULL, NULL}, {">>", IDM_ToEnd, NULL, NULL}, }; int tinyLayout = 0, smallLayout = 0; #define MENU_BAR_ITEMS 9 char *menuBarText[3][MENU_BAR_ITEMS+1] = { { N_("&File"), N_("&Edit"), N_("&View"), N_("&Mode"), N_("&Action"), N_("E&ngine"), N_("&Options"), N_("&Help"), NULL }, { N_("&Fil"), N_("&Ed"), N_("&Vw"), N_("&Mod"), N_("&Act"), N_("E&ng"), N_("&Opt"), N_("&Hlp"), NULL }, { N_("&F"), N_("&E"), N_("&V"), N_("&M"), N_("&A"), N_("&N"), N_("&O"), N_("&H"), NULL }, }; MySound sounds[(int)NSoundClasses]; MyTextAttribs textAttribs[(int)NColorClasses]; MyColorizeAttribs colorizeAttribs[] = { { (COLORREF)0, 0, N_("Shout Text") }, { (COLORREF)0, 0, N_("SShout/CShout") }, { (COLORREF)0, 0, N_("Channel 1 Text") }, { (COLORREF)0, 0, N_("Channel Text") }, { (COLORREF)0, 0, N_("Kibitz Text") }, { (COLORREF)0, 0, N_("Tell Text") }, { (COLORREF)0, 0, N_("Challenge Text") }, { (COLORREF)0, 0, N_("Request Text") }, { (COLORREF)0, 0, N_("Seek Text") }, { (COLORREF)0, 0, N_("Normal Text") }, { (COLORREF)0, 0, N_("None") } }; static char *commentTitle; static char *commentText; static int commentIndex; static Boolean editComment = FALSE; char errorTitle[MSG_SIZ]; char errorMessage[2*MSG_SIZ]; HWND errorDialog = NULL; BOOLEAN moveErrorMessageUp = FALSE; BOOLEAN consoleEcho = TRUE; CHARFORMAT consoleCF; COLORREF consoleBackgroundColor; char *programVersion; #define CPReal 1 #define CPComm 2 #define CPSock 3 #define CPRcmd 4 typedef int CPKind; typedef struct { CPKind kind; HANDLE hProcess; DWORD pid; HANDLE hTo; HANDLE hFrom; SOCKET sock; SOCKET sock2; /* stderr socket for OpenRcmd */ } ChildProc; #define INPUT_SOURCE_BUF_SIZE 4096 typedef struct _InputSource { CPKind kind; HANDLE hFile; SOCKET sock; int lineByLine; HANDLE hThread; DWORD id; char buf[INPUT_SOURCE_BUF_SIZE]; char *next; DWORD count; int error; InputCallback func; struct _InputSource *second; /* for stderr thread on CPRcmd */ VOIDSTAR closure; } InputSource; InputSource *consoleInputSource; DCB dcb; /* forward */ VOID ConsoleOutput(char* data, int length, int forceVisible); VOID ConsoleCreate(); LRESULT CALLBACK ConsoleWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); VOID ColorizeTextPopup(HWND hwnd, ColorClass cc); VOID PrintCommSettings(FILE *f, char *name, DCB *dcb); VOID ParseCommSettings(char *arg, DCB *dcb); LRESULT CALLBACK StartupDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); VOID APIENTRY MenuPopup(HWND hwnd, POINT pt, HMENU hmenu, UINT def); void ParseIcsTextMenu(char *icsTextMenuString); VOID PopUpNameDialog(char firstchar); VOID UpdateSampleText(HWND hDlg, int id, MyColorizeAttribs *mca); /* [AS] */ int NewGameFRC(); int GameListOptions(); int dummy; // [HGM] for obsolete args HWND hwndMain = NULL; /* root window*/ HWND hwndConsole = NULL; HWND commentDialog = NULL; HWND moveHistoryDialog = NULL; HWND evalGraphDialog = NULL; HWND engineOutputDialog = NULL; HWND gameListDialog = NULL; HWND editTagsDialog = NULL; int commentUp = FALSE; WindowPlacement wpMain; WindowPlacement wpConsole; WindowPlacement wpComment; WindowPlacement wpMoveHistory; WindowPlacement wpEvalGraph; WindowPlacement wpEngineOutput; WindowPlacement wpGameList; WindowPlacement wpTags; VOID EngineOptionsPopup(); // [HGM] settings VOID GothicPopUp(char *title, VariantClass variant); /* * Setting "frozen" should disable all user input other than deleting * the window. We do this while engines are initializing themselves. */ static int frozen = 0; static int oldMenuItemState[MENU_BAR_ITEMS]; void FreezeUI() { HMENU hmenu; int i; if (frozen) return; frozen = 1; hmenu = GetMenu(hwndMain); for (i=0; i 4 && IsIconic(hwndConsole)) ShowWindow(hwndConsole, SW_RESTORE); if(currentElement < 5 && IsIconic(hwndMain)) ShowWindow(hwndMain, SW_RESTORE); // all open together SetFocus(h); return; // this message now has been processed } } if (!(commentDialog && IsDialogMessage(commentDialog, &msg)) && !(moveHistoryDialog && IsDialogMessage(moveHistoryDialog, &msg)) && !(evalGraphDialog && IsDialogMessage(evalGraphDialog, &msg)) && !(engineOutputDialog && IsDialogMessage(engineOutputDialog, &msg)) && !(editTagsDialog && IsDialogMessage(editTagsDialog, &msg)) && !(gameListDialog && IsDialogMessage(gameListDialog, &msg)) && !(errorDialog && IsDialogMessage(errorDialog, &msg)) && !(!frozen && TranslateAccelerator(hwndMain, hAccelMain, &msg)) && JAWS_ACCEL !(!hwndConsole && TranslateAccelerator(hwndMain, hAccelNoICS, &msg)) && !(!hwndConsole && TranslateAccelerator(hwndMain, hAccelNoAlt, &msg))) { int done = 0, i; // [HGM] chat: dispatch cat-box messages for(i=0; i screenGeometry.right - 32) *x = screenGeometry.left; if (*y > screenGeometry.bottom - 32) *y = screenGeometry.top; if (*x < screenGeometry.left + minX) *x = screenGeometry.left + minX; if (*y < screenGeometry.top + minY) *y = screenGeometry.top + minY; } VOID LoadLogo(ChessProgramState *cps, int n, Boolean ics) { char buf[MSG_SIZ], dir[MSG_SIZ]; GetCurrentDirectory(MSG_SIZ, dir); SetCurrentDirectory(installDir); if( appData.logo[n] && appData.logo[n][0] != NULLCHAR) { cps->programLogo = LoadImage( 0, appData.logo[n], IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); if (cps->programLogo == NULL && appData.debugMode) { fprintf( debugFP, "Unable to load logo bitmap '%s'\n", appData.logo[n] ); } } else if(appData.autoLogo) { if(ics) { // [HGM] logo: in ICS mode second can be used for ICS char *opponent = ""; if(gameMode == IcsPlayingWhite) opponent = gameInfo.black; if(gameMode == IcsPlayingBlack) opponent = gameInfo.white; sprintf(buf, "logos\\%s\\%s.bmp", appData.icsHost, opponent); if(!*opponent || !(cps->programLogo = LoadImage( 0, buf, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ))) { sprintf(buf, "logos\\%s.bmp", appData.icsHost); cps->programLogo = LoadImage( 0, buf, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); } } else if(appData.directory[n] && appData.directory[n][0]) { SetCurrentDirectory(appData.directory[n]); cps->programLogo = LoadImage( 0, "logo.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); } } SetCurrentDirectory(dir); /* return to prev directory */ } VOID InitTextures() { ZeroMemory( &backTextureSquareInfo, sizeof(backTextureSquareInfo) ); backTextureSquareSize = 0; // kludge to force recalculation of texturemode if( appData.liteBackTextureFile && appData.liteBackTextureFile[0] != NULLCHAR && appData.liteBackTextureFile[0] != '*' ) { if(liteBackTexture) DeleteObject(liteBackTexture); liteBackTexture = LoadImage( 0, appData.liteBackTextureFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); liteBackTextureMode = appData.liteBackTextureMode; if (liteBackTexture == NULL && appData.debugMode) { fprintf( debugFP, "Unable to load lite texture bitmap '%s'\n", appData.liteBackTextureFile ); } } if( appData.darkBackTextureFile && appData.darkBackTextureFile[0] != NULLCHAR && appData.darkBackTextureFile[0] != '*' ) { if(darkBackTexture) DeleteObject(darkBackTexture); darkBackTexture = LoadImage( 0, appData.darkBackTextureFile, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); darkBackTextureMode = appData.darkBackTextureMode; if (darkBackTexture == NULL && appData.debugMode) { fprintf( debugFP, "Unable to load dark texture bitmap '%s'\n", appData.darkBackTextureFile ); } } } #ifndef SM_CXVIRTUALSCREEN #define SM_CXVIRTUALSCREEN 78 #endif #ifndef SM_CYVIRTUALSCREEN #define SM_CYVIRTUALSCREEN 79 #endif #ifndef SM_XVIRTUALSCREEN #define SM_XVIRTUALSCREEN 76 #endif #ifndef SM_YVIRTUALSCREEN #define SM_YVIRTUALSCREEN 77 #endif VOID InitGeometry() { screenHeight = GetSystemMetrics(SM_CYVIRTUALSCREEN); if( !screenHeight ) screenHeight = GetSystemMetrics(SM_CYSCREEN); screenWidth = GetSystemMetrics(SM_CXVIRTUALSCREEN); if( !screenWidth ) screenWidth = GetSystemMetrics(SM_CXSCREEN); screenGeometry.left = GetSystemMetrics(SM_XVIRTUALSCREEN); screenGeometry.top = GetSystemMetrics(SM_YVIRTUALSCREEN); screenGeometry.right = screenGeometry.left + screenWidth; screenGeometry.bottom = screenGeometry.top + screenHeight; } ChessProgramState broadcast; BOOL InitInstance(HINSTANCE hInstance, int nCmdShow, LPSTR lpCmdLine) { HWND hwnd; /* Main window handle. */ int ibs; WINDOWPLACEMENT wp; char *filepart; hInst = hInstance; /* Store instance handle in our global variable */ programName = szAppName; if (SearchPath(NULL, "WinBoard.exe", NULL, MSG_SIZ, installDir, &filepart)) { *filepart = NULLCHAR; SetCurrentDirectory(installDir); } else { GetCurrentDirectory(MSG_SIZ, installDir); } gameInfo.boardWidth = gameInfo.boardHeight = 8; // [HGM] won't have open window otherwise InitGeometry(); InitAppData(lpCmdLine); /* Get run-time parameters */ /* xboard, and older WinBoards, controlled the move sound with the appData.ringBellAfterMoves option. In the current WinBoard, we always turn the option on (so that the backend will call us), then let the user turn the sound off by setting it to silence if desired. To accommodate old winboard.ini files saved by old versions of WinBoard, we also turn off the sound if the option was initially set to false. [HGM] taken out of InitAppData */ if (!appData.ringBellAfterMoves) { sounds[(int)SoundMove].name = strdup(""); appData.ringBellAfterMoves = TRUE; } if (appData.debugMode) { char *c = appData.nameOfDebugFile; if(strstr(c, "///") == c) { broadcast.which = "broadcaster"; broadcast.pr = NoProc; broadcast.isr = NULL; broadcast.program = c + 3; broadcast.dir = "."; broadcast.host = "localhost"; StartChessProgram(&broadcast); debugFP = (FILE*) _fdopen(_open_osfhandle((long)(((ChildProc*)(broadcast.pr))->hTo), _O_WRONLY), "w"); } else debugFP = fopen(c, "w"); setbuf(debugFP, NULL); } LoadLanguageFile(appData.language); InitBackEnd1(); // InitEngineUCI( installDir, &first ); // [HGM] incorporated in InitBackEnd1() // InitEngineUCI( installDir, &second ); /* Create a main window for this application instance. */ hwnd = CreateWindow(szAppName, szTitle, (WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX), CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); hwndMain = hwnd; /* If window could not be created, return "failure" */ if (!hwnd) { return (FALSE); } /* [HGM] logo: Load logos if specified (must be done before InitDrawingSizes) */ LoadLogo(&first, 0, FALSE); LoadLogo(&second, 1, appData.icsActive); SetUserLogo(); iconWhite = LoadIcon(hInstance, "icon_white"); iconBlack = LoadIcon(hInstance, "icon_black"); iconCurrent = iconWhite; InitDrawingColors(); InitPosition(0); // to set nr of ranks and files, which might be non-default through command-line args for (ibs = (int) NUM_SIZES - 1; ibs >= 0; ibs--) { /* Compute window size for each board size, and use the largest size that fits on this screen as the default. */ InitDrawingSizes((BoardSize)(ibs+1000), 0); if (boardSize == (BoardSize)-1 && winH <= screenHeight - GetSystemMetrics(SM_CYFRAME) - GetSystemMetrics(SM_CYCAPTION) - 10 && winW <= screenWidth) { boardSize = (BoardSize)ibs; } } InitDrawingSizes(boardSize, 0); RecentEngineMenu(appData.recentEngineList); InitMenuChecks(); buttonCount = GetSystemMetrics(SM_CMOUSEBUTTONS); /* [AS] Load textures if specified */ InitTextures(); mysrandom( (unsigned) time(NULL) ); /* [AS] Restore layout */ if( wpMoveHistory.visible ) { MoveHistoryPopUp(); } if( wpEvalGraph.visible ) { EvalGraphPopUp(); } if( wpEngineOutput.visible ) { EngineOutputPopUp(); } /* Make the window visible; update its client area; and return "success" */ EnsureOnScreen(&wpMain.x, &wpMain.y, minX, minY); wp.length = sizeof(WINDOWPLACEMENT); wp.flags = 0; wp.showCmd = nCmdShow; wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0; wp.rcNormalPosition.left = wpMain.x; wp.rcNormalPosition.right = wpMain.x + wpMain.width; wp.rcNormalPosition.top = wpMain.y; wp.rcNormalPosition.bottom = wpMain.y + wpMain.height; SetWindowPlacement(hwndMain, &wp); InitBackEnd2(); // [HGM] moved until after all windows placed, to save correct position if fatal error on engine start if(!appData.noGUI) SetWindowPos(hwndMain, alwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); if (hwndConsole) { #if AOT_CONSOLE SetWindowPos(hwndConsole, alwaysOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); #endif ShowWindow(hwndConsole, nCmdShow); SetActiveWindow(hwndConsole); } if(!appData.noGUI) UpdateWindow(hwnd); else ShowWindow(hwnd, SW_MINIMIZE); if(gameListDialog) SetFocus(gameListDialog); // [HGM] jaws: for if we clicked multi-game game file return TRUE; } VOID InitMenuChecks() { HMENU hmenu = GetMenu(hwndMain); (void) EnableMenuItem(hmenu, IDM_CommPort, MF_BYCOMMAND|((appData.icsActive && *appData.icsCommPort != NULLCHAR) ? MF_ENABLED : MF_GRAYED)); (void) CheckMenuItem(hmenu, IDM_SaveSettingsOnExit, MF_BYCOMMAND|(saveSettingsOnExit ? MF_CHECKED : MF_UNCHECKED)); EnableMenuItem(hmenu, IDM_SaveSelected, MF_GRAYED); } //--------------------------------------------------------------------------------------------------------- #define ICS_TEXT_MENU_SIZE (IDM_CommandXLast - IDM_CommandX + 1) #define XBOARD FALSE #define OPTCHAR "/" #define SEPCHAR "=" #define TOPLEVEL 0 #include "args.h" // front-end part of option handling VOID LFfromMFP(LOGFONT* lf, MyFontParams *mfp) { HDC hdc = CreateDC("DISPLAY", NULL, NULL, NULL); lf->lfHeight = -(int)(mfp->pointSize * GetDeviceCaps(hdc, LOGPIXELSY) / 72.0 + 0.5); DeleteDC(hdc); lf->lfWidth = 0; lf->lfEscapement = 0; lf->lfOrientation = 0; lf->lfWeight = mfp->bold ? FW_BOLD : FW_NORMAL; lf->lfItalic = mfp->italic; lf->lfUnderline = mfp->underline; lf->lfStrikeOut = mfp->strikeout; lf->lfCharSet = mfp->charset; lf->lfOutPrecision = OUT_DEFAULT_PRECIS; lf->lfClipPrecision = CLIP_DEFAULT_PRECIS; lf->lfQuality = DEFAULT_QUALITY; lf->lfPitchAndFamily = DEFAULT_PITCH|FF_DONTCARE; safeStrCpy(lf->lfFaceName, mfp->faceName, sizeof(lf->lfFaceName)/sizeof(lf->lfFaceName[0]) ); } void CreateFontInMF(MyFont *mf) { LFfromMFP(&mf->lf, &mf->mfp); if (mf->hf) DeleteObject(mf->hf); mf->hf = CreateFontIndirect(&mf->lf); } // [HGM] This platform-dependent table provides the location for storing the color info void * colorVariable[] = { &whitePieceColor, &blackPieceColor, &lightSquareColor, &darkSquareColor, &highlightSquareColor, &premoveHighlightColor, NULL, &consoleBackgroundColor, &appData.fontForeColorWhite, &appData.fontBackColorWhite, &appData.fontForeColorBlack, &appData.fontBackColorBlack, &appData.evalHistColorWhite, &appData.evalHistColorBlack, &appData.highlightArrowColor, }; /* Command line font name parser. NULL name means do nothing. Syntax like "Courier New:10.0 bi" or "Arial:10" or "Arial:10b" For backward compatibility, syntax without the colon is also accepted, but font names with digits in them won't work in that case. */ VOID ParseFontName(char *name, MyFontParams *mfp) { char *p, *q; if (name == NULL) return; p = name; q = strchr(p, ':'); if (q) { if (q - p >= sizeof(mfp->faceName)) ExitArgError(_("Font name too long:"), name, TRUE); memcpy(mfp->faceName, p, q - p); mfp->faceName[q - p] = NULLCHAR; p = q + 1; } else { q = mfp->faceName; while (*p && !isdigit(*p)) { *q++ = *p++; if (q - mfp->faceName >= sizeof(mfp->faceName)) ExitArgError(_("Font name too long:"), name, TRUE); } while (q > mfp->faceName && q[-1] == ' ') q--; *q = NULLCHAR; } if (!*p) ExitArgError(_("Font point size missing:"), name, TRUE); mfp->pointSize = (float) atof(p); mfp->bold = (strchr(p, 'b') != NULL); mfp->italic = (strchr(p, 'i') != NULL); mfp->underline = (strchr(p, 'u') != NULL); mfp->strikeout = (strchr(p, 's') != NULL); mfp->charset = DEFAULT_CHARSET; q = strchr(p, 'c'); if (q) mfp->charset = (BYTE) atoi(q+1); } void ParseFont(char *name, int number) { // wrapper to shield back-end from 'font' ParseFontName(name, &font[boardSize][number]->mfp); } void SetFontDefaults() { // in WB we have a 2D array of fonts; this initializes their description int i, j; /* Point font array elements to structures and parse default font names */ for (i=0; idef, &font[j][i]->mfp); } } } void CreateFonts() { // here we create the actual fonts from the selected descriptions int i, j; for (i=0; iargLoc]->mfp; fprintf(f, "/size=%s ", sizeInfo[bs].name); fprintf(f, "/%s=\"%s:%g%s%s%s%s%sc%d\"\n", ad->argName, mfp->faceName, mfp->pointSize, mfp->bold || mfp->italic || mfp->underline || mfp->strikeout ? " " : "", mfp->bold ? "b" : "", mfp->italic ? "i" : "", mfp->underline ? "u" : "", mfp->strikeout ? "s" : "", (int)mfp->charset); } } void ExportSounds() { // [HGM] copy the names from the internal WB variables to appData ColorClass cc; SoundClass sc; for (cc = (ColorClass)0; cc < ColorNormal; cc++) (&appData.soundShout)[cc] = textAttribs[cc].sound.name; for (sc = (SoundClass)0; sc < NSoundClasses; sc++) (&appData.soundMove)[sc] = sounds[sc].name; } void SaveAttribsArg(FILE *f, ArgDescriptor *ad) { // here the "argLoc" defines a table index. It could have contained the 'ta' pointer itself, though MyTextAttribs* ta = &textAttribs[(ColorClass)ad->argLoc]; fprintf(f, "/%s=\"%s%s%s%s%s#%02lx%02lx%02lx\"\n", ad->argName, (ta->effects & CFE_BOLD) ? "b" : "", (ta->effects & CFE_ITALIC) ? "i" : "", (ta->effects & CFE_UNDERLINE) ? "u" : "", (ta->effects & CFE_STRIKEOUT) ? "s" : "", (ta->effects) ? " " : "", ta->color&0xff, (ta->color >> 8)&0xff, (ta->color >> 16)&0xff); } void SaveColor(FILE *f, ArgDescriptor *ad) { // in WinBoard the color is an int and has to be converted to text. In X it would be a string already? COLORREF color = *(COLORREF *)colorVariable[(int)ad->argLoc]; fprintf(f, "/%s=#%02lx%02lx%02lx\n", ad->argName, color&0xff, (color>>8)&0xff, (color>>16)&0xff); } void SaveBoardSize(FILE *f, char *name, void *addr) { // wrapper to shield back-end from BoardSize & sizeInfo fprintf(f, "/%s=%s\n", name, sizeInfo[*(BoardSize *)addr].name); } void ParseCommPortSettings(char *s) { // wrapper to keep dcb from back-end ParseCommSettings(s, &dcb); } void GetWindowCoords() { // wrapper to shield use of window handles from back-end (make addressible by number?) GetActualPlacement(hwndMain, &wpMain); GetActualPlacement(hwndConsole, &wpConsole); GetActualPlacement(commentDialog, &wpComment); GetActualPlacement(editTagsDialog, &wpTags); GetActualPlacement(gameListDialog, &wpGameList); GetActualPlacement(moveHistoryDialog, &wpMoveHistory); GetActualPlacement(evalGraphDialog, &wpEvalGraph); GetActualPlacement(engineOutputDialog, &wpEngineOutput); } void PrintCommPortSettings(FILE *f, char *name) { // wrapper to shield back-end from DCB PrintCommSettings(f, name, &dcb); } int MySearchPath(char *installDir, char *name, char *fullname) { char *dummy, buf[MSG_SIZ], *p = name, *q; if(name[0]== '%') { fullname[0] = 0; // [HGM] first expand any environment variables in the given name while(*p == '%' && (q = strchr(p+1, '%'))) { // [HGM] recognize %*% as environment variable safeStrCpy(buf, p+1, sizeof(buf)/sizeof(buf[0]) ); *strchr(buf, '%') = 0; strcat(fullname, getenv(buf)); p = q+1; while(*p == '\\') { strcat(fullname, "\\"); p++; } } strcat(fullname, p); // after environment variables (if any), take the remainder of the given name if(appData.debugMode) fprintf(debugFP, "name = '%s', expanded name = '%s'\n", name, fullname); return (int) strlen(fullname); } return (int) SearchPath(installDir, name, NULL, MSG_SIZ, fullname, &dummy); } int MyGetFullPathName(char *name, char *fullname) { char *dummy; return (int) GetFullPathName(name, MSG_SIZ, fullname, &dummy); } int MainWindowUp() { // [HGM] args: allows testing if main window is realized from back-end return hwndMain != NULL; } void PopUpStartupDialog() { FARPROC lpProc; LoadLanguageFile(appData.language); lpProc = MakeProcInstance((FARPROC)StartupDialog, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_Startup), NULL, (DLGPROC)lpProc); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * GDI board drawing routines * \*---------------------------------------------------------------------------*/ /* [AS] Draw square using background texture */ static void DrawTile( int dx, int dy, int dw, int dh, HDC dst, HDC src, int mode, int sx, int sy ) { XFORM x; if( mode == 0 ) { return; /* Should never happen! */ } SetGraphicsMode( dst, GM_ADVANCED ); switch( mode ) { case 1: /* Identity */ break; case 2: /* X reflection */ x.eM11 = -1.0; x.eM12 = 0; x.eM21 = 0; x.eM22 = 1.0; x.eDx = (FLOAT) dw + dx - 1; x.eDy = 0; dx = 0; SetWorldTransform( dst, &x ); break; case 3: /* Y reflection */ x.eM11 = 1.0; x.eM12 = 0; x.eM21 = 0; x.eM22 = -1.0; x.eDx = 0; x.eDy = (FLOAT) dh + dy - 1; dy = 0; SetWorldTransform( dst, &x ); break; case 4: /* X/Y flip */ x.eM11 = 0; x.eM12 = 1.0; x.eM21 = 1.0; x.eM22 = 0; x.eDx = (FLOAT) dx; x.eDy = (FLOAT) dy; dx = 0; dy = 0; SetWorldTransform( dst, &x ); break; } BitBlt( dst, dx, dy, dw, dh, src, sx, sy, SRCCOPY ); x.eM11 = 1.0; x.eM12 = 0; x.eM21 = 0; x.eM22 = 1.0; x.eDx = 0; x.eDy = 0; SetWorldTransform( dst, &x ); ModifyWorldTransform( dst, 0, MWT_IDENTITY ); } /* [AS] [HGM] Make room for more piece types, so all pieces can be different */ enum { PM_WP = (int) WhitePawn, PM_WN = (int) WhiteKnight, PM_WB = (int) WhiteBishop, PM_WR = (int) WhiteRook, PM_WQ = (int) WhiteQueen, PM_WF = (int) WhiteFerz, PM_WW = (int) WhiteWazir, PM_WE = (int) WhiteAlfil, PM_WM = (int) WhiteMan, PM_WO = (int) WhiteCannon, PM_WU = (int) WhiteUnicorn, PM_WH = (int) WhiteNightrider, PM_WA = (int) WhiteAngel, PM_WC = (int) WhiteMarshall, PM_WAB = (int) WhiteCardinal, PM_WD = (int) WhiteDragon, PM_WL = (int) WhiteLance, PM_WS = (int) WhiteCobra, PM_WV = (int) WhiteFalcon, PM_WSG = (int) WhiteSilver, PM_WG = (int) WhiteGrasshopper, PM_WK = (int) WhiteKing, PM_BP = (int) BlackPawn, PM_BN = (int) BlackKnight, PM_BB = (int) BlackBishop, PM_BR = (int) BlackRook, PM_BQ = (int) BlackQueen, PM_BF = (int) BlackFerz, PM_BW = (int) BlackWazir, PM_BE = (int) BlackAlfil, PM_BM = (int) BlackMan, PM_BO = (int) BlackCannon, PM_BU = (int) BlackUnicorn, PM_BH = (int) BlackNightrider, PM_BA = (int) BlackAngel, PM_BC = (int) BlackMarshall, PM_BG = (int) BlackGrasshopper, PM_BAB = (int) BlackCardinal, PM_BD = (int) BlackDragon, PM_BL = (int) BlackLance, PM_BS = (int) BlackCobra, PM_BV = (int) BlackFalcon, PM_BSG = (int) BlackSilver, PM_BK = (int) BlackKing }; static HFONT hPieceFont = NULL; static HBITMAP hPieceMask[(int) EmptySquare]; static HBITMAP hPieceFace[(int) EmptySquare]; static int fontBitmapSquareSize = 0; static char pieceToFontChar[(int) EmptySquare] = { 'p', 'n', 'b', 'r', 'q', 'n', 'b', 'p', 'n', 'b', 'r', 'b', 'r', 'q', 'k', 'k', 'o', 'm', 'v', 't', 'w', 'v', 't', 'o', 'm', 'v', 't', 'v', 't', 'w', 'l', 'l' }; extern BOOL SetCharTable( char *table, const char * map ); /* [HGM] moved to backend.c */ static void SetPieceBackground( HDC hdc, COLORREF color, int mode ) { HBRUSH hbrush; BYTE r1 = GetRValue( color ); BYTE g1 = GetGValue( color ); BYTE b1 = GetBValue( color ); BYTE r2 = r1 / 2; BYTE g2 = g1 / 2; BYTE b2 = b1 / 2; RECT rc; /* Create a uniform background first */ hbrush = CreateSolidBrush( color ); SetRect( &rc, 0, 0, squareSize, squareSize ); FillRect( hdc, &rc, hbrush ); DeleteObject( hbrush ); if( mode == 1 ) { /* Vertical gradient, good for pawn, knight and rook, less for queen and king */ int steps = squareSize / 2; int i; for( i=0; i= (int)BlackPawn && appData.fontBackColorBlack != appData.fontForeColorBlack ) { backColor = appData.fontBackColorBlack; foreColor = appData.fontForeColorBlack; } /* Mask */ hbm = CreateCompatibleBitmap( hdc_window, squareSize, squareSize ); hbm_old = SelectObject( hdc, hbm ); rc.left = 0; rc.top = 0; rc.right = squareSize; rc.bottom = squareSize; /* Step 1: background is now black */ FillRect( hdc, &rc, GetStockObject(BLACK_BRUSH) ); GetTextExtentPoint32( hdc, &pieceToFontChar[index], 1, &sz ); pt.x = (squareSize - sz.cx) / 2; pt.y = (squareSize - sz.cy) / 2; SetBkMode( hdc, TRANSPARENT ); SetTextColor( hdc, chroma ); /* Step 2: the piece has been drawn in purple, there are now black and purple in this bitmap */ TextOut( hdc, pt.x, pt.y, &pieceToFontChar[appData.allWhite && index >= (int)BlackPawn ? index - (int)BlackPawn : index], 1 ); SelectObject( hdc, GetStockObject(WHITE_BRUSH) ); /* Step 3: the area outside the piece is filled with white */ // FloodFill( hdc, 0, 0, chroma ); ExtFloodFill( hdc, 0, 0, 0, FLOODFILLSURFACE ); ExtFloodFill( hdc, 0, squareSize-1, 0, FLOODFILLSURFACE ); // [HGM] fill from all 4 corners, for if piece too big ExtFloodFill( hdc, squareSize-1, 0, 0, FLOODFILLSURFACE ); ExtFloodFill( hdc, squareSize-1, squareSize-1, 0, FLOODFILLSURFACE ); SelectObject( hdc, GetStockObject(BLACK_BRUSH) ); /* Step 4: this is the tricky part, the area inside the piece is filled with black, but if the start point is not inside the piece we're lost! There should be a better way to do this... if we could create a region or path from the fill operation we would be fine for example. */ // FloodFill( hdc, squareSize / 2, squareSize / 2, RGB(0xFF,0xFF,0xFF) ); ExtFloodFill( hdc, squareSize / 2, squareSize / 2, RGB(0xFF,0xFF,0xFF), FLOODFILLBORDER ); { /* [HGM] shave off edges of mask, in an attempt to correct for the fact that FloodFill does not work correctly under Win XP */ HDC dc2 = CreateCompatibleDC( hdc_window ); HBITMAP bm2 = CreateCompatibleBitmap( hdc_window, squareSize, squareSize ); SelectObject( dc2, bm2 ); BitBlt( dc2, 0, 0, squareSize, squareSize, hdc, 0, 0, SRCCOPY ); // make copy BitBlt( hdc, 0, 1, squareSize-2, squareSize-2, dc2, 1, 1, SRCPAINT ); BitBlt( hdc, 2, 1, squareSize-2, squareSize-2, dc2, 1, 1, SRCPAINT ); BitBlt( hdc, 1, 0, squareSize-2, squareSize-2, dc2, 1, 1, SRCPAINT ); BitBlt( hdc, 1, 2, squareSize-2, squareSize-2, dc2, 1, 1, SRCPAINT ); DeleteDC( dc2 ); DeleteObject( bm2 ); } SetTextColor( hdc, 0 ); /* Step 5: some fonts have "disconnected" areas that are skipped by the fill: draw the piece again in black for safety. */ TextOut( hdc, pt.x, pt.y, &pieceToFontChar[appData.allWhite && index >= (int)BlackPawn ? index - (int)BlackPawn : index], 1 ); SelectObject( hdc, hbm_old ); if( hPieceMask[index] != NULL ) { DeleteObject( hPieceMask[index] ); } hPieceMask[index] = hbm; /* Face */ hbm = CreateCompatibleBitmap( hdc_window, squareSize, squareSize ); SelectObject( hdc, hbm ); { HDC dc1 = CreateCompatibleDC( hdc_window ); HDC dc2 = CreateCompatibleDC( hdc_window ); HBITMAP bm2 = CreateCompatibleBitmap( hdc_window, squareSize, squareSize ); SelectObject( dc1, hPieceMask[index] ); SelectObject( dc2, bm2 ); FillRect( dc2, &rc, GetStockObject(WHITE_BRUSH) ); BitBlt( dc2, 0, 0, squareSize, squareSize, dc1, 0, 0, SRCINVERT ); /* Now dc2 contains the inverse of the piece mask, i.e. a mask that preserves the piece background and deletes (makes transparent) the rest. Thanks to that mask, we are free to paint the background with the greates freedom, as we'll be able to mask off the unwanted parts when finished. We use this, to make gradients and give the pieces a "roundish" look. */ SetPieceBackground( hdc, backColor, 2 ); BitBlt( hdc, 0, 0, squareSize, squareSize, dc2, 0, 0, SRCAND ); DeleteDC( dc2 ); DeleteDC( dc1 ); DeleteObject( bm2 ); } SetTextColor( hdc, foreColor ); TextOut( hdc, pt.x, pt.y, &pieceToFontChar[appData.allWhite && index >= (int)BlackPawn ? index - (int)BlackPawn : index], 1 ); SelectObject( hdc, hbm_old ); if( hPieceFace[index] != NULL ) { DeleteObject( hPieceFace[index] ); } hPieceFace[index] = hbm; } static int TranslatePieceToFontPiece( int piece ) { switch( piece ) { case BlackPawn: return PM_BP; case BlackKnight: return PM_BN; case BlackBishop: return PM_BB; case BlackRook: return PM_BR; case BlackQueen: return PM_BQ; case BlackKing: return PM_BK; case WhitePawn: return PM_WP; case WhiteKnight: return PM_WN; case WhiteBishop: return PM_WB; case WhiteRook: return PM_WR; case WhiteQueen: return PM_WQ; case WhiteKing: return PM_WK; case BlackAngel: return PM_BA; case BlackMarshall: return PM_BC; case BlackFerz: return PM_BF; case BlackNightrider: return PM_BH; case BlackAlfil: return PM_BE; case BlackWazir: return PM_BW; case BlackUnicorn: return PM_BU; case BlackCannon: return PM_BO; case BlackGrasshopper: return PM_BG; case BlackMan: return PM_BM; case BlackSilver: return PM_BSG; case BlackLance: return PM_BL; case BlackFalcon: return PM_BV; case BlackCobra: return PM_BS; case BlackCardinal: return PM_BAB; case BlackDragon: return PM_BD; case WhiteAngel: return PM_WA; case WhiteMarshall: return PM_WC; case WhiteFerz: return PM_WF; case WhiteNightrider: return PM_WH; case WhiteAlfil: return PM_WE; case WhiteWazir: return PM_WW; case WhiteUnicorn: return PM_WU; case WhiteCannon: return PM_WO; case WhiteGrasshopper: return PM_WG; case WhiteMan: return PM_WM; case WhiteSilver: return PM_WSG; case WhiteLance: return PM_WL; case WhiteFalcon: return PM_WV; case WhiteCobra: return PM_WS; case WhiteCardinal: return PM_WAB; case WhiteDragon: return PM_WD; } return 0; } void CreatePiecesFromFont() { LOGFONT lf; HDC hdc_window = NULL; HDC hdc = NULL; HFONT hfont_old; int fontHeight; int i; if( fontBitmapSquareSize < 0 ) { /* Something went seriously wrong in the past: do not try to recreate fonts! */ return; } if( !appData.useFont || appData.renderPiecesWithFont == NULL || appData.renderPiecesWithFont[0] == NULLCHAR || appData.renderPiecesWithFont[0] == '*' ) { fontBitmapSquareSize = -1; return; } if( fontBitmapSquareSize != squareSize ) { hdc_window = GetDC( hwndMain ); hdc = CreateCompatibleDC( hdc_window ); if( hPieceFont != NULL ) { DeleteObject( hPieceFont ); } else { for( i=0; i<=(int)BlackKing; i++ ) { hPieceMask[i] = NULL; hPieceFace[i] = NULL; } } fontHeight = 75; if( appData.fontPieceSize >= 50 && appData.fontPieceSize <= 150 ) { fontHeight = appData.fontPieceSize; } fontHeight = (fontHeight * squareSize) / 100; lf.lfHeight = -MulDiv( fontHeight, GetDeviceCaps(hdc, LOGPIXELSY), 72 ); lf.lfWidth = 0; lf.lfEscapement = 0; lf.lfOrientation = 0; lf.lfWeight = FW_NORMAL; lf.lfItalic = 0; lf.lfUnderline = 0; lf.lfStrikeOut = 0; lf.lfCharSet = DEFAULT_CHARSET; lf.lfOutPrecision = OUT_DEFAULT_PRECIS; lf.lfClipPrecision = CLIP_DEFAULT_PRECIS; lf.lfQuality = PROOF_QUALITY; lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE; strncpy( lf.lfFaceName, appData.renderPiecesWithFont, sizeof(lf.lfFaceName) ); lf.lfFaceName[ sizeof(lf.lfFaceName) - 1 ] = '\0'; hPieceFont = CreateFontIndirect( &lf ); if( hPieceFont == NULL ) { fontBitmapSquareSize = -2; } else { /* Setup font-to-piece character table */ if( ! SetCharTable(pieceToFontChar, appData.fontToPieceTable) ) { /* No (or wrong) global settings, try to detect the font */ if( strstr(lf.lfFaceName,"Alpha") != NULL ) { /* Alpha */ SetCharTable(pieceToFontChar, "phbrqkojntwl"); } else if( strstr(lf.lfFaceName,"DiagramTT") != NULL ) { /* DiagramTT* family */ SetCharTable(pieceToFontChar, "PNLRQKpnlrqk"); } else if( strstr(lf.lfFaceName,"WinboardF") != NULL ) { /* Fairy symbols */ SetCharTable(pieceToFontChar, "PNBRQFEACWMOHIJGDVSLUKpnbrqfeacwmohijgdvsluk"); } else if( strstr(lf.lfFaceName,"GC2004D") != NULL ) { /* Good Companion (Some characters get warped as literal :-( */ char s[] = "1cmWG0??S??oYI23wgQU"; s[0]=0xB9; s[1]=0xA9; s[6]=0xB1; s[11]=0xBB; s[12]=0xAB; s[17]=0xB3; SetCharTable(pieceToFontChar, s); } else { /* Cases, Condal, Leipzig, Lucena, Marroquin, Merida, Usual */ SetCharTable(pieceToFontChar, "pnbrqkomvtwl"); } } /* Create bitmaps */ hfont_old = SelectObject( hdc, hPieceFont ); for(i=(int)WhitePawn; i<(int)EmptySquare; i++) /* [HGM] made a loop for this */ if(PieceToChar((ChessSquare)i) != '.') /* skip unused pieces */ CreatePieceMaskFromFont( hdc_window, hdc, i ); SelectObject( hdc, hfont_old ); fontBitmapSquareSize = squareSize; } } if( hdc != NULL ) { DeleteDC( hdc ); } if( hdc_window != NULL ) { ReleaseDC( hwndMain, hdc_window ); } } HBITMAP DoLoadBitmap(HINSTANCE hinst, char *piece, int squareSize, char *suffix) { char name[128], buf[MSG_SIZ]; snprintf(name, sizeof(name)/sizeof(name[0]), "%s%d%s", piece, squareSize, suffix); if(appData.pieceDirectory[0]) { HBITMAP res; snprintf(buf, MSG_SIZ, "%s\\%s.bmp", appData.pieceDirectory, name); res = LoadImage( 0, buf, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); if(res) return res; } if (gameInfo.event && strcmp(gameInfo.event, "Easter Egg Hunt") == 0 && strcmp(name, "k80s") == 0) { safeStrCpy(name, "tim", sizeof(name)/sizeof(name[0]) ); } return LoadBitmap(hinst, name); } /* Insert a color into the program's logical palette structure. This code assumes the given color is the result of the RGB or PALETTERGB macro, and it knows how those macros work (which is documented). */ VOID InsertInPalette(COLORREF color) { LPPALETTEENTRY pe = &(pLogPal->palPalEntry[pLogPal->palNumEntries]); if (pLogPal->palNumEntries++ >= PALETTESIZE) { DisplayFatalError(_("Too many colors"), 0, 1); pLogPal->palNumEntries--; return; } pe->peFlags = (char) 0; pe->peRed = (char) (0xFF & color); pe->peGreen = (char) (0xFF & (color >> 8)); pe->peBlue = (char) (0xFF & (color >> 16)); return; } VOID InitDrawingColors() { int i; if (pLogPal == NULL) { /* Allocate enough memory for a logical palette with * PALETTESIZE entries and set the size and version fields * of the logical palette structure. */ pLogPal = (NPLOGPALETTE) LocalAlloc(LMEM_FIXED, (sizeof(LOGPALETTE) + (sizeof(PALETTEENTRY) * (PALETTESIZE)))); pLogPal->palVersion = 0x300; } pLogPal->palNumEntries = 0; InsertInPalette(lightSquareColor); InsertInPalette(darkSquareColor); InsertInPalette(whitePieceColor); InsertInPalette(blackPieceColor); InsertInPalette(highlightSquareColor); InsertInPalette(premoveHighlightColor); /* create a logical color palette according the information * in the LOGPALETTE structure. */ hPal = CreatePalette((LPLOGPALETTE) pLogPal); lightSquareBrush = CreateSolidBrush(lightSquareColor); blackSquareBrush = CreateSolidBrush(blackPieceColor); darkSquareBrush = CreateSolidBrush(darkSquareColor); whitePieceBrush = CreateSolidBrush(whitePieceColor); blackPieceBrush = CreateSolidBrush(blackPieceColor); iconBkgndBrush = CreateSolidBrush(GetSysColor(COLOR_BACKGROUND)); explodeBrush = CreateSolidBrush(highlightSquareColor); // [HGM] atomic for(i=0; i<8;i++) markerBrush[i] = CreateSolidBrush(markerColor[i]); // [HGM] markers /* [AS] Force rendering of the font-based pieces */ if( fontBitmapSquareSize > 0 ) { fontBitmapSquareSize = 0; } } int BoardWidth(int boardSize, int n) { /* [HGM] argument n added to allow different width and height */ int lineGap = sizeInfo[boardSize].lineGap; if( appData.overrideLineGap >= 0 && appData.overrideLineGap <= 5 ) { lineGap = appData.overrideLineGap; } return (n + 1) * lineGap + n * sizeInfo[boardSize].squareSize; } /* Respond to board resize by dragging edge */ VOID ResizeBoard(int newSizeX, int newSizeY, int flags) { BoardSize newSize = NUM_SIZES - 1; static int recurse = 0; if (IsIconic(hwndMain)) return; if (recurse > 0) return; recurse++; while (newSize > 0) { InitDrawingSizes(newSize+1000, 0); // [HGM] kludge to update sizeInfo without visible effects if(newSizeX >= sizeInfo[newSize].cliWidth && newSizeY >= sizeInfo[newSize].cliHeight) break; newSize--; } boardSize = newSize; InitDrawingSizes(boardSize, flags); recurse--; } extern Boolean twoBoards, partnerUp; // [HGM] dual VOID InitDrawingSizes(BoardSize boardSize, int flags) { int i, boardWidth, boardHeight; /* [HGM] height treated separately */ ChessSquare piece; static int oldBoardSize = -1, oldTinyLayout = 0; HDC hdc; SIZE clockSize, messageSize; HFONT oldFont; char buf[MSG_SIZ]; char *str; HMENU hmenu = GetMenu(hwndMain); RECT crect, wrect, oldRect; int offby; LOGBRUSH logbrush; VariantClass v = gameInfo.variant; int suppressVisibleEffects = 0; // [HGM] kludge to request updating sizeInfo only if((int)boardSize >= 1000 ) { boardSize -= 1000; suppressVisibleEffects = 1; } /* [HGM] call with -2 uses old size (for if nr of files, ranks changes) */ if(boardSize == (BoardSize)(-2) ) boardSize = oldBoardSize; if(boardSize == -1) return; // no size defined yet; abort (to allow early call of InitPosition) oldBoardSize = boardSize; if(boardSize != SizeMiddling && boardSize != SizePetite && boardSize != SizeBulky && !appData.useFont) { // correct board size to one where built-in pieces exist if((v == VariantCapablanca || v == VariantGothic || v == VariantGrand || v == VariantCapaRandom || v == VariantJanus || v == VariantSuper) && (boardSize < SizePetite || boardSize > SizeBulky) // Archbishop and Chancellor available in entire middle range || (v == VariantShogi && boardSize != SizeModerate) // Japanese-style Shogi || v == VariantKnightmate || v == VariantSChess || v == VariantXiangqi || v == VariantSpartan || v == VariantShatranj || v == VariantMakruk || v == VariantGreat || v == VariantFairy || v == VariantLion ) { if(boardSize < SizeMediocre) boardSize = SizePetite; else if(boardSize > SizeModerate) boardSize = SizeBulky; else boardSize = SizeMiddling; } } if(!appData.useFont && boardSize == SizePetite && (v == VariantKnightmate)) boardSize = SizeMiddling; // no Unicorn in Petite oldRect.left = wpMain.x; //[HGM] placement: remember previous window params oldRect.top = wpMain.y; oldRect.right = wpMain.x + wpMain.width; oldRect.bottom = wpMain.y + wpMain.height; tinyLayout = sizeInfo[boardSize].tinyLayout; smallLayout = sizeInfo[boardSize].smallLayout; squareSize = sizeInfo[boardSize].squareSize; lineGap = sizeInfo[boardSize].lineGap; minorSize = 0; /* [HGM] Kludge to see if demagnified pieces need to be shifted */ border = appData.useBorder && appData.border[0] ? squareSize/2 : 0; // [HGM] decide on tininess based on total board width rather than square size tinyLayout = squareSize * (BOARD_WIDTH); tinyLayout = tinyLayout < 35*8 ? 2 : tinyLayout < 43*8 ? 1 : 0; if( appData.overrideLineGap >= 0 && appData.overrideLineGap <= 5 ) { lineGap = appData.overrideLineGap; } if (tinyLayout != oldTinyLayout) { long style = GetWindowLongPtr(hwndMain, GWL_STYLE); if (tinyLayout == 2) { style &= ~WS_SYSMENU; InsertMenu(hmenu, IDM_Exit, MF_BYCOMMAND, IDM_Minimize, "&Minimize\tCtrl+F4"); } else { style |= WS_SYSMENU; RemoveMenu(hmenu, IDM_Minimize, MF_BYCOMMAND); } SetWindowLongPtr(hwndMain, GWL_STYLE, style); for (i=0; menuBarText[tinyLayout][i]; i++) { ModifyMenu(hmenu, i, MF_STRING|MF_BYPOSITION|MF_POPUP, (UINT)GetSubMenu(hmenu, i), T_(menuBarText[tinyLayout][i])); } DrawMenuBar(hwndMain); } boardWidth = BoardWidth(boardSize, BOARD_WIDTH) + 2*border; boardHeight = BoardWidth(boardSize, BOARD_HEIGHT) + 2*border; /* Get text area sizes */ hdc = GetDC(hwndMain); if (appData.clockMode) { snprintf(buf, MSG_SIZ, _("White: %s"), TimeString(23*60*60*1000L)); } else { snprintf(buf, MSG_SIZ, _("White")); } oldFont = SelectObject(hdc, font[boardSize][CLOCK_FONT]->hf); GetTextExtentPoint(hdc, buf, strlen(buf), &clockSize); SelectObject(hdc, font[boardSize][MESSAGE_FONT]->hf); str = _("We only care about the height here"); GetTextExtentPoint(hdc, str, strlen(str), &messageSize); SelectObject(hdc, oldFont); ReleaseDC(hwndMain, hdc); /* Compute where everything goes */ if((first.programLogo || second.programLogo) && tinyLayout != 2) { /* [HGM] logo: if either logo is on, reserve space for it */ logoHeight = 2*clockSize.cy; leftLogoRect.left = OUTER_MARGIN; leftLogoRect.right = leftLogoRect.left + 4*clockSize.cy; leftLogoRect.top = OUTER_MARGIN; leftLogoRect.bottom = OUTER_MARGIN + logoHeight; rightLogoRect.right = OUTER_MARGIN + boardWidth; rightLogoRect.left = rightLogoRect.right - 4*clockSize.cy; rightLogoRect.top = OUTER_MARGIN; rightLogoRect.bottom = OUTER_MARGIN + logoHeight; whiteRect.left = leftLogoRect.right; whiteRect.right = OUTER_MARGIN + boardWidth/2 - INNER_MARGIN/2; whiteRect.top = OUTER_MARGIN; whiteRect.bottom = whiteRect.top + logoHeight; blackRect.right = rightLogoRect.left; blackRect.left = whiteRect.right + INNER_MARGIN; blackRect.top = whiteRect.top; blackRect.bottom = whiteRect.bottom; } else { whiteRect.left = OUTER_MARGIN; whiteRect.right = whiteRect.left + boardWidth/2 - INNER_MARGIN/2; whiteRect.top = OUTER_MARGIN; whiteRect.bottom = whiteRect.top + clockSize.cy; blackRect.left = whiteRect.right + INNER_MARGIN; blackRect.right = blackRect.left + boardWidth/2 - 1; blackRect.top = whiteRect.top; blackRect.bottom = whiteRect.bottom; logoHeight = 0; // [HGM] logo: suppress logo after change to tiny layout! } messageRect.left = OUTER_MARGIN + MESSAGE_LINE_LEFTMARGIN; if (appData.showButtonBar) { messageRect.right = OUTER_MARGIN + boardWidth // [HGM] logo: expressed independent of clock placement - N_BUTTONS*BUTTON_WIDTH - MESSAGE_LINE_LEFTMARGIN; } else { messageRect.right = OUTER_MARGIN + boardWidth; } messageRect.top = whiteRect.bottom + INNER_MARGIN; messageRect.bottom = messageRect.top + messageSize.cy; boardRect.left = OUTER_MARGIN; boardRect.right = boardRect.left + boardWidth; boardRect.top = messageRect.bottom + INNER_MARGIN; boardRect.bottom = boardRect.top + boardHeight; sizeInfo[boardSize].cliWidth = boardRect.right + OUTER_MARGIN; sizeInfo[boardSize].cliHeight = boardRect.bottom + OUTER_MARGIN; oldTinyLayout = tinyLayout; winW = 2 * GetSystemMetrics(SM_CXFRAME) + boardRect.right + OUTER_MARGIN; winH = 2 * GetSystemMetrics(SM_CYFRAME) + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CYCAPTION) + boardRect.bottom + OUTER_MARGIN; winW *= 1 + twoBoards; if(suppressVisibleEffects) return; // [HGM] when called for filling sizeInfo only wpMain.width = winW; // [HGM] placement: set through temporary which can used by initial sizing choice wpMain.height = winH; // without disturbing window attachments GetWindowRect(hwndMain, &wrect); SetWindowPos(hwndMain, NULL, 0, 0, wpMain.width, wpMain.height, SWP_NOCOPYBITS|SWP_NOZORDER|SWP_NOMOVE); // [HGM] placement: let attached windows follow size change. ReattachAfterSize( &oldRect, wpMain.width, wpMain.height, moveHistoryDialog, &wpMoveHistory ); ReattachAfterSize( &oldRect, wpMain.width, wpMain.height, evalGraphDialog, &wpEvalGraph ); ReattachAfterSize( &oldRect, wpMain.width, wpMain.height, engineOutputDialog, &wpEngineOutput ); ReattachAfterSize( &oldRect, wpMain.width, wpMain.height, gameListDialog, &wpGameList ); ReattachAfterSize( &oldRect, wpMain.width, wpMain.height, hwndConsole, &wpConsole ); /* compensate if menu bar wrapped */ GetClientRect(hwndMain, &crect); offby = boardRect.bottom + OUTER_MARGIN - crect.bottom; wpMain.height += offby; switch (flags) { case WMSZ_TOPLEFT: SetWindowPos(hwndMain, NULL, wrect.right - wpMain.width, wrect.bottom - wpMain.height, wpMain.width, wpMain.height, SWP_NOCOPYBITS|SWP_NOZORDER); break; case WMSZ_TOPRIGHT: case WMSZ_TOP: SetWindowPos(hwndMain, NULL, wrect.left, wrect.bottom - wpMain.height, wpMain.width, wpMain.height, SWP_NOCOPYBITS|SWP_NOZORDER); break; case WMSZ_BOTTOMLEFT: case WMSZ_LEFT: SetWindowPos(hwndMain, NULL, wrect.right - wpMain.width, wrect.top, wpMain.width, wpMain.height, SWP_NOCOPYBITS|SWP_NOZORDER); break; case WMSZ_BOTTOMRIGHT: case WMSZ_BOTTOM: case WMSZ_RIGHT: default: SetWindowPos(hwndMain, NULL, 0, 0, wpMain.width, wpMain.height, SWP_NOCOPYBITS|SWP_NOZORDER|SWP_NOMOVE); break; } hwndPause = NULL; for (i = 0; i < N_BUTTONS; i++) { if (buttonDesc[i].hwnd != NULL) { DestroyWindow(buttonDesc[i].hwnd); buttonDesc[i].hwnd = NULL; } if (appData.showButtonBar) { buttonDesc[i].hwnd = CreateWindow("BUTTON", buttonDesc[i].label, WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, boardRect.right - BUTTON_WIDTH*(N_BUTTONS-i), messageRect.top, BUTTON_WIDTH, messageSize.cy, hwndMain, (HMENU) buttonDesc[i].id, (HINSTANCE) GetWindowLongPtr(hwndMain, GWLP_HINSTANCE), NULL); if (tinyLayout == 2) { SendMessage(buttonDesc[i].hwnd, WM_SETFONT, (WPARAM)font[boardSize][MESSAGE_FONT]->hf, MAKELPARAM(FALSE, 0)); } if (buttonDesc[i].id == IDM_Pause) hwndPause = buttonDesc[i].hwnd; buttonDesc[i].wndproc = (WNDPROC) SetWindowLongPtr(buttonDesc[i].hwnd, GWLP_WNDPROC, (LONG_PTR) ButtonProc); } } if (gridPen != NULL) DeleteObject(gridPen); if (highlightPen != NULL) DeleteObject(highlightPen); if (premovePen != NULL) DeleteObject(premovePen); if (lineGap != 0) { logbrush.lbStyle = BS_SOLID; logbrush.lbColor = RGB(0, 0, 0); /* grid pen color = black */ gridPen = ExtCreatePen(PS_GEOMETRIC|PS_SOLID|PS_ENDCAP_FLAT|PS_JOIN_MITER, lineGap, &logbrush, 0, NULL); logbrush.lbColor = highlightSquareColor; highlightPen = ExtCreatePen(PS_GEOMETRIC|PS_SOLID|PS_ENDCAP_FLAT|PS_JOIN_MITER, lineGap, &logbrush, 0, NULL); logbrush.lbColor = premoveHighlightColor; premovePen = ExtCreatePen(PS_GEOMETRIC|PS_SOLID|PS_ENDCAP_FLAT|PS_JOIN_MITER, lineGap, &logbrush, 0, NULL); /* [HGM] Loop had to be split in part for vert. and hor. lines */ for (i = 0; i < BOARD_HEIGHT + 1; i++) { gridEndpoints[i*2].x = boardRect.left + lineGap / 2 + border; gridEndpoints[i*2].y = gridEndpoints[i*2 + 1].y = boardRect.top + lineGap / 2 + (i * (squareSize + lineGap)) + border; gridEndpoints[i*2 + 1].x = boardRect.left + lineGap / 2 + BOARD_WIDTH * (squareSize + lineGap) + border; gridVertexCounts[i*2] = gridVertexCounts[i*2 + 1] = 2; } for (i = 0; i < BOARD_WIDTH + 1; i++) { gridEndpoints[i*2 + BOARD_HEIGHT*2 + 2].y = boardRect.top + lineGap / 2 + border; gridEndpoints[i*2 + BOARD_HEIGHT*2 + 2].x = gridEndpoints[i*2 + 1 + BOARD_HEIGHT*2 + 2].x = boardRect.left + lineGap / 2 + (i * (squareSize + lineGap)) + border; gridEndpoints[i*2 + 1 + BOARD_HEIGHT*2 + 2].y = boardRect.top + BOARD_HEIGHT * (squareSize + lineGap) + border; gridVertexCounts[i*2] = gridVertexCounts[i*2 + 1] = 2; } } /* [HGM] Licensing requirement */ #ifdef GOTHIC if(gameInfo.variant == VariantGothic) GothicPopUp( GOTHIC, VariantGothic); else #endif #ifdef FALCON if(gameInfo.variant == VariantFalcon) GothicPopUp( FALCON, VariantFalcon); else #endif GothicPopUp( "", VariantNormal); /* if (boardSize == oldBoardSize) return; [HGM] variant might have changed */ /* Load piece bitmaps for this board size */ for (i=0; i<=2; i++) { for (piece = WhitePawn; (int) piece < (int) BlackPawn; piece = (ChessSquare) ((int) piece + 1)) { if (pieceBitmap[i][piece] != NULL) DeleteObject(pieceBitmap[i][piece]); pieceBitmap[i][piece] = NULL; } } fontBitmapSquareSize = 0; /* [HGM] render: make sure pieces will be recreated, as we might need others now */ // Orthodox Chess pieces pieceBitmap[0][WhitePawn] = DoLoadBitmap(hInst, "p", squareSize, "s"); pieceBitmap[0][WhiteKnight] = DoLoadBitmap(hInst, "n", squareSize, "s"); pieceBitmap[0][WhiteBishop] = DoLoadBitmap(hInst, "b", squareSize, "s"); pieceBitmap[0][WhiteRook] = DoLoadBitmap(hInst, "r", squareSize, "s"); pieceBitmap[0][WhiteKing] = DoLoadBitmap(hInst, "k", squareSize, "s"); pieceBitmap[1][WhitePawn] = DoLoadBitmap(hInst, "p", squareSize, "o"); pieceBitmap[1][WhiteKnight] = DoLoadBitmap(hInst, "n", squareSize, "o"); pieceBitmap[1][WhiteBishop] = DoLoadBitmap(hInst, "b", squareSize, "o"); pieceBitmap[1][WhiteRook] = DoLoadBitmap(hInst, "r", squareSize, "o"); pieceBitmap[1][WhiteKing] = DoLoadBitmap(hInst, "k", squareSize, "o"); pieceBitmap[2][WhitePawn] = DoLoadBitmap(hInst, "p", squareSize, "w"); pieceBitmap[2][WhiteKnight] = DoLoadBitmap(hInst, "n", squareSize, "w"); pieceBitmap[2][WhiteBishop] = DoLoadBitmap(hInst, "b", squareSize, "w"); pieceBitmap[2][WhiteRook] = DoLoadBitmap(hInst, "r", squareSize, "w"); pieceBitmap[2][WhiteKing] = DoLoadBitmap(hInst, "k", squareSize, "w"); if( gameInfo.variant == VariantShogi && squareSize <= 72 && squareSize >= 33) { // in Shogi, Hijack the unused Queen for Lance pieceBitmap[0][WhiteQueen] = DoLoadBitmap(hInst, "l", squareSize, "s"); pieceBitmap[1][WhiteQueen] = DoLoadBitmap(hInst, "l", squareSize, "o"); pieceBitmap[2][WhiteQueen] = DoLoadBitmap(hInst, "l", squareSize, "w"); } else { pieceBitmap[0][WhiteQueen] = DoLoadBitmap(hInst, "q", squareSize, "s"); pieceBitmap[1][WhiteQueen] = DoLoadBitmap(hInst, "q", squareSize, "o"); pieceBitmap[2][WhiteQueen] = DoLoadBitmap(hInst, "q", squareSize, "w"); } if(squareSize <= 72 && squareSize >= 33) { /* A & C are available in most sizes now */ if(squareSize != 49 && squareSize != 72 && squareSize != 33) { // Vortex-like pieceBitmap[0][WhiteAngel] = DoLoadBitmap(hInst, "a", squareSize, "s"); pieceBitmap[1][WhiteAngel] = DoLoadBitmap(hInst, "a", squareSize, "o"); pieceBitmap[2][WhiteAngel] = DoLoadBitmap(hInst, "a", squareSize, "w"); pieceBitmap[0][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "s"); pieceBitmap[1][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "o"); pieceBitmap[2][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "w"); pieceBitmap[0][WhiteCobra] = DoLoadBitmap(hInst, "cv", squareSize, "s"); pieceBitmap[1][WhiteCobra] = DoLoadBitmap(hInst, "cv", squareSize, "o"); pieceBitmap[2][WhiteCobra] = DoLoadBitmap(hInst, "cv", squareSize, "w"); pieceBitmap[0][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "s"); pieceBitmap[1][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "o"); pieceBitmap[2][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "w"); } else { // Smirf-like if(gameInfo.variant == VariantSChess) { pieceBitmap[0][WhiteAngel] = DoLoadBitmap(hInst, "v", squareSize, "s"); pieceBitmap[1][WhiteAngel] = DoLoadBitmap(hInst, "v", squareSize, "o"); pieceBitmap[2][WhiteAngel] = DoLoadBitmap(hInst, "v", squareSize, "w"); } else { pieceBitmap[0][WhiteAngel] = DoLoadBitmap(hInst, "aa", squareSize, "s"); pieceBitmap[1][WhiteAngel] = DoLoadBitmap(hInst, "aa", squareSize, "o"); pieceBitmap[2][WhiteAngel] = DoLoadBitmap(hInst, "aa", squareSize, "w"); } } if(gameInfo.variant == VariantGothic) { // Vortex-like pieceBitmap[0][WhiteMarshall] = DoLoadBitmap(hInst, "cv", squareSize, "s"); pieceBitmap[1][WhiteMarshall] = DoLoadBitmap(hInst, "cv", squareSize, "o"); pieceBitmap[2][WhiteMarshall] = DoLoadBitmap(hInst, "cv", squareSize, "w"); } else if(gameInfo.variant == VariantSChess && (squareSize == 49 || squareSize == 72)) { pieceBitmap[0][WhiteMarshall] = DoLoadBitmap(hInst, "e", squareSize, "s"); pieceBitmap[1][WhiteMarshall] = DoLoadBitmap(hInst, "e", squareSize, "o"); pieceBitmap[2][WhiteMarshall] = DoLoadBitmap(hInst, "e", squareSize, "w"); } else { // WinBoard standard pieceBitmap[0][WhiteMarshall] = DoLoadBitmap(hInst, "c", squareSize, "s"); pieceBitmap[1][WhiteMarshall] = DoLoadBitmap(hInst, "c", squareSize, "o"); pieceBitmap[2][WhiteMarshall] = DoLoadBitmap(hInst, "c", squareSize, "w"); } } if(squareSize==72 || squareSize==49 || squareSize==33) { /* experiment with some home-made bitmaps */ pieceBitmap[0][WhiteFerz] = DoLoadBitmap(hInst, "f", squareSize, "s"); pieceBitmap[1][WhiteFerz] = DoLoadBitmap(hInst, "f", squareSize, "o"); pieceBitmap[2][WhiteFerz] = DoLoadBitmap(hInst, "f", squareSize, "w"); pieceBitmap[0][WhiteWazir] = DoLoadBitmap(hInst, "w", squareSize, "s"); pieceBitmap[1][WhiteWazir] = DoLoadBitmap(hInst, "w", squareSize, "o"); pieceBitmap[2][WhiteWazir] = DoLoadBitmap(hInst, "w", squareSize, "w"); pieceBitmap[0][WhiteAlfil] = DoLoadBitmap(hInst, "e", squareSize, "s"); pieceBitmap[1][WhiteAlfil] = DoLoadBitmap(hInst, "e", squareSize, "o"); pieceBitmap[2][WhiteAlfil] = DoLoadBitmap(hInst, "e", squareSize, "w"); pieceBitmap[0][WhiteMan] = DoLoadBitmap(hInst, "m", squareSize, "s"); pieceBitmap[1][WhiteMan] = DoLoadBitmap(hInst, "m", squareSize, "o"); pieceBitmap[2][WhiteMan] = DoLoadBitmap(hInst, "m", squareSize, "w"); pieceBitmap[0][WhiteCardinal] = DoLoadBitmap(hInst, "a", squareSize, "s"); pieceBitmap[1][WhiteCardinal] = DoLoadBitmap(hInst, "a", squareSize, "o"); pieceBitmap[2][WhiteCardinal] = DoLoadBitmap(hInst, "a", squareSize, "w"); pieceBitmap[0][WhiteDragon] = DoLoadBitmap(hInst, "dk", squareSize, "s"); pieceBitmap[1][WhiteDragon] = DoLoadBitmap(hInst, "dk", squareSize, "o"); pieceBitmap[2][WhiteDragon] = DoLoadBitmap(hInst, "dk", squareSize, "w"); pieceBitmap[0][WhiteFalcon] = DoLoadBitmap(hInst, "v", squareSize, "s"); pieceBitmap[1][WhiteFalcon] = DoLoadBitmap(hInst, "v", squareSize, "o"); pieceBitmap[2][WhiteFalcon] = DoLoadBitmap(hInst, "v", squareSize, "w"); pieceBitmap[0][WhiteCobra] = DoLoadBitmap(hInst, "s", squareSize, "s"); pieceBitmap[1][WhiteCobra] = DoLoadBitmap(hInst, "s", squareSize, "o"); pieceBitmap[2][WhiteCobra] = DoLoadBitmap(hInst, "s", squareSize, "w"); pieceBitmap[0][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "s"); pieceBitmap[1][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "o"); pieceBitmap[2][WhiteLance] = DoLoadBitmap(hInst, "l", squareSize, "w"); pieceBitmap[0][WhiteAmazon] = DoLoadBitmap(hInst, "l", squareSize, "s"); pieceBitmap[1][WhiteAmazon] = DoLoadBitmap(hInst, "l", squareSize, "o"); pieceBitmap[2][WhiteAmazon] = DoLoadBitmap(hInst, "l", squareSize, "w"); pieceBitmap[0][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "s"); pieceBitmap[1][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "o"); pieceBitmap[2][WhiteUnicorn] = DoLoadBitmap(hInst, "u", squareSize, "w"); pieceBitmap[0][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "s"); pieceBitmap[1][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "o"); pieceBitmap[2][WhiteLion] = DoLoadBitmap(hInst, "ln", squareSize, "w"); pieceBitmap[0][WhiteCub] = DoLoadBitmap(hInst, "ln", squareSize, "s"); pieceBitmap[1][WhiteCub] = DoLoadBitmap(hInst, "ln", squareSize, "o"); pieceBitmap[2][WhiteCub] = DoLoadBitmap(hInst, "ln", squareSize, "w"); pieceBitmap[0][WhiteWolf] = DoLoadBitmap(hInst, "wolf", squareSize, "s"); pieceBitmap[1][WhiteWolf] = DoLoadBitmap(hInst, "wolf", squareSize, "o"); pieceBitmap[2][WhiteWolf] = DoLoadBitmap(hInst, "wolf", squareSize, "w"); pieceBitmap[0][WhiteCamel] = DoLoadBitmap(hInst, "camel", squareSize, "s"); pieceBitmap[1][WhiteCamel] = DoLoadBitmap(hInst, "camel", squareSize, "o"); pieceBitmap[2][WhiteCamel] = DoLoadBitmap(hInst, "camel", squareSize, "w"); pieceBitmap[0][WhiteZebra] = DoLoadBitmap(hInst, "zebra", squareSize, "s"); pieceBitmap[1][WhiteZebra] = DoLoadBitmap(hInst, "zebra", squareSize, "o"); pieceBitmap[2][WhiteZebra] = DoLoadBitmap(hInst, "n", squareSize, "w"); if(gameInfo.variant == VariantShogi && BOARD_HEIGHT != 7) { /* promoted Gold representations (but not in Tori!)*/ pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "s"); pieceBitmap[1][WhiteCannon] = DoLoadBitmap(hInst, "wp", squareSize, "o"); pieceBitmap[2][WhiteCannon] = DoLoadBitmap(hInst, "w", squareSize, "w"); pieceBitmap[0][WhiteNightrider] = DoLoadBitmap(hInst, "wn", squareSize, "s"); pieceBitmap[1][WhiteNightrider] = DoLoadBitmap(hInst, "wn", squareSize, "o"); pieceBitmap[2][WhiteNightrider] = DoLoadBitmap(hInst, "w", squareSize, "w"); pieceBitmap[0][WhiteSilver] = DoLoadBitmap(hInst, "ws", squareSize, "s"); pieceBitmap[1][WhiteSilver] = DoLoadBitmap(hInst, "ws", squareSize, "o"); pieceBitmap[2][WhiteSilver] = DoLoadBitmap(hInst, "w", squareSize, "w"); pieceBitmap[0][WhiteGrasshopper] = DoLoadBitmap(hInst, "wl", squareSize, "s"); pieceBitmap[1][WhiteGrasshopper] = DoLoadBitmap(hInst, "wl", squareSize, "o"); pieceBitmap[2][WhiteGrasshopper] = DoLoadBitmap(hInst, "w", squareSize, "w"); } else { pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "o", squareSize, "s"); pieceBitmap[1][WhiteCannon] = DoLoadBitmap(hInst, "o", squareSize, "o"); pieceBitmap[2][WhiteCannon] = DoLoadBitmap(hInst, "o", squareSize, "w"); pieceBitmap[0][WhiteNightrider] = DoLoadBitmap(hInst, "h", squareSize, "s"); pieceBitmap[1][WhiteNightrider] = DoLoadBitmap(hInst, "h", squareSize, "o"); pieceBitmap[2][WhiteNightrider] = DoLoadBitmap(hInst, "h", squareSize, "w"); pieceBitmap[0][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "s"); pieceBitmap[1][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "o"); pieceBitmap[2][WhiteSilver] = DoLoadBitmap(hInst, "cv", squareSize, "w"); pieceBitmap[0][WhiteGrasshopper] = DoLoadBitmap(hInst, "g", squareSize, "s"); pieceBitmap[1][WhiteGrasshopper] = DoLoadBitmap(hInst, "g", squareSize, "o"); pieceBitmap[2][WhiteGrasshopper] = DoLoadBitmap(hInst, "g", squareSize, "w"); } } else { /* other size, no special bitmaps available. Use smaller symbols */ if((int)boardSize < 2) minorSize = sizeInfo[0].squareSize; else minorSize = sizeInfo[(int)boardSize - 2].squareSize; pieceBitmap[0][WhiteNightrider] = DoLoadBitmap(hInst, "n", minorSize, "s"); pieceBitmap[1][WhiteNightrider] = DoLoadBitmap(hInst, "n", minorSize, "o"); pieceBitmap[2][WhiteNightrider] = DoLoadBitmap(hInst, "n", minorSize, "w"); pieceBitmap[0][WhiteCardinal] = DoLoadBitmap(hInst, "b", minorSize, "s"); pieceBitmap[1][WhiteCardinal] = DoLoadBitmap(hInst, "b", minorSize, "o"); pieceBitmap[2][WhiteCardinal] = DoLoadBitmap(hInst, "b", minorSize, "w"); pieceBitmap[0][WhiteDragon] = DoLoadBitmap(hInst, "r", minorSize, "s"); pieceBitmap[1][WhiteDragon] = DoLoadBitmap(hInst, "r", minorSize, "o"); pieceBitmap[2][WhiteDragon] = DoLoadBitmap(hInst, "r", minorSize, "w"); pieceBitmap[0][WhiteGrasshopper] = DoLoadBitmap(hInst, "q", minorSize, "s"); pieceBitmap[1][WhiteGrasshopper] = DoLoadBitmap(hInst, "q", minorSize, "o"); pieceBitmap[2][WhiteGrasshopper] = DoLoadBitmap(hInst, "q", minorSize, "w"); } if(gameInfo.variant == VariantShogi && squareSize == 58) /* special Shogi support in this size */ { for (i=0; i<=2; i++) { /* replace all bitmaps */ for (piece = WhitePawn; (int) piece < (int) BlackPawn; piece = (ChessSquare) ((int) piece + 1)) { if (pieceBitmap[i][piece] != NULL) DeleteObject(pieceBitmap[i][piece]); } } pieceBitmap[0][WhitePawn] = DoLoadBitmap(hInst, "sp", squareSize, "o"); pieceBitmap[0][WhiteKnight] = DoLoadBitmap(hInst, "sn", squareSize, "o"); pieceBitmap[0][WhiteBishop] = DoLoadBitmap(hInst, "sb", squareSize, "o"); pieceBitmap[0][WhiteRook] = DoLoadBitmap(hInst, "sr", squareSize, "o"); pieceBitmap[0][WhiteQueen] = DoLoadBitmap(hInst, "sl", squareSize, "o"); pieceBitmap[0][WhiteKing] = DoLoadBitmap(hInst, "sk", squareSize, "o"); pieceBitmap[0][WhiteFerz] = DoLoadBitmap(hInst, "sf", squareSize, "o"); pieceBitmap[0][WhiteWazir] = DoLoadBitmap(hInst, "sw", squareSize, "o"); pieceBitmap[0][WhiteCannon] = DoLoadBitmap(hInst, "su", squareSize, "o"); pieceBitmap[0][WhiteNightrider] = DoLoadBitmap(hInst, "sh", squareSize, "o"); pieceBitmap[0][WhiteCardinal] = DoLoadBitmap(hInst, "sa", squareSize, "o"); pieceBitmap[0][WhiteDragon] = DoLoadBitmap(hInst, "sc", squareSize, "o"); pieceBitmap[0][WhiteGrasshopper] = DoLoadBitmap(hInst, "sg", squareSize, "o"); pieceBitmap[0][WhiteSilver] = DoLoadBitmap(hInst, "ss", squareSize, "o"); pieceBitmap[1][WhitePawn] = DoLoadBitmap(hInst, "sp", squareSize, "o"); pieceBitmap[1][WhiteKnight] = DoLoadBitmap(hInst, "sn", squareSize, "o"); pieceBitmap[1][WhiteBishop] = DoLoadBitmap(hInst, "sb", squareSize, "o"); pieceBitmap[1][WhiteRook] = DoLoadBitmap(hInst, "sr", squareSize, "o"); pieceBitmap[1][WhiteQueen] = DoLoadBitmap(hInst, "sl", squareSize, "o"); pieceBitmap[1][WhiteKing] = DoLoadBitmap(hInst, "sk", squareSize, "o"); pieceBitmap[1][WhiteFerz] = DoLoadBitmap(hInst, "sf", squareSize, "o"); pieceBitmap[1][WhiteWazir] = DoLoadBitmap(hInst, "sw", squareSize, "o"); pieceBitmap[1][WhiteCannon] = DoLoadBitmap(hInst, "su", squareSize, "o"); pieceBitmap[1][WhiteNightrider] = DoLoadBitmap(hInst, "sh", squareSize, "o"); pieceBitmap[1][WhiteCardinal] = DoLoadBitmap(hInst, "sa", squareSize, "o"); pieceBitmap[1][WhiteDragon] = DoLoadBitmap(hInst, "sc", squareSize, "o"); pieceBitmap[1][WhiteGrasshopper] = DoLoadBitmap(hInst, "sg", squareSize, "o"); pieceBitmap[1][WhiteSilver] = DoLoadBitmap(hInst, "ss", squareSize, "o"); pieceBitmap[2][WhitePawn] = DoLoadBitmap(hInst, "sp", squareSize, "w"); pieceBitmap[2][WhiteKnight] = DoLoadBitmap(hInst, "sn", squareSize, "w"); pieceBitmap[2][WhiteBishop] = DoLoadBitmap(hInst, "sr", squareSize, "w"); pieceBitmap[2][WhiteRook] = DoLoadBitmap(hInst, "sr", squareSize, "w"); pieceBitmap[2][WhiteQueen] = DoLoadBitmap(hInst, "sl", squareSize, "w"); pieceBitmap[2][WhiteKing] = DoLoadBitmap(hInst, "sk", squareSize, "w"); pieceBitmap[2][WhiteFerz] = DoLoadBitmap(hInst, "sw", squareSize, "w"); pieceBitmap[2][WhiteWazir] = DoLoadBitmap(hInst, "sw", squareSize, "w"); pieceBitmap[2][WhiteCannon] = DoLoadBitmap(hInst, "sp", squareSize, "w"); pieceBitmap[2][WhiteNightrider] = DoLoadBitmap(hInst, "sn", squareSize, "w"); pieceBitmap[2][WhiteCardinal] = DoLoadBitmap(hInst, "sr", squareSize, "w"); pieceBitmap[2][WhiteDragon] = DoLoadBitmap(hInst, "sr", squareSize, "w"); pieceBitmap[2][WhiteGrasshopper] = DoLoadBitmap(hInst, "sl", squareSize, "w"); pieceBitmap[2][WhiteSilver] = DoLoadBitmap(hInst, "sw", squareSize, "w"); minorSize = 0; } if(appData.pieceDirectory[0]) for(i=WhitePawn; i= (int) BlackPawn) p = (ChessSquare) ((int) p - (int) BlackPawn + (int) WhitePawn); return pieceBitmap[kind][(int) p]; } /***************************************************************/ #define MIN(a,b) (((a) < (b)) ? (a) : (b)) #define MAX(a,b) (((a) > (b)) ? (a) : (b)) /* #define MIN3(a,b,c) (((a) < (b) && (a) < (c)) ? (a) : (((b) < (a) && (b) < (c)) ? (b) : (c))) #define MAX3(a,b,c) (((a) > (b) && (a) > (c)) ? (a) : (((b) > (a) && (b) > (c)) ? (b) : (c))) */ VOID SquareToPos(int row, int column, int * x, int * y) { if (flipView) { *x = boardRect.left + lineGap + ((BOARD_WIDTH-1)-column) * (squareSize + lineGap) + border; *y = boardRect.top + lineGap + row * (squareSize + lineGap) + border; } else { *x = boardRect.left + lineGap + column * (squareSize + lineGap) + border; *y = boardRect.top + lineGap + ((BOARD_HEIGHT-1)-row) * (squareSize + lineGap) + border; } } VOID DrawCoordsOnDC(HDC hdc) { static char files[] = "0123456789012345678901221098765432109876543210"; static char ranks[] = "wvutsrqponmlkjihgfedcbaabcdefghijklmnopqrstuvw"; char str[2] = { NULLCHAR, NULLCHAR }; int oldMode, oldAlign, x, y, start, i; HFONT oldFont; HBRUSH oldBrush; if (!appData.showCoords) return; start = flipView ? 1-(ONE!='1') : 45+(ONE!='1')-BOARD_HEIGHT; oldBrush = SelectObject(hdc, GetStockObject(BLACK_BRUSH)); oldMode = SetBkMode(hdc, (appData.monoMode ? OPAQUE : TRANSPARENT)); oldAlign = GetTextAlign(hdc); oldFont = SelectObject(hdc, font[boardSize][COORD_FONT]->hf); y = boardRect.top + lineGap; x = boardRect.left + lineGap + gameInfo.holdingsWidth*(squareSize + lineGap); if(border) { SetTextAlign(hdc, TA_RIGHT|TA_TOP); x += border - lineGap - 4; y += squareSize - 6; } else SetTextAlign(hdc, TA_LEFT|TA_TOP); for (i = 0; i < BOARD_HEIGHT; i++) { str[0] = files[start + i]; ExtTextOut(hdc, x + 2 - (border ? gameInfo.holdingsWidth * (squareSize + lineGap) : 0), y + 1, 0, NULL, str, 1, NULL); y += squareSize + lineGap; } start = flipView ? 23-(BOARD_RGHT-BOARD_LEFT) : 23; if(border) { SetTextAlign(hdc, TA_LEFT|TA_TOP); x += -border + 4; y += border - squareSize + 6; } else SetTextAlign(hdc, TA_RIGHT|TA_BOTTOM); for (i = 0; i < BOARD_RGHT - BOARD_LEFT; i++) { str[0] = ranks[start + i]; ExtTextOut(hdc, x + squareSize - 2, y - 1, 0, NULL, str, 1, NULL); x += squareSize + lineGap; } SelectObject(hdc, oldBrush); SetBkMode(hdc, oldMode); SetTextAlign(hdc, oldAlign); SelectObject(hdc, oldFont); } VOID DrawGridOnDC(HDC hdc) { HPEN oldPen; if (lineGap != 0) { oldPen = SelectObject(hdc, gridPen); PolyPolyline(hdc, gridEndpoints, gridVertexCounts, BOARD_WIDTH+BOARD_HEIGHT + 2); SelectObject(hdc, oldPen); } } #define HIGHLIGHT_PEN 0 #define PREMOVE_PEN 1 VOID DrawHighlightOnDC(HDC hdc, BOOLEAN on, int x, int y, int pen) { int x1, y1; HPEN oldPen, hPen; if (lineGap == 0) return; if (flipView) { x1 = boardRect.left + lineGap/2 + ((BOARD_WIDTH-1)-x) * (squareSize + lineGap) + border; y1 = boardRect.top + lineGap/2 + y * (squareSize + lineGap) + border; } else { x1 = boardRect.left + lineGap/2 + x * (squareSize + lineGap) + border; y1 = boardRect.top + lineGap/2 + ((BOARD_HEIGHT-1)-y) * (squareSize + lineGap) + border; } hPen = pen ? premovePen : highlightPen; oldPen = SelectObject(hdc, on ? hPen : gridPen); MoveToEx(hdc, x1, y1, NULL); LineTo(hdc, x1 + squareSize + lineGap, y1); LineTo(hdc, x1 + squareSize + lineGap, y1 + squareSize + lineGap); LineTo(hdc, x1, y1 + squareSize + lineGap); LineTo(hdc, x1, y1); SelectObject(hdc, oldPen); } VOID DrawHighlightsOnDC(HDC hdc, HighlightInfo *h, int pen) { int i; for (i=0; i<2; i++) { if (h->sq[i].x >= 0 && h->sq[i].y >= 0) DrawHighlightOnDC(hdc, TRUE, h->sq[i].x, h->sq[i].y, pen); } } /* Note: sqcolor is used only in monoMode */ /* Note that this code is largely duplicated in woptions.c, function DrawSampleSquare, so that needs to be updated too */ VOID DrawPieceOnDC(HDC hdc, ChessSquare piece, int color, int sqcolor, int x, int y, HDC tmphdc) { HBITMAP oldBitmap; HBRUSH oldBrush; int tmpSize; if (appData.blindfold) return; /* [AS] Use font-based pieces if needed */ if( fontBitmapSquareSize >= 0 && (squareSize > 32 || gameInfo.variant >= VariantShogi)) { /* Create piece bitmaps, or do nothing if piece set is up to date */ CreatePiecesFromFont(); if( fontBitmapSquareSize == squareSize ) { int index = TranslatePieceToFontPiece(piece); SelectObject( tmphdc, hPieceMask[ index ] ); if(appData.upsideDown ? color==flipView : (flipView && gameInfo.variant == VariantShogi)) StretchBlt(hdc, x+squareSize, y+squareSize, -squareSize, -squareSize, tmphdc, 0, 0, squareSize, squareSize, SRCAND); else BitBlt( hdc, x, y, squareSize, squareSize, tmphdc, 0, 0, SRCAND ); SelectObject( tmphdc, hPieceFace[ index ] ); if(appData.upsideDown ? color==flipView : (flipView && gameInfo.variant == VariantShogi)) StretchBlt(hdc, x+squareSize, y+squareSize, -squareSize, -squareSize, tmphdc, 0, 0, squareSize, squareSize, SRCPAINT); else BitBlt( hdc, x, y, squareSize, squareSize, tmphdc, 0, 0, SRCPAINT ); return; } } if (appData.monoMode) { SelectObject(tmphdc, PieceBitmap(piece, color == sqcolor ? OUTLINE_PIECE : SOLID_PIECE)); BitBlt(hdc, x, y, squareSize, squareSize, tmphdc, 0, 0, sqcolor ? SRCCOPY : NOTSRCCOPY); } else { HBRUSH xBrush = whitePieceBrush; tmpSize = squareSize; if(appData.pieceDirectory[0]) xBrush = GetStockObject(WHITE_BRUSH); if(minorSize && ((piece >= (int)WhiteNightrider && piece <= WhiteGrasshopper) || (piece >= (int)BlackNightrider && piece <= BlackGrasshopper)) ) { /* [HGM] no bitmap available for promoted pieces in Crazyhouse */ /* Bitmaps of smaller size are substituted, but we have to align them */ x += (squareSize - minorSize)>>1; y += squareSize - minorSize - 2; tmpSize = minorSize; } if (color || appData.allWhite ) { oldBitmap = SelectObject(tmphdc, PieceBitmap(piece, WHITE_PIECE)); if( color ) oldBrush = SelectObject(hdc, xBrush); else oldBrush = SelectObject(hdc, blackPieceBrush); if(appData.upsideDown && color==flipView) StretchBlt(hdc, x+tmpSize, y+tmpSize, -tmpSize, -tmpSize, tmphdc, 0, 0, tmpSize, tmpSize, 0x00B8074A); else BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, 0x00B8074A); /* Use black for outline of white pieces */ SelectObject(tmphdc, PieceBitmap(piece, OUTLINE_PIECE)); if(appData.upsideDown && color==flipView) StretchBlt(hdc, x+tmpSize, y+tmpSize, -tmpSize, -tmpSize, tmphdc, 0, 0, tmpSize, tmpSize, SRCAND); else BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, SRCAND); } else if(appData.pieceDirectory[0]) { oldBitmap = SelectObject(tmphdc, PieceBitmap(piece, WHITE_PIECE)); oldBrush = SelectObject(hdc, xBrush); if(appData.upsideDown && color==flipView) StretchBlt(hdc, x+tmpSize, y+tmpSize, -tmpSize, -tmpSize, tmphdc, 0, 0, tmpSize, tmpSize, 0x00B8074A); else BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, 0x00B8074A); SelectObject(tmphdc, PieceBitmap(piece, SOLID_PIECE)); if(appData.upsideDown && color==flipView) StretchBlt(hdc, x+tmpSize, y+tmpSize, -tmpSize, -tmpSize, tmphdc, 0, 0, tmpSize, tmpSize, SRCAND); else BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, SRCAND); } else { /* Use square color for details of black pieces */ oldBitmap = SelectObject(tmphdc, PieceBitmap(piece, SOLID_PIECE)); oldBrush = SelectObject(hdc, blackPieceBrush); if(appData.upsideDown && !flipView) StretchBlt(hdc, x+tmpSize, y+tmpSize, -tmpSize, -tmpSize, tmphdc, 0, 0, tmpSize, tmpSize, 0x00B8074A); else BitBlt(hdc, x, y, tmpSize, tmpSize, tmphdc, 0, 0, 0x00B8074A); } SelectObject(hdc, oldBrush); SelectObject(tmphdc, oldBitmap); } } /* [AS] Compute a drawing mode for a square, based on specified settings (see DrawTile) */ int GetBackTextureMode( int algo ) { int result = BACK_TEXTURE_MODE_DISABLED; switch( algo ) { case BACK_TEXTURE_MODE_PLAIN: result = 1; /* Always use identity map */ break; case BACK_TEXTURE_MODE_FULL_RANDOM: result = 1 + (myrandom() % 3); /* Pick a transformation at random */ break; } return result; } /* [AS] Compute and save texture drawing info, otherwise we may not be able to handle redraws cleanly (as random numbers would always be different). */ VOID RebuildTextureSquareInfo() { BITMAP bi; int lite_w = 0; int lite_h = 0; int dark_w = 0; int dark_h = 0; int row; int col; ZeroMemory( &backTextureSquareInfo, sizeof(backTextureSquareInfo) ); if( liteBackTexture != NULL ) { if( GetObject( liteBackTexture, sizeof(bi), &bi ) > 0 ) { lite_w = bi.bmWidth; lite_h = bi.bmHeight; } } if( darkBackTexture != NULL ) { if( GetObject( darkBackTexture, sizeof(bi), &bi ) > 0 ) { dark_w = bi.bmWidth; dark_h = bi.bmHeight; } } for( row=0; row= squareSize && lite_h >= squareSize ) { if( lite_w >= squareSize*BOARD_WIDTH ) backTextureSquareInfo[row][col].x = (2*col+1)*lite_w/(2*BOARD_WIDTH) - squareSize/2; /* [HGM] cut out of center of virtual square */ else backTextureSquareInfo[row][col].x = col * (lite_w - squareSize) / (BOARD_WIDTH-1); /* [HGM] divide by size-1 in stead of size! */ if( lite_h >= squareSize*BOARD_HEIGHT ) backTextureSquareInfo[row][col].y = (2*(BOARD_HEIGHT-row)-1)*lite_h/(2*BOARD_HEIGHT) - squareSize/2; else backTextureSquareInfo[row][col].y = (BOARD_HEIGHT-1-row) * (lite_h - squareSize) / (BOARD_HEIGHT-1); backTextureSquareInfo[row][col].mode = GetBackTextureMode(liteBackTextureMode); } } else { /* Dark square */ if( dark_w >= squareSize && dark_h >= squareSize ) { if( dark_w >= squareSize*BOARD_WIDTH ) backTextureSquareInfo[row][col].x = (2*col+1) * dark_w / (2*BOARD_WIDTH) - squareSize/2; else backTextureSquareInfo[row][col].x = col * (dark_w - squareSize) / (BOARD_WIDTH-1); if( dark_h >= squareSize*BOARD_HEIGHT ) backTextureSquareInfo[row][col].y = (2*(BOARD_HEIGHT-row)-1) * dark_h / (2*BOARD_HEIGHT) - squareSize/2; else backTextureSquareInfo[row][col].y = (BOARD_HEIGHT-1-row) * (dark_h - squareSize) / (BOARD_HEIGHT-1); backTextureSquareInfo[row][col].mode = GetBackTextureMode(darkBackTextureMode); } } } } } /* [AS] Arrow highlighting support */ static double A_WIDTH = 5; /* Width of arrow body */ #define A_HEIGHT_FACTOR 6 /* Length of arrow "point", relative to body width */ #define A_WIDTH_FACTOR 3 /* Width of arrow "point", relative to body width */ static double Sqr( double x ) { return x*x; } static int Round( double x ) { return (int) (x + 0.5); } /* Draw an arrow between two points using current settings */ VOID DrawArrowBetweenPoints( HDC hdc, int s_x, int s_y, int d_x, int d_y ) { POINT arrow[7]; double dx, dy, j, k, x, y; if( d_x == s_x ) { int h = (d_y > s_y) ? +A_WIDTH*A_HEIGHT_FACTOR : -A_WIDTH*A_HEIGHT_FACTOR; arrow[0].x = s_x + A_WIDTH + 0.5; arrow[0].y = s_y; arrow[1].x = s_x + A_WIDTH + 0.5; arrow[1].y = d_y - h; arrow[2].x = arrow[1].x + A_WIDTH*(A_WIDTH_FACTOR-1) + 0.5; arrow[2].y = d_y - h; arrow[3].x = d_x; arrow[3].y = d_y; arrow[5].x = arrow[1].x - 2*A_WIDTH + 0.5; arrow[5].y = d_y - h; arrow[4].x = arrow[5].x - A_WIDTH*(A_WIDTH_FACTOR-1) + 0.5; arrow[4].y = d_y - h; arrow[6].x = arrow[1].x - 2*A_WIDTH + 0.5; arrow[6].y = s_y; } else if( d_y == s_y ) { int w = (d_x > s_x) ? +A_WIDTH*A_HEIGHT_FACTOR : -A_WIDTH*A_HEIGHT_FACTOR; arrow[0].x = s_x; arrow[0].y = s_y + A_WIDTH + 0.5; arrow[1].x = d_x - w; arrow[1].y = s_y + A_WIDTH + 0.5; arrow[2].x = d_x - w; arrow[2].y = arrow[1].y + A_WIDTH*(A_WIDTH_FACTOR-1) + 0.5; arrow[3].x = d_x; arrow[3].y = d_y; arrow[5].x = d_x - w; arrow[5].y = arrow[1].y - 2*A_WIDTH + 0.5; arrow[4].x = d_x - w; arrow[4].y = arrow[5].y - A_WIDTH*(A_WIDTH_FACTOR-1) + 0.5; arrow[6].x = s_x; arrow[6].y = arrow[1].y - 2*A_WIDTH + 0.5; } else { /* [AS] Needed a lot of paper for this! :-) */ dy = (double) (d_y - s_y) / (double) (d_x - s_x); dx = (double) (s_x - d_x) / (double) (s_y - d_y); j = sqrt( Sqr(A_WIDTH) / (1.0 + Sqr(dx)) ); k = sqrt( Sqr(A_WIDTH*A_HEIGHT_FACTOR) / (1.0 + Sqr(dy)) ); x = s_x; y = s_y; arrow[0].x = Round(x - j); arrow[0].y = Round(y + j*dx); arrow[1].x = Round(arrow[0].x + 2*j); // [HGM] prevent width to be affected by rounding twice arrow[1].y = Round(arrow[0].y - 2*j*dx); if( d_x > s_x ) { x = (double) d_x - k; y = (double) d_y - k*dy; } else { x = (double) d_x + k; y = (double) d_y + k*dy; } x = Round(x); y = Round(y); // [HGM] make sure width of shaft is rounded the same way on both ends arrow[6].x = Round(x - j); arrow[6].y = Round(y + j*dx); arrow[2].x = Round(arrow[6].x + 2*j); arrow[2].y = Round(arrow[6].y - 2*j*dx); arrow[3].x = Round(arrow[2].x + j*(A_WIDTH_FACTOR-1)); arrow[3].y = Round(arrow[2].y - j*(A_WIDTH_FACTOR-1)*dx); arrow[4].x = d_x; arrow[4].y = d_y; arrow[5].x = Round(arrow[6].x - j*(A_WIDTH_FACTOR-1)); arrow[5].y = Round(arrow[6].y + j*(A_WIDTH_FACTOR-1)*dx); } Polygon( hdc, arrow, 7 ); } /* [AS] Draw an arrow between two squares */ VOID DrawArrowBetweenSquares( HDC hdc, int s_col, int s_row, int d_col, int d_row ) { int s_x, s_y, d_x, d_y; HPEN hpen; HPEN holdpen; HBRUSH hbrush; HBRUSH holdbrush; LOGBRUSH stLB; if( s_col == d_col && s_row == d_row ) { return; } /* Get source and destination points */ SquareToPos( s_row, s_col, &s_x, &s_y); SquareToPos( d_row, d_col, &d_x, &d_y); if( d_y > s_y ) { d_y += squareSize / 2 - squareSize / 4; // [HGM] round towards same centers on all sides! } else if( d_y < s_y ) { d_y += squareSize / 2 + squareSize / 4; } else { d_y += squareSize / 2; } if( d_x > s_x ) { d_x += squareSize / 2 - squareSize / 4; } else if( d_x < s_x ) { d_x += squareSize / 2 + squareSize / 4; } else { d_x += squareSize / 2; } s_x += squareSize / 2; s_y += squareSize / 2; /* Adjust width */ A_WIDTH = squareSize / 14.; //[HGM] make float /* Draw */ stLB.lbStyle = BS_SOLID; stLB.lbColor = appData.highlightArrowColor; stLB.lbHatch = 0; hpen = CreatePen( PS_SOLID, 2, RGB(0x00,0x00,0x00) ); holdpen = SelectObject( hdc, hpen ); hbrush = CreateBrushIndirect( &stLB ); holdbrush = SelectObject( hdc, hbrush ); DrawArrowBetweenPoints( hdc, s_x, s_y, d_x, d_y ); SelectObject( hdc, holdpen ); SelectObject( hdc, holdbrush ); DeleteObject( hpen ); DeleteObject( hbrush ); } BOOL HasHighlightInfo() { BOOL result = FALSE; if( highlightInfo.sq[0].x >= 0 && highlightInfo.sq[0].y >= 0 && highlightInfo.sq[1].x >= 0 && highlightInfo.sq[1].y >= 0 ) { result = TRUE; } return result; } BOOL IsDrawArrowEnabled() { BOOL result = FALSE; if( appData.highlightMoveWithArrow && squareSize >= 32 ) { result = TRUE; } return result; } VOID DrawArrowHighlight( HDC hdc ) { if( IsDrawArrowEnabled() && HasHighlightInfo() ) { DrawArrowBetweenSquares( hdc, highlightInfo.sq[0].x, highlightInfo.sq[0].y, highlightInfo.sq[1].x, highlightInfo.sq[1].y ); } } HRGN GetArrowHighlightClipRegion( HDC hdc ) { HRGN result = NULL; if( HasHighlightInfo() ) { int x1, y1, x2, y2; int sx, sy, dx, dy; SquareToPos(highlightInfo.sq[0].y, highlightInfo.sq[0].x, &x1, &y1 ); SquareToPos(highlightInfo.sq[1].y, highlightInfo.sq[1].x, &x2, &y2 ); sx = MIN( x1, x2 ); sy = MIN( y1, y2 ); dx = MAX( x1, x2 ) + squareSize; dy = MAX( y1, y2 ) + squareSize; result = CreateRectRgn( sx, sy, dx, dy ); } return result; } /* Warning: this function modifies the behavior of several other functions. Basically, Winboard is optimized to avoid drawing the whole board if not strictly needed. Unfortunately, the decision whether or not to perform a full or partial repaint is scattered all over the place, which is not good for features such as "arrow highlighting" that require a full repaint of the board. So, I've tried to patch the code where I thought it made sense (e.g. after or during user interaction, when speed is not so important) but especially to avoid errors in the displayed graphics. In such patched places, I always try refer to this function so there is a single place to maintain knowledge. To restore the original behavior, just return FALSE unconditionally. */ BOOL IsFullRepaintPreferrable() { BOOL result = FALSE; if( (appData.highlightLastMove || appData.highlightDragging) && IsDrawArrowEnabled() ) { /* Arrow may appear on the board */ result = TRUE; } return result; } /* This function is called by DrawPosition to know whether a full repaint must be forced or not. Only DrawPosition may directly call this function, which makes use of some state information. Other function should call DrawPosition specifying the repaint flag, and can use IsFullRepaintPreferrable if needed. */ BOOL DrawPositionNeedsFullRepaint() { BOOL result = FALSE; /* Probably a slightly better policy would be to trigger a full repaint when animInfo.piece changes state (i.e. empty -> non-empty and viceversa), but animation is fast enough that it's difficult to notice. */ if( animInfo.piece == EmptySquare ) { if( (appData.highlightLastMove || appData.highlightDragging) && IsDrawArrowEnabled() /*&& HasHighlightInfo()*/ ) { result = TRUE; } } return result; } static HBITMAP borderBitmap; VOID DrawBackgroundOnDC(HDC hdc) { BITMAP bi; HDC tmphdc; HBITMAP hbm; static char oldBorder[MSG_SIZ]; int w = 600, h = 600, mode; if(strcmp(appData.border, oldBorder)) { // load new one when old one no longer valid strncpy(oldBorder, appData.border, MSG_SIZ-1); borderBitmap = LoadImage( 0, appData.border, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); } if(borderBitmap == NULL) { // loading failed, use white FillRect( hdc, &boardRect, whitePieceBrush ); return; } tmphdc = CreateCompatibleDC(hdc); hbm = SelectObject(tmphdc, borderBitmap); if( GetObject( borderBitmap, sizeof(bi), &bi ) > 0 ) { w = bi.bmWidth; h = bi.bmHeight; } mode = SetStretchBltMode(hdc, COLORONCOLOR); StretchBlt(hdc, boardRect.left, boardRect.top, boardRect.right - boardRect.left, boardRect.bottom - boardRect.top, tmphdc, 0, 0, w, h, SRCCOPY); SetStretchBltMode(hdc, mode); SelectObject(tmphdc, hbm); DeleteDC(tmphdc); } VOID DrawBoardOnDC(HDC hdc, Board board, HDC tmphdc) { int row, column, x, y, square_color, piece_color; ChessSquare piece; HBRUSH oldBrush; HDC texture_hdc = NULL; /* [AS] Initialize background textures if needed */ if( liteBackTexture != NULL || darkBackTexture != NULL ) { static int backTextureBoardSize; /* [HGM] boardsize: also new texture if board format changed */ if( backTextureSquareSize != squareSize || backTextureBoardSize != BOARD_WIDTH+BOARD_FILES*BOARD_HEIGHT) { backTextureBoardSize = BOARD_WIDTH+BOARD_FILES*BOARD_HEIGHT; backTextureSquareSize = squareSize; RebuildTextureSquareInfo(); } texture_hdc = CreateCompatibleDC( hdc ); } for (row = 0; row < BOARD_HEIGHT; row++) { for (column = 0; column < BOARD_WIDTH; column++) { SquareToPos(row, column, &x, &y); piece = board[row][column]; square_color = ((column + row) % 2) == 1; if( gameInfo.variant == VariantXiangqi ) { square_color = !InPalace(row, column); if(BOARD_HEIGHT&1) { if(row==BOARD_HEIGHT/2) square_color ^= 1; } else if(row < BOARD_HEIGHT/2) square_color ^= 1; } piece_color = (int) piece < (int) BlackPawn; /* [HGM] holdings file: light square or black */ if(column == BOARD_LEFT-2) { if( row > BOARD_HEIGHT - gameInfo.holdingsSize - 1 ) square_color = 1; else { DisplayHoldingsCount(hdc, x, y, 0, 0); /* black out */ continue; } } else if(column == BOARD_RGHT + 1 ) { if( row < gameInfo.holdingsSize ) square_color = 1; else { DisplayHoldingsCount(hdc, x, y, 0, 0); continue; } } if(column == BOARD_LEFT-1 ) /* left align */ DisplayHoldingsCount(hdc, x, y, flipView, (int) board[row][column]); else if( column == BOARD_RGHT) /* right align */ DisplayHoldingsCount(hdc, x, y, !flipView, (int) board[row][column]); else if( piece == DarkSquare) DisplayHoldingsCount(hdc, x, y, 0, 0); else if (appData.monoMode) { if (piece == EmptySquare) { BitBlt(hdc, x, y, squareSize, squareSize, 0, 0, 0, square_color ? WHITENESS : BLACKNESS); } else { DrawPieceOnDC(hdc, piece, piece_color, square_color, x, y, tmphdc); } } else if( appData.useBitmaps && backTextureSquareInfo[row][column].mode > 0 ) { /* [AS] Draw the square using a texture bitmap */ HBITMAP hbm = SelectObject( texture_hdc, square_color ? liteBackTexture : darkBackTexture ); int r = row, c = column; // [HGM] do not flip board in flipView if(flipView) { r = BOARD_HEIGHT-1 - r; c = BOARD_WIDTH-1 - c; } DrawTile( x, y, squareSize, squareSize, hdc, texture_hdc, backTextureSquareInfo[r][c].mode, backTextureSquareInfo[r][c].x, backTextureSquareInfo[r][c].y ); SelectObject( texture_hdc, hbm ); if (piece != EmptySquare) { DrawPieceOnDC(hdc, piece, piece_color, -1, x, y, tmphdc); } } else { HBRUSH brush = square_color ? lightSquareBrush : darkSquareBrush; oldBrush = SelectObject(hdc, brush ); BitBlt(hdc, x, y, squareSize, squareSize, 0, 0, 0, PATCOPY); SelectObject(hdc, oldBrush); if (piece != EmptySquare) DrawPieceOnDC(hdc, piece, piece_color, -1, x, y, tmphdc); } } } if( texture_hdc != NULL ) { DeleteDC( texture_hdc ); } } int saveDiagFlag = 0; FILE *diagFile; // [HGM] diag void fputDW(FILE *f, int x) { fputc(x & 255, f); fputc(x>>8 & 255, f); fputc(x>>16 & 255, f); fputc(x>>24 & 255, f); } #define MAX_CLIPS 200 /* more than enough */ VOID DrawLogoOnDC(HDC hdc, RECT logoRect, HBITMAP logo) { // HBITMAP bufferBitmap; BITMAP bi; // RECT Rect; HDC tmphdc; HBITMAP hbm; int w = 100, h = 50; if(logo == NULL) { if(!logoHeight) return; FillRect( hdc, &logoRect, whitePieceBrush ); } // GetClientRect(hwndMain, &Rect); // bufferBitmap = CreateCompatibleBitmap(hdc, Rect.right-Rect.left+1, // Rect.bottom-Rect.top+1); tmphdc = CreateCompatibleDC(hdc); hbm = SelectObject(tmphdc, logo); if( GetObject( logo, sizeof(bi), &bi ) > 0 ) { w = bi.bmWidth; h = bi.bmHeight; } StretchBlt(hdc, logoRect.left, logoRect.top, logoRect.right - logoRect.left, logoRect.bottom - logoRect.top, tmphdc, 0, 0, w, h, SRCCOPY); SelectObject(tmphdc, hbm); DeleteDC(tmphdc); } VOID DisplayLogos() { if(logoHeight) { HDC hdc = GetDC(hwndMain); HBITMAP whiteLogo = (HBITMAP) first.programLogo, blackLogo = (HBITMAP) second.programLogo; if(appData.autoLogo) { switch(gameMode) { // pick logos based on game mode case IcsObserving: whiteLogo = second.programLogo; // ICS logo blackLogo = second.programLogo; default: break; case IcsPlayingWhite: if(!appData.zippyPlay) whiteLogo = userLogo; blackLogo = second.programLogo; // ICS logo break; case IcsPlayingBlack: whiteLogo = second.programLogo; // ICS logo blackLogo = appData.zippyPlay ? first.programLogo : userLogo; break; case TwoMachinesPlay: if(first.twoMachinesColor[0] == 'b') { whiteLogo = second.programLogo; blackLogo = first.programLogo; } break; case MachinePlaysWhite: blackLogo = userLogo; break; case MachinePlaysBlack: whiteLogo = userLogo; blackLogo = first.programLogo; } } DrawLogoOnDC(hdc, leftLogoRect, flipClock ? blackLogo : whiteLogo); DrawLogoOnDC(hdc, rightLogoRect, flipClock ? whiteLogo : blackLogo); ReleaseDC(hwndMain, hdc); } } void UpdateLogos(int display) { // called after loading new engine(s), in tourney or from menu LoadLogo(&first, 0, FALSE); LoadLogo(&second, 1, appData.icsActive); InitDrawingSizes(-2, 0); // adapt layout of board window to presence/absence of logos if(display) DisplayLogos(); } static HDC hdcSeek; // [HGM] seekgraph void DrawSeekAxis( int x, int y, int xTo, int yTo ) { POINT stPt; HPEN hp = SelectObject( hdcSeek, gridPen ); MoveToEx( hdcSeek, boardRect.left+x, boardRect.top+y, &stPt ); LineTo( hdcSeek, boardRect.left+xTo, boardRect.top+yTo ); SelectObject( hdcSeek, hp ); } // front-end wrapper for drawing functions to do rectangles void DrawSeekBackground( int left, int top, int right, int bottom ) { HPEN hp; RECT rc; if (hdcSeek == NULL) { hdcSeek = GetDC(hwndMain); if (!appData.monoMode) { SelectPalette(hdcSeek, hPal, FALSE); RealizePalette(hdcSeek); } } hp = SelectObject( hdcSeek, gridPen ); rc.top = boardRect.top+top; rc.left = boardRect.left+left; rc.bottom = boardRect.top+bottom; rc.right = boardRect.left+right; FillRect( hdcSeek, &rc, lightSquareBrush ); SelectObject( hdcSeek, hp ); } // front-end wrapper for putting text in graph void DrawSeekText(char *buf, int x, int y) { SIZE stSize; SetBkMode( hdcSeek, TRANSPARENT ); GetTextExtentPoint32( hdcSeek, buf, strlen(buf), &stSize ); TextOut( hdcSeek, boardRect.left+x-3, boardRect.top+y-stSize.cy/2, buf, strlen(buf) ); } void DrawSeekDot(int x, int y, int color) { int square = color & 0x80; HBRUSH oldBrush = SelectObject(hdcSeek, color == 0 ? markerBrush[1] : color == 1 ? darkSquareBrush : explodeBrush); color &= 0x7F; if(square) Rectangle(hdcSeek, boardRect.left+x - squareSize/9, boardRect.top+y - squareSize/9, boardRect.left+x + squareSize/9, boardRect.top+y + squareSize/9); else Ellipse(hdcSeek, boardRect.left+x - squareSize/8, boardRect.top+y - squareSize/8, boardRect.left+x + squareSize/8, boardRect.top+y + squareSize/8); SelectObject(hdcSeek, oldBrush); } void DrawSeekOpen() { } void DrawSeekClose() { } VOID HDCDrawPosition(HDC hdc, BOOLEAN repaint, Board board) { static Board lastReq[2], lastDrawn[2]; static HighlightInfo lastDrawnHighlight, lastDrawnPremove; static int lastDrawnFlipView = 0; static int lastReqValid[2] = {0, 0}, lastDrawnValid[2] = {0, 0}; int releaseDC, x, y, x2, y2, row, column, num_clips = 0, i; HDC tmphdc; HDC hdcmem; HBITMAP bufferBitmap; HBITMAP oldBitmap; RECT Rect; HRGN clips[MAX_CLIPS]; ChessSquare dragged_piece = EmptySquare; int nr = twoBoards*partnerUp; /* I'm undecided on this - this function figures out whether a full * repaint is necessary on its own, so there's no real reason to have the * caller tell it that. I think this can safely be set to FALSE - but * if we trust the callers not to request full repaints unnessesarily, then * we could skip some clipping work. In other words, only request a full * redraw when the majority of pieces have changed positions (ie. flip, * gamestart and similar) --Hawk */ Boolean fullrepaint = repaint; if(DrawSeekGraph()) return; // [HG} seekgraph: suppress printing board if seek graph up if( DrawPositionNeedsFullRepaint() ) { fullrepaint = TRUE; } if (board == NULL) { if (!lastReqValid[nr]) { return; } board = lastReq[nr]; } else { CopyBoard(lastReq[nr], board); lastReqValid[nr] = 1; } if (doingSizing) { return; } if (IsIconic(hwndMain)) { return; } if (hdc == NULL) { hdc = GetDC(hwndMain); if (!appData.monoMode) { SelectPalette(hdc, hPal, FALSE); RealizePalette(hdc); } releaseDC = TRUE; } else { releaseDC = FALSE; } /* Create some work-DCs */ hdcmem = CreateCompatibleDC(hdc); tmphdc = CreateCompatibleDC(hdc); /* If dragging is in progress, we temporarely remove the piece */ /* [HGM] or temporarily decrease count if stacked */ /* !! Moved to before board compare !! */ if (dragInfo.from.x >= 0 && dragInfo.pos.x >= 0) { dragged_piece = board[dragInfo.from.y][dragInfo.from.x]; if(dragInfo.from.x == BOARD_LEFT-2 ) { if(--board[dragInfo.from.y][dragInfo.from.x+1] == 0 ) board[dragInfo.from.y][dragInfo.from.x] = EmptySquare; } else if(dragInfo.from.x == BOARD_RGHT+1) { if(--board[dragInfo.from.y][dragInfo.from.x-1] == 0 ) board[dragInfo.from.y][dragInfo.from.x] = EmptySquare; } else board[dragInfo.from.y][dragInfo.from.x] = gatingPiece; } /* Figure out which squares need updating by comparing the * newest board with the last drawn board and checking if * flipping has changed. */ if (!fullrepaint && lastDrawnValid[nr] && (nr == 1 || lastDrawnFlipView == flipView)) { for (row = 0; row < BOARD_HEIGHT; row++) { /* [HGM] true size, not 8 */ for (column = 0; column < BOARD_WIDTH; column++) { if (lastDrawn[nr][row][column] != board[row][column]) { SquareToPos(row, column, &x, &y); clips[num_clips++] = CreateRectRgn(x, y, x + squareSize, y + squareSize); } } } if(nr == 0) { // [HGM] dual: no highlights on second board for (i=0; i<2; i++) { if (lastDrawnHighlight.sq[i].x != highlightInfo.sq[i].x || lastDrawnHighlight.sq[i].y != highlightInfo.sq[i].y) { if (lastDrawnHighlight.sq[i].x >= 0 && lastDrawnHighlight.sq[i].y >= 0) { SquareToPos(lastDrawnHighlight.sq[i].y, lastDrawnHighlight.sq[i].x, &x, &y); clips[num_clips++] = CreateRectRgn(x - lineGap, y - lineGap, x + squareSize + lineGap, y + squareSize + lineGap); } if (highlightInfo.sq[i].x >= 0 && highlightInfo.sq[i].y >= 0) { SquareToPos(highlightInfo.sq[i].y, highlightInfo.sq[i].x, &x, &y); clips[num_clips++] = CreateRectRgn(x - lineGap, y - lineGap, x + squareSize + lineGap, y + squareSize + lineGap); } } } for (i=0; i<2; i++) { if (lastDrawnPremove.sq[i].x != premoveHighlightInfo.sq[i].x || lastDrawnPremove.sq[i].y != premoveHighlightInfo.sq[i].y) { if (lastDrawnPremove.sq[i].x >= 0 && lastDrawnPremove.sq[i].y >= 0) { SquareToPos(lastDrawnPremove.sq[i].y, lastDrawnPremove.sq[i].x, &x, &y); clips[num_clips++] = CreateRectRgn(x - lineGap, y - lineGap, x + squareSize + lineGap, y + squareSize + lineGap); } if (premoveHighlightInfo.sq[i].x >= 0 && premoveHighlightInfo.sq[i].y >= 0) { SquareToPos(premoveHighlightInfo.sq[i].y, premoveHighlightInfo.sq[i].x, &x, &y); clips[num_clips++] = CreateRectRgn(x - lineGap, y - lineGap, x + squareSize + lineGap, y + squareSize + lineGap); } } } } else { // nr == 1 partnerHighlightInfo.sq[0].y = board[EP_STATUS-4]; partnerHighlightInfo.sq[0].x = board[EP_STATUS-3]; partnerHighlightInfo.sq[1].y = board[EP_STATUS-2]; partnerHighlightInfo.sq[1].x = board[EP_STATUS-1]; for (i=0; i<2; i++) { if (partnerHighlightInfo.sq[i].x >= 0 && partnerHighlightInfo.sq[i].y >= 0) { SquareToPos(partnerHighlightInfo.sq[i].y, partnerHighlightInfo.sq[i].x, &x, &y); clips[num_clips++] = CreateRectRgn(x - lineGap, y - lineGap, x + squareSize + lineGap, y + squareSize + lineGap); } if (oldPartnerHighlight.sq[i].x >= 0 && oldPartnerHighlight.sq[i].y >= 0) { SquareToPos(oldPartnerHighlight.sq[i].y, oldPartnerHighlight.sq[i].x, &x, &y); clips[num_clips++] = CreateRectRgn(x - lineGap, y - lineGap, x + squareSize + lineGap, y + squareSize + lineGap); } } } } else { fullrepaint = TRUE; } /* Create a buffer bitmap - this is the actual bitmap * being written to. When all the work is done, we can * copy it to the real DC (the screen). This avoids * the problems with flickering. */ GetClientRect(hwndMain, &Rect); bufferBitmap = CreateCompatibleBitmap(hdc, Rect.right-Rect.left+1, Rect.bottom-Rect.top+1); oldBitmap = SelectObject(hdcmem, bufferBitmap); if (!appData.monoMode) { SelectPalette(hdcmem, hPal, FALSE); } /* Create clips for dragging */ if (!fullrepaint) { if (dragInfo.from.x >= 0) { SquareToPos(dragInfo.from.y, dragInfo.from.x, &x, &y); clips[num_clips++] = CreateRectRgn(x, y, x+squareSize, y+squareSize); } if (dragInfo.start.x >= 0) { SquareToPos(dragInfo.start.y, dragInfo.start.x, &x, &y); clips[num_clips++] = CreateRectRgn(x, y, x+squareSize, y+squareSize); } if (dragInfo.pos.x >= 0) { x = dragInfo.pos.x - squareSize / 2; y = dragInfo.pos.y - squareSize / 2; clips[num_clips++] = CreateRectRgn(x, y, x+squareSize, y+squareSize); } if (dragInfo.lastpos.x >= 0) { x = dragInfo.lastpos.x - squareSize / 2; y = dragInfo.lastpos.y - squareSize / 2; clips[num_clips++] = CreateRectRgn(x, y, x+squareSize, y+squareSize); } } /* Are we animating a move? * If so, * - remove the piece from the board (temporarely) * - calculate the clipping region */ if (!fullrepaint) { if (animInfo.piece != EmptySquare) { board[animInfo.from.y][animInfo.from.x] = EmptySquare; x = boardRect.left + animInfo.lastpos.x; y = boardRect.top + animInfo.lastpos.y; x2 = boardRect.left + animInfo.pos.x; y2 = boardRect.top + animInfo.pos.y; clips[num_clips++] = CreateRectRgn(MIN(x,x2), MIN(y,y2), MAX(x,x2)+squareSize, MAX(y,y2)+squareSize); /* Slight kludge. The real problem is that after AnimateMove is done, the position on the screen does not match lastDrawn. This currently causes trouble only on e.p. captures in atomic, where the piece moves to an empty square and then explodes. The old and new positions both had an empty square at the destination, but animation has drawn a piece there and we have to remember to erase it. [HGM] moved until after setting lastDrawn */ lastDrawn[0][animInfo.to.y][animInfo.to.x] = animInfo.piece; } } /* No clips? Make sure we have fullrepaint set to TRUE */ if (num_clips == 0) fullrepaint = TRUE; /* Set clipping on the memory DC */ if (!fullrepaint) { SelectClipRgn(hdcmem, clips[0]); for (x = 1; x < num_clips; x++) { if (ExtSelectClipRgn(hdcmem, clips[x], RGN_OR) == ERROR) abort(); // this should never ever happen! } } /* Do all the drawing to the memory DC */ if(explodeInfo.radius) { // [HGM] atomic HBRUSH oldBrush; int x, y, r=(explodeInfo.radius * squareSize)/100; ChessSquare piece = board[explodeInfo.fromY][explodeInfo.fromX]; board[explodeInfo.fromY][explodeInfo.fromX] = EmptySquare; // suppress display of capturer SquareToPos(explodeInfo.toY, explodeInfo.toX, &x, &y); x += squareSize/2; y += squareSize/2; if(!fullrepaint) { clips[num_clips] = CreateRectRgn(x-r, y-r, x+r, y+r); ExtSelectClipRgn(hdcmem, clips[num_clips++], RGN_OR); } DrawGridOnDC(hdcmem); DrawHighlightsOnDC(hdcmem, &highlightInfo, HIGHLIGHT_PEN); DrawHighlightsOnDC(hdcmem, &premoveHighlightInfo, PREMOVE_PEN); DrawBoardOnDC(hdcmem, board, tmphdc); board[explodeInfo.fromY][explodeInfo.fromX] = piece; oldBrush = SelectObject(hdcmem, explodeBrush); Ellipse(hdcmem, x-r, y-r, x+r, y+r); SelectObject(hdcmem, oldBrush); } else { if(border) DrawBackgroundOnDC(hdcmem); DrawGridOnDC(hdcmem); if(nr == 0) { // [HGM] dual: decide which highlights to draw DrawHighlightsOnDC(hdcmem, &highlightInfo, HIGHLIGHT_PEN); DrawHighlightsOnDC(hdcmem, &premoveHighlightInfo, PREMOVE_PEN); } else { DrawHighlightsOnDC(hdcmem, &partnerHighlightInfo, HIGHLIGHT_PEN); oldPartnerHighlight = partnerHighlightInfo; } DrawBoardOnDC(hdcmem, board, tmphdc); } if(nr == 0) // [HGM] dual: markers only on left board for (row = 0; row < BOARD_HEIGHT; row++) { for (column = 0; column < BOARD_WIDTH; column++) { if (marker[row][column]) { // marker changes only occur with full repaint! HBRUSH oldBrush = SelectObject(hdcmem, markerBrush[marker[row][column]-1]); SquareToPos(row, column, &x, &y); Ellipse(hdcmem, x + squareSize/4, y + squareSize/4, x + 3*squareSize/4, y + 3*squareSize/4); SelectObject(hdcmem, oldBrush); } } } if( appData.highlightMoveWithArrow ) { DrawArrowHighlight(hdcmem); } DrawCoordsOnDC(hdcmem); CopyBoard(lastDrawn[nr], board); /* [HGM] Moved to here from end of routine, */ /* to make sure lastDrawn contains what is actually drawn */ /* Put the dragged piece back into place and draw it (out of place!) */ if (dragged_piece != EmptySquare) { /* [HGM] or restack */ if(dragInfo.from.x == BOARD_LEFT-2 ) board[dragInfo.from.y][dragInfo.from.x+1]++; else if(dragInfo.from.x == BOARD_RGHT+1 ) board[dragInfo.from.y][dragInfo.from.x-1]++; board[dragInfo.from.y][dragInfo.from.x] = dragged_piece; x = dragInfo.pos.x - squareSize / 2; y = dragInfo.pos.y - squareSize / 2; DrawPieceOnDC(hdcmem, dragInfo.piece, ((int) dragInfo.piece < (int) BlackPawn), (dragInfo.from.y + dragInfo.from.x) % 2, x, y, tmphdc); } /* Put the animated piece back into place and draw it */ if (animInfo.piece != EmptySquare) { board[animInfo.from.y][animInfo.from.x] = animInfo.piece; x = boardRect.left + animInfo.pos.x; y = boardRect.top + animInfo.pos.y; DrawPieceOnDC(hdcmem, animInfo.piece, ((int) animInfo.piece < (int) BlackPawn), (animInfo.from.y + animInfo.from.x) % 2, x, y, tmphdc); } /* Release the bufferBitmap by selecting in the old bitmap * and delete the memory DC */ SelectObject(hdcmem, oldBitmap); DeleteDC(hdcmem); /* Set clipping on the target DC */ if (!fullrepaint) { if(nr == 1) for (x = 0; x < num_clips; x++) { // [HGM] dual: translate clips RECT rect; GetRgnBox(clips[x], &rect); DeleteObject(clips[x]); clips[x] = CreateRectRgn(rect.left + wpMain.width/2, rect.top, rect.right + wpMain.width/2, rect.bottom); } SelectClipRgn(hdc, clips[0]); for (x = 1; x < num_clips; x++) { if (ExtSelectClipRgn(hdc, clips[x], RGN_OR) == ERROR) abort(); // this should never ever happen! } } /* Copy the new bitmap onto the screen in one go. * This way we avoid any flickering */ oldBitmap = SelectObject(tmphdc, bufferBitmap); BitBlt(hdc, boardRect.left + twoBoards*partnerUp*wpMain.width/2, boardRect.top, // [HGM] dual boardRect.right - boardRect.left, boardRect.bottom - boardRect.top, tmphdc, boardRect.left, boardRect.top, SRCCOPY); if(saveDiagFlag) { BITMAP b; int i, j=0, m, w, wb, fac=0; char *pData; BITMAPINFOHEADER bih; int color[16], nrColors=0; HBITMAP src = bufferBitmap, obmp; HDC tmp = CreateCompatibleDC(hdc); bufferBitmap = CreateCompatibleBitmap(hdc, boardRect.right-boardRect.left, Rect.bottom-Rect.top-2*OUTER_MARGIN); obmp = SelectObject(tmp, bufferBitmap); BitBlt(tmp, 0, 0, boardRect.right - boardRect.left, Rect.bottom - Rect.top - 2*OUTER_MARGIN, tmphdc, boardRect.left, OUTER_MARGIN, SRCCOPY); GetObject(bufferBitmap, sizeof(b), &b); if(pData = malloc(b.bmWidthBytes*b.bmHeight + 10000)) { bih.biSize = sizeof(BITMAPINFOHEADER); bih.biWidth = b.bmWidth; bih.biHeight = b.bmHeight; bih.biPlanes = 1; bih.biBitCount = b.bmBitsPixel; bih.biCompression = 0; bih.biSizeImage = b.bmWidthBytes*b.bmHeight; bih.biXPelsPerMeter = 0; bih.biYPelsPerMeter = 0; bih.biClrUsed = 0; bih.biClrImportant = 0; // fprintf(diagFile, "t=%d\nw=%d\nh=%d\nB=%d\nP=%d\nX=%d\n", // b.bmType, b.bmWidth, b.bmHeight, b.bmWidthBytes, b.bmPlanes, b.bmBitsPixel); GetDIBits(tmphdc,bufferBitmap,0,b.bmHeight,pData,(BITMAPINFO*)&bih,DIB_RGB_COLORS); // fprintf(diagFile, "%8x\n", (int) pData); wb = b.bmWidthBytes; // count colors for(i=0; i>2; i++) { int k = ((int*) pData)[i]; for(j=0; j= 16) break; color[j] = k; if(j >= nrColors) nrColors = j+1; } if(j<16) { // 16 colors is enough. Compress to 4 bits per pixel INT p = 0; for(i=0; i>2); w+=2) { int k = ((int*) pData)[(wb*i>>2) + w]; for(j=0; j>2) + w + 1]; for(m=0; m>5)<<2; } // write BITMAPFILEHEADER fprintf(diagFile, "BM"); fputDW(diagFile, wb*(b.bmHeight - boardRect.top + OUTER_MARGIN)+0x36 + (fac?64:0)); fputDW(diagFile, 0); fputDW(diagFile, 0x36 + (fac?64:0)); // write BITMAPINFOHEADER fputDW(diagFile, 40); fputDW(diagFile, b.bmWidth); fputDW(diagFile, b.bmHeight - boardRect.top + OUTER_MARGIN); if(fac) fputDW(diagFile, 0x040001); // planes and bits/pixel else fputDW(diagFile, 0x200001); // planes and bits/pixel fputDW(diagFile, 0); fputDW(diagFile, 0); fputDW(diagFile, 0); fputDW(diagFile, 0); fputDW(diagFile, 0); fputDW(diagFile, 0); // write color table if(fac) for(i=0; i<16; i++) fputDW(diagFile, color[i]); // write bitmap data for(i=0; ihf); ExtTextOut(hdc, messageRect.left, messageRect.top, ETO_CLIPPED|ETO_OPAQUE, &messageRect, messageText, strlen(messageText), NULL); SelectObject(hdc, oldFont); DisplayBothClocks(); DisplayLogos(); } EndPaint(hwnd,&ps); } return; } /* * If the user selects on a border boundary, return -1; if off the board, * return -2. Otherwise map the event coordinate to the square. * The offset boardRect.left or boardRect.top must already have been * subtracted from x. */ int EventToSquare(x, limit) int x, limit; { if (x <= border) return -2; if (x < lineGap + border) return -1; x -= lineGap + border; if ((x % (squareSize + lineGap)) >= squareSize) return -1; x /= (squareSize + lineGap); if (x >= limit) return -2; return x; } typedef struct { char piece; int command; char* name; } DropEnable; DropEnable dropEnables[] = { { 'P', DP_Pawn, N_("Pawn") }, { 'N', DP_Knight, N_("Knight") }, { 'B', DP_Bishop, N_("Bishop") }, { 'R', DP_Rook, N_("Rook") }, { 'Q', DP_Queen, N_("Queen") }, }; VOID SetupDropMenu(HMENU hmenu) { int i, count, enable; char *p; extern char white_holding[], black_holding[]; char item[MSG_SIZ]; for (i=0; i 0 || !appData.testLegality /*!!temp:*/ || (gameInfo.variant == VariantCrazyhouse && !appData.icsActive); ModifyMenu(hmenu, dropEnables[i].command, MF_BYCOMMAND | (enable ? MF_ENABLED : MF_GRAYED) | MF_STRING, dropEnables[i].command, item); } } void DragPieceBegin(int x, int y, Boolean instantly) { dragInfo.lastpos.x = boardRect.left + x; dragInfo.lastpos.y = boardRect.top + y; if(instantly) dragInfo.pos = dragInfo.lastpos; dragInfo.from.x = fromX; dragInfo.from.y = fromY; dragInfo.piece = boards[currentMove][fromY][fromX]; dragInfo.start = dragInfo.from; SetCapture(hwndMain); } void DragPieceEnd(int x, int y) { ReleaseCapture(); dragInfo.start.x = dragInfo.start.y = -1; dragInfo.from = dragInfo.start; dragInfo.pos = dragInfo.lastpos = dragInfo.start; } void ChangeDragPiece(ChessSquare piece) { dragInfo.piece = piece; } /* Event handler for mouse messages */ VOID MouseEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { int x, y, menuNr; POINT pt; static int recursive = 0; HMENU hmenu; BOOLEAN forceFullRepaint = IsFullRepaintPreferrable(); /* [AS] */ if (recursive) { if (message == WM_MBUTTONUP) { /* Hideous kludge to fool TrackPopupMenu into paying attention to the middle button: we simulate pressing the left button too! */ PostMessage(hwnd, WM_LBUTTONDOWN, wParam, lParam); PostMessage(hwnd, WM_LBUTTONUP, wParam, lParam); } return; } recursive++; pt.x = LOWORD(lParam); pt.y = HIWORD(lParam); x = EventToSquare(pt.x - boardRect.left, BOARD_WIDTH); y = EventToSquare(pt.y - boardRect.top, BOARD_HEIGHT); if (!flipView && y >= 0) { y = BOARD_HEIGHT - 1 - y; } if (flipView && x >= 0) { x = BOARD_WIDTH - 1 - x; } shiftKey = GetKeyState(VK_SHIFT) < 0; // [HGM] remember last shift status controlKey = GetKeyState(VK_CONTROL) < 0; // [HGM] remember last shift status switch (message) { case WM_LBUTTONDOWN: if (PtInRect((LPRECT) &whiteRect, pt)) { ClockClick(flipClock); break; } else if (PtInRect((LPRECT) &blackRect, pt)) { ClockClick(!flipClock); break; } if(dragging) { // [HGM] lion: don't destroy dragging info if we are already dragging dragInfo.start.x = dragInfo.start.y = -1; dragInfo.from = dragInfo.start; } if(fromX == -1 && frozen) { // not sure where this is for fromX = fromY = -1; DrawPosition(forceFullRepaint || FALSE, NULL); /* [AS] */ break; } LeftClick(Press, pt.x - boardRect.left, pt.y - boardRect.top); DrawPosition(TRUE, NULL); break; case WM_LBUTTONUP: LeftClick(Release, pt.x - boardRect.left, pt.y - boardRect.top); DrawPosition(TRUE, NULL); break; case WM_MOUSEMOVE: if(SeekGraphClick(Press, pt.x - boardRect.left, pt.y - boardRect.top, 1)) break; if(PromoScroll(pt.x - boardRect.left, pt.y - boardRect.top)) break; MovePV(pt.x - boardRect.left, pt.y - boardRect.top, boardRect.bottom - boardRect.top); if ((appData.animateDragging || appData.highlightDragging) && (wParam & MK_LBUTTON || dragging == 2) && dragInfo.from.x >= 0) { BOOL full_repaint = FALSE; if (appData.animateDragging) { dragInfo.pos = pt; } if (appData.highlightDragging) { HoverEvent(highlightInfo.sq[1].x, highlightInfo.sq[1].y, x, y); if( IsDrawArrowEnabled() && (x < 0 || x >= BOARD_WIDTH || y < 0 || y >= BOARD_HEIGHT) ) { full_repaint = TRUE; } } DrawPosition( full_repaint, NULL); dragInfo.lastpos = dragInfo.pos; } break; case WM_MOUSEWHEEL: // [DM] { static int lastDir = 0; // [HGM] build in some hysteresis to avoid spurious events /* Mouse Wheel is being rolled forward * Play moves forward */ if((short)HIWORD(wParam) < 0 && currentMove < forwardMostMove) { if(lastDir == 1) ForwardEvent(); else lastDir = 1; } // [HGM] suppress first event in direction /* Mouse Wheel is being rolled backward * Play moves backward */ if((short)HIWORD(wParam) > 0 && currentMove > backwardMostMove) { if(lastDir == -1) BackwardEvent(); else lastDir = -1; } } break; case WM_MBUTTONUP: case WM_RBUTTONUP: ReleaseCapture(); RightClick(Release, pt.x - boardRect.left, pt.y - boardRect.top, &fromX, &fromY); break; case WM_MBUTTONDOWN: case WM_RBUTTONDOWN: ErrorPopDown(); ReleaseCapture(); fromX = fromY = -1; dragInfo.pos.x = dragInfo.pos.y = -1; dragInfo.start.x = dragInfo.start.y = -1; dragInfo.from = dragInfo.start; dragInfo.lastpos = dragInfo.pos; if (appData.highlightDragging) { ClearHighlights(); } if(y == -2) { /* [HGM] right mouse button in clock area edit-game mode ups clock */ if (PtInRect((LPRECT) &whiteRect, pt)) { if (GetKeyState(VK_SHIFT) < 0) AdjustClock(flipClock, 1); } else if (PtInRect((LPRECT) &blackRect, pt)) { if (GetKeyState(VK_SHIFT) < 0) AdjustClock(!flipClock, 1); } break; } DrawPosition(TRUE, NULL); menuNr = RightClick(Press, pt.x - boardRect.left, pt.y - boardRect.top, &fromX, &fromY); switch (menuNr) { case 0: if (message == WM_MBUTTONDOWN) { buttonCount = 3; /* even if system didn't think so */ if (wParam & MK_SHIFT) MenuPopup(hwnd, pt, LoadMenu(hInst, "BlackPieceMenu"), -1); else MenuPopup(hwnd, pt, LoadMenu(hInst, "WhitePieceMenu"), -1); } else { /* message == WM_RBUTTONDOWN */ /* Just have one menu, on the right button. Windows users don't think to try the middle one, and sometimes other software steals it, or it doesn't really exist. */ if(gameInfo.variant != VariantShogi) MenuPopup(hwnd, pt, LoadMenu(hInst, "PieceMenu"), -1); else MenuPopup(hwnd, pt, LoadMenu(hInst, "ShogiPieceMenu"), -1); } break; case 2: SetCapture(hwndMain); break; case 1: hmenu = LoadMenu(hInst, "DropPieceMenu"); SetupDropMenu(hmenu); MenuPopup(hwnd, pt, hmenu, -1); default: break; } break; } recursive--; } /* Preprocess messages for buttons in main window */ LRESULT CALLBACK ButtonProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { int id = GetWindowLongPtr(hwnd, GWLP_ID); int i, dir; for (i=0; i= 'A' && WhiteOnMove(currentMove) && PieceToChar(WhiteAngel) != '~') || (PieceToChar(BlackAngel) >= 'A' && !WhiteOnMove(currentMove) && PieceToChar(BlackAngel) != '~') ) ? SW_SHOW : SW_HIDE); ShowWindow(GetDlgItem(hDlg, PB_Chancellor), ((PieceToChar(WhiteMarshall) >= 'A' && WhiteOnMove(currentMove) && PieceToChar(WhiteMarshall) != '~') || (PieceToChar(BlackMarshall) >= 'A' && !WhiteOnMove(currentMove) && PieceToChar(BlackMarshall) != '~') ) ? SW_SHOW : SW_HIDE); /* [HGM] Hide B & R button in Shogi, use Q as promote, N as defer */ ShowWindow(GetDlgItem(hDlg, PB_Rook), !promoStyle ? SW_SHOW : SW_HIDE); ShowWindow(GetDlgItem(hDlg, PB_Bishop), !promoStyle ? SW_SHOW : SW_HIDE); if(promoStyle) { SetDlgItemText(hDlg, PB_Queen, "YES"); SetDlgItemText(hDlg, PB_Knight, "NO"); SetWindowText(hDlg, "Promote?"); } ShowWindow(GetDlgItem(hDlg, IDC_Centaur), gameInfo.variant == VariantSuper ? SW_SHOW : SW_HIDE); return TRUE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hDlg, TRUE); /* Exit the dialog */ ClearHighlights(); DrawPosition(FALSE, NULL); return TRUE; case PB_King: promoChar = gameInfo.variant == VariantSuper ? PieceToChar(BlackSilver) : PieceToChar(BlackKing); break; case PB_Queen: promoChar = promoStyle ? '+' : ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteQueen : BlackQueen)); break; case PB_Rook: promoChar = ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteRook : BlackRook)); if(gameInfo.variant == VariantSpartan && !WhiteOnMove(currentMove)) promoChar = PieceToChar(BlackDragon); break; case PB_Bishop: promoChar = ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteBishop : BlackBishop)); if(gameInfo.variant == VariantSpartan && !WhiteOnMove(currentMove)) promoChar = PieceToChar(BlackAlfil); break; case PB_Chancellor: promoChar = ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteMarshall : BlackMarshall)); break; case PB_Archbishop: promoChar = ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteAngel : BlackAngel)); break; case PB_Knight: promoChar = gameInfo.variant == VariantShogi ? '=' : promoStyle ? NULLCHAR : ToLower(PieceToChar(WhiteOnMove(currentMove) ? WhiteKnight : BlackKnight)); break; default: return FALSE; } if(promoChar == '.') return FALSE; // invalid piece chosen EndDialog(hDlg, TRUE); /* Exit the dialog */ UserMoveEvent(fromX, fromY, toX, toY, promoChar); fromX = fromY = -1; if (!appData.highlightLastMove) { ClearHighlights(); DrawPosition(FALSE, NULL); } return TRUE; } return FALSE; } /* Pop up promotion dialog */ VOID PromotionPopup(HWND hwnd) { FARPROC lpProc; lpProc = MakeProcInstance((FARPROC)Promotion, hInst); DialogBox(hInst, MAKEINTRESOURCE(DLG_PromotionKing), hwnd, (DLGPROC)lpProc); FreeProcInstance(lpProc); } void PromotionPopUp(char choice) { promoStyle = (choice == '+' || IS_SHOGI(gameInfo.variant)); DrawPosition(TRUE, NULL); PromotionPopup(hwndMain); } VOID LoadGameDialog(HWND hwnd, char* title) { UINT number = 0; FILE *f; char fileTitle[MSG_SIZ]; f = OpenFileDialog(hwnd, "rb", "", appData.oldSaveStyle ? "gam" : "pgn", GAME_FILT, title, &number, fileTitle, NULL); if (f != NULL) { cmailMsgLoaded = FALSE; if (number == 0) { int error = GameListBuild(f); if (error) { DisplayError(_("Cannot build game list"), error); } else if (!ListEmpty(&gameList) && ((ListGame *) gameList.tailPred)->number > 1) { GameListPopUp(f, fileTitle); return; } GameListDestroy(); number = 1; } LoadGame(f, number, fileTitle, FALSE); } } int get_term_width() { HDC hdc; TEXTMETRIC tm; RECT rc; HFONT hfont, hold_font; LOGFONT lf; HWND hText; if (hwndConsole) hText = GetDlgItem(hwndConsole, OPT_ConsoleText); else return 79; // get the text metrics hdc = GetDC(hText); lf = font[boardSize][CONSOLE_FONT]->lf; if (consoleCF.dwEffects & CFE_BOLD) lf.lfWeight = FW_BOLD; if (consoleCF.dwEffects & CFE_ITALIC) lf.lfItalic = TRUE; if (consoleCF.dwEffects & CFE_STRIKEOUT) lf.lfStrikeOut = TRUE; if (consoleCF.dwEffects & CFE_UNDERLINE) lf.lfUnderline = TRUE; hfont = CreateFontIndirect(&lf); hold_font = SelectObject(hdc, hfont); GetTextMetrics(hdc, &tm); SelectObject(hdc, hold_font); DeleteObject(hfont); ReleaseDC(hText, hdc); // get the rectangle SendMessage(hText, EM_GETRECT, 0, (LPARAM)&rc); return (rc.right-rc.left) / tm.tmAveCharWidth; } void UpdateICSWidth(HWND hText) { LONG old_width, new_width; new_width = get_term_width(hText, FALSE); old_width = GetWindowLongPtr(hText, GWLP_USERDATA); if (new_width != old_width) { ics_update_width(new_width); SetWindowLongPtr(hText, GWLP_USERDATA, new_width); } } VOID ChangedConsoleFont() { CHARFORMAT cfmt; CHARRANGE tmpsel, sel; MyFont *f = font[boardSize][CONSOLE_FONT]; HWND hText = GetDlgItem(hwndConsole, OPT_ConsoleText); HWND hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput); PARAFORMAT paraf; cfmt.cbSize = sizeof(CHARFORMAT); cfmt.dwMask = CFM_FACE|CFM_SIZE|CFM_CHARSET; safeStrCpy(cfmt.szFaceName, font[boardSize][CONSOLE_FONT]->mfp.faceName, sizeof(cfmt.szFaceName)/sizeof(cfmt.szFaceName[0]) ); /* yHeight is expressed in twips. A twip is 1/20 of a font's point * size. This was undocumented in the version of MSVC++ that I had * when I wrote the code, but is apparently documented now. */ cfmt.yHeight = (int)(f->mfp.pointSize * 20.0 + 0.5); cfmt.bCharSet = f->lf.lfCharSet; cfmt.bPitchAndFamily = f->lf.lfPitchAndFamily; SendMessage(hText, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) &cfmt); SendMessage(hInput, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) &cfmt); /* Why are the following seemingly needed too? */ SendMessage(hText, EM_SETCHARFORMAT, SCF_DEFAULT, (LPARAM) &cfmt); SendMessage(hInput, EM_SETCHARFORMAT, SCF_DEFAULT, (LPARAM) &cfmt); SendMessage(hText, EM_EXGETSEL, 0, (LPARAM)&sel); tmpsel.cpMin = 0; tmpsel.cpMax = -1; /*999999?*/ SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&tmpsel); SendMessage(hText, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) &cfmt); /* Trying putting this here too. It still seems to tickle a RichEdit * bug: sometimes RichEdit indents the first line of a paragraph too. */ paraf.cbSize = sizeof(paraf); paraf.dwMask = PFM_OFFSET | PFM_STARTINDENT; paraf.dxStartIndent = 0; paraf.dxOffset = WRAP_INDENT; SendMessage(hText, EM_SETPARAFORMAT, 0, (LPARAM) ¶f); SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel); UpdateICSWidth(hText); } /*---------------------------------------------------------------------------*\ * * Window Proc for main window * \*---------------------------------------------------------------------------*/ /* Process messages for main window, etc. */ LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { FARPROC lpProc; int wmId; char *defName; FILE *f; UINT number; char fileTitle[MSG_SIZ]; static SnapData sd; static int peek=0; switch (message) { case WM_PAINT: /* message: repaint portion of window */ PaintProc(hwnd); break; case WM_ERASEBKGND: if (IsIconic(hwnd)) { /* Cheat; change the message */ return (DefWindowProc(hwnd, WM_ICONERASEBKGND, wParam, lParam)); } else { return (DefWindowProc(hwnd, message, wParam, lParam)); } break; case WM_LBUTTONDOWN: case WM_MBUTTONDOWN: case WM_RBUTTONDOWN: case WM_LBUTTONUP: case WM_MBUTTONUP: case WM_RBUTTONUP: case WM_MOUSEMOVE: case WM_MOUSEWHEEL: MouseEvent(hwnd, message, wParam, lParam); break; case WM_KEYUP: if((char)wParam == '\b') { ForwardEvent(); peek = 0; } JAWS_KBUP_NAVIGATION break; case WM_KEYDOWN: if((char)wParam == '\b') { if(!peek) BackwardEvent(), peek = 1; } JAWS_KBDOWN_NAVIGATION break; case WM_CHAR: JAWS_ALT_INTERCEPT if (appData.icsActive && ((char)wParam == '\r' || (char)wParam > ' ' && !((char)wParam >= '1' && (char)wParam <= '9'))) { // [HGM] movenum: for non-zero digits we always do type-in dialog HWND h = GetDlgItem(hwndConsole, OPT_ConsoleInput); if (IsIconic(hwndConsole)) ShowWindow(hwndConsole, SW_RESTORE); SetFocus(h); SendMessage(h, message, wParam, lParam); } else if(lParam != KF_REPEAT) { if (isalpha((char)wParam) || isdigit((char)wParam)) { TypeInEvent((char)wParam); } else if((char)wParam == 003) CopyGameToClipboard(); else if((char)wParam == 026) PasteGameOrFENFromClipboard(); } break; case WM_PALETTECHANGED: if (hwnd != (HWND)wParam && !appData.monoMode) { int nnew; HDC hdc = GetDC(hwndMain); SelectPalette(hdc, hPal, TRUE); nnew = RealizePalette(hdc); if (nnew > 0) { paletteChanged = TRUE; InvalidateRect(hwnd, &boardRect, FALSE); } ReleaseDC(hwnd, hdc); } break; case WM_QUERYNEWPALETTE: if (!appData.monoMode /*&& paletteChanged*/) { int nnew; HDC hdc = GetDC(hwndMain); paletteChanged = FALSE; SelectPalette(hdc, hPal, FALSE); nnew = RealizePalette(hdc); if (nnew > 0) { InvalidateRect(hwnd, &boardRect, FALSE); } ReleaseDC(hwnd, hdc); return TRUE; } return FALSE; case WM_COMMAND: /* message: command from application menu */ wmId = LOWORD(wParam); switch (wmId) { case IDM_NewGame: ResetGameEvent(); SAY("new game enter a move to play against the computer with white"); break; case IDM_NewGameFRC: if( NewGameFRC() == 0 ) { ResetGameEvent(); } break; case IDM_NewVariant: NewVariantPopup(hwnd); break; case IDM_LoadGame: LoadGameDialog(hwnd, _("Load Game from File")); break; case IDM_LoadNextGame: ReloadGame(1); break; case IDM_LoadPrevGame: ReloadGame(-1); break; case IDM_ReloadGame: ReloadGame(0); break; case IDM_LoadPosition: if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) { Reset(FALSE, TRUE); } number = 1; f = OpenFileDialog(hwnd, "rb", "", appData.oldSaveStyle ? "pos" : "fen", POSITION_FILT, _("Load Position from File"), &number, fileTitle, NULL); if (f != NULL) { LoadPosition(f, number, fileTitle); } break; case IDM_LoadNextPosition: ReloadPosition(1); break; case IDM_LoadPrevPosition: ReloadPosition(-1); break; case IDM_ReloadPosition: ReloadPosition(0); break; case IDM_SaveGame: defName = DefaultFileName(appData.oldSaveStyle ? "gam" : "pgn"); f = OpenFileDialog(hwnd, "a", defName, appData.oldSaveStyle ? "gam" : "pgn", GAME_FILT, _("Save Game to File"), NULL, fileTitle, NULL); if (f != NULL) { SaveGame(f, 0, ""); } break; case IDM_SavePosition: defName = DefaultFileName(appData.oldSaveStyle ? "pos" : "fen"); f = OpenFileDialog(hwnd, "a", defName, appData.oldSaveStyle ? "pos" : "fen", POSITION_FILT, _("Save Position to File"), NULL, fileTitle, NULL); if (f != NULL) { SavePosition(f, 0, ""); } break; case IDM_SaveDiagram: defName = "diagram"; f = OpenFileDialog(hwnd, "wb", defName, "bmp", DIAGRAM_FILT, _("Save Diagram to File"), NULL, fileTitle, NULL); if (f != NULL) { SaveDiagram(f); } break; case IDM_SaveSelected: f = OpenFileDialog(hwnd, "a", "", "pgn", GAME_FILT, _("Save Game to File"), NULL, fileTitle, NULL); if (f != NULL) { SaveSelected(f, 0, ""); } break; case IDM_CreateBook: CreateBookEvent(); break; case IDM_CopyGame: CopyGameToClipboard(); break; case IDM_PasteGame: PasteGameFromClipboard(); break; case IDM_CopyGameListToClipboard: CopyGameListToClipboard(); break; /* [AS] Autodetect FEN or PGN data */ case IDM_PasteAny: PasteGameOrFENFromClipboard(); break; /* [AS] Move history */ case IDM_ShowMoveHistory: if( MoveHistoryIsUp() ) { MoveHistoryPopDown(); } else { MoveHistoryPopUp(); } break; /* [AS] Eval graph */ case IDM_ShowEvalGraph: if( EvalGraphIsUp() ) { EvalGraphPopDown(); } else { EvalGraphPopUp(); SetFocus(hwndMain); } break; /* [AS] Engine output */ case IDM_ShowEngineOutput: if( EngineOutputIsUp() ) { EngineOutputPopDown(); } else { EngineOutputPopUp(); } break; /* [AS] User adjudication */ case IDM_UserAdjudication_White: UserAdjudicationEvent( +1 ); break; case IDM_UserAdjudication_Black: UserAdjudicationEvent( -1 ); break; case IDM_UserAdjudication_Draw: UserAdjudicationEvent( 0 ); break; /* [AS] Game list options dialog */ case IDM_GameListOptions: GameListOptions(); break; case IDM_NewChat: ChatPopUp(NULL); break; case IDM_CopyPosition: CopyFENToClipboard(); break; case IDM_PastePosition: PasteFENFromClipboard(); break; case IDM_MailMove: MailMoveEvent(); break; case IDM_ReloadCMailMsg: Reset(TRUE, TRUE); ReloadCmailMsgEvent(FALSE); break; case IDM_Minimize: ShowWindow(hwnd, SW_MINIMIZE); break; case IDM_Exit: ExitEvent(0); break; case IDM_MachineWhite: MachineWhiteEvent(); /* * refresh the tags dialog only if it's visible */ if (gameMode == MachinePlaysWhite && IsWindowVisible(editTagsDialog)) { char *tags; tags = PGNTags(&gameInfo); TagsPopUp(tags, CmailMsg()); free(tags); } SAY("computer starts playing white"); break; case IDM_MachineBlack: MachineBlackEvent(); /* * refresh the tags dialog only if it's visible */ if (gameMode == MachinePlaysBlack && IsWindowVisible(editTagsDialog)) { char *tags; tags = PGNTags(&gameInfo); TagsPopUp(tags, CmailMsg()); free(tags); } SAY("computer starts playing black"); break; case IDM_Match: // [HGM] match: flows into next case, after setting Match Mode and nr of Games if(matchMode) EnableMenuItem(GetMenu(hwndMain), IDM_Match, MF_BYCOMMAND|MF_GRAYED); MatchEvent(2); // distinguish from command-line-triggered case (matchMode=1) break; case IDM_TwoMachines: TwoMachinesEvent(); /* * refresh the tags dialog only if it's visible */ if (gameMode == TwoMachinesPlay && IsWindowVisible(editTagsDialog)) { char *tags; tags = PGNTags(&gameInfo); TagsPopUp(tags, CmailMsg()); free(tags); } SAY("computer starts playing both sides"); break; case IDM_AnalysisMode: if(AnalyzeModeEvent()) { SAY("analyzing current position"); } break; case IDM_AnalyzeFile: AnalyzeFileEvent(); break; case IDM_IcsClient: IcsClientEvent(); break; case IDM_EditGame: case IDM_EditGame2: EditGameEvent(); SAY("edit game"); break; case IDM_EditPosition: case IDM_EditPosition2: EditPositionEvent(); SAY("enter a FEN string or setup a position on the board using the control R pop up menu"); break; case IDM_Training: TrainingEvent(); break; case IDM_ShowGameList: ShowGameListProc(); break; case IDM_EditProgs1: EditTagsPopUp(firstChessProgramNames, &firstChessProgramNames); break; case IDM_LoadProg1: LoadEnginePopUp(hwndMain, 0); break; case IDM_LoadProg2: LoadEnginePopUp(hwndMain, 1); break; case IDM_EditServers: EditTagsPopUp(icsNames, &icsNames); break; case IDM_EditTags: case IDM_Tags: EditTagsProc(); break; case IDM_EditBook: EditBookEvent(); break; case IDM_EditComment: case IDM_Comment: if (commentUp && editComment) { CommentPopDown(); } else { EditCommentEvent(); } break; case IDM_Pause: PauseEvent(); break; case IDM_Accept: AcceptEvent(); break; case IDM_Decline: DeclineEvent(); break; case IDM_Rematch: RematchEvent(); break; case IDM_CallFlag: CallFlagEvent(); break; case IDM_Draw: DrawEvent(); break; case IDM_Adjourn: AdjournEvent(); break; case IDM_Abort: AbortEvent(); break; case IDM_Resign: ResignEvent(); break; case IDM_StopObserving: StopObservingEvent(); break; case IDM_StopExamining: StopExaminingEvent(); break; case IDM_Upload: UploadGameEvent(); break; case IDM_TypeInMove: TypeInEvent('\000'); break; case IDM_TypeInName: PopUpNameDialog('\000'); break; case IDM_Backward: BackwardEvent(); SetFocus(hwndMain); break; JAWS_MENU_ITEMS case IDM_Forward: ForwardEvent(); SetFocus(hwndMain); break; case IDM_ToStart: ToStartEvent(); SetFocus(hwndMain); break; case IDM_ToEnd: ToEndEvent(); SetFocus(hwndMain); break; case OPT_GameListNext: // [HGM] forward these two accelerators to Game List case OPT_GameListPrev: if(gameListDialog) SendMessage(gameListDialog, WM_COMMAND, wmId, 0); break; case IDM_Revert: RevertEvent(FALSE); break; case IDM_Annotate: // [HGM] vari: revert with annotation RevertEvent(TRUE); break; case IDM_TruncateGame: TruncateGameEvent(); break; case IDM_MoveNow: MoveNowEvent(); break; case IDM_RetractMove: RetractMoveEvent(); break; case IDM_FlipView: flipView = !flipView; DrawPosition(FALSE, NULL); break; case IDM_FlipClock: flipClock = !flipClock; DisplayBothClocks(); DisplayLogos(); break; case IDM_MuteSounds: mute = !mute; // [HGM] mute: keep track of global muting variable CheckMenuItem(GetMenu(hwndMain),IDM_MuteSounds, MF_BYCOMMAND|(mute?MF_CHECKED:MF_UNCHECKED)); break; case IDM_GeneralOptions: GeneralOptionsPopup(hwnd); DrawPosition(TRUE, NULL); break; case IDM_BoardOptions: BoardOptionsPopup(hwnd); break; case IDM_ThemeOptions: ThemeOptionsPopup(hwnd); break; case IDM_EnginePlayOptions: EnginePlayOptionsPopup(hwnd); break; case IDM_Engine1Options: EngineOptionsPopup(hwnd, &first); break; case IDM_Engine2Options: savedHwnd = hwnd; if(WaitForEngine(&second, SettingsMenuIfReady)) break; EngineOptionsPopup(hwnd, &second); break; case IDM_OptionsUCI: UciOptionsPopup(hwnd); break; case IDM_Tourney: TourneyPopup(hwnd); break; case IDM_IcsOptions: IcsOptionsPopup(hwnd); break; case IDM_Fonts: FontsOptionsPopup(hwnd); break; case IDM_Sounds: SoundOptionsPopup(hwnd); break; case IDM_CommPort: CommPortOptionsPopup(hwnd); break; case IDM_LoadOptions: LoadOptionsPopup(hwnd); break; case IDM_SaveOptions: SaveOptionsPopup(hwnd); break; case IDM_TimeControl: TimeControlOptionsPopup(hwnd); break; case IDM_SaveSettings: SaveSettings(settingsFileName); break; case IDM_SaveSettingsOnExit: saveSettingsOnExit = !saveSettingsOnExit; (void) CheckMenuItem(GetMenu(hwndMain), IDM_SaveSettingsOnExit, MF_BYCOMMAND|(saveSettingsOnExit ? MF_CHECKED : MF_UNCHECKED)); break; case IDM_Hint: HintEvent(); break; case IDM_Book: BookEvent(); break; case IDM_AboutGame: AboutGameEvent(); break; case IDM_Debug: appData.debugMode = !appData.debugMode; if (appData.debugMode) { char dir[MSG_SIZ]; GetCurrentDirectory(MSG_SIZ, dir); SetCurrentDirectory(installDir); debugFP = fopen(appData.nameOfDebugFile, "w"); SetCurrentDirectory(dir); setbuf(debugFP, NULL); } else { fclose(debugFP); debugFP = NULL; } break; case IDM_HELPCONTENTS: if (!MyHelp (hwnd, "winboard.hlp", HELP_KEY,(DWORD)(LPSTR)"CONTENTS") && !HtmlHelp(hwnd, "winboard.chm", 0, 0) ) { MessageBox (GetFocus(), _("Unable to activate help"), szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND); } break; case IDM_HELPSEARCH: if (!MyHelp (hwnd, "winboard.hlp", HELP_PARTIALKEY, (DWORD)(LPSTR)"") && !HtmlHelp(hwnd, "winboard.chm", 0, 0) ) { MessageBox (GetFocus(), _("Unable to activate help"), szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND); } break; case IDM_HELPHELP: if(!WinHelp(hwnd, (LPSTR)NULL, HELP_HELPONHELP, 0)) { MessageBox (GetFocus(), _("Unable to activate help"), szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND); } break; case IDM_ABOUT: lpProc = MakeProcInstance((FARPROC)About, hInst); DialogBox(hInst, (gameInfo.event && strcmp(gameInfo.event, "Easter Egg Hunt") == 0) ? "AboutBox2" : "AboutBox", hwnd, (DLGPROC)lpProc); FreeProcInstance(lpProc); break; case IDM_DirectCommand1: AskQuestionEvent(_("Direct Command"), _("Send to chess program:"), "", "1"); break; case IDM_DirectCommand2: AskQuestionEvent(_("Direct Command"), _("Send to second chess program:"), "", "2"); break; case EP_WhitePawn: EditPositionMenuEvent(WhitePawn, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteKnight: EditPositionMenuEvent(WhiteKnight, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteBishop: EditPositionMenuEvent(WhiteBishop, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteRook: EditPositionMenuEvent(WhiteRook, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteQueen: EditPositionMenuEvent(WhiteQueen, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteFerz: EditPositionMenuEvent(WhiteFerz, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteWazir: EditPositionMenuEvent(WhiteWazir, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteAlfil: EditPositionMenuEvent(WhiteAlfil, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteCannon: EditPositionMenuEvent(WhiteCannon, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteCardinal: EditPositionMenuEvent(WhiteAngel, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteMarshall: EditPositionMenuEvent(WhiteMarshall, fromX, fromY); fromX = fromY = -1; break; case EP_WhiteKing: EditPositionMenuEvent(WhiteKing, fromX, fromY); fromX = fromY = -1; break; case EP_BlackPawn: EditPositionMenuEvent(BlackPawn, fromX, fromY); fromX = fromY = -1; break; case EP_BlackKnight: EditPositionMenuEvent(BlackKnight, fromX, fromY); fromX = fromY = -1; break; case EP_BlackBishop: EditPositionMenuEvent(BlackBishop, fromX, fromY); fromX = fromY = -1; break; case EP_BlackRook: EditPositionMenuEvent(BlackRook, fromX, fromY); fromX = fromY = -1; break; case EP_BlackQueen: EditPositionMenuEvent(BlackQueen, fromX, fromY); fromX = fromY = -1; break; case EP_BlackFerz: EditPositionMenuEvent(BlackFerz, fromX, fromY); fromX = fromY = -1; break; case EP_BlackWazir: EditPositionMenuEvent(BlackWazir, fromX, fromY); fromX = fromY = -1; break; case EP_BlackAlfil: EditPositionMenuEvent(BlackAlfil, fromX, fromY); fromX = fromY = -1; break; case EP_BlackCannon: EditPositionMenuEvent(BlackCannon, fromX, fromY); fromX = fromY = -1; break; case EP_BlackCardinal: EditPositionMenuEvent(BlackAngel, fromX, fromY); fromX = fromY = -1; break; case EP_BlackMarshall: EditPositionMenuEvent(BlackMarshall, fromX, fromY); fromX = fromY = -1; break; case EP_BlackKing: EditPositionMenuEvent(BlackKing, fromX, fromY); fromX = fromY = -1; break; case EP_EmptySquare: EditPositionMenuEvent(EmptySquare, fromX, fromY); fromX = fromY = -1; break; case EP_ClearBoard: EditPositionMenuEvent(ClearBoard, fromX, fromY); fromX = fromY = -1; break; case EP_White: EditPositionMenuEvent(WhitePlay, fromX, fromY); fromX = fromY = -1; break; case EP_Black: EditPositionMenuEvent(BlackPlay, fromX, fromY); fromX = fromY = -1; break; case EP_Promote: EditPositionMenuEvent(PromotePiece, fromX, fromY); fromX = fromY = -1; break; case EP_Demote: EditPositionMenuEvent(DemotePiece, fromX, fromY); fromX = fromY = -1; break; case DP_Pawn: DropMenuEvent(WhitePawn, fromX, fromY); fromX = fromY = -1; break; case DP_Knight: DropMenuEvent(WhiteKnight, fromX, fromY); fromX = fromY = -1; break; case DP_Bishop: DropMenuEvent(WhiteBishop, fromX, fromY); fromX = fromY = -1; break; case DP_Rook: DropMenuEvent(WhiteRook, fromX, fromY); fromX = fromY = -1; break; case DP_Queen: DropMenuEvent(WhiteQueen, fromX, fromY); fromX = fromY = -1; break; case IDM_English: barbaric = 0; appData.language = ""; TranslateMenus(0); CheckMenuItem(GetMenu(hwndMain), lastChecked, MF_BYCOMMAND|MF_UNCHECKED); CheckMenuItem(GetMenu(hwndMain), IDM_English, MF_BYCOMMAND|MF_CHECKED); lastChecked = wmId; break; default: if(wmId >= IDM_RecentEngines && wmId < IDM_RecentEngines + appData.recentEngines) RecentEngineEvent(wmId - IDM_RecentEngines); else if(wmId > IDM_English && wmId < IDM_English+20) { LoadLanguageFile(languageFile[wmId - IDM_English - 1]); TranslateMenus(0); CheckMenuItem(GetMenu(hwndMain), lastChecked, MF_BYCOMMAND|MF_UNCHECKED); CheckMenuItem(GetMenu(hwndMain), wmId, MF_BYCOMMAND|MF_CHECKED); lastChecked = wmId; break; } return (DefWindowProc(hwnd, message, wParam, lParam)); } break; case WM_TIMER: switch (wParam) { case CLOCK_TIMER_ID: KillTimer(hwnd, clockTimerEvent); /* Simulate one-shot timer as in X */ clockTimerEvent = 0; DecrementClocks(); /* call into back end */ break; case LOAD_GAME_TIMER_ID: KillTimer(hwnd, loadGameTimerEvent); /* Simulate one-shot timer as in X*/ loadGameTimerEvent = 0; AutoPlayGameLoop(); /* call into back end */ break; case ANALYSIS_TIMER_ID: if ((gameMode == AnalyzeMode || gameMode == AnalyzeFile || appData.icsEngineAnalyze) && appData.periodicUpdates) { AnalysisPeriodicEvent(0); } else { KillTimer(hwnd, analysisTimerEvent); analysisTimerEvent = 0; } break; case DELAYED_TIMER_ID: KillTimer(hwnd, delayedTimerEvent); delayedTimerEvent = 0; delayedTimerCallback(); break; } break; case WM_USER_Input: InputEvent(hwnd, message, wParam, lParam); break; /* [AS] Also move "attached" child windows */ case WM_WINDOWPOSCHANGING: if( hwnd == hwndMain && appData.useStickyWindows ) { LPWINDOWPOS lpwp = (LPWINDOWPOS) lParam; if( ((lpwp->flags & SWP_NOMOVE) == 0) /*&& ((lpwp->flags & SWP_NOSIZE) != 0)*/ ) { // [HGM] in Win8 size always accompanies move? /* Window is moving */ RECT rcMain; // GetWindowRect( hwnd, &rcMain ); //[HGM] sticky: in XP this returned new position, not old rcMain.left = wpMain.x; // replace by these 4 lines to reconstruct old rect rcMain.right = wpMain.x + wpMain.width; rcMain.top = wpMain.y; rcMain.bottom = wpMain.y + wpMain.height; ReattachAfterMove( &rcMain, lpwp->x, lpwp->y, moveHistoryDialog, &wpMoveHistory ); ReattachAfterMove( &rcMain, lpwp->x, lpwp->y, evalGraphDialog, &wpEvalGraph ); ReattachAfterMove( &rcMain, lpwp->x, lpwp->y, engineOutputDialog, &wpEngineOutput ); ReattachAfterMove( &rcMain, lpwp->x, lpwp->y, gameListDialog, &wpGameList ); ReattachAfterMove( &rcMain, lpwp->x, lpwp->y, hwndConsole, &wpConsole ); wpMain.x = lpwp->x; wpMain.y = lpwp->y; } } break; /* [AS] Snapping */ case WM_ENTERSIZEMOVE: if(appData.debugMode) { fprintf(debugFP, "size-move\n"); } if (hwnd == hwndMain) { doingSizing = TRUE; lastSizing = 0; } return OnEnterSizeMove( &sd, hwnd, wParam, lParam ); break; case WM_SIZING: if(appData.debugMode) { fprintf(debugFP, "sizing\n"); } if (hwnd == hwndMain) { lastSizing = wParam; } break; case WM_MOVING: if(appData.debugMode) { fprintf(debugFP, "moving\n"); } return OnMoving( &sd, hwnd, wParam, lParam ); case WM_EXITSIZEMOVE: if(appData.debugMode) { fprintf(debugFP, "exit size-move, size = %d\n", squareSize); } if (hwnd == hwndMain) { RECT client; doingSizing = FALSE; InvalidateRect(hwnd, &boardRect, FALSE); GetClientRect(hwnd, &client); ResizeBoard(client.right, client.bottom, lastSizing); lastSizing = 0; if(appData.debugMode) { fprintf(debugFP, "square size = %d\n", squareSize); } } return OnExitSizeMove( &sd, hwnd, wParam, lParam ); break; case WM_DESTROY: /* message: window being destroyed */ PostQuitMessage(0); break; case WM_CLOSE: if (hwnd == hwndMain) { ExitEvent(0); } break; default: /* Passes it on if unprocessed */ return (DefWindowProc(hwnd, message, wParam, lParam)); } return 0; } /*---------------------------------------------------------------------------*\ * * Misc utility routines * \*---------------------------------------------------------------------------*/ /* * Decent random number generator, at least not as bad as Windows * standard rand, which returns a value in the range 0 to 0x7fff. */ unsigned int randstate; int myrandom(void) { randstate = randstate * 1664525 + 1013904223; return (int) randstate & 0x7fffffff; } void mysrandom(unsigned int seed) { randstate = seed; } /* * returns TRUE if user selects a different color, FALSE otherwise */ BOOL ChangeColor(HWND hwnd, COLORREF *which) { static BOOL firstTime = TRUE; static DWORD customColors[16]; CHOOSECOLOR cc; COLORREF newcolor; int i; ColorClass ccl; if (firstTime) { /* Make initial colors in use available as custom colors */ /* Should we put the compiled-in defaults here instead? */ i = 0; customColors[i++] = lightSquareColor & 0xffffff; customColors[i++] = darkSquareColor & 0xffffff; customColors[i++] = whitePieceColor & 0xffffff; customColors[i++] = blackPieceColor & 0xffffff; customColors[i++] = highlightSquareColor & 0xffffff; customColors[i++] = premoveHighlightColor & 0xffffff; for (ccl = (ColorClass) 0; ccl < NColorClasses && i < 16; ccl++) { customColors[i++] = textAttribs[ccl].color; } while (i < 16) customColors[i++] = RGB(255, 255, 255); firstTime = FALSE; } cc.lStructSize = sizeof(cc); cc.hwndOwner = hwnd; cc.hInstance = NULL; cc.rgbResult = (DWORD) (*which & 0xffffff); cc.lpCustColors = (LPDWORD) customColors; cc.Flags = CC_RGBINIT|CC_FULLOPEN; if (!ChooseColor(&cc)) return FALSE; newcolor = (COLORREF) (0x2000000 | cc.rgbResult); if (newcolor == *which) return FALSE; *which = newcolor; return TRUE; /* InitDrawingColors(); InvalidateRect(hwnd, &boardRect, FALSE); */ } BOOLEAN MyLoadSound(MySound *ms) { BOOL ok = FALSE; struct stat st; FILE *f; if (ms->data && ms->flag) free(ms->data); ms->data = NULL; switch (ms->name[0]) { case NULLCHAR: /* Silence */ ok = TRUE; break; case '$': /* System sound from Control Panel. Don't preload here. */ ok = TRUE; break; case '!': if (ms->name[1] == NULLCHAR) { /* "!" alone = silence */ ok = TRUE; } else { /* Builtin wave resource. Error if not found. */ HANDLE h = FindResource(hInst, ms->name + 1, "WAVE"); if (h == NULL) break; ms->data = (void *)LoadResource(hInst, h); ms->flag = 0; // not maloced, so cannot be freed! if (h == NULL) break; ok = TRUE; } break; default: /* .wav file. Error if not found. */ f = fopen(ms->name, "rb"); if (f == NULL) break; if (fstat(fileno(f), &st) < 0) break; ms->data = malloc(st.st_size); ms->flag = 1; if (fread(ms->data, st.st_size, 1, f) < 1) break; fclose(f); ok = TRUE; break; } if (!ok) { char buf[MSG_SIZ]; snprintf(buf, MSG_SIZ, _("Error loading sound %s"), ms->name); DisplayError(buf, GetLastError()); } return ok; } BOOLEAN MyPlaySound(MySound *ms) { BOOLEAN ok = FALSE; if(mute) return TRUE; // [HGM] mute: suppress all sound play when muted switch (ms->name[0]) { case NULLCHAR: if(appData.debugMode) fprintf(debugFP, "silence\n"); /* Silence */ ok = TRUE; break; case '$': /* System sound from Control Panel (deprecated feature). "$" alone or an unset sound name gets default beep (still in use). */ if (ms->name[1]) { ok = PlaySound(ms->name + 1, NULL, SND_ALIAS|SND_ASYNC); } if (!ok) ok = MessageBeep(MB_OK); break; case '!': /* Builtin wave resource, or "!" alone for silence */ if (ms->name[1]) { if (ms->data == NULL) return FALSE; ok = PlaySound(ms->data, NULL, SND_MEMORY|SND_ASYNC); } else { ok = TRUE; } break; default: /* .wav file. Error if not found. */ if (ms->data == NULL) return FALSE; ok = PlaySound(ms->data, NULL, SND_MEMORY|SND_ASYNC); break; } /* Don't print an error: this can happen innocently if the sound driver is busy; for instance, if another instance of WinBoard is playing a sound at about the same time. */ return ok; } LRESULT CALLBACK OldOpenFileHook(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { BOOL ok; OPENFILENAME *ofn; static UINT *number; /* gross that this is static */ switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Center the dialog over the application window */ ofn = (OPENFILENAME *) lParam; if (ofn->Flags & OFN_ENABLETEMPLATE) { number = (UINT *) ofn->lCustData; SendMessage(GetDlgItem(hDlg, edt2), WM_SETTEXT, 0, (LPARAM) ""); } else { number = NULL; } CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); Translate(hDlg, 1536); return FALSE; /* Allow for further processing */ case WM_COMMAND: if ((LOWORD(wParam) == IDOK) && (number != NULL)) { *number = GetDlgItemInt(hDlg, OPT_IndexNumberOld, &ok, FALSE); } return FALSE; /* Allow for further processing */ } return FALSE; } UINT APIENTRY OpenFileHook(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) { static UINT *number; OPENFILENAME *ofname; OFNOTIFY *ofnot; switch (uiMsg) { case WM_INITDIALOG: Translate(hdlg, DLG_IndexNumber); ofname = (OPENFILENAME *)lParam; number = (UINT *)(ofname->lCustData); break; case WM_NOTIFY: ofnot = (OFNOTIFY *)lParam; if (ofnot->hdr.code == CDN_FILEOK) { *number = GetDlgItemInt(hdlg, OPT_IndexNumber, NULL, FALSE); } break; } return 0; } FILE * OpenFileDialog(HWND hwnd, char *write, char *defName, char *defExt, // [HGM] diag: type of 'write' now string char *nameFilt, char *dlgTitle, UINT *number, char fileTitle[MSG_SIZ], char fileName[MSG_SIZ]) { OPENFILENAME openFileName; char buf1[MSG_SIZ]; FILE *f; if (fileName == NULL) fileName = buf1; if (defName == NULL) { safeStrCpy(fileName, "*.", 3 ); strcat(fileName, defExt); } else { safeStrCpy(fileName, defName, MSG_SIZ ); } if (fileTitle) safeStrCpy(fileTitle, "", MSG_SIZ ); if (number) *number = 0; openFileName.lStructSize = sizeof(OPENFILENAME); openFileName.hwndOwner = hwnd; openFileName.hInstance = (HANDLE) hInst; openFileName.lpstrFilter = nameFilt; openFileName.lpstrCustomFilter = (LPSTR) NULL; openFileName.nMaxCustFilter = 0L; openFileName.nFilterIndex = 1L; openFileName.lpstrFile = fileName; openFileName.nMaxFile = MSG_SIZ; openFileName.lpstrFileTitle = fileTitle; openFileName.nMaxFileTitle = fileTitle ? MSG_SIZ : 0; openFileName.lpstrInitialDir = NULL; openFileName.lpstrTitle = dlgTitle; openFileName.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | (write[0] != 'r' ? 0 : OFN_FILEMUSTEXIST) | (number ? OFN_ENABLETEMPLATE | OFN_ENABLEHOOK: 0) | (oldDialog ? 0 : OFN_EXPLORER); openFileName.nFileOffset = 0; openFileName.nFileExtension = 0; openFileName.lpstrDefExt = defExt; openFileName.lCustData = (LONG) number; openFileName.lpfnHook = oldDialog ? (LPOFNHOOKPROC) OldOpenFileHook : (LPOFNHOOKPROC) OpenFileHook; openFileName.lpTemplateName = (LPSTR)(oldDialog ? 1536 : DLG_IndexNumber); if (write[0] != 'r' ? GetSaveFileName(&openFileName) : GetOpenFileName(&openFileName)) { /* open the file */ f = fopen(openFileName.lpstrFile, write); if (f == NULL) { MessageBox(hwnd, _("File open failed"), NULL, MB_OK|MB_ICONEXCLAMATION); return NULL; } } else { int err = CommDlgExtendedError(); if (err != 0) DisplayError(_("Internal error in file dialog box"), err); return FALSE; } return f; } VOID APIENTRY MenuPopup(HWND hwnd, POINT pt, HMENU hmenu, UINT def) { HMENU hmenuTrackPopup; /* floating pop-up menu */ /* * Get the first pop-up menu in the menu template. This is the * menu that TrackPopupMenu displays. */ hmenuTrackPopup = GetSubMenu(hmenu, 0); TranslateOneMenu(10, hmenuTrackPopup); SetMenuDefaultItem(hmenuTrackPopup, def, FALSE); /* * TrackPopup uses screen coordinates, so convert the * coordinates of the mouse click to screen coordinates. */ ClientToScreen(hwnd, (LPPOINT) &pt); /* Draw and track the floating pop-up menu. */ TrackPopupMenu(hmenuTrackPopup, TPM_CENTERALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, 0, hwnd, NULL); /* Destroy the menu.*/ DestroyMenu(hmenu); } typedef struct { HWND hDlg, hText; int sizeX, sizeY, newSizeX, newSizeY; HDWP hdwp; } ResizeEditPlusButtonsClosure; BOOL CALLBACK ResizeEditPlusButtonsCallback(HWND hChild, LPARAM lparam) { ResizeEditPlusButtonsClosure *cl = (ResizeEditPlusButtonsClosure *)lparam; RECT rect; POINT pt; if (hChild == cl->hText) return TRUE; GetWindowRect(hChild, &rect); /* gives screen coords */ pt.x = rect.left + (cl->newSizeX - cl->sizeX)/2; pt.y = rect.top + cl->newSizeY - cl->sizeY; ScreenToClient(cl->hDlg, &pt); cl->hdwp = DeferWindowPos(cl->hdwp, hChild, NULL, pt.x, pt.y, rect.right - rect.left, rect.bottom - rect.top, SWP_NOZORDER); return TRUE; } /* Resize a dialog that has a (rich) edit field filling most of the top, with a row of buttons below */ VOID ResizeEditPlusButtons(HWND hDlg, HWND hText, int sizeX, int sizeY, int newSizeX, int newSizeY) { RECT rectText; int newTextHeight, newTextWidth; ResizeEditPlusButtonsClosure cl; /*if (IsIconic(hDlg)) return;*/ if (newSizeX == sizeX && newSizeY == sizeY) return; cl.hdwp = BeginDeferWindowPos(8); GetWindowRect(hText, &rectText); /* gives screen coords */ newTextWidth = rectText.right - rectText.left + newSizeX - sizeX; newTextHeight = rectText.bottom - rectText.top + newSizeY - sizeY; if (newTextHeight < 0) { newSizeY += -newTextHeight; newTextHeight = 0; } cl.hdwp = DeferWindowPos(cl.hdwp, hText, NULL, 0, 0, newTextWidth, newTextHeight, SWP_NOZORDER|SWP_NOMOVE); cl.hDlg = hDlg; cl.hText = hText; cl.sizeX = sizeX; cl.sizeY = sizeY; cl.newSizeX = newSizeX; cl.newSizeY = newSizeY; EnumChildWindows(hDlg, ResizeEditPlusButtonsCallback, (LPARAM)&cl); EndDeferWindowPos(cl.hdwp); } BOOL CenterWindowEx(HWND hwndChild, HWND hwndParent, int mode) { RECT rChild, rParent; int wChild, hChild, wParent, hParent; int wScreen, hScreen, xNew, yNew; HDC hdc; /* Get the Height and Width of the child window */ GetWindowRect (hwndChild, &rChild); wChild = rChild.right - rChild.left; hChild = rChild.bottom - rChild.top; /* Get the Height and Width of the parent window */ GetWindowRect (hwndParent, &rParent); wParent = rParent.right - rParent.left; hParent = rParent.bottom - rParent.top; /* Get the display limits */ hdc = GetDC (hwndChild); wScreen = GetDeviceCaps (hdc, HORZRES); hScreen = GetDeviceCaps (hdc, VERTRES); ReleaseDC(hwndChild, hdc); /* Calculate new X position, then adjust for screen */ xNew = rParent.left + ((wParent - wChild) /2); if (xNew < 0) { xNew = 0; } else if ((xNew+wChild) > wScreen) { xNew = wScreen - wChild; } /* Calculate new Y position, then adjust for screen */ if( mode == 0 ) { yNew = rParent.top + ((hParent - hChild) /2); } else { yNew = rParent.top + GetSystemMetrics( SM_CYCAPTION ) * 2 / 3; } if (yNew < 0) { yNew = 0; } else if ((yNew+hChild) > hScreen) { yNew = hScreen - hChild; } /* Set it, and return */ return SetWindowPos (hwndChild, NULL, xNew, yNew, 0, 0, SWP_NOSIZE | SWP_NOZORDER); } /* Center one window over another */ BOOL CenterWindow (HWND hwndChild, HWND hwndParent) { return CenterWindowEx( hwndChild, hwndParent, 0 ); } /*---------------------------------------------------------------------------*\ * * Startup Dialog functions * \*---------------------------------------------------------------------------*/ void InitComboStrings(HANDLE hwndCombo, char **cd) { SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0); while (*cd != NULL) { SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) T_(*cd)); cd++; } } void InitComboStringsFromOption(HANDLE hwndCombo, char *str) { char buf1[MAX_ARG_LEN]; int len; if (str[0] == '@') { FILE* f = fopen(str + 1, "r"); if (f == NULL) { DisplayFatalError(str + 1, errno, 2); return; } len = fread(buf1, 1, sizeof(buf1)-1, f); fclose(f); buf1[len] = NULLCHAR; str = buf1; } SendMessage(hwndCombo, CB_RESETCONTENT, 0, 0); for (;;) { char buf[MSG_SIZ]; char *end = strchr(str, '\n'); if (end == NULL) return; memcpy(buf, str, end - str); buf[end - str] = NULLCHAR; SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) buf); str = end + 1; } } void SetStartupDialogEnables(HWND hDlg) { EnableWindow(GetDlgItem(hDlg, OPT_ChessEngineName), IsDlgButtonChecked(hDlg, OPT_ChessEngine) || (appData.zippyPlay && IsDlgButtonChecked(hDlg, OPT_ChessServer))); EnableWindow(GetDlgItem(hDlg, OPT_SecondChessEngineName), IsDlgButtonChecked(hDlg, OPT_ChessEngine)); EnableWindow(GetDlgItem(hDlg, OPT_ChessServerName), IsDlgButtonChecked(hDlg, OPT_ChessServer)); EnableWindow(GetDlgItem(hDlg, OPT_AdditionalOptions), IsDlgButtonChecked(hDlg, OPT_AnyAdditional)); EnableWindow(GetDlgItem(hDlg, IDOK), IsDlgButtonChecked(hDlg, OPT_ChessEngine) || IsDlgButtonChecked(hDlg, OPT_ChessServer) || IsDlgButtonChecked(hDlg, OPT_View)); } char * QuoteForFilename(char *filename) { int dquote, space; dquote = strchr(filename, '"') != NULL; space = strchr(filename, ' ') != NULL; if (dquote || space) { if (dquote) { return "'"; } else { return "\""; } } else { return ""; } } VOID InitEngineBox(HWND hDlg, HWND hwndCombo, char* nthcp, char* nthd, char* nthdir, char *nthnames) { char buf[MSG_SIZ]; char *q; InitComboStringsFromOption(hwndCombo, nthnames); q = QuoteForFilename(nthcp); snprintf(buf, MSG_SIZ, "%s%s%s", q, nthcp, q); if (*nthdir != NULLCHAR) { q = QuoteForFilename(nthdir); snprintf(buf + strlen(buf), MSG_SIZ, " /%s=%s%s%s", nthd, q, nthdir, q); } if (*nthcp == NULLCHAR) { SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) 0, (LPARAM) 0); } else if (SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) buf) == CB_ERR) { SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0); SendMessage(hwndCombo, WM_SETTEXT, (WPARAM) 0, (LPARAM) buf); } } LRESULT CALLBACK StartupDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MSG_SIZ]; HANDLE hwndCombo; char *p; switch (message) { case WM_INITDIALOG: /* Center the dialog */ CenterWindow (hDlg, GetDesktopWindow()); Translate(hDlg, DLG_Startup); /* Initialize the dialog items */ InitEngineBox(hDlg, GetDlgItem(hDlg, OPT_ChessEngineName), appData.firstChessProgram, "fd", appData.firstDirectory, firstChessProgramNames); InitEngineBox(hDlg, GetDlgItem(hDlg, OPT_SecondChessEngineName), appData.secondChessProgram, singleList ? "fd" : "sd", appData.secondDirectory, singleList ? firstChessProgramNames : secondChessProgramNames); //[HGM] single: use first list in second combo hwndCombo = GetDlgItem(hDlg, OPT_ChessServerName); InitComboStringsFromOption(hwndCombo, icsNames); snprintf(buf, MSG_SIZ, "%s /icsport=%s", appData.icsHost, appData.icsPort); if (*appData.icsHelper != NULLCHAR) { char *q = QuoteForFilename(appData.icsHelper); sprintf(buf + strlen(buf), " /icshelper=%s%s%s", q, appData.icsHelper, q); } if (*appData.icsHost == NULLCHAR) { SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) 0, (LPARAM) 0); /*SendMessage(hwndCombo, CB_SHOWDROPDOWN, (WPARAM) TRUE, (LPARAM) 0); !!too soon */ } else if (SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) buf) == CB_ERR) { SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0); SendMessage(hwndCombo, WM_SETTEXT, (WPARAM) 0, (LPARAM) buf); } if (appData.icsActive) { CheckDlgButton(hDlg, OPT_ChessServer, BST_CHECKED); } else if (appData.noChessProgram) { CheckDlgButton(hDlg, OPT_View, BST_CHECKED); } else { CheckDlgButton(hDlg, OPT_ChessEngine, BST_CHECKED); } SetStartupDialogEnables(hDlg); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: if (IsDlgButtonChecked(hDlg, OPT_ChessEngine)) { safeStrCpy(buf, "/fcp=", sizeof(buf)/sizeof(buf[0]) ); GetDlgItemText(hDlg, OPT_ChessEngineName, buf + strlen(buf), sizeof(buf) - strlen(buf)); p = buf; comboLine = strdup(p+5); // [HGM] recent: remember complete line of first combobox ParseArgs(StringGet, &p); safeStrCpy(buf, singleList ? "/fcp=" : "/scp=", sizeof(buf)/sizeof(buf[0]) ); GetDlgItemText(hDlg, OPT_SecondChessEngineName, buf + strlen(buf), sizeof(buf) - strlen(buf)); p = buf; SwapEngines(singleList); // temporarily swap first and second, to load a second 'first', ... ParseArgs(StringGet, &p); SwapEngines(singleList); // ... and then make it 'second' appData.noChessProgram = FALSE; appData.icsActive = FALSE; } else if (IsDlgButtonChecked(hDlg, OPT_ChessServer)) { safeStrCpy(buf, "/ics /icshost=", sizeof(buf)/sizeof(buf[0]) ); GetDlgItemText(hDlg, OPT_ChessServerName, buf + strlen(buf), sizeof(buf) - strlen(buf)); p = buf; ParseArgs(StringGet, &p); if (appData.zippyPlay) { safeStrCpy(buf, "/fcp=", sizeof(buf)/sizeof(buf[0]) ); GetDlgItemText(hDlg, OPT_ChessEngineName, buf + strlen(buf), sizeof(buf) - strlen(buf)); p = buf; ParseArgs(StringGet, &p); } } else if (IsDlgButtonChecked(hDlg, OPT_View)) { appData.noChessProgram = TRUE; appData.icsActive = FALSE; } else { MessageBox(hDlg, _("Choose an option, or cancel to exit"), _("Option Error"), MB_OK|MB_ICONEXCLAMATION); return TRUE; } if (IsDlgButtonChecked(hDlg, OPT_AnyAdditional)) { GetDlgItemText(hDlg, OPT_AdditionalOptions, buf, sizeof(buf)); p = buf; ParseArgs(StringGet, &p); } EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: ExitEvent(0); return TRUE; case IDM_HELPCONTENTS: if (!WinHelp (hDlg, "winboard.hlp", HELP_KEY,(DWORD)(LPSTR)"CONTENTS")) { MessageBox (GetFocus(), _("Unable to activate help"), szAppName, MB_SYSTEMMODAL|MB_OK|MB_ICONHAND); } break; default: SetStartupDialogEnables(hDlg); break; } break; } return FALSE; } /*---------------------------------------------------------------------------*\ * * About box dialog functions * \*---------------------------------------------------------------------------*/ /* Process messages for "About" dialog box */ LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Center the dialog over the application window */ CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER)); SetDlgItemText(hDlg, ABOUTBOX_Version, programVersion); Translate(hDlg, ABOUTBOX); JAWS_COPYRIGHT return (TRUE); case WM_COMMAND: /* message: received a command */ if (LOWORD(wParam) == IDOK /* "OK" box selected? */ || LOWORD(wParam) == IDCANCEL) { /* System menu close command? */ EndDialog(hDlg, TRUE); /* Exit the dialog */ return (TRUE); } break; } return (FALSE); } /*---------------------------------------------------------------------------*\ * * Comment Dialog functions * \*---------------------------------------------------------------------------*/ LRESULT CALLBACK CommentDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static HANDLE hwndText = NULL; int len, newSizeX, newSizeY; static int sizeX, sizeY; char *str; RECT rect; MINMAXINFO *mmi; switch (message) { case WM_INITDIALOG: /* message: initialize dialog box */ /* Initialize the dialog items */ Translate(hDlg, DLG_EditComment); hwndText = GetDlgItem(hDlg, OPT_CommentText); SetDlgItemText(hDlg, OPT_CommentText, commentText); EnableWindow(GetDlgItem(hDlg, OPT_CancelComment), editComment); EnableWindow(GetDlgItem(hDlg, OPT_ClearComment), editComment); EnableWindow(GetDlgItem(hDlg, OPT_EditComment), !editComment); SendMessage(hwndText, EM_SETREADONLY, !editComment, 0); SetWindowText(hDlg, commentTitle); if (editComment) { SetFocus(hwndText); } else { SetFocus(GetDlgItem(hDlg, IDOK)); } SendMessage(GetDlgItem(hDlg, OPT_CommentText), WM_SETFONT, (WPARAM)font[boardSize][COMMENT_FONT]->hf, MAKELPARAM(FALSE, 0)); /* Size and position the dialog */ if (!commentDialog) { commentDialog = hDlg; GetClientRect(hDlg, &rect); sizeX = rect.right; sizeY = rect.bottom; if (wpComment.x != CW_USEDEFAULT && wpComment.y != CW_USEDEFAULT && wpComment.width != CW_USEDEFAULT && wpComment.height != CW_USEDEFAULT) { WINDOWPLACEMENT wp; EnsureOnScreen(&wpComment.x, &wpComment.y, 0, 0); wp.length = sizeof(WINDOWPLACEMENT); wp.flags = 0; wp.showCmd = SW_SHOW; wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0; wp.rcNormalPosition.left = wpComment.x; wp.rcNormalPosition.right = wpComment.x + wpComment.width; wp.rcNormalPosition.top = wpComment.y; wp.rcNormalPosition.bottom = wpComment.y + wpComment.height; SetWindowPlacement(hDlg, &wp); GetClientRect(hDlg, &rect); newSizeX = rect.right; newSizeY = rect.bottom; ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY, newSizeX, newSizeY); sizeX = newSizeX; sizeY = newSizeY; } } SendDlgItemMessage( hDlg, OPT_CommentText, EM_SETEVENTMASK, 0, ENM_MOUSEEVENTS | ENM_KEYEVENTS ); return FALSE; case WM_COMMAND: /* message: received a command */ switch (LOWORD(wParam)) { case IDOK: if (editComment) { char *p, *q; /* Read changed options from the dialog box */ hwndText = GetDlgItem(hDlg, OPT_CommentText); len = GetWindowTextLength(hwndText); str = (char *) malloc(len + 1); GetWindowText(hwndText, str, len + 1); p = q = str; while (*q) { if (*q == '\r') q++; else *p++ = *q++; } *p = NULLCHAR; ReplaceComment(commentIndex, str); free(str); } CommentPopDown(); return TRUE; case IDCANCEL: case OPT_CancelComment: CommentPopDown(); return TRUE; case OPT_ClearComment: SetDlgItemText(hDlg, OPT_CommentText, ""); break; case OPT_EditComment: EditCommentEvent(); return TRUE; default: break; } break; case WM_NOTIFY: // [HGM] vari: cloned from whistory.c if( wParam == OPT_CommentText ) { MSGFILTER * lpMF = (MSGFILTER *) lParam; if( lpMF->msg == WM_RBUTTONDOWN && (lpMF->wParam & (MK_CONTROL | MK_SHIFT)) == 0 || lpMF->msg == WM_CHAR && lpMF->wParam == '\022' ) { POINTL pt; LRESULT index; pt.x = LOWORD( lpMF->lParam ); pt.y = HIWORD( lpMF->lParam ); if(lpMF->msg == WM_CHAR) { CHARRANGE sel; SendDlgItemMessage( hDlg, OPT_CommentText, EM_EXGETSEL, 0, (LPARAM) &sel ); index = sel.cpMin; } else index = SendDlgItemMessage( hDlg, OPT_CommentText, EM_CHARFROMPOS, 0, (LPARAM) &pt ); hwndText = GetDlgItem(hDlg, OPT_CommentText); // cloned from above len = GetWindowTextLength(hwndText); str = (char *) malloc(len + 1); GetWindowText(hwndText, str, len + 1); ReplaceComment(commentIndex, str); if(commentIndex != currentMove) ToNrEvent(commentIndex); LoadVariation( index, str ); // [HGM] also does the actual moving to it, now free(str); /* Zap the message for good: apparently, returning non-zero is not enough */ lpMF->msg = WM_USER; return TRUE; } } break; case WM_SIZE: newSizeX = LOWORD(lParam); newSizeY = HIWORD(lParam); ResizeEditPlusButtons(hDlg, hwndText, sizeX, sizeY, newSizeX, newSizeY); sizeX = newSizeX; sizeY = newSizeY; break; case WM_GETMINMAXINFO: /* Prevent resizing window too small */ mmi = (MINMAXINFO *) lParam; mmi->ptMinTrackSize.x = 100; mmi->ptMinTrackSize.y = 100; break; } return FALSE; } VOID EitherCommentPopUp(int index, char *title, char *str, BOOLEAN edit) { FARPROC lpProc; char *p, *q; CheckMenuItem(GetMenu(hwndMain), IDM_Comment, edit ? MF_CHECKED : MF_UNCHECKED); if (str == NULL) str = ""; p = (char *) malloc(2 * strlen(str) + 2); q = p; while (*str) { if (*str == '\n') *q++ = '\r'; *q++ = *str++; } *q = NULLCHAR; if (commentText != NULL) free(commentText); commentIndex = index; commentTitle = title; commentText = p; editComment = edit; if (commentDialog) { SendMessage(commentDialog, WM_INITDIALOG, 0, 0); if (!commentUp) ShowWindow(commentDialog, SW_SHOW); } else { lpProc = MakeProcInstance((FARPROC)CommentDialog, hInst); CreateDialog(hInst, MAKEINTRESOURCE(DLG_EditComment), hwndMain, (DLGPROC)lpProc); FreeProcInstance(lpProc); } commentUp = TRUE; } /*---------------------------------------------------------------------------*\ * * Type-in move dialog functions * \*---------------------------------------------------------------------------*/ LRESULT CALLBACK TypeInMoveDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char move[MSG_SIZ]; HWND hInput; switch (message) { case WM_INITDIALOG: move[0] = (char) lParam; move[1] = NULLCHAR; CenterWindowEx(hDlg, GetWindow(hDlg, GW_OWNER), 1 ); Translate(hDlg, DLG_TypeInMove); hInput = GetDlgItem(hDlg, OPT_Move); SetWindowText(hInput, move); SetFocus(hInput); SendMessage(hInput, EM_SETSEL, (WPARAM)9999, (LPARAM)9999); return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: shiftKey = GetKeyState(VK_SHIFT) < 0; // [HGM] remember last shift status GetDlgItemText(hDlg, OPT_Move, move, sizeof(move)); TypeInDoneEvent(move); EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: break; } break; } return FALSE; } VOID PopUpMoveDialog(char firstchar) { FARPROC lpProc; lpProc = MakeProcInstance((FARPROC)TypeInMoveDialog, hInst); DialogBoxParam(hInst, MAKEINTRESOURCE(DLG_TypeInMove), hwndMain, (DLGPROC)lpProc, (LPARAM)firstchar); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * Type-in name dialog functions * \*---------------------------------------------------------------------------*/ LRESULT CALLBACK TypeInNameDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { char move[MSG_SIZ]; HWND hInput; switch (message) { case WM_INITDIALOG: move[0] = (char) lParam; move[1] = NULLCHAR; CenterWindowEx(hDlg, GetWindow(hDlg, GW_OWNER), 1 ); Translate(hDlg, DLG_TypeInName); hInput = GetDlgItem(hDlg, OPT_Name); SetWindowText(hInput, move); SetFocus(hInput); SendMessage(hInput, EM_SETSEL, (WPARAM)9999, (LPARAM)9999); return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: GetDlgItemText(hDlg, OPT_Name, move, sizeof(move)); appData.userName = strdup(move); SetUserLogo(); DisplayLogos(); SetGameInfo(); if(gameMode == MachinePlaysWhite || gameMode == MachinePlaysBlack) { snprintf(move, MSG_SIZ, "%s vs. %s", gameInfo.white, gameInfo.black); DisplayTitle(move); } EndDialog(hDlg, TRUE); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: break; } break; } return FALSE; } VOID PopUpNameDialog(char firstchar) { FARPROC lpProc; lpProc = MakeProcInstance((FARPROC)TypeInNameDialog, hInst); DialogBoxParam(hInst, MAKEINTRESOURCE(DLG_TypeInName), hwndMain, (DLGPROC)lpProc, (LPARAM)firstchar); FreeProcInstance(lpProc); } /*---------------------------------------------------------------------------*\ * * Error dialogs * \*---------------------------------------------------------------------------*/ /* Nonmodal error box */ LRESULT CALLBACK ErrorDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); VOID ErrorPopUp(char *title, char *content) { FARPROC lpProc; char *p, *q; BOOLEAN modal = hwndMain == NULL; p = content; q = errorMessage; while (*p) { if (*p == '\n') { if (modal) { *q++ = ' '; p++; } else { *q++ = '\r'; *q++ = *p++; } } else { *q++ = *p++; } } *q = NULLCHAR; strncpy(errorTitle, title, sizeof(errorTitle)); errorTitle[sizeof(errorTitle) - 1] = '\0'; if (modal) { MessageBox(NULL, errorMessage, errorTitle, MB_OK|MB_ICONEXCLAMATION); } else { lpProc = MakeProcInstance((FARPROC)ErrorDialog, hInst); CreateDialog(hInst, MAKEINTRESOURCE(DLG_Error), hwndMain, (DLGPROC)lpProc); FreeProcInstance(lpProc); } } VOID ErrorPopDown() { if (!appData.popupMoveErrors && moveErrorMessageUp) DisplayMessage("", ""); if (errorDialog == NULL) return; DestroyWindow(errorDialog); errorDialog = NULL; if(errorExitStatus) ExitEvent(errorExitStatus); } LRESULT CALLBACK ErrorDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { RECT rChild; switch (message) { case WM_INITDIALOG: GetWindowRect(hDlg, &rChild); /* SetWindowPos(hDlg, NULL, rChild.left, rChild.top + boardRect.top - (rChild.bottom - rChild.top), 0, 0, SWP_NOZORDER|SWP_NOSIZE); */ /* [AS] It seems that the above code wants to move the dialog up in the "caption area" of the main window, but it uses the dialog height as an hard-coded constant, and it doesn't work when you resize the dialog. For now, just give it a default position. */ SetWindowPos(hDlg, NULL, boardRect.left+8, boardRect.top+8, 0, 0, SWP_NOZORDER|SWP_NOSIZE); Translate(hDlg, DLG_Error); errorDialog = hDlg; SetWindowText(hDlg, errorTitle); SetDlgItemText(hDlg, OPT_ErrorText, errorMessage); return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: if (errorDialog == hDlg) errorDialog = NULL; DestroyWindow(hDlg); return TRUE; default: break; } break; } return FALSE; } #ifdef GOTHIC HWND gothicDialog = NULL; LRESULT CALLBACK GothicDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { RECT rChild; int height = GetSystemMetrics(SM_CYCAPTION)+GetSystemMetrics(SM_CYFRAME); switch (message) { case WM_INITDIALOG: GetWindowRect(hDlg, &rChild); SetWindowPos(hDlg, NULL, wpMain.x, wpMain.y-height, wpMain.width, height, SWP_NOZORDER); /* [AS] It seems that the above code wants to move the dialog up in the "caption area" of the main window, but it uses the dialog height as an hard-coded constant, and it doesn't work when you resize the dialog. For now, just give it a default position. */ gothicDialog = hDlg; SetWindowText(hDlg, errorTitle); SetDlgItemText(hDlg, OPT_ErrorText, errorMessage); return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: if (errorDialog == hDlg) errorDialog = NULL; DestroyWindow(hDlg); return TRUE; default: break; } break; } return FALSE; } VOID GothicPopUp(char *title, VariantClass variant) { FARPROC lpProc; static char *lastTitle; strncpy(errorTitle, title, sizeof(errorTitle)); errorTitle[sizeof(errorTitle) - 1] = '\0'; if(lastTitle != title && gothicDialog != NULL) { DestroyWindow(gothicDialog); gothicDialog = NULL; } if(variant != VariantNormal && gothicDialog == NULL) { title = lastTitle; lpProc = MakeProcInstance((FARPROC)GothicDialog, hInst); CreateDialog(hInst, MAKEINTRESOURCE(DLG_Error), hwndMain, (DLGPROC)lpProc); FreeProcInstance(lpProc); } } #endif /*---------------------------------------------------------------------------*\ * * Ics Interaction console functions * \*---------------------------------------------------------------------------*/ #define HISTORY_SIZE 64 static char *history[HISTORY_SIZE]; int histIn = 0, histP = 0; VOID SaveInHistory(char *cmd) { if (history[histIn] != NULL) { free(history[histIn]); history[histIn] = NULL; } if (*cmd == NULLCHAR) return; history[histIn] = StrSave(cmd); histIn = (histIn + 1) % HISTORY_SIZE; if (history[histIn] != NULL) { free(history[histIn]); history[histIn] = NULL; } histP = histIn; } char * PrevInHistory(char *cmd) { int newhp; if (histP == histIn) { if (history[histIn] != NULL) free(history[histIn]); history[histIn] = StrSave(cmd); } newhp = (histP - 1 + HISTORY_SIZE) % HISTORY_SIZE; if (newhp == histIn || history[newhp] == NULL) return NULL; histP = newhp; return history[histP]; } char * NextInHistory() { if (histP == histIn) return NULL; histP = (histP + 1) % HISTORY_SIZE; return history[histP]; } HMENU LoadIcsTextMenu(IcsTextMenuEntry *e) { HMENU hmenu, h; int i = 0; hmenu = LoadMenu(hInst, "TextMenu"); h = GetSubMenu(hmenu, 0); while (e->item) { if (strcmp(e->item, "-") == 0) { AppendMenu(h, MF_SEPARATOR, 0, 0); } else { // [HGM] re-written a bit to use only one AppendMenu call for both cases (| or no |) int flags = MF_STRING, j = 0; if (e->item[0] == '|') { flags |= MF_MENUBARBREAK; j++; } if(!strcmp(e->command, "none")) flags |= MF_GRAYED; // [HGM] chatclick: provide inactive dummy AppendMenu(h, flags, IDM_CommandX + i, e->item + j); } e++; i++; } return hmenu; } WNDPROC consoleTextWindowProc; void CommandX(HWND hwnd, char *command, BOOLEAN getname, BOOLEAN immediate) { char buf[MSG_SIZ], name[MSG_SIZ]; HWND hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput); CHARRANGE sel; if (!getname) { SetWindowText(hInput, command); if (immediate) { SendMessage(hInput, WM_CHAR, '\r', 0); } else { sel.cpMin = 999999; sel.cpMax = 999999; SendMessage(hInput, EM_EXSETSEL, 0, (LPARAM)&sel); SetFocus(hInput); } return; } SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM)&sel); if (sel.cpMin == sel.cpMax) { /* Expand to surrounding word */ TEXTRANGE tr; do { tr.chrg.cpMax = sel.cpMin; tr.chrg.cpMin = --sel.cpMin; if (sel.cpMin < 0) break; tr.lpstrText = name; SendMessage(hwnd, EM_GETTEXTRANGE, 0, (LPARAM) &tr); } while (isalpha(name[0]) || isdigit(name[0]) || name[0] == '-'); sel.cpMin++; do { tr.chrg.cpMin = sel.cpMax; tr.chrg.cpMax = ++sel.cpMax; tr.lpstrText = name; if (SendMessage(hwnd, EM_GETTEXTRANGE, 0, (LPARAM) &tr) < 1) break; } while (isalpha(name[0]) || isdigit(name[0]) || name[0] == '-'); sel.cpMax--; if (sel.cpMax == sel.cpMin || sel.cpMax - sel.cpMin > MSG_SIZ/2) { MessageBeep(MB_ICONEXCLAMATION); return; } tr.chrg = sel; tr.lpstrText = name; SendMessage(hwnd, EM_GETTEXTRANGE, 0, (LPARAM) &tr); } else { if (sel.cpMax - sel.cpMin > MSG_SIZ/2) { MessageBeep(MB_ICONEXCLAMATION); return; } SendMessage(hwnd, EM_GETSELTEXT, 0, (LPARAM) name); } if (immediate) { if(strstr(command, "%s")) snprintf(buf, MSG_SIZ, command, name); else snprintf(buf, MSG_SIZ, "%s %s", command, name); SetWindowText(hInput, buf); SendMessage(hInput, WM_CHAR, '\r', 0); } else { if(!strcmp(command, "chat")) { ChatPopUp(name); return; } snprintf(buf, MSG_SIZ, "%s %s ", command, name); /* trailing space */ SetWindowText(hInput, buf); sel.cpMin = 999999; sel.cpMax = 999999; SendMessage(hInput, EM_EXSETSEL, 0, (LPARAM)&sel); SetFocus(hInput); } } LRESULT CALLBACK ConsoleTextSubclass(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HWND hInput; CHARRANGE sel; switch (message) { case WM_KEYDOWN: if (!(GetKeyState(VK_CONTROL) & ~1)) break; if(wParam=='R') return 0; switch (wParam) { case VK_PRIOR: SendMessage(hwnd, EM_LINESCROLL, 0, -999999); return 0; case VK_NEXT: sel.cpMin = 999999; sel.cpMax = 999999; SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel); SendMessage(hwnd, EM_SCROLLCARET, 0, 0); return 0; } break; case WM_CHAR: if(wParam != '\022') { if (wParam == '\t') { if (GetKeyState(VK_SHIFT) < 0) { /* shifted */ if (IsIconic(hwndMain)) ShowWindow(hwndMain, SW_RESTORE); if (buttonDesc[0].hwnd) { SetFocus(buttonDesc[0].hwnd); } else { SetFocus(hwndMain); } } else { /* unshifted */ SetFocus(GetDlgItem(hwndConsole, OPT_ConsoleInput)); } } else { hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput); JAWS_DELETE( SetFocus(hInput); ) SendMessage(hInput, message, wParam, lParam); } return 0; } // [HGM] navigate: for Ctrl+R, flow into next case (moved up here) to summon up menu lParam = -1; case WM_RBUTTONDOWN: if (!(GetKeyState(VK_SHIFT) & ~1)) { /* Move selection here if it was empty */ POINT pt; pt.x = LOWORD(lParam); pt.y = HIWORD(lParam); SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM)&sel); if (sel.cpMin == sel.cpMax) { if(lParam != -1) sel.cpMin = SendMessage(hwnd, EM_CHARFROMPOS, 0, (LPARAM)&pt); /*doc is wrong*/ sel.cpMax = sel.cpMin; SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel); } SendMessage(hwnd, EM_HIDESELECTION, FALSE, FALSE); { // [HGM] chatclick: code moved here from WM_RBUTTONUP case, to have menu appear on down-click POINT pt; HMENU hmenu = LoadIcsTextMenu(icsTextMenuEntry); SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM)&sel); if (sel.cpMin == sel.cpMax) { EnableMenuItem(hmenu, IDM_Copy, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hmenu, IDM_QuickPaste, MF_BYCOMMAND|MF_GRAYED); } if (!IsClipboardFormatAvailable(CF_TEXT)) { EnableMenuItem(hmenu, IDM_Paste, MF_BYCOMMAND|MF_GRAYED); } pt.x = LOWORD(lParam)-30; // [HGM] chatclick: make menu pop up with pointer above upper-right item pt.y = HIWORD(lParam)-10; // make it appear as if mouse moved there, so it will be selected on up-click PostMessage(hwnd, WM_MOUSEMOVE, wParam, lParam+5); MenuPopup(hwnd, pt, hmenu, -1); } } return 0; case WM_RBUTTONUP: if (GetKeyState(VK_SHIFT) & ~1) { SendDlgItemMessage(hwndConsole, OPT_ConsoleText, WM_COMMAND, MAKEWPARAM(IDM_QuickPaste, 0), 0); } return 0; case WM_PASTE: hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput); SetFocus(hInput); return SendMessage(hInput, message, wParam, lParam); case WM_MBUTTONDOWN: return SendMessage(hwnd, WM_COMMAND, MAKEWPARAM(IDM_QuickPaste, 0), 0); case WM_COMMAND: switch (LOWORD(wParam)) { case IDM_QuickPaste: { SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM)&sel); if (sel.cpMin == sel.cpMax) { MessageBeep(MB_ICONEXCLAMATION); return 0; } SendMessage(hwnd, WM_COPY, 0, 0); hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput); SendMessage(hInput, WM_PASTE, 0, 0); SetFocus(hInput); return 0; } case IDM_Cut: SendMessage(hwnd, WM_CUT, 0, 0); return 0; case IDM_Paste: SendMessage(hwnd, WM_PASTE, 0, 0); return 0; case IDM_Copy: SendMessage(hwnd, WM_COPY, 0, 0); return 0; default: { int i = LOWORD(wParam) - IDM_CommandX; if (i >= 0 && i < ICS_TEXT_MENU_SIZE && icsTextMenuEntry[i].command != NULL) { CommandX(hwnd, icsTextMenuEntry[i].command, icsTextMenuEntry[i].getname, icsTextMenuEntry[i].immediate); return 0; } } break; } break; } return (*consoleTextWindowProc)(hwnd, message, wParam, lParam); } WNDPROC consoleInputWindowProc; LRESULT CALLBACK ConsoleInputSubclass(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { char buf[MSG_SIZ]; char *p; static BOOL sendNextChar = FALSE; static BOOL quoteNextChar = FALSE; InputSource *is = consoleInputSource; CHARFORMAT cf; CHARRANGE sel; switch (message) { case WM_CHAR: if (!appData.localLineEditing || sendNextChar) { is->buf[0] = (CHAR) wParam; is->count = 1; SendMessage(hwndMain, WM_USER_Input, 0, (LPARAM) is); sendNextChar = FALSE; return 0; } if (quoteNextChar) { buf[0] = (char) wParam; buf[1] = NULLCHAR; SendMessage(hwnd, EM_REPLACESEL, TRUE, (LPARAM) buf); quoteNextChar = FALSE; return 0; } switch (wParam) { case '\r': /* Enter key */ is->count = GetWindowText(hwnd, is->buf, INPUT_SOURCE_BUF_SIZE-1); if (consoleEcho) SaveInHistory(is->buf); is->buf[is->count++] = '\n'; is->buf[is->count] = NULLCHAR; SendMessage(hwndMain, WM_USER_Input, 0, (LPARAM) is); if (consoleEcho) { ConsoleOutput(is->buf, is->count, TRUE); } else if (appData.localLineEditing) { ConsoleOutput("\n", 1, TRUE); } /* fall thru */ case '\033': /* Escape key */ SetWindowText(hwnd, ""); cf.cbSize = sizeof(CHARFORMAT); cf.dwMask = CFM_COLOR|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT; if (consoleEcho) { cf.crTextColor = textAttribs[ColorNormal].color; } else { cf.crTextColor = COLOR_ECHOOFF; } cf.dwEffects = textAttribs[ColorNormal].effects; SendMessage(hwnd, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf); return 0; case '\t': /* Tab key */ if (GetKeyState(VK_SHIFT) < 0) { /* shifted */ SetFocus(GetDlgItem(hwndConsole, OPT_ConsoleText)); } else { /* unshifted */ if (IsIconic(hwndMain)) ShowWindow(hwndMain, SW_RESTORE); if (buttonDesc[0].hwnd) { SetFocus(buttonDesc[0].hwnd); } else { SetFocus(hwndMain); } } return 0; case '\023': /* Ctrl+S */ sendNextChar = TRUE; return 0; case '\021': /* Ctrl+Q */ quoteNextChar = TRUE; return 0; JAWS_REPLAY default: break; } break; case WM_KEYDOWN: switch (wParam) { case VK_UP: GetWindowText(hwnd, buf, MSG_SIZ); p = PrevInHistory(buf); if (p != NULL) { SetWindowText(hwnd, p); sel.cpMin = 999999; sel.cpMax = 999999; SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel); return 0; } break; case VK_DOWN: p = NextInHistory(); if (p != NULL) { SetWindowText(hwnd, p); sel.cpMin = 999999; sel.cpMax = 999999; SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel); return 0; } break; case VK_HOME: case VK_END: if (!(GetKeyState(VK_CONTROL) & ~1)) break; /* fall thru */ case VK_PRIOR: case VK_NEXT: SendDlgItemMessage(hwndConsole, OPT_ConsoleText, message, wParam, lParam); return 0; } break; case WM_MBUTTONDOWN: SendDlgItemMessage(hwndConsole, OPT_ConsoleText, WM_COMMAND, MAKEWPARAM(IDM_QuickPaste, 0), 0); break; case WM_RBUTTONUP: if (GetKeyState(VK_SHIFT) & ~1) { SendDlgItemMessage(hwndConsole, OPT_ConsoleText, WM_COMMAND, MAKEWPARAM(IDM_QuickPaste, 0), 0); } else { POINT pt; HMENU hmenu; hmenu = LoadMenu(hInst, "InputMenu"); SendMessage(hwnd, EM_EXGETSEL, 0, (LPARAM)&sel); if (sel.cpMin == sel.cpMax) { EnableMenuItem(hmenu, IDM_Copy, MF_BYCOMMAND|MF_GRAYED); EnableMenuItem(hmenu, IDM_Cut, MF_BYCOMMAND|MF_GRAYED); } if (!IsClipboardFormatAvailable(CF_TEXT)) { EnableMenuItem(hmenu, IDM_Paste, MF_BYCOMMAND|MF_GRAYED); } pt.x = LOWORD(lParam); pt.y = HIWORD(lParam); MenuPopup(hwnd, pt, hmenu, -1); } return 0; case WM_COMMAND: switch (LOWORD(wParam)) { case IDM_Undo: SendMessage(hwnd, EM_UNDO, 0, 0); return 0; case IDM_SelectAll: sel.cpMin = 0; sel.cpMax = -1; /*999999?*/ SendMessage(hwnd, EM_EXSETSEL, 0, (LPARAM)&sel); return 0; case IDM_Cut: SendMessage(hwnd, WM_CUT, 0, 0); return 0; case IDM_Paste: SendMessage(hwnd, WM_PASTE, 0, 0); return 0; case IDM_Copy: SendMessage(hwnd, WM_COPY, 0, 0); return 0; } break; } return (*consoleInputWindowProc)(hwnd, message, wParam, lParam); } #define CO_MAX 100000 #define CO_TRIM 1000 LRESULT CALLBACK ConsoleWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static SnapData sd; HWND hText, hInput; RECT rect; static int sizeX, sizeY; int newSizeX, newSizeY; MINMAXINFO *mmi; WORD wMask; hText = GetDlgItem(hDlg, OPT_ConsoleText); hInput = GetDlgItem(hDlg, OPT_ConsoleInput); switch (message) { case WM_NOTIFY: if (((NMHDR*)lParam)->code == EN_LINK) { ENLINK *pLink = (ENLINK*)lParam; if (pLink->msg == WM_LBUTTONUP) { TEXTRANGE tr; tr.chrg = pLink->chrg; tr.lpstrText = malloc(1+tr.chrg.cpMax-tr.chrg.cpMin); SendMessage(hText, EM_GETTEXTRANGE, 0, (LPARAM)&tr); ShellExecute(NULL, "open", tr.lpstrText, NULL, NULL, SW_SHOW); free(tr.lpstrText); } } break; case WM_INITDIALOG: /* message: initialize dialog box */ hwndConsole = hDlg; SetFocus(hInput); consoleTextWindowProc = (WNDPROC) SetWindowLongPtr(hText, GWLP_WNDPROC, (LONG_PTR) ConsoleTextSubclass); SendMessage(hText, EM_SETBKGNDCOLOR, FALSE, consoleBackgroundColor); consoleInputWindowProc = (WNDPROC) SetWindowLongPtr(hInput, GWLP_WNDPROC, (LONG_PTR) ConsoleInputSubclass); SendMessage(hInput, EM_SETBKGNDCOLOR, FALSE, consoleBackgroundColor); Colorize(ColorNormal, TRUE); SendMessage(hInput, EM_SETCHARFORMAT, SCF_ALL, (LPARAM) &consoleCF); ChangedConsoleFont(); GetClientRect(hDlg, &rect); sizeX = rect.right; sizeY = rect.bottom; if (wpConsole.x != CW_USEDEFAULT && wpConsole.y != CW_USEDEFAULT && wpConsole.width != CW_USEDEFAULT && wpConsole.height != CW_USEDEFAULT) { WINDOWPLACEMENT wp; EnsureOnScreen(&wpConsole.x, &wpConsole.y, 0, 0); wp.length = sizeof(WINDOWPLACEMENT); wp.flags = 0; wp.showCmd = SW_SHOW; wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0; wp.rcNormalPosition.left = wpConsole.x; wp.rcNormalPosition.right = wpConsole.x + wpConsole.width; wp.rcNormalPosition.top = wpConsole.y; wp.rcNormalPosition.bottom = wpConsole.y + wpConsole.height; SetWindowPlacement(hDlg, &wp); } // [HGM] Chessknight's change 2004-07-13 else { /* Determine Defaults */ WINDOWPLACEMENT wp; wpConsole.x = wpMain.width + 1; wpConsole.y = wpMain.y; wpConsole.width = screenWidth - wpMain.width; wpConsole.height = wpMain.height; EnsureOnScreen(&wpConsole.x, &wpConsole.y, 0, 0); wp.length = sizeof(WINDOWPLACEMENT); wp.flags = 0; wp.showCmd = SW_SHOW; wp.ptMaxPosition.x = wp.ptMaxPosition.y = 0; wp.rcNormalPosition.left = wpConsole.x; wp.rcNormalPosition.right = wpConsole.x + wpConsole.width; wp.rcNormalPosition.top = wpConsole.y; wp.rcNormalPosition.bottom = wpConsole.y + wpConsole.height; SetWindowPlacement(hDlg, &wp); } // Allow hText to highlight URLs and send notifications on them wMask = (WORD) SendMessage(hText, EM_GETEVENTMASK, 0, 0L); SendMessage(hText, EM_SETEVENTMASK, 0, wMask | ENM_LINK); SendMessage(hText, EM_AUTOURLDETECT, TRUE, 0L); SetWindowLongPtr(hText, GWLP_USERDATA, 79); // initialize the text window's width return FALSE; case WM_SETFOCUS: SetFocus(hInput); return 0; case WM_CLOSE: ExitEvent(0); /* not reached */ break; case WM_SIZE: if (IsIconic(hDlg)) break; newSizeX = LOWORD(lParam); newSizeY = HIWORD(lParam); if (sizeX != newSizeX || sizeY != newSizeY) { RECT rectText, rectInput; POINT pt; int newTextHeight, newTextWidth; GetWindowRect(hText, &rectText); newTextWidth = rectText.right - rectText.left + newSizeX - sizeX; newTextHeight = rectText.bottom - rectText.top + newSizeY - sizeY; if (newTextHeight < 0) { newSizeY += -newTextHeight; newTextHeight = 0; } SetWindowPos(hText, NULL, 0, 0, newTextWidth, newTextHeight, SWP_NOZORDER|SWP_NOMOVE); GetWindowRect(hInput, &rectInput); /* gives screen coords */ pt.x = rectInput.left; pt.y = rectInput.top + newSizeY - sizeY; ScreenToClient(hDlg, &pt); SetWindowPos(hInput, NULL, pt.x, pt.y, /* needs client coords */ rectInput.right - rectInput.left + newSizeX - sizeX, rectInput.bottom - rectInput.top, SWP_NOZORDER); } sizeX = newSizeX; sizeY = newSizeY; break; case WM_GETMINMAXINFO: /* Prevent resizing window too small */ mmi = (MINMAXINFO *) lParam; mmi->ptMinTrackSize.x = 100; mmi->ptMinTrackSize.y = 100; break; /* [AS] Snapping */ case WM_ENTERSIZEMOVE: return OnEnterSizeMove( &sd, hDlg, wParam, lParam ); case WM_SIZING: return OnSizing( &sd, hDlg, wParam, lParam ); case WM_MOVING: return OnMoving( &sd, hDlg, wParam, lParam ); case WM_EXITSIZEMOVE: UpdateICSWidth(hText); return OnExitSizeMove( &sd, hDlg, wParam, lParam ); } return DefWindowProc(hDlg, message, wParam, lParam); } VOID ConsoleCreate() { HWND hCons; if (hwndConsole) return; hCons = CreateDialog(hInst, szConsoleName, 0, NULL); SendMessage(hCons, WM_INITDIALOG, 0, 0); } VOID ConsoleOutput(char* data, int length, int forceVisible) { HWND hText; int trim, exlen; char *p, *q; char buf[CO_MAX+1]; POINT pEnd; RECT rect; static int delayLF = 0; CHARRANGE savesel, sel; if (hwndConsole == NULL || length > CO_MAX-100 || length == 0) return; p = data; q = buf; if (delayLF) { *q++ = '\r'; *q++ = '\n'; delayLF = 0; } while (length--) { if (*p == '\n') { if (*++p) { *q++ = '\r'; *q++ = '\n'; } else { delayLF = 1; } } else if (*p == '\007') { MyPlaySound(&sounds[(int)SoundBell]); p++; } else { *q++ = *p++; } } *q = NULLCHAR; hText = GetDlgItem(hwndConsole, OPT_ConsoleText); SendMessage(hText, EM_HIDESELECTION, TRUE, FALSE); /* Save current selection */ SendMessage(hText, EM_EXGETSEL, 0, (LPARAM)&savesel); exlen = GetWindowTextLength(hText); /* Find out whether current end of text is visible */ SendMessage(hText, EM_GETRECT, 0, (LPARAM) &rect); SendMessage(hText, EM_POSFROMCHAR, (WPARAM) &pEnd, exlen); /* Trim existing text if it's too long */ if (exlen + (q - buf) > CO_MAX) { trim = (CO_TRIM > (q - buf)) ? CO_TRIM : (q - buf); sel.cpMin = 0; sel.cpMax = trim; SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel); SendMessage(hText, EM_REPLACESEL, 0, (LPARAM)""); exlen -= trim; savesel.cpMin -= trim; savesel.cpMax -= trim; if (exlen < 0) exlen = 0; if (savesel.cpMin < 0) savesel.cpMin = 0; if (savesel.cpMax < savesel.cpMin) savesel.cpMax = savesel.cpMin; } /* Append the new text */ sel.cpMin = exlen; sel.cpMax = exlen; SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel); SendMessage(hText, EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&consoleCF); SendMessage(hText, EM_REPLACESEL, 0, (LPARAM) buf); if (forceVisible || exlen == 0 || (rect.left <= pEnd.x && pEnd.x < rect.right && rect.top <= pEnd.y && pEnd.y < rect.bottom)) { /* Scroll to make new end of text visible if old end of text was visible or new text is an echo of user typein */ sel.cpMin = 9999999; sel.cpMax = 9999999; SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel); SendMessage(hText, EM_HIDESELECTION, FALSE, FALSE); SendMessage(hText, EM_SCROLLCARET, 0, 0); SendMessage(hText, EM_HIDESELECTION, TRUE, FALSE); } if (savesel.cpMax == exlen || forceVisible) { /* Move insert point to new end of text if it was at the old end of text or if the new text is an echo of user typein */ sel.cpMin = 9999999; sel.cpMax = 9999999; SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&sel); } else { /* Restore previous selection */ SendMessage(hText, EM_EXSETSEL, 0, (LPARAM)&savesel); } SendMessage(hText, EM_HIDESELECTION, FALSE, FALSE); } /*---------*/ void DisplayHoldingsCount(HDC hdc, int x, int y, int rightAlign, int copyNumber) { char buf[100]; char *str; COLORREF oldFg, oldBg; HFONT oldFont; RECT rect; if(copyNumber > 1) snprintf(buf, sizeof(buf)/sizeof(buf[0]),"%d", copyNumber); else buf[0] = 0; oldFg = SetTextColor(hdc, RGB(255, 255, 255)); /* white */ oldBg = SetBkColor(hdc, RGB(0, 0, 0)); /* black */ oldFont = SelectObject(hdc, font[boardSize][CLOCK_FONT]->hf); rect.left = x; rect.right = x + squareSize; rect.top = y; rect.bottom = y + squareSize; str = buf; ExtTextOut(hdc, x + MESSAGE_LINE_LEFTMARGIN + (rightAlign ? (squareSize*2)/3 : 0), y, ETO_CLIPPED|ETO_OPAQUE, &rect, str, strlen(str), NULL); (void) SetTextColor(hdc, oldFg); (void) SetBkColor(hdc, oldBg); (void) SelectObject(hdc, oldFont); } void DisplayAClock(HDC hdc, int timeRemaining, int highlight, RECT *rect, char *color, char *flagFell) { char buf[100]; char *str; COLORREF oldFg, oldBg; HFONT oldFont; if (twoBoards && partnerUp) return; if (appData.clockMode) { if (tinyLayout == 2) snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%c %s %s", color[0], TimeString(timeRemaining), flagFell); else snprintf(buf, sizeof(buf)/sizeof(buf[0]), "%s:%c%s %s", color, (logoHeight>0 ? 0 : ' '), TimeString(timeRemaining), flagFell); str = buf; } else { str = color; } if (highlight) { oldFg = SetTextColor(hdc, RGB(255, 255, 255)); /* white */ oldBg = SetBkColor(hdc, RGB(0, 0, 0)); /* black */ } else { oldFg = SetTextColor(hdc, RGB(0, 0, 0)); /* black */ oldBg = SetBkColor(hdc, RGB(255, 255, 255)); /* white */ } oldFont = SelectObject(hdc, font[boardSize][CLOCK_FONT]->hf); JAWS_SILENCE ExtTextOut(hdc, rect->left + MESSAGE_LINE_LEFTMARGIN, rect->top, ETO_CLIPPED|ETO_OPAQUE, rect, str, strlen(str), NULL); if(logoHeight > 0 && appData.clockMode) { RECT r; str += strlen(color)+2; r.top = rect->top + logoHeight/2; r.left = rect->left; r.right = rect->right; r.bottom = rect->bottom; ExtTextOut(hdc, rect->left + MESSAGE_LINE_LEFTMARGIN, r.top, ETO_CLIPPED|ETO_OPAQUE, &r, str, strlen(str), NULL); } (void) SetTextColor(hdc, oldFg); (void) SetBkColor(hdc, oldBg); (void) SelectObject(hdc, oldFont); } int DoReadFile(HANDLE hFile, char *buf, int count, DWORD *outCount, OVERLAPPED *ovl) { int ok, err; /* [AS] */ if( count <= 0 ) { if (appData.debugMode) { fprintf( debugFP, "DoReadFile: trying to read past end of buffer, overflow = %d\n", count ); } return ERROR_INVALID_USER_BUFFER; } ResetEvent(ovl->hEvent); ovl->Offset = ovl->OffsetHigh = 0; ok = ReadFile(hFile, buf, count, outCount, ovl); if (ok) { err = NO_ERROR; } else { err = GetLastError(); if (err == ERROR_IO_PENDING) { ok = GetOverlappedResult(hFile, ovl, outCount, TRUE); if (ok) err = NO_ERROR; else err = GetLastError(); } } return err; } int DoWriteFile(HANDLE hFile, char *buf, int count, DWORD *outCount, OVERLAPPED *ovl) { int ok, err; ResetEvent(ovl->hEvent); ovl->Offset = ovl->OffsetHigh = 0; ok = WriteFile(hFile, buf, count, outCount, ovl); if (ok) { err = NO_ERROR; } else { err = GetLastError(); if (err == ERROR_IO_PENDING) { ok = GetOverlappedResult(hFile, ovl, outCount, TRUE); if (ok) err = NO_ERROR; else err = GetLastError(); } } return err; } /* [AS] If input is line by line and a line exceed the buffer size, force an error */ void CheckForInputBufferFull( InputSource * is ) { if( is->lineByLine && (is->next - is->buf) >= INPUT_SOURCE_BUF_SIZE ) { /* Look for end of line */ char * p = is->buf; while( p < is->next && *p != '\n' ) { p++; } if( p >= is->next ) { if (appData.debugMode) { fprintf( debugFP, "Input line exceeded buffer size (source id=%lu)\n", is->id ); } is->error = ERROR_BROKEN_PIPE; /* [AS] Just any non-successful code! */ is->count = (DWORD) -1; is->next = is->buf; } } } DWORD InputThread(LPVOID arg) { InputSource *is; OVERLAPPED ovl; is = (InputSource *) arg; ovl.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); ovl.Internal = ovl.InternalHigh = ovl.Offset = ovl.OffsetHigh = 0; while (is->hThread != NULL) { is->error = DoReadFile(is->hFile, is->next, INPUT_SOURCE_BUF_SIZE - (is->next - is->buf), &is->count, &ovl); if (is->error == NO_ERROR) { is->next += is->count; } else { if (is->error == ERROR_BROKEN_PIPE) { /* Correct for MS brain damage. EOF reading a pipe is not an error. */ is->count = 0; } else { is->count = (DWORD) -1; /* [AS] The (is->count <= 0) check below is not useful for unsigned values! */ break; } } CheckForInputBufferFull( is ); SendMessage(hwndMain, WM_USER_Input, 0, (LPARAM) is); if( is->count == ((DWORD) -1) ) break; /* [AS] */ if (is->count <= 0) break; /* Quit on EOF or error */ } CloseHandle(ovl.hEvent); CloseHandle(is->hFile); if (appData.debugMode) { fprintf( debugFP, "Input thread terminated (id=%lu, error=%d, count=%ld)\n", is->id, is->error, is->count ); } return 0; } /* Windows 95 beta 2 won't let you do overlapped i/o on a console or pipe */ DWORD NonOvlInputThread(LPVOID arg) { InputSource *is; char *p, *q; int i; char prev; is = (InputSource *) arg; while (is->hThread != NULL) { is->error = ReadFile(is->hFile, is->next, INPUT_SOURCE_BUF_SIZE - (is->next - is->buf), &is->count, NULL) ? NO_ERROR : GetLastError(); if (is->error == NO_ERROR) { /* Change CRLF to LF */ if (is->next > is->buf) { p = is->next - 1; i = is->count + 1; } else { p = is->next; i = is->count; } q = p; prev = NULLCHAR; while (i > 0) { if (prev == '\r' && *p == '\n') { *(q-1) = '\n'; is->count--; } else { *q++ = *p; } prev = *p++; i--; } *q = NULLCHAR; is->next = q; } else { if (is->error == ERROR_BROKEN_PIPE) { /* Correct for MS brain damage. EOF reading a pipe is not an error. */ is->count = 0; } else { is->count = (DWORD) -1; } } CheckForInputBufferFull( is ); SendMessage(hwndMain, WM_USER_Input, 0, (LPARAM) is); if( is->count == ((DWORD) -1) ) break; /* [AS] */ if (is->count < 0) break; /* Quit on error */ } CloseHandle(is->hFile); return 0; } DWORD SocketInputThread(LPVOID arg) { InputSource *is; is = (InputSource *) arg; while (is->hThread != NULL) { is->count = recv(is->sock, is->buf, INPUT_SOURCE_BUF_SIZE, 0); if ((int)is->count == SOCKET_ERROR) { is->count = (DWORD) -1; is->error = WSAGetLastError(); } else { is->error = NO_ERROR; is->next += is->count; if (is->count == 0 && is->second == is) { /* End of file on stderr; quit with no message */ break; } } SendMessage(hwndMain, WM_USER_Input, 0, (LPARAM) is); if( is->count == ((DWORD) -1) ) break; /* [AS] */ if (is->count <= 0) break; /* Quit on EOF or error */ } return 0; } VOID InputEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { InputSource *is; is = (InputSource *) lParam; if (is->lineByLine) { /* Feed in lines one by one */ char *p = is->buf; char *q = p; while (q < is->next) { if (*q++ == '\n') { (is->func)(is, is->closure, p, q - p, NO_ERROR); p = q; } } /* Move any partial line to the start of the buffer */ q = is->buf; while (p < is->next) { *q++ = *p++; } is->next = q; if (is->error != NO_ERROR || is->count == 0) { /* Notify backend of the error. Note: If there was a partial line at the end, it is not flushed through. */ (is->func)(is, is->closure, is->buf, is->count, is->error); } } else { /* Feed in the whole chunk of input at once */ (is->func)(is, is->closure, is->buf, is->count, is->error); is->next = is->buf; } } /*---------------------------------------------------------------------------*\ * * Menu enables. Used when setting various modes. * \*---------------------------------------------------------------------------*/ typedef struct { int item; int flags; } Enables; VOID GreyRevert(Boolean grey) { // [HGM] vari: for retracting variations in local mode HMENU hmenu = GetMenu(hwndMain); EnableMenuItem(hmenu, IDM_Revert, MF_BYCOMMAND|(grey ? MF_GRAYED : MF_ENABLED)); EnableMenuItem(hmenu, IDM_Annotate, MF_BYCOMMAND|(grey ? MF_GRAYED : MF_ENABLED)); } VOID SetMenuEnables(HMENU hmenu, Enables *enab) { while (enab->item > 0) { (void) EnableMenuItem(hmenu, enab->item, enab->flags); enab++; } } Enables gnuEnables[] = { { IDM_MailMove, MF_BYCOMMAND|MF_GRAYED }, { IDM_ReloadCMailMsg, MF_BYCOMMAND|MF_GRAYED }, { IDM_IcsClient, MF_BYCOMMAND|MF_GRAYED }, { IDM_Accept, MF_BYCOMMAND|MF_GRAYED }, { IDM_Decline, MF_BYCOMMAND|MF_GRAYED }, { IDM_Rematch, MF_BYCOMMAND|MF_GRAYED }, { IDM_Adjourn, MF_BYCOMMAND|MF_GRAYED }, { IDM_StopExamining, MF_BYCOMMAND|MF_GRAYED }, { IDM_StopObserving, MF_BYCOMMAND|MF_GRAYED }, { IDM_Upload, MF_BYCOMMAND|MF_GRAYED }, { IDM_Revert, MF_BYCOMMAND|MF_GRAYED }, { IDM_Annotate, MF_BYCOMMAND|MF_GRAYED }, { IDM_NewChat, MF_BYCOMMAND|MF_GRAYED }, // Needed to switch from ncp to GNU mode on Engine Load { ACTION_POS, MF_BYPOSITION|MF_ENABLED }, { IDM_MachineWhite, MF_BYCOMMAND|MF_ENABLED }, { IDM_MachineBlack, MF_BYCOMMAND|MF_ENABLED }, { IDM_TwoMachines, MF_BYCOMMAND|MF_ENABLED }, { IDM_Match, MF_BYCOMMAND|MF_ENABLED }, { IDM_AnalysisMode, MF_BYCOMMAND|MF_ENABLED }, { IDM_AnalyzeFile, MF_BYCOMMAND|MF_ENABLED }, { IDM_Engine1Options, MF_BYCOMMAND|MF_ENABLED }, { IDM_Engine2Options, MF_BYCOMMAND|MF_ENABLED }, { IDM_TimeControl, MF_BYCOMMAND|MF_ENABLED }, { IDM_RetractMove, MF_BYCOMMAND|MF_ENABLED }, { IDM_MoveNow, MF_BYCOMMAND|MF_ENABLED }, { IDM_Hint, MF_BYCOMMAND|MF_ENABLED }, { IDM_Book, MF_BYCOMMAND|MF_ENABLED }, { -1, -1 } }; Enables icsEnables[] = { { IDM_MailMove, MF_BYCOMMAND|MF_GRAYED }, { IDM_ReloadCMailMsg, MF_BYCOMMAND|MF_GRAYED }, { IDM_MachineWhite, MF_BYCOMMAND|MF_GRAYED }, { IDM_MachineBlack, MF_BYCOMMAND|MF_GRAYED }, { IDM_TwoMachines, MF_BYCOMMAND|MF_GRAYED }, { IDM_Match, MF_BYCOMMAND|MF_GRAYED }, { IDM_MachineBoth, MF_BYCOMMAND|MF_GRAYED }, { IDM_AnalysisMode, MF_BYCOMMAND|MF_ENABLED }, { IDM_AnalyzeFile, MF_BYCOMMAND|MF_GRAYED }, { IDM_TimeControl, MF_BYCOMMAND|MF_GRAYED }, { IDM_MoveNow, MF_BYCOMMAND|MF_GRAYED }, { IDM_Hint, MF_BYCOMMAND|MF_GRAYED }, { IDM_Book, MF_BYCOMMAND|MF_GRAYED }, { IDM_LoadProg1, MF_BYCOMMAND|MF_GRAYED }, { IDM_LoadProg2, MF_BYCOMMAND|MF_GRAYED }, { IDM_IcsOptions, MF_BYCOMMAND|MF_ENABLED }, { IDM_Engine1Options, MF_BYCOMMAND|MF_GRAYED }, { IDM_Engine2Options, MF_BYCOMMAND|MF_GRAYED }, { IDM_Annotate, MF_BYCOMMAND|MF_GRAYED }, { IDM_Tourney, MF_BYCOMMAND|MF_GRAYED }, { -1, -1 } }; #if ZIPPY Enables zippyEnables[] = { { IDM_MoveNow, MF_BYCOMMAND|MF_ENABLED }, { IDM_Hint, MF_BYCOMMAND|MF_ENABLED }, { IDM_Book, MF_BYCOMMAND|MF_ENABLED }, { IDM_Engine1Options, MF_BYCOMMAND|MF_ENABLED }, { -1, -1 } }; #endif Enables ncpEnables[] = { { IDM_MailMove, MF_BYCOMMAND|MF_GRAYED }, { IDM_ReloadCMailMsg, MF_BYCOMMAND|MF_GRAYED }, { IDM_MachineWhite, MF_BYCOMMAND|MF_GRAYED }, { IDM_MachineBlack, MF_BYCOMMAND|MF_GRAYED }, { IDM_TwoMachines, MF_BYCOMMAND|MF_GRAYED }, { IDM_Match, MF_BYCOMMAND|MF_GRAYED }, { IDM_AnalysisMode, MF_BYCOMMAND|MF_GRAYED }, { IDM_AnalyzeFile, MF_BYCOMMAND|MF_GRAYED }, { IDM_IcsClient, MF_BYCOMMAND|MF_GRAYED }, { ACTION_POS, MF_BYPOSITION|MF_GRAYED }, { IDM_Revert, MF_BYCOMMAND|MF_GRAYED }, { IDM_Annotate, MF_BYCOMMAND|MF_GRAYED }, { IDM_MoveNow, MF_BYCOMMAND|MF_GRAYED }, { IDM_RetractMove, MF_BYCOMMAND|MF_GRAYED }, { IDM_TimeControl, MF_BYCOMMAND|MF_GRAYED }, { IDM_Hint, MF_BYCOMMAND|MF_GRAYED }, { IDM_Book, MF_BYCOMMAND|MF_GRAYED }, { IDM_MachineBoth, MF_BYCOMMAND|MF_GRAYED }, { IDM_NewChat, MF_BYCOMMAND|MF_GRAYED }, { IDM_Engine1Options, MF_BYCOMMAND|MF_GRAYED }, { IDM_Engine2Options, MF_BYCOMMAND|MF_GRAYED }, { IDM_Sounds, MF_BYCOMMAND|MF_GRAYED }, { -1, -1 } }; Enables trainingOnEnables[] = { { IDM_EditComment, MF_BYCOMMAND|MF_GRAYED }, { IDM_Comment, MF_BYCOMMAND|MF_GRAYED }, { IDM_Pause, MF_BYCOMMAND|MF_GRAYED }, { IDM_Forward, MF_BYCOMMAND|MF_GRAYED }, { IDM_Backward, MF_BYCOMMAND|MF_GRAYED }, { IDM_ToEnd, MF_BYCOMMAND|MF_GRAYED }, { IDM_ToStart, MF_BYCOMMAND|MF_GRAYED }, { IDM_MoveNow, MF_BYCOMMAND|MF_GRAYED }, { IDM_TruncateGame, MF_BYCOMMAND|MF_GRAYED }, { -1, -1 } }; Enables trainingOffEnables[] = { { IDM_EditComment, MF_BYCOMMAND|MF_ENABLED }, { IDM_Comment, MF_BYCOMMAND|MF_ENABLED }, { IDM_Pause, MF_BYCOMMAND|MF_ENABLED }, { IDM_Forward, MF_BYCOMMAND|MF_ENABLED }, { IDM_Backward, MF_BYCOMMAND|MF_ENABLED }, { IDM_ToEnd, MF_BYCOMMAND|MF_ENABLED }, { IDM_ToStart, MF_BYCOMMAND|MF_ENABLED }, { IDM_MoveNow, MF_BYCOMMAND|MF_ENABLED }, { IDM_TruncateGame, MF_BYCOMMAND|MF_ENABLED }, { -1, -1 } }; /* These modify either ncpEnables or gnuEnables */ Enables cmailEnables[] = { { IDM_MailMove, MF_BYCOMMAND|MF_ENABLED }, { IDM_ReloadCMailMsg, MF_BYCOMMAND|MF_ENABLED }, { ACTION_POS, MF_BYPOSITION|MF_ENABLED }, { IDM_CallFlag, MF_BYCOMMAND|MF_GRAYED }, { IDM_Draw, MF_BYCOMMAND|MF_ENABLED }, { IDM_Adjourn, MF_BYCOMMAND|MF_GRAYED }, { IDM_Abort, MF_BYCOMMAND|MF_GRAYED }, { -1, -1 } }; Enables machineThinkingEnables[] = { { IDM_LoadGame, MF_BYCOMMAND|MF_GRAYED }, { IDM_LoadNextGame, MF_BYCOMMAND|MF_GRAYED }, { IDM_LoadPrevGame, MF_BYCOMMAND|MF_GRAYED }, { IDM_ReloadGame, MF_BYCOMMAND|MF_GRAYED }, { IDM_PasteGame, MF_BYCOMMAND|MF_GRAYED }, { IDM_LoadPosition, MF_BYCOMMAND|MF_GRAYED }, { IDM_LoadNextPosition, MF_BYCOMMAND|MF_GRAYED }, { IDM_LoadPrevPosition, MF_BYCOMMAND|MF_GRAYED }, { IDM_ReloadPosition, MF_BYCOMMAND|MF_GRAYED }, { IDM_PastePosition, MF_BYCOMMAND|MF_GRAYED }, { IDM_MachineWhite, MF_BYCOMMAND|MF_GRAYED }, { IDM_MachineBlack, MF_BYCOMMAND|MF_GRAYED }, { IDM_TwoMachines, MF_BYCOMMAND|MF_GRAYED }, // { IDM_Match, MF_BYCOMMAND|MF_GRAYED }, { IDM_TypeInMove, MF_BYCOMMAND|MF_GRAYED }, { IDM_RetractMove, MF_BYCOMMAND|MF_GRAYED }, { -1, -1 } }; Enables userThinkingEnables[] = { { IDM_LoadGame, MF_BYCOMMAND|MF_ENABLED }, { IDM_LoadNextGame, MF_BYCOMMAND|MF_ENABLED }, { IDM_LoadPrevGame, MF_BYCOMMAND|MF_ENABLED }, { IDM_ReloadGame, MF_BYCOMMAND|MF_ENABLED }, { IDM_PasteGame, MF_BYCOMMAND|MF_ENABLED }, { IDM_LoadPosition, MF_BYCOMMAND|MF_ENABLED }, { IDM_LoadNextPosition, MF_BYCOMMAND|MF_ENABLED }, { IDM_LoadPrevPosition, MF_BYCOMMAND|MF_ENABLED }, { IDM_ReloadPosition, MF_BYCOMMAND|MF_ENABLED }, { IDM_PastePosition, MF_BYCOMMAND|MF_ENABLED }, { IDM_MachineWhite, MF_BYCOMMAND|MF_ENABLED }, { IDM_MachineBlack, MF_BYCOMMAND|MF_ENABLED }, { IDM_TwoMachines, MF_BYCOMMAND|MF_ENABLED }, // { IDM_Match, MF_BYCOMMAND|MF_ENABLED }, { IDM_TypeInMove, MF_BYCOMMAND|MF_ENABLED }, { IDM_RetractMove, MF_BYCOMMAND|MF_ENABLED }, { -1, -1 } }; /*---------------------------------------------------------------------------*\ * * Front-end interface functions exported by XBoard. * Functions appear in same order as prototypes in frontend.h. * \*---------------------------------------------------------------------------*/ VOID CheckMark(UINT item, int state) { if(item) CheckMenuItem(GetMenu(hwndMain), item, MF_BYCOMMAND|state); } VOID ModeHighlight() { static UINT prevChecked = 0; static int prevPausing = 0; UINT nowChecked; if (pausing != prevPausing) { prevPausing = pausing; (void) CheckMenuItem(GetMenu(hwndMain), IDM_Pause, MF_BYCOMMAND|(pausing ? MF_CHECKED : MF_UNCHECKED)); if (hwndPause) SetWindowText(hwndPause, pausing ? "C" : "P"); } switch (gameMode) { case BeginningOfGame: if (appData.icsActive) nowChecked = IDM_IcsClient; else if (appData.noChessProgram) nowChecked = IDM_EditGame; else nowChecked = IDM_MachineBlack; break; case MachinePlaysBlack: nowChecked = IDM_MachineBlack; break; case MachinePlaysWhite: nowChecked = IDM_MachineWhite; break; case TwoMachinesPlay: nowChecked = IDM_TwoMachines; break; case AnalyzeMode: nowChecked = IDM_AnalysisMode; break; case AnalyzeFile: nowChecked = IDM_AnalyzeFile; break; case EditGame: nowChecked = IDM_EditGame; break; case PlayFromGameFile: nowChecked = IDM_LoadGame; break; case EditPosition: nowChecked = IDM_EditPosition; break; case Training: nowChecked = IDM_Training; break; case IcsPlayingWhite: case IcsPlayingBlack: case IcsObserving: case IcsIdle: nowChecked = IDM_IcsClient; break; default: case EndOfGame: nowChecked = 0; break; } if(prevChecked == IDM_TwoMachines) // [HGM] 'Machine Match' might have gotten disabled when stopping match EnableMenuItem(GetMenu(hwndMain), IDM_Match, MF_BYCOMMAND|MF_ENABLED); CheckMark(prevChecked, MF_UNCHECKED); CheckMark(nowChecked, MF_CHECKED); CheckMark(IDM_Match, matchMode && matchGame < appData.matchGames ? MF_CHECKED : MF_UNCHECKED); if (nowChecked == IDM_LoadGame || nowChecked == IDM_Training) { (void) EnableMenuItem(GetMenu(hwndMain), IDM_Training, MF_BYCOMMAND|MF_ENABLED); } else { (void) EnableMenuItem(GetMenu(hwndMain), IDM_Training, MF_BYCOMMAND|MF_GRAYED); } prevChecked = nowChecked; /* [DM] icsEngineAnalyze - Do a sceure check too */ if (appData.icsActive) { if (appData.icsEngineAnalyze) { CheckMark(IDM_AnalysisMode, MF_CHECKED); } else { CheckMark(IDM_AnalysisMode, MF_UNCHECKED); } } DisplayLogos(); // [HGM] logos: mode change could have altered logos } VOID SetICSMode() { HMENU hmenu = GetMenu(hwndMain); SetMenuEnables(hmenu, icsEnables); EnableMenuItem(GetSubMenu(hmenu, OPTIONS_POS), IDM_IcsOptions, MF_BYCOMMAND|MF_ENABLED); #if ZIPPY if (appData.zippyPlay) { SetMenuEnables(hmenu, zippyEnables); if (!appData.noChessProgram) /* [DM] icsEngineAnalyze */ (void) EnableMenuItem(GetMenu(hwndMain), IDM_AnalysisMode, MF_BYCOMMAND|MF_ENABLED); } #endif } VOID SetGNUMode() { SetMenuEnables(GetMenu(hwndMain), gnuEnables); } VOID SetNCPMode() { HMENU hmenu = GetMenu(hwndMain); SetMenuEnables(hmenu, ncpEnables); DrawMenuBar(hwndMain); } VOID SetCmailMode() { SetMenuEnables(GetMenu(hwndMain), cmailEnables); } VOID SetTrainingModeOn() { int i; SetMenuEnables(GetMenu(hwndMain), trainingOnEnables); for (i = 0; i < N_BUTTONS; i++) { if (buttonDesc[i].hwnd != NULL) EnableWindow(buttonDesc[i].hwnd, FALSE); } CommentPopDown(); } VOID SetTrainingModeOff() { int i; SetMenuEnables(GetMenu(hwndMain), trainingOffEnables); for (i = 0; i < N_BUTTONS; i++) { if (buttonDesc[i].hwnd != NULL) EnableWindow(buttonDesc[i].hwnd, TRUE); } } VOID SetUserThinkingEnables() { SetMenuEnables(GetMenu(hwndMain), userThinkingEnables); } VOID SetMachineThinkingEnables() { HMENU hMenu = GetMenu(hwndMain); int flags = MF_BYCOMMAND|MF_ENABLED; SetMenuEnables(hMenu, machineThinkingEnables); if (gameMode == MachinePlaysBlack) { (void)EnableMenuItem(hMenu, IDM_MachineBlack, flags); } else if (gameMode == MachinePlaysWhite) { (void)EnableMenuItem(hMenu, IDM_MachineWhite, flags); } else if (gameMode == TwoMachinesPlay) { (void)EnableMenuItem(hMenu, matchMode ? IDM_Match : IDM_TwoMachines, flags); // [HGM] match } } VOID DisplayTitle(char *str) { char title[MSG_SIZ], *host; if (str[0] != NULLCHAR) { safeStrCpy(title, str, sizeof(title)/sizeof(title[0]) ); } else if (appData.icsActive) { if (appData.icsCommPort[0] != NULLCHAR) host = "ICS"; else host = appData.icsHost; snprintf(title, MSG_SIZ, "%s: %s", szTitle, host); } else if (appData.noChessProgram) { safeStrCpy(title, szTitle, sizeof(title)/sizeof(title[0]) ); } else { safeStrCpy(title, szTitle, sizeof(title)/sizeof(title[0]) ); strcat(title, ": "); strcat(title, first.tidy); } SetWindowText(hwndMain, title); } VOID DisplayMessage(char *str1, char *str2) { HDC hdc; HFONT oldFont; int remain = MESSAGE_TEXT_MAX - 1; int len; moveErrorMessageUp = FALSE; /* turned on later by caller if needed */ messageText[0] = NULLCHAR; if (*str1) { len = strlen(str1); if (len > remain) len = remain; strncpy(messageText, str1, len); messageText[len] = NULLCHAR; remain -= len; } if (*str2 && remain >= 2) { if (*str1) { strcat(messageText, " "); remain -= 2; } len = strlen(str2); if (len > remain) len = remain; strncat(messageText, str2, len); } messageText[MESSAGE_TEXT_MAX - 1] = NULLCHAR; safeStrCpy(lastMsg, messageText, MSG_SIZ); if (hwndMain == NULL || IsIconic(hwndMain)) return; SAYMACHINEMOVE(); hdc = GetDC(hwndMain); oldFont = SelectObject(hdc, font[boardSize][MESSAGE_FONT]->hf); ExtTextOut(hdc, messageRect.left, messageRect.top, ETO_CLIPPED|ETO_OPAQUE, &messageRect, messageText, strlen(messageText), NULL); (void) SelectObject(hdc, oldFont); (void) ReleaseDC(hwndMain, hdc); } VOID DisplayError(char *str, int error) { char buf[MSG_SIZ*2], buf2[MSG_SIZ]; int len; if (error == 0) { safeStrCpy(buf, str, sizeof(buf)/sizeof(buf[0]) ); } else { len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, LANG_NEUTRAL, (LPSTR) buf2, MSG_SIZ, NULL); if (len > 0) { snprintf(buf, 2*MSG_SIZ, "%s:\n%s", str, buf2); } else { ErrorMap *em = errmap; while (em->err != 0 && em->err != error) em++; if (em->err != 0) { snprintf(buf, 2*MSG_SIZ, "%s:\n%s", str, em->msg); } else { snprintf(buf, 2*MSG_SIZ, "%s:\nError code %d", str, error); } } } ErrorPopUp(_("Error"), buf); } VOID DisplayMoveError(char *str) { fromX = fromY = -1; ClearHighlights(); DrawPosition(FALSE, NULL); if (appData.popupMoveErrors) { ErrorPopUp(_("Error"), str); } else { DisplayMessage(str, ""); moveErrorMessageUp = TRUE; } } VOID DisplayFatalError(char *str, int error, int exitStatus) { char buf[2*MSG_SIZ], buf2[MSG_SIZ]; int len; char *label = exitStatus ? _("Fatal Error") : _("Exiting"); if (error != 0) { len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, error, LANG_NEUTRAL, (LPSTR) buf2, MSG_SIZ, NULL); if (len > 0) { snprintf(buf, 2*MSG_SIZ, "%s:\n%s", str, buf2); } else { ErrorMap *em = errmap; while (em->err != 0 && em->err != error) em++; if (em->err != 0) { snprintf(buf, 2*MSG_SIZ, "%s:\n%s", str, em->msg); } else { snprintf(buf, 2*MSG_SIZ, "%s:\nError code %d", str, error); } } str = buf; } if (appData.debugMode) { fprintf(debugFP, "%s: %s\n", label, str); } if (appData.popupExitMessage) { if(appData.icsActive) SendToICS("logout\n"); // [HGM] make sure no new games will be started! (void) MessageBox(hwndMain, str, label, MB_OK| (exitStatus ? MB_ICONSTOP : MB_ICONINFORMATION)); } ExitEvent(exitStatus); } VOID DisplayInformation(char *str) { (void) MessageBox(hwndMain, str, _("Information"), MB_OK|MB_ICONINFORMATION); } char * Shorten (char *s) { return s; } VOID DisplayNote(char *str) { ErrorPopUp(_("Note"), str); } typedef struct { char *title, *question, *replyPrefix; ProcRef pr; } QuestionParams; LRESULT CALLBACK QuestionDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static QuestionParams *qp; char reply[MSG_SIZ]; int len, err; switch (message) { case WM_INITDIALOG: qp = (QuestionParams *) lParam; CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER)); Translate(hDlg, DLG_Question); SetWindowText(hDlg, qp->title); SetDlgItemText(hDlg, OPT_QuestionText, qp->question); SetFocus(GetDlgItem(hDlg, OPT_QuestionInput)); return FALSE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: safeStrCpy(reply, qp->replyPrefix, sizeof(reply)/sizeof(reply[0]) ); if (*reply) strcat(reply, " "); len = strlen(reply); GetDlgItemText(hDlg, OPT_QuestionInput, reply + len, sizeof(reply) - len); strcat(reply, "\n"); OutputToProcess(qp->pr, reply, strlen(reply), &err); EndDialog(hDlg, TRUE); if (err) DisplayFatalError(_("Error writing to chess program"), err, 1); return TRUE; case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; default: break; } break; } return FALSE; } VOID AskQuestion(char* title, char *question, char *replyPrefix, ProcRef pr) { QuestionParams qp; FARPROC lpProc; qp.title = title; qp.question = question; qp.replyPrefix = replyPrefix; qp.pr = pr; lpProc = MakeProcInstance((FARPROC)QuestionDialog, hInst); DialogBoxParam(hInst, MAKEINTRESOURCE(DLG_Question), hwndMain, (DLGPROC)lpProc, (LPARAM)&qp); FreeProcInstance(lpProc); } /* [AS] Pick FRC position */ LRESULT CALLBACK NewGameFRC_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static int * lpIndexFRC; BOOL index_is_ok; char buf[16]; switch( message ) { case WM_INITDIALOG: lpIndexFRC = (int *) lParam; CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER)); Translate(hDlg, DLG_NewGameFRC); SendDlgItemMessage( hDlg, IDC_NFG_Edit, EM_SETLIMITTEXT, sizeof(buf)-1, 0 ); SetDlgItemInt( hDlg, IDC_NFG_Edit, *lpIndexFRC, TRUE ); SendDlgItemMessage( hDlg, IDC_NFG_Edit, EM_SETSEL, 0, -1 ); SetFocus(GetDlgItem(hDlg, IDC_NFG_Edit)); break; case WM_COMMAND: switch( LOWORD(wParam) ) { case IDOK: *lpIndexFRC = GetDlgItemInt(hDlg, IDC_NFG_Edit, &index_is_ok, TRUE ); EndDialog( hDlg, 0 ); shuffleOpenings = TRUE; /* [HGM] shuffle: switch shuffling on for as long as we stay in current variant */ return TRUE; case IDCANCEL: EndDialog( hDlg, 1 ); return TRUE; case IDC_NFG_Edit: if( HIWORD(wParam) == EN_CHANGE ) { GetDlgItemInt(hDlg, IDC_NFG_Edit, &index_is_ok, TRUE ); EnableWindow( GetDlgItem(hDlg, IDOK), index_is_ok ); } return TRUE; case IDC_NFG_Random: snprintf( buf, sizeof(buf)/sizeof(buf[0]), "%d", myrandom() ); /* [HGM] shuffle: no longer limit to 960 */ SetDlgItemText(hDlg, IDC_NFG_Edit, buf ); return TRUE; } break; } return FALSE; } int NewGameFRC() { int result; int index = appData.defaultFrcPosition; FARPROC lpProc = MakeProcInstance( (FARPROC) NewGameFRC_Proc, hInst ); result = DialogBoxParam( hInst, MAKEINTRESOURCE(DLG_NewGameFRC), hwndMain, (DLGPROC)lpProc, (LPARAM)&index ); if( result == 0 ) { appData.defaultFrcPosition = index; } return result; } /* [AS] Game list options. Refactored by HGM */ HWND gameListOptionsDialog; // low-level front-end: clear text edit / list widget void GLT_ClearList() { SendDlgItemMessage( gameListOptionsDialog, IDC_GameListTags, LB_RESETCONTENT, 0, 0 ); } // low-level front-end: clear text edit / list widget void GLT_DeSelectList() { SendDlgItemMessage( gameListOptionsDialog, IDC_GameListTags, LB_SETCURSEL, 0, 0 ); } // low-level front-end: append line to text edit / list widget void GLT_AddToList( char *name ) { if( name != 0 ) { SendDlgItemMessage( gameListOptionsDialog, IDC_GameListTags, LB_ADDSTRING, 0, (LPARAM) name ); } } // low-level front-end: get line from text edit / list widget Boolean GLT_GetFromList( int index, char *name ) { if( name != 0 ) { if( SendDlgItemMessage( gameListOptionsDialog, IDC_GameListTags, LB_GETTEXT, index, (LPARAM) name ) != LB_ERR ) return TRUE; } return FALSE; } void GLT_MoveSelection( HWND hDlg, int delta ) { int idx1 = (int) SendDlgItemMessage( hDlg, IDC_GameListTags, LB_GETCURSEL, 0, 0 ); int idx2 = idx1 + delta; int count = (int) SendDlgItemMessage( hDlg, IDC_GameListTags, LB_GETCOUNT, 0, 0 ); if( idx1 >=0 && idx1 < count && idx2 >= 0 && idx2 < count ) { char buf[128]; SendDlgItemMessage( hDlg, IDC_GameListTags, LB_GETTEXT, idx1, (LPARAM) buf ); SendDlgItemMessage( hDlg, IDC_GameListTags, LB_DELETESTRING, idx1, 0 ); SendDlgItemMessage( hDlg, IDC_GameListTags, LB_INSERTSTRING, idx2, (LPARAM) buf ); SendDlgItemMessage( hDlg, IDC_GameListTags, LB_SETCURSEL, idx2, 0 ); } } LRESULT CALLBACK GameListOptions_Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch( message ) { case WM_INITDIALOG: gameListOptionsDialog = hDlg; // [HGM] pass through global to keep out off back-end CenterWindow(hDlg, GetWindow(hDlg, GW_OWNER)); Translate(hDlg, DLG_GameListOptions); /* Initialize list */ GLT_TagsToList( lpUserGLT ); SetFocus( GetDlgItem(hDlg, IDC_GameListTags) ); break; case WM_COMMAND: switch( LOWORD(wParam) ) { case IDOK: GLT_ParseList(); EndDialog( hDlg, 0 ); return TRUE; case IDCANCEL: EndDialog( hDlg, 1 ); return TRUE; case IDC_GLT_Default: GLT_TagsToList( GLT_DEFAULT_TAGS ); return TRUE; case IDC_GLT_Restore: GLT_TagsToList( appData.gameListTags ); return TRUE; case IDC_GLT_Up: GLT_MoveSelection( hDlg, -1 ); return TRUE; case IDC_GLT_Down: GLT_MoveSelection( hDlg, +1 ); return TRUE; } break; } return FALSE; } int GameListOptions() { int result; FARPROC lpProc = MakeProcInstance( (FARPROC) GameListOptions_Proc, hInst ); safeStrCpy( lpUserGLT, appData.gameListTags ,LPUSERGLT_SIZE ); result = DialogBoxParam( hInst, MAKEINTRESOURCE(DLG_GameListOptions), hwndMain, (DLGPROC)lpProc, (LPARAM)lpUserGLT ); if( result == 0 ) { char *oldTags = appData.gameListTags; /* [AS] Memory leak here! */ appData.gameListTags = strdup( lpUserGLT ); if(strcmp(oldTags, appData.gameListTags)) // [HGM] redo Game List when we changed something GameListToListBox(NULL, TRUE, ".", NULL, FALSE, FALSE); // "." as filter is kludge to select all } return result; } VOID DisplayIcsInteractionTitle(char *str) { char consoleTitle[MSG_SIZ]; snprintf(consoleTitle, MSG_SIZ, "%s: %s", szConsoleTitle, str); SetWindowText(hwndConsole, consoleTitle); if(appData.chatBoxes) { // [HGM] chat: open chat boxes char buf[MSG_SIZ], *p = buf, *q; safeStrCpy(buf, appData.chatBoxes, sizeof(buf)/sizeof(buf[0]) ); do { q = strchr(p, ';'); if(q) *q++ = 0; if(*p) ChatPopUp(p); } while(p=q); } SetActiveWindow(hwndMain); } void DrawPosition(int fullRedraw, Board board) { HDCDrawPosition(NULL, (BOOLEAN) fullRedraw, board); } void NotifyFrontendLogin() { if (hwndConsole) UpdateICSWidth(GetDlgItem(hwndConsole, OPT_ConsoleText)); } VOID ResetFrontEnd() { fromX = fromY = -1; if (dragInfo.pos.x != -1 || dragInfo.pos.y != -1) { dragInfo.pos.x = dragInfo.pos.y = -1; dragInfo.pos.x = dragInfo.pos.y = -1; dragInfo.lastpos = dragInfo.pos; dragInfo.start.x = dragInfo.start.y = -1; dragInfo.from = dragInfo.start; ReleaseCapture(); DrawPosition(TRUE, NULL); } TagsPopDown(); } VOID CommentPopUp(char *title, char *str) { HWND hwnd = GetActiveWindow(); EitherCommentPopUp(currentMove, title, str, FALSE); // [HGM] vari: fake move index, rather than 0 SAY(str); SetActiveWindow(hwnd); } VOID CommentPopDown(void) { CheckMenuItem(GetMenu(hwndMain), IDM_Comment, MF_UNCHECKED); if (commentDialog) { ShowWindow(commentDialog, SW_HIDE); } commentUp = FALSE; } VOID EditCommentPopUp(int index, char *title, char *str) { EitherCommentPopUp(index, title, str, TRUE); } int Roar() { MyPlaySound(&sounds[(int)SoundRoar]); return 1; } VOID RingBell() { MyPlaySound(&sounds[(int)SoundMove]); } VOID PlayIcsWinSound() { MyPlaySound(&sounds[(int)SoundIcsWin]); } VOID PlayIcsLossSound() { MyPlaySound(&sounds[(int)SoundIcsLoss]); } VOID PlayIcsDrawSound() { MyPlaySound(&sounds[(int)SoundIcsDraw]); } VOID PlayIcsUnfinishedSound() { MyPlaySound(&sounds[(int)SoundIcsUnfinished]); } VOID PlayAlarmSound() { MyPlaySound(&sounds[(int)SoundAlarm]); } VOID PlayTellSound() { MyPlaySound(&textAttribs[ColorTell].sound); } VOID EchoOn() { HWND hInput; consoleEcho = TRUE; hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput); SendMessage(hInput, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&consoleCF); SendMessage(hInput, EM_SETBKGNDCOLOR, FALSE, consoleBackgroundColor); } VOID EchoOff() { CHARFORMAT cf; HWND hInput; consoleEcho = FALSE; hInput = GetDlgItem(hwndConsole, OPT_ConsoleInput); /* This works OK: set text and background both to the same color */ cf = consoleCF; cf.crTextColor = COLOR_ECHOOFF; SendMessage(hInput, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf); SendMessage(hInput, EM_SETBKGNDCOLOR, FALSE, cf.crTextColor); } /* No Raw()...? */ void Colorize(ColorClass cc, int continuation) { currentColorClass = cc; consoleCF.dwMask = CFM_COLOR|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT; consoleCF.crTextColor = textAttribs[cc].color; consoleCF.dwEffects = textAttribs[cc].effects; if (!continuation) MyPlaySound(&textAttribs[cc].sound); } char * UserName() { static char buf[MSG_SIZ]; DWORD bufsiz = MSG_SIZ; if(appData.userName != NULL && appData.userName[0] != 0) { return appData.userName; /* [HGM] username: prefer name selected by user over his system login */ } if (!GetUserName(buf, &bufsiz)) { /*DisplayError("Error getting user name", GetLastError());*/ safeStrCpy(buf, _("User"), sizeof(buf)/sizeof(buf[0]) ); } return buf; } char * HostName() { static char buf[MSG_SIZ]; DWORD bufsiz = MSG_SIZ; if (!GetComputerName(buf, &bufsiz)) { /*DisplayError("Error getting host name", GetLastError());*/ safeStrCpy(buf, _("Unknown"), sizeof(buf)/sizeof(buf[0]) ); } return buf; } int ClockTimerRunning() { return clockTimerEvent != 0; } int StopClockTimer() { if (clockTimerEvent == 0) return FALSE; KillTimer(hwndMain, clockTimerEvent); clockTimerEvent = 0; return TRUE; } void StartClockTimer(long millisec) { clockTimerEvent = SetTimer(hwndMain, (UINT) CLOCK_TIMER_ID, (UINT) millisec, NULL); } void DisplayWhiteClock(long timeRemaining, int highlight) { HDC hdc; char *flag = whiteFlag && gameMode == TwoMachinesPlay ? "(!)" : ""; if(appData.noGUI) return; hdc = GetDC(hwndMain); if (!IsIconic(hwndMain)) { DisplayAClock(hdc, timeRemaining, highlight, flipClock ? &blackRect : &whiteRect, _("White"), flag); } if (highlight && iconCurrent == iconBlack) { iconCurrent = iconWhite; PostMessage(hwndMain, WM_SETICON, (WPARAM) TRUE, (LPARAM) iconCurrent); if (IsIconic(hwndMain)) { DrawIcon(hdc, 2, 2, iconCurrent); } } (void) ReleaseDC(hwndMain, hdc); if (hwndConsole) PostMessage(hwndConsole, WM_SETICON, (WPARAM) TRUE, (LPARAM) iconCurrent); } void DisplayBlackClock(long timeRemaining, int highlight) { HDC hdc; char *flag = blackFlag && gameMode == TwoMachinesPlay ? "(!)" : ""; if(appData.noGUI) return; hdc = GetDC(hwndMain); if (!IsIconic(hwndMain)) { DisplayAClock(hdc, timeRemaining, highlight, flipClock ? &whiteRect : &blackRect, _("Black"), flag); } if (highlight && iconCurrent == iconWhite) { iconCurrent = iconBlack; PostMessage(hwndMain, WM_SETICON, (WPARAM) TRUE, (LPARAM) iconCurrent); if (IsIconic(hwndMain)) { DrawIcon(hdc, 2, 2, iconCurrent); } } (void) ReleaseDC(hwndMain, hdc); if (hwndConsole) PostMessage(hwndConsole, WM_SETICON, (WPARAM) TRUE, (LPARAM) iconCurrent); } int LoadGameTimerRunning() { return loadGameTimerEvent != 0; } int StopLoadGameTimer() { if (loadGameTimerEvent == 0) return FALSE; KillTimer(hwndMain, loadGameTimerEvent); loadGameTimerEvent = 0; return TRUE; } void StartLoadGameTimer(long millisec) { loadGameTimerEvent = SetTimer(hwndMain, (UINT) LOAD_GAME_TIMER_ID, (UINT) millisec, NULL); } void AutoSaveGame() { char *defName; FILE *f; char fileTitle[MSG_SIZ]; defName = DefaultFileName(appData.oldSaveStyle ? "gam" : "pgn"); f = OpenFileDialog(hwndMain, "a", defName, appData.oldSaveStyle ? "gam" : "pgn", GAME_FILT, _("Save Game to File"), NULL, fileTitle, NULL); if (f != NULL) { SaveGame(f, 0, ""); fclose(f); } } void ScheduleDelayedEvent(DelayedEventCallback cb, long millisec) { if (delayedTimerEvent != 0) { if (appData.debugMode && cb != delayedTimerCallback) { // [HGM] alive: not too much debug fprintf(debugFP, "ScheduleDelayedEvent: event already scheduled\n"); } KillTimer(hwndMain, delayedTimerEvent); delayedTimerEvent = 0; if(delayedTimerCallback != cb) // [HGM] alive: do not "flush" same event, just postpone it delayedTimerCallback(); } delayedTimerCallback = cb; delayedTimerEvent = SetTimer(hwndMain, (UINT) DELAYED_TIMER_ID, (UINT) millisec, NULL); } DelayedEventCallback GetDelayedEvent() { if (delayedTimerEvent) { return delayedTimerCallback; } else { return NULL; } } void CancelDelayedEvent() { if (delayedTimerEvent) { KillTimer(hwndMain, delayedTimerEvent); delayedTimerEvent = 0; } } DWORD GetWin32Priority(int nice) { // [HGM] nice: translate Unix nice() value to indows priority class. (Code stolen from Polyglot 1.4w11) /* REALTIME_PRIORITY_CLASS 0x00000100 HIGH_PRIORITY_CLASS 0x00000080 ABOVE_NORMAL_PRIORITY_CLASS 0x00008000 NORMAL_PRIORITY_CLASS 0x00000020 BELOW_NORMAL_PRIORITY_CLASS 0x00004000 IDLE_PRIORITY_CLASS 0x00000040 */ if (nice < -15) return 0x00000080; if (nice < 0) return 0x00008000; if (nice == 0) return 0x00000020; if (nice < 15) return 0x00004000; return 0x00000040; } void RunCommand(char *cmdLine) { /* Now create the child process. */ STARTUPINFO siStartInfo; PROCESS_INFORMATION piProcInfo; siStartInfo.cb = sizeof(STARTUPINFO); siStartInfo.lpReserved = NULL; siStartInfo.lpDesktop = NULL; siStartInfo.lpTitle = NULL; siStartInfo.dwFlags = STARTF_USESTDHANDLES; siStartInfo.cbReserved2 = 0; siStartInfo.lpReserved2 = NULL; siStartInfo.hStdInput = NULL; siStartInfo.hStdOutput = NULL; siStartInfo.hStdError = NULL; CreateProcess(NULL, cmdLine, /* command line */ NULL, /* process security attributes */ NULL, /* primary thread security attrs */ TRUE, /* handles are inherited */ DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP, NULL, /* use parent's environment */ NULL, &siStartInfo, /* STARTUPINFO pointer */ &piProcInfo); /* receives PROCESS_INFORMATION */ CloseHandle(piProcInfo.hThread); } /* Start a child process running the given program. The process's standard output can be read from "from", and its standard input can be written to "to". Exit with fatal error if anything goes wrong. Returns an opaque pointer that can be used to destroy the process later. */ int StartChildProcess(char *cmdLine, char *dir, ProcRef *pr) { #define BUFSIZE 4096 HANDLE hChildStdinRd, hChildStdinWr, hChildStdoutRd, hChildStdoutWr; HANDLE hChildStdinWrDup, hChildStdoutRdDup; SECURITY_ATTRIBUTES saAttr; BOOL fSuccess; PROCESS_INFORMATION piProcInfo; STARTUPINFO siStartInfo; ChildProc *cp; char buf[MSG_SIZ]; DWORD err; if (appData.debugMode) { fprintf(debugFP, "StartChildProcess (dir=\"%s\") %s\n", dir, cmdLine); } *pr = NoProc; /* Set the bInheritHandle flag so pipe handles are inherited. */ saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); saAttr.bInheritHandle = TRUE; saAttr.lpSecurityDescriptor = NULL; /* * The steps for redirecting child's STDOUT: * 1. Create anonymous pipe to be STDOUT for child. * 2. Create a noninheritable duplicate of read handle, * and close the inheritable read handle. */ /* Create a pipe for the child's STDOUT. */ if (! CreatePipe(&hChildStdoutRd, &hChildStdoutWr, &saAttr, 0)) { return GetLastError(); } /* Duplicate the read handle to the pipe, so it is not inherited. */ fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdoutRd, GetCurrentProcess(), &hChildStdoutRdDup, 0, FALSE, /* not inherited */ DUPLICATE_SAME_ACCESS); if (! fSuccess) { return GetLastError(); } CloseHandle(hChildStdoutRd); /* * The steps for redirecting child's STDIN: * 1. Create anonymous pipe to be STDIN for child. * 2. Create a noninheritable duplicate of write handle, * and close the inheritable write handle. */ /* Create a pipe for the child's STDIN. */ if (! CreatePipe(&hChildStdinRd, &hChildStdinWr, &saAttr, 0)) { return GetLastError(); } /* Duplicate the write handle to the pipe, so it is not inherited. */ fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdinWr, GetCurrentProcess(), &hChildStdinWrDup, 0, FALSE, /* not inherited */ DUPLICATE_SAME_ACCESS); if (! fSuccess) { return GetLastError(); } CloseHandle(hChildStdinWr); /* Arrange to (1) look in dir for the child .exe file, and * (2) have dir be the child's working directory. Interpret * dir relative to the directory WinBoard loaded from. */ GetCurrentDirectory(MSG_SIZ, buf); SetCurrentDirectory(installDir); SetCurrentDirectory(dir); /* Now create the child process. */ siStartInfo.cb = sizeof(STARTUPINFO); siStartInfo.lpReserved = NULL; siStartInfo.lpDesktop = NULL; siStartInfo.lpTitle = NULL; siStartInfo.dwFlags = STARTF_USESTDHANDLES; siStartInfo.cbReserved2 = 0; siStartInfo.lpReserved2 = NULL; siStartInfo.hStdInput = hChildStdinRd; siStartInfo.hStdOutput = hChildStdoutWr; siStartInfo.hStdError = hChildStdoutWr; fSuccess = CreateProcess(NULL, cmdLine, /* command line */ NULL, /* process security attributes */ NULL, /* primary thread security attrs */ TRUE, /* handles are inherited */ DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP, NULL, /* use parent's environment */ NULL, &siStartInfo, /* STARTUPINFO pointer */ &piProcInfo); /* receives PROCESS_INFORMATION */ err = GetLastError(); SetCurrentDirectory(buf); /* return to prev directory */ if (! fSuccess) { return err; } if (appData.niceEngines){ // [HGM] nice: adjust engine proc priority if(appData.debugMode) fprintf(debugFP, "nice engine proc to %d\n", appData.niceEngines); SetPriorityClass(piProcInfo.hProcess, GetWin32Priority(appData.niceEngines)); } /* Close the handles we don't need in the parent */ CloseHandle(piProcInfo.hThread); CloseHandle(hChildStdinRd); CloseHandle(hChildStdoutWr); /* Prepare return value */ cp = (ChildProc *) calloc(1, sizeof(ChildProc)); cp->kind = CPReal; cp->hProcess = piProcInfo.hProcess; cp->pid = piProcInfo.dwProcessId; cp->hFrom = hChildStdoutRdDup; cp->hTo = hChildStdinWrDup; *pr = (void *) cp; /* Klaus Friedel says that this Sleep solves a problem under Windows 2000 where engines sometimes don't see the initial command(s) from WinBoard and hang. I don't understand how that can happen, but the Sleep is harmless, so I've put it in. Others have also reported what may be the same problem, so hopefully this will fix it for them too. */ Sleep(500); return NO_ERROR; } void DestroyChildProcess(ProcRef pr, int/*boolean*/ signal) { ChildProc *cp; int result; cp = (ChildProc *) pr; if (cp == NULL) return; switch (cp->kind) { case CPReal: /* TerminateProcess is considered harmful, so... */ CloseHandle(cp->hTo); /* Closing this will give the child an EOF and hopefully kill it */ if (cp->hFrom) CloseHandle(cp->hFrom); /* if NULL, InputThread will close it */ /* The following doesn't work because the chess program doesn't "have the same console" as WinBoard. Maybe we could arrange for this even though neither WinBoard nor the chess program uses a console for stdio? */ /*!!if (signal) GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, cp->pid);*/ /* [AS] Special termination modes for misbehaving programs... */ if( signal & 8 ) { result = TerminateProcess( cp->hProcess, 0 ); if ( appData.debugMode) { fprintf( debugFP, "Terminating process %lu, result=%d\n", cp->pid, result ); } } else if( signal & 4 ) { DWORD dw = WaitForSingleObject( cp->hProcess, appData.delayAfterQuit*1000 + 50 ); // Wait 3 seconds at most if( dw != WAIT_OBJECT_0 ) { result = TerminateProcess( cp->hProcess, 0 ); if ( appData.debugMode) { fprintf( debugFP, "Process %lu still alive after timeout, killing... result=%d\n", cp->pid, result ); } } } CloseHandle(cp->hProcess); break; case CPComm: if (cp->hFrom) CloseHandle(cp->hFrom); break; case CPSock: closesocket(cp->sock); WSACleanup(); break; case CPRcmd: if (signal) send(cp->sock2, "\017", 1, 0); /* 017 = 15 = SIGTERM */ closesocket(cp->sock); closesocket(cp->sock2); WSACleanup(); break; } free(cp); } void InterruptChildProcess(ProcRef pr) { ChildProc *cp; cp = (ChildProc *) pr; if (cp == NULL) return; switch (cp->kind) { case CPReal: /* The following doesn't work because the chess program doesn't "have the same console" as WinBoard. Maybe we could arrange for this even though neither WinBoard nor the chess program uses a console for stdio */ /*!!GenerateConsoleCtrlEvent(CTRL_C_EVENT, cp->pid);*/ break; case CPComm: case CPSock: /* Can't interrupt */ break; case CPRcmd: send(cp->sock2, "\002", 1, 0); /* 2 = SIGINT */ break; } } int OpenTelnet(char *host, char *port, ProcRef *pr) { char cmdLine[MSG_SIZ]; if (port[0] == NULLCHAR) { snprintf(cmdLine, MSG_SIZ, "%s %s", appData.telnetProgram, host); } else { snprintf(cmdLine, MSG_SIZ, "%s %s %s", appData.telnetProgram, host, port); } return StartChildProcess(cmdLine, "", pr); } /* Code to open TCP sockets */ int OpenTCP(char *host, char *port, ProcRef *pr) { ChildProc *cp; int err; SOCKET s; struct sockaddr_in sa, mysa; struct hostent FAR *hp; unsigned short uport; WORD wVersionRequested; WSADATA wsaData; /* Initialize socket DLL */ wVersionRequested = MAKEWORD(1, 1); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) return err; /* Make socket */ if ((s = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { err = WSAGetLastError(); WSACleanup(); return err; } /* Bind local address using (mostly) don't-care values. */ memset((char *) &mysa, 0, sizeof(struct sockaddr_in)); mysa.sin_family = AF_INET; mysa.sin_addr.s_addr = INADDR_ANY; uport = (unsigned short) 0; mysa.sin_port = htons(uport); if (bind(s, (struct sockaddr *) &mysa, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { err = WSAGetLastError(); WSACleanup(); return err; } /* Resolve remote host name */ memset((char *) &sa, 0, sizeof(struct sockaddr_in)); if (!(hp = gethostbyname(host))) { unsigned int b0, b1, b2, b3; err = WSAGetLastError(); if (sscanf(host, "%u.%u.%u.%u", &b0, &b1, &b2, &b3) == 4) { hp = (struct hostent *) calloc(1, sizeof(struct hostent)); hp->h_addrtype = AF_INET; hp->h_length = 4; hp->h_addr_list = (char **) calloc(2, sizeof(char *)); hp->h_addr_list[0] = (char *) malloc(4); hp->h_addr_list[0][0] = (char) b0; hp->h_addr_list[0][1] = (char) b1; hp->h_addr_list[0][2] = (char) b2; hp->h_addr_list[0][3] = (char) b3; } else { WSACleanup(); return err; } } sa.sin_family = hp->h_addrtype; uport = (unsigned short) atoi(port); sa.sin_port = htons(uport); memcpy((char *) &sa.sin_addr, hp->h_addr, hp->h_length); /* Make connection */ if (connect(s, (struct sockaddr *) &sa, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { err = WSAGetLastError(); WSACleanup(); return err; } /* Prepare return value */ cp = (ChildProc *) calloc(1, sizeof(ChildProc)); cp->kind = CPSock; cp->sock = s; *pr = (ProcRef *) cp; return NO_ERROR; } int OpenCommPort(char *name, ProcRef *pr) { HANDLE h; COMMTIMEOUTS ct; ChildProc *cp; char fullname[MSG_SIZ]; if (*name != '\\') snprintf(fullname, MSG_SIZ, "\\\\.\\%s", name); else safeStrCpy(fullname, name, sizeof(fullname)/sizeof(fullname[0]) ); h = CreateFile(name, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); if (h == (HANDLE) -1) { return GetLastError(); } hCommPort = h; if (!SetCommState(h, (LPDCB) &dcb)) return GetLastError(); /* Accumulate characters until a 100ms pause, then parse */ ct.ReadIntervalTimeout = 100; ct.ReadTotalTimeoutMultiplier = 0; ct.ReadTotalTimeoutConstant = 0; ct.WriteTotalTimeoutMultiplier = 0; ct.WriteTotalTimeoutConstant = 0; if (!SetCommTimeouts(h, (LPCOMMTIMEOUTS) &ct)) return GetLastError(); /* Prepare return value */ cp = (ChildProc *) calloc(1, sizeof(ChildProc)); cp->kind = CPComm; cp->hFrom = h; cp->hTo = h; *pr = (ProcRef *) cp; return NO_ERROR; } int OpenLoopback(ProcRef *pr) { DisplayFatalError(_("Not implemented"), 0, 1); return NO_ERROR; } int OpenRcmd(char* host, char* user, char* cmd, ProcRef* pr) { ChildProc *cp; int err; SOCKET s, s2, s3; struct sockaddr_in sa, mysa; struct hostent FAR *hp; unsigned short uport; WORD wVersionRequested; WSADATA wsaData; int fromPort; char stderrPortStr[MSG_SIZ]; /* Initialize socket DLL */ wVersionRequested = MAKEWORD(1, 1); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) return err; /* Resolve remote host name */ memset((char *) &sa, 0, sizeof(struct sockaddr_in)); if (!(hp = gethostbyname(host))) { unsigned int b0, b1, b2, b3; err = WSAGetLastError(); if (sscanf(host, "%u.%u.%u.%u", &b0, &b1, &b2, &b3) == 4) { hp = (struct hostent *) calloc(1, sizeof(struct hostent)); hp->h_addrtype = AF_INET; hp->h_length = 4; hp->h_addr_list = (char **) calloc(2, sizeof(char *)); hp->h_addr_list[0] = (char *) malloc(4); hp->h_addr_list[0][0] = (char) b0; hp->h_addr_list[0][1] = (char) b1; hp->h_addr_list[0][2] = (char) b2; hp->h_addr_list[0][3] = (char) b3; } else { WSACleanup(); return err; } } sa.sin_family = hp->h_addrtype; uport = (unsigned short) 514; sa.sin_port = htons(uport); memcpy((char *) &sa.sin_addr, hp->h_addr, hp->h_length); /* Bind local socket to unused "privileged" port address */ s = INVALID_SOCKET; memset((char *) &mysa, 0, sizeof(struct sockaddr_in)); mysa.sin_family = AF_INET; mysa.sin_addr.s_addr = INADDR_ANY; for (fromPort = 1023;; fromPort--) { if (fromPort < 0) { WSACleanup(); return WSAEADDRINUSE; } if (s == INVALID_SOCKET) { if ((s = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { err = WSAGetLastError(); WSACleanup(); return err; } } uport = (unsigned short) fromPort; mysa.sin_port = htons(uport); if (bind(s, (struct sockaddr *) &mysa, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { err = WSAGetLastError(); if (err == WSAEADDRINUSE) continue; WSACleanup(); return err; } if (connect(s, (struct sockaddr *) &sa, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { err = WSAGetLastError(); if (err == WSAEADDRINUSE) { closesocket(s); s = -1; continue; } WSACleanup(); return err; } break; } /* Bind stderr local socket to unused "privileged" port address */ s2 = INVALID_SOCKET; memset((char *) &mysa, 0, sizeof(struct sockaddr_in)); mysa.sin_family = AF_INET; mysa.sin_addr.s_addr = INADDR_ANY; for (fromPort = 1023;; fromPort--) { if (fromPort == prevStderrPort) continue; // don't reuse port if (fromPort < 0) { (void) closesocket(s); WSACleanup(); return WSAEADDRINUSE; } if (s2 == INVALID_SOCKET) { if ((s2 = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) { err = WSAGetLastError(); closesocket(s); WSACleanup(); return err; } } uport = (unsigned short) fromPort; mysa.sin_port = htons(uport); if (bind(s2, (struct sockaddr *) &mysa, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { err = WSAGetLastError(); if (err == WSAEADDRINUSE) continue; (void) closesocket(s); WSACleanup(); return err; } if (listen(s2, 1) == SOCKET_ERROR) { err = WSAGetLastError(); if (err == WSAEADDRINUSE) { closesocket(s2); s2 = INVALID_SOCKET; continue; } (void) closesocket(s); (void) closesocket(s2); WSACleanup(); return err; } break; } prevStderrPort = fromPort; // remember port used snprintf(stderrPortStr, MSG_SIZ, "%d", fromPort); if (send(s, stderrPortStr, strlen(stderrPortStr) + 1, 0) == SOCKET_ERROR) { err = WSAGetLastError(); (void) closesocket(s); (void) closesocket(s2); WSACleanup(); return err; } if (send(s, UserName(), strlen(UserName()) + 1, 0) == SOCKET_ERROR) { err = WSAGetLastError(); (void) closesocket(s); (void) closesocket(s2); WSACleanup(); return err; } if (*user == NULLCHAR) user = UserName(); if (send(s, user, strlen(user) + 1, 0) == SOCKET_ERROR) { err = WSAGetLastError(); (void) closesocket(s); (void) closesocket(s2); WSACleanup(); return err; } if (send(s, cmd, strlen(cmd) + 1, 0) == SOCKET_ERROR) { err = WSAGetLastError(); (void) closesocket(s); (void) closesocket(s2); WSACleanup(); return err; } if ((s3 = accept(s2, NULL, NULL)) == INVALID_SOCKET) { err = WSAGetLastError(); (void) closesocket(s); (void) closesocket(s2); WSACleanup(); return err; } (void) closesocket(s2); /* Stop listening */ /* Prepare return value */ cp = (ChildProc *) calloc(1, sizeof(ChildProc)); cp->kind = CPRcmd; cp->sock = s; cp->sock2 = s3; *pr = (ProcRef *) cp; return NO_ERROR; } InputSourceRef AddInputSource(ProcRef pr, int lineByLine, InputCallback func, VOIDSTAR closure) { InputSource *is, *is2 = NULL; ChildProc *cp = (ChildProc *) pr; is = (InputSource *) calloc(1, sizeof(InputSource)); is->lineByLine = lineByLine; is->func = func; is->closure = closure; is->second = NULL; is->next = is->buf; if (pr == NoProc) { is->kind = CPReal; consoleInputSource = is; } else { is->kind = cp->kind; /* [AS] Try to avoid a race condition if the thread is given control too early: we create all threads suspended so that the is->hThread variable can be safely assigned, then let the threads start with ResumeThread. */ switch (cp->kind) { case CPReal: is->hFile = cp->hFrom; cp->hFrom = NULL; /* now owned by InputThread */ is->hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) NonOvlInputThread, (LPVOID) is, CREATE_SUSPENDED, &is->id); break; case CPComm: is->hFile = cp->hFrom; cp->hFrom = NULL; /* now owned by InputThread */ is->hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) InputThread, (LPVOID) is, CREATE_SUSPENDED, &is->id); break; case CPSock: is->sock = cp->sock; is->hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) SocketInputThread, (LPVOID) is, CREATE_SUSPENDED, &is->id); break; case CPRcmd: is2 = (InputSource *) calloc(1, sizeof(InputSource)); *is2 = *is; is->sock = cp->sock; is->second = is2; is2->sock = cp->sock2; is2->second = is2; is->hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) SocketInputThread, (LPVOID) is, CREATE_SUSPENDED, &is->id); is2->hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) SocketInputThread, (LPVOID) is2, CREATE_SUSPENDED, &is2->id); break; } if( is->hThread != NULL ) { ResumeThread( is->hThread ); } if( is2 != NULL && is2->hThread != NULL ) { ResumeThread( is2->hThread ); } } return (InputSourceRef) is; } void RemoveInputSource(InputSourceRef isr) { InputSource *is; is = (InputSource *) isr; is->hThread = NULL; /* tell thread to stop */ CloseHandle(is->hThread); if (is->second != NULL) { is->second->hThread = NULL; CloseHandle(is->second->hThread); } } int no_wrap(char *message, int count) { ConsoleOutput(message, count, FALSE); return count; } int OutputToProcess(ProcRef pr, char *message, int count, int *outError) { DWORD dOutCount; int outCount = SOCKET_ERROR; ChildProc *cp = (ChildProc *) pr; static OVERLAPPED ovl; static int line = 0; if (pr == NoProc) { if (appData.noJoin || !appData.useInternalWrap) return no_wrap(message, count); else { int width = get_term_width(); int len = wrap(NULL, message, count, width, &line); char *msg = malloc(len); int dbgchk; if (!msg) return no_wrap(message, count); else { dbgchk = wrap(msg, message, count, width, &line); if (dbgchk != len && appData.debugMode) fprintf(debugFP, "wrap(): dbgchk(%d) != len(%d)\n", dbgchk, len); ConsoleOutput(msg, len, FALSE); free(msg); return len; } } } if (ovl.hEvent == NULL) { ovl.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); } ovl.Internal = ovl.InternalHigh = ovl.Offset = ovl.OffsetHigh = 0; switch (cp->kind) { case CPSock: case CPRcmd: outCount = send(cp->sock, message, count, 0); if (outCount == SOCKET_ERROR) { *outError = WSAGetLastError(); } else { *outError = NO_ERROR; } break; case CPReal: if (WriteFile(((ChildProc *)pr)->hTo, message, count, &dOutCount, NULL)) { *outError = NO_ERROR; outCount = (int) dOutCount; } else { *outError = GetLastError(); } break; case CPComm: *outError = DoWriteFile(((ChildProc *)pr)->hTo, message, count, &dOutCount, &ovl); if (*outError == NO_ERROR) { outCount = (int) dOutCount; } break; } return outCount; } void DoSleep(int n) { if(n != 0) Sleep(n); } int OutputToProcessDelayed(ProcRef pr, char *message, int count, int *outError, long msdelay) { /* Ignore delay, not implemented for WinBoard */ return OutputToProcess(pr, message, count, outError); } void CmailSigHandlerCallBack(InputSourceRef isr, VOIDSTAR closure, char *buf, int count, int error) { DisplayFatalError(_("Not implemented"), 0, 1); } /* see wgamelist.c for Game List functions */ /* see wedittags.c for Edit Tags functions */ int ICSInitScript() { FILE *f; char buf[MSG_SIZ]; char *dummy; if (SearchPath(installDir, appData.icsLogon, NULL, MSG_SIZ, buf, &dummy)) { f = fopen(buf, "r"); if (f != NULL) { ProcessICSInitScript(f); fclose(f); return TRUE; } } return FALSE; } VOID StartAnalysisClock() { if (analysisTimerEvent) return; analysisTimerEvent = SetTimer(hwndMain, (UINT) ANALYSIS_TIMER_ID, (UINT) 2000, NULL); } VOID SetHighlights(int fromX, int fromY, int toX, int toY) { highlightInfo.sq[0].x = fromX; highlightInfo.sq[0].y = fromY; highlightInfo.sq[1].x = toX; highlightInfo.sq[1].y = toY; } VOID ClearHighlights() { highlightInfo.sq[0].x = highlightInfo.sq[0].y = highlightInfo.sq[1].x = highlightInfo.sq[1].y = -1; } VOID SetPremoveHighlights(int fromX, int fromY, int toX, int toY) { premoveHighlightInfo.sq[0].x = fromX; premoveHighlightInfo.sq[0].y = fromY; premoveHighlightInfo.sq[1].x = toX; premoveHighlightInfo.sq[1].y = toY; } VOID ClearPremoveHighlights() { premoveHighlightInfo.sq[0].x = premoveHighlightInfo.sq[0].y = premoveHighlightInfo.sq[1].x = premoveHighlightInfo.sq[1].y = -1; } VOID ShutDownFrontEnd() { if (saveSettingsOnExit) SaveSettings(settingsFileName); DeleteClipboardTempFiles(); } void BoardToTop() { if (IsIconic(hwndMain)) ShowWindow(hwndMain, SW_RESTORE); SetActiveWindow(hwndMain); } /* * Prototypes for animation support routines */ static void ScreenSquare(int column, int row, POINT * pt); static void Tween( POINT * start, POINT * mid, POINT * finish, int factor, POINT frames[], int * nFrames); #define kFactor 4 void AnimateAtomicCapture(Board board, int fromX, int fromY, int toX, int toY) { // [HGM] atomic: animate blast wave int i; explodeInfo.fromX = fromX; explodeInfo.fromY = fromY; explodeInfo.toX = toX; explodeInfo.toY = toY; for(i=1; i<4*kFactor; i++) { explodeInfo.radius = (i*180)/(4*kFactor-1); DrawPosition(FALSE, board); Sleep(appData.animSpeed); } explodeInfo.radius = 0; DrawPosition(TRUE, board); } void AnimateMove(board, fromX, fromY, toX, toY) Board board; int fromX; int fromY; int toX; int toY; { ChessSquare piece, victim = EmptySquare, victim2 = EmptySquare; int x = toX, y = toY, x2 = kill2X; POINT start, finish, mid; POINT frames[kFactor * 2 + 1]; int nFrames, n; if(killX >= 0 && IS_LION(board[fromY][fromX])) Roar(); if (!appData.animate) return; if (doingSizing) return; if (fromY < 0 || fromX < 0) return; piece = board[fromY][fromX]; if (piece >= EmptySquare) return; if(x2 >= 0) toX = kill2X, toY = kill2Y, victim = board[killY][killX], victim2 = board[kill2Y][kill2X]; else if(killX >= 0) toX = killX, toY = killY, victim = board[killY][killX]; // [HGM] lion: first to kill square animInfo.from.x = fromX; animInfo.from.y = fromY; again: ScreenSquare(fromX, fromY, &start); ScreenSquare(toX, toY, &finish); /* All moves except knight jumps move in straight line */ if (!(abs(fromX-toX) == 1 && abs(fromY-toY) == 2 || abs(fromX-toX) == 2 && abs(fromY-toY) == 1)) { mid.x = start.x + (finish.x - start.x) / 2; mid.y = start.y + (finish.y - start.y) / 2; } else { /* Knight: make straight movement then diagonal */ if (abs(toY - fromY) < abs(toX - fromX)) { mid.x = start.x + (finish.x - start.x) / 2; mid.y = start.y; } else { mid.x = start.x; mid.y = start.y + (finish.y - start.y) / 2; } } /* Don't use as many frames for very short moves */ if (abs(toY - fromY) + abs(toX - fromX) <= 2) Tween(&start, &mid, &finish, kFactor - 1, frames, &nFrames); else Tween(&start, &mid, &finish, kFactor, frames, &nFrames); animInfo.to.x = toX; animInfo.to.y = toY; animInfo.lastpos = start; animInfo.piece = piece; for (n = 0; n < nFrames; n++) { animInfo.pos = frames[n]; DrawPosition(FALSE, board); animInfo.lastpos = animInfo.pos; Sleep(appData.animSpeed); } animInfo.pos = finish; DrawPosition(FALSE, board); if(toX == x2 && toY == kill2Y) { fromX = toX; fromY = toY; toX = killX; toY = killY; x2 = -1; board[kill2Y][kill2X] = EmptySquare; goto again; } // second leg if(toX != x || toY != y) { fromX = toX; fromY = toY; toX = x; toY = y; board[killY][killX] = EmptySquare; goto again; } // second leg if(victim2 != EmptySquare) board[kill2Y][kill2X] = victim2; if(victim != EmptySquare) board[killY][killX] = victim; animInfo.piece = EmptySquare; Explode(board, fromX, fromY, toX, toY); } /* Convert board position to corner of screen rect and color */ static void ScreenSquare(column, row, pt) int column; int row; POINT * pt; { if (flipView) { pt->x = lineGap + ((BOARD_WIDTH-1)-column) * (squareSize + lineGap) + border; pt->y = lineGap + row * (squareSize + lineGap) + border; } else { pt->x = lineGap + column * (squareSize + lineGap) + border; pt->y = lineGap + ((BOARD_HEIGHT-1)-row) * (squareSize + lineGap) + border; } } /* Generate a series of frame coords from start->mid->finish. The movement rate doubles until the half way point is reached, then halves back down to the final destination, which gives a nice slow in/out effect. The algorithmn may seem to generate too many intermediates for short moves, but remember that the purpose is to attract the viewers attention to the piece about to be moved and then to where it ends up. Too few frames would be less noticeable. */ static void Tween(start, mid, finish, factor, frames, nFrames) POINT * start; POINT * mid; POINT * finish; int factor; POINT frames[]; int * nFrames; { int n, fraction = 1, count = 0; /* Slow in, stepping 1/16th, then 1/8th, ... */ for (n = 0; n < factor; n++) fraction *= 2; for (n = 0; n < factor; n++) { frames[count].x = start->x + (mid->x - start->x) / fraction; frames[count].y = start->y + (mid->y - start->y) / fraction; count ++; fraction = fraction / 2; } /* Midpoint */ frames[count] = *mid; count ++; /* Slow out, stepping 1/2, then 1/4, ... */ fraction = 2; for (n = 0; n < factor; n++) { frames[count].x = finish->x - (finish->x - mid->x) / fraction; frames[count].y = finish->y - (finish->y - mid->y) / fraction; count ++; fraction = fraction * 2; } *nFrames = count; } void SettingsPopUp(ChessProgramState *cps) { // [HGM] wrapper needed because handles must not be passed through back-end EngineOptionsPopup(savedHwnd, cps); } int flock(int fid, int code) { HANDLE hFile = (HANDLE) _get_osfhandle(fid); OVERLAPPED ov; ov.hEvent = NULL; ov.Offset = 0; ov.OffsetHigh = 0; switch(code) { case 1: LockFileEx(hFile, LOCKFILE_EXCLUSIVE_LOCK, 0, 1024, 0, &ov); break; // LOCK_SH case 2: LockFileEx(hFile, LOCKFILE_EXCLUSIVE_LOCK, 0, 1024, 0, &ov); break; // LOCK_EX case 3: UnlockFileEx(hFile, 0, 1024, 0, &ov); break; // LOCK_UN default: return -1; } return 0; } char * Col2Text (int n) { static int i=0; static char col[8][20]; COLORREF color = *(COLORREF *) colorVariable[n]; i = i+1 & 7; snprintf(col[i], 20, "#%02lx%02lx%02lx", color&0xff, (color>>8)&0xff, (color>>16)&0xff); return col[i]; } void ActivateTheme (int new) { // Redo initialization of features depending on options that can occur in themes InitTextures(); if(new) InitDrawingColors(); fontBitmapSquareSize = 0; // request creation of new font pieces InitDrawingSizes(boardSize, 0); InvalidateRect(hwndMain, NULL, TRUE); } xboard-4.9.1/winboard/COMPILING0000644000175000001440000000416112717001265012775 00000000000000Compiling with an Integrated Development Envrionment Microsoft Visual C++ -- For MSVC 6.0 IDE, all you need to do is 'File|Open Workspace...' and select 'winboard.dsw'. Then to build, choose 'Build|Batch Build...' and select the targets you want to build. This method has full support for Debug and Release builds either with or without JAWS support. For later versions of Visual C++, open the same workspace and convert when prompted. Then compile as above. DevCpp -- For DevCpp, you need to 'File|Open Project or File...' and select either 'winboard.dev' or 'WB4Jaws.dev'. After parsing the project, you can 'Execute|Compile' to build. This IDE has no facility for defines in the resource compiler, so the version information resource will not indicate JAWS support even if it actually has that support. These projects are not set up for debugging, but you can do so by adjusting the 'Compiler' and 'Parameters' options in the 'Project|Project Options' dialog. Compiling from the Command Line GCC -- this includes cygwin, mingw, djgpp and others. make -f makefile.gcc You can modify certain settings in the makefile such as JAWS support, debugging support. If using cygwin, you can select whether or not to link with cygwin1.dll instead of the msvcrt runtime. CL -- this includes MSVC and recent Intel compilers. nmake -f makefile.ms Note: NMAKE, not MAKE For Visual Studio 2005 and later, set VCVER to 8, otherwise set it to 6. You can select JAWS support or debugging just like the GCC makefile. For MSVC 6.0 and earlier, you are going to need the latest SDK from Microsoft. After you install it, set the SDK_INC variable appropriately. It defaults to the standard location, but you still need to uncomment the line. Prior to compiling from the command line, it will be necessary to invoke VCVARS32.BAT if you didn't have MSVC register the command line environment variables during installation. xboard-4.9.1/winboard/defaults.h0000644000175000001440000002521312717001265013512 00000000000000/* * defaults.h -- Default settings for Windows NT front end to XBoard * * Copyright 1991 by Digital Equipment Corporation, Maynard, * Massachusetts. * * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006, * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * The following terms apply to Digital Equipment Corporation's copyright * interest in XBoard: * ------------------------------------------------------------------------ * All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Digital not be * used in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. * ------------------------------------------------------------------------ * * The following terms apply to the enhanced version of XBoard * distributed by the Free Software Foundation: * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ /* Static */ #define POSITION_FILT "Position files (*.fen,*.epd,*.pos)\0*.fen;*.epd;*.pos\0All files (*.*)\0*.*\0" #define GAME_FILT "Game files (*.pgn,*.gam)\0*.pgn;*.gam\0All files (*.*)\0*.*\0" #define DIAGRAM_FILT "bitmap files (*.bmp)\0*.bmp\0All files (*.*)\0*.*\0" #define SOUND_FILT "Wave files (*.wav)\0*.wav\0All files (*.*)\0*.*\0" #define OUTER_MARGIN (tinyLayout == 2 ? 0 : 4) #define INNER_MARGIN (tinyLayout == 2 ? 0 : 2) #define MESSAGE_LINE_LEFTMARGIN 2 #define MESSAGE_TEXT_MAX 256 /*#define COLOR_ECHOOFF RGB(192,192,192)*/ #define COLOR_ECHOOFF consoleBackgroundColor #define WRAP_INDENT 200 /* Settable */ #define FIRST_CHESS_PROGRAM "" #define FIRST_DIRECTORY "." #define SECOND_CHESS_PROGRAM "" #define SECOND_DIRECTORY "." #define CLOCK_FONT_TINY "Arial:9.0 b" #define CLOCK_FONT_TEENY "Arial:9.0 b" #define CLOCK_FONT_DINKY "Arial:10.0 b" #define CLOCK_FONT_PETITE "Arial:10.0 b" #define CLOCK_FONT_SLIM "Arial:12.0 b" #define CLOCK_FONT_SMALL "Arial:14.0 b" #define CLOCK_FONT_MEDIOCRE "Arial:14.0 b" #define CLOCK_FONT_MIDDLING "Arial:14.0 b" #define CLOCK_FONT_AVERAGE "Arial:15.0 b" #define CLOCK_FONT_MODERATE "Arial:16.0 b" #define CLOCK_FONT_MEDIUM "Arial:16.0 b" #define CLOCK_FONT_BULKY "Arial:17.0 b" #define CLOCK_FONT_LARGE "Arial:19.0 b" #define CLOCK_FONT_BIG "Arial:20.0 b" #define CLOCK_FONT_HUGE "Arial:21.0 b" #define CLOCK_FONT_GIANT "Arial:22.0 b" #define CLOCK_FONT_COLOSSAL "Arial:23.0 b" #define CLOCK_FONT_TITANIC "Arial:24.0 b" #define MESSAGE_FONT_TINY "Small Fonts:6.0" #define MESSAGE_FONT_TEENY "Small Fonts:6.0" #define MESSAGE_FONT_DINKY "Small Fonts:7.0" #define MESSAGE_FONT_PETITE "Small Fonts:7.0" #define MESSAGE_FONT_SLIM "Arial:8.0 b" #define MESSAGE_FONT_SMALL "Arial:9.0 b" #define MESSAGE_FONT_MEDIOCRE "Arial:9.0 b" #define MESSAGE_FONT_MIDDLING "Arial:9.0 b" #define MESSAGE_FONT_AVERAGE "Arial:10.0 b" #define MESSAGE_FONT_MODERATE "Arial:10.0 b" #define MESSAGE_FONT_MEDIUM "Arial:10.0 b" #define MESSAGE_FONT_BULKY "Arial:10.0 b" #define MESSAGE_FONT_LARGE "Arial:10.0 b" #define MESSAGE_FONT_BIG "Arial:11.0 b" #define MESSAGE_FONT_HUGE "Arial:11.0 b" #define MESSAGE_FONT_GIANT "Arial:11.0 b" #define MESSAGE_FONT_COLOSSAL "Arial:12.0 b" #define MESSAGE_FONT_TITANIC "Arial:12.0 b" #define COORD_FONT_TINY "Small Fonts:4.0" #define COORD_FONT_TEENY "Small Fonts:4.0" #define COORD_FONT_DINKY "Small Fonts:5.0" #define COORD_FONT_PETITE "Small Fonts:5.0" #define COORD_FONT_SLIM "Small Fonts:6.0" #define COORD_FONT_SMALL "Small Fonts:7.0" #define COORD_FONT_MEDIOCRE "Small Fonts:7.0" #define COORD_FONT_MIDDLING "Small Fonts:7.0" #define COORD_FONT_AVERAGE "Arial:7.0 b" #define COORD_FONT_MODERATE "Arial:7.0 b" #define COORD_FONT_MEDIUM "Arial:7.0 b" #define COORD_FONT_BULKY "Arial:7.0 b" #define COORD_FONT_LARGE "Arial:7.0 b" #define COORD_FONT_BIG "Arial:8.0 b" #define COORD_FONT_HUGE "Arial:8.0 b" #define COORD_FONT_GIANT "Arial:8.0 b" #define COORD_FONT_COLOSSAL "Arial:9.0 b" #define COORD_FONT_TITANIC "Arial:9.0 b" #define CONSOLE_FONT_TINY "Courier New:8.0" #define CONSOLE_FONT_TEENY "Courier New:8.0" #define CONSOLE_FONT_DINKY "Courier New:8.0" #define CONSOLE_FONT_PETITE "Courier New:8.0" #define CONSOLE_FONT_SLIM "Courier New:8.0" #define CONSOLE_FONT_SMALL "Courier New:8.0" #define CONSOLE_FONT_MEDIOCRE "Courier New:8.0" #define CONSOLE_FONT_MIDDLING "Courier New:8.0" #define CONSOLE_FONT_AVERAGE "Courier New:8.0" #define CONSOLE_FONT_MODERATE "Courier New:8.0" #define CONSOLE_FONT_MEDIUM "Courier New:8.0" #define CONSOLE_FONT_BULKY "Courier New:8.0" #define CONSOLE_FONT_LARGE "Courier New:8.0" #define CONSOLE_FONT_BIG "Courier New:8.0" #define CONSOLE_FONT_HUGE "Courier New:8.0" #define CONSOLE_FONT_GIANT "Courier New:8.0" #define CONSOLE_FONT_COLOSSAL "Courier New:8.0" #define CONSOLE_FONT_TITANIC "Courier New:8.0" #define COMMENT_FONT_TINY "Arial:9.0" #define COMMENT_FONT_TEENY "Arial:9.0" #define COMMENT_FONT_DINKY "Arial:9.0" #define COMMENT_FONT_PETITE "Arial:9.0" #define COMMENT_FONT_SLIM "Arial:9.0" #define COMMENT_FONT_SMALL "Arial:9.0" #define COMMENT_FONT_MEDIOCRE "Arial:9.0" #define COMMENT_FONT_MIDDLING "Arial:9.0" #define COMMENT_FONT_AVERAGE "Arial:9.0" #define COMMENT_FONT_MODERATE "Arial:9.0" #define COMMENT_FONT_MEDIUM "Arial:9.0" #define COMMENT_FONT_BULKY "Arial:9.0" #define COMMENT_FONT_LARGE "Arial:9.0" #define COMMENT_FONT_BIG "Arial:9.0" #define COMMENT_FONT_HUGE "Arial:9.0" #define COMMENT_FONT_GIANT "Arial:9.0" #define COMMENT_FONT_COLOSSAL "Arial:9.0" #define COMMENT_FONT_TITANIC "Arial:9.0" #define EDITTAGS_FONT_TINY "Courier New:8.0" #define EDITTAGS_FONT_TEENY "Courier New:8.0" #define EDITTAGS_FONT_DINKY "Courier New:8.0" #define EDITTAGS_FONT_PETITE "Courier New:8.0" #define EDITTAGS_FONT_SLIM "Courier New:8.0" #define EDITTAGS_FONT_SMALL "Courier New:8.0" #define EDITTAGS_FONT_MEDIUM "Courier New:8.0" #define EDITTAGS_FONT_MEDIOCRE "Courier New:8.0" #define EDITTAGS_FONT_MIDDLING "Courier New:8.0" #define EDITTAGS_FONT_AVERAGE "Courier New:8.0" #define EDITTAGS_FONT_MODERATE "Courier New:8.0" #define EDITTAGS_FONT_BULKY "Courier New:8.0" #define EDITTAGS_FONT_LARGE "Courier New:8.0" #define EDITTAGS_FONT_BIG "Courier New:8.0" #define EDITTAGS_FONT_HUGE "Courier New:8.0" #define EDITTAGS_FONT_GIANT "Courier New:8.0" #define EDITTAGS_FONT_COLOSSAL "Courier New:8.0" #define EDITTAGS_FONT_TITANIC "Courier New:8.0" #define MOVEHISTORY_FONT_ALL "MS Sans Serif:8.0" #define GAMELIST_FONT_ALL "MS Sans Serif:8.0" #define COLOR_SHOUT "#209000" #define COLOR_SSHOUT "b #289808" #define COLOR_CHANNEL1 "#2020E0" #define COLOR_CHANNEL "b #4040FF" #define COLOR_KIBITZ "b #FF00FF" #define COLOR_TELL "b #FF0000" #define COLOR_CHALLENGE "bi #FF0000" #define COLOR_REQUEST "bi #FF0000" #define COLOR_SEEK "#980808" #define COLOR_NORMAL "#000000" #define COLOR_NONE "#000000" #define COLOR_BKGD "#FFFFFF" #define SOUND_BELL "$" #define BUILT_IN_SOUND_NAMES {\ "Beepbeep", "Ching", "Click", "Cymbal", "Ding", "Drip", \ "Gong", "Laser", "Move", "Penalty", "Phone", "Pop", "Pop2", \ "Roar", "Slap", "Squeak", "Swish", "Thud", "Whipcrack", \ "Alarm", "Challenge", "Channel", "Channel1", "Draw", "Kibitz", \ "Lose", "Request", "Seek", "Shout", "SShout", "Tell", "Unfinished", \ "Win", NULL \ } #define SETTINGS_FILE "winboard.ini" #define DEBUG_FILE "winboard.debug" #define ICS_LOGON "ics.ini" #define ICS_NAMES "\ chessclub.com /icsport=5000 /icshelper=timestamp\n\ freechess.org /icsport=5000 /icshelper=timeseal\n\ global.chessparlor.com /icsport=6000 /icshelper=timeseal\n\ chessanytime.com /icsport=5000\n\ chess.net /icsport=5000\n\ chess.deepnet.com /icsport=5000 /icshelper=timeseal\n\ zics.org /icsport=5000\n\ jogo.cex.org.br /icsport=5000\n\ ajedrez.cec.uchile.cl /icsport=5000\n\ fly.cc.fer.hr /icsport=7890\n\ freechess.nl /icsport=5000 /icshelper=timeseal\n\ jeu.echecs.com /icsport=5000\n\ chess.unix-ag.uni-kl.de /icsport=5000 /icshelper=timeseal\n\ chess.mds.mdh.se /icsport=5000\n\ " #define ICS_TEXT_MENU_DEFAULT "\ -\n\ &Who,who,0,1\n\ Playe&rs,players,0,1\n\ &Games,games,0,1\n\ &Sought,sought,0,1\n\ | ,none,0,0\n\ Open Chat &Box (name),chat,1,0\n\ &Tell (name),tell,1,0\n\ M&essage (name),message,1,0\n\ -\n\ &Finger (name),finger,1,1\n\ &Vars (name),vars,1,1\n\ &Observe (name),observe,1,1\n\ &Match (name),match,1,1\n\ Pl&ay (name),play,1,1\n\ " #define FCP_NAMES "\ fmax /fd=Fairy-Max\n\ GNUChess\n\ \"GNUChes5 xboard\"\n\ " #define SCP_NAMES "\ fmax /sd=Fairy-Max\n\ GNUChess\n\ \"GNUChes5 xboard\"\n\ " xboard-4.9.1/winboard/wclipbrd.c0000644000175000001440000002430112717001265013501 00000000000000/* * wclipbrd.c -- Clipboard routines for WinBoard * * Copyright 2000, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include /* required for all Windows applications */ #include #include #include #include #include "common.h" #include "frontend.h" #include "backend.h" #include "winboard.h" #include "wclipbrd.h" #define _(s) T_(s) #define N_(s) s /* Imports from winboard.c */ extern HWND hwndMain; /* File globals */ static char *copyTemp; static char *pasteTemp; VOID CopyFENToClipboard() { char *fen = NULL; if(gameMode == EditPosition) EditPositionDone(TRUE); // [HGM] mak sure castling rights are set consistently fen = PositionToFEN(currentMove, NULL, 1); if (!fen) { DisplayError(_("Unable to convert position to FEN."), 0); return; } if (!CopyTextToClipboard(fen)) DisplayError(_("Unable to copy FEN to clipboard."), 0); free(fen); } /* [AS] */ HGLOBAL ExportGameListAsText(); VOID CopyGameListToClipboard() { HGLOBAL hMem = ExportGameListAsText(); if( hMem != NULL ) { /* Assign memory block to clipboard */ BOOL ok = OpenClipboard( hwndMain ); if( ok ) { ok = EmptyClipboard(); if( ok ) { if( hMem != SetClipboardData( CF_TEXT, hMem ) ) { ok = FALSE; } } CloseClipboard(); if( ! ok ) { GlobalFree( hMem ); } } if( ! ok ) { DisplayError( "Cannot copy list to clipboard.", 0 ); } } } VOID CopyGameToClipboard() { /* A rather cheesy hack here. Write the game to a file, then read from the * file into the clipboard. */ char *buf = NULL; FILE *f; unsigned long size; size_t len; struct stat st; if (!copyTemp) { copyTemp = tempnam(NULL, "wbcp"); } if (!copyTemp) { DisplayError(_("Cannot create temporary file name."),0); return; } f = fopen(copyTemp, "w"); if (!f) { DisplayError(_("Cannot open temporary file."), 0); return; } if (!SaveGame(f,0,"")) { /* call into backend */ DisplayError(_("Cannot write to temporary file."), 0); goto copy_game_to_clipboard_cleanup; } f = fopen(copyTemp, "rb"); if (!f) { DisplayError(_("Cannot reopen temporary file."), 0); goto copy_game_to_clipboard_cleanup; } if (fstat(fileno(f), &st) < 0) { DisplayError(_(_("Cannot determine size of file.")), 0); goto copy_game_to_clipboard_cleanup; } size = st.st_size; if (size == -1) { DisplayError(_(_("Cannot determine size of file.")), 0); goto copy_game_to_clipboard_cleanup; } rewind(f); buf = (char*)malloc(size+1); if (!buf) { DisplayError(_("Cannot allocate clipboard buffer."), 0); goto copy_game_to_clipboard_cleanup; } len = fread(buf, sizeof(char), size, f); if (len == -1) { DisplayError(_("Cannot read from temporary file."), 0); goto copy_game_to_clipboard_cleanup; } if ((unsigned long)size != (unsigned long)len) { /* sigh */ DisplayError(_("Error reading from temporary file."), 0); goto copy_game_to_clipboard_cleanup; } buf[size] = 0; if (!CopyTextToClipboard(buf)) { DisplayError(_("Cannot copy text to clipboard"), 0); } copy_game_to_clipboard_cleanup: if (buf) free(buf); if (f) fclose(f); } int CopyTextToClipboard(char *text) { /* some (most?) of the error checking may be overkill, * but hey, this is Windows */ HGLOBAL hGlobalMem; LPVOID lpGlobalMem; BOOL locked; UINT lockCount; DWORD err; hGlobalMem = GlobalAlloc(GHND, (DWORD)lstrlen(text)+1); if (hGlobalMem == NULL) { DisplayError(_("Unable to allocate memory for clipboard."), 0); return FALSE; } lpGlobalMem = GlobalLock(hGlobalMem); if (lpGlobalMem == NULL) { DisplayError(_(_("Unable to lock clipboard memory.")), 0); GlobalFree(hGlobalMem); return FALSE; } safeStrCpy(lpGlobalMem, text, 1<<20); if (appData.debugMode) { lockCount = GlobalFlags(hGlobalMem) & GMEM_LOCKCOUNT; fprintf(debugFP, "CopyTextToClipboard(): lock count %d\n", lockCount); } SetLastError(NO_ERROR); locked = GlobalUnlock(hGlobalMem); err = GetLastError(); if (appData.debugMode) { lockCount = GlobalFlags(hGlobalMem) & GMEM_LOCKCOUNT; fprintf(debugFP, "CopyTextToClipboard(): lock count %d\n", lockCount); } if (!locked) { locked = !((err == NO_ERROR) || (err == ERROR_NOT_LOCKED)); if (appData.debugMode) { fprintf(debugFP, "CopyTextToClipboard(): err %d locked %d\n", (int)err, locked); } } if (locked) { DisplayError(_("Cannot unlock clipboard memory."), 0); GlobalFree(hGlobalMem); return FALSE; } if (!OpenClipboard(hwndMain)) { DisplayError(_("Cannot open clipboard."), 0); GlobalFree(hGlobalMem); return FALSE; } if (!EmptyClipboard()) { DisplayError(_("Cannot empty clipboard."), 0); return FALSE; } if (hGlobalMem != SetClipboardData(CF_TEXT, hGlobalMem)) { DisplayError(_("Cannot copy text to clipboard."), 0); CloseClipboard(); GlobalFree(hGlobalMem); return FALSE; } if (!CloseClipboard()) DisplayError(_("Cannot close clipboard."), 0); return TRUE; } /* [AS] Reworked paste functions so they can work with strings too */ VOID PasteFENFromString( char * fen ) { if (appData.debugMode) { fprintf(debugFP, "PasteFenFromString(): fen '%s'\n", fen); } EditPositionPasteFEN(fen); /* call into backend */ free(fen); } VOID PasteFENFromClipboard() { char *fen = NULL; if (!PasteTextFromClipboard(&fen)) { DisplayError(_("Unable to paste FEN from clipboard."), 0); return; } PasteFENFromString( fen ); } VOID PasteGameFromString( char * buf ) { FILE *f; size_t len; int flip = appData.flipView; if (!pasteTemp) { pasteTemp = tempnam(NULL, "wbpt"); } f = fopen(pasteTemp, "w"); if (!f) { DisplayError(_("Unable to create temporary file."), 0); free(buf); /* [AS] */ return; } len = fwrite(buf, sizeof(char), strlen(buf), f); fclose(f); if (len != strlen(buf)) { DisplayError(_("Error writing to temporary file."), 0); free(buf); /* [AS] */ return; } if(!appData.autoFlipView) appData.flipView = flipView; LoadGameFromFile(pasteTemp, 0, "Clipboard", TRUE); appData.flipView = flip; free( buf ); /* [AS] */ } VOID PasteGameFromClipboard() { /* Write the clipboard to a temp file, then let LoadGameFromFile() * do all the work. */ char *buf; if (!PasteTextFromClipboard(&buf)) { return; } PasteGameFromString( buf ); } /* [AS] Try to detect whether the clipboard contains FEN or PGN data */ VOID PasteGameOrFENFromClipboard() { char *buf; // char *tmp; Board dummyBoard; int dummy; // [HGM] paste any if (!PasteTextFromClipboard(&buf)) { return; } // [HGM] paste any: make still smarter, to allow pasting of games without tags, recognize FEN in stead if(!ParseFEN(dummyBoard, &dummy, buf, 0) ) { PasteGameFromString( buf ); } else { PasteFENFromString( buf ); } } int PasteTextFromClipboard(char **text) { /* some (most?) of the error checking may be overkill, * but hey, this is Windows */ HANDLE hClipMem; LPVOID lpClipMem; BOOL locked = FALSE; DWORD err; UINT lockCount; if (!OpenClipboard(hwndMain)) { DisplayError(_("Unable to open clipboard."), 0); return FALSE; } hClipMem = GetClipboardData(CF_TEXT); if (hClipMem == NULL) { CloseClipboard(); DisplayError(_("No text in clipboard."), 0); return FALSE; } lpClipMem = GlobalLock(hClipMem); if (lpClipMem == NULL) { CloseClipboard(); DisplayError(_(_("Unable to lock clipboard memory.")), 0); return FALSE; } *text = (char *) malloc(GlobalSize(hClipMem)+1); if (!*text) { DisplayError(_("Unable to allocate memory for text string."), 0); CloseClipboard(); return FALSE; } safeStrCpy(*text, lpClipMem, 1<<20 ); if (appData.debugMode) { lockCount = GlobalFlags(hClipMem) & GMEM_LOCKCOUNT; fprintf(debugFP, "PasteTextFromClipboard(): lock count %d\n", lockCount); } SetLastError(NO_ERROR); /*suggested by Wilkin Ng*/ lockCount = GlobalFlags(hClipMem) & GMEM_LOCKCOUNT; if (lockCount) { locked = GlobalUnlock(hClipMem); } err = GetLastError(); if (appData.debugMode) { lockCount = GlobalFlags(hClipMem) & GMEM_LOCKCOUNT; fprintf(debugFP, "PasteTextFromClipboard(): lock count %d\n", lockCount); } if (!locked) { locked = !((err == NO_ERROR) || (err == ERROR_NOT_LOCKED)); if (appData.debugMode) { fprintf(debugFP, "PasteTextFromClipboard(): err %d locked %d\n", (int)err, locked); } } if (locked) DisplayError(_("Unable to unlock clipboard memory."), 0); if (!CloseClipboard()) DisplayError(_("Unable to close clipboard."), 0); return TRUE; } VOID DeleteClipboardTempFiles() { if (copyTemp) remove(copyTemp); if (pasteTemp) remove(pasteTemp); } xboard-4.9.1/winboard/config.h0000644000175000001440000001023712747543737013172 00000000000000/* config.h.in. Generated automatically from configure.in by autoheader. */ /* Define if you have that is POSIX.1 compatible. */ /*#undef HAVE_SYS_WAIT_H*/ /* Define if you need to in order for stat and other things to work. */ /*#undef _POSIX_SOURCE*/ /* Define as the return type of signal handlers (int or void). */ /*#undef RETSIGTYPE*/ /* Define if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Define if you can safely include both and . */ /*#undef TIME_WITH_SYS_TIME*/ /* Define if lex declares yytext as a char * by default, not a char[]. */ /*#undef YYTEXT_POINTER*/ /*#define FIRST_PTY_LETTER 'p'*/ #define HAVE_FCNTL_H 1 #define HAVE_GETHOSTNAME 0 #define HAVE_GETTIMEOFDAY 0 /* Use our own random() defined in winboard.c. */ #define HAVE_RANDOM 0 #define HAVE_SYS_SOCKET_H 0 /*#undef IBMRTAIX*/ #define LAST_PTY_LETTER 'q' /* Name of package */ #define PACKAGE "WinBoard" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "bug-xboard@gnu.org" /* Define to the full name of this package. */ #define PACKAGE_NAME "WinBoard" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "WinBoard 4.9.1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "winboard" /* Define to the version of this package. */ #define PACKAGE_VERSION "4.9.1" /* Define the Windows-specific FILE version info. this *MUST* be four comma separated 16-bit integers */ /* remember to not start a number with 0 (octal), dates like 2014,0901 would lead to an error */ #define PACKAGE_FILEVERSION 4,9,2016,731 #define PTY_ITERATION #define PTY_NAME_SPRINTF #define PTY_TTY_NAME_SPRINTF #define REMOTE_SHELL "" /*#undef RTU*/ /*#undef UNIPLUS*/ #define USE_PTYS 0 /*#undef X_WCHAR*/ #ifndef __BORLANDC__ #define WIN32 1 #else #define WIN32 #endif #define ZIPPY 1 /* Define if you have the _getpty function. */ /*#undef HAVE__GETPTY*/ /* Define if you have the ftime function. */ #define HAVE_FTIME 1 /* Define if you have the grantpt function. */ /*#undef HAVE_GRANTPT*/ /* Define if you have the rand48 function. */ /*#undef HAVE_RAND48*/ /* Define if you have the sysinfo function. */ /*#undef HAVE_SYSINFO*/ /* Define if you have the header file. */ /*#undef HAVE_LAN_SOCKET_H*/ /* Define if you have the header file. */ #define HAVE_STRING_H 1 /* Define if you have the header file. */ /*#undef HAVE_STROPTS_H*/ /* Define if you have the header file. */ #define HAVE_SYS_FCNTL_H 0 /* Define if you have the header file. */ /*#undef HAVE_SYS_SYSTEMINFO_H*/ /* Define if you have the header file. */ /*#undef HAVE_SYS_TIME_H*/ /* Define if you have the header file. */ /*#undef HAVE_UNISTD_H*/ /* Define if you have the i library (-li). */ /*#undef HAVE_LIBI*/ /* Define if you have the seq library (-lseq). */ /*#undef HAVE_LIBSEQ*/ /* Options -DEMULATE_RSH -DREMOTE_SHELL=\"\" is necessary on Windows 95, because it does not have its own rsh command. It works better this way on NT too, because the NT rsh does not propagate signals to the remote process. -DATTENTION is included even though I haven't been able to send signals to child processes on Windows, because at least I can send them over rsh to Unix programs. On Windows I send a newline instead, which wakes up the chess program if it's polling. On my GNU Chess port the newline actually works even for Move Now. */ #define EMULATE_RSH 1 #define ATTENTION 1 #ifdef __BORLANDC__ #define _strdup(x) strdup(x) #define STRICT #define _winmajor 3 /* windows 95 */ #endif /* Some definitions required by MSVC 4.1 */ #ifndef WM_MOUSEWHEEL #define WM_MOUSEWHEEL 0x020A #endif #ifndef SCF_DEFAULT #define SCF_DEFAULT 0x0000 #define SCF_ALL 0x0004 #endif #ifdef _MSC_VER #define snprintf _snprintf #define inline __inline #if _MSC_VER < 1500 #define vsnprintf _vsnprintf #endif #endif xboard-4.9.1/winboard/help/0000755000175000001440000000000012717001265012537 500000000000000xboard-4.9.1/winboard/help/contents.hhc0000644000175000001440000000717312717001265015010 00000000000000
xboard-4.9.1/winboard/help/winboard0000644000175000001440000000133112717001265014205 00000000000000[OPTIONS] Compatibility=1.1 or later Compiled file=..\..\..\xboard-4.4.0.chm Contents file=Table of Contents.hhc Default topic=html\winb3mnn.htm Display compile progress=No Index file=winboard.hhk Language=0x413 Nederlands (Nederland) [FILES] html\winb3mnn.htm html\winb31o3.htm html\winb54vp.htm html\winb5lkl.htm html\winb9gqd.htm html\winb0nlh.htm html\winb85it.htm html\winb3j3p.htm html\winb4h6d.htm html\winb87ar.htm html\winb5qpf.htm html\winb75yr.htm html\winb3i0k.htm html\winb701f.htm html\winb1v8z.htm html\winb8ws3.htm html\winb55yr.htm html\winb8n03.htm html\winb85yr.htm html\winb2tv7.htm html\winb381f.htm html\winb1hir.htm html\winb3wmr.htm html\winb1ks4.htm [INFOTYPES] xboard-4.9.1/winboard/help/winboard.hhp0000644000175000001440000000105512717001265014766 00000000000000[OPTIONS] Compatibility=1.1 or later Compiled file=winboard.chm Contents file=contents.hhc Default topic=html\01.htm Display compile progress=No Index file=winboard.hhk Language=0x413 Nederlands (Nederland) [FILES] html\01.htm html\02.htm html\03.htm html\04.htm html\05.htm html\06.htm html\07.htm html\08.htm html\09.htm html\10.htm html\11.htm html\12.htm html\13.htm html\14.htm html\15.htm html\16.htm html\17.htm html\18.htm html\19.htm html\20.htm html\21.htm html\22.htm html\23.htm html\24.htm [INFOTYPES] xboard-4.9.1/winboard/help/winboard.hhk0000644000175000001440000030410512717001265014763 00000000000000
xboard-4.9.1/winboard/help/winboard.chm0000644000175000001440000025154312717001265014767 00000000000000ITSF`wV2|{ "|{ "`xTcSITSPT  j].!"TPMGL //#IDXHDR/#ITBITS /#STRINGS(m/#SYSTEM)/#TOPICS/#URLSTREc/#URLTBL0 /$FIftiMain /$OBJINSTj/$WWAssociativeLinks//$WWAssociativeLinks/Propertyf/$WWKeywordLinks//$WWKeywordLinks/BTree L/$WWKeywordLinks/DataX|/$WWKeywordLinks/MapTr/$WWKeywordLinks/PropertyF /contents.hhc{/html/ /html/01.htm@# /html/02.htmc+ /html/03.htmf /html/04.htmt /html/05.htm~m /html/06.htmk? /html/07.htm*T /html/08.htm~O /html/09.htmM /html/10.htmT /html/11.htmlw /html/12.htmc? /html/13.htm"u /html/14.htm /html/15.htm /html/16.htm'~ /html/17.htm% /html/18.htm.l /html/19.htmO /html/20.htmis /html/21.htm\j /html/22.htmF: /html/23.htm /html/24.htm /winboard.hhk{E::DataSpace/NameList<(::DataSpace/Storage/MSCompressed/Content7`,::DataSpace/Storage/MSCompressed/ControlDataj)::DataSpace/Storage/MSCompressed/SpanInfob/::DataSpace/Storage/MSCompressed/Transform/List<&_::DataSpace/Storage/MSCompressed/Transform/{7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/i::DataSpace/Storage/MSCompressed/Transform/{7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/ResetTableb=}>3 Uncompressed MSCompressed{7FC28940-9D31-11D0LZXC (0 *<jc΃ `' KM HHA Version 4.74.8702$ html/01.htm winboard contents.hhc winboard.hhko  T#SM=Y3S03^U=H+(K۠+mk{+ko@Ff %BIkI1e# ?6!{j[]^f{/ɶiF'_شE<+:+dqi 9|pD#VDF d( VB'U<xC=nf^UfT ^#b@NaJ*I%]!ijfTYXK:+jq5VVQ٥aS7oqhmQMb %d1ʐN8" a"#5=1P$ȴƫTuj'֤@5(CC٦M4s)Q&2Cx'XNh4` )1 H;Z]9Q*/PR.x ? ylWAב@aTdDֱ֖ U4#N;sNNQA/{5nSWu,;&2D|GZhK$Hnr6mʉ_#hHT 5: d%b1p2f0xvTF=c-]h>~pF\NL^El '?6'_9:(ǐiK9M(>d+aJQO5 Cj"~\P&f*h1ڦ:: AD-4owڢI!4Q`7xCE)+ W;!90hrth>nPAEY,Z1Nihђ| ![*Pp ?cS%Q@J Ԗrq;udUf_o%b480 Y{jh'z刿 ˴N撥kk2 @u?@+*w% IW2#+\C5XUx!5%GskK [gJ~ /(<_J0'-}ה8؎bdY*ODMfzqaЧu4S;Ж֤lՐ{K"pR~x+t5m#5}]1{#:ԘRK  _ >~| OKd0! a N*a /0(P G`6GVc"-qyo5+5AFQe{\p6&n۔- \Ѫ'%ȖTk;sh;5<)wy[}U6%KC@l"V:<7( S*7ݻcwI&p%"P!fE .xҚ|D$*~ciG9J 9-A]DG,R;lp9(爪!vt8ݯpDSPoDiR+r D ׾tET ~ C @o,y?}3Pn=-A$UY 1媉Q"bv!Ԫpm[0QzUrN8 91lP.Y*%XR͚4)SSyt˃}4hRT#c̨)$ îιInlÖJR, [GX:QOyKltb%0Q h.usFoJ3 zAI) G3 BԶy(:1ʼn!2W7_RuJ~,v >6Ryȷ)7uꍼ ?)b̴XC+Mv,gVBDXxIr8%@Z>ډ7x/} }hM`dĈ%];ELvר'So_ E_yAT1]^'JO::$2k Gݑl|)=0lkqͬWũ:3j2axtb3Yk-G`[3GI+o+OC鷷5'?YC<0_:EiYb*(oA18 &;2pw^,ժOQnG&F<)`7}Ʈ4ix\wX༶.p)huF7B( Hπeqd{"gec8-NjTum:h?Y@*~)LM{9$a? DquW ȖNMr5B98m.1ܣL}fLW8~ثS%)4f{_ t eefM Cʄu/GDrW 5pbf8뚸<\C uŇF73dnAq0x)}gi0JD8[\Gza;hb-NpSR1^ 5B'LKkӻm]Waip;=f"qkYTg_L &tM9pqNWfg9ǒuS+vt (&aX@6[xtϚxkT(>61 N̐ IP:416D7k+4s!>5Dura5zi6v WHjFpzLCrԱ:؟cn1+!QJHUӸPN?|`Plpc0}GR&-O{8hQKUhØg4аj'D:CЈƮژ$n]ҾI e4U4pgvmܓe"9QA_03w]2f$|F d pӿњLkD`Q1 IaUoCiAvdօ|Rg;7v[ $\Z4m.ח=+OZ.L"B8+sH#)#Ec!b2[G@NSYs󉧚јaiӳpŨ6cX Ka$ktg2bIߚJ՚GE㧉94fNd$yXل?%w ~^DȋPմG *f)a<`jVƾfޔ?hAy:Ee;NF~H֝ m̪73R"fQܙ9VOMl p Ē|3M@B*ء棁\xwŒ-~ATWsƼ;! "MX<4eݸ^ъvgn1VP6.Cc6jdȮDž$n1yϛ$wKyS$ 4`8s=,tπ*`|G(  ^T@&6S*>8@MFY:ǀntEjyR>*9r 2Fk;LPs`Br4Ea3!>iM'cmKιqyW8&;/°yDIIsN6 2R';A">&M`f%bIA Vy^N6j3 4MIuVSrF,y `7RirTh*9m"~mv* XTcbCVjj"'T< v$Ȧ~'b'#/ϓR۫triʨ@~.qY`KlfXVL3Xwe\Ҩ%6`f;`vp?ȡCP}d|vYd׿hNB+,TL!%K! pء&{`ue?7G]HVGV:0CJ:}$78؋rτ{t!N"2pNW5s8Q1"bB4fʙ0n^ IH` (X;옾|#邂*P TQ^@CM^e H(5$/!L{,tz-Cu!v}ttPfco3 ecd(굒 <\Bnu{hQ3&k *PPT$Ntt73zu[^S,i@4.̊uDBBo5gݺi?RT]g*Pe`yTN*1niȷ1so&c:L̗*L1ĔGܒ)3ӑK+s;B͂&i<:xό"7HK;>-#13?_>q{-g6l|{]'.%;>G~<cKOܞuj938S~?썑(VMLdwӑ)'!]1dCS ;>ρ IVeK))%}&uT5KўG?ѡHJ},O?wEƞˎo)WŸf;{Ik5֞PSR( E6K $lΤuJ w5P" B>7֍_"=t:*2xH L[75&wH ZY^ҴQU]P #IrT %(}"G]dJ6N;2h 2*?0Ad#XAFށ(REhUB.yLTk(PiFgvD-(i*P7iaPPG@Q29[[D[+-TrҋJqb ХZRf7m)ժ0g+te{) ɘU} WEq$FCy%U*Fg6d 7ffԞ'KJHï^͊Xњ] 9ٓ=iz%-s-P3](#^8>b@6Um3𻂪$}EVQ{%>T(οnhNۀvTHtw[{w ,q,C6;pPl #g & ϯ^iİk5 4:,GJx'p BEKC,GBO2eBz%2H{:!nKB&,-dnV9_̋xY75 v\S7YVqms,ma0)6|~2,,- p-R|z&;1/ֺ%k$J(aT\NT̷YhF[0sd&2| Gt)L_״XTiR L!ZtY]e0czKy!Δg~t^‡Ged"oF*n.Nzݢ -\eZ^l]YCF"5J+^:pBn/ngQ/Zfd2:SFh'XiI~VXܚ]bC*wm Pd=$KM+jΨu[%PZA%۳ G2|l rg֣ĩFP=2KbwwO:"V܎.=o# އzWt=IXХEjf2nuW^UD3&s ,0N$"_||t(zUʘ`S*>gv2])hSVkt _Q0vLQ-'3jWvZn^߭$pA"sAfvH S޲㽨. i᷃BC)2@7\ <ug!( \jH ZM}WmVYkSQʭD3H_5 JqIVǿ0u?"KKVa$NWiv-Z+zRM1=o;;RힴZPEV4k6itDiQ]Rh0<bXл:Iz"[EWܭ[$_y2K&#j`7ldj3\Ô6d9 ISpm=U܇']l~x 4jHZ.q[[(SHPt&0M m'RD[,7!ڬJClVQycEаח11yvV"x .8KS/5d2B'O8@@LһǷp#6vPϮӢwsx'd3̈!qsE*OW[ )W%pXmwFNxSJ'Z"3MQh+Zط|&w"b]q'qE m ,;鏲g$ 1EqG I6Vim҆Ehל&ۓ0%JRJbo0 HC]2×?ʓ!JeXP|E&1~0ʶƕVr9Աh%2t/mCTL` 2< x@\©9[ _[F;TCR-/¹aX.l䶌PšI?R 4tsg !OjH71*s}nF `xMEln뫡"c{? )"sYWc5LpBT|\< oۉ*jtҋ}l5*r&Rb%Ẻ7}R\OȎVS|ƕP^>*oXXpΌ1YIF閘@dH̭q^)F{WU]Vkq\őW'ljn^?Kh|ՕOCyyC2˵amOxSsyi}~LJ<}kM*s*=3%/*?ďB`PZ:}S'-xEۚ0 y^\V' a) -W|! q`\_a|UMMg &]ٟT.?49[2dv r%.9 rC:6o76i&]={s=h }G-T-ƙ6eN%oh5 +fN^hIנT>G+=X.|!dY/}H/2yhh{z(%JQ} tMY-hAn]e->E oXdơtW&T׹fK$! U&%e˽:#2O&IcBŢT]wc k1%\yfǟo_luW3Hcw!#[`^ɟ 2bf3mkg *› ^Dg pP_ ^G?1y*D_{1 MB`<谊۫#deA`76 qK,iIJ 20d3^ ԁZ"n[]Ϗ mS7y[|{V@ %~sI&1-wJ;W%nd?E+/% dK7 2 M~?&G~ ifg 2p_lXl@v0OwTŪΆ0@%vҢ5tQ^ 3\n,P.iE<%V/x_| LOuT"GtrRA;X@AQӟ!@Y%Mfi ^=j2Z 'xȻ Lp1Ҵ-ZsziXMg*SOxÑ#2iZ7ח#ILI^DPiḮMrx'E#M%CJx_Xh2D-cND"$YGB)7pN7 Yfkha-lC~{AɁ0e Γv#&Z&P9u>C#鐄4G8^V*;u2sZ-/sd9>hv/9,q$///>,V XߠQIOhvis=jt b1bcD 8E.[Ŋb"0e$s3O"MTVZ'QjwA]? ΕY2$#H`.Rs햺p*^[SÇ5% u0^Ʉh řm3{X8^"$0Cΰֵ/hӲ>ӓw@ YYTj<4|ˏzpS<@bD1b @Ի#u*Iwz)0'FXRp1H=/hs|`Jqt[ikxЉj}<.sјF+0LY%}i2cx*R SUA։ABMuGZ2е< bEʓ薩" ]c Zo*hSHApEAuD91=̕[C[kq4D^c9`Hy #)v6oIfl3Fv;UX{ɲ!;k͑ܥp'6?b ~fH5at*sW6|jE ! @8pW:31NE奍π,|ukȫyEwX1*)OcvJ#dP"؍ćmB4Tm](ZUF ܌80zי\ˉ8MJޞZ-~T(Ŝ0 %ר11|ΎzAvOeR-W&s>"U"p7FɻF|#ޔm$CMX#ZA@eCGq3t3-L|^'*xPcMwgH05h'U%5?c 5Ɠ23/Æ[N>TTgn[d^+°ATH] 282j<^8a<`j@И3@*ԍDH1 iٔiMoMMw(_l!B_NRGֵ ū ;bÁ}twP"@+D'@|bRI q)R7G6Z1~jIjǪDnq](Y~@uDmn絩wxrUsd {%y!{B/o68 i鹊-̛;8u=D!(=_8i m"o g]j.+Vċ! )wGsM dDG%b߼S nxQՇǠUWU :@H!2ù0&] r d)0JaBP<`<$?" 8 N S|yQ^H!_ / 3o8X{dg]b;!esP)(wW_/fybE-6 0hj'5[hS@.0<̘`w;1d&o7Q/8H KJ@.-0Aց Jh:&XVL`LmKoM/~ޖjexZ}'U Y'HM.ظyc?ٞ1;+=W,3bV5 s2d' yޖ83vܔd6Gs >2Q)ē&SaFe VJ6َ|-?$jfK"KU?!q\'6̺K~v<Ӄb6WtS# ~3T4>$<`7=< koЇ[ί?ڴF)A$$&,yWP0pA N%еrٛ^e)% b0AEo lVV(Hy~FdW&%:6Ͻ4U7zzQ߶CF`]"KYDi>&Te+(}CQH?>gE<~I4ߟG}7B6 Z&bPJ?8ΈOL~TÕ2ʛ`: Z0Gy5 nB;UQ %N4x%SNHڟ1 Pz$\lDǨ\ V08\`u򂟐uDEi} QBW9\Ws9K4ب`S 9J=];7f t*ҴߩnaK՛^d+d8PAGuAd eNrgTŲXbjbG`*FEehZMԠ=wC9 :n3p[dB6p2?X :Wj:|ӱM|O`ʷo`r!gQHnTFzST2!rQ9v;0?Euɨ9BOQ$1Aׄ &m?TxIPM?_usY5oA4dkBP;xܱaĮ:(~gl P4a)#G!'(g1ձ.;ek"~`e%Hlo:3Ӽ!RO tPĐ6Ez$`8n\qvsTQFTC4DJhh )egdixA8uh3m7lOgƚ27$?8 6cl4u2U؞{ķ|م¹ 7R ݵ/6! RPLUK;O45!fBa,.M.z\8Ň G3NJɡѳ_\^3EM)!5[d'PLy{u*$D ӓ 0pswk;Q|`ӂ#v15P2SP4oV*ڳ;.6W?H9Koڻ {fg8!18ݧwtݽ{$w(w{3;n󡨺UUA*Pj,X<FZ|a[jZ9R=duL2sޜr3ITrոFIU"(!=@@lGzCtT%Tx|݁z\%S ̃| d¼pc !A2o e8g@sa88b1|+FJonV czzˋԠi9~|*L_|uq- zMV 2ґʣgvOFfn`l  X>Ȼ󄒽2"@tA>LZTީ.&N?NqߥbfwE WL4BJe&ϋ#LCmd2pzLZV2"sBlhjHT *# 04㇉z SA0*-`ߧ 3lҘNz˛4cFr HQ/e*7}f$R:35R;72!nӹLQA/Z,@[.p )8CuJ-Ǧ[-/U)EN ^8[3B].1iX}&A2m?ybQ=yŒEW sSn ʉH2ᄑOptp^?';Z|Q ~i?Z'Y@Qन>X2 \6bSsI}QKvC%)\#͠>"'bHfU.K!PuȾ̺bX8jxV-5ԏ*Z3.XcN !dH.Zr5LID!G932? PIN4ĥ*C 5Vand}%@b2@Y:4AvYgEx>dڦ@*/|Q 8cTV yr4Ҟ9a嘷)7]Ct}SvpGr @xc0yvD֥g(3Z(jen@ Y{RGko6yۗIm׎}{ψ]" l̮JwPԛ@>\:JjE_K\&T(=U|cqL@BtN!c8e(e\0OPVVZd]SH'Yþk\/XUJbCݕ1O}kw%c`]8EO^*Y'Q"& Y%SD5P\tqKI>"9$Mi֮>neV0*ӕtER/һObYzŸY=o/~2蘡 jk^1/#bX-YoKb;Ԡ?x\@B|[x~Eʟ:i|&VGy9߆KӔ{XC4TX2klתpfCKɁېKEJK\+ςb29k.Y瓹7hNlXVF\P0<7 _;V l)T4OA9BI0b)aI uj{@x,'&z%缛Jv֊M9)rᕉxi`NhZ{gt"o۾=ޤlP&=֣I_QEXl ? ɻkcV(_ n PX؇coֱGk[]3qZaPn}(0 .S 40vbZBOMmǎ>. (nĆ3Y'saO'Dic,n#!3JZZ?g^ؗ\ &amTa 'aw?}71 =5(ݝ\>S&sIrHoph3#ړR@ޅz_7 }S}wjiIL_9Ƴi=ǫn[wXAw8=$7?z_d %S}Jlx Zj~KOFVl8F5e>:pg f!ҫix1ƹ4oZxArUof4OccrtP ^oNyE~><͸e煗s[=7] )kAwZȑ]=,Ap> K1wj\jm^fcdRbMd1L,Q{ʼnp"-pHk^t{xak^0 fnr(~ļ*o+W$kQF3nj_fX @+,L0V> S\L DpN"A[H=ud]qmJjo'LWdS?𧂣Vޥ# -vr"<76Hr2C;NĪ2IJcx|mZ8eL6[EX6fŗO8ȫ=)Z ݡx]%^fo鉛OI:1ݧh!m nSD?΁έ PJkۘi{ ˁxAʉ_,Oлɀ+d^A"qHl$?WNr=ҀmZO0f %Ƒq \g>UB6>`lU)!0C!fHt^ȝ~ q2!NX;ܯܥ5zJqKTQ)Հ].g| CB" vߌ _Yw_cL%OLxiaV$*{?i.X}7?/-=K hp/\Ē3ݒPT;WoC56 *+ȵIU_KwӔ0ɗ1m_"zjREƎCˎ)sNIxs#vKGQ(=S 0JC,6ͳzRu1Vҹ.Oor4*4eȼ}( b|B)Xt ]W9x_vCy20;'rr2zDL %Eb)`|"Ti|Ojϼeŭ6g++Z~7;|ܠ?:dFqo @a!:ㇵ/Ḇ0#r*DM@Q6i<`jID ,ԳV'}&wCkS~ݒp^=Q*-PjPRXp!X IcJ!4qbЄtSFIJ9;y߶Voh2A9WTg|ס i2P]#Th7M X.R6Vc%F~UZ((9!S ARiH??&`0@,G)i M$3o dԀEG颷WfmSxSum^+ '},Oii¤ 2)ٞ:ˮ;Jڐ+|L5Jª/yať(s1`ؑYݙ~1HʕMx,υv?L:>@)&@Jy]$FT735w'vgWBU9L_R#*B-3?X:v4RյP3(TP!H^4 1QQ!m5F'$+Wҍc[[<3ne̸d[jX6Ës81n]_,T"}3K8vԺWUl7xstCf$#NGCb,4ZgO&qO*S^1*] q ywgsy&-zDmEׇ5?^sڢ7d-0ѵ締&b'e5Kf l9Ejo}^)u@ Nb$|u:$I17{ir!w @@dje|ٝ+;n8d7wqA5JY:'+"|6v7Rhsp"ο ~kRmY NDV:fr'*T臓G9zMtX;0$wz-]l)Qxb]y|cx֙Y:i_tlvl:(_; 4j16hR>DŽreDa&.O@P%{8'xF8qk_ϙ7f)nc[nMnVa3+åqR< &[ƕr~ZgQ\ע6 Me Ii$:^s*3ezu]K0=袨MEErJߜ@9 .t*Nue\=RBtFb Z| KN[ <0ZHo75Sb3M.[B{h_WB{%slGnB#Bf'o'e,o&PUr&\+/o'ܖf_&m#쁩Ý0?e8`zP2;A ]$Tw$ .(~ǎd/!0QQƳȚb;+NwvGܕ);Q$~f&-K|ye[M0['wy;,PWB&6rۦC`kbW' >5{;?eJI Z* r[k- eÍwH!%'([T=&nJ@ ù7fѡ&0bž&A+;U`az7l3"NMK:_V!oЪ{|[1HhhA7y}X<ݔ}LrY*^HMs˸.ej.,xc4bg*MwWh,`Iӏg9GYIi$ YBQ9溌_pLrV}WǝDYclF5q,XXZG}Eߪ{EvȮTZYȴWمd"p A9߻dpp`! "E2xe^l趾A$'Br]r qQAib7_~4aդi Rz &Eqr_R a;ݶPbԥr{] uq;=\٢MBrc+fV C*e79ΩM|L6b:œYw3ӢL.HѽVFpwa.%fj{JݶzTLvܷℴI&zY(ڐ(&.vݹW ¥ds_+ b zhL3Z-u_]r I]E~I_,vW%P݊7,0'8|~jxJ9:+A9O;nV߱ RlZ4畗j2A{!)v=_5SwƧSt -2S~T{}Wkߛ?M]ngXߙ O ,@^f[0uh W5O SFۃg}zf Uc)E4R*,D*(Twɫc7R 8]l:YUq4ZQKȚCg3gsDbp9.{An:c ^t26`v̼Ro6ҥvUl+C9yrGRefw4 rPµzꖗgًk.o%P V+k犐/Q.4_i顂U铯Q7 ٴ#O|չ\:fwH?Rŗ#<Ih£ȕPV! s0{qjR-I -v_p+ 8#߽'yF@;)]/ˁ_z"ۚ5n/+yg>f޵eȒE:.{#=F:)0bK{m=,]'٣~Yݴ-`7O{^K6鿞#%--ox{o2PY}zwd{|Ҷe4n:a*i#WbQw/=o%|kRBz`D&Ihbj>˰I^>*'np,SЌ`.̶B>IyN+h»q8Aʼn{1 fBkJ_+O-ԿpsCd*4綅G^U;rB|#*\u"3f/iINUvJL sBV}! a26 D1P]B\1#:wM ^ ^ 8!C0diV?8=S6;'w-"| :ir5{cœo).1߯Wr("m\^,b5xluںp/n?*:-A\Vɻ,O(v)(IufϼQ8snZq|xBUr"TN.]ʞ-WS?ף+ ak=? }yWmŞn@mO@) ( j'ZuPT8F0͢{ @3fO~~᧤0z_AA;hpw(/׷T2{0:#.O%z-gEON#]@rêX* Ki9]x{5LQia n\R$PJ}8;HH(5mjxh|{]ׯK_lᾴӬ$vn'okg5ލ\:bxAFh<9`14 ?s5/r(-8zIC+V QMjObE܇mvޝ{ eKc+7޵fGd&zӖjfH+}'JpUsAhBA0 ηH[#==Tأx)ErECLWMvRɀ7QY gK@KymFb!vchY %VTwBOݾPߦW8bp/r+NS8;iN@f3c1h.7B^VD@NRv#!)c BνPi1YjG&x;Gi]aEVӓq5o7*CCH$u57gz] *8Ϫ)vD,Mh,R>M}AҬݩuHB Fk(}5Z[Nnٲg|.S0q RiR4S9R7Y=pU-KBHf\lSc9W^ )׏>nFp@hn0zҾx ^.Xy);RT:݅>_ _:vԴ}uB؉XL8b+-Mla!3DblA$p'o~zJod:8L3TPԔSfk@sE68NhdNS2e{%ʤ]MQ96\/%Jf bvFdx=L5_@ڔd7#VJN SR >Ć3+H͂B !*ZI9pF]!!U#?lz U[D~w҈RP:i y*6sB;j6*4`+R #88AqÚTZc6 5"V]ӎQϧӞux wi}td"d C6mċL&/}nм:sZg$u9(@qm-㾝sR6 !$ d r zg!O*l !K>H{l6|"Թ$^̿Y$YQa ݼ{H3~Ԏ7oȁ<0!gHR#D(؄ <lďAVyүG/{nǨw^`ٖ„#dTkPhEbZx_^+\,$MͭdzZ7Z1~I'Xqɨ׃<'-;"} 3乢4*|%;5:k99Ot .X@H^x~Wrwwuǎb@B\aTȝ*R?$:vr^eU:7?g9jRch eȹҍns.ʬ݂Akᚅ*=%0jKQկыzvgX~U.A[Q#3t͒;K`pSĎH:noUrv !')2곈BWufXh*$B*爦34RrAA{9d`@ j~9~Z(d:t*y 䧓%g܃T4-~j41=8_)2F?K1t ɆT &h` 5Ztf@#]9x0ր[ M:`5)!@FĎ!S$kδ<勤X*}ZY ֲhTIAw+ +9dld:lc@iF$-=2cZOӡ`I: [wxff]uK/䐣gSaJ NP/ Q")-y1~Vq"la(LNV% [uU8x!o{{wc>$!1vN JPu韂KU"C %5 .JXgC[ȜU/تJ:?"輽$gˌ@TTT~BvNdyMjXPoG͆b6*XjE]JPRQc o@x)r,㖗=8u'/!٪d)jJ%O&`m (T,eQԈ<$r(Lg+CY'?imz\Qa{wV%wMrE%);E~~& W[_P 88"T0CWEG#(o+H(z ?X4=$m`.}=J#a?Ҩ7um䳵k篕a͗i䰺v)1W#kvJ=hȍ(F_ᄜ|w|s7j5olR:5m9,_rj֕:gGu>RzO=j푅܊_EmsLî#X1=<0-8—1H97FoFYVH6;D2lBNif6 [rvA]ju{:)sj)&͂_}(ɘgř<"d!nΠyƟW4*<:$ǴUf| Z|K !N-cP_fX.g{5xYe\bIlS 5A~* _gON<7LW)| |c瘠:*m ܳLդ~u*QH;32W%Hn >n<:i *ԫǺ<.mSV;ǙK'G0)&UǠ NH&d(`W;?kl^|>-|m`C"R$jz{kFU&P w5Ck̳pf氒߁SlR] $AP7֗6 ߩx-L+!exy%cYMZ{٦~hSx?Wt;~E6cV1M} ^)q ptqUR>YE\f)3lVZ[]c͕>%/"]tge5SPNPf]Y84pЪ+KyƉptcZaLK>noq4u" qo)7*:c0c?©V]#nc%} {ZێrNr:F][2\>HYV#knۆfkFGp[_vn"z mX #)X1tpDBv[7S$~-W!C1;B;Hd 5k^:{d9lfSVJԇ3;4C8ߚTYs1ڔ 7]7!ቼ: p=U\YbNcWlm}A'"ӔD;=+P/QR)[JE]ЍN"9ç6iK `d'yO윫N19_n$tJ5V&cWPkPL╚s]3 bD)oc\z*tAv ػ]Af6EuB:zjJZP`aajOʆi|yiɂb7tfZ@;J2ˎXsb8kee# πEʨ@x@H: #ʏFZȈ%G_Ѽ[Ev}&Yf̝ڈiXWʹ@~}D`xpXjt=hI!^Hq3x h37 Q&Clj^fh]UsDY_fKmƬ+3^mu!釔Y[7-KAvY>lF~?qcaezgŒFpGlv XbDV6eG^v( nwͳ8d3Emk\ZSPLݚ6m+V3H'귗I2IO}EB(I/z̮KlɡFJ¢qhA,z~' HrqYjr0R%1ݻ0Y:B'Фt:}: D#/]wi!1L۸[0%nÚ0u\T 1:'N^i`"LdT.QEE]΀ ~3/so~L'=4PgW.=]:S)D\,P9NB\h!Dc/ЃUs 9~^ȱE>Ѓ$bd ׀#:-@}KNbWe.@XpFK&b$du!7s#IBk5k˲U#\cƎ^߿\;LpP~moAɁE 5FdE4Wm!HATIvx RVZM@m}t$d:GsEכ7@r K&l~s4l vISW<&%ZjJ$~ ':80)E )_Ek*Y'kB=@ugʴ"yJ_|&Cʗ4*A#N"o,!xr&N&eU{#Gdž&Nмixj>\ĦYyry%(PFӡh"}N%ɬHq -lD :}p`pG 9t؆=,Η7j6??#i&߯}]hV[3cuUg{fwJ ث Da[д!@wAqďMRR-Tز5F'Ġ &`O+9r/5!O#?r}W˭2*'6 [j&T/KI!5h \*4NO!AwgNjtxM:~M?)YLg%wh=d%s5VJ3FO?Ik'|:w0z pk,=`]4ێZ/3)f5#T9-tJ}*zđ 2ʣBs}cq₅,},6=ϴYE -6gbI], %'{Ǚ.29jwyӨ Ie_ew9Vl \a8ulAM'}P me+B.gxW&@ SMʣ \b~Kvb;Tl#$Nak1pl'MW5:;bS=-H`p>u7=MęF抶Q]q4*HR4,UtQ~12tWMXUyH+ҿoD0_9N,ԭ¹WD1=+tVG$q]A|بQDJXkj^*v~p"&u_ Ml۬b[kpF۩uR)I 9䫻tm VZbۅ*Bs}8~ó G>9HmUݿն9Gs~=Z{ jړU~X6*;` H3,lI/猇Bٽ'7 :נ"p`rE ^Eaא6I&Fj"xd=KpBvSHRV}cZ2舢y%bDٲzU'1˼<>u2'yaEV^۲}5x nPsz ,?#J KQ^unЧ]eѷytVØ:Xߔ7Nӊ@tR+i.TH엟 "S3oxQ0>&sL,C@N8eP%dl7'Ii1:XpZ6Ma8'X~T[g>62Zlgԛ &d鬂gQK G|B L`m]n@FD}r/]>WNS>Lh:`+ #mzhqjP<mш*Mɲ,$. "[< HJ>>Q&4|΋k(۞ҩz~_֣;h<ȥ'5!^hƝa1zobf"H~EӋsdwf2О>]sjZ戶yuWd7[!HUbzMּ*OGt'RR}ЛAN*OJQq.7o]R%gWW4= =bLt z]KV}ȕ:90[! ru0BSah2=i+;qn 8.vY5s5aj}ٛ[F6v悝f[UpW-+VmkrPV#,M5a%`"I^`P2/15hNl9$||۷`r;!sWh:U;*6"!_R9K]M9*zPF9XK"Nx{JMSF/Xҡ!e+ &0l=BM uzǪ@ A]s)A+9l8?W!޸>}Dž6y \oC(͝J?^h)͙{R!bXfO}Bx8 QG̹zYxcfIcP/)R c/sE:mL:G]Б$bbEK<_J%MaFҐSu@dέ@c*heV߆Xz̊Hx',mphYCɡk  gŧR9Ǝ2Jv)F5f<:%Hm rԥPjIicnӏY^-%(b;fjfSԚVUiÈ!3uQCRO"pK:NrWM|(J#tL~SU'wXHq٣F1`d#,:LR#^1xB: zL[1 *7|j8`p?kxix0衑my$JIT:n{Q0~4l֊P%R=e:Ϧu fI qQdgd*ve9j-ׁ|@QUnҬCFA|r9 H<8}0Lkɸ.lL(ѨӃ8  TthY(# /LP eD~P[SYJYpF U~|g+FP0YӔ3ES͐OtUi t]+GMȬ*8Y#L5\,dXz~ź Ub.Mmj$I«w`N/(7ԇVMh6-6Ź_geІ"ŝZXڃ[sӓ+=~;T{SHno`sLW}k3tlb sXbe4(4Gw映$ѱ&;'cQ^M/U E 6Q+=/[tCScGAA]Q-zTG$FlI{)@K(l\R=6UQp6:uf2CLjmjdzf;>:E.\º,n&7ht'R\*ݵ -hb /O|nq@PԺA`=dU G46!qUSN4+bheBvӂ+9Sy03m᜾%}j8,ʳvk:}u:Ã/z0"C4Mؼ3cQi)).aAV? ?>wEsḘJ9E~Wkm":._ˣϣLtS+Rp֦;;$ M*`{ǒ !Pk{MqZNA.C\~4F]Qhs:0UU $_%ܧS͍Fjۖ']4U;x=U4$hMEtXc)f?wf$Wdz~%Z[;3dF-*^uV@:eu.>C{QM8&8-[JaËՆmPa\fl-X_Y4Ѫt5;d'hvo | `:i VȦU:<* UFj޿ Π"o!Ԧד}q{ hCH`=R[w5?vkiLzփ%OVfY/WH',?햑6ۘw#x*Xql׮Vdr%F7_ҵ_~ui-DҪiD43n s鉶!@;; hfC4Ӯ9BsKw8zZ;/&si#N^ sA'Z~޵C+u#SY=i6NSmԝX%+aN!{- pQ<_[SP9i\*474n׌{(Joz/OSJJt`5 Uq"ܿ 5 R.!{N"\I$G$jitOew"YbcmѡXn(&3+Lu@gE{z@fje$>mJsD::IMʴ<%feUwUB8aG:V6I0[P5:70Kh#/*%=~t{}4$#'lA ;=޺tbVENG{$""E7 )e/M==S3ˑc:(Td{4C`6<{p;o*n;il(DV^DV/7f/*ICGi@enZ|S3{|en2J;.ӜviK\N/]T|JȖ"R.h\IC9!`Vڡ5sBX1+->&Di4 30 Z1+tu+C,'D]}] SA;u*V;ExF(wB|`ķ4b\%Dv*;ɟZ48`-C̣!CT?XP0Co՘Lvdjܰ%'ꩫ%[6a ,BvC1w%Bg~NwCa2v}`v'XyUb:UI`@5^ן\υ[ Iqss:O"|ډc\# zf/r:IMsz4 Śc}*p<DZSIT$k ޻dKVV<)G?e0fbs9N'iQvm8J} @ Q9#!k B`X znq?`3x#1alF&`k9A@v[CƩNk>D8 6@Ks.{iδ\VSKJ# ]R R-w)E$wO֢P[mDwu^*9<4ɪkڅv2&LM\$ 4ڠ `xS/ Ֆ橋!J!!N1?DlRI_H!c(&J# U +ջ7!82'.;qpF-Z0op\%rT&\/cU* ό P_,pM_{ڡ/_kyf:O&hNuVlce﨑I`ӽƭw OfcȞT|)s&z=H†㘦g4[yY?g[(>!u-G J2 0s[\eddJa[7ZjY"@& ӹ !;0kLplspsX&yj=Bˮf9 ٥rXqhALIBbQ~) Lʏ =Mk !304_=!IJa"$Aw([AډG{!Hd+ƚpڷ(K9~ 'jZs0 ~" 9|fr9X%.n/ RE;xcCEپp#/s%c^G7&Xn9L^]V"TƯoyc|N>jʅ;A{=aGGO6..yxC.O7"}xfj(ZK6*rs]b x_}w"FZZ H[[fuc،6[IFow /r\qNxߴCY_R%55H,_k̟I a:xR'Mnd>% E6'e<n7!m-WU1JJDC dT XxeG{6BRIK/(k5&j.!#2 2 z}'%ٔxgAߢ~ `.pE1=W_e(+KCMWX{ޏipqb0^?HH!aÃ_W-yKy1y|PgvG/?ÉܝtC#a.;pZg؋FIvo>;&mA{ kl:^A9F (ex"UČ@S0.?"Eޟh.r_p?IzjOޓO/ oT+Fc[&q@8hRLI3`t)oВ}L^Ou;~- `yy`F&-a_Ua _9~%\~%L=6DY_:_7Vۥ(eXx1idCPb =;7WXUZ/cHΉMbv`Y2tlפƆBә@E蝀o=R['fLvͱ;qӋ&3'aXHIM˜?– Q<}WI{+ulh(G6.%W߈֢7 V%hXRȔUErK`0AwǠ-@+v:{":$`o`i玲CGT3(yTl!8 ;|W/܏mĉM x-8)q9BQ5I8xl}T/LF+H"1N;;%w)tBE盀j I#n:'k 䘧 {X~FQrt(s/d%M`++]1~M}b{2g߬|fEK?S$K}MkDjS56ГZXrQSD:IO1?ҡ& Nk@M״xٛbd+o|&.jJN«i ,Nv+#'#vHL*U 3ہ7F,NvHmȕ{Ɂol>ocr%}S^S;zI*?,„Lpغ c`9Or5qZj ?@`߂J]S}u4Św1a1Gē++RZ%`$2tj$(o Oul}QX<;hfтQT>._RXoMlbFG^}Tv3`c63J6r}jSA|ejN|h^.bbx gX;SCA>b>ӡ0jS;fa9XcѴeB5f0]; F`\OpT0fpudu[-֔p`{%:wk]i= rEfXVUx֢!Q]8724b6I;c)AoR?Bby%3A'5F򛳱vm #VE;% jފzP^|cA/L%n nJ5RZ fp]BE4P~/WȞr[TQ~Wh˸ܯyhl2&_p<)h=mqI#-;X&U{s4(yeTQZcSyDQ_}-mZ>d4<1fo-6,F4w/3 ӽ޽cE^GW׵P}~{<O1EUzLd53G9>L vy'h;}O/673aEjbz㥝n^eL~(<8UThfCRq==m23Cz o3}tJ-ޠ &y8~{$= yKU6ȥ yh-*t6qs؏$^>Rdl GcL3,+*Ƅnav6!S}KW1Q#M3KDLGXK%N9_D [Q-rٵ>Wu0v}9J5Щ&y`:-JT8:Bf ]1/0S]O[vrطb zD:T #&q9R*$Wh MfHVNd,Zr1"BK~~Fk6qn**"+3 "25002^ӹ1Bdc`ݽș] &B nT~ԓt //Mcӫgf|OwS`(B<} 9.d8!p5( ,岁Y ωe>PAħHč?n),eeÊqϺQ,uxeb2ed]BU9J*~ѬNVԜI<sV1hKu2Eg(D|6qb9Q Rb<eWxA A_0y.8ڤ*D@nB~oSg:>g((U"g .ڻ5RxyRdNZ\X9/%,ijHع{i/T")kg-.6pLh䔷jXrf65T[ښXZmdBB8-S7k+㕱1cԘY`t55pw<౩fdz68DÓ(e}񖰠"8^<¸d!~& 8>ۀ^# q$:]h@<σnhcHy\QIUw$'U`k]9|J>3+0W @pLi.^ioyM讹$6p{e-{5ݫNF L2 "q)j& |ջUf3(0 %I͗UT/H4W1OkpƢ:>B}GK t}hUڢdƱN I,ezD`}^ʅKm*"`n;:b^Fq;Աq8vF$5Wh/>pfxuUId&hUsO]]|~9Ϋb kr^0 nYHxacb%gmF|C4oX!0PKC5 BL3-:9 ^f{0oRG/#Bx%V|cbj4p6v}؛7ooR8YSψ}#RKw}C]JyX|4lwg8yӔUOH! {n[V%n"2lp%X N<9YV|j֖4\i`|5Ub!K=0@7QbR%K ŎqYkY񨸹LX2ʢ)X=-d)a; ҖT" e8W:0%>M_uYIiw\V $4X9/pJ>ۀ)Of!{ҦGh!Py,B&!ӿP#=Ws )BܽE^F!UAObuRB_.ب!u7lcpc75iO+{9Z'+٩F%(4I܄8^UĒ@ l Knι`2)CS }t+ђSeC \Y☊ 2-sSz@,@ 4 R"/!{)2( 8(bcPA j4b#| e={g!Hu*ٜ\t닱`u]H 9 Bl&iQlZFufi"K[ |d}ӯ>y[ܻ_avVLጳ)-I0oeɢFaCiݔ?ozUCEQSs'`K:L&hoyo'BaM,LCa9g@Ų[8}zѳq#|(͒Vv}Ge%W vCX|֏F[t泷3vnjMp5,1)NbN(-24xAy sVY׷*#K$ont4"ӥ/Qn o-.nͿ*9(H0`OW0y 2%ccHG* #nc!Q/L_RqBK)vp4}l'>sN":|/d fX">cQ:|X_l<yD_&+!K6sPY<$;yш> ]8[]YUbaى1bX%AP]-ktʬd.˭CUV.JQ(q$"aGQr7c閈P/ $bJۖM%kw+>!yK+`-Q׃Wc 4Ss3!-Y;;n,%8ݜ7hv{!\㾱P%"|ZopQ5o9Q·.XwEPZJ'Lv,X=(妇 33ƢNXeN[HĘ{JTefHkF+̾I7~H/z1g%>RXz]zz4JS4d,ϲfs+{øio796QM[eo&_ pλ]&A6 :.LkzWݺ*7"hQux-y}Zf)B5߫򐢳(g *ml𔢔, hǐϲ^Z*ftlN+3x%@QـYGho~iO^ ofAjtCܚيg0\u){r Sbb&ޥXqK&ى>J׉~vv+?|w'qi_gSX |ɼJ$g>Qsf * |yՌ ؠs Z5 'fpE1^l.H;.S 茺ħڍ +D5&QM}}>o,Kkhw͡F,i~Z]vy^r!1:=yBr\l7v7EG]ppo e(PfJ4J?y4wZw9O>,1#VDsL@4E88*2bQ-{]dI.TKtlLy7>Z%@{[751;}U"RXשjkv:ob _iOo zp7F =i dqH!?т}OAׄ+%ng1^-z6>ՍjbԑUW8k7#2 F1&EhTfg]--)I%OՂ|ޘuX bwG;rMx!ZJ qx?pqG*ڭP#<РLjJfr&fl^3}<w6葿@ ˺ 7xŢHd|B'ꍀr 0&Ӣn}?*g:Yyl '$>) *c7D|QKv!0,>Ksz ,pǙFE3@6/b2] w ]^9y[ Vj WaEe#Hq2z?#M*;ֈt/3Sy;OI ʲQUwLQ r%!Z.Ygp=4p\N\Yr(sXdG(V;2?KϻmMsϝp#燧8'LzKᣤ0ZZW hW4KgG}ćI&|MchQwR&]J 8뚶xhĒ $%.i*R4my׆Wd>#@X/`ȷwGOp/+8/; ⢉例VÑ8Sy~G`E</ӢEݳZcx0<G[T̵O{Keԗ:DID_tQu9KRb3)$q` *ĥE%2/S*&j 4a%᠙7 B,rU \ͅʸ4uwi?UΥO >a%×NVː7'8;C/6WO"f]! F">UˎF6a-F3$֘;]#zďLJi3`=1"=%s4SYa)cYtZ~c(,sHˉϒqbI/%Js^wyIkڤ;Y̘VoXxX^{Qry%z- %,&@?;)zC2eoVB^`Y D:)Gp@ 75B1kd.PqCQ?mE emf͕>_2$dO 2s8D]_j +BP4}"AAq!0EnqI `4ZvG0ABhs`yq@RN8Bڼ*:eA8]\WI^K]"Gڄ\V:oNt/ս.tx˼cC!?d;F&gL̈ "0t=ew:Zp<-ZXC›KtC+/.<92 J )۟h@'xXY8*~ V3Ӕ 'T`VI'іA5N{6Sweah=k! %́i)ab(ܡ<&BqQbIsD4ġBlHL`ңhx̟QS@_ =yi9c,_wlݍccM0#c2/lr6V^A2)5噘Y{ÜUGc"+:sq;p^6H\SRmf#Pnnhtg*!k3#_&Yvyڶ=En;P|`UFQ8a iDv;tEwJ !!L=I;w: {¨ I>~6 ;)'aMs"dEdh ǣ=Nї8M.#ӊ<%Q ' {k("v6VwqsOTS<4JF5+Iƺ0gA9 L=k>3!s0ϓ8w"dEpT삁k'&<>P(Jem ;X dVy >c~ϸKEJ:i!Uզ?*^wD:̣˼cg9YyIfNZAch4qPip⎶%- cIc+ I fL4R1T'.wї+Gy INadga0`14^bdcS1)+Xo*cv_@aL'+3+dnP2安 zs̶o FXԎgK-»!^&fo'TspLpHᲕl\\*1=(wro#] ^90lm7?=Lnt ol#k",;zIt &M}Q͎eZW~Lol|d*7KAI)VF5 mM06fvm/"lE2e^ Bth@.|7J;:=Ԗu4V[ÌEqPEKsYYLε$}"bl/:} 8;lj@B[a!w<^m /Ds*}$u6 9mTIt ն^r+CѨ rGDqRۻ\BJ5ՎnŪks}ZL-gҶTnMҴFj#'夰CoiΩJtˏ&DºÈ87B B6zG|- | F9luFDP)!m/(X!BOw!U&l4–O 1qQ3*@'g K.)=FPoBYy,K4\;CC> xU|O`X?Up>CB)Se;SrZޥL ӵހ{5tsg(( (M^wt 7=w2JN"72\ :KzL׋韓$eL=ې*4z# :{>j*(n II&3zJiDș!T@V∡]\TI+#Rkf=, v'uGA3%h'<$MNJꍟu6US+0}^jyA/$Z[kQpTe?ŲG»Jܒ=aޝFз#QC"18 iO ,34ȌVgC51,IIJlb @5Pʝ#E1luyfiַ[}yL[4#^+@;؋Iz mjGk[: \\`V>ۘz:QcE-]e#xHzAbZG&?6aܙLGAg^O)`cL#dOlz~gin^wE5J89tUIJ3:Sg sXhp8nDmmȺ|^{ @Q@NH܏N+` 4:yN9G6QeP ⎖ AzG BȘJ,2us-PE<ʖ660vX{5]_Yϴ5z7CɐY3݆C0X%i?%p<9& n-A8lRZےUj1kVm~W##ÚpsS=ϴWg@.U*T NrT&`f.8mEV] j̣]-DI1T5%W@N5i@CEQӔh:v5,"\# #5àג%q&p`D9D։gt6ö}PQ׭Slg#o%H/Ԓqp99չެ(ݺ)qw'j[1)[v#O!/g{5)@\_j۳*lUT^m-M׌<ٶz'c}nN1Klr?)8g1Ӱ2 QQqFM0W*5'!bHpo|sU錄u#Oj`Di9l,@ Hw-B| @8R_WбS]\*-n>Ns/ C1͞"fRis\#++[O7ҵO{MCSWSLw4&AMU PkD~\Xvܬo[ٛ 5; h}xQx'cB(ˬ~td'X>IfPK׌;%bI {?e:Km>VE3(`j>-1Cg{aEl;Ju+j BT ھ)lr/+:ЖYyZ9ڬca-ƒz m# FɔHlXt0})ҔPȥ{7doihu{fFBQ|fZ_$S}NN)6'6P<>T*WLD(߶swUGGTNݎNP:D!Y+9[TsU{8D1V-K#VN(SYr("tMUp 23 xnбN#R}?i*WZ"T%ʁT״"q諯E}Lԡu ej[)Pp(.-OA^&c6找F6>ټ)y_*߫"!Y2{k g?]9RXI&NQ|ЁUBEѶ̕nzy)~\9S̺|! -C.s+v {7POe>$PuG*q wN<8/5#Kq¦kH[*e ?qkZf?hOF$rm[pJcˣx2X+`bOy}r_B/jRت mwɔdGNX۰Pg ֆw fƯ4whOG\H_! lĈ/g@72,u_xEU [dnGa8'nZ:>?7lHFil]K{P;EB'TpӉN֚p-.Q0 !:;z9[ﱉjZ4ۇF:/%#_g=dy'B#TS{r'H4m >#I&6?% |ڸ{[ؘ52(4 to_JyJc{8"n`0o|!!E[tAX*V=t>{8^`ԄDKy᝗R$ bX04Mͦ ;A/%kA<$AWph8d4y5{۱[Wgpqsh_{ZJfH5zp\|)!aaہ*، &aouqL'{" J]#*Dt{W65CDk` tIŶk:k4%|D wY'g{<֕w@Eaߦ`Ʒ2}/ ~>/Y#Zﻲ.ڑʵzfC*ZA䖬t\uTrJd٭O,@GVo&i)q'JO?m=?ż (Kn 'Vy]Ed7-mfJ!>o2tOpMiG:&BW$؎# (l-SJ*+9 LGD!'滸_ /X V_K6+_u:0NcHN>Ϝ!filw;yk.kdwSTZ]):d`^e_";2O jOu ߜ]Բ{zZECk1+jwzhhqXO@=$?dpi':'XdS:1JԱS;HN0ol; }ٰ-qq?1xl7EsWt者 ߇n.GnU]ezu~eܾX=; ,Lqš[V9>i:"9VfB;tw.bh9G(RyZ'iiuQ:Aa (09z/EZViQF͜GRvz497E P-O`꠱W,\ &4 {:l]]=YU¬=V{YY7iUV)cՅ6]8-1[![Ѽr“EjF 'im9,_&%BNw0B#ZTЕSohsHYFe(a<,=8ݜp&9!~JOM ePX5 kp(֓Arnj9,eZKK51uINJH(CEs1XK-&j\M O>xSXꕾ>ť>`-fҸ/B!bzG'Qi!_(/Yzç)nU)9)AiFrcSY𿻣ė)E~%(O MH rd)*ke2"_'A&X[ #ש76 BX:ܬ?0&iMӿɏdx q]޲KL"mjbx?.bxT? )]-FcMM )S R$Gqj*iC.D%#Уs> j(aNt?j:od7ks+uǶ>$զa%%:Rh(Kby][RrD&Z dZP.͔j*TmG:6 d$'S(@ 0P=[J|~;)/oVݳmjzHKk-uo:-&.=CC;< >{6(9[.0 EX֖v3s >SV}oyS/w\~PB qp$[f6:ueI{uzw`^E ,X.Q]SWAklL[6Ǿ0c-ip+- 5/j,C1QvQ(- gl;+"hA5l)wrDoiq]^o„ Q]`Ưʟۗ)vO9F-z@4{oKJW XƙʀZN.9CC{ ZQ'SekU IGHU*`16jٚ2}a9bwuJdac=e51 9;DDkO @-ְFhSK>SZ7(}ܙX{.5gq,T )3f;h~\uE{SニGq&̑632iu~L[@W>0ٱ&`hMKT|t8,jsq4U4DVu;F(|9K2{:ʪk+ڃ4 !̛W9fOXyWU{LJOW{ NvTf/<lQ*jAwCQZQTӸSS[W-{EVUw&X>01fвنP3o FnvAJbi핾:]|_Nƚ˅xCh1:AkJBrQ?Hd2Xqƽ)yB fM3]⇓^A_ kqZ&,MNȔ.6IµhX|s ՝! t}'x* ݸo=jX`u%)+f%*)X# %5d>5b ߖM?ߕ i"I+Pfĥy8ƼrwnP [z/d·|ᬮ%h*΅FŏGIceHQ6w:@)D1×t")y„N#qC]UVUnLp9l-ykih/9'r`'muKN7ey`Û-k" ς]q!W}!5$hw5x1 <5]&*iE~BiS;7$a}eHLqW kv+߽ a|&8xZu5d=0?EKVF0!_U_GS~MLW FPB d2=jʭqzb[̔ ]K|.soKՁoMi'2r9)#vz֚8MhLcmɦ H ::n泓F4uoT_}pp6(RxyR T NՖREC*du\ Mq`1*T"9myݬ"F;[#Ay\цԤvl('Bo2BIG0avKV?).^Q/;9x_ &6Usfmh\ p2bJ&ks" $g,G=[i ʵV &W?|rȕeۑ}! :U jm@S4#q[^c=0-*&Po6)͘:6c(-1oYa,[e}"Cu@Y3tB6Ȅ}Fe{ MtTЍ @ lCG\-)$5|k[f/7I%elSG'wY3[MZz>Śh'8KoI"=LK0őI+V gZ.+W0a6hx)L-w`bx TvjXɨHqB]/^gk\1.K$EfO=hQ,.щ-~ƺw&w\?x6!tA!xe#%d44 kkSCsg06_e(#Fky;sPQ+Õј@e+,mcb,h eh CT#&b 1fc\K]kgmrAmg{TK,KV0/IfC/Av Zb|F!ƒY3>@P4SeB/q.5),ځk)eᜍ(S8AfB$<Ʈ9Gg%UDʫ!BtGQfvRF8q:QLEHL#q%`Rlm~rStu1|M *'eJ I$81kz:aqLZ ".O; q3Sݟk(AJ ,Y4=FW[k+0yr;ǶcdWd?}5Z%COE 솷{<_oxKoG /Xy@@qfX,Ga&q򥭺(9ak%/g`,W@¿ Ѕ4lGP9xٺvO `x )S|NC40k6GW<@+j| (mv8ZN<:4`=ż1>9C䚥BPG&GGƕFpb {}4+Pk:h> y>p^`V2}xlol442@p;@L8Sv<z#f^< F:lyȃ֜:ۆd:dg^djPӟ,$HvNTo/kHNr*L t2{4P:7< .@qT$ CcYX$1u:yzGKy@{nG= Tc<,$ A$<81B@ܾhā2Ie ! aɞ4{֠+Nڊq@$@2'g3<~P](@t{~)tceQi#v*g?6fs -U k>ޙ`\z4Ar9CGj V7e7 p] i}*.+Ni HN6 }()950 k"Z{PZX2AKqOx nFq`Cx7%lu0B5>ӂ|/ ]CSxniP? :8@N:q/*]3lEκN2NU6[ȹ@{qU0> f ;ɷFR%;1tY=@O³C5L 'pF[:oMU?aFX`?#k$9`F➑~ KyJ3Z -? i{ S-=KFmms"ę)/.^B 7&UN{,T.$ߺ9X 9HyhFݤ&GTL@+>M{*`]KMc tR SwsWva&r2 LMz }3Z! "Ab~Z eP=S!遧>R{1BȖ܍1Vu|@k6mAR+`s}H&vuT:# J"012'COPrtϓWfh(kD/Ai97 AO7Rf`3 DS7UEp0q⽸CcchT͸6!Sp+R+U*Qǡޑʘ"@RO+$(f=| RH7=՞p n,V}63|eʥƹa@eH1BV7#L{r 1 J5dT9=b'̳bȫй?BMB5 r[ve!8LŸez“tק8.eˆD8Spxtw‡JD%iv~ޜS vs (jOлS 9vwtW@R!|ķF0/"~_1x,L:,1Ӑ?3 x-ӡC4&9w8 (5]|nQn8>ꨡpF٭1b^s ǀ /Nf}&Q.#7'XS3֒U =&.@(_EH]Tr_SZIP`>D6bwe>\v)R~e $(3M*74ĐVlL=rL"kD)yW- .KE, `7c5`o]uNi>!ejXؖE+w>#^&BwoxX!43a1:,f  {D!*q@> 6bc͜aA)ϗ\ ϭʭBP!~lxE!BQ." OkDa>f~Z~`RWJ_R8.[p0}1Ͷԑ\QS8EZ۰2.@(T햝 rX#XT_?^)LZ}ݝ{0w_|<%r}RQ'Lk1ן,;t;ZWdJ>~5 +yAߔ%KP2[<^@vUBa&X%c=Nv`ƳF ϊ <uYL^W#q!.c9_ cagӮqД >c@gv^;VxK* v7qPBsvN[yz+[CG\?$>RV,Id:;isMi$v^ef/wbxu9~}fUf4`! t&; aB(*죣4}Ȍ!с4 pl*f _y8܀y.؎iyVsO3vV$AegB޼߅a]W)iR*^i]=߀ ~#QAhe7f2yJWP~Ȣ y7~T&SP($qP%<1Ƭwmϸ ƄYSDLxtD# kφXP-J$ZKqr;(^)J7Z~c )O\ xwW˳A zag-+f!X:E*AJ$ 1auEΆ_܈Y@ ҝ/y P4duw\3#gIhI?]-$@3 듆i2 d t] cb|Aſ'OtWl\GV nETcJ#%Jx\] #Wf?T[یa&(>|``UYzw?֬9 '^Ⱦ#D iLk9uq:v&S H|Ƌ Iˣ큊0Unl[Us.1rbb W%ӟ@ƛJvU@(}lx"FL9l狙(}Pq;j2 ̦z<]$Ӎ q\JF=VwYhNBsI>w`@U,f+>~ܴ:/V1mv ̃UxъH:U`Weq@l9s|9Vsit,8)d#O?#g3x ΟH@{4 ,FFob5, bLXBjd}1޷#!&11AɈF,LLFD5bbc2qaĈtpFXrP|ILFbD:R'49FjĘ]4&::eD{nb4nŀA~$O"$F #"bFh*AI bD&29F @ZtQK1ٷ&c9ciqى2ϢŐ"ƈ%MĈ )QĈQˆ :Ĉ^ZbĂtaic:01bAUF 8j jfcNhc(AĚ b@-!1bO01,BĠxbb60A g+FK#%DLj&B91oG5BU2;j{;j2kПdʟes DFhL0FddhDLFd0FdDFhL0FddQV3-&1Db~;p#Zԋ.uݍs\ѺNŐuБ"r0R=iJ/yJr>ܹ1\|K7f}n>:u|0!<8CNuģF;1*@ilVF!?-?y]KХB~ulex}۶sֿ}LpwrMݸnT)ZR~F>W;RG飗L8 ^WGQ\S旘5M:%i/Iyz9uص=Jgv/g_t%6_S>/S |w*\_QU*"Op\~S/* CU[r}Z _p daXU<_<[| /_V7_ [튉'yZ52 3ԬU?/).B2r~Udk|oϬHqPB P(B ]mrX^9 $ (#hW.  ^ z)%x5\@ P@jA|/8"P?WB,1 x}:` C!gڮv%%肍^ -X^ ._GcX>5Ą٠o ]CxJ0 #4cAu _CYSѡڦEIY isc=7 v%dx7?)pQ1  +SY1bG- p^1qs`sqJ~J` ~؊sp;Fv9QeN.# o~T)Q<- P!91zAw@Q<|aÊ+"Z@-pF4+ BC#PA: qr-qRp4cx(vi ᣨCJ-1J|B΁{AZٷ(<{ox,^b[ }A 8o&!HQKRwL8>zcScR16az'pjw>nf0`+(rEg %`<rFT ){ Ѕ@)0|)[B-= b):/bd Hs0_A,LБ&et*c}q~c@᧸}$%@ #l=fp`:}%8s".hJa .^6Dic~T;M0uxY@T/ш8G LR|$0d+ k̟%X`ETlsGG$)`a9^L+oϦ #Mu]1a&SmǰҟWFDn ,73OA=&4W-j4M]BE99P2ӸبDzr=@]`b_8vS07En+ `+$Hw3?74Y:*YU$wӴrˊrO h]`ި"7)o`Ur@Z,="otb8 $:3$^XL!I_%ȭ*XgCyk θU;©l t>L6j%l{>fV<H85F f/Mʨ1`FI:&JbX;$.Ύ# 2p-Qܶ\ENip*;U7PŠRت]YLWv2oV_b%c6>bR$3zi<]*%‰2:_5sڹ.D "Y L毠wc9IZ[̀OAJjQ$ HoMqS"\elڗEZxâ2U8.s $@8!MJH_[A%l \}ݺf.ȊTot)!M\ޙ\{%zD RHN˪Ƃ%灚 PKɵ@%`1v{G 4|(%d׵*<%?fy*늋wVNNjHXpt*# dt7zQ.xhgAV'HRbso@6%RޕR`lzĿ1"3>sL;_c.O-2Yg0륚3)sP@L91LB”*IaU`Z֥M'޺ {ic f7$Q}eg :g~6gͬHT2ۡQ-+z WAE`"|0`vHwoNxpp74F8hN yM, V6,446-V !ϋW3zlf3u~9;Aλy/`ק[(ҭ|/0L^xbOaaQgGr&]g[Rd6õ.l[pl1XlvD|;! ,7.vyÑN)&[uWjkk&,0](PJ: |D$+AMۯRRhYsaFHb9*5Y\2z.f - ůx|7'*=Y1h(ٚQ8A7a, VV4dҦGR1dQLBH8d]m MUK]-{#3^U\/IwiGF堐Vn+'S4g*hˁd;J 'VSqPÞv}.wL$;$ ,ڋ&؎*%7n{ov$G'7?R!V= 52H?,&.gRY:J!l Ҏ2p#$;c>9ج٢ʃٚE84ES3jsѼNTQrUp)oMSk']t 1VJQ@6 vFl(cq&AqU5cÉ3;~9[ほp^h׸ zLvj(%8^wy~:<>-E(bnAؿ`' im_F0ݱ)vF. XwydGFMovCXDW~Vn'`Ӕ{Ƕd K3'Hx .Ur/nhl`D+~ݧWYZ/[bkٟ\B"ن*:t4sV$ە\Zڦ `Zy+ u3)uJxӋؖ$} h }xVHaV?rX09;!yIܺ_ dy.6fRu*'[@) m p.n촆֋=npogڷņ~ruP qL-.6uSԢ*.OS.EJfvrZWm U@X8oS2>QW^፽\A^RIp[L&-ev|_`ʅe txدE-" %DM6p,~WZ9`s.aYL#WFo 1/G9˻p7w ~m^/m  )b=x彖R!`7f~am:v/Ry@ lǻ7O3Prn簹3ߛWMJEZfT q^7pܥ{9 oŮt6DʼnN$ogmXGBnZmͧ9_sMXt9_O1_e~t 23p}G-]'Ds/4)% {׾AIX$:}`3F"Y%~Ӧ`tN ~n6uV}_2[ <C :7險3#4]2`jIC~(/bi[]Wـ6O]ҊUگKV0vv#1;E.D; :A 5;gn!LLq^dF`kzmyT(Z,yRbd?wU,H($ FIim( &ᤠ2V?&[w+µmL:48~(]nrM/gtUʤ,gbq]B%o9|UWVwoZB%aT=Mz+uj%Eꈚ?'3Ns^'=K)npzJy=|x%i*F_j}Y8r x۠,Ew%UuhCeՒC:= ݘR)YfäKvgei5~DXrѬm$d9oD&U]qE`|XYXE\VU`~]_u`3|),i*EtYr(dŭҒ΍K ͳLl=uEOrcIzU)|"oW\v)\\*7fǟ5fE(P4R}S"ˆ6u.k{Drli[i 4Ԯ.9Z0B>Zߜp nA#r$WT+= s7qūeEIUzϢF"P8/W$>\yܶ7Y?s+rѪzN{[._gǗ!~ِ@5*HMڂOQcEw x衧k/{qվEڙ#PK֎*Y\WQYLBiow VAh.W_ֱ8XˏOJ1H_=NW/~F~>3+>I]v?wkC3g_h58xNmw yȺmΩhnh+:ήY5Ǜ5Oi$'HzҮE-Tp]l9U+GMUVjԟ|1-r_MtQE3 FAhxy7}6_Prpm?д髢:iuqi>{k{W0Mo L}u>Qzw\fE!^g_I\XEL u\kXE2tVWʡDorip?QG;0W'\zuDUyG\$e Λ VDb=[gύL29\w]Zmx:QYץg.]{ל}TNA,"^(\pwkF{fJ}#Z0{ fow4kɈdm$[ i=}\Qy˻x箎[7{y-sL|1}YhD'G>FOנsk*kYq'R׬v'uGg-577:j~jNIDR;Y KmαIKՓjZa=>0>Jzf{F!_dYނa񝃊n|^`HeUV߄1p䟪6$֭([Ts}fkJP6fؠzti3h>lbrub9G p: kwË]"~Rnٴ̙a7Dz;^$]3< ?'D{e4#(x7{2@-_=4[+ʜ$+B%*m),Oz;Vh,#>,сi"E9/9ԊӖ$OO{cf>Wַuȡ3GC;9 랔Yjҳm|IV(_jGM(\k~~ޢ|h~k$.>aJ$JojW]Wڗ/v$2ƅv !9$lûMdo 5;;Bi|nwاߑp\AϨރ@U'1mrRBwO6MC|Ch~O')zR,ސ~G L~{{1e]Aة!s>\tCqߺgɲԕ!ǎC_|dh(_}l =Mgnx0#q|| hIkWVsHui\`'FKlZJ@m6K)?y8hݳpnyW@~ra${s-K<-+v#\T|$l氚rY%"a}}Fvt*MJ3&*+>]IR BFG>mޟCgLi5nOmךɻ,S|')ڂw'K~0?erw)iMFM䗖fIE8~!SO;_~0(VTqȯwoʗv5MΪG_M!aFr=HnSѿX:]6_!n쀯N}ԺqfnS1cϦe\l'vv^\NvC>kooJe'~4uzҮ&3{M1U4,iк=u^K5WϾbw':_|W2!ra4P1%3#򄾙O/lz^_p("oW~#sɞׇI-5m lgYWzQcJ쟣e":Ǎ2URL S ȤiY^{tk.$&ayn{?$]W-ၙlCt:}_{M>(PB P(B (PB P(B (PB P(B (PB P(B (PB P(B (PB P(B (PB`xboard-4.9.1/winboard/help/html/0000755000175000001440000000000012717001265013503 500000000000000xboard-4.9.1/winboard/help/html/08.htm0000644000175000001440000000251712717001265014371 00000000000000 Help Menu

Help Menu

Help Contents

Brings up this help file, starting at the Contents page.

Help Index

Brings up this help file, starting at the Index/Find dialog.

How to Use Help

Brings up the standard help file that explains how to use Windows Help.

Hint

Displays a move hint from the chess engine.

Book

Displays a list of possible moves from the chess engines opening book. The first column gives moves, the second column gives one possible response for each move, and the third column shows the number of lines in the book that include the move from the first column. If you select this option and nothing happens, the engine is out of its book or does not support the book command.

About WinBoard

Displays the WinBoard version number.

xboard-4.9.1/winboard/help/html/11.htm0000644000175000001440000000576712717001265014375 00000000000000 Command Line Options

COMMAND LINE OPTIONS

All WinBoard options can be set either on the command line (if you start WinBoard by typing into an MSDOS Prompt box), in the Properties/Shortcut/Target box of a Windows shortcut, in a settings file, or in the Additional Options box of the WinBoard startup dialog. Exactly the same syntax is used in all four places. Most options can also be set from the menus and saved using Save Settings Now or Save Settings on Exit, so most people will not need to read this section.

Most options have two names, a long one that is easy to read and a short one that is easy to type. To turn on a boolean (true/false) option opt, you can just give its short name preceded by a minus sign or slash (-opt or /opt); to turn one off, prefix the short name by an x or an extra minus sign (-xopt or /-opt). To set any other kind of option, or to set a boolean option using its long name, give the value after the name, separated by a space, colon, or equal sign. (-opt 23 or /option:true). If a string option contains spaces or special characters, enclose it in double quotes and use the \ quoting convention of C to name the special characters. Alternatively, you can enclose a string value in curly braces (/opt={string}), as long as the value does not contain a closing curly brace. If a filename option contains spaces, enclose it in either single or double quotes. In filename options, the \ character is not treated specially, so use single quotes around the outside of the value if it has double quotes inside (and vice versa).

When you start WinBoard, it will pop up the Startup dialog box unless you provide sufficient options on the command line for WinBoard to determine which major mode to be in and what engines to use or chess server to connect to. To bypass this box, you must at minimum give one of the three options /cp, /ics, or /ncp. If you give the /cp option, you must also give the /fcp and /scp options. If you give the /ics option, you must also give the /icshost option.

Chess Engine Options

UCI Engine Support !NEW!

Internet Chess Server Options

Load and Save Options

User Interface Options

Adjudication Options !NEW!

Other Options

xboard-4.9.1/winboard/help/html/01.htm0000644000175000001440000001524312717001265014362 00000000000000 Contents

WinBoard: Chessboard for Windows

A (not completely) updated description with the release of version 4.5.0.

For the ultimate WinBoard Experience

New features since WinBoard 4.2.7 that are implemented in Alessandro Scottis Winboard_x are highlighted in red. New features in the WinBoard 4.3.xx series by H.G. Muller are highlighted in green, that in the unified 4.4 series in blue. New additions for series 4.5 are in purple.

Description

WinBoard is a graphical user interface for chess. It displays a chessboard on the screen, accepts moves made with the mouse, and loads and saves game files in standard chess notation. WinBoard serves as a front-end for many different services, including:

  • Chess engines that run on your PC. You can play a game against an engine, set up arbitrary positions, force variations, or watch a game between two engines. Fairy-Max is supplied with WinBoard 4.3.14, and over 100 other free chess engines are available separately. Of these, Crafty is the most popular. See Installing Chess Engines for instructions on installing additional chess engines.

  • Chess servers on the Internet. You can play against other Internet Chess Server (ICS) users, observe games they are playing, review games in the ICS libraries, chat, analyze observed games with a chess program, and more. WinBoard can also be used to run an automated computer player on the ICS, but this feature is for advanced users only and is subject to some caveats; see the separate file zippy.README for information.

  • The Web and your own saved games. You can use WinBoard as a helper application to view files in your Web browser or the Explorer. You can use it to keep track of email postal games, browse games off the net, or review games you have saved.

Getting Started

WinBoard starts up in one of three major modes: chess engine mode, ICS client mode, or game viewer mode. You cannot change modes while WinBoard is running, but you can access all the game viewer features directly from the other two modes. Also, you can start WinBoard several times to get multiple chessboard windows running in any combination of modes.

You will usually run WinBoard by choosing an item from the Windows Start menu that runs it in the mode you want. If you just double-click on WinBoard.exe, you get a startup dialog asking which mode you want. If you choose chess engine mode, you can then select from the installed engines; if you choose ICS client mode, you can then select from a list of known chess servers. More advanced users can customize these lists or type in WinBoard command line options directly.

After starting WinBoard, you can make moves in several different ways. To move by dragging, press the left mouse button while the cursor is on one of your pieces, move the cursor to another square, and release the button. You can also move by clicking the left mouse button once (press and release) over one of your pieces, moving the cursor to another square, and clicking again. You drop new pieces on the board when setting up a position by selecting from a context menu. Press the right mouse button over a square to bring up the menu in Edit Position mode; no menu will come up in modes where dropping a new piece is not permitted. In games with piece drops, such as bughouse or shogi, the pieces you hold for dropping are displayed next to the board, and you can move them to the drop location the same way you perform normal moves. You can also make moves by typing them in standard algebraic chess notation. Either a dialog box will pop up for you to type into, or in ICS mode, your typing will be redirected into the ICS interaction window.

When using an engine, the right-most mouse button allows you to see on the board what the engine is thinking about. Pressing the button shows the deepest position of the engines most recent analysis. Moving the mouse vertically while keeping this button pressed down will make you do step through the principal variation, and allows you to see how the engine thinks this position will be reached.

When WinBoard is iconized, its icon is a white knight if it is White's turn to move, a black knight if it is Black's turn.

Next to the main window, WinBoard does use many auxiliary windows for dedicated tasks. We mention the Engine-Output window (formerly analysis window) for a better display of the thinking output of engines (which you can then right-click to play out the selected PV in the board window), the Game-History window (where the game is displayed in SAN, and where you can double-click a move to call up the corresponding position in the board window), the Evaluation Graph window (where you see a graph of engine scores vs. move number, and can call up the corresponding position in the board window by clicking a point on the graph), the Comment popup (where you can right-click variation comments to play them out on the main board, or add and edit comments), the Game-List window (where you see an overview of all games in a game file you loaded, and can select a game for loading by clicking on it, and limit the list to games you are interested in by filtering). These auxiliary windows can be opened or closed as the need arises.

Additional Information

Menus

Shortcut Buttons

Command Line Options

Initialization Files

Installing Chess Engines

Firewalls

Limitations

Authors

Copyright

Frequently Asked Questions

xboard-4.9.1/winboard/help/html/05.htm0000644000175000001440000000635512717001265014372 00000000000000 Action Menu

Action Menu

Most of these commands are available in chess server mode only.

Accept

Accepts a pending match offer. If there is more than one offer pending, you will have to type in a more specific command instead of using this menu choice.

Decline

Declines a pending offer (match, draw, etc.). If there is more than one offer pending, you will have to type in a more specific command instead of using this menu choice.

Rematch

Issues the ICS rematch command, which asks for another game against your last opponent with the same time control and rule set.

Call Flag

Calls your opponent's flag, claiming a win on time, or claiming a draw if you are both out of time. You can also call your opponent's flag by clicking on his clock.

Draw

Offers a draw to your opponent, accepts a pending draw offer from your opponent, or claims a draw by repetition or the 50-move rule, as appropriate.

Adjourn

Asks your opponent to agree to adjourning the current game, or agrees to a pending adjournment offer from your opponent. You continue an adjourned ICS game by challenging the same player again with the ICS match command.

Abort

Asks your opponent to agree to abort the current game, or agrees to a pending abort offer from your opponent. An aborted ICS game ends immediately without affecting either player's rating.

Resign

Resigns the game to your opponent.

Stop Observing

Ends your participation in observing a game, by issuing the ICS unobserve command.

Stop Examining

Ends your participation in observing a game, by issuing the ICS unobserve command.

Upload To Examine

Starts an examined game on the ICS, and uploads the game currently loaded in WinBoard (by pasting it, or loading from a file) to it.

Adjudicate To White

End the current game and stop participating engine. The result will appear in the PGN as a win for white.

Adjudicate To Black

Same as above, but game will appear as a win for black.

Adjudicate Draw

Same as above, but game will appear as a draw.

xboard-4.9.1/winboard/help/html/21.htm0000644000175000001440000000715212717001265014364 00000000000000 Firewalls

FIREWALLS

By default, "WinBoard /ics" communicates with an Internet Chess Server by opening a TCP socket directly from the machine it is running on to the ICS. If there is a firewall between your machine and the ICS, this won't work. Here are some recipes for getting around common kinds of firewalls using special options to WinBoard. Important: See the paragraph in the LIMITATIONS section below about extra echoes.

Suppose that you can't telnet directly to ICS, but you can telnet to a firewall host, log in, and then telnet from there to ICS. Let's say the firewall is called fire.wall.com. Set command-line options as follows:

WinBoard -ics -icshost fire.wall.com -icsport 23

Then when you run WinBoard in ICS mode, you will be prompted to log in to the firewall host. (This works because port 23 is the standard telnet login service.) Do so, then telnet to ICS, using a command like "telnet chessclub.com 5000", or whatever command the firewall provides for telnetting to port 5000.

If your firewall lets you telnet (or rlogin) to remote hosts, but doesn't let you telnet to port 5000, you will have to find some other host outside the firewall that does let you do this, and hop through it. For instance, suppose you have an account at foo.edu. Follow the recipe above, but instead of typing "telnet chessclub.com 5000" to the firewall, type "telnet foo.edu" (or "rlogin foo.edu"), log in there, and then type "telnet chessclub.com 5000".

Exception: chessclub.com itself lets you connect to the chess server on the default telnet port (23), which is what you get if you dont specify a port to the telnet program. But the other chess servers dont allow this.

Suppose that you can't telnet directly to ICS, but you can use rsh to run programs on a firewall host, and that host can telnet to ICS. Let's say the firewall is called rsh.wall.com. Set command-line options as follows:

WinBoard -ics -gateway rsh.wall.com -icshost chessclub.com

Then when you run WinBoard in ICS mode, it will connect to the ICS by using rsh to run the command "telnet chessclub.com 5000" on host rsh.wall.com.

ICC timestamp and FICS timeseal do not work through many firewalls. You can use them only if your firewall gives a clean TCP connection with a full 8-bit wide path. If your firewall allows you to get out only by running a special telnet program, you can't use timestamp or timeseal across it. But if you have access to a computer just outside your firewall, and you have much lower netlag when talking to that computer than to the ICS, it might be worthwhile running timestamp there. Follow the instructions above for hopping through a host outside the firewall (foo.edu in the example), but run timestamp or timeseal on that host instead of telnet.

Suppose that you have a SOCKS firewall that requires you to go through some extra level of authentication, but after that will give you a clean 8-bit wide TCP connection to the chess server. In that case, if you are using timestamp or timeseal, you need to somehow socksify it; if not, you need to socksify WinBoard itself. Socksification is beyond the scope of this document, but see the SOCKS Web site at http://www.socks.nec.com/how2socksify.html.

xboard-4.9.1/winboard/help/html/19.htm0000644000175000001440000000571712717001265014400 00000000000000 Files

INITIALIZATION FILES

Settings

When WinBoard starts up, it reads option settings from a file named WinBoard.ini in its installation directory (the directory containing WinBoard.exe). Options in this file have the same format as command line options, except that they do not all have to be on a single line. You can put a comment in a settings file by preceding it with a semicolon (;).

The WinBoard.ini file is read before the command line is processed, so any options you give on the command line override options in the file.

If WinBoard encounters a /settingsFile filename or @filename option while reading settings (whether from the command line or a file), it reads more settings from the given file before reading the next option.

The Save Settings Now menu command writes the current values of most options to a file. In addition, settings are saved automatically when WinBoard exits if Save Settings on Exit is checked. The settings are written to the last file named in a /settingsFile command, if any; otherwise to WinBoard.ini. The @ option does not affect which file settings are saved to.

Warning: Because Save Settings overwrites the last settings file (usually WinBoard.ini) and only saves a subset of WinBoard's options, you should not add settings of more options to such a file with a text editor. If you do this, your additional options will be lost on the next Save Settings. You can change the values of existing settings freely, using Notepad or any plain text editor. Be careful not to do this while WinBoard is running, however, unless you know that Save Settings on Exit is off. Otherwise all your changes will be overwritten and lost when WinBoard exits.

Notice that tournament managers, like PSWBTM, usually call WinBoard with the option not to save settings on exit, so that the entire tournament uses the same settings. So it does make sense to edit volatile options, such as /variant, into the settings file.

ICS Logon

Whenever WinBoard connects to the Internet Chess Server, if it finds a file called ICS.ini in its installation directory, it feeds the file's contents to the ICS as commands. Usually the first two lines of the file should be your ICS user name and password. You can specify a different name instead of ICS.ini by using the icslogon command line option.

xboard-4.9.1/winboard/help/html/17.htm0000644000175000001440000000721112717001265014365 00000000000000 Adjudication Options

Adjudication Options

/adjudicateLossThreshold scorethreshold

If the given value is non-zero, WinBoard adjudicates the game as a loss if both engines agree for a duration of 6 consecutive ply that the score is below the given score threshold for that engine. Make sure the score is interpreted properly by WinBoard, using /firstScoreAbs and /secondScoreAbs if needed.

/adjudicateDrawMoves number

If the given value is non-zero, WinBoard adjudicates the game as a draw if after the given number of moves it was not yet decided.

/checkMates true|false

If this option is True, WinBoard detects all checkmates and stalemates, and ends the game as soon as they occur. Legality-testing must be on for this option to work.

/testClaims true|false

If this option is True, WinBoard verifies all result claims made by engines, and those who send false claims will forfeit the game because of it. Legality-testing must be on for this option to work.

/materialDraws true|false

If this option is True, WinBoard adjudicates games as draws when there is no sufficient material left to create a checkmate. This applies to KBKB with like bishops, and to KBK, KNK and KK. Legality-testing must be on for this option to work.

/trivialDraws true|false

If this option is True, WinBoard adjudicates games as draws that cannot be usualy won without opponent assistance. This applies to KBKB with unlike bishops, and to KBKN, KNKN, KNNK, KRKR and KQKQ. The draw is called after 6 ply into these end-games, to allow quick mates that can occur in some positions. KQKQ does not really belong in this category, and might be taken out in the future. (When bitbase-based adjudications are implemented.) Legality-testing must be on for this option to work.

/ruleMoves number

If the given value is non-zero, WinBoard adjudicates the game as a draw after the given number of consecutive reversible moves. Engines can claim draws after 50 moves, irrespective of the value of number.

/repeatsToDraw number

If the given value is non-zero, WinBoard adjudicates the game as a draw if a position is repeated the given number of times. Engines can claim draws after 3 repeats, (on the 3rd occurrence, actually), irrespective of the value of number. Beware that positions that have different castling or en-passant rights do not count as repeats, WinBoard is fully e.p. and castling aware!

xboard-4.9.1/winboard/help/html/07.htm0000644000175000001440000007572412717001265014402 00000000000000 Options Menu

Options Menu

Flip View

Inverts your view of the chessboard.

If you are playing a game on the ICS, the board is always oriented at the start of the game so that your pawns move from the bottom of the window towards the top. Otherwise, the starting position is determined by the flipView command line option.

Swap Clocks

Interchanges the position of the white and black clocks on the screen. Intended for manually-operated computer-computer games, where the monitor is standing to the side of the playing board, to make sure that the operator sees the time of his own machine on his side of the table. Note that it is possible to adjust the clocks in steps of one minute, by left- (decrement) or right-clicking (increment) it with the mouse in Edit Game mode. (Clicking the clocks in other modes is interpreted as claiming the flag.)

Mute all Sounds

Provides a quick way to switch on or off all sounds, without affecting the settings for them.

General

Always On Top

If this option is on, WinBoard sets its chessboard to be a topmost window, meaning that it always appears on top of all ordinary windows on the screen.

Always Queen

If Always Queen is off, WinBoard brings up a dialog box whenever you move a pawn to the last rank, asking what piece you want to promote it to. If the option is on, your pawns are always promoted to queens. Your opponent can still underpromote, however.

Animate Dragging

If Animate Dragging is on while you are dragging a piece with the mouse, an image of the piece follows the mouse cursor. If Animate Dragging is off, there is no visual feedback while you are

dragging a piece, but if Animate Moving is on, the move will be animated when it is complete.

Animate Moving

If Animate Moving is on, all piece moves are animated. An image of the piece is shown moving from the old square to the new square when the move is completed (unless the move was already animated by Animate Dragging). If Animate Moving is off, a moved piece instantly disappears from its old square and reappears on its new square when the move is complete.

Auto Flag

If this option is on and one player runs out of time before the other, WinBoard will automatically call his flag, claiming a win on time. In ICS mode, Auto Flag will only call your opponent's flag, not yours, and the ICS may award you a draw instead of a win if you have insufficient mating material. On most chess servers, you can now do set autoflag 1 instead and have the server call the flag. In local chess engine mode, WinBoard may call either player's flag and will not take material into account.

Auto Flip View

If this option is on when you start a game, the board will be automatically oriented so that your pawns move from the bottom of the window towards the top.

Auto Raise Board

If this option is on, whenever a new game begins, the chessboard window will be deiconized (if necessary) and raised to the top of the stack of windows on your screen.

Blindfold

If Blindfold is on, WinBoard displays a blank board. Moves can still be entered with the mouse, either by dragging the (invisible) piece or clicking the starting and ending square. You can also enter your move by typing it on the keyboard.

Highlight Dragging

If Highlight Dragging is on while you are dragging a piece with the mouse, the starting square and the square that the mouse cursor is over are highlighted. This option works even if Animate Dragging is off. When the option /showTargetSquares is set, WinBoard will also indicate all squares where a piece can legally move to as soon as you lift it.

Extended PGN Info

The PGN will contain the engine search depth, score and time for each move where the depth is non-zero, as a comment behind the move if this option is on. Works only when Show Thinking is enabled. The recorded time is the time reported by the engine.

Extra Info In Move History

Same as above, but in move-history window.

Highlight Last Move

If Highlight Last Move is on, after a move is made, the starting and ending squares remain highlighted. In addition, after you use Backward or Back to Start, the starting and ending squares of the last move to be unmade are highlighted.

Periodic Updates

If Periodic Updates is on, the Analysis window is updated every two seconds. If not, it is updated only when the best move found changes. The Analysis window currently works only with Crafty, and Periodic Updates may not work with all versions of Crafty.

Ponder Next Move

If this option is off, the chess engine will think only when it is on move. If the option is on, the engine will also think while waiting for you to make your move.

Popup Exit Message

If this option is on, when WinBoard wants to display a message just before exiting, it brings up a modal dialog box and waits for you to click OK before exiting. If the option is off, WinBoard prints exits immediately without showing the message. If debugMode is on, however, the message will appear in the debug log.

Popup Move Errors

If this option is off, when you make an error in moving (such as attempting an illegal move or moving the wrong color piece), the error message is displayed in the message area. If the option is on, move errors are displayed in small popup windows like other errors. You can dismiss an error popup either by clicking its OK button or by clicking anywhere on the board, including downclicking to start a move.

Show Button Bar

If Show Button Bar is on, WinBoard displays on-screen buttons to step forward, backward, or pause the game. If it is off, the buttons are hidden, making the message line wider.

Show Coords

If Show Coords is on, WinBoard displays algebraic coordinates along the board's left and bottom edges.

Show Thinking

If this option is set, WinBoard displays the chess engines current search depth and its notion of the score and best line of play from the current position as it is thinking. The score indicates how many pawns ahead (or if negative, behind) the engine thinks it is. In matches between two machines, the score is prefixed by W or B to indicate whether it is showing White's thinking or Black's.

Test Legality

If Test Legality is on, WinBoard tests whether the moves you enter with the mouse or read from game files are legal, and displays an error if they are not. Turn this option off if you are playing a chess variant that WinBoard does not understand. (Bughouse, suicide, and wild variants where the king may castle after starting on the d file are generally supported with Test Legality on. The same holds for variants with non-FIDE pieces, like shatranj, xangqi, shogi, gothic, capablanca, courier, knightmate: WinBoard knows how all pieces occurring in those variants move. Falcon, cylinder and berolina are only partly supported, though, and the latter two should definitely be played with legality testing off, and falcon uses a wildcard piece for the Falcons, so it considers any move of them legal, but might miss checkmates that involve a Falcon. So you should not play it with claim verification switched on.)

Hide Thinking From Human

An alternative to suppressing the Thinking Output in the display above the board by switching Show Thinking off, but doing it in a way that still allows the extended PGN info to be recorded.

Highlight Move With Arrow

A big, fat arrow is drawn between the start and target field of the last move, so you cannot possibly miss it.

Display Logos

Controls the display of engine, user or ICS logos above the board, next to the clocks, by switching on or off the option /autoLogo.

Board

Board Size

Determines how large the board will be and what fonts and piece bitmaps will be used. On a Titanic board the piece bitmaps are 129x129 pixels, on Colossal 116x116, Giant 108x108, Huge 95x95, Big 87x87, Large 80x80, Bulky 72x72, Medium 64x64, Moderate 58x58, Average 54x54, Middling 49x49, Mediocre 45x45, Small 40x40, Slim 37x37, Petite 33x33, Dinky 29x29, Teeny 25x25, and Tiny 21x21. The smaller boards have no system menu, but you can minimize or close them from the File menu.

You can also change the board size by dragging the window edges or corners with the mouse. The board will snap to the largest size that fits into the area you outline.

Note that only sizes Bulky, Middling and to a lesser extent Petite have built-in bitmaps for the non-FIDE- pieces. Archbishop, Chancellor and the wildcard Lance exist in all sizes from Petite to Bulky, though. In size Moderate, variant shogi uses the traditional Japanese piece representation.

Board Colors

Lets you change the colors WinBoard is using to draw the board and pieces.

All White

Uses the representation of the white pieces (a filled-in black outline) also for the black pieces (where you can fill them with another color to distinguish them). If you do not choose a very dark color for the black pieces, they look very ugly without outline, and using this option can fix that.

Flip Black

Displays the black pieces upside down (or the white pieces in Flip View). This is useful in Shogi, when you want to use the traditional Japanese representation of the pieces.

Adjudications

Ponder Next Move, Show Thinking, Hide Thinking from Human and Periodic Updates

Duplicates of the controls in the General option menu.

Adjudicate Draw Moves

Adjudicate a draw after the given number of moves, to prevent games from dragging on forever if two engines in a dead-drawn position, conspire to avoid 50-move draws. This and the folowing options are only active in Two Machines mode.

Adjudicate Loss Threshold

Adjudicate the game as a loss when both engines agree that the (negative) score is below the given threshold for the duration of 6 consecutive plies.

Verify Claims

Verify result claims made by engines when they terminate the game. If needed, correct the results to a loss for the engine making the false claim. Needs Test Legality to be on in order to work.

Detect Mates

Let WinBoard detect checkmate and stalemate, even before the engine gets the chance to claim it. Useful with buggy engines, that exit without a claim, or just hang. Needs Test Legality to be on in order to work.

Draw If Insufficient Material

If this option is on, WinBoard will recognize KBKB positions with equally colored Bishops, KBK, KNK, and KK positions as draws, even before the engine can claim them. Needs Test Legality to be on in order to work.

Adjudicate Trivial Draws

If this option is on, KBKB (with B on unlike color), KBKN, KNKN, KNNK, KRKR and KQKQ positions will be adjudicated draw after 6 ply. For KQKQ this is not really sound, and in the future it might be taken out of this option. But as long as tablebase adjudications are not implemented, it seems best to group this end-game with the trivial draws. Needs Test Legality to be on in order to work.

N-Move Rule

Here you can set the number of reversible moves (non-pawn, non-capture) after which WinBoard should adjudicate a game as draw. Engine draw claims are always consider ed valid after 50 moves (in the context of Verify Claims), but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to a smaller value if you are impatient.

N-Fold Repetition Rule

Here you can set the number of repetitions of the same position that should occur in order for WinBoard to adjudicate the game as draw. Engine draw claims are always consider ed valid after 3 repetitions (in the context of Verify Claims) , but you can set a different value here to either give the engine more leeway if it wants to play on, or test its claiming capabilities, or set it to 2 if you are impatient. (Do not set it to 1!)

Common Engine Settings

Polyglot Directory

If WinBoard knows where to find Polyglot, you can install UCI engines as if they were WinBoard engines, and WinBoard will automatically invoke Polyglot as an adapter to run them.

Hash Size, EGTB Path, EGTB Cache Size, Opening Book, Number of CPUs

These are options that UCI engines expect to be specified. WinBoard protocol now also allows native WinBoard engines to request similar information, so it might be used for these engines as well. The memory size specified by the WinBoard-protocol memory command is the sum of the hash and EGTB cache sizes. The specified opening book, when enabled through the Use Book check box, will be used as GUI book for engines that do not have their own book (as indicated by the check boxes). It must be a book in Polyglot format.

Engine #1 Settings, Engine #2 Settings

This pops up a dialog that allows the user to set engine-defined options of the mentioned engine (if it is in use). What is in the dialog is entirely determined by the engine. Generally, any changes you make to the controls are only sent to the engine after you press OK. An exception are engine-defined push buttons; the corresponding signal is sent to the engine immediately when you push those. To see the options of UCI engines, you need a Polyglot adapter that supports the recent WB-protocol extensions.

ICS

Auto Comment

If Auto Comment is on, any remarks made on ICS while you are observing or playing a game are recorded as a comment on the current move. This includes remarks made with the ICS commands say, tell, whisper, and kibitz. Limitation: remarks that you type yourself are not

recognized; WinBoard scans only the output from ICS, not the input you type to it.

Auto Observe

If Auto Observe is on and you add a player to your gnotify list on ICS, WinBoard will automatically observe all of that player's games, unless you are doing something else (such as observing or playing a game of your own) when one starts. On most chess servers, you can now do follow player instead, and the server will automatically observe all of players games.

Auto Kibitz

Auto Kibitz controls how output of computers playing on an ICS is handled. In many tournaments, computers are obliged to kibitz their thinking output to the ICS, and this option will do that automatically, without the engine having to know it. In addition, such kibitzed output by your opponent will be kept out of the console window, and will be diverted to the engine-output window.

Get Move List

If Get Move List is on, whenever WinBoard receives the first board of a new ICS game (or a different ICS game from the one it is currently displaying), it retrieves the list of past moves from the server. You can then review the moves with the Forward and Backward commands or save them with Save Game. You might want to turn off this option if you are observing several blitz games at once, to keep from wasting time and network bandwidth fetching the move lists over and over. If you turn this option on while a game is in progress, WinBoard immediately fetches the current move list.

Local Line Editing

If Local Line Editing is on, your machine handles echoing, backspacing, etc., for the characters that you type into the ICS Interaction window. Output is forwarded to the ICS only when you hit Enter.The Enter key produces a newline character, also known as Ctrl+J, \n, LF, linefeed, or decimal ASCII code 10. In this mode you can force a control character into the edit buffer by preceding it with Ctrl+Q (quote); however, the edit buffer will not accept certain control characters even when they are quoted in this way. You can force a control character to be sent immediately to ICS, bypassing the edit buffer, by preceding it with Ctrl+S (send).

WinBoard keeps a history of lines you recently typed in Local Line Editing mode. You can bring back old lines by pressing the cursor up key in the text entry box. Press the cursor down key to go back down to newer lines.

If Local Line Editing is off, all characters are sent to ICS as you type them. The Enter key produces a carriage return character, also known as Ctrl+M, \r, CR, or decimal ASCII code 13. Use Ctrl+Backspace if you need the ASCII DEL character. You can enter any character code by holding down the Alt key and typing its decimal value (always beginning with 0) on the numeric keypad; this is a little-known standard feature of Windows.

In both modes, if WinBoards internal telnet protocol implementation is active, it translates all \n characters to the standard telnet end-of-line sequence \r\n just before sending them out to ICS; see telnetProgram.

It is generally not a good idea to turn off this option while connected to ICS. If you are tempted to do so because everything you type is being echoed an extra time, see the paragraph about extra echoes under LIMITATIONS below.

Quiet Play

If Quiet Play is on, WinBoard will automatically issue an ICS set shout 0 command whenever you start a game and a set shout 1 command whenever you finish one. Thus you will not be distracted by shouts from other ICS users while playing.

Seek Graph

Auto Refresh

If Seek Graph is on, you can summon up a graphical representation of players seeking a game on the ICS in stead of the chess board, by left-clicking the latter when you are not using it. The requested games are separated out by rating and time control. Rated, unrated and wild games are displayed in different colors, computers as squares, humans as dots. Hovering the mouse over a dot in the graph will display the details of the corresponding seek ad in the message field above the board. Left-clicking the dot will take up the challenge. Right-clicking dots will push them to the back, so you can see seek ads that might have been hidden behind it. Right-clicking off dots will refresh the graph, left-clicking off dots will take the graph down ad display the chess board again.

In combination with Auto Refresh, the seek graph will be updated automatically. This is only implemented for the FICS and ICC servers. To make switching on of this option effective might require you to log off and on again to the ICS, as it requires changing ICS settings that are locked during a session.

Background Observe

Dual Board

If Background Observe is on, boards sent to you by the ICS when you are playing, but which are not of your game, (but of games you are observing), will not be displayed automatically. In stead WinBoard will remember the last board it received that way, and display it when you press the right mouse button in stead of the board of your own game. This feature is meant to enable bughouse players a peek at their partners game, without the need to log on to the ICS a second time.

If in addition Dual Board is also on, such background games are even displayed on a second board, side by side with your own game, so that it is always in view. This feature is experimental, and largely undeveloped; there is no animation of moves on this second board, while the effets are undefined if the board format of the observed game is not the same as that of your own game.

Premove

Premove allows you to play a move on the board before you have received your opponents move. This move is highlighted on the board using the Premove Highlight color, and is sent to the ICS as soon as your opponents move is received. To cancel a premove, either click twice on the piece that was premoved or premove an illegal move.

This group of controls allows you to set the following options: premove, premoveWhite, premoveWhiteText, premoveBlack, premoveBlackText.

One-Click Move

When One-Click Move is set, a click on an own piece will immediately move that piece if it only has a single legal move, without waiting for you to click a to-square. Similarly, clicking an opponent piece or empty square will immediately perform the move to that square, if only a single legal move to it existed. This is the mouse equivalent of having to type only e4 when you mean e2-e4. Finally, double clicking an own piece (or clicking an already selected piece) will make it execute its only capture, which can save you some time if the target square was far away. Legality testing has to be switched on for this to work.

ICS Alarm

When icsAlarm is set to True, the alarm sound is played when your clock counts down to icsAlarmTime seconds. For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the icsAlarmTime.

ICS Interaction Colors

Lets you change the colors and type styles that WinBoard uses to distinguish between different types of messages in the ICS Interaction window. The types distinguished are: shout, sshout, channel 1 tell, other channel tell, kibitz (or whisper), personal tell (or new message notification), challenge, request (including abort, adjourn, draw, pause, and takeback), seek, and normal (all other messages).

Startup Chat Boxes

You can put a semicolon-separated list of ICS handles or channel numbers here, WinBoard will open a Chat Window for each handle at startup in ICS mode.

Fonts

Lets you change the fonts WinBoard is using. The clock font, message font and coordinates font are specific to each board size. The tags font, comments font and ICS Interaction font are not dependent on the current size of the board. The Revert to Defaults button will reset the clock font, message font and coordinates font for the current board size, and will set the tags font, message font and Ics Interaction font for all board sizes.

Sounds

Lets you change the sounds that WinBoard plays for various events.

If the Move sound is on, WinBoard alerts you by playing a sound after each of your opponent's moves (or after every move if you are observing a game on the Internet Chess Server). The sound is not played after moves you make or moves read from a saved game file. If you turn on the Move sound when using WinBoard with the Internet Chess Server, you will probably want to give the set bell 0 command to the ICS. Otherwise the ICS will send a bell character after every move (not just yours), causing WinBoard to play the ICS Bell sound too. Alternatively, you could turn off the ICS Bell sound in WinBoard, but that might cause you to miss ICS alerts for other interesting events.

The other sound events correspond directly to the types of messages that the ICS Interaction Colors option knows how to colorize.

Game List

Lets you select which information is displayed in the Game List window.

Communications

Lets you change the communication port parameters when the internetChessServerComPort option is in use.

Load Game

Lets you change options used while loading games (timeDelay option).

Save Game

Lets you change options used for saving games (autoSaveGames, oldSaveStyle, and saveGameFile options).

Time Control

Lets you change the time control to be used in games against a chess engine. Two types of timing are available.

With conventional chess clocks, each player begins with his clock set to the timeControl period. When both players have made movesPerSession moves, a new time control period begins. The time in the new period is added to whatever time the players have left on their clocks.

With incremental clocks, each player is given an initial time allotment, and a timeIncrement is added to his clock after every move. The increment may be zero, in which case the entire game must be finished within the initial time allotment.

With fixed time per move, the clock is reset to the given time before each move, and any left-over time is discarded (i.e. not added to the time for the next move).

Note that in local modes it is always possible to adjust the clocks during a game by Shift + click on it, where a right-click adds a minute, and a left-click subtracts one.

Save Settings Now

Save the current option settings to a file, along with the current window sizes and positions, to be automatically reloaded next time WinBoard is run. See Settings for the fine points.

Save Settings on Exit

If this option is on, the current settings are automatically saved when WinBoard exits, as with Save Settings Now.

xboard-4.9.1/winboard/help/html/23.htm0000644000175000001440000000577712717001265014401 00000000000000 Authors

AUTHORS AND CONTRIBUTORS

WinBoard is partly based on xboard, a chessboard program for Unix and the X Window System. Tim Mann has been responsible for all versions of WinBoard, and for xboard versions 1.3 and beyond. H.G.Muller is responsible for version 4.3.

Mark Williams added many features to WinBoard 4.1.0, including copy/paste, premove, icsAlarm, autoFlipView, training mode, auto raise, and blindfold. Hugh Fischer added piece animation to xboard, and Henrik Gram added it to WinBoard. Frank McIngvale contributed many xboard user interface improvements and improved Crafty support. Jochen Wiedmann ported xboard to the Amiga, creating AmyBoard, and converted the documentation to texinfo. Elmar Bartel contributed the new piece bitmaps for version 3.2. Evan Welsh wrote CMail. John Chanak contributed the initial implementation of ICS mode. The default color scheme was adapted from Wayne Christopher's XChess program. Chris Sears and Dan Sears wrote the original xboard. They were responsible for xboard versions 1.0 through 1.2. Alessandro Scotti added many elements to the user interface, including the board textures and font-based rendering, the evaluation-graph, move-history and engine-output window. He was also responsible for adding the UCI support. H.G. Muller made WinBoard castling- and e.p.-aware, added variant support with adjustable board sizes, the Crazyhouse holdings, and the fairy pieces. In addition he added most of the adjudication options, made WinBoard ore robust in dealing with buggy and crashing engines, and extended time control with a time-odds and node-count-based modes.

Send bug reports to <bug-xboard@gnu.org>. Please run WinBoard with the /debug option and include the output from the resulting WinBoard.debug file in your message.

The WinBoard 4.3.xx line is being developed by H.G. Muller independently of the GNU Savannah xboard project. Bug reports on this version, and suggestions for improvements and additions, are best posted in the WinBoard forum, development section (www.open-aurec.com/wbforum/).

Michel van den Bergh provided the code for reading Polyglot opening books.

Arun Persaud worked with H.G. Muller to combine all the features of the never-released WinBoard 4.2.8 of the Savannah project (mainly by Daniel Mehrmann), and the never-released 4.3.16 into a unified WinBoard 4.4, which is now available both from the Savannah web site and the WinBoard forum.

xboard-4.9.1/winboard/help/html/16.htm0000644000175000001440000007377612717001265014407 00000000000000 User Interface Options

User Interface Options

/firstLogo filename

/secondLogo filename

The appearance of either of these options causes WinBoard to reserve space for displaying logos on both sides of the clocks. Normally the first logo goes left, the second right, unless the option swap clocks is in effect. The filename must refer to a bitmap file (.bmp) containing a logo for the particular player (usually a 130x65 or 100x50 bitmap, which will be scaled to the height of two clock lines.)

/autoLogo true|false

When true, causes WinBoard to automatically supply a logo for the first and second chess program, by looking for a fie named logo.bmp in the engine directory (as specified by the /fd or /sd option), and then displays it like this file was given as an argument to the /firstLogo or /secondLogo option. In this mode it will also look in a sub-folder of its installation folder called logos, for finding logos with names corresponding to the ICS (e.g. chessclub.com.bmp) or to the human user, should they be involved in a game.

/hideThinkingFromHuman true|false

Prevents the engine thinking output to appear in the display, without necessitating to suppress the sending of this information altogether (so it can still appear in the PGN).

/noGUI

Suppresses all GUI functions of WinBoard (to speed up automated ultra-fast engine-engine games, which you dont want to watch). There will be no board or clock updates, no printing of moves, and no update of the icon on the task bar in this mode.

/top or /xtop, or /alwaysOnTop true|false

Sets the Always On Top option. Default: False.

/queen or /xqueen, or /alwaysPromoteToQueen true|false

Sets the Always Queen option. Default: False.

/drag or /xdrag, or /animateDragging true|false

Sets the Animate Dragging option. Default: True.

/animate or /xanimate, or /animateMoving true|false

Sets the Animate Moving option. Default: True.

/flip or /xflip, or /flipView true|false

If Auto Flip View is not set, or if you are observing but not participating in a game, then the positioning of the board at the start of each game depends on the flipView option. If flipView is False (the default), the board is positioned so that the white pawns move from the bottom to the top; if True, the black pawns move from the bottom to the top. In any case, the Flip View menu command can be used to flip the board after the game starts

/autoflip or /xautoflip, or /autoFlipView true|false

Sets the Auto Flip View option. Default: True.

/autoraise or /xautoraise, or /autoRaiseBoard true|false

Sets the Auto Raise Board option. Default: True.

/highdrag or /xhighdrag, or /highlightDragging true|false

Sets the Highlight Dragging option. Must be on for /showTargetSquares to work. Default: False.

/showTargetSquares true|false

When set, and the Highlight Dragging option is set, WinBoard will indicate all squares a piece can legally move to when you pick up that piece, by drawing a colored dot in it. Default: False.

/highlight or /xhighlight, or /highlightLastMove true|false

Sets the Highlight Last Move option. Default: False.

/exit or /xexit, or /popupExitMessage true|false

Sets the Popup Exit Message menu option. Default: False.

/popup or /xpopup, or /popupMoveErrors true|false

Sets the Popup Move Errors menu option. Default: False.

/coords or /xcoords, or /showCoords true|false

Sets the Show Coords option. Default: False.

/legal or /xlegal, or /testLegality true|false

Sets the Test Legality option. Default: True.

/size or /boardSize sizename

Sets the Board Size option. Also chooses which board size any following Font options will affect. The default is the largest size that will fit on your screen.

/wpc or /whitePieceColor color
/bpc
or /blackPieceColor color
/lsc
or /lightSquareColor color
/dsc
or /darkSquareColor color

Color specifications for white pieces, black pieces, light squares, and dark squares. Colors can be specified only by red/green/blue intensity, either in hexadecimal (as #rrggbb) or in decimal (as rrr,ggg,bbb). In the latter format, you must enclose the string in quotation marks if you leave spaces after the commas. The defaults are respectively #FFFFCC, #202020, #C8C365, and #77A26D. Available on the Board Colors section of the Board Options dialog.

If you are using a grayscale monitor, try setting the colors to:

-whitePieceColor:#FFFFFF
-blackPieceColor:#000000
-lightSquareColor:#CCCCCC
-darkSquareColor:#999999

/hsc or /highlightSquareColor color
/phc
or /premoveHighlightColor color

Color specifications for the Highlight Last Move and Premove options, respectively. Colors can be specified only by red/green/blue intensity, either in hexadecimal (as #rrggbb) or in decimal (as rrr,ggg,bbb). In the latter format, you must enclose the string in quotation marks if you leave spaces after the commas. The defaults are respectively #FFFF00 and #FF0000, respectively. These colors are also used to indicate non-captures and captures, respectively, with the /showTargetSquares option. The premove color is also used to indicate the most recent move when stepping through the principal variation of an engine.

/mono or /xmono, or /monoMode true|false

Determines whether WinBoard displays its pieces and squares in black and white (True) or color (False, the default). Available in the Board Colors section of the Board Options dialog.

/flipBlack true|false

Determines whether WinBoard displays the black pieces upside down (or the white pieces in Flip View). Useful with Shogi with the traditional Japanese pieces, which are not distinguished by color but by orientation.

/allWhite true|false

Determines whether the white piece bitmaps will be used to display black pieces. The white pieces have a dark outline, which the black pieces lack. This makes the latter look vague if the color you give them is not very dark.

/renderPiecesWithFont fontname

Uses the named true-type font to render the pieces, rather than the built-in bitmaps. The font must be installed on your computer. If the name starts with a * it is ignored, allowing you to easily disable a font temporarily in the whinboard.ini file.

/fontPieceToCharTable characterstring

If font-based rendering of the pieces is used, this table specifies which character of the font alphabet should be used for which piece. The format of the character strings is the same as that of the argument of /pieceToCharTable.

/fontPieceSize number

The number gives the size of the piece, as a percentage of the square size.

/fontPieceBackColorWhite color
/fontPieceForeColorWhite color
/fontPieceBackColorBlack color
/fontPieceForeColorBlack color

Color specifications for white pieces, black pieces that are generated with font-based rendering.

/liteBackTextureFile filename

/darkBackTextureFile filename

The filename indicates a bitmap file that should be used to display the light or dark squares, allowing you to make boards that look like wood, marble, etc. A filename starting with * is ignored.

/liteBackTextureMode number

/darkBackTextureMode number

The number indicates the way the files given in the background-texture options should be used to fill in the squares. Valid texture modes are 1 (default) and 2. In mode 1 the squares are taken from portions of the texture bitmap and copied without further processing. In mode 2, squares can also be rotated, mirrored and so on in order to provide a little more variety to the texture. The operations are selected at random so the board will look slightly different every time the program is run.

/overideLineGap number

The number specifies the width, in pixels, of the grid lines used to separate the squares. If it is very small (like a single pixel), it becomes vey hard to see which squares are highlighted (to indicate the last move), as this highlighting is a color change of these grid lines. Highlighting the moves with an arrow is then recommended.

/highlightMovesWithArrow true|false

If this option is true, a big, fat arrow is drawn to indicate the last move.

/highlightArrowColor color

Specifies the color of the arrow that highlights the moves.

/evalHistoColorWhite color

/evalHistoColorBlack color

Specifies the colors to be used to plot the white and black scores in the evaluation graph.

/colorShout effects color
/colorSShout effects color
/colorChannel1 effects color
/colorChannel effects color
/colorKibitz effects color
/colorTell effects color
/colorChallenge effects color
/colorRequest effects color
/colorSeek effects color
/colorNormal effects color

Select colors and effects to colorize messages in the ICS Interaction window. The effects may be any combination of bold, italic, underline, and strikeout. Colors are specified as for squares and pieces. Available on the ICS Interaction Colors section of the ICS Options dialog. Limitation: On 256 color displays, Windows chooses the nearest solid color from the system palette, which will not always be close to the color you selected.

/colorBackground color

Sets the background color for the ICS Interaction window. Available on the ICS Interaction Colors section of the ICS Options dialog.

/colorize or /xcolorize, or /colorizeMessages true|false

If True, WinBoard colorizes messages in the ICS Interaction window with the colors listed above. Default: True. Available in the ICS Interaction Colors section of the ICS Options dialog.

/clockFont fontname:size effects
/messageFont fontname:size effects
/coordFont fontname:size effects
/tagsFont fontname:size effects
/commentFont fontname:size effects
/icsFont fontname:size effects

The fonts used respectively for the clocks, the message display line, rank and file coordinate labels, the Edit Tags dialog, the Edit Comment dialog, and the ICS Interaction window. These options may be given more than once. Each occurrence affects the fonts for the current board size; that is, the size given in the last preceding /boardSize option, if any, or else the default size. The font size may contain a decimal point, and the effects may be any combination of bold, italic, underline, and strikeout. Example: /clockFont="Arial:20.0 bi". Available on the Fonts menu.

/soundShout sound
/soundSShout sound
/soundChannel1 sound
/soundChannel sound
/soundKibitz sound
/soundTell sound
/soundChallenge sound
/soundRequest sound
/soundMove sound
/soundBell sound

/soundIcsWin sound
/soundIcsLoss sound
/soundIcsDraw sound
/soundIcsUnfinished sound

/soundIcsAlarm sound

Associate sounds with WinBoard events. Most of the events are the same ones that cause text colorization. In addition, soundMove is played if a chess engine or another player makes a move. SoundBell is played if the chess server sends an ASCII BEL character (Ctrl+G). Available on the Sounds menu.

SoundIcsWin, soundIcsLoss, soundIcsDraw and soundIcsUnfinished are played at the conclusion of an ICS game. The result of the game determines which sound is played.

SoundIcsAlarm is played when your game clock counts down to icsAlarmTime.

The sound argument may be one of the following:

  • The name of a .wav file. The filename is interpreted relative to WinBoard's installation directory (the directory containing WinBoard.exe).

  • $, indicating the default system sound.

  • ! followed by the name of a built-in WinBoard wave resource.

  • ! alone, or (empty string), indicating silence.

The default for soundMove and soundBell is $, while the others default to silence.

/dropMenu true|false

This option allows you to emulate old behavior, where the right mouse button brings up the (now deprecated) drop menu rather than displaying the position at the end of the principal variation. Default: False.

/icsMenu={entries} or /icsMenu=@filename

This option lets you customize the right-button context menu that is available in the upper (output) pane of the ICS Interaction window. It consists of a list of menu entries, one per line. If the option value starts with an @ sign, it is the name of a file that contains the entries. Each entry contains either four fields separated by commas or the single character "-". The fields are:

  1. The menu text. If this field begins with "|", the item begins a new column in the menu and the "|" is not shown. If this field contains an "&", the character after the ampersand is underlined in the menu and acts as a keyboard shortcut for the item when the menu is displayed. Do not assign the same shortcut key to two different menu items.

  2. Text to insert into the input pane. The text cannot include a comma. You can use ICS aliases to get around this limitation.

  3. A flag (1 or 0) saying whether to insert a space and name (see above) after the text. If you set this flag, you might also want to put "(name)" into the menu text as a memory aid.

  4. A flag (1 or 0) saying whether the result should be sent immediately to ICS or left in the input pane for further editing.

You can now use two special insert texts chat and none in the entry definitions. In stead of being sent to the ICS, WinBoard will recognize them as special cases (they are not valid ICS commands anyway). Chat will open a chat box for the handle you clicked on, none will define a disabled entry (usually used with an item name of spaces), which you could put in the position of the menu that pops up under your mouse pointer, so there would be no default action when you up-click without moving the mouse first.

The entry "-" produces a separator line in the menu. The top three menu entries are always Copy and Paste, Copy, and Paste, but you have full control over the rest of the menu.

The default menu is:


&Who,who,0,1
Playe&rs,players,0,1
&Games,games,0,1
&Sought,sought,0,1
| ,none,0,0
Open Chat &Box (name),chat,1,0
&Tell (name),tell,1,0
M&essage (name),message,1,0

&Finger (name),finger,1,1
&Vars (name),vars,1,1
&Observe (name),observe,1,1
&Match (name),match,1,1
Pl&ay (name),play,1,1

There is no graphical user interface to set this option. To change it, edit your settings file with a plain text editor such as Notepad.

/icsNames={names} or /icsNames=@filename

This option lets you customize the drop-down list of ICS names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text /ics /icsHost= and adds the result to the command-line options. There is no graphical user interface to set this option. To change it, edit your settings file with a plain text editor such as Notepad.

/firstChessProgramNames={names} or /firstChessProgramNames="@filename"

This option lets you customize the first drop-down list of chess engine names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text /cp /firstChessProgram= and adds the result to the command-line options.

There is no graphical user interface to set this option. To change it, edit your settings file with a plain text editor such as Notepad. Example:

/firstChessProgramNames={GNUChess
WCrafty-15_11 /fd="C:\Program Files\Crafty"
ArasanX /fd="C:\Program Files\Arasan\Arasan 4.1"
"EXchess xb" /fd=C:\EXchess
Comet-WB /fd=C:\Comet
}

/secondChessProgramNames={names} or /secondChessProgramNames="@filename"

This option lets you customize the second drop-down list of chess engine names that appears in the WinBoard startup dialog. It consists of a list of strings, one per line. If the option value starts with an @ sign, it is the name of a file that contains the strings. When you select a string from the drop-down list, WinBoard prepends the text /cp /secondChessProgram= and adds the result to the command-line options.

There is no graphical user interface to set this option. To change it, edit your settings file with a plain text editor such as Notepad. Example:

/secondChessProgramNames={GNUChess
WCrafty-15_11 /sd="C:\\Program Files\\Crafty\"
ArasanX /sd="C:\Program Files\Arasan\Arasan 4.1"
"EXchess xb" /sd=C:\EXchess
Comet-WB /sd=C:\Comet
}

/x=xcoord /y=ycoord

Sets the initial location of the board window, giving the screen coordinates of the upper left-hand corner. Both arguments must be given together.

/analysisX=xcoord /analysisY=ycoord /analysisW=width /analysisH=height

These options have been deprecated, as the analysis window is replaced by the more general engine-output window. They are recognized, but ignored, and no longer saved in the winboard.ini file.

/commentX=xcoord /commentY=ycoord /commentW=width /commentH=height

Sets the initial location and size of the Comment window, giving the screen coordinates of the upper left-hand corner (relative to the main window), the width, and the height. All four arguments must be given together.

/gameListX=xcoord /gameListY=ycoord /gameListW=width /gameListH=height

Sets the initial location and size of the Game List window, giving the screen coordinates of the upper left-hand corner (relative to the main window), the width, and the height. All four arguments must be given together.

/icsX=xcoord /icsY=ycoord /icsW=width /icsH=height

Sets the initial location and size of the ICS Interaction window, giving the screen coordinates of the upper left-hand corner (relative to the main window), the width, and the height. All four arguments must be given together.

/tagsX=xcoord /tagsY=ycoord /tagsW=width /tagsH=height

Sets the initial location and size of the Tags window, giving the screen coordinates of the upper left-hand corner (relative to the main window), the width, and the height. All four arguments must be given together.

/moveHistoryX=xcoord moveHistoryY=ycoord /moveHistoryW=width /moveHistoryH=height

Sets the initial location and size of the move-history window, giving the screen coordinates of the upper left-hand corner (relative to the main window), the width, and the height. All four arguments must be given together.

/evalGraphX=xcoord /evalGraphY=ycoord /evalGraphW=width /evalGraphH=height

Sets the initial location and size of the evaluation-graph window, giving the screen coordinates of the upper left-hand corner (relative to the main window), the width, and the height. All four arguments must be given together.

/engineOutputX=xcoord /engineOutputY=ycoord

/engineOutputW=width /engineOutputH=height

Sets the initial location and size of the engine-output window, giving the screen coordinates of the upper left-hand corner (relative to the main window), the width, and the height. All four arguments must be given together.

/engineOutputUp true|false

/evalGraphUp true|false

/moveHistoryUp true|false

If set to True, the corresponding window is displayed, if False, the window is absent.

/stickyWindows true|false

Auxiliary windows touching the main window will stay attached to the latter when you move it.

/autoDisplayComment true|false

/autoDisplayTags true|false

If set to True, these options cause the window with the move comments, and the window with PGN tags, respectively, to pop up automatically when such tags or comments are encountered during the replaying a stored or loaded game.

/gameListTags string

The string contains single-character codes specifying the PGN tags that have to be listed for each game in the game-list window, and their order. The meaning of the characters is a=out-of-book info, b=black Elo, e=event, d=date, o=round, p=players, r=result, w=white Elo, s=site, t=time control and v=variant, Default: eprd.

xboard-4.9.1/winboard/help/html/24.htm0000644000175000001440000000441512717001265014366 00000000000000 Copyright

COPYRIGHT

Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
Enhancements Copyright 1992-2016 Free Software Foundation, Inc.

The following terms apply to Digital Equipment Corporation's copyright interest in WinBoard:

All Rights Reserved

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.

DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

The following terms apply to the enhanced version of WinBoard distributed by the Free Software Foundation:

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 3 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

xboard-4.9.1/winboard/help/html/04.htm0000644000175000001440000004061212717001265014363 00000000000000 Mode Menu

Mode Menu

Machine White

Forces the chess engine to play white.

Machine Black

Forces the chess engine to play black.

Two Machines

Starts a game between two chess engines.

Machine Both

A single chess engine plays itself. Mainly useful for pseudo-engines, that are in fact communication links to another machine, where you want to observe a game that is being played. (E.g. the gothic-chess.com server). This command is not implemented yet (version 4.3.14).

Analysis Mode

In this mode, you can make moves for both sides on the board. After each move, the chess engine will think about possible replies and display its analysis in a separate window. Crafty was the first engine to support this feature, but by now there are many others that support it as well. With respect to playing variations, the same holds as in Edit Game mode.

From WinBoard 4.4 on this function can also be invoked in zippy mode, i.e. when you are logged on to an ICS with an engine loaded. In that case it is not your own moves that the engine analyzes, but the moves that are played in a game on the ICS that you are observing. You must start observing before you start the analysis mode! See the file zippy.README for how to connect to an ICS and a chess engine running on your local computer at the same time. (Basically this amounts to adding the /zp command-line option in addition to all options you would need for connecting to the ICS, as well as those needed for running the chess engine.)

Analyze File

In this mode, you can load a game from a file, and the chess engine will analyze each move as in Analysis Mode. Crafty was the first engine to support this feature, but by now there are many others that support it as well.

ICS Client

This is the normal mode when WinBoard is connected to a chess server. If you have moved into Edit Game or Edit Position mode, you can select this option to get out.

When you run WinBoard in ICS mode, it starts up a console window in which you can type commands and receive text responses from the chess server. You can use the standard Windows editing keys to edit your command line before pressing Enter. The console window keeps a history of the last few commands you typed. Press the up-arrow key to go back to a previous command; press the down-arrow key to go forward again to a later command. Press the right mouse button in the output area for a context menu of editing commands and ICS command shortcuts.

Some useful ICS commands include who to see who is logged on, games to see what games are being played, match to challenge another player to a game, observe to observe an ongoing game, examine or smoves to review a recently completed game, and of course help.

Whenever you ask to observe an ongoing game, review a completed game, or resume an adjourned game, WinBoard retrieves and parses the list of past moves from the ICS, so you can review them with Forward and Backward or save them with Save Game.

In ICS mode a graph of players seeking games can be displayed in stead of the chess board, when you are idle (i.e. not playing, observing or examining). When this feature is enabled, left-clicking in the board area will switch between board and the seek graph. For details on this, see the Seek Graph command.

Some special ICS Client features are activated when you are in examine or bsetup mode on ICS. See the descriptions of the menu commands Forward, Backward, Pause, and Stop Examining below. You can also issue the ICS position-editing commands with the mouse. Move pieces by dragging with the left mouse button, or by left-clicking once on the starting square and once on the ending square. Press the right mouse button over a square for a context menu that lets you drop a new piece, empty the square, or clear the board. Click on the White or Black clock to set the side to play. You cannot set the side to play or drag pieces to arbitrary squares while examining on ICC, but you can do so in bsetup mode on FICS. You can also make moves by typing them into the ICS window; you may have to do this occasionally if you are playing a chess variant whose rules WinBoard does not understand. (But this list is getting shorter, and Fischer Random is not on it anymore; you can enter castling there with the mouse by dragging the King on top of the Rook.)

If you are playing a bughouse game on the ICS, a list of the offboard pieces that each player holds is shown in the window title bar, and graphically in the holdings area next to the board. To drop an offboard piece, drag it from the holdings to the board. (Pressing the right mouse button over an empty square to bring up a context menu will still work if you have set the /dropMenu option.) To observe your partner's games, start a second copy of WinBoard, log in as a guest, and use the ICS follow or pfollow command in the new window. You can also use the Background Observe or Dual Board features to follow your partners game through a single connection on which you are also playing yourself, in the background (peeking at it by pressing the right mouse button), or on side-by-side boards in the board window.

Edit Game

Allows you to make moves for both Black and White, and to change moves after backing up with the Backward command. The clocks do not run, but you can adjust their reading by clicking on them. A left-click subtracts one minute, a right-click adds one minute.

In chess engine mode, the chess engine continues to check moves for legality but does not participate in the game. You can bring the chess engine back into the game by selecting Machine White, Machine Black, or Two Machines.

In ICS mode, the moves are not sent to the ICS: Edit Game takes WinBoard out of ICS Client mode and lets you edit games locally. If you want to edit a game on ICS in a way that other ICS users can see, use the ICS examine command or start an ICS match against yourself.

If you edit an existing game locally by playing new moves while not at the end, you will create a new variation. (New moves at the end will simply be appended to the existing game.) WinBoard will then shelve the original variation (main line) from beyond the point where you played a new move. You can later revert to that main line with the Revert or Annotate commands. This will discard the variation you just entered, and restores the moves of the original main line that you overwrote. This procedure can be applied recursively, so you an make (sub-)variations on variations. Rather than entering variations move by move, you can also recall them from PGN variations in the Comment window, by right-clicking those.

Edit Position

Lets you set up an arbitrary board position. Use the left mouse button to drag pieces to new squares, or to delete a piece by dragging it off the board or dragging an empty square on top of it. To drop a new piece on a square, press the right mouse button over the square. This brings up a menu of pieces. Additional menu choices let you empty the square or clear the board. You can set the side to play next by clicking on the White or Black indicator at the top of the screen. The pop-up menu also contains options to promote or demote the piece currently in the square. (In variants like Crazyhouse a piece has a different representation when it is a promoted Pawn rater than an original piece.) This allows you to create some of the not-so-common pieces (e.g. a Unicorn is a promoted King, a Commoner is a demoted King).

In Edit Position mode you can type a FEN in the move type-in box to setup the corresponding position.

Selecting Edit Position causes WinBoard to discard all remembered moves in the current game.

In ICS mode, change made to the position by Edit Position are not sent to the ICS: Edit Position takes WinBoard out of ICS Client mode and lets you edit positions locally. If you want to edit positions on ICS in a way that other ICS users can see, use the ICS examine command, or start an ICS match against yourself. (See also ICS Client above.)

Show Engine Output

Open a new window dedicated to showing the thinking output of the engine(s), as controlled by Show Thinking. In ICS mode kibitzed info of an opponent engine can appear here as well, under control of the /autoKibitz option. Right-clicking a line of thinking output will allow you to step through the PV it contains on the main board, by vertically moving the mouse, keeping the right-button pressed. This also works for PVs kibitzed to you through an ICS.

WinBoard will display lines of thinking output of the same depth ordered by score, (highest score on top), rather than in the order the engine produced them. Usually this amounts to the same, as a normal engine search will only find new PV (and emit it as thinking output) when it searches a move with a higher score than the previous variation. But when the engine is in multi-variation mode this needs not always be true, and it is more convenient for someone analyzing games to see the moves sorted by score. The order in which the engine found them is only of interest o the engine author, and can still be deduced from the time or node count printed with the line.

Show Evaluation Graph

Open a new window dedicated to displaying a graph, representing the development of the engine score(s) from the current game over time. (Needs Show Thinking to be enabled in order to work.) Right-clicking on the graph will take you to the corresponding move in the board display.

Show Game List

Shows or hides the list of games generated by the last Load Game command. Which info from the PGN tags is included in the game-description line can be customized. A 'Filter' field in this window allows you to display only lines that contain a certain string. (E.g. a player name to see only games of that player from a big tournament file.)

Show Move History

Open a new window dedicated to showing the game currently in progress. Double-clicking on a move takes you to the corresponding position in the board display.

Open Chat Window

Open a new window that in ICS mode can be used to display messages received from ICS tell commands from a specified ICS handle, from a channel (when you set the handle to the channel number), shouts / c-shouts, or whispers / kibitzes from co-observers of a game (when you set the handle to shouts, c-shouts, whisper or kibitzes). You have to press the Change button in the chat window to activate the entered handle, or type . Typing into the bottom field of the window will send tell messages to the handle or channel, or whispers to co-observers. You can open up to five chat windows. Messages that are diverted to such a chat window will not appear in the ICS interaction window. A window dedicated to shouts will also capture c-shouts (if there is no dedicated c-shout box) and It messages, recognizable on the type of bracketing used around the shouter name ( [ ], ( ) or < >, respectively).

Training

Training mode lets you interactively guess the moves of a game for one of the players. While in Training mode, the navigation buttons are disabled. You guess the next move of the game by playing the move on the board (or using the Type In Move command). If the move played matches the next move of the game, the move is accepted and the opponents response is autoplayed. If the move played is incorrect, an error message is displayed.

Edit Tags

Lets you edit the PGN (portable game notation) tags for the current game. After editing, the tags must still conform to the PGN tag syntax:


<tag-section> ::= <tag-pair> <tag-section>
                  <empty>
<tag-pair>    ::= [ <tag-name> <tag-value> ]
<tag-name>    ::= <identifier>
<tag-value>   ::= <string>

See the PGN Standard for full details. Here is an example:


[Event "Portoroz Interzonal"]
[Site "Portoroz, Yugoslavia"]
[Date "1958.08.16"]
[Round "8"]
[White "Robert J. Fischer"]
[Black "Bent Larsen"]
[Result "1-0"]

Any characters that do not match this syntax are silently ignored. Note that the PGN standard requires all games to have at least the seven tags shown above. Any that you omit will be filled in by WinBoard with "?" (unknown value) or "-" (inapplicable value).

Edit Comment

Adds or modifies a comment on the current position. Comments are saved by Save Game and are displayed by Load Game, Forward, and Backward.

Enter Username

Allows you to type the name of the human player, which will appear in the PGN header and in the window title.

Pause

Pauses updates to the board, and if you are playing against a local chess engine, also pauses your clock. To continue, select Pause again, and the display will automatically update to the latest position. The P (or C) button is equivalent to selecting Pause.

If you select Pause when you are playing against a chess engine and it is not your move, the chess engines clock will continue to run and it will eventually make a move, at which point both clocks will stop. Since board updates are paused, however, you will not see the move until you exit from Pause mode (or select Forward). This behavior is meant to simulate adjournment with a sealed move.

If you select Pause while you are in examine mode on ICS, you can step backward and forward in the current history of the examined game without affecting the other examiners or observers. Select Pause again to reconnect yourself to the current state of the game on ICS.

If you select Pause while you are loading a game, the game stops loading. You can load more moves one at a time by selecting Forward, or resume automatic loading by selecting Pause again.

xboard-4.9.1/winboard/help/html/22.htm0000644000175000001440000001167212717001265014367 00000000000000 Limitations

LIMITATIONS AND NON-LIMITATIONS

WinBoard is a Win32 application. It runs only on Windows NT and Windows 95. It does not work on Windows 3.11 or earlier, even with the Win32s compatibility package.

CMail, the companion program to xboard for playing electronic mail correspondence chess, has not been ported to Win32.

There is no way for two people running copies of WinBoard to play each other without going through the Internet Chess Server.

Under some circumstances, your ICS password may be echoed when you log on.

If you are connecting to the ICS by running telnet, timestamp, or timeseal on an Internet provider host, you may find that each line you type is echoed back an extra time after you hit Enter. You can probably turn this echo off. If your Internet provider is a Unix system, type "stty -echo" after you log in to the provider but before you run telnet, timestamp, or timeseal. In addition, you may need to type the sequence Ctrl+Q Ctrl+E Enter after you have finished logging in to ICS. On VMS, type set terminal /noecho /nowrap, and after you telnet to the ICS, type Ctrl+Q Ctrl+] Enter set mode char Enter Enter. It is a good idea to turn off the extra remote echo if you can, because otherwise it can get interleaved with output from the ICS and confuse WinBoard's parsing routines. Dont just turn off Local Line Editing so that you see only the remote echo and not the local one; that will make the interleaving problem worse.

The game parser recognizes only algebraic notation (SAN).

The ICS logon file does not work properly when you connect to ICS through a Unix gateway host by setting icsPort to 23. The Unix login process apparently discards type-ahead.

Some WinBoard functions may not work with versions of GNU Chess earlier than 4.0, patchlevel 77. The current version of WinBoard works best with Crafty version 15.11 or later.

Many of the following points used to be limitations in WinBoard 4.2.7 and earlier, but are now fixed:

The internal move legality tester in WinBoard 4.3.xx does look at the game history, and is fully aware of castling or en passant-capture rights. It permits castling with the king on the d file because this is possible in some "wild 1" games on ICS. The piece-drop menu does not check piece drops in bughouse to see if you actually hold the piece you are trying to drop. But this way of dropping pieces should be considered an obsolete feature, now that pieces can be dropped by dragging them from the holdings to the board. Anyway, if you would attempt an illegal move when using a chess engine or the ICS, WinBoard will accept the error message that comes back, undo the move, and let you try another.

FEN positions saved by WinBoard do include correct information about whether castling or en passant are legal, and also handle the 50-move counter.

The mate detector does not understand that non-contact mate is not really mate in bughouse. The only problem this causes while playing is minor: a "#" (mate indicator) character will show up after a non-contact mating move in the move list. WinBoard will not assume the game is over at that point, not even when the option Detect Mates is on.

Edit Game mode always uses the rules of the selected variant, which can be a variant that uses piece drops. You can load and edit games that contain piece drops. The (obsolete) piece menus are not active, but you can perform piece drops by dragging pieces from the holdings.

Edit Position mode does not allow you to edit the Crazyhouse holdings properly. You cannot drag pieces to the holding, and using the popup menu to put pieces there does not adapt the holding counts and leads to an inconsistent state. Set up Crazyhouse positions by loading / pasting a bFEN, from there you can set the holdings.

Fischer Random castling is fully understood. You can enter castlings by dragging the King on top of your Rook. You can probably also play Fischer Random successfully on ICS by typing castling moves into the ICS Interaction window.

Also see the ToDo file included with the distribution for many other possible bugs, limitations, and ideas for improvement that have been suggested.

xboard-4.9.1/winboard/help/html/06.htm0000644000175000001440000001407712717001265014373 00000000000000 Step Menu

Step Menu

Type In Move

Pops up a dialog box, into which you can type moves in standard algebraic chess notation. (You can also get this dialog box by simply starting to type over the chessboard, except in ICS mode, where such typing is redirected into the ICS interaction window.) Typing a number will have the same effect as stepping forward or backward to the position after that move. In Edit Position mode you can also type a FEN to set up the position.

Backward

Steps backward through a series of remembered moves. The < button is equivalent to selecting Backward, as is turning the mouse wheel towards you. In most modes, Backward only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing or observing a game on the ICS, or loading a game. If you select Backward in any of these situations, you will not be allowed to make a different move. Use Retract Move or Edit Game if you want to change past moves.

If you are examining a game on the ICS, the behavior of Backward depends on whether WinBoard is in Pause mode. If Pause mode is off, Backward issues the ICS command backward, which backs up everyone's view of the game and allows you to make a different move. If Pause mode is on, Backward only backs up your local view.

Forward

Steps forward through a series of remembered moves (undoing the effect of Backward) or through a game file. The > button is equivalent, as is turning the mouse wheel away from you.

If you are examining a game on the ICS, the behavior of Forward depends on whether WinBoard is in Pause mode. If Pause mode is off, Forward issues the ICS command forward, which moves everyone's view of the game forward along the current line. If Pause mode is on, Forward only moves your local view forward, and it will not go past the position the game was in when you paused.

Back to Start

Jumps backward to the first remembered position in the game. The << button is equivalent.

In most modes, Back to Start only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing or observing a game on the ICS, or loading a game. If you select Back to Start in any of these situations, you will not be allowed to make a different move. Use Retract Move or Edit Game if you want to change past moves; or use New Game to start a new game.

If you are examining a game on the ICS, the behavior of Back to Start depends on whether WinBoard is in Pause mode. If Pause mode is off, Backward issues the ICS command backward 999999, which backs up everyone's view of the game to the start and allows you to make different moves. If Pause mode is on, Back to Start only backs up your local view.

Forward to End

Jumps forward to the last position in the game. The >> button is equivalent.

If you are examining a game on the ICS, the behavior of Forward to End depends on whether WinBoard is in Pause mode. If Pause mode is off, Forward to End issues the ICS command forward 999999, which moves everyone's view of the game forward to the end of the current line. If Pause mode is on, Forward to End only moves your local view forward, and it will not go past the position the game was in when you paused.

Revert

If you are examining a game on the ICS, issues the ICS command revert. In local mode, when you were editing or analyzing a game, and have been entering a number of moves by hand, starting from a position not at the end of the game, the revert command restores the game to the variation you started from. This can be applied recursively, so that you can analyze variations on variations; each time you create a new variation by entering an alternative move, the current variation will be shelved. Revert allows you to return to the most recently shelved variation.

Annotate

Similar to the Revert command, but in local mode it will add the variation you are abandoning as a comment to the move where it first deviated, in PGN variation format (i.e. in parentheses). You can right-click such variation comments to recall them.

Truncate Game

Discards all remembered moves of the game beyond the current position. Puts WinBoard into Edit Game mode if it was not there already.

Move Now

Forces the chess engine to move immediately. May not work with all chess engines.

Retract Move

Retracts your last move.

In chess engine mode, you can do this only after the chess engine has replied to your move. If the chess engine is still thinking, use Move Now first.

In ICS mode, Retract Move issues the command takeback 1 or takeback 2, depending on whether it is your opponent's move or yours.

xboard-4.9.1/winboard/help/html/20.htm0000644000175000001440000001256312717001265014365 00000000000000 Installing Chess Engines

INSTALLING CHESS ENGINES

Introduction

WinBoard is capable of operating with many different chess engines. You can play chess against a compatible engine, set up matches between two engines, or (advanced users only) run an automated computer player on an ICS.

Typically, the main difficulty in installing a new chess engine for use by WinBoard comes in getting the engine itself running and setting its options appropriately. The connection to WinBoard is relatively straightforward.

WinBoard-compatible chess engines are Win32 command line programs that you can run by hand in an MS-DOS Prompt box and type human-readable commands to. WinBoard connects to an engine simply by starting the engine up in the background and communicating with it through a pair of pipes. Therefore the basic procedure for installing an engine is:

1. Get a copy of the engine and any supporting files it needs.

2. Install and configure the engine as a command-line program by following the instructions that come with it. Try it out by running it from the command line in an MS-DOS Prompt box and make sure it works.

3. Optional, but recommended: Try out the WinBoard plus engine combination by running WinBoard with the proper command line arguments in an MS-DOS Prompt box.

4. Create a shortcut on your desktop or Start menu to run the engine with WinBoard.

5. Optionally edit your WinBoard.ini file to add the engine to the drop-down lists on WinBoard's startup dialog.

This document cannot explain steps 1 and 2 in detail for all engines, but we will take you through all five steps in outline, using Crafty as an example.

Example: Crafty

1. Choose a directory to put Crafty in. We'll use C:\Program Files\Crafty in this example. Download your copy of Crafty into this directory from its author's FTP site, ftp://ftp.cis.uab.edu/pub/hyatt. At this writing, you will need at least the following files:

read.me
v15/crafty.doc
v15/crafty.faq
v15/wcrafty-15.*.exe
(where * is replaced by the largest number there)
common/start.zip
common/medium.zip
(or another book).

2. The first three files are documentation that you can read with a text editor. Read the read.me file first and follow the instructions carefully. This will take some time. Do not write to the author of WinBoard if you have trouble with the instructions in the Crafty read.me. Try running Crafty from an MS-DOS Prompt box and make sure it works before you go on.

3. Optional, but recommended: In an MS-DOS Prompt box, cd to the directory where WinBoard is installed, typically "C:\Program Files\WinBoard". Then type the following command line. Use the actual name of the wcrafty file you downloaded, not an *, and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too.

WinBoard /cp /fcp=WCrafty-15.* /fd="C:\Program Files\Crafty" /scp=WCrafty-15.* /sd="C:\Program Files\Crafty"

WinBoard should start up, with Crafty running as its chess engine. Check that you can play chess against Crafty.

4. To make a shortcut or Start menu entry for Crafty: Right-click on the desktop and select New/Shortcut. Use the Browse button to find your winboard.exe file and get its name into the Command Line box. (It usually will be "C:\Program Files\WinBoard\winboard.exe".) Click in the Command Line box and hit the End key to go to the end. Add the following to the end of the command line, after the closing quotation mark. Use the actual name of the wcrafty file you downloaded, not an *, and if your browser changed the first period to an underscore when you downloaded the file, make that change in the command line too.

/cp /fcp=WCrafty-15.* /fd="C:\Program Files\Crafty" 
/scp=WCrafty-15.* /sd="C:\Program Files\Crafty"

Press Next, choose a name for the shortcut, and press Finish. You can now use this shortcut to run WinBoard with Crafty. Double-click it to check that it works. You can drag or copy the shortcut into your Start menu if you like.

5. To add Crafty as an option in the WinBoard Startup dialog, edit your WinBoard.ini file with Notepad or another plain text editor, carefully following the example shown under /firstChessProgramNames above.

For more information

If you would like to run an automated computer player on the ICS, see the separate file zippy.README. If you would like to write your own engine to interface to WinBoard, see the separate file engine-intf.html, and join the mailing list mentioned there. Both files are included in the WinBoard distribution. You might also want to get the source code for WinBoard. It is available from the author's Web page, http://www.tim-mann.org/chess.html.

xboard-4.9.1/winboard/help/html/15.htm0000644000175000001440000001602012717001265014361 00000000000000 Load and Save Options

Load and Save Options

/lgf or /loadGameFile filename
/lgi
or /loadGameIndex N

If loadGameFile is set, WinBoard reads the specified game file at startup. You can leave out the name of this option and give just the file name, which is handy if you want to configure WinBoard as a game viewer with a browser such as the Windows Explorer or Netscape. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard input. If there is more than one game in the file, WinBoard pops up a menu of the available games, with entries based on their PGN tags. If loadGameIndex is set to N, the menu is suppressed and the Nth game found in the file is loaded immediately. A game index of 1 will load the first game, but step to the next game on each new game in Match Mode. Similarly, an index of 2 will step to the next game every two games, so that all games are played by each player with both colors.

/td or /timeDelay seconds

Time delay between moves during Load Game. Fractional seconds are allowed; try 0.4. A time delay value of -1 tells WinBoard not to step through game files automatically. Default: 1 second.

/sgf or /saveGameFile filename

If this option is set, WinBoard appends a record of every game played to the specified file. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard output.

/autosave or /xautosave, or /autoSaveGames true|false

If this option is True, at the end of every game WinBoard prompts you for a filename and appends a record of the game to the file you specify. Ignored if saveGameFile is set. Default: False.

/lpf or /loadPositionFile filename
/lpi
or /loadPositionIndex N

If loadPositionFile is set, WinBoard loads the specified position file at startup. The filename is interpreted relative to WinBoard's initial working directory. The filename "-" specifies the standard input. If loadPositionIndex is set to N, the Nth position found in the file is loaded; otherwise the first is loaded. A position index of 1 will load the first position, but step to the next position on each new game in Match Mode. Similarly, an index of 2 will step to the next position every two games, so that all positions are played by each player with both colors.

/rewindIndex number

When number is non-zero, resets the game or position index used in the /lgf or /lpf options back to 1 after it has reached the value number. Default: 0.

/spf or /savePositionFile filename

If this option is set, WinBoard appends the final position reached in every game played to the specified file. The filename is interpreted relative to WinBoard's initial working directory. The file name "-" specifies the standard output.

/pgnExtendedInfo true|false

If this option is set, WinBoard saves depth, score and time used for each move that the engine found as a comment in the PGN file.

/pgnEventHeader string

Sets the name used in the PGN event tag to string.

/saveOutOfBookInfo true|false

Include the information on how the engine(s) game out of its opening book in a special annotator tag with the PGN file.

/oldsave or /xoldsave, or /oldSaveStyle true|false

If this option is False (the default), WinBoard saves games in PGN (portable game notation) and positions in FEN (Forsythe-Edwards notation). If the option is True, a save style that is compatible with older versions of WinBoard (and of xboard) is used instead.

/debug or /xdebug, or /debugMode true|false

Writes debugging information to the file WinBoard.debug, including all commands sent to the chess engine, all output received from it, and all commands sent to ICS. You can press Ctrl+Alt+F12 to turn this option on or off while WinBoard is running. Each time you turn it on, any existing debug file is overwritten.

/debugFile filename or /nameOfDebugFile filename

Sets the name of the file to which WinBoard saves debug information (including all communication to and from the engines).

/engineDebugOutput number

Specifies how WinBoard should handle unsollicited output from the engine, with respect to saving it in the debug file. The output is further (hopefully) ignored. If number=0, WinBoard refrains from writing such spurious output to the debug file. If number=1, all engine output is written faithfully to the debug file. If number=2, any protocol-violating line is prefixed with a # character, as the engine itself should have done if it wanted to submit info for inclusion in the debug file.

This option is provided for the benefit of applications that use the debug file as a source of information, such as the broadcaster of live games TLCV / TLCS. Such applications can be protected from spurious engine output that might otherwise confuse them.The case number=3 is similar, but now marks non-compliant engine output with a more conspicuous prefix.

xboard-4.9.1/winboard/help/html/14.htm0000644000175000001440000002760012717001265014366 00000000000000 Internet Chess Server Options

Internet Chess Server Options

/ics or /xics, or /internetChessServerMode true|false

Connect with an Internet Chess Server to play chess against its other users, observe games they are playing, or review games that have recently finished. See ICS Client Default: False.

You can create a script file containing ICS commands that WinBoard will type in for you whenever you connect to the ICS. See ICS Logon.

/icshost or /internetChessServerHost hostname

The host name or numeric address of the Internet Chess Server to connect to when in ICS mode. The default is the empty string, which causes WinBoard to pop up a menu of known ICS sites. The file ics-addresses.txt in the WinBoard distribution gives slightly more information on these sites. It includes their numeric addresses, which you can use if your site does not have a working name server.

/icsport or /internetChessServerPort portnumber

The port number to use when connecting to a chess server in ICS mode. Default: 5000.

/icshelper program

An external helper program used to communicate with the chess server. Typically timestamp for the ICC (chessclub.com) or timeseal for FICS (freechess.org, eics.daimi.aau.dk, etc.). This option is shorthand for /useTelnet /telnetProgram program.

/telnet or /xtelnet, or /useTelnet true|false

This option is poorly named; it should be called /useHelper. If set to True, it instructs WinBoard to use an external helper program to communicate with the ICS, as specified by the telnetProgram option. The external program must be a pure console application that can communicate with WinBoard through pipes; the Windows telnet application is not suitable. If the option is False (the default), WinBoard communicates with the ICS by opening a Winsock TCP socket and using its own internal implementation of the telnet protocol.

/gateway hostname

If this option is set to a host name, WinBoard uses rsh to run the telnetProgram remotely on the given host to communicate with the Internet Chess Server instead of using its own internal implementation of the telnet protocol. See the FIREWALLS section below for an explanation of when this option is useful.

/telnetProgram program

This option is poorly named; it should be called /helperProgram. It gives the name of the remote or external helper program to be used with the gateway or useTelnet option. The default is "telnet". The telnet program is invoked with the value of internetChessServer as the first argument and the value of internetChessServerPort as the second argument on its command line.

/icscom or /internetChessServerComPort name

If this option is set, WinBoard communicates with the Internet Chess Server using a serial communication port instead of a network connection. Use this option if your machine is not connected to a network (not even via SLIP or PPP), but you do have Internet access through another machine by dialing in using a modem or by connecting directly to a serial terminal port. Example:

WinBoard /ics /icscom:com1

After you start WinBoard in this way, type whatever modem commands are necessary to dial out to your Internet provider and log in. You may need to turn off Local Line Editing on the Options menu while typing commands to the modem, but turn it on again afterwards. Then telnet to the ICS, using a command like "telnet chessclub.com 5000". Important: See the paragraph in the LIMITATIONS section below about extra echoes.

/comPortSettings dataRate,dataBits,parity,stopBits,flow

This option allows serial port parameters to be set from the command line or a settings file. The values are simply filled in to the Communications dialog.

/icslogon or /internetChessServerLogonScript filename

This option lets you change the name used for the ICS Logon file. Default: "ICS.ini". The filename is interpreted relative to WinBoard's installation directory (the directory containing WinBoard.exe).

/autocomm or /xautocomm, or /autoComment true|false

Sets the Auto Comment option. Default: False.

/autoflag or /xautoflag, or /autoCallFlag true|false

Sets the Auto Flag option. Default: False.

/autobs or /xautobs, or /autoObserve true|false

Sets the Auto Observe option. Default: False.

/autoKibitz

Kibitzes the engines last thinking output (depth, score, time, speed, PV) to the ICS in zippy mode. Show Thinking must be on for this option to work. Also diverts similar kibitz information of an opponent engine that is playing you through the ICS to the engine-output window, as if the engine was playing locally.

/moves or /xmoves, or /getMoveList true|false

Sets the Get Move List option. Default: True.

/edit or /xedit, or /localLineEditing true|false

Sets the Local Line Editing option. Default: True.

/quiet or /xquiet, or /quietPlay true|false

Sets the Quiet Play option. Default: False

/blindfold true|false

Sets the Blindfold option. Default: False

/seekGraph true|false, or /sg

Enables summoning up of the Seek Graph by left-clicking the board. Default: False

/autoRefresh true|false

Sets the Auto Refresh option of the Seek Graph. Default: False

/backgroundObserve true|false

Sets the Background Observe option for observing other games during play. Default: False

/dualBoard true|false

Sets the Dual Board option for observing your partner's bughouse game. Default: False

/pre or /xpre, or /premove true|false

Sets the Premove option. If set to True, the premove feature is enabled. If set to False, premove is disabled and the other Premove settings are ignored. Default: False.

/prewhite or /xprewhite, or /premoveWhite true|false

/premoveWhiteText movetext

If premoveWhite is set to True and you are playing white in an ICS game, the text specified by the premoveWhiteText option is sent to the ICS as soon as the game starts. These options can be set from the Premove section of the ICS Options dialog box. The default for premoveWhite is False.

/preblack or /xpreblack, or /premoveBlack true|false

/premoveBlackText movetext

If premoveBlack is set to True and you are playing black in an ICS game, the text specified by the premoveBlackText option is sent to the ICS as soon as the first move is received from your opponent, even if you make a different premove on the board before the first white move is received. These options can be set from the Premove section of the ICS Options dialog box. The default for premoveBlack is False.

/oneClickMove true|false

Sets the One-Click Move option. Default: False

/alarm or /xalarm, or /icsAlarm true|false

/icsAlarmTime milliseconds

When icsAlarm is set to True, the alarm sound is played when your clock counts down to icsAlarmTime seconds. For ICS games with time controls that include an increment, the alarm will sound each time the clock counts down to the icsAlarmTime. The icsAlarmTime can be set by selecting ICS Alarm from the ICS options dialog. The default is 5 seconds.

/keepAlive time

When time is non-zero, send a date command every time minutes after your last move to the ICS, to prevent it from logging you off. (Do not use frivolously! The ICS operator might ban you.) Default: 0.

/chatBoxes handles

Sets the list of Chat Boxes to be opened at startup. The given string handles should be a semicolon-separated list, like shouts;53;Johnny to open 3 chat boxes, to capture all shouts (including c-shouts and it messages), the traffic on channel 53, and for a player named Johnny. Default: no chat windows.

xboard-4.9.1/winboard/help/html/02.htm0000644000175000001440000000265312717001265014364 00000000000000 Menus

The menus of WinBoard 4.5.0 have been re-organized, and the new menu structure has not been incorporated in this help file yet. New menus Edit, View and Engine have been added, and the Step menu has disappeared. Sorry about this, but we are working on a new way to generate Help files, and we did not want to delay release of 4.5.0 until that is done.

Items now in the Edit menu previously were in the File menu, (for Copy and Paste items), or the Step menu (Revert, Truncate, Forward, Backward, etc.). Items now in the View menu used to be in the Mode Menu, (opening and closing auxiliary windows), or the Option Menu (for options that determine look, such as Board and Fonts). Items in the Engine menu where in the Option (settings), Help (Hint, Book) or Step menu (Retract Move, Move Now).

MENUS

File Menu

Mode Menu

Action Menu

Step Menu

Options Menu

Help Menu

ICS Interaction Context Menu

xboard-4.9.1/winboard/help/html/12.htm0000644000175000001440000004307712717001265014372 00000000000000 Chess Engine Options

Chess Engine Options

/cp or /xcp, or /chessProgram true|false

If true, puts WinBoard in chess engine mode. In this mode, you can play against a chess program running on your PC or use it as an analysis partner.

/tc or /timeControl minutes[:seconds]

Each player begins with his clock set to the timeControl period. Default: 5 minutes. The additional options movesPerSession and timeIncrement are mutually exclusive.

/mps or /movesPerSession moves

When both players have made movesPerSession moves, a new timeControl period is added to both clocks. Default: 40 moves.

/inc or /timeIncrement seconds

If this option is specified, movesPerSession is ignored. Instead, after each player's move, timeIncrement seconds are added to his clock. Use -timeIncrement 0 if you want to require the entire game to be played in one timeControl period, with no increment. Default: -1, which specifies movesPerSession mode.

/clock or /xclock, or /clockMode true|false

Determines whether or not to display the chess clocks. If clockMode is False, the clocks are not shown, but the side that is to play next is still highlighted. Also, unless searchTime is set, the chess engine still keeps track of the clock time and uses it to determine how fast to make its moves.

/st or /searchTime minutes[:seconds]

Tells the chess engine to spend at most the given amount of time searching for each of its moves. Without this option, the engine chooses its search time based on the number of moves and amount of time remaining until the next time control. Setting this option also sets clockMode to False.

/depth or /searchDepth number

Tells the chess engine to look ahead at most the given number of moves when searching for a move to make. Without this option, the engine chooses its search depth based on the number of moves and amount of time remaining until the next time control. With the option, the engine will cut off its search early if it reaches the specified depth.

/firstNPS number

/secondNPS number

Tells the chess engine to use an internal time standard based on its node count, rather then wall-clock time, to make its timing decisions. The time in virtual seconds should be obtained by dividing the node count through the given number, like the number was a rate in nodes per second. WinBoard will manage the clocks in accordance with this, relying on the number of nodes reported by the engine in its thinking output. If number equals zero, it can obviously not be used to convert nodes to seconds, and the time reported by the engine is used to decrement the WinBoard clock. The engine is supposed to report in CPU time it uses, rather than wall-clock time in this mode. This option can provide fairer conditions for engine-engine matches on heavily loaded machines, or with very fast games (where the wall clock is too inaccurate). Show Thinking must be on for this option to work. Not many engines might support this yet!

/firstTimeOdds factor

/secondTimeOdds factor

Reduces the time given to the mentioned engine by the given factor. If pondering is off, the effect is indistinguishable from what would happen if the engine was running on a factor times slower machine.

/timeOddsMode mode

This option determines how the case is handled when both engines have a time-odds handicap. If mode=1, the engine that gets the most time will always get the nominal time, as specified by the time-control options, and its opponents time is normalized similarly. If mode=0, both play with reduced time.

/ponder or /xponder, or /ponderNextMove true|false

Sets the Ponder Next Move option. Default: True.

/thinking or /xthinking, or /showThinking true|false

Sets the Show Thinking option. Default: False.

/periodic or /xperiodic, or /periodicUpdates true|false

Sets the Periodic Updates option. Default: True.

/mg or /matchGames n

Automatically runs an n-game match between two chess engines, with alternating colors. If the loadGameFile or loadPositionFile option is set, WinBoard will start each game with the given opening moves or the given position; otherwise, the games will start with the standard initial chess position. If the saveGameFile option is set, a move record for the match will be appended to the specified file. If the savePositionFile option is set, the final position reached in each game of the match will be appended to the specified file. When the match is over, WinBoard will display the match score and exit. Default: 0 (do not run a match).

/mm or /xmm, or /matchMode true|false

Provided for backward compatibility. If true and matchGames=0, sets matchGames=1.

/matchPause number

Sets the length of the pause between games in match mode to number msec. Default value is 10000, i.e. 10 sec. (If this pause is too short, engines not implementing ping will sometimes send the last move of their previous game only when a new game has started, at which time the move is illegal, and causes them to forfeit the game.)

/fd or /firstDirectory dir
/sd
or /secondDirectory dir
/fcp
or /firstChessProgram command
/scp
or /secondChessProgram command

Names of the chess engines and working directories in which they are to be run. The second chess engine is started only in Two Machines (match) mode. These arguments are parsed as filenames; that is, the \ character is interpreted literally, not as a C-style escape.

The dir argument specifies the initial working directory for the chess engine. It should usually be the directory where the engine and its working files are installed. If dir is not an absolute pathname, it is interpreted relative to the directory from which WinBoard.exe itself was loaded. The dir argument is ignored if the chess engine is being run on a remote machine (see firstHost and secondHost below). The default value for dir "", meaning that the chess engine is expected to be installed in the same directory as WinBoard.

The command argument is actually the command line to the chess engine, so if the engine itself needs command line arguments, you can include them by enclosing command in single or double quotes. If the engine name or an engine argument has a space in it, use single quotes around the whole command, and inside them use double quotes around each item that contains spaces. If the engine name has more than one period in it (for example, QChess1.5.exe), you must include the ".exe" extension; otherwise you can leave it out. The default value for command is "", which brings up the startup dialog to ask which engines you want.

Examples:

WinBoard /cp /fd="C:\Program Files\Crafty" /fcp=WCrafty-15.12.exe /scp=GNUChess
WinBoard /cp /fd="C:\Miracle Games" /fcp='"Miracle Chess.exe" /wow' /scp=GNUChess

The basic rule is thus that what is inside the quotes delimiting the argument to /fcp and /scp, all goes to the engine, and is ignored by WinBoard. WinBoard 4.3.13 and later, however, knows an exception to this: If, within the quotes, the word WBopt appears, everything that follows this word will be interpreted as a WinBoard argument, in stead of being passed to the engine on startup of the latter. (The WBopt itself is also not passed to the engine.) This possibility of hiding WinBoard arguments in the engine command is provided in order to create options that follow the engine in a tournament, when a tournament manager like PSWBTM is used to invoke WinBoard. Because, in order to apply to a given engine, some options need to know if they apply to first or second engine, which might vary during the tournament, options hidden inside the engine command-line can contain %s which will be replaced at the time the option is used by first or second, as applicable.

Examples:

WinBoard /cp /fd="C:\Engines\Crafty" /fcp=WCrafty-15.12 WBopt /%sTimeOdds=2 /scp=GNUChess

Meaning that Crafty will have to play with half the time GNUChess will get.





/fh or /firstHost host
/sh
or /secondHost host

Hosts on which the chess engines are to run. The default for each is "localhost". If you specify another host, WinBoard uses rsh to run the chess program there. The /fd and /sd flags do not work in conjunction with these flags; if you need a remote chess engine to run somewhere other than your default login directory on the remote machine, you will have to include a "cd" command in the argument to /fcp or /scp.

/firstInitString or /initString string
/secondInitString string

The strings that are sent to initialize the chess engines. Default: "new\nrandom\n". The "\n" sequences represent newlines. You can type "\n" on the command line or in a settings file, and WinBoard will convert it to a newline.

All chess engines require the "new" command to start a new game.

You can remove the "random" command if you like; including it causes GNU Chess to randomize its move selection slightly so that it doesn't play the same moves in every game. Even without "random", GNU Chess randomizes its choice of moves from its opening book. You can also try adding other commands to the initString; see the GNU Chess documentation (gnuchess.txt) for details. Crafty ignores the "random" command; see its documentation for the commands it accepts.

/firstComputerString string
/secondComputerString string

If the chess engine is playing against another computer program (whether locally or on a chess server), by default the command "computer\n" is sent to it. Some chess engines change their playing style when they receive this command. If you do not want the engine to know when it is playing another computer, you can set the string to "".

Note that the computer string is sent to the engine after most other initialization commands, and is thus ideal for hiding a WinBoard-protocol command in that should be sent only to one engine, when the WinBoard option that normally specifies this command cannot be differentiated by engine, but s always sent to both engines. E.g. if you want one of the engines to ponder, and the other not. Because it is sent last, in can overrule earlier commands.

/fb or /xfb, or /firstPlaysBlack true|false

In games between two chess programs, the firstChessProgram normally plays white. (This is a change from earlier versions of WinBoard.) If this option is True, firstChessProgram plays black. In a multi-game match, this option affects the colors only for the first game; they still alternate in subsequent games.

/reuse or /xreuse, or /reuseFirst true|false
/reuse2
or /xreuse2, or /reuseSecond true|false

If this option is True (the default), WinBoard uses the same chess engine process repeatedly when playing multiple games. If the option is False, WinBoard kills off the chess engine after every game and starts a fresh one for the next game. Starting a fresh chess engine can be slow, so it is not recommended. However, some chess engines may not work properly when reused, such as versions of Crafty earlier than 12.0.

/firstProtocolVersion ver
/secondProtocolVersion ver

This option specifies which version of the chess engine communication protocol to use. By default, version-number is 2. In version 1, the "protover" command is not sent to the engine; since version 1 is a subset of version 2, nothing else changes. Other values for version-number are not supported.

/firstScoreAbs true|false
/secondScoreAbs true|false

If this option is true, the score reported by the engine is taken to be that in favor of white, even when the engine plays black. Important when winboard uses the score for adjudications, or in PGN reporting. This can be a useful option in combination with WBopt in the engine command-line, see under /fcp.

/niceEngines priority

This option allows you to lower the priority of the engine processes, so that the generally insatiable hunger for CPU time of chess engines does not interfere so much with smooth operation of WinBoard (or the rest of your system). Try priority = 10 or even 20 to lower the priority of the engines. Negative values could increase the engine priority, which is not recommended.

/firstOptions string
/secondOptions string

The given string is a comma-separated list of (option name, option value) pairs, like the following example: style=Karpov,blunder rate=0. If the options announced by the engine at startup through the feature commands of WinBoard protocol matches one of the option names (i.e. style or blunder rate), it would be set to the given value (i.e. Karpov or 0) through a corresponding option command to the engine. This provided that the type of the value (text or numeric) matches as well.

/firstNeedsNoncompliantFEN string
/secondNeedsNoncompliantFEN string

The castling rights and e.p. fields of the FEN sent to the mentioned engine with the setboard command will be replaced by the given string. This can for instance be used to run engines that do not understand Chess960 FENs in variant fischerandom, to make them at least understand the opening position, through setting the string to KQkq -. (Note you also have to give the e.p. field!) Other possible applications are to provide work-arounds for engines that want to see castling and e.p. fields in variants that do not have castling or e.p. (shatranj, courier, xiangqi, shogi) so that WinBoard would normally omit them (string = - -, or to add variant-specific fields that are not yet supported by WinBoard (e.g. to indicate the number of checks in 3check).

xboard-4.9.1/winboard/help/html/09.htm0000644000175000001440000000720712717001265014373 00000000000000 ICS Interaction Context Menu

ICS Interaction Context Menu

To see this menu, press the right mouse button anywhere in the output (upper) pane of the ICS Interaction window. Pressing the right mouse button in the input (lower) pane gives a standard editing context menu, not described here. Use the help command on ICS to learn what these commands mean.

You can customize the lower part of this menu (below the Paste option) by setting the icsMenu option. The easiest way to accomplish this is to edit your settings file with Notepad or another plain text editor. Sorry, there is no graphical user interface for customizing the menu.

Copy and Paste

Copies the current selection to the clipboard, then pastes it to the input box. As a shortcut to this function, you can press the middle mouse button (if you have one), or Shift plus the right mouse button.

Copy

Copies the current selection to the clipboard.

Paste

Pastes the clipboard contents to the input box.

Who

Sends the command who to ICS.

Players

Sends the command players to ICS.

Games

Sends the command games to ICS.

Sought

Sends the command sought to ICS.

Tell (name)

Inserts tell name into the input box. The string name is the current selection if it is not empty. Otherwise name is the word surrounding the mouse position, where a word is a string of letters, digits, or hyphens (-), such as an ICS user handle or game number.

Open Chat Box (name)

Causes WinBoard to open a new Chat Window, with name in the chat Partner field, where name is as defined above.

Message (name)

Inserts message name into the input box, where name is as defined above.

Finger (name)

Sends the command finger name to ICS, where name is as defined above.

Vars (name)

Sends the command vars name to ICS, where name is as defined above.

Observe (name)

Sends the command observe name to ICS, where name is as defined above. Here name can be either a user handle or a game number.

Match (name)

Sends the command match name to ICS, where name is as defined above.

Play (name)

Sends the command play name to ICS, where name is as defined above. Here name can be either a user handle or a seek ad number.

xboard-4.9.1/winboard/help/html/03.htm0000644000175000001440000002274612717001265014372 00000000000000 File Menu

File Menu

New Game (former Reset)

Resets WinBoard and the chess engine (if any) to the beginning of a new chess game. In Internet Chess Server mode, clears the current state of WinBoard, then resynchronizes with ICS by sending a refresh command. If you want to stop playing, observing, or examining a game on ICS, use an appropriate command from the Action menu, not New Game.

New Shuffle Game

Brings you to a dialog box where you can enter the number of an opening setup for shuffle variants like FRC, or ask for a random number. After pressing OK, a new game is set up, using this position. The chosen position will continue to be used on every subsequent New Game, even if you are playing a variant that normally is not shuffled, until you select a new variant through the New Variant menu. If you enter -1 for the position number, new random number is drawn before every game.

The type of shuffling that is done in reaction to a given position number obeys restrictions that depend on the selected variant. In variants that allow castling, Kings remain on the central files, Rooks in the corners. In games with FRC-style castlings, the King starts between the Rooks, but apart from that they could be anywhere. In games without castling, there are no restrictions on King and Rook placement. Pairs of color-bound pieces (such as Bishops) will be placed on oppositely colored squares. In ICS mode this feature has no effect, as the ICS determines the starting position.

New Variant

Select a new variant. There are controls to enter a board width, board height and holdings size, but normally you leave them at -1, which means the default value for the selected variant will be used (e.g. 8x8 for normal Chess, 9x10 for xiangqi, 10x8 for capablanca, holdings for 5 pieces in crazyhouse). You can set a deviating value for each of the three parameters (e.g. to play a crazyhouse version of xiangqi or capablanca you would set the holdings to 6 or 7). If the board width deviates from the default, the game will start with an empty board.

The variant will remain in force until you select a new one; i.e. subsequent New Game commands will start a new game of the same variant. In ICS mode this command has no effect, as the ICS determines which variant will be played.

Load Game

Plays a game from a record file. A popup dialog prompts you for the filename. If the file contains more than one game, a second popup dialog displays a list of games (with information drawn from their PGN tags, if any), and you can select the one you want.

The game file parser will accept PGN (portable game notation), or in fact almost any file that contains moves in algebraic notation. Notation of the form P@f7 is accepted for piece-drops in bughouse games; this is a nonstandard extension to PGN. If the file includes a PGN position (FEN tag), or a WinBoard position diagram bracketed by "[--" and "--]" before the first move, the game starts from that position. Text enclosed in parentheses, square brackets, or curly braces is assumed to be commentary and is displayed in a pop-up window. Any other text in the file is ignored. PGN variations (enclosed in parentheses) appear in the comment popup amongst genuine comments; to walk the variation tree, you have to right-click them in this window. This will cause WinBoard to load them as the current line. You can revert to the previous line with the Revert command. (Beware! Currently WinBoards PGN parser is limited to 3 levels of nesting in variations.) The nonstandard PGN tag [Variant "varname"] functions similarly to the variant command-line option, allowing games in certain chess variants to be loaded. Note that it has to appear before any FEN tag! There is also a heuristic to recognize chess variants from the Event tag, by looking for the strings that the Internet Chess Servers put there when saving variant ("wild") games.

Load Next Game

Loads the next game from the last game record file you loaded.

Load Previous Game

Loads the previous game from the last game record file you loaded. Not available if the last game was loaded from a pipe.

Reload Same Game

Reloads the last game you loaded. Not available if the last game was loaded from a pipe.

Save Game

Appends a record of the current game to a file. A popup dialog prompts you for the filename. If the game did not begin with the standard starting position, the game file includes the starting position used. Game files are saved in the PGN (portable game notation) format, unless the oldSaveStyle option is True, in which case they are saved in an older format that is specific to WinBoard. Both formats are human-readable, and both can be read back by the Load Game command. Notation of the form P@f7 is generated for piece-drops in bughouse games; this is a nonstandard extension to PGN.

Copy Game To Clipboard

Copies the record of the current game to the Windows clipboard in PGN (portable game notation) format.

Paste Game From Clipboard

Plays a game from the Windows clipboard. See Load Game for a discussion of game file format and parser behavior.

Load Position

Sets up a position from a position file. A popup dialog prompts you for the filename. Position files must be in FEN (Forsythe-Edwards notation), or in the format that the Save Position command writes when oldSaveStyle is turned on. Note that many variants require an extension of the original FEN standard. WinBoard tries to be as universal as possible in understanding FENs when different standards are raound, but has to make a choice when writing them. In FRC is uses Shredder-FEN (Haha castling notation) , but it understands KQkq as the outermost Rook, so it also reads X-FEN. In Crazyhouse / Bughouse it appends the holdings immediately behind the board info between brackets [], but on input it also understands bFEN (which puts it behind a slash / as if it were an extra board rank). It uses a tilde ~ behind a piece to indicate it is really a promoted Pawn (like bFEN). In Shogi the holdings are printed like in Crazyhouse, but promoted pieces are represented by a plus sign + before the letter of the original piece. Letters used for the pieces can be set with the /pieceToCharTable command-line option.

Load Next Position

Loads the next position from the last position file you loaded.

Load Previous Position

Loads the previous position from the last position file you loaded. Not available if the last position was loaded from a pipe.

Reload Same Position

Reloads the last position you loaded. Not available if the last position was loaded from a pipe.

Save Position

Appends a diagram of the current position to a file. A popup dialog prompts you for the filename. Positions are saved in FEN (Forsythe-Edwards notation) format, unless the oldSaveStyle option is True, in which case they are saved in an older, human-readable format that is specific to WinBoard. Both formats can be read back by the Load Position command; however, currently Load Position can load only the first position in a file.

Save Diagram

Writes the current board display as a bitmap file. With this command you can use WinBoard as a diagram generator.

Copy Position To Clipboard

Places a diagram of the current position (in Forsythe-Edwards notation) into the Windows clipboard.

Paste Position From Clipboard

Sets up a position from the Windows clipboard. Position must be in FEN (Forsythe-Edwards notation). Puts WinBoard into Edit Game mode if it was not there already.

Exit

Exits from WinBoard.

xboard-4.9.1/winboard/help/html/13.htm0000644000175000001440000000556512717001265014373 00000000000000 UCI Engine Support

UCI Engine Support

/fUCI or /firstIsUCI true|false

/sUCI or /secondIsUCI true|false

Indicates if the mentioned engine executable file is an UCI engine, and should be run with the aid of the Polyglot adapter rather than directly. WinBoard will then pass the other UCI options and engine name to Polyglot through a .ini temporary file ceated for the purpose.

/PolyglotDir filename

Gives the name of the folder in which Polyglot is installed.

/usePolyglotBook true|false

Specifies if the Polygot book should be used.

/PolyglotBook filename

Gives the filename of the opening book that Polyglot should use.

/fNoOwnBookUCI or /firstXBook or /firstHasOwnBookUCI true|false

/sNoOwnBookUCI or /secondXBook or /secondHasOwnBookUCI true|false

Indicates if the mentioned engine lacks an opening book or not. Engines that have an own opening book will not use the GUI book (as given by /polyglotBook) even if /usePolyglotBook is set to true.

/defaultHashSize number

Sets the size of the hash table to number MegaBytes.

/defaultCacheSizeEGTB number

Sets the size of the EGTB cache to number MegaBytes.

/defaultPathEGTB filename

Gives the name of the folder where the end-game tablebases are installed.

xboard-4.9.1/winboard/help/html/10.htm0000644000175000001440000000163012717001265014355 00000000000000 Buttons

BUTTONS

<<

Same as Back to Start.

<

Same as Backward.

P

Same as Pause. The button label changes to C while WinBoard is pausing.

>

Same as Forward.

>>

Same as Forward to End.

Note that using the mouse wheel has the same effect as using the < or > button.

xboard-4.9.1/winboard/help/html/18.htm0000644000175000001440000002515412717001265014374 00000000000000 Other Options

Other Options

/ncp or /xncp, or /noChessProgram true|false

If this option is True, WinBoard acts as a passive chessboard; it does not start a chess program or connect to ICS. This option also sets clockMode to False. Default: False.

/mode or /initialMode modename

If this option is given, WinBoard selects the given modename from the Mode menu after starting and (if applicable) processing the loadGameFile or loadPositionFile option. Default: "". Other supported values are TwoMachines, AnalyzeFile, Analysis, MachineWhite, MachineBlack, EditGame, EditPosition, and Training.

/variant varname

Activates preliminary, partial support for playing chess variants against a local engine or editing variant games. This flag is not needed in ICS mode. Recognized variant names are:

normalNormal chess
wildcastleShuffle chess, king can castle from d file
nocastleShuffle chess, no castling allowed
fischerandomFischer Random shuffle chess
bughouseBughouse, ICC/FICS rules
crazyhouseCrazyhouse, ICC/FICS rules
losersLose all pieces or get mated (ICC wild 17)
suicideLose all pieces including king (FICS)
giveawayTry to have no legal moves (ICC wild 26)
twokingsWeird ICC wild 9
kriegspielOpponent's pieces are invisible
atomicCapturing piece explodes (ICC wild 27)
3checkWin by giving check 3 times (ICC wild 25)
xiangqiChinese Chess (on a 9x10 board)
shogiJapanese Chess (on a 9x9 board, with piece drops)
capablancaCapablanca Chess (10x8 board, with Archbishop and Chancellor pieces)
gothicsimilar, with a better initial position
caparandomAn FRC-like version of Capablanca Chess (10x8 board)
janusA game with two Archbishops (10x8 board)
shatranjAncient Arabic Chess, with Elephants and General replacing B and Q.
courierMedieval intermedite between shatranj and modern Chess (on 12x8 board)
falconA patented Chess variant with two Falcon pieces (10x8) board
berolinaPawns capture straight ahead, and move diagonal (legality testing off!)
cylinderPieces wrap around the board, as if it were a cylinder (legality testing off!)
fairyA variant in which all pieces known to WinBoard can participate
knightmateKing moves a Knight, and vice versa
makrukThai Chess (shatranj-like, pawns promote on 6th rank)
superSuperchess, a shuffle variant with B+N, R+N, K+N and Q+N compound
greatGreat Shatranj, whithout sliders, on 10x8 board (legality testing off!)

In the shuffle variants, WinBoard does now shuffle the pieces, although you can still do it by hand using Edit Position. Some variants are supported only in ICS mode, including bughouse, and kriegspiel. The winning/drawing conditions in crazyhouse (off-board interposition on mate) is not fully understood, but losers, suicide, giveaway, atomic, and 3check should be OK. In crazyhouse, WinBoard now does keep track of off-board pieces. In shatranj it does implement the baring rule when mate detection is switched on. In xiangqi it does implement the rules for perpetual checking and chasing (in Two-Machines mode).

/shuffleOpenings

This volatile option will cause shuffling of all pieces on the back rank, even in variants that normally have a fixed opening setup, according to the setting of the /defaultFrcPosition. It will remain in effect untill you select a new variant. In variants with normal castling, corner Rooks and King will be exempted from shuffling. Color-bound pieces such as Bishops will be kept on differently colored squares.

/boardHeight height

Allows you to set a non-standard number of board ranks in any variant. If the height is given as -1, the default height for the variant is used.

/boardWidth width

Allows you to set a non-standard number of board files in any variant. If the width is given as -1, the default width for the variant is used. Width a non-standard width, the initial position will always be an empty board, as the usual opening array will not fit.

/holdingsSize size

Allows you to set a non-standard size for the holdings in any variant. If the size is given as -1, the default holdings size for the variant is used. The first size piece types will go into the holdings on capture, and you will be able to drop them on the board in stead of making a normal move. If size equals 0, there will be no holdings.

/defaultFrcPosition number

Specifies the number of the opening position in shuffle games like FRC. A value of -1 means the position is randomly generated by WinBoard.

/pieceToCharTable characterstring

The characters that are used to represent the piece types WinBoard knows in FEN diagrams and SAN moves. The string argument has to have an even length (or it will be ignored), as white and black pieces have to be given separately (in that order). The last letter for each color will be the King. The letters before that will be PNBRQ and then a whole host of fairy pieces in an order that has not fully crystallized yet (currently FEACWMOHIJGDVSLU, F=Ferz, Elephant, A=Archbishop, C=Chancellor, W=Wazir, M=Commoner, O=Cannon, H=Nightrider). You should list at least all pieces that occur in the variant you are playing. If you have less than 44 characters in the string, the pieces not mentioned will get assigned a period, and you will not be able to distinguish them in FENs. You can also explicitly assign pieces a period, in which case they will not be counted in deciding which captured pieces can go into the holdings.

A tilde as a piece name does mean this piece is used to represent a promoted Pawn in Crazyhouse-like games, i.e. on capture it turns back onto a Pawn. A + similarly indicate the piece is a Shogi-style promoted piece, that should revert to its non-promoted version on capture (rather than to a Pawn).

Note that promoted pieces are represented by pieces 11 further in the list.

You should not have to use this option often: each variant has its own default setting for the piece representation in FEN, which should be sufficient in normal use.

/rsh or /remoteShell shellname

Name of the command used to run programs remotely. If this option is not given, WinBoard uses its own built-in implementation of the Unix rcmd protocol (the protocol used by rsh).

/ruser or /remoteUser username

User name on the remote system when running programs with the remoteShell. The default is your local user name.

/userName username

Name under which the Human player will be listed in the PGN file. (Default is the login name on your local computer.)

/delayBeforeQuit number

/delayAfterQuit number

These options specify how long WinBoard has to wait before sending a termination signal to rogue engine processes, that do not want to react to the quit command. The second one determines the pause after killing the engine, to make sure it dies.

/ini or /settingsFile filename
@ file-name

See Settings.

xboard-4.9.1/winboard/wclipbrd.h0000644000175000001440000000260312717001265013507 00000000000000/* * wclipbrd.c -- Clipboard routines for WinBoard * * Copyright 2000, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free * Software Foundation, Inc. * * Enhancements Copyright 2005 Alessandro Scotti * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ VOID CopyFENToClipboard(); VOID CopyGameToClipboard(); VOID CopyGameListToClipboard(); int CopyTextToClipboard(char *text); VOID PasteFENFromClipboard(); VOID PasteGameFromClipboard(); int PasteTextFromClipboard(char **text); VOID DeleteClipboardTempFiles(); VOID PasteGameOrFENFromClipboard(); /* [AS] */ xboard-4.9.1/xboard-config.desktop0000644000175000001440000000207512717001265014043 00000000000000[Desktop Entry] Name=Xboard Name[af]=X-bord Name[ar]=Xboard Name[bg]=Xboard Name[bn]=এক্সবোর্ড Name[cs]=Xboard Name[da]=Xboard Name[de]=Xboard Name[el]=Xboard Name[es]=Xboard Name[et]=Xboard Name[fi]=XBoard Name[fr]=XBoard Name[gl]=Xboard Name[hi]=एक्सबोर्ड Name[hr]=Xboard Name[hu]=XBoard Name[it]=XBoard Name[ja]=Xboard Name[km]=XBoard Name[ko]=X보드 Name[lt]=Xboard Name[mr]=Xबोर्ड Name[nb]=Xboard Name[nl]=Xboard Name[pa]=Xboard Name[pl]=Xboard Name[pt]=Xboard Name[pt_BR]=Xboard Name[ru]=Xboard Name[sk]=Xboard Name[sv]=Xboard Name[ta]=பெயர்(எக்ஸ்போர்ட்.டெஸ்க்டாப்): எக்ஸ்போர்ட் Name[th]=Xboard Name[tr]=XBoard Name[uk]=Xboard Name[vi]=XBoard Name[xh]=Ibhodi ye-X Name[zh_CN]=X 国际象棋 Name[zh_TW]=Xboard 國際象棋 Name[zu]=I-Xboard Comment=Start preconfigured XBoard GenericName=X-windows chess board Type=Application Categories=Game;BoardGame; Exec=xboard -opt %f Icon=xboard NoDisplay=true Terminal=false MimeType=application/x-xboard-opt; xboard-4.9.1/DIFFSTAT0000644000175000001440000073026112747543737011104 00000000000000** Version 4.9.1 ** (git diff -b --stat --summary -M v4.9.0 HEAD) backend.c | 14 +- configure.ac | 2 +- dialogs.c | 7 +- gtk/xboard.c | 1 - moves.c | 15 + po/da.po | 856 ++++++++++++++++++++++++++--------------------------- po/de.po | 856 ++++++++++++++++++++++++++--------------------------- po/es.po | 856 ++++++++++++++++++++++++++--------------------------- po/fr.po | 856 ++++++++++++++++++++++++++--------------------------- po/it.po | 856 ++++++++++++++++++++++++++--------------------------- po/nl.po | 856 ++++++++++++++++++++++++++--------------------------- po/pl.po | 856 ++++++++++++++++++++++++++--------------------------- po/ru.po | 856 ++++++++++++++++++++++++++--------------------------- po/sr.po | 856 ++++++++++++++++++++++++++--------------------------- po/tr.po | 856 ++++++++++++++++++++++++++--------------------------- po/uk.po | 856 ++++++++++++++++++++++++++--------------------------- po/vi.po | 856 ++++++++++++++++++++++++++--------------------------- po/xboard.pot | 858 +++++++++++++++++++++++++++--------------------------- po/zh_CN.po | 856 ++++++++++++++++++++++++++--------------------------- po/zh_HK.po | 856 ++++++++++++++++++++++++++--------------------------- po/zh_TW.po | 856 ++++++++++++++++++++++++++--------------------------- winboard/config.h | 6 +- 22 files changed, 6881 insertions(+), 6862 deletions(-) ** Version 4.9.0 ** (git diff -b --stat --summary -M v4.8.0 HEAD) COPYRIGHT | 2 +- Makefile.am | 72 +- args.h | 73 +- autogen.sh | 3 +- backend.c | 1171 ++++++-- backend.h | 12 +- backendz.h | 3 +- board.c | 195 +- board.h | 3 +- book.c | 75 +- childio.c | 3 +- childio.h | 3 +- cmail.in | 2 +- common.h | 51 +- conf/chu | 2 +- conf/shogi | 4 + configure.ac | 30 +- copyright.texi | 2 +- dialogs.c | 505 +++- dialogs.h | 19 +- draw.c | 301 +- draw.h | 6 +- engine-intf.html | 23 +- engineoutput.c | 37 +- engineoutput.h | 5 +- evalgraph.c | 3 +- evalgraph.h | 3 +- frontend.h | 9 +- gamelist.c | 5 +- gtk/xboard.c | 237 +- gtk/xboard.h | 5 +- gtk/xengineoutput.c | 3 +- gtk/xoptions.c | 304 +- gtk/xtimer.c | 6 +- history.c | 3 +- lists.c | 3 +- lists.h | 3 +- menus.c | 58 +- menus.h | 6 +- moves.c | 301 +- moves.h | 14 +- nengineoutput.c | 3 +- nevalgraph.c | 3 +- ngamelist.c | 5 +- nhistory.c | 2 +- osxapp/Info.plist.in | 2 +- osxapp/OSX-theme/gtk-2.0/assets/handle.png | Bin 186 -> 0 bytes .../gtk-2.0/assets/l-checkbox-checked-18.png | Bin 814 -> 0 bytes .../assets/l-checkbox-checked-insensitive-18.png | Bin 639 -> 0 bytes .../gtk-2.0/assets/l-checkbox-unchecked-18.png | Bin 413 -> 0 bytes .../assets/l-checkbox-unchecked-insensitive-18.png | Bin 356 -> 0 bytes .../gtk-2.0/assets/l-radio-selected-18.png | Bin 890 -> 0 bytes .../assets/l-radio-selected-insensitive-18.png | Bin 643 -> 0 bytes .../gtk-2.0/assets/l-radio-unselected-18.png | Bin 606 -> 0 bytes .../assets/l-radio-unselected-insensitive-18.png | Bin 546 -> 0 bytes .../gtk-2.0/assets/notebook-gap-bottom.png | Bin 159 -> 0 bytes .../OSX-theme/gtk-2.0/assets/notebook-gap-left.png | Bin 85 -> 0 bytes .../gtk-2.0/assets/notebook-gap-right.png | Bin 84 -> 0 bytes .../OSX-theme/gtk-2.0/assets/notebook-gap-top.png | Bin 158 -> 0 bytes osxapp/OSX-theme/gtk-2.0/assets/notebook.png | Bin 227 -> 0 bytes osxapp/OSX-theme/gtk-2.0/assets/null.png | Bin 1164 -> 0 bytes .../OSX-theme/gtk-2.0/assets/scroll-background.png | Bin 155 -> 0 bytes .../OSX-theme/gtk-2.0/assets/slider-horizontal.png | Bin 828 -> 0 bytes .../OSX-theme/gtk-2.0/assets/tab-bottom-active.png | Bin 924 -> 0 bytes osxapp/OSX-theme/gtk-2.0/assets/tab-bottom.png | Bin 888 -> 0 bytes .../OSX-theme/gtk-2.0/assets/tab-left-active.png | Bin 451 -> 0 bytes osxapp/OSX-theme/gtk-2.0/assets/tab-left.png | Bin 763 -> 0 bytes .../OSX-theme/gtk-2.0/assets/tab-right-active.png | Bin 453 -> 0 bytes osxapp/OSX-theme/gtk-2.0/assets/tab-right.png | Bin 787 -> 0 bytes osxapp/OSX-theme/gtk-2.0/assets/tab-top-active.png | Bin 920 -> 0 bytes osxapp/OSX-theme/gtk-2.0/assets/tab-top.png | Bin 897 -> 0 bytes osxapp/OSX-theme/gtk-2.0/assets/toolbar.png | Bin 214 -> 0 bytes osxapp/OSX-theme/gtk-2.0/gtkrc | 798 ----- osxapp/XBoard.gtklauncher | 5 +- osxapp/gtk2-themes/Mac/gtk-2.0/gtkrc | 672 +++++ osxapp/gtkrc | 11 +- osxapp/info.command | 2 - osxapp/logos/207.99.83.228.png | Bin 16710 -> 19696 bytes .../logos/{69.36.243.188.png => freechess.org.png} | Bin osxapp/man.command | 2 - osxapp/osx-localization/.DS_Store | Bin 6148 -> 0 bytes .../da.lproj/GtkosxApplication.strings | Bin 1056 -> 0 bytes .../de.lproj/GtkosxApplication.strings | Bin 1104 -> 0 bytes .../en.lproj/GtkosxApplication.strings | Bin 1066 -> 0 bytes .../es.lproj/GtkosxApplication.strings | Bin 1078 -> 0 bytes .../it.lproj/GtkosxApplication.strings | Bin 1116 -> 0 bytes .../nl.lproj/GtkosxApplication.strings | Bin 1100 -> 0 bytes .../pl.lproj/GtkosxApplication.strings | Bin 1084 -> 0 bytes .../ru.lproj/GtkosxApplication.strings | Bin 1088 -> 0 bytes .../tr.lproj/GtkosxApplication.strings | Bin 1038 -> 0 bytes .../uk.lproj/GtkosxApplication.strings | Bin 610 -> 0 bytes .../vi.lproj/GtkosxApplication.strings | Bin 1064 -> 0 bytes .../zh_CN.lproj/GtkosxApplication.strings | Bin 944 -> 0 bytes .../zh_HK.lproj/GtkosxApplication.strings | Bin 934 -> 0 bytes .../zh_TW.lproj/GtkosxApplication.strings | Bin 944 -> 0 bytes osxapp/pango.modules | 5 - osxapp/{ => themes}/default/eo_Analyzing.png | Bin osxapp/{ => themes}/default/eo_Black.png | Bin osxapp/{ => themes}/default/eo_Clear.png | Bin osxapp/{ => themes}/default/eo_Ponder.png | Bin osxapp/{ => themes}/default/eo_Thinking.png | Bin osxapp/{ => themes}/default/eo_Unknown.png | Bin osxapp/{ => themes}/default/eo_White.png | Bin osxapp/{ => themes}/default/icon_black.png | Bin osxapp/{ => themes}/default/icon_white.png | Bin parser.c | 295 +- parser.h | 7 +- pgntags.c | 7 +- png/{xqboard.png => xqboard-9x10.png} | Bin png/{xqwood.png => xqwood-9x10.png} | Bin po/LINGUAS | 2 +- po/da.po | 1598 +++++----- po/de.po | 2568 ++++++++-------- po/es.po | 1600 +++++----- po/fr.po | 3173 ++++++++++++++++++++ po/it.po | 1586 +++++----- po/lng2po.sh | 2 +- po/nl.po | 1691 ++++++----- po/pl.po | 1591 +++++----- po/ru.po | 2596 ++++++++-------- po/sr.po | 3170 +++++++++++++++++++ po/tr.po | 1576 +++++----- po/uk.po | 1606 +++++----- po/vi.po | 1586 +++++----- po/xboard.pot | 1571 +++++----- po/zh_CN.po | 3136 ++++++++++--------- po/zh_HK.po | 1587 +++++----- po/zh_TW.po | 1587 +++++----- svg/BlackAxe.svg | 107 + svg/BlackButterfly.svg | 173 ++ svg/BlackCamel.svg | 109 + svg/BlackCopper.svg | 109 + svg/BlackCub.svg | 172 ++ svg/BlackDragon.svg | 119 + svg/BlackDuck.svg | 112 + svg/BlackFlag.svg | 139 + svg/BlackGnu.svg | 154 + svg/BlackHat.svg | 112 + svg/BlackIron.svg | 163 + svg/BlackLShield.svg | 176 ++ svg/BlackLeft.svg | 173 ++ svg/BlackPegasus.svg | 142 + svg/BlackRShield.svg | 177 ++ svg/BlackRight.svg | 172 ++ svg/BlackTower.svg | 135 + svg/BlackUnicorn.svg | 37 +- svg/BlackViking.svg | 113 + svg/BlackWizard.svg | 164 + svg/BlackWolf.svg | 86 + svg/BlackZebra.svg | 118 + svg/WhiteAxe.svg | 85 + svg/WhiteButterfly.svg | 157 + svg/WhiteCamel.svg | 110 + svg/WhiteClaw.svg | 24 +- svg/WhiteCopper.svg | 100 + svg/WhiteCub.svg | 171 ++ svg/WhiteDolphin.svg | 31 +- svg/WhiteDragon.svg | 105 + svg/WhiteDuck.svg | 112 + svg/WhiteFlag.svg | 103 + svg/WhiteGnu.svg | 176 ++ svg/WhiteHSword.svg | 19 +- svg/WhiteHat.svg | 112 + svg/WhiteIron.svg | 171 ++ svg/WhiteLShield.svg | 170 ++ svg/WhiteLeft.svg | 185 ++ svg/WhiteLeopard.svg | 91 +- svg/WhiteLion.svg | 85 +- svg/WhitePegasus.svg | 112 + svg/WhitePromoHSword.svg | 18 +- svg/WhitePromoSword.svg | 18 +- svg/WhiteRShield.svg | 171 ++ svg/WhiteRight.svg | 186 ++ svg/WhiteSword.svg | 29 +- svg/WhiteTower.svg | 138 + svg/WhiteUnicorn.svg | 37 +- svg/WhiteViking.svg | 109 + svg/WhiteWizard.svg | 158 + svg/WhiteWolf.svg | 71 + svg/WhiteZebra.svg | 126 + themes/shogi/{BlackJewled.svg => BlackZebra.svg} | 0 themes/shogi/{WhiteJewled.svg => WhiteZebra.svg} | 0 uci.c | 3 +- usounds.c | 5 +- usystem.c | 49 +- usystem.h | 3 +- winboard/bitmaps/camel49o.bmp | Bin 0 -> 454 bytes winboard/bitmaps/camel49s.bmp | Bin 0 -> 454 bytes winboard/bitmaps/camel49w.bmp | Bin 0 -> 454 bytes winboard/bitmaps/camel72o.bmp | Bin 0 -> 926 bytes winboard/bitmaps/camel72s.bmp | Bin 0 -> 926 bytes winboard/bitmaps/camel72w.bmp | Bin 0 -> 926 bytes winboard/bitmaps/wolf49o.bmp | Bin 0 -> 454 bytes winboard/bitmaps/wolf49s.bmp | Bin 0 -> 454 bytes winboard/bitmaps/wolf49w.bmp | Bin 0 -> 454 bytes winboard/bitmaps/wolf72o.bmp | Bin 0 -> 926 bytes winboard/bitmaps/wolf72s.bmp | Bin 0 -> 926 bytes winboard/bitmaps/wolf72w.bmp | Bin 0 -> 926 bytes winboard/bitmaps/zebra49o.bmp | Bin 0 -> 454 bytes winboard/bitmaps/zebra49s.bmp | Bin 0 -> 454 bytes winboard/bitmaps/zebra72o.bmp | Bin 0 -> 926 bytes winboard/bitmaps/zebra72s.bmp | Bin 0 -> 926 bytes winboard/config.h | 6 +- winboard/defaults.h | 7 +- winboard/help.c | 2 +- winboard/help/html/24.htm | 2 +- winboard/jaws.c | 5 +- winboard/language.txt | 2 +- winboard/wchat.c | 3 +- winboard/wclipbrd.c | 7 +- winboard/wclipbrd.h | 3 +- winboard/wedittags.c | 3 +- winboard/wengineoutput.c | 3 +- winboard/wevalgraph.c | 3 +- winboard/wgamelist.c | 3 +- winboard/whistory.c | 3 +- winboard/winboard.c | 136 +- winboard/winboard.h | 3 +- winboard/winboard.rc | 56 +- winboard/wlayout.c | 3 +- winboard/woptions.c | 17 +- winboard/woptions.h | 3 +- winboard/wsettings.c | 31 +- winboard/wsockerr.c | 2 +- winboard/wsockerr.h | 2 +- xaw/xboard.c | 27 +- xaw/xboard.h | 3 +- xaw/xengineoutput.c | 2 +- xaw/xgamelist.c | 2 +- xaw/xgamelist.h | 2 +- xaw/xhistory.c | 2 +- xaw/xhistory.h | 2 +- xaw/xoptions.c | 32 +- xboard.conf | 11 +- xboard.texi | 1495 ++++++--- xboard2.h | 3 +- zippy.c | 2 +- zippy.h | 2 +- 238 files changed, 31374 insertions(+), 14328 deletions(-) delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/handle.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-checked-18.png delete mode 100644 osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-checked-insensitive-18.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-unchecked-18.png delete mode 100644 osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-unchecked-insensitive-18.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/l-radio-selected-18.png delete mode 100644 osxapp/OSX-theme/gtk-2.0/assets/l-radio-selected-insensitive-18.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/l-radio-unselected-18.png delete mode 100644 osxapp/OSX-theme/gtk-2.0/assets/l-radio-unselected-insensitive-18.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-bottom.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-left.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-right.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-top.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/notebook.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/null.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/scroll-background.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/slider-horizontal.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-bottom-active.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-bottom.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-left-active.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-left.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-right-active.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-right.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-top-active.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-top.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/assets/toolbar.png delete mode 100755 osxapp/OSX-theme/gtk-2.0/gtkrc create mode 100644 osxapp/gtk2-themes/Mac/gtk-2.0/gtkrc delete mode 100755 osxapp/info.command rename osxapp/logos/{69.36.243.188.png => freechess.org.png} (100%) delete mode 100755 osxapp/man.command delete mode 100644 osxapp/osx-localization/.DS_Store delete mode 100755 osxapp/osx-localization/da.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/de.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/en.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/es.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/it.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/nl.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/pl.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/ru.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/tr.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/uk.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/vi.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/zh_CN.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/zh_HK.lproj/GtkosxApplication.strings delete mode 100755 osxapp/osx-localization/zh_TW.lproj/GtkosxApplication.strings delete mode 100644 osxapp/pango.modules rename osxapp/{ => themes}/default/eo_Analyzing.png (100%) rename osxapp/{ => themes}/default/eo_Black.png (100%) rename osxapp/{ => themes}/default/eo_Clear.png (100%) rename osxapp/{ => themes}/default/eo_Ponder.png (100%) rename osxapp/{ => themes}/default/eo_Thinking.png (100%) rename osxapp/{ => themes}/default/eo_Unknown.png (100%) rename osxapp/{ => themes}/default/eo_White.png (100%) rename osxapp/{ => themes}/default/icon_black.png (100%) rename osxapp/{ => themes}/default/icon_white.png (100%) rename png/{xqboard.png => xqboard-9x10.png} (100%) rename png/{xqwood.png => xqwood-9x10.png} (100%) create mode 100644 po/fr.po create mode 100644 po/sr.po create mode 100644 svg/BlackAxe.svg create mode 100644 svg/BlackButterfly.svg create mode 100644 svg/BlackCamel.svg create mode 100644 svg/BlackCopper.svg create mode 100644 svg/BlackCub.svg create mode 100644 svg/BlackDragon.svg create mode 100644 svg/BlackDuck.svg create mode 100644 svg/BlackFlag.svg create mode 100644 svg/BlackGnu.svg create mode 100644 svg/BlackHat.svg create mode 100644 svg/BlackIron.svg create mode 100644 svg/BlackLShield.svg create mode 100644 svg/BlackLeft.svg create mode 100644 svg/BlackPegasus.svg create mode 100644 svg/BlackRShield.svg create mode 100644 svg/BlackRight.svg create mode 100644 svg/BlackTower.svg create mode 100644 svg/BlackViking.svg create mode 100644 svg/BlackWizard.svg create mode 100644 svg/BlackWolf.svg create mode 100644 svg/BlackZebra.svg create mode 100644 svg/WhiteAxe.svg create mode 100644 svg/WhiteButterfly.svg create mode 100644 svg/WhiteCamel.svg create mode 100644 svg/WhiteCopper.svg create mode 100644 svg/WhiteCub.svg create mode 100644 svg/WhiteDragon.svg create mode 100644 svg/WhiteDuck.svg create mode 100644 svg/WhiteFlag.svg create mode 100644 svg/WhiteGnu.svg create mode 100644 svg/WhiteHat.svg create mode 100644 svg/WhiteIron.svg create mode 100644 svg/WhiteLShield.svg create mode 100644 svg/WhiteLeft.svg create mode 100644 svg/WhitePegasus.svg create mode 100644 svg/WhiteRShield.svg create mode 100644 svg/WhiteRight.svg create mode 100644 svg/WhiteTower.svg create mode 100644 svg/WhiteViking.svg create mode 100644 svg/WhiteWizard.svg create mode 100644 svg/WhiteWolf.svg create mode 100644 svg/WhiteZebra.svg rename themes/shogi/{BlackJewled.svg => BlackZebra.svg} (100%) rename themes/shogi/{WhiteJewled.svg => WhiteZebra.svg} (100%) create mode 100644 winboard/bitmaps/camel49o.bmp create mode 100644 winboard/bitmaps/camel49s.bmp create mode 100644 winboard/bitmaps/camel49w.bmp create mode 100644 winboard/bitmaps/camel72o.bmp create mode 100644 winboard/bitmaps/camel72s.bmp create mode 100644 winboard/bitmaps/camel72w.bmp create mode 100644 winboard/bitmaps/wolf49o.bmp create mode 100644 winboard/bitmaps/wolf49s.bmp create mode 100644 winboard/bitmaps/wolf49w.bmp create mode 100644 winboard/bitmaps/wolf72o.bmp create mode 100644 winboard/bitmaps/wolf72s.bmp create mode 100644 winboard/bitmaps/wolf72w.bmp create mode 100644 winboard/bitmaps/zebra49o.bmp create mode 100644 winboard/bitmaps/zebra49s.bmp create mode 100644 winboard/bitmaps/zebra72o.bmp create mode 100644 winboard/bitmaps/zebra72s.bmp ** Version 4.8.0 ** (git diff -b --stat --summary -M v4.7.3 HEAD) .gitignore | 20 + ABOUT-NLS | 1282 -------- ChangeLog | 1623 +++++++++++ DIFFSTAT | 439 +++ Makefile.am | 172 +- NEWS | 89 + SHORTLOG | 365 +++ args.h | 108 +- autogen.sh | 3 +- backend.c | 1314 +++++++-- backend.h | 26 +- board.c | 15 +- book.c | 12 + common.h | 66 +- conf/chu | 42 + conf/ics | 10 + conf/judkins | 19 + conf/judkins.fen | 2 + conf/mini | 24 + conf/mini.fen | 2 + conf/sho | 28 + conf/sho.fen | 2 + conf/shogi | 41 + conf/xiangqi | 30 + conf/xq | 36 + config.rpath | 672 ----- configure.ac | 173 +- dialogs.c | 713 ++++- dialogs.h | 17 +- draw.c | 136 +- draw.h | 3 +- engine-intf.html | 182 +- engineoutput.c | 148 +- engineoutput.h | 1 + evalgraph.c | 15 +- evalgraph.h | 3 +- frontend.h | 7 +- gamelist.c | 10 +- gtk/xboard.c | 341 ++- gtk/xboard.h | 39 +- gtk/xengineoutput.c | 21 +- gtk/xoptions.c | 179 +- m4/gettext.m4 | 383 --- m4/iconv.m4 | 214 -- m4/lib-ld.m4 | 110 - m4/lib-link.m4 | 774 ----- m4/lib-prefix.m4 | 224 -- m4/nls.m4 | 32 - m4/po.m4 | 449 --- m4/progtest.m4 | 92 - menus.c | 152 +- menus.h | 3 + moves.c | 1028 +++++-- moves.h | 12 +- nengineoutput.c | 14 +- nevalgraph.c | 17 +- ngamelist.c | 13 +- nhistory.c | 2 +- osxapp/Info.plist.in | 188 ++ osxapp/OSX-theme/gtk-2.0/assets/handle.png | Bin 0 -> 186 bytes .../gtk-2.0/assets/l-checkbox-checked-18.png | Bin 0 -> 814 bytes .../assets/l-checkbox-checked-insensitive-18.png | Bin 0 -> 639 bytes .../gtk-2.0/assets/l-checkbox-unchecked-18.png | Bin 0 -> 413 bytes .../assets/l-checkbox-unchecked-insensitive-18.png | Bin 0 -> 356 bytes .../gtk-2.0/assets/l-radio-selected-18.png | Bin 0 -> 890 bytes .../assets/l-radio-selected-insensitive-18.png | Bin 0 -> 643 bytes .../gtk-2.0/assets/l-radio-unselected-18.png | Bin 0 -> 606 bytes .../assets/l-radio-unselected-insensitive-18.png | Bin 0 -> 546 bytes .../gtk-2.0/assets/notebook-gap-bottom.png | Bin 0 -> 159 bytes .../OSX-theme/gtk-2.0/assets/notebook-gap-left.png | Bin 0 -> 85 bytes .../gtk-2.0/assets/notebook-gap-right.png | Bin 0 -> 84 bytes .../OSX-theme/gtk-2.0/assets/notebook-gap-top.png | Bin 0 -> 158 bytes osxapp/OSX-theme/gtk-2.0/assets/notebook.png | Bin 0 -> 227 bytes osxapp/OSX-theme/gtk-2.0/assets/null.png | Bin 0 -> 1164 bytes .../OSX-theme/gtk-2.0/assets/scroll-background.png | Bin 0 -> 155 bytes .../OSX-theme/gtk-2.0/assets/slider-horizontal.png | Bin 0 -> 828 bytes .../OSX-theme/gtk-2.0/assets/tab-bottom-active.png | Bin 0 -> 924 bytes osxapp/OSX-theme/gtk-2.0/assets/tab-bottom.png | Bin 0 -> 888 bytes .../OSX-theme/gtk-2.0/assets/tab-left-active.png | Bin 0 -> 451 bytes osxapp/OSX-theme/gtk-2.0/assets/tab-left.png | Bin 0 -> 763 bytes .../OSX-theme/gtk-2.0/assets/tab-right-active.png | Bin 0 -> 453 bytes osxapp/OSX-theme/gtk-2.0/assets/tab-right.png | Bin 0 -> 787 bytes osxapp/OSX-theme/gtk-2.0/assets/tab-top-active.png | Bin 0 -> 920 bytes osxapp/OSX-theme/gtk-2.0/assets/tab-top.png | Bin 0 -> 897 bytes osxapp/OSX-theme/gtk-2.0/assets/toolbar.png | Bin 0 -> 214 bytes osxapp/OSX-theme/gtk-2.0/gtkrc | 798 +++++ osxapp/PkgInfo | 1 + osxapp/XBoard.gtklauncher | 74 + osxapp/default/eo_Analyzing.png | Bin 0 -> 462 bytes osxapp/default/eo_Black.png | Bin 0 -> 292 bytes osxapp/default/eo_Clear.png | Bin 0 -> 159 bytes osxapp/default/eo_Ponder.png | Bin 0 -> 607 bytes osxapp/default/eo_Thinking.png | Bin 0 -> 492 bytes osxapp/default/eo_Unknown.png | Bin 0 -> 467 bytes osxapp/default/eo_White.png | Bin 0 -> 400 bytes osxapp/default/icon_black.png | Bin 0 -> 36898 bytes osxapp/default/icon_white.png | Bin 0 -> 36619 bytes osxapp/gtkrc | 4 + osxapp/icons/XBoard.icns | Bin 0 -> 200555 bytes osxapp/icons/fen.icns | Bin 0 -> 160673 bytes osxapp/icons/pgn.icns | Bin 0 -> 165002 bytes osxapp/icons/trn.icns | Bin 0 -> 161616 bytes osxapp/icons/xop.icns | Bin 0 -> 167993 bytes osxapp/info.command | 2 + osxapp/launcher_rc | 1 + osxapp/logos/207.99.83.228.png | Bin 0 -> 16710 bytes osxapp/logos/69.36.243.188.png | Bin 0 -> 7260 bytes osxapp/logos/dummy.png | Bin 0 -> 9465 bytes osxapp/logos/winboard.nl.png | Bin 0 -> 28755 bytes osxapp/man.command | 2 + osxapp/osx-localization/.DS_Store | Bin 0 -> 6148 bytes .../da.lproj/GtkosxApplication.strings | Bin 0 -> 1056 bytes .../de.lproj/GtkosxApplication.strings | Bin 0 -> 1104 bytes .../en.lproj/GtkosxApplication.strings | Bin 0 -> 1066 bytes .../es.lproj/GtkosxApplication.strings | Bin 0 -> 1078 bytes .../it.lproj/GtkosxApplication.strings | Bin 0 -> 1116 bytes .../nl.lproj/GtkosxApplication.strings | Bin 0 -> 1100 bytes .../pl.lproj/GtkosxApplication.strings | Bin 0 -> 1084 bytes .../ru.lproj/GtkosxApplication.strings | Bin 0 -> 1088 bytes .../tr.lproj/GtkosxApplication.strings | Bin 0 -> 1038 bytes .../uk.lproj/GtkosxApplication.strings | Bin 0 -> 610 bytes .../vi.lproj/GtkosxApplication.strings | Bin 0 -> 1064 bytes .../zh_CN.lproj/GtkosxApplication.strings | Bin 0 -> 944 bytes .../zh_HK.lproj/GtkosxApplication.strings | Bin 0 -> 934 bytes .../zh_TW.lproj/GtkosxApplication.strings | Bin 0 -> 944 bytes osxapp/pango.modules | 5 + parser.c | 29 +- pgntags.c | 8 + pixmaps/ANALYZING_14.xpm | 23 - pixmaps/BLACK_14.xpm | 23 - pixmaps/CLEAR_14.xpm | 23 - pixmaps/PONDER_14.xpm | 23 - pixmaps/THINKING_14.xpm | 23 - pixmaps/UNKNOWN_14.xpm | 23 - pixmaps/WHITE_14.xpm | 23 - pixmaps/board32.png | Bin 0 -> 291 bytes pixmaps/board32.xpm | 42 - pixmaps/board48.png | Bin 0 -> 306 bytes pixmaps/board48.xpm | 58 - pixmaps/cross32.png | Bin 0 -> 370 bytes pixmaps/cross32.xpm | 42 - pixmaps/cross48.png | Bin 0 -> 390 bytes pixmaps/cross48.xpm | 58 - pixmaps/ini32.png | Bin 0 -> 339 bytes pixmaps/ini32.xpm | 41 - pixmaps/ini48.png | Bin 0 -> 388 bytes pixmaps/ini48.xpm | 57 - png/xqboard.png | Bin 4423 -> 2534 bytes po/LINGUAS | 2 +- po/Makefile.in.in | 446 --- po/Makevars.template | 41 - po/Rules-quot | 47 - po/boldquot.sed | 10 - po/da.po | 1656 ++++++----- po/de.po | 1851 ++++++------ po/en@boldquot.header | 25 - po/en@quot.header | 22 - po/es.po | 2783 +++++++++--------- po/insert-header.sin | 23 - po/it.po | 1612 +++++----- po/nl.po | 3014 +++++++++++++++++++ po/pl.po | 3077 ++++++++++++++++++++ po/quot.sed | 6 - po/remove-potcdate.sin | 19 - po/ru.po | 1607 +++++----- po/tr.po | 1588 +++++----- po/uk.po | 1682 ++++++----- po/vi.po | 1596 +++++----- po/xboard.pot | 1573 +++++----- po/zh_CN.po | 1604 +++++----- po/zh_HK.po | 1605 +++++----- po/zh_TW.po | 1604 +++++----- sounds/roar.wav | Bin 0 -> 24664 bytes svg/BlackClaw.svg | 162 ++ svg/BlackDolphin.svg | 104 + svg/BlackHCrown.svg | 129 + svg/BlackHSword.svg | 115 + svg/BlackLeopard.svg | 168 ++ svg/BlackLion.svg | 172 ++ svg/BlackPromoBishop.svg | 92 + svg/BlackPromoDragon.svg | 109 + svg/BlackPromoHSword.svg | 110 + svg/BlackPromoHorse.svg | 88 + svg/BlackPromoRook.svg | 104 + svg/BlackPromoSword.svg | 108 + svg/BlackSword.svg | 113 + svg/WhiteClaw.svg | 161 + svg/WhiteDolphin.svg | 105 + svg/WhiteHCrown.svg | 129 + svg/WhiteHSword.svg | 107 + svg/WhiteLeopard.svg | 169 ++ svg/WhiteLion.svg | 173 ++ svg/WhitePromoBishop.svg | 84 + svg/WhitePromoDragon.svg | 100 + svg/WhitePromoHSword.svg | 102 + svg/WhitePromoHorse.svg | 80 + svg/WhitePromoRook.svg | 94 + svg/WhitePromoSword.svg | 100 + svg/WhiteSword.svg | 105 + themes/shogi/BlackAdvisor.svg | 193 +- themes/shogi/BlackBishop.svg | 149 +- themes/shogi/BlackCrownedBishop.svg | 120 +- themes/shogi/BlackCrownedRook.svg | 159 +- themes/shogi/BlackElephant.svg | 65 + themes/shogi/BlackGold.svg | 179 +- themes/shogi/BlackGoldKnight.svg | 95 +- themes/shogi/BlackGoldLance.svg | 97 +- themes/shogi/BlackGoldPawn.svg | 87 +- themes/shogi/BlackGoldSilver.svg | 109 +- themes/shogi/BlackJewled.svg | 88 + themes/shogi/BlackKing.svg | 151 +- themes/shogi/BlackKnight.svg | 164 +- themes/shogi/BlackLance.svg | 162 +- themes/shogi/BlackPawn.svg | 136 +- themes/shogi/BlackPrince.svg | 70 + themes/shogi/BlackRook.svg | 160 +- themes/shogi/WhiteAdvisor.svg | 177 +- themes/shogi/WhiteBishop.svg | 132 +- themes/shogi/WhiteCrownedBishop.svg | 98 +- themes/shogi/WhiteCrownedRook.svg | 125 +- themes/shogi/WhiteElephant.svg | 65 + themes/shogi/WhiteGold.svg | 165 +- themes/shogi/WhiteGoldKnight.svg | 81 +- themes/shogi/WhiteGoldLance.svg | 83 +- themes/shogi/WhiteGoldPawn.svg | 73 +- themes/shogi/WhiteGoldSilver.svg | 87 +- themes/shogi/WhiteJewled.svg | 82 + themes/shogi/WhiteKing.svg | 142 +- themes/shogi/WhiteKnight.svg | 150 +- themes/shogi/WhiteLance.svg | 148 +- themes/shogi/WhitePawn.svg | 122 +- themes/shogi/WhitePrince.svg | 70 + themes/shogi/WhiteRook.svg | 148 +- usounds.c | 13 +- usystem.c | 39 +- usystem.h | 1 + winboard/bitmaps/ln33o.bmp | Bin 0 -> 326 bytes winboard/bitmaps/ln33s.bmp | Bin 0 -> 326 bytes winboard/bitmaps/ln33w.bmp | Bin 0 -> 326 bytes winboard/bitmaps/ln49o.bmp | Bin 0 -> 454 bytes winboard/bitmaps/ln49s.bmp | Bin 0 -> 454 bytes winboard/bitmaps/ln49w.bmp | Bin 0 -> 454 bytes winboard/bitmaps/ln72o.bmp | Bin 0 -> 926 bytes winboard/bitmaps/ln72s.bmp | Bin 0 -> 926 bytes winboard/bitmaps/ln72w.bmp | Bin 0 -> 926 bytes winboard/config.h | 8 +- winboard/defaults.h | 2 +- winboard/resource.h | 13 +- winboard/wclipbrd.c | 5 +- winboard/wedittags.c | 53 +- winboard/wengineoutput.c | 3 +- winboard/wevalgraph.c | 11 +- winboard/wgamelist.c | 38 +- winboard/winboard.c | 159 +- winboard/winboard.h | 9 + winboard/winboard.rc | 97 +- winboard/woptions.c | 66 +- winboard/wsettings.c | 13 +- winboard/wsnap.c | 72 +- xaw/xboard.c | 249 +- xaw/xboard.h | 2 +- xaw/xengineoutput.c | 54 +- xaw/xoptions.c | 71 +- xboard.conf.in => xboard.conf | 33 +- xboard.texi | 185 +- xboard2.h | 2 +- zic2xpm.c | 597 ---- zic2xpm.man | 73 - 268 files changed, 30688 insertions(+), 19408 deletions(-) delete mode 100644 ABOUT-NLS create mode 100644 conf/chu create mode 100644 conf/ics create mode 100644 conf/judkins create mode 100644 conf/judkins.fen create mode 100644 conf/mini create mode 100644 conf/mini.fen create mode 100644 conf/sho create mode 100644 conf/sho.fen create mode 100644 conf/shogi create mode 100644 conf/xiangqi create mode 100644 conf/xq delete mode 100755 config.rpath delete mode 100644 m4/gettext.m4 delete mode 100644 m4/iconv.m4 delete mode 100644 m4/lib-ld.m4 delete mode 100644 m4/lib-link.m4 delete mode 100644 m4/lib-prefix.m4 delete mode 100644 m4/nls.m4 delete mode 100644 m4/po.m4 delete mode 100644 m4/progtest.m4 create mode 100644 osxapp/Info.plist.in create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/handle.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-checked-18.png create mode 100644 osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-checked-insensitive-18.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-unchecked-18.png create mode 100644 osxapp/OSX-theme/gtk-2.0/assets/l-checkbox-unchecked-insensitive-18.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/l-radio-selected-18.png create mode 100644 osxapp/OSX-theme/gtk-2.0/assets/l-radio-selected-insensitive-18.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/l-radio-unselected-18.png create mode 100644 osxapp/OSX-theme/gtk-2.0/assets/l-radio-unselected-insensitive-18.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-bottom.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-left.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-right.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/notebook-gap-top.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/notebook.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/null.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/scroll-background.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/slider-horizontal.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-bottom-active.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-bottom.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-left-active.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-left.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-right-active.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-right.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-top-active.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/tab-top.png create mode 100755 osxapp/OSX-theme/gtk-2.0/assets/toolbar.png create mode 100755 osxapp/OSX-theme/gtk-2.0/gtkrc create mode 100644 osxapp/PkgInfo create mode 100755 osxapp/XBoard.gtklauncher create mode 100644 osxapp/default/eo_Analyzing.png create mode 100644 osxapp/default/eo_Black.png create mode 100644 osxapp/default/eo_Clear.png create mode 100644 osxapp/default/eo_Ponder.png create mode 100644 osxapp/default/eo_Thinking.png create mode 100644 osxapp/default/eo_Unknown.png create mode 100644 osxapp/default/eo_White.png create mode 100644 osxapp/default/icon_black.png create mode 100644 osxapp/default/icon_white.png create mode 100644 osxapp/gtkrc create mode 100644 osxapp/icons/XBoard.icns create mode 100644 osxapp/icons/fen.icns create mode 100644 osxapp/icons/pgn.icns create mode 100644 osxapp/icons/trn.icns create mode 100644 osxapp/icons/xop.icns create mode 100755 osxapp/info.command create mode 100644 osxapp/launcher_rc create mode 100644 osxapp/logos/207.99.83.228.png create mode 100644 osxapp/logos/69.36.243.188.png create mode 100644 osxapp/logos/dummy.png create mode 100644 osxapp/logos/winboard.nl.png create mode 100755 osxapp/man.command create mode 100644 osxapp/osx-localization/.DS_Store create mode 100755 osxapp/osx-localization/da.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/de.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/en.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/es.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/it.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/nl.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/pl.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/ru.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/tr.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/uk.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/vi.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/zh_CN.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/zh_HK.lproj/GtkosxApplication.strings create mode 100755 osxapp/osx-localization/zh_TW.lproj/GtkosxApplication.strings create mode 100644 osxapp/pango.modules delete mode 100644 pixmaps/ANALYZING_14.xpm delete mode 100644 pixmaps/BLACK_14.xpm delete mode 100644 pixmaps/CLEAR_14.xpm delete mode 100644 pixmaps/PONDER_14.xpm delete mode 100644 pixmaps/THINKING_14.xpm delete mode 100644 pixmaps/UNKNOWN_14.xpm delete mode 100644 pixmaps/WHITE_14.xpm create mode 100644 pixmaps/board32.png delete mode 100644 pixmaps/board32.xpm create mode 100644 pixmaps/board48.png delete mode 100644 pixmaps/board48.xpm create mode 100644 pixmaps/cross32.png delete mode 100644 pixmaps/cross32.xpm create mode 100644 pixmaps/cross48.png delete mode 100644 pixmaps/cross48.xpm create mode 100644 pixmaps/ini32.png delete mode 100644 pixmaps/ini32.xpm create mode 100644 pixmaps/ini48.png delete mode 100644 pixmaps/ini48.xpm delete mode 100644 po/Makefile.in.in delete mode 100644 po/Makevars.template delete mode 100644 po/Rules-quot delete mode 100644 po/boldquot.sed delete mode 100644 po/en@boldquot.header delete mode 100644 po/en@quot.header delete mode 100644 po/insert-header.sin create mode 100644 po/nl.po create mode 100644 po/pl.po delete mode 100644 po/quot.sed delete mode 100644 po/remove-potcdate.sin create mode 100644 sounds/roar.wav create mode 100644 svg/BlackClaw.svg create mode 100644 svg/BlackDolphin.svg create mode 100644 svg/BlackHCrown.svg create mode 100644 svg/BlackHSword.svg create mode 100644 svg/BlackLeopard.svg create mode 100644 svg/BlackLion.svg create mode 100644 svg/BlackPromoBishop.svg create mode 100644 svg/BlackPromoDragon.svg create mode 100644 svg/BlackPromoHSword.svg create mode 100644 svg/BlackPromoHorse.svg create mode 100644 svg/BlackPromoRook.svg create mode 100644 svg/BlackPromoSword.svg create mode 100644 svg/BlackSword.svg create mode 100644 svg/WhiteClaw.svg create mode 100644 svg/WhiteDolphin.svg create mode 100644 svg/WhiteHCrown.svg create mode 100644 svg/WhiteHSword.svg create mode 100644 svg/WhiteLeopard.svg create mode 100644 svg/WhiteLion.svg create mode 100644 svg/WhitePromoBishop.svg create mode 100644 svg/WhitePromoDragon.svg create mode 100644 svg/WhitePromoHSword.svg create mode 100644 svg/WhitePromoHorse.svg create mode 100644 svg/WhitePromoRook.svg create mode 100644 svg/WhitePromoSword.svg create mode 100644 svg/WhiteSword.svg create mode 100644 themes/shogi/BlackElephant.svg create mode 100644 themes/shogi/BlackJewled.svg create mode 100644 themes/shogi/BlackPrince.svg create mode 100644 themes/shogi/WhiteElephant.svg create mode 100644 themes/shogi/WhiteJewled.svg create mode 100644 themes/shogi/WhitePrince.svg create mode 100644 winboard/bitmaps/ln33o.bmp create mode 100644 winboard/bitmaps/ln33s.bmp create mode 100644 winboard/bitmaps/ln33w.bmp create mode 100644 winboard/bitmaps/ln49o.bmp create mode 100644 winboard/bitmaps/ln49s.bmp create mode 100644 winboard/bitmaps/ln49w.bmp create mode 100644 winboard/bitmaps/ln72o.bmp create mode 100644 winboard/bitmaps/ln72s.bmp create mode 100644 winboard/bitmaps/ln72w.bmp rename xboard.conf.in => xboard.conf (65%) delete mode 100644 zic2xpm.c delete mode 100644 zic2xpm.man ** Version 4.7.3 ** (git diff -b --stat --summary -M v4.7.2 HEAD) COPYRIGHT | 2 +- README | 1 - args.h | 10 +- autogen.sh | 2 +- backend.c | 27 +++- backend.h | 42 +----- backendz.h | 2 +- board.c | 2 +- board.h | 2 +- book.c | 3 + childio.c | 2 +- childio.h | 2 +- cmail.in | 2 +- common.h | 42 +++++- configure.ac | 4 +- copyright.texi | 2 +- dialogs.c | 14 +- dialogs.h | 2 +- doc-maint/release.org | 0 draw.c | 2 +- draw.h | 2 +- engineoutput.c | 4 +- engineoutput.h | 2 +- evalgraph.c | 2 +- evalgraph.h | 2 +- frontend.h | 4 +- gamelist.c | 2 +- gtk/xboard.c | 84 +++++++++--- gtk/xboard.h | 2 +- gtk/xengineoutput.c | 2 +- gtk/xoptions.c | 55 ++++++-- gtk/xtimer.c | 2 +- history.c | 2 +- lists.c | 2 +- lists.h | 2 +- menus.c | 4 +- menus.h | 2 +- moves.c | 4 +- moves.h | 2 +- nengineoutput.c | 2 +- nevalgraph.c | 2 +- ngamelist.c | 2 +- nhistory.c | 2 +- parser.c | 6 +- parser.h | 2 +- pgntags.c | 2 +- po/da.po | 280 +++++++++++++++++++------------------- po/de.po | 280 +++++++++++++++++++------------------- po/es.po | 280 +++++++++++++++++++------------------- po/it.po | 280 +++++++++++++++++++------------------- po/lng2po.sh | 2 +- po/ru.po | 280 +++++++++++++++++++------------------- po/tr.po | 280 +++++++++++++++++++------------------- po/uk.po | 282 +++++++++++++++++++-------------------- po/vi.po | 280 +++++++++++++++++++------------------- po/xboard.pot | 282 +++++++++++++++++++-------------------- po/zh_CN.po | 280 +++++++++++++++++++------------------- po/zh_HK.po | 280 +++++++++++++++++++------------------- po/zh_TW.po | 280 +++++++++++++++++++------------------- themes/xiangqi/.DS_Store | Bin 6148 -> 0 bytes uci.c | 2 +- usounds.c | 2 +- usystem.c | 2 +- usystem.h | 2 +- winboard/config.h | 6 +- winboard/defaults.h | 2 +- winboard/help.c | 2 +- winboard/help/html/24.htm | 2 +- winboard/jaws.c | 2 +- winboard/language.txt | 2 +- winboard/language/deutsch.lng | 2 +- winboard/language/italiano.lng | 2 +- winboard/language/nederlands.lng | 2 +- winboard/language/romanian.lng | 2 +- winboard/language/russian.lng | 2 +- winboard/language/spanish.lng | 2 +- winboard/language/vietnamese.lng | 2 +- winboard/makefile.gcc | 5 +- winboard/wchat.c | 2 +- winboard/wclipbrd.c | 2 +- winboard/wclipbrd.h | 2 +- winboard/wedittags.c | 2 +- winboard/wengineoutput.c | 2 +- winboard/wevalgraph.c | 2 + winboard/wgamelist.c | 2 +- winboard/whistory.c | 2 + winboard/winboard.c | 46 +++++-- winboard/winboard.h | 4 +- winboard/winboard.rc | 4 +- winboard/wlayout.c | 14 +- winboard/woptions.c | 2 +- winboard/woptions.h | 2 +- winboard/wsettings.c | 23 ++++ winboard/wsockerr.c | 2 +- winboard/wsockerr.h | 2 +- xaw/xboard.c | 3 +- xaw/xboard.h | 2 +- xaw/xengineoutput.c | 3 +- xaw/xgamelist.c | 2 +- xaw/xgamelist.h | 2 +- xaw/xhistory.c | 2 +- xaw/xhistory.h | 2 +- xaw/xoptions.c | 14 +- xboard2.h | 22 +++ zippy.README | 0 zippy.c | 2 +- zippy.h | 2 +- zippy.lines | 0 108 files changed, 2077 insertions(+), 1867 deletions(-) delete mode 100644 themes/xiangqi/.DS_Store ** Version 4.7.2 ** (git diff -b --stat --summary -M v4.7.1 HEAD) backend.c | 10 ++++++---- book.c | 4 +++- parser.c | 4 +++- winboard/winboard.c | 8 ++++++-- winboard/wsettings.c | 9 ++++++--- zippy.c | 2 +- 6 files changed, 25 insertions(+), 12 deletions(-) ** Version 4.7.1 ** (git diff -b --stat --summary -M v4.7.0 HEAD) args.h | 10 ++- backend.c | 120 +++++++++++++++++------------ backend.h | 6 +- configure.ac | 2 +- dialogs.c | 19 ++--- gtk/xboard.c | 40 +++++++--- gtk/xoptions.c | 16 ++-- po/da.po | 2 +- po/de.po | 61 ++++++++++----- po/es.po | 2 +- po/it.po | 2 +- po/ru.po | 2 +- po/tr.po | 2 +- po/uk.po | 213 +++++++++++++++++++--------------------------------- po/vi.po | 2 +- po/xboard.pot | 4 +- po/zh_CN.po | 2 +- po/zh_HK.po | 2 +- po/zh_TW.po | 2 +- winboard/config.h | 6 +- winboard/wchat.c | 11 ++- xaw/xboard.c | 3 +- xaw/xengineoutput.c | 4 +- xaw/xhistory.c | 2 +- xaw/xoptions.c | 3 +- xboard.texi | 145 ++++++++++++++++++----------------- zippy.README | 9 ++- 27 files changed, 368 insertions(+), 324 deletions(-) ** Version 4.7.0 ** (git diff -b --stat --summary -M v4.6.2 HEAD) AUTHORS | 2117 +---------- COPYRIGHT | 2 +- ChangeLog | 2868 +++++++++++++- DIFFSTAT | 3076 ++++++++++++++- Makefile.am | 214 +- NEWS | 90 +- SHORTLOG | 442 ++- args.h | 105 +- autogen.sh | 2 +- backend.c | 942 ++++- backend.h | 64 +- backendz.h | 9 +- bitmaps/README.bitmaps | 101 - bitmaps/a33o.bm | 16 - bitmaps/a33s.bm | 16 - bitmaps/a37o.bm | 17 - bitmaps/a37s.bm | 17 - bitmaps/a40o.bm | 18 - bitmaps/a40s.bm | 18 - bitmaps/a45o.bm | 23 - bitmaps/a45s.bm | 23 - bitmaps/a49o.bm | 27 - bitmaps/a49s.bm | 27 - bitmaps/a54o.bm | 30 - bitmaps/a54s.bm | 30 - bitmaps/a58o.bm | 35 - bitmaps/a58s.bm | 35 - bitmaps/a64o.bm | 39 - bitmaps/a64s.bm | 39 - bitmaps/a72o.bm | 48 - bitmaps/a72s.bm | 48 - bitmaps/as45o.bm | 23 - bitmaps/as45s.bm | 23 - bitmaps/b108o.bm | 105 - bitmaps/b108s.bm | 105 - bitmaps/b116o.bm | 121 - bitmaps/b116s.bm | 121 - bitmaps/b129o.bm | 186 - bitmaps/b129s.bm | 186 - bitmaps/b21o.bm | 9 - bitmaps/b21s.bm | 9 - bitmaps/b25o.bm | 11 - bitmaps/b25s.bm | 11 - bitmaps/b29o.bm | 12 - bitmaps/b29s.bm | 12 - bitmaps/b33o.bm | 16 - bitmaps/b33s.bm | 16 - bitmaps/b37o.bm | 17 - bitmaps/b37s.bm | 17 - bitmaps/b40o.bm | 18 - bitmaps/b40s.bm | 18 - bitmaps/b45o.bm | 23 - bitmaps/b45s.bm | 23 - bitmaps/b49o.bm | 27 - bitmaps/b49s.bm | 27 - bitmaps/b54o.bm | 30 - bitmaps/b54s.bm | 30 - bitmaps/b58o.bm | 35 - bitmaps/b58s.bm | 35 - bitmaps/b64o.bm | 39 - bitmaps/b64s.bm | 39 - bitmaps/b72o.bm | 48 - bitmaps/b72s.bm | 48 - bitmaps/b80o.bm | 58 - bitmaps/b80s.bm | 58 - bitmaps/b87o.bm | 68 - bitmaps/b87s.bm | 68 - bitmaps/b95o.bm | 81 - bitmaps/b95s.bm | 81 - bitmaps/bitmaps.h | 530 --- bitmaps/c33o.bm | 16 - bitmaps/c33s.bm | 16 - bitmaps/c37o.bm | 17 - bitmaps/c37s.bm | 17 - bitmaps/c40o.bm | 18 - bitmaps/c40s.bm | 18 - bitmaps/c45o.bm | 23 - bitmaps/c45s.bm | 23 - bitmaps/c49o.bm | 27 - bitmaps/c49s.bm | 27 - bitmaps/c54o.bm | 30 - bitmaps/c54s.bm | 30 - bitmaps/c58o.bm | 35 - bitmaps/c58s.bm | 35 - bitmaps/c64o.bm | 39 - bitmaps/c64s.bm | 39 - bitmaps/c72o.bm | 48 - bitmaps/c72s.bm | 48 - bitmaps/d33o.bm | 16 - bitmaps/d33s.bm | 16 - bitmaps/d37o.bm | 17 - bitmaps/d37s.bm | 17 - bitmaps/d40o.bm | 18 - bitmaps/d40s.bm | 18 - bitmaps/d45o.bm | 23 - bitmaps/d45s.bm | 23 - bitmaps/d49o.bm | 27 - bitmaps/d49s.bm | 27 - bitmaps/d54o.bm | 30 - bitmaps/d54s.bm | 30 - bitmaps/d58o.bm | 35 - bitmaps/d58s.bm | 35 - bitmaps/d64o.bm | 39 - bitmaps/d64s.bm | 39 - bitmaps/d72o.bm | 48 - bitmaps/d72s.bm | 48 - bitmaps/dopkbm.sh | 16 - bitmaps/dopkbm1.sh | 27 - bitmaps/e33o.bm | 16 - bitmaps/e33s.bm | 16 - bitmaps/e49o.bm | 27 - bitmaps/e49s.bm | 27 - bitmaps/e72o.bm | 48 - bitmaps/e72s.bm | 48 - bitmaps/f33o.bm | 16 - bitmaps/f33s.bm | 16 - bitmaps/f49o.bm | 27 - bitmaps/f49s.bm | 27 - bitmaps/f72o.bm | 48 - bitmaps/f72s.bm | 48 - bitmaps/g33o.bm | 16 - bitmaps/g33s.bm | 16 - bitmaps/g49o.bm | 27 - bitmaps/g49s.bm | 27 - bitmaps/g72o.bm | 48 - bitmaps/g72s.bm | 48 - bitmaps/h33o.bm | 16 - bitmaps/h33s.bm | 16 - bitmaps/h49o.bm | 27 - bitmaps/h49s.bm | 27 - bitmaps/h72o.bm | 48 - bitmaps/h72s.bm | 48 - bitmaps/i33o.bm | 16 - bitmaps/i33s.bm | 16 - bitmaps/i49o.bm | 27 - bitmaps/i49s.bm | 27 - bitmaps/i72o.bm | 48 - bitmaps/i72s.bm | 48 - bitmaps/icon_b.bm | 13 - bitmaps/icon_outline.bm | 14 - bitmaps/j33o.bm | 16 - bitmaps/j33s.bm | 16 - bitmaps/j49o.bm | 27 - bitmaps/j49s.bm | 27 - bitmaps/j72o.bm | 48 - bitmaps/j72s.bm | 48 - bitmaps/k108o.bm | 105 - bitmaps/k108s.bm | 105 - bitmaps/k116o.bm | 121 - bitmaps/k116s.bm | 121 - bitmaps/k129o.bm | 186 - bitmaps/k129s.bm | 186 - bitmaps/k21o.bm | 9 - bitmaps/k21s.bm | 9 - bitmaps/k25o.bm | 11 - bitmaps/k25s.bm | 11 - bitmaps/k29o.bm | 12 - bitmaps/k29s.bm | 12 - bitmaps/k33o.bm | 16 - bitmaps/k33s.bm | 16 - bitmaps/k37o.bm | 17 - bitmaps/k37s.bm | 17 - bitmaps/k40o.bm | 18 - bitmaps/k40s.bm | 18 - bitmaps/k45o.bm | 23 - bitmaps/k45s.bm | 23 - bitmaps/k49o.bm | 27 - bitmaps/k49s.bm | 27 - bitmaps/k54o.bm | 30 - bitmaps/k54s.bm | 30 - bitmaps/k58o.bm | 35 - bitmaps/k58s.bm | 35 - bitmaps/k64o.bm | 39 - bitmaps/k64s.bm | 39 - bitmaps/k72o.bm | 48 - bitmaps/k72s.bm | 48 - bitmaps/k80o.bm | 58 - bitmaps/k80s.bm | 58 - bitmaps/k87o.bm | 68 - bitmaps/k87s.bm | 68 - bitmaps/k95o.bm | 81 - bitmaps/k95s.bm | 81 - bitmaps/l33o.bm | 16 - bitmaps/l33s.bm | 16 - bitmaps/l37o.bm | 17 - bitmaps/l37s.bm | 17 - bitmaps/l40o.bm | 18 - bitmaps/l40s.bm | 18 - bitmaps/l45o.bm | 23 - bitmaps/l45s.bm | 23 - bitmaps/l49o.bm | 27 - bitmaps/l49s.bm | 27 - bitmaps/l54o.bm | 30 - bitmaps/l54s.bm | 30 - bitmaps/l58o.bm | 35 - bitmaps/l58s.bm | 35 - bitmaps/l64o.bm | 39 - bitmaps/l64s.bm | 39 - bitmaps/l72o.bm | 48 - bitmaps/l72s.bm | 48 - bitmaps/m33o.bm | 16 - bitmaps/m33s.bm | 16 - bitmaps/m49o.bm | 27 - bitmaps/m49s.bm | 27 - bitmaps/m72o.bm | 48 - bitmaps/m72s.bm | 48 - bitmaps/n108o.bm | 105 - bitmaps/n108s.bm | 105 - bitmaps/n116o.bm | 121 - bitmaps/n116s.bm | 121 - bitmaps/n129o.bm | 186 - bitmaps/n129s.bm | 186 - bitmaps/n21o.bm | 9 - bitmaps/n21s.bm | 9 - bitmaps/n25o.bm | 11 - bitmaps/n25s.bm | 11 - bitmaps/n29o.bm | 12 - bitmaps/n29s.bm | 12 - bitmaps/n33o.bm | 16 - bitmaps/n33s.bm | 16 - bitmaps/n37o.bm | 17 - bitmaps/n37s.bm | 17 - bitmaps/n40o.bm | 18 - bitmaps/n40s.bm | 18 - bitmaps/n45o.bm | 23 - bitmaps/n45s.bm | 23 - bitmaps/n49o.bm | 27 - bitmaps/n49s.bm | 27 - bitmaps/n54o.bm | 30 - bitmaps/n54s.bm | 30 - bitmaps/n58o.bm | 35 - bitmaps/n58s.bm | 35 - bitmaps/n64o.bm | 39 - bitmaps/n64s.bm | 39 - bitmaps/n72o.bm | 48 - bitmaps/n72s.bm | 48 - bitmaps/n80o.bm | 58 - bitmaps/n80s.bm | 58 - bitmaps/n87o.bm | 68 - bitmaps/n87s.bm | 68 - bitmaps/n95o.bm | 81 - bitmaps/n95s.bm | 81 - bitmaps/o33o.bm | 16 - bitmaps/o33s.bm | 16 - bitmaps/o49o.bm | 27 - bitmaps/o49s.bm | 27 - bitmaps/o72o.bm | 48 - bitmaps/o72s.bm | 48 - bitmaps/p108o.bm | 105 - bitmaps/p108s.bm | 105 - bitmaps/p116o.bm | 121 - bitmaps/p116s.bm | 121 - bitmaps/p129o.bm | 186 - bitmaps/p129s.bm | 186 - bitmaps/p21o.bm | 9 - bitmaps/p21s.bm | 9 - bitmaps/p25o.bm | 11 - bitmaps/p25s.bm | 11 - bitmaps/p29o.bm | 12 - bitmaps/p29s.bm | 12 - bitmaps/p33o.bm | 16 - bitmaps/p33s.bm | 16 - bitmaps/p37o.bm | 17 - bitmaps/p37s.bm | 17 - bitmaps/p40o.bm | 18 - bitmaps/p40s.bm | 18 - bitmaps/p45o.bm | 23 - bitmaps/p45s.bm | 23 - bitmaps/p49o.bm | 27 - bitmaps/p49s.bm | 27 - bitmaps/p54o.bm | 30 - bitmaps/p54s.bm | 30 - bitmaps/p58o.bm | 35 - bitmaps/p58s.bm | 35 - bitmaps/p64o.bm | 39 - bitmaps/p64s.bm | 39 - bitmaps/p72o.bm | 48 - bitmaps/p72s.bm | 48 - bitmaps/p80o.bm | 58 - bitmaps/p80s.bm | 58 - bitmaps/p87o.bm | 68 - bitmaps/p87s.bm | 68 - bitmaps/p95o.bm | 81 - bitmaps/p95s.bm | 81 - bitmaps/q108o.bm | 105 - bitmaps/q108s.bm | 105 - bitmaps/q116o.bm | 121 - bitmaps/q116s.bm | 121 - bitmaps/q129o.bm | 186 - bitmaps/q129s.bm | 186 - bitmaps/q21o.bm | 9 - bitmaps/q21s.bm | 9 - bitmaps/q25o.bm | 11 - bitmaps/q25s.bm | 11 - bitmaps/q29o.bm | 12 - bitmaps/q29s.bm | 12 - bitmaps/q33o.bm | 16 - bitmaps/q33s.bm | 16 - bitmaps/q37o.bm | 17 - bitmaps/q37s.bm | 17 - bitmaps/q40o.bm | 18 - bitmaps/q40s.bm | 18 - bitmaps/q45o.bm | 23 - bitmaps/q45s.bm | 23 - bitmaps/q49o.bm | 27 - bitmaps/q49s.bm | 27 - bitmaps/q54o.bm | 30 - bitmaps/q54s.bm | 30 - bitmaps/q58o.bm | 35 - bitmaps/q58s.bm | 35 - bitmaps/q64o.bm | 39 - bitmaps/q64s.bm | 39 - bitmaps/q72o.bm | 48 - bitmaps/q72s.bm | 48 - bitmaps/q80o.bm | 58 - bitmaps/q80s.bm | 58 - bitmaps/q87o.bm | 68 - bitmaps/q87s.bm | 68 - bitmaps/q95o.bm | 81 - bitmaps/q95s.bm | 81 - bitmaps/r108o.bm | 105 - bitmaps/r108s.bm | 105 - bitmaps/r116o.bm | 121 - bitmaps/r116s.bm | 121 - bitmaps/r129o.bm | 186 - bitmaps/r129s.bm | 186 - bitmaps/r21o.bm | 9 - bitmaps/r21s.bm | 9 - bitmaps/r25o.bm | 11 - bitmaps/r25s.bm | 11 - bitmaps/r29o.bm | 12 - bitmaps/r29s.bm | 12 - bitmaps/r33o.bm | 16 - bitmaps/r33s.bm | 16 - bitmaps/r37o.bm | 17 - bitmaps/r37s.bm | 17 - bitmaps/r40o.bm | 18 - bitmaps/r40s.bm | 18 - bitmaps/r45o.bm | 23 - bitmaps/r45s.bm | 23 - bitmaps/r49o.bm | 27 - bitmaps/r49s.bm | 27 - bitmaps/r54o.bm | 30 - bitmaps/r54s.bm | 30 - bitmaps/r58o.bm | 35 - bitmaps/r58s.bm | 35 - bitmaps/r64o.bm | 39 - bitmaps/r64s.bm | 39 - bitmaps/r72o.bm | 48 - bitmaps/r72s.bm | 48 - bitmaps/r80o.bm | 58 - bitmaps/r80s.bm | 58 - bitmaps/r87o.bm | 68 - bitmaps/r87s.bm | 68 - bitmaps/r95o.bm | 81 - bitmaps/r95s.bm | 81 - bitmaps/s49o.bm | 27 - bitmaps/s49s.bm | 27 - bitmaps/s72o.bm | 48 - bitmaps/s72s.bm | 48 - bitmaps/test.c | 14 - bitmaps/u49o.bm | 27 - bitmaps/u49s.bm | 27 - bitmaps/u72o.bm | 48 - bitmaps/u72s.bm | 48 - bitmaps/v33o.bm | 16 - bitmaps/v33s.bm | 16 - bitmaps/v49o.bm | 27 - bitmaps/v49s.bm | 27 - bitmaps/v72o.bm | 48 - bitmaps/v72s.bm | 48 - bitmaps/w33o.bm | 16 - bitmaps/w33s.bm | 16 - bitmaps/w49o.bm | 27 - bitmaps/w49s.bm | 27 - bitmaps/w72o.bm | 48 - bitmaps/w72s.bm | 48 - bitmaps/wl49o.bm | 27 - bitmaps/wl49s.bm | 27 - bitmaps/wl72o.bm | 48 - bitmaps/wl72s.bm | 48 - bitmaps/wn49o.bm | 27 - bitmaps/wn49s.bm | 27 - bitmaps/wn72o.bm | 48 - bitmaps/wn72s.bm | 48 - bitmaps/wp49o.bm | 27 - bitmaps/wp49s.bm | 27 - bitmaps/wp72o.bm | 48 - bitmaps/wp72s.bm | 48 - bitmaps/ws49o.bm | 27 - bitmaps/ws49s.bm | 27 - bitmaps/ws72o.bm | 48 - bitmaps/ws72s.bm | 48 - board.c | 1244 ++++++ board.h | 98 + book.c | 362 +- childio.c | 2 +- childio.h | 2 +- cmail.in | 2 +- common.h | 49 +- configure.ac | 136 +- copyright.texi | 2 +- dialogs.c | 2588 +++++++++++++ dialogs.h | 196 + doc-maint/coding-standards.org | 6 + doc-maint/gendocs.sh | 361 ++ doc-maint/make-xboard-release | 186 + doc-maint/release.org | 71 + doc-maint/web-pages.org | 40 + draw.c | 927 +++++ draw.h | 76 + engine-intf.html | 45 + engineoutput.c | 28 +- engineoutput.h | 25 +- evalgraph.c | 4 +- evalgraph.h | 12 +- filebrowser/README | 3 - filebrowser/dir.c | 169 - filebrowser/draw.c | 981 ----- filebrowser/path.c | 905 ----- filebrowser/selfile.c | 902 ----- filebrowser/selfile.h | 170 - filebrowser/xstat.h | 23 - frontend.h | 34 +- gamelist.c | 5 +- gettext.h | 6 +- gtk/.dirstamp | 0 gtk/xboard.c | 2126 +++++++++++ gtk/xboard.h | 177 + gtk/xengineoutput.c | 137 + gtk/xoptions.c | 1587 ++++++++ gtk/xtimer.c | 237 ++ history.c | 3 +- install-sh | 0 lists.c | 2 +- lists.h | 18 +- menus.c | 1213 ++++++ menus.h | 197 + moves.c | 13 +- moves.h | 2 +- nengineoutput.c | 194 + nevalgraph.c | 189 + ngamelist.c | 377 ++ nhistory.c | 124 + parser.c | 6 +- parser.h | 2 +- pgntags.c | 2 +- pixmaps/README.pixmaps | 8 - pixmaps/add33.xpm | 42 - pixmaps/add37.xpm | 46 - pixmaps/add40.xpm | 49 - pixmaps/add45.xpm | 54 - pixmaps/add49.xpm | 58 - pixmaps/add54.xpm | 63 - pixmaps/add58.xpm | 67 - pixmaps/add64.xpm | 73 - pixmaps/add72.xpm | 81 - pixmaps/adl33.xpm | 42 - pixmaps/adl37.xpm | 46 - pixmaps/adl40.xpm | 49 - pixmaps/adl45.xpm | 54 - pixmaps/adl49.xpm | 58 - pixmaps/adl54.xpm | 63 - pixmaps/adl58.xpm | 67 - pixmaps/adl64.xpm | 73 - pixmaps/adl72.xpm | 81 - pixmaps/ald33.xpm | 42 - pixmaps/ald37.xpm | 46 - pixmaps/ald40.xpm | 49 - pixmaps/ald45.xpm | 54 - pixmaps/ald49.xpm | 58 - pixmaps/ald54.xpm | 63 - pixmaps/ald58.xpm | 67 - pixmaps/ald64.xpm | 73 - pixmaps/ald72.xpm | 81 - pixmaps/all33.xpm | 42 - pixmaps/all37.xpm | 46 - pixmaps/all40.xpm | 49 - pixmaps/all45.xpm | 54 - pixmaps/all49.xpm | 58 - pixmaps/all54.xpm | 63 - pixmaps/all58.xpm | 67 - pixmaps/all64.xpm | 73 - pixmaps/all72.xpm | 81 - pixmaps/asdd33.xpm | 42 - pixmaps/asdd49.xpm | 58 - pixmaps/asdd72.xpm | 81 - pixmaps/asdl33.xpm | 42 - pixmaps/asdl49.xpm | 58 - pixmaps/asdl72.xpm | 81 - pixmaps/asld33.xpm | 42 - pixmaps/asld49.xpm | 58 - pixmaps/asld72.xpm | 81 - pixmaps/asll33.xpm | 42 - pixmaps/asll49.xpm | 58 - pixmaps/asll72.xpm | 81 - pixmaps/bdd108.xpm | 117 - pixmaps/bdd116.xpm | 125 - pixmaps/bdd129.xpm | 138 - pixmaps/bdd21.xpm | 30 - pixmaps/bdd25.xpm | 34 - pixmaps/bdd29.xpm | 38 - pixmaps/bdd33.xpm | 42 - pixmaps/bdd37.xpm | 46 - pixmaps/bdd40.xpm | 49 - pixmaps/bdd45.xpm | 54 - pixmaps/bdd49.xpm | 58 - pixmaps/bdd54.xpm | 63 - pixmaps/bdd58.xpm | 67 - pixmaps/bdd64.xpm | 73 - pixmaps/bdd72.xpm | 81 - pixmaps/bdd80.xpm | 89 - pixmaps/bdd87.xpm | 96 - pixmaps/bdd95.xpm | 104 - pixmaps/bdl108.xpm | 117 - pixmaps/bdl116.xpm | 125 - pixmaps/bdl129.xpm | 138 - pixmaps/bdl21.xpm | 30 - pixmaps/bdl25.xpm | 34 - pixmaps/bdl29.xpm | 38 - pixmaps/bdl33.xpm | 42 - pixmaps/bdl37.xpm | 46 - pixmaps/bdl40.xpm | 49 - pixmaps/bdl45.xpm | 54 - pixmaps/bdl49.xpm | 58 - pixmaps/bdl54.xpm | 63 - pixmaps/bdl58.xpm | 67 - pixmaps/bdl64.xpm | 73 - pixmaps/bdl72.xpm | 81 - pixmaps/bdl80.xpm | 89 - pixmaps/bdl87.xpm | 96 - pixmaps/bdl95.xpm | 104 - pixmaps/bld108.xpm | 117 - pixmaps/bld116.xpm | 125 - pixmaps/bld129.xpm | 138 - pixmaps/bld21.xpm | 30 - pixmaps/bld25.xpm | 34 - pixmaps/bld29.xpm | 38 - pixmaps/bld33.xpm | 42 - pixmaps/bld37.xpm | 43 - pixmaps/bld40.xpm | 49 - pixmaps/bld45.xpm | 54 - pixmaps/bld49.xpm | 58 - pixmaps/bld54.xpm | 63 - pixmaps/bld58.xpm | 67 - pixmaps/bld64.xpm | 73 - pixmaps/bld72.xpm | 81 - pixmaps/bld80.xpm | 89 - pixmaps/bld87.xpm | 96 - pixmaps/bld95.xpm | 104 - pixmaps/bll108.xpm | 117 - pixmaps/bll116.xpm | 125 - pixmaps/bll129.xpm | 138 - pixmaps/bll21.xpm | 30 - pixmaps/bll25.xpm | 34 - pixmaps/bll29.xpm | 38 - pixmaps/bll33.xpm | 42 - pixmaps/bll37.xpm | 43 - pixmaps/bll40.xpm | 49 - pixmaps/bll45.xpm | 54 - pixmaps/bll49.xpm | 58 - pixmaps/bll54.xpm | 63 - pixmaps/bll58.xpm | 67 - pixmaps/bll64.xpm | 73 - pixmaps/bll72.xpm | 81 - pixmaps/bll80.xpm | 89 - pixmaps/bll87.xpm | 96 - pixmaps/bll95.xpm | 104 - pixmaps/cdd33.xpm | 42 - pixmaps/cdd37.xpm | 46 - pixmaps/cdd40.xpm | 49 - pixmaps/cdd45.xpm | 54 - pixmaps/cdd49.xpm | 58 - pixmaps/cdd54.xpm | 63 - pixmaps/cdd58.xpm | 67 - pixmaps/cdd64.xpm | 73 - pixmaps/cdd72.xpm | 81 - pixmaps/cdl33.xpm | 42 - pixmaps/cdl37.xpm | 46 - pixmaps/cdl40.xpm | 49 - pixmaps/cdl45.xpm | 54 - pixmaps/cdl49.xpm | 58 - pixmaps/cdl54.xpm | 63 - pixmaps/cdl58.xpm | 67 - pixmaps/cdl64.xpm | 73 - pixmaps/cdl72.xpm | 81 - pixmaps/cld33.xpm | 42 - pixmaps/cld37.xpm | 46 - pixmaps/cld40.xpm | 49 - pixmaps/cld45.xpm | 54 - pixmaps/cld49.xpm | 58 - pixmaps/cld54.xpm | 63 - pixmaps/cld58.xpm | 67 - pixmaps/cld64.xpm | 73 - pixmaps/cld72.xpm | 81 - pixmaps/cll33.xpm | 42 - pixmaps/cll37.xpm | 46 - pixmaps/cll40.xpm | 49 - pixmaps/cll45.xpm | 54 - pixmaps/cll49.xpm | 58 - pixmaps/cll54.xpm | 63 - pixmaps/cll58.xpm | 67 - pixmaps/cll64.xpm | 73 - pixmaps/cll72.xpm | 81 - pixmaps/convbm | 35 - pixmaps/convbm.sed | 4 - pixmaps/convbm2.sed | 5 - pixmaps/convert.c | 168 - pixmaps/cvdd33.xpm | 42 - pixmaps/cvdd37.xpm | 46 - pixmaps/cvdd40.xpm | 49 - pixmaps/cvdd45.xpm | 54 - pixmaps/cvdd49.xpm | 58 - pixmaps/cvdd54.xpm | 63 - pixmaps/cvdd58.xpm | 67 - pixmaps/cvdd64.xpm | 73 - pixmaps/cvdd72.xpm | 81 - pixmaps/cvdl33.xpm | 42 - pixmaps/cvdl37.xpm | 46 - pixmaps/cvdl40.xpm | 49 - pixmaps/cvdl45.xpm | 54 - pixmaps/cvdl49.xpm | 58 - pixmaps/cvdl54.xpm | 63 - pixmaps/cvdl58.xpm | 67 - pixmaps/cvdl64.xpm | 73 - pixmaps/cvdl72.xpm | 81 - pixmaps/cvld33.xpm | 42 - pixmaps/cvld37.xpm | 46 - pixmaps/cvld40.xpm | 49 - pixmaps/cvld45.xpm | 54 - pixmaps/cvld49.xpm | 58 - pixmaps/cvld54.xpm | 63 - pixmaps/cvld58.xpm | 67 - pixmaps/cvld64.xpm | 73 - pixmaps/cvld72.xpm | 81 - pixmaps/cvll33.xpm | 42 - pixmaps/cvll37.xpm | 46 - pixmaps/cvll40.xpm | 49 - pixmaps/cvll45.xpm | 54 - pixmaps/cvll49.xpm | 58 - pixmaps/cvll54.xpm | 63 - pixmaps/cvll58.xpm | 67 - pixmaps/cvll64.xpm | 73 - pixmaps/cvll72.xpm | 81 - pixmaps/dkdd33.xpm | 42 - pixmaps/dkdd49.xpm | 58 - pixmaps/dkdd72.xpm | 81 - pixmaps/dkdl33.xpm | 42 - pixmaps/dkdl49.xpm | 58 - pixmaps/dkdl72.xpm | 81 - pixmaps/dkld33.xpm | 42 - pixmaps/dkld49.xpm | 58 - pixmaps/dkld72.xpm | 81 - pixmaps/dkll33.xpm | 42 - pixmaps/dkll49.xpm | 58 - pixmaps/dkll72.xpm | 81 - pixmaps/edd33.xpm | 42 - pixmaps/edd49.xpm | 58 - pixmaps/edd72.xpm | 81 - pixmaps/edl33.xpm | 42 - pixmaps/edl49.xpm | 58 - pixmaps/edl72.xpm | 81 - pixmaps/eld33.xpm | 42 - pixmaps/eld49.xpm | 58 - pixmaps/eld72.xpm | 81 - pixmaps/ell33.xpm | 42 - pixmaps/ell49.xpm | 58 - pixmaps/ell72.xpm | 81 - pixmaps/fdd33.xpm | 42 - pixmaps/fdd49.xpm | 58 - pixmaps/fdd72.xpm | 81 - pixmaps/fdl33.xpm | 42 - pixmaps/fdl49.xpm | 58 - pixmaps/fdl72.xpm | 81 - pixmaps/fld33.xpm | 42 - pixmaps/fld49.xpm | 58 - pixmaps/fld72.xpm | 81 - pixmaps/fll33.xpm | 42 - pixmaps/fll49.xpm | 58 - pixmaps/fll72.xpm | 81 - pixmaps/gdd33.xpm | 42 - pixmaps/gdd49.xpm | 58 - pixmaps/gdd72.xpm | 81 - pixmaps/gdl33.xpm | 42 - pixmaps/gdl49.xpm | 58 - pixmaps/gdl72.xpm | 81 - pixmaps/gld33.xpm | 42 - pixmaps/gld49.xpm | 58 - pixmaps/gld72.xpm | 81 - pixmaps/gll33.xpm | 42 - pixmaps/gll49.xpm | 58 - pixmaps/gll72.xpm | 81 - pixmaps/hdd33.xpm | 42 - pixmaps/hdd49.xpm | 58 - pixmaps/hdd72.xpm | 81 - pixmaps/hdl33.xpm | 42 - pixmaps/hdl49.xpm | 58 - pixmaps/hdl72.xpm | 81 - pixmaps/hld33.xpm | 42 - pixmaps/hld49.xpm | 58 - pixmaps/hld72.xpm | 81 - pixmaps/hll33.xpm | 42 - pixmaps/hll49.xpm | 58 - pixmaps/hll72.xpm | 81 - pixmaps/ini32.xpm | 41 + pixmaps/ini48.xpm | 57 + pixmaps/kdd108.xpm | 117 - pixmaps/kdd116.xpm | 125 - pixmaps/kdd129.xpm | 138 - pixmaps/kdd21.xpm | 30 - pixmaps/kdd25.xpm | 34 - pixmaps/kdd29.xpm | 38 - pixmaps/kdd33.xpm | 42 - pixmaps/kdd37.xpm | 46 - pixmaps/kdd40.xpm | 46 - pixmaps/kdd45.xpm | 54 - pixmaps/kdd49.xpm | 58 - pixmaps/kdd54.xpm | 63 - pixmaps/kdd58.xpm | 67 - pixmaps/kdd64.xpm | 73 - pixmaps/kdd72.xpm | 81 - pixmaps/kdd80.xpm | 89 - pixmaps/kdd87.xpm | 96 - pixmaps/kdd95.xpm | 104 - pixmaps/kdl108.xpm | 117 - pixmaps/kdl116.xpm | 125 - pixmaps/kdl129.xpm | 138 - pixmaps/kdl21.xpm | 30 - pixmaps/kdl25.xpm | 34 - pixmaps/kdl29.xpm | 38 - pixmaps/kdl33.xpm | 42 - pixmaps/kdl37.xpm | 46 - pixmaps/kdl40.xpm | 46 - pixmaps/kdl45.xpm | 54 - pixmaps/kdl49.xpm | 58 - pixmaps/kdl54.xpm | 63 - pixmaps/kdl58.xpm | 67 - pixmaps/kdl64.xpm | 73 - pixmaps/kdl72.xpm | 81 - pixmaps/kdl80.xpm | 89 - pixmaps/kdl87.xpm | 96 - pixmaps/kdl95.xpm | 104 - pixmaps/kld108.xpm | 117 - pixmaps/kld116.xpm | 125 - pixmaps/kld129.xpm | 138 - pixmaps/kld21.xpm | 30 - pixmaps/kld25.xpm | 34 - pixmaps/kld29.xpm | 38 - pixmaps/kld33.xpm | 42 - pixmaps/kld37.xpm | 46 - pixmaps/kld40.xpm | 46 - pixmaps/kld45.xpm | 54 - pixmaps/kld49.xpm | 58 - pixmaps/kld54.xpm | 63 - pixmaps/kld58.xpm | 67 - pixmaps/kld64.xpm | 73 - pixmaps/kld72.xpm | 81 - pixmaps/kld80.xpm | 89 - pixmaps/kld87.xpm | 96 - pixmaps/kld95.xpm | 104 - pixmaps/kll108.xpm | 117 - pixmaps/kll116.xpm | 125 - pixmaps/kll129.xpm | 138 - pixmaps/kll21.xpm | 30 - pixmaps/kll25.xpm | 34 - pixmaps/kll29.xpm | 38 - pixmaps/kll33.xpm | 42 - pixmaps/kll37.xpm | 46 - pixmaps/kll40.xpm | 46 - pixmaps/kll45.xpm | 54 - pixmaps/kll49.xpm | 58 - pixmaps/kll54.xpm | 63 - pixmaps/kll58.xpm | 67 - pixmaps/kll64.xpm | 73 - pixmaps/kll72.xpm | 81 - pixmaps/kll80.xpm | 89 - pixmaps/kll87.xpm | 96 - pixmaps/kll95.xpm | 104 - pixmaps/ldd33.xpm | 42 - pixmaps/ldd37.xpm | 46 - pixmaps/ldd40.xpm | 49 - pixmaps/ldd45.xpm | 54 - pixmaps/ldd49.xpm | 58 - pixmaps/ldd54.xpm | 63 - pixmaps/ldd58.xpm | 67 - pixmaps/ldd64.xpm | 73 - pixmaps/ldd72.xpm | 81 - pixmaps/ldl33.xpm | 42 - pixmaps/ldl37.xpm | 46 - pixmaps/ldl40.xpm | 49 - pixmaps/ldl45.xpm | 54 - pixmaps/ldl49.xpm | 58 - pixmaps/ldl54.xpm | 63 - pixmaps/ldl58.xpm | 67 - pixmaps/ldl64.xpm | 73 - pixmaps/ldl72.xpm | 81 - pixmaps/lld33.xpm | 42 - pixmaps/lld37.xpm | 46 - pixmaps/lld40.xpm | 49 - pixmaps/lld45.xpm | 54 - pixmaps/lld49.xpm | 58 - pixmaps/lld54.xpm | 63 - pixmaps/lld58.xpm | 67 - pixmaps/lld64.xpm | 73 - pixmaps/lld72.xpm | 81 - pixmaps/lll33.xpm | 42 - pixmaps/lll37.xpm | 46 - pixmaps/lll40.xpm | 49 - pixmaps/lll45.xpm | 54 - pixmaps/lll49.xpm | 58 - pixmaps/lll54.xpm | 63 - pixmaps/lll58.xpm | 67 - pixmaps/lll64.xpm | 73 - pixmaps/lll72.xpm | 81 - pixmaps/marble_d.xpm | 238 -- pixmaps/marble_l.xpm | 359 -- pixmaps/mdd33.xpm | 42 - pixmaps/mdd49.xpm | 58 - pixmaps/mdd72.xpm | 81 - pixmaps/mdl33.xpm | 42 - pixmaps/mdl49.xpm | 58 - pixmaps/mdl72.xpm | 81 - pixmaps/mld33.xpm | 42 - pixmaps/mld49.xpm | 58 - pixmaps/mld72.xpm | 81 - pixmaps/mll33.xpm | 42 - pixmaps/mll49.xpm | 58 - pixmaps/mll72.xpm | 81 - pixmaps/ndd108.xpm | 117 - pixmaps/ndd116.xpm | 125 - pixmaps/ndd129.xpm | 138 - pixmaps/ndd21.xpm | 30 - pixmaps/ndd25.xpm | 34 - pixmaps/ndd29.xpm | 35 - pixmaps/ndd33.xpm | 42 - pixmaps/ndd37.xpm | 43 - pixmaps/ndd40.xpm | 46 - pixmaps/ndd45.xpm | 51 - pixmaps/ndd49.xpm | 55 - pixmaps/ndd54.xpm | 63 - pixmaps/ndd58.xpm | 67 - pixmaps/ndd64.xpm | 73 - pixmaps/ndd72.xpm | 81 - pixmaps/ndd80.xpm | 89 - pixmaps/ndd87.xpm | 96 - pixmaps/ndd95.xpm | 104 - pixmaps/ndl108.xpm | 117 - pixmaps/ndl116.xpm | 125 - pixmaps/ndl129.xpm | 138 - pixmaps/ndl21.xpm | 30 - pixmaps/ndl25.xpm | 34 - pixmaps/ndl29.xpm | 35 - pixmaps/ndl33.xpm | 42 - pixmaps/ndl37.xpm | 43 - pixmaps/ndl40.xpm | 46 - pixmaps/ndl45.xpm | 51 - pixmaps/ndl49.xpm | 55 - pixmaps/ndl54.xpm | 63 - pixmaps/ndl58.xpm | 67 - pixmaps/ndl64.xpm | 73 - pixmaps/ndl72.xpm | 81 - pixmaps/ndl80.xpm | 89 - pixmaps/ndl87.xpm | 96 - pixmaps/ndl95.xpm | 104 - pixmaps/nld108.xpm | 117 - pixmaps/nld116.xpm | 125 - pixmaps/nld129.xpm | 138 - pixmaps/nld21.xpm | 30 - pixmaps/nld25.xpm | 34 - pixmaps/nld29.xpm | 38 - pixmaps/nld33.xpm | 42 - pixmaps/nld37.xpm | 46 - pixmaps/nld40.xpm | 46 - pixmaps/nld45.xpm | 51 - pixmaps/nld49.xpm | 58 - pixmaps/nld54.xpm | 63 - pixmaps/nld58.xpm | 67 - pixmaps/nld64.xpm | 73 - pixmaps/nld72.xpm | 81 - pixmaps/nld80.xpm | 89 - pixmaps/nld87.xpm | 96 - pixmaps/nld95.xpm | 104 - pixmaps/nll108.xpm | 117 - pixmaps/nll116.xpm | 125 - pixmaps/nll129.xpm | 138 - pixmaps/nll21.xpm | 30 - pixmaps/nll25.xpm | 34 - pixmaps/nll29.xpm | 38 - pixmaps/nll33.xpm | 42 - pixmaps/nll37.xpm | 46 - pixmaps/nll40.xpm | 46 - pixmaps/nll45.xpm | 51 - pixmaps/nll49.xpm | 58 - pixmaps/nll54.xpm | 63 - pixmaps/nll58.xpm | 67 - pixmaps/nll64.xpm | 73 - pixmaps/nll72.xpm | 81 - pixmaps/nll80.xpm | 89 - pixmaps/nll87.xpm | 96 - pixmaps/nll95.xpm | 104 - pixmaps/odd33.xpm | 42 - pixmaps/odd49.xpm | 58 - pixmaps/odd72.xpm | 81 - pixmaps/odl33.xpm | 42 - pixmaps/odl49.xpm | 58 - pixmaps/odl72.xpm | 81 - pixmaps/old33.xpm | 42 - pixmaps/old49.xpm | 58 - pixmaps/old72.xpm | 81 - pixmaps/oll33.xpm | 42 - pixmaps/oll49.xpm | 58 - pixmaps/oll72.xpm | 81 - pixmaps/pdd108.xpm | 116 - pixmaps/pdd116.xpm | 124 - pixmaps/pdd129.xpm | 137 - pixmaps/pdd21.xpm | 29 - pixmaps/pdd25.xpm | 33 - pixmaps/pdd29.xpm | 37 - pixmaps/pdd33.xpm | 41 - pixmaps/pdd37.xpm | 45 - pixmaps/pdd40.xpm | 48 - pixmaps/pdd45.xpm | 53 - pixmaps/pdd49.xpm | 57 - pixmaps/pdd54.xpm | 62 - pixmaps/pdd58.xpm | 66 - pixmaps/pdd64.xpm | 72 - pixmaps/pdd72.xpm | 80 - pixmaps/pdd80.xpm | 88 - pixmaps/pdd87.xpm | 95 - pixmaps/pdd95.xpm | 103 - pixmaps/pdl108.xpm | 116 - pixmaps/pdl116.xpm | 124 - pixmaps/pdl129.xpm | 137 - pixmaps/pdl21.xpm | 29 - pixmaps/pdl25.xpm | 33 - pixmaps/pdl29.xpm | 37 - pixmaps/pdl33.xpm | 41 - pixmaps/pdl37.xpm | 45 - pixmaps/pdl40.xpm | 48 - pixmaps/pdl45.xpm | 53 - pixmaps/pdl49.xpm | 57 - pixmaps/pdl54.xpm | 62 - pixmaps/pdl58.xpm | 66 - pixmaps/pdl64.xpm | 72 - pixmaps/pdl72.xpm | 80 - pixmaps/pdl80.xpm | 88 - pixmaps/pdl87.xpm | 95 - pixmaps/pdl95.xpm | 103 - pixmaps/pixmaps.h | 1349 ------- pixmaps/pld108.xpm | 117 - pixmaps/pld116.xpm | 125 - pixmaps/pld129.xpm | 138 - pixmaps/pld21.xpm | 30 - pixmaps/pld25.xpm | 34 - pixmaps/pld29.xpm | 38 - pixmaps/pld33.xpm | 42 - pixmaps/pld37.xpm | 46 - pixmaps/pld40.xpm | 49 - pixmaps/pld45.xpm | 54 - pixmaps/pld49.xpm | 58 - pixmaps/pld54.xpm | 63 - pixmaps/pld58.xpm | 67 - pixmaps/pld64.xpm | 73 - pixmaps/pld72.xpm | 81 - pixmaps/pld80.xpm | 89 - pixmaps/pld87.xpm | 96 - pixmaps/pld95.xpm | 104 - pixmaps/pll108.xpm | 117 - pixmaps/pll116.xpm | 125 - pixmaps/pll129.xpm | 138 - pixmaps/pll21.xpm | 30 - pixmaps/pll25.xpm | 34 - pixmaps/pll29.xpm | 38 - pixmaps/pll33.xpm | 42 - pixmaps/pll37.xpm | 46 - pixmaps/pll40.xpm | 49 - pixmaps/pll45.xpm | 54 - pixmaps/pll49.xpm | 58 - pixmaps/pll54.xpm | 63 - pixmaps/pll58.xpm | 67 - pixmaps/pll64.xpm | 73 - pixmaps/pll72.xpm | 81 - pixmaps/pll80.xpm | 89 - pixmaps/pll87.xpm | 96 - pixmaps/pll95.xpm | 104 - pixmaps/qdd108.xpm | 117 - pixmaps/qdd116.xpm | 125 - pixmaps/qdd129.xpm | 138 - pixmaps/qdd21.xpm | 30 - pixmaps/qdd25.xpm | 31 - pixmaps/qdd29.xpm | 38 - pixmaps/qdd33.xpm | 42 - pixmaps/qdd37.xpm | 46 - pixmaps/qdd40.xpm | 49 - pixmaps/qdd45.xpm | 54 - pixmaps/qdd49.xpm | 58 - pixmaps/qdd54.xpm | 63 - pixmaps/qdd58.xpm | 67 - pixmaps/qdd64.xpm | 73 - pixmaps/qdd72.xpm | 78 - pixmaps/qdd80.xpm | 89 - pixmaps/qdd87.xpm | 96 - pixmaps/qdd95.xpm | 104 - pixmaps/qdl108.xpm | 117 - pixmaps/qdl116.xpm | 125 - pixmaps/qdl129.xpm | 138 - pixmaps/qdl21.xpm | 30 - pixmaps/qdl25.xpm | 31 - pixmaps/qdl29.xpm | 38 - pixmaps/qdl33.xpm | 42 - pixmaps/qdl37.xpm | 46 - pixmaps/qdl40.xpm | 49 - pixmaps/qdl45.xpm | 54 - pixmaps/qdl49.xpm | 58 - pixmaps/qdl54.xpm | 63 - pixmaps/qdl58.xpm | 67 - pixmaps/qdl64.xpm | 73 - pixmaps/qdl72.xpm | 78 - pixmaps/qdl80.xpm | 89 - pixmaps/qdl87.xpm | 96 - pixmaps/qdl95.xpm | 104 - pixmaps/qld108.xpm | 117 - pixmaps/qld116.xpm | 125 - pixmaps/qld129.xpm | 138 - pixmaps/qld21.xpm | 30 - pixmaps/qld25.xpm | 31 - pixmaps/qld29.xpm | 38 - pixmaps/qld33.xpm | 42 - pixmaps/qld37.xpm | 46 - pixmaps/qld40.xpm | 49 - pixmaps/qld45.xpm | 54 - pixmaps/qld49.xpm | 58 - pixmaps/qld54.xpm | 63 - pixmaps/qld58.xpm | 67 - pixmaps/qld64.xpm | 73 - pixmaps/qld72.xpm | 78 - pixmaps/qld80.xpm | 89 - pixmaps/qld87.xpm | 96 - pixmaps/qld95.xpm | 104 - pixmaps/qll108.xpm | 117 - pixmaps/qll116.xpm | 125 - pixmaps/qll129.xpm | 138 - pixmaps/qll21.xpm | 30 - pixmaps/qll25.xpm | 31 - pixmaps/qll29.xpm | 38 - pixmaps/qll33.xpm | 42 - pixmaps/qll37.xpm | 46 - pixmaps/qll40.xpm | 49 - pixmaps/qll45.xpm | 54 - pixmaps/qll49.xpm | 58 - pixmaps/qll54.xpm | 63 - pixmaps/qll58.xpm | 67 - pixmaps/qll64.xpm | 73 - pixmaps/qll72.xpm | 78 - pixmaps/qll80.xpm | 89 - pixmaps/qll87.xpm | 96 - pixmaps/qll95.xpm | 104 - pixmaps/rdd108.xpm | 117 - pixmaps/rdd116.xpm | 125 - pixmaps/rdd129.xpm | 138 - pixmaps/rdd21.xpm | 30 - pixmaps/rdd25.xpm | 34 - pixmaps/rdd29.xpm | 38 - pixmaps/rdd33.xpm | 42 - pixmaps/rdd37.xpm | 46 - pixmaps/rdd40.xpm | 46 - pixmaps/rdd45.xpm | 54 - pixmaps/rdd49.xpm | 58 - pixmaps/rdd54.xpm | 63 - pixmaps/rdd58.xpm | 67 - pixmaps/rdd64.xpm | 73 - pixmaps/rdd72.xpm | 81 - pixmaps/rdd80.xpm | 89 - pixmaps/rdd87.xpm | 96 - pixmaps/rdd95.xpm | 104 - pixmaps/rdl108.xpm | 117 - pixmaps/rdl116.xpm | 125 - pixmaps/rdl129.xpm | 138 - pixmaps/rdl21.xpm | 30 - pixmaps/rdl25.xpm | 34 - pixmaps/rdl29.xpm | 38 - pixmaps/rdl33.xpm | 42 - pixmaps/rdl37.xpm | 46 - pixmaps/rdl40.xpm | 46 - pixmaps/rdl45.xpm | 54 - pixmaps/rdl49.xpm | 58 - pixmaps/rdl54.xpm | 63 - pixmaps/rdl58.xpm | 67 - pixmaps/rdl64.xpm | 73 - pixmaps/rdl72.xpm | 81 - pixmaps/rdl80.xpm | 89 - pixmaps/rdl87.xpm | 96 - pixmaps/rdl95.xpm | 104 - pixmaps/rld108.xpm | 117 - pixmaps/rld116.xpm | 125 - pixmaps/rld129.xpm | 138 - pixmaps/rld21.xpm | 30 - pixmaps/rld25.xpm | 34 - pixmaps/rld29.xpm | 38 - pixmaps/rld33.xpm | 42 - pixmaps/rld37.xpm | 46 - pixmaps/rld40.xpm | 49 - pixmaps/rld45.xpm | 54 - pixmaps/rld49.xpm | 58 - pixmaps/rld54.xpm | 63 - pixmaps/rld58.xpm | 67 - pixmaps/rld64.xpm | 73 - pixmaps/rld72.xpm | 81 - pixmaps/rld80.xpm | 89 - pixmaps/rld87.xpm | 96 - pixmaps/rld95.xpm | 104 - pixmaps/rll108.xpm | 117 - pixmaps/rll116.xpm | 125 - pixmaps/rll129.xpm | 138 - pixmaps/rll21.xpm | 30 - pixmaps/rll25.xpm | 34 - pixmaps/rll29.xpm | 38 - pixmaps/rll33.xpm | 42 - pixmaps/rll37.xpm | 46 - pixmaps/rll40.xpm | 49 - pixmaps/rll45.xpm | 54 - pixmaps/rll49.xpm | 58 - pixmaps/rll54.xpm | 63 - pixmaps/rll58.xpm | 67 - pixmaps/rll64.xpm | 73 - pixmaps/rll72.xpm | 81 - pixmaps/rll80.xpm | 89 - pixmaps/rll87.xpm | 96 - pixmaps/rll95.xpm | 104 - pixmaps/sdd49.xpm | 58 - pixmaps/sdd72.xpm | 81 - pixmaps/sdl49.xpm | 58 - pixmaps/sdl72.xpm | 81 - pixmaps/sld49.xpm | 58 - pixmaps/sld72.xpm | 81 - pixmaps/sll49.xpm | 58 - pixmaps/sll72.xpm | 81 - pixmaps/test.c | 13 - pixmaps/udd49.xpm | 58 - pixmaps/udd72.xpm | 81 - pixmaps/udl49.xpm | 58 - pixmaps/udl72.xpm | 81 - pixmaps/uld49.xpm | 58 - pixmaps/uld72.xpm | 81 - pixmaps/ull49.xpm | 58 - pixmaps/ull72.xpm | 81 - pixmaps/vdd33.xpm | 42 - pixmaps/vdd49.xpm | 58 - pixmaps/vdd72.xpm | 81 - pixmaps/vdl33.xpm | 42 - pixmaps/vdl49.xpm | 58 - pixmaps/vdl72.xpm | 81 - pixmaps/vld33.xpm | 42 - pixmaps/vld49.xpm | 58 - pixmaps/vld72.xpm | 81 - pixmaps/vll33.xpm | 42 - pixmaps/vll49.xpm | 58 - pixmaps/vll72.xpm | 81 - pixmaps/wdd33.xpm | 42 - pixmaps/wdd49.xpm | 58 - pixmaps/wdd72.xpm | 81 - pixmaps/wdl33.xpm | 42 - pixmaps/wdl49.xpm | 58 - pixmaps/wdl72.xpm | 81 - pixmaps/wld33.xpm | 42 - pixmaps/wld49.xpm | 58 - pixmaps/wld72.xpm | 81 - pixmaps/wldd49.xpm | 58 - pixmaps/wldd72.xpm | 81 - pixmaps/wldl49.xpm | 58 - pixmaps/wldl72.xpm | 81 - pixmaps/wll33.xpm | 42 - pixmaps/wll49.xpm | 58 - pixmaps/wll72.xpm | 81 - pixmaps/wlld49.xpm | 58 - pixmaps/wlld72.xpm | 81 - pixmaps/wlll49.xpm | 58 - pixmaps/wlll72.xpm | 81 - pixmaps/wndd49.xpm | 58 - pixmaps/wndd72.xpm | 81 - pixmaps/wndl49.xpm | 58 - pixmaps/wndl72.xpm | 81 - pixmaps/wnld49.xpm | 58 - pixmaps/wnld72.xpm | 81 - pixmaps/wnll49.xpm | 58 - pixmaps/wnll72.xpm | 81 - pixmaps/wood_d.xpm | 239 -- pixmaps/wood_l.xpm | 192 - pixmaps/wpdd49.xpm | 58 - pixmaps/wpdd72.xpm | 81 - pixmaps/wpdl49.xpm | 58 - pixmaps/wpdl72.xpm | 81 - pixmaps/wpld49.xpm | 58 - pixmaps/wpld72.xpm | 81 - pixmaps/wpll49.xpm | 58 - pixmaps/wpll72.xpm | 81 - pixmaps/wsdd49.xpm | 58 - pixmaps/wsdd72.xpm | 81 - pixmaps/wsdl49.xpm | 58 - pixmaps/wsdl72.xpm | 81 - pixmaps/wsld49.xpm | 58 - pixmaps/wsld72.xpm | 81 - pixmaps/wsll49.xpm | 58 - pixmaps/wsll72.xpm | 81 - pixmaps/xqboard.xpm | 498 --- pixmaps/xqwood.xpm | 597 --- png/BlackAdvisor.png | Bin 0 -> 1928 bytes png/BlackArchbishop.png | Bin 0 -> 1856 bytes png/BlackBishop.png | Bin 0 -> 1478 bytes png/BlackCanon.png | Bin 0 -> 1302 bytes png/BlackChancellor.png | Bin 0 -> 2147 bytes png/BlackCobra.png | Bin 0 -> 1308 bytes png/BlackCommoner.png | Bin 0 -> 1954 bytes png/BlackCrownedBishop.png | Bin 0 -> 1537 bytes png/BlackCrownedRook.png | Bin 0 -> 1133 bytes png/BlackElephant.png | Bin 0 -> 2437 bytes png/BlackGold.png | Bin 0 -> 2198 bytes png/BlackGoldKnight.png | Bin 0 -> 2219 bytes png/BlackGoldLance.png | Bin 0 -> 2268 bytes png/BlackGoldPawn.png | Bin 0 -> 1936 bytes png/BlackGoldSilver.png | Bin 0 -> 2161 bytes png/BlackHawk.png | Bin 0 -> 2071 bytes png/BlackKing.png | Bin 0 -> 3255 bytes png/BlackKnight.png | Bin 0 -> 2715 bytes png/BlackLance.png | Bin 0 -> 810 bytes png/BlackMarshall.png | Bin 0 -> 2143 bytes png/BlackNightrider.png | Bin 0 -> 2930 bytes png/BlackPawn.png | Bin 0 -> 800 bytes png/BlackPrincess.png | Bin 0 -> 1845 bytes png/BlackQueen.png | Bin 0 -> 2165 bytes png/BlackRook.png | Bin 0 -> 885 bytes png/BlackUnicorn.png | Bin 0 -> 2035 bytes png/WhiteAdvisor.png | Bin 0 -> 2836 bytes png/WhiteArchbishop.png | Bin 0 -> 2452 bytes png/WhiteBishop.png | Bin 0 -> 2607 bytes png/WhiteCanon.png | Bin 0 -> 1914 bytes png/WhiteChancellor.png | Bin 0 -> 2490 bytes png/WhiteCobra.png | Bin 0 -> 2336 bytes png/WhiteCommoner.png | Bin 0 -> 2879 bytes png/WhiteCrownedBishop.png | Bin 0 -> 2626 bytes png/WhiteCrownedRook.png | Bin 0 -> 1492 bytes png/WhiteElephant.png | Bin 0 -> 3871 bytes png/WhiteGold.png | Bin 0 -> 3141 bytes png/WhiteGoldKnight.png | Bin 0 -> 3183 bytes png/WhiteGoldLance.png | Bin 0 -> 3240 bytes png/WhiteGoldPawn.png | Bin 0 -> 2909 bytes png/WhiteGoldSilver.png | Bin 0 -> 3166 bytes png/WhiteHawk.png | Bin 0 -> 3078 bytes png/WhiteKing.png | Bin 0 -> 3159 bytes png/WhiteKnight.png | Bin 0 -> 2926 bytes png/WhiteLance.png | Bin 0 -> 1611 bytes png/WhiteMarshall.png | Bin 0 -> 2876 bytes png/WhiteNightrider.png | Bin 0 -> 2926 bytes png/WhitePawn.png | Bin 0 -> 1609 bytes png/WhitePrincess.png | Bin 0 -> 3630 bytes png/WhiteQueen.png | Bin 0 -> 4397 bytes png/WhiteRook.png | Bin 0 -> 1072 bytes png/WhiteUnicorn.png | Bin 0 -> 3162 bytes png/hatch.png | Bin 0 -> 397 bytes png/marble_d.png | Bin 0 -> 40546 bytes png/marble_l.png | Bin 0 -> 47660 bytes png/wood_d.png | Bin 0 -> 34729 bytes png/wood_l.png | Bin 0 -> 30195 bytes png/xqboard.png | Bin 0 -> 4423 bytes png/xqwood.png | Bin 0 -> 359345 bytes po/POTFILES.in | 25 +- po/da.po | 3791 ++++++++++--------- po/de.po | 3806 ++++++++++--------- po/es.po | 3341 ++++++++-------- po/it.po | 3331 ++++++++-------- po/lng2po.sh | 2 +- po/ru.po | 3343 ++++++++-------- po/tr.po | 3017 ++++++++------- po/uk.po | 3831 ++++++++++--------- po/vi.po | 3120 ++++++++------- po/xboard.pot | 2609 +++++++------ po/zh_CN.po | 3332 ++++++++-------- po/zh_HK.po | 3316 ++++++++-------- po/zh_TW.po | 3302 ++++++++-------- shogipixmaps/bdd64.xpm | 73 - shogipixmaps/bdl64.xpm | 73 - shogipixmaps/bld64.xpm | 74 - shogipixmaps/bll64.xpm | 74 - shogipixmaps/fdd64.xpm | 73 - shogipixmaps/fdl64.xpm | 73 - shogipixmaps/fld64.xpm | 74 - shogipixmaps/fll64.xpm | 74 - shogipixmaps/kdd64.xpm | 73 - shogipixmaps/kdl64.xpm | 73 - shogipixmaps/kld64.xpm | 73 - shogipixmaps/kll64.xpm | 73 - shogipixmaps/ldd64.xpm | 73 - shogipixmaps/ldl64.xpm | 73 - shogipixmaps/lld64.xpm | 73 - shogipixmaps/lll64.xpm | 73 - shogipixmaps/ndd64.xpm | 73 - shogipixmaps/ndl64.xpm | 73 - shogipixmaps/nld64.xpm | 74 - shogipixmaps/nll64.xpm | 74 - shogipixmaps/pdd64.xpm | 73 - shogipixmaps/pdl64.xpm | 73 - shogipixmaps/pld64.xpm | 74 - shogipixmaps/pll64.xpm | 74 - shogipixmaps/qdd64.xpm | 73 - shogipixmaps/qdl64.xpm | 73 - shogipixmaps/qld64.xpm | 73 - shogipixmaps/qll64.xpm | 73 - shogipixmaps/rdd64.xpm | 73 - shogipixmaps/rdl64.xpm | 73 - shogipixmaps/rld64.xpm | 73 - shogipixmaps/rll64.xpm | 73 - shogipixmaps/wdd64.xpm | 73 - shogipixmaps/wdl64.xpm | 73 - shogipixmaps/wld64.xpm | 73 - shogipixmaps/wldd64.xpm | 73 - shogipixmaps/wldl64.xpm | 73 - shogipixmaps/wll64.xpm | 73 - shogipixmaps/wlld64.xpm | 73 - shogipixmaps/wlll64.xpm | 73 - shogipixmaps/wndd64.xpm | 73 - shogipixmaps/wndl64.xpm | 73 - shogipixmaps/wnld64.xpm | 73 - shogipixmaps/wnll64.xpm | 73 - shogipixmaps/wpdd64.xpm | 73 - shogipixmaps/wpdl64.xpm | 73 - shogipixmaps/wpld64.xpm | 73 - shogipixmaps/wpll64.xpm | 73 - shogipixmaps/wsdd64.xpm | 73 - shogipixmaps/wsdl64.xpm | 73 - shogipixmaps/wsld64.xpm | 73 - shogipixmaps/wsll64.xpm | 73 - svg/BlackAdvisor.svg | 70 + svg/BlackArchbishop.svg | 92 + svg/BlackBishop.svg | 78 + svg/BlackCanon.svg | 68 + svg/BlackChancellor.svg | 73 + svg/BlackCobra.svg | 78 + svg/BlackCommoner.svg | 71 + svg/BlackCrownedBishop.svg | 73 + svg/BlackCrownedRook.svg | 82 + svg/BlackElephant.svg | 98 + svg/BlackGold.svg | 63 + svg/BlackGoldKnight.svg | 63 + svg/BlackGoldLance.svg | 63 + svg/BlackGoldPawn.svg | 58 + svg/BlackGoldSilver.svg | 63 + svg/BlackHawk.svg | 98 + svg/BlackKing.svg | 83 + svg/BlackKnight.svg | 48 + svg/BlackLance.svg | 58 + svg/BlackMarshall.svg | 77 + svg/BlackNightrider.svg | 58 + svg/BlackPawn.svg | 38 + svg/BlackPrincess.svg | 98 + svg/BlackQueen.svg | 58 + svg/BlackRook.svg | 78 + svg/BlackUnicorn.svg | 63 + svg/WhiteAdvisor.svg | 65 + svg/WhiteArchbishop.svg | 86 + svg/WhiteBishop.svg | 72 + svg/WhiteCanon.svg | 62 + svg/WhiteChancellor.svg | 91 + svg/WhiteCobra.svg | 68 + svg/WhiteCommoner.svg | 63 + svg/WhiteCrownedBishop.svg | 68 + svg/WhiteCrownedRook.svg | 73 + svg/WhiteElephant.svg | 87 + svg/WhiteGold.svg | 63 + svg/WhiteGoldKnight.svg | 63 + svg/WhiteGoldLance.svg | 63 + svg/WhiteGoldPawn.svg | 58 + svg/WhiteGoldSilver.svg | 63 + svg/WhiteHawk.svg | 94 + svg/WhiteKing.svg | 73 + svg/WhiteKnight.svg | 58 + svg/WhiteLance.svg | 58 + svg/WhiteMarshall.svg | 80 + svg/WhiteNightrider.svg | 58 + svg/WhitePawn.svg | 38 + svg/WhitePrincess.svg | 98 + svg/WhiteQueen.svg | 110 + svg/WhiteRook.svg | 68 + svg/WhiteUnicorn.svg | 77 + svg/eo_Analyzing.svg | 115 + svg/eo_Black.svg | 84 + svg/eo_Clear.svg | 36 + svg/eo_Ponder.svg | 111 + svg/eo_Thinking.svg | 132 + svg/eo_Unknown.svg | 84 + svg/eo_White.svg | 84 + svg/icon_black.svg | 41 + svg/icon_white.svg | 41 + themes/Mono/BlackAdvisor.svg | 92 + themes/Mono/BlackArchbishop.svg | 111 + themes/Mono/BlackBishop.svg | 100 + themes/Mono/BlackCanon.svg | 92 + themes/Mono/BlackChancellor.svg | 90 + themes/Mono/BlackCobra.svg | 99 + themes/Mono/BlackCommoner.svg | 92 + themes/Mono/BlackCrownedBishop.svg | 95 + themes/Mono/BlackCrownedRook.svg | 106 + themes/Mono/BlackElephant.svg | 120 + themes/Mono/BlackGold.svg | 85 + themes/Mono/BlackGoldKnight.svg | 85 + themes/Mono/BlackGoldLance.svg | 85 + themes/Mono/BlackGoldPawn.svg | 80 + themes/Mono/BlackGoldSilver.svg | 85 + themes/Mono/BlackHawk.svg | 125 + themes/Mono/BlackKing.svg | 104 + themes/Mono/BlackKnight.svg | 66 + themes/Mono/BlackLance.svg | 81 + themes/Mono/BlackMarshall.svg | 99 + themes/Mono/BlackNightrider.svg | 76 + themes/Mono/BlackPawn.svg | 65 + themes/Mono/BlackPrincess.svg | 120 + themes/Mono/BlackQueen.svg | 80 + themes/Mono/BlackRook.svg | 106 + themes/Mono/BlackUnicorn.svg | 81 + themes/Mono/WhiteAdvisor.svg | 89 + themes/Mono/WhiteArchbishop.svg | 112 + themes/Mono/WhiteBishop.svg | 97 + themes/Mono/WhiteCanon.svg | 86 + themes/Mono/WhiteChancellor.svg | 105 + themes/Mono/WhiteCobra.svg | 92 + themes/Mono/WhiteCommoner.svg | 87 + themes/Mono/WhiteCrownedBishop.svg | 92 + themes/Mono/WhiteCrownedRook.svg | 97 + themes/Mono/WhiteElephant.svg | 107 + themes/Mono/WhiteGold.svg | 87 + themes/Mono/WhiteGoldKnight.svg | 80 + themes/Mono/WhiteGoldLance.svg | 87 + themes/Mono/WhiteGoldPawn.svg | 82 + themes/Mono/WhiteGoldSilver.svg | 87 + themes/Mono/WhiteHawk.svg | 120 + themes/Mono/WhiteKing.svg | 97 + themes/Mono/WhiteKnight.svg | 75 + themes/Mono/WhiteLance.svg | 75 + themes/Mono/WhiteMarshall.svg | 106 + themes/Mono/WhiteNightrider.svg | 72 + themes/Mono/WhitePawn.svg | 62 + themes/Mono/WhitePrincess.svg | 122 + themes/Mono/WhiteQueen.svg | 134 + themes/Mono/WhiteRook.svg | 92 + themes/Mono/WhiteUnicorn.svg | 85 + themes/Mono/eo_Analyzing.svg | 71 + themes/Mono/eo_Black.svg | 64 + themes/Mono/eo_Clear.svg | 36 + themes/Mono/eo_Ponder.svg | 71 + themes/Mono/eo_Thinking.svg | 185 + themes/Mono/eo_Unknown.svg | 36 + themes/Mono/eo_White.svg | 36 + themes/Mono/icon_black.svg | 41 + themes/Mono/icon_white.svg | 41 + themes/Mono/shogi_bishop.svg | 119 + themes/Mono/shogi_bishop_promoted.svg | 83 + themes/Mono/shogi_gold.svg | 153 + themes/Mono/shogi_king.svg | 125 + themes/Mono/shogi_knight.svg | 138 + themes/Mono/shogi_knight_promoted.svg | 65 + themes/Mono/shogi_lance.svg | 134 + themes/Mono/shogi_lance_promoted.svg | 65 + themes/Mono/shogi_pawn.svg | 108 + themes/Mono/shogi_pawn_promoted.svg | 54 + themes/Mono/shogi_rook.svg | 137 + themes/Mono/shogi_rook_promoted.svg | 112 + themes/Mono/shogi_silver.svg | 163 + themes/Mono/shogi_silver_promoted.svg | 73 + themes/shogi/BlackAdvisor.svg | 187 + themes/shogi/BlackBishop.svg | 143 + themes/shogi/BlackCrownedBishop.svg | 107 + themes/shogi/BlackCrownedRook.svg | 136 + themes/shogi/BlackGold.svg | 177 + themes/shogi/BlackGoldKnight.svg | 89 + themes/shogi/BlackGoldLance.svg | 89 + themes/shogi/BlackGoldPawn.svg | 78 + themes/shogi/BlackGoldSilver.svg | 97 + themes/shogi/BlackKing.svg | 149 + themes/shogi/BlackKnight.svg | 162 + themes/shogi/BlackLance.svg | 158 + themes/shogi/BlackPawn.svg | 132 + themes/shogi/BlackRook.svg | 161 + themes/shogi/WhiteAdvisor.svg | 163 + themes/shogi/WhiteBishop.svg | 119 + themes/shogi/WhiteCrownedBishop.svg | 83 + themes/shogi/WhiteCrownedRook.svg | 112 + themes/shogi/WhiteGold.svg | 153 + themes/shogi/WhiteGoldKnight.svg | 65 + themes/shogi/WhiteGoldLance.svg | 65 + themes/shogi/WhiteGoldPawn.svg | 54 + themes/shogi/WhiteGoldSilver.svg | 73 + themes/shogi/WhiteKing.svg | 125 + themes/shogi/WhiteKnight.svg | 138 + themes/shogi/WhiteLance.svg | 134 + themes/shogi/WhitePawn.svg | 108 + themes/shogi/WhiteRook.svg | 137 + themes/xiangqi/.DS_Store | Bin 0 -> 6148 bytes themes/xiangqi/BlackAdvisor.svg | 86 + themes/xiangqi/BlackCanon.svg | 81 + themes/xiangqi/BlackElephant.svg | 80 + themes/xiangqi/BlackGold.svg | 80 + themes/xiangqi/BlackKnight.svg | 81 + themes/xiangqi/BlackPawn.svg | 83 + themes/xiangqi/BlackRook.svg | 80 + themes/xiangqi/WhiteAdvisor.svg | 90 + themes/xiangqi/WhiteCanon.svg | 85 + themes/xiangqi/WhiteElephant.svg | 85 + themes/xiangqi/WhiteGold.svg | 85 + themes/xiangqi/WhiteKnight.svg | 85 + themes/xiangqi/WhitePawn.svg | 85 + themes/xiangqi/WhiteRook.svg | 86 + uci.c | 2 +- usounds.c | 174 + usystem.c | 792 ++++ usystem.h | 75 + winboard/config.h | 6 +- winboard/defaults.h | 2 +- winboard/help.c | 2 +- winboard/help/html/24.htm | 2 +- winboard/jaws.c | 2 +- winboard/language.txt | 45 +- winboard/language/deutsch.lng | 2 +- winboard/language/italiano.lng | 2 +- winboard/language/nederlands.lng | 46 +- winboard/language/romanian.lng | 2 +- winboard/language/russian.lng | 2 +- winboard/language/spanish.lng | 2 +- winboard/language/vietnamese.lng | 2 +- winboard/resource.h | 7 +- winboard/wchat.c | 2 +- winboard/wclipbrd.c | 2 +- winboard/wclipbrd.h | 2 +- winboard/wedittags.c | 2 +- winboard/wengineoutput.c | 4 +- winboard/wevalgraph.c | 4 +- winboard/wgamelist.c | 23 +- winboard/winboard.c | 259 +- winboard/winboard.h | 6 +- winboard/winboard.rc | 28 +- winboard/wlayout.c | 12 +- winboard/woptions.c | 46 +- winboard/woptions.h | 2 +- winboard/wsettings.c | 250 +- winboard/wsockerr.c | 2 +- winboard/wsockerr.h | 2 +- xaw/.dirstamp | 0 xaw/xboard.c | 2600 +++++++++++++ xaw/xboard.h | 176 + xaw/xengineoutput.c | 285 ++ xaw/xgamelist.c | 117 + xaw/xgamelist.h | 31 + xaw/xhistory.c | 111 + xaw/xhistory.h | 30 + xaw/xoptions.c | 1365 +++++++ xboard-config.desktop | 52 + xboard.c | 8845 ------------------------------------------- xboard.conf.in | 19 +- xboard.h | 177 - xboard.texi | 289 +- xboard.xml | 6 + xboard2.h | 9 + xedittags.c | 128 - xedittags.h | 31 - xengineoutput.c | 617 --- xevalgraph.c | 443 --- xevalgraph.h | 29 - xgamelist.c | 930 ----- xgamelist.h | 35 - xhistory.c | 168 - xhistory.h | 32 - xoptions.c | 1912 ---------- zic2xpm.c | 2 +- zic2xpm.man | 2 +- zippy.c | 12 +- zippy.h | 2 +- 1574 files changed, 63046 insertions(+), 113777 deletions(-) delete mode 100644 bitmaps/README.bitmaps delete mode 100644 bitmaps/a33o.bm delete mode 100644 bitmaps/a33s.bm delete mode 100644 bitmaps/a37o.bm delete mode 100644 bitmaps/a37s.bm delete mode 100644 bitmaps/a40o.bm delete mode 100644 bitmaps/a40s.bm delete mode 100644 bitmaps/a45o.bm delete mode 100644 bitmaps/a45s.bm delete mode 100644 bitmaps/a49o.bm delete mode 100644 bitmaps/a49s.bm delete mode 100644 bitmaps/a54o.bm delete mode 100644 bitmaps/a54s.bm delete mode 100644 bitmaps/a58o.bm delete mode 100644 bitmaps/a58s.bm delete mode 100644 bitmaps/a64o.bm delete mode 100644 bitmaps/a64s.bm delete mode 100644 bitmaps/a72o.bm delete mode 100644 bitmaps/a72s.bm delete mode 100644 bitmaps/as45o.bm delete mode 100644 bitmaps/as45s.bm delete mode 100644 bitmaps/b108o.bm delete mode 100644 bitmaps/b108s.bm delete mode 100644 bitmaps/b116o.bm delete mode 100644 bitmaps/b116s.bm delete mode 100644 bitmaps/b129o.bm delete mode 100644 bitmaps/b129s.bm delete mode 100644 bitmaps/b21o.bm delete mode 100644 bitmaps/b21s.bm delete mode 100644 bitmaps/b25o.bm delete mode 100644 bitmaps/b25s.bm delete mode 100644 bitmaps/b29o.bm delete mode 100644 bitmaps/b29s.bm delete mode 100644 bitmaps/b33o.bm delete mode 100644 bitmaps/b33s.bm delete mode 100644 bitmaps/b37o.bm delete mode 100644 bitmaps/b37s.bm delete mode 100644 bitmaps/b40o.bm delete mode 100644 bitmaps/b40s.bm delete mode 100644 bitmaps/b45o.bm delete mode 100644 bitmaps/b45s.bm delete mode 100644 bitmaps/b49o.bm delete mode 100644 bitmaps/b49s.bm delete mode 100644 bitmaps/b54o.bm delete mode 100644 bitmaps/b54s.bm delete mode 100644 bitmaps/b58o.bm delete mode 100644 bitmaps/b58s.bm delete mode 100644 bitmaps/b64o.bm delete mode 100644 bitmaps/b64s.bm delete mode 100644 bitmaps/b72o.bm delete mode 100644 bitmaps/b72s.bm delete mode 100644 bitmaps/b80o.bm delete mode 100644 bitmaps/b80s.bm delete mode 100644 bitmaps/b87o.bm delete mode 100644 bitmaps/b87s.bm delete mode 100644 bitmaps/b95o.bm delete mode 100644 bitmaps/b95s.bm delete mode 100644 bitmaps/bitmaps.h delete mode 100644 bitmaps/c33o.bm delete mode 100644 bitmaps/c33s.bm delete mode 100644 bitmaps/c37o.bm delete mode 100644 bitmaps/c37s.bm delete mode 100644 bitmaps/c40o.bm delete mode 100644 bitmaps/c40s.bm delete mode 100644 bitmaps/c45o.bm delete mode 100644 bitmaps/c45s.bm delete mode 100644 bitmaps/c49o.bm delete mode 100644 bitmaps/c49s.bm delete mode 100644 bitmaps/c54o.bm delete mode 100644 bitmaps/c54s.bm delete mode 100644 bitmaps/c58o.bm delete mode 100644 bitmaps/c58s.bm delete mode 100644 bitmaps/c64o.bm delete mode 100644 bitmaps/c64s.bm delete mode 100644 bitmaps/c72o.bm delete mode 100644 bitmaps/c72s.bm delete mode 100644 bitmaps/d33o.bm delete mode 100644 bitmaps/d33s.bm delete mode 100644 bitmaps/d37o.bm delete mode 100644 bitmaps/d37s.bm delete mode 100644 bitmaps/d40o.bm delete mode 100644 bitmaps/d40s.bm delete mode 100644 bitmaps/d45o.bm delete mode 100644 bitmaps/d45s.bm delete mode 100644 bitmaps/d49o.bm delete mode 100644 bitmaps/d49s.bm delete mode 100644 bitmaps/d54o.bm delete mode 100644 bitmaps/d54s.bm delete mode 100644 bitmaps/d58o.bm delete mode 100644 bitmaps/d58s.bm delete mode 100644 bitmaps/d64o.bm delete mode 100644 bitmaps/d64s.bm delete mode 100644 bitmaps/d72o.bm delete mode 100644 bitmaps/d72s.bm delete mode 100644 bitmaps/dopkbm.sh delete mode 100644 bitmaps/dopkbm1.sh delete mode 100644 bitmaps/e33o.bm delete mode 100644 bitmaps/e33s.bm delete mode 100644 bitmaps/e49o.bm delete mode 100644 bitmaps/e49s.bm delete mode 100644 bitmaps/e72o.bm delete mode 100644 bitmaps/e72s.bm delete mode 100644 bitmaps/f33o.bm delete mode 100644 bitmaps/f33s.bm delete mode 100644 bitmaps/f49o.bm delete mode 100644 bitmaps/f49s.bm delete mode 100644 bitmaps/f72o.bm delete mode 100644 bitmaps/f72s.bm delete mode 100644 bitmaps/g33o.bm delete mode 100644 bitmaps/g33s.bm delete mode 100644 bitmaps/g49o.bm delete mode 100644 bitmaps/g49s.bm delete mode 100644 bitmaps/g72o.bm delete mode 100644 bitmaps/g72s.bm delete mode 100644 bitmaps/h33o.bm delete mode 100644 bitmaps/h33s.bm delete mode 100644 bitmaps/h49o.bm delete mode 100644 bitmaps/h49s.bm delete mode 100644 bitmaps/h72o.bm delete mode 100644 bitmaps/h72s.bm delete mode 100644 bitmaps/i33o.bm delete mode 100644 bitmaps/i33s.bm delete mode 100644 bitmaps/i49o.bm delete mode 100644 bitmaps/i49s.bm delete mode 100644 bitmaps/i72o.bm delete mode 100644 bitmaps/i72s.bm delete mode 100644 bitmaps/icon_b.bm delete mode 100644 bitmaps/icon_outline.bm delete mode 100644 bitmaps/j33o.bm delete mode 100644 bitmaps/j33s.bm delete mode 100644 bitmaps/j49o.bm delete mode 100644 bitmaps/j49s.bm delete mode 100644 bitmaps/j72o.bm delete mode 100644 bitmaps/j72s.bm delete mode 100644 bitmaps/k108o.bm delete mode 100644 bitmaps/k108s.bm delete mode 100644 bitmaps/k116o.bm delete mode 100644 bitmaps/k116s.bm delete mode 100644 bitmaps/k129o.bm delete mode 100644 bitmaps/k129s.bm delete mode 100644 bitmaps/k21o.bm delete mode 100644 bitmaps/k21s.bm delete mode 100644 bitmaps/k25o.bm delete mode 100644 bitmaps/k25s.bm delete mode 100644 bitmaps/k29o.bm delete mode 100644 bitmaps/k29s.bm delete mode 100644 bitmaps/k33o.bm delete mode 100644 bitmaps/k33s.bm delete mode 100644 bitmaps/k37o.bm delete mode 100644 bitmaps/k37s.bm delete mode 100644 bitmaps/k40o.bm delete mode 100644 bitmaps/k40s.bm delete mode 100644 bitmaps/k45o.bm delete mode 100644 bitmaps/k45s.bm delete mode 100644 bitmaps/k49o.bm delete mode 100644 bitmaps/k49s.bm delete mode 100644 bitmaps/k54o.bm delete mode 100644 bitmaps/k54s.bm delete mode 100644 bitmaps/k58o.bm delete mode 100644 bitmaps/k58s.bm delete mode 100644 bitmaps/k64o.bm delete mode 100644 bitmaps/k64s.bm delete mode 100644 bitmaps/k72o.bm delete mode 100644 bitmaps/k72s.bm delete mode 100644 bitmaps/k80o.bm delete mode 100644 bitmaps/k80s.bm delete mode 100644 bitmaps/k87o.bm delete mode 100644 bitmaps/k87s.bm delete mode 100644 bitmaps/k95o.bm delete mode 100644 bitmaps/k95s.bm delete mode 100644 bitmaps/l33o.bm delete mode 100644 bitmaps/l33s.bm delete mode 100644 bitmaps/l37o.bm delete mode 100644 bitmaps/l37s.bm delete mode 100644 bitmaps/l40o.bm delete mode 100644 bitmaps/l40s.bm delete mode 100644 bitmaps/l45o.bm delete mode 100644 bitmaps/l45s.bm delete mode 100644 bitmaps/l49o.bm delete mode 100644 bitmaps/l49s.bm delete mode 100644 bitmaps/l54o.bm delete mode 100644 bitmaps/l54s.bm delete mode 100644 bitmaps/l58o.bm delete mode 100644 bitmaps/l58s.bm delete mode 100644 bitmaps/l64o.bm delete mode 100644 bitmaps/l64s.bm delete mode 100644 bitmaps/l72o.bm delete mode 100644 bitmaps/l72s.bm delete mode 100644 bitmaps/m33o.bm delete mode 100644 bitmaps/m33s.bm delete mode 100644 bitmaps/m49o.bm delete mode 100644 bitmaps/m49s.bm delete mode 100644 bitmaps/m72o.bm delete mode 100644 bitmaps/m72s.bm delete mode 100644 bitmaps/n108o.bm delete mode 100644 bitmaps/n108s.bm delete mode 100644 bitmaps/n116o.bm delete mode 100644 bitmaps/n116s.bm delete mode 100644 bitmaps/n129o.bm delete mode 100644 bitmaps/n129s.bm delete mode 100644 bitmaps/n21o.bm delete mode 100644 bitmaps/n21s.bm delete mode 100644 bitmaps/n25o.bm delete mode 100644 bitmaps/n25s.bm delete mode 100644 bitmaps/n29o.bm delete mode 100644 bitmaps/n29s.bm delete mode 100644 bitmaps/n33o.bm delete mode 100644 bitmaps/n33s.bm delete mode 100644 bitmaps/n37o.bm delete mode 100644 bitmaps/n37s.bm delete mode 100644 bitmaps/n40o.bm delete mode 100644 bitmaps/n40s.bm delete mode 100644 bitmaps/n45o.bm delete mode 100644 bitmaps/n45s.bm delete mode 100644 bitmaps/n49o.bm delete mode 100644 bitmaps/n49s.bm delete mode 100644 bitmaps/n54o.bm delete mode 100644 bitmaps/n54s.bm delete mode 100644 bitmaps/n58o.bm delete mode 100644 bitmaps/n58s.bm delete mode 100644 bitmaps/n64o.bm delete mode 100644 bitmaps/n64s.bm delete mode 100644 bitmaps/n72o.bm delete mode 100644 bitmaps/n72s.bm delete mode 100644 bitmaps/n80o.bm delete mode 100644 bitmaps/n80s.bm delete mode 100644 bitmaps/n87o.bm delete mode 100644 bitmaps/n87s.bm delete mode 100644 bitmaps/n95o.bm delete mode 100644 bitmaps/n95s.bm delete mode 100644 bitmaps/o33o.bm delete mode 100644 bitmaps/o33s.bm delete mode 100644 bitmaps/o49o.bm delete mode 100644 bitmaps/o49s.bm delete mode 100644 bitmaps/o72o.bm delete mode 100644 bitmaps/o72s.bm delete mode 100644 bitmaps/p108o.bm delete mode 100644 bitmaps/p108s.bm delete mode 100644 bitmaps/p116o.bm delete mode 100644 bitmaps/p116s.bm delete mode 100644 bitmaps/p129o.bm delete mode 100644 bitmaps/p129s.bm delete mode 100644 bitmaps/p21o.bm delete mode 100644 bitmaps/p21s.bm delete mode 100644 bitmaps/p25o.bm delete mode 100644 bitmaps/p25s.bm delete mode 100644 bitmaps/p29o.bm delete mode 100644 bitmaps/p29s.bm delete mode 100644 bitmaps/p33o.bm delete mode 100644 bitmaps/p33s.bm delete mode 100644 bitmaps/p37o.bm delete mode 100644 bitmaps/p37s.bm delete mode 100644 bitmaps/p40o.bm delete mode 100644 bitmaps/p40s.bm delete mode 100644 bitmaps/p45o.bm delete mode 100644 bitmaps/p45s.bm delete mode 100644 bitmaps/p49o.bm delete mode 100644 bitmaps/p49s.bm delete mode 100644 bitmaps/p54o.bm delete mode 100644 bitmaps/p54s.bm delete mode 100644 bitmaps/p58o.bm delete mode 100644 bitmaps/p58s.bm delete mode 100644 bitmaps/p64o.bm delete mode 100644 bitmaps/p64s.bm delete mode 100644 bitmaps/p72o.bm delete mode 100644 bitmaps/p72s.bm delete mode 100644 bitmaps/p80o.bm delete mode 100644 bitmaps/p80s.bm delete mode 100644 bitmaps/p87o.bm delete mode 100644 bitmaps/p87s.bm delete mode 100644 bitmaps/p95o.bm delete mode 100644 bitmaps/p95s.bm delete mode 100644 bitmaps/q108o.bm delete mode 100644 bitmaps/q108s.bm delete mode 100644 bitmaps/q116o.bm delete mode 100644 bitmaps/q116s.bm delete mode 100644 bitmaps/q129o.bm delete mode 100644 bitmaps/q129s.bm delete mode 100644 bitmaps/q21o.bm delete mode 100644 bitmaps/q21s.bm delete mode 100644 bitmaps/q25o.bm delete mode 100644 bitmaps/q25s.bm delete mode 100644 bitmaps/q29o.bm delete mode 100644 bitmaps/q29s.bm delete mode 100644 bitmaps/q33o.bm delete mode 100644 bitmaps/q33s.bm delete mode 100644 bitmaps/q37o.bm delete mode 100644 bitmaps/q37s.bm delete mode 100644 bitmaps/q40o.bm delete mode 100644 bitmaps/q40s.bm delete mode 100644 bitmaps/q45o.bm delete mode 100644 bitmaps/q45s.bm delete mode 100644 bitmaps/q49o.bm delete mode 100644 bitmaps/q49s.bm delete mode 100644 bitmaps/q54o.bm delete mode 100644 bitmaps/q54s.bm delete mode 100644 bitmaps/q58o.bm delete mode 100644 bitmaps/q58s.bm delete mode 100644 bitmaps/q64o.bm delete mode 100644 bitmaps/q64s.bm delete mode 100644 bitmaps/q72o.bm delete mode 100644 bitmaps/q72s.bm delete mode 100644 bitmaps/q80o.bm delete mode 100644 bitmaps/q80s.bm delete mode 100644 bitmaps/q87o.bm delete mode 100644 bitmaps/q87s.bm delete mode 100644 bitmaps/q95o.bm delete mode 100644 bitmaps/q95s.bm delete mode 100644 bitmaps/r108o.bm delete mode 100644 bitmaps/r108s.bm delete mode 100644 bitmaps/r116o.bm delete mode 100644 bitmaps/r116s.bm delete mode 100644 bitmaps/r129o.bm delete mode 100644 bitmaps/r129s.bm delete mode 100644 bitmaps/r21o.bm delete mode 100644 bitmaps/r21s.bm delete mode 100644 bitmaps/r25o.bm delete mode 100644 bitmaps/r25s.bm delete mode 100644 bitmaps/r29o.bm delete mode 100644 bitmaps/r29s.bm delete mode 100644 bitmaps/r33o.bm delete mode 100644 bitmaps/r33s.bm delete mode 100644 bitmaps/r37o.bm delete mode 100644 bitmaps/r37s.bm delete mode 100644 bitmaps/r40o.bm delete mode 100644 bitmaps/r40s.bm delete mode 100644 bitmaps/r45o.bm delete mode 100644 bitmaps/r45s.bm delete mode 100644 bitmaps/r49o.bm delete mode 100644 bitmaps/r49s.bm delete mode 100644 bitmaps/r54o.bm delete mode 100644 bitmaps/r54s.bm delete mode 100644 bitmaps/r58o.bm delete mode 100644 bitmaps/r58s.bm delete mode 100644 bitmaps/r64o.bm delete mode 100644 bitmaps/r64s.bm delete mode 100644 bitmaps/r72o.bm delete mode 100644 bitmaps/r72s.bm delete mode 100644 bitmaps/r80o.bm delete mode 100644 bitmaps/r80s.bm delete mode 100644 bitmaps/r87o.bm delete mode 100644 bitmaps/r87s.bm delete mode 100644 bitmaps/r95o.bm delete mode 100644 bitmaps/r95s.bm delete mode 100644 bitmaps/s49o.bm delete mode 100644 bitmaps/s49s.bm delete mode 100644 bitmaps/s72o.bm delete mode 100644 bitmaps/s72s.bm delete mode 100644 bitmaps/test.c delete mode 100644 bitmaps/u49o.bm delete mode 100644 bitmaps/u49s.bm delete mode 100644 bitmaps/u72o.bm delete mode 100644 bitmaps/u72s.bm delete mode 100644 bitmaps/v33o.bm delete mode 100644 bitmaps/v33s.bm delete mode 100644 bitmaps/v49o.bm delete mode 100644 bitmaps/v49s.bm delete mode 100644 bitmaps/v72o.bm delete mode 100644 bitmaps/v72s.bm delete mode 100644 bitmaps/w33o.bm delete mode 100644 bitmaps/w33s.bm delete mode 100644 bitmaps/w49o.bm delete mode 100644 bitmaps/w49s.bm delete mode 100644 bitmaps/w72o.bm delete mode 100644 bitmaps/w72s.bm delete mode 100644 bitmaps/wl49o.bm delete mode 100644 bitmaps/wl49s.bm delete mode 100644 bitmaps/wl72o.bm delete mode 100644 bitmaps/wl72s.bm delete mode 100644 bitmaps/wn49o.bm delete mode 100644 bitmaps/wn49s.bm delete mode 100644 bitmaps/wn72o.bm delete mode 100644 bitmaps/wn72s.bm delete mode 100644 bitmaps/wp49o.bm delete mode 100644 bitmaps/wp49s.bm delete mode 100644 bitmaps/wp72o.bm delete mode 100644 bitmaps/wp72s.bm delete mode 100644 bitmaps/ws49o.bm delete mode 100644 bitmaps/ws49s.bm delete mode 100644 bitmaps/ws72o.bm delete mode 100644 bitmaps/ws72s.bm create mode 100644 board.c create mode 100644 board.h create mode 100644 dialogs.c create mode 100644 dialogs.h create mode 100644 doc-maint/coding-standards.org create mode 100755 doc-maint/gendocs.sh create mode 100644 doc-maint/make-xboard-release create mode 100644 doc-maint/release.org create mode 100644 doc-maint/web-pages.org create mode 100644 draw.c create mode 100644 draw.h delete mode 100644 filebrowser/README delete mode 100644 filebrowser/dir.c delete mode 100644 filebrowser/draw.c delete mode 100644 filebrowser/path.c delete mode 100644 filebrowser/selfile.c delete mode 100644 filebrowser/selfile.h delete mode 100644 filebrowser/xstat.h create mode 100644 gtk/.dirstamp create mode 100644 gtk/xboard.c create mode 100644 gtk/xboard.h create mode 100644 gtk/xengineoutput.c create mode 100644 gtk/xoptions.c create mode 100644 gtk/xtimer.c create mode 100644 menus.c create mode 100644 menus.h create mode 100644 nengineoutput.c create mode 100644 nevalgraph.c create mode 100644 ngamelist.c create mode 100644 nhistory.c delete mode 100644 pixmaps/README.pixmaps delete mode 100644 pixmaps/add33.xpm delete mode 100644 pixmaps/add37.xpm delete mode 100644 pixmaps/add40.xpm delete mode 100644 pixmaps/add45.xpm delete mode 100644 pixmaps/add49.xpm delete mode 100644 pixmaps/add54.xpm delete mode 100644 pixmaps/add58.xpm delete mode 100644 pixmaps/add64.xpm delete mode 100644 pixmaps/add72.xpm delete mode 100644 pixmaps/adl33.xpm delete mode 100644 pixmaps/adl37.xpm delete mode 100644 pixmaps/adl40.xpm delete mode 100644 pixmaps/adl45.xpm delete mode 100644 pixmaps/adl49.xpm delete mode 100644 pixmaps/adl54.xpm delete mode 100644 pixmaps/adl58.xpm delete mode 100644 pixmaps/adl64.xpm delete mode 100644 pixmaps/adl72.xpm delete mode 100644 pixmaps/ald33.xpm delete mode 100644 pixmaps/ald37.xpm delete mode 100644 pixmaps/ald40.xpm delete mode 100644 pixmaps/ald45.xpm delete mode 100644 pixmaps/ald49.xpm delete mode 100644 pixmaps/ald54.xpm delete mode 100644 pixmaps/ald58.xpm delete mode 100644 pixmaps/ald64.xpm delete mode 100644 pixmaps/ald72.xpm delete mode 100644 pixmaps/all33.xpm delete mode 100644 pixmaps/all37.xpm delete mode 100644 pixmaps/all40.xpm delete mode 100644 pixmaps/all45.xpm delete mode 100644 pixmaps/all49.xpm delete mode 100644 pixmaps/all54.xpm delete mode 100644 pixmaps/all58.xpm delete mode 100644 pixmaps/all64.xpm delete mode 100644 pixmaps/all72.xpm delete mode 100644 pixmaps/asdd33.xpm delete mode 100644 pixmaps/asdd49.xpm delete mode 100644 pixmaps/asdd72.xpm delete mode 100644 pixmaps/asdl33.xpm delete mode 100644 pixmaps/asdl49.xpm delete mode 100644 pixmaps/asdl72.xpm delete mode 100644 pixmaps/asld33.xpm delete mode 100644 pixmaps/asld49.xpm delete mode 100644 pixmaps/asld72.xpm delete mode 100644 pixmaps/asll33.xpm delete mode 100644 pixmaps/asll49.xpm delete mode 100644 pixmaps/asll72.xpm delete mode 100644 pixmaps/bdd108.xpm delete mode 100644 pixmaps/bdd116.xpm delete mode 100644 pixmaps/bdd129.xpm delete mode 100644 pixmaps/bdd21.xpm delete mode 100644 pixmaps/bdd25.xpm delete mode 100644 pixmaps/bdd29.xpm delete mode 100644 pixmaps/bdd33.xpm delete mode 100644 pixmaps/bdd37.xpm delete mode 100644 pixmaps/bdd40.xpm delete mode 100644 pixmaps/bdd45.xpm delete mode 100644 pixmaps/bdd49.xpm delete mode 100644 pixmaps/bdd54.xpm delete mode 100644 pixmaps/bdd58.xpm delete mode 100644 pixmaps/bdd64.xpm delete mode 100644 pixmaps/bdd72.xpm delete mode 100644 pixmaps/bdd80.xpm delete mode 100644 pixmaps/bdd87.xpm delete mode 100644 pixmaps/bdd95.xpm delete mode 100644 pixmaps/bdl108.xpm delete mode 100644 pixmaps/bdl116.xpm delete mode 100644 pixmaps/bdl129.xpm delete mode 100644 pixmaps/bdl21.xpm delete mode 100644 pixmaps/bdl25.xpm delete mode 100644 pixmaps/bdl29.xpm delete mode 100644 pixmaps/bdl33.xpm delete mode 100644 pixmaps/bdl37.xpm delete mode 100644 pixmaps/bdl40.xpm delete mode 100644 pixmaps/bdl45.xpm delete mode 100644 pixmaps/bdl49.xpm delete mode 100644 pixmaps/bdl54.xpm delete mode 100644 pixmaps/bdl58.xpm delete mode 100644 pixmaps/bdl64.xpm delete mode 100644 pixmaps/bdl72.xpm delete mode 100644 pixmaps/bdl80.xpm delete mode 100644 pixmaps/bdl87.xpm delete mode 100644 pixmaps/bdl95.xpm delete mode 100644 pixmaps/bld108.xpm delete mode 100644 pixmaps/bld116.xpm delete mode 100644 pixmaps/bld129.xpm delete mode 100644 pixmaps/bld21.xpm delete mode 100644 pixmaps/bld25.xpm delete mode 100644 pixmaps/bld29.xpm delete mode 100644 pixmaps/bld33.xpm delete mode 100644 pixmaps/bld37.xpm delete mode 100644 pixmaps/bld40.xpm delete mode 100644 pixmaps/bld45.xpm delete mode 100644 pixmaps/bld49.xpm delete mode 100644 pixmaps/bld54.xpm delete mode 100644 pixmaps/bld58.xpm delete mode 100644 pixmaps/bld64.xpm delete mode 100644 pixmaps/bld72.xpm delete mode 100644 pixmaps/bld80.xpm delete mode 100644 pixmaps/bld87.xpm delete mode 100644 pixmaps/bld95.xpm delete mode 100644 pixmaps/bll108.xpm delete mode 100644 pixmaps/bll116.xpm delete mode 100644 pixmaps/bll129.xpm delete mode 100644 pixmaps/bll21.xpm delete mode 100644 pixmaps/bll25.xpm delete mode 100644 pixmaps/bll29.xpm delete mode 100644 pixmaps/bll33.xpm delete mode 100644 pixmaps/bll37.xpm delete mode 100644 pixmaps/bll40.xpm delete mode 100644 pixmaps/bll45.xpm delete mode 100644 pixmaps/bll49.xpm delete mode 100644 pixmaps/bll54.xpm delete mode 100644 pixmaps/bll58.xpm delete mode 100644 pixmaps/bll64.xpm delete mode 100644 pixmaps/bll72.xpm delete mode 100644 pixmaps/bll80.xpm delete mode 100644 pixmaps/bll87.xpm delete mode 100644 pixmaps/bll95.xpm delete mode 100644 pixmaps/cdd33.xpm delete mode 100644 pixmaps/cdd37.xpm delete mode 100644 pixmaps/cdd40.xpm delete mode 100644 pixmaps/cdd45.xpm delete mode 100644 pixmaps/cdd49.xpm delete mode 100644 pixmaps/cdd54.xpm delete mode 100644 pixmaps/cdd58.xpm delete mode 100644 pixmaps/cdd64.xpm delete mode 100644 pixmaps/cdd72.xpm delete mode 100644 pixmaps/cdl33.xpm delete mode 100644 pixmaps/cdl37.xpm delete mode 100644 pixmaps/cdl40.xpm delete mode 100644 pixmaps/cdl45.xpm delete mode 100644 pixmaps/cdl49.xpm delete mode 100644 pixmaps/cdl54.xpm delete mode 100644 pixmaps/cdl58.xpm delete mode 100644 pixmaps/cdl64.xpm delete mode 100644 pixmaps/cdl72.xpm delete mode 100644 pixmaps/cld33.xpm delete mode 100644 pixmaps/cld37.xpm delete mode 100644 pixmaps/cld40.xpm delete mode 100644 pixmaps/cld45.xpm delete mode 100644 pixmaps/cld49.xpm delete mode 100644 pixmaps/cld54.xpm delete mode 100644 pixmaps/cld58.xpm delete mode 100644 pixmaps/cld64.xpm delete mode 100644 pixmaps/cld72.xpm delete mode 100644 pixmaps/cll33.xpm delete mode 100644 pixmaps/cll37.xpm delete mode 100644 pixmaps/cll40.xpm delete mode 100644 pixmaps/cll45.xpm delete mode 100644 pixmaps/cll49.xpm delete mode 100644 pixmaps/cll54.xpm delete mode 100644 pixmaps/cll58.xpm delete mode 100644 pixmaps/cll64.xpm delete mode 100644 pixmaps/cll72.xpm delete mode 100644 pixmaps/convbm delete mode 100644 pixmaps/convbm.sed delete mode 100644 pixmaps/convbm2.sed delete mode 100644 pixmaps/convert.c delete mode 100644 pixmaps/cvdd33.xpm delete mode 100644 pixmaps/cvdd37.xpm delete mode 100644 pixmaps/cvdd40.xpm delete mode 100644 pixmaps/cvdd45.xpm delete mode 100644 pixmaps/cvdd49.xpm delete mode 100644 pixmaps/cvdd54.xpm delete mode 100644 pixmaps/cvdd58.xpm delete mode 100644 pixmaps/cvdd64.xpm delete mode 100644 pixmaps/cvdd72.xpm delete mode 100644 pixmaps/cvdl33.xpm delete mode 100644 pixmaps/cvdl37.xpm delete mode 100644 pixmaps/cvdl40.xpm delete mode 100644 pixmaps/cvdl45.xpm delete mode 100644 pixmaps/cvdl49.xpm delete mode 100644 pixmaps/cvdl54.xpm delete mode 100644 pixmaps/cvdl58.xpm delete mode 100644 pixmaps/cvdl64.xpm delete mode 100644 pixmaps/cvdl72.xpm delete mode 100644 pixmaps/cvld33.xpm delete mode 100644 pixmaps/cvld37.xpm delete mode 100644 pixmaps/cvld40.xpm delete mode 100644 pixmaps/cvld45.xpm delete mode 100644 pixmaps/cvld49.xpm delete mode 100644 pixmaps/cvld54.xpm delete mode 100644 pixmaps/cvld58.xpm delete mode 100644 pixmaps/cvld64.xpm delete mode 100644 pixmaps/cvld72.xpm delete mode 100644 pixmaps/cvll33.xpm delete mode 100644 pixmaps/cvll37.xpm delete mode 100644 pixmaps/cvll40.xpm delete mode 100644 pixmaps/cvll45.xpm delete mode 100644 pixmaps/cvll49.xpm delete mode 100644 pixmaps/cvll54.xpm delete mode 100644 pixmaps/cvll58.xpm delete mode 100644 pixmaps/cvll64.xpm delete mode 100644 pixmaps/cvll72.xpm delete mode 100644 pixmaps/dkdd33.xpm delete mode 100644 pixmaps/dkdd49.xpm delete mode 100644 pixmaps/dkdd72.xpm delete mode 100644 pixmaps/dkdl33.xpm delete mode 100644 pixmaps/dkdl49.xpm delete mode 100644 pixmaps/dkdl72.xpm delete mode 100644 pixmaps/dkld33.xpm delete mode 100644 pixmaps/dkld49.xpm delete mode 100644 pixmaps/dkld72.xpm delete mode 100644 pixmaps/dkll33.xpm delete mode 100644 pixmaps/dkll49.xpm delete mode 100644 pixmaps/dkll72.xpm delete mode 100644 pixmaps/edd33.xpm delete mode 100644 pixmaps/edd49.xpm delete mode 100644 pixmaps/edd72.xpm delete mode 100644 pixmaps/edl33.xpm delete mode 100644 pixmaps/edl49.xpm delete mode 100644 pixmaps/edl72.xpm delete mode 100644 pixmaps/eld33.xpm delete mode 100644 pixmaps/eld49.xpm delete mode 100644 pixmaps/eld72.xpm delete mode 100644 pixmaps/ell33.xpm delete mode 100644 pixmaps/ell49.xpm delete mode 100644 pixmaps/ell72.xpm delete mode 100644 pixmaps/fdd33.xpm delete mode 100644 pixmaps/fdd49.xpm delete mode 100644 pixmaps/fdd72.xpm delete mode 100644 pixmaps/fdl33.xpm delete mode 100644 pixmaps/fdl49.xpm delete mode 100644 pixmaps/fdl72.xpm delete mode 100644 pixmaps/fld33.xpm delete mode 100644 pixmaps/fld49.xpm delete mode 100644 pixmaps/fld72.xpm delete mode 100644 pixmaps/fll33.xpm delete mode 100644 pixmaps/fll49.xpm delete mode 100644 pixmaps/fll72.xpm delete mode 100644 pixmaps/gdd33.xpm delete mode 100644 pixmaps/gdd49.xpm delete mode 100644 pixmaps/gdd72.xpm delete mode 100644 pixmaps/gdl33.xpm delete mode 100644 pixmaps/gdl49.xpm delete mode 100644 pixmaps/gdl72.xpm delete mode 100644 pixmaps/gld33.xpm delete mode 100644 pixmaps/gld49.xpm delete mode 100644 pixmaps/gld72.xpm delete mode 100644 pixmaps/gll33.xpm delete mode 100644 pixmaps/gll49.xpm delete mode 100644 pixmaps/gll72.xpm delete mode 100644 pixmaps/hdd33.xpm delete mode 100644 pixmaps/hdd49.xpm delete mode 100644 pixmaps/hdd72.xpm delete mode 100644 pixmaps/hdl33.xpm delete mode 100644 pixmaps/hdl49.xpm delete mode 100644 pixmaps/hdl72.xpm delete mode 100644 pixmaps/hld33.xpm delete mode 100644 pixmaps/hld49.xpm delete mode 100644 pixmaps/hld72.xpm delete mode 100644 pixmaps/hll33.xpm delete mode 100644 pixmaps/hll49.xpm delete mode 100644 pixmaps/hll72.xpm create mode 100644 pixmaps/ini32.xpm create mode 100644 pixmaps/ini48.xpm delete mode 100644 pixmaps/kdd108.xpm delete mode 100644 pixmaps/kdd116.xpm delete mode 100644 pixmaps/kdd129.xpm delete mode 100644 pixmaps/kdd21.xpm delete mode 100644 pixmaps/kdd25.xpm delete mode 100644 pixmaps/kdd29.xpm delete mode 100644 pixmaps/kdd33.xpm delete mode 100644 pixmaps/kdd37.xpm delete mode 100644 pixmaps/kdd40.xpm delete mode 100644 pixmaps/kdd45.xpm delete mode 100644 pixmaps/kdd49.xpm delete mode 100644 pixmaps/kdd54.xpm delete mode 100644 pixmaps/kdd58.xpm delete mode 100644 pixmaps/kdd64.xpm delete mode 100644 pixmaps/kdd72.xpm delete mode 100644 pixmaps/kdd80.xpm delete mode 100644 pixmaps/kdd87.xpm delete mode 100644 pixmaps/kdd95.xpm delete mode 100644 pixmaps/kdl108.xpm delete mode 100644 pixmaps/kdl116.xpm delete mode 100644 pixmaps/kdl129.xpm delete mode 100644 pixmaps/kdl21.xpm delete mode 100644 pixmaps/kdl25.xpm delete mode 100644 pixmaps/kdl29.xpm delete mode 100644 pixmaps/kdl33.xpm delete mode 100644 pixmaps/kdl37.xpm delete mode 100644 pixmaps/kdl40.xpm delete mode 100644 pixmaps/kdl45.xpm delete mode 100644 pixmaps/kdl49.xpm delete mode 100644 pixmaps/kdl54.xpm delete mode 100644 pixmaps/kdl58.xpm delete mode 100644 pixmaps/kdl64.xpm delete mode 100644 pixmaps/kdl72.xpm delete mode 100644 pixmaps/kdl80.xpm delete mode 100644 pixmaps/kdl87.xpm delete mode 100644 pixmaps/kdl95.xpm delete mode 100644 pixmaps/kld108.xpm delete mode 100644 pixmaps/kld116.xpm delete mode 100644 pixmaps/kld129.xpm delete mode 100644 pixmaps/kld21.xpm delete mode 100644 pixmaps/kld25.xpm delete mode 100644 pixmaps/kld29.xpm delete mode 100644 pixmaps/kld33.xpm delete mode 100644 pixmaps/kld37.xpm delete mode 100644 pixmaps/kld40.xpm delete mode 100644 pixmaps/kld45.xpm delete mode 100644 pixmaps/kld49.xpm delete mode 100644 pixmaps/kld54.xpm delete mode 100644 pixmaps/kld58.xpm delete mode 100644 pixmaps/kld64.xpm delete mode 100644 pixmaps/kld72.xpm delete mode 100644 pixmaps/kld80.xpm delete mode 100644 pixmaps/kld87.xpm delete mode 100644 pixmaps/kld95.xpm delete mode 100644 pixmaps/kll108.xpm delete mode 100644 pixmaps/kll116.xpm delete mode 100644 pixmaps/kll129.xpm delete mode 100644 pixmaps/kll21.xpm delete mode 100644 pixmaps/kll25.xpm delete mode 100644 pixmaps/kll29.xpm delete mode 100644 pixmaps/kll33.xpm delete mode 100644 pixmaps/kll37.xpm delete mode 100644 pixmaps/kll40.xpm delete mode 100644 pixmaps/kll45.xpm delete mode 100644 pixmaps/kll49.xpm delete mode 100644 pixmaps/kll54.xpm delete mode 100644 pixmaps/kll58.xpm delete mode 100644 pixmaps/kll64.xpm delete mode 100644 pixmaps/kll72.xpm delete mode 100644 pixmaps/kll80.xpm delete mode 100644 pixmaps/kll87.xpm delete mode 100644 pixmaps/kll95.xpm delete mode 100644 pixmaps/ldd33.xpm delete mode 100644 pixmaps/ldd37.xpm delete mode 100644 pixmaps/ldd40.xpm delete mode 100644 pixmaps/ldd45.xpm delete mode 100644 pixmaps/ldd49.xpm delete mode 100644 pixmaps/ldd54.xpm delete mode 100644 pixmaps/ldd58.xpm delete mode 100644 pixmaps/ldd64.xpm delete mode 100644 pixmaps/ldd72.xpm delete mode 100644 pixmaps/ldl33.xpm delete mode 100644 pixmaps/ldl37.xpm delete mode 100644 pixmaps/ldl40.xpm delete mode 100644 pixmaps/ldl45.xpm delete mode 100644 pixmaps/ldl49.xpm delete mode 100644 pixmaps/ldl54.xpm delete mode 100644 pixmaps/ldl58.xpm delete mode 100644 pixmaps/ldl64.xpm delete mode 100644 pixmaps/ldl72.xpm delete mode 100644 pixmaps/lld33.xpm delete mode 100644 pixmaps/lld37.xpm delete mode 100644 pixmaps/lld40.xpm delete mode 100644 pixmaps/lld45.xpm delete mode 100644 pixmaps/lld49.xpm delete mode 100644 pixmaps/lld54.xpm delete mode 100644 pixmaps/lld58.xpm delete mode 100644 pixmaps/lld64.xpm delete mode 100644 pixmaps/lld72.xpm delete mode 100644 pixmaps/lll33.xpm delete mode 100644 pixmaps/lll37.xpm delete mode 100644 pixmaps/lll40.xpm delete mode 100644 pixmaps/lll45.xpm delete mode 100644 pixmaps/lll49.xpm delete mode 100644 pixmaps/lll54.xpm delete mode 100644 pixmaps/lll58.xpm delete mode 100644 pixmaps/lll64.xpm delete mode 100644 pixmaps/lll72.xpm delete mode 100644 pixmaps/marble_d.xpm delete mode 100644 pixmaps/marble_l.xpm delete mode 100644 pixmaps/mdd33.xpm delete mode 100644 pixmaps/mdd49.xpm delete mode 100644 pixmaps/mdd72.xpm delete mode 100644 pixmaps/mdl33.xpm delete mode 100644 pixmaps/mdl49.xpm delete mode 100644 pixmaps/mdl72.xpm delete mode 100644 pixmaps/mld33.xpm delete mode 100644 pixmaps/mld49.xpm delete mode 100644 pixmaps/mld72.xpm delete mode 100644 pixmaps/mll33.xpm delete mode 100644 pixmaps/mll49.xpm delete mode 100644 pixmaps/mll72.xpm delete mode 100644 pixmaps/ndd108.xpm delete mode 100644 pixmaps/ndd116.xpm delete mode 100644 pixmaps/ndd129.xpm delete mode 100644 pixmaps/ndd21.xpm delete mode 100644 pixmaps/ndd25.xpm delete mode 100644 pixmaps/ndd29.xpm delete mode 100644 pixmaps/ndd33.xpm delete mode 100644 pixmaps/ndd37.xpm delete mode 100644 pixmaps/ndd40.xpm delete mode 100644 pixmaps/ndd45.xpm delete mode 100644 pixmaps/ndd49.xpm delete mode 100644 pixmaps/ndd54.xpm delete mode 100644 pixmaps/ndd58.xpm delete mode 100644 pixmaps/ndd64.xpm delete mode 100644 pixmaps/ndd72.xpm delete mode 100644 pixmaps/ndd80.xpm delete mode 100644 pixmaps/ndd87.xpm delete mode 100644 pixmaps/ndd95.xpm delete mode 100644 pixmaps/ndl108.xpm delete mode 100644 pixmaps/ndl116.xpm delete mode 100644 pixmaps/ndl129.xpm delete mode 100644 pixmaps/ndl21.xpm delete mode 100644 pixmaps/ndl25.xpm delete mode 100644 pixmaps/ndl29.xpm delete mode 100644 pixmaps/ndl33.xpm delete mode 100644 pixmaps/ndl37.xpm delete mode 100644 pixmaps/ndl40.xpm delete mode 100644 pixmaps/ndl45.xpm delete mode 100644 pixmaps/ndl49.xpm delete mode 100644 pixmaps/ndl54.xpm delete mode 100644 pixmaps/ndl58.xpm delete mode 100644 pixmaps/ndl64.xpm delete mode 100644 pixmaps/ndl72.xpm delete mode 100644 pixmaps/ndl80.xpm delete mode 100644 pixmaps/ndl87.xpm delete mode 100644 pixmaps/ndl95.xpm delete mode 100644 pixmaps/nld108.xpm delete mode 100644 pixmaps/nld116.xpm delete mode 100644 pixmaps/nld129.xpm delete mode 100644 pixmaps/nld21.xpm delete mode 100644 pixmaps/nld25.xpm delete mode 100644 pixmaps/nld29.xpm delete mode 100644 pixmaps/nld33.xpm delete mode 100644 pixmaps/nld37.xpm delete mode 100644 pixmaps/nld40.xpm delete mode 100644 pixmaps/nld45.xpm delete mode 100644 pixmaps/nld49.xpm delete mode 100644 pixmaps/nld54.xpm delete mode 100644 pixmaps/nld58.xpm delete mode 100644 pixmaps/nld64.xpm delete mode 100644 pixmaps/nld72.xpm delete mode 100644 pixmaps/nld80.xpm delete mode 100644 pixmaps/nld87.xpm delete mode 100644 pixmaps/nld95.xpm delete mode 100644 pixmaps/nll108.xpm delete mode 100644 pixmaps/nll116.xpm delete mode 100644 pixmaps/nll129.xpm delete mode 100644 pixmaps/nll21.xpm delete mode 100644 pixmaps/nll25.xpm delete mode 100644 pixmaps/nll29.xpm delete mode 100644 pixmaps/nll33.xpm delete mode 100644 pixmaps/nll37.xpm delete mode 100644 pixmaps/nll40.xpm delete mode 100644 pixmaps/nll45.xpm delete mode 100644 pixmaps/nll49.xpm delete mode 100644 pixmaps/nll54.xpm delete mode 100644 pixmaps/nll58.xpm delete mode 100644 pixmaps/nll64.xpm delete mode 100644 pixmaps/nll72.xpm delete mode 100644 pixmaps/nll80.xpm delete mode 100644 pixmaps/nll87.xpm delete mode 100644 pixmaps/nll95.xpm delete mode 100644 pixmaps/odd33.xpm delete mode 100644 pixmaps/odd49.xpm delete mode 100644 pixmaps/odd72.xpm delete mode 100644 pixmaps/odl33.xpm delete mode 100644 pixmaps/odl49.xpm delete mode 100644 pixmaps/odl72.xpm delete mode 100644 pixmaps/old33.xpm delete mode 100644 pixmaps/old49.xpm delete mode 100644 pixmaps/old72.xpm delete mode 100644 pixmaps/oll33.xpm delete mode 100644 pixmaps/oll49.xpm delete mode 100644 pixmaps/oll72.xpm delete mode 100644 pixmaps/pdd108.xpm delete mode 100644 pixmaps/pdd116.xpm delete mode 100644 pixmaps/pdd129.xpm delete mode 100644 pixmaps/pdd21.xpm delete mode 100644 pixmaps/pdd25.xpm delete mode 100644 pixmaps/pdd29.xpm delete mode 100644 pixmaps/pdd33.xpm delete mode 100644 pixmaps/pdd37.xpm delete mode 100644 pixmaps/pdd40.xpm delete mode 100644 pixmaps/pdd45.xpm delete mode 100644 pixmaps/pdd49.xpm delete mode 100644 pixmaps/pdd54.xpm delete mode 100644 pixmaps/pdd58.xpm delete mode 100644 pixmaps/pdd64.xpm delete mode 100644 pixmaps/pdd72.xpm delete mode 100644 pixmaps/pdd80.xpm delete mode 100644 pixmaps/pdd87.xpm delete mode 100644 pixmaps/pdd95.xpm delete mode 100644 pixmaps/pdl108.xpm delete mode 100644 pixmaps/pdl116.xpm delete mode 100644 pixmaps/pdl129.xpm delete mode 100644 pixmaps/pdl21.xpm delete mode 100644 pixmaps/pdl25.xpm delete mode 100644 pixmaps/pdl29.xpm delete mode 100644 pixmaps/pdl33.xpm delete mode 100644 pixmaps/pdl37.xpm delete mode 100644 pixmaps/pdl40.xpm delete mode 100644 pixmaps/pdl45.xpm delete mode 100644 pixmaps/pdl49.xpm delete mode 100644 pixmaps/pdl54.xpm delete mode 100644 pixmaps/pdl58.xpm delete mode 100644 pixmaps/pdl64.xpm delete mode 100644 pixmaps/pdl72.xpm delete mode 100644 pixmaps/pdl80.xpm delete mode 100644 pixmaps/pdl87.xpm delete mode 100644 pixmaps/pdl95.xpm delete mode 100644 pixmaps/pixmaps.h delete mode 100644 pixmaps/pld108.xpm delete mode 100644 pixmaps/pld116.xpm delete mode 100644 pixmaps/pld129.xpm delete mode 100644 pixmaps/pld21.xpm delete mode 100644 pixmaps/pld25.xpm delete mode 100644 pixmaps/pld29.xpm delete mode 100644 pixmaps/pld33.xpm delete mode 100644 pixmaps/pld37.xpm delete mode 100644 pixmaps/pld40.xpm delete mode 100644 pixmaps/pld45.xpm delete mode 100644 pixmaps/pld49.xpm delete mode 100644 pixmaps/pld54.xpm delete mode 100644 pixmaps/pld58.xpm delete mode 100644 pixmaps/pld64.xpm delete mode 100644 pixmaps/pld72.xpm delete mode 100644 pixmaps/pld80.xpm delete mode 100644 pixmaps/pld87.xpm delete mode 100644 pixmaps/pld95.xpm delete mode 100644 pixmaps/pll108.xpm delete mode 100644 pixmaps/pll116.xpm delete mode 100644 pixmaps/pll129.xpm delete mode 100644 pixmaps/pll21.xpm delete mode 100644 pixmaps/pll25.xpm delete mode 100644 pixmaps/pll29.xpm delete mode 100644 pixmaps/pll33.xpm delete mode 100644 pixmaps/pll37.xpm delete mode 100644 pixmaps/pll40.xpm delete mode 100644 pixmaps/pll45.xpm delete mode 100644 pixmaps/pll49.xpm delete mode 100644 pixmaps/pll54.xpm delete mode 100644 pixmaps/pll58.xpm delete mode 100644 pixmaps/pll64.xpm delete mode 100644 pixmaps/pll72.xpm delete mode 100644 pixmaps/pll80.xpm delete mode 100644 pixmaps/pll87.xpm delete mode 100644 pixmaps/pll95.xpm delete mode 100644 pixmaps/qdd108.xpm delete mode 100644 pixmaps/qdd116.xpm delete mode 100644 pixmaps/qdd129.xpm delete mode 100644 pixmaps/qdd21.xpm delete mode 100644 pixmaps/qdd25.xpm delete mode 100644 pixmaps/qdd29.xpm delete mode 100644 pixmaps/qdd33.xpm delete mode 100644 pixmaps/qdd37.xpm delete mode 100644 pixmaps/qdd40.xpm delete mode 100644 pixmaps/qdd45.xpm delete mode 100644 pixmaps/qdd49.xpm delete mode 100644 pixmaps/qdd54.xpm delete mode 100644 pixmaps/qdd58.xpm delete mode 100644 pixmaps/qdd64.xpm delete mode 100644 pixmaps/qdd72.xpm delete mode 100644 pixmaps/qdd80.xpm delete mode 100644 pixmaps/qdd87.xpm delete mode 100644 pixmaps/qdd95.xpm delete mode 100644 pixmaps/qdl108.xpm delete mode 100644 pixmaps/qdl116.xpm delete mode 100644 pixmaps/qdl129.xpm delete mode 100644 pixmaps/qdl21.xpm delete mode 100644 pixmaps/qdl25.xpm delete mode 100644 pixmaps/qdl29.xpm delete mode 100644 pixmaps/qdl33.xpm delete mode 100644 pixmaps/qdl37.xpm delete mode 100644 pixmaps/qdl40.xpm delete mode 100644 pixmaps/qdl45.xpm delete mode 100644 pixmaps/qdl49.xpm delete mode 100644 pixmaps/qdl54.xpm delete mode 100644 pixmaps/qdl58.xpm delete mode 100644 pixmaps/qdl64.xpm delete mode 100644 pixmaps/qdl72.xpm delete mode 100644 pixmaps/qdl80.xpm delete mode 100644 pixmaps/qdl87.xpm delete mode 100644 pixmaps/qdl95.xpm delete mode 100644 pixmaps/qld108.xpm delete mode 100644 pixmaps/qld116.xpm delete mode 100644 pixmaps/qld129.xpm delete mode 100644 pixmaps/qld21.xpm delete mode 100644 pixmaps/qld25.xpm delete mode 100644 pixmaps/qld29.xpm delete mode 100644 pixmaps/qld33.xpm delete mode 100644 pixmaps/qld37.xpm delete mode 100644 pixmaps/qld40.xpm delete mode 100644 pixmaps/qld45.xpm delete mode 100644 pixmaps/qld49.xpm delete mode 100644 pixmaps/qld54.xpm delete mode 100644 pixmaps/qld58.xpm delete mode 100644 pixmaps/qld64.xpm delete mode 100644 pixmaps/qld72.xpm delete mode 100644 pixmaps/qld80.xpm delete mode 100644 pixmaps/qld87.xpm delete mode 100644 pixmaps/qld95.xpm delete mode 100644 pixmaps/qll108.xpm delete mode 100644 pixmaps/qll116.xpm delete mode 100644 pixmaps/qll129.xpm delete mode 100644 pixmaps/qll21.xpm delete mode 100644 pixmaps/qll25.xpm delete mode 100644 pixmaps/qll29.xpm delete mode 100644 pixmaps/qll33.xpm delete mode 100644 pixmaps/qll37.xpm delete mode 100644 pixmaps/qll40.xpm delete mode 100644 pixmaps/qll45.xpm delete mode 100644 pixmaps/qll49.xpm delete mode 100644 pixmaps/qll54.xpm delete mode 100644 pixmaps/qll58.xpm delete mode 100644 pixmaps/qll64.xpm delete mode 100644 pixmaps/qll72.xpm delete mode 100644 pixmaps/qll80.xpm delete mode 100644 pixmaps/qll87.xpm delete mode 100644 pixmaps/qll95.xpm delete mode 100644 pixmaps/rdd108.xpm delete mode 100644 pixmaps/rdd116.xpm delete mode 100644 pixmaps/rdd129.xpm delete mode 100644 pixmaps/rdd21.xpm delete mode 100644 pixmaps/rdd25.xpm delete mode 100644 pixmaps/rdd29.xpm delete mode 100644 pixmaps/rdd33.xpm delete mode 100644 pixmaps/rdd37.xpm delete mode 100644 pixmaps/rdd40.xpm delete mode 100644 pixmaps/rdd45.xpm delete mode 100644 pixmaps/rdd49.xpm delete mode 100644 pixmaps/rdd54.xpm delete mode 100644 pixmaps/rdd58.xpm delete mode 100644 pixmaps/rdd64.xpm delete mode 100644 pixmaps/rdd72.xpm delete mode 100644 pixmaps/rdd80.xpm delete mode 100644 pixmaps/rdd87.xpm delete mode 100644 pixmaps/rdd95.xpm delete mode 100644 pixmaps/rdl108.xpm delete mode 100644 pixmaps/rdl116.xpm delete mode 100644 pixmaps/rdl129.xpm delete mode 100644 pixmaps/rdl21.xpm delete mode 100644 pixmaps/rdl25.xpm delete mode 100644 pixmaps/rdl29.xpm delete mode 100644 pixmaps/rdl33.xpm delete mode 100644 pixmaps/rdl37.xpm delete mode 100644 pixmaps/rdl40.xpm delete mode 100644 pixmaps/rdl45.xpm delete mode 100644 pixmaps/rdl49.xpm delete mode 100644 pixmaps/rdl54.xpm delete mode 100644 pixmaps/rdl58.xpm delete mode 100644 pixmaps/rdl64.xpm delete mode 100644 pixmaps/rdl72.xpm delete mode 100644 pixmaps/rdl80.xpm delete mode 100644 pixmaps/rdl87.xpm delete mode 100644 pixmaps/rdl95.xpm delete mode 100644 pixmaps/rld108.xpm delete mode 100644 pixmaps/rld116.xpm delete mode 100644 pixmaps/rld129.xpm delete mode 100644 pixmaps/rld21.xpm delete mode 100644 pixmaps/rld25.xpm delete mode 100644 pixmaps/rld29.xpm delete mode 100644 pixmaps/rld33.xpm delete mode 100644 pixmaps/rld37.xpm delete mode 100644 pixmaps/rld40.xpm delete mode 100644 pixmaps/rld45.xpm delete mode 100644 pixmaps/rld49.xpm delete mode 100644 pixmaps/rld54.xpm delete mode 100644 pixmaps/rld58.xpm delete mode 100644 pixmaps/rld64.xpm delete mode 100644 pixmaps/rld72.xpm delete mode 100644 pixmaps/rld80.xpm delete mode 100644 pixmaps/rld87.xpm delete mode 100644 pixmaps/rld95.xpm delete mode 100644 pixmaps/rll108.xpm delete mode 100644 pixmaps/rll116.xpm delete mode 100644 pixmaps/rll129.xpm delete mode 100644 pixmaps/rll21.xpm delete mode 100644 pixmaps/rll25.xpm delete mode 100644 pixmaps/rll29.xpm delete mode 100644 pixmaps/rll33.xpm delete mode 100644 pixmaps/rll37.xpm delete mode 100644 pixmaps/rll40.xpm delete mode 100644 pixmaps/rll45.xpm delete mode 100644 pixmaps/rll49.xpm delete mode 100644 pixmaps/rll54.xpm delete mode 100644 pixmaps/rll58.xpm delete mode 100644 pixmaps/rll64.xpm delete mode 100644 pixmaps/rll72.xpm delete mode 100644 pixmaps/rll80.xpm delete mode 100644 pixmaps/rll87.xpm delete mode 100644 pixmaps/rll95.xpm delete mode 100644 pixmaps/sdd49.xpm delete mode 100644 pixmaps/sdd72.xpm delete mode 100644 pixmaps/sdl49.xpm delete mode 100644 pixmaps/sdl72.xpm delete mode 100644 pixmaps/sld49.xpm delete mode 100644 pixmaps/sld72.xpm delete mode 100644 pixmaps/sll49.xpm delete mode 100644 pixmaps/sll72.xpm delete mode 100644 pixmaps/test.c delete mode 100644 pixmaps/udd49.xpm delete mode 100644 pixmaps/udd72.xpm delete mode 100644 pixmaps/udl49.xpm delete mode 100644 pixmaps/udl72.xpm delete mode 100644 pixmaps/uld49.xpm delete mode 100644 pixmaps/uld72.xpm delete mode 100644 pixmaps/ull49.xpm delete mode 100644 pixmaps/ull72.xpm delete mode 100644 pixmaps/vdd33.xpm delete mode 100644 pixmaps/vdd49.xpm delete mode 100644 pixmaps/vdd72.xpm delete mode 100644 pixmaps/vdl33.xpm delete mode 100644 pixmaps/vdl49.xpm delete mode 100644 pixmaps/vdl72.xpm delete mode 100644 pixmaps/vld33.xpm delete mode 100644 pixmaps/vld49.xpm delete mode 100644 pixmaps/vld72.xpm delete mode 100644 pixmaps/vll33.xpm delete mode 100644 pixmaps/vll49.xpm delete mode 100644 pixmaps/vll72.xpm delete mode 100644 pixmaps/wdd33.xpm delete mode 100644 pixmaps/wdd49.xpm delete mode 100644 pixmaps/wdd72.xpm delete mode 100644 pixmaps/wdl33.xpm delete mode 100644 pixmaps/wdl49.xpm delete mode 100644 pixmaps/wdl72.xpm delete mode 100644 pixmaps/wld33.xpm delete mode 100644 pixmaps/wld49.xpm delete mode 100644 pixmaps/wld72.xpm delete mode 100644 pixmaps/wldd49.xpm delete mode 100644 pixmaps/wldd72.xpm delete mode 100644 pixmaps/wldl49.xpm delete mode 100644 pixmaps/wldl72.xpm delete mode 100644 pixmaps/wll33.xpm delete mode 100644 pixmaps/wll49.xpm delete mode 100644 pixmaps/wll72.xpm delete mode 100644 pixmaps/wlld49.xpm delete mode 100644 pixmaps/wlld72.xpm delete mode 100644 pixmaps/wlll49.xpm delete mode 100644 pixmaps/wlll72.xpm delete mode 100644 pixmaps/wndd49.xpm delete mode 100644 pixmaps/wndd72.xpm delete mode 100644 pixmaps/wndl49.xpm delete mode 100644 pixmaps/wndl72.xpm delete mode 100644 pixmaps/wnld49.xpm delete mode 100644 pixmaps/wnld72.xpm delete mode 100644 pixmaps/wnll49.xpm delete mode 100644 pixmaps/wnll72.xpm delete mode 100644 pixmaps/wood_d.xpm delete mode 100644 pixmaps/wood_l.xpm delete mode 100644 pixmaps/wpdd49.xpm delete mode 100644 pixmaps/wpdd72.xpm delete mode 100644 pixmaps/wpdl49.xpm delete mode 100644 pixmaps/wpdl72.xpm delete mode 100644 pixmaps/wpld49.xpm delete mode 100644 pixmaps/wpld72.xpm delete mode 100644 pixmaps/wpll49.xpm delete mode 100644 pixmaps/wpll72.xpm delete mode 100644 pixmaps/wsdd49.xpm delete mode 100644 pixmaps/wsdd72.xpm delete mode 100644 pixmaps/wsdl49.xpm delete mode 100644 pixmaps/wsdl72.xpm delete mode 100644 pixmaps/wsld49.xpm delete mode 100644 pixmaps/wsld72.xpm delete mode 100644 pixmaps/wsll49.xpm delete mode 100644 pixmaps/wsll72.xpm delete mode 100644 pixmaps/xqboard.xpm delete mode 100644 pixmaps/xqwood.xpm create mode 100644 png/BlackAdvisor.png create mode 100644 png/BlackArchbishop.png create mode 100644 png/BlackBishop.png create mode 100644 png/BlackCanon.png create mode 100644 png/BlackChancellor.png create mode 100644 png/BlackCobra.png create mode 100644 png/BlackCommoner.png create mode 100644 png/BlackCrownedBishop.png create mode 100644 png/BlackCrownedRook.png create mode 100644 png/BlackElephant.png create mode 100644 png/BlackGold.png create mode 100644 png/BlackGoldKnight.png create mode 100644 png/BlackGoldLance.png create mode 100644 png/BlackGoldPawn.png create mode 100644 png/BlackGoldSilver.png create mode 100644 png/BlackHawk.png create mode 100644 png/BlackKing.png create mode 100644 png/BlackKnight.png create mode 100644 png/BlackLance.png create mode 100644 png/BlackMarshall.png create mode 100644 png/BlackNightrider.png create mode 100644 png/BlackPawn.png create mode 100644 png/BlackPrincess.png create mode 100644 png/BlackQueen.png create mode 100644 png/BlackRook.png create mode 100644 png/BlackUnicorn.png create mode 100644 png/WhiteAdvisor.png create mode 100644 png/WhiteArchbishop.png create mode 100644 png/WhiteBishop.png create mode 100644 png/WhiteCanon.png create mode 100644 png/WhiteChancellor.png create mode 100644 png/WhiteCobra.png create mode 100644 png/WhiteCommoner.png create mode 100644 png/WhiteCrownedBishop.png create mode 100644 png/WhiteCrownedRook.png create mode 100644 png/WhiteElephant.png create mode 100644 png/WhiteGold.png create mode 100644 png/WhiteGoldKnight.png create mode 100644 png/WhiteGoldLance.png create mode 100644 png/WhiteGoldPawn.png create mode 100644 png/WhiteGoldSilver.png create mode 100644 png/WhiteHawk.png create mode 100644 png/WhiteKing.png create mode 100644 png/WhiteKnight.png create mode 100644 png/WhiteLance.png create mode 100644 png/WhiteMarshall.png create mode 100644 png/WhiteNightrider.png create mode 100644 png/WhitePawn.png create mode 100644 png/WhitePrincess.png create mode 100644 png/WhiteQueen.png create mode 100644 png/WhiteRook.png create mode 100644 png/WhiteUnicorn.png create mode 100644 png/hatch.png create mode 100644 png/marble_d.png create mode 100644 png/marble_l.png create mode 100644 png/wood_d.png create mode 100644 png/wood_l.png create mode 100644 png/xqboard.png create mode 100644 png/xqwood.png delete mode 100644 shogipixmaps/bdd64.xpm delete mode 100644 shogipixmaps/bdl64.xpm delete mode 100644 shogipixmaps/bld64.xpm delete mode 100644 shogipixmaps/bll64.xpm delete mode 100644 shogipixmaps/fdd64.xpm delete mode 100644 shogipixmaps/fdl64.xpm delete mode 100644 shogipixmaps/fld64.xpm delete mode 100644 shogipixmaps/fll64.xpm delete mode 100644 shogipixmaps/kdd64.xpm delete mode 100644 shogipixmaps/kdl64.xpm delete mode 100644 shogipixmaps/kld64.xpm delete mode 100644 shogipixmaps/kll64.xpm delete mode 100644 shogipixmaps/ldd64.xpm delete mode 100644 shogipixmaps/ldl64.xpm delete mode 100644 shogipixmaps/lld64.xpm delete mode 100644 shogipixmaps/lll64.xpm delete mode 100644 shogipixmaps/ndd64.xpm delete mode 100644 shogipixmaps/ndl64.xpm delete mode 100644 shogipixmaps/nld64.xpm delete mode 100644 shogipixmaps/nll64.xpm delete mode 100644 shogipixmaps/pdd64.xpm delete mode 100644 shogipixmaps/pdl64.xpm delete mode 100644 shogipixmaps/pld64.xpm delete mode 100644 shogipixmaps/pll64.xpm delete mode 100644 shogipixmaps/qdd64.xpm delete mode 100644 shogipixmaps/qdl64.xpm delete mode 100644 shogipixmaps/qld64.xpm delete mode 100644 shogipixmaps/qll64.xpm delete mode 100644 shogipixmaps/rdd64.xpm delete mode 100644 shogipixmaps/rdl64.xpm delete mode 100644 shogipixmaps/rld64.xpm delete mode 100644 shogipixmaps/rll64.xpm delete mode 100644 shogipixmaps/wdd64.xpm delete mode 100644 shogipixmaps/wdl64.xpm delete mode 100644 shogipixmaps/wld64.xpm delete mode 100644 shogipixmaps/wldd64.xpm delete mode 100644 shogipixmaps/wldl64.xpm delete mode 100644 shogipixmaps/wll64.xpm delete mode 100644 shogipixmaps/wlld64.xpm delete mode 100644 shogipixmaps/wlll64.xpm delete mode 100644 shogipixmaps/wndd64.xpm delete mode 100644 shogipixmaps/wndl64.xpm delete mode 100644 shogipixmaps/wnld64.xpm delete mode 100644 shogipixmaps/wnll64.xpm delete mode 100644 shogipixmaps/wpdd64.xpm delete mode 100644 shogipixmaps/wpdl64.xpm delete mode 100644 shogipixmaps/wpld64.xpm delete mode 100644 shogipixmaps/wpll64.xpm delete mode 100644 shogipixmaps/wsdd64.xpm delete mode 100644 shogipixmaps/wsdl64.xpm delete mode 100644 shogipixmaps/wsld64.xpm delete mode 100644 shogipixmaps/wsll64.xpm create mode 100644 svg/BlackAdvisor.svg create mode 100644 svg/BlackArchbishop.svg create mode 100644 svg/BlackBishop.svg create mode 100644 svg/BlackCanon.svg create mode 100644 svg/BlackChancellor.svg create mode 100644 svg/BlackCobra.svg create mode 100644 svg/BlackCommoner.svg create mode 100644 svg/BlackCrownedBishop.svg create mode 100644 svg/BlackCrownedRook.svg create mode 100644 svg/BlackElephant.svg create mode 100644 svg/BlackGold.svg create mode 100644 svg/BlackGoldKnight.svg create mode 100644 svg/BlackGoldLance.svg create mode 100644 svg/BlackGoldPawn.svg create mode 100644 svg/BlackGoldSilver.svg create mode 100644 svg/BlackHawk.svg create mode 100644 svg/BlackKing.svg create mode 100644 svg/BlackKnight.svg create mode 100644 svg/BlackLance.svg create mode 100644 svg/BlackMarshall.svg create mode 100644 svg/BlackNightrider.svg create mode 100644 svg/BlackPawn.svg create mode 100644 svg/BlackPrincess.svg create mode 100644 svg/BlackQueen.svg create mode 100644 svg/BlackRook.svg create mode 100644 svg/BlackUnicorn.svg create mode 100644 svg/WhiteAdvisor.svg create mode 100644 svg/WhiteArchbishop.svg create mode 100644 svg/WhiteBishop.svg create mode 100644 svg/WhiteCanon.svg create mode 100644 svg/WhiteChancellor.svg create mode 100644 svg/WhiteCobra.svg create mode 100644 svg/WhiteCommoner.svg create mode 100644 svg/WhiteCrownedBishop.svg create mode 100644 svg/WhiteCrownedRook.svg create mode 100644 svg/WhiteElephant.svg create mode 100644 svg/WhiteGold.svg create mode 100644 svg/WhiteGoldKnight.svg create mode 100644 svg/WhiteGoldLance.svg create mode 100644 svg/WhiteGoldPawn.svg create mode 100644 svg/WhiteGoldSilver.svg create mode 100644 svg/WhiteHawk.svg create mode 100644 svg/WhiteKing.svg create mode 100644 svg/WhiteKnight.svg create mode 100644 svg/WhiteLance.svg create mode 100644 svg/WhiteMarshall.svg create mode 100644 svg/WhiteNightrider.svg create mode 100644 svg/WhitePawn.svg create mode 100644 svg/WhitePrincess.svg create mode 100644 svg/WhiteQueen.svg create mode 100644 svg/WhiteRook.svg create mode 100644 svg/WhiteUnicorn.svg create mode 100644 svg/eo_Analyzing.svg create mode 100644 svg/eo_Black.svg create mode 100644 svg/eo_Clear.svg create mode 100644 svg/eo_Ponder.svg create mode 100644 svg/eo_Thinking.svg create mode 100644 svg/eo_Unknown.svg create mode 100644 svg/eo_White.svg create mode 100644 svg/icon_black.svg create mode 100644 svg/icon_white.svg create mode 100644 themes/Mono/BlackAdvisor.svg create mode 100644 themes/Mono/BlackArchbishop.svg create mode 100644 themes/Mono/BlackBishop.svg create mode 100644 themes/Mono/BlackCanon.svg create mode 100644 themes/Mono/BlackChancellor.svg create mode 100644 themes/Mono/BlackCobra.svg create mode 100644 themes/Mono/BlackCommoner.svg create mode 100644 themes/Mono/BlackCrownedBishop.svg create mode 100644 themes/Mono/BlackCrownedRook.svg create mode 100644 themes/Mono/BlackElephant.svg create mode 100644 themes/Mono/BlackGold.svg create mode 100644 themes/Mono/BlackGoldKnight.svg create mode 100644 themes/Mono/BlackGoldLance.svg create mode 100644 themes/Mono/BlackGoldPawn.svg create mode 100644 themes/Mono/BlackGoldSilver.svg create mode 100644 themes/Mono/BlackHawk.svg create mode 100644 themes/Mono/BlackKing.svg create mode 100644 themes/Mono/BlackKnight.svg create mode 100644 themes/Mono/BlackLance.svg create mode 100644 themes/Mono/BlackMarshall.svg create mode 100644 themes/Mono/BlackNightrider.svg create mode 100644 themes/Mono/BlackPawn.svg create mode 100644 themes/Mono/BlackPrincess.svg create mode 100644 themes/Mono/BlackQueen.svg create mode 100644 themes/Mono/BlackRook.svg create mode 100644 themes/Mono/BlackUnicorn.svg create mode 100644 themes/Mono/WhiteAdvisor.svg create mode 100644 themes/Mono/WhiteArchbishop.svg create mode 100644 themes/Mono/WhiteBishop.svg create mode 100644 themes/Mono/WhiteCanon.svg create mode 100644 themes/Mono/WhiteChancellor.svg create mode 100644 themes/Mono/WhiteCobra.svg create mode 100644 themes/Mono/WhiteCommoner.svg create mode 100644 themes/Mono/WhiteCrownedBishop.svg create mode 100644 themes/Mono/WhiteCrownedRook.svg create mode 100644 themes/Mono/WhiteElephant.svg create mode 100644 themes/Mono/WhiteGold.svg create mode 100644 themes/Mono/WhiteGoldKnight.svg create mode 100644 themes/Mono/WhiteGoldLance.svg create mode 100644 themes/Mono/WhiteGoldPawn.svg create mode 100644 themes/Mono/WhiteGoldSilver.svg create mode 100644 themes/Mono/WhiteHawk.svg create mode 100644 themes/Mono/WhiteKing.svg create mode 100644 themes/Mono/WhiteKnight.svg create mode 100644 themes/Mono/WhiteLance.svg create mode 100644 themes/Mono/WhiteMarshall.svg create mode 100644 themes/Mono/WhiteNightrider.svg create mode 100644 themes/Mono/WhitePawn.svg create mode 100644 themes/Mono/WhitePrincess.svg create mode 100644 themes/Mono/WhiteQueen.svg create mode 100644 themes/Mono/WhiteRook.svg create mode 100644 themes/Mono/WhiteUnicorn.svg create mode 100644 themes/Mono/eo_Analyzing.svg create mode 100644 themes/Mono/eo_Black.svg create mode 100644 themes/Mono/eo_Clear.svg create mode 100644 themes/Mono/eo_Ponder.svg create mode 100644 themes/Mono/eo_Thinking.svg create mode 100644 themes/Mono/eo_Unknown.svg create mode 100644 themes/Mono/eo_White.svg create mode 100644 themes/Mono/icon_black.svg create mode 100644 themes/Mono/icon_white.svg create mode 100644 themes/Mono/shogi_bishop.svg create mode 100644 themes/Mono/shogi_bishop_promoted.svg create mode 100644 themes/Mono/shogi_gold.svg create mode 100644 themes/Mono/shogi_king.svg create mode 100644 themes/Mono/shogi_knight.svg create mode 100644 themes/Mono/shogi_knight_promoted.svg create mode 100644 themes/Mono/shogi_lance.svg create mode 100644 themes/Mono/shogi_lance_promoted.svg create mode 100644 themes/Mono/shogi_pawn.svg create mode 100644 themes/Mono/shogi_pawn_promoted.svg create mode 100644 themes/Mono/shogi_rook.svg create mode 100644 themes/Mono/shogi_rook_promoted.svg create mode 100644 themes/Mono/shogi_silver.svg create mode 100644 themes/Mono/shogi_silver_promoted.svg create mode 100644 themes/shogi/BlackAdvisor.svg create mode 100644 themes/shogi/BlackBishop.svg create mode 100644 themes/shogi/BlackCrownedBishop.svg create mode 100644 themes/shogi/BlackCrownedRook.svg create mode 100644 themes/shogi/BlackGold.svg create mode 100644 themes/shogi/BlackGoldKnight.svg create mode 100644 themes/shogi/BlackGoldLance.svg create mode 100644 themes/shogi/BlackGoldPawn.svg create mode 100644 themes/shogi/BlackGoldSilver.svg create mode 100644 themes/shogi/BlackKing.svg create mode 100644 themes/shogi/BlackKnight.svg create mode 100644 themes/shogi/BlackLance.svg create mode 100644 themes/shogi/BlackPawn.svg create mode 100644 themes/shogi/BlackRook.svg create mode 100644 themes/shogi/WhiteAdvisor.svg create mode 100644 themes/shogi/WhiteBishop.svg create mode 100644 themes/shogi/WhiteCrownedBishop.svg create mode 100644 themes/shogi/WhiteCrownedRook.svg create mode 100644 themes/shogi/WhiteGold.svg create mode 100644 themes/shogi/WhiteGoldKnight.svg create mode 100644 themes/shogi/WhiteGoldLance.svg create mode 100644 themes/shogi/WhiteGoldPawn.svg create mode 100644 themes/shogi/WhiteGoldSilver.svg create mode 100644 themes/shogi/WhiteKing.svg create mode 100644 themes/shogi/WhiteKnight.svg create mode 100644 themes/shogi/WhiteLance.svg create mode 100644 themes/shogi/WhitePawn.svg create mode 100644 themes/shogi/WhiteRook.svg create mode 100644 themes/xiangqi/.DS_Store create mode 100644 themes/xiangqi/BlackAdvisor.svg create mode 100644 themes/xiangqi/BlackCanon.svg create mode 100644 themes/xiangqi/BlackElephant.svg create mode 100644 themes/xiangqi/BlackGold.svg create mode 100644 themes/xiangqi/BlackKnight.svg create mode 100644 themes/xiangqi/BlackPawn.svg create mode 100644 themes/xiangqi/BlackRook.svg create mode 100644 themes/xiangqi/WhiteAdvisor.svg create mode 100644 themes/xiangqi/WhiteCanon.svg create mode 100644 themes/xiangqi/WhiteElephant.svg create mode 100644 themes/xiangqi/WhiteGold.svg create mode 100644 themes/xiangqi/WhiteKnight.svg create mode 100644 themes/xiangqi/WhitePawn.svg create mode 100644 themes/xiangqi/WhiteRook.svg create mode 100644 usounds.c create mode 100644 usystem.c create mode 100644 usystem.h create mode 100644 xaw/.dirstamp create mode 100644 xaw/xboard.c create mode 100644 xaw/xboard.h create mode 100644 xaw/xengineoutput.c create mode 100644 xaw/xgamelist.c create mode 100644 xaw/xgamelist.h create mode 100644 xaw/xhistory.c create mode 100644 xaw/xhistory.h create mode 100644 xaw/xoptions.c create mode 100644 xboard-config.desktop delete mode 100644 xboard.c delete mode 100644 xboard.h create mode 100644 xboard2.h delete mode 100644 xedittags.c delete mode 100644 xedittags.h delete mode 100644 xengineoutput.c delete mode 100644 xevalgraph.c delete mode 100644 xevalgraph.h delete mode 100644 xgamelist.c delete mode 100644 xgamelist.h delete mode 100644 xhistory.c delete mode 100644 xhistory.h delete mode 100644 xoptions.c ** Version 4.6.2 ** (git diff -b --stat --summary -M v4.6.1 HEAD) backend.c | 16 +++++++++------- configure.ac | 2 +- winboard/config.h | 6 +++--- winboard/language.txt | 2 ++ winboard/language/nederlands.lng | 2 ++ winboard/winboard.c | 1 + 6 files changed, 18 insertions(+), 11 deletions(-) ** Version 4.6.1 ** (git diff -b --stat --summary -M v4.6.0 HEAD) ChangeLog | 228 +++++++++++ DIFFSTAT | 38 ++ NEWS | 28 ++ SHORTLOG | 45 +++ args.h | 5 +- autogen.sh | 2 +- backend.c | 89 ++++- common.h | 1 + configure.ac | 2 +- engineoutput.c | 19 +- evalgraph.c | 4 +- moves.c | 3 +- po/da.po | 987 +++++++++++++++++++++++------------------------ po/de.po | 980 +++++++++++++++++++++++------------------------ po/es.po | 980 +++++++++++++++++++++++------------------------ po/it.po | 980 +++++++++++++++++++++++------------------------ po/ru.po | 980 +++++++++++++++++++++++------------------------ po/tr.po | 980 +++++++++++++++++++++++------------------------ po/uk.po | 1032 +++++++++++++++++++++++++------------------------- po/vi.po | 980 +++++++++++++++++++++++------------------------ po/xboard.pot | 981 +++++++++++++++++++++++------------------------ po/zh_CN.po | 980 +++++++++++++++++++++++------------------------ po/zh_HK.po | 980 +++++++++++++++++++++++------------------------ po/zh_TW.po | 980 +++++++++++++++++++++++------------------------ winboard/config.h | 6 +- winboard/wsettings.c | 13 +- xboard.c | 25 +- xboard.h | 8 +- xboard.texi | 107 ++---- xengineoutput.c | 6 +- xevalgraph.c | 6 +- xgamelist.c | 103 +++-- xoptions.c | 19 +- 33 files changed, 6499 insertions(+), 6078 deletions(-) ** Version 4.6.0 ** (git diff -b --stat --summary -M v4.5.3a HEAD) .gitignore | 3 + ABOUT-NLS | 1282 ++++++++++ COPYRIGHT | 2 +- ChangeLog | 3106 ++++++++++++++++++++++-- DIFFSTAT | 210 ++ Makefile.am | 56 +- NEWS | 35 + SHORTLOG | 435 ++++ args.h | 139 +- autogen.sh | 2 +- backend.c | 3426 ++++++++++++++++++-------- backend.h | 55 +- backendz.h | 2 +- bitmaps/bitmaps.h | 2 +- book.c | 261 ++- childio.c | 26 +- childio.h | 2 +- common.h | 142 +- config.rpath | 280 ++- configure.ac | 37 +- copyright.texi | 2 +- engineoutput.c | 100 +- engineoutput.h | 3 +- evalgraph.c | 85 +- evalgraph.h | 3 +- filebrowser/dir.c | 2 +- filebrowser/draw.c | 42 + filebrowser/path.c | 19 +- filebrowser/selfile.c | 66 +- filebrowser/selfile.h | 2 - frontend.h | 16 +- gamelist.c | 137 +- gettext.h | 262 ++- history.c | 33 +- lists.c | 41 +- lists.h | 2 +- m4/gettext.m4 | 383 +++ m4/iconv.m4 | 214 ++ m4/lib-ld.m4 | 110 + m4/lib-link.m4 | 774 ++++++ m4/lib-prefix.m4 | 224 ++ m4/nls.m4 | 32 + m4/po.m4 | 449 ++++ m4/progtest.m4 | 92 + moves.c | 341 ++-- moves.h | 8 +- parser.c | 4644 ++++------------------------------- parser.h | 2 +- parser.l | 1203 --------- pgntags.c | 145 +- pixmaps/board32.xpm | 42 + pixmaps/board48.xpm | 58 + pixmaps/cross32.xpm | 42 + pixmaps/cross48.xpm | 58 + po/LINGUAS | 3 +- po/Makefile.in.in | 162 +- po/Makevars | 2 +- po/Makevars.template | 41 + po/POTFILES.in | 10 +- po/Rules-quot | 47 + po/boldquot.sed | 10 + po/da.po | 2977 ++++++++++++++++++++++ po/de.po | 3464 +++++++++++++++++++------- po/en@boldquot.header | 25 + po/en@quot.header | 22 + po/es.po | 2925 ++++++++++++++++++++++ po/insert-header.sin | 23 + po/it.po | 2933 ++++++++++++++++++++++ po/lng2po.sh | 96 + po/metascript | 125 + po/normalize.pl | 10 + po/quot.sed | 6 + po/ru.po | 2919 ++++++++++++++++++++++ po/strip-bad-utf8.pl | 14 + po/tr.po | 3306 +++++++++++++++++++------ po/uk.po | 3002 ++++++++++++++++++++++ po/vi.po | 2904 ++++++++++++++++++++++ po/xboard.pot | 2958 +++++++++++++++++------ po/zh_CN.po | 2917 ++++++++++++++++++++++ po/zh_HK.po | 2922 ++++++++++++++++++++++ po/zh_TW.po | 2915 ++++++++++++++++++++++ uci.c | 7 +- winboard/bitmaps/cross.ico | Bin 0 -> 766 bytes winboard/bitmaps/ni49o.bmp | Bin 454 -> 0 bytes winboard/bitmaps/ni49s.bmp | Bin 454 -> 0 bytes winboard/bitmaps/ni49w.bmp | Bin 454 -> 0 bytes winboard/bitmaps/ni72o.bmp | Bin 926 -> 0 bytes winboard/bitmaps/ni72s.bmp | Bin 926 -> 0 bytes winboard/bitmaps/ni72w.bmp | Bin 926 -> 0 bytes winboard/config.h | 6 +- winboard/defaults.h | 3 +- winboard/help.c | 2 +- winboard/help/html/24.htm | 2 +- winboard/jaws.c | 47 +- winboard/language.txt | 138 +- winboard/language/chinese(simp).lng | 787 ++++++ winboard/language/chinese(trad).lng | 785 ++++++ winboard/language/deutsch.lng | 971 ++++++++ winboard/language/italiano.lng | 976 ++++++++ winboard/language/nederlands.lng | 1216 +++++++++ winboard/language/romanian.lng | 1042 ++++++++ winboard/language/russian.lng | 994 ++++++++ winboard/language/spanish.lng | 953 +++++++ winboard/language/vietnamese.lng | 973 ++++++++ winboard/makefile.gcc | 15 +- winboard/makefile.ms | 3 - winboard/resource.h | 31 + winboard/wchat.c | 2 +- winboard/wclipbrd.c | 2 +- winboard/wclipbrd.h | 2 +- winboard/wedittags.c | 16 +- winboard/wengineoutput.c | 10 +- winboard/wevalgraph.c | 3 +- winboard/wgamelist.c | 39 +- winboard/winboard.c | 483 +++-- winboard/winboard.h | 11 +- winboard/winboard.rc | 158 +- winboard/winboard.rtf | 1644 +++++++------ winboard/woptions.c | 163 ++- winboard/woptions.h | 2 +- winboard/wsettings.c | 437 +++- winboard/wsockerr.c | 2 +- winboard/wsockerr.h | 2 +- xboard-fen-viewer.desktop | 52 + xboard-pgn-viewer.desktop | 52 + xboard-tourney.desktop | 52 + xboard.c | 2653 +++++++++----------- xboard.conf.in | 16 +- xboard.h | 26 +- xboard.png | Bin 15116 -> 1726 bytes xboard.texi | 1092 +++++++-- xboard.xml | 61 + xedittags.c | 316 +--- xedittags.h | 2 +- xengineoutput.c | 96 +- xevalgraph.c | 69 +- xevalgraph.h | 2 +- xgamelist.c | 205 +- xgamelist.h | 3 +- xhistory.c | 461 +--- xhistory.h | 4 +- xoptions.c | 1482 ++++++------ zic2xpm.c | 67 +- zic2xpm.man | 2 +- zippy.c | 54 +- zippy.h | 2 +- 146 files changed, 60376 insertions(+), 14197 deletions(-) create mode 100644 ABOUT-NLS create mode 100644 m4/gettext.m4 create mode 100644 m4/iconv.m4 create mode 100644 m4/lib-ld.m4 create mode 100644 m4/lib-link.m4 create mode 100644 m4/lib-prefix.m4 create mode 100644 m4/nls.m4 create mode 100644 m4/po.m4 create mode 100644 m4/progtest.m4 delete mode 100644 parser.l create mode 100644 pixmaps/board32.xpm create mode 100644 pixmaps/board48.xpm create mode 100644 pixmaps/cross32.xpm create mode 100644 pixmaps/cross48.xpm mode change 100755 => 100644 po/Makefile.in.in create mode 100644 po/Makevars.template create mode 100644 po/Rules-quot create mode 100644 po/boldquot.sed create mode 100644 po/da.po create mode 100644 po/en@boldquot.header create mode 100644 po/en@quot.header create mode 100644 po/es.po create mode 100644 po/insert-header.sin create mode 100644 po/it.po create mode 100755 po/lng2po.sh create mode 100644 po/metascript create mode 100755 po/normalize.pl create mode 100644 po/quot.sed mode change 100755 => 100644 po/remove-potcdate.sin create mode 100644 po/ru.po create mode 100755 po/strip-bad-utf8.pl create mode 100644 po/uk.po create mode 100644 po/vi.po mode change 100755 => 100644 po/xboard.pot create mode 100644 po/zh_CN.po create mode 100644 po/zh_HK.po create mode 100644 po/zh_TW.po create mode 100644 winboard/bitmaps/cross.ico delete mode 100644 winboard/bitmaps/ni49o.bmp delete mode 100644 winboard/bitmaps/ni49s.bmp delete mode 100644 winboard/bitmaps/ni49w.bmp delete mode 100644 winboard/bitmaps/ni72o.bmp delete mode 100644 winboard/bitmaps/ni72s.bmp delete mode 100644 winboard/bitmaps/ni72w.bmp create mode 100644 winboard/language/chinese(simp).lng create mode 100644 winboard/language/chinese(trad).lng create mode 100644 winboard/language/deutsch.lng create mode 100644 winboard/language/italiano.lng create mode 100644 winboard/language/nederlands.lng create mode 100644 winboard/language/romanian.lng create mode 100644 winboard/language/russian.lng create mode 100644 winboard/language/spanish.lng create mode 100644 winboard/language/vietnamese.lng create mode 100644 xboard-fen-viewer.desktop create mode 100644 xboard-pgn-viewer.desktop create mode 100644 xboard-tourney.desktop create mode 100644 xboard.xml ** Version 4.5.3a ** (git diff -b --stat --summary -M v4.5.3 HEAD) winboard/makefile.gcc | 2 +- winboard/winboard.c | 10 +++++----- winboard/winboard.h | 2 +- winboard/woptions.c | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) ** Version 4.5.3 ** (git diff -b --stat --summary -M v4.5.2a HEAD) args.h | 27 +++++++++++++--------- backend.c | 54 +++++++++++++++++++++++++++++++++++-------- backend.h | 4 ++- book.c | 1 + configure.ac | 2 +- engineoutput.c | 14 +++++----- filebrowser/dir.c | 13 +++++----- filebrowser/draw.c | 7 +----- filebrowser/path.c | 10 +------- filebrowser/selfile.c | 17 +++---------- filebrowser/selfile.h | 17 +++++++++++++ history.c | 6 +++- moves.c | 6 ++-- uci.c | 2 +- winboard/config.h | 6 ++-- winboard/jaws.c | 37 +++++++++++++++++++++++++----- winboard/language.txt | 40 +------------------------------- winboard/makefile.gcc | 10 ++++++- winboard/winboard.c | 6 +++- winboard/winboard.h | 1 + winboard/winboard.rc | 32 +++++++++++++------------- winboard/wsettings.c | 33 +++++++++++++++++--------- xboard.c | 24 ++++++++++++------- xboard.h | 28 ++++++++++++++++++++++ xboard.png | Bin 1342 -> 15116 bytes xboard.svg | 26 ++++++++++++++------ xedittags.c | 11 --------- xengineoutput.c | 16 ------------- xevalgraph.c | 14 ----------- xgamelist.c | 61 +++++++++++++++++++++++++++++++----------------- xhistory.c | 6 ----- xoptions.c | 50 +++++++++++----------------------------- 32 files changed, 308 insertions(+), 273 deletions(-) ** Version 4.5.2a (Winboard only) ** (git diff -b --stat --summary -M v4.5.2 HEAD) winboard/wsettings.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) ** Version 4.5.2 ** (git diff -b --stat --summary -M v4.5.1 HEAD) ChangeLog | 361 +++++++++ DIFFSTAT | 31 + Makefile.am | 92 +++- NEWS | 20 + SHORTLOG | 50 ++ args.h | 13 +- backend.c | 112 ++-- backend.h | 7 +- common.h | 1 + configure.ac | 6 +- engineoutput.c | 1 - filebrowser/dir.c | 13 + filebrowser/draw.c | 9 +- filebrowser/path.c | 10 + filebrowser/selfile.c | 149 ++++- filebrowser/selfile.h | 6 + history.c | 1 - moves.c | 1 + parser.l | 4 +- shogipixmaps/add64.xpm | 73 -- shogipixmaps/adl64.xpm | 73 -- shogipixmaps/ald64.xpm | 73 -- shogipixmaps/all64.xpm | 73 -- shogipixmaps/ddd64.xpm | 73 -- shogipixmaps/ddl64.xpm | 73 -- shogipixmaps/dld64.xpm | 73 -- shogipixmaps/dll64.xpm | 73 -- shogipixmaps/qdd64.xpm | 2 +- shogipixmaps/qdl64.xpm | 2 +- shogipixmaps/qld64.xpm | 2 +- shogipixmaps/qll64.xpm | 112 ++-- shogipixmaps/wldd64.xpm | 2 +- shogipixmaps/wldl64.xpm | 2 +- uci.c | 4 - winboard/bitmaps/convert.c | 1 + winboard/config.h | 6 +- winboard/wgamelist.c | 9 +- winboard/winboard.c | 13 +- winboard/winboard.h | 1 + winboard/woptions.c | 2 +- winboard/wsettings.c | 24 +- xboard.c | 962 ++++++++++-------------- xboard.conf.in | 37 +- xboard.h | 2 + xboard.texi | 467 ++++++++---- xgamelist.c | 1 + xoptions.c | 1790 +++++++++++++++++++++++--------------------- 47 files changed, 2591 insertions(+), 2321 deletions(-) delete mode 100644 shogipixmaps/add64.xpm delete mode 100644 shogipixmaps/adl64.xpm delete mode 100644 shogipixmaps/ald64.xpm delete mode 100644 shogipixmaps/all64.xpm delete mode 100644 shogipixmaps/ddd64.xpm delete mode 100644 shogipixmaps/ddl64.xpm delete mode 100644 shogipixmaps/dld64.xpm delete mode 100644 shogipixmaps/dll64.xpm ** Version 4.5.1 ** (git diff -b --stat --summary -M v4.5.0 HEAD) ChangeLog | 142 ++++++++++++++++++++++++++++++++++++++++++++ DIFFSTAT | 26 ++++++++ Makefile.am | 2 +- NEWS | 32 ++++++++++ SHORTLOG | 27 ++++++++ backend.c | 11 ++-- childio.c | 1 + configure.ac | 40 ++++++------- filebrowser/dir.c | 18 ++---- filebrowser/draw.c | 34 ++++++---- filebrowser/path.c | 99 ++++++++++++++++--------------- filebrowser/selfile.c | 12 ++++- moves.c | 5 +- winboard/config.h | 6 +- winboard/help.c | 1 + winboard/help/html/01.htm | 2 +- winboard/help/html/02.htm | 14 ++++- winboard/help/winboard.chm | Bin 86507 -> 86883 bytes winboard/makefile.ms | 4 +- winboard/wchat.c | 2 +- winboard/winboard.c | 29 +++++---- winboard/winboard.dsp | 6 ++- winboard/woptions.c | 3 +- winboard/wsettings.c | 5 +- xboard.c | 5 +- xboard.texi | 10 ++-- 26 files changed, 398 insertions(+), 138 deletions(-) ** Version 4.5.0 ** (git diff -b --stat --summary -M v4.4.4 HEAD) AUTHORS | 16 +- COPYRIGHT | 2 +- ChangeLog | 2326 +++++++++++++++++++-- DIFFSTAT | 271 +++- FAQ.html | 15 + Makefile.am | 55 +- NEWS | 818 +++++++- README | 8 +- SHORTLOG | 293 +++ args.h | 1425 +++++++++++++ autogen.sh | 2 +- backend.c | 3916 ++++++++++++++++++++++------------ backend.h | 48 +- backendz.h | 2 +- bitmaps/bitmaps.h | 2 +- book.c | 39 +- childio.c | 9 +- childio.h | 2 +- cmail.in | 2 +- common.h | 118 +- config.rpath | 2 +- configure.ac | 20 +- copyright.texi | 2 +- engineoutput.c | 518 +++++ engineoutput.h | 69 + evalgraph.c | 339 +++ evalgraph.h | 60 + filebrowser/README | 3 + filebrowser/dir.c | 163 ++ filebrowser/draw.c | 935 ++++++++ filebrowser/path.c | 917 ++++++++ filebrowser/selfile.c | 756 +++++++ filebrowser/selfile.h | 149 ++ filebrowser/xstat.h | 23 + frontend.h | 35 +- gamelist.c | 186 ++- gettext.h | 2 +- history.c | 246 +++ lists.c | 2 +- lists.h | 2 +- moves.c | 666 ++++--- moves.h | 20 +- winboard/parser.c => parser.c | 2669 ++++++++++++----------- parser.h | 9 +- parser.l | 228 ++- pgntags.c | 26 +- pixmaps/convert.c | 29 +- pixmaps/marble_d.xpm | 238 ++ pixmaps/marble_l.xpm | 359 ++++ pixmaps/pixmaps.h | 2 +- pixmaps/wood_d.xpm | 239 +++ pixmaps/wood_l.xpm | 192 ++ pixmaps/xqboard.xpm | 498 +++++ pixmaps/xqwood.xpm | 597 ++++++ readme_HGM.txt | 411 ---- shogipixmaps/add64.xpm | 73 + shogipixmaps/adl64.xpm | 73 + shogipixmaps/ald64.xpm | 73 + shogipixmaps/all64.xpm | 73 + shogipixmaps/bdd64.xpm | 73 + shogipixmaps/bdl64.xpm | 73 + shogipixmaps/bld64.xpm | 74 + shogipixmaps/bll64.xpm | 74 + shogipixmaps/ddd64.xpm | 73 + shogipixmaps/ddl64.xpm | 73 + shogipixmaps/dld64.xpm | 73 + shogipixmaps/dll64.xpm | 73 + shogipixmaps/fdd64.xpm | 73 + shogipixmaps/fdl64.xpm | 73 + shogipixmaps/fld64.xpm | 74 + shogipixmaps/fll64.xpm | 74 + shogipixmaps/kdd64.xpm | 73 + shogipixmaps/kdl64.xpm | 73 + shogipixmaps/kld64.xpm | 73 + shogipixmaps/kll64.xpm | 73 + shogipixmaps/ldd64.xpm | 73 + shogipixmaps/ldl64.xpm | 73 + shogipixmaps/lld64.xpm | 73 + shogipixmaps/lll64.xpm | 73 + shogipixmaps/ndd64.xpm | 73 + shogipixmaps/ndl64.xpm | 73 + shogipixmaps/nld64.xpm | 74 + shogipixmaps/nll64.xpm | 74 + shogipixmaps/pdd64.xpm | 73 + shogipixmaps/pdl64.xpm | 73 + shogipixmaps/pld64.xpm | 74 + shogipixmaps/pll64.xpm | 74 + shogipixmaps/qdd64.xpm | 73 + shogipixmaps/qdl64.xpm | 73 + shogipixmaps/qld64.xpm | 73 + shogipixmaps/qll64.xpm | 73 + shogipixmaps/rdd64.xpm | 73 + shogipixmaps/rdl64.xpm | 73 + shogipixmaps/rld64.xpm | 73 + shogipixmaps/rll64.xpm | 73 + shogipixmaps/wdd64.xpm | 73 + shogipixmaps/wdl64.xpm | 73 + shogipixmaps/wld64.xpm | 73 + shogipixmaps/wldd64.xpm | 73 + shogipixmaps/wldl64.xpm | 73 + shogipixmaps/wll64.xpm | 73 + shogipixmaps/wlld64.xpm | 73 + shogipixmaps/wlll64.xpm | 73 + shogipixmaps/wndd64.xpm | 73 + shogipixmaps/wndl64.xpm | 73 + shogipixmaps/wnld64.xpm | 73 + shogipixmaps/wnll64.xpm | 73 + shogipixmaps/wpdd64.xpm | 73 + shogipixmaps/wpdl64.xpm | 73 + shogipixmaps/wpld64.xpm | 73 + shogipixmaps/wpll64.xpm | 73 + shogipixmaps/wsdd64.xpm | 73 + shogipixmaps/wsdl64.xpm | 73 + shogipixmaps/wsld64.xpm | 73 + shogipixmaps/wsll64.xpm | 73 + uci.c | 105 +- winboard/WB4Jaws.dev | 94 +- winboard/Winboard.dev | 94 +- winboard/bitmaps/wl33o.bmp | Bin 0 -> 326 bytes winboard/bitmaps/wl33s.bmp | Bin 0 -> 326 bytes winboard/bitmaps/wn33o.bmp | Bin 0 -> 326 bytes winboard/bitmaps/wn33s.bmp | Bin 0 -> 326 bytes winboard/bitmaps/wp33o.bmp | Bin 0 -> 326 bytes winboard/bitmaps/wp33s.bmp | Bin 0 -> 326 bytes winboard/bitmaps/ws33o.bmp | Bin 0 -> 326 bytes winboard/bitmaps/ws33s.bmp | Bin 0 -> 326 bytes winboard/config.h | 6 +- winboard/defaults.h | 11 +- winboard/help.c | 4 +- winboard/help/html/01.htm | 8 +- winboard/help/html/03.htm | 2 +- winboard/help/html/04.htm | 35 +- winboard/help/html/05.htm | 6 + winboard/help/html/06.htm | 9 +- winboard/help/html/07.htm | 57 +- winboard/help/html/09.htm | 6 + winboard/help/html/14.htm | 42 + winboard/help/html/15.htm | 16 +- winboard/help/html/16.htm | 19 +- winboard/help/html/18.htm | 12 +- winboard/help/html/24.htm | 2 +- winboard/help/winboard.chm | Bin 79031 -> 86507 bytes winboard/help/winboard.hhk | 138 ++- winboard/help/winboard.hhp | 13 +- winboard/jaws.c | 131 +- winboard/language.txt | 1425 +++++++++---- winboard/makefile.gcc | 38 +- winboard/makefile.ms | 34 +- winboard/resource.h | 87 + winboard/wchat.c | 165 ++- winboard/wclipbrd.c | 65 +- winboard/wclipbrd.h | 2 +- winboard/wedittags.c | 42 +- winboard/wengineo.c | 856 -------- winboard/wengineoutput.c | 436 ++++ winboard/wevalgraph.c | 359 +--- winboard/wgamelist.c | 97 +- winboard/wgamelist.h | 28 - winboard/whistory.c | 264 +-- winboard/winboard.c | 3449 +++++++++++------------------- winboard/winboard.dsp | 18 +- winboard/winboard.h | 57 +- winboard/winboard.rc | 776 ++++---- winboard/winboard.rtf | 1719 ++++++++------- winboard/wlayout.c | 3 +- winboard/woptions.c | 424 ++-- winboard/woptions.h | 2 +- winboard/wsettings.c | 28 +- winboard/wsockerr.c | 2 +- winboard/wsockerr.h | 2 +- xboard.c | 2912 ++++++++++++------------- xboard.conf.in | 77 + xboard.desktop | 154 ++ xboard.h | 26 +- xboard.texi | 960 ++++++--- xedittags.c | 13 +- xedittags.h | 3 +- xengineoutput.c | 597 ++---- xevalgraph.c | 456 ++++ winboard/wedittags.h => xevalgraph.h | 14 +- xgamelist.c | 413 ++++- xgamelist.h | 5 +- xhistory.c | 76 +- xhistory.h | 4 +- xoptions.c | 243 ++- zic2xpm.c | 19 +- zic2xpm.man | 2 +- zippy.c | 88 +- zippy.h | 2 +- 189 files changed, 29433 insertions(+), 12188 deletions(-) create mode 100644 args.h create mode 100644 engineoutput.c create mode 100644 engineoutput.h create mode 100644 evalgraph.c create mode 100644 evalgraph.h create mode 100644 filebrowser/README create mode 100644 filebrowser/dir.c create mode 100644 filebrowser/draw.c create mode 100644 filebrowser/path.c create mode 100644 filebrowser/selfile.c create mode 100644 filebrowser/selfile.h create mode 100644 filebrowser/xstat.h create mode 100644 history.c rename winboard/parser.c => parser.c (51%) mode change 100755 => 100644 parser.l create mode 100644 pixmaps/marble_d.xpm create mode 100644 pixmaps/marble_l.xpm create mode 100644 pixmaps/wood_d.xpm create mode 100644 pixmaps/wood_l.xpm create mode 100644 pixmaps/xqboard.xpm create mode 100644 pixmaps/xqwood.xpm delete mode 100644 readme_HGM.txt create mode 100644 shogipixmaps/add64.xpm create mode 100644 shogipixmaps/adl64.xpm create mode 100644 shogipixmaps/ald64.xpm create mode 100644 shogipixmaps/all64.xpm create mode 100644 shogipixmaps/bdd64.xpm create mode 100644 shogipixmaps/bdl64.xpm create mode 100644 shogipixmaps/bld64.xpm create mode 100644 shogipixmaps/bll64.xpm create mode 100644 shogipixmaps/ddd64.xpm create mode 100644 shogipixmaps/ddl64.xpm create mode 100644 shogipixmaps/dld64.xpm create mode 100644 shogipixmaps/dll64.xpm create mode 100644 shogipixmaps/fdd64.xpm create mode 100644 shogipixmaps/fdl64.xpm create mode 100644 shogipixmaps/fld64.xpm create mode 100644 shogipixmaps/fll64.xpm create mode 100644 shogipixmaps/kdd64.xpm create mode 100644 shogipixmaps/kdl64.xpm create mode 100644 shogipixmaps/kld64.xpm create mode 100644 shogipixmaps/kll64.xpm create mode 100644 shogipixmaps/ldd64.xpm create mode 100644 shogipixmaps/ldl64.xpm create mode 100644 shogipixmaps/lld64.xpm create mode 100644 shogipixmaps/lll64.xpm create mode 100644 shogipixmaps/ndd64.xpm create mode 100644 shogipixmaps/ndl64.xpm create mode 100644 shogipixmaps/nld64.xpm create mode 100644 shogipixmaps/nll64.xpm create mode 100644 shogipixmaps/pdd64.xpm create mode 100644 shogipixmaps/pdl64.xpm create mode 100644 shogipixmaps/pld64.xpm create mode 100644 shogipixmaps/pll64.xpm create mode 100644 shogipixmaps/qdd64.xpm create mode 100644 shogipixmaps/qdl64.xpm create mode 100644 shogipixmaps/qld64.xpm create mode 100644 shogipixmaps/qll64.xpm create mode 100644 shogipixmaps/rdd64.xpm create mode 100644 shogipixmaps/rdl64.xpm create mode 100644 shogipixmaps/rld64.xpm create mode 100644 shogipixmaps/rll64.xpm create mode 100644 shogipixmaps/wdd64.xpm create mode 100644 shogipixmaps/wdl64.xpm create mode 100644 shogipixmaps/wld64.xpm create mode 100644 shogipixmaps/wldd64.xpm create mode 100644 shogipixmaps/wldl64.xpm create mode 100644 shogipixmaps/wll64.xpm create mode 100644 shogipixmaps/wlld64.xpm create mode 100644 shogipixmaps/wlll64.xpm create mode 100644 shogipixmaps/wndd64.xpm create mode 100644 shogipixmaps/wndl64.xpm create mode 100644 shogipixmaps/wnld64.xpm create mode 100644 shogipixmaps/wnll64.xpm create mode 100644 shogipixmaps/wpdd64.xpm create mode 100644 shogipixmaps/wpdl64.xpm create mode 100644 shogipixmaps/wpld64.xpm create mode 100644 shogipixmaps/wpll64.xpm create mode 100644 shogipixmaps/wsdd64.xpm create mode 100644 shogipixmaps/wsdl64.xpm create mode 100644 shogipixmaps/wsld64.xpm create mode 100644 shogipixmaps/wsll64.xpm create mode 100644 winboard/bitmaps/wl33o.bmp create mode 100644 winboard/bitmaps/wl33s.bmp create mode 100644 winboard/bitmaps/wn33o.bmp create mode 100644 winboard/bitmaps/wn33s.bmp create mode 100644 winboard/bitmaps/wp33o.bmp create mode 100644 winboard/bitmaps/wp33s.bmp create mode 100644 winboard/bitmaps/ws33o.bmp create mode 100644 winboard/bitmaps/ws33s.bmp delete mode 100644 winboard/wengineo.c create mode 100644 winboard/wengineoutput.c delete mode 100644 winboard/wgamelist.h create mode 100644 xboard.conf.in create mode 100644 xboard.desktop create mode 100644 xevalgraph.c rename winboard/wedittags.h => xevalgraph.h (74%) ** Version 4.4.4 ** (git diff -b --stat --summary -M v4.4.3...HEAD) backend.c | 69 +++++++++++++++++++++++-------------------------- backend.h | 2 +- configure.ac | 10 +++--- moves.c | 4 +- parser.l | 16 ++++++------ winboard/config.h | 6 ++-- winboard/wgamelist.c | 4 +- winboard/winboard.c | 29 +++++++++++++++++--- winboard/woptions.c | 3 +- xboard.c | 2 +- xoptions.c | 2 +- zippy.c | 11 +------ 12 files changed, 82 insertions(+), 76 deletions(-) ** Version 4.4.3 ** (git diff -b --stat --summary -M v4.4.2...HEAD) AUTHORS | 16 +- COPYRIGHT | 2 +- ChangeLog | 323 ++++ DIFFSTAT | 84 + Makefile.am | 7 +- NEWS | 35 + SHORTLOG | 57 + autogen.sh | 2 +- backend.c | 224 ++- backend.h | 10 +- backendz.h | 2 +- bitmaps/bitmaps.h | 2 +- childio.c | 2 +- childio.h | 2 +- cmail.in | 2 +- common.h | 4 +- config.rpath | 2 +- configure.ac | 6 +- copyright.texi | 2 +- frontend.h | 2 +- gamelist.c | 2 +- gettext.h | 2 +- lists.c | 2 +- lists.h | 2 +- moves.c | 26 +- moves.h | 8 +- parser.h | 2 +- parser.l | 14 +- pgntags.c | 2 +- pixmaps/pixmaps.h | 2 +- winboard/config.h | 6 +- winboard/defaults.h | 2 +- winboard/help.c | 2 +- winboard/help/html/18.htm | 4 +- winboard/help/winboard.hhk | 4 +- winboard/jaws.c | 16 +- winboard/makefile.gcc | 8 +- winboard/makefile.ms | 8 +- winboard/parser.c | 3866 +++++++++++++++++++++++--------------------- winboard/resource.h | 1 + winboard/wchat.c | 30 +- winboard/wclipbrd.c | 2 +- winboard/wclipbrd.h | 2 +- winboard/wedittags.c | 2 +- winboard/wedittags.h | 2 +- winboard/wengineo.c | 1 + winboard/wgamelist.c | 2 +- winboard/wgamelist.h | 2 +- winboard/winboard.c | 29 +- winboard/winboard.h | 2 +- winboard/winboard.rc | 2 + winboard/winboard.rtf | 2 +- winboard/woptions.c | 8 +- winboard/woptions.h | 2 +- winboard/wsockerr.c | 2 +- winboard/wsockerr.h | 2 +- xboard.c | 13 +- xboard.h | 2 +- xboard.png | Bin 0 -> 1342 bytes xboard.svg | 119 ++ xboard.texi | 5 +- xedittags.c | 2 +- xedittags.h | 2 +- xengineoutput.c | 2 +- xgamelist.c | 2 +- xgamelist.h | 2 +- xhistory.c | 2 +- xhistory.h | 2 +- xoptions.c | 15 +- zic2xpm.c | 2 +- zic2xpm.man | 2 +- zippy.c | 2 +- zippy.h | 2 +- 73 files changed, 2973 insertions(+), 2060 deletions(-) mode change 100755 => 100644 backend.c mode change 100755 => 100644 gamelist.c mode change 100755 => 100644 gettext.h mode change 100755 => 100644 winboard/woptions.c create mode 100644 xboard.png create mode 100644 xboard.svg ** Version 4.4.2 ** (git diff --stat --summary -M v4.4.1...HEAD) Makefile.am | 6 +- backend.c | 108 +++++++++++++++++++++++------------------------ backend.h | 1 + configure.ac | 12 ++++- moves.c | 36 +--------------- pixmaps/asdd72.xpm | 26 ++++++------ pixmaps/asdl72.xpm | 26 ++++++------ pixmaps/cvdd37.xpm | 32 +++++++------- pixmaps/cvdd45.xpm | 42 +++++++++--------- pixmaps/cvdd49.xpm | 48 +++++++++++----------- pixmaps/cvdl37.xpm | 32 +++++++------- pixmaps/cvdl45.xpm | 42 +++++++++--------- pixmaps/cvdl49.xpm | 48 +++++++++++----------- pixmaps/hdd49.xpm | 64 ++++++++++++++-------------- pixmaps/hdd72.xpm | 108 ++++++++++++++++++++++++------------------------ pixmaps/hdl49.xpm | 64 ++++++++++++++-------------- pixmaps/hdl72.xpm | 108 ++++++++++++++++++++++++------------------------ shogibitmaps/README | 2 - shogibitmaps/sa58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sb58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sc58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sf58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sg58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sh58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sk58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sk58w.bmp | Bin 526 -> 0 bytes shogibitmaps/sl58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sl58w.bmp | Bin 526 -> 0 bytes shogibitmaps/sn58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sn58w.bmp | Bin 526 -> 0 bytes shogibitmaps/sp58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sp58w.bmp | Bin 526 -> 0 bytes shogibitmaps/sr58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sr58w.bmp | Bin 526 -> 0 bytes shogibitmaps/ss58o.bmp | Bin 526 -> 0 bytes shogibitmaps/su58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sw58o.bmp | Bin 526 -> 0 bytes shogibitmaps/sw58w.bmp | Bin 526 -> 0 bytes winboard/config.h | 6 +- winboard/makefile.gcc | 2 +- winboard/makefile.ms | 2 +- winboard/wchat.c | 5 +- winboard/wclipbrd.c | 3 +- winboard/winboard.c | 9 +--- winboard/woptions.c | 4 +- xboard.c | 1 + xengineoutput.c | 4 ++ xhistory.c | 25 ++++++----- xoptions.c | 5 +- 49 files changed, 424 insertions(+), 447 deletions(-) delete mode 100644 shogibitmaps/README delete mode 100644 shogibitmaps/sa58o.bmp delete mode 100644 shogibitmaps/sb58o.bmp delete mode 100644 shogibitmaps/sc58o.bmp delete mode 100644 shogibitmaps/sf58o.bmp delete mode 100644 shogibitmaps/sg58o.bmp delete mode 100644 shogibitmaps/sh58o.bmp delete mode 100644 shogibitmaps/sk58o.bmp delete mode 100644 shogibitmaps/sk58w.bmp delete mode 100644 shogibitmaps/sl58o.bmp delete mode 100644 shogibitmaps/sl58w.bmp delete mode 100644 shogibitmaps/sn58o.bmp delete mode 100644 shogibitmaps/sn58w.bmp delete mode 100644 shogibitmaps/sp58o.bmp delete mode 100644 shogibitmaps/sp58w.bmp delete mode 100644 shogibitmaps/sr58o.bmp delete mode 100644 shogibitmaps/sr58w.bmp delete mode 100644 shogibitmaps/ss58o.bmp delete mode 100644 shogibitmaps/su58o.bmp delete mode 100644 shogibitmaps/sw58o.bmp delete mode 100644 shogibitmaps/sw58w.bmp ** Version 4.4.1 ** (git diff --stat --summary -M vold...vnew) .gitignore | 27 +- ChangeLog | 1445 +++++++++++++++++++++++++++++++------------- Makefile.am | 41 +- NEWS | 24 + README | 1 - ToDo => TODO | 0 backend.c | 1322 +++++++++++++++++++++++++---------------- backend.h | 15 +- backendz.h | 1 + bitmaps/a49c.bm | 27 - bitmaps/b129o.bm | 189 ++++++- bitmaps/b129s.bm | 189 ++++++- bitmaps/bitmaps.h | 1060 ++++++++++++++++---------------- bitmaps/fixup.sed | 3 - bitmaps/h129o.bm | 5 - bitmaps/k129o.bm | 189 ++++++- bitmaps/k129s.bm | 189 ++++++- bitmaps/m33s.bm | 18 +- bitmaps/n129o.bm | 189 ++++++- bitmaps/n129s.bm | 189 ++++++- bitmaps/p129o.bm | 189 ++++++- bitmaps/p129s.bm | 189 ++++++- bitmaps/q129o.bm | 189 ++++++- bitmaps/q129s.bm | 189 ++++++- bitmaps/r129o.bm | 189 ++++++- bitmaps/r129s.bm | 189 ++++++- bitmaps/unsigned.sh | 8 - bitmaps/v54o.bm | 30 - bitmaps/v54s.bm | 30 - bitmaps/w54o.bm | 27 - bitmaps/w54s.bm | 27 - book.c | 6 +- cmail.in | 6 +- common.h | 14 +- configure.ac | 2 +- copyright.texi | 1 + engine-intf.html | 1118 ++++++++++++++++------------------ frontend.h | 15 +- gamelist.c | 27 +- moves.c | 49 +- parser.h | 4 +- parser.l | 15 +- pgntags.c | 4 + pixmaps/add33.xpm | 23 +- pixmaps/add37.xpm | 21 +- pixmaps/add40.xpm | 23 +- pixmaps/add45.xpm | 27 +- pixmaps/add49.xpm | 29 +- pixmaps/add54.xpm | 39 +- pixmaps/add58.xpm | 35 +- pixmaps/add64.xpm | 39 +- pixmaps/add72.xpm | 41 +- pixmaps/adl33.xpm | 23 +- pixmaps/adl37.xpm | 21 +- pixmaps/adl40.xpm | 23 +- pixmaps/adl45.xpm | 27 +- pixmaps/adl49.xpm | 29 +- pixmaps/adl54.xpm | 39 +- pixmaps/adl58.xpm | 35 +- pixmaps/adl64.xpm | 39 +- pixmaps/adl72.xpm | 41 +- pixmaps/asdd33.xpm | 47 +- pixmaps/asdd45.xpm | 53 -- pixmaps/asdd49.xpm | 61 +- pixmaps/asdd72.xpm | 85 ++-- pixmaps/asdl33.xpm | 47 +- pixmaps/asdl45.xpm | 53 -- pixmaps/asdl49.xpm | 61 +- pixmaps/asdl72.xpm | 85 ++-- pixmaps/asld45.xpm | 54 -- pixmaps/asll45.xpm | 54 -- pixmaps/cdd33.xpm | 41 +- pixmaps/cdd37.xpm | 53 +- pixmaps/cdd40.xpm | 53 +- pixmaps/cdd45.xpm | 57 +- pixmaps/cdd49.xpm | 61 +- pixmaps/cdd54.xpm | 71 ++-- pixmaps/cdd58.xpm | 73 ++-- pixmaps/cdd64.xpm | 81 ++-- pixmaps/cdd72.xpm | 91 ++-- pixmaps/cdl33.xpm | 41 +- pixmaps/cdl37.xpm | 53 +- pixmaps/cdl40.xpm | 53 +- pixmaps/cdl45.xpm | 57 +- pixmaps/cdl49.xpm | 61 +- pixmaps/cdl54.xpm | 71 ++-- pixmaps/cdl58.xpm | 73 ++-- pixmaps/cdl64.xpm | 81 ++-- pixmaps/cdl72.xpm | 91 ++-- pixmaps/convert.c | 30 +- pixmaps/cvdd33.xpm | 39 +- pixmaps/cvdd37.xpm | 23 +- pixmaps/cvdd40.xpm | 49 +- pixmaps/cvdd45.xpm | 27 +- pixmaps/cvdd49.xpm | 31 +- pixmaps/cvdd54.xpm | 67 +- pixmaps/cvdd58.xpm | 77 ++-- pixmaps/cvdd64.xpm | 79 ++-- pixmaps/cvdd72.xpm | 87 ++-- pixmaps/cvdl33.xpm | 39 +- pixmaps/cvdl37.xpm | 23 +- pixmaps/cvdl40.xpm | 49 +- pixmaps/cvdl45.xpm | 27 +- pixmaps/cvdl49.xpm | 31 +- pixmaps/cvdl54.xpm | 67 +- pixmaps/cvdl58.xpm | 77 ++-- pixmaps/cvdl64.xpm | 79 ++-- pixmaps/cvdl72.xpm | 87 ++-- pixmaps/dkdd33.xpm | 19 +- pixmaps/dkdd49.xpm | 23 +- pixmaps/dkdd72.xpm | 37 +- pixmaps/dkdl33.xpm | 19 +- pixmaps/dkdl49.xpm | 23 +- pixmaps/dkdl72.xpm | 37 +- pixmaps/edd33.xpm | 49 +- pixmaps/edd49.xpm | 63 +- pixmaps/edd72.xpm | 101 ++-- pixmaps/edl33.xpm | 49 +- pixmaps/edl49.xpm | 63 +- pixmaps/edl72.xpm | 101 ++-- pixmaps/fdd33.xpm | 35 +- pixmaps/fdd49.xpm | 43 +- pixmaps/fdd72.xpm | 37 +- pixmaps/fdl33.xpm | 35 +- pixmaps/fdl49.xpm | 43 +- pixmaps/fdl72.xpm | 37 +- pixmaps/gdd33.xpm | 11 +- pixmaps/gdd49.xpm | 11 +- pixmaps/gdd72.xpm | 19 +- pixmaps/gdl33.xpm | 11 +- pixmaps/gdl49.xpm | 11 +- pixmaps/gdl72.xpm | 19 +- pixmaps/hdd33.xpm | 47 +- pixmaps/hdd49.xpm | 39 +- pixmaps/hdd72.xpm | 63 +- pixmaps/hdl33.xpm | 47 +- pixmaps/hdl49.xpm | 39 +- pixmaps/hdl72.xpm | 63 +- pixmaps/ldd33.xpm | 23 +- pixmaps/ldd37.xpm | 25 +- pixmaps/ldd40.xpm | 29 +- pixmaps/ldd45.xpm | 31 +- pixmaps/ldd49.xpm | 25 +- pixmaps/ldd54.xpm | 39 +- pixmaps/ldd58.xpm | 39 +- pixmaps/ldd64.xpm | 37 +- pixmaps/ldd72.xpm | 45 +- pixmaps/ldl33.xpm | 23 +- pixmaps/ldl37.xpm | 25 +- pixmaps/ldl40.xpm | 29 +- pixmaps/ldl45.xpm | 31 +- pixmaps/ldl49.xpm | 25 +- pixmaps/ldl54.xpm | 39 +- pixmaps/ldl58.xpm | 39 +- pixmaps/ldl64.xpm | 37 +- pixmaps/ldl72.xpm | 45 +- pixmaps/mdd33.xpm | 84 ++-- pixmaps/mdd49.xpm | 23 +- pixmaps/mdd72.xpm | 29 +- pixmaps/mdl33.xpm | 84 ++-- pixmaps/mdl49.xpm | 23 +- pixmaps/mdl72.xpm | 29 +- pixmaps/odd33.xpm | 19 +- pixmaps/odd49.xpm | 31 +- pixmaps/odd72.xpm | 45 +- pixmaps/odl33.xpm | 19 +- pixmaps/odl49.xpm | 31 +- pixmaps/odl72.xpm | 45 +- pixmaps/sdd49.xpm | 19 +- pixmaps/sdd72.xpm | 27 +- pixmaps/sdl49.xpm | 19 +- pixmaps/sdl72.xpm | 27 +- pixmaps/udd49.xpm | 49 +- pixmaps/udd72.xpm | 59 +- pixmaps/udl49.xpm | 49 +- pixmaps/udl72.xpm | 59 +- pixmaps/vdd33.xpm | 39 +- pixmaps/vdd49.xpm | 57 +- pixmaps/vdd54.xpm | 62 -- pixmaps/vdd72.xpm | 77 ++-- pixmaps/vdl33.xpm | 39 +- pixmaps/vdl49.xpm | 57 +- pixmaps/vdl54.xpm | 62 -- pixmaps/vdl72.xpm | 77 ++-- pixmaps/vld54.xpm | 63 -- pixmaps/vll54.xpm | 63 -- pixmaps/wdd33.xpm | 39 +- pixmaps/wdd49.xpm | 49 +- pixmaps/wdd54.xpm | 62 -- pixmaps/wdd72.xpm | 69 ++- pixmaps/wdl33.xpm | 39 +- pixmaps/wdl49.xpm | 49 +- pixmaps/wdl54.xpm | 62 -- pixmaps/wdl72.xpm | 69 ++- pixmaps/wld54.xpm | 63 -- pixmaps/wldd49.xpm | 49 +- pixmaps/wldd72.xpm | 69 ++- pixmaps/wldl49.xpm | 49 +- pixmaps/wldl72.xpm | 69 ++- pixmaps/wll54.xpm | 63 -- pixmaps/wndd49.xpm | 47 +- pixmaps/wndd72.xpm | 69 ++- pixmaps/wndl49.xpm | 47 +- pixmaps/wndl72.xpm | 69 ++- pixmaps/wpdd49.xpm | 37 +- pixmaps/wpdd72.xpm | 53 +- pixmaps/wpdl49.xpm | 37 +- pixmaps/wpdl72.xpm | 53 +- pixmaps/wsdd49.xpm | 49 +- pixmaps/wsdd72.xpm | 69 ++- pixmaps/wsdl49.xpm | 49 +- pixmaps/wsdl72.xpm | 69 ++- shiphtml | 25 - winboard/COMPILING | 26 +- winboard/WB4Jaws.dev | 30 +- winboard/Winboard.dev | 30 +- winboard/bitmaps/as45o.bmp | Bin 422 -> 0 bytes winboard/bitmaps/as45s.bmp | Bin 422 -> 0 bytes winboard/bitmaps/as45w.bmp | Bin 422 -> 0 bytes winboard/bitmaps/bas.gif | Bin 308 -> 0 bytes winboard/bitmaps/bcv.gif | Bin 295 -> 0 bytes winboard/bitmaps/bitmaps.h | 368 ----------- winboard/bitmaps/convert.c | 4 +- winboard/bitmaps/h129o.bmp | Bin 2642 -> 0 bytes winboard/bitmaps/m129o.bmp | Bin 2642 -> 0 bytes winboard/bitmaps/m33s.bmp | Bin 3354 -> 326 bytes winboard/bitmaps/v54o.bmp | Bin 494 -> 0 bytes winboard/bitmaps/v54s.bmp | Bin 494 -> 0 bytes winboard/bitmaps/v54w.bmp | Bin 494 -> 0 bytes winboard/bitmaps/w54o.bmp | Bin 454 -> 0 bytes winboard/bitmaps/w54s.bmp | Bin 454 -> 0 bytes winboard/bitmaps/w54w.bmp | Bin 454 -> 0 bytes winboard/bitmaps/was.gif | Bin 326 -> 0 bytes winboard/bitmaps/wcv.gif | Bin 314 -> 0 bytes winboard/config.h | 10 +- winboard/internationalize | 3 + winboard/jaws.c | 98 ++-- winboard/language.txt | 460 ++++++++++++++ winboard/makefile.gcc | 9 +- winboard/makefile.ms | 9 +- winboard/metascript.txt | 14 + winboard/resource.h | 9 + winboard/wchat.c | 256 ++++++++ winboard/wclipbrd.c | 13 - winboard/wevalgraph.c | 356 ++++++----- winboard/wgamelist.c | 5 +- winboard/winboard.c | 668 +++++++-------------- winboard/winboard.dsp | 4 + winboard/winboard.h | 1 + winboard/winboard.rc | 70 ++- winboard/winboard.rtf | 1002 ++++++++++++++++--------------- winboard/woptions.c | 60 +-- winboard/wsettings.c | 136 +---- xboard.c | 533 +++++++---------- xboard.texi | 166 +++--- xedittags.c | 16 - xengineoutput.c | 40 +- xhistory.c | 53 -- xoptions.c | 148 +---- zippy.c | 13 +- 260 files changed, 11230 insertions(+), 8943 deletions(-) rename ToDo => TODO (100%) mode change 100644 => 100755 backend.c delete mode 100644 bitmaps/a49c.bm delete mode 100644 bitmaps/fixup.sed delete mode 100644 bitmaps/h129o.bm delete mode 100644 bitmaps/unsigned.sh delete mode 100644 bitmaps/v54o.bm delete mode 100644 bitmaps/v54s.bm delete mode 100644 bitmaps/w54o.bm delete mode 100644 bitmaps/w54s.bm mode change 100644 => 100755 gamelist.c delete mode 100644 pixmaps/asdd45.xpm delete mode 100644 pixmaps/asdl45.xpm delete mode 100644 pixmaps/asld45.xpm delete mode 100644 pixmaps/asll45.xpm delete mode 100644 pixmaps/vdd54.xpm delete mode 100644 pixmaps/vdl54.xpm delete mode 100644 pixmaps/vld54.xpm delete mode 100644 pixmaps/vll54.xpm delete mode 100644 pixmaps/wdd54.xpm delete mode 100644 pixmaps/wdl54.xpm delete mode 100644 pixmaps/wld54.xpm delete mode 100644 pixmaps/wll54.xpm delete mode 100644 shiphtml delete mode 100644 winboard/bitmaps/as45o.bmp delete mode 100644 winboard/bitmaps/as45s.bmp delete mode 100644 winboard/bitmaps/as45w.bmp delete mode 100644 winboard/bitmaps/bas.gif delete mode 100644 winboard/bitmaps/bcv.gif delete mode 100644 winboard/bitmaps/bitmaps.h delete mode 100644 winboard/bitmaps/h129o.bmp delete mode 100644 winboard/bitmaps/m129o.bmp delete mode 100644 winboard/bitmaps/v54o.bmp delete mode 100644 winboard/bitmaps/v54s.bmp delete mode 100644 winboard/bitmaps/v54w.bmp delete mode 100644 winboard/bitmaps/w54o.bmp delete mode 100644 winboard/bitmaps/w54s.bmp delete mode 100644 winboard/bitmaps/w54w.bmp delete mode 100644 winboard/bitmaps/was.gif delete mode 100644 winboard/bitmaps/wcv.gif create mode 100644 winboard/internationalize create mode 100644 winboard/language.txt create mode 100644 winboard/metascript.txt create mode 100644 winboard/wchat.c mode change 100644 => 100755 winboard/winboard.dsp mode change 100644 => 100755 winboard/woptions.c xboard-4.9.1/parser.c0000644000175000001440000010261112717001265011363 00000000000000/* * parser.c -- * * Copyright 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #include "config.h" #include #include #include #include #include "common.h" #include "backend.h" #include "frontend.h" #include "parser.h" #include "moves.h" extern Board boards[MAX_MOVES]; extern int PosFlags(int nr); int yyboardindex; int yyskipmoves = FALSE; char currentMoveString[4096]; // a bit ridiculous size? char *yy_text; #define PARSEBUFSIZE 10000 static FILE *inputFile; static char *inPtr, *parsePtr, *parseStart; static char inputBuf[PARSEBUFSIZE]; static char yytext[PARSEBUFSIZE]; static char fromString = 0, lastChar = '\n'; #define NOTHING 0 #define NUMERIC 1 #define ALPHABETIC 2 #define BADNUMBER (-2000000000) #define XCO 0 #define YCO 53 #define PIECE 94 #define MISC 155 #define JIS 200 unsigned char kanjiTab[] = { '1', 0357, 0274, 0221, // kanji notation for arabic digits '2', 0357, 0274, 0222, '3', 0357, 0274, 0223, '4', 0357, 0274, 0224, '5', 0357, 0274, 0225, '6', 0357, 0274, 0226, '7', 0357, 0274, 0227, '8', 0357, 0274, 0230, '9', 0357, 0274, 0231, 'x', 0345, 0220, 0214, 's', 0345, 0205, 0210, // sente 'g', 0345, 0276, 0214, // gote '-', 0346, 0212, 0225, // resign 0, 'a', 0344, 0270, 0200, // in reality these are numbers in Japanese a=1, b=2 etc. 'b', 0344, 0272, 0214, 'c', 0344, 0270, 0211, 'd', 0345, 0233, 0233, 'e', 0344, 0272, 0224, 'f', 0345, 0205, 0255, 'g', 0344, 0270, 0203, 'h', 0345, 0205, 0253, 'i', 0344, 0271, 0235, ' ', 0343, 0200, 0200, 0, 'K', 0347, 0216, 0211, // piece names 'K', 0347, 0216, 0213, 'G', 0351, 0207, 0221, 'S', 0351, 0212, 0200, 'R', 0351, 0243, 0233, 'B', 0350, 0247, 0222, 'N', 0346, 0241, 0202, 'L', 0351, 0246, 0231, 'P', 0346, 0255, 0251, 'r', 0351, 0276, 0215, 'b', 0351, 0246, 0254, 'p', 0343, 0201, 0250, 'r', 0347, 0253, 0234, '+', 0346, 0210, 0220, 'G', 0, 0, 0, 0, '+', 0346, 0210, 0220, // helper '@', 0346, 0211, 0223, 'p', 0346, 0211, 0213, // player ':', 0357, 0274, 0232, '-', 0344, 0272, 0206, 'f', 0344, 0270, 0212, 's', 0345, 0257, 0204, 'b', 0345, 0274, 0225, 'r', 0345, 0267, 0246, 'l', 0345, 0217, 0263, 'v', 0347, 0233, 0264, 0, // shift-JIS '1', 0202, 0120, 0, '2', 0202, 0121, 0, '3', 0202, 0122, 0, '4', 0202, 0123, 0, '5', 0202, 0124, 0, '6', 0202, 0125, 0, '7', 0202, 0126, 0, '8', 0202, 0127, 0, '9', 0202, 0130, 0, 'x', 0223, 0257, 0, 's', 0220, 0346, 0, 'g', 0214, 0343, 0, '-', 0223, 0212, 0, 0, 'a', 0210, 0352, 0, 'b', 0223, 0361, 0, 'c', 0216, 0117, 0, 'd', 0216, 0154, 0, 'e', 0214, 0334, 0, 'f', 0230, 0132, 0, 'g', 0216, 0265, 0, 'h', 0224, 0252, 0, 'i', 0213, 0343, 0, ' ', 0201, 0100, 0, 0, 'K', 0213, 0312, 0, 'K', 0213, 0312, 0, 'G', 0213, 0340, 0, 'S', 0213, 0342, 0, 'R', 0224, 0362, 0, 'B', 0212, 0160, 0, 'N', 0214, 0152, 0, 'L', 0215, 0201, 0, 'P', 0225, 0340, 0, 'r', 0227, 0264, 0, 'b', 0224, 0156, 0, 'p', 0202, 0306, 0, 'r', 0227, 0263, 0, '+', 0220, 0254, 0, 'G', 0, 0, 0, 0, '+', 0220, 0254, 0, '@', 0221, 0305, 0, // 'p', 0214, 0343, 0, 'p', 0216, 0350, 0, ':', 0201, 0106, 0, '-', 0227, 0271, 0, 'f', 0217, 0343, 0, 's', 0212, 0361, 0, 'b', 0210, 0370, 0, 'r', 0215, 0266, 0, 'l', 0211, 0105, 0, 'v', 0222, 0274, 0, 0, }; int NextUnit P((char **p)); int kifu = 0; char GetKanji (char **p, int start) { unsigned char *q = *(unsigned char **) p; int i; if((*q & 0x80) == 0) return 0; // plain ASCII, refuse to parse if((**p & 0xC0) == 0x80) { // this is an illegal starting code in utf-8, so assume shift-JIS for(i=start+JIS; kanjiTab[i]; i+=4) { if(q[0] == kanjiTab[i+1] && q[1] == kanjiTab[i+2]) { (*p) += 2; kifu = 0x80; return kanjiTab[i]; } } (*p) += (kifu ? 2 : 1); // assume this is an unrecognized kanji when reading kif files return 0; } for(i=start; kanjiTab[i]; i+=4) { if(q[0] == kanjiTab[i+1] && q[1] == kanjiTab[i+2] && q[2] == kanjiTab[i+3]) { (*p) += 3; kifu = 0x80; return kanjiTab[i]; } } if((q[0] & 0xE0) == 0xC0 && (q[1] & 0xC0) == 0x80) (*p) += 2; else // for now skip unrecognized utf-8 characters if((q[0] & 0xF0) == 0xE0 && (q[1] & 0xC0) == 0x80 && (q[2] & 0xC0) == 0x80) (*p) += 3; else if((q[0] & 0xF8) == 0xF0 && (q[1] & 0xC0) == 0x80 && (q[2] & 0xC0) == 0x80 && (q[3] & 0xC0) == 0x80) (*p) += 4; else if(**p & 0x80) return -1; // not valid utf-8 return 0; // unrecognized but valid kanji (skipped), or plain ASCII } int KifuMove (char **p) { static char buf[MSG_SIZ]; char *ptr = buf+3, *q, k; int wom = quickFlag ? quickFlag&1 : WhiteOnMove(yyboardindex); k = GetKanji(p, XCO); if(k < 0) { (*p)++; return Nothing; } // must try shift-JIS here if(k >= '1' && k <= '9') { buf[0] = k; buf[1] = GetKanji(p, YCO); // to-square coords } else if(k == 'x') { if(GetKanji(p, YCO) != ' ') (*p) -= 3; // skip spacer kanji after recapture } else if((k == 's' || k == 'g') && GetKanji(p, MISC) == 'p' && GetKanji(p, MISC) == ':') { // player name snprintf(yytext, MSG_SIZ, "[%s \"", k == 's' ? "White" : "Black"); // construct PGN tag for(q=yytext+8; **p && **p != '\n' && **p != '\r' && q < yytext + MSG_SIZ; ) *q++ = *(*p)++; strcpy(q, "\"]\n"); parseStart = yytext; lastChar = '\n'; return PGNTag; } else if(k == '-' && GetKanji(p, MISC) == '-') { // resign int res; parseStart = yytext; if(wom) res = BlackWins, strcpy(yytext, "{sente resigns} 0-1"); else res = WhiteWins, strcpy(yytext, "{gote resigns} 1-0"); return res; } else { while(**p && **p != '\n') (*p)++; // unrecognized Japanese kanji: skip to end of line return Nothing; } buf[3] = GetKanji(p, PIECE); // piece ID if(buf[3] == '+') buf[2] = '+', buf[3] = GetKanji(p, PIECE); // +N, +L, +S k = GetKanji(p, MISC); if(k == '@') { // drop move buf[4] = '@', buf[5] = buf[0], buf[6] = buf[1]; buf[7] = NULLCHAR; if(appData.debugMode) fprintf(debugFP, "kifu drop %s\n", ptr); return NextUnit(&ptr); } kifu = 0x80; do { // read disambiguation (and promotion) kanji switch(k) { case '+': kifu |= 1; break; case 'f': kifu |= 2; break; case 'b': kifu |= 4; break; case 's': kifu |= 8; break; case 'l': kifu |= 0x10; break; case 'r': kifu |= 0x20; break; case 'v': kifu |= 0x40; break; } } while(k = GetKanji(p, MISC)); if(**p == '(' && (*p)[3] == ')') { // kif disambiguation buf[4] = (*p)[1]; buf[5] = (*p)[2] + 'a' - '1'; buf[6] = buf[0]; buf[7] = buf[1]; buf[8] = (kifu & 1)*'+'; buf[9] = NULLCHAR; (*p) += 4; ptr++; // strip off piece name if we know full from-square if(appData.debugMode) fprintf(debugFP, "kifu move %s\n", ptr); return NextUnit(&ptr); } else { // kif2 char *q = buf+4; if(islower(buf[3])) // kludge: kanji for promoted types translate as lower case buf[3] += 'A' - 'a', buf[2] = '+', ptr--; // so prefix with '+' if(kifu * ~1) { // disambiguation was given, and thus is probably needed if(buf[3] != 'B' && buf[3] != 'R') { // stepper, so distance must be <= 1 (N or L never need vertical disambiguation!) if(kifu & 0x10) *q++ = buf[0] - (wom ? -1 : 1); // translate left/right/straight to PSN file disambiguators if(kifu & 0x20) *q++ = buf[0] + (wom ? -1 : 1); if(kifu & 0x40) *q++ = buf[0], kifu |= 2; // kludge: 'straight' only needs disambiguation if forward! if(kifu & 2) *q++ = buf[1] + (wom ? -1 : 1); // translate forward/backward/sideway to PSN rank disambiguators if(kifu & 4) *q++ = buf[1] - (wom ? -1 : 1); if(kifu & 8) *q++ = buf[1]; } // for B, R, +B and +R it gets ugly, as we cannot deduce the distance, and the Disambiguate callback has to directly look at 'kifu' } *q++ = buf[0]; *q++ = buf[1]; *q++ = (kifu & 1)*'+'; *q = NULLCHAR; if(appData.debugMode) fprintf(debugFP, "kif2 move %s\n", ptr); return NextUnit(&ptr); } } int ReadLine () { // Read one line from the input file, and append to the buffer int c; char *start = inPtr; if(fromString) return 0; // parsing string, so the end is a hard end if(!inputFile) return 0; while((c = fgetc(inputFile)) != EOF) { *inPtr++ = c; if(c == '\n') { *inPtr = NULLCHAR; return 1; } if(inPtr - inputBuf > PARSEBUFSIZE-2) inPtr--; //prevent crash on overflow } if(inPtr == start) return 0; *inPtr++ = '\n', *inPtr = NULLCHAR; // repair missing linefeed at EOF return 1; } int Scan (char c, char **p) { // line-spanning skip to mentioned character or EOF do { while(**p) if(*(*p)++ == c) return 0; } while(ReadLine()); // no closing bracket; force match for entire rest of file. return 1; } int SkipWhite (char **p) { // skip spaces tabs and newlines; return 1 if anything was skipped char *start = *p; do{ while(**p == ' ' || **p == '\t' || **p == '\n' || **p == '\r') (*p)++; } while(**p == NULLCHAR && ReadLine()); // continue as long as ReadLine reads something return *p != start; } static inline int Match (char *pattern, char **ptr) { char *p = pattern, *s = *ptr; while(*p && (*p == *s++ || s[-1] == '\r' && *p--)) p++; if(*p == 0) { *ptr = s; return 1; } return 0; // no match, no ptr update } static inline int Word (char *pattern, char **p) { if(Match(pattern, p)) return 1; if(*pattern >= 'a' && *pattern <= 'z' && *pattern - **p == 'a' - 'A') { // capitalized (*p)++; if(Match(pattern + 1, p)) return 1; (*p)--; } return 0; } int Verb (char *pattern, char **p) { int res = Word(pattern, p); if(res && !Match("s", p)) Match("ed", p); // eat conjugation suffix, if any return res; } int Number (char **p) { int val = 0; if(**p < '0' || **p > '9') return BADNUMBER; while(**p >= '0' && **p <= '9') { val = 10*val + *(*p)++ - '0'; } return val; } int RdTime (char c, char **p) { char *start = ++(*p), *sec; // increment *p, as it was pointing to the opening ( or { if(Number(p) == BADNUMBER) return 0; sec = *p; if(Match(":", p) && Number(p) != BADNUMBER && *p - sec == 3) { // well formed sec = *p; if(Match(".", p) && Number(p) != BADNUMBER && *(*p)++ == c) return 1; // well-formed fraction *p = sec; if(*(*p)++ == c) return 1; // matching bracket without fraction } *p = start; // failure return 0; } char PromoSuffix (char **p) { char *start = *p; if(**p == ' ') return NULLCHAR; // common case, test explicitly for speed if(**p == 'e' && (Match("ep", p) || Match("e.p.", p))) { *p = start; return NULLCHAR; } // non-compliant e.p. suffix is no promoChar! if(**p == '+' && IS_SHOGI(gameInfo.variant)) { (*p)++; return '+'; } if(**p == '=' || (gameInfo.variant == VariantSChess) && **p == '/') (*p)++; // optional = (or / for Seirawan gating) if(**p == '(' && (*p)[2] == ')' && isalpha( (*p)[1] )) { (*p) += 3; return ToLower((*p)[-2]); } if(isalpha(**p) && **p != 'x') return ToLower(*(*p)++); // reserve 'x' for multi-leg captures? if(*p != start) return **p == '+' ? *(*p)++ : '='; // must be the optional = (or =+) return NULLCHAR; // no suffix detected } int NextUnit (char **p) { // Main parser routine int coord[4], n, result, piece, i; char type[4], promoted, separator, slash, *oldp, *commentEnd, c; int wom = quickFlag ? quickFlag&1 : WhiteOnMove(yyboardindex); // ********* try white first, because it is so common ************************** if(**p == ' ' || **p == '\n' || **p == '\t') { parseStart = (*p)++; return Nothing; } if(**p == NULLCHAR) { // make sure there is something to parse if(fromString) return 0; // we are parsing string, so the end is really the end *p = inPtr = parseStart = inputBuf; if(!ReadLine()) return 0; // EOF } else if(inPtr > inputBuf + PARSEBUFSIZE/2) { // buffer fills up with already parsed stuff char *q = *p, *r = inputBuf; while(*r++ = *q++); *p = inputBuf; inPtr = r - 1; } parseStart = oldp = *p; // remember where we begin // ********* attempt to recognize a SAN move in the leading non-blank text ***** piece = separator = promoted = slash = n = 0; for(i=0; i<4; i++) coord[i] = -1, type[i] = NOTHING; if(**p & 0x80) return KifuMove(p); // non-ascii. Could be some kanj notation for Shogi or Xiangqi if(**p == '+') (*p)++, promoted++; if(**p >= 'a' && **p <= 'z' && (*p)[1]== '@') piece =*(*p)++ + 'A' - 'a'; else if(**p >= 'A' && **p <= 'Z') { static char s[] = SUFFIXES; char *q; piece = *(*p)++; // Note we could test for 2-byte non-ascii names here if(q = strchr(s, **p)) (*p)++, piece += 64*(q - s + 1); if(**p == '/') slash = *(*p)++; } while(n < 4) { if(**p >= 'a' && **p < 'x') coord[n] = *(*p)++ - 'a', type[n++] = ALPHABETIC; else if((i = Number(p)) != BADNUMBER) coord[n] = i, type[n++] = NUMERIC; else break; if(n == 2 && type[0] == type[1]) { // if two identical types, the opposite type in between must have been missing type[2] = type[1]; coord[2] = coord[1]; type[1] = NOTHING; coord[1] = -1; n++; } } // we always get here, and might have read a +, a piece, and upto 4 potential coordinates if(n <= 2) { // could be from-square or disambiguator, when -:xX follow, or drop with @ directly after piece, but also to-square if(**p == '-' || **p == ':' || **p == 'x' || **p == 'X' || // these cannot be move suffix, so to-square must follow (**p == '@' || **p == '*') && n == 0 && !promoted && piece) { // P@ must also be followed by to-square separator = *(*p)++; if(n == 1) coord[1] = coord[0]; // must be disambiguator, but we do not know which yet n = 2; while(n < 4) { // attempt to read to-square if(**p >= 'a' && **p < 'x') coord[n] = *(*p)++ - 'a', type[n++] = ALPHABETIC; else if((i = Number(p)) != BADNUMBER) coord[n] = i, type[n++] = NUMERIC; else break; } } else if((**p == '+' || **p == '=') && n == 1 && piece && type[0] == NUMERIC) { // can be traditional Xiangqi notation separator = *(*p)++; n = 2; if((i = Number(p)) != BADNUMBER) coord[n] = i, type[n++] = NUMERIC; } else if(n == 2) { // only one square mentioned, must be to-square while(n < 4) { coord[n] = coord[n-2], type[n] = type[n-2], coord[n-2] = -1, type[n-2] = NOTHING; n++; } } } else if(n == 3 && type[1] != NOTHING) { // must be hyphenless disambiguator + to-square for(i=3; i>0; i--) coord[i] = coord[i-1], type[i] = type[i-1]; // move to-square to where it belongs type[1] = NOTHING; // disambiguator goes in first two positions n = 4; } // we always get here; move must be completely read now, with to-square coord(s) at end if(n == 3) { // incomplete to-square. Could be Xiangqi traditional, or stuff like fxg if(piece && type[1] == NOTHING && type[0] == NUMERIC && type[2] == NUMERIC && (separator == '+' || separator == '=' || separator == '-')) { // Xiangqi traditional return ImpossibleMove; // for now treat as invalid } // fxg stuff, but also things like 0-0, 0-1 and 1-0 if(!piece && type[1] == NOTHING && type[0] == ALPHABETIC && type[2] == ALPHABETIC && (coord[0] != 14 || coord[2] != 14) /* reserve oo for castling! */ ) { piece = 'P'; n = 4; // kludge alert: fake full to-square } } else if(n == 1 && type[0] == NUMERIC && coord[0] > 1) { while(**p == '.') (*p)++; return Nothing; } // fast exit for move numbers if(n == 4 && type[2] != type[3] && // we have a valid to-square (kludge: type[3] can be NOTHING on fxg type move) (piece || !promoted) && // promoted indicator only valid on named piece type (type[2] == ALPHABETIC || IS_SHOGI(gameInfo.variant))) { // in Shogi also allow alphabetic rank DisambiguateClosure cl; int fromX, fromY, toX, toY; if(slash && (!piece || type[1] == NOTHING)) goto badMove; // slash after piece only in ICS long format if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */ if(type[2] == NUMERIC) { // alpha-rank coord[2] = BOARD_RGHT - BOARD_LEFT - coord[2]; coord[3] = BOARD_HEIGHT - coord[3]; if(coord[0] >= 0) coord[0] = BOARD_RGHT - BOARD_LEFT - coord[0]; if(coord[1] >= 0) coord[1] = BOARD_HEIGHT - coord[1]; } toX = cl.ftIn = (currentMoveString[2] = coord[2] + 'a') - AAA; toY = cl.rtIn = (currentMoveString[3] = coord[3] + '0') - ONE; if(type[3] == NOTHING) cl.rtIn = -1; // for fxg type moves ask for toY disambiguation else if(toY >= BOARD_HEIGHT || toY < 0) return ImpossibleMove; // vert off-board to-square if(toX < BOARD_LEFT || toX >= BOARD_RGHT) return ImpossibleMove; if(piece) { cl.pieceIn = CharToPiece(wom ? piece : piece + 'a' - 'A'); if(cl.pieceIn == EmptySquare) return ImpossibleMove; // non-existent piece if(promoted) cl.pieceIn = (ChessSquare) (CHUPROMOTED(cl.pieceIn)); } else cl.pieceIn = EmptySquare; if(separator == '@' || separator == '*') { // drop move. We only get here without from-square or promoted piece fromY = DROP_RANK; fromX = cl.pieceIn; currentMoveString[0] = piece; currentMoveString[1] = '@'; currentMoveString[4] = NULLCHAR; return LegalityTest(boards[yyboardindex], PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, fromY, fromX, toY, toX, NULLCHAR); } if(type[1] == NOTHING && type[0] != NOTHING) { // there is a disambiguator if(type[0] != type[2]) coord[0] = -1, type[1] = type[0], type[0] = NOTHING; // it was a rank-disambiguator } if( type[1] != type[2] && // means fromY is of opposite type as ToX, or NOTHING (type[0] == NOTHING || type[0] == type[2]) ) { // well formed int suffix = 7; fromX = (currentMoveString[0] = coord[0] + 'a') - AAA; fromY = (currentMoveString[1] = coord[1] + '0') - ONE; currentMoveString[4] = cl.promoCharIn = PromoSuffix(p); currentMoveString[5] = NULLCHAR; if(**p == 'x' && !cl.promoCharIn) { // other leg follows char *q = *p; int x = *++*p, y; ++*p; y = Number(p); if(**p == '-' || **p == 'x') { // 3-leg move! currentMoveString[7] = (kill2X = toX) + AAA; // what we thought was to-square is in fact 1st kill-square of two currentMoveString[8] = (kill2Y = toY) + ONE; // append it after 2nd kill-square toX = x - AAA; // kludge alert: this will become 2nd kill square toY = y + '0' - ONE; suffix += 2; } else *p = q; // 2-leg move, rewind to leave reading of 2nd leg to code below } if(!cl.promoCharIn && (**p == '-' || **p == 'x')) { // Lion-type multi-leg move currentMoveString[5] = (killX = toX) + AAA; // what we thought was to-square is in fact kill-square currentMoveString[6] = (killY = toY) + ONE; // append it as suffix behind long algebraic move currentMoveString[4] = ';'; currentMoveString[suffix+1] = NULLCHAR; // read new to-square (VERY non-robust! Assumes correct (non-alpha-rank) syntax, and messes up on errors) toX = cl.ftIn = (currentMoveString[2] = *++*p) - AAA; ++*p; toY = cl.rtIn = (currentMoveString[3] = Number(p) + '0') - ONE; currentMoveString[suffix] = cl.promoCharIn = PromoSuffix(p); } if(type[0] != NOTHING && type[1] != NOTHING && type[3] != NOTHING) { // fully specified. ChessSquare realPiece = boards[yyboardindex][fromY][fromX]; // Note that Disambiguate does not work for illegal moves, but flags them as impossible if(piece) { // check if correct piece indicated if(PieceToChar(realPiece) == '~') realPiece = (ChessSquare) (DEMOTED(realPiece)); if(!(appData.icsActive && PieceToChar(realPiece) == '+') && // trust ICS if it moves promoted pieces piece && realPiece != cl.pieceIn) return ImpossibleMove; } else if(!separator && **p == '+') { // could be a protocol move, where bare '+' suffix means shogi-style promotion if(realPiece < (wom ? WhiteCannon : BlackCannon) && PieceToChar(PROMOTED(realPiece)) == '+') // seems to be that currentMoveString[4] = cl.promoCharIn = *(*p)++; // append promochar after all } result = LegalityTest(boards[yyboardindex], PosFlags(yyboardindex), fromY, fromX, toY, toX, cl.promoCharIn); if (currentMoveString[4] == NULLCHAR) { // suppy missing mandatory promotion character if(result == WhitePromotion || result == BlackPromotion) { switch(gameInfo.variant) { case VariantCourier: case VariantShatranj: currentMoveString[4] = PieceToChar(BlackFerz); break; case VariantGreat: currentMoveString[4] = PieceToChar(BlackMan); break; case VariantShogi: currentMoveString[4] = '+'; break; default: currentMoveString[4] = PieceToChar(BlackQueen); } } else if(result == WhiteNonPromotion || result == BlackNonPromotion) { currentMoveString[4] = '='; } } else if(appData.testLegality && gameInfo.variant != VariantSChess && // strip off unnecessary and false promo characters !(result == WhitePromotion || result == BlackPromotion || result == WhiteNonPromotion || result == BlackNonPromotion)) currentMoveString[4] = NULLCHAR; return result; } else if(cl.pieceIn == EmptySquare) cl.pieceIn = wom ? WhitePawn : BlackPawn; cl.ffIn = type[0] == NOTHING ? -1 : coord[0] + 'a' - AAA; cl.rfIn = type[1] == NOTHING ? -1 : coord[1] + '0' - ONE; Disambiguate(boards[yyboardindex], PosFlags(yyboardindex), &cl); if(cl.kind == ImpossibleMove && !piece && type[1] == NOTHING // fxg5 type && toY == (wom ? 4 : 3)) { // could be improperly written e.p. cl.rtIn += wom ? 1 : -1; // shift target square to e.p. square Disambiguate(boards[yyboardindex], PosFlags(yyboardindex), &cl); if((cl.kind != WhiteCapturesEnPassant && cl.kind != BlackCapturesEnPassant)) return ImpossibleMove; // nice try, but no cigar } currentMoveString[0] = cl.ff + AAA; currentMoveString[1] = cl.rf + ONE; currentMoveString[3] = cl.rt + ONE; if(killX < 0) // [HGM] lion: do not overwrite kill-square suffix currentMoveString[4] = cl.promoChar; if((cl.kind == WhiteCapturesEnPassant || cl.kind == BlackCapturesEnPassant) && !Match("ep", p)) Match("e.p.", p); return (int) cl.kind; } } badMove:// we failed to find algebraic move *p = oldp; // Next we do some common symbols where the first character commits us to things that cannot possibly be a move // ********* PGN tags ****************************************** if(**p == '[') { oldp = ++(*p); kifu = 0; if(Match("--", p)) { // "[--" could be start of position diagram if(!Scan(']', p) && (*p)[-3] == '-' && (*p)[-2] == '-') return PositionDiagram; *p = oldp; } SkipWhite(p); if(isdigit(**p) || isalpha(**p)) { do (*p)++; while(isdigit(**p) || isalpha(**p) || **p == '+' || **p == '-' || **p == '=' || **p == '_' || **p == '#'); SkipWhite(p); if(**p == '"') { (*p)++; while(**p != '\n' && (*(*p)++ != '"'|| (*p)[-2] == '\\')); // look for unescaped quote if((*p)[-1] !='"') { *p = oldp; Scan(']', p); return Comment; } // string closing delimiter missing SkipWhite(p); if(*(*p)++ == ']') return PGNTag; } } Scan(']', p); return Comment; } // ********* SAN Castings ************************************* if(**p == 'O' || **p == 'o' || **p == '0' && !Match("00:", p)) { // exclude 00 in time stamps int castlingType = 0; if(Match("O-O-O", p) || Match("o-o-o", p) || Match("0-0-0", p) || Match("OOO", p) || Match("ooo", p) || Match("000", p)) castlingType = 2; else if(Match("O-O", p) || Match("o-o", p) || Match("0-0", p) || Match("OO", p) || Match("oo", p) || Match("00", p)) castlingType = 1; if(castlingType) { //code from old parser, collapsed for both castling types, and streamlined a bit int rf, ff, rt, ft; ChessSquare king; char promo=NULLCHAR; if(gameInfo.variant == VariantSChess) promo = PromoSuffix(p); if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */ if (wom) { rf = castlingRank[0]; rt = castlingRank[0]; king = WhiteKing; } else { rf = castlingRank[3]; rt = castlingRank[3]; king = BlackKing; } ff = (BOARD_WIDTH-1)>>1; // this would be d-file if (boards[yyboardindex][rf][ff] == king) { /* ICS wild castling */ ft = castlingType == 1 ? BOARD_LEFT+1 : (gameInfo.variant == VariantJanus ? BOARD_RGHT-2 : BOARD_RGHT-3); } else { char *q; ff = BOARD_WIDTH>>1; // e-file ft = castlingType == 1 ? BOARD_RGHT-2 : BOARD_LEFT+2; if(pieceDesc[king] && (q = strchr(pieceDesc[king], 'O'))) { // redefined to non-default King stride ft = (castlingType == 1 ? ff + atoi(q+1) : ff - atoi(q+1)); } } if(PosFlags(0) & F_FRC_TYPE_CASTLING) { if (wom) { ff = initialRights[2]; ft = initialRights[castlingType-1]; } else { ff = initialRights[5]; ft = initialRights[castlingType+2]; } if (appData.debugMode) fprintf(debugFP, "Parser FRC (type=%d) %d %d\n", castlingType, ff, ft); if(ff == NoRights || ft == NoRights) return ImpossibleMove; } sprintf(currentMoveString, "%c%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE,promo); if (appData.debugMode) fprintf(debugFP, "(%d-type) castling %d %d\n", castlingType, ff, ft); return (int) LegalityTest(boards[yyboardindex], PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: e.p.! rf, ff, rt, ft, promo); } else if(Match("01", p)) return Nothing; // prevent this from being mistaken for move number 1 } // ********* variations (nesting) ****************************** if(**p =='(') { if(RdTime(')', p)) return ElapsedTime; return Open; } if(**p ==')') { (*p)++; return Close; } if(**p == ';') { while(**p != '\n') (*p)++; return Comment; } // ********* Comments and result messages ********************** *p = oldp; commentEnd = NULL; result = 0; if(**p == '{') { if(RdTime('}', p)) return ElapsedTime; if(lastChar == '\n' && Match("--------------\n", p)) { char *q; i = Scan ('}', p); q = *p - 16; if(Match("\n--------------}\n", &q)) return PositionDiagram; } else i = Scan('}', p); commentEnd = *p; if(i) return Comment; // return comment that runs to EOF immediately } if(commentEnd) SkipWhite(p); if(kifu && **p == '*') { // .kif comment char *q = yytext; while(**p && **p != '\n') { if(q < yytext + 10*MSG_SIZ-3) *q++ = **p; (*p)++; } parseStart = yytext; *yytext = '{'; strcpy(q, "}\n"); // wrap in braces return Comment; } if(Match("*", p)) result = GameUnfinished; else if(**p == '0') { if( Match("0-1", p) || Match("0/1", p) || Match("0:1", p) || Match("0 - 1", p) || Match("0 / 1", p) || Match("0 : 1", p)) result = BlackWins; } else if(**p == '1') { if( Match("1-0", p) || Match("1/0", p) || Match("1:0", p) || Match("1 - 0", p) || Match("1 / 0", p) || Match("1 : 0", p)) result = WhiteWins; else if(Match("1/2 - 1/2", p) || Match("1/2:1/2", p) || Match("1/2 : 1/2", p) || Match("1 / 2 - 1 / 2", p) || Match("1 / 2 : 1 / 2", p) || Match("1/2", p) || Match("1 / 2", p)) result = GameIsDrawn; } if(result) { if(Match(" (", p) && !Scan(')', p) || Match(" {", p) && !Scan('}', p)) { // there is a comment after the PGN result! if(commentEnd) { *p = commentEnd; return Comment; } // so comment before it is normal comment; return that first } return result; // this returns a possible preceeding comment as result details } if(commentEnd) { *p = commentEnd; return Comment; } // there was no PGN result following, so return as normal comment // ********* Move numbers (after castlings or PGN results!) *********** if((i = Number(p)) != BADNUMBER) { // a single number was read as part of our attempt to read a move char *numEnd = *p; if(**p == '.') (*p)++; SkipWhite(p); if(**p == '+' || isalpha(**p) || gameInfo.variant == VariantShogi && *p != numEnd && isdigit(**p)) { *p = numEnd; return i == 1 ? MoveNumberOne : Nothing; } *p = numEnd; return Nothing; } // ********* non-compliant game-result indicators ********************* if(Match("+-+", p) || Word("stalemate", p)) return GameIsDrawn; if(Match("++", p) || Verb("resign", p) || (Word("check", p) || 1) && Word("mate", p) ) return (wom ? BlackWins : WhiteWins); c = ToUpper(**p); if(Word("w", p) && (Match("hite", p) || 1) || Word("b", p) && (Match("lack", p) || 1) ) { if(**p != ' ') return Nothing; ++*p; if(Verb("disconnect", p)) return GameUnfinished; if(Verb("resign", p) || Verb("forfeit", p) || Word("mated", p) || Word("lost", p) || Word("loses", p)) return (c == 'W' ? BlackWins : WhiteWins); if(Word("mates", p) || Word("wins", p) || Word("won", p)) return (c != 'W' ? BlackWins : WhiteWins); return Nothing; } if(Word("draw", p)) { if(**p == 'n') (*p)++; if(**p != ' ') return GameIsDrawn; oldp = ++*p; if(Word("agreed", p)) return GameIsDrawn; if(Match("by ", p) && (Word("repetition", p) || Word("agreement", p)) ) return GameIsDrawn; *p = oldp; if(*(*p)++ == '(') { while(**p != '\n') if(*(*p)++ == ')') break; if((*p)[-1] == ')') return GameIsDrawn; } *p = oldp - 1; return GameIsDrawn; } // ********* Numeric annotation glyph ********************************** if(**p == '$') { (*p)++; if(Number(p) != BADNUMBER) return NAG; return Nothing; } // ********** by now we are getting down to the silly stuff ************ if(Word("gnu", p) || Match("GNU", p)) { if(**p == ' ') (*p)++; if(Word("chess", p) || Match("CHESS", p)) { char *q; if((q = strstr(*p, "game")) || (q = strstr(*p, "GAME")) || (q = strstr(*p, "Game"))) { (*p) = q + 4; return GNUChessGame; } } return Nothing; } if(lastChar == '\n' && (Match("# ", p) || Match("; ", p) || Match("% ", p))) { while(**p != '\n' && **p != ' ') (*p)++; if(**p == ' ' && (Match(" game file", p) || Match(" position file", p))) { while(**p != '\n') (*p)++; // skip to EOLN return XBoardGame; } *p = oldp; // we might need to re-match the skipped stuff } if(Match("---", p)) { while(**p == '-') (*p)++; return Nothing; } // prevent separators parsing as null move if(Match("@@@@", p) || Match("--", p) || Match("Z0", p) || Match("pass", p) || Match("null", p)) { strncpy(currentMoveString, "@@@@", 5); return yyboardindex & F_WHITE_ON_MOVE ? WhiteDrop : BlackDrop; } // ********* Efficient skipping of (mostly) alphabetic chatter ********** while(isdigit(**p) || isalpha(**p) || **p == '-') (*p)++; if(*p != oldp) { if(**p == '\'') { while(isdigit(**p) || isalpha(**p) || **p == '-' || **p == '\'') (*p)++; return Nothing; // random word } if(lastChar == '\n' && Match(": ", p)) { // mail header, skip indented lines do { while(**p != '\n') (*p)++; if(!ReadLine()) return Nothing; // append next line if not EOF } while(Match("\n ", p) || Match("\n\t", p)); } return Nothing; } // ********* Prevent 00 in unprotected time stamps to be mistaken for castling ******* if(Match(":00", p)) return Nothing; // ********* Could not match to anything. Return offending character **** (*p)++; return Nothing; } /* Return offset of next pattern in the current file. */ int yyoffset () { return ftell(inputFile) - (inPtr - parsePtr); // subtract what is read but not yet parsed } void yynewfile (FILE *f) { // prepare parse buffer for reading file inputFile = f; inPtr = parsePtr = inputBuf; fromString = 0; lastChar = '\n'; *inPtr = NULLCHAR; // make sure we will start by reading a line } void yynewstr P((char *s)) { parsePtr = s; inputFile = NULL; fromString = 1; } int yylex () { // this replaces the flex-generated parser int result = NextUnit(&parsePtr); char *p = parseStart, *q = yytext; if(p == yytext) return result; // kludge to allow kanji expansion while(p < parsePtr) *q++ = *p++; // copy the matched text to yytext[] *q = NULLCHAR; lastChar = q[-1]; return result; } int Myylex () { // [HGM] wrapper for yylex, which treats nesting of parentheses int symbol, nestingLevel = 0, i=0; char *p; static char buf[256*MSG_SIZ]; buf[0] = NULLCHAR; do { // eat away anything not at level 0 symbol = yylex(); if(symbol == Open) nestingLevel++; if(nestingLevel) { // save all parsed text between (and including) the () for(p=yytext; *p && i<256*MSG_SIZ-2;) buf[i++] = *p++; buf[i] = NULLCHAR; } if(symbol == 0) break; // ran into EOF if(symbol == Close) symbol = Comment, nestingLevel--; } while(nestingLevel || symbol == Nothing); yy_text = buf[0] ? buf : (char*)yytext; return symbol; } ChessMove yylexstr (int boardIndex, char *s, char *buf, int buflen) { ChessMove ret; char *savPP = parsePtr; fromString = 1; yyboardindex = boardIndex; parsePtr = s; ret = (ChessMove) Myylex(); strncpy(buf, yy_text, buflen-1); buf[buflen-1] = NULLCHAR; parsePtr = savPP; fromString = 0; return ret; } xboard-4.9.1/xboard.info0000644000175000001440000120400112747542747012076 00000000000000This is xboard.info, produced by makeinfo version 6.1 from xboard.texi. INFO-DIR-SECTION Games START-INFO-DIR-ENTRY * xboard: (xboard). An X Window System graphical chessboard. END-INFO-DIR-ENTRY  File: xboard.info, Node: Top, Next: Major modes, Up: (dir) Introduction ************ XBoard is a graphical chessboard that can serve as a user interface to chess engines (such as GNU Chess), the Internet Chess Servers, electronic mail correspondence chess, or your own collection of saved games. This manual documents version 4.9.1 of XBoard. * Menu: * Major modes:: The main things XBoard can do. * Basic operation:: Mouse and keyboard functions. * Menus:: Menus, buttons, and keys. * Options:: Command options supported by XBoard. * Chess Servers:: Using XBoard with an Internet Chess Server (ICS). * Firewalls:: Connecting to a chess server through a firewall. * Environment:: Environment variables. * Limitations:: Known limitations and/or bugs. * Problems:: How and where to report any problems you run into. * Contributors:: People who have helped developing XBoard. * CMail:: Using XBoard for electronic correspondence chess. * Other programs:: Other programs you can use with XBoard. * Copyright:: Copyright notice for this manual. * Copying:: The GNU General Public License. * Index:: Index of concepts and symbol names.  File: xboard.info, Node: Major modes, Next: Basic operation, Prev: Top, Up: Top 1 Major modes ************* XBoard always runs in one of four major modes. You select the major mode from the command line when you start up XBoard. xboard [options] As an interface to GNU Chess or another chess engine running on your machine, XBoard lets you play a game against the machine, set up arbitrary positions, force variations, watch a game between two chess engines, interactively analyze your stored games or set up and analyze arbitrary positions. To run engines that use the UCI standard XBoard will draw upon the Polyglot adapter fully transparently, but you will need to have the polyglot package installed for this to work. xboard -ics -icshost hostname [options] As Internet Chess Server (ICS) interface, XBoard lets you play against other ICS users, observe games they are playing, or review games that have recently finished. Most of the ICS "wild" chess variants are supported, including bughouse. xboard -ncp [options] XBoard can also be used simply as an electronic chessboard to play through games. It will read and write game files and allow you to play through variations manually. You can use it to browse games off the net or review games you have saved. These features are also available in the other modes. |pxboard If you want to pipe games into XBoard, use the supplied shell script 'pxboard'. For example, from the news reader 'xrn', find a message with one or more games in it, click the Save button, and type '|pxboard' as the file name. cmail [options] As an interface to electronic mail correspondence chess, XBoard works with the cmail program. See *note CMail:: below for instructions.  File: xboard.info, Node: Basic operation, Next: Menus, Prev: Major modes, Up: Top 2 Basic operation ***************** To move a piece, you can drag it with the left mouse button, or you can click the left mouse button once on the piece, then once more on the destination square. To under-promote a Pawn you can drag it backwards until it morphs into the piece you want to promote to, after which you drag that forward to the promotion square. Or after selecting the pawn with a first click you can then click the promotion square and move the mouse while keeping the button down until the piece that you want appears in the promotion square. To castle you move the King to its destination or, in Chess960, on top of the Rook you want to castle with. In crazyhouse, bughouse or shogi you can drag and drop pieces to the board from the holdings squares displayed next to the board. Old behavior, where right-clicking a square brings up a menu where you can select what piece to drop on it can still be selected through the 'Drop Menu' option. Only in Edit Position mode right and middle clicking a square is still used to put a piece on it, and the piece to drop is selected by sweeping the mouse vertically with the button held down. The default function of the right mouse button in other modes is to display the position the chess program thinks it will end up in. While moving the mouse vertically with this button pressed XBoard will step through the principal variation to show how this position will be reached. Lines of play displayed in the engine-output window, or PGN variations in the comment window can similarly be played out on the board, by right-clicking on them. Only in Analysis mode, when you walk along a PV, releasing the mouse button might forward the game upto that point, like you entered all previous PV moves. As the display of the PV in that case starts after the first move a simple right-click will play the move the engine indicates. In Analysis mode you can also make a move by grabbing the piece with a double-click of the left mouse button (or while keeping the 'Ctrl' key pressed). In this case the move you enter will not be played, but will be excluded from the analysis of the current position. (Or included if it was already excluded; it is a toggle.) This only works for engines that support this feature. When connected to an ICS, it is possible to call up a graphical representation of players seeking a game in stead of the chess board, when the latter is not in use (i.e. when you are not playing or observing). Left-clicking the display area will switch between this 'seek graph' and the chess board. Hovering the mouse pointer over a dot will show the details of the seek ad in the message field above the board. Left-clicking the dot will challenge that player. Right-clicking a dot will 'push it to the back', to reveal any dots that were hidden behind it. Right-clicking off dots will refresh the graph. Most other XBoard commands are available from the menu bar. The most frequently used commands also have shortcut keys or on-screen buttons. These shortcut keystrokes are mostly non-printable characters. Typing a letter or digit while the board window has focus will bring up a type-in box with the typed letter already in it. You can use that to type a move in situations where it is your turn to enter a move, type a move number to call up the position after that move in the display, or, in Edit Position mode, type a FEN. Some rarely used parameters can only be set through options on the command line used to invoke XBoard. XBoard uses a settings file, in which it can remember any changes to the settings that are made through menus or command-line options, so they will still apply when you restart XBoard for another session. The settings can be saved into this file automatically when XBoard exits, or on explicit request of the user. Note that the board window can be sized by the user, but that this will not affect the size of the clocks above it, and won't be remembered in the settings file. To persistently change the size of the clocks, use the 'size' command-line option when starting XBoard. The default name for the settings file is /etc/xboard/xboard.conf, but in a standard install this file is only used as a master settings file that determines the system-wide default settings, and defers reading and writing of user settings to a user-specific file like ~/.xboardrc in the user's home directory. When XBoard is iconized, its graphical icon is a white knight if it is White's turn to move, a black knight if it is Black's turn.  File: xboard.info, Node: Menus, Next: Options, Prev: Basic operation, Up: Top 3 Menus, buttons, and keys ************************** * Menu: * File Menu:: Accessing external games and positions. * Edit Menu:: Altering games, positions, PGN tags or comments. * View Menu:: Controlling XBoard's shape and looks. * Mode Menu:: Selecting XBoard's mode. * Action Menu:: Talking to the chess engine or ICS opponents. * Engine Menu:: Controlling settings and actions of the engine(s). * Options Menu:: User preferences. * Help Menu:: Getting help. * Keys:: Other shortcut keys.  File: xboard.info, Node: File Menu, Next: Edit Menu, Up: Menus 3.1 File Menu ============= New Game Resets XBoard and the chess engine to the beginning of a new chess game. The 'Ctrl-N' key is a keyboard equivalent. In Internet Chess Server mode, clears the current state of XBoard, then resynchronizes with the ICS by sending a refresh command. If you want to stop playing, observing, or examining an ICS game, use an appropriate command from the Action menu, not 'New Game'. *Note Action Menu::. New Shuffle Game Similar to 'New Game', but allows you to specify a particular initial position (according to a standardized numbering system) in chess variants which use randomized opening positions (e.g. Chess960). shuffle Ticking 'shuffle' will cause the current variant to be played with shuffled initial position. Shuffling will preserve the possibility to castle in the way allowed by the variant. Fischer castling Ticking 'Fischer castling' will allow castling with Kings and Rooks that did not start in their normal place, as in Chess960. Start-position number randomize pick fixed The 'Start-position number' selects a particular start position from all allowed shufflings, which will then be used for every new game. Setting this to -1 (which can be done by pressing the 'randomize' button) will cause a fresh random position to be picked for every new game. Pressing the 'pick fixed' button causes 'Start-position number' to be set to a random value, to be used for all subsequent games. New Variant Allows you to select a new chess variant in non-ICS mode. (In ICS play, the ICS is responsible for deciding which variant will be played, and XBoard adapts automatically.) The shifted 'Alt+V' key is a keyboard equivalent. If you play with an engine, the engine must be able to play the selected variant, or the corresponding choice will be disabled. XBoard supports all major variants, such as xiangqi, shogi, chess, chess960, makruk, Capablanca Chess, shatranj, crazyhouse, bughouse. You can overrule the default board format of the selected variant, (e.g. to play suicide chess on a 6 x 6 board), in this dialog, but normally you would not do that, and leave them at '-1', which means 'default' for the chosen variant. Load Game Plays a game from a record file. The 'Ctrl-O' key is a keyboard equivalent. A pop-up dialog prompts you for the file name. If the file contains more than one game, a second pop-up dialog displays a list of games (with information drawn from their PGN tags, if any), and you can select the one you want. Alternatively, you can load the Nth game in the file directly, by typing the number 'N' after the file name, separated by a space. The game-file parser will accept PGN (portable game notation), or in fact almost any file that contains moves in algebraic notation. Notation of the form 'P@f7' is accepted for piece-drops in bughouse games; this is a nonstandard extension to PGN. If the file includes a PGN position (FEN tag), or an old-style XBoard position diagram bracketed by '[--' and '--]' before the first move, the game starts from that position. Text enclosed in parentheses, square brackets, or curly braces is assumed to be commentary and is displayed in a pop-up window. Any other text in the file is ignored. PGN variations (enclosed in parentheses) also are treated as comments; however, if you rights-click them in the comment window, XBoard will shelve the current line, and load the the selected variation, so you can step through it. You can later revert to the previous line with the 'Revert' command. This way you can walk quite complex varation trees with XBoard. The nonstandard PGN tag [Variant "varname"] functions similarly to the -variant command-line option (see below), allowing games in certain chess variants to be loaded. Note that it must appear before any FEN tag for XBoard to recognize variant FENs appropriately. There is also a heuristic to recognize chess variants from the Event tag, by looking for the strings that the Internet Chess Servers put there when saving variant ("wild") games. Load Position Sets up a position from a position file. A pop-up dialog prompts you for the file name. The shifted 'Ctrl-O' key is a keyboard equivalent. If the file contains more than one saved position, and you want to load the Nth one, type the number N after the file name, separated by a space. Position files must be in FEN (Forsythe-Edwards notation), or in the format that the Save Position command writes when oldSaveStyle is turned on. Load Next Position Loads the next position from the last position file you loaded. The shifted 'PgDn' key is a keyboard equivalent. Load Previous Position Loads the previous position from the last position file you loaded. The shifted 'PgUp' key is a keyboard equivalent. Not available if the last position was loaded from a pipe. Save Game Appends a record of the current game to a file. The 'Ctrl-S' key is a keyboard equivalent. A pop-up dialog prompts you for the file name. If the game did not begin with the standard starting position, the game file includes the starting position used. Games are saved in the PGN (portable game notation) format, unless the oldSaveStyle option is true, in which case they are saved in an older format that is specific to XBoard. Both formats are human-readable, and both can be read back by the 'Load Game' command. Notation of the form 'P@f7' is accepted for piece-drops in bughouse games; this is a nonstandard extension to PGN. Save Position Appends a diagram of the current position to a file. The shifted 'Ctrl+S' key is a keyboard equivalent. A pop-up dialog prompts you for the file name. Positions are saved in FEN (Forsythe-Edwards notation) format unless the 'oldSaveStyle' option is true, in which case they are saved in an older, human-readable format that is specific to XBoard. Both formats can be read back by the 'Load Position' command. Save Selected Games Will cause all games selected for display in the current Game List to be appended to a file of the user's choice. Save Games as Book Creates an opening book from the currently loaded game file, incorporating only the games currently selected in the Game List. The book will be saved on the file specified in the 'Common Engine' options dialog. The value of 'Book Depth' specified in that same dialog will be used to determine how many moves of each game will be added to the internal book buffer. This command can take a long time to process, and the size of the buffer is currently limited. At the end the buffer will be saved as a Polyglot book, but the buffer will not be cleared, so that you can continue adding games from other game files. Mail Move Reload CMail Message See *note CMail::. Exit Exits from XBoard. The 'Ctrl-Q' key is a keyboard equivalent.  File: xboard.info, Node: Edit Menu, Next: View Menu, Prev: File Menu, Up: Menus 3.2 Edit Menu ============= Copy Game Copies a record of the current game to an internal clipboard in PGN format and sets the X selection to the game text. The 'Ctrl-C' key is a keyboard equivalent. The game can be pasted to another application (such as a text editor or another copy of XBoard) using that application's paste command. In many X applications, such as xterm and emacs, the middle mouse button can be used for pasting; in XBoard, you must use the Paste Game command. Copy Position Copies the current position to an internal clipboard in FEN format and sets the X selection to the position text. The shifted 'Ctrl-C' key is a keyboard equivalent. The position can be pasted to another application (such as a text editor or another copy of XBoard) using that application's paste command. In many X applications, such as xterm and emacs, the middle mouse button can be used for pasting; in XBoard, you must use the Paste Position command. Copy Game List Copies the current game list to the clipboard, and sets the X selection to this text. A format of comma-separated double-quoted strings is used, including all tags, so it can be easily imported into spread-sheet programs. Paste Game Interprets the current X selection as a game record and loads it, as with Load Game. The 'Ctrl-V' key is a keyboard equivalent. Paste Position Interprets the current X selection as a FEN position and loads it, as with Load Position. The shifted 'Ctrl-V' key is a keyboard equivalent. Edit Game Allows you to make moves for both Black and White, and to change moves after backing up with the 'Backward' command. The clocks do not run. The 'Ctrl-E' key is a keyboard equivalent. In chess engine mode, the chess engine continues to check moves for legality but does not participate in the game. You can bring the chess engine into the game by selecting 'Machine White', 'Machine Black', or 'Two Machines'. In ICS mode, the moves are not sent to the ICS: 'Edit Game' takes XBoard out of ICS Client mode and lets you edit games locally. If you want to edit games on ICS in a way that other ICS users can see, use the ICS 'examine' command or start an ICS match against yourself. Edit Position Lets you set up an arbitrary board position. The shifted 'Ctrl-E' key is a keyboard equivalent. Use mouse button 1 to drag pieces to new squares, or to delete a piece by dragging it off the board or dragging an empty square on top of it. When you do this keeping the 'Ctrl' key pressed, or start dragging with a double-click, you will move a copy of the piece, leaving the piece itself where it was. In variants where pieces can promote (such as Shogi), left-clicking an already selected piece promotes or demotes it. To drop a new piece on a square, press mouse button 2 or 3 over the square. This puts a white or black pawn in the square, respectively, but you can change that to any other piece type by dragging the mouse down before you release the button. You will then see the piece on the originally clicked square cycle through the available pieces (including those of opposite color), and can release the button when you see the piece you want. (Note you can swap the function of button 2 and 3 by pressing the shift key, and that there is an option 'monoMouse' to combine al functions in one button, which then acts as button 3 over an empty square, and as button 1 over a piece.) To alter the side to move, you can click the clock (the words White and Black above the board) of the side you want to give the move to. To clear the board you can click the clock of the side that already has the move (which is highlighted in black). If you repeat this the board will cycle from empty to a 'pallette board' containing every piece once to the initial position to the one before clearing. The quickest way to set up a position is usually to start with the pallette board, and move the pieces to were you want them, duplicating them where necessary by using the 'Ctrl' key, dragging those you don't want off board, and use static button 2 or 3 clicks to place the Pawns. The old behavior with a piece menu can still be configured with the aid of the 'pieceMenu' option. Dragging empty squares off board can create boards with holes (inaccessible black squares) in them. Selecting 'Edit Position' causes XBoard to discard all remembered moves in the current game. In ICS mode, changes made to the position by 'Edit Position' are not sent to the ICS: 'Edit Position' takes XBoard out of 'ICS Client' mode and lets you edit positions locally. If you want to edit positions on ICS in a way that other ICS users can see, use the ICS 'examine' command, or start an ICS match against yourself. (See also the ICS Client topic above.) Edit Tags Lets you edit the PGN (portable game notation) tags for the current game. After editing, the tags must still conform to the PGN tag syntax: ::= ::= [ ] ::= ::= See the PGN Standard for full details. Here is an example: [Event "Portoroz Interzonal"] [Site "Portoroz, Yugoslavia"] [Date "1958.08.16"] [Round "8"] [White "Robert J. Fischer"] [Black "Bent Larsen"] [Result "1-0"] Any characters that do not match this syntax are silently ignored. Note that the PGN standard requires all games to have at least the seven tags shown above. Any that you omit will be filled in by XBoard with '?' (unknown value), or '-' (inapplicable value). Edit Comment Adds or modifies a comment on the current position. Comments are saved by 'Save Game' and are displayed by 'Load Game', PGN variations will also be printed in this window, and can be promoted to main line by right-clicking them. 'Forward', and 'Backward'. Edit Book Pops up a window listing the moves available in the GUI book (specified in the 'Common Engine Settings' dialog) from the currently displayed position, together with their weights and (optionally in braces) learn info. You can then edit this list, and the new list will be stored back into the book when you press 'save changes'. When you press the button 'add next move', and play a move on the board, that move will be added to the list with weight 1. Note that the listed percentages are neither used, nor updated when you change the weights; they are just there as an optical aid. When you right-click a move in the list it will be played. Revert Annotate If you are examining an ICS game and Pause mode is off, Revert issues the ICS command 'revert'. In local mode, when you were editing or analyzing a game, and the '-variations' command-line option is switched on, you can start a new variation by holding the Shift key down while entering a move not at the end of the game. Variations can also become the currently displayed line by clicking a PGN variation displayed in the Comment window. This can be applied recursively, so that you can analyze variations on variations; each time you create a new variation by entering an alternative move with Shift pressed, or select a new one from the Comment window, the current variation will be shelved. 'Revert' allows you to return to the most recently shelved variation. The difference between 'Revert' and 'Annotate' is that with the latter, the variation you are now abandoning will be added as a comment (in PGN variation syntax, i.e. between parentheses) to the original move where you deviated, for later recalling. The 'Home' key is a keyboard equivalent to 'Revert'. Truncate Game Discards all remembered moves of the game beyond the current position. Puts XBoard into 'Edit Game' mode if it was not there already. The 'End' key is a keyboard equivalent. Backward < Steps backward through a series of remembered moves. The '[<]' button and the 'Alt+LeftArrow' key are equivalents, as is turning the mouse wheel towards you. In addition, pressing the ??? key steps back one move, and releasing it steps forward again. In most modes, 'Backward' only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a chess engine, playing or observing a game on an ICS, or loading a game. If you select 'Backward' in any of these situations, you will not be allowed to make a different move. Use 'Retract Move' or 'Edit Game' if you want to change past moves. If you are examining an ICS game, the behavior of 'Backward' depends on whether XBoard is in Pause mode. If Pause mode is off, 'Backward' issues the ICS backward command, which backs up everyone's view of the game and allows you to make a different move. If Pause mode is on, 'Backward' only backs up your local view. Forward > Steps forward through a series of remembered moves (undoing the effect of 'Backward') or forward through a game file. The '[>]' button and the 'Alt+RightArrow' key are equivalents, as is turning the mouse wheel away from you. If you are examining an ICS game, the behavior of Forward depends on whether XBoard is in Pause mode. If Pause mode is off, 'Forward' issues the ICS forward command, which moves everyone's view of the game forward along the current line. If Pause mode is on, 'Forward' only moves your local view forward, and it will not go past the position that the game was in when you paused. Back to Start << Jumps backward to the first remembered position in the game. The '[<<]' button and the 'Alt+Home' key are equivalents. In most modes, Back to Start only lets you look back at old positions; it does not retract moves. This is the case if you are playing against a local chess engine, playing or observing a game on a chess server, or loading a game. If you select 'Back to Start' in any of these situations, you will not be allowed to make different moves. Use 'Retract Move' or 'Edit Game' if you want to change past moves; or use Reset to start a new game. If you are examining an ICS game, the behavior of 'Back to Start' depends on whether XBoard is in Pause mode. If Pause mode is off, 'Back to Start' issues the ICS 'backward 999999' command, which backs up everyone's view of the game to the start and allows you to make different moves. If Pause mode is on, 'Back to Start' only backs up your local view. Forward to End >> Jumps forward to the last remembered position in the game. The '[>>]' button and the 'Alt+End' key are equivalents. If you are examining an ICS game, the behavior of 'Forward to End' depends on whether XBoard is in Pause mode. If Pause mode is off, 'Forward to End' issues the ICS 'forward 999999' command, which moves everyone's view of the game forward to the end of the current line. If Pause mode is on, 'Forward to End' only moves your local view forward, and it will not go past the position that the game was in when you paused.  File: xboard.info, Node: View Menu, Next: Mode Menu, Prev: Edit Menu, Up: Menus 3.3 View Menu ============= Flip View Inverts your view of the chess board for the duration of the current game. Starting a new game returns the board to normal. The 'F2' key is a keyboard equivalent. Show Engine Output Shows or hides a window in which the thinking output of any loaded engines is displayed. The shifted 'Alt+O' key is a keyboard equivalent. XBoard will display lines of thinking output of the same depth ordered by score, (highest score on top), rather than in the order the engine produced them. Usually this amounts to the same, as a normal engine search will only find new PV (and emit it as thinking output) when it searches a move with a higher score than the previous variation. But when the engine is in multi-variation mode this needs not always be true, and it is more convenient for someone analyzing games to see the moves sorted by score. The order in which the engine found them is only of interest to the engine author, and can still be deduced from the time or node count printed with the line. Right-clicking a line in this window, and then moving the mouse vertically with the right button kept down, will make XBoard play through the PV listed there. The use of the board window as 'variation board' will normally end when you release the right button, or when the opponent plays a move. But beware: in Analysis mode, moves thus played out might be added to the game, depending on the setting of the option 'Play moves of clicked PV', when you initiate the click left of the PV in the score area. The Engine-Output pane for each engine will contain a header displaying the multi-PV status and a list of excluded moves in Analysis mode, which are also responsive to right-clicking: Clicking the words 'fewer' or 'more' will alter the number of variations shown at each depth, through the engine's MultiPV option, while clicking in between those and moving the mouse horizontally adjust the option 'Multi-PV Margin'. (In so far the engines support those.) Show Move History Shows or hides a list of moves of the current game. The shifted 'Alt+H' key is a keyboard equivalent. This list allows you to move the display to any earlier position in the game by clicking on the corresponding move. Show Evaluation Graph Shows or hides a window which displays a graph of how the engine score(s) evolved as a function of the move number. The shifted 'Alt+E' key is a keyboard equivalent. The title bar shows the score (and search depth at which it was obtained) of the currently displayed position numerically. Clicking on the graph will bring the corresponding position in the board display. A button 3 click will toggle the display mode between plain and differential (showing the difference in score between successive half moves). Using the mouse wheel over the window will change the scale of the low-score region (from -1 to +1). Show Game List Shows or hides the list of games generated by the last 'Load Game' command. The shifted 'Alt+G' key is a keyboard equivalent. The line describing each game is built from a selection of the PGN tags. Which tags contribute, and in what order, can be changed by the 'Game list tags' menu dialog, which can be popped up through the 'Tags' button below the Game List. Display can be restricted to a sub-set of the games meeting certain criteria. A text entry below the game list allows you to type a text that the game lines must contain in order to be displayed. Games can also be selected based on their Elo PGN tag, as set in the 'Load Game Options' dialog, which can be popped up through the 'Thresholds' button below the Game List. Finally they can be selected based on containing a position similar to the one currently displayed in the main window, by pressing the 'Position' button below the Game List, (which searches the entire list for the position), or the 'Narrow' button (which only searches the already-selected games). What counts as similar enough to be selected can also be set in the 'Load Game Options' dialog, and ranges from an exact match to just the same material. Tags Pops up a window which shows the PGN (portable game notation) tags for the current game. For now this is a duplicate of the 'Edit Tags' item in the 'Edit' menu. Comments Pops up a window which shows any comments to or variations on the current move. For now this is a duplicate of the 'Edit Comment' item in the 'Edit' menu. ICS Input Box If this option is set in ICS mode, XBoard creates an extra window that you can use for typing in ICS commands. The input box is especially useful if you want to type in something long or do some editing on your input, because output from ICS doesn't get mixed in with your typing as it would in the main terminal window. ICS/Chat Console This menu item opens a window in which you can interact with the ICS, so you don't have to use the messy xterm from which you launched XBoard for that. The window has a text entry at the bottom where you can type your commands and messages unhindered by the stream of ICS output. The latter will be displayed in a large pane above the input field, the ICS Console. Up and down arrow keys can be used to recall previous input lines. Typing an character in the input field transfers focus back to the board window (so you could operate the menus there through accelerator keys). Typing a printable character in the board window transfers focus back to the input field of the 'ICS Chat/Console' window. Chats There is a row of buttons at the top of the 'ICS Chat/Console' dialog, which can be used to navigate between upto 5 'chats' with other ICS users (or channels). These will switch the window to 'chat mode', where the ICS output pane is vertically split to divert messages from a specific user or ICS channel to the lower half. Lines typed in the input field will then be interpreted as messages to be sent to that user or channel, (automatically prefixed with the apporpriate ICS command and user name) rather than as commands to the ICS. Chats will keep collecting ICS output intended for them even when not displayed, and their buttons will turn orange to alert the user there has been activity. Typing in the input field will switch to another active chat, giving priority to those with content you have not seen yet. New Chat Buttons for chats currently not assigned to a user or channel will carry the text 'New Chat', and pressing them will switch to chat mode, enabling you to enter the user name or channel number you want to use it for. Typing Ctrl-N in the input field is a keyboard equivalent. Chat partner To (re-)assign a chat, write the name of your chat partner, the channel number, or the words 'shouts', 'whispers', 'cshouts' in the 'Chat partner' text entry (ending with !). Typing Ctrl-O in the input field at the bottom of the window will open a chat with the person that last sent you a 'tell' that was printed in the ICS Console output pane. The 'ICS text menu' can contain a button 'Open Chat (name)' that can be used to open a chat with as partner the word/number you right-clicked in the output pane to pop up this menu. End Chat This button, only visible when the chat pane is open, will clear the 'Chat partner' field, so that the chat can be assigned to a new user or channel. Typing Ctrl-E in the input field is a keyboard equivalent. Hide This button, only visible when the chat pane is open, will close the latter, so you can use the input field to give commands to the ICS again. Typing Ctrl-H in the input field is a keyboard equivalent. ICS text menu Brings up a menu that is user-configurable through the 'icsMenu' option. Buttons in this menu can sent pre-configured commands directly to the ICS, or can put partial commands in the input field of the 'ICS Chat/Console' window, so that you can complete those with some text of your own before sending them to the ICS by pressing Enter. This menu item can also be popped up by right-clicking in the text memos of the ICS Chat/Console window. In that case the word that was clicked can be incorporated in the message sent to the ICS. E.g. to challenge a player whose name you click for a game, or prepare for sending him a message through a 'tell' commands. Edit ICS menu Brings up an edit box with the definition of the 'ICS text menu', so you can adapt its appearance to your needs. The menu is defined by a semi-colon-separated list, each button through a pair of items in it. The first item of each pair is the text on the button, the second the text to be sent when the button is pressed. The word '$input' in the text will put that text in the input field of the 'ICS Chat/Console' with the cursor in that place, the word '$name' will be replaced by the word right-clicked to pop up the text menu. Edit Theme List Brings up an edit box with the definitions of the themes shown in the listbox of the 'Board' dialog, so you can delete, re-order or alter themes defined previously. Board Summons a dialog where you can customize the look of the chess board. White Piece Color Black Piece Color Light Square Color Dark Square Color Highlight Color Premove Highlight Color These items set the color of pieces, board squares and move highlights (borders or arrow). Square colors are only used when the 'Use Board Textures' option is off, the piece colors only when 'Use piece bitmaps with their own colors' is off. You can type the color as hexadecimally encoded RGB value preceded by '#', or adjust it through the R, G, B and D buttons to make it redder, greener, bluer or darker. A sample of the adjusted color will be displayed behind its text description; pressing this colored button restores the default value for the color. Flip Pieces Shogi Style With this option on XBoard will swap white and black pieces, when you flip the view of the board to make white play downward. This should be used with piece themes that do not distinguish sides by color, but by orientation. Mono Mode This option sets XBoard to pure black-and-white display (no grey scales, and thus no anti-aliasing). Logo Size Specifies the width of the engine logos displayed next to the clocks, in pixels. Setting it to 0 suppresses the display of such logos. The height of the logo will be half its width. In the GTK build of XBoard any non-zero value is equivalent, and the logos are always sized to 1/4 of the board width. Line Gap This option specifies the width of the grid lines that separate the squares, which change color on highlighting the move. Setting it to 0 suppresses these lines, which in general looks better, but hides the square-border highlights, so that you would have to rely on other forms of highlighting. Setting the value to -1 makes XBoard choose a width by itself, depending on the square size. Use Board Textures Light-Squares Texture File Dark-Squares Texture File When the option 'Use Board Textures' is set, the squares will not be drawn as evenly colored surfaces, but will be cut from a texture image, as specified by the 'Texture Files'. Separate images can be used for light and dark squares. XBoard will try to cut the squares out of the texture image with as little overlap as possible, so they all look different. The name of the texture file can contain a size hint, e.g. 'xqboard-9x10.png', alerting XBoard to the fact that it contains a whole-board image, out of which squares have to be cut in register with the nominal sub-division. Use external piece bitmaps with their own color When this option is on XBoard will ignore the piece-color settings, and draw the piece images in their original colors. The piece-color settings would only work well for evenly colored pieces, such as the default theme. Directory with Pieces Images When a directory is specified here, XBoard will first look for piece images (SVG or PNG files) in that directory, and fall back on the image from the default theme only for images it cannot find there. An image file called White/BlackTile in the directory will be prefered as fall-back for missing pieces over the default image, however. Selectable themes New name for current theme When a theme name is specified while pressing 'OK', the combination of settings specified in the dialog will be stored in XBoard's list of themes, which will be saved with the other options in the settings file (as the 'themeNames' option). This name will then appear in the selection listbox next time you open the dialog, so that you can recall the entire combination of settings by double-clicking it. Here you can specify the directory from which piece images should be taken, when you don't want to use the built-in piece images (see 'pieceImageDirectory' option), external images to be used for the board squares ('liteBackTextureFile' and 'darkBackTextureFile' options), and square and piece colors for the default pieces. The current combination of these settings can be assigned a 'theme' name by typing one in the text entry in the lower-left of the dialog, and closing the latter with OK. It will then appear in the themes listbox next time you open the dialog, where you can recall the complete settings combination with a double-click. Fonts Pops up a dialog where you can set the fonts used in the main elements of various windows. Pango font names can be typed for each window type, and behind each text entry there are buttons to adjust the point size, and toggle the 'bold' or 'italic' attributes of the font. Game List Tags a duplicate of the Game List dialog in the Options menu.  File: xboard.info, Node: Mode Menu, Next: Action Menu, Prev: View Menu, Up: Menus 3.4 Mode Menu ============= Machine White Tells the chess engine to play White. The 'Ctrl-W' key is a keyboard equivalent. Machine Black Tells the chess engine to play Black. The 'Ctrl-B' key is a keyboard equivalent. Two Machines Plays a game between two chess engines. The 'Ctrl-T' key is a keyboard equivalent. Analysis Mode XBoard tells the chess engine to start analyzing the current game/position and shows you the analysis as you move pieces around. The 'Ctrl-A' key is a keyboard equivalent. Note: Some chess engines do not support Analysis mode. To set up a position to analyze, you do the following: 1. Set up the position by any means. (E.g. using 'Edit Position' mode, pasing a FEN or loading a game and stepping to the position.) 2. Select Analysis Mode from the Mode Menu to start the analysis. You can now play legal moves to create follow-up positions for the engine to analyze, while the moves will be remembered as a stored game, and then step backward through this game to take the moves back. Note that you can also click on the clocks to set the opposite side to move (adding a so-called 'null move' to the game). You can also tell the engine to exclude some moves from analysis. (Engines that do not support the exclude-moves feature will ignore this, however.) The general way to do this is to play the move you want to exclude starting with a double click on the piece. When you use drag-drop moving, the piece you grab with a double click will also remain on its square, to show you that you are not really making the move, but just forbid it from the current position. Playing a thus excluded move a second time will include it again. Excluded moves will be listed as text in a header line in the Engine Output window, and you can also re-include them by right-clicking them there. This header line will also contain the words 'best' and 'tail'; right-clicking those will exclude the currently best move, or all moves not explicitly listed in the header line. Once you leave the current position all memory of excluded moves will be lost when you return there. Selecting this menu item while already in 'Analysis Mode' will toggle the participation of the second engine in the analysis. The output of this engine will then be shown in the lower pane of the Engine Output window. The analysis function can also be used when observing games on an ICS with an engine loaded (zippy mode); the engine then will analyze the positions as they occur in the observed game. Analyze Game This option subjects the currently loaded game to automatic analysis by the loaded engine. The 'Ctrl-G' key is a keyboard equivalent. XBoard will start auto-playing the game from the currently displayed position, while the engine is analyzing the current position. The game will be annotated with the results of these analyses. In particlar, the score and depth will be added as a comment, and the PV will be added as a variation. Normally the analysis would stop after reaching the end of the game. But when a game is loaded from a multi-game file while 'Analyze Game' was already switched on, the analysis will continue with the next game in the file until the end of the file is reached (or you switch to another mode). The time the engine spends on analyzing each move can be controlled through the command-line option '-timeDelay', which can also be set from the 'Load Game Options' menu dialog. Note: Some chess engines do not support Analysis mode. Edit Game Duplicate of the item in the Edit menu. Note that 'Edit Game' is the idle mode of XBoard, and can be used to get you out of other modes. E.g. to stop analyzing, stop a game between two engines or stop editing a position. Edit Position Duplicate of the item in the Edit menu. Training Training mode lets you interactively guess the moves of a game for one of the players. You guess the next move of the game by playing the move on the board. If the move played matches the next move of the game, the move is accepted and the opponent's response is auto-played. If the move played is incorrect, an error message is displayed. You can select this mode only while loading a game (that is, after selecting 'Load Game' from the File menu). While XBoard is in 'Training' mode, the navigation buttons are disabled. ICS Client This is the normal mode when XBoard is connected to a chess server. If you have moved into Edit Game or Edit Position mode, you can select this option to get out. To use xboard in ICS mode, run it in the foreground with the -ics option, and use the terminal you started it from to type commands and receive text responses from the chess server. See *note Chess Servers:: below for more information. XBoard activates some special position/game editing features when you use the 'examine' or 'bsetup' commands on ICS and you have 'ICS Client' selected on the Mode menu. First, you can issue the ICS position-editing commands with the mouse. Move pieces by dragging with mouse button 1. To drop a new piece on a square, press mouse button 2 or 3 over the square. This brings up a menu of white pieces (button 2) or black pieces (button 3). Additional menu choices let you empty the square or clear the board. Click on the White or Black clock to set the side to play. You cannot set the side to play or drag pieces to arbitrary squares while examining on ICC, but you can do so in 'bsetup' mode on FICS. In addition, the menu commands 'Forward', 'Backward', 'Pause', and 'Stop Examining' have special functions in this mode; see below. Machine Match Starts a match between two chess programs, with a number of games and other parameters set through the 'Tournament Options' menu dialog. When a match is already running, selecting this item will make XBoard drop out of match mode after the current game finishes. Pause Pauses updates to the board, and if you are playing against a chess engine, also pauses your clock. To continue, select 'Pause' again, and the display will automatically update to the latest position. The 'P' button and keyboard 'Pause' key are equivalents. If you select Pause when you are playing against a chess engine and it is not your move, the chess engine's clock will continue to run and it will eventually make a move, at which point both clocks will stop. Since board updates are paused, however, you will not see the move until you exit from Pause mode (or select Forward). This behavior is meant to simulate adjournment with a sealed move. If you select Pause while you are observing or examining a game on a chess server, you can step backward and forward in the current history of the examined game without affecting the other observers and examiners, and without having your display jump forward to the latest position each time a move is made. Select Pause again to reconnect yourself to the current state of the game on ICS. If you select 'Pause' while you are loading a game, the game stops loading. You can load more moves manually by selecting 'Forward', or resume automatic loading by selecting 'Pause' again.  File: xboard.info, Node: Action Menu, Next: Engine Menu, Prev: Mode Menu, Up: Menus 3.5 Action Menu =============== Accept Accepts a pending match offer. The 'F3' key is a keyboard equivalent. If there is more than one offer pending, you will have to type in a more specific command instead of using this menu choice. Decline Declines a pending offer (match, draw, adjourn, etc.). The 'F4' key is a keyboard equivalent. If there is more than one offer pending, you will have to type in a more specific command instead of using this menu choice. Call Flag Calls your opponent's flag, claiming a win on time, or claiming a draw if you are both out of time. The 'F5' key is a keyboard equivalent. You can also call your opponent's flag by clicking on his clock. Draw Offers a draw to your opponent, accepts a pending draw offer from your opponent, or claims a draw by repetition or the 50-move rule, as appropriate. The 'F6' key is a keyboard equivalent. Adjourn Asks your opponent to agree to adjourning the current game, or agrees to a pending adjournment offer from your opponent. The 'F7' key is a keyboard equivalent. Abort Asks your opponent to agree to aborting the current game, or agrees to a pending abort offer from your opponent. The 'F8' key is a keyboard equivalent. An aborted game ends immediately without affecting either player's rating. Resign Resigns the game to your opponent. The 'F9' key is a keyboard equivalent. Stop Observing Ends your participation in observing a game, by issuing the ICS observe command with no arguments. ICS mode only. The 'F10' key is a keyboard equivalent. Stop Examining Ends your participation in examining a game, by issuing the ICS unexamine command. ICS mode only. The 'F11' key is a keyboard equivalent. Upload to Examine Create an examined game of the proper variant on the ICS, and send the game there that is currenty loaded in XBoard (e.g. through pasting or loading from file). You must be connected to an ICS for this to work. Adjudicate to White Adjudicate to Black Adjudicate Draw Terminate an ongoing game in Two-Machines mode (including match mode), with as result a win for white, for black, or a draw, respectively. The PGN file of the game will accompany the result string by the comment "user adjudication".  File: xboard.info, Node: Engine Menu, Next: Options Menu, Prev: Action Menu, Up: Menus 3.6 Engine Menu =============== Edit Engine List Opens a window that shows the list of engines registered for use by XBoard, together with the options that would be used with them when you would select them from the 'Load Engine' dialogs. You can then edit this list, e.g. for re-ordering the engines, or adding uncommon options needed by this engine (e.g. to cure non-compliant behavior). By editing you can also organize the engines into collapsible groups. By sandwiching a number of engine lines between lines "# NAME" and "# end", the thus enclosed engines will not initially appear in engine listboxes of other dialogs, but only the single line "# NAME" (where NAME can be an arbitrary text) will appear in their place. Selecting that line will then show the enclosed engines in the listbox, which recursively can contain other groups. The line with the group name will still present as a header, and selecting that line will collapse the group again, and makes the listbox go back to displaying the surrounding group. Load New 1st Engine Load New 2nd Engine Pops up a dialog where you can select or specify an engine to be loaded. You can even replace engines during a game, without disturbing that game. (Beware that after loading an engine, XBoard will always be in Edit Game mode, so you will have to tell the new engine what to do before it does anything!) Select engine from list The listbox shows the engines registered for use with XBoard before. (This means XBoard has information on the engine type, whether it plays book etc. in the engine list stored in its settings file.) Double-clicking an engine here will load it and close the dialog. The list can also contain groups, indicated by a starting '#' sign. Double-clicking such a group will 'open' it, and show the group contents in the listbox instead of the total list, with the group name as header. Double-clicking the header will 'close' the group again. Nickname Use nickname in PGN player tags of engine-engine games When a 'Nickname' is specified, the engine will appear under this name in the 'Select Engine' listbox. Otherwise the name there will be a tidied version of the engine command. The user can specify if the nickname is also to be used in PGN tags; normally the name engines report theselves would be used there. Engine Command The command needed to start the engine from the command line. For compliantly installed engine this is usually just a single word, the name of the engine package (e.g. 'crafty' or 'stockfish'). Some engines need additional parameters on the command line. For engines that are not in a place where the system would expect them a full pathname can be specified, and usually the browse button for this oprion is the easiest way to obtain that. Engine Directory Compliant engines could run from any directory, and by default this option is proposed as '.', the current directory. If a (path)name is specified here, XBoard will start the engine in that directory. If you make the field empty, it will try to derive the directory from the engine command (if that was a path name). UCI When the 'UCI' checkbox is ticked XBoard will assume the engine is of UCI type, and will invoke the corresponding adapter (as specified in the 'adapterCommand' option stored in its settings file)to use it. By default this adapter is Polyglot, which must be installed from a separate package! USI/UCCI Ticking this checkbox informs XBoard that the engine is of USI or UCCI type (as Shogi or Xiangqi engines often are). This makes XBoard invoke an adapter to run the engines, as specified by the 'uxiAdapter' option stored in its settings file. The UCI2WB program is an adapter that can handle both these engine types, as well as UCI. WB protocol v1 Ticking this checkbox informs XBoard the engine is using an old version (1) of the communication protocol, so that it won't respond to a request to interrogate its properties. XBoard then won't even try that, saving you a wait of several seconds each time the engine is started. Do not use this on state-of-the-art engines, as it would prevent XBoard from interrogating its capabilities, so that many of its features might not work! Must not use GUI book By default XBoard assumes engines are responsible for their own opening book, but unticking this option makes XBoard consult its own book (as per 'Opening-Book Filename') on behalf of the engine. Add this engine to the list By default XBoard would add the engine you specified, with all the given options to its list of registered engines (kept in its settings file), when you press 'OK'. Next time you could then simply select it from the listbox, or use the command "xboard -fe NICKNAME" to start XBoard with the engine and accompanying options. New engines are always added at the end of the existing list, or, when you have opened a group in the 'Select Engine' listbox, at the end of that group. But can be re-ordered later with the aid of the 'Edit Engine List' menu item. When you untick this checkbox before pressing 'OK' the engine will be loaded, but will not be added to the engine list. Force current variant with this engine Ticking this option will make XBoard automatically start the engine in the current variant, even when XBoard was set for a different variant when you loaded the engine. Useful when the engine plays multiple variants, and you specifically want to play one different from its primary one. Engine #1 Settings Engine #2 Settings Pop up a menu dialog to alter the settings specific to the applicable engine. For each parameter the engine allows to be set, a control element will appear in this dialog that can be used to alter the value. Depending on the type of parameter (text string, number, multiple choice, on/off switch, instantaneous signal) the appropriate control will appear, with a description next to it. XBoard has no idea what these values mean; it just passes them on to the engine. How this dialog looks is completely determined by the engine, and XBoard just passes it on to the user. Many engines do not have any parameters that can be set by the user, and in that case the dialog will be empty (except for the OK and cancel buttons). UCI engines usually have many parameters. (But these are only visible with a sufficiently modern version of the Polyglot adapter needed to run UCI engines, e.g. Polyglot 2.0.1.) For native XBoard engines this is less common. Common Settings Pops up a menu dialog where you can set some engine parameters common to most engines, such as hash-table size, tablebase cache size, maximum number of processors that SMP engines can use. The shifted 'Alt+U' key is a keyboard equivalent. Older XBoard/WinBoard engines might not respond to these settings, but UCI engines always should. Maximum Number of CPUs per Engine Specifies the number of search threads any engine can maximally use. Do not set it to a number larger than the number of cores your computer has. (Or half of it when you want two engines to run simultaneously, as in a Two-Machines game with 'Ponder Next Move' on.) Polyglot Directory Hash-Table Size Specifies the maximum amount of memory (RAM) each engine is allowed to use for storing info on positions it already searched, so it would not have to search them again. Do not set it so that it is more than half (or if you use two engines, more than a quarter) of the memory your computer has, or it would slow the engines down by an extreme amount. EGTB Path Sets the value of the 'egtFormats' option, which specifies where on your computer the files for End-Game Tables are stored. It must be a comma-separated list of path names, the path for each EGT flavor prefixed with the name of the latter and a colon. E.g. "nalimov:/home/egt/dtm,syzygy:/home/egt/dtz50". The path names after the colon will be sent to the engines that say they can use the corresponding EGT flavor. EGTB Cache Size Specifies the amount of memory the engine should use to buffer end-game information. Together with the 'Hash-Table Size' this determines how much memory the engine is allowed to use in total. Use GUI Book Opening-Book Filename The 'Opening-Book Filename' specifies an opening book in Polyglot format (usually a .bin file), from which XBoard can play moves on behalf of the engine. This is also the book file on which the 'Edit Book' and 'Save Games as Book' menu items operate. A checkbox 'Use GUI Book' can be used to temporarily disable the book without losing the setting. (This does not prevent editing or saving games on it!) Book Depth Book Variety The way moves are selected from the book can be controlled by two options. 'Book Depth' controls for how deep into the game the book will be consulted (measured in full moves). 'Book Variety' controls the likelihood of playing weaker moves. When the variety is set to 50, moves will be played with the probability specified in the book. When set to 0, only the move(s) with the highest probability will be played. When set to 100, all listed moves will be played with equal pobability. Other settings interpolate between that. Engine #1 Has Own Book Engine #2 Has Own Book These checkboxes control on a per-engine basis whether XBoard will consult the opening book for them. If ticked, XBoard will never play moves from its GUI book, giving the engine the opportunity to use its own. These options are automatically set whenever you load an engine, based on the setting of 'Must not use GUI book' when you installed that through the 'Load Engine' menu dialog. Hint Displays a move hint from the chess engine. Book Displays a list of possible moves from the chess engine's opening book. The exact format depends on what chess engine you are using. With GNU Chess 4, the first column gives moves, the second column gives one possible response for each move, and the third column shows the number of lines in the book that include the move from the first column. If you select this option and nothing happens, the chess engine is out of its book or does not support this feature. Move Now Forces the chess engine to move immediately. Chess engine mode only. The 'Ctrl-M' key is a keyboard equivalent. Many engines won't respond to this. Retract Move Retracts your last move. In chess engine mode, you can do this only after the chess engine has replied to your move; if the chess engine is still thinking, use 'Move Now' first. In ICS mode, 'Retract Move' issues the command 'takeback 1' or 'takeback 2' depending on whether it is your opponent's move or yours. The 'Ctrl-X' key is a keyboard equivalent. Recently Used Engines At the bottom of the engine menu there can be a list of names of engines that you recently loaded through the Load Engine menu dialog in previous sessions. Clicking on such a name will load that engine as first engine, so you won't have to search for it in your list of installed engines, if that is very long. The maximum number of displayed engine names is set by the 'recentEngines' command-line option.  File: xboard.info, Node: Options Menu, Next: Help Menu, Prev: Engine Menu, Up: Menus 3.7 Options Menu ================ 3.8 Mute all Sounds =================== Ticking this menu item toggles all sounds XBoard can make on or off, without losing their definitions. 3.9 General Options =================== The following items to set option values appear in the dialog summoned by the general Options menu item. Absolute Analysis Scores Controls if scores on the Engine Output window during analysis will be printed from the white or the side-to-move point-of-view. Almost Always Queen If this option is on, 7th-rank pawns automatically change into Queens when you pick them up, and when you drag them to the promotion square and release them there, they will promote to that. But when you drag such a pawn backwards first, its identity will start to cycle through the other available pieces. This will continue until you start to move it forward; at which point the identity of the piece will be fixed, so that you can safely put it down on the promotion square. If this option is off, what happens depends on the option 'alwaysPromoteToQueen', which would force promotion to Queen when true. Otherwise XBoard would bring up a dialog box whenever you move a pawn to the last rank, asking what piece you want to promote to. Animate Dragging If Animate Dragging is on, while you are dragging a piece with the mouse, an image of the piece follows the mouse cursor. If Animate Dragging is off, there is no visual feedback while you are dragging a piece, but if Animate Moving is on, the move will be animated when it is complete. Animate Moving If Animate Moving is on, all piece moves are animated. An image of the piece is shown moving from the old square to the new square when the move is completed (unless the move was already animated by Animate Dragging). If Animate Moving is off, a moved piece instantly disappears from its old square and reappears on its new square when the move is complete. The shifted 'Ctrl-A' key is a keyboard equivalent. Auto Flag If this option is on and one player runs out of time before the other, XBoard will automatically call his flag, claiming a win on time. The shifted 'Ctrl-F' key is a keyboard equivalent. In ICS mode, Auto Flag will only call your opponent's flag, not yours, and the ICS may award you a draw instead of a win if you have insufficient mating material. In local chess engine mode, XBoard may call either player's flag. Auto Flip View If the Auto Flip View option is on when you start a game, the board will be automatically oriented so that your pawns move from the bottom of the window towards the top. If you are playing a game on an ICS, the board is always oriented at the start of the game so that your pawns move from the bottom of the window towards the top. Otherwise, the starting orientation is determined by the 'flipView' command line option; if it is false (the default), White's pawns move from bottom to top at the start of each game; if it is true, Black's pawns move from bottom to top. *Note User interface options::. Blindfold If this option is on, XBoard displays the board as usual but does not display pieces or move highlights. You can still move in the usual way (with the mouse or by typing moves in ICS mode), even though the pieces are invisible. Drop Menu Controls if right-clicking the board in crazyhouse / bughouse will pop up a menu to drop a piece on the clicked square (old, deprecated behavior) or allow you to step through an engine PV (new, recommended behavior). Enable Variation Trees If this option is on, playing a move in Edit Game or Analyze mode while keeping the Shift key pressed will start a new variation. You can then recall the previous line through the 'Revert' menu item. When off, playing a move will truncate the game and append the move irreversibly. Headers in Engine Output Window Controls the presence of column headers above the variations and associated information printed by the engine, on which you can issue button 3 clicks to open or close the columns. Available columns are search depth, score, node count, time used, tablebase hits, search speed and selective search depth. Hide Thinking If this option is off, the chess engine's notion of the score and best line of play from the current position is displayed as it is thinking. The score indicates how many pawns ahead (or if negative, behind) the chess engine thinks it is. In matches between two machines, the score is prefixed by 'W' or 'B' to indicate whether it is showing White's thinking or Black's, and only the thinking of the engine that is on move is shown. The shifted 'Ctrl-H' key is a keyboard equivalent. Highlight Last Move If Highlight Last Move is on, after a move is made, the starting and ending squares remain highlighted. In addition, after you use Backward or Back to Start, the starting and ending squares of the last move to be unmade are highlighted. Highlight with Arrow Causes the highlighting described in Highlight Last Move to be done by drawing an arrow between the highlighted squares, so that it is visible even when the width of the grid lines is set to zero. One-Click Moving If this option is on, XBoard does not wait for you to click both the from- and the to-square, or drag the piece, but performs a move as soon as it is uniqely specified. This applies to clicking an own piece that only has a single legal move, clicking an empty square or opponent piece where only one of your pieces can move (or capture) to. Furthermore, a double-click on a piece that can only make a single capture will cause that capture to be made. Promoting a Pawn by clicking its to-square will suppress the promotion popup or other methods for selecting an under-promotion, and make it promote to Queen. Periodic Updates If this option is off (or if you are using a chess engine that does not support periodic updates), the analysis window will only be updated when the analysis changes. If this option is on, the Analysis Window will be updated every two seconds. Play Move(s) of Clicked PV If this option is on, right-clicking on the first move of a PV or on the data fields left of it in the Engine Output window during Analyze mode will cause the first move of that PV to be played. You could also play more than one (or no) PV move by moving the mouse to engage in the PV walk such a right-click will start, to seek out another position along the PV where you want to continue the analysis, before releasing the mouse button. Clicking on later moves of the PV only temporarily show the moves for as long you keep the mouse button down, without adding them to the game. Ponder Next Move If this option is off, the chess engine will think only when it is on move. If the option is on, the engine will also think while waiting for you to make your move. The shifted 'Ctrl-P' key is a keyboard equivalent. Popup Exit Message If this option is on, when XBoard wants to display a message just before exiting, it brings up a modal dialog box and waits for you to click OK before exiting. If the option is off, XBoard prints the message to standard error (the terminal) and exits immediately. Popup Move Errors If this option is off, when you make an error in moving (such as attempting an illegal move or moving the wrong color piece), the error message is displayed in the message area. If the option is on, move errors are displayed in small pop-up windows like other errors. You can dismiss an error pop-up either by clicking its OK button or by clicking anywhere on the board, including down-clicking to start a move. Scores in Move List If this option is on, XBoard will display the depth and score of engine moves in the Move List, in the format of a PGN comment. Show Coords If this option is on, XBoard displays algebraic coordinates along the board's left and bottom edges. Show Target Squares If this option is on, all squares a piece that is 'picked up' with the mouse can legally move to are highighted with a fat colored dot in yellow (non-captures) or red (captures). Special moves might have other colors (e.g. magenta for promotion, cyan for a partial move). Legality testing must be on for XBoard to know how the piece moves, but with legality testing off some engines would offer this information. Sticky Windows Controls whether the auxiliary windows such as Engine Output, Move History and Evaluation Graph should keep touching XBoard's main window when you move the latter. Test Legality If this option is on, XBoard tests whether the moves you try to make with the mouse are legal and refuses to let you make an illegal move. The shifted 'Ctrl-L' key is a keyboard equivalent. Moves loaded from a file with 'Load Game' are also checked. If the option is off, all moves are accepted, but if a local chess engine or the ICS is active, they will still reject illegal moves. Turning off this option is useful if you are playing a chess variant with rules that XBoard does not understand. (Bughouse, suicide, and wild variants where the king may castle after starting on the d file are generally supported with Test Legality on.) Top-Level Dialogs Controls whether the auxiliary windows will appear as icons in the task bar and independently controllable, or whether they open and minimize all together with the main window. Flash Moves Flash Rate If this option is non-zero, whenever a move is completed, the moved piece flashes the specified number of times. The flash-rate setting determines how rapidly this flashing occurs. Animation Speed Determines the duration (in msec) of an animation step, when 'Animate Moving' is swiched on. Zoom factor in Evaluation Graph Sets the value of the 'evalZoom' option, indicating the factor by which the score interval (-1,1) should be blown up on the vertical axis of the Evaluation Graph. 3.10 Time Control ================= Pops up a sub-menu where you can set the time-control parameters interactively. The shifted 'Alt+T' key is a keyboard equivalent. classical Selects classical TC, where the game is devided into sessions of a certain number of moves, and after each session the start time is again added to the clocks. incremental Selects a TC mode where the game will start with a base time on the clocks, and after every move an 'increment' will be added to it. fixed max Selects a TC mode where you have to make each move within a given time, and any left-over time is not carried over to the next move. Divide entered times by 60 To allow entering of sub-minute initial time or sub-second increment, you can tick this checkbox. The initial time can then be entered in seconds, and the increment in units of 1/60 second. Moves per session Sets the duration of a session for classical time control. Initial time Time initially on the clock in classical or incremental time controls. In classical time controls this time will also be added to the clock at the start of ach new session. Increment or max Time to be added to the clock after every move in incremental TC mode. Fore 'fixed maximum' TC mode, the clock will be set to this time before every move, irrespective of how much was left on that clock. Time-Odds factors When these options are set to 1 the clocks of the players will be set according to the other specified TC parameters. Players can be given unequal times by specifying a time-odds factor for one of them (or a different factor for both of them). Any time received by that player will then be divided by that factor. 3.11 Adjudications ================== Pops up a sub-menu where you can enable or disable various adjudications that XBoard can perform in engine-engine games. The shifted 'Alt+J' key is a keyboard equivalent. Detect all Mates When this option is set XBoard will terminate the game on checkmate or stalemate, even if the engines would not do so. Only works when 'Test Legality' is on. Verify Engine Result Claims When this option is set XBoard will verify engine result claims, (forfeiting engines that make false claims), rather than naively beleiving the engine. Only works when 'Test Legality' is on. Draw if Insufficient Mating Material When this option is set XBoard will terminate games with a draw result when so little material is left that checkmate is not longer possible. In normal Chess this applies to KK, KNK, KBK and some positions with multiple Bishops all on the same square shade. Only works when 'Test Legality' is on. Adjudicate Trivial Draws When this option is set XBoard will terminate games with a draw result in positions that could only be won against an idiot. In normal Chess this applies to KNNK, KRKR, KBKN, KNKN, and KBKB with Bishops on different square shades. KQKQ will also be adjudicated a draw (possibly unjustly so). Only works when 'Test Legality' is on. N-Move Rule When this option is set to a value differnt from zero XBoard will terminate games with a draw result after the specified number of reversible moves (i.e. without captures or pawn pushes) is made. N-fold Repeats When this option is set to a value larger than 1, XBoard will terminate games with a draw result when the same position has occurred the specified number of times. Draw after N Moves Total When this option is set to a value different from zero, XBoard will terminate games with a draw result after that many moves have been played. Useful in automated engine-engine matches, to prevent one game between stubborn engines will soak up all your computer time. Win / Loss Threshold When this option is set to a value different from zero, XBoard will terminate games as a win when both engines agree the score is above the specified value (interpreted as centi-Pawn) for three successive moves. Negate Score of Engine #1 Negate Score of Engine #2 These options should be used with engines that report scores from the white point of view, rather than the side-to-move POV as XBoard would otherwise assume when adjudicating games based on the engine score. When the engine is installed with the extra option 'firstScoreIsAbs' true in the engine list the option would be automatically set when the engine is loaded throuhgh the Engine menu, or with the 'fe' or 'se' command-line option. 3.12 ICS Options ================ Pops up a menu dialog where options can be set that affect playing against an Internet Chess Server. Auto-Kibitz Setting this option when playing with or aginst a chess program on an ICS will cause the last line of thinking output of the engine before its move to be sent to the ICS in a kibitz command. In addition, any kibitz message received through the ICS from an opponent chess program will be diverted to the engine-output window, (and suppressed in the console), where you can play through its PV by right-clicking it. Auto-Comment If this option is on, any remarks made on ICS while you are observing or playing a game are recorded as a comment on the current move. This includes remarks made with the ICS commands 'say', 'tell', 'whisper', and 'kibitz'. Limitation: remarks that you type yourself are not recognized; XBoard scans only the output from ICS, not the input you type to it. Auto-Observe If this option is on and you add a player to your 'gnotify' list on ICS, XBoard will automatically observe all of that player's games, unless you are doing something else (such as observing or playing a game of your own) when one starts. The games are displayed from the point of view of the player on your gnotify list; that is, his pawns move from the bottom of the window towards the top. Exceptions: If both players in a game are on your gnotify list, if your ICS 'highlight' variable is set to 0, or if the ICS you are using does not properly support observing from Black's point of view, you will see the game from White's point of view. Auto-Raise Board If this option is on, whenever a new game begins, the chessboard window is deiconized (if necessary) and raised to the top of the stack of windows. Auto Save If this option is true, at the end of every game XBoard prompts you for a file name and appends a record of the game to the file you specify. Disabled if the 'saveGameFile' command-line option is set, as in that case all games are saved to the specified file. *Note Load and Save options::. Background Observe while Playing Setting this option will make XBoard suppress display of any boards from observed games while you are playing. Instead the last such board will be remembered, and shown to you when you right-click the board. This allows you to peek at your bughouse partner's game when you want, without disturbing your own game too much. Dual Board for Background-Observed Game Setting this option in combination with 'Background Observe' will display boards of observed games while you are playing on a second board next to that of your own game. Get Move List If this option is on, whenever XBoard receives the first board of a new ICS game (or a different game from the one it is currently displaying), it retrieves the list of past moves from the ICS. You can then review the moves with the 'Forward' and 'Backward' commands or save them with 'Save Game'. You might want to turn off this option if you are observing several blitz games at once, to keep from wasting time and network bandwidth fetching the move lists over and over. When you turn this option on from the menu, XBoard immediately fetches the move list of the current game (if any). Quiet Play If this option is on, XBoard will automatically issue an ICS 'set shout 0' command whenever you start a game and a 'set shout 1' command whenever you finish one. Thus, you will not be distracted by shouts from other ICS users while playing. Seek Graph Setting this option will cause XBoard to display an graph of currently active seek ads when you left-click the board while idle and logged on to an ICS. Auto-Refresh Seek Graph In combination with the 'Seek Graph' option this will cause automatic update of the seek graph while it is up. This only works on FICS and ICC, and requires a lot of bandwidth on a busy server. Auto-InputBox PopUp Controls whether the ICS Input Box will pop up automatically when you type a printable character to the board window in ICS mode. Quit After Game Controls whether XBoard will automatically disconnect from the ICS and close when the game currently in progress finishes. Premove Premove for White Premove for Black First White Move First Black Move If the 'Premove' option is on while playing a game on an ICS, you can register your next planned move before it is your turn. Move the piece with the mouse in the ordinary way, and the starting and ending squares will be highlighted with a special color (red by default). When it is your turn, if your registered move is legal, XBoard will send it to ICS immediately; if not, it will be ignored and you can make a different move. If you change your mind about your premove, either make a different move, or double-click on any piece to cancel the move entirely. You can also enter premoves for the first white and black moves of the game. Alarm Alarm Time When this option is on, an alarm sound is played when your clock counts down to the 'Alarm Time' in an ICS game. (By default, the time is 5 seconds, but you can specify other values with the Alarm Time spin control.) For games with time controls that include an increment, the alarm will sound each time the clock counts down to the icsAlarmTime. By default, the alarm sound is the terminal bell, but on some systems you can change it to a sound file using the soundIcsAlarm option; see below. Colorize Messages Ticking this options causes various types of ICS messages do be displayed with different foreground or background colors in the console. The colors can be individually selected for each type, through the accompanying text edits. -icsMenu string The string defines buttons for the 'ICS text menu'. Each button definition consists of two semi-colon-terminated pieces of text, the first giving the label to be written on the button, the second the text that should be sent to the ICS when that button is pressed. This second part (the 'message') can contain linefeeds, so that you can send multiple ICS commands with one button. Some message in the text, all starting with a $-sign, are treated special. When the message contains '$input', it will not be sent directly to the ICS, but will be put in the input field of the 'ICS Chat/Console', with the text cursor at the indicated place, so you can addsome text to the message before sending it off. If such a message starts with '$add' it will be placed behind any text that is already present in the input field, otherwise this field will be cleared first. The word '$name' occurring in the message will be replaced by the word that was clicked (through button 3) in the ICS Chat/Console. There are two special messages: '$chat' will open a new chat with the clicked word in the chat-partner field, while '$copy' will copy the text that is currently-selected in the ICS Console to the clipboard. An example of a text menu as it might occur in your settings file (where you could edit it): -icsMenu {copy;$copy; list players;who; list games;games; finger (player);finger $name; bullet (player);match $name 1 1 r; blitz (player);match $name 5 1 r; rapid (player);match $name 30 0 r; open chat (player);$chat; tell (player);tell $name $input; ask pieces;ptell Please give me a $input; P;$add Pawn $input; N;$add Knight $input; B;$add Bishop $input; R;$add Rook $input; Q;$add Queen $input; } 3.13 Tournament Options ======================= Summons a dialog where you can set options important for playing automatic matches between two or more chess programs (e.g. by using the 'Machine Match' menu item in the 'Mode' menu). Tournament file To run a tournament, XBoard needs a file to record its progress, so it can resume the tourney when it is interrupted. When you want to conduct anything more complex than a simple two-player match with the currently loaded engines, (i.e. when you select a list of participants), you must not leave this field blank. When you enter the name of an existing tournament file, XBoard will ignore all other input specified in the dialog, and will take the corresponding info from that tournament file. This resumes an interrupted tournament, or adds another XBoard agent playing games for it to those that are already doing so. Specifying a not-yet-existing file will cause XBoard to create it, according to the tournament parameters specified in the rest of the dialog, before it starts the tournament on ‘OK’. Provided that you specify participants; without participants no tournament file will be made, but other entered values (e.g. for the file with opening positions) will take effect. Default: configured by the 'defaultTourneyName' option. Sync after round Sync after cycle The sync options, when on, will cause WinBoard to refrain from starting games of the next round or cycle before all games of the previous round or cycle are finished. This guarantees correct ordering in the games file, even when multiple XBoard instances are concurrently playing games for the same tourney. Default: sync after cycle, but not after round. Select Engine Tourney participants From the Select Engine listbox you can pick an engine from your list of engines registered in the settings file, to be added to the tournament. The engines selected so far will be listed in the ‘Tourney participants’ memo. The latter is a normal text edit, so you can use normal text-editing functions to delete engines you selected accidentally, or change their order. Typing names here yourself is not recommended, because names that do not exactly match one of the names from the selection listbox will lead to undefined behavior. Tourney type Here you can specify the type of tournament you want. XBoard’s intrinsic tournament manager support round-robins (type = 0), where each participant plays every other participant, and (multi-)gauntlets, where one (or a few) so-called ‘gauntlet engines’ play an independent set of opponents. In the latter case, you specify the number of gauntlet engines. E.g. if you specified 10 engines, and tourney type = 2, the first 2 engines each play the remaining 8. A value of -1 instructs XBoard to play Swiss; for this to work an external pairing engine must be specified through the 'pairingEngine' option. Each Swiss round will be considered a tourney cycle in that case. Default:0 Number of tourney cycles Default Number of Games in Match You can specify tourneys where every two opponents play each other multiple times. Such multiple games can be played in a row, as specified by the ‘number of games per pairing’, or by repeating the entire tournament schedule a number of times (specified by the ‘number of tourney cycles’). The total number of times two engines meet will be the product of these two. Default is 1 cycle; the number of games per pairing is the same as the default number of match games, stored in your settings file through the 'defaultMatchGames' option. Pause between Match Games Time (in milliseconds) XBoard waits before starting a new game after a previous match or tournament game finishes. Such a waiting period is important for engines that do not support 'ping', as these sometimes still produce a move long after the game finished because of the opponent resigning, which would be mistaken for a move in the next game if that had already started. Save Tourney Games on File where the tournament games are saved (duplicate of the item in the 'Save Game Options'). Game File with Opening Lines File with Start Positions Game Number Position Number Rewind Index after this many Games These items optionally specify the file with move sequences or board positions the tourney games should start from. The corresponding numbers specify the number of the game or position in the file. Here a value -1 means automatic stepping through all games on the file, -2 automatic stepping every two games. The Rewind-Index parameter causes a stepping index to reset to one after reaching a specified value. A setting of -2 for the game number will also be effective in a tournament without specifying a game file, but playing from the GUI book instead. In this case the first (odd) games will randomly select from the book, but the second (even) games will select the same moves from the book as the previous game. (Note this leads to the same opening only if both engines use the GUI book!) Default: No game or position file will be used. The default index if such a file is used is 1. Disable own engine books by default Setting this option reverses the default situation for use of the GUI opening book in tournaments from what it normally is, namely not using it. So unless the engine is installed with an option to explicitly specify it should not use the GUI book (i.e. '-firstHasOwnBookUCI true'), it will be made to use the GUI book. Replace Engine Upgrade Engine With these two buttons you can alter the participants of an already running tournament. After opening the Match Options dialog on an XBoard that is playing for the tourney, you will see all the tourney parameters in the dialog fields. You can then replace the name of one engine by that of another by editing the 'participants' field. (But preserve the order of the others!) Pressing the button after that will cause the substitution. With the 'Upgrade Engine' button the substitution will only affect future games. With 'Replace Engine' all games the substituted engine has already played will be invalidated, and they will be replayed with the substitute engine. In this latter case the engine must not be playing when you do this, but otherwise there is no need to pause the tournament play for making a substitution. Clone Tourney Pressing this button after you have specified an existing tournament file will copy the contents of the latter to the dialog, and then puts the originally proposed name for the tourney file back. You can then run a tourney with the same parameters (possibly after changing the proposed name of the tourney file for the new tourney) by pressing 'OK'. Continue Later Pressing the 'Continue Later' button confirms the current value of all items in the dialog and closes it, but will not automatically start the tournament. This allows you to return to the dialog later without losing the settings you already entered, to adjust paramenters through other menu dialogs. (The 'Common Engine Setting', 'Time Control' and 'General Options' dialogs can be accessed without closing the 'Tournament Options' dialog through the respective buttons at the bottom of the latter.) 3.14 Load Game Options ====================== Summons a dialog where you can set options that control loading of games. Auto-Display Tags Setting this option causes a window to pop up on loading a game, displaying the PGN Tags for that game. Auto-Display Comment Setting this option causes a window to pop up whenever there is a comment to (or variation on) the currently displayed move. Auto-Play speed of loaded games This option sets the number of seconds between moves when a newly loaded game is auto-playing. A decimal fraction on the number is understood. Setting it to -1 disables auto-play, staying in the start position of the game after the loading completes. Setting it to 0 will instantly move to the final position of the game. The 'Auto-Play speed' is also used to determine the analysis time for each move during 'Analyze Game'. Note that auto-playing (including game analysis) can be stopped at any time through the 'P' button above the board. options to use in game-viewer mode Specifies the options automatically set when XBoard is invoked with the option '-viewer' on its command line, as will happen when it is started in response to clicking a PGN game file. The default setting would start XBoard without engine (due to the '-ncp' option), but if you want it to automatically start with your favorite engine, and automatically start analyzing, you could include the necessary options for that here (e.g. '-fe -initialMode analysis'). Thresholds for position filtering in game list The following options can be set to limit the display of games in the 'Game List' window to a sub-set, meeting the specified criteria. Elo of strongest player at least Elo of weakest player at least Games with an Elo tag specifying a lower rating for the mentioned player will not be diplayed in the 'Game List'. No games before year Games with a Date tag before the specified year will not be diplayed in the 'Game List'. Final nr of pieces A single number or a range (like 8-10) can be entered here, and will cause only games where the number of men in the final position is in the given range will be diplayed in the 'Game List'. Minimum nr consecutive positions Specifies for how many consecutive positions the more fuzzy position-matching criteria have to be satisfied in order to count as a match. Search mode find position XBoard can select games for display in the 'Game List' based on whether (in addition to the conditions on the PGN tags) they contain a position that matches the position currently displayed on the board, by pressing the 'find position' or 'narrow' buttons in the 'Game List' window. The 'Search mode' setting determines what counts as match. You can search for an exact match, a position that has all shown material in the same place, but might contain additional material, a position that has all Pawns in the same place, but can have the shown material anywhere, a position that can have all shown material anywhere, or a position that has material between certain limits anywhere. For the latter you have to place the material that must minimally be present in the four lowest ranks of the board, and optional additional material in the four highest ranks of the board. You can request the optional material to be balanced, i.e. equal for white and black. narrow The 'narrow' button is similar in fuction to the 'find position' button, but only searches in the already selected games, rather than the complete game file, and can thus be used to refine a search based on multiple criteria. Also match reversed colors Also match left-right flipped position When looking for matching positions rather than by material, these settings determine whether mirror images (in case of a vertical flip in combination with color reversal) will be also considered a match. The left-right flipping is only useful after all castling rights have expired (or in Xiangqi). 3.15 Save Game Options ====================== Summons a dialog where you can specify whether XBoard should automatically save files of games when they finish, and where and how to do that. Auto-Save Games When set XBoard will automatically save games on a file as they finish. (Not when you abort them by pressing 'New Game', though!) It will either prompt you for a filename, or use the file specified by the 'saveGameFile' option. Own Games Only Setting this option will exclude games by others observed on an Internet Chess Server from automatic saving. Save Games on File Name of the file on which games should be saved automatically. Games are always appended to the file, and will never overwrite anything. Save Final Position on File When a name is defined, the final position of each game is appended to the mentioned file. PGN Event Header Specifies the name of the event used in the PGN event tag of new games that you create. Old Save Style Saves games in an obsolete and now long forgotten format, rather than as PGN. Never use this for orthodox Chess! Include Number Tag in tourney PGN When on this option will cause the non-standard 'Number' tag to be written in any game saved in PGN format. It will contain the unique number of the game in the tourney. (As opposed to the 'Round' tag, which can be shared by many games.) Save Score/Depth Info in PGN When on this option will cause the score and depth at which it was calculated by an engine, and (when available) thinking time to be saved with the move as a comment to the move, in the format {score/depth time}. Here 'score'is in pawn units from the point of view of the player that made the move, with two digits behind the decimal Pawn. 'Time' is in seconds, or min:sec. Save Out-of-Book Info in PGN When on this option causes the score of the first move the engine made after coming out of book in an 'Annotator' PGN tag. 3.16 Game List ============== Pops up a dialog where you can select the PGN tags that should appear on the lines in the 'Game List', and their order. 3.17 Sound Options ================== Summons a dialog where you can specify the sounds that should accompany various events that can occur in XBoard. Most events are only relevant to ICS play, but the move sound is an important exception. For each event listed in the dialog, you can select a standard sound from a menu. Sound Program Specifies the command XBoard should invoke to play sounds. The specified text will be suffixed by the name of the sound file, and then run as a command. Sounds Directory Specifies the directory where XBoard will look for files with the names of the standard sounds. User WAV File When we type a filename here, it can be assigned to the events by selecting 'Above WAV File' from the drop downs. Try-Out Sound Play The 'event' triggering the Try-Out sound is pressing of the 'Play' button behind it. This allows you to judge the sounds. 3.18 Save Settings Now ====================== Selecting this menu item causes the current XBoard settings to be written to the settings file, (.xboardrc in your home directory), so they will also apply in future sessions. Note that some settings are 'volatile', and are not saved, because XBoard considers it too unlikely that you want those to apply next time. In particular this applies to the Chess program, and all options giving information on those Chess programs (such as their directory, if they have their own opening book, if they are UCI or native XBoard), or the variant you are playing. Such options would still be understood when they appear in the settings file in case they were put there with the aid of a text editor, but they would disappear from the file as soon as you save the settings. Note that XBoard no longer pays attention to options values specified in the .Xresources file. (Specifying key bindings there will still work, though.) To alter the default of volatile options, you can use the following method: Rename your ~/.xboardrc settings file (to ~/.yboardrc, say), and create a new file ~/.xboardrc, which only contains the options -settingsFile ~/.yboardrc -saveSettingsFile ~/.yboardrc This will cause your settings to be saved on ~/.yboardrc in the future, so that ~/.xboardrc is no longer overwritten. You can then safely specify volatile options in ~/.xboardrc, either before or after the settingsFile options. Note that when you specify persistent options after the settingsFile options in this ~/.xboardrc, you will essentially turn them into volatile options with the specified value as default, because that value will overrule the value loaded from the settings file (being read later). 3.19 Save Settings on Exit ========================== Setting this option has no immediate effect, but causes the settings to be saved when you quit XBoard. What happens then is otherwise identical to what happens when you use select "Save Settings Now", see there.  File: xboard.info, Node: Help Menu, Next: Keys, Prev: Options Menu, Up: Menus 3.20 Help Menu ============== Info XBoard Displays the XBoard documentation in info format. For this feature to work, you must have the GNU info program installed on your system, and the file 'xboard.info' must either be present in the current working directory, or have been installed by the 'make install' command when you built XBoard. Man XBoard Displays the XBoard documentation in man page format. The 'F1' key is a keyboard equivalent. For this feature to work, the file 'xboard.6' must have been installed by the 'make install' command when you built XBoard, and the directory it was placed in must be on the search path for your system's 'man' command. About XBoard Shows the current XBoard version number.  File: xboard.info, Node: Keys, Prev: Help Menu, Up: Menus 3.21 Other Shortcut Keys ======================== Show Last Move By hitting 'Enter' the last move will be re-animated. Load Next Game Loads the next game from the last game record file you loaded. The 'Alt+PgDn' key triggers this action. Load Previous Game Loads the previous game from the last game record file you loaded. The 'Alt+PgUp' key triggers this action. Not available if the last game was loaded from a pipe. Reload Same Game Reloads the last game you loaded. Not available if the last game was loaded from a pipe. Currently no keystroke is assigned to this ReloadGameProc. Reload Same Position Reloads the last position you loaded. Not available if the last position was loaded from a pipe. Currently no keystroke is assigned to this ReloadPositionProc. In the Xaw build of XBoard you can add or remove shortcut keys using the X resources 'paneA.translations'. Here is an example of what could go into your '.Xdefaults' file: XBoard*paneA.translations: \ Shift?: MenuItem(Help.About) \n\ Ctrly: MenuItem(Action.Accept) \n\ Ctrln: MenuItem(Action.Decline) \n\ Ctrli: MenuItem(Nothing) So the key should always be bound to the action 'MenuItem', with the (hierarchical) name of the menu item as argument. There are a few actions available for which no menu item exists: Binding a key to 'Nothing' makes it do nothing, thus removing it as a shortcut key. Other such functions that can be bound to keys are: AboutGame, DebugProc (switches the -debug option on or off), LoadNextGame, LoadPrevGame, ReloadGame, ReloadPosition.  File: xboard.info, Node: Options, Next: Chess Servers, Prev: Menus, Up: Top 4 Options ********* This section documents the command-line options to XBoard. You can set these options in two ways: by typing them on the shell command line you use to start XBoard, or by editing the settings file (usually ~/.xboardrc) to alter the value of the setting that was saved there. Some of the options cannot be changed while XBoard is running; others set the initial state of items that can be changed with the *note Options:: menu. Most of the options have both a long name and a short name. To turn a boolean option on or off from the command line, either give its long name followed by the value true or false ('-longOptionName true'), or give just the short name to turn the option on ('-opt'), or the short name preceded by 'x' to turn the option off ('-xopt'). For options that take strings or numbers as values, you can use the long or short option names interchangeably. * Menu: * Chess engine options:: Controlling the chess engine. * UCI + WB Engine Settings:: Setting some very common engine parameters * Tournament options:: Running tournaments and matches between engines. * ICS options:: Connecting to and using ICS. * Load and Save options:: Input/output options. * User interface options:: Look and feel options. * Adjudication Options:: Control adjudication of engine-engine games. * Install options:: Maintaining and extending the XBoard install. * Other options:: Miscellaneous.  File: xboard.info, Node: Chess engine options, Next: UCI + WB Engine Settings, Up: Options 4.1 Chess Engine Options ======================== -tc or -timeControl minutes[:seconds] Each player begins with his clock set to the 'timeControl' period. Default: 5 minutes. The additional options 'movesPerSession' and 'timeIncrement' are mutually exclusive. -mps or -movesPerSession moves When both players have made 'movesPerSession' moves, a new 'timeControl' period is added to both clocks. Default: 40 moves. -inc or -timeIncrement seconds If this option is specified, 'movesPerSession' is ignored. Instead, after each player's move, 'timeIncrement' seconds are added to his clock. Use '-inc 0' if you want to require the entire game to be played in one 'timeControl' period, with no increment. Default: -1, which specifies 'movesPerSession' mode. -clock/-xclock or -clockMode true/false Determines whether or not to display the chess clocks. If clockMode is false, the clocks are not shown, but the side that is to play next is still highlighted. Also, unless 'searchTime' is set, the chess engine still keeps track of the clock time and uses it to determine how fast to make its moves. -shoMoveTime true/false When this option is set the time that has been thought about the current move will be displayed behind the remaining time in parentheses (in seconds). Default: false. -st or -searchTime minutes[:seconds] Tells the chess engine to spend at most the given amount of time searching for each of its moves. Without this option, the chess engine chooses its search time based on the number of moves and amount of time remaining until the next time control. Setting this option also sets clockMode to false. -depth or -searchDepth number Tells the chess engine to look ahead at most the given number of moves when searching for a move to make. Without this option, the chess engine chooses its search depth based on the number of moves and amount of time remaining until the next time control. With the option, the engine will cut off its search early if it reaches the specified depth. -firstNPS number -secondNPS number Tells the chess engine to use an internal time standard based on its node count, rather then wall-clock time, to make its timing decisions. The time in virtual seconds should be obtained by dividing the node count through the given number, like the number was a rate in nodes per second. Xboard will manage the clocks in accordance with this, relying on the number of nodes reported by the engine in its thinking output. If the given number equals zero, it can obviously not be used to convert nodes to seconds, and the time reported by the engine is used to decrement the XBoard clock in stead. The engine is supposed to report in CPU time it uses, rather than wall-clock time, in this mode. This option can provide fairer conditions for engine-engine matches on heavily loaded machines, or with very fast games (where the wall clock is too inaccurate). 'showThinking' must be on for this option to work. Default: -1 (off). Not many engines might support this yet! -firstTimeOdds factor -secondTimeOdds factor Reduces the time given to the mentioned engine by the given factor. If pondering is off, the effect is indistinguishable from what would happen if the engine was running on an n-times slower machine. Default: 1. -timeOddsMode mode This option determines how the case is handled where both engines have a time-odds handicap. If mode=1, the engine that gets the most time will always get the nominal time, as specified by the time-control options, and its opponent's time is renormalized accordingly. If mode=0, both play with reduced time. Default: 0. -hideThinkingFromHuman true/false Controls the Hide Thinking option. *Note Options Menu::. Default: true. (Replaces the Show-Thinking option of older xboard versions.) -thinking/-xthinking or -showThinking true/false Forces the engine to send thinking output to xboard. Used to be the only way to control if thinking output was displayed in older xboard versions, but as the thinking output in xboard 4.3 is also used for several other purposes (adjudication, storing in PGN file) the display of it is now controlled by the new option Hide Thinking. *Note Options Menu::. Default: false. (But if xboard needs the thinking output for some purpose, it makes the engine send it despite the setting of this option.) -ponder/-xponder or -ponderNextMove true/false Sets the Ponder Next Move menu option. *Note Options Menu::. Default: true. -smpCores number Specifies the maximum number of CPUs an SMP engine is allowed to use. Only works for engines that support the XBoard/WinBoard-protocol cores feature. -mg or -matchGames n Automatically runs an n-game match between two chess engines, with alternating colors. If the 'loadGameFile' or 'loadPositionFile' option is set, XBoard starts each game with the given opening moves or the given position; otherwise, the games start with the standard initial chess position. If the 'saveGameFile' option is set, a move record for the match is appended to the specified file. If the 'savePositionFile' option is set, the final position reached in each game of the match is appended to the specified file. When the match is over, XBoard displays the match score and exits. Default: 0 (do not run a match). -mm/-xmm or -matchMode true/false Setting 'matchMode' to true is equivalent to setting 'matchGames' to 1. -sameColorGames n Automatically runs an n-game match between two chess engines, without alternating colors. Otherwise the same applies as for the '-matchGames' option, over which it takes precedence if both are specified. (See there.) Default: 0 (do not run a match). -epd This option puts XBoard in a special mode for solving EPD test-suites, for the entire duration of the session. In this mode games are aborted after a single move, and that move will be compared with the best-move or avoid-move from the EPD position description from which the 'game' was started. Playing a best move counts as a win, playing an avoid move as a loss, and playing any other move counts as a draw. This option should be used in combination with match mode, and an EPD file of starting positions with an auto-incrementing index. Color assignment will be such that the first engine plays all moves, and the second engine will be never involved. The results for individual positions, as well as the time used for solving them, will be reported in the lower pane of the Engine Output window. -fcp or -firstChessProgram program -scp or -secondChessProgram program Name of first and second chess engine, respectively. A second chess engine is started only in Two Machines (match) mode, or in Analyze mode with two engines. The second engine is by default the same as the first. Default for the first engine: 'fairymax'. -fe or -firstEngine nickname -se or -secondEngine nickname This is an alternative to the 'fcp' and 'scp' options for specifying the first and second engine, for engines that were already registered (using the 'Load Engine' dialog) in XBoard's settings file. It will not only retrieve the real name of the engine, but also all options configured with it. (E.g. if it is UCI, whether it should use book.) -fb/-xfb or -firstPlaysBlack true/false In games between two chess engines, firstChessProgram normally plays white. If this option is true, firstChessProgram plays black. In a multi-game match, this option affects the colors only for the first game; they still alternate in subsequent games. -fh or -firstHost host -sh or -secondHost host Hosts on which the chess engines are to run. The default for each is 'localhost'. If you specify another host, XBoard uses 'rsh' to run the chess engine there. (You can substitute a different remote shell program for rsh using the 'remoteShell' option described below.) -fd or -firstDirectory dir -sd or -secondDirectory dir Working directories in which the chess engines are to be run. The default is "", which means to run the chess engine in the same working directory as XBoard itself. (See the CHESSDIR environment variable.) This option is effective only when the chess engine is being run on the local host; it does not work if the engine is run remotely using the -fh or -sh option. -initString string or -firstInitString -secondInitString string The string that is sent to initialize each chess engine for a new game. Default: new random Setting this option from the command line is tricky, because you must type in real newline characters, including one at the very end. In most shells you can do this by entering a '\' character followed by a newline. Using the character sequence '\n' in the string should work too, though. If you change this option, don't remove the 'new' command; it is required by all chess engines to start a new game. You can remove the 'random' command if you like; including it causes GNU Chess 4 to randomize its move selection slightly so that it doesn't play the same moves in every game. Even without 'random', GNU Chess 4 randomizes its choice of moves from its opening book. Many other chess engines ignore this command entirely and always (or never) randomize. You can also try adding other commands to the initString; see the documentation of the chess engine you are using for details. -firstComputerString string -secondComputerString string The string that is sent to the chess engine if its opponent is another computer chess engine. The default is 'computer\n'. Probably the only useful alternative is the empty string (''), which keeps the engine from knowing that it is playing another computer. -reuse/-xreuse or -reuseFirst true/false -reuse2/-xreuse2 or -reuseSecond true/false If the option is false, XBoard kills off the chess engine after every game and starts it again for the next game. If the option is true (the default), XBoard starts the chess engine only once and uses it repeatedly to play multiple games. Some old chess engines may not work properly when reuse is turned on, but otherwise games will start faster if it is left on. -firstProtocolVersion version-number -secondProtocolVersion version-number This option specifies which version of the chess engine communication protocol to use. By default, version-number is 2. In version 1, the "protover" command is not sent to the engine; since version 1 is a subset of version 2, nothing else changes. Other values for version-number are not supported. -firstScoreAbs true/false -secondScoreAbs true/false If this option is set, the score reported by the engine is taken to be that in favor of white, even when the engine plays black. Important when XBoard uses the score for adjudications, or in PGN reporting. -niceEngines priority This option allows you to lower the priority of the engine processes, so that the generally insatiable hunger for CPU time of chess engines does not interfere so much with smooth operation of XBoard (or the rest of your system). Negative values could increase the engine priority, which is not recommended. -firstOptions string -secondOptions string The given string is a comma-separated list of (option name=option value) pairs, like the following example: "style=Karpov,blunder rate=0". If an option announced by the engine at startup through the feature commands of the XBoard/WinBoard protocol matches one of the option names (i.e. "style" or "blunder rate"), it would be set to the given value (i.e. "Karpov" or 0) through a corresponding option command to the engine. This provided that the type of the value (text or numeric) matches as well. -firstNeedsNoncompliantFEN string -secondNeedsNoncompliantFEN string The castling rights and e.p. fields of the FEN sent to the mentioned engine with the setboard command will be replaced by the given string. This can for instance be used to run engines that do not understand Chess960 FENs in variant fischerandom, to make them at least understand the opening position, through setting the string to "KQkq -". (Note you also have to give the e.p. field!) Other possible applications are to provide work-arounds for engines that want to see castling and e.p. fields in variants that do not have castling or e.p. (shatranj, courier, xiangqi, shogi) so that XBoard would normally omit them (string = "- -"), or to add variant-specific fields that are not yet supported by XBoard (e.g. to indicate the number of checks in 3check). -shuffleOpenings Forces shuffling of the opening setup in variants that normally have a fixed initial position. Shufflings are symmetric for black and white, and exempt King and Rooks in variants with normal castling. Remains in force until a new variant is selected. -fischerCastling Specifies Fischer castling (as in Chess960) should be enabled in variants that normally would not have it. Remains in force until a new variant is selected.  File: xboard.info, Node: UCI + WB Engine Settings, Next: Tournament options, Prev: Chess engine options, Up: Options 4.2 UCI + WB Engine Settings ============================ -fUCI or -firstIsUCI true/false -sUCI or -secondIsUCI true/false Indicates if the mentioned engine executable file is a UCI engine, and should be run with the aid of the Polyglot adapter rather than directly. Xboard will then pass the other UCI options and engine name to Polyglot on its command line, according to the option 'adapterCommand'. -fUCCI -sUCCI -fUSI -sUSI Options similar to 'fUCI' and 'sUCI', except that they use the indicated engine with the protocol adapter specified in the 'uxiAdapter' option. This can then be configured for running a UCCI or USI adapter, as the need arises. -adapterCommand string The string contains the command that should be issued by XBoard to start an engine that is accompanied by the 'fUCI' option. Any identifier following a percent sign in the command (e.g. %fcp) will be considered the name of an XBoard option, and be replaced by the value of that option at the time the engine is started. For starting the second engine, any leading "f" or "first" in the option name will first be replaced by "s" or "second", before finding its value. Default: 'polyglot -noini -ec "%fcp" -ed "%fd"' -uxiAdapter string Similar to 'adapterCommand', but used for engines accompanied by the 'fUCCI' or 'fUSI' option, so you can configure XBoard to be ready to handle more than one flavor of non-native protocols. Default: "" -polyglotDir filename Gives the name of the directory in which the Polyglot adapter for UCI engines resides. Default: "". -usePolyglotBook true/false Specifies if the Polyglot book should be used as GUI book. -polyglotBook filename Gives the filename of the opening book. The book is only used when the 'usePolyglotBook' option is set to true, and the option 'firstHasOwnBookUCI' or 'secondHasOwnBookUCI' applying to the engine is set to false. The engine will be kept in force mode as long as the current position is in book, and XBoard will select the book moves for it. Default: "". -fNoOwnBookUCI or -firstXBook or -firstHasOwnBookUCI true/false -sNoOwnBookUCI or -secondXBook or -secondHasOwnBookUCI true/false Indicates if the mentioned engine has its own opening book it should play from, rather than using the external book through XBoard. Default: depends on setting of the option 'discourageOwnBooks'. -discourageOwnBooks true/false When set, newly loaded engines will be assumed to use the GUI book, unless they explicitly specify differently. Otherwise they will be assumed to not use the GUI book, unless the specify differently (e.g. with 'firstXBook'). Default: false. -bookDepth n Limits the use of the GUI book to the first n moves of each side. Default: 12. -bookVariation n A value n from 0 to 100 tunes the choice of moves from the GUI books from totally random to best-only. Default: 50 -mcBookMode When this volatile option is specified, the probing algorithm of the GUI book is altered to always select the move that is most under-represented based on its performance. When all moves are played in approximately the right proportion, a book miss will be reported, to give the engine opportunity to explore a new move. In addition score of the moves will be kept track of during the session in a book buffer. By playing an match in this mode, a book will be built from scratch. The only output are the saved games, which can be converted to an actual book later, with the 'Save Games as Book' command. The latter command can also be used to pre-fill the book buffer before adding new games based on the probing algorithm. -fn string or -firstPgnName string -sn string or -secondPgnName string Indicates the name that should be used for the engine in PGN tags of engine-engine games. Intended to allow you to install versions of the same engine with different settings, and still distinguish them. Default: "". -defaultHashSize n Sets the size of the hash table to n MegaBytes. Together with the EGTB cache size this number is also used to calculate the memory setting of XBoard/WinBoard engines, for those that support the memory feature of the XBoard/WinBoard protocol. Default: 64. -defaultCacheSizeEGTB n Sets the size of the EGTB cache to n MegaBytes. Together with the hash-table size this number is also used to calculate the memory setting of XBoard/WinBoard engines, for those that support the memory feature of the XBoard/WinBoard protocol. Default: 4. -defaultPathEGTB filename Gives the name of the directory where the end-game tablebases are installed, for UCI engines. Default: "/usr/local/share/egtb". -egtFormats string Specifies which end-game tables are installed on the computer, and where. The argument is a comma-separated list of format specifications, each specification consisting of a format name, a colon, and a directory path name, e.g. "nalimov:/usr/local/share/egtb". If the name part matches that of a format that the engine requests through a feature command, xboard will relay the path name for this format to the engine through an egtpath command. One egtpath command for each matching format will be sent. Popular formats are "nalimov" and "gaviota" DTM tablebases, syzygy DTZ tablebases and "scorpio" bitbases. Default: "". -firstChessProgramNames={names} This option lets you customize the listbox with chess-engine names that appears in the 'Load Engine' and 'Tournament Options' dialog. It consists of a list of strings, one per line. When an engine is loaded, the corresponding line is prefixed with "-fcp ", and processed like it appeared on the command line. That means that apart from the engine command, it can contain any number of XBoard options you want to use with this engine. (Commonly used options here are -fd, -firstXBook, -fUCI, -variant.) The value of this option is gradually built as you load new engines through the 'Load Engine' menu dialog, with 'Add to list' ticked. To change it in other ways, (e.g. deleting engines), use the menu item 'Edit Engine List' in the 'Engine' menu.  File: xboard.info, Node: Tournament options, Next: ICS options, Prev: UCI + WB Engine Settings, Up: Options 4.3 Tournament options ====================== -defaultMatchGames n Sets the number of games that will be used for a match between two engines started from the menu to n. Also used as games per pairing in other tournament formats. Default: 10. -matchPause n Specifies the duration of the pause between two games of a match or tournament between engines as n milliseconds. Especially engines that do not support ping need this option, to prevent that the move they are thinking on when an opponent unexpectedly resigns will be counted for the next game, (leading to illegal moves there). Default: 10000. -tf filename or -tourneyFile filename Specifies the name of the tournament file used in match mode to conduct a multi-player tournament. This file is a special settings file, which stores the description of the tournament (including progress info), through normal options (e.g. for time control, load and save files), and through some special-purpose options listed below. -tt number or -tourneyType number Specifies the type of tourney: 0 = round-robin, N>0 = (multi-)gauntlet with N gauntlet engines, -1 = Swiss through external pairing engine. Volatile option, but stored in tourney file. -cy number or -tourneyCycles number Specifies the number of cycles in a tourney. Volatile option, but stored in tourney file. -participants list The list is a multi-line text string that specifies engines occurring in the 'firstChesProgramNames' list in the settings file by their (implied or explicitly given) nicknames, one engine per line. The mentioned engines will play in the tourney. Volatile option, but stored in tourney file. -results string The string of +=- characters lists the result of all played games in a tourney. Games currently playing are listed as *, while a space indicates a game that is not yet played. Volatile option, but stored in tourney file. -defaultTourneyName string Specifies the name of the tournament file XBoard should propose when the 'Match Options' dialog is opened. Any %y, %M, %d, %h, %m, %s in the string are replaced by the current year, month, day of the month, hours, minutes, seconds of the current time, respectively, as two-digit number. A %Y would be replaced by the year as 4-digit number. Default: empty string. -pairingEngine filename Specifies the external program to be used to pair the participants in Swiss tourneys. XBoard communicates with this engine in the same way as it communicates with Chess engines. The only commands sent to the pairing engine are “results N string”, (where N is the number of participants, and string the results so far in the format of the results option), and “pairing N”, (where N is the number of the tourney game). To the latter the pairing engine should answer with “A-B”, where A and B are participant numbers (in the range 1-N). (There should be no reply to the results command.) Default: empty string. -afterGame string -afterTourney string When non-empty, the given string will be executed as a system command after each tournament game, or after the tourney completes, respectively. This can be used, for example, to autmatically run a cross-table generator on the PGN file where games are saved, to update the tourney standings. Default: "" -syncAfterRound true/false -syncAfterCycle true/false Controls whether different instances of XBoard concurrently running the same tournament will wait for each other. Defaults: sync after cycle, but not after round. -seedBase number Used to store the seed of the pseudo-random-number generator in the tourneyFile, so that separate instances of XBoard working on the same tourney can take coherent 'random' decisions, such as picking an opening for a given game number.  File: xboard.info, Node: ICS options, Next: Load and Save options, Prev: Tournament options, Up: Options 4.4 ICS options =============== -ics/-xics or -internetChessServerMode true/false Connect with an Internet Chess Server to play chess against its other users, observe games they are playing, or review games that have recently finished. Default: false. -icshost or -internetChessServerHost host The Internet host name or address of the chess server to connect to when in ICS mode. Default: 'chessclub.com'. Another popular chess server to try is 'freechess.org'. If your site doesn't have a working Internet name server, try specifying the host address in numeric form. You may also need to specify the numeric address when using the icshelper option with timestamp or timeseal (see below). -icsport or -internetChessServerPort port-number The port number to use when connecting to a chess server in ICS mode. Default: 5000. -icshelper or -internetChessServerHelper prog-name An external helper program used to communicate with the chess server. You would set it to "timestamp" for ICC (chessclub.com) or "timeseal" for FICS (freechess.org), after obtaining the correct version of timestamp or timeseal for your computer. See "help timestamp" on ICC and "help timeseal" on FICS. This option is shorthand for '-useTelnet -telnetProgram program'. -telnet/-xtelnet or -useTelnet true/false This option is poorly named; it should be called useHelper. If set to true, it instructs XBoard to run an external program to communicate with the Internet Chess Server. The program to use is given by the telnetProgram option. If the option is false (the default), XBoard opens a TCP socket and uses its own internal implementation of the telnet protocol to communicate with the ICS. *Note Firewalls::. -telnetProgram prog-name This option is poorly named; it should be called helperProgram. It gives the name of the telnet program to be used with the 'gateway' and 'useTelnet' options. The default is 'telnet'. The telnet program is invoked with the value of 'internetChessServerHost' as its first argument and the value of 'internetChessServerPort' as its second argument. *Note Firewalls::. -gateway host-name If this option is set to a host name, XBoard communicates with the Internet Chess Server by using 'rsh' to run the 'telnetProgram' on the given host, instead of using its own internal implementation of the telnet protocol. You can substitute a different remote shell program for 'rsh' using the 'remoteShell' option described below. *Note Firewalls::. -internetChessServerCommPort or -icscomm dev-name If this option is set, XBoard communicates with the ICS through the given character I/O device instead of opening a TCP connection. Use this option if your system does not have any kind of Internet connection itself (not even a SLIP or PPP connection), but you do have dial-up access (or a hardwired terminal line) to an Internet service provider from which you can telnet to the ICS. The support for this option in XBoard is minimal. You need to set all communication parameters and tty modes before you enter XBoard. Use a script something like this: stty raw -echo 9600 > /dev/tty00 xboard -ics -icscomm /dev/tty00 Here replace '/dev/tty00' with the name of the device that your modem is connected to. You might have to add several more options to these stty commands. See the man pages for 'stty' and 'tty' if you run into problems. Also, on many systems stty works on its standard input instead of standard output, so you have to use '<' instead of '>'. If you are using linux, try starting with the script below. Change it as necessary for your installation. #!/bin/sh -f # configure modem and fire up XBoard # configure modem ( stty 2400 ; stty raw ; stty hupcl ; stty -clocal stty ignbrk ; stty ignpar ; stty ixon ; stty ixoff stty -iexten ; stty -echo ) < /dev/modem xboard -ics -icscomm /dev/modem After you start XBoard in this way, type whatever commands are necessary to dial out to your Internet provider and log in. Then telnet to ICS, using a command like 'telnet chessclub.com 5000'. Important: See the paragraph below about extra echoes, in *note Limitations::. -icslogon or -internetChessServerLogonScript file-name Whenever XBoard connects to the Internet Chess Server, if it finds a file with the name given in this option, it feeds the file's contents to the ICS as commands. The default file name is '.icsrc'. Usually the first two lines of the file should be your ICS user name and password. The file can be either in $CHESSDIR, in XBoard's working directory if CHESSDIR is not set, or in your home directory. -msLoginDelay delay If you experience trouble logging on to an ICS when using the '-icslogon' option, inserting some delay between characters of the logon script may help. This option adds 'delay' milliseconds of delay between characters. Good values to try are 100 and 250. -icsinput/-xicsinput or -internetChessServerInputBox true/false Sets the ICS Input Box menu option. *Note Mode Menu::. Default: false. -autocomm/-xautocomm or -autoComment true/false Sets the Auto Comment menu option. *Note Options Menu::. Default: false. -autoflag/-xautoflag or -autoCallFlag true/false Sets the Auto Flag menu option. *Note Options Menu::. Default: false. -autobs/-xautobs or -autoObserve true/false Sets the Auto Observe menu option. *Note Options Menu::. Default: false. -autoKibitz Enables kibitzing of the engines last thinking output (depth, score, time, speed, PV) before it moved to the ICS, in zippy mode. The option 'showThinking' must be switched on for this option to work. Also diverts similar kibitz information of an opponent engine that is playing you through the ICS to the engine-output window, as if the engine was playing locally. -seekGraph true/false or -sg Enables displaying of the seek graph by left-clicking the board when you are logged on to an ICS and currently idle. The seek graph show all players currently seeking games on the ICS, plotted according to their rating and the time control of the game they seek, in three different colors (for rated, unrated and wild games). Computer ads are displayed as squares, human ads are dots. Default: false. -autoRefresh true/false Enables automatic updating of the seek graph, by having the ICS send a running update of all newly placed and removed seek ads. This consumes a substantial amount of communication bandwidth, and is only supported for FICS and ICC. Default: false. -backgroundObserve true/false When true, boards sent to you by the ICS from other games while you are playing (e.g. because you are observing them) will not be automatically displayed. Only a summary of time left and material of both players will appear in the message field above the board. XBoard will remember the last board it has received this way, and will display it instead of the position in your own game when you press the right mouse button. No other information is stored on such games observed in the background; you cannot save such a game later, or step through its moves. This feature is provided solely for the benefit of bughouse players, to enable them to peek at their partner's game without the need to logon twice. Default: false. -dualBoard true/false In combination with -backgroundObserve true, this option will display the board of the background game side by side with that of your own game, so you can have it in view permanently. Any board or holdings info coming in will be displayed on the secondary board immediately. This feature is still experimental and largely unfinished. There is no animation or highlighting of moves on the secondary board. Default: false. -disguisePromotedPieces true/false When set promoted Pawns in crazyhouse/bughouse are displayed identical to primordial pieces of the same type, rather than distinguishable. Default: true. -moves/-xmoves or -getMoveList true/false Sets the Get Move List menu option. *Note Options Menu::. Default: true. -alarm/-xalarm or -icsAlarm true/false Sets the ICS Alarm menu option. *Note Options Menu::. Default: true. -icsAlarmTime ms Sets the time in milliseconds for the ICS Alarm menu option. *Note Options Menu::. Default: 5000. lowTimeWarning true/false Controls a color change of the board as a warning your time is running out. *Note Options Menu::. Default: false. -pre/-xpre \fRor\fB -premove true/false Sets the Premove menu option. *Note Options Menu::. Default: true. -prewhite/-xprewhite or -premoveWhite -preblack/-xpreblack or -premoveBlack -premoveWhiteText string -premoveBlackText string Set the menu options for specifying the first move for either color. *Note Options Menu::. Defaults: false and empty strings, so no pre-moves. -quiet/-xquiet or -quietPlay true/false Sets the Quiet Play menu option. *Note Options Menu::. Default: false. -colorizeMessages or -colorize/-xcolorize Setting colorizeMessages to true tells XBoard to colorize the messages received from the ICS. Colorization works only if your xterm supports ISO 6429 escape sequences for changing text colors. Default: true. -colorShout foreground,background,bold -colorSShout foreground,background,bold -colorCShout foreground,background,bold -colorChannel1 foreground,background,bold -colorChannel foreground,background,bold -colorKibitz foreground,background,bold -colorTell foreground,background,bold -colorChallege foreground,background,bold -colorRequest foreground,background,bold -colorSeek foreground,background,bold -colorNormal foreground,background,bold These options set the colors used when colorizing ICS messages. All ICS messages are grouped into one of these categories: shout, sshout, channel 1, other channel, kibitz, tell, challenge, request (including abort, adjourn, draw, pause, and takeback), or normal (all other messages). Each foreground or background argument can be one of the following: black, red, green, yellow, blue, magenta, cyan, white, or default. Here "default" means the default foreground or background color of your xterm. Bold can be 1 or 0. If background is omitted, "default" is assumed; if bold is omitted, 0 is assumed. -soundProgram progname If this option is set to a sound-playing program that is installed and working on your system, XBoard can play sound files when certain events occur, listed below. The default program name is "play". If any of the sound options is set to "$", the event rings the terminal bell by sending a ^G character to standard output, instead of playing a sound file. If an option is set to the empty string "", no sound is played for that event. -soundDirectory directoryname This option specifies where XBoard will look for sound files, when these are not given as an absolute path name. -soundShout filename -soundSShout filename -soundCShout filename -soundChannel filename -soundChannel1 filename -soundKibitz filename -soundTell filename -soundChallenge filename -soundRequest filename -soundSeek filename These sounds are triggered in the same way as the colorization events described above. They all default to "", no sound. They are played only if the colorizeMessages is on. CShout is synonymous with SShout. -soundMove filename This sound is played when a player other than yourself makes a move. Default: "$". -soundRoar filename This sound is played when a Lion makes a hit-and-run or double capture/ Default: "" (no sound). -soundIcsAlarm filename This sound is used by the ICS Alarm menu option. Default: "$". -soundIcsWin filename This sound is played when you win an ICS game. Default: "" (no sound). -soundIcsLoss filename This sound is played when you lose an ICS game. Default: "" (no sound). -soundIcsDraw filename This sound is played when you draw an ICS game. Default: "" (no sound). -soundIcsUnfinished filename This sound is played when an ICS game that you are participating in is aborted, adjourned, or otherwise ends inconclusively. Default: "" (no sound).  File: xboard.info, Node: Load and Save options, Next: User interface options, Prev: ICS options, Up: Options 4.5 Load and Save options ========================= -lgf or -loadGameFile file -lgi or -loadGameIndex index If the 'loadGameFile' option is set, XBoard loads the specified game file at startup. The file name '-' specifies the standard input. If there is more than one game in the file, XBoard pops up a menu of the available games, with entries based on their PGN (Portable Game Notation) tags. If the 'loadGameIndex' option is set to 'N', the menu is suppressed and the N th game found in the file is loaded immediately. The menu is also suppressed if 'matchMode' is enabled or if the game file is a pipe; in these cases the first game in the file is loaded immediately. Use the 'pxboard' shell script provided with XBoard if you want to pipe in files containing multiple games and still see the menu. If the loadGameIndex specifies an index -1, this triggers auto-increment of the index in 'matchMode', which means that after every game the index is incremented by one, causing each game of the match to be played from the next game in the file. Similarly, specifying an index value of -2 causes the index to be incremented every two games, so that each game in the file is used twice (with reversed colors). The 'rewindIndex' option causes the index to be reset to the first game of the file when it has reached a specified value. -rewindIndex n Causes a position file or game file to be rewound to its beginning after n positions or games in auto-increment 'matchMode'. See 'loadPositionIndex' and 'loadGameIndex'. default: 0 (no rewind). -td or -timeDelay seconds Time delay between moves during 'Load Game' or 'Analyze File'. Fractional seconds are allowed; try '-td 0.4'. A time delay value of -1 tells XBoard not to step through game files automatically. Default: 1 second. -sgf or -saveGameFile file If this option is set, XBoard appends a record of every game played to the specified file. The file name '-' specifies the standard output. -autosave/-xautosave or -autoSaveGames true/false Sets the Auto Save menu option. *Note Options Menu::. Default: false. Ignored if 'saveGameFile' is set. -onlyOwnGames true/false Suppresses auto-saving of ICS observed games. Default: false. -lpf or -loadPositionFile file -lpi or -loadPositionIndex index If the 'loadPositionFile' option is set, XBoard loads the specified position file at startup. The file name '-' specifies the standard input. If the 'loadPositionIndex' option is set to N, the Nth position found in the file is loaded; otherwise the first position is loaded. If the loadPositionIndex specifies an index -1, this triggers auto-increment of the index in 'matchMode', which means that after every game the index is incremented by one, causing each game of the match to be played from the next position in the file. Similarly, specifying an index value of -2 causes the index to be incremented every two games, so that each position in the file is used twice (with the engines playing opposite colors). The 'rewindIndex' option causes the index to be reset to the first position of the file when it has reached a specified value. -spf or -savePositionFile file If this option is set, XBoard appends the final position reached in every game played to the specified file. The file name '-' specifies the standard output. -positionDir directory Specifies the directory where file browsing should start when using the 'Load Position' menu item. -pgnExtendedInfo true/false If this option is set, XBoard saves depth, score and time used for each move that the engine found as a comment in the PGN file. Default: false. -pgnTimeLeft true/false If this option is set, XBoard will save the remaining clock time for the player that has just moved as part of the 'pgnExtendedInfo', rather than the time that player thought about his latest move. Default: false. -pgnEventHeader string Default: false. Sets the name used in the PGN event tag to string. Default: "Computer Chess Game". -pgnNumberTag true/false Include the (unique) sequence number of a tournament game into the saved PGN file as a 'number' tag. Default: false. -saveOutOfBookInfo true/false Include the information on how the engine(s) game out of its opening book in a special 'annotator' tag with the PGN file. Default: true. -oldsave/-xoldsave or -oldSaveStyle true/false Sets the Old Save Style menu option. *Note Options Menu::. Default: false. -gameListTags string The character string lists the PGN tags that should be printed in the Game List, and their order. The meaning of the codes is e=event, s=site, d=date, o=round, p=players, r=result, w=white Elo, b=black Elo, t=time control, v=variant, a=out-of-book info, c=result comment. Default: "eprd" -ini or -settingsFile filename -saveSettingsFile filename @filename When XBoard encounters an option -settingsFile (or -ini for short), or @filename, it tries to read the mentioned file, and substitutes the contents of it (presumaby more command-line options) in place of the option. In the case of -ini or -settingsFile, the name of a successfully read settings file is also remembered as the file to use for saving settings (automatically on exit, or on user command). An option of the form @filename does not affect saving. The option -saveSettingsFile does specify a name of the file to use for saving, without reading any options from it, and is thus also effective when the file did not exist yet. So the settings will be saved to the file specified in the last -saveSettingsFile or succesfull -settingsFile / -ini command, if any, and in /etc/xboard/xboard.conf otherwise. Usualy the latter is only accessible for the system administrator, though, and will be used to contain system-wide default settings, amongst which a -saveSettingsFile and -settingsFile options to specify a settings file accessible to the individual user, such as ~/.xboardrc in the user's home directory. -saveSettingsOnExit true/false Controls saving of options on the settings file. *Note Options Menu::. Default: true.  File: xboard.info, Node: User interface options, Next: Adjudication Options, Prev: Load and Save options, Up: Options 4.6 User interface options ========================== -noGUI Suppresses all GUI functions of XBoard (to speed up automated ultra-fast engine-engine games, which you don't want to watch). There will be no board or clock updates, no printing of moves, and no update of the icon on the task bar in this mode. -logoSize N This option controls the drawing of player logos next to the clocks. The integer N specifies the width of the logo in pixels; the logo height will always be half the width. When N = 0, no logos will be diplayed. Default: 0. -firstLogo imagefile -secondLogo imagefile Specify the images to be used as player logos when 'logoSize' is non-zero, next to the white and black clocks, respectively. -autoLogo true/false -logoDir filename When 'autoLogo' is set, XBoard will search for a PNG image file with the name of the engine or ICS in the directory specified by 'logoDir'. For a human player it will look for a file .png in this directory, but only when ~/.logo.png does not provide one. -recentEngines number -recentEngineList list When the number is larger than zero, it determines how many recently used engines will be appended at the bottom of the 'Engines' menu. The engines will be saved in your settings file as the option 'recentEngineList', by their nicknames, and the most recently used one will always be sorted to the top. If the list after that is longer than the specified number, the last one is discarded. Changes in the list will only become visible the next session, provided you saved the settings. Default: 6. -oneClickMove true/false When set, this option allows you to enter moves by only clicking the to- or from-square, when only a single legal move to or from that square is possible. Double-clicking a piece (or clicking an already selected piece) will instruct that piece to make the only capture it can legally do. Default: false. -monoMouse true/false When set button 1 clicks on empty squares in Edit Position mode will be interpreted as button 3 clicks, so they place a piece. Default: false. -movesound/-xmovesound or -ringBellAfterMoves true/false Sets the Move Sound menu option. *Note Options Menu::. Default: false. For compatibility with old XBoard versions, -bell/-xbell are also accepted as abbreviations for this option. -analysisBell N When N is non-zero, the Move Sound will be played whenever a new PV arrives in analysis mode after more than N seconds of analysis. Default: 0. -exit/-xexit or -popupExitMessage true/false Sets the Popup Exit Message menu option. *Note Options Menu::. Default: true. -popup/-xpopup or -popupMoveErrors true/false Sets the Popup Move Errors menu option. *Note Options Menu::. Default: false. -queen/-xqueen or -alwaysPromoteToQueen true/false Sets the Always Queen menu option. *Note Options Menu::. Default: false. -sweepPromotions true/false Sets the 'Almost Always Promote to Queen' menu option. *Note Options Menu::. Default: false. -legal/-xlegal or -testLegality true/false Sets the Test Legality menu option. *Note Options Menu::. Default: true. -size or -boardSize (sizeName | n1,n2,n3,n4,n5,n6,n7) Determines how large the board will be, by selecting the pixel size of the pieces and setting a few related parameters. The sizeName can be one of: Titanic, giving 129x129 pixel pieces, Colossal 116x116, Giant 108x108, Huge 95x95, Big 87x87, Large 80x80, Bulky 72x72, Medium 64x64, Moderate 58x58, Average 54x54, Middling 49x49, Mediocre 45x45, Small 40x40, Slim 37x37, Petite 33x33, Dinky 29x29, Teeny 25x25, or Tiny 21x21. Xboard installs with a set of scalable (svg) piece images, which it scales to any of the requested sizes. The square size can further be continuously scaled by sizing the board window, but this only adapts the size of the pieces, and has no effect on the width of the grid lines or the font choice (both of which would depend on he selected boardSize). The default depends on the size of your screen; it is approximately the largest size that will fit without clipping. You can select other sizes or vary other layout parameters by providing a list of comma-separated values (with no spaces) as the argument. You do not need to provide all the values; for any you omit from the end of the list, defaults are taken from the nearest built-in size. The value 'n1' gives the piece size, 'n2' the width of the black border between squares, 'n3' the desired size for the clockFont, 'n4' the desired size for the coordFont, 'n5' the desired size for the messageFont, 'n6' the smallLayout flag (0 or 1), and 'n7' the tinyLayout flag (0 or 1). All dimensions are in pixels. If the border between squares is eliminated (0 width), the various highlight options will not work, as there is nowhere to draw the highlight. If smallLayout is 1 and 'titleInWindow' is true, the window layout is rearranged to make more room for the title. If tinyLayout is 1, the labels on the menu bar are abbreviated to one character each and the buttons in the button bar are made narrower. -overrideLineGap n When n >= 0, this forces the width of the black border between squares to n pixels for any board size. Mostly used to suppress the grid entirely by setting n = 0, e.g. in xiangqi or just getting a prettier picture. When n < 0 this the size-dependent width of the grid lines is used. Default: -1. -coords/-xcoords or -showCoords true/false Sets the Show Coords menu option. *Note Options Menu::. Default: false. The 'coordFont' option specifies what font to use. -autoraise/-xautoraise or -autoRaiseBoard true/false Sets the Auto Raise Board menu option. *Note Options Menu::. Default: true. -autoflip/-xautoflip or -autoFlipView true/false Sets the Auto Flip View menu option. *Note Options Menu::. Default: true. -flip/-xflip or -flipView true/false If Auto Flip View is not set, or if you are observing but not participating in a game, then the positioning of the board at the start of each game depends on the flipView option. If flipView is false (the default), the board is positioned so that the white pawns move from the bottom to the top; if true, the black pawns move from the bottom to the top. In any case, the Flip menu option (see *note Options Menu::) can be used to flip the board after the game starts. -title/-xtitle or -titleInWindow true/false If this option is true, XBoard displays player names (for ICS games) and game file names (for 'Load Game') inside its main window. If the option is false (the default), this information is displayed only in the window banner. You probably won't want to set this option unless the information is not showing up in the banner, as happens with a few X window managers. -buttons/-xbuttons or -showButtonBar True/False If this option is False, xboard omits the [<<] [<] [P] [>] [>>] button bar from the window, allowing the message line to be wider. You can still get the functions of these buttons using the menus or their keyboard shortcuts. Default: true. -evalZoom factor The score interval (-1,1) is blown up on the vertical axis of the Evaluation Graph by the given factor. Default: 1 -evalThreshold n Score below n (centiPawn) are plotted as 0 in the Evaluation Graph. Default: 25 -mono/-xmono or -monoMode true/false Determines whether XBoard displays its pieces and squares with two colors (true) or four (false). You shouldn't have to specify 'monoMode'; XBoard will determine if it is necessary. -showTargetSquares true/false Determines whether XBoard can highlight the squares a piece has legal moves to, when you grab that piece with the mouse. Default: false. -flashCount count -flashRate rate -flash/-xflash These options enable flashing of pieces when they land on their destination square. 'flashCount' tells XBoard how many times to flash a piece after it lands on its destination square. 'flashRate' controls the rate of flashing (flashes/sec). Abbreviations: 'flash' sets flashCount to 3. 'xflash' sets flashCount to 0. Defaults: flashCount=0 (no flashing), flashRate=5. -highlight/-xhighlight or -highlightLastMove true/false Sets the Highlight Last Move menu option. *Note Options Menu::. Default: false. -highlightMoveWithArrow true/false Sets the Highlight with Arrow menu option. *Note Options Menu::. Default: false. -blind/-xblind or -blindfold true/false Sets the Blindfold menu option. *Note Options Menu::. Default: false. -periodic/-xperiodic or -periodicUpdates true/false Controls updating of current move andnode counts in analysis mode. Default: true. -fSAN -sSAN Causes the PV in thinking output of the mentioned engine to be converted to SAN before it is further processed. Warning: this might lose engine output not understood by the parser, and uses a lot of CPU power. Default: the PV is displayed exactly as the engine produced it. -showEvalInMoveHistory true/false Controls whether the evaluation scores and search depth of engine moves are displayed with the move in the move-history window. Default: true. -clockFont font The font used for the clocks. If the option value is a pattern that does not specify the font size, XBoard tries to choose an appropriate font for the board size being used. Default Xaw: -*-helvetica-bold-r-normal-*-*-*-*-*-*-*-*. Default GTK: Sans Bold %d. -coordFont font The font used for rank and file coordinate labels if 'showCoords' is true. If the option value is a pattern that does not specify the font size, XBoard tries to choose an appropriate font for the board size being used. Default Xaw: -*-helvetica-bold-r-normal-*-*-*-*-*-*-*-*. Default GTK: Sans Bold %d. -messageFont font The font used for popup dialogs, menus, etc. If the option value is a pattern that does not specify the font size, XBoard tries to choose an appropriate font for the board size being used. Default Xaw: -*-helvetica-medium-r-normal-*-*-*-*-*-*-*-*. Default GTK: Sans Bold %d -tagsFont font The font used in the Edit Tags dialog. If the option value contains %d, XBoard will replace it by an appropriate font for the board size being used. (Only used in GTK build.) Default: Sans Normal %d. -commentFont font The font used in the Edit Comment dialog. If the option value contains %d, XBoard will replace it by an appropriate font for the board size being used. (Only used in GTK build.) Default: Sans Normal %d. -icsFont font The font used to display ICS output in the ICS Chat window. As ICS output often contains tables aligned by spaces, a mono-space font is recommended here. If the option value contains %d, XBoard will replace it by an appropriate font for the board size being used. (Only used in GTK build.) Default: Monospace Normal %d. -moveHistoryFont font The font used in Move History and Engine Output windows. As these windows display mainly moves, one could use a figurine font here. If the option value contains %d, XBoard will replace it by an appropriate font for the board size being used. (Only used in GTK build.) Default: Sans Normal %d. -gameListFont font The font used in the listbox of the Game List window. If the option value contains %d, XBoard will replace it by an appropriate font for the board size being used. (Only used in GTK build.) Default: Sans Bold %d. -fontSizeTolerance tol In the font selection algorithm, a nonscalable font will be preferred over a scalable font if the nonscalable font's size differs by 'tol' pixels or less from the desired size. A value of -1 will force a scalable font to always be used if available; a value of 0 will use a nonscalable font only if it is exactly the right size; a large value (say 1000) will force a nonscalable font to always be used if available. Default: 4. -pid or -pieceImageDirectory dir This options control what piece images xboard uses. XBoard will look in the specified directory for an image in png or svg format for every piece type, with names like BlackQueen.svg, WhiteKnight.svg etc. When neither of these is found (or no valid directory is specified) XBoard will first ty to use an image White/BlackTile.svg in that same directory, and if that is not present either use the svg piece that was installed with it (from the source-tree directory 'svg'). Both svg and png images will be scaled by XBoard to the required size, but the png pieces lose much in quality when scaled too much. Default: "". -inscriptions utf8string The positions in the utf8string correspond to XBoard's piece types, and for each type a glyph can be defined. This glyph will then be rendered on top of the image for the piece. This is useful in combination with the White/BlackTile.svg images, which could be the image of a blank Shogi tile, for writing the kanji piece name on top of it on the fly. Default: "". -whitePieceColor color -blackPieceColor color -lightSquareColor color -darkSquareColor color -highlightSquareColor color -preoveHighlightColor color -lowTimeWarningColor color Colors to use for the pieces, squares, and square highlights. Defaults: -whitePieceColor #FFFFCC -blackPieceColor #202020 -lightSquareColor #C8C365 -darkSquareColor #77A26D -highlightSquareColor #FFFF00 -premoveHighlightColor #FF0000 -lowTimeWarningColor #FF0000 On a grayscale monitor you might prefer: -whitePieceColor gray100 -blackPieceColor gray0 -lightSquareColor gray80 -darkSquareColor gray60 -highlightSquareColor gray100 -premoveHighlightColor gray70 -lowTimeWarningColor gray70 The PieceColor options only work properly if the image files defining the pieces were pure black & white (possibly anti-aliased to produce gray scales and semi-transparancy), like the pieces images that come with the install. Their effect on colored pieces is undefined. The SquareColor option only have an effect when no board textures are used. -trueColors true/false When set, this option suppresses the effect of the PieceColor options mentioned above. This is recommended for images that are already colored. -useBoardTexture true/false -liteBackTextureFile filename -darkBackTextureFile filename Indicate the png image files to be used for drawing the board squares, and if they should be used rather than using simple colors. The algorithm for cutting squares out of a given bitmap is such that the picture is perfectly reproduced when a bitmap the size of the complete board is given. If the filename ends in "-NxM.png", with integer N and M, it is assumed to contain a bitmap of a complete board of N files and M ranks, and XBoard will scale it to exactly match the current square size. If N=M=0 it scales the entire bitmap to the size of the board, irrespective of the number of files and ranks of the latter. Without any -NxM suffix textures are only blown up by an integer factor when they are smaller than the square size, or, when the name starts with "xq", too small to cover the complete Xiangqi board. Default: false and "" -drag/-xdrag or -animateDragging true/false Sets the Animate Dragging menu option. *Note Options Menu::. Default: true. -animate/-xanimate or -animateMoving true/false Sets the Animate Moving menu option. *Note Options Menu::. Default: true. -animateSpeed n Number of milliseconds delay between each animation frame when Animate Moves is on. -autoDisplayComment true/false -autoDisplayTags true/false If set to true, these options cause the window with the move comments, and the window with PGN tags, respectively, to pop up automatically when such tags or comments are encountered during the replaying a stored or loaded game. Default: true. -pasteSelection true/false If this option is set to true, the Paste Position and Paste Game options paste from the currently selected text. If false, they paste from the clipboard. Default: false. -autoCopyPV true|false When this option is set, the position displayed on the board when you terminate a PV walk (initiated by a right-click on board or engine-output window) will be automatically put on the clipboard as FEN. Default: false. -dropMenu true|false This option allows you to emulate old behavior, where the right mouse button brings up the (now deprecated) drop menu rather than displaying the position at the end of the principal variation. Default: False. -pieceMenu true|false This option allows you to emulate old behavior, where the right mouse button brings up the (now deprecated) piece menu in Edit Position mode. From this menu you can select the piece to put on the square you clicked to bring up the menu, or select items such as 'clear board'. You can also 'promote' or 'demote' a clicked piece to convert it into an unorthodox piece that is not directly in the menu, or give the move to 'black' or 'white'. -variations true|false When this option is on, you can start new variations in Edit Game or Analyze mode by holding the Shift key down while entering a move. When it is off, the Shift key will be ignored. Default: False. -appendPV true|false When this option is on, a button 3 click left of a PV in the Engine Output window will play the first move of that PV in Analyze mode, or as many moves as you walk through it by moving the mouse. Default: False. -absoluteAnalysisScores true|false When true, scores on the Engine Output window during analysis will be printed from the white point-of-view, rather than the side-to-move point-of-view. Default: False. -scoreWhite true|false When true, scores will always be printed from the white point-of-view, rather than the side-to-move point-of-view. Default: False. -memoHeaders true|false When true, column headers will be displayed in the Engine Output window for the depth, score, time and nodes data. A button 3 click on these headers will hide or show the corresponding data. (Not intended for dynamic use, as already printed data of the current search will not be affected!) Defaul: False.  File: xboard.info, Node: Adjudication Options, Next: Install options, Prev: User interface options, Up: Options 4.7 Adjudication Options ======================== -adjudicateLossThreshold n If the given value is non-zero, XBoard adjudicates the game as a loss if both engines agree for a duration of 6 consecutive ply that the score is below the given score threshold for that engine. Make sure the score is interpreted properly by XBoard, using '-firstScoreAbs' and '-secondScoreAbs' if needed. Default: 0 (no adjudication) -adjudicateDrawMoves n If the given value is non-zero, XBoard adjudicates the game as a draw if after the given number of moves it was not yet decided. Default: 0 (no adjudication) -checkMates true/false If this option is set, XBoard detects all checkmates and stalemates, and ends the game as soon as they occur. Legality-testing must be switched on for this option to work. Default: true -testClaims true/false If this option is set, XBoard verifies all result claims made by engines, and those who send false claims will forfeit the game because of it. Legality-testing must be switched on for this option to work. Default: true -materialDraws true/false If this option is set, XBoard adjudicates games as draws when there is no sufficient material left to inflict a checkmate. This applies to KBKB with like bishops (any number, actually), and to KBK, KNK and KK. Legality-testing must be switched on for this option to work. Default: true -trivialDraws true/false If this option is set, XBoard adjudicates games as draws that cannot be usually won without opponent cooperation. This applies to KBKB with unlike bishops, and to KBKN, KNKN, KNNK, KRKR and KQKQ. The draw is called after 6 ply into these end-games, to allow quick mates that can occur in some exceptional positions to be found by the engines. KQKQ does not really belong in this category, and might be taken out in the future. (When bitbase-based adjudications are implemented.) Legality-testing must be on for this option to work. Default: false -ruleMoves n If the given value is non-zero, XBoard adjudicates the game as a draw after the given number of consecutive reversible moves. Engine draw claims are always accepted after 50 moves, irrespective of the given value of n. -repeatsToDraw n If the given value is non-zero, xboard adjudicates the game as a draw if a position is repeated the given number of times. Engines draw claims are always accepted after 3 repeats, (on the 3rd occurrence, actually), irrespective of the value of n. Beware that positions that have different castling or en-passant rights do not count as repeats, XBoard is fully e.p. and castling aware!  File: xboard.info, Node: Install options, Next: Other options, Prev: Adjudication Options, Up: Options 4.8 Install options =================== -show-config parameter When called with this option, XBoard will close immediately after printing the value of the indicated configuration parameter, or, when no parameter was given, after printing a list of all such parameters. Currently the only valid values for parameter are Datadir and Sysconfdir. This option can be used by install scripts for board themes to figure out where the currently active XBoard stores its data. -date timestamp -saveDate timestamp These options specify an epoch as an integer number. The 'saveDate' option is written by XBoard in the settings file every time the settings are saved, with the current time, so that later runs of XBoard can know this. The 'date' option can be included in settings files to indicate when lines following it were added to those files. Some options will be ignored if the epoch specified by the latest 'date' option predates the -saveDate setting (implying they must have been seen before). -autoInstall list When the list is set to a non-empty string, XBoard will scan the operating system's plugin directory for engines supporting UCI and XBoard protocol at startup. When it finds an engine that was installed after it last saved its settings, a line to launch that engine (as per specs in the plugin file) is appended to the -firstChessProgramNames list of installed engines. In the future it will be possible to use the autoInstall list to limit this automatic adding of engines based on the chess variant they play. -addMasterOption string Adds the mentioned string as an additional line of XBoard's master settings file, after adding a line with a 'date' option to timestamp it. Intended to add options of the 'install' type (see below) to the master file, which will then be processed by any XBoard that has not seen them since it last saved its settings. -autoClose The presence of this option cause XBoard to close immediately after processing all its options (from settings file and command line). Typically used from install scripts together with options that change XBoard's settings files, so that XBoard can be run in batch mode rather than interactively. -installEngine string Adds the given string as an additional line to the value of the 'firstChessProgramNames' option when the -saveDate setting preceeds the -date setting. Intended for adding to the master settings file with the aid of -addMasterOption in the install script of engines, as a method for broadcasting the presence of a new engine to all users, which would then see it automatically registered with XBoard. Made obsolete by the advent of the plugin standard (see the 'autoInstall' option), which broadcasts such presence in a non-XBoard-specific way by dropping *.eng files in a certain system directory. -installTheme string Adds the given string as an additional line to the value of the -themeNames option when the -saveDate setting preceeds the -date setting. Intended for adding to the master settings file with the aid of -addMasterOption in the install script of board graphics themes, as a method for broadcasting the availability of a new theme to all users, who would then see the theme appear automatically in the listbox in the View Board menu dialog next time they run XBoard.  File: xboard.info, Node: Other options, Prev: Install options, Up: Options 4.9 Other options ================= -ncp/-xncp or -noChessProgram true/false If this option is true, XBoard acts as a passive chessboard; it does not start a chess engine at all. Turning on this option also turns off clockMode. Default: false. -viewer -viewerOptions string Presence of the volatile option 'viewer' on the command line will cause the value of the persistent option 'viewerOptions' as stored in the settings file to be appended to the command line. The 'view' option will be used by desktop associations with game or position file types, so that 'viewerOptions' can be used to configure the exact mode XBoard will start in when it should act on such a file (e.g. in -ncp mode, or analyzing with your favorite engine). The options are also automatically appended when Board is invoked with a single argument not being an option name, which is then assumed to be the name of a 'loadGameFile' or (when the name ends in .fen) a 'loadPositionFile'. Default: "-ncp -engineOutputUp false -saveSettingsOnExit false". -tourneyOptions string When XBoard is invoked with a single argument that is a file with .trn extension, it will assume this argument to be the value of a 'tourneyFile' option, and append the value of the persistent option 'tourneyOptions' as stored in the settings file to the command line. Thus the value of 'tourneyOptions' can be used to configure XBoard to automatically start running a tournament when it should act on such a file. Default: "-ncp -mm -saveSettingsOnExit false". -mode or -initialMode modename If this option is given, XBoard selects the given modename from the Mode menu after starting and (if applicable) processing the loadGameFile or loadPositionFile option. Default: "" (no selection). Other supported values are MachineWhite, MachineBlack, TwoMachines, Analysis, AnalyzeFile, EditGame, EditPosition, and Training. -variant varname Activates (sometimes partial) support for playing chess variants against a local engine or editing variant games. This flag is not needed in ICS mode. Recognized variant names are: normal Normal chess wildcastle Shuffle chess, king can castle from d file nocastle Shuffle chess, no castling allowed fischerandom Fischer Random shuffle chess bughouse Bughouse, ICC/FICS rules crazyhouse Crazyhouse, ICC/FICS rules losers Lose all pieces or get mated (ICC wild 17) suicide Lose all pieces including king (FICS) giveaway Try to have no legal moves (ICC wild 26) twokings Weird ICC wild 9 kriegspiel Opponent's pieces are invisible atomic Capturing piece explodes (ICC wild 27) 3check Win by giving check 3 times (ICC wild 25) shatranj An ancient precursor of chess (ICC wild 28) xiangqi Chinese Chess (on a 9x10 board) shogi Japanese Chess (on a 9x9 board & piece drops) capablanca Capablanca Chess (10x8 board, with Archbishop and Chancellor pieces) gothic similar, with a better initial position caparandom An FRC-like version of Capablanca Chess (10x8) janus A game with two Archbishops (10x8 board) courier Medieval intermediate between shatranj and modern Chess (on 12x8 board) falcon Patented 10x8 variant with two Falcon pieces berolina Pawns capture straight ahead, and move diagonally cylinder Pieces wrap around the board edge knightmate King moves as Knight, and vice versa super Superchess (shuffle variant with 4 exo-pieces) makruk Thai Chess (shatranj-like, P promotes on 6th rank) asean ASEAN Chess (a modernized version of Makruk) spartan Spartan Chess (black has unorthodox pieces) great Great Shatranj, a 10x8 variant without sliders grand Grand Chess, on 10x10 with Capablanca pieces lion Mighty-Lion Chess, with a multi-capturing Lion elven Eleven Chess, with Lion and crowned sliders on 10x10 chu Chu Shogi, historic 12x12 variant with 2x46 pieces fairy A catchall variant in which all piece types known to XBoard can participate (8x8) unknown Catchall for other unknown variants In the shuffle variants, XBoard does shuffle the pieces, although you can still do it by hand using Edit Position. Some variants are supported only in ICS mode, including bughouse, and kriegspiel. Berolina and cylinder chess are only partially supported, and can only be played with legality testing off. Apart from these standard variants, engines can define variants of arbitrary names, briefing XBoard transparently on the rules for piece movement, board size and initial setup, so that they work nearly as well as fully-supported standard variants. (But obviously only while using that engine.) The user might have to alter the adjudication settings for some variants, however. E.g. it makes no sense to adjudicate a draw after 50 reversible moves in variants that have a 64-move rule, or no similar rule at all. Default: "normal". Except when the first engine gave an explicit list of variants it supports, and 'normal' is not amongst those. In that case the first variant the engine mentioned it did play will be chosen. -boardHeight N Allows you to set a non-standard number of board ranks in any variant. If the height is given as -1, the default height for the variant is used. Default: -1 -boardWidth N Allows you to set a non-standard number of board files in any variant. If the width is given as -1, the default width for the variant is used. With a non-standard width, the initial position will always be an empty board, as the usual opening array will not fit. Default: -1 -holdingsSize N Allows you to set a non-standard size for the holdings in any variant. If the size is given as -1, the default holdings size for the variant is used. The first N piece types will go into the holdings on capture, and you will be able to drop them on the board in stead of making a normal move. If size equals 0, there will be no holdings. Default: -1 -defaultFrcPosition N Specifies the number of the opening position in shuffle games like Chess960. A value of -1 means the position is randomly generated by XBoard at the beginning of every game. Default: -1 -pieceToCharTable string The characters that are used to represent the piece types XBoard knows in FEN diagrams and SAN moves. You should not have to use this option often: each variant has its own default setting for the piece representation in FEN, which should be sufficient in normal use. The string argument has to specify an even number of pieces (or it will be ignored), as white and black pieces have to be given separately (in that order). The last letter for each color will be the King. The letters before that will be PNBRQ and then a whole host of fairy pieces in an order that has not fully crystallized yet (currently FEACWMOHIJGDVLSU, F=Ferz, Elephant, A=Archbishop, C=Chancellor, W=Wazir, M=Commoner, O=Cannon, H=Nightrider). You should list at least all pieces that occur in the variant you are playing. If you have fewer characters in the string than XBoard has pieces, the pieces not mentioned will get assigned a period, and will not be usable in the variant. You can also explicitly assign pieces a period, in which case they will not be counted in deciding which captured pieces can go into the holdings. A tilde '~' as a piece name does mean this piece is used to represent a promoted Pawn in crazyhouse-like games, i.e. on capture it turns back to a Pawn. A '+' similarly indicates the piece is a shogi-style promoted piece, that should revert to its non-promoted version on capture (rather than to a Pawn). By default the second 11 pieces known to XBoard are the promoted forms of the first 11. A piece specified by the character combination ^ plus letter will be assumed to be the promoted form of the piece indicated by that letter, and get a '+' assigned. To get around the limitation of the alphabet, piece IDs can also be 'dressed letters', i.e. a single letter (upper case for white, lower case for black) followed by a single quote or an exclamation point. Default: "" (meaning the default for the variant is used). -pieceNickNames string The characters in the string are interpreted the same way as in the 'pieceToCharTable' option. But on input, piece-ID letters are first looked up in the nicknames, and only if not defined there, in the normal pieceToCharTable. This allows you to have two letters designate the same piece, (e.g. N as an alternative to H for Horse in Xiangqi), to make reading of non-compliant notations easier. Default: "" -colorNickNames string The side-to-move field in a FEN will be first matched against the letters in the string (first character for white, second for black), before it is matched to the regular 'w' and 'b'. This makes it easier to read non-compliant FENs, which, say, use 'r' for white. Default: "" -debug/-xdebug or -debugMode true/false Turns on debugging printout. -debugFile filename or -nameOfDebugFile filename Sets the name of the file to which XBoard saves debug information (including all communication to and from the engines). A '%d' in the given file name (e.g. game%d.debug) will be replaced by the unique sequence number of a tournament game, so that the debug output of each game will be written on a separate file. -engineDebugOutput number Specifies how XBoard should handle unsolicited output from the engine, with respect to saving it in the debug file. The output is further (hopefully) ignored. If number=0, XBoard refrains from writing such spurious output to the debug file. If number=1, all engine output is written faithfully to the debug file. If number=2, any protocol-violating line is prefixed with a '#' character, as the engine itself should have done if it wanted to submit info for inclusion in the debug file. This option is provided for the benefit of applications that use the debug file as a source of information, such as the broadcaster of live games TLCV / TLCS. Such applications can be protected from spurious engine output that might otherwise confuse them. -rsh or -remoteShell shell-name Name of the command used to run programs remotely. The default is 'rsh' or 'remsh', determined when XBoard is configured and compiled. -ruser or -remoteUser user-name User name on the remote system when running programs with the 'remoteShell'. The default is your local user name. -userName username Name under which the Human player will be listed in the PGN file. Default is the login name on your local computer. -delayBeforeQuit number -delayAfterQuit number These options order pauses before and after sending the "quit" command to an engine that must be terminated. The pause between quit and the previous command is specified in milliseconds. The pause after quit is used to schedule a kill signal to be sent to the engine process after the number of specified seconds plus one. This signal is a different one as the terminiation signal described in the protocol specs which engines can suppress or ignore, and which is sent directly after the "quit" command. Setting 'delayAfterQuit' to -1 will suppress sending of the kill signal. Default: 0 -searchMode n The integer n encodes the mode for the 'find position' function. Default: 1 (= Exact position match) -eloThresholdBoth elo -eloThresholdAny elo Defines a lower limit for the Elo rating, which has to be surpassed before a game will be considered when searching for a board position. Default: 0 -dateThreshold year Only games not played before the given year will be considered when searching for a board position  File: xboard.info, Node: Chess Servers, Next: Firewalls, Prev: Options, Up: Top 5 Chess Servers *************** An "Internet Chess Server", or "ICS", is a place on the Internet where people can get together to play chess, watch other people's games, or just chat. You can use either 'telnet' or a client program like XBoard to connect to the server. There are thousands of registered users on the different ICS hosts, and it is not unusual to meet 200 on both chessclub.com and freechess.org. Most people can just type 'xboard -ics' to start XBoard as an ICS client. Invoking XBoard in this way connects you to the Internet Chess Club (ICC), a commercial ICS. You can log in there as a guest even if you do not have a paid account. To connect to the largest Free ICS (FICS), use the command 'xboard -ics -icshost freechess.org' instead, or substitute a different host name to connect to your favorite ICS. For a full description of command-line options that control the connection to ICS and change the default values of ICS options, see *note ICS options::. While you are running XBoard as an ICS client, you use the terminal window that you started XBoard from as a place to type in commands and read information that is not available on the chessboard. The first time you need to use the terminal is to enter your login name and password, if you are a registered player. (You don't need to do this manually; the 'icsLogon' option can do it for you. *note ICS options::.) If you are not registered, enter 'g' as your name, and the server will pick a unique guest name for you. Some useful ICS commands include 'help ' to get help on the given . To get a list of possible topics type "help" without topic. Try the help command before you ask other people on the server for help. For example 'help register' tells you how to become a registered ICS player. 'who ' to see a list of people who are logged on. Administrators (people you should talk to if you have a problem) are marked with the character '*', an asterisk. The allow you to display only selected players: For example, 'who of' shows a list of players who are interested in playing but do not have an opponent. 'games' to see what games are being played 'match [] []' to challenge another player to a game. Both opponents get minutes for the game, and seconds will be added after each move. If another player challenges you, the server asks if you want to accept the challenge; use the 'accept' or 'decline' commands to answer. 'accept' 'decline' to accept or decline another player's offer. The offer may be to start a new game, or to agree to a 'draw', 'adjourn' or 'abort' the current game. *Note Action Menu::. If you have more than one pending offer (for example, if more than one player is challenging you, or if your opponent offers both a draw and to adjourn the game), you have to supply additional information, by typing something like 'accept ', 'accept draw', or 'draw'. 'draw' 'adjourn' 'abort' asks your opponent to terminate a game by mutual agreement. Adjourned games can be continued later. Your opponent can either 'decline' your offer or accept it (by typing the same command or typing 'accept'). In some cases these commands work immediately, without asking your opponent to agree. For example, you can abort the game unilaterally if your opponent is out of time, and you can claim a draw by repetition or the 50-move rule if available simply by typing 'draw'. 'finger ' to get information about the given . (Default: yourself.) 'vars' to get a list of personal settings 'set ' to modify these settings 'observe ' to observe an ongoing game of the given . 'examine' 'oldmoves' to review a recently completed game Some special XBoard features are activated when you are in examine mode on ICS. See the descriptions of the menu commands 'Forward', 'Backward', 'Pause', 'ICS Client', and 'Stop Examining' on the *note Edit Menu::, *note Mode Menu::, and *note Action Menu::.  File: xboard.info, Node: Firewalls, Next: Environment, Prev: Chess Servers, Up: Top 6 Firewalls *********** By default, XBoard communicates with an Internet Chess Server by opening a TCP socket directly from the machine it is running on to the ICS. If there is a firewall between your machine and the ICS, this won't work. Here are some recipes for getting around common kinds of firewalls using special options to XBoard. Important: See the paragraph in the below about extra echoes, in *note Limitations::. Suppose that you can't telnet directly to ICS, but you can telnet to a firewall host, log in, and then telnet from there to ICS. Let's say the firewall is called 'firewall.example.com'. Set command-line options as follows: xboard -ics -icshost firewall.example.com -icsport 23 Then when you run XBoard in ICS mode, you will be prompted to log in to the firewall host. This works because port 23 is the standard telnet login service. Do so, then telnet to ICS, using a command like 'telnet chessclub.com 5000', or whatever command the firewall provides for telnetting to port 5000. If your firewall lets you telnet (or rlogin) to remote hosts but doesn't let you telnet to port 5000, you may be able to connect to the chess server on port 23 instead, which is the port the telnet program uses by default. Some chess servers support this (including chessclub.com and freechess.org), while some do not. If your chess server does not allow connections on port 23 and your firewall does not allow you to connect to other ports, you may be able to connect by hopping through another host outside the firewall that you have an account on. For instance, suppose you have a shell account at 'foo.edu'. Follow the recipe above, but instead of typing 'telnet chessclub.com 5000' to the firewall, type 'telnet foo.edu' (or 'rlogin foo.edu'), log in there, and then type 'telnet chessclub.com 5000'. Suppose that you can't telnet directly to ICS, but you can use rsh to run programs on a firewall host, and that host can telnet to ICS. Let's say the firewall is called 'rsh.example.com'. Set command-line options as follows: xboard -ics -gateway rsh.example.com -icshost chessclub.com Then when you run XBoard in ICS mode, it will connect to the ICS by using 'rsh' to run the command 'telnet chessclub.com 5000' on host 'rsh.example.com'. Suppose that you can telnet anywhere you want, but you have to run a special program called 'ptelnet' to do so. First, we'll consider the easy case, in which 'ptelnet chessclub.com 5000' gets you to the chess server. In this case set command line options as follows: xboard -ics -telnet -telnetProgram ptelnet Then when you run XBoard in ICS mode, it will issue the command 'ptelnet chessclub.com 5000' to connect to the ICS. Next, suppose that 'ptelnet chessclub.com 5000' doesn't work; that is, your 'ptelnet' program doesn't let you connect to alternative ports. As noted above, your chess server may allow you to connect on port 23 instead. In that case, just add the option '-icsport ""' to the above command. But if your chess server doesn't let you connect on port 23, you will have to find some other host outside the firewall and hop through it. For instance, suppose you have a shell account at 'foo.edu'. Set command line options as follows: xboard -ics -telnet -telnetProgram ptelnet -icshost foo.edu -icsport "" Then when you run XBoard in ICS mode, it will issue the command 'ptelnet foo.edu' to connect to your account at 'foo.edu'. Log in there, then type 'telnet chessclub.com 5000'. ICC timestamp and FICS timeseal do not work through some firewalls. You can use them only if your firewall gives a clean TCP connection with a full 8-bit wide path. If your firewall allows you to get out only by running a special telnet program, you can't use timestamp or timeseal across it. But if you have access to a computer just outside your firewall, and you have much lower netlag when talking to that computer than to the ICS, it might be worthwhile running timestamp there. Follow the instructions above for hopping through a host outside the firewall (foo.edu in the example), but run timestamp or timeseal on that host instead of telnet. Suppose that you have a SOCKS firewall that will give you a clean 8-bit wide TCP connection to the chess server, but only after you authenticate yourself via the SOCKS protocol. In that case, you could make a socksified version of XBoard and run that. If you are using timestamp or timeseal, you will to socksify it, not XBoard; this may be difficult seeing that ICC and FICS do not provide source code for these programs. Socksification is beyond the scope of this document, but see the SOCKS Web site at http://www.socks.permeo.com/. If you are missing SOCKS, try http://www.funbureau.com/.  File: xboard.info, Node: Environment, Next: Limitations, Prev: Firewalls, Up: Top 7 Environment variables *********************** Game and position files are found in a directory named by the 'CHESSDIR' environment variable. If this variable is not set, the current working directory is used. If 'CHESSDIR' is set, XBoard actually changes its working directory to '$CHESSDIR', so any files written by the chess engine will be placed there too.  File: xboard.info, Node: Limitations, Next: Problems, Prev: Environment, Up: Top 8 Limitations and known bugs **************************** There is no way for two people running copies of XBoard to play each other without going through an Internet Chess Server. Under some circumstances, your ICS password may be echoed when you log on. If you are connecting to the ICS by running telnet on an Internet provider or firewall host, you may find that each line you type is echoed back an extra time after you hit . If your Internet provider is a Unix system, you can probably turn its echo off by typing 'stty -echo' after you log in, and/or typing <^E> (Ctrl+E followed by the Enter key) to the telnet program after you have logged into ICS. It is a good idea to do this if you can, because the extra echo can occasionally confuse XBoard's parsing routines. The game parser recognizes only algebraic notation. Many of the following points used to be limitations in XBoard 4.2.7 and earlier, but are now fixed: The internal move legality tester in XBoard 4.3.xx does look at the game history, and is fully aware of castling or en-passant-capture rights. It permits castling with the king on the d file because this is possible in some "wild 1" games on ICS. The piece-drop menu does not check piece drops in bughouse to see if you actually hold the piece you are trying to drop. But this way of dropping pieces should be considered an obsolete feature, now that pieces can be dropped by dragging them from the holdings to the board. Anyway, if you would attempt an illegal move when using a chess engine or the ICS, XBoard will accept the error message that comes back, undo the move, and let you try another. FEN positions saved by XBoard do include correct information about whether castling or en passant are legal, and also handle the 50-move counter. The mate detector does not understand that non-contact mate is not really mate in bughouse. The only problem this causes while playing is minor: a "#" (mate indicator) character will show up after a non-contact mating move in the move list. XBoard will not assume the game is over at that point, not even when the option Detect Mates is on. Edit Game mode always uses the rules of the selected variant, which can be a variant that uses piece drops. You can load and edit games that contain piece drops. The (obsolete) piece menus are not active, but you can perform piece drops by dragging pieces from the holdings. Fischer Random castling is fully understood. You can enter castlings by dragging the King on top of your Rook. You can probably also play Fischer Random successfully on ICS by typing castling moves into the ICS Interaction window. The menus may not work if your keyboard is in Caps Lock or Num Lock mode. This seems to be a problem with the Athena menu widget, not an XBoard bug. Also see the ToDo file included with the distribution for many other possible bugs, limitations, and ideas for improvement that have been suggested.  File: xboard.info, Node: Problems, Next: Contributors, Prev: Limitations, Up: Top 9 Reporting problems ******************** You can report bugs and problems with XBoard using the bug tracker at 'https://savannah.gnu.org/projects/xboard/' or by sending mail to ''. It can also be useful to report or discuss bugs in the WinBoard Forum at 'http://www.open-aurec.com/wbforum/', WinBoard development section. Please use the 'script' program to start a typescript, run XBoard with the '-debug' option, and include the typescript output in your message. Also tell us what kind of machine and what operating system version you are using. The command 'uname -a' will often tell you this. If you improve XBoard, please send a message about your changes, and we will get in touch with you about merging them in to the main line of development.  File: xboard.info, Node: Contributors, Next: CMail, Prev: Problems, Up: Top 10 Authors and contributors *************************** Chris Sears and Dan Sears wrote the original XBoard. They were responsible for versions 1.0 through 1.2. The color scheme was taken from Wayne Christopher's 'XChess' program. Tim Mann was primarily responsible for XBoard versions 1.3 through 4.2.7, and for WinBoard (a port of XBoard to Microsoft Win32) from its inception through version 4.2.7. John Chanak contributed the initial implementation of ICS mode. Evan Welsh wrote 'CMail', and Patrick Surry helped in designing, testing, and documenting it. Elmar Bartel contributed the new piece bitmaps introduced in version 3.2. Jochen Wiedmann converted the documentation to texinfo. Frank McIngvale added click/click moving, the Analysis modes, piece flashing, ZIICS import, and ICS text colorization to XBoard. Hugh Fisher added animated piece movement to XBoard, and Henrik Gram added it to WinBoard. Mark Williams contributed the initial (WinBoard-only) implementation of many new features added to both XBoard and WinBoard in version 4.1.0, including copy/paste, premove, icsAlarm, autoFlipView, training mode, auto raise, and blindfold. Ben Nye contributed X copy/paste code for XBoard. In a fork from version 4.2.7, Alessandro Scotti added many elements to the user interface of WinBoard, including the board textures and font-based rendering, the evaluation-graph, move-history and engine-output window. He was also responsible for adding the UCI support. H. G. Muller continued this fork of the project, producing version 4.3. He made WinBoard castling- and e.p.-aware, added variant support with adjustable board sizes, the crazyhouse holdings, and the fairy pieces. In addition he added most of the adjudication options, made WinBoard more robust in dealing with buggy and crashing engines, and extended time control with a time-odds and node-count-based modes. Most of the options that initially were WinBoard only have now been back-ported to XBoard. Michel van den Bergh provided the code for reading Polyglot opening books. Meanwhile, some work continued on the GNU XBoard project maintained at savannah.gnu.org, but version 4.2.8 was never released. Daniel Mehrmann was responsible for much of this work. Most recently, Arun Persaud worked with H. G. Muller to merge all the features of the never-released XBoard/WinBoard 4.2.8 of the GNU XBoard project and the never-released 4.3.16 from H. G.'s fork into a unified XBoard/WinBoard 4.4, which is now available both from the savannah.gnu.org web site and the WinBoard forum.  File: xboard.info, Node: CMail, Next: Other programs, Prev: Contributors, Up: Top 11 CMail ******** The 'cmail' program can help you play chess by email with opponents of your choice using XBoard as an interface. You will usually run 'cmail' without giving any options. * Menu: * CMail options:: Invoking CMail. * CMail game:: Starting a CMail game. * CMail answer:: Answering a move. * CMail multi:: Multiple games in one message. * CMail completion:: Completing a game. * CMail trouble:: Known CMail problems.  File: xboard.info, Node: CMail options, Next: CMail game, Up: CMail 11.1 CMail options ================== -h Displays 'cmail' usage information. -c Shows the conditions of the GNU General Public License. *Note Copying::. -w Shows the warranty notice of the GNU General Public License. *Note Copying::. -v -xv Provides or inhibits verbose output from 'cmail' and XBoard, useful for debugging. The '-xv' form also inhibits the cmail introduction message. -mail -xmail Invokes or inhibits the sending of a mail message containing the move. -xboard -xxboard Invokes or inhibits the running of XBoard on the game file. -reuse -xreuse Invokes or inhibits the reuse of an existing XBoard to display the current game. -remail Resends the last mail message for that game. This inhibits running XBoard. -game The name of the game to be processed. -wgames -bgames -games Number of games to start as White, as Black or in total. Default is 1 as white and none as black. If only one color is specified then none of the other color is assumed. If no color is specified then equal numbers of White and Black games are started, with the extra game being as White if an odd number of total games is specified. -me -opp A one-word alias for yourself or your opponent. -wname -bname -myname -oppname The full name of White, Black, yourself or your opponent. -wna -bna -na -oppna The email address of White, Black, yourself or your opponent. -dir The directory in which 'cmail' keeps its files. This defaults to the environment variable '$CMAIL_DIR' or failing that, '$CHESSDIR', '$HOME/Chess' or '~/Chess'. It will be created if it does not exist. -arcdir The directory in which 'cmail' archives completed games. Defaults to the environment variable '$CMAIL_ARCDIR' or, in its absence, the same directory as cmail keeps its working files (above). -mailprog The program used by cmail to send email messages. This defaults to the environment variable '$CMAIL_MAILPROG' or failing that '/usr/ucb/Mail', '/usr/ucb/mail' or 'Mail'. You will need to set this variable if none of the above paths fit your system. -logFile A file in which to dump verbose debugging messages that are invoked with the '-v' option. -event The PGN Event tag (default 'Email correspondence game'). -site The PGN Site tag (default 'NET'). -round The PGN Round tag (default '-', not applicable). -mode The PGN Mode tag (default 'EM', Electronic Mail). Other options Any option flags not listed above are passed through to XBoard. Invoking XBoard through CMail changes the default values of two XBoard options: The default value for '-noChessProgram' is changed to true; that is, by default no chess engine is started. The default value for '-timeDelay' is changed to 0; that is, by default XBoard immediately goes to the end of the game as played so far, rather than stepping through the moves one by one. You can still set these options to whatever values you prefer by supplying them on CMail's command line. *Note Options::.  File: xboard.info, Node: CMail game, Next: CMail answer, Prev: CMail options, Up: CMail 11.2 Starting a CMail Game ========================== Type 'cmail' from a shell to start a game as white. After an opening message, you will be prompted for a game name, which is optional--if you simply press , the game name will take the form 'you-VS-opponent'. You will next be prompted for the short name of your opponent. If you haven't played this person before, you will also be prompted for his/her email address. 'cmail' will then invoke XBoard in the background. Make your first move and select 'Mail Move' from the 'File' menu. *Note File Menu::. If all is well, 'cmail' will mail a copy of the move to your opponent. If you select 'Exit' without having selected 'Mail Move' then no move will be made.  File: xboard.info, Node: CMail answer, Next: CMail multi, Prev: CMail game, Up: CMail 11.3 Answering a Move ===================== When you receive a message from an opponent containing a move in one of your games, simply pipe the message through 'cmail'. In some mailers this is as simple as typing '| cmail' when viewing the message, while in others you may have to save the message to a file and do 'cmail < file' at the command line. In either case 'cmail' will display the game using XBoard. If you didn't exit XBoard when you made your first move then 'cmail' will do its best to use the existing XBoard instead of starting a new one. As before, simply make a move and select 'Mail Move' from the 'File' menu. *Note File Menu::. 'cmail' will try to use the XBoard that was most recently used to display the current game. This means that many games can be in progress simultaneously, each with its own active XBoard. If you want to look at the history or explore a variation, go ahead, but you must return to the current position before XBoard will allow you to mail a move. If you edit the game's history you must select 'Reload Same Game' from the 'File' menu to get back to the original position, then make the move you want and select 'Mail Move'. As before, if you decide you aren't ready to make a move just yet you can either select 'Exit' without sending a move or just leave XBoard running until you are ready.  File: xboard.info, Node: CMail multi, Next: CMail completion, Prev: CMail answer, Up: CMail 11.4 Multi-Game Messages ======================== It is possible to have a 'cmail' message carry more than one game. This feature was implemented to handle IECG (International Email Chess Group) matches, where a match consists of one game as white and one as black, with moves transmitted simultaneously. In case there are more general uses, 'cmail' itself places no limit on the number of black/white games contained in a message; however, XBoard does.  File: xboard.info, Node: CMail completion, Next: CMail trouble, Prev: CMail multi, Up: CMail 11.5 Completing a Game ====================== Because XBoard can detect checkmate and stalemate, 'cmail' handles game termination sensibly. As well as resignation, the 'Action' menu allows draws to be offered and accepted for 'cmail' games. For multi-game messages, only unfinished and just-finished games will be included in email messages. When all the games are finished, they are archived in the user's archive directory, and similarly in the opponent's when he or she pipes the final message through 'cmail'. The archive file name includes the date the game was started.  File: xboard.info, Node: CMail trouble, Prev: CMail completion, Up: CMail 11.6 Known CMail Problems ========================= It's possible that a strange conjunction of conditions may occasionally mean that 'cmail' has trouble reactivating an existing XBoard. If this should happen, simply trying it again should work. If not, remove the file that stores the XBoard's PID ('game.pid') or use the '-xreuse' option to force 'cmail' to start a new XBoard. Versions of 'cmail' after 2.16 no longer understand the old file format that XBoard used to use and so cannot be used to correspond with anyone using an older version. Versions of 'cmail' older than 2.11 do not handle multi-game messages, so multi-game correspondence is not possible with opponents using an older version.  File: xboard.info, Node: Other programs, Next: Copyright, Prev: CMail, Up: Top 12 Other programs you can use with XBoard ***************************************** Here are some other programs you can use with XBoard * Menu: * GNU Chess:: The GNU Chess engine. * Fairy-Max:: The Fairy-Max chess engine. * HoiChess:: The HoiChess chess engine. * Crafty:: The Crafty chess engine.  File: xboard.info, Node: GNU Chess, Next: Fairy-Max, Up: Other programs 12.1 GNU Chess ============== The GNU Chess engine is available from: ftp://ftp.gnu.org/gnu/gnuchess/ You can use XBoard to play a game against GNU Chess, or to interface GNU Chess to an ICS.  File: xboard.info, Node: Fairy-Max, Next: HoiChess, Prev: GNU Chess, Up: Other programs 12.2 Fairy-Max ============== Fairy-Max is a derivative from the once World's smallest Chess program micro-Max, which measures only about 100 lines of source code. The main difference with micro-Max is that Fairy-Max loads its move-generator tables from a file, so that the rules for piece movement can be easily configured to implement unorthodox pieces. Fairy-Max can therefore play a large number of variants, normal Chess being one of those. In addition it plays Knightmate, Capablanca and Gothic Chess, Shatranj, Courier Chess, Cylinder chess, Berolina Chess, while the user can easily define new variants. It can be obtained from: http://home.hccnet.nl/h.g.muller/dwnldpage.html  File: xboard.info, Node: HoiChess, Next: Crafty, Prev: Fairy-Max, Up: Other programs 12.3 HoiChess ============= HoiChess is a not-so-very-strong Chess engine, which comes with a derivative HoiXiangqi, able to play Chinese Chess. It can be obtained from the standard Linux repositories through: sudo apt-get install hoichess  File: xboard.info, Node: Crafty, Prev: HoiChess, Up: Other programs 12.4 Crafty =========== Crafty is a chess engine written by Bob Hyatt. You can use XBoard to play a game against Crafty, hook Crafty up to an ICS, or use Crafty to interactively analyze games and positions for you. Crafty is a strong, rapidly evolving chess program. This rapid pace of development is good, because it means Crafty is always getting better. This can sometimes cause problems with backwards compatibility, but usually the latest version of Crafty will work well with the latest version of XBoard. Crafty can be obtained from its author's FTP site: ftp://ftp.cis.uab.edu/hyatt/. To use Crafty with XBoard, give the -fcp and -fd options as follows, where is the directory in which you installed Crafty and placed its book and other support files.  File: xboard.info, Node: Copyright, Next: Copying, Prev: Other programs, Up: Top Copyright ********* Copyright (C) 1991 Digital Equipment Corporation, Maynard, Massachusetts. All Rights Reserved. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. Digital disclaims all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall Digital be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software. Enhancements copyright (C) 1992-2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. Published by the Free Software Foundation 59 Temple Place - Suite 330 Boston, MA 02111-1307 USA Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the section entitled "GNU General Public License," is included exactly as in the original, and provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that the section entitled "GNU General Public License," and this permission notice, may be included in translations approved by the Free Software Foundation instead of in the original English.  File: xboard.info, Node: Copying, Next: Index, Prev: Copyright, Up: Top GNU GENERAL PUBLIC LICENSE ************************** Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble ======== The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS ==================== 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a. The work must carry prominent notices stating that you modified it, and giving a relevant date. b. The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c. You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d. If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a. Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b. Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c. Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d. Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e. Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a. Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b. Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c. Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d. Limiting the use for publicity purposes of names of licensors or authors of the material; or e. Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f. Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS =========================== How to Apply These Terms to Your New Programs ============================================= If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. Copyright (C) YEAR NAME OF AUTHOR 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: PROGRAM Copyright (C) YEAR NAME OF AUTHOR This program comes with ABSOLUTELY NO WARRANTY; for details type 'show w'. This is free software, and you are welcome to redistribute it under certain conditions; type 'show c' for details. The hypothetical commands 'show w' and 'show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read .  File: xboard.info, Node: Index, Prev: Copying, Up: Top Index ***** [index] * Menu: * -animateSpeed, option: User interface options. (line 320) * -autoDisplayComment, option: User interface options. (line 324) * -autoDisplayTags, option: User interface options. (line 324) * -pasteSelection, option: User interface options. (line 329) * .icsrc: ICS options. (line 92) * <, Button: Edit Menu. (line 157) * <<, Button: Edit Menu. (line 190) * >, Button: Edit Menu. (line 177) * >>, Button: Edit Menu. (line 209) * abort, ICS command: Chess Servers. (line 69) * Abort, Menu Item: Action Menu. (line 30) * About XBoard, Menu Item: Help Menu. (line 19) * Absolute Analysis Scores, Menu Item: Options Menu. (line 18) * absoluteAnalysisScores, option: User interface options. (line 361) * accept, ICS command: Chess Servers. (line 57) * Accept, Menu Item: Action Menu. (line 7) * Action, Menu: Action Menu. (line 6) * adapterCommand, option: UCI + WB Engine Settings. (line 22) * Add engine, Menu Item: Engine Menu. (line 94) * addMasterOption, option: Install options. (line 34) * adjourn, ICS command: Chess Servers. (line 69) * Adjourn, Menu Item: Action Menu. (line 26) * Adjudicate Draw, Menu Item: Action Menu. (line 53) * Adjudicate to Black, Menu Item: Action Menu. (line 53) * Adjudicate to White, Menu Item: Action Menu. (line 53) * Adjudicate Trivial Draws, Menu Item: Options Menu. (line 255) * adjudicateDrawMoves, option: Adjudication Options. (line 14) * adjudicateLossThreshold, option: Adjudication Options. (line 7) * Adjudications, Menu Item: Options Menu. (line 237) * afterGame, option: Tournament options. (line 63) * afterTourney, option: Tournament options. (line 63) * Alarm Time, Menu Item: Options Menu. (line 389) * Alarm, Menu Item: Options Menu. (line 389) * alarm, option: ICS options. (line 165) * Almost Always Queen, Menu Item: Options Menu. (line 21) * alwaysPromoteToQueen, option: User interface options. (line 62) * Analysis Mode, Menu Item: Mode Menu. (line 16) * analysisBell, option: User interface options. (line 52) * Analyze Game, Menu Item: Mode Menu. (line 59) * Animate Dragging, Menu Item: Options Menu. (line 34) * Animate Moving, Menu Item: Options Menu. (line 40) * animate, option: User interface options. (line 317) * animateDragging, option: User interface options. (line 314) * animateMoving, option: User interface options. (line 317) * Animation Speed, Menu Item: Options Menu. (line 190) * Annotate, Menu Item: Edit Menu. (line 134) * appendPV, option: User interface options. (line 356) * at sign, option: Load and Save options. (line 98) * Authors: Contributors. (line 6) * Auto Flag, Menu Item: Options Menu. (line 48) * Auto Flip View, Menu Item: Options Menu. (line 56) * Auto Raise Board, Menu Item: Options Menu. (line 321) * Auto Save, Menu Item: Options Menu. (line 325) * Auto-Comment, Menu Item: Options Menu. (line 303) * Auto-Display Comment, Menu Item: Options Menu. (line 583) * Auto-Display Tags, Menu Item: Options Menu. (line 580) * Auto-InputBox PopUp, Menu Item: Options Menu. (line 365) * Auto-Kibitz, Menu Item: Options Menu. (line 295) * Auto-Observe, Menu Item: Options Menu. (line 310) * Auto-Play speed, Menu Item: Options Menu. (line 586) * Auto-Refresh Seek Graph, Menu Item: Options Menu. (line 361) * Auto-Save Games, Menu Item: Options Menu. (line 660) * autobs, option: ICS options. (line 114) * autoCallFlag, option: ICS options. (line 111) * autoClose, option: Install options. (line 40) * autocomm, option: ICS options. (line 108) * autoComment, option: ICS options. (line 108) * autoCopyPV, option: User interface options. (line 333) * autoflag, option: ICS options. (line 111) * autoflip, option: User interface options. (line 115) * autoFlipView, option: User interface options. (line 115) * autoInstall, option: Install options. (line 25) * autoKibitz, option: ICS options. (line 117) * autoLogo, option: User interface options. (line 22) * autoObserve, option: ICS options. (line 114) * autoraise, option: User interface options. (line 112) * autoRaiseBoard, option: User interface options. (line 112) * autoRefresh, option: ICS options. (line 132) * autosave, option: Load and Save options. (line 41) * autoSaveGames, option: Load and Save options. (line 41) * Back to Start, Menu Item: Edit Menu. (line 190) * Background Observe while Playing, Menu Item: Options Menu. (line 331) * backgroundObserve, option: ICS options. (line 137) * Backward, Menu Item: Edit Menu. (line 157) * Basic operation: Basic operation. (line 6) * bell, option: User interface options. (line 48) * blackPieceColor, option: User interface options. (line 265) * blind, option: User interface options. (line 169) * Blindfold, Menu Item: Options Menu. (line 68) * blindfold, option: User interface options. (line 169) * board size: User interface options. (line 71) * Board Themes, Menu Item: View Menu. (line 231) * Board, Menu Item: View Menu. (line 167) * boardHeight, option: Other options. (line 104) * boardSize, option: User interface options. (line 71) * boardWidth, option: Other options. (line 108) * Book Depth, Menu Item: Engine Menu. (line 175) * Book Variety, Menu Item: Engine Menu. (line 175) * Book, Menu Item: Engine Menu. (line 195) * bookDepth, option: UCI + WB Engine Settings. (line 59) * bookVariation, option: UCI + WB Engine Settings. (line 62) * Bug reports: Problems. (line 6) * Bugs: Limitations. (line 6) * Bugs <1>: Problems. (line 6) * buttons, option: User interface options. (line 134) * Call Flag, Menu Item: Action Menu. (line 17) * Chat partner, Menu Item: View Menu. (line 122) * Chats: View Menu. (line 102) * checkMates, option: Adjudication Options. (line 18) * Chess engine options: Chess engine options. (line 6) * CHESSDIR: Environment. (line 6) * classical, Menu Item: Options Menu. (line 203) * clock, option: Chess engine options. (line 20) * clockFont, option: User interface options. (line 186) * clockMode, option: Chess engine options. (line 20) * CloneTourney, Menu Item: Options Menu. (line 558) * cmail: CMail. (line 6) * colorChallenge, option: ICS options. (line 202) * colorChannel, option: ICS options. (line 202) * colorChannel1, option: ICS options. (line 202) * colorCShout, option: ICS options. (line 202) * Colorize Messages, Menu Item: Options Menu. (line 398) * colorize, option: ICS options. (line 187) * colorizeMessages, option: ICS options. (line 187) * colorKibitz, option: ICS options. (line 202) * colorNickNames, option: Other options. (line 164) * colorNormal, option: ICS options. (line 202) * colorRequest, option: ICS options. (line 202) * Colors: ICS options. (line 187) * Colors <1>: ICS options. (line 202) * Colors <2>: User interface options. (line 265) * colorSeek, option: ICS options. (line 202) * colorShout, option: ICS options. (line 202) * colorSShout, option: ICS options. (line 202) * colorTell, option: ICS options. (line 202) * commentFont, option: User interface options. (line 210) * Comments, Menu Item: View Menu. (line 80) * Common Settings, Menu Item: Engine Menu. (line 132) * Consecutive positions, Menu Item: Options Menu. (line 620) * Continue Later, Menu Item: Options Menu. (line 565) * Contributors: Contributors. (line 6) * coordFont, option: User interface options. (line 192) * coords, option: User interface options. (line 109) * Copy Game List, Menu Item: Edit Menu. (line 24) * Copy Game, Menu Item: Edit Menu. (line 7) * Copy Position, Menu Item: Edit Menu. (line 15) * cy, option: Tournament options. (line 30) * darkBackTextureFile, option: User interface options. (line 299) * darkSquareColor, option: User interface options. (line 265) * Date limit, Menu item: Options Menu. (line 613) * date, option: Install options. (line 16) * dateThreshold, option: Other options. (line 221) * debug, option: Other options. (line 170) * debugFile, option: Other options. (line 172) * debugMode, option: Other options. (line 170) * decline, ICS command: Chess Servers. (line 57) * Decline, Menu Item: Action Menu. (line 12) * defaultCacheSizeEGTB, option: UCI + WB Engine Settings. (line 89) * defaultFrcPosition, option: Other options. (line 121) * defaultHashSize, option: UCI + WB Engine Settings. (line 84) * defaultMatchGames, option: Tournament options. (line 7) * defaultPathEGTB, option: UCI + WB Engine Settings. (line 94) * defaultTourneyName, option: Tournament options. (line 44) * delayAfterQuit, option: Other options. (line 202) * delayBeforeQuit, option: Other options. (line 202) * Detect all Mates, Menu Item: Options Menu. (line 241) * Disable own engine books by default, Menu Item: Options Menu. (line 537) * discourageOwnBooks, option: UCI + WB Engine Settings. (line 54) * disguisePromotedPieces, option: ICS options. (line 158) * Divide entered times by 60, Menu Item: Options Menu. (line 213) * drag, option: User interface options. (line 314) * Draw after N Moves Total, Menu Item: Options Menu. (line 270) * Draw if Insufficient Mating Material, Menu Item: Options Menu. (line 249) * Draw pieces with their own colors, Menu Item: View Menu. (line 218) * draw, ICS command: Chess Servers. (line 69) * Draw, Menu Item: Action Menu. (line 22) * Drop Menu, Menu Item: Options Menu. (line 73) * dropMenu, option: User interface options. (line 338) * Dual Board for Background-Observed Game, Menu Item: Options Menu. (line 337) * dualBoard, option: ICS options. (line 150) * Edit Book, Menu Item: Edit Menu. (line 121) * Edit Comment, Menu Item: Edit Menu. (line 116) * Edit Engine List, Menu Item: Engine Menu. (line 7) * Edit Game, Menu Item: Edit Menu. (line 36) * Edit ICS menu, Menu Item: View Menu. (line 154) * Edit Menu: Edit Menu. (line 6) * Edit Position, Menu Item: Edit Menu. (line 51) * Edit Tags, Menu Item: Edit Menu. (line 93) * Edit Theme List: View Menu. (line 163) * EGTB Cache Size, Menu Item: Engine Menu. (line 161) * EGTB Path, Menu Item: Engine Menu. (line 153) * egtFormats, option: UCI + WB Engine Settings. (line 97) * Elo limits, Menu Item: Options Menu. (line 610) * eloThresholdAny, option: Other options. (line 217) * eloThresholdBoth, option: Other options. (line 217) * Enable Variation Trees, Menu Item: Options Menu. (line 78) * End Chat, Menu Item: View Menu. (line 132) * Engine #N Settings, Menu Item: Engine Menu. (line 115) * Engine Command, Menu Item: Engine Menu. (line 51) * Engine Directory, Menu Item: Engine Menu. (line 60) * Engine Has Own Book: Engine Menu. (line 186) * Engine Menu: Engine Menu. (line 6) * Engine Settings: UCI + WB Engine Settings. (line 6) * engineDebugOutput, option: Other options. (line 178) * Environment variables: Environment. (line 6) * epd, option: Chess engine options. (line 111) * evalThreshold, option: User interface options. (line 142) * evalZoom, option: User interface options. (line 139) * examine, ICS command: Chess Servers. (line 87) * Exit, Menu Item: File Menu. (line 133) * exit, option: User interface options. (line 56) * fb, option: Chess engine options. (line 139) * fcp, option: Chess engine options. (line 126) * fd, option: Chess engine options. (line 152) * fe, option: Chess engine options. (line 132) * fh, option: Chess engine options. (line 145) * File Menu: File Menu. (line 6) * File with Start Positions, Menu Item: Options Menu. (line 522) * Final number of pieces, Menu Item: Options Menu. (line 616) * find position, Menu Item: Options Menu. (line 625) * finger, ICS command: Chess Servers. (line 78) * First Black Move, Menu Item: Options Menu. (line 375) * First White Move, Menu Item: Options Menu. (line 375) * firstChessProgram, option: Chess engine options. (line 126) * firstChessProgramNames, option: UCI + WB Engine Settings. (line 109) * firstComputerString, option: Chess engine options. (line 185) * firstDirectory, option: Chess engine options. (line 152) * firstEngine, option: Chess engine options. (line 132) * firstHasOwnBookUCI, option: UCI + WB Engine Settings. (line 49) * firstHost, option: Chess engine options. (line 145) * firstInitString, option: Chess engine options. (line 160) * firstIsUCI, option: UCI + WB Engine Settings. (line 8) * firstLogo, option: User interface options. (line 18) * firstNeedsNoncompliantFEN, option: Chess engine options. (line 229) * firstNPS, option: Chess engine options. (line 44) * firstOptions, option: Chess engine options. (line 219) * firstPgnName, option: UCI + WB Engine Settings. (line 79) * firstPlaysBlack, option: Chess engine options. (line 139) * firstProtocolVersion, option: Chess engine options. (line 200) * firstScoreAbs, option: Chess engine options. (line 207) * firstTimeOdds, option: Chess engine options. (line 61) * firstXBook, option: UCI + WB Engine Settings. (line 49) * Fischer castling, menu item: File Menu. (line 24) * fischerCastling, option: Chess engine options. (line 247) * fixed max, Menu Item: Options Menu. (line 210) * Flash Moves, Menu Item: Options Menu. (line 186) * Flash Rate, Menu Item: Options Menu. (line 186) * flash, option: User interface options. (line 155) * flashCount, option: User interface options. (line 155) * flashRate, option: User interface options. (line 155) * Flip Pieces Shogi Style, Menu Item: View Menu. (line 185) * Flip View, Menu Item: View Menu. (line 7) * flip, option: User interface options. (line 118) * flipView, option: User interface options. (line 118) * fn, option: UCI + WB Engine Settings. (line 79) * fNoOwnBookUCI, option: UCI + WB Engine Settings. (line 49) * Font, clock: User interface options. (line 186) * Font, comment: User interface options. (line 210) * Font, coordinates: User interface options. (line 192) * Font, gameList: User interface options. (line 227) * Font, ics: User interface options. (line 215) * Font, message: User interface options. (line 199) * Font, moveHistory: User interface options. (line 221) * Font, tags: User interface options. (line 205) * Fonts, Menu Item: View Menu. (line 250) * fontSizeTolerance, option: User interface options. (line 232) * Force variant with engine, Menu Item: Engine Menu. (line 107) * Forward to End, Menu Item: Edit Menu. (line 209) * Forward, Menu Item: Edit Menu. (line 177) * fSAN, option: User interface options. (line 176) * fUCCI, option: UCI + WB Engine Settings. (line 17) * fUCI, option: UCI + WB Engine Settings. (line 8) * fUSI, option: UCI + WB Engine Settings. (line 17) * Game File with Opening Lines, Menu Item: Options Menu. (line 522) * Game List Tags, Menu Item: View Menu. (line 256) * Game List Tags, Menu Item <1>: Options Menu. (line 699) * Game Number, Menu Item: Options Menu. (line 522) * Game-Viewer options, Menu Item: Options Menu. (line 596) * gameListFont, option: User interface options. (line 227) * gameListTags, option: Load and Save options. (line 90) * games, ICS command: Chess Servers. (line 48) * gateway, option: ICS options. (line 44) * General Options, Menu Item: Options Menu. (line 15) * Get Move List, Menu Item: Options Menu. (line 341) * getMoveList, option: ICS options. (line 162) * Hash-Table Size: Engine Menu. (line 146) * Headers in Engine Output Window, Menu Item: Options Menu. (line 84) * Help Menu: Help Menu. (line 6) * help, ICS command: Chess Servers. (line 35) * Hide Thinking, Menu Item: Options Menu. (line 90) * Hide, Menu Item: View Menu. (line 137) * highlight Arrow, option: User interface options. (line 166) * Highlight Color, Menu Item: View Menu. (line 175) * Highlight Last Move, Menu Item: Options Menu. (line 99) * Highlight with Arrow, Menu Item: Options Menu. (line 104) * highlight, option: User interface options. (line 163) * highlightLastMove, option: User interface options. (line 163) * highlightMoveWithArrow, option: User interface options. (line 166) * highlightSquareColor, option: User interface options. (line 265) * Hint, Menu Item: Engine Menu. (line 193) * holdingsSize, option: Other options. (line 114) * ICS: Chess Servers. (line 6) * ICS Chat/Console, Menu Item: View Menu. (line 90) * ICS Client, Menu Item: Mode Menu. (line 94) * ICS Input Box, Menu Item: View Menu. (line 84) * ICS options: ICS options. (line 6) * ICS Options, Menu Item: Options Menu. (line 292) * ICS text menu, Menu Item: View Menu. (line 142) * ICS, addresses: Chess Servers. (line 6) * ics, option: ICS options. (line 7) * icsAlarm, option: ICS options. (line 165) * icsAlarmTime, option: ICS options. (line 168) * icscomm, option: ICS options. (line 51) * icsFont, option: User interface options. (line 215) * icshelper, option: ICS options. (line 22) * icshost, option: ICS options. (line 11) * icsinput, option: ICS options. (line 105) * icslogon, option: ICS options. (line 92) * icsMenu, option: Options Menu. (line 403) * icsport, option: ICS options. (line 19) * inc, option: Chess engine options. (line 14) * Include Number Tag in tourney PGN, Menu Item: Options Menu. (line 681) * Increment or max, Menu Item: Options Menu. (line 223) * incremental, Menu Item: Options Menu. (line 207) * Info XBoard, Menu Item: Help Menu. (line 7) * init, option: Load and Save options. (line 98) * initalMode, option: Other options. (line 33) * Initial time, Menu Item: Options Menu. (line 219) * initString, option: Chess engine options. (line 160) * inscriptions, option: User interface options. (line 251) * installEngine, option: Install options. (line 46) * installTheme, option: Install options. (line 57) * Internet Chess Server: Chess Servers. (line 6) * internetChessServerCommPort, option: ICS options. (line 51) * internetChessServerHelper, option: ICS options. (line 22) * internetChessServerHost, option: ICS options. (line 11) * internetChessServerInputBox, option: ICS options. (line 105) * internetChessServerLogonScript, option: ICS options. (line 92) * internetChessServerMode, option: ICS options. (line 7) * internetChessServerPort, option: ICS options. (line 19) * introduction: Top. (line 6) * Keys: Keys. (line 6) * legal, option: User interface options. (line 68) * lgf, option: Load and Save options. (line 8) * lgi, option: Load and Save options. (line 8) * lightSquareColor, option: User interface options. (line 265) * Limitations: Limitations. (line 6) * Line Gap, Menu Item: View Menu. (line 199) * liteBackTextureFile, option: User interface options. (line 299) * Load and Save options: Load and Save options. (line 6) * Load Game Options, Menu Item: Options Menu. (line 577) * Load Game, Menu Item: File Menu. (line 51) * Load New Engine, Menu Item: Engine Menu. (line 26) * Load Next Game, Menu Item: Keys. (line 9) * Load Next Position, Menu Item: File Menu. (line 90) * Load Position, Menu Item: File Menu. (line 82) * Load Previous Game, Menu Item: Keys. (line 12) * Load Previous Position, Menu Item: File Menu. (line 93) * loadGameFile, option: Load and Save options. (line 8) * loadGameIndex, option: Load and Save options. (line 8) * loadPositionFile, option: Load and Save options. (line 47) * loadPositionIndex, option: Load and Save options. (line 47) * Logo Size, Menu Item: View Menu. (line 193) * logoDir, option: User interface options. (line 22) * logoSize, option: User interface options. (line 12) * lowTimeWarning, option: ICS options. (line 171) * lowTimeWarningColor, option: User interface options. (line 265) * lpf, option: Load and Save options. (line 47) * lpi, option: Load and Save options. (line 47) * Machine Black, Menu Item: Mode Menu. (line 10) * Machine match, Menu Item: Mode Menu. (line 117) * Machine White, Menu Item: Mode Menu. (line 7) * Mail Move, Menu Item: File Menu. (line 131) * Major modes: Major modes. (line 6) * Man XBoard, Menu Item: Help Menu. (line 13) * Match left-right flipped position, Menu Item: Options Menu. (line 647) * Match reversed colors, Menu Item: Options Menu. (line 647) * matchGames, option: Chess engine options. (line 92) * matchMode, option: Chess engine options. (line 103) * matchPause, option: Tournament options. (line 11) * materialDraws, option: Adjudication Options. (line 28) * Max. Number of CPUs, Menu Item: Engine Menu. (line 139) * mcBookMode, option: UCI + WB Engine Settings. (line 65) * memoHeaders, option: User interface options. (line 369) * Menu, Action: Action Menu. (line 6) * Menu, Edit: Edit Menu. (line 6) * Menu, Engine: Engine Menu. (line 6) * Menu, File: File Menu. (line 6) * Menu, Help: Help Menu. (line 6) * Menu, Mode: Mode Menu. (line 6) * Menu, Options: Options Menu. (line 6) * Menu, View: View Menu. (line 6) * Menus: Menus. (line 6) * messageFont, option: User interface options. (line 199) * mg, option: Chess engine options. (line 92) * mm, option: Chess engine options. (line 103) * Mode Menu: Mode Menu. (line 6) * mode, option: Other options. (line 33) * Mono Mode, Menu Item: View Menu. (line 190) * mono, option: User interface options. (line 145) * monoMode, option: User interface options. (line 145) * monoMouse, option: User interface options. (line 44) * move exclusion: Mode Menu. (line 16) * Move Now, Menu Item: Engine Menu. (line 204) * moveHistoryFont, option: User interface options. (line 221) * Moves per session, Menu Item: Options Menu. (line 217) * moves, option: ICS options. (line 162) * movesound, option: User interface options. (line 48) * movesPerSession, option: Chess engine options. (line 11) * mps, option: Chess engine options. (line 11) * msLoginDelay, option: ICS options. (line 100) * Mute sounds, Menu Item: Options Menu. (line 9) * N-fold Repeats, Menu Item: Options Menu. (line 266) * N-Move Rule, Menu Item: Options Menu. (line 262) * nameOfDebugFile, option: Other options. (line 172) * narrow, Menu Item: Options Menu. (line 641) * ncp, option: Other options. (line 7) * Negate Score of Engine, Menu Item: Options Menu. (line 281) * New Chat, Menu Item: View Menu. (line 116) * New Game, Menu Item: File Menu. (line 7) * New Shuffle Game, Menu Item: File Menu. (line 15) * New variant, Menu Item: File Menu. (line 37) * niceEngines, option: Chess engine options. (line 212) * Nickname, Menu Item: Engine Menu. (line 44) * noChessProgram, option: Other options. (line 7) * noGUI, option: User interface options. (line 7) * null move: Mode Menu. (line 16) * Number of Games in Match, Menu Item: Options Menu. (line 498) * Number of tourney cycles, Menu Item: Options Menu. (line 498) * observe, ICS command: Chess Servers. (line 84) * Old Save Style, Menu Item: Options Menu. (line 678) * oldmoves, ICS command: Chess Servers. (line 87) * oldsave, option: Load and Save options. (line 87) * oldSaveStyle, option: Load and Save options. (line 87) * One-Click Moving, Menu Item: Options Menu. (line 108) * oneClickMove, option: User interface options. (line 38) * onlyOwnGames, option: Load and Save options. (line 44) * Opening-Book Filename, Menu Item: Engine Menu. (line 166) * Options: Options. (line 6) * Options <1>: Options. (line 6) * Options Menu: Options Menu. (line 5) * Options, adjudication: Adjudication Options. (line 6) * options, Chess engine: Chess engine options. (line 6) * Options, ICS: ICS options. (line 6) * Options, install: Install options. (line 6) * Options, Load and Save: Load and Save options. (line 6) * Options, miscellaneous: Other options. (line 6) * Options, Tournament: Tournament options. (line 6) * Options, User interface: User interface options. (line 6) * Other programs: Other programs. (line 6) * overrideLineGap, option: User interface options. (line 103) * Own Games Only, Menu Item: Options Menu. (line 665) * pairingEngine, option: Tournament options. (line 51) * participants, option: Tournament options. (line 33) * Paste Game, Menu Item: Edit Menu. (line 29) * Paste Position, Menu Item: Edit Menu. (line 32) * Pause between Match Games, Menu Item: Options Menu. (line 508) * Pause, Menu Item: Mode Menu. (line 122) * Periodic Updates, Menu Item: Options Menu. (line 119) * periodic, option: User interface options. (line 172) * periodicUpdates, option: User interface options. (line 172) * PGN Event Header, Menu Item: Options Menu. (line 675) * pgnEventHeader, option: Load and Save options. (line 77) * pgnExtendedInfo, option: Load and Save options. (line 68) * pgnNumberTag, option: Load and Save options. (line 80) * pgnTimeLeft, option: Load and Save options. (line 72) * pick fixed, Menu Item: File Menu. (line 29) * pid, option: User interface options. (line 240) * Piece Color, Menu Item: View Menu. (line 175) * Piece-Image Directory, Menu Item: View Menu. (line 223) * pieceImageDirectory, option: User interface options. (line 240) * pieceMenu, option: User interface options. (line 343) * pieceNickNames, option: Other options. (line 156) * pieceToCharTable, option: Other options. (line 125) * Play Move(s) of Clicked PV, Menu Item: Options Menu. (line 124) * polyglotBook, option: UCI + WB Engine Settings. (line 41) * polyglotDir, option: UCI + WB Engine Settings. (line 36) * Ponder Next Move, Menu Item: Options Menu. (line 134) * ponder, option: Chess engine options. (line 85) * ponderNextMove, option: Chess engine options. (line 85) * Popup Exit Message, Menu Item: Options Menu. (line 139) * Popup Move Errors, Menu Item: Options Menu. (line 144) * popup, option: User interface options. (line 59) * popupExitMessage, option: User interface options. (line 56) * popupMoveErrors, option: User interface options. (line 59) * Position Number, Menu Item: Options Menu. (line 522) * positionDir, option: Load and Save options. (line 65) * pre, option: ICS options. (line 174) * preblack, option: ICS options. (line 180) * Premove for Black, Menu Item: Options Menu. (line 375) * Premove for White, Menu Item: Options Menu. (line 375) * Premove, Menu Item: Options Menu. (line 375) * premove, option: ICS options. (line 174) * premoveBlack, option: ICS options. (line 180) * premoveBlackText, option: ICS options. (line 180) * premoveHighlightColor, option: User interface options. (line 265) * premoveWhite, option: ICS options. (line 180) * premoveWhiteText, option: ICS options. (line 180) * prewhite, option: ICS options. (line 180) * Problems: Problems. (line 6) * queen, option: User interface options. (line 62) * Quiet Play, Menu Item: Options Menu. (line 352) * quiet, option: ICS options. (line 184) * quietPlay, option: ICS options. (line 184) * Quit After Game, Menu Item: Options Menu. (line 368) * randomize, Menu Item: File Menu. (line 29) * recentEngineList, option: User interface options. (line 29) * recentEngines, option: User interface options. (line 29) * Recently Used Engines, In Menu: Engine Menu. (line 215) * Reload CMail Message, Menu Item: File Menu. (line 131) * Reload Same Game, Menu Item: Keys. (line 16) * Reload Same Position, Menu Item: Keys. (line 20) * remoteShell, option: Other options. (line 191) * remoteUser, option: Other options. (line 195) * Replace Engine, Menu Item: Options Menu. (line 544) * Reporting bugs: Problems. (line 6) * Reporting problems: Problems. (line 6) * Resign, Menu Item: Action Menu. (line 35) * results, option: Tournament options. (line 39) * Retract Move, Menu Item: Engine Menu. (line 208) * reuse, option: Chess engine options. (line 192) * reuse2, option: Chess engine options. (line 192) * reuseFirst, option: Chess engine options. (line 192) * reuseSecond, option: Chess engine options. (line 192) * Revert, Menu Item: Edit Menu. (line 134) * Rewind Index after, Menu Item: Options Menu. (line 522) * ringBellAfterMoves, option: User interface options. (line 48) * rsh, option: Other options. (line 191) * ruleMoves, option: Adjudication Options. (line 44) * ruser, option: Other options. (line 195) * sameColorGames, option: Chess engine options. (line 106) * Save Final Position on File, Menu Item: Options Menu. (line 672) * Save Game Options, Menu Item: Options Menu. (line 656) * Save Game, Menu Item: File Menu. (line 97) * Save Games as Book, Menu Item: File Menu. (line 119) * Save Games on File, Menu Item: Options Menu. (line 668) * Save Out-of-Book Info in PGN, Menu Item: Options Menu. (line 693) * Save Position, Menu Item: File Menu. (line 108) * Save Score/Depth in PGN, Menu Item: Options Menu. (line 686) * Save Selected Games: File Menu. (line 116) * Save Settings Now, Menu Item: Options Menu. (line 727) * Save Settings on Exit, Menu Item: Options Menu. (line 761) * Save Tourney Games, Menu Item: Options Menu. (line 515) * saveDate, option: Install options. (line 16) * saveGameFile, option: Load and Save options. (line 37) * saveOutOfBookInfo, option: Load and Save options. (line 83) * savePositionFile, option: Load and Save options. (line 61) * saveSettingsFile, option: Load and Save options. (line 98) * saveSettingsOnExit, option: Load and Save options. (line 117) * Scores in Move List, Menu Item: Options Menu. (line 152) * scoreWhite, option: User interface options. (line 365) * scp, option: Chess engine options. (line 126) * sd, option: Chess engine options. (line 36) * sd, option <1>: Chess engine options. (line 152) * se, option: Chess engine options. (line 132) * Search mode, Menu Item: Options Menu. (line 625) * searchDepth, option: Chess engine options. (line 36) * searchMode, option: Other options. (line 213) * searchTime, option: Chess engine options. (line 30) * secondChessProgram, option: Chess engine options. (line 126) * secondComputerString, option: Chess engine options. (line 185) * secondDirectory, option: Chess engine options. (line 152) * secondEngine, option: Chess engine options. (line 132) * secondHasOwnBookUCI, option: UCI + WB Engine Settings. (line 49) * secondHost, option: Chess engine options. (line 145) * secondInitString, option: Chess engine options. (line 160) * secondIsUCI, option: UCI + WB Engine Settings. (line 8) * secondLogo, option: User interface options. (line 18) * secondNeedsNoncompliantFEN, option: Chess engine options. (line 229) * secondNPS, option: Chess engine options. (line 44) * secondOptions, option: Chess engine options. (line 219) * secondPgnName, option: UCI + WB Engine Settings. (line 79) * secondProtocolVersion, option: Chess engine options. (line 200) * secondScoreAbs, option: Chess engine options. (line 207) * secondTimeOdds, option: Chess engine options. (line 61) * secondXBook, option: UCI + WB Engine Settings. (line 49) * seedBase, option: Tournament options. (line 74) * Seek Graph, Menu Item: Options Menu. (line 357) * seekGraph, option: ICS options. (line 124) * Select engine, Menu Item: Engine Menu. (line 32) * Select Engine, Menu Item: Options Menu. (line 475) * set, ICS command: Chess Servers. (line 82) * Settings, Engine: UCI + WB Engine Settings. (line 6) * SettingsFile, option: Load and Save options. (line 98) * sg, option: ICS options. (line 124) * sgf, option: Load and Save options. (line 37) * sh, option: Chess engine options. (line 145) * Shortcut keys: Keys. (line 6) * Show Coords, Menu Item: Options Menu. (line 155) * Show Engine Output, Menu Item: View Menu. (line 11) * Show Evaluation Graph, Menu Item: View Menu. (line 45) * Show Game List, Menu Item: View Menu. (line 56) * Show Last Move, Shortcut Key: Keys. (line 7) * Show Move History, Menu Item: View Menu. (line 40) * Show Target Squares, Menu Item: Options Menu. (line 158) * show-config, option: Install options. (line 7) * showButtonBar, option: User interface options. (line 134) * showCoords, option: User interface options. (line 109) * showEvalInMoveHistory, option: User interface options. (line 182) * showMoveTime, option: Chess engine options. (line 26) * showTargetSquares, option: User interface options. (line 149) * showThinking, option: Chess engine options. (line 76) * shuffle, Menu Item: File Menu. (line 20) * shuffleOpenings, option: Chess engine options. (line 242) * size, option: User interface options. (line 71) * sn, option: UCI + WB Engine Settings. (line 79) * sNoOwnBookUCI, option: UCI + WB Engine Settings. (line 49) * Sound Options, Menu Item: Options Menu. (line 705) * Sound Program, Menu Item: Options Menu. (line 710) * soundChallenge, option: ICS options. (line 235) * soundChannel, option: ICS options. (line 235) * soundChannel1, option: ICS options. (line 235) * soundCShout, option: ICS options. (line 235) * soundDirectory, option: ICS options. (line 223) * soundIcsAlarm, option: ICS options. (line 246) * soundIcsDraw, option: ICS options. (line 254) * soundIcsLoss, option: ICS options. (line 251) * soundIcsUnfinished, option: ICS options. (line 257) * soundIcsWin, option: ICS options. (line 248) * soundKibitz, option: ICS options. (line 235) * soundMove, option: ICS options. (line 240) * soundProgram, option: ICS options. (line 215) * soundRequest, option: ICS options. (line 235) * soundRoar, option: ICS options. (line 243) * Sounds: ICS options. (line 215) * Sounds <1>: ICS options. (line 223) * Sounds Directory, Menu Item: Options Menu. (line 714) * soundSeek, option: ICS options. (line 235) * soundShout, option: ICS options. (line 235) * soundSShout, option: ICS options. (line 235) * soundTell, option: ICS options. (line 235) * spf, option: Load and Save options. (line 61) * Square Color, Menu Item: View Menu. (line 175) * sSAN, option: User interface options. (line 176) * st, option: Chess engine options. (line 30) * Start-position number, Menu Item: File Menu. (line 29) * Sticky Windows, Menu Item: Options Menu. (line 166) * Stop Examining, Menu Item: Action Menu. (line 42) * Stop Observing, Menu Item: Action Menu. (line 38) * sUCCI, option: UCI + WB Engine Settings. (line 17) * sUCI, option: UCI + WB Engine Settings. (line 8) * sUSI, option: UCI + WB Engine Settings. (line 17) * sweepPromotion, option: User interface options. (line 65) * Sync after cycle, Menu Item: Options Menu. (line 467) * Sync after round, Menu Item: Options Menu. (line 467) * syncAfterCycle, option: Tournament options. (line 70) * syncAfterRound, option: Tournament options. (line 70) * Tags, Menu Item: View Menu. (line 76) * tagsFont, option: User interface options. (line 205) * tc, option: Chess engine options. (line 7) * td, option: Load and Save options. (line 32) * telnet, option: ICS options. (line 29) * telnetProgram, option: ICS options. (line 37) * Test Legality, Menu Item: Options Menu. (line 170) * testClaims, option: Adjudication Options. (line 23) * testLegality, option: User interface options. (line 68) * Texture Files, Menu Item: View Menu. (line 208) * tf, option: Tournament options. (line 18) * Theme name, Menu Item: View Menu. (line 231) * thinking, option: Chess engine options. (line 76) * Thresholds for game selection, Menu Item: Options Menu. (line 605) * Time Control, Menu Item: Options Menu. (line 200) * Time-Odds factors, Menu Item: Options Menu. (line 228) * timeControl, option: Chess engine options. (line 7) * timeDelay, option: Load and Save options. (line 32) * timeIncrement, option: Chess engine options. (line 14) * timeOddsMode, option: Chess engine options. (line 66) * title, option: User interface options. (line 127) * titleInWindow, option: User interface options. (line 127) * Top-Level Dialogs, Menu Item: Options Menu. (line 181) * Tournament file, Menu item: Options Menu. (line 448) * Tournament Options: Tournament options. (line 6) * Tournament Options, Menu Item: Options Menu. (line 444) * Tourney participants, Menu Item: Options Menu. (line 475) * Tourney type, Menu Item: Options Menu. (line 485) * tourneyCycles, option: Tournament options. (line 30) * tourneyFile, option: Tournament options. (line 18) * tourneyOptions, option: Other options. (line 25) * tourneyType, option: Tournament options. (line 25) * Training, Menu Item: Mode Menu. (line 85) * trivialDraws, option: Adjudication Options. (line 34) * trueColors, option: User interface options. (line 293) * Truncate Game, Menu Item: Edit Menu. (line 152) * Try-Out Sound, Menu Item: Options Menu. (line 721) * tt, option: Tournament options. (line 25) * Two Machines, Menu Item: Mode Menu. (line 13) * UCI, Menu Item: Engine Menu. (line 67) * Upgrade Engine, Menu Item: Options Menu. (line 544) * Upload to Examine, Menu Item: Action Menu. (line 46) * Use Board Texture, Menu Item: View Menu. (line 208) * Use GUI book, Menu Item: Engine Menu. (line 89) * Use GUI Book, Menu Item: Engine Menu. (line 166) * useBoardTexture, option: User interface options. (line 299) * usePolyglotBook, option: UCI + WB Engine Settings. (line 39) * User interface options: User interface options. (line 6) * User WAV File, Menu Item: Options Menu. (line 717) * userName, option: Other options. (line 198) * useTelnet, option: ICS options. (line 29) * USI/UCCI, Menu Item: Engine Menu. (line 73) * uxiAdapter, option: UCI + WB Engine Settings. (line 31) * variant, option: Other options. (line 40) * variations, option: User interface options. (line 351) * vars, ICS command: Chess Servers. (line 80) * Verify Engine Result Claims, Menu Item: Options Menu. (line 245) * View Menu: View Menu. (line 6) * viewer, option: Other options. (line 12) * viewerOptions, option: Other options. (line 12) * WB protocol v1, Menu Item: Engine Menu. (line 80) * whitePieceColor, option: User interface options. (line 265) * who, ICS command: Chess Servers. (line 42) * Win / Loss Threshold, Menu Item: Options Menu. (line 275) * xflash, option: User interface options. (line 155) * Zoom factor in Evaluation Graph, Menu Item: Options Menu. (line 193)  Tag Table: Node: Top206 Node: Major modes1434 Node: Basic operation3278 Node: Menus7940 Node: File Menu8572 Node: Edit Menu15950 Node: View Menu27849 Node: Mode Menu42551 Node: Action Menu50299 Node: Engine Menu52790 Node: Options Menu65235 Node: Help Menu105672 Node: Keys106533 Node: Options108269 Node: Chess engine options109853 Node: UCI + WB Engine Settings123775 Node: Tournament options130368 Node: ICS options134510 Node: Load and Save options147508 Node: User interface options154096 Node: Adjudication Options173532 Node: Install options176434 Node: Other options180089 Node: Chess Servers192960 Node: Firewalls197264 Node: Environment202136 Node: Limitations202591 Node: Problems205649 Node: Contributors206523 Node: CMail209197 Node: CMail options209745 Node: CMail game213241 Node: CMail answer214065 Node: CMail multi215511 Node: CMail completion216068 Node: CMail trouble216753 Node: Other programs217548 Node: GNU Chess217969 Node: Fairy-Max218249 Node: HoiChess219039 Node: Crafty219378 Node: Copyright220247 Node: Copying222479 Node: Index259996  End Tag Table xboard-4.9.1/xboard.png0000644000175000001440000000327612717001265011717 00000000000000PNG  IHDR00 1 bKGD̿ pHYs&s&slu IDATXõilTU3wN;RXQiE+5FhTPQܢF&*p!*` H@YTD-AH5BKfLg36Ν>w\&"QT'Z9ONUmbPM+yҽB"5N]q${m D率ҦQT\CMU/uۓb4?e )b뫍Y!R>~O U,Cg=__czaOT6w! 9K+K"#a~{\@,r )a r }fڙw*NkvA\#g"/73FLZ'@3#@e8(>J;4VI\|"%, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; darwin*) case $cc_basename in xlc*) wl='-Wl,' ;; esac ;; mingw* | cygwin* | pw32* | os2*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; newsos6) ;; linux* | k*bsd*-gnu) case $cc_basename in icc* | ecc*) wl='-Wl,' ;; pgcc | pgf77 | pgf90) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) wl='-Wl,' ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no case "$host_os" in cygwin* | mingw* | pw32*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' case "$host_os" in aix3* | aix4* | aix5*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # Samuel A. Falvo II reports # that the semantics of dynamic libraries on AmigaOS, at least up # to version 4, is to share data among multiple programs linked # with the same dynamic library. Since this doesn't match the # behavior of shared libraries on other platforms, we cannot use # them. ld_shlibs=no ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | k*bsd*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix4* | aix5*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix5*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && \ strings "$collect2name" | grep resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes # see comment about different semantics on the GNU ld section ld_shlibs=no ;; bsdi[45]*) ;; cygwin* | mingw* | pw32*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if test "$GCC" = yes ; then : else case $cc_basename in xlc*) ;; *) ld_shlibs=no ;; esac fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd1*) ld_shlibs=no ;; freebsd2.2*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; freebsd2*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; hpux10*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no ;; *) hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix4* | aix5*) library_names_spec='$libname$shrext' ;; amigaos*) library_names_spec='$libname.a' ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd1*) ;; freebsd* | dragonfly*) case "$host_os" in freebsd[123]*) library_names_spec='$libname$shrext$versuffix' ;; *) library_names_spec='$libname$shrext' ;; esac ;; gnu*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; nto-qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <. % % As a special exception, when this file is read by TeX when processing % a Texinfo source document, you may use the result without % restriction. This Exception is an additional permission under section 7 % of the GNU General Public License, version 3 ("GPLv3"). % % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: % http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or % http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or % http://www.gnu.org/software/texinfo/ (the Texinfo home page) % The texinfo.tex in any given distribution could well be out % of date, so if that's what you're using, please check. % % Send bug reports to bug-texinfo@gnu.org. Please include including a % complete document in each bug report with which we can reproduce the % problem. Patches are, of course, greatly appreciated. % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For a simple % manual foo.texi, however, you can get away with this: % tex foo.texi % texindex foo.?? % tex foo.texi % tex foo.texi % dvips foo.dvi -o # or whatever; this makes foo.ps. % The extra TeX runs get the cross-reference information correct. % Sometimes one run after texindex suffices, and sometimes you need more % than two; texi2dvi does it as many times as necessary. % % It is possible to adapt texinfo.tex for other languages, to some % extent. You can get the existing language-specific files from the % full Texinfo distribution. % % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. \message{Loading texinfo [version \texinfoversion]:} % If in a .fmt file, print the version number % and turn on active characters that we couldn't do earlier because % they might have appeared in the input file name. \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. % For @tex, we can use \tabalign. \let\+ = \relax % Save some plain tex macros whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet \let\ptexc=\c \let\ptexcomma=\, \let\ptexdot=\. \let\ptexdots=\dots \let\ptexend=\end \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexfootnote=\footnote \let\ptexgtr=> \let\ptexhat=^ \let\ptexi=\i \let\ptexindent=\indent \let\ptexinsert=\insert \let\ptexlbrace=\{ \let\ptexless=< \let\ptexnewwrite\newwrite \let\ptexnoindent=\noindent \let\ptexplus=+ \let\ptexraggedright=\raggedright \let\ptexrbrace=\} \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t \let\ptextop=\top {\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode % If this character appears in an error message or help string, it % starts a new line in the output. \newlinechar = `^^J % Use TeX 3.0's \inputlineno to get the line number, for better error % messages, but if we're using an old version of TeX, don't do anything. % \ifx\inputlineno\thisisundefined \let\linenumber = \empty % Pre-3.0. \else \def\linenumber{l.\the\inputlineno:\space} \fi % Set up fixed words for English if not already set. \ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi \ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi \ifx\putworderror\undefined \gdef\putworderror{error}\fi \ifx\putwordfile\undefined \gdef\putwordfile{file}\fi \ifx\putwordin\undefined \gdef\putwordin{in}\fi \ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi \ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi \ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi \ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi \ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi \ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi \ifx\putwordof\undefined \gdef\putwordof{of}\fi \ifx\putwordon\undefined \gdef\putwordon{on}\fi \ifx\putwordpage\undefined \gdef\putwordpage{page}\fi \ifx\putwordsection\undefined \gdef\putwordsection{section}\fi \ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi \ifx\putwordsee\undefined \gdef\putwordsee{see}\fi \ifx\putwordSee\undefined \gdef\putwordSee{See}\fi \ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi \ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi % \ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi \ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi \ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi \ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi \ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi \ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi \ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi \ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi \ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi \ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi \ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi \ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi % \ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi \ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi \ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi \ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi \ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi % Since the category of space is not known, we have to be careful. \chardef\spacecat = 10 \def\spaceisspace{\catcode`\ =\spacecat} % sometimes characters are active, so we need control sequences. \chardef\ampChar = `\& \chardef\colonChar = `\: \chardef\commaChar = `\, \chardef\dashChar = `\- \chardef\dotChar = `\. \chardef\exclamChar= `\! \chardef\hashChar = `\# \chardef\lquoteChar= `\` \chardef\questChar = `\? \chardef\rquoteChar= `\' \chardef\semiChar = `\; \chardef\slashChar = `\/ \chardef\underChar = `\_ % Ignore a token. % \def\gobble#1{} % The following is used inside several \edef's. \def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} % Hyphenation fixes. \hyphenation{ Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script ap-pen-dix bit-map bit-maps data-base data-bases eshell fall-ing half-way long-est man-u-script man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces spell-ing spell-ings stand-alone strong-est time-stamp time-stamps which-ever white-space wide-spread wrap-around } % Margin to add to right of even pages, to left of odd pages. \newdimen\bindingoffset \newdimen\normaloffset \newdimen\pagewidth \newdimen\pageheight % For a final copy, take out the rectangles % that mark overfull boxes (in case you have decided % that the text looks ok even though it passes the margin). % \def\finalout{\overfullrule=0pt } % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, % since that produces some useless output on the terminal. We also make % some effort to order the tracing commands to reduce output in the log % file; cf. trace.sty in LaTeX. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% \def\loggingall{% \tracingstats2 \tracingpages1 \tracinglostchars2 % 2 gives us more in etex \tracingparagraphs1 \tracingoutput1 \tracingmacros2 \tracingrestores1 \showboxbreadth\maxdimen \showboxdepth\maxdimen \ifx\eTeXversion\thisisundefined\else % etex gives us more logging \tracingscantokens1 \tracingifs1 \tracinggroups1 \tracingnesting2 \tracingassigns1 \fi \tracingcommands3 % 3 gives us more in etex \errorcontextlines16 }% % @errormsg{MSG}. Do the index-like expansions on MSG, but if things % aren't perfect, it's not the end of the world, being an error message, % after all. % \def\errormsg{\begingroup \indexnofonts \doerrormsg} \def\doerrormsg#1{\errmessage{#1}} % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} \def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount \removelastskip\penalty-100\medskip\fi\fi} \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount \removelastskip\penalty-200\bigskip\fi\fi} % Do @cropmarks to get crop marks. % \newif\ifcropmarks \let\cropmarks = \cropmarkstrue % % Dimensions to add cropmarks at corners. % Added by P. A. MacKay, 12 Nov. 1986 % \newdimen\outerhsize \newdimen\outervsize % set by the paper size routines \newdimen\cornerlong \cornerlong=1pc \newdimen\cornerthick \cornerthick=.3pt \newdimen\topandbottommargin \topandbottommargin=.75in % Output a mark which sets \thischapter, \thissection and \thiscolor. % We dump everything together because we only have one kind of mark. % This works because we only use \botmark / \topmark, not \firstmark. % % A mark contains a subexpression of the \ifcase ... \fi construct. % \get*marks macros below extract the needed part using \ifcase. % % Another complication is to let the user choose whether \thischapter % (\thissection) refers to the chapter (section) in effect at the top % of a page, or that at the bottom of a page. The solution is % described on page 260 of The TeXbook. It involves outputting two % marks for the sectioning macros, one before the section break, and % one after. I won't pretend I can describe this better than DEK... \def\domark{% \toks0=\expandafter{\lastchapterdefs}% \toks2=\expandafter{\lastsectiondefs}% \toks4=\expandafter{\prevchapterdefs}% \toks6=\expandafter{\prevsectiondefs}% \toks8=\expandafter{\lastcolordefs}% \mark{% \the\toks0 \the\toks2 \noexpand\or \the\toks4 \the\toks6 \noexpand\else \the\toks8 }% } % \topmark doesn't work for the very first chapter (after the title % page or the contents), so we use \firstmark there -- this gets us % the mark with the chapter defs, unless the user sneaks in, e.g., % @setcolor (or @url, or @link, etc.) between @contents and the very % first @chapter. \def\gettopheadingmarks{% \ifcase0\topmark\fi \ifx\thischapter\empty \ifcase0\firstmark\fi \fi } \def\getbottomheadingmarks{\ifcase1\botmark\fi} \def\getcolormarks{\ifcase2\topmark\fi} % Avoid "undefined control sequence" errors. \def\lastchapterdefs{} \def\lastsectiondefs{} \def\prevchapterdefs{} \def\prevsectiondefs{} \def\lastcolordefs{} % Main output routine. \chardef\PAGE = 255 \output = {\onepageout{\pagecontents\PAGE}} \newbox\headlinebox \newbox\footlinebox % \onepageout takes a vbox as an argument. Note that \pagecontents % does insertions, but you have to call it yourself. \def\onepageout#1{% \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi % \ifodd\pageno \advance\hoffset by \bindingoffset \else \advance\hoffset by -\bindingoffset\fi % % Do this outside of the \shipout so @code etc. will be expanded in % the headline as they should be, not taken literally (outputting ''code). \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% % {% % Have to do this stuff outside the \shipout because we want it to % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % \indexdummies % don't expand commands in the output. \normalturnoffactive % \ in index entries must not stay \, e.g., if % the page break happens to be in the middle of an example. % We don't want .vr (or whatever) entries like this: % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} % "\acronym" won't work when it's read back in; % it needs to be % {\code {{\tt \backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi % \ifcropmarks \vbox to \outervsize\bgroup \hsize = \outerhsize \vskip-\topandbottommargin \vtop to0pt{% \line{\ewtop\hfil\ewtop}% \nointerlineskip \line{% \vbox{\moveleft\cornerthick\nstop}% \hfill \vbox{\moveright\cornerthick\nstop}% }% \vss}% \vskip\topandbottommargin \line\bgroup \hfil % center the page within the outer (page) hsize. \ifodd\pageno\hskip\bindingoffset\fi \vbox\bgroup \fi % \unvbox\headlinebox \pagebody{#1}% \ifdim\ht\footlinebox > 0pt % Only leave this space if the footline is nonempty. % (We lessened \vsize for it in \oddfootingyyy.) % The \baselineskip=24pt in plain's \makefootline has no effect. \vskip 24pt \unvbox\footlinebox \fi % \ifcropmarks \egroup % end of \vbox\bgroup \hfil\egroup % end of (centering) \line\bgroup \vskip\topandbottommargin plus1fill minus1fill \boxmaxdepth = \cornerthick \vbox to0pt{\vss \line{% \vbox{\moveleft\cornerthick\nsbot}% \hfill \vbox{\moveright\cornerthick\nsbot}% }% \nointerlineskip \line{\ewbot\hfil\ewbot}% }% \egroup % \vbox from first cropmarks clause \fi }% end of \shipout\vbox }% end of group with \indexdummies \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi } \newinsert\margin \dimen\margin=\maxdimen \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} {\catcode`\@ =11 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi % marginal hacks, juha@viisa.uucp (Juha Takala) \ifvoid\margin\else % marginal info is present \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi \dimen@=\dp#1\relax \unvbox#1\relax \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi \ifr@ggedbottom \kern-\dimen@ \vfil \fi} } % Here are the rules for the cropmarks. Note that they are % offset so that the space between them is truly \outerhsize or \outervsize % (P. A. MacKay, 12 November, 1986) % \def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} \def\nstop{\vbox {\hrule height\cornerthick depth\cornerlong width\cornerthick}} \def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} \def\nsbot{\vbox {\hrule height\cornerlong depth\cornerthick width\cornerthick}} % Parse an argument, then pass it to #1. The argument is the rest of % the input line (except we remove a trailing comment). #1 should be a % macro which expects an ordinary undelimited TeX argument. % \def\parsearg{\parseargusing{}} \def\parseargusing#1#2{% \def\argtorun{#2}% \begingroup \obeylines \spaceisspace #1% \parseargline\empty% Insert the \empty token, see \finishparsearg below. } {\obeylines % \gdef\parseargline#1^^M{% \endgroup % End of the group started in \parsearg. \argremovecomment #1\comment\ArgTerm% }% } % First remove any @comment, then any @c comment. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % % \argremovec might leave us with trailing space, e.g., % @end itemize @c foo % This space token undergoes the same procedure and is eventually removed % by \finishparsearg. % \def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} \def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} \def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% \def\temp{#3}% \ifx\temp\empty % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: \let\temp\finishparsearg \else \let\temp\argcheckspaces \fi % Put the space token in: \temp#1 #3\ArgTerm } % If a _delimited_ argument is enclosed in braces, they get stripped; so % to get _exactly_ the rest of the line, we had to prevent such situation. % We prepended an \empty token at the very beginning and we expand it now, % just before passing the control to \argtorun. % (Similarly, we have to think about #3 of \argcheckspacesY above: it is % either the null string, or it ends with \^^M---thus there is no danger % that a pair of braces would be stripped. % % But first, we have to remove the trailing space token. % \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} % \parseargdef\foo{...} % is roughly equivalent to % \def\foo{\parsearg\Xfoo} % \def\Xfoo#1{...} % % Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my % favourite TeX trick. --kasal, 16nov03 \def\parseargdef#1{% \expandafter \doparseargdef \csname\string#1\endcsname #1% } \def\doparseargdef#1#2{% \def#2{\parsearg#1}% \def#1##1% } % Several utility definitions with active space: { \obeyspaces \gdef\obeyedspace{ } % Make each space character in the input produce a normal interword % space in the output. Don't allow a line break at this space, as this % is used only in environments like @example, where each line of input % should produce a line of output anyway. % \gdef\sepspaces{\obeyspaces\let =\tie} % If an index command is used in an @example environment, any spaces % therein should become regular spaces in the raw index file, not the % expansion of \tie (\leavevmode \penalty \@M \ ). \gdef\unsepspaces{\let =\space} } \def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} % Define the framework for environments in texinfo.tex. It's used like this: % % \envdef\foo{...} % \def\Efoo{...} % % It's the responsibility of \envdef to insert \begingroup before the % actual body; @end closes the group after calling \Efoo. \envdef also % defines \thisenv, so the current environment is known; @end checks % whether the environment name matches. The \checkenv macro can also be % used to check whether the current environment is the one expected. % % Non-false conditionals (@iftex, @ifset) don't fit into this, so they % are not treated as environments; they don't open a group. (The % implementation of @end takes care not to call \endgroup in this % special case.) % At run-time, environments start with this: \def\startenvironment#1{\begingroup\def\thisenv{#1}} % initialize \let\thisenv\empty % ... but they get defined via ``\envdef\foo{...}'': \long\def\envdef#1#2{\def#1{\startenvironment#1#2}} \def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} % Check whether we're in the right environment: \def\checkenv#1{% \def\temp{#1}% \ifx\thisenv\temp \else \badenverr \fi } % Environment mismatch, #1 expected: \def\badenverr{% \errhelp = \EMsimple \errmessage{This command can appear only \inenvironment\temp, not \inenvironment\thisenv}% } \def\inenvironment#1{% \ifx#1\empty outside of any environment% \else in environment \expandafter\string#1% \fi } % @end foo executes the definition of \Efoo. % But first, it executes a specialized version of \checkenv % \parseargdef\end{% \if 1\csname iscond.#1\endcsname \else % The general wording of \badenverr may not be ideal. \expandafter\checkenv\csname#1\endcsname \csname E#1\endcsname \endgroup \fi } \newhelp\EMsimple{Press RETURN to continue.} % Be sure we're in horizontal mode when doing a tie, since we make space % equivalent to this in @example-like environments. Otherwise, a space % at the beginning of a line will start with \penalty -- and % since \penalty is valid in vertical mode, we'd end up putting the % penalty on the vertical list instead of in the new paragraph. {\catcode`@ = 11 % Avoid using \@M directly, because that causes trouble % if the definition is written into an index file. \global\let\tiepenalty = \@M \gdef\tie{\leavevmode\penalty\tiepenalty\ } } % @: forces normal size whitespace following. \def\:{\spacefactor=1000 } % @* forces a line break. \def\*{\unskip\hfil\break\hbox{}\ignorespaces} % @/ allows a line break. \let\/=\allowbreak % @. is an end-of-sentence period. \def\.{.\spacefactor=\endofsentencespacefactor\space} % @! is an end-of-sentence bang. \def\!{!\spacefactor=\endofsentencespacefactor\space} % @? is an end-of-sentence query. \def\?{?\spacefactor=\endofsentencespacefactor\space} % @frenchspacing on|off says whether to put extra space after punctuation. % \def\onword{on} \def\offword{off} % \parseargdef\frenchspacing{% \def\temp{#1}% \ifx\temp\onword \plainfrenchspacing \else\ifx\temp\offword \plainnonfrenchspacing \else \errhelp = \EMsimple \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% \fi\fi } % @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1}} % @group ... @end group forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % % Another complication is that the group might be very large. This can % cause the glue on the previous page to be unduly stretched, because it % does not have much material. In this case, it's better to add an % explicit \vfill so that the extra space is at the bottom. The % threshold for doing this is if the group is more than \vfilllimit % percent of a page (\vfilllimit can be changed inside of @tex). % \newbox\groupbox \def\vfilllimit{0.7} % \envdef\group{% \ifnum\catcode`\^^M=\active \else \errhelp = \groupinvalidhelp \errmessage{@group invalid in context where filling is enabled}% \fi \startsavinginserts % \setbox\groupbox = \vtop\bgroup % Do @comment since we are called inside an environment such as % @example, where each end-of-line in the input causes an % end-of-line in the output. We don't want the end-of-line after % the `@group' to put extra space in the output. Since @group % should appear on a line by itself (according to the Texinfo % manual), we don't worry about eating any user text. \comment } % % The \vtop produces a box with normal height and large depth; thus, TeX puts % \baselineskip glue before it, and (when the next line of text is done) % \lineskip glue after it. Thus, space below is not quite equal to space % above. But it's pretty close. \def\Egroup{% % To get correct interline space between the last line of the group % and the first line afterwards, we have to propagate \prevdepth. \endgraf % Not \par, as it may have been set to \lisppar. \global\dimen1 = \prevdepth \egroup % End the \vtop. % \dimen0 is the vertical size of the group's box. \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox % \dimen2 is how much space is left on the page (more or less). \dimen2 = \pageheight \advance\dimen2 by -\pagetotal % if the group doesn't fit on the current page, and it's a big big % group, force a page break. \ifdim \dimen0 > \dimen2 \ifdim \pagetotal < \vfilllimit\pageheight \page \fi \fi \box\groupbox \prevdepth = \dimen1 \checkinserts } % % TeX puts in an \escapechar (i.e., `@') at the beginning of the help % message, so this ends up printing `@group can only ...'. % \newhelp\groupinvalidhelp{% group can only be used in environments such as @example,^^J% where each line of input produces a line of output.} % @need space-in-mils % forces a page break if there is not space-in-mils remaining. \newdimen\mil \mil=0.001in \parseargdef\need{% % Ensure vertical mode, so we don't make a big box in the middle of a % paragraph. \par % % If the @need value is less than one line space, it's useless. \dimen0 = #1\mil \dimen2 = \ht\strutbox \advance\dimen2 by \dp\strutbox \ifdim\dimen0 > \dimen2 % % Do a \strut just to make the height of this box be normal, so the % normal leading is inserted relative to the preceding line. % And a page break here is fine. \vtop to #1\mil{\strut\vfil}% % % TeX does not even consider page breaks if a penalty added to the % main vertical list is 10000 or more. But in order to see if the % empty box we just added fits on the page, we must make it consider % page breaks. On the other hand, we don't want to actually break the % page after the empty box. So we use a penalty of 9999. % % There is an extremely small chance that TeX will actually break the % page at this \penalty, if there are no other feasible breakpoints in % sight. (If the user is using lots of big @group commands, which % almost-but-not-quite fill up a page, TeX will have a hard time doing % good page breaking, for example.) However, I could not construct an % example where a page broke at this \penalty; if it happens in a real % document, then we can reconsider our strategy. \penalty9999 % % Back up by the size of the box, whether we did a page break or not. \kern -#1\mil % % Do not allow a page break right after this kern. \nobreak \fi } % @br forces paragraph break (and is undocumented). \let\br = \par % @page forces the start of a new page. % \def\page{\par\vfill\supereject} % @exdent text.... % outputs text on separate line in roman font, starting at standard page margin % This records the amount of indent in the innermost environment. % That's how much \exdent should take out. \newskip\exdentamount % This defn is used inside fill environments such as @defun. \parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} % This defn is used inside nofill environments such as @example. \parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount \leftline{\hskip\leftskip{\rm#1}}}} % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current % paragraph. For more general purposes, use the \margin insertion % class. WHICH is `l' or `r'. Not documented, written for gawk manual. % \newskip\inmarginspacing \inmarginspacing=1cm \def\strutdepth{\dp\strutbox} % \def\doinmargin#1#2{\strut\vadjust{% \nobreak \kern-\strutdepth \vtop to \strutdepth{% \baselineskip=\strutdepth \vss % if you have multiple lines of stuff to put here, you'll need to % make the vbox yourself of the appropriate size. \ifx#1l% \llap{\ignorespaces #2\hskip\inmarginspacing}% \else \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% \fi \null }% }} \def\inleftmargin{\doinmargin l} \def\inrightmargin{\doinmargin r} % % @inmargin{TEXT [, RIGHT-TEXT]} % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts \def\righttext{#2}% \else \def\lefttext{#1}% have only one text \def\righttext{#1}% \fi % \ifodd\pageno \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin \else \def\temp{\inleftmargin\lefttext}% \fi \temp } % @| inserts a changebar to the left of the current line. It should % surround any changed text. This approach does *not* work if the % change spans more than two lines of output. To handle that, we would % have adopt a much more difficult approach (putting marks into the main % vertical list for the beginning and end of each change). This command % is not documented, not supported, and doesn't work. % \def\|{% % \vadjust can only be used in horizontal mode. \leavevmode % % Append this vertical mode material after the current line in the output. \vadjust{% % We want to insert a rule with the height and depth of the current % leading; that is exactly what \strutbox is supposed to record. \vskip-\baselineskip % % \vadjust-items are inserted at the left edge of the type. So % the \llap here moves out into the left-hand margin. \llap{% % % For a thicker or thinner bar, change the `1pt'. \vrule height\baselineskip width1pt % % This is the space between the bar and the text. \hskip 12pt }% }% } % @include FILE -- \input text of FILE. % \def\include{\parseargusing\filenamecatcodes\includezzz} \def\includezzz#1{% \pushthisfilestack \def\thisfile{#1}% {% \makevalueexpandable % we want to expand any @value in FILE. \turnoffactive % and allow special characters in the expansion \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @include of #1^^J}% \edef\temp{\noexpand\input #1 }% % % This trickery is to read FILE outside of a group, in case it makes % definitions, etc. \expandafter }\temp \popthisfilestack } \def\filenamecatcodes{% \catcode`\\=\other \catcode`~=\other \catcode`^=\other \catcode`_=\other \catcode`|=\other \catcode`<=\other \catcode`>=\other \catcode`+=\other \catcode`-=\other \catcode`\`=\other \catcode`\'=\other } \def\pushthisfilestack{% \expandafter\pushthisfilestackX\popthisfilestack\StackTerm } \def\pushthisfilestackX{% \expandafter\pushthisfilestackY\thisfile\StackTerm } \def\pushthisfilestackY #1\StackTerm #2\StackTerm {% \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% } \def\popthisfilestack{\errthisfilestackempty} \def\errthisfilestackempty{\errmessage{Internal error: the stack of filenames is empty.}} % \def\thisfile{} % @center line % outputs that line, centered. % \parseargdef\center{% \ifhmode \let\centersub\centerH \else \let\centersub\centerV \fi \centersub{\hfil \ignorespaces#1\unskip \hfil}% \let\centersub\relax % don't let the definition persist, just in case } \def\centerH#1{{% \hfil\break \advance\hsize by -\leftskip \advance\hsize by -\rightskip \line{#1}% \break }} % \newcount\centerpenalty \def\centerV#1{% % The idea here is the same as in \startdefun, \cartouche, etc.: if % @center is the first thing after a section heading, we need to wipe % out the negative parskip inserted by \sectionheading, but still % prevent a page break here. \centerpenalty = \lastpenalty \ifnum\centerpenalty>10000 \vskip\parskip \fi \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi \line{\kern\leftskip #1\kern\rightskip}% } % @sp n outputs n lines of vertical space % \parseargdef\sp{\vskip #1\baselineskip} % @comment ...line which is ignored... % @c is the same as @comment % @ignore ... @end ignore is another way to write a comment % \def\comment{\begingroup \catcode`\^^M=\other% \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% \commentxxx} {\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} % \let\c=\comment % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. % NCHARS can also be the word `asis' or `none'. % We cannot feasibly implement @paragraphindent asis, though. % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} % \parseargdef\paragraphindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \defaultparindent = 0pt \else \defaultparindent = #1em \fi \fi \parindent = \defaultparindent } % @exampleindent NCHARS % We'll use ems for NCHARS like @paragraphindent. % It seems @exampleindent asis isn't necessary, but % I preserve it to make it similar to @paragraphindent. \parseargdef\exampleindent{% \def\temp{#1}% \ifx\temp\asisword \else \ifx\temp\noneword \lispnarrowing = 0pt \else \lispnarrowing = #1em \fi \fi } % @firstparagraphindent WORD % If WORD is `none', then suppress indentation of the first paragraph % after a section heading. If WORD is `insert', then do indent at such % paragraphs. % % The paragraph indentation is suppressed or not by calling % \suppressfirstparagraphindent, which the sectioning commands do. % We switch the definition of this back and forth according to WORD. % By default, we suppress indentation. % \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} \def\insertword{insert} % \parseargdef\firstparagraphindent{% \def\temp{#1}% \ifx\temp\noneword \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent \else\ifx\temp\insertword \let\suppressfirstparagraphindent = \relax \else \errhelp = \EMsimple \errmessage{Unknown @firstparagraphindent option `\temp'}% \fi\fi } % Here is how we actually suppress indentation. Redefine \everypar to % \kern backwards by \parindent, and then reset itself to empty. % % We also make \indent itself not actually do anything until the next % paragraph. % \gdef\dosuppressfirstparagraphindent{% \gdef\indent{% \restorefirstparagraphindent \indent }% \gdef\noindent{% \restorefirstparagraphindent \noindent }% \global\everypar = {% \kern -\parindent \restorefirstparagraphindent }% } \gdef\restorefirstparagraphindent{% \global \let \indent = \ptexindent \global \let \noindent = \ptexnoindent \global \everypar = {}% } % @refill is a no-op. \let\refill=\relax % If working on a large document in chapters, it is convenient to % be able to disable indexing, cross-referencing, and contents, for test runs. % This is done with @novalidate (before @setfilename). % \newif\iflinks \linkstrue % by default we want the aux files. \let\novalidate = \linksfalse % @setfilename is done at the beginning of every texinfo file. % So open here the files we need to have open while reading the input. % This makes it possible to make a .fmt file for texinfo. \def\setfilename{% \fixbackslash % Turn off hack to swallow `\input texinfo'. \iflinks \tryauxfile % Open the new aux file. TeX will close it automatically at exit. \immediate\openout\auxfile=\jobname.aux \fi % \openindices needs to do some work in any case. \openindices \let\setfilename=\comment % Ignore extra @setfilename cmds. % % If texinfo.cnf is present on the system, read it. % Useful for site-wide @afourpaper, etc. \openin 1 texinfo.cnf \ifeof 1 \else \input texinfo.cnf \fi \closein 1 % \comment % Ignore the actual filename. } % Called from \setfilename. % \def\openindices{% \newindex{cp}% \newcodeindex{fn}% \newcodeindex{vr}% \newcodeindex{tp}% \newcodeindex{ky}% \newcodeindex{pg}% } % @bye. \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} \message{pdf,} % adobe `portable' document format \newcount\tempnum \newcount\lnkcount \newtoks\filename \newcount\filenamelength \newcount\pgn \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newbox\boxA \newcount\countA \newif\ifpdf \newif\ifpdfmakepagedest % when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 % can be set). So we test for \relax and 0 as well as being undefined. \ifx\pdfoutput\thisisundefined \else \ifx\pdfoutput\relax \else \ifcase\pdfoutput \else \pdftrue \fi \fi \fi % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be % interpreted as a newline (\n), followed by o, d, e. Not good. % % See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and % related messages. The final outcome is that it is up to the TeX user % to double the backslashes and otherwise make the string valid, so % that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to % do this reliably, so we use it. % #1 is a control sequence in which to do the replacements, % which we \xdef. \def\txiescapepdf#1{% \ifx\pdfescapestring\thisisundefined % No primitive available; should we give a warning or log? % Many times it won't matter. \else % The expandable \pdfescapestring primitive escapes parentheses, % backslashes, and other special chars. \xdef#1{\pdfescapestring{#1}}% \fi } \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images with PDF output, and none of those formats could be found. (.eps cannot be supported due to the design of the PDF format; use regular TeX (DVI output) for that.)} \ifpdf % % Color manipulation macros based on pdfcolor.tex, % except using rgb instead of cmyk; the latter is said to render as a % very dark gray on-screen and a very dark halftone in print, instead % of actual black. \def\rgbDarkRed{0.50 0.09 0.12} \def\rgbBlack{0 0 0} % % k sets the color for filling (usual text, etc.); % K sets the color for stroking (thin rules, e.g., normal _'s). \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} % % Set color, and create a mark which defines \thiscolor accordingly, % so that \makeheadline knows which color to restore. \def\setcolor#1{% \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% \domark \pdfsetcolor{#1}% } % \def\maincolor{\rgbBlack} \pdfsetcolor{\maincolor} \edef\thiscolor{\maincolor} \def\lastcolordefs{} % \def\makefootline{% \baselineskip24pt \line{\pdfsetcolor{\maincolor}\the\footline}% } % \def\makeheadline{% \vbox to 0pt{% \vskip-22.5pt \line{% \vbox to8.5pt{}% % Extract \thiscolor definition from the marks. \getcolormarks % Typeset the headline with \maincolor, then restore the color. \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% }% \vss }% \nointerlineskip } % % \pdfcatalog{/PageMode /UseOutlines} % % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). \def\dopdfimage#1#2#3{% \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% % % pdftex (and the PDF format) support .pdf, .png, .jpg (among % others). Let's try in that order, PDF first since if % someone has a scalable image, presumably better to use that than a % bitmap. \let\pdfimgext=\empty \begingroup \openin 1 #1.pdf \ifeof 1 \openin 1 #1.PDF \ifeof 1 \openin 1 #1.png \ifeof 1 \openin 1 #1.jpg \ifeof 1 \openin 1 #1.jpeg \ifeof 1 \openin 1 #1.JPG \ifeof 1 \errhelp = \nopdfimagehelp \errmessage{Could not find image file #1 for pdf}% \else \gdef\pdfimgext{JPG}% \fi \else \gdef\pdfimgext{jpeg}% \fi \else \gdef\pdfimgext{jpg}% \fi \else \gdef\pdfimgext{png}% \fi \else \gdef\pdfimgext{PDF}% \fi \else \gdef\pdfimgext{pdf}% \fi \closein 1 \endgroup % % without \immediate, ancient pdftex seg faults when the same image is % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) \ifnum\pdftexversion < 14 \immediate\pdfimage \else \immediate\pdfximage \fi \ifdim \wd0 >0pt width \pdfimagewidth \fi \ifdim \wd2 >0pt height \pdfimageheight \fi \ifnum\pdftexversion<13 #1.\pdfimgext \else {#1.\pdfimgext}% \fi \ifnum\pdftexversion < 14 \else \pdfrefximage \pdflastximage \fi} % \def\pdfmkdest#1{{% % We have to set dummies so commands such as @code, and characters % such as \, aren't expanded when present in a section title. \indexnofonts \turnoffactive \makevalueexpandable \def\pdfdestname{#1}% \txiescapepdf\pdfdestname \safewhatsit{\pdfdest name{\pdfdestname} xyz}% }} % % used to mark target names; must be expandable. \def\pdfmkpgn#1{#1} % % by default, use a color that is dark enough to print on paper as % nearly black, but still distinguishable for online viewing. \def\urlcolor{\rgbDarkRed} \def\linkcolor{\rgbDarkRed} \def\endlink{\setcolor{\maincolor}\pdfendlink} % % Adding outlines to PDF; macros for calculating structure of outlines % come from Petr Olsak \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} \def\advancenumber#1{\tempnum=\expnumber{#1}\relax \advance\tempnum by 1 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} % % #1 is the section text, which is what will be displayed in the % outline by the pdf viewer. #2 is the pdf expression for the number % of subentries (or empty, for subsubsections). #3 is the node text, % which might be empty if this toc entry had no corresponding node. % #4 is the page number % \def\dopdfoutline#1#2#3#4{% % Generate a link to the node text if that exists; else, use the % page number. We could generate a destination for the section % text in the case where a section has no node, but it doesn't % seem worth the trouble, since most documents are normally structured. \edef\pdfoutlinedest{#3}% \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}% \else \txiescapepdf\pdfoutlinedest \fi % % Also escape PDF chars in the display string. \edef\pdfoutlinetext{#1}% \txiescapepdf\pdfoutlinetext % \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% } % \def\pdfmakeoutlines{% \begingroup % Read toc silently, to get counts of subentries for \pdfoutline. \def\partentry##1##2##3##4{}% ignore parts in the outlines \def\numchapentry##1##2##3##4{% \def\thischapnum{##2}% \def\thissecnum{0}% \def\thissubsecnum{0}% }% \def\numsecentry##1##2##3##4{% \advancenumber{chap\thischapnum}% \def\thissecnum{##2}% \def\thissubsecnum{0}% }% \def\numsubsecentry##1##2##3##4{% \advancenumber{sec\thissecnum}% \def\thissubsecnum{##2}% }% \def\numsubsubsecentry##1##2##3##4{% \advancenumber{subsec\thissubsecnum}% }% \def\thischapnum{0}% \def\thissecnum{0}% \def\thissubsecnum{0}% % % use \def rather than \let here because we redefine \chapentry et % al. a second time, below. \def\appentry{\numchapentry}% \def\appsecentry{\numsecentry}% \def\appsubsecentry{\numsubsecentry}% \def\appsubsubsecentry{\numsubsubsecentry}% \def\unnchapentry{\numchapentry}% \def\unnsecentry{\numsecentry}% \def\unnsubsecentry{\numsubsecentry}% \def\unnsubsubsecentry{\numsubsubsecentry}% \readdatafile{toc}% % % Read toc second time, this time actually producing the outlines. % The `-' means take the \expnumber as the absolute number of % subentries, which we calculated on our first read of the .toc above. % % We use the node names as the destinations. \def\numchapentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% \def\numsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% \def\numsubsecentry##1##2##3##4{% \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% \def\numsubsubsecentry##1##2##3##4{% count is always zero \dopdfoutline{##1}{}{##3}{##4}}% % % PDF outlines are displayed using system fonts, instead of % document fonts. Therefore we cannot use special characters, % since the encoding is unknown. For example, the eogonek from % Latin 2 (0xea) gets translated to a | character. Info from % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. % % TODO this right, we have to translate 8-bit characters to % their "best" equivalent, based on the @documentencoding. Too % much work for too little return. Just use the ASCII equivalents % we use for the index sort strings. % \indexnofonts \setupdatafile % We can have normal brace characters in the PDF outlines, unlike % Texinfo index files. So set that up. \def\{{\lbracecharliteral}% \def\}{\rbracecharliteral}% \catcode`\\=\active \otherbackslash \input \tocreadfilename \endgroup } {\catcode`[=1 \catcode`]=2 \catcode`{=\other \catcode`}=\other \gdef\lbracecharliteral[{]% \gdef\rbracecharliteral[}]% ] % \def\skipspaces#1{\def\PP{#1}\def\D{|}% \ifx\PP\D\let\nextsp\relax \else\let\nextsp\skipspaces \addtokens{\filename}{\PP}% \advance\filenamelength by 1 \fi \nextsp} \def\getfilename#1{% \filenamelength=0 % If we don't expand the argument now, \skipspaces will get % snagged on things like "@value{foo}". \edef\temp{#1}% \expandafter\skipspaces\temp|\relax } \ifnum\pdftexversion < 14 \let \startlink \pdfannotlink \else \let \startlink \pdfstartlink \fi % make a live url in pdf output. \def\pdfurl#1{% \begingroup % it seems we really need yet another set of dummies; have not % tried to figure out what each command should do in the context % of @url. for now, just make @/ a no-op, that's the only one % people have actually reported a problem with. % \normalturnoffactive \def\@{@}% \let\/=\empty \makevalueexpandable % do we want to go so far as to use \indexnofonts instead of just % special-casing \var here? \def\var##1{##1}% % \leavevmode\setcolor{\urlcolor}% \startlink attr{/Border [0 0 0]}% user{/Subtype /Link /A << /S /URI /URI (#1) >>}% \endgroup} \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} \def\maketoks{% \expandafter\poptoks\the\toksA|ENDTOKS|\relax \ifx\first0\adn0 \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi \ifx\first.\let\next=\done\else \let\next=\maketoks \addtokens{\toksB}{\the\toksD} \ifx\first,\addtokens{\toksB}{\space}\fi \fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \next} \def\makelink{\addtokens{\toksB}% {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} \def\pdflink#1{% \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} \setcolor{\linkcolor}#1\endlink} \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} \else % non-pdf mode \let\pdfmkdest = \gobble \let\pdfurl = \gobble \let\endlink = \relax \let\setcolor = \gobble \let\pdfsetcolor = \gobble \let\pdfmakeoutlines = \relax \fi % \ifx\pdfoutput \message{fonts,} % Change the current font style to #1, remembering it in \curfontstyle. % For now, we do not accumulate font styles: @b{@i{foo}} prints foo in % italics, not bold italics. % \def\setfontstyle#1{% \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. \csname ten#1\endcsname % change the current font } % Select #1 fonts with the current style. % \def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} \def\rm{\fam=0 \setfontstyle{rm}} \def\it{\fam=\itfam \setfontstyle{it}} \def\sl{\fam=\slfam \setfontstyle{sl}} \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} \def\tt{\fam=\ttfam \setfontstyle{tt}} % Unfortunately, we have to override this for titles and the like, since % in those cases "rm" is bold. Sigh. \def\rmisbold{\rm\def\curfontstyle{bf}} % Texinfo sort of supports the sans serif font style, which plain TeX does not. % So we set up a \sf. \newfam\sffam \def\sf{\fam=\sffam \setfontstyle{sf}} \let\li = \sf % Sometimes we call it \li, not \sf. % We don't need math for this font style. \def\ttsl{\setfontstyle{ttsl}} % Set the baselineskip to #1, and the lineskip and strut size % correspondingly. There is no deep meaning behind these magic numbers % used as factors; they just match (closely enough) what Knuth defined. % \def\lineskipfactor{.08333} \def\strutheightpercent{.70833} \def\strutdepthpercent {.29167} % % can get a sort of poor man's double spacing by redefining this. \def\baselinefactor{1} % \newdimen\textleading \def\setleading#1{% \dimen0 = #1\relax \normalbaselineskip = \baselinefactor\dimen0 \normallineskip = \lineskipfactor\normalbaselineskip \normalbaselines \setbox\strutbox =\hbox{% \vrule width0pt height\strutheightpercent\baselineskip depth \strutdepthpercent \baselineskip }% } % PDF CMaps. See also LaTeX's t1.cmap. % % do nothing with this by default. \expandafter\let\csname cmapOT1\endcsname\gobble \expandafter\let\csname cmapOT1IT\endcsname\gobble \expandafter\let\csname cmapOT1TT\endcsname\gobble % if we are producing pdf, and we have \pdffontattr, then define cmaps. % (\pdffontattr was introduced many years ago, but people still run % older pdftex's; it's easy to conditionalize, so we do.) \ifpdf \ifx\pdffontattr\thisisundefined \else \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1-0) %%Title: (TeX-OT1-0 TeX OT1 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1) /Supplement 0 >> def /CMapName /TeX-OT1-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <23> <26> <0023> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 40 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1IT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1IT-0) %%Title: (TeX-OT1IT-0 TeX OT1IT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1IT) /Supplement 0 >> def /CMapName /TeX-OT1IT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 8 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <25> <26> <0025> <28> <3B> <0028> <3F> <5B> <003F> <5D> <5E> <005D> <61> <7A> <0061> <7B> <7C> <2013> endbfrange 42 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <00660066> <0C> <00660069> <0D> <0066006C> <0E> <006600660069> <0F> <00660066006C> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <21> <0021> <22> <201D> <23> <0023> <24> <00A3> <27> <2019> <3C> <00A1> <3D> <003D> <3E> <00BF> <5C> <201C> <5F> <02D9> <60> <2018> <7D> <02DD> <7E> <007E> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1IT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% % % \cmapOT1TT \begingroup \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap %%DocumentNeededResources: ProcSet (CIDInit) %%IncludeResource: ProcSet (CIDInit) %%BeginResource: CMap (TeX-OT1TT-0) %%Title: (TeX-OT1TT-0 TeX OT1TT 0) %%Version: 1.000 %%EndComments /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo << /Registry (TeX) /Ordering (OT1TT) /Supplement 0 >> def /CMapName /TeX-OT1TT-0 def /CMapType 2 def 1 begincodespacerange <00> <7F> endcodespacerange 5 beginbfrange <00> <01> <0393> <09> <0A> <03A8> <21> <26> <0021> <28> <5F> <0028> <61> <7E> <0061> endbfrange 32 beginbfchar <02> <0398> <03> <039B> <04> <039E> <05> <03A0> <06> <03A3> <07> <03D2> <08> <03A6> <0B> <2191> <0C> <2193> <0D> <0027> <0E> <00A1> <0F> <00BF> <10> <0131> <11> <0237> <12> <0060> <13> <00B4> <14> <02C7> <15> <02D8> <16> <00AF> <17> <02DA> <18> <00B8> <19> <00DF> <1A> <00E6> <1B> <0153> <1C> <00F8> <1D> <00C6> <1E> <0152> <1F> <00D8> <20> <2423> <27> <2019> <60> <2018> <7F> <00A8> endbfchar endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF }\endgroup \expandafter\edef\csname cmapOT1TT\endcsname#1{% \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% }% \fi\fi % Set the font macro #1 to the font named \fontprefix#2. % #3 is the font's design size, #4 is a scale factor, #5 is the CMap % encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). % Example: % #1 = \textrm % #2 = \rmshape % #3 = 10 % #4 = \mainmagstep % #5 = OT1 % \def\setfont#1#2#3#4#5{% \font#1=\fontprefix#2#3 scaled #4 \csname cmap#5\endcsname#1% } % This is what gets called when #5 of \setfont is empty. \let\cmap\gobble % % (end of cmaps) % Use cm as the default font prefix. % To specify the font prefix, you must define \fontprefix % before you read in texinfo.tex. \ifx\fontprefix\thisisundefined \def\fontprefix{cm} \fi % Support font families that don't use the same naming scheme as CM. \def\rmshape{r} \def\rmbshape{bx} % where the normal face is bold \def\bfshape{b} \def\bxshape{bx} \def\ttshape{tt} \def\ttbshape{tt} \def\ttslshape{sltt} \def\itshape{ti} \def\itbshape{bxti} \def\slshape{sl} \def\slbshape{bxsl} \def\sfshape{ss} \def\sfbshape{ss} \def\scshape{csc} \def\scbshape{csc} % Definitions for a main text size of 11pt. (The default in Texinfo.) % \def\definetextfontsizexi{% % Text fonts (11.2pt, magstep1). \def\textnominalsize{11pt} \edef\mainmagstep{\magstephalf} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1095} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstep1}{OT1} \setfont\deftt\ttshape{10}{\magstep1}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter (and unnumbered) fonts (17.28pt). \def\chapnominalsize{17pt} \setfont\chaprm\rmbshape{12}{\magstep2}{OT1} \setfont\chapit\itbshape{10}{\magstep3}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep3}{OT1} \setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} \setfont\chapsf\sfbshape{17}{1000}{OT1} \let\chapbf=\chaprm \setfont\chapsc\scbshape{10}{\magstep3}{OT1} \font\chapi=cmmi12 scaled \magstep2 \font\chapsy=cmsy10 scaled \magstep3 \def\chapecsize{1728} % Section fonts (14.4pt). \def\secnominalsize{14pt} \setfont\secrm\rmbshape{12}{\magstep1}{OT1} \setfont\secit\itbshape{10}{\magstep2}{OT1IT} \setfont\secsl\slbshape{10}{\magstep2}{OT1} \setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\secsf\sfbshape{12}{\magstep1}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep2}{OT1} \font\seci=cmmi12 scaled \magstep1 \font\secsy=cmsy10 scaled \magstep2 \def\sececsize{1440} % Subsection fonts (13.15pt). \def\ssecnominalsize{13pt} \setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} \setfont\ssecit\itbshape{10}{1315}{OT1IT} \setfont\ssecsl\slbshape{10}{1315}{OT1} \setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} \setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1315}{OT1} \font\sseci=cmmi12 scaled \magstephalf \font\ssecsy=cmsy10 scaled 1315 \def\ssececsize{1200} % Reduced fonts for @acro in text (10pt). \def\reducednominalsize{10pt} \setfont\reducedrm\rmshape{10}{1000}{OT1} \setfont\reducedtt\ttshape{10}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{1000}{OT1} \setfont\reducedit\itshape{10}{1000}{OT1IT} \setfont\reducedsl\slshape{10}{1000}{OT1} \setfont\reducedsf\sfshape{10}{1000}{OT1} \setfont\reducedsc\scshape{10}{1000}{OT1} \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} \font\reducedi=cmmi10 \font\reducedsy=cmsy10 \def\reducedecsize{1000} \textleading = 13.2pt % line spacing for 11pt CM \textfonts % reset the current fonts \rm } % end of 11pt text font size definitions, \definetextfontsizexi % Definitions to make the main text be 10pt Computer Modern, with % section, chapter, etc., sizes following suit. This is for the GNU % Press printing of the Emacs 22 manual. Maybe other manuals in the % future. Used with @smallbook, which sets the leading to 12pt. % \def\definetextfontsizex{% % Text fonts (10pt). \def\textnominalsize{10pt} \edef\mainmagstep{1000} \setfont\textrm\rmshape{10}{\mainmagstep}{OT1} \setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} \setfont\textbf\bfshape{10}{\mainmagstep}{OT1} \setfont\textit\itshape{10}{\mainmagstep}{OT1IT} \setfont\textsl\slshape{10}{\mainmagstep}{OT1} \setfont\textsf\sfshape{10}{\mainmagstep}{OT1} \setfont\textsc\scshape{10}{\mainmagstep}{OT1} \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} \font\texti=cmmi10 scaled \mainmagstep \font\textsy=cmsy10 scaled \mainmagstep \def\textecsize{1000} % A few fonts for @defun names and args. \setfont\defbf\bfshape{10}{\magstephalf}{OT1} \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} % Fonts for indices, footnotes, small examples (9pt). \def\smallnominalsize{9pt} \setfont\smallrm\rmshape{9}{1000}{OT1} \setfont\smalltt\ttshape{9}{1000}{OT1TT} \setfont\smallbf\bfshape{10}{900}{OT1} \setfont\smallit\itshape{9}{1000}{OT1IT} \setfont\smallsl\slshape{9}{1000}{OT1} \setfont\smallsf\sfshape{9}{1000}{OT1} \setfont\smallsc\scshape{10}{900}{OT1} \setfont\smallttsl\ttslshape{10}{900}{OT1TT} \font\smalli=cmmi9 \font\smallsy=cmsy9 \def\smallecsize{0900} % Fonts for small examples (8pt). \def\smallernominalsize{8pt} \setfont\smallerrm\rmshape{8}{1000}{OT1} \setfont\smallertt\ttshape{8}{1000}{OT1TT} \setfont\smallerbf\bfshape{10}{800}{OT1} \setfont\smallerit\itshape{8}{1000}{OT1IT} \setfont\smallersl\slshape{8}{1000}{OT1} \setfont\smallersf\sfshape{8}{1000}{OT1} \setfont\smallersc\scshape{10}{800}{OT1} \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} \font\smalleri=cmmi8 \font\smallersy=cmsy8 \def\smallerecsize{0800} % Fonts for title page (20.4pt): \def\titlenominalsize{20pt} \setfont\titlerm\rmbshape{12}{\magstep3}{OT1} \setfont\titleit\itbshape{10}{\magstep4}{OT1IT} \setfont\titlesl\slbshape{10}{\magstep4}{OT1} \setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} \setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} \setfont\titlesf\sfbshape{17}{\magstep1}{OT1} \let\titlebf=\titlerm \setfont\titlesc\scbshape{10}{\magstep4}{OT1} \font\titlei=cmmi12 scaled \magstep3 \font\titlesy=cmsy10 scaled \magstep4 \def\titleecsize{2074} % Chapter fonts (14.4pt). \def\chapnominalsize{14pt} \setfont\chaprm\rmbshape{12}{\magstep1}{OT1} \setfont\chapit\itbshape{10}{\magstep2}{OT1IT} \setfont\chapsl\slbshape{10}{\magstep2}{OT1} \setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} \setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} \setfont\chapsf\sfbshape{12}{\magstep1}{OT1} \let\chapbf\chaprm \setfont\chapsc\scbshape{10}{\magstep2}{OT1} \font\chapi=cmmi12 scaled \magstep1 \font\chapsy=cmsy10 scaled \magstep2 \def\chapecsize{1440} % Section fonts (12pt). \def\secnominalsize{12pt} \setfont\secrm\rmbshape{12}{1000}{OT1} \setfont\secit\itbshape{10}{\magstep1}{OT1IT} \setfont\secsl\slbshape{10}{\magstep1}{OT1} \setfont\sectt\ttbshape{12}{1000}{OT1TT} \setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} \setfont\secsf\sfbshape{12}{1000}{OT1} \let\secbf\secrm \setfont\secsc\scbshape{10}{\magstep1}{OT1} \font\seci=cmmi12 \font\secsy=cmsy10 scaled \magstep1 \def\sececsize{1200} % Subsection fonts (10pt). \def\ssecnominalsize{10pt} \setfont\ssecrm\rmbshape{10}{1000}{OT1} \setfont\ssecit\itbshape{10}{1000}{OT1IT} \setfont\ssecsl\slbshape{10}{1000}{OT1} \setfont\ssectt\ttbshape{10}{1000}{OT1TT} \setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} \setfont\ssecsf\sfbshape{10}{1000}{OT1} \let\ssecbf\ssecrm \setfont\ssecsc\scbshape{10}{1000}{OT1} \font\sseci=cmmi10 \font\ssecsy=cmsy10 \def\ssececsize{1000} % Reduced fonts for @acro in text (9pt). \def\reducednominalsize{9pt} \setfont\reducedrm\rmshape{9}{1000}{OT1} \setfont\reducedtt\ttshape{9}{1000}{OT1TT} \setfont\reducedbf\bfshape{10}{900}{OT1} \setfont\reducedit\itshape{9}{1000}{OT1IT} \setfont\reducedsl\slshape{9}{1000}{OT1} \setfont\reducedsf\sfshape{9}{1000}{OT1} \setfont\reducedsc\scshape{10}{900}{OT1} \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} \font\reducedi=cmmi9 \font\reducedsy=cmsy9 \def\reducedecsize{0900} \divide\parskip by 2 % reduce space between paragraphs \textleading = 12pt % line spacing for 10pt CM \textfonts % reset the current fonts \rm } % end of 10pt text font size definitions, \definetextfontsizex % We provide the user-level command % @fonttextsize 10 % (or 11) to redefine the text font size. pt is assumed. % \def\xiword{11} \def\xword{10} \def\xwordpt{10pt} % \parseargdef\fonttextsize{% \def\textsizearg{#1}% %\wlog{doing @fonttextsize \textsizearg}% % % Set \globaldefs so that documents can use this inside @tex, since % makeinfo 4.8 does not support it, but we need it nonetheless. % \begingroup \globaldefs=1 \ifx\textsizearg\xword \definetextfontsizex \else \ifx\textsizearg\xiword \definetextfontsizexi \else \errhelp=\EMsimple \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} \fi\fi \endgroup } % In order for the font changes to affect most math symbols and letters, % we have to define the \textfont of the standard families. Since % texinfo doesn't allow for producing subscripts and superscripts except % in the main text, we don't bother to reset \scriptfont and % \scriptscriptfont (which would also require loading a lot more fonts). % \def\resetmathfonts{% \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf \textfont\ttfam=\tentt \textfont\sffam=\tensf } % The font-changing commands redefine the meanings of \tenSTYLE, instead % of just \STYLE. We do this because \STYLE needs to also set the % current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire % \tenSTYLE to set the current font. % % Each font-changing command also sets the names \lsize (one size lower) % and \lllsize (three sizes lower). These relative commands are used in % the LaTeX logo and acronyms. % % This all needs generalizing, badly. % \def\textfonts{% \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl \def\curfontsize{text}% \def\lsize{reduced}\def\lllsize{smaller}% \resetmathfonts \setleading{\textleading}} \def\titlefonts{% \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy \let\tenttsl=\titlettsl \def\curfontsize{title}% \def\lsize{chap}\def\lllsize{subsec}% \resetmathfonts \setleading{27pt}} \def\titlefont#1{{\titlefonts\rmisbold #1}} \def\chapfonts{% \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl \def\curfontsize{chap}% \def\lsize{sec}\def\lllsize{text}% \resetmathfonts \setleading{19pt}} \def\secfonts{% \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl \def\curfontsize{sec}% \def\lsize{subsec}\def\lllsize{reduced}% \resetmathfonts \setleading{16pt}} \def\subsecfonts{% \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl \def\curfontsize{ssec}% \def\lsize{text}\def\lllsize{small}% \resetmathfonts \setleading{15pt}} \let\subsubsecfonts = \subsecfonts \def\reducedfonts{% \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy \let\tenttsl=\reducedttsl \def\curfontsize{reduced}% \def\lsize{small}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallfonts{% \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy \let\tenttsl=\smallttsl \def\curfontsize{small}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{10.5pt}} \def\smallerfonts{% \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy \let\tenttsl=\smallerttsl \def\curfontsize{smaller}% \def\lsize{smaller}\def\lllsize{smaller}% \resetmathfonts \setleading{9.5pt}} % Fonts for short table of contents. \setfont\shortcontrm\rmshape{12}{1000}{OT1} \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 \setfont\shortcontsl\slshape{12}{1000}{OT1} \setfont\shortconttt\ttshape{12}{1000}{OT1TT} % Define these just so they can be easily changed for other fonts. \def\angleleft{$\langle$} \def\angleright{$\rangle$} % Set the fonts to use with the @small... environments. \let\smallexamplefonts = \smallfonts % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample % can fit this many characters: % 8.5x11=86 smallbook=72 a4=90 a5=69 % If we use \scriptfonts (8pt), then we can fit this many characters: % 8.5x11=90+ smallbook=80 a4=90+ a5=77 % For me, subjectively, the few extra characters that fit aren't worth % the additional smallness of 8pt. So I'm making the default 9pt. % % By the way, for comparison, here's what fits with @example (10pt): % 8.5x11=71 smallbook=60 a4=75 a5=58 % --karl, 24jan03. % Set up the default fonts, so we can use them for creating boxes. % \definetextfontsizexi \message{markup,} % Check if we are currently using a typewriter font. Since all the % Computer Modern typewriter fonts have zero interword stretch (and % shrink), and it is reasonable to expect all typewriter fonts to have % this property, we can check that font parameter. % \def\ifmonospace{\ifdim\fontdimen3\font=0pt } % Markup style infrastructure. \defmarkupstylesetup\INITMACRO will % define and register \INITMACRO to be called on markup style changes. % \INITMACRO can check \currentmarkupstyle for the innermost % style and the set of \ifmarkupSTYLE switches for all styles % currently in effect. \newif\ifmarkupvar \newif\ifmarkupsamp \newif\ifmarkupkey %\newif\ifmarkupfile % @file == @samp. %\newif\ifmarkupoption % @option == @samp. \newif\ifmarkupcode \newif\ifmarkupkbd %\newif\ifmarkupenv % @env == @code. %\newif\ifmarkupcommand % @command == @code. \newif\ifmarkuptex % @tex (and part of @math, for now). \newif\ifmarkupexample \newif\ifmarkupverb \newif\ifmarkupverbatim \let\currentmarkupstyle\empty \def\setupmarkupstyle#1{% \csname markup#1true\endcsname \def\currentmarkupstyle{#1}% \markupstylesetup } \let\markupstylesetup\empty \def\defmarkupstylesetup#1{% \expandafter\def\expandafter\markupstylesetup \expandafter{\markupstylesetup #1}% \def#1% } % Markup style setup for left and right quotes. \defmarkupstylesetup\markupsetuplq{% \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuplqdefault \else \temp \fi } \defmarkupstylesetup\markupsetuprq{% \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname \ifx\temp\relax \markupsetuprqdefault \else \temp \fi } { \catcode`\'=\active \catcode`\`=\active \gdef\markupsetuplqdefault{\let`\lq} \gdef\markupsetuprqdefault{\let'\rq} \gdef\markupsetcodequoteleft{\let`\codequoteleft} \gdef\markupsetcodequoteright{\let'\codequoteright} } \let\markupsetuplqcode \markupsetcodequoteleft \let\markupsetuprqcode \markupsetcodequoteright % \let\markupsetuplqexample \markupsetcodequoteleft \let\markupsetuprqexample \markupsetcodequoteright % \let\markupsetuplqkbd \markupsetcodequoteleft \let\markupsetuprqkbd \markupsetcodequoteright % \let\markupsetuplqsamp \markupsetcodequoteleft \let\markupsetuprqsamp \markupsetcodequoteright % \let\markupsetuplqverb \markupsetcodequoteleft \let\markupsetuprqverb \markupsetcodequoteright % \let\markupsetuplqverbatim \markupsetcodequoteleft \let\markupsetuprqverbatim \markupsetcodequoteright % Allow an option to not use regular directed right quote/apostrophe % (char 0x27), but instead the undirected quote from cmtt (char 0x0d). % The undirected quote is ugly, so don't make it the default, but it % works for pasting with more pdf viewers (at least evince), the % lilypond developers report. xpdf does work with the regular 0x27. % \def\codequoteright{% \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax '% \else \char'15 \fi \else \char'15 \fi } % % and a similar option for the left quote char vs. a grave accent. % Modern fonts display ASCII 0x60 as a grave accent, so some people like % the code environments to do likewise. % \def\codequoteleft{% \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax % [Knuth] pp. 380,381,391 % \relax disables Spanish ligatures ?` and !` of \tt font. \relax`% \else \char'22 \fi \else \char'22 \fi } % Commands to set the quote options. % \parseargdef\codequoteundirected{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequoteundirected\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequoteundirected\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% \fi\fi } % \parseargdef\codequotebacktick{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxicodequotebacktick\endcsname = t% \else\ifx\temp\offword \expandafter\let\csname SETtxicodequotebacktick\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% \fi\fi } % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} % Count depth in font-changes, for error checks \newcount\fontdepth \fontdepth=0 % Font commands. % #1 is the font command (\sl or \it), #2 is the text to slant. % If we are in a monospaced environment, however, 1) always use \ttsl, % and 2) do not add an italic correction. \def\dosmartslant#1#2{% \ifusingtt {{\ttsl #2}\let\next=\relax}% {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% \next } \def\smartslanted{\dosmartslant\sl} \def\smartitalic{\dosmartslant\it} % Output an italic correction unless \next (presumed to be the following % character) is such as not to need one. \def\smartitaliccorrection{% \ifx\next,% \else\ifx\next-% \else\ifx\next.% \else\ptexslash \fi\fi\fi \aftersmartic } % Unconditional use \ttsl, and no ic. @var is set to this for defuns. \def\ttslanted#1{{\ttsl #1}} % @cite is like \smartslanted except unconditionally use \sl. We never want % ttsl for book titles, do we? \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} \def\aftersmartic{} \def\var#1{% \let\saveaftersmartic = \aftersmartic \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% \smartslanted{#1}% } \let\i=\smartitalic \let\slanted=\smartslanted \let\dfn=\smartslanted \let\emph=\smartitalic % Explicit font changes: @r, @sc, undocumented @ii. \def\r#1{{\rm #1}} % roman font \def\sc#1{{\smallcaps#1}} % smallcaps font \def\ii#1{{\it #1}} % italic font % @b, explicit bold. Also @strong. \def\b#1{{\bf #1}} \let\strong=\b % @sansserif, explicit sans. \def\sansserif#1{{\sf #1}} % We can't just use \exhyphenpenalty, because that only has effect at % the end of a paragraph. Restore normal hyphenation at the end of the % group within which \nohyphenation is presumably called. % \def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} \def\restorehyphenation{\hyphenchar\font = `- } % Set sfcode to normal for the chars that usually have another value. % Can't use plain's \frenchspacing because it uses the `\x notation, and % sometimes \x has an active definition that messes things up. % \catcode`@=11 \def\plainfrenchspacing{% \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m \def\endofsentencespacefactor{1000}% for @. and friends } \def\plainnonfrenchspacing{% \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 \def\endofsentencespacefactor{3000}% for @. and friends } \catcode`@=\other \def\endofsentencespacefactor{3000}% default % @t, explicit typewriter. \def\t#1{% {\tt \rawbackslash \plainfrenchspacing #1}% \null } % @samp. \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} % @indicateurl is \samp, that is, with quotes. \let\indicateurl=\samp % @code (and similar) prints in typewriter, but with spaces the same % size as normal in the surrounding text, without hyphenation, etc. % This is a subroutine for that. \def\tclose#1{% {% % Change normal interword space to be same as for the current font. \spaceskip = \fontdimen2\font % % Switch to typewriter. \tt % % But `\ ' produces the large typewriter interword space. \def\ {{\spaceskip = 0pt{} }}% % % Turn off hyphenation. \nohyphenation % \rawbackslash \plainfrenchspacing #1% }% \null % reset spacefactor to 1000 } % We *must* turn on hyphenation at `-' and `_' in @code. % Otherwise, it is too hard to avoid overfull hboxes % in the Emacs manual, the Library manual, etc. % % Unfortunately, TeX uses one parameter (\hyphenchar) to control % both hyphenation at - and hyphenation within words. % We must therefore turn them both off (\tclose does that) % and arrange explicitly to hyphenate at a dash. % -- rms. { \catcode`\-=\active \catcode`\_=\active \catcode`\'=\active \catcode`\`=\active \global\let'=\rq \global\let`=\lq % default definitions % \global\def\code{\begingroup \setupmarkupstyle{code}% % The following should really be moved into \setupmarkupstyle handlers. \catcode\dashChar=\active \catcode\underChar=\active \ifallowcodebreaks \let-\codedash \let_\codeunder \else \let-\normaldash \let_\realunder \fi \codex } } \def\codex #1{\tclose{#1}\endgroup} \def\normaldash{-} \def\codedash{-\discretionary{}{}{}} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) % will therefore expand the active definition of _, which is us % (inside @code that is), therefore an endless loop. \ifusingtt{\ifmmode \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. \else\normalunderscore \fi \discretionary{}{}{}}% {\_}% } % An additional complication: the above will allow breaks after, e.g., % each of the four underscores in __typeof__. This is bad. % @allowcodebreaks provides a document-level way to turn breaking at - % and _ on and off. % \newif\ifallowcodebreaks \allowcodebreakstrue \def\keywordtrue{true} \def\keywordfalse{false} \parseargdef\allowcodebreaks{% \def\txiarg{#1}% \ifx\txiarg\keywordtrue \allowcodebreakstrue \else\ifx\txiarg\keywordfalse \allowcodebreaksfalse \else \errhelp = \EMsimple \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% \fi\fi } % For @command, @env, @file, @option quotes seem unnecessary, % so use \code rather than \samp. \let\command=\code \let\env=\code \let\file=\code \let\option=\code % @uref (abbreviation for `urlref') takes an optional (comma-separated) % second argument specifying the text to display and an optional third % arg as text to display instead of (rather than in addition to) the url % itself. First (mandatory) arg is the url. % (This \urefnobreak definition isn't used now, leaving it for a while % for comparison.) \def\urefnobreak#1{\dourefnobreak #1,,,\finish} \def\dourefnobreak#1,#2,#3,#4\finish{\begingroup \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url \fi \else \code{#1}% only url given, so show it \fi \fi \endlink \endgroup} % This \urefbreak definition is the active one. \def\urefbreak{\begingroup \urefcatcodes \dourefbreak} \let\uref=\urefbreak \def\dourefbreak#1{\urefbreakfinish #1,,,\finish} \def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example \unsepspaces \pdfurl{#1}% \setbox0 = \hbox{\ignorespaces #3}% \ifdim\wd0 > 0pt \unhbox0 % third arg given, show only that \else \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \ifpdf \unhbox0 % PDF: 2nd arg given, show only it \else \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url \fi \else \urefcode{#1}% only url given, so show it \fi \fi \endlink \endgroup} % Allow line breaks around only a few characters (only). \def\urefcatcodes{% \catcode\ampChar=\active \catcode\dotChar=\active \catcode\hashChar=\active \catcode\questChar=\active \catcode\slashChar=\active } { \urefcatcodes % \global\def\urefcode{\begingroup \setupmarkupstyle{code}% \urefcatcodes \let&\urefcodeamp \let.\urefcodedot \let#\urefcodehash \let?\urefcodequest \let/\urefcodeslash \codex } % % By default, they are just regular characters. \global\def&{\normalamp} \global\def.{\normaldot} \global\def#{\normalhash} \global\def?{\normalquest} \global\def/{\normalslash} } % we put a little stretch before and after the breakable chars, to help % line breaking of long url's. The unequal skips make look better in % cmtt at least, especially for dots. \def\urefprestretch{\urefprebreak \hskip0pt plus.13em } \def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } % \def\urefcodeamp{\urefprestretch \&\urefpoststretch} \def\urefcodedot{\urefprestretch .\urefpoststretch} \def\urefcodehash{\urefprestretch \#\urefpoststretch} \def\urefcodequest{\urefprestretch ?\urefpoststretch} \def\urefcodeslash{\futurelet\next\urefcodeslashfinish} { \catcode`\/=\active \global\def\urefcodeslashfinish{% \urefprestretch \slashChar % Allow line break only after the final / in a sequence of % slashes, to avoid line break between the slashes in http://. \ifx\next/\else \urefpoststretch \fi } } % One more complication: by default we'll break after the special % characters, but some people like to break before the special chars, so % allow that. Also allow no breaking at all, for manual control. % \parseargdef\urefbreakstyle{% \def\txiarg{#1}% \ifx\txiarg\wordnone \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordbefore \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} \else\ifx\txiarg\wordafter \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} \else \errhelp = \EMsimple \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% \fi\fi\fi } \def\wordafter{after} \def\wordbefore{before} \def\wordnone{none} \urefbreakstyle after % @url synonym for @uref, since that's how everyone uses it. % \let\url=\uref % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces \pdfurl{mailto:#1}% \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi \endlink \endgroup} \else \let\email=\uref \fi % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), % `example' (@kbd uses ttsl only inside of @example and friends), % or `code' (@kbd uses normal tty font always). \parseargdef\kbdinputstyle{% \def\txiarg{#1}% \ifx\txiarg\worddistinct \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% \else\ifx\txiarg\wordexample \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% \else\ifx\txiarg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% \else \errhelp = \EMsimple \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% \fi\fi\fi } \def\worddistinct{distinct} \def\wordexample{example} \def\wordcode{code} % Default is `distinct'. \kbdinputstyle distinct % @kbd is like @code, except that if the argument is just one @key command, % then @kbd has no effect. \def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} \def\xkey{\key} \def\kbdsub#1#2#3\par{% \def\one{#1}\def\three{#3}\def\threex{??}% \ifx\one\xkey\ifx\threex\three \key{#2}% \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi } % definition of @key that produces a lozenge. Doesn't adjust to text size. %\setfont\keyrm\rmshape{8}{1000}{OT1} %\font\keysy=cmsy9 %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% % \vbox{\hrule\kern-0.4pt % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% % \kern-0.4pt\hrule}% % \kern-.06em\raise0.4pt\hbox{\angleright}}}} % definition of @key with no lozenge. If the current font is already % monospace, don't change it; that way, we respect @kbdinputstyle. But % if it isn't monospace, then use \tt. % \def\key#1{{\setupmarkupstyle{key}% \nohyphenation \ifmonospace\else\tt\fi #1}\null} % @clicksequence{File @click{} Open ...} \def\clicksequence#1{\begingroup #1\endgroup} % @clickstyle @arrow (by default) \parseargdef\clickstyle{\def\click{#1}} \def\click{\arrow} % Typeset a dimension, e.g., `in' or `pt'. The only reason for the % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. % \def\dmn#1{\thinspace #1} % @l was never documented to mean ``switch to the Lisp font'', % and it is not used as such in any manual I can find. We need it for % Polish suppressed-l. --karl, 22sep96. %\def\l#1{{\li #1}\null} % @acronym for "FBI", "NATO", and the like. % We print this one point size smaller, since it's intended for % all-uppercase. % \def\acronym#1{\doacronym #1,,\finish} \def\doacronym#1,#2,#3\finish{% {\selectfonts\lsize #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @abbr for "Comput. J." and the like. % No font change, but don't do end-of-sentence spacing. % \def\abbr#1{\doabbr #1,,\finish} \def\doabbr#1,#2,#3\finish{% {\plainfrenchspacing #1}% \def\temp{#2}% \ifx\temp\empty \else \space ({\unsepspaces \ignorespaces \temp \unskip})% \fi \null % reset \spacefactor=1000 } % @asis just yields its argument. Used with @table, for example. % \def\asis#1{#1} % @math outputs its argument in math mode. % % One complication: _ usually means subscripts, but it could also mean % an actual _ character, as in @math{@var{some_variable} + 1}. So make % _ active, and distinguish by seeing if the current family is \slfam, % which is what @var uses. { \catcode`\_ = \active \gdef\mathunderscore{% \catcode`\_=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% } } % Another complication: we want \\ (and @\) to output a math (or tt) \. % FYI, plain.tex uses \\ as a temporary control sequence (for no % particular reason), but this is not advertised and we don't care. % % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} % \def\math{% \tex \mathunderscore \let\\ = \mathbackslash \mathactive % make the texinfo accent commands work in math mode \let\"=\ddot \let\'=\acute \let\==\bar \let\^=\hat \let\`=\grave \let\u=\breve \let\v=\check \let\~=\tilde \let\dotaccent=\dot $\finishmath } \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. % Some active characters (such as <) are spaced differently in math. % We have to reset their definitions in case the @math was an argument % to a command which sets the catcodes (such as @item or @section). % { \catcode`^ = \active \catcode`< = \active \catcode`> = \active \catcode`+ = \active \catcode`' = \active \gdef\mathactive{% \let^ = \ptexhat \let< = \ptexless \let> = \ptexgtr \let+ = \ptexplus \let' = \ptexquoteright } } % ctrl is no longer a Texinfo command, but leave this definition for fun. \def\ctrl #1{{\tt \rawbackslash \hat}#1} % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. % Ignore unless FMTNAME == tex; then it is like @iftex and @tex, % except specified as a normal braced arg, so no newlines to worry about. % \def\outfmtnametex{tex} % \long\def\inlinefmt#1{\doinlinefmt #1,\finish} \long\def\doinlinefmt#1,#2,\finish{% \def\inlinefmtname{#1}% \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi } % For raw, must switch into @tex before parsing the argument, to avoid % setting catcodes prematurely. Doing it this way means that, for % example, @inlineraw{html, foo{bar} gets a parse error instead of being % ignored. But this isn't important because if people want a literal % *right* brace they would have to use a command anyway, so they may as % well use a command to get a left brace too. We could re-use the % delimiter character idea from \verb, but it seems like overkill. % \long\def\inlineraw{\tex \doinlineraw} \long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} \def\doinlinerawtwo#1,#2,\finish{% \def\inlinerawname{#1}% \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi \endgroup % close group opened by \tex. } \message{glyphs,} % and logos. % @@ prints an @, as does @atchar{}. \def\@{\char64 } \let\atchar=\@ % @{ @} @lbracechar{} @rbracechar{} all generate brace characters. % Unless we're in typewriter, use \ecfont because the CM text fonts do % not have braces, and we don't want to switch into math. \def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} \def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} \let\{=\mylbrace \let\lbracechar=\{ \let\}=\myrbrace \let\rbracechar=\} \begingroup % Definitions to produce \{ and \} commands for indices, % and @{ and @} for the aux/toc files. \catcode`\{ = \other \catcode`\} = \other \catcode`\[ = 1 \catcode`\] = 2 \catcode`\! = 0 \catcode`\\ = \other !gdef!lbracecmd[\{]% !gdef!rbracecmd[\}]% !gdef!lbraceatcmd[@{]% !gdef!rbraceatcmd[@}]% !endgroup % @comma{} to avoid , parsing problems. \let\comma = , % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. \let\, = \ptexc \let\dotaccent = \ptexdot \def\ringaccent#1{{\accent23 #1}} \let\tieaccent = \ptext \let\ubaraccent = \ptexb \let\udotaccent = \d % Other special characters: @questiondown @exclamdown @ordf @ordm % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} \def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} \def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} % Dotless i and dotless j, used for accents. \def\imacro{i} \def\jmacro{j} \def\dotless#1{% \def\temp{#1}% \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi \else \errmessage{@dotless can be used only with i or j}% \fi\fi } % The \TeX{} logo, as in plain, but resetting the spacing so that a % period following counts as ending a sentence. (Idea found in latex.) % \edef\TeX{\TeX \spacefactor=1000 } % @LaTeX{} logo. Not quite the same results as the definition in % latex.ltx, since we use a different font for the raised A; it's most % convenient for us to use an explicitly smaller font, rather than using % the \scriptstyle font (since we don't reset \scriptstyle and % \scriptscriptstyle). % \def\LaTeX{% L\kern-.36em {\setbox0=\hbox{T}% \vbox to \ht0{\hbox{% \ifx\textnominalsize\xwordpt % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. % Revert to plain's \scriptsize, which is 7pt. \count255=\the\fam $\fam\count255 \scriptstyle A$% \else % For 11pt, we can use our lllsize. \selectfonts\lllsize A% \fi }% \vss }}% \kern-.15em \TeX } % Some math mode symbols. \def\bullet{$\ptexbullet$} \def\geq{\ifmmode \ge\else $\ge$\fi} \def\leq{\ifmmode \le\else $\le$\fi} \def\minus{\ifmmode -\else $-$\fi} % @dots{} outputs an ellipsis using the current font. % We do .5em per period so that it has the same spacing in the cm % typewriter fonts as three actual period characters; on the other hand, % in other typewriter fonts three periods are wider than 1.5em. So do % whichever is larger. % \def\dots{% \leavevmode \setbox0=\hbox{...}% get width of three periods \ifdim\wd0 > 1.5em \dimen0 = \wd0 \else \dimen0 = 1.5em \fi \hbox to \dimen0{% \hskip 0pt plus.25fil .\hskip 0pt plus1fil .\hskip 0pt plus1fil .\hskip 0pt plus.5fil }% } % @enddots{} is an end-of-sentence ellipsis. % \def\enddots{% \dots \spacefactor=\endofsentencespacefactor } % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. % % Since these characters are used in examples, they should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. % \def\point{$\star$} \def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} \def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} \def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} \def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} % The @error{} command. % Adapted from the TeXbook's \boxit. % \newbox\errorbox % {\tentt \global\dimen0 = 3em}% Width of the box. \dimen2 = .55pt % Thickness of rules % The text. (`r' is open on the right, `e' somewhat less so on the left.) \setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} % \setbox\errorbox=\hbox to \dimen0{\hfil \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. \advance\hsize by -2\dimen2 % Rules. \vbox{% \hrule height\dimen2 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. \kern3pt\vrule width\dimen2}% Space to right. \hrule height\dimen2} \hfil} % \def\error{\leavevmode\lower.7ex\copy\errorbox} % @pounds{} is a sterling sign, which Knuth put in the CM italic font. % \def\pounds{{\it\$}} % @euro{} comes from a separate font, depending on the current style. % We use the free feym* fonts from the eurosym package by Henrik % Theiling, which support regular, slanted, bold and bold slanted (and % "outlined" (blackboard board, sort of) versions, which we don't need). % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. % % Although only regular is the truly official Euro symbol, we ignore % that. The Euro is designed to be slightly taller than the regular % font height. % % feymr - regular % feymo - slanted % feybr - bold % feybo - bold slanted % % There is no good (free) typewriter version, to my knowledge. % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. % Hmm. % % Also doesn't work in math. Do we need to do math with euro symbols? % Hope not. % % \def\euro{{\eurofont e}} \def\eurofont{% % We set the font at each command, rather than predefining it in % \textfonts and the other font-switching commands, so that % installations which never need the symbol don't have to have the % font installed. % % There is only one designed size (nominal 10pt), so we always scale % that to the current nominal size. % % By the way, simply using "at 1em" works for cmr10 and the like, but % does not work for cmbx10 and other extended/shrunken fonts. % \def\eurosize{\csname\curfontsize nominalsize\endcsname}% % \ifx\curfontstyle\bfstylename % bold: \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize \else % regular: \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize \fi \thiseurofont } % Glyphs from the EC fonts. We don't use \let for the aliases, because % sometimes we redefine the original macro, and the alias should reflect % the redefinition. % % Use LaTeX names for the Icelandic letters. \def\DH{{\ecfont \char"D0}} % Eth \def\dh{{\ecfont \char"F0}} % eth \def\TH{{\ecfont \char"DE}} % Thorn \def\th{{\ecfont \char"FE}} % thorn % \def\guillemetleft{{\ecfont \char"13}} \def\guillemotleft{\guillemetleft} \def\guillemetright{{\ecfont \char"14}} \def\guillemotright{\guillemetright} \def\guilsinglleft{{\ecfont \char"0E}} \def\guilsinglright{{\ecfont \char"0F}} \def\quotedblbase{{\ecfont \char"12}} \def\quotesinglbase{{\ecfont \char"0D}} % % This positioning is not perfect (see the ogonek LaTeX package), but % we have the precomposed glyphs for the most common cases. We put the % tests to use those glyphs in the single \ogonek macro so we have fewer % dummy definitions to worry about for index entries, etc. % % ogonek is also used with other letters in Lithuanian (IOU), but using % the precomposed glyphs for those is not so easy since they aren't in % the same EC font. \def\ogonek#1{{% \def\temp{#1}% \ifx\temp\macrocharA\Aogonek \else\ifx\temp\macrochara\aogonek \else\ifx\temp\macrocharE\Eogonek \else\ifx\temp\macrochare\eogonek \else \ecfont \setbox0=\hbox{#1}% \ifdim\ht0=1ex\accent"0C #1% \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% \fi \fi\fi\fi\fi }% } \def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} \def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} % % Use the ec* fonts (cm-super in outline format) for non-CM glyphs. \def\ecfont{% % We can't distinguish serif/sans and italic/slanted, but this % is used for crude hacks anyway (like adding French and German % quotes to documents typeset with CM, where we lose kerning), so % hopefully nobody will notice/care. \edef\ecsize{\csname\curfontsize ecsize\endcsname}% \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% \ifmonospace % typewriter: \font\thisecfont = ectt\ecsize \space at \nominalsize \else \ifx\curfontstyle\bfstylename % bold: \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize \else % regular: \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize \fi \fi \thisecfont } % @registeredsymbol - R in a circle. The font for the R should really % be smaller yet, but lllsize is the best we can do for now. % Adapted from the plain.tex definition of \copyright. % \def\registeredsymbol{% $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% \hfil\crcr\Orb}}% }$% } % @textdegree - the normal degrees sign. % \def\textdegree{$^\circ$} % Laurent Siebenmann reports \Orb undefined with: % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 % so we'll define it if necessary. % \ifx\Orb\thisisundefined \def\Orb{\mathhexbox20D} \fi % Quotes. \chardef\quotedblleft="5C \chardef\quotedblright=`\" \chardef\quoteleft=`\` \chardef\quoteright=`\' \message{page headings,} \newskip\titlepagetopglue \titlepagetopglue = 1.5in \newskip\titlepagebottomglue \titlepagebottomglue = 2pc % First the title page. Must do @settitle before @titlepage. \newif\ifseenauthor \newif\iffinishedtitlepage % Do an implicit @contents or @shortcontents after @end titlepage if the % user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. % \newif\ifsetcontentsaftertitlepage \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue \newif\ifsetshortcontentsaftertitlepage \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue \parseargdef\shorttitlepage{% \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% \endgroup\page\hbox{}\page} \envdef\titlepage{% % Open one extra group, as we want to close it in the middle of \Etitlepage. \begingroup \parindent=0pt \textfonts % Leave some space at the very top of the page. \vglue\titlepagetopglue % No rule at page bottom unless we print one at the top with @title. \finishedtitlepagetrue % % Most title ``pages'' are actually two pages long, with space % at the top of the second. We don't want the ragged left on the second. \let\oldpage = \page \def\page{% \iffinishedtitlepage\else \finishtitlepage \fi \let\page = \oldpage \page \null }% } \def\Etitlepage{% \iffinishedtitlepage\else \finishtitlepage \fi % It is important to do the page break before ending the group, % because the headline and footline are only empty inside the group. % If we use the new definition of \page, we always get a blank page % after the title page, which we certainly don't want. \oldpage \endgroup % % Need this before the \...aftertitlepage checks so that if they are % in effect the toc pages will come out with page numbers. \HEADINGSon % % If they want short, they certainly want long too. \ifsetshortcontentsaftertitlepage \shortcontents \contents \global\let\shortcontents = \relax \global\let\contents = \relax \fi % \ifsetcontentsaftertitlepage \contents \global\let\contents = \relax \global\let\shortcontents = \relax \fi } \def\finishtitlepage{% \vskip4pt \hrule height 2pt width \hsize \vskip\titlepagebottomglue \finishedtitlepagetrue } % Settings used for typesetting titles: no hyphenation, no indentation, % don't worry much about spacing, ragged right. This should be used % inside a \vbox, and fonts need to be set appropriately first. Because % it is always used for titles, nothing else, we call \rmisbold. \par % should be specified before the end of the \vbox, since a vbox is a group. % \def\raggedtitlesettings{% \rmisbold \hyphenpenalty=10000 \parindent=0pt \tolerance=5000 \ptexraggedright } % Macros to be used within @titlepage: \let\subtitlerm=\tenrm \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} \parseargdef\title{% \checkenv\titlepage \vbox{\titlefonts \raggedtitlesettings #1\par}% % print a rule at the page bottom also. \finishedtitlepagefalse \vskip4pt \hrule height 4pt width \hsize \vskip4pt } \parseargdef\subtitle{% \checkenv\titlepage {\subtitlefont \rightline{#1}}% } % @author should come last, but may come many times. % It can also be used inside @quotation. % \parseargdef\author{% \def\temp{\quotation}% \ifx\thisenv\temp \def\quotationauthor{#1}% printed in \Equotation. \else \checkenv\titlepage \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi {\secfonts\rmisbold \leftline{#1}}% \fi } % Set up page headings and footings. \let\thispage=\folio \newtoks\evenheadline % headline on even pages \newtoks\oddheadline % headline on odd pages \newtoks\evenfootline % footline on even pages \newtoks\oddfootline % footline on odd pages % Now make TeX use those variables \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline \else \the\evenheadline \fi}} \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}\HEADINGShook} \let\HEADINGShook=\relax % Commands to set those variables. % For example, this is what @headings on does % @evenheading @thistitle|@thispage|@thischapter % @oddheading @thischapter|@thispage|@thistitle % @evenfooting @thisfile|| % @oddfooting ||@thisfile \def\evenheading{\parsearg\evenheadingxxx} \def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} \def\evenheadingyyy #1\|#2\|#3\|#4\finish{% \global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddheading{\parsearg\oddheadingxxx} \def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} \def\oddheadingyyy #1\|#2\|#3\|#4\finish{% \global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% \def\evenfooting{\parsearg\evenfootingxxx} \def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} \def\evenfootingyyy #1\|#2\|#3\|#4\finish{% \global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} \def\oddfooting{\parsearg\oddfootingxxx} \def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} \def\oddfootingyyy #1\|#2\|#3\|#4\finish{% \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% % % Leave some space for the footline. Hopefully ok to assume % @evenfooting will not be used by itself. \global\advance\pageheight by -12pt \global\advance\vsize by -12pt } \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} % @evenheadingmarks top \thischapter <- chapter at the top of a page % @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page % % The same set of arguments for: % % @oddheadingmarks % @evenfootingmarks % @oddfootingmarks % @everyheadingmarks % @everyfootingmarks \def\evenheadingmarks{\headingmarks{even}{heading}} \def\oddheadingmarks{\headingmarks{odd}{heading}} \def\evenfootingmarks{\headingmarks{even}{footing}} \def\oddfootingmarks{\headingmarks{odd}{footing}} \def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} \headingmarks{odd}{heading}{#1} } \def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} \headingmarks{odd}{footing}{#1} } % #1 = even/odd, #2 = heading/footing, #3 = top/bottom. \def\headingmarks#1#2#3 {% \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname \global\expandafter\let\csname get#1#2marks\endcsname \temp } \everyheadingmarks bottom \everyfootingmarks bottom % @headings double turns headings on for double-sided printing. % @headings single turns headings on for single-sided printing. % @headings off turns them off. % @headings on same as @headings double, retained for compatibility. % @headings after turns on double-sided headings after this page. % @headings doubleafter turns on double-sided headings after this page. % @headings singleafter turns on single-sided headings after this page. % By default, they are off at the start of a document, % and turned `on' after @end titlepage. \def\headings #1 {\csname HEADINGS#1\endcsname} \def\headingsoff{% non-global headings elimination \evenheadline={\hfil}\evenfootline={\hfil}% \oddheadline={\hfil}\oddfootline={\hfil}% } \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting \HEADINGSoff % it's the default % When we turn headings on, set the page number to 1. % For double-sided printing, put current file name in lower left corner, % chapter name on inside top of right hand pages, document % title on inside top of left hand pages, and page numbers on outside top % edge of all pages. \def\HEADINGSdouble{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \let\contentsalignmacro = \chappager % For single-sided printing, chapter title goes across top left of page, % page number on top right. \def\HEADINGSsingle{% \global\pageno=1 \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } \def\HEADINGSon{\HEADINGSdouble} \def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} \let\HEADINGSdoubleafter=\HEADINGSafter \def\HEADINGSdoublex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chapoddpage } \def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} \def\HEADINGSsinglex{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} \global\oddheadline={\line{\thischapter\hfil\folio}} \global\let\contentsalignmacro = \chappager } % Subroutines used in generating headings % This produces Day Month Year style of output. % Only define if not already defined, in case a txi-??.tex file has set % up a different format (e.g., txi-cs.tex does this). \ifx\today\thisisundefined \def\today{% \number\day\space \ifcase\month \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec \fi \space\number\year} \fi % @settitle line... specifies the title of the document, for headings. % It generates no output of its own. \def\thistitle{\putwordNoTitle} \def\settitle{\parsearg{\gdef\thistitle}} \message{tables,} % Tables -- @table, @ftable, @vtable, @item(x). % default indentation of table text \newdimen\tableindent \tableindent=.8in % default indentation of @itemize and @enumerate text \newdimen\itemindent \itemindent=.3in % margin between end of table item and start of table text. \newdimen\itemmargin \itemmargin=.1in % used internally for \itemindent minus \itemmargin \newdimen\itemmax % Note @table, @ftable, and @vtable define @item, @itemx, etc., with % these defs. % They also define \itemindex % to index the item name in whatever manner is desired (perhaps none). \newif\ifitemxneedsnegativevskip \def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} \def\internalBitem{\smallbreak \parsearg\itemzzz} \def\internalBitemx{\itemxpar \parsearg\itemzzz} \def\itemzzz #1{\begingroup % \advance\hsize by -\rightskip \advance\hsize by -\tableindent \setbox0=\hbox{\itemindicate{#1}}% \itemindex{#1}% \nobreak % This prevents a break before @itemx. % % If the item text does not fit in the space we have, put it on a line % by itself, and do not allow a page break either before or after that % line. We do not start a paragraph here because then if the next % command is, e.g., @kindex, the whatsit would get put into the % horizontal list on a line by itself, resulting in extra blank space. \ifdim \wd0>\itemmax % % Make this a paragraph so we get the \parskip glue and wrapping, % but leave it ragged-right. \begingroup \advance\leftskip by-\tableindent \advance\hsize by\tableindent \advance\rightskip by0pt plus1fil\relax \leavevmode\unhbox0\par \endgroup % % We're going to be starting a paragraph, but we don't want the % \parskip glue -- logically it's part of the @item we just started. \nobreak \vskip-\parskip % % Stop a page break at the \parskip glue coming up. However, if % what follows is an environment such as @example, there will be no % \parskip glue; then the negative vskip we just inserted would % cause the example and the item to crash together. So we use this % bizarre value of 10001 as a signal to \aboveenvbreak to insert % \parskip glue after all. Section titles are handled this way also. % \penalty 10001 \endgroup \itemxneedsnegativevskipfalse \else % The item text fits into the space. Start a paragraph, so that the % following text (if any) will end up on the same line. \noindent % Do this with kerns and \unhbox so that if there is a footnote in % the item text, it can migrate to the main vertical list and % eventually be printed. \nobreak\kern-\tableindent \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 \unhbox0 \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue \fi } \def\item{\errmessage{@item while not in a list environment}} \def\itemx{\errmessage{@itemx while not in a list environment}} % @table, @ftable, @vtable. \envdef\table{% \let\itemindex\gobble \tablecheck{table}% } \envdef\ftable{% \def\itemindex ##1{\doind {fn}{\code{##1}}}% \tablecheck{ftable}% } \envdef\vtable{% \def\itemindex ##1{\doind {vr}{\code{##1}}}% \tablecheck{vtable}% } \def\tablecheck#1{% \ifnum \the\catcode`\^^M=\active \endgroup \errmessage{This command won't work in this context; perhaps the problem is that we are \inenvironment\thisenv}% \def\next{\doignore{#1}}% \else \let\next\tablex \fi \next } \def\tablex#1{% \def\itemindicate{#1}% \parsearg\tabley } \def\tabley#1{% {% \makevalueexpandable \edef\temp{\noexpand\tablez #1\space\space\space}% \expandafter }\temp \endtablez } \def\tablez #1 #2 #3 #4\endtablez{% \aboveenvbreak \ifnum 0#1>0 \advance \leftskip by #1\mil \fi \ifnum 0#2>0 \tableindent=#2\mil \fi \ifnum 0#3>0 \advance \rightskip by #3\mil \fi \itemmax=\tableindent \advance \itemmax by -\itemmargin \advance \leftskip by \tableindent \exdentamount=\tableindent \parindent = 0pt \parskip = \smallskipamount \ifdim \parskip=0pt \parskip=2pt \fi \let\item = \internalBitem \let\itemx = \internalBitemx } \def\Etable{\endgraf\afterenvbreak} \let\Eftable\Etable \let\Evtable\Etable \let\Eitemize\Etable \let\Eenumerate\Etable % This is the counter used by @enumerate, which is really @itemize \newcount \itemno \envdef\itemize{\parsearg\doitemize} \def\doitemize#1{% \aboveenvbreak \itemmax=\itemindent \advance\itemmax by -\itemmargin \advance\leftskip by \itemindent \exdentamount=\itemindent \parindent=0pt \parskip=\smallskipamount \ifdim\parskip=0pt \parskip=2pt \fi % % Try typesetting the item mark that if the document erroneously says % something like @itemize @samp (intending @table), there's an error % right away at the @itemize. It's not the best error message in the % world, but it's better than leaving it to the @item. This means if % the user wants an empty mark, they have to say @w{} not just @w. \def\itemcontents{#1}% \setbox0 = \hbox{\itemcontents}% % % @itemize with no arg is equivalent to @itemize @bullet. \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi % \let\item=\itemizeitem } % Definition of @item while inside @itemize and @enumerate. % \def\itemizeitem{% \advance\itemno by 1 % for enumerations {\let\par=\endgraf \smallbreak}% reasonable place to break {% % If the document has an @itemize directly after a section title, a % \nobreak will be last on the list, and \sectionheading will have % done a \vskip-\parskip. In that case, we don't want to zero % parskip, or the item text will crash with the heading. On the % other hand, when there is normal text preceding the item (as there % usually is), we do want to zero parskip, or there would be too much % space. In that case, we won't have a \nobreak before. At least % that's the theory. \ifnum\lastpenalty<10000 \parskip=0in \fi \noindent \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% % \vadjust{\penalty 1200}}% not good to break after first line of item. \flushcr } % \splitoff TOKENS\endmark defines \first to be the first token in % TOKENS, and \rest to be the remainder. % \def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% % Allow an optional argument of an uppercase letter, lowercase letter, % or number, to specify the first label in the enumerated list. No % argument is the same as `1'. % \envparseargdef\enumerate{\enumeratey #1 \endenumeratey} \def\enumeratey #1 #2\endenumeratey{% % If we were given no argument, pretend we were given `1'. \def\thearg{#1}% \ifx\thearg\empty \def\thearg{1}\fi % % Detect if the argument is a single token. If so, it might be a % letter. Otherwise, the only valid thing it can be is a number. % (We will always have one token, because of the test we just made. % This is a good thing, since \splitoff doesn't work given nothing at % all -- the first parameter is undelimited.) \expandafter\splitoff\thearg\endmark \ifx\rest\empty % Only one token in the argument. It could still be anything. % A ``lowercase letter'' is one whose \lccode is nonzero. % An ``uppercase letter'' is one whose \lccode is both nonzero, and % not equal to itself. % Otherwise, we assume it's a number. % % We need the \relax at the end of the \ifnum lines to stop TeX from % continuing to look for a . % \ifnum\lccode\expandafter`\thearg=0\relax \numericenumerate % a number (we hope) \else % It's a letter. \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax \lowercaseenumerate % lowercase letter \else \uppercaseenumerate % uppercase letter \fi \fi \else % Multiple tokens in the argument. We hope it's a number. \numericenumerate \fi } % An @enumerate whose labels are integers. The starting integer is % given in \thearg. % \def\numericenumerate{% \itemno = \thearg \startenumeration{\the\itemno}% } % The starting (lowercase) letter is in \thearg. \def\lowercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more lowercase letters in @enumerate; get a bigger alphabet}% \fi \char\lccode\itemno }% } % The starting (uppercase) letter is in \thearg. \def\uppercaseenumerate{% \itemno = \expandafter`\thearg \startenumeration{% % Be sure we're not beyond the end of the alphabet. \ifnum\itemno=0 \errmessage{No more uppercase letters in @enumerate; get a bigger alphabet} \fi \char\uccode\itemno }% } % Call \doitemize, adding a period to the first argument and supplying the % common last two arguments. Also subtract one from the initial value in % \itemno, since @item increments \itemno. % \def\startenumeration#1{% \advance\itemno by -1 \doitemize{#1.}\flushcr } % @alphaenumerate and @capsenumerate are abbreviations for giving an arg % to @enumerate. % \def\alphaenumerate{\enumerate{a}} \def\capsenumerate{\enumerate{A}} \def\Ealphaenumerate{\Eenumerate} \def\Ecapsenumerate{\Eenumerate} % @multitable macros % Amy Hendrickson, 8/18/94, 3/6/96 % % @multitable ... @end multitable will make as many columns as desired. % Contents of each column will wrap at width given in preamble. Width % can be specified either with sample text given in a template line, % or in percent of \hsize, the current width of text on page. % Table can continue over pages but will only break between lines. % To make preamble: % % Either define widths of columns in terms of percent of \hsize: % @multitable @columnfractions .25 .3 .45 % @item ... % % Numbers following @columnfractions are the percent of the total % current hsize to be used for each column. You may use as many % columns as desired. % Or use a template: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item ... % using the widest term desired in each column. % Each new table line starts with @item, each subsequent new column % starts with @tab. Empty columns may be produced by supplying @tab's % with nothing between them for as many times as empty columns are needed, % ie, @tab@tab@tab will produce two empty columns. % @item, @tab do not need to be on their own lines, but it will not hurt % if they are. % Sample multitable: % @multitable {Column 1 template} {Column 2 template} {Column 3 template} % @item first col stuff @tab second col stuff @tab third col % @item % first col stuff % @tab % second col stuff % @tab % third col % @item first col stuff @tab second col stuff % @tab Many paragraphs of text may be used in any column. % % They will wrap at the width determined by the template. % @item@tab@tab This will be in third column. % @end multitable % Default dimensions may be reset by user. % @multitableparskip is vertical space between paragraphs in table. % @multitableparindent is paragraph indent in table. % @multitablecolmargin is horizontal space to be left between columns. % @multitablelinespace is space to leave between table items, baseline % to baseline. % 0pt means it depends on current normal line spacing. % \newskip\multitableparskip \newskip\multitableparindent \newdimen\multitablecolspace \newskip\multitablelinespace \multitableparskip=0pt \multitableparindent=6pt \multitablecolspace=12pt \multitablelinespace=0pt % Macros used to set up halign preamble: % \let\endsetuptable\relax \def\xendsetuptable{\endsetuptable} \let\columnfractions\relax \def\xcolumnfractions{\columnfractions} \newif\ifsetpercent % #1 is the @columnfraction, usually a decimal number like .5, but might % be just 1. We just use it, whatever it is. % \def\pickupwholefraction#1 {% \global\advance\colcount by 1 \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% \setuptable } \newcount\colcount \def\setuptable#1{% \def\firstarg{#1}% \ifx\firstarg\xendsetuptable \let\go = \relax \else \ifx\firstarg\xcolumnfractions \global\setpercenttrue \else \ifsetpercent \let\go\pickupwholefraction \else \global\advance\colcount by 1 \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a % separator; typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi \fi \ifx\go\pickupwholefraction % Put the argument back for the \pickupwholefraction call, so % we'll always have a period there to be parsed. \def\go{\pickupwholefraction#1}% \else \let\go = \setuptable \fi% \fi \go } % multitable-only commands. % % @headitem starts a heading row, which we typeset in bold. % Assignments have to be global since we are inside the implicit group % of an alignment entry. \everycr resets \everytab so we don't have to % undo it ourselves. \def\headitemfont{\b}% for people to use in the template row; not changeable \def\headitem{% \checkenv\multitable \crcr \global\everytab={\bf}% can't use \headitemfont since the parsing differs \the\everytab % for the first item }% % % A \tab used to include \hskip1sp. But then the space in a template % line is not enough. That is bad. So let's go back to just `&' until % we again encounter the problem the 1sp was intended to solve. % --karl, nathan@acm.org, 20apr99. \def\tab{\checkenv\multitable &\the\everytab}% % @multitable ... @end multitable definitions: % \newtoks\everytab % insert after every tab. % \envdef\multitable{% \vskip\parskip \startsavinginserts % % @item within a multitable starts a normal row. % We use \def instead of \let so that if one of the multitable entries % contains an @itemize, we don't choke on the \item (seen as \crcr aka % \endtemplate) expanding \doitemize. \def\item{\crcr}% % \tolerance=9500 \hbadness=9500 \setmultitablespacing \parskip=\multitableparskip \parindent=\multitableparindent \overfullrule=0pt \global\colcount=0 % \everycr = {% \noalign{% \global\everytab={}% \global\colcount=0 % Reset the column counter. % Check for saved footnotes, etc. \checkinserts % Keeps underfull box messages off when table breaks over pages. %\filbreak % Maybe so, but it also creates really weird page breaks when the % table breaks over pages. Wouldn't \vfil be better? Wait until the % problem manifests itself, so it can be fixed for real --karl. }% }% % \parsearg\domultitable } \def\domultitable#1{% % To parse everything between @multitable and @item: \setuptable#1 \endsetuptable % % This preamble sets up a generic column definition, which will % be used as many times as user calls for columns. % \vtop will set a single line and will also let text wrap and % continue for many paragraphs if desired. \halign\bgroup &% \global\advance\colcount by 1 \multistrut \vtop{% % Use the current \colcount to find the correct column width: \hsize=\expandafter\csname col\the\colcount\endcsname % % In order to keep entries from bumping into each other % we will add a \leftskip of \multitablecolspace to all columns after % the first one. % % If a template has been used, we will add \multitablecolspace % to the width of each template entry. % % If the user has set preamble in terms of percent of \hsize we will % use that dimension as the width of the column, and the \leftskip % will keep entries from bumping into each other. Table will start at % left margin and final column will justify at right margin. % % Make sure we don't inherit \rightskip from the outer environment. \rightskip=0pt \ifnum\colcount=1 % The first column will be indented with the surrounding text. \advance\hsize by\leftskip \else \ifsetpercent \else % If user has not set preamble in terms of percent of \hsize % we will advance \hsize by \multitablecolspace. \advance\hsize by \multitablecolspace \fi % In either case we will make \leftskip=\multitablecolspace: \leftskip=\multitablecolspace \fi % Ignoring space at the beginning and end avoids an occasional spurious % blank line, when TeX decides to break the line at the space before the % box from the multistrut, so the strut ends up on a line by itself. % For example: % @multitable @columnfractions .11 .89 % @item @code{#} % @tab Legal holiday which is valid in major parts of the whole country. % Is automatically provided with highlighting sequences respectively % marking characters. \noindent\ignorespaces##\unskip\multistrut }\cr } \def\Emultitable{% \crcr \egroup % end the \halign \global\setpercentfalse } \def\setmultitablespacing{% \def\multistrut{\strut}% just use the standard line spacing % % Compute \multitablelinespace (if not defined by user) for use in % \multitableparskip calculation. We used define \multistrut based on % this, but (ironically) that caused the spacing to be off. % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. \ifdim\multitablelinespace=0pt \setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip \global\advance\multitablelinespace by-\ht0 \fi % Test to see if parskip is larger than space between lines of % table. If not, do nothing. % If so, set to same dimension as multitablelinespace. \ifdim\multitableparskip>\multitablelinespace \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi% \ifdim\multitableparskip=0pt \global\multitableparskip=\multitablelinespace \global\advance\multitableparskip-7pt % to keep parskip somewhat smaller % than skip between lines in the table. \fi} \message{conditionals,} % @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, % @ifnotxml always succeed. They currently do nothing; we don't % attempt to check whether the conditionals are properly nested. But we % have to remember that they are conditionals, so that @end doesn't % attempt to close an environment group. % \def\makecond#1{% \expandafter\let\csname #1\endcsname = \relax \expandafter\let\csname iscond.#1\endcsname = 1 } \makecond{iftex} \makecond{ifnotdocbook} \makecond{ifnothtml} \makecond{ifnotinfo} \makecond{ifnotplaintext} \makecond{ifnotxml} % Ignore @ignore, @ifhtml, @ifinfo, and the like. % \def\direntry{\doignore{direntry}} \def\documentdescription{\doignore{documentdescription}} \def\docbook{\doignore{docbook}} \def\html{\doignore{html}} \def\ifdocbook{\doignore{ifdocbook}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} \def\ifnottex{\doignore{ifnottex}} \def\ifplaintext{\doignore{ifplaintext}} \def\ifxml{\doignore{ifxml}} \def\ignore{\doignore{ignore}} \def\menu{\doignore{menu}} \def\xml{\doignore{xml}} % Ignore text until a line `@end #1', keeping track of nested conditionals. % % A count to remember the depth of nesting. \newcount\doignorecount \def\doignore#1{\begingroup % Scan in ``verbatim'' mode: \obeylines \catcode`\@ = \other \catcode`\{ = \other \catcode`\} = \other % % Make sure that spaces turn into tokens that match what \doignoretext wants. \spaceisspace % % Count number of #1's that we've seen. \doignorecount = 0 % % Swallow text until we reach the matching `@end #1'. \dodoignore{#1}% } { \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. \obeylines % % \gdef\dodoignore#1{% % #1 contains the command name as a string, e.g., `ifinfo'. % % Define a command to find the next `@end #1'. \long\def\doignoretext##1^^M@end #1{% \doignoretextyyy##1^^M@#1\_STOP_}% % % And this command to find another #1 command, at the beginning of a % line. (Otherwise, we would consider a line `@c @ifset', for % example, to count as an @ifset for nesting.) \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% % % And now expand that command. \doignoretext ^^M% }% } \def\doignoreyyy#1{% \def\temp{#1}% \ifx\temp\empty % Nothing found. \let\next\doignoretextzzz \else % Found a nested condition, ... \advance\doignorecount by 1 \let\next\doignoretextyyy % ..., look for another. % If we're here, #1 ends with ^^M\ifinfo (for example). \fi \next #1% the token \_STOP_ is present just after this macro. } % We have to swallow the remaining "\_STOP_". % \def\doignoretextzzz#1{% \ifnum\doignorecount = 0 % We have just found the outermost @end. \let\next\enddoignore \else % Still inside a nested condition. \advance\doignorecount by -1 \let\next\doignoretext % Look for the next @end. \fi \next } % Finish off ignored text. { \obeylines% % Ignore anything after the last `@end #1'; this matters in verbatim % environments, where otherwise the newline after an ignored conditional % would result in a blank line in the output. \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% } % @set VAR sets the variable VAR to an empty value. % @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. % % Since we want to separate VAR from REST-OF-LINE (which might be % empty), we can't just use \parsearg; we have to insert a space of our % own to delimit the rest of the line, and then take it out again if we % didn't need it. % We rely on the fact that \parsearg sets \catcode`\ =10. % \parseargdef\set{\setyyy#1 \endsetyyy} \def\setyyy#1 #2\endsetyyy{% {% \makevalueexpandable \def\temp{#2}% \edef\next{\gdef\makecsname{SET#1}}% \ifx\temp\empty \next{}% \else \setzzz#2\endsetzzz \fi }% } % Remove the trailing space \setxxx inserted. \def\setzzz#1 \endsetzzz{\next{#1}} % @clear VAR clears (i.e., unsets) the variable VAR. % \parseargdef\clear{% {% \makevalueexpandable \global\expandafter\let\csname SET#1\endcsname=\relax }% } % @value{foo} gets the text saved in variable foo. \def\value{\begingroup\makevalueexpandable\valuexxx} \def\valuexxx#1{\expandablevalue{#1}\endgroup} { \catcode`\- = \active \catcode`\_ = \active % \gdef\makevalueexpandable{% \let\value = \expandablevalue % We don't want these characters active, ... \catcode`\-=\other \catcode`\_=\other % ..., but we might end up with active ones in the argument if % we're called from @code, as @code{@value{foo-bar_}}, though. % So \let them to their normal equivalents. \let-\normaldash \let_\normalunderscore } } % We have this subroutine so that we can handle at least some @value's % properly in indexes (we call \makevalueexpandable in \indexdummies). % The command has to be fully expandable (if the variable is set), since % the result winds up in the index file. This means that if the % variable's value contains other Texinfo commands, it's almost certain % it will fail (although perhaps we could fix that with sufficient work % to do a one-level expansion on the result, instead of complete). % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \message{Variable `#1', used in @value, is not set.}% \else \csname SET#1\endcsname \fi } % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined % with @set. % % To get special treatment of `@end ifset,' call \makeond and the redefine. % \makecond{ifset} \def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} \def\doifset#1#2{% {% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname SET#2\endcsname\relax #1% If not set, redefine \next. \fi \expandafter }\next } \def\ifsetfail{\doignore{ifset}} % @ifclear VAR ... @end executes the `...' iff VAR has never been % defined with @set, or has been undefined with @clear. % % The `\else' inside the `\doifset' parameter is a trick to reuse the % above code: if the variable is not set, do nothing, if it is set, % then redefine \next to \ifclearfail. % \makecond{ifclear} \def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} \def\ifclearfail{\doignore{ifclear}} % @ifcommandisdefined CMD ... @end executes the `...' if CMD (written % without the @) is in fact defined. We can only feasibly check at the % TeX level, so something like `mathcode' is going to considered % defined even though it is not a Texinfo command. % \makecond{ifcommanddefined} \def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} % \def\doifcmddefined#1#2{{% \makevalueexpandable \let\next=\empty \expandafter\ifx\csname #2\endcsname\relax #1% If not defined, \let\next as above. \fi \expandafter }\next } \def\ifcmddefinedfail{\doignore{ifcommanddefined}} % @ifcommandnotdefined CMD ... handled similar to @ifclear above. \makecond{ifcommandnotdefined} \def\ifcommandnotdefined{% \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} \def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} % Set the `txicommandconditionals' variable, so documents have a way to % test if the @ifcommand...defined conditionals are available. \set txicommandconditionals % @dircategory CATEGORY -- specify a category of the dir file % which this file should belong to. Ignore this in TeX. \let\dircategory=\comment % @defininfoenclose. \let\definfoenclose=\comment \message{indexing,} % Index generation facilities % Define \newwrite to be identical to plain tex's \newwrite % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} % \newindex {foo} defines an index named foo. % It automatically defines \fooindex such that % \fooindex ...rest of line... puts an entry in the index foo. % It also defines \fooindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is foo. % The name of an index should be no more than 2 characters long % for the sake of vms. % \def\newindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 % Open the file \fi \expandafter\xdef\csname#1index\endcsname{% % Define @#1index \noexpand\doindex{#1}} } % @defindex foo == \newindex{foo} % \def\defindex{\parsearg\newindex} % Define @defcodeindex, like @defindex except put all entries in @code. % \def\defcodeindex{\parsearg\newcodeindex} % \def\newcodeindex#1{% \iflinks \expandafter\newwrite \csname#1indfile\endcsname \openout \csname#1indfile\endcsname \jobname.#1 \fi \expandafter\xdef\csname#1index\endcsname{% \noexpand\docodeindex{#1}}% } % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), % #3 the target index (bar). \def\dosynindex#1#2#3{% % Only do \closeout if we haven't already done it, else we'll end up % closing the target index. \expandafter \ifx\csname donesynindex#2\endcsname \relax % The \closeout helps reduce unnecessary open files; the limit on the % Acorn RISC OS is a mere 16 files. \expandafter\closeout\csname#2indfile\endcsname \expandafter\let\csname donesynindex#2\endcsname = 1 \fi % redefine \fooindfile: \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname \expandafter\let\csname#2indfile\endcsname=\temp % redefine \fooindex: \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% } % Define \doindex, the driver for all \fooindex macros. % Argument #1 is generated by the calling \fooindex macro, % and it is "foo", the name of the index. % \doindex just uses \parsearg; it calls \doind for the actual work. % This is because \doind is more useful to call from other macros. % There is also \dosubind {index}{topic}{subtopic} % which makes an entry in a two-level index such as the operation index. \def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} \def\singleindexer #1{\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} % Take care of Texinfo commands that can appear in an index entry. % Since there are some commands we want to expand, and others we don't, % we have to laboriously prevent expansion for those that we don't. % \def\indexdummies{% \escapechar = `\\ % use backslash in output files. \def\@{@}% change to @@ when we switch to @ as escape char in index files. \def\ {\realbackslash\space }% % % Need these unexpandable (because we define \tt as a dummy) % definitions when @{ or @} appear in index entry text. Also, more % complicated, when \tex is in effect and \{ is a \delimiter again. % We can't use \lbracecmd and \rbracecmd because texindex assumes % braces and backslashes are used only as delimiters. Perhaps we % should define @lbrace and @rbrace commands a la @comma. \def\{{{\tt\char123}}% \def\}{{\tt\char125}}% % % I don't entirely understand this, but when an index entry is % generated from a macro call, the \endinput which \scanmacro inserts % causes processing to be prematurely terminated. This is, % apparently, because \indexsorttmp is fully expanded, and \endinput % is an expandable command. The redefinition below makes \endinput % disappear altogether for that purpose -- although logging shows that % processing continues to some further point. On the other hand, it % seems \endinput does not hurt in the printed index arg, since that % is still getting written without apparent harm. % % Sample source (mac-idx3.tex, reported by Graham Percival to % help-texinfo, 22may06): % @macro funindex {WORD} % @findex xyz % @end macro % ... % @funindex commtest % % The above is not enough to reproduce the bug, but it gives the flavor. % % Sample whatsit resulting: % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} % % So: \let\endinput = \empty % % Do the redefinitions. \commondummies } % For the aux and toc files, @ is the escape character. So we want to % redefine everything using @ as the escape character (instead of % \realbackslash, still used for index files). When everything uses @, % this will be simpler. % \def\atdummies{% \def\@{@@}% \def\ {@ }% \let\{ = \lbraceatcmd \let\} = \rbraceatcmd % % Do the redefinitions. \commondummies \otherbackslash } % Called from \indexdummies and \atdummies. % \def\commondummies{% % % \definedummyword defines \#1 as \string\#1\space, thus effectively % preventing its expansion. This is used only for control words, % not control letters, because the \space would be incorrect for % control characters, but is needed to separate the control word % from whatever follows. % % For control letters, we have \definedummyletter, which omits the % space. % % These can be used both for control words that take an argument and % those that do not. If it is followed by {arg} in the input, then % that will dutifully get written to the index (or wherever). % \def\definedummyword ##1{\def##1{\string##1\space}}% \def\definedummyletter##1{\def##1{\string##1}}% \let\definedummyaccent\definedummyletter % \commondummiesnofonts % \definedummyletter\_% \definedummyletter\-% % % Non-English letters. \definedummyword\AA \definedummyword\AE \definedummyword\DH \definedummyword\L \definedummyword\O \definedummyword\OE \definedummyword\TH \definedummyword\aa \definedummyword\ae \definedummyword\dh \definedummyword\exclamdown \definedummyword\l \definedummyword\o \definedummyword\oe \definedummyword\ordf \definedummyword\ordm \definedummyword\questiondown \definedummyword\ss \definedummyword\th % % Although these internal commands shouldn't show up, sometimes they do. \definedummyword\bf \definedummyword\gtr \definedummyword\hat \definedummyword\less \definedummyword\sf \definedummyword\sl \definedummyword\tclose \definedummyword\tt % \definedummyword\LaTeX \definedummyword\TeX % % Assorted special characters. \definedummyword\arrow \definedummyword\bullet \definedummyword\comma \definedummyword\copyright \definedummyword\registeredsymbol \definedummyword\dots \definedummyword\enddots \definedummyword\entrybreak \definedummyword\equiv \definedummyword\error \definedummyword\euro \definedummyword\expansion \definedummyword\geq \definedummyword\guillemetleft \definedummyword\guillemetright \definedummyword\guilsinglleft \definedummyword\guilsinglright \definedummyword\lbracechar \definedummyword\leq \definedummyword\minus \definedummyword\ogonek \definedummyword\pounds \definedummyword\point \definedummyword\print \definedummyword\quotedblbase \definedummyword\quotedblleft \definedummyword\quotedblright \definedummyword\quoteleft \definedummyword\quoteright \definedummyword\quotesinglbase \definedummyword\rbracechar \definedummyword\result \definedummyword\textdegree % % We want to disable all macros so that they are not expanded by \write. \macrolist % \normalturnoffactive % % Handle some cases of @value -- where it does not contain any % (non-fully-expandable) commands. \makevalueexpandable } % \commondummiesnofonts: common to \commondummies and \indexnofonts. % \def\commondummiesnofonts{% % Control letters and accents. \definedummyletter\!% \definedummyaccent\"% \definedummyaccent\'% \definedummyletter\*% \definedummyaccent\,% \definedummyletter\.% \definedummyletter\/% \definedummyletter\:% \definedummyaccent\=% \definedummyletter\?% \definedummyaccent\^% \definedummyaccent\`% \definedummyaccent\~% \definedummyword\u \definedummyword\v \definedummyword\H \definedummyword\dotaccent \definedummyword\ogonek \definedummyword\ringaccent \definedummyword\tieaccent \definedummyword\ubaraccent \definedummyword\udotaccent \definedummyword\dotless % % Texinfo font commands. \definedummyword\b \definedummyword\i \definedummyword\r \definedummyword\sansserif \definedummyword\sc \definedummyword\slanted \definedummyword\t % % Commands that take arguments. \definedummyword\abbr \definedummyword\acronym \definedummyword\anchor \definedummyword\cite \definedummyword\code \definedummyword\command \definedummyword\dfn \definedummyword\dmn \definedummyword\email \definedummyword\emph \definedummyword\env \definedummyword\file \definedummyword\image \definedummyword\indicateurl \definedummyword\inforef \definedummyword\kbd \definedummyword\key \definedummyword\math \definedummyword\option \definedummyword\pxref \definedummyword\ref \definedummyword\samp \definedummyword\strong \definedummyword\tie \definedummyword\uref \definedummyword\url \definedummyword\var \definedummyword\verb \definedummyword\w \definedummyword\xref } % \indexnofonts is used when outputting the strings to sort the index % by, and when constructing control sequence names. It eliminates all % control sequences and just writes whatever the best ASCII sort string % would be for a given command (usually its argument). % \def\indexnofonts{% % Accent commands should become @asis. \def\definedummyaccent##1{\let##1\asis}% % We can just ignore other control letters. \def\definedummyletter##1{\let##1\empty}% % All control words become @asis by default; overrides below. \let\definedummyword\definedummyaccent % \commondummiesnofonts % % Don't no-op \tt, since it isn't a user-level command % and is used in the definitions of the active chars like <, >, |, etc. % Likewise with the other plain tex font commands. %\let\tt=\asis % \def\ { }% \def\@{@}% \def\_{\normalunderscore}% \def\-{}% @- shouldn't affect sorting % % Unfortunately, texindex is not prepared to handle braces in the % content at all. So for index sorting, we map @{ and @} to strings % starting with |, since that ASCII character is between ASCII { and }. \def\{{|a}% \def\lbracechar{|a}% % \def\}{|b}% \def\rbracechar{|b}% % % Non-English letters. \def\AA{AA}% \def\AE{AE}% \def\DH{DZZ}% \def\L{L}% \def\OE{OE}% \def\O{O}% \def\TH{ZZZ}% \def\aa{aa}% \def\ae{ae}% \def\dh{dzz}% \def\exclamdown{!}% \def\l{l}% \def\oe{oe}% \def\ordf{a}% \def\ordm{o}% \def\o{o}% \def\questiondown{?}% \def\ss{ss}% \def\th{zzz}% % \def\LaTeX{LaTeX}% \def\TeX{TeX}% % % Assorted special characters. % (The following {} will end up in the sort string, but that's ok.) \def\arrow{->}% \def\bullet{bullet}% \def\comma{,}% \def\copyright{copyright}% \def\dots{...}% \def\enddots{...}% \def\equiv{==}% \def\error{error}% \def\euro{euro}% \def\expansion{==>}% \def\geq{>=}% \def\guillemetleft{<<}% \def\guillemetright{>>}% \def\guilsinglleft{<}% \def\guilsinglright{>}% \def\leq{<=}% \def\minus{-}% \def\point{.}% \def\pounds{pounds}% \def\print{-|}% \def\quotedblbase{"}% \def\quotedblleft{"}% \def\quotedblright{"}% \def\quoteleft{`}% \def\quoteright{'}% \def\quotesinglbase{,}% \def\registeredsymbol{R}% \def\result{=>}% \def\textdegree{o}% % \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax \else \indexlquoteignore \fi % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. % makeinfo does not expand macros in the argument to @deffn, which ends up % writing an index entry, and texindex isn't prepared for an index sort entry % that starts with \. % % Since macro invocations are followed by braces, we can just redefine them % to take a single TeX argument. The case of a macro invocation that % goes to end-of-line is not handled. % \macrolist } % Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us % ignore left quotes in the sort term. {\catcode`\`=\active \gdef\indexlquoteignore{\let`=\empty}} \let\indexbackslash=0 %overridden during \printindex. \let\SETmarginindex=\relax % put index entries in margin (undocumented)? % Most index entries go through here, but \dosubind is the general case. % #1 is the index name, #2 is the entry text. \def\doind#1#2{\dosubind{#1}{#2}{}} % Workhorse for all \fooindexes. % #1 is name of index, #2 is stuff to put there, #3 is subentry -- % empty if called from \doind, as we usually are (the main exception % is with most defuns, which call us directly). % \def\dosubind#1#2#3{% \iflinks {% % Store the main index entry text (including the third arg). \toks0 = {#2}% % If third arg is present, precede it with a space. \def\thirdarg{#3}% \ifx\thirdarg\empty \else \toks0 = \expandafter{\the\toks0 \space #3}% \fi % \edef\writeto{\csname#1indfile\endcsname}% % \safewhatsit\dosubindwrite }% \fi } % Write the entry in \toks0 to the index file: % \def\dosubindwrite{% % Put the index entry in the margin if desired. \ifx\SETmarginindex\relax\else \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% \fi % % Remember, we are within a group. \indexdummies % Must do this here, since \bf, etc expand at this stage \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now % so it will be output as is; and it will print as backslash. % % Process the index entry with all font commands turned off, to % get the string to sort by. {\indexnofonts \edef\temp{\the\toks0}% need full expansion \xdef\indexsorttmp{\temp}% }% % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write % three arguments to \entry to the .?? file (four in the % subentry case), texindex reduces to two when writing the .??s % sorted result. \edef\temp{% \write\writeto{% \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% }% \temp } % Take care of unwanted page breaks/skips around a whatsit: % % If a skip is the last thing on the list now, preserve it % by backing up by \lastskip, doing the \write, then inserting % the skip again. Otherwise, the whatsit generated by the % \write or \pdfdest will make \lastskip zero. The result is that % sequences like this: % @end defun % @tindex whatever % @defun ... % will have extra space inserted, because the \medbreak in the % start of the @defun won't see the skip inserted by the @end of % the previous defun. % % But don't do any of this if we're not in vertical mode. We % don't want to do a \vskip and prematurely end a paragraph. % % Avoid page breaks due to these extra skips, too. % % But wait, there is a catch there: % We'll have to check whether \lastskip is zero skip. \ifdim is not % sufficient for this purpose, as it ignores stretch and shrink parts % of the skip. The only way seems to be to check the textual % representation of the skip. % % The following is almost like \def\zeroskipmacro{0.0pt} except that % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). % \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} % \newskip\whatsitskip \newcount\whatsitpenalty % % ..., ready, GO: % \def\safewhatsit#1{\ifhmode #1% \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip \edef\lastskipmacro{\the\lastskip}% \whatsitpenalty = \lastpenalty % % If \lastskip is nonzero, that means the last item was a % skip. And since a skip is discardable, that means this % -\whatsitskip glue we're inserting is preceded by a % non-discardable item, therefore it is not a potential % breakpoint, therefore no \nobreak needed. \ifx\lastskipmacro\zeroskipmacro \else \vskip-\whatsitskip \fi % #1% % \ifx\lastskipmacro\zeroskipmacro % If \lastskip was zero, perhaps the last item was a penalty, and % perhaps it was >=10000, e.g., a \nobreak. In that case, we want % to re-insert the same penalty (values >10000 are used for various % signals); since we just inserted a non-discardable item, any % following glue (such as a \parskip) would be a breakpoint. For example: % @deffn deffn-whatever % @vindex index-whatever % Description. % would allow a break between the index-whatever whatsit % and the "Description." paragraph. \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi \else % On the other hand, if we had a nonzero \lastskip, % this make-up glue would be preceded by a non-discardable item % (the whatsit from the \write), so we must insert a \nobreak. \nobreak\vskip\whatsitskip \fi \fi} % The index entry written in the file actually looks like % \entry {sortstring}{page}{topic} % or % \entry {sortstring}{page}{topic}{subtopic} % The texindex program reads in these files and writes files % containing these kinds of lines: % \initial {c} % before the first topic whose initial is c % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. \def\findex {\fnindex} \def\kindex {\kyindex} \def\cindex {\cpindex} \def\vindex {\vrindex} \def\tindex {\tpindex} \def\pindex {\pgindex} \def\cindexsub {\begingroup\obeylines\cindexsub} {\obeylines % \gdef\cindexsub "#1" #2^^M{\endgroup % \dosubind{cp}{#2}{#1}}} % Define the macros used in formatting output of the sorted index material. % @printindex causes a particular index (the ??s file) to get printed. % It does not print any chapter heading (usually an @unnumbered). % \parseargdef\printindex{\begingroup \dobreak \chapheadingskip{10000}% % \smallfonts \rm \tolerance = 9500 \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % % See if the index file exists and is nonempty. % Change catcode of @ here so that if the index file contains % \initial {@} % as its first line, TeX doesn't complain about mismatched braces % (because it thinks @} is a control sequence). \catcode`\@ = 11 \openin 1 \jobname.#1s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, % and it loses the chapter title and the aux file entries for the % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent \else % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. \read 1 to \temp \ifeof 1 \putwordIndexIsEmpty \else % Index files are almost Texinfo source, but we use \ as the escape % character. It would be better to use @, but that's too big a change % to make right now. \def\indexbackslash{\backslashcurfont}% \catcode`\\ = 0 \escapechar = `\\ \begindoublecolumns \input \jobname.#1s \enddoublecolumns \fi \fi \closein 1 \endgroup} % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. \def\initial#1{{% % Some minor font changes for the special characters. \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt % % Remove any glue we may have, we'll be inserting our own. \removelastskip % % We like breaks before the index initials, so insert a bonus. \nobreak \vskip 0pt plus 3\baselineskip \penalty 0 \vskip 0pt plus -3\baselineskip % % Typeset the initial. Making this add up to a whole number of % baselineskips increases the chance of the dots lining up from column % to column. It still won't often be perfect, because of the stretch % we need before each entry, but it's better. % % No shrink because it confuses \balancecolumns. \vskip 1.67\baselineskip plus .5\baselineskip \leftline{\secbf #1}% % Do our best not to break after the initial. \nobreak \vskip .33\baselineskip plus .1\baselineskip }} % \entry typesets a paragraph consisting of the text (#1), dot leaders, and % then page number (#2) flushed to the right margin. It is used for index % and table of contents entries. The paragraph is indented by \leftskip. % % A straightforward implementation would start like this: % \def\entry#1#2{... % But this freezes the catcodes in the argument, and can cause problems to % @code, which sets - active. This problem was fixed by a kludge--- % ``-'' was active throughout whole index, but this isn't really right. % The right solution is to prevent \entry from swallowing the whole text. % --kasal, 21nov03 \def\entry{% \begingroup % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. \par % % Do not fill out the last line with white space. \parfillskip = 0in % % No extra space above this paragraph. \parskip = 0in % % Do not prefer a separate line ending with a hyphen to fewer lines. \finalhyphendemerits = 0 % % \hangindent is only relevant when the entry text and page number % don't both fit on one line. In that case, bob suggests starting the % dots pretty far over on the line. Unfortunately, a large % indentation looks wrong when the entry text itself is broken across % lines. So we use a small indentation and put up with long leaders. % % \hangafter is reset to 1 (which is the value we want) at the start % of each paragraph, so we need not do anything with that. \hangindent = 2em % % When the entry text needs to be broken, just fill out the first line % with blank space. \rightskip = 0pt plus1fil % % A bit of stretch before each entry for the benefit of balancing % columns. \vskip 0pt plus1pt % % When reading the text of entry, convert explicit line breaks % from @* into spaces. The user might give these in long section % titles, for instance. \def\*{\unskip\space\ignorespaces}% \def\entrybreak{\hfil\break}% % % Swallow the left brace of the text (first parameter): \afterassignment\doentry \let\temp = } \def\entrybreak{\unskip\space\ignorespaces}% \def\doentry{% \bgroup % Instead of the swallowed brace. \noindent \aftergroup\finishentry % And now comes the text of the entry. } \def\finishentry#1{% % #1 is the page number. % % The following is kludged to not output a line of dots in the index if % there are no page numbers. The next person who breaks this will be % cursed by a Unix daemon. \setbox\boxA = \hbox{#1}% \ifdim\wd\boxA = 0pt \ % \else % % If we must, put the page number on a line of its own, and fill out % this line with blank space. (The \hfil is overwhelmed with the % fill leaders glue in \indexdotfill if the page number does fit.) \hfil\penalty50 \null\nobreak\indexdotfill % Have leaders before the page number. % % The `\ ' here is removed by the implicit \unskip that TeX does as % part of (the primitive) \par. Without it, a spurious underfull % \hbox ensues. \ifpdf \pdfgettoks#1.% \ \the\toksA \else \ #1% \fi \fi \par \endgroup } % Like plain.tex's \dotfill, except uses up at least 1 em. \def\indexdotfill{\cleaders \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} \def\primary #1{\line{#1\hfil}} \newskip\secondaryindent \secondaryindent=0.5cm \def\secondary#1#2{{% \parfillskip=0in \parskip=0in \hangindent=1in \hangafter=1 \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill \ifpdf \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. \else #2 \fi \par }} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, % the manmac.tex format used to print the TeXbook itself. \catcode`\@=11 \newbox\partialpage \newdimen\doublecolumnhsize \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns % Grab any single-column material above us. \output = {% % % Here is a possibility not foreseen in manmac: if we accumulate a % whole lot of material, we might end up calling this \output % routine twice in a row (see the doublecol-lose test, which is % essentially a couple of indexes with @setchapternewpage off). In % that case we just ship out what is in \partialpage with the normal % output routine. Generally, \partialpage will be empty when this % runs and this will be a no-op. See the indexspread.tex test case. \ifvoid\partialpage \else \onepageout{\pagecontents\partialpage}% \fi % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE \kern-\topskip \kern\baselineskip }% }% \eject % run that output routine to set \partialpage % % Use the double-column output routine for subsequent pages. \output = {\doublecolumnout}% % % Change the page size parameters. We could do this once outside this % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 % format, but then we repeat the same computation. Repeating a couple % of assignments once per index is clearly meaningless for the % execution time, so we may as well do it in one place. % % First we halve the line length, less a little for the gutter between % the columns. We compute the gutter based on the line length, so it % changes automatically with the paper format. The magic constant % below is chosen so that the gutter has the same value (well, +-<1pt) % as it did when we hard-coded it. % % We put the result in a separate register, \doublecolumhsize, so we % can restore it in \pagesofar, after \hsize itself has (potentially) % been clobbered. % \doublecolumnhsize = \hsize \advance\doublecolumnhsize by -.04154\hsize \divide\doublecolumnhsize by 2 \hsize = \doublecolumnhsize % % Double the \vsize as well. (We don't need a separate register here, % since nobody clobbers \vsize.) \vsize = 2\vsize } % The double-column output routine for all double-column pages except % the last. % \def\doublecolumnout{% \splittopskip=\topskip \splitmaxdepth=\maxdepth % Get the available space for the double columns -- the normal % (undoubled) page height minus any material left over from the % previous page. \dimen@ = \vsize \divide\dimen@ by 2 \advance\dimen@ by -\ht\partialpage % % box0 will be the left-hand column, box2 the right. \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \onepageout\pagesofar \unvbox255 \penalty\outputpenalty } % % Re-output the contents of the output page -- any previous material, % followed by the two boxes we just split, in box0 and box2. \def\pagesofar{% \unvbox\partialpage % \hsize = \doublecolumnhsize \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}% } % % All done with double columns. \def\enddoublecolumns{% % The following penalty ensures that the page builder is exercised % _before_ we change the output routine. This is necessary in the % following situation: % % The last section of the index consists only of a single entry. % Before this section, \pagetotal is less than \pagegoal, so no % break occurs before the last section starts. However, the last % section, consisting of \initial and the single \entry, does not % fit on the page and has to be broken off. Without the following % penalty the page builder will not be exercised until \eject % below, and by that time we'll already have changed the output % routine to the \balancecolumns version, so the next-to-last % double-column page will be processed with \balancecolumns, which % is wrong: The two columns will go to the main vertical list, with % the broken-off section in the recent contributions. As soon as % the output routine finishes, TeX starts reconsidering the page % break. The two columns and the broken-off section both fit on the % page, because the two columns now take up only half of the page % goal. When TeX sees \eject from below which follows the final % section, it invokes the new output routine that we've set after % \balancecolumns below; \onepageout will try to fit the two columns % and the final section into the vbox of \pageheight (see % \pagebody), causing an overfull box. % % Note that glue won't work here, because glue does not exercise the % page builder, unlike penalties (see The TeXbook, pp. 280-281). \penalty0 % \output = {% % Split the last of the double-column material. Leave it on the % current page, no automatic page break. \balancecolumns % % If we end up splitting too much material for the current page, % though, there will be another page break right after this \output % invocation ends. Having called \balancecolumns once, we do not % want to call it again. Therefore, reset \output to its normal % definition right away. (We hope \balancecolumns will never be % called on to balance too much material, but if it is, this makes % the output somewhat more palatable.) \global\output = {\onepageout{\pagecontents\PAGE}}% }% \eject \endgroup % started in \begindoublecolumns % % \pagegoal was set to the doubled \vsize above, since we restarted % the current page. We're now back to normal single-column % typesetting, so reset \pagegoal to the normal \vsize (after the % \endgroup where \vsize got restored). \pagegoal = \vsize } % % Called at the end of the double column material. \def\balancecolumns{% \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \dimen@ = \ht0 \advance\dimen@ by \topskip \advance\dimen@ by-\baselineskip \divide\dimen@ by 2 % target to split to %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% \splittopskip = \topskip % Loop until we get a decent breakpoint. {% \vbadness = 10000 \loop \global\setbox3 = \copy0 \global\setbox1 = \vsplit3 to \dimen@ \ifdim\ht3>\dimen@ \global\advance\dimen@ by 1pt \repeat }% %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% \setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\dimen@{\unvbox3}% % \pagesofar } \catcode`\@ = \other \message{sectioning,} % Chapters, sections, etc. % Let's start with @part. \outer\parseargdef\part{\partzzz{#1}} \def\partzzz#1{% \chapoddpage \null \vskip.3\vsize % move it down on the page a bit \begingroup \noindent \titlefonts\rmisbold #1\par % the text \let\lastnode=\empty % no node to associate with \writetocentry{part}{#1}{}% but put it in the toc \headingsoff % no headline or footline on the part page \chapoddpage \endgroup } % \unnumberedno is an oxymoron. But we count the unnumbered % sections so that we can refer to them unambiguously in the pdf % outlines by their "section number". We avoid collisions with chapter % numbers by starting them at 10000. (If a document ever has 10000 % chapters, we're in trouble anyway, I'm sure.) \newcount\unnumberedno \unnumberedno = 10000 \newcount\chapno \newcount\secno \secno=0 \newcount\subsecno \subsecno=0 \newcount\subsubsecno \subsubsecno=0 % This counter is funny since it counts through charcodes of letters A, B, ... \newcount\appendixno \appendixno = `\@ % % \def\appendixletter{\char\the\appendixno} % We do the following ugly conditional instead of the above simple % construct for the sake of pdftex, which needs the actual % letter in the expansion, not just typeset. % \def\appendixletter{% \ifnum\appendixno=`A A% \else\ifnum\appendixno=`B B% \else\ifnum\appendixno=`C C% \else\ifnum\appendixno=`D D% \else\ifnum\appendixno=`E E% \else\ifnum\appendixno=`F F% \else\ifnum\appendixno=`G G% \else\ifnum\appendixno=`H H% \else\ifnum\appendixno=`I I% \else\ifnum\appendixno=`J J% \else\ifnum\appendixno=`K K% \else\ifnum\appendixno=`L L% \else\ifnum\appendixno=`M M% \else\ifnum\appendixno=`N N% \else\ifnum\appendixno=`O O% \else\ifnum\appendixno=`P P% \else\ifnum\appendixno=`Q Q% \else\ifnum\appendixno=`R R% \else\ifnum\appendixno=`S S% \else\ifnum\appendixno=`T T% \else\ifnum\appendixno=`U U% \else\ifnum\appendixno=`V V% \else\ifnum\appendixno=`W W% \else\ifnum\appendixno=`X X% \else\ifnum\appendixno=`Y Y% \else\ifnum\appendixno=`Z Z% % The \the is necessary, despite appearances, because \appendixletter is % expanded while writing the .toc file. \char\appendixno is not % expandable, thus it is written literally, thus all appendixes come out % with the same letter (or @) in the toc without it. \else\char\the\appendixno \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} % Each @chapter defines these (using marks) as the number+name, number % and name of the chapter. Page headings and footings can use % these. @section does likewise. \def\thischapter{} \def\thischapternum{} \def\thischaptername{} \def\thissection{} \def\thissectionnum{} \def\thissectionname{} \newcount\absseclevel % used to calculate proper heading level \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} \let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} \let\down=\lowersections % original BFox name % we only have subsub. \chardef\maxseclevel = 3 % % A numbered section within an unnumbered changes to unnumbered too. % To achieve this, remember the "biggest" unnum. sec. we are currently in: \chardef\unnlevel = \maxseclevel % % Trace whether the current chapter is an appendix or not: % \chapheadtype is "N" or "A", unnumbered chapters are ignored. \def\chapheadtype{N} % Choose a heading macro % #1 is heading type % #2 is heading level % #3 is text for heading \def\genhead#1#2#3{% % Compute the abs. sec. level: \absseclevel=#2 \advance\absseclevel by \secbase % Make sure \absseclevel doesn't fall outside the range: \ifnum \absseclevel < 0 \absseclevel = 0 \else \ifnum \absseclevel > 3 \absseclevel = 3 \fi \fi % The heading type: \def\headtype{#1}% \if \headtype U% \ifnum \absseclevel < \unnlevel \chardef\unnlevel = \absseclevel \fi \else % Check for appendix sections: \ifnum \absseclevel = 0 \edef\chapheadtype{\headtype}% \else \if \headtype A\if \chapheadtype N% \errmessage{@appendix... within a non-appendix chapter}% \fi\fi \fi % Check for numbered within unnumbered: \ifnum \absseclevel > \unnlevel \def\headtype{U}% \else \chardef\unnlevel = 3 \fi \fi % Now print the heading: \if \headtype U% \ifcase\absseclevel \unnumberedzzz{#3}% \or \unnumberedseczzz{#3}% \or \unnumberedsubseczzz{#3}% \or \unnumberedsubsubseczzz{#3}% \fi \else \if \headtype A% \ifcase\absseclevel \appendixzzz{#3}% \or \appendixsectionzzz{#3}% \or \appendixsubseczzz{#3}% \or \appendixsubsubseczzz{#3}% \fi \else \ifcase\absseclevel \chapterzzz{#3}% \or \seczzz{#3}% \or \numberedsubseczzz{#3}% \or \numberedsubsubseczzz{#3}% \fi \fi \fi \suppressfirstparagraphindent } % an interface: \def\numhead{\genhead N} \def\apphead{\genhead A} \def\unnmhead{\genhead U} % @chapter, @appendix, @unnumbered. Increment top-level counter, reset % all lower-level sectioning counters to zero. % % Also set \chaplevelprefix, which we prepend to @float sequence numbers % (e.g., figures), q.v. By default (before any chapter), that is empty. \let\chaplevelprefix = \empty % \outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz#1{% % section resetting is \global in case the chapter is in a group, such % as an @include file. \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\chapno by 1 % % Used for \float. \gdef\chaplevelprefix{\the\chapno.}% \resetallfloatnos % % \putwordChapter can contain complex things in translations. \toks0=\expandafter{\putwordChapter}% \message{\the\toks0 \space \the\chapno}% % % Write the actual heading. \chapmacro{#1}{Ynumbered}{\the\chapno}% % % So @section and the like are numbered underneath this chapter. \global\let\section = \numberedsec \global\let\subsection = \numberedsubsec \global\let\subsubsection = \numberedsubsubsec } \outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz % \def\appendixzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\appendixno by 1 \gdef\chaplevelprefix{\appendixletter.}% \resetallfloatnos % % \putwordAppendix can contain complex things in translations. \toks0=\expandafter{\putwordAppendix}% \message{\the\toks0 \space \appendixletter}% % \chapmacro{#1}{Yappendix}{\appendixletter}% % \global\let\section = \appendixsec \global\let\subsection = \appendixsubsec \global\let\subsubsection = \appendixsubsubsec } % normally unnmhead0 calls unnumberedzzz: \outer\parseargdef\unnumbered{\unnmhead0{#1}} \def\unnumberedzzz#1{% \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 \global\advance\unnumberedno by 1 % % Since an unnumbered has no number, no prefix for figures. \global\let\chaplevelprefix = \empty \resetallfloatnos % % This used to be simply \message{#1}, but TeX fully expands the % argument to \message. Therefore, if #1 contained @-commands, TeX % expanded them. For example, in `@unnumbered The @cite{Book}', TeX % expanded @cite (which turns out to cause errors because \cite is meant % to be executed, not expanded). % % Anyway, we don't want the fully-expanded definition of @cite to appear % as a result of the \message, we just want `@cite' itself. We use % \the to achieve this: TeX expands \the only once, % simply yielding the contents of . (We also do this for % the toc entries.) \toks0 = {#1}% \message{(\the\toks0)}% % \chapmacro{#1}{Ynothing}{\the\unnumberedno}% % \global\let\section = \unnumberedsec \global\let\subsection = \unnumberedsubsec \global\let\subsubsection = \unnumberedsubsubsec } % @centerchap is like @unnumbered, but the heading is centered. \outer\parseargdef\centerchap{% % Well, we could do the following in a group, but that would break % an assumption that \chapmacro is called at the outermost level. % Thus we are safer this way: --kasal, 24feb04 \let\centerparametersmaybe = \centerparameters \unnmhead0{#1}% \let\centerparametersmaybe = \relax } % @top is like @unnumbered. \let\top\unnumbered % Sections. % \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz \def\seczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% } % normally calls appendixsectionzzz: \outer\parseargdef\appendixsection{\apphead1{#1}} \def\appendixsectionzzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% } \let\appendixsec\appendixsection % normally calls unnumberedseczzz: \outer\parseargdef\unnumberedsec{\unnmhead1{#1}} \def\unnumberedseczzz#1{% \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% } % Subsections. % % normally calls numberedsubseczzz: \outer\parseargdef\numberedsubsec{\numhead2{#1}} \def\numberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% } % normally calls appendixsubseczzz: \outer\parseargdef\appendixsubsec{\apphead2{#1}} \def\appendixsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno}% } % normally calls unnumberedsubseczzz: \outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} \def\unnumberedsubseczzz#1{% \global\subsubsecno=0 \global\advance\subsecno by 1 \sectionheading{#1}{subsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno}% } % Subsubsections. % % normally numberedsubsubseczzz: \outer\parseargdef\numberedsubsubsec{\numhead3{#1}} \def\numberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynumbered}% {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally appendixsubsubseczzz: \outer\parseargdef\appendixsubsubsec{\apphead3{#1}} \def\appendixsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Yappendix}% {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% } % normally unnumberedsubsubseczzz: \outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} \def\unnumberedsubsubseczzz#1{% \global\advance\subsubsecno by 1 \sectionheading{#1}{subsubsec}{Ynothing}% {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% } % These macros control what the section commands do, according % to what kind of chapter we are in (ordinary, appendix, or unnumbered). % Define them by default for a numbered chapter. \let\section = \numberedsec \let\subsection = \numberedsubsec \let\subsubsection = \numberedsubsubsec % Define @majorheading, @heading and @subheading \def\majorheading{% {\advance\chapheadingskip by 10pt \chapbreak }% \parsearg\chapheadingzzz } \def\chapheading{\chapbreak \parsearg\chapheadingzzz} \def\chapheadingzzz#1{% \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip \nobreak \suppressfirstparagraphindent } % @heading, @subheading, @subsubheading. \parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} \parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} \suppressfirstparagraphindent} % These macros generate a chapter, section, etc. heading only % (including whitespace, linebreaking, etc. around it), % given all the information in convenient, parsed form. % Args are the skip and penalty (usually negative) \def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} % Parameter controlling skip before chapter headings (if needed) \newskip\chapheadingskip % Define plain chapter starts, and page on/off switching for it. \def\chapbreak{\dobreak \chapheadingskip {-4000}} \def\chappager{\par\vfill\supereject} % Because \domark is called before \chapoddpage, the filler page will % get the headings for the next chapter, which is wrong. But we don't % care -- we just disable all headings on the filler page. \def\chapoddpage{% \chappager \ifodd\pageno \else \begingroup \headingsoff \null \chappager \endgroup \fi } \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} \def\CHAPPAGoff{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chapbreak \global\let\pagealignmacro=\chappager} \def\CHAPPAGon{% \global\let\contentsalignmacro = \chappager \global\let\pchapsepmacro=\chappager \global\let\pagealignmacro=\chappager \global\def\HEADINGSon{\HEADINGSsingle}} \def\CHAPPAGodd{% \global\let\contentsalignmacro = \chapoddpage \global\let\pchapsepmacro=\chapoddpage \global\let\pagealignmacro=\chapoddpage \global\def\HEADINGSon{\HEADINGSdouble}} \CHAPPAGon % Chapter opening. % % #1 is the text, #2 is the section type (Ynumbered, Ynothing, % Yappendix, Yomitfromtoc), #3 the chapter number. % % To test against our argument. \def\Ynothingkeyword{Ynothing} \def\Yomitfromtockeyword{Yomitfromtoc} \def\Yappendixkeyword{Yappendix} % \def\chapmacro#1#2#3{% % Insert the first mark before the heading break (see notes for \domark). \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% \gdef\thissection{}}% % \def\temptype{#2}% \ifx\temptype\Ynothingkeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{\thischaptername}}% \else\ifx\temptype\Yomitfromtockeyword \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% \gdef\thischapter{}}% \else\ifx\temptype\Yappendixkeyword \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\appendixletter}% % \noexpand\putwordAppendix avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \else \toks0={#1}% \xdef\lastchapterdefs{% \gdef\noexpand\thischaptername{\the\toks0}% \gdef\noexpand\thischapternum{\the\chapno}% % \noexpand\putwordChapter avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thischapter{\noexpand\putwordChapter{} \noexpand\thischapternum: \noexpand\thischaptername}% }% \fi\fi\fi % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert the chapter heading break. \pchapsepmacro % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevchapterdefs=\lastchapterdefs \let\prevsectiondefs=\lastsectiondefs \domark % {% \chapfonts \rmisbold % % Have to define \lastsection before calling \donoderef, because the % xref code eventually uses it. On the other hand, it has to be called % after \pchapsepmacro, or the headline will change too soon. \gdef\lastsection{#1}% % % Only insert the separating space if we have a chapter/appendix % number, and don't print the unnumbered ``number''. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unnchap}% \else\ifx\temptype\Yomitfromtockeyword \setbox0 = \hbox{}% contents like unnumbered, but no toc entry \def\toctype{omit}% \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% \def\toctype{app}% \else \setbox0 = \hbox{#3\enspace}% \def\toctype{numchap}% \fi\fi\fi % % Write the toc entry for this chapter. Must come before the % \donoderef, because we include the current node name in the toc % entry, and \donoderef resets it to empty. \writetocentry{\toctype}{#1}{#3}% % % For pdftex, we have to write out the node definition (aka, make % the pdfdest) after any page break, but before the actual text has % been typeset. If the destination for the pdf outline is after the % text, then jumping from the outline may wind up with the text not % being visible, for instance under high magnification. \donoderef{#2}% % % Typeset the actual heading. \nobreak % Avoid page breaks at the interline glue. \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe \unhbox0 #1\par}% }% \nobreak\bigskip % no page break after a chapter title \nobreak } % @centerchap -- centered and unnumbered. \let\centerparametersmaybe = \relax \def\centerparameters{% \advance\rightskip by 3\rightskip \leftskip = \rightskip \parfillskip = 0pt } % I don't think this chapter style is supported any more, so I'm not % updating it with the new noderef stuff. We'll see. --karl, 11aug03. % \def\setchapterstyle #1 {\csname CHAPF#1\endcsname} % \def\unnchfopen #1{% \chapoddpage \vbox{\chapfonts \raggedtitlesettings #1\par}% \nobreak\bigskip\nobreak } \def\chfopen #1#2{\chapoddpage {\chapfonts \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% \par\penalty 5000 % } \def\centerchfopen #1{% \chapoddpage \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% \nobreak\bigskip \nobreak } \def\CHAPFopen{% \global\let\chapmacro=\chfopen \global\let\centerchapmacro=\centerchfopen} % Section titles. These macros combine the section number parts and % call the generic \sectionheading to do the printing. % \newskip\secheadingskip \def\secheadingbreak{\dobreak \secheadingskip{-1000}} % Subsection titles. \newskip\subsecheadingskip \def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} % Subsubsection titles. \def\subsubsecheadingskip{\subsecheadingskip} \def\subsubsecheadingbreak{\subsecheadingbreak} % Print any size, any type, section title. % % #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the % section number. % \def\seckeyword{sec} % \def\sectionheading#1#2#3#4{% {% \checkenv{}% should not be in an environment. % % Switch to the right set of fonts. \csname #2fonts\endcsname \rmisbold % \def\sectionlevel{#2}% \def\temptype{#3}% % % Insert first mark before the heading break (see notes for \domark). \let\prevsectiondefs=\lastsectiondefs \ifx\temptype\Ynothingkeyword \ifx\sectionlevel\seckeyword \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% \gdef\thissection{\thissectionname}}% \fi \else\ifx\temptype\Yomitfromtockeyword % Don't redefine \thissection. \else\ifx\temptype\Yappendixkeyword \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \else \ifx\sectionlevel\seckeyword \toks0={#1}% \xdef\lastsectiondefs{% \gdef\noexpand\thissectionname{\the\toks0}% \gdef\noexpand\thissectionnum{#4}% % \noexpand\putwordSection avoids expanding indigestible % commands in some of the translations. \gdef\noexpand\thissection{\noexpand\putwordSection{} \noexpand\thissectionnum: \noexpand\thissectionname}% }% \fi \fi\fi\fi % % Go into vertical mode. Usually we'll already be there, but we % don't want the following whatsit to end up in a preceding paragraph % if the document didn't happen to have a blank line. \par % % Output the mark. Pass it through \safewhatsit, to take care of % the preceding space. \safewhatsit\domark % % Insert space above the heading. \csname #2headingbreak\endcsname % % Now the second mark, after the heading break. No break points % between here and the heading. \let\prevsectiondefs=\lastsectiondefs \domark % % Only insert the space after the number if we have a section number. \ifx\temptype\Ynothingkeyword \setbox0 = \hbox{}% \def\toctype{unn}% \gdef\lastsection{#1}% \else\ifx\temptype\Yomitfromtockeyword % for @headings -- no section number, don't include in toc, % and don't redefine \lastsection. \setbox0 = \hbox{}% \def\toctype{omit}% \let\sectionlevel=\empty \else\ifx\temptype\Yappendixkeyword \setbox0 = \hbox{#4\enspace}% \def\toctype{app}% \gdef\lastsection{#1}% \else \setbox0 = \hbox{#4\enspace}% \def\toctype{num}% \gdef\lastsection{#1}% \fi\fi\fi % % Write the toc entry (before \donoderef). See comments in \chapmacro. \writetocentry{\toctype\sectionlevel}{#1}{#4}% % % Write the node reference (= pdf destination for pdftex). % Again, see comments in \chapmacro. \donoderef{#3}% % % Interline glue will be inserted when the vbox is completed. % That glue will be a valid breakpoint for the page, since it'll be % preceded by a whatsit (usually from the \donoderef, or from the % \writetocentry if there was no node). We don't want to allow that % break, since then the whatsits could end up on page n while the % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. \nobreak % % Output the actual section heading. \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright \hangindent=\wd0 % zero if no section number \unhbox0 #1}% }% % Add extra space after the heading -- half of whatever came above it. % Don't allow stretch, though. \kern .5 \csname #2headingskip\endcsname % % Do not let the kern be a potential breakpoint, as it would be if it % was followed by glue. \nobreak % % We'll almost certainly start a paragraph next, so don't let that % glue accumulate. (Not a breakpoint because it's preceded by a % discardable item.) However, when a paragraph is not started next % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out % or the negative glue will cause weirdly wrong output, typically % obscuring the section heading with something else. \vskip-\parskip % % This is so the last item on the main vertical list is a known % \penalty > 10000, so \startdefun, etc., can recognize the situation % and do the needful. \penalty 10001 } \message{toc,} % Table of contents. \newwrite\tocfile % Write an entry to the toc file, opening it if necessary. % Called from @chapter, etc. % % Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} % We append the current node name (if any) and page number as additional % arguments for the \{chap,sec,...}entry macros which will eventually % read this. The node name is used in the pdf outlines as the % destination to jump to. % % We open the .toc file for writing here instead of at @setfilename (or % any other fixed time) so that @contents can be anywhere in the document. % But if #1 is `omit', then we don't do anything. This is used for the % table of contents chapter openings themselves. % \newif\iftocfileopened \def\omitkeyword{omit}% % \def\writetocentry#1#2#3{% \edef\writetoctype{#1}% \ifx\writetoctype\omitkeyword \else \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi % \iflinks {\atdummies \edef\temp{% \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% \temp }% \fi \fi % % Tell \shipout to create a pdf destination on each page, if we're % writing pdf. These are used in the table of contents. We can't % just write one on every page because the title pages are numbered % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. \ifpdf \global\pdfmakepagedesttrue \fi } % These characters do not print properly in the Computer Modern roman % fonts, so we must take special care. This is more or less redundant % with the Texinfo input format setup at the end of this file. % \def\activecatcodes{% \catcode`\"=\active \catcode`\$=\active \catcode`\<=\active \catcode`\>=\active \catcode`\\=\active \catcode`\^=\active \catcode`\_=\active \catcode`\|=\active \catcode`\~=\active } % Read the toc file, which is essentially Texinfo input. \def\readtocfile{% \setupdatafile \activecatcodes \input \tocreadfilename } \newskip\contentsrightmargin \contentsrightmargin=1in \newcount\savepageno \newcount\lastnegativepageno \lastnegativepageno = -1 % Prepare to read what we've written to \tocfile. % \def\startcontents#1{% % If @setchapternewpage on, and @headings double, the contents should % start on an odd page, unlike chapters. Thus, we maintain % \contentsalignmacro in parallel with \pagealignmacro. % From: Torbjorn Granlund \contentsalignmacro \immediate\closeout\tocfile % % Don't need to put `Contents' or `Short Contents' in the headline. % It is abundantly clear what they are. \chapmacro{#1}{Yomitfromtoc}{}% % \savepageno = \pageno \begingroup % Set up to handle contents files properly. \raggedbottom % Worry more about breakpoints than the bottom. \advance\hsize by -\contentsrightmargin % Don't use the full line length. % % Roman numerals for page numbers. \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi } % redefined for the two-volume lispref. We always output on % \jobname.toc even if this is redefined. % \def\tocreadfilename{\jobname.toc} % Normal (long) toc. % \def\contents{% \startcontents{\putwordTOC}% \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \ifeof 1 \else \pdfmakeoutlines \fi \closein 1 \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } % And just the chapters. \def\summarycontents{% \startcontents{\putwordShortTOC}% % \let\partentry = \shortpartentry \let\numchapentry = \shortchapentry \let\appentry = \shortchapentry \let\unnchapentry = \shortunnchapentry % We want a true roman here for the page numbers. \secfonts \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \let\tt=\shortconttt \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\numsecentry##1##2##3##4{} \let\appsecentry = \numsecentry \let\unnsecentry = \numsecentry \let\numsubsecentry = \numsecentry \let\appsubsecentry = \numsecentry \let\unnsubsecentry = \numsecentry \let\numsubsubsecentry = \numsecentry \let\appsubsubsecentry = \numsecentry \let\unnsubsubsecentry = \numsecentry \openin 1 \tocreadfilename\space \ifeof 1 \else \readtocfile \fi \closein 1 \vfill \eject \contentsalignmacro % in case @setchapternewpage odd is in effect \endgroup \lastnegativepageno = \pageno \global\pageno = \savepageno } \let\shortcontents = \summarycontents % Typeset the label for a chapter or appendix for the short contents. % The arg is, e.g., `A' for an appendix, or `3' for a chapter. % \def\shortchaplabel#1{% % This space should be enough, since a single number is .5em, and the % widest letter (M) is 1em, at least in the Computer Modern fonts. % But use \hss just in case. % (This space doesn't include the extra space that gets added after % the label; that gets put in by \shortchapentry above.) % % We'd like to right-justify chapter numbers, but that looks strange % with appendix letters. And right-justifying numbers and % left-justifying letters looks strange when there is less than 10 % chapters. Have to read the whole toc once to know how many chapters % there are before deciding ... \hbox to 1em{#1\hss}% } % These macros generate individual entries in the table of contents. % The first argument is the chapter or section name. % The last argument is the page number. % The arguments in between are the chapter number, section number, ... % Parts, in the main contents. Replace the part number, which doesn't % exist, with an empty box. Let's hope all the numbers have the same width. % Also ignore the page number, which is conventionally not printed. \def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} \def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} % % Parts, in the short toc. \def\shortpartentry#1#2#3#4{% \penalty-300 \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip \shortchapentry{{\bf #1}}{\numeralbox}{}{}% } % Chapters, in the main contents. \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} % % Chapters, in the short toc. % See comments in \dochapentry re vbox and related settings. \def\shortchapentry#1#2#3#4{% \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% } % Appendices, in the main contents. % Need the word Appendix, and a fixed-size box. % \def\appendixbox#1{% % We use M since it's probably the widest letter. \setbox0 = \hbox{\putwordAppendix{} M}% \hbox to \wd0{\putwordAppendix{} #1\hss}} % \def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} % Unnumbered chapters. \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} \def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} % Sections. \def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} \let\appsecentry=\numsecentry \def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} % Subsections. \def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} \let\appsubsecentry=\numsubsecentry \def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} % And subsubsections. \def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} \let\appsubsubsecentry=\numsubsubsecentry \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} % This parameter controls the indentation of the various levels. % Same as \defaultparindent. \newdimen\tocindent \tocindent = 15pt % Now for the actual typesetting. In all these, #1 is the text and #2 is the % page number. % % If the toc has to be broken over pages, we want it to be at chapters % if at all possible; hence the \penalty. \def\dochapentry#1#2{% \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip \begingroup \chapentryfonts \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup \nobreak\vskip .25\baselineskip plus.1\baselineskip } \def\dosecentry#1#2{\begingroup \secentryfonts \leftskip=\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsecentry#1#2{\begingroup \subsecentryfonts \leftskip=2\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} \def\dosubsubsecentry#1#2{\begingroup \subsubsecentryfonts \leftskip=3\tocindent \tocentry{#1}{\dopageno\bgroup#2\egroup}% \endgroup} % We use the same \entry macro as for the index entries. \let\tocentry = \entry % Space between chapter (or whatever) number and the title. \def\labelspace{\hskip1em \relax} \def\dopageno#1{{\rm #1}} \def\doshortpageno#1{{\rm #1}} \def\chapentryfonts{\secfonts \rm} \def\secentryfonts{\textfonts} \def\subsecentryfonts{\textfonts} \def\subsubsecentryfonts{\textfonts} \message{environments,} % @foo ... @end foo. % @tex ... @end tex escapes into raw TeX temporarily. % One exception: @ is still an escape character, so that @end tex works. % But \@ or @@ will get a plain @ character. \envdef\tex{% \setupmarkupstyle{tex}% \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie \catcode `\%=14 \catcode `\+=\other \catcode `\"=\other \catcode `\|=\other \catcode `\<=\other \catcode `\>=\other \catcode`\`=\other \catcode`\'=\other \escapechar=`\\ % % ' is active in math mode (mathcode"8000). So reset it, and all our % other math active characters (just in case), to plain's definitions. \mathactive % \let\b=\ptexb \let\bullet=\ptexbullet \let\c=\ptexc \let\,=\ptexcomma \let\.=\ptexdot \let\dots=\ptexdots \let\equiv=\ptexequiv \let\!=\ptexexclam \let\i=\ptexi \let\indent=\ptexindent \let\noindent=\ptexnoindent \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace \let\/=\ptexslash \let\*=\ptexstar \let\t=\ptext \expandafter \let\csname top\endcsname=\ptextop % outer \let\frenchspacing=\plainfrenchspacing % \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% \def\@{@}% } % There is no need to define \Etex. % Define @lisp ... @end lisp. % @lisp environment forms a group so it can rebind things, % including the definition of @end lisp (which normally is erroneous). % Amount to narrow the margins by for @lisp. \newskip\lispnarrowing \lispnarrowing=0.4in % This is the definition that ^^M gets inside @lisp, @example, and other % such environments. \null is better than a space, since it doesn't % have any width. \def\lisppar{\null\endgraf} % This space is always present above and below environments. \newskip\envskipamount \envskipamount = 0pt % Make spacing and below environment symmetrical. We use \parskip here % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% % =10000 instead of <10000 because of a special case in \itemzzz and % \sectionheading, q.v. \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip % it's not a good place to break if the last penalty was \nobreak % or better ... \ifnum\lastpenalty<10000 \penalty-50 \fi \vskip\envskipamount \fi \fi }} \let\afterenvbreak = \aboveenvbreak % \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will % also clear it, so that its embedded environments do the narrowing again. \let\nonarrowing=\relax % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. \font\circle=lcircle10 \newdimen\circthick \newdimen\cartouter\newdimen\cartinner \newskip\normbskip\newskip\normpskip\newskip\normlskip \circthick=\fontdimen8\circle % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} \def\cbl{{\circle\char'012\hskip -6pt}} \def\cbr{{\hskip 6pt\circle\char'011}} \def\carttop{\hbox to \cartouter{\hskip\lskip \ctl\leaders\hrule height\circthick\hfil\ctr \hskip\rskip}} \def\cartbot{\hbox to \cartouter{\hskip\lskip \cbl\leaders\hrule height\circthick\hfil\cbr \hskip\rskip}} % \newskip\lskip\newskip\rskip \envdef\cartouche{% \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip \leftskip=0pt\rightskip=0pt % we want these *outside*. \cartinner=\hsize \advance\cartinner by-\lskip \advance\cartinner by-\rskip \cartouter=\hsize \advance\cartouter by 18.4pt % allow for 3pt kerns on either % side, and for 6pt waste from % each corner char, and rule thickness \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip % Flag to tell @lisp, etc., not to narrow margin. \let\nonarrowing = t% % % If this cartouche directly follows a sectioning command, we need the % \parskip glue (backspaced over by default) or the cartouche can % collide with the section heading. \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi % \vbox\bgroup \baselineskip=0pt\parskip=0pt\lineskip=0pt \carttop \hbox\bgroup \hskip\lskip \vrule\kern3pt \vbox\bgroup \kern3pt \hsize=\cartinner \baselineskip=\normbskip \lineskip=\normlskip \parskip=\normpskip \vskip -\parskip \comment % For explanation, see the end of def\group. } \def\Ecartouche{% \ifhmode\par\fi \kern3pt \egroup \kern3pt\vrule \hskip\rskip \egroup \cartbot \egroup \checkinserts } % This macro is called at the beginning of all the @example variants, % inside a group. \newdimen\nonfillparindent \def\nonfillstart{% \aboveenvbreak \hfuzz = 12pt % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output \parskip = 0pt % Turn off paragraph indentation but redefine \indent to emulate % the normal \indent. \nonfillparindent=\parindent \parindent = 0pt \let\indent\nonfillindent % \emergencystretch = 0pt % don't try to avoid overfull boxes \ifx\nonarrowing\relax \advance \leftskip by \lispnarrowing \exdentamount=\lispnarrowing \else \let\nonarrowing = \relax \fi \let\exdent=\nofillexdent } \begingroup \obeyspaces % We want to swallow spaces (but not other tokens) after the fake % @indent in our nonfill-environments, where spaces are normally % active and set to @tie, resulting in them not being ignored after % @indent. \gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% \gdef\nonfillindentcheck{% \ifx\temp % \expandafter\nonfillindentgobble% \else% \leavevmode\nonfillindentbox% \fi% }% \endgroup \def\nonfillindentgobble#1{\nonfillindent} \def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} % If you want all examples etc. small: @set dispenvsize small. % If you want even small examples the full size: @set dispenvsize nosmall. % This affects the following displayed environments: % @example, @display, @format, @lisp % \def\smallword{small} \def\nosmallword{nosmall} \let\SETdispenvsize\relax \def\setnormaldispenv{% \ifx\SETdispenvsize\smallword % end paragraph for sake of leading, in case document has no blank % line. This is redundant with what happens in \aboveenvbreak, but % we need to do it before changing the fonts, and it's inconvenient % to change the fonts afterward. \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } \def\setsmalldispenv{% \ifx\SETdispenvsize\nosmallword \else \ifnum \lastpenalty=10000 \else \endgraf \fi \smallexamplefonts \rm \fi } % We often define two environments, @foo and @smallfoo. % Let's do it in one command. #1 is the env name, #2 the definition. \def\makedispenvdef#1#2{% \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% \expandafter\let\csname E#1\endcsname \afterenvbreak \expandafter\let\csname Esmall#1\endcsname \afterenvbreak } % Define two environment synonyms (#1 and #2) for an environment. \def\maketwodispenvdef#1#2#3{% \makedispenvdef{#1}{#3}% \makedispenvdef{#2}{#3}% } % % @lisp: indented, narrowed, typewriter font; % @example: same as @lisp. % % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. % \maketwodispenvdef{lisp}{example}{% \nonfillstart \tt\setupmarkupstyle{example}% \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. \gobble % eat return } % @display/@smalldisplay: same as @lisp except keep current font. % \makedispenvdef{display}{% \nonfillstart \gobble } % @format/@smallformat: same as @display except don't narrow margins. % \makedispenvdef{format}{% \let\nonarrowing = t% \nonfillstart \gobble } % @flushleft: same as @format, but doesn't obey \SETdispenvsize. \envdef\flushleft{% \let\nonarrowing = t% \nonfillstart \gobble } \let\Eflushleft = \afterenvbreak % @flushright. % \envdef\flushright{% \let\nonarrowing = t% \nonfillstart \advance\leftskip by 0pt plus 1fill\relax \gobble } \let\Eflushright = \afterenvbreak % @raggedright does more-or-less normal line breaking but no right % justification. From plain.tex. \envdef\raggedright{% \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax } \let\Eraggedright\par \envdef\raggedleft{% \parindent=0pt \leftskip0pt plus2em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedleft\par \envdef\raggedcenter{% \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt \hbadness=10000 % Last line will usually be underfull, so turn off % badness reporting. } \let\Eraggedcenter\par % @quotation does normal linebreaking (hence we can't use \nonfillstart) % and narrows the margins. We keep \parskip nonzero in general, since % we're doing normal filling. So, when using \aboveenvbreak and % \afterenvbreak, temporarily make \parskip 0. % \makedispenvdef{quotation}{\quotationstart} % \def\quotationstart{% \indentedblockstart % same as \indentedblock, but increase right margin too. \ifx\nonarrowing\relax \advance\rightskip by \lispnarrowing \fi \parsearg\quotationlabel } % We have retained a nonzero parskip for the environment, since we're % doing normal filling. % \def\Equotation{% \par \ifx\quotationauthor\thisisundefined\else % indent a bit. \leftline{\kern 2\leftskip \sl ---\quotationauthor}% \fi {\parskip=0pt \afterenvbreak}% } \def\Esmallquotation{\Equotation} % If we're given an argument, typeset it in bold with a colon after. \def\quotationlabel#1{% \def\temp{#1}% \ifx\temp\empty \else {\bf #1: }% \fi } % @indentedblock is like @quotation, but indents only on the left and % has no optional argument. % \makedispenvdef{indentedblock}{\indentedblockstart} % \def\indentedblockstart{% {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip \parindent=0pt % % @cartouche defines \nonarrowing to inhibit narrowing at next level down. \ifx\nonarrowing\relax \advance\leftskip by \lispnarrowing \exdentamount = \lispnarrowing \else \let\nonarrowing = \relax \fi } % Keep a nonzero parskip for the environment, since we're doing normal filling. % \def\Eindentedblock{% \par {\parskip=0pt \afterenvbreak}% } \def\Esmallindentedblock{\Eindentedblock} % LaTeX-like @verbatim...@end verbatim and @verb{...} % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org % % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % % [Knuth] p.344; only we need to do the other characters Texinfo sets % active too. Otherwise, they get lost as the first character on a % verbatim line. \def\dospecials{% \do\ \do\\\do\{\do\}\do\$\do\&% \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% \do\<\do\>\do\|\do\@\do+\do\"% % Don't do the quotes -- if we do, @set txicodequoteundirected and % @set txicodequotebacktick will not have effect on @verb and % @verbatim, and ?` and !` ligatures won't get disabled. %\do\`\do\'% } % % [Knuth] p. 380 \def\uncatcodespecials{% \def\do##1{\catcode`##1=\other}\dospecials} % % Setup for the @verb command. % % Eight spaces for a tab \begingroup \catcode`\^^I=\active \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} \endgroup % \def\setupverb{% \tt % easiest (and conventionally used) font for verbatim \def\par{\leavevmode\endgraf}% \setupmarkupstyle{verb}% \tabeightspaces % Respect line breaks, % print special symbols as themselves, and % make each space count % must do in this order: \obeylines \uncatcodespecials \sepspaces } % Setup for the @verbatim environment % % Real tab expansion. \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount % % We typeset each line of the verbatim in an \hbox, so we can handle % tabs. The \global is in case the verbatim line starts with an accent, % or some other command that starts with a begin-group. Otherwise, the % entire \verbbox would disappear at the corresponding end-group, before % it is typeset. Meanwhile, we can't have nested verbatim commands % (can we?), so the \global won't be overwriting itself. \newbox\verbbox \def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} % \begingroup \catcode`\^^I=\active \gdef\tabexpand{% \catcode`\^^I=\active \def^^I{\leavevmode\egroup \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab \divide\dimen\verbbox by\tabw \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox }% } \endgroup % start the verbatim environment. \def\setupverbatim{% \let\nonarrowing = t% \nonfillstart \tt % easiest (and conventionally used) font for verbatim % The \leavevmode here is for blank lines. Otherwise, we would % never \starttabox and the \egroup would end verbatim mode. \def\par{\leavevmode\egroup\box\verbbox\endgraf}% \tabexpand \setupmarkupstyle{verbatim}% % Respect line breaks, % print special symbols as themselves, and % make each space count. % Must do in this order: \obeylines \uncatcodespecials \sepspaces \everypar{\starttabbox}% } % Do the @verb magic: verbatim text is quoted by unique % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % % \def\doverb'{'#1'}'{#1} % % [Knuth] p. 382; only eat outer {} \begingroup \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] \endgroup % \def\verb{\begingroup\setupverb\doverb} % % % Do the @verbatim magic: define the macro \doverbatim so that % the (first) argument ends when '@end verbatim' is reached, ie: % % \def\doverbatim#1@end verbatim{#1} % % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': % we need not redefine '\', '{' and '}'. % % Inspired by LaTeX's verbatim command set [latex.ltx] % \begingroup \catcode`\ =\active \obeylines % % ignore everything up to the first ^^M, that's the newline at the end % of the @verbatim input line itself. Otherwise we get an extra blank % line in the output. \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% % We really want {...\end verbatim} in the body of the macro, but % without the active space; thus we have to use \xdef and \gobble. \endgroup % \envdef\verbatim{% \setupverbatim\doverbatim } \let\Everbatim = \afterenvbreak % @verbatiminclude FILE - insert text of file in verbatim environment. % \def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} % \def\doverbatiminclude#1{% {% \makevalueexpandable \setupverbatim \indexnofonts % Allow `@@' and other weird things in file names. \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% \input #1 \afterenvbreak }% } % @copying ... @end copying. % Save the text away for @insertcopying later. % % We save the uninterpreted tokens, rather than creating a box. % Saving the text in a box would be much easier, but then all the % typesetting commands (@smallbook, font changes, etc.) have to be done % beforehand -- and a) we want @copying to be done first in the source % file; b) letting users define the frontmatter in as flexible order as % possible is very desirable. % \def\copying{\checkenv{}\begingroup\scanargctxt\docopying} \def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} % \def\insertcopying{% \begingroup \parindent = 0pt % paragraph indentation looks wrong on title page \scanexp\copyingtext \endgroup } \message{defuns,} % @defun etc. \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\defunpenalty % Start the processing of @deffn: \def\startdefun{% \ifnum\lastpenalty<10000 \medbreak \defunpenalty=10003 % Will keep this @deffn together with the % following @def command, see below. \else % If there are two @def commands in a row, we'll have a \nobreak, % which is there to keep the function description together with its % header. But if there's nothing but headers, we need to allow a % break somewhere. Check specifically for penalty 10002, inserted % by \printdefunline, instead of 10000, since the sectioning % commands also insert a nobreak penalty, and we don't want to allow % a break between a section heading and a defun. % % As a further refinement, we avoid "club" headers by signalling % with penalty of 10003 after the very first @deffn in the % sequence (see above), and penalty of 10002 after any following % @def command. \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi % % Similarly, after a section heading, do not allow a break. % But do insert the glue. \medskip % preceded by discardable penalty, so not a breakpoint \fi % \parindent=0in \advance\leftskip by \defbodyindent \exdentamount=\defbodyindent } \def\dodefunx#1{% % First, check whether we are in the right environment: \checkenv#1% % % As above, allow line break if we have multiple x headers in a row. % It's not a great place, though. \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi % % And now, it's time to reuse the body of the original defun: \expandafter\gobbledefun#1% } \def\gobbledefun#1\startdefun{} % \printdefunline \deffnheader{text} % \def\printdefunline#1#2{% \begingroup % call \deffnheader: #1#2 \endheader % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax \endgraf \nobreak\vskip -\parskip \penalty\defunpenalty % signal to \startdefun and \dodefunx % Some of the @defun-type tags do not enable magic parentheses, % rendering the following check redundant. But we don't optimize. \checkparencounts \endgroup } \def\Edefun{\endgraf\medbreak} % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; % the only thing remaining is to define \deffnheader. % \def\makedefun#1{% \expandafter\let\csname E#1\endcsname = \Edefun \edef\temp{\noexpand\domakedefun \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% \temp } % \domakedefun \deffn \deffnx \deffnheader % % Define \deffn and \deffnx, without parameters. % \deffnheader has to be defined explicitly. % \def\domakedefun#1#2#3{% \envdef#1{% \startdefun \doingtypefnfalse % distinguish typed functions from all else \parseargusing\activeparens{\printdefunline#3}% }% \def#2{\dodefunx#1}% \def#3% } \newif\ifdoingtypefn % doing typed function? \newif\ifrettypeownline % typeset return type on its own line? % @deftypefnnewline on|off says whether the return type of typed functions % are printed on their own line. This affects @deftypefn, @deftypefun, % @deftypeop, and @deftypemethod. % \parseargdef\deftypefnnewline{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETtxideftypefnnl\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETtxideftypefnnl\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @txideftypefnnl value `\temp', must be on|off}% \fi\fi } % Untyped functions: % @deffn category name args \makedefun{deffn}{\deffngeneral{}} % @deffn category class name args \makedefun{defop}#1 {\defopon{#1\ \putwordon}} % \defopon {category on}class name args \def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deffngeneral {subind}category name args % \def\deffngeneral#1#2 #3 #4\endheader{% % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. \dosubind{fn}{\code{#3}}{#1}% \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% } % Typed functions: % @deftypefn category type name args \makedefun{deftypefn}{\deftypefngeneral{}} % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} % \deftypeopon {category on}class type name args \def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } % \deftypefngeneral {subind}category type name args % \def\deftypefngeneral#1#2 #3 #4 #5\endheader{% \dosubind{fn}{\code{#4}}{#1}% \doingtypefntrue \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Typed variables: % @deftypevr category type var args \makedefun{deftypevr}{\deftypecvgeneral{}} % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} % \deftypecvof {category of}class type var args \def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } % \deftypecvgeneral {subind}category type var args % \def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% \dosubind{vr}{\code{#4}}{#1}% \defname{#2}{#3}{#4}\defunargs{#5\unskip}% } % Untyped variables: % @defvr category var args \makedefun{defvr}#1 {\deftypevrheader{#1} {} } % @defcv category class var args \makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} % \defcvof {category of}class var args \def\defcvof#1#2 {\deftypecvof{#1}#2 {} } % Types: % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% \doind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } % Remaining @defun-like shortcuts: \makedefun{defun}{\deffnheader{\putwordDeffunc} } \makedefun{defmac}{\deffnheader{\putwordDefmac} } \makedefun{defspec}{\deffnheader{\putwordDefspec} } \makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } \makedefun{defvar}{\defvrheader{\putwordDefvar} } \makedefun{defopt}{\defvrheader{\putwordDefopt} } \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } \makedefun{defmethod}{\defopon\putwordMethodon} \makedefun{deftypemethod}{\deftypeopon\putwordMethodon} \makedefun{defivar}{\defcvof\putwordInstanceVariableof} \makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} % \defname, which formats the name of the @def (not the args). % #1 is the category, such as "Function". % #2 is the return type, if any. % #3 is the function name. % % We are followed by (but not passed) the arguments, if any. % \def\defname#1#2#3{% \par % Get the values of \leftskip and \rightskip as they were outside the @def... \advance\leftskip by -\defbodyindent % % Determine if we are typesetting the return type of a typed function % on a line by itself. \rettypeownlinefalse \ifdoingtypefn % doing a typed function specifically? % then check user option for putting return type on its own line: \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else \rettypeownlinetrue \fi \fi % % How we'll format the category name. Putting it in brackets helps % distinguish it from the body text that may end up on the next line % just below it. \def\temp{#1}% \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} % % Figure out line sizes for the paragraph shape. We'll always have at % least two. \tempnum = 2 % % The first line needs space for \box0; but if \rightskip is nonzero, % we need only space for the part of \box0 which exceeds it: \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip % % If doing a return type on its own line, we'll have another line. \ifrettypeownline \advance\tempnum by 1 \def\maybeshapeline{0in \hsize}% \else \def\maybeshapeline{}% \fi % % The continuations: \dimen2=\hsize \advance\dimen2 by -\defargsindent % % The final paragraph shape: \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 % % Put the category name at the right margin. \noindent \hbox to 0pt{% \hfil\box0 \kern-\hsize % \hsize has to be shortened this way: \kern\leftskip % Intentionally do not respect \rightskip, since we need the space. }% % % Allow all lines to be underfull without complaint: \tolerance=10000 \hbadness=10000 \exdentamount=\defbodyindent {% % defun fonts. We use typewriter by default (used to be bold) because: % . we're printing identifiers, they should be in tt in principle. % . in languages with many accents, such as Czech or French, it's % common to leave accents off identifiers. The result looks ok in % tt, but exceedingly strange in rm. % . we don't want -- and --- to be treated as ligatures. % . this still does not fix the ?` and !` ligatures, but so far no % one has made identifiers using them :). \df \tt \def\temp{#2}% text of the return type \ifx\temp\empty\else \tclose{\temp}% typeset the return type \ifrettypeownline % put return type on its own line; prohibit line break following: \hfil\vadjust{\nobreak}\break \else \space % type on same line, so just followed by a space \fi \fi % no return type #3% output function name }% {\rm\enskip}% hskip 0.5 em of \tenrm % \boldbrax % arguments will be output next, if any. } % Print arguments in slanted roman (not ttsl), inconsistently with using % tt for the name. This is because literal text is sometimes needed in % the argument list (groff manual), and ttsl and tt are not very % distinguishable. Prevent hyphenation at `-' chars. % \def\defunargs#1{% % use sl by default (not ttsl), % tt for the names. \df \sl \hyphenchar\font=0 % % On the other hand, if an argument has two dashes (for instance), we % want a way to get ttsl. We used to recommend @var for that, so % leave the code in, but it's strange for @var to lead to typewriter. % Nowadays we recommend @code, since the difference between a ttsl hyphen % and a tt hyphen is pretty tiny. @code also disables ?` !`. \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% #1% \sl\hyphenchar\font=45 } % We want ()&[] to print specially on the defun line. % \def\activeparens{% \catcode`\(=\active \catcode`\)=\active \catcode`\[=\active \catcode`\]=\active \catcode`\&=\active } % Make control sequences which act like normal parenthesis chars. \let\lparen = ( \let\rparen = ) % Be sure that we always have a definition for `(', etc. For example, % if the fn name has parens in it, \boldbrax will not be in effect yet, % so TeX would otherwise complain about undefined control sequence. { \activeparens \global\let(=\lparen \global\let)=\rparen \global\let[=\lbrack \global\let]=\rbrack \global\let& = \& \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} \gdef\magicamp{\let&=\amprm} } \newcount\parencount % If we encounter &foo, then turn on ()-hacking afterwards \newif\ifampseen \def\amprm#1 {\ampseentrue{\bf\ }} \def\parenfont{% \ifampseen % At the first level, print parens in roman, % otherwise use the default font. \ifnum \parencount=1 \rm \fi \else % The \sf parens (in \boldbrax) actually are a little bolder than % the contained text. This is especially needed for [ and ] . \sf \fi } \def\infirstlevel#1{% \ifampseen \ifnum\parencount=1 #1% \fi \fi } \def\bfafterword#1 {#1 \bf} \def\opnr{% \global\advance\parencount by 1 {\parenfont(}% \infirstlevel \bfafterword } \def\clnr{% {\parenfont)}% \infirstlevel \sl \global\advance\parencount by -1 } \newcount\brackcount \def\lbrb{% \global\advance\brackcount by 1 {\bf[}% } \def\rbrb{% {\bf]}% \global\advance\brackcount by -1 } \def\checkparencounts{% \ifnum\parencount=0 \else \badparencount \fi \ifnum\brackcount=0 \else \badbrackcount \fi } % these should not use \errmessage; the glibc manual, at least, actually % has such constructs (when documenting function pointers). \def\badparencount{% \message{Warning: unbalanced parentheses in @def...}% \global\parencount=0 } \def\badbrackcount{% \message{Warning: unbalanced square brackets in @def...}% \global\brackcount=0 } \message{macros,} % @macro. % To do this right we need a feature of e-TeX, \scantokens, % which we arrange to emulate with a temporary file in ordinary TeX. \ifx\eTeXversion\thisisundefined \newwrite\macscribble \def\scantokens#1{% \toks0={#1}% \immediate\openout\macscribble=\jobname.tmp \immediate\write\macscribble{\the\toks0}% \immediate\closeout\macscribble \input \jobname.tmp } \fi \def\scanmacro#1{\begingroup \newlinechar`\^^M \let\xeatspaces\eatspaces % % Undo catcode changes of \startcontents and \doprintindex % When called from @insertcopying or (short)caption, we need active % backslash to get it printed correctly. Previously, we had % \catcode`\\=\other instead. We'll see whether a problem appears % with macro expansion. --kasal, 19aug04 \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ % % ... and for \example: \spaceisspace % % The \empty here causes a following catcode 5 newline to be eaten as % part of reading whitespace after a control sequence. It does not % eat a catcode 13 newline. There's no good way to handle the two % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX % would then have different behavior). See the Macro Details node in % the manual for the workaround we recommend for macros and % line-oriented commands. % \scantokens{#1\empty}% \endgroup} \def\scanexp#1{% \edef\temp{\noexpand\scanmacro{#1}}% \temp } \newcount\paramno % Count of parameters \newtoks\macname % Macro name \newif\ifrecursive % Is it recursive? % List of all defined macros in the form % \definedummyword\macro1\definedummyword\macro2... % Currently is also contains all @aliases; the list can be split % if there is a need. \def\macrolist{} % Add the macro to \macrolist \def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} \def\addtomacrolistxxx#1{% \toks0 = \expandafter{\macrolist\definedummyword#1}% \xdef\macrolist{\the\toks0}% } % Utility routines. % This does \let #1 = #2, with \csnames; that is, % \let \csname#1\endcsname = \csname#2\endcsname % (except of course we have to play expansion games). % \def\cslet#1#2{% \expandafter\let \csname#1\expandafter\endcsname \csname#2\endcsname } % Trim leading and trailing spaces off a string. % Concepts from aro-bend problem 15 (see CTAN). {\catcode`\@=11 \gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} \gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} \gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} \def\unbrace#1{#1} \unbrace{\gdef\trim@@@ #1 } #2@{#1} } % Trim a single trailing ^^M off a string. {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% \gdef\eatcrb#1Q#2Q{#1}% } % Macro bodies are absorbed as an argument in a context where % all characters are catcode 10, 11 or 12, except \ which is active % (as in normal texinfo). It is necessary to change the definition of \ % to recognize macro arguments; this is the job of \mbodybackslash. % % Non-ASCII encodings make 8-bit characters active, so un-activate % them to avoid their expansion. Must do this non-globally, to % confine the change to the current group. % % It's necessary to have hard CRs when the macro is executed. This is % done by making ^^M (\endlinechar) catcode 12 when reading the macro % body, and then making it the \newlinechar in \scanmacro. % \def\scanctxt{% used as subroutine \catcode`\"=\other \catcode`\+=\other \catcode`\<=\other \catcode`\>=\other \catcode`\@=\other \catcode`\^=\other \catcode`\_=\other \catcode`\|=\other \catcode`\~=\other \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi } \def\scanargctxt{% used for copying and captions, not macros. \scanctxt \catcode`\\=\other \catcode`\^^M=\other } \def\macrobodyctxt{% used for @macro definitions \scanctxt \catcode`\{=\other \catcode`\}=\other \catcode`\^^M=\other \usembodybackslash } \def\macroargctxt{% used when scanning invocations \scanctxt \catcode`\\=0 } % why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" % for the single characters \ { }. Thus, we end up with the "commands" % that would be written @\ @{ @} in a Texinfo document. % % We already have @{ and @}. For @\, we define it here, and only for % this purpose, to produce a typewriter backslash (so, the @\ that we % define for @math can't be used with @macro calls): % \def\\{\normalbackslash}% % % We would like to do this for \, too, since that is what makeinfo does. % But it is not possible, because Texinfo already has a command @, for a % cedilla accent. Documents must use @comma{} instead. % % \anythingelse will almost certainly be an error of some kind. % \mbodybackslash is the definition of \ in @macro bodies. % It maps \foo\ => \csname macarg.foo\endcsname => #N % where N is the macro parameter number. % We define \csname macarg.\endcsname to be \realbackslash, so % \\ in macro replacement text gets you a backslash. % {\catcode`@=0 @catcode`@\=@active @gdef@usembodybackslash{@let\=@mbodybackslash} @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} } \expandafter\def\csname macarg.\endcsname{\realbackslash} \def\margbackslash#1{\char`\#1 } \def\macro{\recursivefalse\parsearg\macroxxx} \def\rmacro{\recursivetrue\parsearg\macroxxx} \def\macroxxx#1{% \getargs{#1}% now \macname is the macname and \argl the arglist \ifx\argl\empty % no arguments \paramno=0\relax \else \expandafter\parsemargdef \argl;% \if\paramno>256\relax \ifx\eTeXversion\thisisundefined \errhelp = \EMsimple \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} \fi \fi \fi \if1\csname ismacro.\the\macname\endcsname \message{Warning: redefining \the\macname}% \else \expandafter\ifx\csname \the\macname\endcsname \relax \else \errmessage{Macro name \the\macname\space already defined}\fi \global\cslet{macsave.\the\macname}{\the\macname}% \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% \addtomacrolist{\the\macname}% \fi \begingroup \macrobodyctxt \ifrecursive \expandafter\parsermacbody \else \expandafter\parsemacbody \fi} \parseargdef\unmacro{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% % Remove the macro name from \macrolist: \begingroup \expandafter\let\csname#1\endcsname \relax \let\definedummyword\unmacrodo \xdef\macrolist{\macrolist}% \endgroup \else \errmessage{Macro #1 not defined}% \fi } % Called by \do from \dounmacro on each macro. The idea is to omit any % macro definitions that have been changed to \relax. % \def\unmacrodo#1{% \ifx #1\relax % remove this \else \noexpand\definedummyword \noexpand#1% \fi } % This makes use of the obscure feature that if the last token of a % is #, then the preceding argument is delimited by % an opening brace, and that opening brace is not consumed. \def\getargs#1{\getargsxxx#1{}} \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} \def\getmacname#1 #2\relax{\macname={#1}} \def\getmacargs#1{\def\argl{#1}} % For macro processing make @ a letter so that we can make Texinfo private macro names. \edef\texiatcatcode{\the\catcode`\@} \catcode `@=11\relax % Parse the optional {params} list. Set up \paramno and \paramlist % so \defmacro knows what to do. Define \macarg.BLAH for each BLAH % in the params list to some hook where the argument si to be expanded. If % there are less than 10 arguments that hook is to be replaced by ##N where N % is the position in that list, that is to say the macro arguments are to be % defined `a la TeX in the macro body. % % That gets used by \mbodybackslash (above). % % We need to get `macro parameter char #' into several definitions. % The technique used is stolen from LaTeX: let \hash be something % unexpandable, insert that wherever you need a #, and then redefine % it to # just before using the token list produced. % % The same technique is used to protect \eatspaces till just before % the macro is used. % % If there are 10 or more arguments, a different technique is used, where the % hook remains in the body, and when macro is to be expanded the body is % processed again to replace the arguments. % % In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the % argument N value and then \edef the body (nothing else will expand because of % the catcode regime underwhich the body was input). % % If you compile with TeX (not eTeX), and you have macros with 10 or more % arguments, you need that no macro has more than 256 arguments, otherwise an % error is produced. \def\parsemargdef#1;{% \paramno=0\def\paramlist{}% \let\hash\relax \let\xeatspaces\relax \parsemargdefxxx#1,;,% % In case that there are 10 or more arguments we parse again the arguments % list to set new definitions for the \macarg.BLAH macros corresponding to % each BLAH argument. It was anyhow needed to parse already once this list % in order to count the arguments, and as macros with at most 9 arguments % are by far more frequent than macro with 10 or more arguments, defining % twice the \macarg.BLAH macros does not cost too much processing power. \ifnum\paramno<10\relax\else \paramno0\relax \parsemmanyargdef@@#1,;,% 10 or more arguments \fi } \def\parsemargdefxxx#1,{% \if#1;\let\next=\relax \else \let\next=\parsemargdefxxx \advance\paramno by 1 \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname {\xeatspaces{\hash\the\paramno}}% \edef\paramlist{\paramlist\hash\the\paramno,}% \fi\next} \def\parsemmanyargdef@@#1,{% \if#1;\let\next=\relax \else \let\next=\parsemmanyargdef@@ \edef\tempb{\eatspaces{#1}}% \expandafter\def\expandafter\tempa \expandafter{\csname macarg.\tempb\endcsname}% % Note that we need some extra \noexpand\noexpand, this is because we % don't want \the to be expanded in the \parsermacbody as it uses an % \xdef . \expandafter\edef\tempa {\noexpand\noexpand\noexpand\the\toks\the\paramno}% \advance\paramno by 1\relax \fi\next} % These two commands read recursive and nonrecursive macro bodies. % (They're different since rec and nonrec macros end differently.) % \catcode `\@\texiatcatcode \long\def\parsemacbody#1@end macro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \long\def\parsermacbody#1@end rmacro% {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% \catcode `\@=11\relax \let\endargs@\relax \let\nil@\relax \def\nilm@{\nil@}% \long\def\nillm@{\nil@}% % This macro is expanded during the Texinfo macro expansion, not during its % definition. It gets all the arguments values and assigns them to macros % macarg.ARGNAME % % #1 is the macro name % #2 is the list of argument names % #3 is the list of argument values \def\getargvals@#1#2#3{% \def\macargdeflist@{}% \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. \def\paramlist{#2,\nil@}% \def\macroname{#1}% \begingroup \macroargctxt \def\argvaluelist{#3,\nil@}% \def\@tempa{#3}% \ifx\@tempa\empty \setemptyargvalues@ \else \getargvals@@ \fi } % \def\getargvals@@{% \ifx\paramlist\nilm@ % Some sanity check needed here that \argvaluelist is also empty. \ifx\argvaluelist\nillm@ \else \errhelp = \EMsimple \errmessage{Too many arguments in macro `\macroname'!}% \fi \let\next\macargexpandinbody@ \else \ifx\argvaluelist\nillm@ % No more arguments values passed to macro. Set remaining named-arg % macros to empty. \let\next\setemptyargvalues@ \else % pop current arg name into \@tempb \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% \expandafter\@tempa\expandafter{\paramlist}% % pop current argument value into \@tempc \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% \expandafter\@tempa\expandafter{\argvaluelist}% % Here \@tempb is the current arg name and \@tempc is the current arg value. % First place the new argument macro definition into \@tempd \expandafter\macname\expandafter{\@tempc}% \expandafter\let\csname macarg.\@tempb\endcsname\relax \expandafter\def\expandafter\@tempe\expandafter{% \csname macarg.\@tempb\endcsname}% \edef\@tempd{\long\def\@tempe{\the\macname}}% \push@\@tempd\macargdeflist@ \let\next\getargvals@@ \fi \fi \next } \def\push@#1#2{% \expandafter\expandafter\expandafter\def \expandafter\expandafter\expandafter#2% \expandafter\expandafter\expandafter{% \expandafter#1#2}% } % Replace arguments by their values in the macro body, and place the result % in macro \@tempa \def\macvalstoargs@{% % To do this we use the property that token registers that are \the'ed % within an \edef expand only once. So we are going to place all argument % values into respective token registers. % % First we save the token context, and initialize argument numbering. \begingroup \paramno0\relax % Then, for each argument number #N, we place the corresponding argument % value into a new token list register \toks#N \expandafter\putargsintokens@\saveparamlist@,;,% % Then, we expand the body so that argument are replaced by their % values. The trick for values not to be expanded themselves is that they % are within tokens and that tokens expand only once in an \edef . \edef\@tempc{\csname mac.\macroname .body\endcsname}% % Now we restore the token stack pointer to free the token list registers % which we have used, but we make sure that expanded body is saved after % group. \expandafter \endgroup \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% } \def\macargexpandinbody@{% %% Define the named-macro outside of this group and then close this group. \expandafter \endgroup \macargdeflist@ % First the replace in body the macro arguments by their values, the result % is in \@tempa . \macvalstoargs@ % Then we point at the \norecurse or \gobble (for recursive) macro value % with \@tempb . \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname % Depending on whether it is recursive or not, we need some tailing % \egroup . \ifx\@tempb\gobble \let\@tempc\relax \else \let\@tempc\egroup \fi % And now we do the real job: \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% \@tempd } \def\putargsintokens@#1,{% \if#1;\let\next\relax \else \let\next\putargsintokens@ % First we allocate the new token list register, and give it a temporary % alias \@tempb . \toksdef\@tempb\the\paramno % Then we place the argument value into that token list register. \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname \expandafter\@tempb\expandafter{\@tempa}% \advance\paramno by 1\relax \fi \next } % Save the token stack pointer into macro #1 \def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} % Restore the token stack pointer from number in macro #1 \def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} % newtoks that can be used non \outer . \def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} % Tailing missing arguments are set to empty \def\setemptyargvalues@{% \ifx\paramlist\nilm@ \let\next\macargexpandinbody@ \else \expandafter\setemptyargvaluesparser@\paramlist\endargs@ \let\next\setemptyargvalues@ \fi \next } \def\setemptyargvaluesparser@#1,#2\endargs@{% \expandafter\def\expandafter\@tempa\expandafter{% \expandafter\def\csname macarg.#1\endcsname{}}% \push@\@tempa\macargdeflist@ \def\paramlist{#2}% } % #1 is the element target macro % #2 is the list macro % #3,#4\endargs@ is the list value \def\pop@#1#2#3,#4\endargs@{% \def#1{#3}% \def#2{#4}% } \long\def\longpop@#1#2#3,#4\endargs@{% \long\def#1{#3}% \long\def#2{#4}% } % This defines a Texinfo @macro. There are eight cases: recursive and % nonrecursive macros of zero, one, up to nine, and many arguments. % Much magic with \expandafter here. % \xdef is used so that macro definitions will survive the file % they're defined in; @include reads the file inside a group. % \def\defmacro{% \let\hash=##% convert placeholders to macro parameter chars \ifrecursive \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\scanmacro{\temp}}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup\noexpand\scanmacro{\temp}}% \else \ifnum\paramno<10\relax % at most 9 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{\egroup\noexpand\scanmacro{\temp}}% \else % 10 or more \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble \fi \fi \else \ifcase\paramno % 0 \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \or % 1 \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \noexpand\braceorline \expandafter\noexpand\csname\the\macname xxx\endcsname}% \expandafter\xdef\csname\the\macname xxx\endcsname##1{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % at most 9 \ifnum\paramno<10\relax \expandafter\xdef\csname\the\macname\endcsname{% \bgroup\noexpand\macroargctxt \expandafter\noexpand\csname\the\macname xx\endcsname}% \expandafter\xdef\csname\the\macname xx\endcsname##1{% \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% \expandafter\expandafter \expandafter\xdef \expandafter\expandafter \csname\the\macname xxx\endcsname \paramlist{% \egroup \noexpand\norecurse{\the\macname}% \noexpand\scanmacro{\temp}\egroup}% \else % 10 or more: \expandafter\xdef\csname\the\macname\endcsname{% \noexpand\getargvals@{\the\macname}{\argl}% }% \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse \fi \fi \fi} \catcode `\@\texiatcatcode\relax \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} % \braceorline decides whether the next nonwhitespace character is a % {. If so it reads up to the closing }, if not, it reads the whole % line. Whatever was read is then fed to the next control sequence % as an argument (by \parsebrace or \parsearg). % \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} \def\braceorlinexxx{% \ifx\nchar\bgroup\else \expandafter\parsearg \fi \macnamexxx} % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Make them active and then expand them all to nothing. % \def\alias{\parseargusing\obeyspaces\aliasxxx} \def\aliasxxx #1{\aliasyyy#1\relax} \def\aliasyyy #1=#2\relax{% {% \expandafter\let\obeyedspace=\empty \addtomacrolist{#1}% \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% }% \next } \message{cross references,} \newwrite\auxfile \newif\ifhavexrefs % True if xref values are known. \newif\ifwarnedxrefs % True if we warned once that they aren't known. % @inforef is relatively simple. \def\inforef #1{\inforefzzz #1,,,,**} \def\inforefzzz #1,#2,#3,#4**{% \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, node \samp{\ignorespaces#1{}}} % @node's only job in TeX is to define \lastnode, which is used in % cross-references. The @node line might or might not have commas, and % might or might not have spaces before the first comma, like: % @node foo , bar , ... % We don't want such trailing spaces in the node name. % \parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} % % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the % type (Ynumbered, Yappendix, Ynothing). % \def\donoderef#1{% \ifx\lastnode\empty\else \setref{\lastnode}{#1}% \global\let\lastnode=\empty \fi } % @anchor{NAME} -- define xref target at arbitrary point. % \newcount\savesfregister % \def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} \def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} \def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an % anchor), which consists of three parts: % 1) NAME-title - the current sectioning name taken from \lastsection, % or the anchor name. % 2) NAME-snt - section number and type, passed as the SNT arg, or % empty for anchors. % 3) NAME-pg - the page number. % % This is called from \donoderef, \anchor, and \dofloat. In the case of % floats, there is an additional part, which is not written here: % 4) NAME-lof - the text as it should appear in a @listoffloats. % \def\setref#1#2{% \pdfmkdest{#1}% \iflinks {% \atdummies % preserve commands, but don't expand them \edef\writexrdef##1##2{% \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef ##1}{##2}}% these are parameters of \writexrdef }% \toks0 = \expandafter{\lastsection}% \immediate \writexrdef{title}{\the\toks0 }% \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout }% \fi } % @xrefautosectiontitle on|off says whether @section(ing) names are used % automatically in xrefs, if the third arg is not explicitly specified. % This was provided as a "secret" @set xref-automatic-section-title % variable, now it's official. % \parseargdef\xrefautomaticsectiontitle{% \def\temp{#1}% \ifx\temp\onword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \empty \else\ifx\temp\offword \expandafter\let\csname SETxref-automatic-section-title\endcsname = \relax \else \errhelp = \EMsimple \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', must be on|off}% \fi\fi } % % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is % the node name, #2 the name of the Info cross-reference, #3 the printed % node name, #4 the name of the Info file, #5 the name of the printed % manual. All but the node name can be omitted. % \def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} \def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} \def\ref#1{\xrefX[#1,,,,,,,]} % \newbox\toprefbox \newbox\printedrefnamebox \newbox\infofilenamebox \newbox\printedmanualbox % \def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup \unsepspaces % % Get args without leading/trailing spaces. \def\printedrefname{\ignorespaces #3}% \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% % \def\infofilename{\ignorespaces #4}% \setbox\infofilenamebox = \hbox{\infofilename\unskip}% % \def\printedmanual{\ignorespaces #5}% \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% % % If the printed reference name (arg #3) was not explicitly given in % the @xref, figure out what we want to use. \ifdim \wd\printedrefnamebox = 0pt % No printed node name was explicitly given. \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax % Not auto section-title: use node name inside the square brackets. \def\printedrefname{\ignorespaces #1}% \else % Auto section-title: use chapter/section title inside % the square brackets if we have it. \ifdim \wd\printedmanualbox > 0pt % It is in another manual, so we don't have it; use node name. \def\printedrefname{\ignorespaces #1}% \else \ifhavexrefs % We (should) know the real title if we have the xref values. \def\printedrefname{\refx{#1-title}{}}% \else % Otherwise just copy the Info node name. \def\printedrefname{\ignorespaces #1}% \fi% \fi \fi \fi % % Make link in pdf output. \ifpdf {\indexnofonts \turnoffactive \makevalueexpandable % This expands tokens, so do it after making catcode changes, so _ % etc. don't get their TeX definitions. This ignores all spaces in % #4, including (wrongly) those in the middle of the filename. \getfilename{#4}% % % This (wrongly) does not take account of leading or trailing % spaces in #1, which should be ignored. \edef\pdfxrefdest{#1}% \ifx\pdfxrefdest\empty \def\pdfxrefdest{Top}% no empty targets \else \txiescapepdf\pdfxrefdest % escape PDF special chars \fi % \leavevmode \startlink attr{/Border [0 0 0]}% \ifnum\filenamelength>0 goto file{\the\filename.pdf} name{\pdfxrefdest}% \else goto name{\pdfmkpgn{\pdfxrefdest}}% \fi }% \setcolor{\linkcolor}% \fi % % Float references are printed completely differently: "Figure 1.2" % instead of "[somenode], p.3". We distinguish them by the % LABEL-title being set to a magic string. {% % Have to otherify everything special to allow the \csname to % include an _ in the xref name, etc. \indexnofonts \turnoffactive \expandafter\global\expandafter\let\expandafter\Xthisreftitle \csname XR#1-title\endcsname }% \iffloat\Xthisreftitle % If the user specified the print name (third arg) to the ref, % print it instead of our usual "Figure 1.2". \ifdim\wd\printedrefnamebox = 0pt \refx{#1-snt}{}% \else \printedrefname \fi % % If the user also gave the printed manual name (fifth arg), append % "in MANUALNAME". \ifdim \wd\printedmanualbox > 0pt \space \putwordin{} \cite{\printedmanual}% \fi \else % node/anchor (non-float) references. % % If we use \unhbox to print the node names, TeX does not insert % empty discretionaries after hyphens, which means that it will not % find a line break at a hyphen in a node names. Since some manuals % are best written with fairly long node names, containing hyphens, % this is a loss. Therefore, we give the text of the node name % again, so it is as if TeX is seeing it for the first time. % \ifdim \wd\printedmanualbox > 0pt % Cross-manual reference with a printed manual name. % \crossmanualxref{\cite{\printedmanual\unskip}}% % \else\ifdim \wd\infofilenamebox > 0pt % Cross-manual reference with only an info filename (arg 4), no % printed manual name (arg 5). This is essentially the same as % the case above; we output the filename, since we have nothing else. % \crossmanualxref{\code{\infofilename\unskip}}% % \else % Reference within this manual. % % _ (for example) has to be the character _ for the purposes of the % control sequence corresponding to the node, but it has to expand % into the usual \leavevmode...\vrule stuff for purposes of % printing. So we \turnoffactive for the \refx-snt, back on for the % printing, back off for the \refx-pg. {\turnoffactive % Only output a following space if the -snt ref is nonempty; for % @unnumbered and @anchor, it won't be. \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% % output the `[mynode]' via the macro below so it can be overridden. \xrefprintnodename\printedrefname % % But we always want a comma and a space: ,\space % % output the `page 3'. \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi\fi \fi \endlink \endgroup} % Output a cross-manual xref to #1. Used just above (twice). % % Only include the text "Section ``foo'' in" if the foo is neither % missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply % "see The Foo Manual", the idea being to refer to the whole manual. % % But, this being TeX, we can't easily compare our node name against the % string "Top" while ignoring the possible spaces before and after in % the input. By adding the arbitrary 7sp below, we make it much less % likely that a real node name would have the same width as "Top" (e.g., % in a monospaced font). Hopefully it will never happen in practice. % % For the same basic reason, we retypeset the "Top" at every % reference, since the current font is indeterminate. % \def\crossmanualxref#1{% \setbox\toprefbox = \hbox{Top\kern7sp}% \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% \ifdim \wd2 > 7sp % nonempty? \ifdim \wd2 = \wd\toprefbox \else % same as Top? \putwordSection{} ``\printedrefname'' \putwordin{}\space \fi \fi #1% } % This macro is called from \xrefX for the `[nodename]' part of xref % output. It's a separate macro only so it can be changed more easily, % since square brackets don't work well in some documents. Particularly % one that Bob is working on :). % \def\xrefprintnodename#1{[#1]} % Things referred to by \setref. % \def\Ynothing{} \def\Yomitfromtoc{} \def\Ynumbered{% \ifnum\secno=0 \putwordChapter@tie \the\chapno \else \ifnum\subsecno=0 \putwordSection@tie \the\chapno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie \the\chapno.\the\secno.\the\subsecno \else \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } \def\Yappendix{% \ifnum\secno=0 \putwordAppendix@tie @char\the\appendixno{}% \else \ifnum\subsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno \else \ifnum\subsubsecno=0 \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno \else \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno \fi\fi\fi } % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. % \def\refx#1#2{% {% \indexnofonts \otherbackslash \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname }% \ifx\thisrefX\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright \iflinks \ifhavexrefs {\toks0 = {#1}% avoid expansion of possibly-complex value \message{\linenumber Undefined cross reference `\the\toks0'.}}% \else \ifwarnedxrefs\else \global\warnedxrefstrue \message{Cross reference values unknown; you must run TeX again.}% \fi \fi \fi \else % It's defined, so just use it. \thisrefX \fi #2% Output the suffix in any case. } % This is the macro invoked by entries in the aux file. Usually it's % just a \def (we prepend XR to the control sequence name to avoid % collisions). But if this is a float type, we have more work to do. % \def\xrdef#1#2{% {% The node name might contain 8-bit characters, which in our current % implementation are changed to commands like @'e. Don't let these % mess up the control sequence name. \indexnofonts \turnoffactive \xdef\safexrefname{#1}% }% % \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref % % Was that xref control sequence that we just defined for a float? \expandafter\iffloat\csname XR\safexrefname\endcsname % it was a float, and we have the (safe) float type in \iffloattype. \expandafter\let\expandafter\floatlist \csname floatlist\iffloattype\endcsname % % Is this the first time we've seen this float type? \expandafter\ifx\floatlist\relax \toks0 = {\do}% yes, so just \do \else % had it before, so preserve previous elements in list. \toks0 = \expandafter{\floatlist\do}% \fi % % Remember this xref in the control sequence \floatlistFLOATTYPE, % for later use in \listoffloats. \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 {\safexrefname}}% \fi } % Read the last existing aux file, if any. No error if none exists. % \def\tryauxfile{% \openin 1 \jobname.aux \ifeof 1 \else \readdatafile{aux}% \global\havexrefstrue \fi \closein 1 } \def\setupdatafile{% \catcode`\^^@=\other \catcode`\^^A=\other \catcode`\^^B=\other \catcode`\^^C=\other \catcode`\^^D=\other \catcode`\^^E=\other \catcode`\^^F=\other \catcode`\^^G=\other \catcode`\^^H=\other \catcode`\^^K=\other \catcode`\^^L=\other \catcode`\^^N=\other \catcode`\^^P=\other \catcode`\^^Q=\other \catcode`\^^R=\other \catcode`\^^S=\other \catcode`\^^T=\other \catcode`\^^U=\other \catcode`\^^V=\other \catcode`\^^W=\other \catcode`\^^X=\other \catcode`\^^Z=\other \catcode`\^^[=\other \catcode`\^^\=\other \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, % that is not enough: for node names that actually contain a ^ % character, we would end up writing a line like this: 'xrdef {'hat % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first % argument, and \hat is not an expandable control sequence. It could % all be worked out, but why? Either we support ^^ or we don't. % % The other change necessary for this was to define \auxhat: % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter % and then to call \auxhat in \setq. % \catcode`\^=\other % % Special characters. Should be turned off anyway, but... \catcode`\~=\other \catcode`\[=\other \catcode`\]=\other \catcode`\"=\other \catcode`\_=\other \catcode`\|=\other \catcode`\<=\other \catcode`\>=\other \catcode`\$=\other \catcode`\#=\other \catcode`\&=\other \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % % This is to support \ in node names and titles, since the \ % characters end up in a \csname. It's easier than % leaving it active and making its active definition an actual \ % character. What I don't understand is why it works in the *value* % of the xrdef. Seems like it should be a catcode12 \, and that % should not typeset properly. But it works, so I'm moving on for % now. --karl, 15jan04. \catcode`\\=\other % % Make the characters 128-255 be printing characters. {% \count1=128 \def\loop{% \catcode\count1=\other \advance\count1 by 1 \ifnum \count1<256 \loop \fi }% }% % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 \catcode`\}=2 \catcode`\@=0 } \def\readdatafile#1{% \begingroup \setupdatafile \input\jobname.#1 \endgroup} \message{insertions,} % including footnotes. \newcount \footnoteno % The trailing space in the following definition for supereject is % vital for proper filling; pages come out unaligned when you do a % pagealignmacro call if that space before the closing brace is % removed. (Generally, numeric constants should always be followed by a % space to prevent strange expansion errors.) \def\supereject{\par\penalty -20000\footnoteno =0 } % @footnotestyle is meaningful for Info output only. \let\footnotestyle=\comment {\catcode `\@=11 % % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% \let\indent=\ptexindent \let\noindent=\ptexnoindent \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% % % In case the footnote comes at the end of a sentence, preserve the % extra spacing after we do the footnote number. \let\@sf\empty \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf \dofootnote }% % Don't bother with the trickery in plain.tex to not require the % footnote text as a parameter. Our footnotes don't need to be so general. % % Oh yes, they do; otherwise, @ifset (and anything else that uses % \parseargline) fails inside footnotes because the tokens are fixed when % the footnote is read. --karl, 16nov96. % \gdef\dofootnote{% \insert\footins\bgroup % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \hsize=\pagewidth \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes \splitmaxdepth\dp\strutbox \floatingpenalty\@MM \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip \parindent\defaultparindent % \smallfonts \rm % % Because we use hanging indentation in footnotes, a @noindent appears % to exdent this text, so make it be a no-op. makeinfo does not use % hanging indentation so @noindent can still be needed within footnote % text after an @example or the like (not that this is good style). \let\noindent = \relax % % Hang the footnote text off the number. Use \everypar in case the % footnote extends for more than one paragraph. \everypar = {\hang}% \textindent{\thisfootno}% % % Don't crash into the line above the footnote text. Since this % expands into a box, it must come within the paragraph, lest it % provide a place where TeX can split the footnote. \footstrut % % Invoke rest of plain TeX footnote routine. \futurelet\next\fo@t } }%end \catcode `\@=11 % In case a @footnote appears in a vbox, save the footnote text and create % the real \insert just after the vbox finished. Otherwise, the insertion % would be lost. % Similarly, if a @footnote appears inside an alignment, save the footnote % text to a box and make the \insert when a row of the table is finished. % And the same can be done for other insert classes. --kasal, 16nov03. % Replace the \insert primitive by a cheating macro. % Deeper inside, just make sure that the saved insertions are not spilled % out prematurely. % \def\startsavinginserts{% \ifx \insert\ptexinsert \let\insert\saveinsert \else \let\checkinserts\relax \fi } % This \insert replacement works for both \insert\footins{foo} and % \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. % \def\saveinsert#1{% \edef\next{\noexpand\savetobox \makeSAVEname#1}% \afterassignment\next % swallow the left brace \let\temp = } \def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} \def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} \def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} \def\placesaveins#1{% \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname {\box#1}% } % eat @SAVE -- beware, all of them have catcode \other: { \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) \gdef\gobblesave @SAVE{} } % initialization: \def\newsaveins #1{% \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% \next } \def\newsaveinsX #1{% \csname newbox\endcsname #1% \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts \checksaveins #1}% } % initialize: \let\checkinserts\empty \newsaveins\footins \newsaveins\margin % @image. We use the macros from epsf.tex to support this. % If epsf.tex is not installed and @image is used, we complain. % % Check for and read epsf.tex up front. If we read it only at @image % time, we might be inside a group, and then its definitions would get % undone and the next image would fail. \openin 1 = epsf.tex \ifeof 1 \else % Do not bother showing banner with epsf.tex v2.7k (available in % doc/epsf.tex and on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex \fi \closein 1 % % We will only complain once about lack of epsf.tex. \newif\ifwarnednoepsf \newhelp\noepsfhelp{epsf.tex must be installed for images to work. It is also included in the Texinfo distribution, or you can get it from ftp://tug.org/tex/epsf.tex.} % \def\image#1{% \ifx\epsfbox\thisisundefined \ifwarnednoepsf \else \errhelp = \noepsfhelp \errmessage{epsf.tex not found, images will be ignored}% \global\warnednoepsftrue \fi \else \imagexxx #1,,,,,\finish \fi } % % Arguments to @image: % #1 is (mandatory) image filename; we tack on .eps extension. % #2 is (optional) width, #3 is (optional) height. % #4 is (ignored optional) html alt text. % #5 is (ignored optional) extension. % #6 is just the usual extra ignored arg for parsing stuff. \newif\ifimagevmode \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup \catcode`\^^M = 5 % in case we're inside an example \normalturnoffactive % allow _ et al. in names % If the image is by itself, center it. \ifvmode \imagevmodetrue \else \ifx\centersub\centerV % for @center @image, we need a vbox so we can have our vertical space \imagevmodetrue \vbox\bgroup % vbox has better behavior than vtop herev \fi\fi % \ifimagevmode \nobreak\medskip % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space % above and below. \nobreak\vskip\parskip \nobreak \fi % % Leave vertical mode so that indentation from an enclosing % environment such as @quotation is respected. % However, if we're at the top level, we don't want the % normal paragraph indentation. % On the other hand, if we are in the case of @center @image, we don't % want to start a paragraph, which will create a hsize-width box and % eradicate the centering. \ifx\centersub\centerV\else \noindent \fi % % Output the image. \ifpdf \dopdfimage{#1}{#2}{#3}% \else % \epsfbox itself resets \epsf?size at each figure. \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi \epsfbox{#1.eps}% \fi % \ifimagevmode \medskip % space after a standalone image \fi \ifx\centersub\centerV \egroup \fi \endgroup} % @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, % etc. We don't actually implement floating yet, we always include the % float "here". But it seemed the best name for the future. % \envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} % There may be a space before second and/or third parameter; delete it. \def\eatcommaspace#1, {#1,} % #1 is the optional FLOATTYPE, the text label for this float, typically % "Figure", "Table", "Example", etc. Can't contain commas. If omitted, % this float will not be numbered and cannot be referred to. % % #2 is the optional xref label. Also must be present for the float to % be referable. % % #3 is the optional positioning argument; for now, it is ignored. It % will somehow specify the positions allowed to float to (here, top, bottom). % % We keep a separate counter for each FLOATTYPE, which we reset at each % chapter-level command. \let\resetallfloatnos=\empty % \def\dofloat#1,#2,#3,#4\finish{% \let\thiscaption=\empty \let\thisshortcaption=\empty % % don't lose footnotes inside @float. % % BEWARE: when the floats start float, we have to issue warning whenever an % insert appears inside a float which could possibly float. --kasal, 26may04 % \startsavinginserts % % We can't be used inside a paragraph. \par % \vtop\bgroup \def\floattype{#1}% \def\floatlabel{#2}% \def\floatloc{#3}% we do nothing with this yet. % \ifx\floattype\empty \let\safefloattype=\empty \else {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% \fi % % If label is given but no type, we handle that as the empty type. \ifx\floatlabel\empty \else % We want each FLOATTYPE to be numbered separately (Figure 1, % Table 1, Figure 2, ...). (And if no label, no number.) % \expandafter\getfloatno\csname\safefloattype floatno\endcsname \global\advance\floatno by 1 % {% % This magic value for \lastsection is output by \setref as the % XREFLABEL-title value. \xrefX uses it to distinguish float % labels (which have a completely different output format) from % node and anchor labels. And \xrdef uses it to construct the % lists of floats. % \edef\lastsection{\floatmagic=\safefloattype}% \setref{\floatlabel}{Yfloat}% }% \fi % % start with \parskip glue, I guess. \vskip\parskip % % Don't suppress indentation if a float happens to start a section. \restorefirstparagraphindent } % we have these possibilities: % @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap % @float Foo,lbl & no caption: Foo 1.1 % @float Foo & @caption{Cap}: Foo: Cap % @float Foo & no caption: Foo % @float ,lbl & Caption{Cap}: 1.1: Cap % @float ,lbl & no caption: 1.1 % @float & @caption{Cap}: Cap % @float & no caption: % \def\Efloat{% \let\floatident = \empty % % In all cases, if we have a float type, it comes first. \ifx\floattype\empty \else \def\floatident{\floattype}\fi % % If we have an xref label, the number comes next. \ifx\floatlabel\empty \else \ifx\floattype\empty \else % if also had float type, need tie first. \appendtomacro\floatident{\tie}% \fi % the number. \appendtomacro\floatident{\chaplevelprefix\the\floatno}% \fi % % Start the printed caption with what we've constructed in % \floatident, but keep it separate; we need \floatident again. \let\captionline = \floatident % \ifx\thiscaption\empty \else \ifx\floatident\empty \else \appendtomacro\captionline{: }% had ident, so need a colon between \fi % % caption text. \appendtomacro\captionline{\scanexp\thiscaption}% \fi % % If we have anything to print, print it, with space before. % Eventually this needs to become an \insert. \ifx\captionline\empty \else \vskip.5\parskip \captionline % % Space below caption. \vskip\parskip \fi % % If have an xref label, write the list of floats info. Do this % after the caption, to avoid chance of it being a breakpoint. \ifx\floatlabel\empty \else % Write the text that goes in the lof to the aux file as % \floatlabel-lof. Besides \floatident, we include the short % caption if specified, else the full caption if specified, else nothing. {% \atdummies % % since we read the caption text in the macro world, where ^^M % is turned into a normal character, we have to scan it back, so % we don't write the literal three characters "^^M" into the aux file. \scanexp{% \xdef\noexpand\gtemp{% \ifx\thisshortcaption\empty \thiscaption \else \thisshortcaption \fi }% }% \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident \ifx\gtemp\empty \else : \gtemp \fi}}% }% \fi \egroup % end of \vtop % % place the captured inserts % % BEWARE: when the floats start floating, we have to issue warning % whenever an insert appears inside a float which could possibly % float. --kasal, 26may04 % \checkinserts } % Append the tokens #2 to the definition of macro #1, not expanding either. % \def\appendtomacro#1#2{% \expandafter\def\expandafter#1\expandafter{#1#2}% } % @caption, @shortcaption % \def\caption{\docaption\thiscaption} \def\shortcaption{\docaption\thisshortcaption} \def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} \def\defcaption#1#2{\egroup \def#1{#2}} % The parameter is the control sequence identifying the counter we are % going to use. Create it if it doesn't exist and assign it to \floatno. \def\getfloatno#1{% \ifx#1\relax % Haven't seen this figure type before. \csname newcount\endcsname #1% % % Remember to reset this floatno at the next chap. \expandafter\gdef\expandafter\resetallfloatnos \expandafter{\resetallfloatnos #1=0 }% \fi \let\floatno#1% } % \setref calls this to get the XREFLABEL-snt value. We want an @xref % to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we % first read the @float command. % \def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% % Magic string used for the XREFLABEL-title value, so \xrefX can % distinguish floats from other xref types. \def\floatmagic{!!float!!} % #1 is the control sequence we are passed; we expand into a conditional % which is true if #1 represents a float ref. That is, the magic % \lastsection value which we \setref above. % \def\iffloat#1{\expandafter\doiffloat#1==\finish} % % #1 is (maybe) the \floatmagic string. If so, #2 will be the % (safe) float type for this float. We set \iffloattype to #2. % \def\doiffloat#1=#2=#3\finish{% \def\temp{#1}% \def\iffloattype{#2}% \ifx\temp\floatmagic } % @listoffloats FLOATTYPE - print a list of floats like a table of contents. % \parseargdef\listoffloats{% \def\floattype{#1}% floattype {% % the floattype might have accents or other special characters, % but we need to use it in a control sequence name. \indexnofonts \turnoffactive \xdef\safefloattype{\floattype}% }% % % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax \ifhavexrefs % if the user said @listoffloats foo but never @float foo. \message{\linenumber No `\safefloattype' floats to list.}% \fi \else \begingroup \leftskip=\tocindent % indent these entries like a toc \let\do=\listoffloatsdo \csname floatlist\safefloattype\endcsname \endgroup \fi } % This is called on each entry in a list of floats. We're passed the % xref label, in the form LABEL-title, which is how we save it in the % aux file. We strip off the -title and look up \XRLABEL-lof, which % has the text we're supposed to typeset here. % % Figures without xref labels will not be included in the list (since % they won't appear in the aux file). % \def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} \def\listoffloatsdoentry#1-title\finish{{% % Can't fully expand XR#1-lof because it can contain anything. Just % pass the control sequence. On the other hand, XR#1-pg is just the % page number, and we want to fully expand that so we can get a link % in pdf output. \toksA = \expandafter{\csname XR#1-lof\endcsname}% % % use the same \entry macro we use to generate the TOC and index. \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% \writeentry }} \message{localization,} % For single-language documents, @documentlanguage is usually given very % early, just after @documentencoding. Single argument is the language % (de) or locale (de_DE) abbreviation. % { \catcode`\_ = \active \globaldefs=1 \parseargdef\documentlanguage{\begingroup \let_=\normalunderscore % normal _ character for filenames \tex % read txi-??.tex file in plain TeX. % Read the file by the name they passed if it exists. \openin 1 txi-#1.tex \ifeof 1 \documentlanguagetrywithoutunderscore{#1_\finish}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 \endgroup % end raw TeX \endgroup} % % If they passed de_DE, and txi-de_DE.tex doesn't exist, % try txi-de.tex. % \gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% \openin 1 txi-#1.tex \ifeof 1 \errhelp = \nolanghelp \errmessage{Cannot read language file txi-#1.tex}% \else \globaldefs = 1 % everything in the txi-LL files needs to persist \input txi-#1.tex \fi \closein 1 } }% end of special _ catcode % \newhelp\nolanghelp{The given language definition file cannot be found or is empty. Maybe you need to install it? Putting it in the current directory should work if nowhere else does.} % This macro is called from txi-??.tex files; the first argument is the % \language name to set (without the "\lang@" prefix), the second and % third args are \{left,right}hyphenmin. % % The language names to pass are determined when the format is built. % See the etex.log file created at that time, e.g., % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. % % With TeX Live 2008, etex now includes hyphenation patterns for all % available languages. This means we can support hyphenation in % Texinfo, at least to some extent. (This still doesn't solve the % accented characters problem.) % \catcode`@=11 \def\txisetlanguage#1#2#3{% % do not set the language if the name is undefined in the current TeX. \expandafter\ifx\csname lang@#1\endcsname \relax \message{no patterns for #1}% \else \global\language = \csname lang@#1\endcsname \fi % but there is no harm in adjusting the hyphenmin values regardless. \global\lefthyphenmin = #2\relax \global\righthyphenmin = #3\relax } % Helpers for encodings. % Set the catcode of characters 128 through 255 to the specified number. % \def\setnonasciicharscatcode#1{% \count255=128 \loop\ifnum\count255<256 \global\catcode\count255=#1\relax \advance\count255 by 1 \repeat } \def\setnonasciicharscatcodenonglobal#1{% \count255=128 \loop\ifnum\count255<256 \catcode\count255=#1\relax \advance\count255 by 1 \repeat } % @documentencoding sets the definition of non-ASCII characters % according to the specified encoding. % \parseargdef\documentencoding{% % Encoding being declared for the document. \def\declaredencoding{\csname #1.enc\endcsname}% % % Supported encodings: names converted to tokens in order to be able % to compare them with \ifx. \def\ascii{\csname US-ASCII.enc\endcsname}% \def\latnine{\csname ISO-8859-15.enc\endcsname}% \def\latone{\csname ISO-8859-1.enc\endcsname}% \def\lattwo{\csname ISO-8859-2.enc\endcsname}% \def\utfeight{\csname UTF-8.enc\endcsname}% % \ifx \declaredencoding \ascii \asciichardefs % \else \ifx \declaredencoding \lattwo \setnonasciicharscatcode\active \lattwochardefs % \else \ifx \declaredencoding \latone \setnonasciicharscatcode\active \latonechardefs % \else \ifx \declaredencoding \latnine \setnonasciicharscatcode\active \latninechardefs % \else \ifx \declaredencoding \utfeight \setnonasciicharscatcode\active \utfeightchardefs % \else \message{Unknown document encoding #1, ignoring.}% % \fi % utfeight \fi % latnine \fi % latone \fi % lattwo \fi % ascii } % A message to be logged when using a character that isn't available % the default font encoding (OT1). % \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} % Take account of \c (plain) vs. \, (Texinfo) difference. \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} % First, make active non-ASCII characters in order for them to be % correctly categorized when TeX reads the replacement text of % macros containing the character definitions. \setnonasciicharscatcode\active % % Latin1 (ISO-8859-1) character definitions. \def\latonechardefs{% \gdef^^a0{\tie} \gdef^^a1{\exclamdown} \gdef^^a2{\missingcharmsg{CENT SIGN}} \gdef^^a3{{\pounds}} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\missingcharmsg{YEN SIGN}} \gdef^^a6{\missingcharmsg{BROKEN BAR}} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\copyright} \gdef^^aa{\ordf} \gdef^^ab{\guillemetleft} \gdef^^ac{$\lnot$} \gdef^^ad{\-} \gdef^^ae{\registeredsymbol} \gdef^^af{\={}} % \gdef^^b0{\textdegree} \gdef^^b1{$\pm$} \gdef^^b2{$^2$} \gdef^^b3{$^3$} \gdef^^b4{\'{}} \gdef^^b5{$\mu$} \gdef^^b6{\P} % \gdef^^b7{$^.$} \gdef^^b8{\cedilla\ } \gdef^^b9{$^1$} \gdef^^ba{\ordm} % \gdef^^bb{\guillemetright} \gdef^^bc{$1\over4$} \gdef^^bd{$1\over2$} \gdef^^be{$3\over4$} \gdef^^bf{\questiondown} % \gdef^^c0{\`A} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\~A} \gdef^^c4{\"A} \gdef^^c5{\ringaccent A} \gdef^^c6{\AE} \gdef^^c7{\cedilla C} \gdef^^c8{\`E} \gdef^^c9{\'E} \gdef^^ca{\^E} \gdef^^cb{\"E} \gdef^^cc{\`I} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\"I} % \gdef^^d0{\DH} \gdef^^d1{\~N} \gdef^^d2{\`O} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\~O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\O} \gdef^^d9{\`U} \gdef^^da{\'U} \gdef^^db{\^U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\TH} \gdef^^df{\ss} % \gdef^^e0{\`a} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\~a} \gdef^^e4{\"a} \gdef^^e5{\ringaccent a} \gdef^^e6{\ae} \gdef^^e7{\cedilla c} \gdef^^e8{\`e} \gdef^^e9{\'e} \gdef^^ea{\^e} \gdef^^eb{\"e} \gdef^^ec{\`{\dotless i}} \gdef^^ed{\'{\dotless i}} \gdef^^ee{\^{\dotless i}} \gdef^^ef{\"{\dotless i}} % \gdef^^f0{\dh} \gdef^^f1{\~n} \gdef^^f2{\`o} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\~o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\o} \gdef^^f9{\`u} \gdef^^fa{\'u} \gdef^^fb{\^u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\th} \gdef^^ff{\"y} } % Latin9 (ISO-8859-15) encoding character definitions. \def\latninechardefs{% % Encoding is almost identical to Latin1. \latonechardefs % \gdef^^a4{\euro} \gdef^^a6{\v S} \gdef^^a8{\v s} \gdef^^b4{\v Z} \gdef^^b8{\v z} \gdef^^bc{\OE} \gdef^^bd{\oe} \gdef^^be{\"Y} } % Latin2 (ISO-8859-2) character definitions. \def\lattwochardefs{% \gdef^^a0{\tie} \gdef^^a1{\ogonek{A}} \gdef^^a2{\u{}} \gdef^^a3{\L} \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} \gdef^^a5{\v L} \gdef^^a6{\'S} \gdef^^a7{\S} \gdef^^a8{\"{}} \gdef^^a9{\v S} \gdef^^aa{\cedilla S} \gdef^^ab{\v T} \gdef^^ac{\'Z} \gdef^^ad{\-} \gdef^^ae{\v Z} \gdef^^af{\dotaccent Z} % \gdef^^b0{\textdegree} \gdef^^b1{\ogonek{a}} \gdef^^b2{\ogonek{ }} \gdef^^b3{\l} \gdef^^b4{\'{}} \gdef^^b5{\v l} \gdef^^b6{\'s} \gdef^^b7{\v{}} \gdef^^b8{\cedilla\ } \gdef^^b9{\v s} \gdef^^ba{\cedilla s} \gdef^^bb{\v t} \gdef^^bc{\'z} \gdef^^bd{\H{}} \gdef^^be{\v z} \gdef^^bf{\dotaccent z} % \gdef^^c0{\'R} \gdef^^c1{\'A} \gdef^^c2{\^A} \gdef^^c3{\u A} \gdef^^c4{\"A} \gdef^^c5{\'L} \gdef^^c6{\'C} \gdef^^c7{\cedilla C} \gdef^^c8{\v C} \gdef^^c9{\'E} \gdef^^ca{\ogonek{E}} \gdef^^cb{\"E} \gdef^^cc{\v E} \gdef^^cd{\'I} \gdef^^ce{\^I} \gdef^^cf{\v D} % \gdef^^d0{\DH} \gdef^^d1{\'N} \gdef^^d2{\v N} \gdef^^d3{\'O} \gdef^^d4{\^O} \gdef^^d5{\H O} \gdef^^d6{\"O} \gdef^^d7{$\times$} \gdef^^d8{\v R} \gdef^^d9{\ringaccent U} \gdef^^da{\'U} \gdef^^db{\H U} \gdef^^dc{\"U} \gdef^^dd{\'Y} \gdef^^de{\cedilla T} \gdef^^df{\ss} % \gdef^^e0{\'r} \gdef^^e1{\'a} \gdef^^e2{\^a} \gdef^^e3{\u a} \gdef^^e4{\"a} \gdef^^e5{\'l} \gdef^^e6{\'c} \gdef^^e7{\cedilla c} \gdef^^e8{\v c} \gdef^^e9{\'e} \gdef^^ea{\ogonek{e}} \gdef^^eb{\"e} \gdef^^ec{\v e} \gdef^^ed{\'{\dotless{i}}} \gdef^^ee{\^{\dotless{i}}} \gdef^^ef{\v d} % \gdef^^f0{\dh} \gdef^^f1{\'n} \gdef^^f2{\v n} \gdef^^f3{\'o} \gdef^^f4{\^o} \gdef^^f5{\H o} \gdef^^f6{\"o} \gdef^^f7{$\div$} \gdef^^f8{\v r} \gdef^^f9{\ringaccent u} \gdef^^fa{\'u} \gdef^^fb{\H u} \gdef^^fc{\"u} \gdef^^fd{\'y} \gdef^^fe{\cedilla t} \gdef^^ff{\dotaccent{}} } % UTF-8 character definitions. % % This code to support UTF-8 is based on LaTeX's utf8.def, with some % changes for Texinfo conventions. It is included here under the GPL by % permission from Frank Mittelbach and the LaTeX team. % \newcount\countUTFx \newcount\countUTFy \newcount\countUTFz \gdef\UTFviiiTwoOctets#1#2{\expandafter \UTFviiiDefined\csname u8:#1\string #2\endcsname} % \gdef\UTFviiiThreeOctets#1#2#3{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} % \gdef\UTFviiiFourOctets#1#2#3#4{\expandafter \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} \gdef\UTFviiiDefined#1{% \ifx #1\relax \message{\linenumber Unicode char \string #1 not defined for Texinfo}% \else \expandafter #1% \fi } \begingroup \catcode`\~13 \catcode`\"12 \def\UTFviiiLoop{% \global\catcode\countUTFx\active \uccode`\~\countUTFx \uppercase\expandafter{\UTFviiiTmp}% \advance\countUTFx by 1 \ifnum\countUTFx < \countUTFy \expandafter\UTFviiiLoop \fi} \countUTFx = "C2 \countUTFy = "E0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiTwoOctets\string~}} \UTFviiiLoop \countUTFx = "E0 \countUTFy = "F0 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiThreeOctets\string~}} \UTFviiiLoop \countUTFx = "F0 \countUTFy = "F4 \def\UTFviiiTmp{% \xdef~{\noexpand\UTFviiiFourOctets\string~}} \UTFviiiLoop \endgroup \begingroup \catcode`\"=12 \catcode`\<=12 \catcode`\.=12 \catcode`\,=12 \catcode`\;=12 \catcode`\!=12 \catcode`\~=13 \gdef\DeclareUnicodeCharacter#1#2{% \countUTFz = "#1\relax %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% \begingroup \parseXMLCharref \def\UTFviiiTwoOctets##1##2{% \csname u8:##1\string ##2\endcsname}% \def\UTFviiiThreeOctets##1##2##3{% \csname u8:##1\string ##2\string ##3\endcsname}% \def\UTFviiiFourOctets##1##2##3##4{% \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% \expandafter\expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \gdef\UTFviiiTmp{#2}% \endgroup} \gdef\parseXMLCharref{% \ifnum\countUTFz < "A0\relax \errhelp = \EMsimple \errmessage{Cannot define Unicode char value < 00A0}% \else\ifnum\countUTFz < "800\relax \parseUTFviiiA,% \parseUTFviiiB C\UTFviiiTwoOctets.,% \else\ifnum\countUTFz < "10000\relax \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% \else \parseUTFviiiA;% \parseUTFviiiA,% \parseUTFviiiA!% \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% \fi\fi\fi } \gdef\parseUTFviiiA#1{% \countUTFx = \countUTFz \divide\countUTFz by 64 \countUTFy = \countUTFz \multiply\countUTFz by 64 \advance\countUTFx by -\countUTFz \advance\countUTFx by 128 \uccode `#1\countUTFx \countUTFz = \countUTFy} \gdef\parseUTFviiiB#1#2#3#4{% \advance\countUTFz by "#10\relax \uccode `#3\countUTFz \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} \endgroup \def\utfeightchardefs{% \DeclareUnicodeCharacter{00A0}{\tie} \DeclareUnicodeCharacter{00A1}{\exclamdown} \DeclareUnicodeCharacter{00A3}{\pounds} \DeclareUnicodeCharacter{00A8}{\"{ }} \DeclareUnicodeCharacter{00A9}{\copyright} \DeclareUnicodeCharacter{00AA}{\ordf} \DeclareUnicodeCharacter{00AB}{\guillemetleft} \DeclareUnicodeCharacter{00AD}{\-} \DeclareUnicodeCharacter{00AE}{\registeredsymbol} \DeclareUnicodeCharacter{00AF}{\={ }} \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} \DeclareUnicodeCharacter{00B4}{\'{ }} \DeclareUnicodeCharacter{00B8}{\cedilla{ }} \DeclareUnicodeCharacter{00BA}{\ordm} \DeclareUnicodeCharacter{00BB}{\guillemetright} \DeclareUnicodeCharacter{00BF}{\questiondown} \DeclareUnicodeCharacter{00C0}{\`A} \DeclareUnicodeCharacter{00C1}{\'A} \DeclareUnicodeCharacter{00C2}{\^A} \DeclareUnicodeCharacter{00C3}{\~A} \DeclareUnicodeCharacter{00C4}{\"A} \DeclareUnicodeCharacter{00C5}{\AA} \DeclareUnicodeCharacter{00C6}{\AE} \DeclareUnicodeCharacter{00C7}{\cedilla{C}} \DeclareUnicodeCharacter{00C8}{\`E} \DeclareUnicodeCharacter{00C9}{\'E} \DeclareUnicodeCharacter{00CA}{\^E} \DeclareUnicodeCharacter{00CB}{\"E} \DeclareUnicodeCharacter{00CC}{\`I} \DeclareUnicodeCharacter{00CD}{\'I} \DeclareUnicodeCharacter{00CE}{\^I} \DeclareUnicodeCharacter{00CF}{\"I} \DeclareUnicodeCharacter{00D0}{\DH} \DeclareUnicodeCharacter{00D1}{\~N} \DeclareUnicodeCharacter{00D2}{\`O} \DeclareUnicodeCharacter{00D3}{\'O} \DeclareUnicodeCharacter{00D4}{\^O} \DeclareUnicodeCharacter{00D5}{\~O} \DeclareUnicodeCharacter{00D6}{\"O} \DeclareUnicodeCharacter{00D8}{\O} \DeclareUnicodeCharacter{00D9}{\`U} \DeclareUnicodeCharacter{00DA}{\'U} \DeclareUnicodeCharacter{00DB}{\^U} \DeclareUnicodeCharacter{00DC}{\"U} \DeclareUnicodeCharacter{00DD}{\'Y} \DeclareUnicodeCharacter{00DE}{\TH} \DeclareUnicodeCharacter{00DF}{\ss} \DeclareUnicodeCharacter{00E0}{\`a} \DeclareUnicodeCharacter{00E1}{\'a} \DeclareUnicodeCharacter{00E2}{\^a} \DeclareUnicodeCharacter{00E3}{\~a} \DeclareUnicodeCharacter{00E4}{\"a} \DeclareUnicodeCharacter{00E5}{\aa} \DeclareUnicodeCharacter{00E6}{\ae} \DeclareUnicodeCharacter{00E7}{\cedilla{c}} \DeclareUnicodeCharacter{00E8}{\`e} \DeclareUnicodeCharacter{00E9}{\'e} \DeclareUnicodeCharacter{00EA}{\^e} \DeclareUnicodeCharacter{00EB}{\"e} \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} \DeclareUnicodeCharacter{00F0}{\dh} \DeclareUnicodeCharacter{00F1}{\~n} \DeclareUnicodeCharacter{00F2}{\`o} \DeclareUnicodeCharacter{00F3}{\'o} \DeclareUnicodeCharacter{00F4}{\^o} \DeclareUnicodeCharacter{00F5}{\~o} \DeclareUnicodeCharacter{00F6}{\"o} \DeclareUnicodeCharacter{00F8}{\o} \DeclareUnicodeCharacter{00F9}{\`u} \DeclareUnicodeCharacter{00FA}{\'u} \DeclareUnicodeCharacter{00FB}{\^u} \DeclareUnicodeCharacter{00FC}{\"u} \DeclareUnicodeCharacter{00FD}{\'y} \DeclareUnicodeCharacter{00FE}{\th} \DeclareUnicodeCharacter{00FF}{\"y} \DeclareUnicodeCharacter{0100}{\=A} \DeclareUnicodeCharacter{0101}{\=a} \DeclareUnicodeCharacter{0102}{\u{A}} \DeclareUnicodeCharacter{0103}{\u{a}} \DeclareUnicodeCharacter{0104}{\ogonek{A}} \DeclareUnicodeCharacter{0105}{\ogonek{a}} \DeclareUnicodeCharacter{0106}{\'C} \DeclareUnicodeCharacter{0107}{\'c} \DeclareUnicodeCharacter{0108}{\^C} \DeclareUnicodeCharacter{0109}{\^c} \DeclareUnicodeCharacter{0118}{\ogonek{E}} \DeclareUnicodeCharacter{0119}{\ogonek{e}} \DeclareUnicodeCharacter{010A}{\dotaccent{C}} \DeclareUnicodeCharacter{010B}{\dotaccent{c}} \DeclareUnicodeCharacter{010C}{\v{C}} \DeclareUnicodeCharacter{010D}{\v{c}} \DeclareUnicodeCharacter{010E}{\v{D}} \DeclareUnicodeCharacter{0112}{\=E} \DeclareUnicodeCharacter{0113}{\=e} \DeclareUnicodeCharacter{0114}{\u{E}} \DeclareUnicodeCharacter{0115}{\u{e}} \DeclareUnicodeCharacter{0116}{\dotaccent{E}} \DeclareUnicodeCharacter{0117}{\dotaccent{e}} \DeclareUnicodeCharacter{011A}{\v{E}} \DeclareUnicodeCharacter{011B}{\v{e}} \DeclareUnicodeCharacter{011C}{\^G} \DeclareUnicodeCharacter{011D}{\^g} \DeclareUnicodeCharacter{011E}{\u{G}} \DeclareUnicodeCharacter{011F}{\u{g}} \DeclareUnicodeCharacter{0120}{\dotaccent{G}} \DeclareUnicodeCharacter{0121}{\dotaccent{g}} \DeclareUnicodeCharacter{0124}{\^H} \DeclareUnicodeCharacter{0125}{\^h} \DeclareUnicodeCharacter{0128}{\~I} \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} \DeclareUnicodeCharacter{012A}{\=I} \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} \DeclareUnicodeCharacter{012C}{\u{I}} \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} \DeclareUnicodeCharacter{0130}{\dotaccent{I}} \DeclareUnicodeCharacter{0131}{\dotless{i}} \DeclareUnicodeCharacter{0132}{IJ} \DeclareUnicodeCharacter{0133}{ij} \DeclareUnicodeCharacter{0134}{\^J} \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} \DeclareUnicodeCharacter{0139}{\'L} \DeclareUnicodeCharacter{013A}{\'l} \DeclareUnicodeCharacter{0141}{\L} \DeclareUnicodeCharacter{0142}{\l} \DeclareUnicodeCharacter{0143}{\'N} \DeclareUnicodeCharacter{0144}{\'n} \DeclareUnicodeCharacter{0147}{\v{N}} \DeclareUnicodeCharacter{0148}{\v{n}} \DeclareUnicodeCharacter{014C}{\=O} \DeclareUnicodeCharacter{014D}{\=o} \DeclareUnicodeCharacter{014E}{\u{O}} \DeclareUnicodeCharacter{014F}{\u{o}} \DeclareUnicodeCharacter{0150}{\H{O}} \DeclareUnicodeCharacter{0151}{\H{o}} \DeclareUnicodeCharacter{0152}{\OE} \DeclareUnicodeCharacter{0153}{\oe} \DeclareUnicodeCharacter{0154}{\'R} \DeclareUnicodeCharacter{0155}{\'r} \DeclareUnicodeCharacter{0158}{\v{R}} \DeclareUnicodeCharacter{0159}{\v{r}} \DeclareUnicodeCharacter{015A}{\'S} \DeclareUnicodeCharacter{015B}{\'s} \DeclareUnicodeCharacter{015C}{\^S} \DeclareUnicodeCharacter{015D}{\^s} \DeclareUnicodeCharacter{015E}{\cedilla{S}} \DeclareUnicodeCharacter{015F}{\cedilla{s}} \DeclareUnicodeCharacter{0160}{\v{S}} \DeclareUnicodeCharacter{0161}{\v{s}} \DeclareUnicodeCharacter{0162}{\cedilla{t}} \DeclareUnicodeCharacter{0163}{\cedilla{T}} \DeclareUnicodeCharacter{0164}{\v{T}} \DeclareUnicodeCharacter{0168}{\~U} \DeclareUnicodeCharacter{0169}{\~u} \DeclareUnicodeCharacter{016A}{\=U} \DeclareUnicodeCharacter{016B}{\=u} \DeclareUnicodeCharacter{016C}{\u{U}} \DeclareUnicodeCharacter{016D}{\u{u}} \DeclareUnicodeCharacter{016E}{\ringaccent{U}} \DeclareUnicodeCharacter{016F}{\ringaccent{u}} \DeclareUnicodeCharacter{0170}{\H{U}} \DeclareUnicodeCharacter{0171}{\H{u}} \DeclareUnicodeCharacter{0174}{\^W} \DeclareUnicodeCharacter{0175}{\^w} \DeclareUnicodeCharacter{0176}{\^Y} \DeclareUnicodeCharacter{0177}{\^y} \DeclareUnicodeCharacter{0178}{\"Y} \DeclareUnicodeCharacter{0179}{\'Z} \DeclareUnicodeCharacter{017A}{\'z} \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} \DeclareUnicodeCharacter{017C}{\dotaccent{z}} \DeclareUnicodeCharacter{017D}{\v{Z}} \DeclareUnicodeCharacter{017E}{\v{z}} \DeclareUnicodeCharacter{01C4}{D\v{Z}} \DeclareUnicodeCharacter{01C5}{D\v{z}} \DeclareUnicodeCharacter{01C6}{d\v{z}} \DeclareUnicodeCharacter{01C7}{LJ} \DeclareUnicodeCharacter{01C8}{Lj} \DeclareUnicodeCharacter{01C9}{lj} \DeclareUnicodeCharacter{01CA}{NJ} \DeclareUnicodeCharacter{01CB}{Nj} \DeclareUnicodeCharacter{01CC}{nj} \DeclareUnicodeCharacter{01CD}{\v{A}} \DeclareUnicodeCharacter{01CE}{\v{a}} \DeclareUnicodeCharacter{01CF}{\v{I}} \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} \DeclareUnicodeCharacter{01D1}{\v{O}} \DeclareUnicodeCharacter{01D2}{\v{o}} \DeclareUnicodeCharacter{01D3}{\v{U}} \DeclareUnicodeCharacter{01D4}{\v{u}} \DeclareUnicodeCharacter{01E2}{\={\AE}} \DeclareUnicodeCharacter{01E3}{\={\ae}} \DeclareUnicodeCharacter{01E6}{\v{G}} \DeclareUnicodeCharacter{01E7}{\v{g}} \DeclareUnicodeCharacter{01E8}{\v{K}} \DeclareUnicodeCharacter{01E9}{\v{k}} \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} \DeclareUnicodeCharacter{01F1}{DZ} \DeclareUnicodeCharacter{01F2}{Dz} \DeclareUnicodeCharacter{01F3}{dz} \DeclareUnicodeCharacter{01F4}{\'G} \DeclareUnicodeCharacter{01F5}{\'g} \DeclareUnicodeCharacter{01F8}{\`N} \DeclareUnicodeCharacter{01F9}{\`n} \DeclareUnicodeCharacter{01FC}{\'{\AE}} \DeclareUnicodeCharacter{01FD}{\'{\ae}} \DeclareUnicodeCharacter{01FE}{\'{\O}} \DeclareUnicodeCharacter{01FF}{\'{\o}} \DeclareUnicodeCharacter{021E}{\v{H}} \DeclareUnicodeCharacter{021F}{\v{h}} \DeclareUnicodeCharacter{0226}{\dotaccent{A}} \DeclareUnicodeCharacter{0227}{\dotaccent{a}} \DeclareUnicodeCharacter{0228}{\cedilla{E}} \DeclareUnicodeCharacter{0229}{\cedilla{e}} \DeclareUnicodeCharacter{022E}{\dotaccent{O}} \DeclareUnicodeCharacter{022F}{\dotaccent{o}} \DeclareUnicodeCharacter{0232}{\=Y} \DeclareUnicodeCharacter{0233}{\=y} \DeclareUnicodeCharacter{0237}{\dotless{j}} \DeclareUnicodeCharacter{02DB}{\ogonek{ }} \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} \DeclareUnicodeCharacter{1E20}{\=G} \DeclareUnicodeCharacter{1E21}{\=g} \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} \DeclareUnicodeCharacter{1E26}{\"H} \DeclareUnicodeCharacter{1E27}{\"h} \DeclareUnicodeCharacter{1E30}{\'K} \DeclareUnicodeCharacter{1E31}{\'k} \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} \DeclareUnicodeCharacter{1E3E}{\'M} \DeclareUnicodeCharacter{1E3F}{\'m} \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} \DeclareUnicodeCharacter{1E54}{\'P} \DeclareUnicodeCharacter{1E55}{\'p} \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} \DeclareUnicodeCharacter{1E7C}{\~V} \DeclareUnicodeCharacter{1E7D}{\~v} \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} \DeclareUnicodeCharacter{1E80}{\`W} \DeclareUnicodeCharacter{1E81}{\`w} \DeclareUnicodeCharacter{1E82}{\'W} \DeclareUnicodeCharacter{1E83}{\'w} \DeclareUnicodeCharacter{1E84}{\"W} \DeclareUnicodeCharacter{1E85}{\"w} \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} \DeclareUnicodeCharacter{1E8C}{\"X} \DeclareUnicodeCharacter{1E8D}{\"x} \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} \DeclareUnicodeCharacter{1E90}{\^Z} \DeclareUnicodeCharacter{1E91}{\^z} \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} \DeclareUnicodeCharacter{1E97}{\"t} \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} \DeclareUnicodeCharacter{1EBC}{\~E} \DeclareUnicodeCharacter{1EBD}{\~e} \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} \DeclareUnicodeCharacter{1EF2}{\`Y} \DeclareUnicodeCharacter{1EF3}{\`y} \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} \DeclareUnicodeCharacter{1EF8}{\~Y} \DeclareUnicodeCharacter{1EF9}{\~y} \DeclareUnicodeCharacter{2013}{--} \DeclareUnicodeCharacter{2014}{---} \DeclareUnicodeCharacter{2018}{\quoteleft} \DeclareUnicodeCharacter{2019}{\quoteright} \DeclareUnicodeCharacter{201A}{\quotesinglbase} \DeclareUnicodeCharacter{201C}{\quotedblleft} \DeclareUnicodeCharacter{201D}{\quotedblright} \DeclareUnicodeCharacter{201E}{\quotedblbase} \DeclareUnicodeCharacter{2022}{\bullet} \DeclareUnicodeCharacter{2026}{\dots} \DeclareUnicodeCharacter{2039}{\guilsinglleft} \DeclareUnicodeCharacter{203A}{\guilsinglright} \DeclareUnicodeCharacter{20AC}{\euro} \DeclareUnicodeCharacter{2192}{\expansion} \DeclareUnicodeCharacter{21D2}{\result} \DeclareUnicodeCharacter{2212}{\minus} \DeclareUnicodeCharacter{2217}{\point} \DeclareUnicodeCharacter{2261}{\equiv} }% end of \utfeightchardefs % US-ASCII character definitions. \def\asciichardefs{% nothing need be done \relax } % Make non-ASCII characters printable again for compatibility with % existing Texinfo documents that may use them, even without declaring a % document encoding. % \setnonasciicharscatcode \other \message{formatting,} \newdimen\defaultparindent \defaultparindent = 15pt \chapheadingskip = 15pt plus 4pt minus 2pt \secheadingskip = 12pt plus 3pt minus 2pt \subsecheadingskip = 9pt plus 2pt minus 2pt % Prevent underfull vbox error messages. \vbadness = 10000 % Don't be very finicky about underfull hboxes, either. \hbadness = 6666 % Following George Bush, get rid of widows and orphans. \widowpenalty=10000 \clubpenalty=10000 % Use TeX 3.0's \emergencystretch to help line breaking, but if we're % using an old version of TeX, don't do anything. We want the amount of % stretch added to depend on the line length, hence the dependence on % \hsize. We call this whenever the paper size is set. % \def\setemergencystretch{% \ifx\emergencystretch\thisisundefined % Allow us to assign to \emergencystretch anyway. \def\emergencystretch{\dimen0}% \else \emergencystretch = .15\hsize \fi } % Parameters in order: 1) textheight; 2) textwidth; % 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; % 7) physical page height; 8) physical page width. % % We also call \setleading{\textleading}, so the caller should define % \textleading. The caller should also set \parskip. % \def\internalpagesizes#1#2#3#4#5#6#7#8{% \voffset = #3\relax \topskip = #6\relax \splittopskip = \topskip % \vsize = #1\relax \advance\vsize by \topskip \outervsize = \vsize \advance\outervsize by 2\topandbottommargin \pageheight = \vsize % \hsize = #2\relax \outerhsize = \hsize \advance\outerhsize by 0.5in \pagewidth = \hsize % \normaloffset = #4\relax \bindingoffset = #5\relax % \ifpdf \pdfpageheight #7\relax \pdfpagewidth #8\relax % if we don't reset these, they will remain at "1 true in" of % whatever layout pdftex was dumped with. \pdfhorigin = 1 true in \pdfvorigin = 1 true in \fi % \setleading{\textleading} % \parindent = \defaultparindent \setemergencystretch } % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % If page is nothing but text, make it come out even. \internalpagesizes{607.2pt}{6in}% that's 46 lines {\voffset}{.25in}% {\bindingoffset}{36pt}% {11in}{8.5in}% }} % Use @smallbook to reset parameters for 7x9.25 trim size. \def\smallbook{{\globaldefs = 1 \parskip = 2pt plus 1pt \textleading = 12pt % \internalpagesizes{7.5in}{5in}% {-.2in}{0in}% {\bindingoffset}{16pt}% {9.25in}{7in}% % \lispnarrowing = 0.3in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .5cm }} % Use @smallerbook to reset parameters for 6x9 trim size. % (Just testing, parameters still in flux.) \def\smallerbook{{\globaldefs = 1 \parskip = 1.5pt plus 1pt \textleading = 12pt % \internalpagesizes{7.4in}{4.8in}% {-.2in}{-.4in}% {0pt}{14pt}% {9in}{6in}% % \lispnarrowing = 0.25in \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = .4cm }} % Use @afourpaper to print on European A4 paper. \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt \textleading = 13.2pt % % Double-side printing via postscript on Laserjet 4050 % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. % To change the settings for a different printer or situation, adjust % \normaloffset until the front-side and back-side texts align. Then % do the same for \bindingoffset. You can set these for testing in % your texinfo source file like this: % @tex % \global\normaloffset = -6mm % \global\bindingoffset = 10mm % @end tex \internalpagesizes{673.2pt}{160mm}% that's 51 lines {\voffset}{\hoffset}% {\bindingoffset}{44pt}% {297mm}{210mm}% % \tolerance = 700 \hfuzz = 1pt \contentsrightmargin = 0pt \defbodyindent = 5mm }} % Use @afivepaper to print on European A5 paper. % From romildo@urano.iceb.ufop.br, 2 July 2000. % He also recommends making @example and @lisp be small. \def\afivepaper{{\globaldefs = 1 \parskip = 2pt plus 1pt minus 0.1pt \textleading = 12.5pt % \internalpagesizes{160mm}{120mm}% {\voffset}{\hoffset}% {\bindingoffset}{8pt}% {210mm}{148mm}% % \lispnarrowing = 0.2in \tolerance = 800 \hfuzz = 1.2pt \contentsrightmargin = 0pt \defbodyindent = 2mm \tableindent = 12mm }} % A specific text layout, 24x15cm overall, intended for A4 paper. \def\afourlatex{{\globaldefs = 1 \afourpaper \internalpagesizes{237mm}{150mm}% {\voffset}{4.6mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% % % Must explicitly reset to 0 because we call \afourpaper. \globaldefs = 0 }} % Use @afourwide to print on A4 paper in landscape format. \def\afourwide{{\globaldefs = 1 \afourpaper \internalpagesizes{241mm}{165mm}% {\voffset}{-2.95mm}% {\bindingoffset}{7mm}% {297mm}{210mm}% \globaldefs = 0 }} % @pagesizes TEXTHEIGHT[,TEXTWIDTH] % Perhaps we should allow setting the margins, \topskip, \parskip, % and/or leading, also. Or perhaps we should compute them somehow. % \parseargdef\pagesizes{\pagesizesyyy #1,,\finish} \def\pagesizesyyy#1,#2,#3\finish{{% \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi \globaldefs = 1 % \parskip = 3pt plus 2pt minus 1pt \setleading{\textleading}% % \dimen0 = #1\relax \advance\dimen0 by \voffset % \dimen2 = \hsize \advance\dimen2 by \normaloffset % \internalpagesizes{#1}{\hsize}% {\voffset}{\normaloffset}% {\bindingoffset}{44pt}% {\dimen0}{\dimen2}% }} % Set default to letter. % \letterpaper \message{and turning on texinfo input format.} \def^^L{\par} % remove \outer, so ^L can appear in an @comment % DEL is a comment character, in case @c does not suffice. \catcode`\^^? = 14 % Define macros to output various characters with catcode for normal text. \catcode`\"=\other \def\normaldoublequote{"} \catcode`\$=\other \def\normaldollar{$}%$ font-lock fix \catcode`\+=\other \def\normalplus{+} \catcode`\<=\other \def\normalless{<} \catcode`\>=\other \def\normalgreater{>} \catcode`\^=\other \def\normalcaret{^} \catcode`\_=\other \def\normalunderscore{_} \catcode`\|=\other \def\normalverticalbar{|} \catcode`\~=\other \def\normaltilde{~} % This macro is used to make a character print one way in \tt % (where it can probably be output as-is), and another way in other fonts, % where something hairier probably needs to be done. % % #1 is what to print if we are indeed using \tt; #2 is what to print % otherwise. Since all the Computer Modern typewriter fonts have zero % interword stretch (and shrink), and it is reasonable to expect all % typewriter fonts to have this, we can check that font parameter. % \def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} % Same as above, but check for italic font. Actually this also catches % non-italic slanted fonts since it is impossible to distinguish them from % italic fonts. But since this is only used by $ and it uses \sl anyway % this is not a problem. \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} % Turn off all special characters except @ % (and those which the user can use as if they were ordinary). % Most of these we simply print from the \tt font, but for some, we can % use math or other variants that look better in normal text. \catcode`\"=\active \def\activedoublequote{{\tt\char34}} \let"=\activedoublequote \catcode`\~=\active \def~{{\tt\char126}} \chardef\hat=`\^ \catcode`\^=\active \def^{{\tt \hat}} \catcode`\_=\active \def_{\ifusingtt\normalunderscore\_} \let\realunder=_ % Subroutine for the previous macro. \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } \catcode`\|=\active \def|{{\tt\char124}} \chardef \less=`\< \catcode`\<=\active \def<{{\tt \less}} \chardef \gtr=`\> \catcode`\>=\active \def>{{\tt \gtr}} \catcode`\+=\active \def+{{\tt \char 43}} \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix % If a .fmt file is being used, characters that might appear in a file % name cannot be active until we have parsed the command line. % So turn them off again, and have \everyjob (or @setfilename) turn them on. % \otherifyactive is called near the end of this file. \def\otherifyactive{\catcode`+=\other \catcode`\_=\other} % Used sometimes to turn off (effectively) the active characters even after % parsing them. \def\turnoffactive{% \normalturnoffactive \otherbackslash } \catcode`\@=0 % \backslashcurfont outputs one backslash character in current font, % as in \char`\\. \global\chardef\backslashcurfont=`\\ \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work % \realbackslash is an actual character `\' with catcode other, and % \doublebackslash is two of them (for the pdf outlines). {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} % In texinfo, backslash is an active character; it prints the backslash % in fixed width font. \catcode`\\=\active % @ for escape char from now on. % The story here is that in math mode, the \char of \backslashcurfont % ends up printing the roman \ from the math symbol font (because \char % in math mode uses the \mathcode, and plain.tex sets % \mathcode`\\="026E). It seems better for @backslashchar{} to always % print a typewriter backslash, hence we use an explicit \mathchar, % which is the decimal equivalent of "715c (class 7, e.g., use \fam; % ignored family value; char position "5C). We can't use " for the % usual hex value because it has already been made active. @def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} @let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. % On startup, @fixbackslash assigns: % @let \ = @normalbackslash % \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with % catcode other. We switch back and forth between these. @gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of % the literal character `\'. Also revert - to its normal character, in % case the active - from code has slipped in. % {@catcode`- = @active @gdef@normalturnoffactive{% @let-=@normaldash @let"=@normaldoublequote @let$=@normaldollar %$ font-lock fix @let+=@normalplus @let<=@normalless @let>=@normalgreater @let\=@normalbackslash @let^=@normalcaret @let_=@normalunderscore @let|=@normalverticalbar @let~=@normaltilde @markupsetuplqdefault @markupsetuprqdefault @unsepspaces } } % Make _ and + \other characters, temporarily. % This is canceled by @fixbackslash. @otherifyactive % If a .fmt file is being used, we don't want the `\input texinfo' to show up. % That is what \eatinput is for; after that, the `\' should revert to printing % a backslash. % @gdef@eatinput input texinfo{@fixbackslash} @global@let\ = @eatinput % On the other hand, perhaps the file did not have a `\input texinfo'. Then % the first `\' in the file would cause an error. This macro tries to fix % that, assuming it is called before the first `\' could plausibly occur. % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. % @gdef@fixbackslash{% @ifx\@eatinput @let\ = @normalbackslash @fi @catcode`+=@active @catcode`@_=@active } % Say @foo, not \foo, in error messages. @escapechar = `@@ % These (along with & and #) are made active for url-breaking, so need % active definitions as the normal characters. @def@normaldot{.} @def@normalquest{?} @def@normalslash{/} % These look ok in all fonts, so just make them not special. % @hashchar{} gets its own user-level command, because of #line. @catcode`@& = @other @def@normalamp{&} @catcode`@# = @other @def@normalhash{#} @catcode`@% = @other @def@normalpercent{%} @let @hashchar = @normalhash @c Finally, make ` and ' active, so that txicodequoteundirected and @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we @c don't make ` and ' active, @code will not get them as active chars. @c Do this last of all since we use ` in the previous @catcode assignments. @catcode`@'=@active @catcode`@`=@active @markupsetuplqdefault @markupsetuprqdefault @c Local variables: @c eval: (add-hook 'write-file-hooks 'time-stamp) @c page-delimiter: "^\\\\message" @c time-stamp-start: "def\\\\texinfoversion{" @c time-stamp-format: "%:y-%02m-%02d.%02H" @c time-stamp-end: "}" @c End: @c vim:sw=2: @ignore arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 @end ignore xboard-4.9.1/xboard.conf0000644000175000001440000001105212717001265012047 00000000000000; ; xboard 4.8 Save Settings file ; ; This file contains the system-wide settings of XBoard, in so far they ; deviate from the compiled-in defaults, and are not settable through menus, ; to comfort users that have no history of xboard usage. ; You can edit the values of options that are already set in this file, ; or add other options that you think are convenient as defaults for all users. ; This file is not automatically overwritten, because it redefines the ; -saveSettingsFile to .xboardrc in the user's home directory, so that ; user settings will be saved in a place the user has write access to. ; ; Looks ; -size 49 -internetChessServerInputBox false -titleInWindow false -showButtonBar true -moveHistoryUp false -evalGraphUp false -engineOutputUp false -monoMode false -flashCount 0 -flashRate 5 -fontSizeTolerance 4 -useBoardTexture true -liteBackTextureFile "~~/themes/textures/wood_l.png" -darkBackTextureFile "~~/themes/textures/wood_d.png" -overrideLineGap 1 -highlightMoveWithArrow true -recentEngines 4 -gameListW 500 -gameListH 300 -evalGraphW 300 -evalGraphH 150 -stickyWindows false ; ; Behavior ; -sweepPromotions true -pieceMenu false -showTargetSquares true -seekGraph true -soundProgram "aplay -q" -soundDirectory "~~/sounds" -soundTell phone.wav -soundChallenge gong.wav -soundMove woodthunk.wav -soundRoar roar.wav -soundIcsAlarm penalty.wav -pasteSelection false -keepLineBreaksICS false -timeDelay 1 -autoDisplayComment true -autoDisplayTags true -lowTimeWarning false -icsAlarm false -icsAlarmTime 5000 -msLoginDelay 0 -delayBeforeQuit 0 -delayAfterQuit 0 -defaultTourneyName "Tourney_%y%M%d_%h%m.trn" -variations true -appendPV true -memoHeaders true -autoInstall "ALL" ; ; PGN format & Game List ; -pgnExtendedInfo true -saveOutOfBookInfo true -gameListTags "eprd" ; ; Engines & adjudicatons in engine-engine games ; -firstChessProgram fairymax -firstChessProgramNames {fairymax "Fruit 2.1" -fcp fruit -fUCI "Crafty" -fcp crafty "GNU Chess" -fcp gnuchess } -niceEngines 0 -polyglotDir "" -adapterCommand 'polyglot -noini -ec "%fcp" -ed "%fd" -uci NalimovCache=%defaultCacheSizeEGTB -pg ShowTbHits=true' -defaultPathEGTB "" -egtFormats "syzygy:/EGT/Syzygy,scorpio:/EGT/bitbases" -testClaims true -checkMates true -materialDraws true -trivialDraws false ; ; preconfigure some ICS nams, for use with -is option ; -icsNames {"fics" -icshost freechess.org -icshelper timeseal "icc" -icshost chessclub.com -icshelper timestamp "kc" -icshost alanimus.com -icshelper timeseal } ; ; Configure the ICS text menu ; -icsMenu {Give me;ptell Please give me $input; Avoid;ptell Please don't let him get $input; Q;$add a Queen $input; R;$add a Rook $input; B;$add a Bishop $input; N;$add a Knight $input; P;$add a Pawn $input; Dead;ptell I will be checkmated; MultiLine; set open 0 set seek 0 set tell 1; Kill;ptell I will checkmate him!; Who;who; Finger (name);finger $name; Players;players; Vars (name);vars $name; Games;games; Observe (name);observe $name; Sought;sought; Match (name);match $name; Tell (name);tell $name $input; Play (name);play $name; Message (name);message $name $input; Copy;$copy; Open Chat Box (name);$chat; } ; ; pre-define some themes ; -themeNames {"native" -ubt false -pid "" -trueColors false -flipBlack false -overrideLineGap -1 "classic" -ubt false -lsc #c8c365 -dsc #77a26d -pid "" -wpc #ffffcc -bpc #202020 -hsc #ffff00 -phc #ff0000 -overrideLineGap -1 -flipBlack false "wood" -ubt true -lbtf ~~/themes/textures/wood_l.png -dbtf ~~/themes/textures/wood_d.png -pid "" -hsc #ffff00 -phc #ff0000 -overrideLineGap 1 "diagram" -ubt true -lbtf "" -dbtf ~~/themes/textures/hatch.png -lsc #ffffff -wpc #ffffff -bpc #000000 -pid "" -hsc #808080 -phc #808080 -trueColors false -overrideLineGap 1 "icy" -ubt false -lsc #ffffff -dsc #80ffff -pid "" -wpc #f1f8f8 -bpc #202020 -hsc #0000ff -phc #ff0000 # ORIENTAL THEMES "shogi" -ubt true -lbtf ~~/themes/textures/wood_d.png -dbtf ~~/themes/textures/wood_d.png -pid ~~/themes/shogi -trueColors true -hsc #ffff00 -phc #0080ff -overrideLineGap 1 "xiangqi" -ubt true -lbtf ~~/themes/textures/xqboard-9x10.png -dbtf ~~/themes/textures/xqboard-9x10.png -pid ~~/themes/xiangqi -trueColors true -hsc #ffff00 -phc #ff0000 -overrideLineGap 0 "chu shogi" -ubt false -lsc #ff8040 -dsc #ff8040 -pid ~~/themes/chu -trueColors true -hsc #0000ff -phc #00ff00 # end } ; ; Anouncement to make at startup ; -startupMessage {Right-clicking menu item or dialog text pops up help on it} ; ; Save user settings. ; Must be last in file to make user options prevail over system-wide settings! ; -saveSettingsOnExit true -saveSettingsFile "~/.xboardrc" -settingsFile "~/.xboardrc" xboard-4.9.1/engineoutput.c0000644000175000001440000005466712717001265012636 00000000000000/* * engineoutput.c - split-off backe-end from Engine output (PV) by HGM * * Author: Alessandro Scotti (Dec 2005) * * Copyright 2005 Alessandro Scotti * * Enhancements Copyright 1995, 2009, 2010, 2011, 2012, 2013, 2014, * 2015, 2016 Free Software Foundation, Inc. * * ------------------------------------------------------------------------ * * GNU XBoard 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 3 of the License, or (at * your option) any later version. * * GNU XBoard 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, see http://www.gnu.org/licenses/. * * *------------------------------------------------------------------------ ** See the file ChangeLog for a revision history. */ #define SHOW_PONDERING #include "config.h" #include #include #if STDC_HEADERS # include # include #else /* not STDC_HEADERS */ # if HAVE_STRING_H # include # else /* not HAVE_STRING_H */ # include # endif /* not HAVE_STRING_H */ #endif /* not STDC_HEADERS */ #include "common.h" #include "frontend.h" #include "backend.h" #include "moves.h" #include "engineoutput.h" #include "gettext.h" #ifdef ENABLE_NLS # define _(s) gettext (s) # define N_(s) gettext_noop (s) #else # ifdef WIN32 # define _(s) T_(s) # undef ngettext # define ngettext(s,p,n) T_(p) # else # define _(s) (s) # endif # define N_(s) s #endif typedef struct { char * name; int which; int depth; u64 nodes; int score; int time; char * pv; char * hint; int an_move_index; int an_move_count; int moveKey; } EngineOutputData; // called by other front-end void EngineOutputUpdate( FrontEndProgramStats * stats ); void OutputKibitz(int window, char *text); // module back-end routines static void VerifyDisplayMode(); static void UpdateControls( EngineOutputData * ed ); static int lastDepth[2] = { -1, -1 }; static int lastForwardMostMove[2] = { -1, -1 }; static int engineState[2] = { -1, -1 }; static char lastLine[2][MSG_SIZ]; static char header[2][MSG_SIZ]; static char columnHeader[MSG_SIZ] = "dep\tscore\tnodes\ttime\t(not shown: tbhits\tknps\tseldep)\n"; static int columnMask = 0xF0; #define MAX_VAR 400 static int scores[MAX_VAR], textEnd[MAX_VAR], keys[MAX_VAR], curDepth[2], nrVariations[2]; static char fail[MAX_VAR]; extern int initialRulePlies; void MakeEngineOutputTitle () { static char buf[MSG_SIZ]; static char oldTitle[MSG_SIZ]; char title[MSG_SIZ]; int count, rule = 2*appData.ruleMoves; snprintf(title, MSG_SIZ, _("Engine Output") ); if(!EngineOutputIsUp()) return; // figure out value of 50-move counter count = currentMove; while( (signed char)boards[count][EP_STATUS] <= EP_NONE && count > backwardMostMove ) count--; if( count == backwardMostMove ) count -= initialRulePlies; count = currentMove - count; if(!rule) rule = 100; if(count >= rule - 40 && (!appData.icsActive || gameMode == IcsObserving || appData.zippyPlay)) { snprintf(buf, MSG_SIZ, ngettext("%s (%d reversible ply)", "%s (%d reversible plies)", count), title, count); safeStrCpy(title, buf, MSG_SIZ); } if(!strcmp(oldTitle, title)) return; safeStrCpy(oldTitle, title, MSG_SIZ); SetEngineOutputTitle(title); } // back end, due to front-end wrapper for SetWindowText, and new SetIcon arguments void SetEngineState (int which, enum ENGINE_STATE state, char * state_data) { int x_which = 1 - which; if( engineState[ which ] != state ) { engineState[ which ] = state; switch( state ) { case STATE_THINKING: SetIcon( which, nStateIcon, nThinking ); if( engineState[ x_which ] == STATE_THINKING ) { SetEngineState( x_which, STATE_IDLE, "" ); } break; case STATE_PONDERING: SetIcon( which, nStateIcon, nPondering ); break; case STATE_ANALYZING: SetIcon( which, nStateIcon, nAnalyzing ); break; default: SetIcon( which, nStateIcon, nClear ); break; } } if( state_data != 0 ) { DoSetWindowText( which, nStateData, state_data ); } } // back end, now the front-end wrapper ClearMemo is used, and ed no longer contains handles. void SetProgramStats (FrontEndProgramStats * stats) // now directly called by back-end { EngineOutputData ed; int clearMemo = FALSE; int which, depth, multi; ChessMove moveType; int ff, ft, rf, rt; char pc; if( stats == 0 ) { SetEngineState( 0, STATE_IDLE, "" ); SetEngineState( 1, STATE_IDLE, "" ); return; } if(gameMode == IcsObserving && !appData.icsEngineAnalyze) return; // [HGM] kibitz: shut up engine if we are observing an ICS game which = stats->which; depth = stats->depth; if( which < 0 || which > 1 || depth < 0 || stats->time < 0 || stats->pv == 0 ) { return; } if(appData.epd && which) return; // do not write second pane in -epd mode if( !EngineOutputDialogExists() ) { return; } VerifyDisplayMode(); ed.which = which; ed.depth = depth; ed.nodes = stats->nodes; ed.score = stats->score; ed.time = stats->time; ed.pv = stats->pv; ed.hint = stats->hint; ed.an_move_index = stats->an_move_index; ed.an_move_count = stats->an_move_count; /* Get target control. [HGM] this is moved to front end, which get them from a table */ if( which == 0 ) { ed.name = first.tidy; } else { ed.name = second.tidy; } if( ed.pv != 0 && ed.pv[0] == ' ' ) { if( strncmp( ed.pv, " no PV", 6 ) == 0 ) { /* Hack on hack! :-O */ ed.pv = ""; } } /* Clear memo if needed */ if( lastDepth[which] > depth || (lastDepth[which] == depth && depth <= 1 && ed.pv[0]) ) { // no reason to clear if we won't add line clearMemo = TRUE; } if( lastForwardMostMove[which] != forwardMostMove && endPV < 0) { clearMemo = TRUE; } if( clearMemo ) { if(!appData.headers) columnHeader[0] = NULLCHAR; DoClearMemo(which); nrVariations[which] = 0; header[which][0] = NULLCHAR; if(gameMode == AnalyzeMode) { ChessProgramState *cps = (which ? &second : &first); char *exclu = cps->excludeMoves ? exclusionHeader : ""; if((multi = MultiPV(cps, 3)) != -1) { char *s = "setting"; if(multi < -1) multi = -2 - multi, s = "margin"; snprintf(header[which], MSG_SIZ, "\t%s viewpoint\t\tfewer / Multi-PV %s = %d / more\n", appData.whitePOV || appData.scoreWhite ? "white" : "mover", s, cps->option[multi].value); } if(!which) snprintf(header[which]+strlen(header[which]), MSG_SIZ-strlen(header[which]), "%s%s", exclu, columnHeader); InsertIntoMemo( which, header[which], 0); } else { snprintf(header[which], MSG_SIZ, "%s", columnHeader); if(appData.ponderNextMove && lastLine[which][0]) { InsertIntoMemo( which, lastLine[which], 0 ); InsertIntoMemo( which, "\n", 0 ); } InsertIntoMemo( which, header[which], 0); } } if(ed.pv && ed.pv[0] && ParseOneMove(ed.pv, currentMove, &moveType, &ff, &rf, &ft, &rt, &pc)) ed.moveKey = (ff<<24 | rf << 16 | ft << 8 | rt) ^ pc*87161; else ed.moveKey = ed.nodes; // kludge to get unique key unlikely to match any move /* Update */ lastDepth[which] = depth == 1 && ed.nodes == 0 ? 0 : depth; // [HGM] info-line kudge if(endPV < 0) lastForwardMostMove[which] = forwardMostMove; // not during PV walk! UpdateControls( &ed ); } #define ENGINE_COLOR_WHITE 'w' #define ENGINE_COLOR_BLACK 'b' #define ENGINE_COLOR_UNKNOWN ' ' // pure back end static char GetEngineColor (int which) { char result = ENGINE_COLOR_UNKNOWN; if( which == 0 || which == 1 ) { ChessProgramState * cps; switch (gameMode) { case MachinePlaysBlack: case IcsPlayingBlack: result = ENGINE_COLOR_BLACK; break; case MachinePlaysWhite: case IcsPlayingWhite: result = ENGINE_COLOR_WHITE; break; case AnalyzeMode: case AnalyzeFile: result = WhiteOnMove(forwardMostMove) ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK; break; case TwoMachinesPlay: cps = (which == 0) ? &first : &second; result = cps->twoMachinesColor[0]; result = result == 'w' ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK; break; default: ; // does not happen, but suppresses pedantic warnings } } return result; } // pure back end static char GetActiveEngineColor () { char result = ENGINE_COLOR_UNKNOWN; if( gameMode == TwoMachinesPlay ) { result = WhiteOnMove(forwardMostMove) ? ENGINE_COLOR_WHITE : ENGINE_COLOR_BLACK; } return result; } // pure back end static int IsEnginePondering (int which) { int result = FALSE; switch (gameMode) { case MachinePlaysBlack: case IcsPlayingBlack: if( WhiteOnMove(forwardMostMove) ) result = TRUE; break; case MachinePlaysWhite: case IcsPlayingWhite: if( ! WhiteOnMove(forwardMostMove) ) result = TRUE; break; case TwoMachinesPlay: if( GetActiveEngineColor() != ENGINE_COLOR_UNKNOWN ) { if( GetEngineColor( which ) != GetActiveEngineColor() ) result = TRUE; } break; default: ; // does not happen, but suppresses pedantic warnings } return result; } // back end static void SetDisplayMode (int mode) { if( windowMode != mode ) { windowMode = mode; ResizeWindowControls( mode ); } } // pure back end static void VerifyDisplayMode () { int mode; /* Get proper mode for current game */ switch( gameMode ) { case IcsObserving: // [HGM] ICS analyze if(!appData.icsEngineAnalyze) return; case AnalyzeFile: case MachinePlaysWhite: case MachinePlaysBlack: mode = 0; break; case AnalyzeMode: mode = second.analyzing; break; case IcsPlayingWhite: case IcsPlayingBlack: mode = appData.zippyPlay && opponentKibitzes; // [HGM] kibitz break; case TwoMachinesPlay: mode = 1; break; default: /* Do not change */ return; } SetDisplayMode( mode ); } // back end. Determine what icon to set in the color-icon field, and print it void SetEngineColorIcon (int which) { char color = GetEngineColor(which); int nicon = 0; if( color == ENGINE_COLOR_BLACK ) nicon = nColorBlack; else if( color == ENGINE_COLOR_WHITE ) nicon = nColorWhite; else nicon = nColorUnknown; SetIcon( which, nColorIcon, nicon ); } #define MAX_NAME_LENGTH 32 // [HGM] multivar: sort Thinking Output within one depth on score static int MateFlip (int n) { // map mate-score to monotonous scale, so sorting compares them correctly if(n >= MATE_SCORE) return 2*MATE_SCORE - n; if(n <= -MATE_SCORE) return -2*MATE_SCORE - n; return n; } static int InsertionPoint (int len, EngineOutputData *ed) { int i, offs = 0, newScore = ed->score, n = ed->which; char failType; if(ed->nodes == 0 && ed->score == 0 && ed->time == 0) newScore = 1e6; // info lines inserted on top if(ed->depth != curDepth[n]) { // depth has changed curDepth[n] = ed->depth; nrVariations[n] = 0; // throw away everything we had } i = strlen(ed->pv); if(i > 0) i--; failType = ed->pv[i]; if(failType != '?' && failType != '!') failType = ' '; // loop through all lines. Note even / odd used for different panes for(i=nrVariations[n]-2; i>=0; i-=2) { // put new item behind those we haven't looked at offs = textEnd[i+n]; textEnd[i+n+2] = offs + len; scores[i+n+2] = newScore; keys[i+n+2] = ed->moveKey; fail[i+n+2] = failType; if(ed->moveKey != keys[i+n] && // same move always tops previous one (as a higher score must be a fail low) MateFlip(newScore) < MateFlip(scores[i+n]) && fail[i+n] == ' ') break; // if it had higher score as previous, move previous in stead scores[i+n+2] = ed->moveKey == keys[i+n] ? newScore : scores[i+n]; // correct scores of fail-low/high searches textEnd[i+n+2] = textEnd[i+n] + len; keys[i+n+2] = keys[i+n]; fail[i+n+2] = fail[i+n]; } if(i<0) { offs = 0; textEnd[n] = offs + len; scores[n] = newScore; keys[n] = ed->moveKey; fail[n] = failType; } nrVariations[n] += 2; return offs + strlen(header[ed->which]); } static char spaces[] = " "; // [HGM] align: spaces for padding static void Format(char *buf, int val) { // [HGM] tbhits: print a positive integer with trailing whitespace to give it fixed width if( val < 1000000 ) { int h = val, i=0; while(h > 0) h /= 10, i++; snprintf( buf, 24, "%d%s\t", val, spaces + 2*i); } else { char unit = 'M'; if(val >= 1e9) val /= 1e3, unit = 'G'; snprintf( buf, 24, "%.*f%c%s\t", 1 + (val < 1e7), val/1e6, unit, spaces + 10 + 2*(val >= 1e8)); } } // pure back end, now SetWindowText is called via wrapper DoSetWindowText static void UpdateControls (EngineOutputData *ed) { // int isPondering = FALSE; char s_label[MAX_NAME_LENGTH + 32]; int h; char * name = ed->name; char *q, *pvStart = ed->pv; /* Label */ if( name == 0 || *name == '\0' ) { name = "?"; } strncpy( s_label, name, MAX_NAME_LENGTH ); s_label[ MAX_NAME_LENGTH-1 ] = '\0'; if(pvStart) { // [HGM] tbhits: plit up old PV into extra infos and real PV while(strchr(pvStart, '\t')) { // locate last tab before non-int (real PV starts after that) for(q=pvStart; isdigit(*q) || *q == ' '; q++); if(*q != '\t') break; pvStart = q + 1; } } #ifdef SHOW_PONDERING if( IsEnginePondering( ed->which ) ) { char buf[12]; buf[0] = '\0'; if( ed->hint != 0 && *ed->hint != '\0' ) { strncpy( buf, ed->hint, sizeof(buf) ); buf[sizeof(buf)-1] = '\0'; } else if( pvStart != 0 && *pvStart != '\0' ) { char * sep; int buflen = sizeof(buf); sep = strchr( pvStart, ' ' ); if( sep != NULL ) { buflen = sep - pvStart + 1; if( buflen > sizeof(buf) ) buflen = sizeof(buf); } strncpy( buf, pvStart, buflen ); buf[ buflen-1 ] = '\0'; } SetEngineState( ed->which, STATE_PONDERING, buf ); } else if( gameMode == TwoMachinesPlay ) { SetEngineState( ed->which, STATE_THINKING, "" ); } else if( gameMode == AnalyzeMode || gameMode == AnalyzeFile || (gameMode == IcsObserving && appData.icsEngineAnalyze)) { // [HGM] ICS-analyze char buf[64]; int time_secs = ed->time / 100; int time_mins = time_secs / 60; buf[0] = '\0'; if( ed->an_move_index != 0 && ed->an_move_count != 0 && *ed->hint != '\0' ) { char mov[16]; strncpy( mov, ed->hint, sizeof(mov) ); mov[ sizeof(mov)-1 ] = '\0'; snprintf( buf, sizeof(buf)/sizeof(buf[0]), "[%d] %d/%d: %s [%02d:%02d:%02d]", ed->depth, ed->an_move_index, ed->an_move_count, mov, time_mins / 60, time_mins % 60, time_secs % 60 ); } SetEngineState( ed->which, STATE_ANALYZING, buf ); } else { SetEngineState( ed->which, STATE_IDLE, "" ); } #endif DoSetWindowText( ed->which, nLabel, s_label ); s_label[0] = '\0'; if( ed->time > 0 && ed->nodes > 0 ) { unsigned long nps_100 = ed->nodes / ed->time; if( nps_100 < 100000 ) { snprintf( s_label, sizeof(s_label)/sizeof(s_label[0]), "%s: %lu", _("NPS"), nps_100 * 100 ); } else { snprintf( s_label, sizeof(s_label)/sizeof(s_label[0]), "%s: %.1fk", _("NPS"), nps_100 / 10.0 ); } } DoSetWindowText( ed->which, nLabelNPS, s_label ); /* Memo */ if( pvStart != 0 && *pvStart != '\0' ) { char s_nodes[24]; char s_score[16]; char s_time[24]; char s_hits[24]; char s_seld[24]; char s_knps[24]; char buf[256], fail; int buflen, hits, i, params[5], extra; int time_secs = ed->time / 100; int time_cent = ed->time % 100; /* Nodes */ if( ed->nodes < 1000000 ) { int h = ed->nodes, i=0; while(h > 0) h /= 10, i++; // [HGM] align: count digits; pad with 2 spaces for every missing digit snprintf( s_nodes, sizeof(s_nodes)/sizeof(s_nodes[0]), u64Display "%s\t", ed->nodes, spaces + 2*i); } else { double x = u64ToDouble(ed->nodes); char unit = 'M'; if(x >= 1e9) x /= 1e3, unit = 'G'; snprintf( s_nodes, sizeof(s_nodes)/sizeof(s_nodes[0]), "%.*f%c%s\t", 1 + (x < 1e7), x / 1e6, unit, spaces + 10 + 2*(ed->nodes >= 1e8)); } /* TB Hits etc. */ for(i=hits=0; i<5; i++) params[i] = 0; //fprintf(stderr, "%s\n%s\n", ed->pv, pvStart); if(pvStart != ed->pv) { // check if numbers before PV strncpy(buf, ed->pv, 256); buf[pvStart - ed->pv] = NULLCHAR; extra = sscanf(buf, "%d %d %d %d %d", params, params+1, params+2, params+3, params+4); //fprintf(stderr, "extra=%d len=%d\n", extra, pvStart - ed->pv); if(extra) hits = params[extra-1], params[extra-1] = 0; // last one is tbhits } Format(s_seld, params[0]); Format(s_knps, params[1]); Format(s_hits, hits); if(*ed->pv) fail = ed->pv[strlen(ed->pv)-1]; else fail = ' '; if(fail != '?' && fail != '!') fail = ' '; /* Score */ h = ((gameMode == AnalyzeMode && appData.whitePOV || appData.scoreWhite) && !WhiteOnMove(currentMove) ? -1 : 1) * ed->score; if( h == 0 ) { snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), " 0.00%c\t", fail ); } else if( h >= MATE_SCORE) snprintf(s_score, 16, " %s#%d%c\t", ( h > MATE_SCORE+9 ? "" : " "), h - MATE_SCORE, fail ); else if(-h >= MATE_SCORE) snprintf(s_score, 16, " %s#-%d%c\t", (-h > MATE_SCORE+9 ? "" : " "), -h - MATE_SCORE, fail ); else if( h > 0 ) { snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), "+%.2f%c\t", h / 100.0, fail ); } else { snprintf( s_score, sizeof(s_score)/sizeof(s_score[0]), " %.2f%c\t", h / 100.0, fail ); } /* Time */ if(time_secs >= 3600) snprintf( s_time, sizeof(s_time)/sizeof(s_time[0]), "%d:%02d:%02d\t", time_secs / 3600, (time_secs / 60) % 60, time_secs % 60 ); else snprintf( s_time, sizeof(s_time)/sizeof(s_time[0]), "%d:%02d.%02d\t", time_secs / 60, time_secs % 60, time_cent ); if(columnMask & 2) s_score[0] = NULLCHAR; // [HGM] hide: erase columns the user has hidden if(columnMask & 4) s_nodes[0] = NULLCHAR; if(columnMask & 8) s_time[0] = NULLCHAR; if(columnMask & 16) s_hits[0] = NULLCHAR; if(columnMask & 32) s_knps[0] = NULLCHAR; if(columnMask & 64) s_seld[0] = NULLCHAR; /* Put all together... */ if(ed->nodes == 0 && ed->score == 0 && ed->time == 0) snprintf( buf, sizeof(buf)/sizeof(buf[0]), "%3d\t", ed->depth ); else snprintf( buf, sizeof(buf)/sizeof(buf[0]), "%3d\t%s%s%s%s%s%s", ed->depth, s_score, s_nodes, s_time, s_hits, s_knps, s_seld ); /* Add PV */ buflen = strlen(buf); strncpy( buf + buflen, pvStart, sizeof(buf) - buflen ); buf[ sizeof(buf) - 3 ] = '\0'; strcat( buf + buflen, "\r\n" ); /* Update memo */ InsertIntoMemo( ed->which, buf, InsertionPoint(strlen(buf), ed) ); strncpy(lastLine[ed->which], buf, MSG_SIZ); } /* Colors */ SetEngineColorIcon( ed->which ); } static char *titles[] = { "score\t", "nodes\t", "time\t", "tbhits\t", "knps\t", "seldep\t" }; void Collapse(int n) { // handle click on column headers, to hide / show them int i, j, nr=0, m=~columnMask, Ncol=7; for(i=0; columnHeader[i] && i