diff options
-rw-r--r-- | po/cs.po | 42 | ||||
-rw-r--r-- | po/de.po | 42 | ||||
-rw-r--r-- | po/es.po | 42 | ||||
-rw-r--r-- | po/fr.po | 56 | ||||
-rw-r--r-- | po/hu.po | 41 | ||||
-rw-r--r-- | po/ru.po | 42 | ||||
-rw-r--r-- | po/weechat.pot | 33 | ||||
-rw-r--r-- | src/core/wee-command.c | 72 | ||||
-rw-r--r-- | src/core/wee-config.c | 36 | ||||
-rw-r--r-- | src/gui/curses/gui-curses-bar.c | 23 | ||||
-rw-r--r-- | src/gui/curses/gui-curses-chat.c | 4 | ||||
-rw-r--r-- | src/gui/curses/gui-curses-input.c | 2 | ||||
-rw-r--r-- | src/gui/curses/gui-curses-main.c | 18 | ||||
-rw-r--r-- | src/gui/curses/gui-curses-nicklist.c | 2 | ||||
-rw-r--r-- | src/gui/curses/gui-curses-status.c | 2 | ||||
-rw-r--r-- | src/gui/curses/gui-curses-window.c | 112 | ||||
-rw-r--r-- | src/gui/gtk/gui-gtk-bar.c | 14 | ||||
-rw-r--r-- | src/gui/gui-bar.c | 285 | ||||
-rw-r--r-- | src/gui/gui-bar.h | 34 | ||||
-rw-r--r-- | src/gui/gui-window.h | 2 | ||||
-rw-r--r-- | src/plugins/scripts/lua/weechat-lua-api.c | 19 | ||||
-rw-r--r-- | src/plugins/scripts/perl/weechat-perl-api.c | 17 | ||||
-rw-r--r-- | src/plugins/scripts/python/weechat-python-api.c | 11 | ||||
-rw-r--r-- | src/plugins/scripts/ruby/weechat-ruby-api.c | 24 | ||||
-rw-r--r-- | src/plugins/weechat-plugin.h | 16 |
25 files changed, 695 insertions, 296 deletions
@@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-04-19 10:27+0200\n" +"POT-Creation-Date: 2008-04-22 18:08+0200\n" "PO-Revision-Date: 2007-09-06 12:44+0200\n" "Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" @@ -113,9 +113,9 @@ msgstr "kompilováno" msgid "List of bars:" msgstr "Seznam pro aliasy:\n" -#, c-format -msgid " %d. %s: %s, %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" -msgstr "" +#, fuzzy, c-format +msgid " %d. %s: %s (cond: %s), %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" +msgstr "%sna %s%s%s/%s%s%s:%s ignoruji %s%s%s od %s%s\n" #, fuzzy msgid "height" @@ -152,6 +152,10 @@ msgid "%sError: missing arguments for \"%s\" command" msgstr "%s chybí argumenty pro příkaz \"%s\"\n" #, fuzzy, c-format +msgid "%sNot enough memory" +msgstr "Nedostatek paměti pro nový řádek\n" + +#, fuzzy, c-format msgid "%sError: wrong type \"%s\" for bar \"%s\"" msgstr "%s špatný počet parametrů pro příkaz \"%s\"\n" @@ -180,6 +184,10 @@ msgid "Bar deleted" msgstr "uživatel byl zablokován" #, fuzzy, c-format +msgid "%sError: unable to set option \"%s\" for bar \"%s\"" +msgstr "%s neznámá volba pro příkaz \"%s\"\n" + +#, fuzzy, c-format msgid "%sError: unknown option for \"%s\" command" msgstr "%s neznámá volba pro příkaz \"%s\"\n" @@ -595,16 +603,21 @@ msgid "manage bars" msgstr "řídit buffery" msgid "" -"[add barname type position size separator item1,item2,...] | [del barname] | " -"[set barname name|number|position|size|separator|items value] | [list] | " -"[listitems]" +"[add barname type[,cond1,cond2,...] position size separator item1,item2,...] " +"| [del barname] | [set barname name|number|condition|position|size|separator|" +"items value] | [list] | [listitems]" msgstr "" msgid "" " add: add a new bar\n" " barname: name of bar (must be unique)\n" -" type: \"root\" (outside windows), \"window_active\" (inside active " -"window), or \"window_inactive\" (inside each inactive window)\n" +" type: root: outside windows),\n" +" window: inside windows, with optional conditions (see below)\n" +"cond1,...: condition(s) for displaying bar (only for type \"window\"):\n" +" active: on active window\n" +" inactive: on inactive windows\n" +" nicklist: on windows with nicklist\n" +" without condition, bar is always displayed\n" " position: bottom, top, left or right\n" " size: size of bar (in chars)\n" "separator: 1 for using separator (line), 0 or nothing means no separator\n" @@ -1686,6 +1699,9 @@ msgstr "" msgid "bar type (root, window, window_active, window_inactive)" msgstr "" +msgid "condition(s) for displaying bar (for bars of type \"window\")" +msgstr "" + #, fuzzy msgid "bar position (bottom, top, left, right)" msgstr "pozice seznamu přezdívek (top, left, right (výchozí), bottom)" @@ -1694,6 +1710,10 @@ msgid "bar size in chars (0 = auto size)" msgstr "" #, fuzzy +msgid "max bar size in chars (0 = no limit)" +msgstr "maximální délka jmen v hotlistu (0 = bez limitu)" + +#, fuzzy msgid "separator line between bar and other bars/windows" msgstr "oddělovač mezi rozhovorem a seznamem přezdívek" @@ -4758,10 +4778,6 @@ msgstr "%s špatné parametry pro příkaz \"%s\"\n" #~ msgstr "%s nemohu identofikovat datum/čas pro příkaz \"%s\"\n" #, fuzzy -#~ msgid "%s%s%s on %s%s%s %s %s %s%s@%s %s(%s%s%s)" -#~ msgstr "%sna %s%s%s/%s%s%s:%s ignoruji %s%s%s od %s%s\n" - -#, fuzzy #~ msgid "%s%s: command \"%s\" failed" #~ msgstr "%s příkaz \"%s\" selhal\n" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-04-19 10:27+0200\n" +"POT-Creation-Date: 2008-04-22 18:08+0200\n" "PO-Revision-Date: 2007-09-06 12:44+0200\n" "Last-Translator: Thomas Schuetz <i18n@internet-villa.de>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" @@ -118,9 +118,9 @@ msgstr "kompiliert am" msgid "List of bars:" msgstr "Liste der Aliases:\n" -#, c-format -msgid " %d. %s: %s, %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" -msgstr "" +#, fuzzy, c-format +msgid " %d. %s: %s (cond: %s), %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" +msgstr "%sin %s%s%s/%s%s%s:%s ignoriere %s%s%s von %s%s\n" #, fuzzy msgid "height" @@ -157,6 +157,10 @@ msgid "%sError: missing arguments for \"%s\" command" msgstr "%s fehlende Argumente für den \"%s\"-Befehl\n" #, fuzzy, c-format +msgid "%sNot enough memory" +msgstr "Nicht genügend Speicher für neue Zeile\n" + +#, fuzzy, c-format msgid "%sError: wrong type \"%s\" for bar \"%s\"" msgstr "%s fehlerhafte Anzahl von Argumenten für der \"%s\"-Befehl\n" @@ -185,6 +189,10 @@ msgid "Bar deleted" msgstr "/users wurde deaktiviert" #, fuzzy, c-format +msgid "%sError: unable to set option \"%s\" for bar \"%s\"" +msgstr "%s unbekannte Option für den \"%s\"-Befehl\n" + +#, fuzzy, c-format msgid "%sError: unknown option for \"%s\" command" msgstr "%s unbekannte Option für den \"%s\"-Befehl\n" @@ -603,16 +611,21 @@ msgid "manage bars" msgstr "Puffer verwalten" msgid "" -"[add barname type position size separator item1,item2,...] | [del barname] | " -"[set barname name|number|position|size|separator|items value] | [list] | " -"[listitems]" +"[add barname type[,cond1,cond2,...] position size separator item1,item2,...] " +"| [del barname] | [set barname name|number|condition|position|size|separator|" +"items value] | [list] | [listitems]" msgstr "" msgid "" " add: add a new bar\n" " barname: name of bar (must be unique)\n" -" type: \"root\" (outside windows), \"window_active\" (inside active " -"window), or \"window_inactive\" (inside each inactive window)\n" +" type: root: outside windows),\n" +" window: inside windows, with optional conditions (see below)\n" +"cond1,...: condition(s) for displaying bar (only for type \"window\"):\n" +" active: on active window\n" +" inactive: on inactive windows\n" +" nicklist: on windows with nicklist\n" +" without condition, bar is always displayed\n" " position: bottom, top, left or right\n" " size: size of bar (in chars)\n" "separator: 1 for using separator (line), 0 or nothing means no separator\n" @@ -1686,6 +1699,9 @@ msgstr "" msgid "bar type (root, window, window_active, window_inactive)" msgstr "" +msgid "condition(s) for displaying bar (for bars of type \"window\")" +msgstr "" + #, fuzzy msgid "bar position (bottom, top, left, right)" msgstr "Nicklisten-Position (top, left, right (Standard), bottom)" @@ -1694,6 +1710,10 @@ msgid "bar size in chars (0 = auto size)" msgstr "" #, fuzzy +msgid "max bar size in chars (0 = no limit)" +msgstr "maximale Länge der Namen in der Hotlist (0: kein Limit)" + +#, fuzzy msgid "separator line between bar and other bars/windows" msgstr "Trennzeichen zwischen Chatfenster und Nickliste" @@ -4750,10 +4770,6 @@ msgstr "%s fehlerhafte Argumente für der \"%s\"-Befehl\n" #~ "%s kann für den \"%s\"-Befehl kein Datum/keine Uhrzeit identifizieren\n" #, fuzzy -#~ msgid "%s%s%s on %s%s%s %s %s %s%s@%s %s(%s%s%s)" -#~ msgstr "%sin %s%s%s/%s%s%s:%s ignoriere %s%s%s von %s%s\n" - -#, fuzzy #~ msgid "%s%s: command \"%s\" failed" #~ msgstr "%s der Befehl \"%s\" schlug fehl\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-04-19 10:27+0200\n" +"POT-Creation-Date: 2008-04-22 18:08+0200\n" "PO-Revision-Date: 2007-09-19 12:09+0200\n" "Last-Translator: Roberto González Cardenete <robert.glez@gmail.com>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" @@ -115,9 +115,9 @@ msgstr "compilado en" msgid "List of bars:" msgstr "Lista de alias:\n" -#, c-format -msgid " %d. %s: %s, %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" -msgstr "" +#, fuzzy, c-format +msgid " %d. %s: %s (cond: %s), %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" +msgstr "%sen %s%s%s/%s%s%s:%s ignorando %s%s%s de %s%s\n" msgid "height" msgstr "" @@ -153,6 +153,10 @@ msgid "%sError: missing arguments for \"%s\" command" msgstr "%s faltan argumentos para el comando \"%s\"\n" #, fuzzy, c-format +msgid "%sNot enough memory" +msgstr "No hay suficiente memoria para una nueva lÃnea\n" + +#, fuzzy, c-format msgid "%sError: wrong type \"%s\" for bar \"%s\"" msgstr "%s número de argumentos incorrecto para el comando \"%s\"\n" @@ -181,6 +185,10 @@ msgid "Bar deleted" msgstr "los usuarios han sido desactivados" #, fuzzy, c-format +msgid "%sError: unable to set option \"%s\" for bar \"%s\"" +msgstr "%s opción desconocida para el comando \"%s\"\n" + +#, fuzzy, c-format msgid "%sError: unknown option for \"%s\" command" msgstr "%s opción desconocida para el comando \"%s\"\n" @@ -599,16 +607,21 @@ msgid "manage bars" msgstr "gestionar los búfers" msgid "" -"[add barname type position size separator item1,item2,...] | [del barname] | " -"[set barname name|number|position|size|separator|items value] | [list] | " -"[listitems]" +"[add barname type[,cond1,cond2,...] position size separator item1,item2,...] " +"| [del barname] | [set barname name|number|condition|position|size|separator|" +"items value] | [list] | [listitems]" msgstr "" msgid "" " add: add a new bar\n" " barname: name of bar (must be unique)\n" -" type: \"root\" (outside windows), \"window_active\" (inside active " -"window), or \"window_inactive\" (inside each inactive window)\n" +" type: root: outside windows),\n" +" window: inside windows, with optional conditions (see below)\n" +"cond1,...: condition(s) for displaying bar (only for type \"window\"):\n" +" active: on active window\n" +" inactive: on inactive windows\n" +" nicklist: on windows with nicklist\n" +" without condition, bar is always displayed\n" " position: bottom, top, left or right\n" " size: size of bar (in chars)\n" "separator: 1 for using separator (line), 0 or nothing means no separator\n" @@ -1670,6 +1683,9 @@ msgstr "" msgid "bar type (root, window, window_active, window_inactive)" msgstr "" +msgid "condition(s) for displaying bar (for bars of type \"window\")" +msgstr "" + #, fuzzy msgid "bar position (bottom, top, left, right)" msgstr "" @@ -1679,6 +1695,10 @@ msgstr "" msgid "bar size in chars (0 = auto size)" msgstr "" +#, fuzzy +msgid "max bar size in chars (0 = no limit)" +msgstr "longitud máxima de nombres en la hotlist (0 = sin lÃmite)" + msgid "separator line between bar and other bars/windows" msgstr "" @@ -4761,10 +4781,6 @@ msgstr "%s argumentos incorrectos para el comando \"%s\"\n" #~ msgstr "%s no es posible identificar la fecha/hora para el comando \"%s\"\n" #, fuzzy -#~ msgid "%s%s%s on %s%s%s %s %s %s%s@%s %s(%s%s%s)" -#~ msgstr "%sen %s%s%s/%s%s%s:%s ignorando %s%s%s de %s%s\n" - -#, fuzzy #~ msgid "%s%s: command \"%s\" failed" #~ msgstr "%s el comando \"%s\" ha fallado\n" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-04-19 10:27+0200\n" -"PO-Revision-Date: 2008-04-19 10:28+0200\n" +"POT-Creation-Date: 2008-04-22 18:08+0200\n" +"PO-Revision-Date: 2008-04-22 18:09+0200\n" "Last-Translator: FlashCode <flashcode@flashtux.org>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "MIME-Version: 1.0\n" @@ -111,8 +111,9 @@ msgid "List of bars:" msgstr "Liste des barres:" #, c-format -msgid " %d. %s: %s, %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" -msgstr " %d. %s: %s, %s, %s: %s%s%d%s, objets: %s%s (extension: %s)" +msgid " %d. %s: %s (cond: %s), %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" +msgstr "" +" %d. %s: %s (cond: %s), %s, %s: %s%s%d%s, objets: %s%s (extension: %s)" msgid "height" msgstr "hauteur" @@ -144,6 +145,10 @@ msgid "%sError: missing arguments for \"%s\" command" msgstr "%sErreur: paramètres manquants pour la commande \"%s\"" #, c-format +msgid "%sNot enough memory" +msgstr "%sPas assez de mémoire" + +#, c-format msgid "%sError: wrong type \"%s\" for bar \"%s\"" msgstr "%sErreur: type erroné \"%s\" pour la barre \"%s\"" @@ -171,6 +176,10 @@ msgid "Bar deleted" msgstr "Barre supprimée" #, c-format +msgid "%sError: unable to set option \"%s\" for bar \"%s\"" +msgstr "%sErreur: impossible de modifier l'option \"%s\" pour la barre \"%s\"" + +#, c-format msgid "%sError: unknown option for \"%s\" command" msgstr "%sErreur: option inconnue pour la commande \"%s\"" @@ -546,19 +555,24 @@ msgid "manage bars" msgstr "gestion des barres" msgid "" -"[add barname type position size separator item1,item2,...] | [del barname] | " -"[set barname name|number|position|size|separator|items value] | [list] | " -"[listitems]" +"[add barname type[,cond1,cond2,...] position size separator item1,item2,...] " +"| [del barname] | [set barname name|number|condition|position|size|separator|" +"items value] | [list] | [listitems]" msgstr "" -"[add nombarre type position taille separateur objet1,objet2,...] | [del " -"nombarre] | [set nombarre name|position|size|separator|items valeur] | " -"[list] | [listitems]" +"[add nombarre type[,cond1,cond2,...] position taille separateur objet1," +"objet2,...] | [del nombarre] | [set nombarre name|condition|position|size|" +"separator|items valeur] | [list] | [listitems]" msgid "" " add: add a new bar\n" " barname: name of bar (must be unique)\n" -" type: \"root\" (outside windows), \"window_active\" (inside active " -"window), or \"window_inactive\" (inside each inactive window)\n" +" type: root: outside windows),\n" +" window: inside windows, with optional conditions (see below)\n" +"cond1,...: condition(s) for displaying bar (only for type \"window\"):\n" +" active: on active window\n" +" inactive: on inactive windows\n" +" nicklist: on windows with nicklist\n" +" without condition, bar is always displayed\n" " position: bottom, top, left or right\n" " size: size of bar (in chars)\n" "separator: 1 for using separator (line), 0 or nothing means no separator\n" @@ -570,8 +584,15 @@ msgid "" msgstr "" " add: ajoute une nouvelle barre\n" " nombarre: nom de la barre (doit être unique)\n" -" type: \"root\" (en dehors des fenêtres), \"window_active\" (dans la " -"fenêtre active), \"window_inactive\" (dans chaque fenêtre inactive)\n" +" type: root: en dehors des fenêtres\n" +" window: dans les fenêtres, avec condition(s) optionnelle(s) " +"(voir ci-dessous)\n" +" cond1,...: condition(s) pour afficher cette barre (seulement pour le type " +"\"window\") :\n" +" active: sur la fenêtre active\n" +" inactive: sur les fenêtres inactives\n" +" nicklist: sue les fenêtres avec liste de pseudos\n" +" sans condition, la barre est toujours affichée\n" " position: bottom (bas), top (haut), left (gauche) ou right (droite)\n" " taille: taille de la barre (en caractères)\n" "separateur: 1 pour utiliser un séparateur (ligne), 0 ou rien signifie sans " @@ -1618,6 +1639,10 @@ msgstr "" msgid "bar type (root, window, window_active, window_inactive)" msgstr "type de barre (root, window, window_active, window_inactive)" +msgid "condition(s) for displaying bar (for bars of type \"window\")" +msgstr "" +"condition(s) pour afficher la barre (pour les barres de type \"window\")" + msgid "bar position (bottom, top, left, right)" msgstr "" "position de la barre (bottom (bas), top (haut), left (gauche), right " @@ -1626,6 +1651,9 @@ msgstr "" msgid "bar size in chars (0 = auto size)" msgstr "taille de la barre en caractères (0 = taille automatique)" +msgid "max bar size in chars (0 = no limit)" +msgstr "taille max de la barre en caractères (0 = pas de limite)" + msgid "separator line between bar and other bars/windows" msgstr "ligne de séparation entre la barre et les autres barres/fenêtres" @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-04-19 10:27+0200\n" +"POT-Creation-Date: 2008-04-22 18:08+0200\n" "PO-Revision-Date: 2007-10-10 18:07+0200\n" "Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" @@ -119,9 +119,9 @@ msgstr "lefordítva:" msgid "List of bars:" msgstr "Aliaszok listája:\n" -#, c-format -msgid " %d. %s: %s, %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" -msgstr "" +#, fuzzy, c-format +msgid " %d. %s: %s (cond: %s), %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" +msgstr "%s %s%s%s/%s%s%s:%s %s%s%s mellőzése a következő(k)től: %s%s\n" #, fuzzy msgid "height" @@ -158,6 +158,10 @@ msgid "%sError: missing arguments for \"%s\" command" msgstr "%s hiányzó argumentum a \"%s\" parancsnak\n" #, fuzzy, c-format +msgid "%sNot enough memory" +msgstr "Nincs elég memória az új sorhoz\n" + +#, fuzzy, c-format msgid "%sError: wrong type \"%s\" for bar \"%s\"" msgstr "%s rossz argumentum szám a \"%s\" parancsnak\n" @@ -186,6 +190,10 @@ msgid "Bar deleted" msgstr "a felhasználók le lettek tiltva" #, fuzzy, c-format +msgid "%sError: unable to set option \"%s\" for bar \"%s\"" +msgstr "%s ismeretlen opció a \"%s\" parancsnak\n" + +#, fuzzy, c-format msgid "%sError: unknown option for \"%s\" command" msgstr "%s ismeretlen opció a \"%s\" parancsnak\n" @@ -601,16 +609,21 @@ msgid "manage bars" msgstr "pufferek kezelése" msgid "" -"[add barname type position size separator item1,item2,...] | [del barname] | " -"[set barname name|number|position|size|separator|items value] | [list] | " -"[listitems]" +"[add barname type[,cond1,cond2,...] position size separator item1,item2,...] " +"| [del barname] | [set barname name|number|condition|position|size|separator|" +"items value] | [list] | [listitems]" msgstr "" msgid "" " add: add a new bar\n" " barname: name of bar (must be unique)\n" -" type: \"root\" (outside windows), \"window_active\" (inside active " -"window), or \"window_inactive\" (inside each inactive window)\n" +" type: root: outside windows),\n" +" window: inside windows, with optional conditions (see below)\n" +"cond1,...: condition(s) for displaying bar (only for type \"window\"):\n" +" active: on active window\n" +" inactive: on inactive windows\n" +" nicklist: on windows with nicklist\n" +" without condition, bar is always displayed\n" " position: bottom, top, left or right\n" " size: size of bar (in chars)\n" "separator: 1 for using separator (line), 0 or nothing means no separator\n" @@ -1690,6 +1703,9 @@ msgstr "" msgid "bar type (root, window, window_active, window_inactive)" msgstr "" +msgid "condition(s) for displaying bar (for bars of type \"window\")" +msgstr "" + #, fuzzy msgid "bar position (bottom, top, left, right)" msgstr "névlista helye (top, left, right (alapértelmezett), bottom)" @@ -1697,6 +1713,9 @@ msgstr "névlista helye (top, left, right (alapértelmezett), bottom)" msgid "bar size in chars (0 = auto size)" msgstr "" +msgid "max bar size in chars (0 = no limit)" +msgstr "" + #, fuzzy msgid "separator line between bar and other bars/windows" msgstr "a névlista és a beszélgetőablak közti elválasztó" @@ -4765,10 +4784,6 @@ msgstr "%s rossz argumentum a \"%s\" parancsnak\n" #~ msgstr "%s nem sikerült a dátumot/időt meghatározni a \"%s\" parancshoz\n" #, fuzzy -#~ msgid "%s%s%s on %s%s%s %s %s %s%s@%s %s(%s%s%s)" -#~ msgstr "%s %s%s%s/%s%s%s:%s %s%s%s mellőzése a következő(k)től: %s%s\n" - -#, fuzzy #~ msgid "%s%s: command \"%s\" failed" #~ msgstr "%s a \"%s\" parancs végrehajtása sikertelen\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-04-19 10:27+0200\n" +"POT-Creation-Date: 2008-04-22 18:08+0200\n" "PO-Revision-Date: 2007-09-06 12:44+0200\n" "Last-Translator: Pavel Shevchuk <stlwrt@gmail.com>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" @@ -115,9 +115,9 @@ msgstr "собран:" msgid "List of bars:" msgstr "Список сокращений:\n" -#, c-format -msgid " %d. %s: %s, %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" -msgstr "" +#, fuzzy, c-format +msgid " %d. %s: %s (cond: %s), %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" +msgstr "%sна %s%s%s/%s%s%s:%s игнорирует %s%s%s с %s%s\n" #, fuzzy msgid "height" @@ -154,6 +154,10 @@ msgid "%sError: missing arguments for \"%s\" command" msgstr "%s нет аргументов для \"%s\" команды\n" #, fuzzy, c-format +msgid "%sNot enough memory" +msgstr "Недостаточно памяти для новой строчки\n" + +#, fuzzy, c-format msgid "%sError: wrong type \"%s\" for bar \"%s\"" msgstr "%s некорректное количество аргументов команды \"%s\"\n" @@ -182,6 +186,10 @@ msgid "Bar deleted" msgstr "команда users отключена" #, fuzzy, c-format +msgid "%sError: unable to set option \"%s\" for bar \"%s\"" +msgstr "%s неизвестный параметр для команды \"%s\"\n" + +#, fuzzy, c-format msgid "%sError: unknown option for \"%s\" command" msgstr "%s неизвестный параметр для команды \"%s\"\n" @@ -597,16 +605,21 @@ msgid "manage bars" msgstr "управление буферами" msgid "" -"[add barname type position size separator item1,item2,...] | [del barname] | " -"[set barname name|number|position|size|separator|items value] | [list] | " -"[listitems]" +"[add barname type[,cond1,cond2,...] position size separator item1,item2,...] " +"| [del barname] | [set barname name|number|condition|position|size|separator|" +"items value] | [list] | [listitems]" msgstr "" msgid "" " add: add a new bar\n" " barname: name of bar (must be unique)\n" -" type: \"root\" (outside windows), \"window_active\" (inside active " -"window), or \"window_inactive\" (inside each inactive window)\n" +" type: root: outside windows),\n" +" window: inside windows, with optional conditions (see below)\n" +"cond1,...: condition(s) for displaying bar (only for type \"window\"):\n" +" active: on active window\n" +" inactive: on inactive windows\n" +" nicklist: on windows with nicklist\n" +" without condition, bar is always displayed\n" " position: bottom, top, left or right\n" " size: size of bar (in chars)\n" "separator: 1 for using separator (line), 0 or nothing means no separator\n" @@ -1694,6 +1707,9 @@ msgstr "" msgid "bar type (root, window, window_active, window_inactive)" msgstr "" +msgid "condition(s) for displaying bar (for bars of type \"window\")" +msgstr "" + #, fuzzy msgid "bar position (bottom, top, left, right)" msgstr "" @@ -1703,6 +1719,10 @@ msgid "bar size in chars (0 = auto size)" msgstr "" #, fuzzy +msgid "max bar size in chars (0 = no limit)" +msgstr "максимальная длина имён в хотлисте (0=не ограничено)" + +#, fuzzy msgid "separator line between bar and other bars/windows" msgstr "разделитель чата и никлиста" @@ -4749,10 +4769,6 @@ msgstr "%s некорректные аргументы команды \"%s\"\n" #~ msgstr "%s не могу опознать дату/время для команды \"%s\"\n" #, fuzzy -#~ msgid "%s%s%s on %s%s%s %s %s %s%s@%s %s(%s%s%s)" -#~ msgstr "%sна %s%s%s/%s%s%s:%s игнорирует %s%s%s с %s%s\n" - -#, fuzzy #~ msgid "%s%s: command \"%s\" failed" #~ msgstr "%s команда \"%s\" не удалась\n" diff --git a/po/weechat.pot b/po/weechat.pot index b878851c4..a75229382 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2008-04-19 10:27+0200\n" +"POT-Creation-Date: 2008-04-22 18:08+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -94,7 +94,7 @@ msgid "List of bars:" msgstr "" #, c-format -msgid " %d. %s: %s, %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" +msgid " %d. %s: %s (cond: %s), %s, %s: %s%s%d%s, items: %s%s (plugin: %s)" msgstr "" msgid "height" @@ -127,6 +127,10 @@ msgid "%sError: missing arguments for \"%s\" command" msgstr "" #, c-format +msgid "%sNot enough memory" +msgstr "" + +#, c-format msgid "%sError: wrong type \"%s\" for bar \"%s\"" msgstr "" @@ -154,6 +158,10 @@ msgid "Bar deleted" msgstr "" #, c-format +msgid "%sError: unable to set option \"%s\" for bar \"%s\"" +msgstr "" + +#, c-format msgid "%sError: unknown option for \"%s\" command" msgstr "" @@ -521,16 +529,21 @@ msgid "manage bars" msgstr "" msgid "" -"[add barname type position size separator item1,item2,...] | [del barname] | " -"[set barname name|number|position|size|separator|items value] | [list] | " -"[listitems]" +"[add barname type[,cond1,cond2,...] position size separator item1,item2,...] " +"| [del barname] | [set barname name|number|condition|position|size|separator|" +"items value] | [list] | [listitems]" msgstr "" msgid "" " add: add a new bar\n" " barname: name of bar (must be unique)\n" -" type: \"root\" (outside windows), \"window_active\" (inside active " -"window), or \"window_inactive\" (inside each inactive window)\n" +" type: root: outside windows),\n" +" window: inside windows, with optional conditions (see below)\n" +"cond1,...: condition(s) for displaying bar (only for type \"window\"):\n" +" active: on active window\n" +" inactive: on inactive windows\n" +" nicklist: on windows with nicklist\n" +" without condition, bar is always displayed\n" " position: bottom, top, left or right\n" " size: size of bar (in chars)\n" "separator: 1 for using separator (line), 0 or nothing means no separator\n" @@ -1391,12 +1404,18 @@ msgstr "" msgid "bar type (root, window, window_active, window_inactive)" msgstr "" +msgid "condition(s) for displaying bar (for bars of type \"window\")" +msgstr "" + msgid "bar position (bottom, top, left, right)" msgstr "" msgid "bar size in chars (0 = auto size)" msgstr "" +msgid "max bar size in chars (0 = no limit)" +msgstr "" + msgid "separator line between bar and other bars/windows" msgstr "" diff --git a/src/core/wee-command.c b/src/core/wee-command.c index a1d4558b0..a736fc02b 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -66,7 +66,7 @@ command_bar (void *data, struct t_gui_buffer *buffer, { int type, position; long number; - char *error; + char *error, *str_type, *pos_condition; struct t_gui_bar *ptr_bar; struct t_gui_bar_item *ptr_item; @@ -86,10 +86,14 @@ command_bar (void *data, struct t_gui_buffer *buffer, ptr_bar = ptr_bar->next_bar) { gui_chat_printf (NULL, - _(" %d. %s: %s, %s, %s: %s%s%d%s, items: %s%s (plugin: %s)"), + _(" %d. %s: %s (cond: %s), %s, %s: " + "%s%s%d%s, items: %s%s (plugin: %s)"), ptr_bar->number, ptr_bar->name, gui_bar_type_str[CONFIG_INTEGER(ptr_bar->type)], + (CONFIG_STRING(ptr_bar->conditions) + && CONFIG_STRING(ptr_bar->conditions)[0]) ? + CONFIG_STRING(ptr_bar->conditions) : "-", gui_bar_position_str[CONFIG_INTEGER(ptr_bar->position)], ((CONFIG_INTEGER(ptr_bar->position) == GUI_BAR_POSITION_BOTTOM) || (CONFIG_INTEGER(ptr_bar->position) == GUI_BAR_POSITION_TOP)) ? @@ -145,14 +149,32 @@ command_bar (void *data, struct t_gui_buffer *buffer, "bar"); return WEECHAT_RC_ERROR; } - type = gui_bar_search_type (argv[3]); + pos_condition = strchr (argv[3], ','); + if (pos_condition) + { + str_type = string_strndup (argv[3], pos_condition - argv[3]); + pos_condition++; + } + else + { + str_type = strdup (argv[3]); + } + if (!str_type) + { + gui_chat_printf (NULL, + _("%sNot enough memory"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + return WEECHAT_RC_ERROR; + } + type = gui_bar_search_type (str_type); if (type < 0) { gui_chat_printf (NULL, _("%sError: wrong type \"%s\" for bar " "\"%s\""), gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], - argv[3], argv[2]); + str_type, argv[2]); + free (str_type); return WEECHAT_RC_ERROR; } position = gui_bar_search_position (argv[4]); @@ -163,6 +185,7 @@ command_bar (void *data, struct t_gui_buffer *buffer, "\"%s\""), gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], argv[4], argv[2]); + free (str_type); return WEECHAT_RC_ERROR; } error = NULL; @@ -170,8 +193,8 @@ command_bar (void *data, struct t_gui_buffer *buffer, if (error && !error[0]) { /* create bar */ - if (gui_bar_new (NULL, argv[2], argv[3], argv[4], argv[5], - argv[6], argv_eol[7])) + if (gui_bar_new (NULL, argv[2], str_type, pos_condition, argv[4], + argv[5], "0", argv[6], argv_eol[7])) { gui_chat_printf (NULL, _("Bar \"%s\" created"), argv[2]); @@ -191,8 +214,10 @@ command_bar (void *data, struct t_gui_buffer *buffer, "\"%s\""), gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], argv[5], argv[2]); + free (str_type); return WEECHAT_RC_ERROR; } + free (str_type); return WEECHAT_RC_OK; } @@ -245,7 +270,15 @@ command_bar (void *data, struct t_gui_buffer *buffer, argv[2]); return WEECHAT_RC_ERROR; } - gui_bar_set (ptr_bar, argv[3], argv_eol[4]); + if (!gui_bar_set (ptr_bar, argv[3], argv_eol[4])) + { + gui_chat_printf (NULL, + _("%sError: unable to set option \"%s\" for " + "bar \"%s\""), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], + argv[3], argv[2]); + return WEECHAT_RC_ERROR; + } return WEECHAT_RC_OK; } @@ -2331,7 +2364,7 @@ command_window (void *data, struct t_gui_buffer *buffer, /* refresh screen */ if (string_strcasecmp (argv[1], "refresh") == 0) { - gui_window_refresh_screen (1); + gui_window_refresh_needed = 1; return WEECHAT_RC_OK; } @@ -2461,14 +2494,21 @@ command_init () { hook_command (NULL, "bar", N_("manage bars"), - N_("[add barname type position size separator item1,item2,...] " - "| [del barname] | [set barname name|number|position|" - "size|separator|items value] | [list] | [listitems]"), + N_("[add barname type[,cond1,cond2,...] position size " + "separator item1,item2,...] | [del barname] | " + "[set barname name|number|condition|position|size|" + "separator|items value] | [list] | [listitems]"), N_(" add: add a new bar\n" " barname: name of bar (must be unique)\n" - " type: \"root\" (outside windows), \"window_active\" " - "(inside active window), or \"window_inactive\" (inside " - "each inactive window)\n" + " type: root: outside windows),\n" + " window: inside windows, with optional " + "conditions (see below)\n" + "cond1,...: condition(s) for displaying bar (only for " + "type \"window\"):\n" + " active: on active window\n" + " inactive: on inactive windows\n" + " nicklist: on windows with nicklist\n" + " without condition, bar is always displayed\n" " position: bottom, top, left or right\n" " size: size of bar (in chars)\n" "separator: 1 for using separator (line), 0 or nothing " @@ -2478,8 +2518,8 @@ command_init () " set: set a value for a bar property\n" " list: list all bars\n" "listitems: list all bar items"), - "add|del|set|list|listitems %r name|number|position|size|" - "separator|items", + "add|del|set|list|listitems %r name|number|conditions|" + "position|size|separator|items", &command_bar, NULL); hook_command (NULL, "buffer", N_("manage buffers"), diff --git a/src/core/wee-config.c b/src/core/wee-config.c index 6a48ccaa1..77c15fdff 100644 --- a/src/core/wee-config.c +++ b/src/core/wee-config.c @@ -594,12 +594,18 @@ config_weechat_bar_read (void *data, struct t_config_file *config_file, case GUI_BAR_OPTION_TYPE: ptr_temp_bar->type = ptr_option; break; + case GUI_BAR_OPTION_CONDITIONS: + ptr_temp_bar->conditions = ptr_option; + break; case GUI_BAR_OPTION_POSITION: ptr_temp_bar->position = ptr_option; break; case GUI_BAR_OPTION_SIZE: ptr_temp_bar->size = ptr_option; break; + case GUI_BAR_OPTION_SIZE_MAX: + ptr_temp_bar->size_max = ptr_option; + break; case GUI_BAR_OPTION_SEPARATOR: ptr_temp_bar->separator = ptr_option; break; @@ -620,36 +626,6 @@ config_weechat_bar_read (void *data, struct t_config_file *config_file, } /* - * config_weechat_bar_write: write bar section in configuration file - * Return: 0 = successful - * -1 = write error - */ - -void -config_weechat_bar_write (void *data, struct t_config_file *config_file, - char *section_name) -{ - struct t_gui_bar *ptr_bar; - - /* make C compiler happy */ - (void) data; - - config_file_write_line (config_file, section_name, NULL); - - for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) - { - config_file_write_line (config_file, - ptr_bar->name, - "%s;%s;%d;%d;%s", - gui_bar_type_str[CONFIG_INTEGER(ptr_bar->type)], - gui_bar_position_str[CONFIG_INTEGER(ptr_bar->position)], - CONFIG_INTEGER(ptr_bar->size), - CONFIG_INTEGER(ptr_bar->separator), - CONFIG_STRING(ptr_bar->items)); - } -} - -/* * config_weechat_filter_read: read filter option from config file * return 1 if ok, 0 if error */ diff --git a/src/gui/curses/gui-curses-bar.c b/src/gui/curses/gui-curses-bar.c index dfdeee58b..bc8eeb052 100644 --- a/src/gui/curses/gui-curses-bar.c +++ b/src/gui/curses/gui-curses-bar.c @@ -304,15 +304,8 @@ gui_bar_window_new (struct t_gui_bar *bar, struct t_gui_window *window) if (window) { - /* bar is type "window_active" and window is not active */ - if ((CONFIG_INTEGER(bar->type) == GUI_BAR_TYPE_WINDOW_ACTIVE) - && gui_current_window - && (gui_current_window != window)) - return 1; - - /* bar is type "window_inactive" and window is active */ - if ((CONFIG_INTEGER(bar->type) == GUI_BAR_TYPE_WINDOW_INACTIVE) - && (!gui_current_window || (gui_current_window == window))) + if ((CONFIG_INTEGER(bar->type) == GUI_BAR_TYPE_WINDOW) + && (!gui_bar_check_conditions_for_window (bar, window))) return 1; } @@ -488,10 +481,8 @@ gui_bar_window_remove_unused_bars (struct t_gui_window *window) { next_bar_win = ptr_bar_win->next_bar_window; - if (((CONFIG_INTEGER(ptr_bar_win->bar->type) == GUI_BAR_TYPE_WINDOW_ACTIVE) - && (window != gui_current_window)) - || ((CONFIG_INTEGER(ptr_bar_win->bar->type) == GUI_BAR_TYPE_WINDOW_INACTIVE) - && (window == gui_current_window))) + if ((CONFIG_INTEGER(ptr_bar_win->bar->type) == GUI_BAR_TYPE_WINDOW) + && (!gui_bar_check_conditions_for_window (ptr_bar_win->bar, window))) { gui_bar_window_free (ptr_bar_win, window); rc = 1; @@ -519,10 +510,8 @@ gui_bar_window_add_missing_bars (struct t_gui_window *window) for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { - if (((CONFIG_INTEGER(ptr_bar->type) == GUI_BAR_TYPE_WINDOW_ACTIVE) - && (window == gui_current_window)) - || ((CONFIG_INTEGER(ptr_bar->type) == GUI_BAR_TYPE_WINDOW_INACTIVE) - && (window != gui_current_window))) + if ((CONFIG_INTEGER(ptr_bar->type) == GUI_BAR_TYPE_WINDOW) + && gui_bar_check_conditions_for_window (ptr_bar, window)) { if (!gui_bar_window_search_bar (window, ptr_bar)) { diff --git a/src/gui/curses/gui-curses-chat.c b/src/gui/curses/gui-curses-chat.c index 02fcb8fe9..98ea32fd1 100644 --- a/src/gui/curses/gui-curses-chat.c +++ b/src/gui/curses/gui-curses-chat.c @@ -317,6 +317,8 @@ gui_chat_draw_title (struct t_gui_buffer *buffer, int erase) if (title_decoded) free (title_decoded); + + buffer->title_refresh_needed = 0; } /* @@ -1276,6 +1278,8 @@ gui_chat_draw (struct t_gui_buffer *buffer, int erase) ptr_line->refresh_needed = 0; } } + + buffer->chat_refresh_needed = 0; } /* diff --git a/src/gui/curses/gui-curses-input.c b/src/gui/curses/gui-curses-input.c index 9787f4cb8..8a871e19a 100644 --- a/src/gui/curses/gui-curses-input.c +++ b/src/gui/curses/gui-curses-input.c @@ -423,4 +423,6 @@ gui_input_draw (struct t_gui_buffer *buffer, int erase) refresh (); } } + + buffer->input_refresh_needed = 0; } diff --git a/src/gui/curses/gui-curses-main.c b/src/gui/curses/gui-curses-main.c index 282a482ba..915d6388f 100644 --- a/src/gui/curses/gui-curses-main.c +++ b/src/gui/curses/gui-curses-main.c @@ -206,14 +206,11 @@ gui_main_loop () /* refresh window if needed */ if (gui_window_refresh_needed) - gui_window_refresh_screen (0); + gui_window_refresh_screen (); /* refresh status bar if needed */ if (gui_status_refresh_needed) - { gui_status_draw (1); - gui_status_refresh_needed = 0; - } for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window) { @@ -230,29 +227,22 @@ gui_main_loop () { /* refresh title if needed */ if (ptr_buffer->title_refresh_needed) - { gui_chat_draw_title (ptr_buffer, 1); - ptr_buffer->title_refresh_needed = 0; - } + /* refresh chat if needed */ if (ptr_buffer->chat_refresh_needed) { gui_chat_draw (ptr_buffer, (ptr_buffer->chat_refresh_needed) > 1 ? 1 : 0); - ptr_buffer->chat_refresh_needed = 0; } + /* refresh nicklist if needed */ if (ptr_buffer->nicklist_refresh_needed) - { gui_nicklist_draw (ptr_buffer, 1); - ptr_buffer->nicklist_refresh_needed = 0; - } + /* refresh input if needed */ if (ptr_buffer->input_refresh_needed) - { gui_input_draw (ptr_buffer, 1); - ptr_buffer->input_refresh_needed = 0; - } } /* wait for keyboard or network activity */ diff --git a/src/gui/curses/gui-curses-nicklist.c b/src/gui/curses/gui-curses-nicklist.c index e56c07336..1ac90ae6a 100644 --- a/src/gui/curses/gui-curses-nicklist.c +++ b/src/gui/curses/gui-curses-nicklist.c @@ -316,4 +316,6 @@ gui_nicklist_draw (struct t_gui_buffer *buffer, int erase) refresh (); } } + + buffer->nicklist_refresh_needed = 0; } diff --git a/src/gui/curses/gui-curses-status.c b/src/gui/curses/gui-curses-status.c index 87cbb7805..93125d639 100644 --- a/src/gui/curses/gui-curses-status.c +++ b/src/gui/curses/gui-curses-status.c @@ -249,4 +249,6 @@ gui_status_draw (int erase) wnoutrefresh (GUI_CURSES(ptr_win)->win_status); refresh (); } + + gui_status_refresh_needed = 0; } diff --git a/src/gui/curses/gui-curses-window.c b/src/gui/curses/gui-curses-window.c index 0b56b7b1a..68207c6d5 100644 --- a/src/gui/curses/gui-curses-window.c +++ b/src/gui/curses/gui-curses-window.c @@ -502,40 +502,6 @@ gui_window_redraw_all_buffers () } /* - * gui_window_switch: switch to another window - */ - -void -gui_window_switch (struct t_gui_window *window) -{ - struct t_gui_window *old_window; - int changes; - - if (gui_current_window == window) - return; - - old_window = gui_current_window; - - gui_current_window = window; - changes = gui_bar_window_remove_unused_bars (old_window) - || gui_bar_window_add_missing_bars (old_window); - if (changes) - { - gui_current_window = old_window; - gui_window_switch_to_buffer (gui_current_window, - gui_current_window->buffer); - gui_current_window = window; - } - - gui_bar_window_remove_unused_bars (gui_current_window); - gui_bar_window_add_missing_bars (gui_current_window); - gui_window_switch_to_buffer (gui_current_window, - gui_current_window->buffer); - - gui_window_redraw_buffer (gui_current_window->buffer); -} - -/* * gui_window_switch_to_buffer: switch to another buffer in a window */ @@ -544,6 +510,7 @@ gui_window_switch_to_buffer (struct t_gui_window *window, struct t_gui_buffer *buffer) { struct t_gui_bar_window *ptr_bar_win; + struct t_gui_buffer *old_buffer; if (!gui_ok) return; @@ -551,6 +518,8 @@ gui_window_switch_to_buffer (struct t_gui_window *window, if (window->buffer->num_displayed > 0) window->buffer->num_displayed--; + old_buffer = window->buffer; + if (window->buffer != buffer) { window->start_line = NULL; @@ -565,8 +534,14 @@ gui_window_switch_to_buffer (struct t_gui_window *window, window->win_title_start = 0; window->win_nick_start = 0; + if (old_buffer == buffer) + { + gui_bar_window_remove_unused_bars (window); + gui_bar_window_add_missing_bars (window); + } + gui_window_calculate_pos_size (window, 1); - + /* create bar windows */ for (ptr_bar_win = GUI_CURSES(window)->bar_windows; ptr_bar_win; ptr_bar_win = ptr_bar_win->next_bar_window) @@ -624,6 +599,12 @@ gui_window_switch_to_buffer (struct t_gui_window *window, buffer->num_displayed++; gui_hotlist_remove_buffer (buffer); + + if (buffer != old_buffer) + { + gui_bar_window_remove_unused_bars (window); + gui_bar_window_add_missing_bars (window); + } /* redraw bars in window */ for (ptr_bar_win = GUI_CURSES(window)->bar_windows; ptr_bar_win; @@ -637,6 +618,38 @@ gui_window_switch_to_buffer (struct t_gui_window *window, } /* + * gui_window_switch: switch to another window + */ + +void +gui_window_switch (struct t_gui_window *window) +{ + struct t_gui_window *old_window; + int changes; + + if (gui_current_window == window) + return; + + old_window = gui_current_window; + + gui_current_window = window; + changes = gui_bar_window_remove_unused_bars (old_window) + || gui_bar_window_add_missing_bars (old_window); + if (changes) + { + gui_current_window = old_window; + gui_window_switch_to_buffer (gui_current_window, + gui_current_window->buffer); + gui_current_window = window; + } + + gui_window_switch_to_buffer (gui_current_window, + gui_current_window->buffer); + + gui_window_redraw_buffer (gui_current_window->buffer); +} + +/* * gui_window_page_up: display previous page on buffer */ @@ -1548,29 +1561,25 @@ gui_window_switch_right (struct t_gui_window *window) */ void -gui_window_refresh_screen (int force) +gui_window_refresh_screen () { int new_height, new_width; - if (force || (gui_window_refresh_needed == 1)) + endwin (); + refresh (); + + getmaxyx (stdscr, new_height, new_width); + + gui_ok = ((new_width >= GUI_WINDOW_MIN_WIDTH) + && (new_height >= GUI_WINDOW_MIN_HEIGHT)); + + if (gui_ok) { - endwin (); refresh (); - - getmaxyx (stdscr, new_height, new_width); - - gui_ok = ((new_width >= GUI_WINDOW_MIN_WIDTH) - && (new_height >= GUI_WINDOW_MIN_HEIGHT)); - - if (gui_ok) - { - refresh (); - gui_window_refresh_windows (); - } + gui_window_refresh_windows (); } - if (gui_window_refresh_needed > 0) - gui_window_refresh_needed = 0; + gui_window_refresh_needed = 0; } /* @@ -1581,7 +1590,6 @@ void gui_window_refresh_screen_sigwinch () { gui_window_refresh_needed = 1; - //gui_window_refresh_screen (0); } /* diff --git a/src/gui/gtk/gui-gtk-bar.c b/src/gui/gtk/gui-gtk-bar.c index 59b5a5b58..7425401a9 100644 --- a/src/gui/gtk/gui-gtk-bar.c +++ b/src/gui/gtk/gui-gtk-bar.c @@ -208,11 +208,9 @@ gui_bar_window_remove_unused_bars (struct t_gui_window *window) while (ptr_bar_win) { next_bar_win = ptr_bar_win->next_bar_window; - - if (((CONFIG_INTEGER(ptr_bar_win->bar->type) == GUI_BAR_TYPE_WINDOW_ACTIVE) - && (window != gui_current_window)) - || ((CONFIG_INTEGER(ptr_bar_win->bar->type) == GUI_BAR_TYPE_WINDOW_INACTIVE) - && (window == gui_current_window))) + + if ((CONFIG_INTEGER(ptr_bar_win->bar->type) == GUI_BAR_TYPE_WINDOW) + && (!gui_bar_check_conditions_for_window (ptr_bar_win->bar, window))) { gui_bar_window_free (ptr_bar_win, window); rc = 1; @@ -240,10 +238,8 @@ gui_bar_window_add_missing_bars (struct t_gui_window *window) for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { - if (((CONFIG_INTEGER(ptr_bar->type) == GUI_BAR_TYPE_WINDOW_ACTIVE) - && (window == gui_current_window)) - || ((CONFIG_INTEGER(ptr_bar->type) == GUI_BAR_TYPE_WINDOW_INACTIVE) - && (window != gui_current_window))) + if ((CONFIG_INTEGER(ptr_bar->type) == GUI_BAR_TYPE_WINDOW) + && gui_bar_check_conditions_for_window (ptr_bar, window)) { if (!gui_bar_window_search_bar (window, ptr_bar)) { diff --git a/src/gui/gui-bar.c b/src/gui/gui-bar.c index cfb0d78ae..5f995a213 100644 --- a/src/gui/gui-bar.c +++ b/src/gui/gui-bar.c @@ -32,14 +32,15 @@ #include "../core/wee-log.h" #include "../core/wee-string.h" #include "gui-bar.h" +#include "gui-buffer.h" #include "gui-chat.h" #include "gui-window.h" char *gui_bar_option_str[GUI_BAR_NUM_OPTIONS] = -{ "type", "position", "size", "separator", "items" }; +{ "type", "conditions", "position", "size", "size_max", "separator", "items" }; char *gui_bar_type_str[GUI_BAR_NUM_TYPES] = -{ "root", "window", "window_active", "window_inactive" }; +{ "root", "window" }; char *gui_bar_position_str[GUI_BAR_NUM_POSITIONS] = { "bottom", "top", "left", "right" }; @@ -115,6 +116,40 @@ gui_bar_search_position (char *position) } /* + * gui_bar_check_conditions_for_window: return 1 if bar should be displayed in + * this window, according to condition(s) + * on bar + */ + +int +gui_bar_check_conditions_for_window (struct t_gui_bar *bar, + struct t_gui_window *window) +{ + int i; + + for (i = 0; i < bar->conditions_count; i++) + { + if (string_strcasecmp (bar->conditions_array[i], "active") == 0) + { + if (gui_current_window && (gui_current_window != window)) + return 0; + } + else if (string_strcasecmp (bar->conditions_array[i], "inactive") == 0) + { + if (!gui_current_window || (gui_current_window == window)) + return 0; + } + else if (string_strcasecmp (bar->conditions_array[i], "nicklist") == 0) + { + if (window->buffer && !window->buffer->nicklist) + return 0; + } + } + + return 1; +} + +/* * gui_bar_root_get_size: get total bar size ("root" type) for a position */ @@ -255,6 +290,40 @@ gui_bar_config_check_type (void *data, struct t_config_option *option, } /* + * gui_bar_config_change_conditions: callback when conditions is changed + */ + +void +gui_bar_config_change_conditions (void *data, struct t_config_option *option) +{ + struct t_gui_bar *ptr_bar; + + /* make C compiler happy */ + (void) data; + + ptr_bar = gui_bar_search_with_option_name (option->name); + if (ptr_bar) + { + if (ptr_bar->conditions_array) + string_free_exploded (ptr_bar->conditions_array); + + if (CONFIG_STRING(ptr_bar->conditions) && CONFIG_STRING(ptr_bar->conditions)[0]) + { + ptr_bar->conditions_array = string_explode (CONFIG_STRING(ptr_bar->conditions), + ",", 0, 0, + &ptr_bar->conditions_count); + } + else + { + ptr_bar->conditions_count = 0; + ptr_bar->conditions_array = NULL; + } + } + + gui_window_refresh_needed = 1; +} + +/* * gui_bar_config_change_position: callback when position is changed */ @@ -306,7 +375,6 @@ gui_bar_config_check_size (void *data, struct t_config_option *option, return 0; } - /* * gui_bar_config_change_size: callback when size is changed */ @@ -329,6 +397,31 @@ gui_bar_config_change_size (void *data, struct t_config_option *option) } /* + * gui_bar_config_change_size_max: callback when max size is changed + */ + +void +gui_bar_config_change_size_max (void *data, struct t_config_option *option) +{ + struct t_gui_bar *ptr_bar; + + /* make C compiler happy */ + (void) data; + + ptr_bar = gui_bar_search_with_option_name (option->name); + if (ptr_bar) + { + if ((CONFIG_INTEGER(ptr_bar->size_max) > 0) + && (ptr_bar->current_size > CONFIG_INTEGER(ptr_bar->size_max))) + { + gui_bar_set_current_size (ptr_bar, + CONFIG_INTEGER(ptr_bar->size_max)); + } + gui_window_refresh_needed = 1; + } +} + +/* * gui_bar_config_change_separator: callback when separator is changed */ @@ -398,10 +491,14 @@ gui_bar_set_name (struct t_gui_bar *bar, char *name) { snprintf (option_name, length, "%s.type", name); config_file_option_rename (bar->type, option_name); + snprintf (option_name, length, "%s.conditions", name); + config_file_option_rename (bar->conditions, option_name); snprintf (option_name, length, "%s.position", name); config_file_option_rename (bar->position, option_name); snprintf (option_name, length, "%s.size", name); config_file_option_rename (bar->size, option_name); + snprintf (option_name, length, "%s.size_max", name); + config_file_option_rename (bar->size_max, option_name); snprintf (option_name, length, "%s.separator", name); config_file_option_rename (bar->separator, option_name); snprintf (option_name, length, "%s.items", name); @@ -535,6 +632,10 @@ gui_bar_set_current_size (struct t_gui_bar *bar, int current_size) if (current_size == 0) current_size = 1; + if ((CONFIG_INTEGER(bar->size_max) > 0) + && (current_size > CONFIG_INTEGER(bar->size_max))) + current_size = CONFIG_INTEGER(bar->size_max); + /* check if new size is ok if it's more than before */ if (current_size > bar->current_size && !gui_bar_check_size_add (bar, current_size - bar->current_size)) @@ -584,48 +685,50 @@ gui_bar_set_size (struct t_gui_bar *bar, char *size) } /* - * gui_bar_set_items: set items for a bar + * gui_bar_set_size_max: set max size for a bar */ void -gui_bar_set_items (struct t_gui_bar *bar, char *items) +gui_bar_set_size_max (struct t_gui_bar *bar, char *size) { - config_file_option_set (bar->items, items, 1); - - if (bar->items_array) - string_free_exploded (bar->items_array); + long number; + char *error, value[32]; - if (CONFIG_STRING(bar->items) && CONFIG_STRING(bar->items)[0]) - { - bar->items_array = string_explode (CONFIG_STRING(bar->items), - ",", 0, 0, - &bar->items_count); - } - else + error = NULL; + number = strtol (size, &error, 10); + if (error && !error[0]) { - bar->items_count = 0; - bar->items_array = NULL; + if (number < 0) + return; + + snprintf (value, sizeof (value), "%ld", number); + config_file_option_set (bar->size_max, value, 1); + + if ((number > 0) && (number < bar->current_size)) + gui_bar_set_size (bar, value); } } /* * gui_bar_set: set a property for bar + * return: 1 if ok, 0 if error */ -void +int gui_bar_set (struct t_gui_bar *bar, char *property, char *value) { long number; char *error; if (!bar || !property || !value) - return; + return 0; if (string_strcasecmp (property, "name") == 0) { gui_bar_set_name (bar, value); + return 1; } - if (string_strcasecmp (property, "number") == 0) + else if (string_strcasecmp (property, "number") == 0) { error = NULL; number = strtol (value, &error, 10); @@ -634,16 +737,31 @@ gui_bar_set (struct t_gui_bar *bar, char *property, char *value) gui_bar_set_number (bar, number); gui_window_refresh_needed = 1; } + return 1; + } + else if (string_strcasecmp (property, "conditions") == 0) + { + config_file_option_set (bar->conditions, value, 1); + gui_window_refresh_needed = 1; + return 1; } else if (string_strcasecmp (property, "position") == 0) { gui_bar_set_position (bar, value); gui_bar_refresh (bar); + return 1; } else if (string_strcasecmp (property, "size") == 0) { gui_bar_set_size (bar, value); gui_bar_refresh (bar); + return 1; + } + else if (string_strcasecmp (property, "size_max") == 0) + { + gui_bar_set_size_max (bar, value); + gui_bar_refresh (bar); + return 1; } else if (string_strcasecmp (property, "separator") == 0) { @@ -651,12 +769,16 @@ gui_bar_set (struct t_gui_bar *bar, char *property, char *value) (strcmp (value, "1") == 0) ? "on" : "off", 1); gui_bar_refresh (bar); + return 1; } else if (string_strcasecmp (property, "items") == 0) { - gui_bar_set_items (bar, value); + config_file_option_set (bar->items, value, 1); gui_bar_draw (bar); + return 1; } + + return 0; } /* @@ -675,11 +797,15 @@ gui_bar_alloc (char *name) new_bar->number = 0; new_bar->name = strdup (name); new_bar->type = NULL; + new_bar->conditions = NULL; new_bar->position = NULL; new_bar->size = NULL; + new_bar->size_max = NULL; new_bar->separator = NULL; new_bar->items = NULL; new_bar->current_size = 1; + new_bar->conditions_count = 0; + new_bar->conditions_array = NULL; new_bar->items_count = 0; new_bar->items_array = NULL; new_bar->bar_window = NULL; @@ -720,6 +846,15 @@ gui_bar_create_option (char *bar_name, int index_option, char *value) "root|window|window_active|window_inactive", 0, 0, value, &gui_bar_config_check_type, NULL, NULL, NULL, NULL, NULL); break; + case GUI_BAR_OPTION_CONDITIONS: + ptr_option = config_file_new_option ( + weechat_config_file, weechat_config_section_bar, + option_name, "string", + N_("condition(s) for displaying bar (for bars of type " + "\"window\")"), + NULL, 0, 0, value, + NULL, NULL, &gui_bar_config_change_conditions, NULL, NULL, NULL); + break; case GUI_BAR_OPTION_POSITION: ptr_option = config_file_new_option ( weechat_config_file, weechat_config_section_bar, @@ -738,6 +873,16 @@ gui_bar_create_option (char *bar_name, int index_option, char *value) &gui_bar_config_change_size, NULL, NULL, NULL); break; + case GUI_BAR_OPTION_SIZE_MAX: + ptr_option = config_file_new_option ( + weechat_config_file, weechat_config_section_bar, + option_name, "integer", + N_("max bar size in chars (0 = no limit)"), + NULL, 0, INT_MAX, value, + NULL, NULL, + &gui_bar_config_change_size_max, NULL, + NULL, NULL); + break; case GUI_BAR_OPTION_SEPARATOR: ptr_option = config_file_new_option ( weechat_config_file, weechat_config_section_bar, @@ -769,8 +914,10 @@ gui_bar_create_option (char *bar_name, int index_option, char *value) struct t_gui_bar * gui_bar_new_with_options (struct t_weechat_plugin *plugin, char *name, struct t_config_option *type, + struct t_config_option *conditions, struct t_config_option *position, struct t_config_option *size, + struct t_config_option *size_max, struct t_config_option *separator, struct t_config_option *items) { @@ -784,10 +931,23 @@ gui_bar_new_with_options (struct t_weechat_plugin *plugin, char *name, new_bar->plugin = plugin; new_bar->number = (last_gui_bar) ? last_gui_bar->number + 1 : 1; new_bar->type = type; + new_bar->conditions = conditions; + if (CONFIG_STRING(conditions) && CONFIG_STRING(conditions)[0]) + { + new_bar->conditions_array = string_explode (CONFIG_STRING(conditions), + ",", 0, 0, + &new_bar->conditions_count); + } + else + { + new_bar->conditions_count = 0; + new_bar->conditions_array = NULL; + } new_bar->position = position; new_bar->size = size; new_bar->current_size = (CONFIG_INTEGER(size) == 0) ? 1 : CONFIG_INTEGER(size); + new_bar->size_max = size_max; new_bar->separator = separator; new_bar->items = items; if (CONFIG_STRING(items) && CONFIG_STRING(items)[0]) @@ -839,11 +999,12 @@ gui_bar_new_with_options (struct t_weechat_plugin *plugin, char *name, struct t_gui_bar * gui_bar_new (struct t_weechat_plugin *plugin, char *name, - char *type, char *position, char *size, char *separators, - char *items) + char *type, char *conditions, char *position, char *size, + char *size_max, char *separators, char *items) { - struct t_config_option *option_type, *option_position, *option_size; - struct t_config_option *option_separator, *option_items; + struct t_config_option *option_type, *option_conditions, *option_position; + struct t_config_option *option_size, *option_size_max, *option_separator; + struct t_config_option *option_items; struct t_gui_bar *new_bar; if (!name || !name[0]) @@ -863,26 +1024,35 @@ gui_bar_new (struct t_weechat_plugin *plugin, char *name, option_type = gui_bar_create_option (name, GUI_BAR_OPTION_TYPE, type); + option_conditions = gui_bar_create_option (name, GUI_BAR_OPTION_CONDITIONS, + conditions); option_position = gui_bar_create_option (name, GUI_BAR_OPTION_POSITION, position); option_size = gui_bar_create_option (name, GUI_BAR_OPTION_SIZE, size); + option_size_max = gui_bar_create_option (name, GUI_BAR_OPTION_SIZE_MAX, + size_max); option_separator = gui_bar_create_option (name, GUI_BAR_OPTION_SEPARATOR, (config_file_string_to_boolean (separators)) ? "on" : "off"); option_items = gui_bar_create_option (name, GUI_BAR_OPTION_ITEMS, items); new_bar = gui_bar_new_with_options (plugin, name, option_type, - option_position, option_size, + option_conditions, option_position, + option_size, option_size_max, option_separator, option_items); if (!new_bar) { if (option_type) config_file_option_free (option_type); + if (option_conditions) + config_file_option_free (option_conditions); if (option_position) config_file_option_free (option_position); if (option_size) config_file_option_free (option_size); + if (option_size_max) + config_file_option_free (option_size_max); if (option_separator) config_file_option_free (option_separator); if (option_items) @@ -904,14 +1074,51 @@ gui_bar_use_temp_bars () for (ptr_temp_bar = gui_temp_bars; ptr_temp_bar; ptr_temp_bar = ptr_temp_bar->next_bar) { - if (ptr_temp_bar->type && ptr_temp_bar->position - && ptr_temp_bar->size && ptr_temp_bar->separator + if (!ptr_temp_bar->type) + ptr_temp_bar->type = gui_bar_create_option (ptr_temp_bar->name, + GUI_BAR_OPTION_TYPE, + "0"); + if (!ptr_temp_bar->conditions) + ptr_temp_bar->conditions = gui_bar_create_option (ptr_temp_bar->name, + GUI_BAR_OPTION_CONDITIONS, + ""); + + if (!ptr_temp_bar->position) + ptr_temp_bar->position = gui_bar_create_option (ptr_temp_bar->name, + GUI_BAR_OPTION_POSITION, + "top"); + + if (!ptr_temp_bar->size) + ptr_temp_bar->size = gui_bar_create_option (ptr_temp_bar->name, + GUI_BAR_OPTION_SIZE, + "0"); + + if (!ptr_temp_bar->size_max) + ptr_temp_bar->size_max = gui_bar_create_option (ptr_temp_bar->name, + GUI_BAR_OPTION_SIZE_MAX, + "0"); + + if (!ptr_temp_bar->separator) + ptr_temp_bar->separator = gui_bar_create_option (ptr_temp_bar->name, + GUI_BAR_OPTION_SEPARATOR, + "off"); + + if (!ptr_temp_bar->items) + ptr_temp_bar->items = gui_bar_create_option (ptr_temp_bar->name, + GUI_BAR_OPTION_ITEMS, + ""); + + if (ptr_temp_bar->type && ptr_temp_bar->conditions + && ptr_temp_bar->position && ptr_temp_bar->size + && ptr_temp_bar->size_max && ptr_temp_bar->separator && ptr_temp_bar->items) { gui_bar_new_with_options (NULL, ptr_temp_bar->name, ptr_temp_bar->type, + ptr_temp_bar->conditions, ptr_temp_bar->position, ptr_temp_bar->size, + ptr_temp_bar->size_max, ptr_temp_bar->separator, ptr_temp_bar->items); } @@ -922,6 +1129,11 @@ gui_bar_use_temp_bars () config_file_option_free (ptr_temp_bar->type); ptr_temp_bar->type = NULL; } + if (ptr_temp_bar->conditions) + { + config_file_option_free (ptr_temp_bar->conditions); + ptr_temp_bar->conditions = NULL; + } if (ptr_temp_bar->position) { config_file_option_free (ptr_temp_bar->position); @@ -932,6 +1144,11 @@ gui_bar_use_temp_bars () config_file_option_free (ptr_temp_bar->size); ptr_temp_bar->size = NULL; } + if (ptr_temp_bar->size_max) + { + config_file_option_free (ptr_temp_bar->size_max); + ptr_temp_bar->size_max = NULL; + } if (ptr_temp_bar->separator) { config_file_option_free (ptr_temp_bar->separator); @@ -1006,14 +1223,20 @@ gui_bar_free (struct t_gui_bar *bar) free (bar->name); if (bar->type) config_file_option_free (bar->type); + if (bar->conditions) + config_file_option_free (bar->conditions); if (bar->position) config_file_option_free (bar->position); if (bar->size) config_file_option_free (bar->size); + if (bar->size_max) + config_file_option_free (bar->size_max); if (bar->separator) config_file_option_free (bar->separator); if (bar->items) config_file_option_free (bar->items); + if (bar->conditions_array) + string_free_exploded (bar->conditions_array); if (bar->items_array) string_free_exploded (bar->items_array); @@ -1073,10 +1296,14 @@ gui_bar_print_log () log_printf (" type . . . . . . . . . : %d (%s)", CONFIG_INTEGER(ptr_bar->type), gui_bar_type_str[CONFIG_INTEGER(ptr_bar->type)]); + log_printf (" conditions . . . . . . : '%s'", CONFIG_STRING(ptr_bar->conditions)); + log_printf (" conditions_count . . . : %d", ptr_bar->conditions_count); + log_printf (" conditions_array . . . : 0x%x", ptr_bar->conditions_array); log_printf (" position . . . . . . . : %d (%s)", CONFIG_INTEGER(ptr_bar->position), gui_bar_position_str[CONFIG_INTEGER(ptr_bar->position)]); log_printf (" size . . . . . . . . . : %d", CONFIG_INTEGER(ptr_bar->size)); + log_printf (" size_max . . . . . . . : %d", CONFIG_INTEGER(ptr_bar->size_max)); log_printf (" current_size . . . . . : %d", ptr_bar->current_size); log_printf (" separator. . . . . . . : %d", CONFIG_INTEGER(ptr_bar->separator)); log_printf (" items. . . . . . . . . : '%s'", CONFIG_STRING(ptr_bar->items)); diff --git a/src/gui/gui-bar.h b/src/gui/gui-bar.h index 5397961c5..4cdc91c07 100644 --- a/src/gui/gui-bar.h +++ b/src/gui/gui-bar.h @@ -26,8 +26,10 @@ struct t_gui_window; enum t_gui_bar_option { GUI_BAR_OPTION_TYPE = 0, + GUI_BAR_OPTION_CONDITIONS, GUI_BAR_OPTION_POSITION, GUI_BAR_OPTION_SIZE, + GUI_BAR_OPTION_SIZE_MAX, GUI_BAR_OPTION_SEPARATOR, GUI_BAR_OPTION_ITEMS, /* number of bar types */ @@ -38,8 +40,6 @@ enum t_gui_bar_type { GUI_BAR_TYPE_ROOT = 0, GUI_BAR_TYPE_WINDOW, - GUI_BAR_TYPE_WINDOW_ACTIVE, - GUI_BAR_TYPE_WINDOW_INACTIVE, /* number of bar types */ GUI_BAR_NUM_TYPES, }; @@ -57,17 +57,21 @@ enum t_gui_bar_position struct t_gui_bar { /* user choices */ - struct t_weechat_plugin *plugin; /* plugin */ - int number; /* bar number */ - char *name; /* bar name */ - struct t_config_option *type; /* type (root or window) */ - struct t_config_option *position; /* bottom, top, left, right */ - struct t_config_option *size; /* size of bar (in chars, 0 = auto) */ - struct t_config_option *separator; /* true if separator line displayed */ - struct t_config_option *items; /* bar items */ + struct t_weechat_plugin *plugin; /* plugin */ + int number; /* bar number */ + char *name; /* bar name */ + struct t_config_option *type; /* type (root or window) */ + struct t_config_option *conditions; /* conditions for display */ + struct t_config_option *position; /* bottom, top, left, right */ + struct t_config_option *size; /* size of bar (in chars, 0 = auto) */ + struct t_config_option *size_max; /* max size of bar (0 = no limit) */ + struct t_config_option *separator; /* true if separator line displayed */ + struct t_config_option *items; /* bar items */ /* internal vars */ int current_size; /* current bar size (strictly > 0) */ + int conditions_count; /* number of conditions */ + char **conditions_array; /* exploded bar conditions */ int items_count; /* number of bar items */ char **items_array; /* exploded bar items */ struct t_gui_bar_window *bar_window; /* pointer to bar window */ @@ -90,18 +94,22 @@ extern struct t_gui_bar *last_gui_temp_bar; extern int gui_bar_search_option (char *option_name); extern int gui_bar_search_type (char *type); extern int gui_bar_search_position (char *position); +extern int gui_bar_check_conditions_for_window (struct t_gui_bar *bar, + struct t_gui_window *window); extern int gui_bar_root_get_size (struct t_gui_bar *bar, enum t_gui_bar_position position); extern struct t_gui_bar *gui_bar_search (char *name); extern void gui_bar_set_current_size (struct t_gui_bar *bar, int current_size); -extern void gui_bar_set (struct t_gui_bar *bar, char *property, char *value); +extern int gui_bar_set (struct t_gui_bar *bar, char *property, char *value); extern struct t_gui_bar *gui_bar_alloc (char *name); extern struct t_config_option *gui_bar_create_option (char *bar_name, int index_option, char *value); extern struct t_gui_bar *gui_bar_new (struct t_weechat_plugin *plugin, - char *name, char *type, char *position, - char *size, char *separator, char *items); + char *name, char *type, char *conditions, + char *position, char *size, + char *size_max, char *separator, + char *items); extern void gui_bar_use_temp_bars (); extern void gui_bar_update (char *name); extern void gui_bar_free (struct t_gui_bar *bar); diff --git a/src/gui/gui-window.h b/src/gui/gui-window.h index 23dc4cebf..9215f748b 100644 --- a/src/gui/gui-window.h +++ b/src/gui/gui-window.h @@ -158,9 +158,9 @@ extern int gui_window_calculate_pos_size (struct t_gui_window *window, int force_calculate); extern void gui_window_redraw_buffer (struct t_gui_buffer *buffer); extern void gui_window_redraw_all_buffers (); -extern void gui_window_switch (struct t_gui_window *window); extern void gui_window_switch_to_buffer (struct t_gui_window *window, struct t_gui_buffer *buffer); +extern void gui_window_switch (struct t_gui_window *window); extern void gui_window_page_up (struct t_gui_window *window); extern void gui_window_page_down (struct t_gui_window *window); extern void gui_window_scroll_up (struct t_gui_window *window); diff --git a/src/plugins/scripts/lua/weechat-lua-api.c b/src/plugins/scripts/lua/weechat-lua-api.c index 2cf5a3ee0..e720da46e 100644 --- a/src/plugins/scripts/lua/weechat-lua-api.c +++ b/src/plugins/scripts/lua/weechat-lua-api.c @@ -3878,7 +3878,8 @@ weechat_lua_api_bar_search (lua_State *L) static int weechat_lua_api_bar_new (lua_State *L) { - const char *name, *type, *position, *items, *size, *separator; + const char *name, *type, *conditions, *position, *size, *size_max; + const char *separator, *items; char *result; int n; @@ -3893,30 +3894,36 @@ weechat_lua_api_bar_new (lua_State *L) name = NULL; type = NULL; + conditions = NULL; position = NULL; size = NULL; + size_max = NULL; separator = NULL; items = NULL; n = lua_gettop (lua_current_interpreter); - if (n < 6) + if (n < 8) { WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("bar_new"); LUA_RETURN_EMPTY; } - name = lua_tostring (lua_current_interpreter, -6); - type = lua_tostring (lua_current_interpreter, -5); - position = lua_tostring (lua_current_interpreter, -4); - size = lua_tostring (lua_current_interpreter, -3); + name = lua_tostring (lua_current_interpreter, -8); + type = lua_tostring (lua_current_interpreter, -7); + conditions = lua_tostring (lua_current_interpreter, -6); + position = lua_tostring (lua_current_interpreter, -5); + size = lua_tostring (lua_current_interpreter, -4); + size_max = lua_tostring (lua_current_interpreter, -3); separator = lua_tostring (lua_current_interpreter, -2); items = lua_tostring (lua_current_interpreter, -1); result = script_ptr2str (weechat_bar_new ((char *)name, (char *)type, + (char *)conditions, (char *)position, (char *)size, + (char *)size_max, (char *)separator, (char *)items)); diff --git a/src/plugins/scripts/perl/weechat-perl-api.c b/src/plugins/scripts/perl/weechat-perl-api.c index 4c6fefd25..a833f4125 100644 --- a/src/plugins/scripts/perl/weechat-perl-api.c +++ b/src/plugins/scripts/perl/weechat-perl-api.c @@ -3219,7 +3219,8 @@ static XS (XS_weechat_bar_search) static XS (XS_weechat_bar_new) { - char *result, *name, *type, *position, *size, *separator, *bar_items; + char *result, *name, *type, *conditions, *position, *size, *size_max; + char *separator, *bar_items; dXSARGS; /* make C compiler happy */ @@ -3231,7 +3232,7 @@ static XS (XS_weechat_bar_new) PERL_RETURN_EMPTY; } - if (items < 6) + if (items < 8) { WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("bar_new"); PERL_RETURN_EMPTY; @@ -3239,14 +3240,18 @@ static XS (XS_weechat_bar_new) name = SvPV (ST (0), PL_na); type = SvPV (ST (1), PL_na); - position = SvPV (ST (2), PL_na); - size = SvPV (ST (3), PL_na); - separator = SvPV (ST (4), PL_na); - bar_items = SvPV (ST (5), PL_na); + conditions = SvPV (ST (2), PL_na); + position = SvPV (ST (3), PL_na); + size = SvPV (ST (4), PL_na); + size_max = SvPV (ST (5), PL_na); + separator = SvPV (ST (6), PL_na); + bar_items = SvPV (ST (7), PL_na); result = script_ptr2str (weechat_bar_new (name, type, + conditions, position, size, + size_max, separator, bar_items)); diff --git a/src/plugins/scripts/python/weechat-python-api.c b/src/plugins/scripts/python/weechat-python-api.c index dc3e6d6fa..d2723def0 100644 --- a/src/plugins/scripts/python/weechat-python-api.c +++ b/src/plugins/scripts/python/weechat-python-api.c @@ -3426,7 +3426,8 @@ weechat_python_api_bar_search (PyObject *self, PyObject *args) static PyObject * weechat_python_api_bar_new (PyObject *self, PyObject *args) { - char *name, *type, *position, *size, *separator, *items, *result; + char *name, *type, *conditions, *position, *size, *size_max, *separator; + char *items, *result; PyObject *object; /* make C compiler happy */ @@ -3440,13 +3441,15 @@ weechat_python_api_bar_new (PyObject *self, PyObject *args) name = NULL; type = NULL; + conditions = NULL; position = NULL; size = NULL; + size_max = NULL; separator = NULL; items = NULL; - if (!PyArg_ParseTuple (args, "ssssss", &name, &type, &position, &size, - &separator, &items)) + if (!PyArg_ParseTuple (args, "ssssssss", &name, &conditions, &type, + &position, &size, &size_max, &separator, &items)) { WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("bar_new"); PYTHON_RETURN_EMPTY; @@ -3454,8 +3457,10 @@ weechat_python_api_bar_new (PyObject *self, PyObject *args) result = script_ptr2str (weechat_bar_new (name, type, + conditions, position, size, + size_max, separator, items)); diff --git a/src/plugins/scripts/ruby/weechat-ruby-api.c b/src/plugins/scripts/ruby/weechat-ruby-api.c index 00525a3be..4ab36fccb 100644 --- a/src/plugins/scripts/ruby/weechat-ruby-api.c +++ b/src/plugins/scripts/ruby/weechat-ruby-api.c @@ -3942,11 +3942,12 @@ weechat_ruby_api_bar_search (VALUE class, VALUE name) */ static VALUE -weechat_ruby_api_bar_new (VALUE class, VALUE name, VALUE type, VALUE position, - VALUE size, VALUE separator, VALUE items) +weechat_ruby_api_bar_new (VALUE class, VALUE name, VALUE type, VALUE conditions, + VALUE position, VALUE size, VALUE size_max, + VALUE separator, VALUE items) { - char *c_name, *c_type, *c_position, *c_size, *c_separator, *c_items; - char *result; + char *c_name, *c_type, *c_conditions, *c_position, *c_size, *c_size_max; + char *c_separator, *c_items, *result; VALUE return_value; /* make C compiler happy */ @@ -3960,13 +3961,16 @@ weechat_ruby_api_bar_new (VALUE class, VALUE name, VALUE type, VALUE position, c_name = NULL; c_type = NULL; + c_conditions = NULL; c_position = NULL; c_size = NULL; + c_size_max = NULL; c_separator = NULL; c_items = NULL; - if (NIL_P (name) || NIL_P (type) || NIL_P (position) || NIL_P (size) - || NIL_P (separator) || NIL_P (items)) + if (NIL_P (name) || NIL_P (type) || NIL_P (conditions) || NIL_P (position) + || NIL_P (size) || NIL_P (size_max) || NIL_P (separator) + || NIL_P (items)) { WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("bar_new"); RUBY_RETURN_EMPTY; @@ -3974,22 +3978,28 @@ weechat_ruby_api_bar_new (VALUE class, VALUE name, VALUE type, VALUE position, Check_Type (name, T_STRING); Check_Type (type, T_STRING); + Check_Type (conditions, T_STRING); Check_Type (position, T_STRING); Check_Type (size, T_STRING); + Check_Type (size_max, T_STRING); Check_Type (separator, T_STRING); Check_Type (items, T_STRING); c_name = STR2CSTR (name); c_type = STR2CSTR (type); + c_conditions = STR2CSTR (conditions); c_position = STR2CSTR (position); c_size = STR2CSTR (size); + c_size_max = STR2CSTR (size_max); c_separator = STR2CSTR (separator); c_items = STR2CSTR (items); result = script_ptr2str (weechat_bar_new (c_name, c_type, + c_conditions, c_position, c_size, + c_size_max, c_separator, c_items)); @@ -4589,7 +4599,7 @@ weechat_ruby_api_init (VALUE ruby_mWeechat) rb_define_module_function (ruby_mWeechat, "bar_item_update", &weechat_ruby_api_bar_item_update, 1); rb_define_module_function (ruby_mWeechat, "bar_item_remove", &weechat_ruby_api_bar_item_remove, 1); rb_define_module_function (ruby_mWeechat, "bar_search", &weechat_ruby_api_bar_search, 1); - rb_define_module_function (ruby_mWeechat, "bar_new", &weechat_ruby_api_bar_new, 6); + rb_define_module_function (ruby_mWeechat, "bar_new", &weechat_ruby_api_bar_new, 8); rb_define_module_function (ruby_mWeechat, "bar_set", &weechat_ruby_api_bar_set, 3); rb_define_module_function (ruby_mWeechat, "bar_update", &weechat_ruby_api_bar_update, 1); rb_define_module_function (ruby_mWeechat, "bar_remove", &weechat_ruby_api_bar_remove, 1); diff --git a/src/plugins/weechat-plugin.h b/src/plugins/weechat-plugin.h index 4fdea2b2a..a2df880fa 100644 --- a/src/plugins/weechat-plugin.h +++ b/src/plugins/weechat-plugin.h @@ -376,9 +376,10 @@ struct t_weechat_plugin void (*bar_item_remove) (struct t_gui_bar_item *item); struct t_gui_bar *(*bar_search) (char *name); struct t_gui_bar *(*bar_new) (struct t_weechat_plugin *plugin, char *name, - char *type, char *position, char *size, - char *separator, char *items); - void (*bar_set) (struct t_gui_bar *bar, char *property, char *value); + char *type, char *condition, char *position, + char *size, char *size_max, char *separator, + char *items); + int (*bar_set) (struct t_gui_bar *bar, char *property, char *value); void (*bar_update) (char *name); void (*bar_remove) (struct t_gui_bar *bar); @@ -771,10 +772,11 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); weechat_plugin->bar_item_remove(__item) #define weechat_bar_search(__name) \ weechat_plugin->bar_search(__name) -#define weechat_bar_new(__name, __type, __position, __size, \ - __separator, __items) \ - weechat_plugin->bar_new(weechat_plugin, __name, __type, __position, \ - __size, __separator, __items) +#define weechat_bar_new(__name, __type, __condition, __position, \ + __size, __size_max, __separator, __items) \ + weechat_plugin->bar_new(weechat_plugin, __name, __type, \ + __condition, __position, __size, \ + __size_max, __separator, __items) #define weechat_bar_set(__bar, __property, __value) \ weechat_plugin->bar_set(__bar, __property, __value) #define weechat_bar_update(__name) \ |