From 105dd966a56a2aa58276f949bb81e8f9113d86de Mon Sep 17 00:00:00 2001 From: Ludwig Nussel Date: Mon, 3 Feb 2003 12:06:38 +0000 Subject: [PATCH] - merge patch from Jochen Baier to allow filtering for map and server name - update German translation git-svn-id: http://svn.code.sf.net/p/xqf/code/trunk@429 d2ac09be-c843-0410-8b1f-f8a84130e0ec --- xqf/ChangeLog | 4 + xqf/po/POTFILES.in | 1 + xqf/po/de.po | 640 ++++++++++++++++++++++++--------------------- xqf/src/filter.c | 191 ++++++++++++-- xqf/src/filter.h | 2 + xqf/src/xqf.c | 143 +++++++++- 6 files changed, 644 insertions(+), 337 deletions(-) diff --git a/xqf/ChangeLog b/xqf/ChangeLog index 93e5dc4..ec36637 100644 --- a/xqf/ChangeLog +++ b/xqf/ChangeLog @@ -1,3 +1,7 @@ +Feb 03, 2003: Ludwig Nussel +- merge patch from Jochen Baier to allow filtering for map and server name +- update German translation + Feb 01, 2003: Ludwig Nussel - fix high cpu load when dialogs are shown during launch phase. It's obviously no good idea to enter the gtk event loop from inside a diff --git a/xqf/po/POTFILES.in b/xqf/po/POTFILES.in index eb5aec1..75acf08 100644 --- a/xqf/po/POTFILES.in +++ b/xqf/po/POTFILES.in @@ -35,3 +35,4 @@ src/xqf-ui.c src/xqf.c #src/xutils.c #src/zipped.c +src/splash.c diff --git a/xqf/po/de.po b/xqf/po/de.po index 2d45a3f..15f175e 100644 --- a/xqf/po/de.po +++ b/xqf/po/de.po @@ -1,18 +1,18 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# FIRST AUTHOR , YEAR. +# translation of de.po to Deutsch +# Copyright (C) 2003 Free Software Foundation, Inc. +# Ludwig Nussel >, 2003 # msgid "" msgstr "" -"Project-Id-Version: xqf\n" -"POT-Creation-Date: 2002-12-18 11:28-0500\n" -"PO-Revision-Date: 2002-12-18 11:25GMT\n" +"Project-Id-Version: de\n" +"POT-Creation-Date: 2003-02-03 13:00+0100\n" +"PO-Revision-Date: 2003-02-03 13:01GMT\n" "Last-Translator: Ludwig Nussel >\n" "Language-Team: Deutsch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ISO-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 0.9.6\n" +"X-Generator: KBabel 1.0\n" #: src/addmaster.c:111 msgid "You have to specify a name and an address." @@ -46,10 +46,10 @@ msgid "Master Address" msgstr "Master Adresse" #. Cancel Button -#: src/addmaster.c:515 src/addserver.c:209 src/dialogs.c:410 src/filter.c:1182 -#: src/game.c:2268 src/game.c:2431 src/game.c:2522 src/launch.c:325 -#: src/pref.c:4321 src/psearch.c:224 src/redial.c:228 src/srv-prop.c:686 -#: src/xqf.c:926 src/xqf.c:962 src/xqf.c:1698 +#: src/addmaster.c:515 src/addserver.c:209 src/dialogs.c:410 src/filter.c:1315 +#: src/game.c:2280 src/game.c:2443 src/game.c:2534 src/launch.c:325 +#: src/pref.c:4368 src/psearch.c:224 src/redial.c:228 src/srv-prop.c:686 +#: src/xqf.c:989 src/xqf.c:1013 src/xqf.c:1709 msgid "Cancel" msgstr "Abbrechen" @@ -67,20 +67,20 @@ msgid "XQF: Warning!" msgstr "XQF: Warnung!" #. OK Button -#: src/dialogs.c:138 src/dialogs.c:399 src/filter.c:1193 src/pref.c:4329 +#: src/dialogs.c:138 src/dialogs.c:399 src/filter.c:1326 src/pref.c:4376 #: src/psearch.c:213 src/srv-prop.c:694 msgid "OK" msgstr "OK" -#: src/dialogs.c:213 src/dialogs.c:293 src/filter.c:783 src/psearch.c:398 +#: src/dialogs.c:213 src/dialogs.c:293 src/filter.c:875 src/psearch.c:398 msgid "Yes" msgstr "Ja" -#: src/dialogs.c:225 src/dialogs.c:305 src/filter.c:784 src/psearch.c:398 +#: src/dialogs.c:225 src/dialogs.c:305 src/filter.c:876 src/psearch.c:398 msgid "No" msgstr "Nein" -#: src/dialogs.c:315 src/xqf.c:962 +#: src/dialogs.c:315 src/xqf.c:1013 msgid "Redial" msgstr "Wahlwiederholung" @@ -108,84 +108,94 @@ msgstr "Sp Filter" msgid "PF Cfg" msgstr "SpF Konf." -#: src/filter.c:744 +#: src/filter.c:836 msgid "Enter filter name" msgstr "Filter Name eingeben" -#: src/filter.c:782 +#: src/filter.c:874 msgid "Delete server filter" msgstr "Server Filter löschen" -#: src/filter.c:785 +#: src/filter.c:877 #, c-format msgid "Really delete server filter \"%s\"?" msgstr "Server Filter \"%s\" wirklich löschen?" -#: src/filter.c:927 +#: src/filter.c:1023 msgid "Server Filter" msgstr "Server Filter" -#: src/filter.c:942 src/flt-player.c:817 src/pref.c:2431 +#: src/filter.c:1038 src/flt-player.c:817 src/pref.c:2439 msgid "New" msgstr "Neu" -#: src/filter.c:949 +#: src/filter.c:1045 msgid "Rename" msgstr "Umbenennen" #. FIXME: plural -#: src/filter.c:956 src/flt-player.c:823 src/pref.c:2439 src/xqf.c:1698 +#: src/filter.c:1052 src/flt-player.c:823 src/pref.c:2447 src/xqf.c:1709 msgid "Delete" msgstr "Löschen" -#: src/filter.c:963 +#: src/filter.c:1059 msgid "Server would pass filter if" msgstr "Server trifft zu wenn" #. max ping -#: src/filter.c:978 +#: src/filter.c:1074 msgid "ping is less than" -msgstr "Ping kleiner ist als" +msgstr "sein Ping kleiner ist als" #. max timeouts -#: src/filter.c:997 +#: src/filter.c:1093 msgid "the number of retries is fewer than" msgstr "Neuversuche weniger sind als" #. GAMECONTAINS Filter -- baa #. http://developer.gnome.org/doc/API/gtk/gtktable.html -#: src/filter.c:1018 +#: src/filter.c:1114 msgid "the game contains the string" msgstr "das Spiel diese Zeichenkette enthält" #. GAMETYPE Filter -- baa #. http://developer.gnome.org/doc/API/gtk/gtktable.html -#: src/filter.c:1036 +#: src/filter.c:1132 msgid "the game type contains the string" -msgstr "das Spiel diese Zeichenkette enthält" +msgstr "der Spieltyp diese Zeichenkette enthält" #. Version Filter -- baa -#: src/filter.c:1054 +#: src/filter.c:1150 msgid "the version contains the string" -msgstr "die Version diese Zeichenkette enthält:" +msgstr "die Version diese Zeichenkette enthält" -#: src/filter.c:1072 +#. Map filter +#: src/filter.c:1168 +msgid "the map contains the string" +msgstr "das Karte diese Zeichenkette enthält" + +#. Server name filter +#: src/filter.c:1186 +msgid "the server name contains the string" +msgstr "der Servername diese Zeichenkette enthält" + +#: src/filter.c:1205 msgid "it is not full" -msgstr "nicht voll ist" +msgstr "er nicht voll ist" -#: src/filter.c:1082 +#: src/filter.c:1215 msgid "it is not empty" -msgstr "nicht leer ist" +msgstr "er nicht leer ist" -#: src/filter.c:1092 +#: src/filter.c:1225 msgid "cheats are not allowed" msgstr "Cheats nicht erlaubt sind" -#: src/filter.c:1102 +#: src/filter.c:1235 msgid "no password required" msgstr "kein Passwort benötigt wird" -#: src/filter.c:1154 +#: src/filter.c:1287 msgid "XQF: Filters" msgstr "XQF: Filter" @@ -256,11 +266,11 @@ msgstr "Runter" #. server_type #. flags -#: src/game.c:747 +#: src/game.c:759 msgid "Generic Gamespy" msgstr "Allgemein Gamespy" -#: src/game.c:834 +#: src/game.c:846 msgid "" "Note: Soldier of Fortune will not connect to a server correctly\n" "without creating a startup script for the game. Please see the\n" @@ -270,7 +280,7 @@ msgstr "" "müssen Sie ein Startskript erstellen. In der XQF Dokumentation\n" "erhalten Sie mehr Information." -#: src/game.c:838 +#: src/game.c:850 msgid "" "Note: Unreal Tournament will not launch correctly without\n" "modifications to the game's startup script. Please see the\n" @@ -280,11 +290,11 @@ msgstr "" "müssen Sie sein Startskript modifizieren. In der XQF Dokumentation\n" "erhalten Sie mehr Information." -#: src/game.c:842 +#: src/game.c:854 msgid "Sample Command Line: wine hl.exe -- hl.exe -console" msgstr "Beispiel für Kommandozeile: wine hl.exe -- hl.exe -console" -#: src/game.c:846 +#: src/game.c:858 msgid "" "Note: You need to create a qstat config file for this game to work.\n" "Please see the XQF documentation for more information." @@ -294,13 +304,13 @@ msgstr "" "mehr Information." #. %s = game name e.g. QuakeWorld -#: src/game.c:1914 +#: src/game.c:1926 #, c-format msgid "%s command line is empty." msgstr "Die %s Kommandozeile ist leer" #. directory name, game name -#: src/game.c:1921 src/game.c:2027 +#: src/game.c:1933 src/game.c:2039 #, c-format msgid "" "\"%s\" is not a directory\n" @@ -310,13 +320,13 @@ msgstr "" "Bitte korrektes Arbeitsverzeichnis für %s angeben." #. game name -#: src/game.c:1933 +#: src/game.c:1945 #, c-format msgid "Please specify correct %s working directory." msgstr "Bitte korrektes Arbeitsverzeichnis für %s angeben." #. directory, subdirectory, game name -#: src/game.c:1939 +#: src/game.c:1951 #, c-format msgid "" "Directory \"%s\" doesn't contain \"%s\" subdirectory.\n" @@ -326,7 +336,7 @@ msgstr "" "Bitte korrektes Arbeitsverzeichnis für %s angeben." #. %s Quake3 -#: src/game.c:1993 +#: src/game.c:2005 #, c-format msgid "" "~/.q3a directory doesn't exist or doesn't contain\n" @@ -340,7 +350,7 @@ msgstr "" "oder geben Sie ein korrektes Arbeitsverzeichnis für %s an." #. %s directory, Quake3 -#: src/game.c:2002 +#: src/game.c:2014 #, c-format msgid "" "\"%s\" directory doesn't exist or doesn't contain \"baseq3\" (\"demoq3\") " @@ -354,13 +364,13 @@ msgstr "" "oder lassen Sie es leer (~/.q3a wird Standardmäßig benutzt)" #. passwords file could not be written -#: src/game.c:2268 src/game.c:2431 src/game.c:2522 src/launch.c:325 -#: src/xqf.c:926 src/xqf.c:962 +#: src/game.c:2280 src/game.c:2443 src/game.c:2534 src/launch.c:325 +#: src/xqf.c:989 src/xqf.c:1013 msgid "Launch" msgstr "Starten" #. %s frontend.cfg -#: src/game.c:2270 src/game.c:2432 src/game.c:2523 +#: src/game.c:2282 src/game.c:2444 src/game.c:2535 #, c-format msgid "" "Cannot write to file \"%s\".\n" @@ -371,7 +381,7 @@ msgstr "" "\n" "Client trotzdem starten?" -#: src/game.c:2772 +#: src/game.c:2784 msgid "" "The server has Punkbuster enabled but it is not going\n" "to be set on the command line.\n" @@ -420,109 +430,109 @@ msgstr "" "\n" "%s starten?" -#: src/pref.c:487 +#: src/pref.c:491 msgid "com_soundmegs and com_zonemegs must be lower than com_hunkmegs" msgstr "com_soundmegs und com_zonemegs müssen weniger sein als com_hunkmegs" #. Top (Shirt) Color -#: src/pref.c:1233 src/pref.c:1332 +#: src/pref.c:1241 src/pref.c:1340 msgid "Top" msgstr "Oberteil" #. Bottom (Pants) Color -#: src/pref.c:1249 src/pref.c:1348 +#: src/pref.c:1257 src/pref.c:1356 msgid "Bottom" msgstr "Unterteil" #. Player Name -#: src/pref.c:1495 src/pref.c:1606 src/pref.c:1666 src/pref.c:1718 +#: src/pref.c:1503 src/pref.c:1614 src/pref.c:1674 src/pref.c:1726 #: src/xqf-ui.c:48 src/xqf-ui.c:71 msgid "Name" msgstr "Name" -#: src/pref.c:1516 src/xqf-ui.c:73 +#: src/pref.c:1524 src/xqf-ui.c:73 msgid "Colors" msgstr "Farben" -#: src/pref.c:1549 +#: src/pref.c:1557 msgid "Login name" msgstr "Login Name" -#: src/pref.c:1591 +#: src/pref.c:1599 msgid "Skin/Colors" msgstr "Skin/Farben" -#: src/pref.c:1627 +#: src/pref.c:1635 msgid "Team" msgstr "Team" -#: src/pref.c:1685 +#: src/pref.c:1693 msgid "Model/Skin" msgstr "Model/Skin" -#: src/pref.c:1772 +#: src/pref.c:1780 msgid "--- Anything ---" msgstr "--- Beliebig ---" -#: src/pref.c:1773 +#: src/pref.c:1781 msgid "Axe" msgstr "Axe" -#: src/pref.c:1774 +#: src/pref.c:1782 msgid "Shotgun" msgstr "Shotgun" -#: src/pref.c:1775 +#: src/pref.c:1783 msgid "Super Shotgun" msgstr "Super Shotgun" -#: src/pref.c:1776 +#: src/pref.c:1784 msgid "Nailgun" msgstr "Nailgun" -#: src/pref.c:1777 +#: src/pref.c:1785 msgid "Super Nailgun" msgstr "Super Nailgun" -#: src/pref.c:1778 +#: src/pref.c:1786 msgid "Grenade Launcher" msgstr "Grenade Launcher" -#: src/pref.c:1779 +#: src/pref.c:1787 msgid "Rocket Launcher" msgstr "Rocket Launcher" -#: src/pref.c:1780 +#: src/pref.c:1788 msgid "ThunderBolt" msgstr "ThunderBolt" -#: src/pref.c:1828 +#: src/pref.c:1836 msgid "Use skins" msgstr "Skins benutzen" -#: src/pref.c:1834 +#: src/pref.c:1842 msgid "Don't use skins" msgstr "Skins nicht benutzen" -#: src/pref.c:1840 +#: src/pref.c:1848 msgid "Don't download new skins" msgstr "Keine neuen Skins runterladen" -#: src/pref.c:1882 +#: src/pref.c:1890 msgid "You must configure a command line first" msgstr "Sie müssen zuerst eine Kommandozeile eingeben" -#: src/pref.c:1911 +#: src/pref.c:1919 msgid "Game not found" msgstr "Spiel nicht gefunden" #. %s name of a game -#: src/pref.c:1913 +#: src/pref.c:1921 #, c-format msgid "%s not found" msgstr "%s nicht gefunden" -#: src/pref.c:1956 +#: src/pref.c:1964 #, c-format msgid "" "An entry already exists for the game %s.\n" @@ -537,11 +547,11 @@ msgstr "" "\n" "Löschen Sie den Eintrag und versuchen Sie es nochmal." -#: src/pref.c:1985 +#: src/pref.c:1993 msgid "There are no defaults for this game" msgstr "Es gibt keine Standardwerte für dieses Spiel" -#: src/pref.c:2046 +#: src/pref.c:2054 msgid "" "There is already an entry for this game.\n" "\n" @@ -553,299 +563,302 @@ msgstr "" "Um diesen zu verändern müssen Sie ihn auswählen, ändern\n" "und dann \"Hinzufügen\" klicken." -#: src/pref.c:2050 +#: src/pref.c:2058 msgid "You must enter both a game and at least one argument." -msgstr "" -"Sie müssen sowohl ein Spiel als auch mindestens ein Argument eintragen." +msgstr "Sie müssen sowohl ein Spiel als auch mindestens ein Argument eintragen." -#: src/pref.c:2149 +#: src/pref.c:2157 msgid "Invoking" msgstr "Aufruf" -#: src/pref.c:2156 +#: src/pref.c:2164 msgid "*** Not Implemented ***" msgstr "*** Nicht Implementiert ***" -#: src/pref.c:2177 +#: src/pref.c:2185 msgid "Command Line" msgstr "Kommandozeile" #. translator: button for command suggestion -#: src/pref.c:2204 +#: src/pref.c:2212 msgid "Suggest" msgstr "Vorschlagen" -#: src/pref.c:2210 +#: src/pref.c:2218 msgid "Searches the path for the game executable" msgstr "Durchsucht den Pfad nach der ausführbaren Datei des Spiels" #. /// -#: src/pref.c:2217 +#: src/pref.c:2225 msgid "Working Directory" msgstr "Arbeitsverzeichnis" #. translator: button for directory guess -#: src/pref.c:2242 +#: src/pref.c:2250 msgid "Guess" msgstr "Raten" -#: src/pref.c:2248 +#: src/pref.c:2256 msgid "Tries to guess the working directory based on the command line" msgstr "Versucht das Arbeitsverzeichnis anhand der Kommandozeile zu erraten" -#: src/pref.c:2266 +#: src/pref.c:2274 msgid "Custom CFG" msgstr "Eigene Config" -#: src/pref.c:2373 src/xqf-ui.c:55 +#: src/pref.c:2381 src/xqf-ui.c:55 msgid "Game" msgstr "Spiel" -#: src/pref.c:2381 +#: src/pref.c:2389 msgid "Arguments" msgstr "Argumente" -#: src/pref.c:2389 +#: src/pref.c:2397 msgid "Game and Arguments" msgstr "Spiel und Argumente" -#: src/pref.c:2412 +#: src/pref.c:2420 msgid "Enter the game name from the game column" msgstr "Geben Sie das Spiel aus der \"Spiel\"-Spalte ein" -#: src/pref.c:2421 +#: src/pref.c:2429 msgid "Enter the arguments separated by spaces" msgstr "Geben Sie die Argumente getrennt durch Leerzeichen ein" -#: src/pref.c:2447 +#: src/pref.c:2455 msgid "Add Defaults" msgstr "Standards hinzufügen" -#: src/pref.c:2455 +#: src/pref.c:2463 msgid "Add/Update" msgstr "Hinzufügen" #. Common Options -#: src/pref.c:2652 +#: src/pref.c:2660 msgid "Common Options" msgstr "Gemeinsame Optionen" -#: src/pref.c:2663 +#: src/pref.c:2671 msgid "Disable CD Audio" msgstr "CD Audio deaktivieren" #. Disable Sound -#: src/pref.c:2671 +#: src/pref.c:2679 msgid "Disable Sound" msgstr "Sound deaktivieren" -#: src/pref.c:2697 +#: src/pref.c:2705 msgid "Do not set (use game default)" msgstr "Nicht setzen (Standard benutzen)" -#: src/pref.c:2698 +#: src/pref.c:2706 msgid "Automatically calculate from server ping time" msgstr "Automatisch aus dem Ping des Servers berechnen" -#: src/pref.c:2699 +#: src/pref.c:2707 msgid "Fixed value" msgstr "Fester Wert" -#: src/pref.c:2743 src/pref.c:2998 src/pref.c:3053 +#: src/pref.c:2751 src/pref.c:3006 src/pref.c:3061 msgid "Masterserver Protocol Version" msgstr "Masterserver Protokoll Version" -#: src/pref.c:2768 +#: src/pref.c:2776 msgid "vm_cgame fix" msgstr "vm_cgame fix" -#: src/pref.c:2775 +#: src/pref.c:2783 msgid "Rocketarena fix" msgstr "Rocketarena fix" -#: src/pref.c:2781 src/pref.c:3024 src/pref.c:3072 +#: src/pref.c:2789 src/pref.c:3032 src/pref.c:3080 msgid "set fs_game on connect" msgstr "fs_game beim Verbinden setzen" -#: src/pref.c:2788 src/pref.c:3030 +#: src/pref.c:2796 src/pref.c:3038 msgid "set cl_punkbuster on connect" msgstr "cl_punkbuster beim Verbinden setzen" -#: src/pref.c:2849 +#: src/pref.c:2857 msgid "Pass memory settings on command line" msgstr "Speichereinstellungen auf der Kommandozeile übergeben" #. Mega Byte -#: src/pref.c:2867 src/pref.c:2890 src/pref.c:2913 src/pref.c:2937 +#: src/pref.c:2875 src/pref.c:2898 src/pref.c:2921 src/pref.c:2945 msgid "MB" msgstr "MB" -#: src/pref.c:2871 +#: src/pref.c:2879 msgid "com_hunkmegs" msgstr "com_hunkmegs" -#: src/pref.c:2894 +#: src/pref.c:2902 msgid "com_zonemegs" msgstr "com_zonemegs" -#: src/pref.c:2917 +#: src/pref.c:2925 msgid "com_soundmegs" msgstr "com_soundmegs" -#: src/pref.c:2941 +#: src/pref.c:2949 msgid "cg_precachedmodels" msgstr "cg_precachedmodels" -#: src/pref.c:2950 +#: src/pref.c:2958 msgid "Preset values" msgstr "Vordefinierte Werte" -#: src/pref.c:2957 +#: src/pref.c:2965 msgid "Default" msgstr "Standard" -#: src/pref.c:2963 +#: src/pref.c:2971 msgid "128MB" msgstr "128MB" -#: src/pref.c:2969 +#: src/pref.c:2977 msgid ">256MB" msgstr ">256MB" -#: src/pref.c:3085 src/pref.c:3092 src/pref.c:3097 +#: src/pref.c:3093 src/pref.c:3100 src/pref.c:3105 msgid "Custom Args" msgstr "Eigene Argumente" -#: src/pref.c:3086 src/pref.c:3102 src/pref.c:3107 src/pref.c:3337 -#: src/pref.c:3343 +#: src/pref.c:3094 src/pref.c:3110 src/pref.c:3115 src/pref.c:3345 +#: src/pref.c:3351 msgid "Options" msgstr "Optionen" -#: src/pref.c:3087 +#: src/pref.c:3095 msgid "Memory" msgstr "Speicher" #. QW Specific Features #. 'w_switch' & 'b_switch' control -#: src/pref.c:3128 +#: src/pref.c:3136 msgid "The highest weapon that Quake should switch to..." msgstr "Die höchste Waffe zu der Quake wechseln soll..." -#: src/pref.c:3141 +#: src/pref.c:3149 msgid "upon a weapon pickup" msgstr "beim Waffe aufheben" -#: src/pref.c:3159 +#: src/pref.c:3167 msgid "upon a backpack pickup" msgstr "beim Rucksack aufheben" -#: src/pref.c:3180 +#: src/pref.c:3188 msgid "Disable auto-aiming" msgstr "auto-aiming deaktivieren" -#: src/pref.c:3218 +#: src/pref.c:3226 msgid "Skins" msgstr "Skins" -#: src/pref.c:3240 +#: src/pref.c:3248 msgid "Rate" msgstr "Rate" #. 'pushlatency' -#: src/pref.c:3264 +#: src/pref.c:3272 msgid "pushlatency" msgstr "pushlatency" #. Troubleshooting -#: src/pref.c:3279 +#: src/pref.c:3287 msgid "Troubleshooting" msgstr "Fehlersuche" -#: src/pref.c:3292 +#: src/pref.c:3300 msgid "Disable delta-compression (cl_nodelta)" msgstr "delta-Kompression deaktivieren (cl_nodelta)" -#: src/pref.c:3306 +#: src/pref.c:3314 msgid "Disable player/entity prediction (cl_predict_players)" msgstr "Spieler/entity Vorhersage deaktivieren (cl_predict_players)" -#: src/pref.c:3321 +#: src/pref.c:3329 msgid "QuakeForge workaround (uses base/ instead of id1/)" msgstr "QuakeForge Workaround (benutzt base/ statt id1/)" -#: src/pref.c:3336 +#: src/pref.c:3344 msgid "Weapons" msgstr "Waffen" -#: src/pref.c:3338 src/pref.c:3344 src/pref.c:3349 src/pref.c:3354 +#: src/pref.c:3346 src/pref.c:3352 src/pref.c:3357 src/pref.c:3362 msgid "Player Profile" msgstr "Spieler Profil" -#: src/pref.c:3430 +#: src/pref.c:3438 msgid "Icons" msgstr "Icons" -#: src/pref.c:3430 +#: src/pref.c:3438 msgid "Text" msgstr "Text" -#: src/pref.c:3430 +#: src/pref.c:3438 msgid "Both" msgstr "Beides" # src/pref.c: -#: src/pref.c:3436 +#: src/pref.c:3444 msgid "Server List" msgstr "Server Liste" -#: src/pref.c:3449 +#: src/pref.c:3457 msgid "Show host names" msgstr "Hostnamen anzeigen" -#: src/pref.c:3454 +#: src/pref.c:3462 msgid "Enable or disable DNS resolution of IP addresses" msgstr "(De)Aktivieren der DNS Auflösung von IP-Adressen" -#: src/pref.c:3465 +#: src/pref.c:3473 msgid "Show default port" msgstr "Standard Port anzeigen" -#: src/pref.c:3480 +#: src/pref.c:3488 msgid "Sort servers real-time during refresh" msgstr "Server in Echtzeit während der Auffrischung sortieren" -#: src/pref.c:3495 +#: src/pref.c:3503 msgid "Refresh on update" msgstr "Beim Aktualisieren auffrischen" -#: src/pref.c:3511 +#: src/pref.c:3519 msgid "Show only configured games" msgstr "Nur konfigurierte Spiele anzeigen" #. Toolbar -#: src/pref.c:3526 +#: src/pref.c:3534 msgid "Toolbar" msgstr "Werkzeugleiste" #. Toolbar Tips -#: src/pref.c:3551 +#: src/pref.c:3559 msgid "Tooltips" msgstr "Werkzeugtips" #. On Startup -#: src/pref.c:3578 +#: src/pref.c:3599 msgid "On Startup" msgstr "Beim Starten" -#: src/pref.c:3591 +#: src/pref.c:3612 msgid "Refresh Favorites" msgstr "Favoriten auffrischen" -#: src/pref.c:3604 +#: src/pref.c:3625 +msgid "Show splash screen" +msgstr "Begrüßungsbildschirm zeigen" + +#: src/pref.c:3639 msgid "Scan for maps" msgstr "Nach Karten suchen" -#: src/pref.c:3609 +#: src/pref.c:3644 msgid "" "Scan game directories for installed maps. xqf will take longer to start up " "when enabled." @@ -853,41 +866,45 @@ msgstr "" "Spielverzeichnisse nach Karten durchsuchen. Der Start von xqf dauert länger " "wenn diese Option angeschaltet ist." +#: src/pref.c:3651 +msgid "scan now" +msgstr "Jetzt suchen" + #. On Exit -#: src/pref.c:3623 +#: src/pref.c:3667 msgid "On Exit" msgstr "Beim Beenden" -#: src/pref.c:3636 +#: src/pref.c:3680 msgid "Save server lists" msgstr "Serverlisten speichen" -#: src/pref.c:3651 +#: src/pref.c:3695 msgid "Save server information" msgstr "Serverinformationen speichern" -#: src/pref.c:3668 +#: src/pref.c:3712 msgid "Save player information" msgstr "Spielerinformationen speichern" #. When launching a Game -#: src/pref.c:3684 +#: src/pref.c:3728 msgid "When launching a game..." msgstr "Beim Spielstart..." -#: src/pref.c:3698 +#: src/pref.c:3742 msgid "Terminate XQF" msgstr "XQF beenden" -#: src/pref.c:3713 +#: src/pref.c:3757 msgid "Iconify XQF window" msgstr "XQF minimieren" -#: src/pref.c:3728 +#: src/pref.c:3772 msgid "Create LaunchInfo.txt" msgstr "LaunchInfo.txt anlegen" -#: src/pref.c:3734 +#: src/pref.c:3778 msgid "" "Creates the file ~/.qf/LaunchInfo.txt with: ping ip:port name map curplayers " "maxplayers" @@ -895,157 +912,162 @@ msgstr "" "Erstellt die Datei ~/.qf/LaunchInfo.txt mit: Ping IP:Port Name Karte Spieler " "Max.Spieler" -#: src/pref.c:3740 +#: src/pref.c:3784 msgid "Execute prelaunch" msgstr "'prelaunch' ausführen" -#: src/pref.c:3745 +#: src/pref.c:3789 msgid "Executes ~/.qf/PreLaunch (if it exists) before launching the game" -msgstr "" -"Führt ~/.qf/PreLaunch vor dem Start eines Spiels aus (wenn es existiert)" +msgstr "Führt ~/.qf/PreLaunch vor dem Start eines Spiels aus (wenn es existiert)" #. QStat preferences -- maxsimultaneous & maxretries -#: src/pref.c:3778 +#: src/pref.c:3822 msgid "QStat Options" msgstr "QStat Optionen" #. maxsimultaneous -#: src/pref.c:3789 +#: src/pref.c:3833 msgid "Number of simultaneous servers to query" msgstr "Anzahl gleichzeitig abzufragender Server" #. maxretries -#: src/pref.c:3806 +#: src/pref.c:3850 msgid "Number of retries" msgstr "Anzahl Versuche" #. Translator: sound test button -#: src/pref.c:3840 +#: src/pref.c:3884 msgid "Test" msgstr "Test" #. Sound Enable / Disable frame #. Sounds Enable / Disable -#: src/pref.c:3857 +#: src/pref.c:3901 msgid "Sound Enable / Disable" msgstr "Sound (De)Aktiveren" -#: src/pref.c:3871 +#: src/pref.c:3915 msgid "Enable Sound" msgstr "Sound aktivieren" #. Sound Player -#: src/pref.c:3882 +#: src/pref.c:3926 msgid "Player program" msgstr "Abspielprogramm" #. Sound Files frame #. Sounds preferences -- player and various sounds -#: src/pref.c:3910 +#: src/pref.c:3954 msgid "Sound Files" msgstr "Sound Dateien" #. Sound XQF Start -#: src/pref.c:3922 +#: src/pref.c:3966 msgid "XQF Start" msgstr "XQF Start" #. Sound XQF Quit -#: src/pref.c:3954 +#: src/pref.c:3998 msgid "XQF Quit" msgstr "XQF Beenden" #. Sound Update Done -#: src/pref.c:3986 +#: src/pref.c:4030 msgid "Update Done" msgstr "Aktualisieren fertig" #. Sound Refresh Done -#: src/pref.c:4019 +#: src/pref.c:4063 msgid "Refresh Done" msgstr "Auffrischen fertig" #. Sound Stop -#: src/pref.c:4052 src/xqf.c:2704 +#: src/pref.c:4096 src/xqf.c:2715 msgid "Stop" msgstr "Stop" #. Sound Server Connect -#: src/pref.c:4085 +#: src/pref.c:4129 msgid "Server Connect" msgstr "Verbinden" #. Sound Redial Success Start -#: src/pref.c:4118 +#: src/pref.c:4162 msgid "Redial Success" msgstr "Wahlwiederholung geglückt" -#: src/pref.c:4233 +#: src/pref.c:4280 msgid "XQF: Preferences" msgstr "XQF: Einstellungen" # src/pref.c -#: src/pref.c:4253 +#: src/pref.c:4300 msgid "General" msgstr "Allgemein" -#: src/pref.c:4265 +#: src/pref.c:4312 msgid "Games" msgstr "Spiele" -#: src/pref.c:4270 +#: src/pref.c:4317 msgid "Appearance" msgstr "Erscheinungsbild" -#: src/pref.c:4275 +#: src/pref.c:4322 msgid "QStat" msgstr "QStat" -#: src/pref.c:4280 +#: src/pref.c:4327 msgid "Sounds" msgstr "Sounds" -#: src/pref.c:4426 +#: src/pref.c:4479 msgid "Unable to get user name/home/tmpdir\n" msgstr "Konnte Benutzername,Heimatverzeichnis oder tmpdir nicht ermitteln\n" -#: src/pref.c:4820 +#. translator: %s = game name, e.g. Quake 3 Arena +#: src/pref.c:4697 +#, c-format +msgid "Searching for %s maps" +msgstr "Suche nach Karten für %s" + +#: src/pref.c:4883 msgid "Game Command Selection" msgstr "Kommando Auswählen" -#: src/pref.c:4824 +#: src/pref.c:4887 msgid "Game Directory Selection" msgstr "Verzeichnis auswählen" -#: src/pref.c:4828 +#: src/pref.c:4891 msgid "Sound Player Selection" msgstr "Soundspieler auswählen" -#: src/pref.c:4832 +#: src/pref.c:4895 msgid "XQF Start Sound Selection" msgstr "XQF Start Sound Auswahl" -#: src/pref.c:4836 +#: src/pref.c:4899 msgid "XQF Quit Sound Selection" msgstr "XQF Beenden Sound Auswahl" -#: src/pref.c:4840 +#: src/pref.c:4903 msgid "Update Done Sound Selection" msgstr "Aktualisieren fertig Sound Auswahl" -#: src/pref.c:4844 +#: src/pref.c:4907 msgid "Refresh Done Sound Selection" msgstr "Auffrischen fertig Sound Auswahl" -#: src/pref.c:4848 +#: src/pref.c:4911 msgid "Stop Sound Selection" msgstr "Stop Sound Auswahl" -#: src/pref.c:4852 +#: src/pref.c:4915 msgid "Server Connect Sound Selection" msgstr "Verbinden Sound Auswahl" -#: src/pref.c:4856 +#: src/pref.c:4919 msgid "Redial Success Sound Selection" msgstr "Wahlwiederholung geglückt Sound Auswahl" @@ -1248,7 +1270,7 @@ msgstr "Zuschauer Passwort" msgid "RCon Password" msgstr "RCon Passwort" -#: src/srv-prop.c:621 src/xqf.c:2276 src/xqf.c:2390 +#: src/srv-prop.c:621 src/xqf.c:2287 src/xqf.c:2401 msgid "Properties" msgstr "Einstellungen" @@ -1363,64 +1385,64 @@ msgstr "Wert" msgid "Source" msgstr "Quelle" -#: src/xqf.c:399 +#: src/xqf.c:406 #, c-format msgid "%d server" msgstr "%d Server" -#: src/xqf.c:399 +#: src/xqf.c:406 #, c-format msgid "%d servers" msgstr "%d Server" #. server filter -#: src/xqf.c:626 +#: src/xqf.c:645 msgid "None <--" msgstr "Keiner <--" -#: src/xqf.c:628 src/xqf.c:2806 src/xqf.c:2918 +#: src/xqf.c:647 src/xqf.c:2835 src/xqf.c:2889 src/xqf.c:2999 msgid "None" msgstr "Keiner" -#: src/xqf.c:642 +#: src/xqf.c:661 #, c-format msgid "Filter %d <--" msgstr "Filter %d <--" -#: src/xqf.c:644 +#: src/xqf.c:663 #, c-format msgid "Filter %d" msgstr "Filter %d" -#: src/xqf.c:666 +#: src/xqf.c:685 msgid "No Server Filter Active" msgstr "Kein Server Filter aktiv" -#: src/xqf.c:673 +#: src/xqf.c:692 #, c-format msgid "Server Filter: %s" msgstr "Server Filter: %s" -#: src/xqf.c:677 +#: src/xqf.c:696 #, c-format msgid "Server Filter: %d" msgstr "Server Filter: %d" -#: src/xqf.c:797 +#: src/xqf.c:852 msgid "Updating lists..." msgstr "Aktualisiere Listen ..." -#: src/xqf.c:801 +#: src/xqf.c:856 #, c-format msgid "Resolving host names: %d/%d" msgstr "Löse Hostnamen auf: %d/%d" -#: src/xqf.c:805 +#: src/xqf.c:860 #, c-format msgid "Refreshing: %d/%d" msgstr "Aktualisiere: %d/%d" -#: src/xqf.c:809 +#: src/xqf.c:864 #, c-format msgid "Resolving host addresses: %d/%d" msgstr "Löse Hostnamen auf: %d/%d" @@ -1430,11 +1452,11 @@ msgstr "L #. print_status (main_status_bar, _("Waiting to redial server(s)...")); #. else #. -#: src/xqf.c:838 src/xqf.c:1006 src/xqf.c:1022 src/xqf.c:1813 +#: src/xqf.c:893 src/xqf.c:1824 msgid "Done." msgstr "Fertig." -#: src/xqf.c:927 +#: src/xqf.c:990 #, c-format msgid "" "Server %s:%d is %s.\n" @@ -1445,7 +1467,7 @@ msgstr "" "\n" "Spiel trotzdem starten?" -#: src/xqf.c:963 +#: src/xqf.c:1014 #, c-format msgid "" "Server %s:%d is full.\n" @@ -1456,41 +1478,41 @@ msgstr "" "\n" "Spiel trotzdem starten?" -#: src/xqf.c:1071 src/xqf.c:1091 src/xqf.c:1834 +#: src/xqf.c:1081 src/xqf.c:1101 src/xqf.c:1845 msgid "Save Password" msgstr "Passwort Speichern" -#: src/xqf.c:1071 +#: src/xqf.c:1081 msgid "Spectator Password:" msgstr "Zuschauer Passwort:" -#: src/xqf.c:1091 src/xqf.c:1834 +#: src/xqf.c:1101 src/xqf.c:1845 msgid "Server Password:" msgstr "Server Passwort:" -#: src/xqf.c:1238 +#: src/xqf.c:1249 msgid "Spectator" msgstr "Zuschauer" -#: src/xqf.c:1239 src/xqf.c:1242 +#: src/xqf.c:1250 src/xqf.c:1253 msgid "Demo name:" msgstr "Demo Name:" -#: src/xqf.c:1452 +#: src/xqf.c:1463 #, c-format msgid "Host %s not found" msgstr "Host %s nicht gefunden" -#: src/xqf.c:1482 +#: src/xqf.c:1493 #, c-format msgid "\"%s\" is not valid host[:port] combination." msgstr "\"%s\" ist keine zulässige host[:port] Kombination" -#: src/xqf.c:1693 +#: src/xqf.c:1704 msgid "You have to select the server you want to delete" msgstr "Sie müssen den Server auswählen den sie löschen möchten" -#: src/xqf.c:1699 +#: src/xqf.c:1710 #, c-format msgid "" "Master%s to delete:\n" @@ -1501,16 +1523,16 @@ msgstr "" "\n" "%s" -#: src/xqf.c:1722 +#: src/xqf.c:1733 #, c-format msgid "Find Player: %s" msgstr "Spieler suchen: %s" -#: src/xqf.c:2160 +#: src/xqf.c:2171 msgid "X11 Quake/QuakeWorld/Quake2/Quake3 Front-End\n" msgstr "X11 Quake/QuakeWorld/Quake2/Quake3 Front-End\n" -#: src/xqf.c:2161 +#: src/xqf.c:2172 #, c-format msgid "" "Version %s\n" @@ -1520,7 +1542,7 @@ msgstr "" "\n" #. 8859-1 translators can use the copyright symbol © instead of (C) -#: src/xqf.c:2164 +#: src/xqf.c:2175 msgid "" "Copyright (C) 1998-2002 Roman Pozlevich \n" "\n" @@ -1528,7 +1550,7 @@ msgstr "" "Copyright © 1998-2002 Roman Pozlevich \n" "\n" -#: src/xqf.c:2165 +#: src/xqf.c:2176 msgid "" "http://www.linuxgames.com/xqf\n" "http://sourceforge.net/projects/xqf\n" @@ -1538,7 +1560,7 @@ msgstr "" "http://sourceforge.net/projects/xqf/\n" "\n" -#: src/xqf.c:2167 +#: src/xqf.c:2178 msgid "" "Significant Contributors:\n" "\n" @@ -1556,7 +1578,7 @@ msgstr "" "Ludwig Nussel \n" "\n" -#: src/xqf.c:2172 +#: src/xqf.c:2183 msgid "" "Other Contributors:\n" "\n" @@ -1568,7 +1590,7 @@ msgstr "" "Jochen Baier \n" "\n" -#: src/xqf.c:2174 +#: src/xqf.c:2185 msgid "" "Bug reports:\n" "\n" @@ -1580,7 +1602,7 @@ msgstr "" "http://sourceforge.net/projects/xqf\n" "\n" -#: src/xqf.c:2176 +#: src/xqf.c:2187 msgid "" "Feature requests:\n" "\n" @@ -1590,279 +1612,295 @@ msgstr "" "\n" "http://www.linuxgames.com/xqf in den Foren\n" -#: src/xqf.c:2178 +#: src/xqf.c:2189 msgid "About XQF" msgstr "Über XQF" -#: src/xqf.c:2198 src/xqf.c:2714 +#: src/xqf.c:2209 src/xqf.c:2725 msgid "Connect" msgstr "Verbinden" -#: src/xqf.c:2203 src/xqf.c:2722 +#: src/xqf.c:2214 src/xqf.c:2733 msgid "Observe" msgstr "Beobachten" -#: src/xqf.c:2208 src/xqf.c:2730 +#: src/xqf.c:2219 src/xqf.c:2741 msgid "Record Demo" msgstr "Demo aufnehmen" -#: src/xqf.c:2222 +#: src/xqf.c:2233 msgid "Add new Server" msgstr "Hinzufügen" -#: src/xqf.c:2227 +#: src/xqf.c:2238 msgid "Add to Favorites" msgstr "Zu Favoriten hinzufügen" -#: src/xqf.c:2232 +#: src/xqf.c:2243 msgid "Remove from Favorites" msgstr "Aus Favoriten löschen" -#: src/xqf.c:2237 +#: src/xqf.c:2248 msgid "Copy" msgstr "Kopieren" -#: src/xqf.c:2242 +#: src/xqf.c:2253 msgid "Copy+" msgstr "Kopieren+" -#: src/xqf.c:2250 src/xqf.c:2688 +#: src/xqf.c:2261 src/xqf.c:2699 msgid "Refresh" msgstr "Auffrischen" -#: src/xqf.c:2255 +#: src/xqf.c:2266 msgid "Refresh Selected" msgstr "Ausgewählten auffrischen" -#: src/xqf.c:2263 +#: src/xqf.c:2274 msgid "DNS Lookup" msgstr "DNS auflösen" -#: src/xqf.c:2271 +#: src/xqf.c:2282 msgid "RCon" msgstr "RCon" -#: src/xqf.c:2286 +#: src/xqf.c:2297 msgid "_Statistics" msgstr "_Statistiken" -#: src/xqf.c:2294 +#: src/xqf.c:2305 msgid "_Exit" msgstr "Be_enden" -#: src/xqf.c:2305 src/xqf.c:2359 +#: src/xqf.c:2316 src/xqf.c:2370 msgid "Add _Master" msgstr "_Master hinzufügen " -#: src/xqf.c:2310 src/xqf.c:2364 +#: src/xqf.c:2321 src/xqf.c:2375 msgid "_Rename Master" msgstr "Master _umbenennen " -#: src/xqf.c:2315 src/xqf.c:2369 +#: src/xqf.c:2326 src/xqf.c:2380 msgid "D_elete Master" msgstr "_Master löschen" -#: src/xqf.c:2325 src/xqf.c:2472 +#: src/xqf.c:2336 src/xqf.c:2483 msgid "_Add new Server" msgstr "_Neuen Server hinzufügen" -#: src/xqf.c:2330 src/xqf.c:2477 +#: src/xqf.c:2341 src/xqf.c:2488 msgid "Add to _Favorites" msgstr "Zu Favoriten hin_zufügen" -#: src/xqf.c:2335 src/xqf.c:2482 +#: src/xqf.c:2346 src/xqf.c:2493 msgid "_Remove from Favorites" msgstr "Aus Favoriten _löschen" -#: src/xqf.c:2340 +#: src/xqf.c:2351 msgid "_Copy" msgstr "_Kopieren" -#: src/xqf.c:2345 +#: src/xqf.c:2356 msgid "_Copy+" msgstr "Kopieren+" -#: src/xqf.c:2353 +#: src/xqf.c:2364 msgid "Add Default Masters" msgstr "Standard Master hinzufügen" -#: src/xqf.c:2377 +#: src/xqf.c:2388 msgid "_Find Player" msgstr "S_pieler suchen" -#: src/xqf.c:2382 +#: src/xqf.c:2393 msgid "Find A_gain" msgstr "_Nochmal suchen" -#: src/xqf.c:2400 +#: src/xqf.c:2411 msgid "_Refresh" msgstr "_Auffrischen" -#: src/xqf.c:2405 +#: src/xqf.c:2416 msgid "Refresh _Selected" msgstr "A_usgewählte auffrischen" -#: src/xqf.c:2410 +#: src/xqf.c:2421 msgid "_Update From Master" msgstr "Vom Master a_ktualisieren" -#: src/xqf.c:2418 +#: src/xqf.c:2429 msgid "Show _Host Names" msgstr "_Hostnamen anzeigen" -#: src/xqf.c:2423 +#: src/xqf.c:2434 msgid "Show Default _Port" msgstr "Standard_port anzeigen" -#: src/xqf.c:2442 +#: src/xqf.c:2453 msgid "_Server Filters" msgstr "Server_filter" -#: src/xqf.c:2447 +#: src/xqf.c:2458 msgid "_Connect" msgstr "_Verbinden" -#: src/xqf.c:2452 +#: src/xqf.c:2463 msgid "_Observe" msgstr "_Beobachten" -#: src/xqf.c:2457 +#: src/xqf.c:2468 msgid "Record _Demo" msgstr "_Demo aufnehmen" -#: src/xqf.c:2488 +#: src/xqf.c:2499 msgid "DNS _Lookup" msgstr "DNS _auflösen" -#: src/xqf.c:2496 +#: src/xqf.c:2507 msgid "_RCon" msgstr "_RCon" -#: src/xqf.c:2501 +#: src/xqf.c:2512 msgid "_Properties" msgstr "_Eigenschaften" # src/xqf.c -#: src/xqf.c:2511 +#: src/xqf.c:2522 msgid "_General" msgstr "_Allgemein" -#: src/xqf.c:2517 +#: src/xqf.c:2528 msgid "_Games" msgstr "_Spiele " -#: src/xqf.c:2523 +#: src/xqf.c:2534 msgid "_Appearance" msgstr "Erscheinungs_bild" -#: src/xqf.c:2529 +#: src/xqf.c:2540 msgid "_QStat Options" msgstr "_QStat Optionen" -#: src/xqf.c:2535 +#: src/xqf.c:2546 msgid "_Sound Options" msgstr "_Sound Optionen" -#: src/xqf.c:2544 +#: src/xqf.c:2555 msgid "_Server Filter" msgstr "_Server Filter" -#: src/xqf.c:2549 +#: src/xqf.c:2560 msgid "Player _Filter" msgstr "Spieler _Filter" -#: src/xqf.c:2559 +#: src/xqf.c:2570 msgid "_About" msgstr "_Über " -#: src/xqf.c:2570 +#: src/xqf.c:2581 msgid "_File" msgstr "_Datei" -#: src/xqf.c:2575 +#: src/xqf.c:2586 msgid "_Edit" msgstr "_Bearbeiten" -#: src/xqf.c:2580 +#: src/xqf.c:2591 msgid "_View" msgstr "_Ansicht" -#: src/xqf.c:2585 +#: src/xqf.c:2596 msgid "_Server" msgstr "_Server" -#: src/xqf.c:2590 +#: src/xqf.c:2601 msgid "_Preferences" msgstr "_Einstellungen" -#: src/xqf.c:2595 +#: src/xqf.c:2606 msgid "_Help" msgstr "_Hilfe" -#: src/xqf.c:2638 +#: src/xqf.c:2649 msgid "Mark as Red" msgstr "Rot Markieren" -#: src/xqf.c:2645 +#: src/xqf.c:2656 msgid "Mark as Green" msgstr "Grün Markieren" -#: src/xqf.c:2652 +#: src/xqf.c:2663 msgid "Mark as Blue" msgstr "Blau Markieren" -#: src/xqf.c:2659 +#: src/xqf.c:2670 msgid "Add to Player Filter" msgstr "Zu Spielerfilter hinzufügen" -#: src/xqf.c:2680 +#: src/xqf.c:2691 msgid "Update" msgstr "Aktualisieren" -#: src/xqf.c:2680 +#: src/xqf.c:2691 msgid "Update from master" msgstr "Vom Master aktualisieren" -#: src/xqf.c:2688 +#: src/xqf.c:2699 msgid "Refresh current list" msgstr "Aktuelle Liste auffrischen" -#: src/xqf.c:2696 +#: src/xqf.c:2707 msgid "Ref.Sel." msgstr "Ausg.Auffr." -#: src/xqf.c:2696 +#: src/xqf.c:2707 msgid "Refresh selected servers" msgstr "Ausgewählte Server auffrischen" -#: src/xqf.c:2730 +#: src/xqf.c:2741 msgid "Record" msgstr "Aufnehmen" #. Translators: e.g. Server Filter -#: src/xqf.c:2742 +#: src/xqf.c:2753 #, c-format msgid "%s Filter Enable / Disable" msgstr "%s Filter (De)Aktivieren" #. Translators: e.g. Server Filter Configuration -#: src/xqf.c:2763 +#: src/xqf.c:2774 #, c-format msgid "%s Filter Configuration" msgstr "%s Filter Konfiguration" -#: src/xqf.c:2898 +#: src/xqf.c:2979 msgid "Filters" msgstr "Filter" -#: src/xqf.c:3316 +#: src/xqf.c:3376 +msgid "Reading server lists" +msgstr "Lese Serverlisten" + +#: src/xqf.c:3378 +msgid "Starting ..." +msgstr "Starten ..." + +#: src/xqf.c:3406 #, c-format msgid "You need at least qstat version %s for xqf to function properly" -msgstr "" -"Sie benötigen mindestens qstat Version %s damit xqf richtig funktioniert" +msgstr "Sie benötigen mindestens qstat Version %s damit xqf richtig funktioniert" + +#: src/splash.c:58 +msgid "XQF: Loading" +msgstr "XQF: Lade" + +#: src/splash.c:84 +msgid "Loading ..." +msgstr "Lade ..." #~ msgid "%s Filter" #~ msgstr "%s Filter" #~ msgid "_Add Server" #~ msgstr "Server _hinzufügen" + diff --git a/xqf/src/filter.c b/xqf/src/filter.c index 90e6a89..bc8ca05 100644 --- a/xqf/src/filter.c +++ b/xqf/src/filter.c @@ -107,6 +107,8 @@ static GtkWidget *filter_no_password_check_button; static GtkWidget *game_contains_entry; static GtkWidget *filter_game_type_entry; static GtkWidget *version_contains_entry; +static GtkWidget *map_contains_entry; +static GtkWidget *server_name_contains_entry; static struct server_filter_vars* server_filter_vars_new() { @@ -123,7 +125,8 @@ static struct server_filter_vars* server_filter_vars_new() f->game_contains = NULL; f->version_contains = NULL; f->game_type = NULL; - + f->map_contains = NULL; + f->server_name_contains=NULL; return f; } @@ -134,6 +137,8 @@ static void server_filter_vars_free(struct server_filter_vars* v) g_free(v->filter_name); g_free(v->game_contains); g_free(v->version_contains); + g_free(v->map_contains); + g_free(v->server_name_contains); g_free(v->game_type); } @@ -147,17 +152,18 @@ static struct server_filter_vars* server_filter_vars_copy(struct server_filter_v f = server_filter_vars_new(); if(!f) return NULL; - f->filter_retries = v->filter_retries; - f->filter_ping = v->filter_ping; - f->filter_not_full = v->filter_not_full; - f->filter_not_empty = v->filter_not_empty; - f->filter_no_cheats = v->filter_no_cheats; - f->filter_no_password = v->filter_no_password; - f->filter_name = g_strdup(v->filter_name); - f->game_contains = g_strdup(v->game_contains); - f->version_contains = g_strdup(v->version_contains); - f->game_type = g_strdup(v->game_type); - + f->filter_retries = v->filter_retries; + f->filter_ping = v->filter_ping; + f->filter_not_full = v->filter_not_full; + f->filter_not_empty = v->filter_not_empty; + f->filter_no_cheats = v->filter_no_cheats; + f->filter_no_password = v->filter_no_password; + f->filter_name = g_strdup(v->filter_name); + f->game_contains = g_strdup(v->game_contains); + f->version_contains = g_strdup(v->version_contains); + f->game_type = g_strdup(v->game_type); + f->map_contains = g_strdup(v->map_contains); + f->server_name_contains = g_strdup(v->server_name_contains); return f; } @@ -173,6 +179,8 @@ void server_filter_print(struct server_filter_vars* f) printf(" game: %s\n",f->game_contains); printf(" version: %s\n",f->version_contains); printf(" game type: %s\n",f->game_type); + printf(" map: %s\n",f->map_contains); + printf(" server name: %s\n",f->server_name_contains); } void apply_filters (unsigned mask, struct server *s) { @@ -248,7 +256,7 @@ GSList *build_filtered_list (unsigned mask, GSList *server_list) { static int server_pass_filter (struct server *s){ char **info_ptr; struct server_filter_vars* filter; - + /* Filter Zero is No Filter */ if( current_server_filter == 0 ){ return TRUE; } @@ -293,6 +301,15 @@ static int server_pass_filter (struct server *s){ return FALSE; } + if( filter->map_contains && *filter->map_contains ) + { + if( !s->map ) + return FALSE; + else if(!lowcasestrstr(s->map, filter->map_contains)) + return FALSE; + } + + if( filter->version_contains && *filter->version_contains) { const char* version = NULL; @@ -308,6 +325,17 @@ static int server_pass_filter (struct server *s){ return FALSE; } }/*end version check */ + + + if( filter->server_name_contains && *filter->server_name_contains ) + { + if( !s->name ) + return FALSE; + else if(!lowcasestrstr(s->name, filter->server_name_contains)) + return FALSE; + } + + return TRUE; } @@ -338,17 +366,18 @@ static void server_filter_init (void) { filter = server_filter_vars_new(); if(!filter) break; - filter->filter_name = filtername; - filter->filter_retries = config_get_int ("retries=2"); - filter->filter_ping = config_get_int ("ping=1000"); - filter->filter_not_full = config_get_bool ("not full=false"); - filter->filter_not_empty = config_get_bool ("not empty=false"); - filter->filter_no_cheats = config_get_bool ("no cheats=false"); - filter->filter_no_password = config_get_bool ("no password=false"); - filter->game_contains = config_get_string("game_contains"); - filter->version_contains = config_get_string("version_contains"); - filter->game_type = config_get_string("game_type"); - + filter->filter_name = filtername; + filter->filter_retries = config_get_int ("retries=2"); + filter->filter_ping = config_get_int ("ping=1000"); + filter->filter_not_full = config_get_bool ("not full=false"); + filter->filter_not_empty = config_get_bool ("not empty=false"); + filter->filter_no_cheats = config_get_bool ("no cheats=false"); + filter->filter_no_password = config_get_bool ("no password=false"); + filter->game_contains = config_get_string("game_contains"); + filter->version_contains = config_get_string("version_contains"); + filter->game_type = config_get_string("game_type"); + filter->map_contains = config_get_string("map_contains"); + filter->server_name_contains = config_get_string("server_name_contains"); g_array_append_val(server_filters,filter); config_pop_prefix (); @@ -407,7 +436,8 @@ static struct server_filter_vars* server_filter_new_from_widgets() filter->game_type = gtk_editable_get_chars (GTK_EDITABLE (filter_game_type_entry), 0, -1 ); filter->version_contains = gtk_editable_get_chars (GTK_EDITABLE (version_contains_entry), 0, -1 ); filter->game_contains = gtk_editable_get_chars (GTK_EDITABLE (game_contains_entry), 0, -1 ); - + filter->map_contains = gtk_editable_get_chars (GTK_EDITABLE (map_contains_entry), 0, -1 ); + filter->server_name_contains = gtk_editable_get_chars (GTK_EDITABLE (server_name_contains_entry), 0, -1 ); return filter; } @@ -587,7 +617,7 @@ static void server_filter_save_settings (int number, if( newfilter->game_type && strlen( newfilter->game_type )){ /* First case, the user entered something. See if the value - is different + is different */ if (oldfilter->game_type){ if( strcmp( newfilter->game_type, oldfilter->game_type )) text_changed = 1; @@ -608,9 +638,71 @@ static void server_filter_save_settings (int number, filters[FILTER_SERVER].changed = FILTER_CHANGED; } oldfilter->game_type = NULL; - } + } /* end game_type filter */ + + /* map string values */ + text_changed = 0; + if( newfilter->map_contains && strlen( newfilter->map_contains )){ + /* + First case, the user entered something. See if the value + is different + */ + if (oldfilter->map_contains){ + if( strcmp( newfilter->map_contains, oldfilter->map_contains )) text_changed = 1; + g_free( oldfilter->map_contains); + } else { + text_changed = 1; + } + oldfilter->map_contains = g_strdup( newfilter->map_contains ); + if (text_changed) { + config_set_string ("map_contains", oldfilter->map_contains ); + filters[FILTER_SERVER].changed = FILTER_CHANGED; + } + } else { + if (oldfilter->map_contains){ + text_changed = 1; /* From something to nothing */ + g_free( oldfilter->map_contains ); + config_set_string ("map_contains", "" ); + filters[FILTER_SERVER].changed = FILTER_CHANGED; + } + oldfilter->map_contains= NULL; + } /* end of map filter */ + + + + + /* servername string values */ + text_changed = 0; + if( newfilter->server_name_contains && strlen( newfilter->server_name_contains )){ + /* + First case, the user entered something. See if the value + is different + */ + if (oldfilter->server_name_contains){ + if( strcmp( newfilter->server_name_contains, oldfilter->server_name_contains )) text_changed = 1; + g_free( oldfilter->server_name_contains); + } else { + text_changed = 1; + } + oldfilter->server_name_contains = g_strdup( newfilter->server_name_contains ); + if (text_changed) { + config_set_string ("server_name_contains", oldfilter->server_name_contains ); + filters[FILTER_SERVER].changed = FILTER_CHANGED; + } + } else { + if (oldfilter->server_name_contains){ + text_changed = 1; /* From something to nothing */ + g_free( oldfilter->server_name_contains ); + config_set_string ("server_name_contains", "" ); + filters[FILTER_SERVER].changed = FILTER_CHANGED; + } + oldfilter->server_name_contains = NULL; + } /* end of server filter */ + + + if (oldfilter->filter_not_full != newfilter->filter_not_full) { config_set_bool ("not full", oldfilter->filter_not_full = newfilter->filter_not_full); @@ -814,6 +906,8 @@ static void server_filter_set_widgets_sensitive(gboolean sensitive) gtk_widget_set_sensitive(filter_game_type_entry,sensitive); gtk_widget_set_sensitive(version_contains_entry,sensitive); gtk_widget_set_sensitive(game_contains_entry,sensitive); + gtk_widget_set_sensitive(map_contains_entry,sensitive); + gtk_widget_set_sensitive(server_name_contains_entry,sensitive); gtk_widget_set_sensitive(filter_ping_spinner,sensitive); gtk_widget_set_sensitive(filter_retries_spinner,sensitive); gtk_widget_set_sensitive(filter_not_full_check_button,sensitive); @@ -850,6 +944,8 @@ static void server_filter_fill_widgets(guint num) gtk_entry_set_text (GTK_ENTRY (filter_game_type_entry), filter->game_type?filter->game_type:"" ); gtk_entry_set_text (GTK_ENTRY (version_contains_entry), filter->version_contains?filter->version_contains:"" ); gtk_entry_set_text (GTK_ENTRY (game_contains_entry), filter->game_contains?filter->game_contains:"" ); + gtk_entry_set_text (GTK_ENTRY (map_contains_entry), filter->map_contains?filter->map_contains:"" ); + gtk_entry_set_text (GTK_ENTRY (server_name_contains_entry), filter->server_name_contains?filter->server_name_contains:"" ); gtk_adjustment_set_value(gtk_spin_button_get_adjustment( GTK_SPIN_BUTTON(filter_ping_spinner)),filter->filter_ping); @@ -1050,10 +1146,10 @@ static void server_filter_page (GtkWidget *notebook) { /* Version Filter -- baa */ - + label = gtk_label_new (_("the version contains the string")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 3, 4, row, row+1, GTK_FILL, GTK_FILL, + gtk_table_attach (GTK_TABLE (table), label, 3, 4, row, row+1, GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show (label); version_contains_entry = gtk_entry_new_with_max_length (32); @@ -1064,6 +1160,43 @@ static void server_filter_page (GtkWidget *notebook) { gtk_table_attach_defaults (GTK_TABLE (table), version_contains_entry, 4, 5, row, row+1); gtk_widget_show (version_contains_entry); + row++; + + + /* Map filter*/ + + label = gtk_label_new (_("the map contains the string")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 3, 4, row, row+1, GTK_FILL, GTK_FILL, + 0, 0); + gtk_widget_show (label); + map_contains_entry = gtk_entry_new_with_max_length (32); + gtk_widget_set_usize (map_contains_entry, 64, -1); + gtk_entry_set_editable (GTK_ENTRY (map_contains_entry), TRUE); + gtk_signal_connect_object (GTK_OBJECT (map_contains_entry), "changed", + GTK_SIGNAL_FUNC (server_filter_set_changed_callback), (gpointer) TRUE); + + gtk_table_attach_defaults (GTK_TABLE (table), map_contains_entry, 4, 5, row, row+1); + gtk_widget_show (map_contains_entry); + row++; + + + /* Server name filter*/ + + label = gtk_label_new (_("the server name contains the string")); + gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), label, 3, 4, row, row+1, GTK_FILL, GTK_FILL, + 0, 0); + gtk_widget_show (label); + server_name_contains_entry = gtk_entry_new_with_max_length (32); + gtk_widget_set_usize (server_name_contains_entry, 64, -1); + gtk_entry_set_editable (GTK_ENTRY (server_name_contains_entry), TRUE); + gtk_signal_connect_object (GTK_OBJECT (server_name_contains_entry), "changed", + GTK_SIGNAL_FUNC (server_filter_set_changed_callback), (gpointer) TRUE); + + gtk_table_attach_defaults (GTK_TABLE (table),server_name_contains_entry , 4, 5, row, row+1); + gtk_widget_show (server_name_contains_entry); + /* not full */ diff --git a/xqf/src/filter.h b/xqf/src/filter.h index 8c7006c..b95d340 100644 --- a/xqf/src/filter.h +++ b/xqf/src/filter.h @@ -53,6 +53,8 @@ struct server_filter_vars { char *game_contains; char *version_contains; char *game_type; + char *map_contains; + char *server_name_contains; }; diff --git a/xqf/src/xqf.c b/xqf/src/xqf.c index 304d551..fc28f9f 100644 --- a/xqf/src/xqf.c +++ b/xqf/src/xqf.c @@ -171,6 +171,10 @@ static GtkWidget *record_button = NULL; static GtkWidget *filter_buttons[FILTERS_TOTAL]; +/*filter widgtet for toolbar*/ +static GtkWidget *filter_option_menu_toolbar; +static GtkWidget *filter_toolbar_label; + static GtkWidget *player_skin_popup = NULL; static GtkWidget *player_skin_popup_preview = NULL; /* @@ -188,6 +192,7 @@ static void launch_close_handler_part2(struct condef *con); /** build server filter menu for menubar */ static GtkWidget* create_filter_menu(); +static GtkWidget* create_filter_menu_toolbar(); //static GtkWidget* filter_menu = NULL; // need to store that for toggling the checkboxes static GSList* filter_menu_radio_buttons = NULL; // for finding the widgets to activate @@ -561,7 +566,7 @@ static int forced_filters_flag = FALSE; static void set_filters (unsigned char mask) { unsigned n; int i; - + forced_filters_flag = TRUE; cur_filter = mask; @@ -576,6 +581,8 @@ static void set_filters (unsigned char mask) { static void filter_toggle_callback (GtkWidget *widget, unsigned char mask) { + + if (!forced_filters_flag) { cur_filter ^= mask; server_clist_build_filtered (cur_server_list, FALSE); /* in srv-list.c */ @@ -590,7 +597,7 @@ static void filter_menu_activate_current() unsigned int count = 0; GSList* rbgroup = filter_menu_radio_buttons; GtkWidget* widget = NULL; - + while(rbgroup) { if(GTK_IS_CHECK_MENU_ITEM(rbgroup->data)) @@ -611,6 +618,16 @@ static void filter_menu_activate_current() } } + +/*refresh filtermenu on toolbar*/ + +void set_filter_option_menu_toolbar (void) { + + gtk_option_menu_set_menu (GTK_OPTION_MENU (filter_option_menu_toolbar), create_filter_menu_toolbar()); + gtk_option_menu_set_history(GTK_OPTION_MENU(filter_option_menu_toolbar), current_server_filter); +} + + void set_server_filter_menu_list_text( void ){ /* baa -- Set the names of the filters if they have been set in @@ -690,14 +707,30 @@ void set_server_filter_menu_list_text( void ){ static void server_filter_select_callback (GtkWidget *widget, int number) { + if(!GTK_IS_CHECK_MENU_ITEM(widget)) + { + g_warning("no check menu item"); + return; + } + + if(GTK_CHECK_MENU_ITEM(widget)->active == 0) + { + // signal was triggered for deactivation + return; + } + current_server_filter = number; filters[FILTER_SERVER].changed = FILTER_CHANGED; filters[FILTER_SERVER].last_changed = ++filter_current_time; - server_clist_build_filtered (cur_server_list, FALSE); /* in srv-list.c */ + server_clist_build_filtered (cur_server_list, FALSE); /* in srv-list.c */ set_server_filter_menu_list_text (); + /* refresh optionmenu on toolbar*/ + + set_filter_option_menu_toolbar(); + config_push_prefix ( "/" CONFIG_FILE "/Server Filter" ); config_set_int ("current_server_filter", current_server_filter); config_pop_prefix (); @@ -705,6 +738,19 @@ static void server_filter_select_callback (GtkWidget *widget, int number) { return; } +/*need new one to refresh filter radio buttons in menu*/ + +static void server_filter_select_callback_toolbar (GtkWidget *widget, int number) { + + current_server_filter = number; + + /*apply changes to radio buttons in menu*/ + + filter_menu_activate_current(); + + return; +} + static void start_preferences_dialog (GtkWidget *widget, int page_num) { @@ -720,6 +766,13 @@ static void start_filters_cfg_dialog (GtkWidget *widget, int page_num) { rc_save (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (server_serverfilter_menu_item), create_filter_menu()); filter_menu_activate_current(); + + /* refresh optionmenu on toolbar*/ + set_filter_option_menu_toolbar(); + + /* refresh filter status*/ + set_server_filter_menu_list_text (); + //happes automagically server_clist_build_filtered (cur_server_list, TRUE); player_clist_redraw (); } @@ -2676,7 +2729,7 @@ static void populate_main_toolbar (void) { pixmap = gtk_pixmap_new (observe_pix.pix, observe_pix.mask); gtk_widget_show (pixmap); - observe_button = gtk_toolbar_append_item (GTK_TOOLBAR (main_toolbar), + observe_button = gtk_toolbar_append_item (GTK_TOOLBAR (main_toolbar), _("Observe"), _("Observe"), NULL, pixmap, GTK_SIGNAL_FUNC (launch_callback), (gpointer) LAUNCH_SPECTATE); @@ -2728,6 +2781,31 @@ static void populate_main_toolbar (void) { pixmap, GTK_SIGNAL_FUNC (start_filters_cfg_dialog), (gpointer) i); } + gtk_toolbar_append_space (GTK_TOOLBAR (main_toolbar)); + + + + /*filter option menu for toolbar */ + + filter_toolbar_label = gtk_label_new ("Filter: "); + gtk_toolbar_append_widget( GTK_TOOLBAR (main_toolbar), + filter_toolbar_label, + "Select a server filter", + "Private" ); + gtk_widget_show(filter_toolbar_label); + + + filter_option_menu_toolbar = gtk_option_menu_new (); + gtk_option_menu_set_menu (GTK_OPTION_MENU (filter_option_menu_toolbar), + create_filter_menu_toolbar()); + + gtk_toolbar_append_widget( GTK_TOOLBAR (main_toolbar), + filter_option_menu_toolbar, + "Select a server filter", + "Private" ); + + + gtk_widget_show (filter_option_menu_toolbar); set_toolbar_appearance (GTK_TOOLBAR (main_toolbar), default_toolbar_style, default_toolbar_tips); @@ -2735,6 +2813,53 @@ static void populate_main_toolbar (void) { /** build server filter menu for menubar */ + +static GtkWidget* create_filter_menu_toolbar() +{ + unsigned int i; + GtkWidget *menu; + GtkWidget *menu_item; + + struct server_filter_vars* filter = NULL; + + + menu = gtk_menu_new(); + + + for (i = 0;i<=server_filters->len;i++) + { + char* name = NULL; + if(i == 0) + { + filter = NULL; + name = _("None"); + } + else + { + filter = g_array_index (server_filters, struct server_filter_vars*, i-1); + name = filter->filter_name; + } + + menu_item = gtk_menu_item_new_with_label(name); + gtk_menu_append (GTK_MENU (menu), menu_item); + gtk_widget_show (menu_item); + + gtk_signal_connect (GTK_OBJECT (menu_item), "activate", + GTK_SIGNAL_FUNC (server_filter_select_callback_toolbar), (gpointer)i); // array starts from zero but filters from 1 + + + + } + + gtk_widget_show (menu); + return menu; +} + + + + +/** build server filter menu for toolbar + */ static GtkWidget* create_filter_menu() { unsigned int i; @@ -2774,7 +2899,7 @@ static GtkWidget* create_filter_menu() // rbgroup = gtk_radio_button_group(GTK_RADIO_BUTTON(radiobutton)); // gtk_container_add(GTK_CONTAINER(menu_item),radiobutton); // gtk_widget_show(radiobutton); - + // menu_item = gtk_check_menu_item_new_with_label(name); // gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_item), (current_server_filter == i)); // that doesn't do what the docu says, right? @@ -2804,8 +2929,6 @@ static GtkWidget* create_filter_menu() // filter_menu = menu; return menu; } - - void create_main_window (void) { GtkWidget *main_vbox; GtkWidget *vbox; @@ -3097,6 +3220,12 @@ void create_main_window (void) { /* Make sure the current filter is dispalyed and applied if needed */ set_server_filter_menu_list_text (); + + /*refresh optionmenu on toolbar*/ + + set_filter_option_menu_toolbar(); + + gtk_widget_show (hbox);