[Tkabber-dev] r1397 - in trunk/tkabber: . jabberlib msgs plugins/chat plugins/pep plugins/roster

tkabber-svn at jabber.ru tkabber-svn at jabber.ru
Sun Mar 23 11:04:52 MSK 2008


Author: sergei
Date: 2008-03-23 11:04:51 +0300 (Sun, 23 Mar 2008)
New Revision: 1397

Modified:
   trunk/tkabber/ChangeLog
   trunk/tkabber/jabberlib/wrapper.tcl
   trunk/tkabber/msgs/de.msg
   trunk/tkabber/plugins/chat/histool.tcl
   trunk/tkabber/plugins/pep/user_activity.tcl
   trunk/tkabber/plugins/pep/user_location.tcl
   trunk/tkabber/plugins/pep/user_mood.tcl
   trunk/tkabber/plugins/pep/user_tune.tcl
   trunk/tkabber/plugins/roster/backup.tcl
   trunk/tkabber/plugins/roster/bkup_annotations.tcl
   trunk/tkabber/plugins/roster/bkup_conferences.tcl
   trunk/tkabber/utils.tcl
Log:
	* jabberlib/wrapper.tcl: Fixed xml:lang parsing when tDOM is used as
	  an XML parser.

	* utils.tcl: Added a procedure to generate a sequence of paths for
	  message dialogs.

	* plugins/chat/histool.tcl, plugins/pep/user_activity.tcl,
	  plugins/pep/user_location.tcl, plugins/pep/user_mood.tcl,
	  plugins/pep/user_tune.tcl, plugins/roster/backup.tcl,
	  plugins/roster/bkup_annotations.tcl,
	  plugins/roster/bkup_conferences.tcl: Switched from tk_messageBox to
	  MessageDlg (tk_messageBox in Tk 8.5.1 and newer uses Ttk
	  unconditionally, which is unacceptable).

	* plugins/pep/user_activity.tcl, plugins/pep/user_location.tcl,
	  plugins/pep/user_mood.tcl, plugins/pep/user_tune.tcl: Enable/disable
	  menu items on connect/disconnect to a server.

	* msgs/de.msg: Updated German translation (thanks to Roger Sondermann).


Modified: trunk/tkabber/ChangeLog
===================================================================
--- trunk/tkabber/ChangeLog	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/ChangeLog	2008-03-23 08:04:51 UTC (rev 1397)
@@ -1,3 +1,25 @@
+2008-03-23  Sergei Golovan  <sgolovan at nes.ru>
+
+	* jabberlib/wrapper.tcl: Fixed xml:lang parsing when tDOM is used as
+	  an XML parser.
+
+	* utils.tcl: Added a procedure to generate a sequence of paths for
+	  message dialogs.
+
+	* plugins/chat/histool.tcl, plugins/pep/user_activity.tcl,
+	  plugins/pep/user_location.tcl, plugins/pep/user_mood.tcl,
+	  plugins/pep/user_tune.tcl, plugins/roster/backup.tcl,
+	  plugins/roster/bkup_annotations.tcl,
+	  plugins/roster/bkup_conferences.tcl: Switched from tk_messageBox to
+	  MessageDlg (tk_messageBox in Tk 8.5.1 and newer uses Ttk
+	  unconditionally, which is unacceptable).
+
+	* plugins/pep/user_activity.tcl, plugins/pep/user_location.tcl,
+	  plugins/pep/user_mood.tcl, plugins/pep/user_tune.tcl: Enable/disable
+	  menu items on connect/disconnect to a server.
+
+	* msgs/de.msg: Updated German translation (thanks to Roger Sondermann).
+
 2008-03-07  Sergei Golovan  <sgolovan at nes.ru>
 
 	* plugins/chat/draw_xhtml_message.tcl: Fixed a bug with xhtml_symb tag

Modified: trunk/tkabber/jabberlib/wrapper.tcl
===================================================================
--- trunk/tkabber/jabberlib/wrapper.tcl	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/jabberlib/wrapper.tcl	2008-03-23 08:04:51 UTC (rev 1397)
@@ -116,25 +116,38 @@
 	return -code error -errorinfo "No such wrapper: \"$id\""
     }
 
+    set newvarlist {}
+    foreach {attr val} $varlist {
+        set l [::split $attr :]
+        if {[llength $l] > 1} {
+            set xmlns [join [lrange $l 0 end-1] :]
+            if {$xmlns == "http://www.w3.org/XML/1998/namespace"} {
+                set xmlns xml
+            }
+            set attr $xmlns:[lindex $l end]
+        }
+        lappend newvarlist $attr $val
+    }
+
     foreach {attr val} $args {
 	switch -- $attr {
-	    -namespace {lappend varlist xmlns $val}
+	    -namespace {lappend newvarlist xmlns $val}
 	}
     }
 
     set idx [string last : $tagname]
     if {$idx >= 0} {
-	lappend varlist xmlns [string range $tagname 0 [expr {$idx - 1}]]
+	lappend newvarlist xmlns [string range $tagname 0 [expr {$idx - 1}]]
 	set tagname [string range $tagname [expr {$idx + 1}] end]
     }
 
     if {$wrapper($id,stack) == {}} {
 	set wrapper($id,level1tag) $tagname
-	uplevel #0 "$wrapper($id,streamstartcmd) [list $varlist]"
+	uplevel #0 "$wrapper($id,streamstartcmd) [list $newvarlist]"
     }
     set wrapper($id,stack) \
 	[linsert $wrapper($id,stack) 0 \
-	     [list $tagname $varlist {} "" "" ""]]
+	     [list $tagname $newvarlist {} "" "" ""]]
 }
 
 ######################################################################

Modified: trunk/tkabber/msgs/de.msg
===================================================================
--- trunk/tkabber/msgs/de.msg	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/msgs/de.msg	2008-03-23 08:04:51 UTC (rev 1397)
@@ -1,6 +1,6 @@
 
 # German messages file
-# Roger Sondermann 06.03.2008
+# Roger Sondermann 11.03.2008
 
 # .../chats.tcl
 ::msgcat::mcset de "%s has changed nick to %s."                             "%s hat seinen Nicknamen geändert in %s"
@@ -10,19 +10,19 @@
 ::msgcat::mcset de "Chat options."                                          "Optionen für Chats."
 ::msgcat::mcset de "Chat with %s"                                           "Mit %s chatten"
 ::msgcat::mcset de "Default message type (if not specified explicitly)."    "Voreingestellter Nachrichten-Typ (wenn nicht explizit angegeben)."
-::msgcat::mcset de "Display description of user status in chat windows."    "Beschreibung des Benutzer-Status in Chat-Fenstern anzeigen."
+::msgcat::mcset de "Display description of user status in chat windows."    "Beschreibung des Kontakt-Status in Chat-Fenstern anzeigen."
 ::msgcat::mcset de "Enable chat window autoscroll only when last message is shown." "Automatisches Scrollen erst aktivieren, nachdem die letzte Nachricht angezeigt worden ist."
 ::msgcat::mcset de "Error %s"                                               "Fehler %s"
 ::msgcat::mcset de "Generate chat messages when chat peer changes his/her status and/or status message" "Chat-Nachrichten erstellen, wenn der Chat-Partner seinen Status und/oder die Status-Nachricht ändert."
 ::msgcat::mcset de "Invite"                                                 "Einladen"
 ::msgcat::mcset de "Invite %s to conferences"                               "%s zu Konferenzen einladen"
 ::msgcat::mcset de "Invite to conference..."                                "Zu Konferenz einladen..."
-::msgcat::mcset de "Invite users to %s"                                     "Benutzer einladen nach %s"
-::msgcat::mcset de "Invite users..."                                        "Benutzer einladen..."
-::msgcat::mcset de "List of users for chat."                                "Benutzer-Liste für Chat."
+::msgcat::mcset de "Invite users to %s"                                     "Kontakte einladen nach %s"
+::msgcat::mcset de "Invite users..."                                        "Kontakte einladen..."
+::msgcat::mcset de "List of users for chat."                                "Kontakt-Liste für Chat."
 ::msgcat::mcset de "Moderators"                                             "Moderatoren"
 ::msgcat::mcset de "No conferences for %s in progress..."                   "Keine Konferenzen für %s im Gang."
-::msgcat::mcset de "No users in %s roster..."                               "Keine Benutzer in %s Roster."
+::msgcat::mcset de "No users in %s roster..."                               "Keine Kontakte in %s Roster."
 ::msgcat::mcset de "Normal"                                                 "Normal"
 ::msgcat::mcset de "Open chat"                                              "Chat öffnen"
 ::msgcat::mcset de "Open new conversation"                                  "Neue Konversation öffnen"
@@ -33,7 +33,7 @@
 ::msgcat::mcset de "Stop chat window autoscroll."                           "Automatisches Scrollen von Chat-Fenstern abstellen."
 ::msgcat::mcset de "Subject is set to: %s"                                  "Betreff ist gesetzt zu: %s"
 ::msgcat::mcset de "Subject:"                                               "Betreff:"
-::msgcat::mcset de "Users"                                                  "Benutzer"
+::msgcat::mcset de "Users"                                                  "Kontakte"
 ::msgcat::mcset de "Visitors"                                               "Besucher"
 
 # .../configdir.tcl
@@ -180,12 +180,12 @@
 ::msgcat::mcset de "Toggle encryption"                                      "Verschlüsselung umschalten"
 ::msgcat::mcset de "Toggle encryption (when possible)"                      "Verschlüsselung umschalten (wenn möglich)"
 ::msgcat::mcset de "Toggle signing"                                         "Signierung umschalten"
-::msgcat::mcset de "Unable to encipher data for %s: %s.\n\nEncrypting traffic to this user is now disabled.\n\nSend it as PLAINTEXT?" "Es ist nicht möglich, Daten für %s zu verschlüsseln: %s.\n\nDatenverkehr-Verschlüsselung zu diesem Benutzer ist jetzt deaktiviert.\n\nAls KLARTEXT versenden?"
+::msgcat::mcset de "Unable to encipher data for %s: %s.\n\nEncrypting traffic to this user is now disabled.\n\nSend it as PLAINTEXT?" "Es ist nicht möglich, Daten für %s zu verschlüsseln: %s.\n\nDatenverkehr-Verschlüsselung zu diesem Kontakt ist jetzt deaktiviert.\n\nAls KLARTEXT versenden?"
 ::msgcat::mcset de "Unable to sign message body: %s.\n\nSigning traffic is now disabled.\n\nSend it WITHOUT a signature?" "Es ist nicht möglich, den Nachrichten-Text zu signieren: %s.\n\nDatenverkehr-Signierung ist jetzt deaktiviert.\n\nOHNE Signature versenden?"
 ::msgcat::mcset de "Unable to sign presence information: %s.\n\nPresence will be sent, but signing traffic is now disabled." "Es ist nicht möglich, die Präsenz-Information zu signieren: %s.\n\nDie Präsenz wird gesendet, aber Datenverkehr-Signierung ist jetzt deaktiviert."
 ::msgcat::mcset de "Use specified key ID for signing and decrypting messages." "Angegebene Schlüssel-ID für das Verschlüsseln und Signieren von Nachrichten benutzen."
 ::msgcat::mcset de "Use the same passphrase for signing and decrypting messages." "Dieselbe Passphrase zum Verschlüsseln und Signieren von Nachrichten benutzen."
-::msgcat::mcset de "User ID"                                                "Benutzer-ID"
+::msgcat::mcset de "User ID"                                                "Kontakt-ID"
 ::msgcat::mcset de "\n\tPresence is signed:"                                "\n\tPräsenz ist signiert:"
 
 # .../iface.tcl
@@ -365,13 +365,11 @@
 ::msgcat::mcset de "Edit ban list"                                          "Bann-Liste ändern"
 ::msgcat::mcset de "Edit member list"                                       "Mitglieder-Liste ändern"
 ::msgcat::mcset de "Edit moderator list"                                    "Moderatoren-Liste ändern"
-::msgcat::mcset de "Edit outcast list"                                      "Bann-Liste ändern"
 ::msgcat::mcset de "Edit owner list"                                        "Eigentümer-Liste ändern"
-::msgcat::mcset de "Edit participant list"                                  "Teilnehmer-Liste ändern"
 ::msgcat::mcset de "Edit voice list"                                        "Teilnehmer-Liste ändern"
 ::msgcat::mcset de "Generate groupchat messages when occupant changes his/her status and/or status message." "Konferenz-Nachrichten erstellen, wenn Konferenz-Teilnehmer ihren Status und/oder die Status-Nachricht ändern."
 ::msgcat::mcset de "Generate groupchat messages when occupant's room position (affiliation and/or role) changes." "Konferenz-Nachrichten erstellen, wenn sich die Position (Zugehörigkeit und/oder Funktion) von Teilnehmern innerhalb einer Konferenz ändert."
-::msgcat::mcset de "Generate status messages when occupants enter/exit MUC compatible conference rooms." "Status-Nachrichten erstellen, wenn Benutzer MUC-kompatible Konferenz-Räume betreten oder verlassen."
+::msgcat::mcset de "Generate status messages when occupants enter/exit MUC compatible conference rooms." "Status-Nachrichten erstellen, wenn Teilnehmer MUC-kompatible Konferenz-Räume betreten oder verlassen."
 ::msgcat::mcset de "Grant Admin Privileges"                                 "Administrator-Privilegien zugestehen"
 ::msgcat::mcset de "Grant Membership"                                       "Mitgliedschaft zugestehen"
 ::msgcat::mcset de "Grant Moderator Privileges"                             "Moderatoren-Privilegien zugestehen"
@@ -406,7 +404,7 @@
 ::msgcat::mcset de "Room is destroyed"                                      "Konferenz-Raum wurde beseitigt"
 ::msgcat::mcset de "Sending %s %s list"                                     "Sende %s %s Liste"
 ::msgcat::mcset de "Sending configure form"                                 "Sende Konfigurations-Formular"
-::msgcat::mcset de "User already %s"                                        "Benutzer ist bereits %s"
+::msgcat::mcset de "User already %s"                                        "Teilnehmer ist bereits %s"
 ::msgcat::mcset de "visitor"                                                "Besucher"
 ::msgcat::mcset de "Whois"                                                  "Whois"
 ::msgcat::mcset de "\nAlternative venue: %s"                                "\nAlternativer Treffpunkt: %s"
@@ -427,9 +425,9 @@
 
 # .../presence.tcl
 ::msgcat::mcset de "Change Presence Priority"                               "Präsenz-Priorität ändern"
-::msgcat::mcset de "Stored user priority."                                  "Gespeicherte Benutzer-Priorität"
-::msgcat::mcset de "Stored user status."                                    "Gespeicherter Benutzer-Status"
-::msgcat::mcset de "Stored user text status."                               "Gespeicherter Benutzer-Text-Status"
+::msgcat::mcset de "Stored user priority."                                  "Gespeicherte Kontakt-Priorität"
+::msgcat::mcset de "Stored user status."                                    "Gespeicherter Kontakt-Status"
+::msgcat::mcset de "Stored user text status."                               "Gespeicherter Kontakt-Text-Status"
 ::msgcat::mcset de "Unsubscribed from %s"                                   "Autorisierung zurückgezogen"
 ::msgcat::mcset de "You are unsubscribed from %s"                           "Die Autorisierung wurde von %s zurückgezogen"
 ::msgcat::mcset de "doesn't want to be disturbed"                           "wünscht nicht gestört zu werden"
@@ -448,8 +446,8 @@
 ::msgcat::mcset de "Add JID"                                                "JID hinzufügen"
 ::msgcat::mcset de "Add item"                                               "Eintrag hinzufügen"
 ::msgcat::mcset de "Add list"                                               "Liste hinzufügen"
-::msgcat::mcset de "Blocking communication (XMPP privacy lists) options."   "Optionen für das Blockieren der Kommunikation (XMPP-Privatsphären-Listen)."
-::msgcat::mcset de "Changing accept messages from roster only: %s"          "Ändere 'Nur Nachrichten von Benutzern im Roster akzeptieren': %s"
+::msgcat::mcset de "Blocking communication (XMPP privacy lists) options."   "Optionen für das Blockieren der Kommunikation (Privatsphären-Listen)."
+::msgcat::mcset de "Changing accept messages from roster only: %s"          "Ändere 'Nur Nachrichten von Kontakten im Roster akzeptieren': %s"
 ::msgcat::mcset de "Creating default privacy list"                          "Erstelle voreingestellte Privatsphären-Listen"
 ::msgcat::mcset de "Creating default privacy list failed: %s\n\nTry to reconnect. If problem persists, you may want to disable privacy list activation at start" "Erstellung der voreingestellten Privatsphären-Listen misslungen: %s\n\nVersuchen Sie eine erneute Verbindung mit dem Server. Wenn das Problem bestehen bleibt, stellen Sie die Aktivierung der Privatsphären-Listen beim Start ab."
 ::msgcat::mcset de "Default"                                                "Voreinstellung"
@@ -513,7 +511,7 @@
 ::msgcat::mcset de "Unregister"                                             "Registrierung rückgängig machen"
 
 # .../richtext.tcl
-::msgcat::mcset de "Settings of rich text facility which is used to render chat messages and logs." "Optionen für die 'Rich Text'-Fähigkeiten, die benutzt werden, um Chat-Nachrichten und Logs darzustellen."
+::msgcat::mcset de "Settings of rich text facility which is used to render chat messages and logs." "Optionen für die 'Rich Text'-Fähigkeiten.\nDiese werden für die Darstellung von Chat-Nachrichten und Logs benutzt."
 
 # .../roster.tcl
 ::msgcat::mcset de "Active Chats"                                           "Aktive Chats"
@@ -610,7 +608,7 @@
 ::msgcat::mcset de "Last Activity or Uptime"                                "Letzte Aktivität oder Betriebszeit"
 ::msgcat::mcset de "Last activity"                                          "Letzte Aktivität"
 ::msgcat::mcset de "Latitude:"                                              "Breitengrad:"
-::msgcat::mcset de "List of users for userinfo."                            "Liste von Benutzern für Benutzer-Informationen."
+::msgcat::mcset de "List of users for userinfo."                            "Liste von Kontakten für Kontakt-Informationen."
 ::msgcat::mcset de "Load Image"                                             "Bild laden"
 ::msgcat::mcset de "Loading photo failed: %s."                              "Laden des Bildes misslungen: %s"
 ::msgcat::mcset de "Location"                                               "Wohnort"
@@ -636,7 +634,7 @@
 ::msgcat::mcset de "Service info"                                           "Dienst-Information"
 ::msgcat::mcset de "Show"                                                   "Anzeigen"
 ::msgcat::mcset de "Show info"                                              "Informationen anzeigen"
-::msgcat::mcset de "Show user or service info"                              "Benutzer- oder Dienst-Informationen anzeigen"
+::msgcat::mcset de "Show user or service info"                              "Kontakt- oder Dienst-Informationen anzeigen"
 ::msgcat::mcset de "Suffix:"                                                "Suffix:"
 ::msgcat::mcset de "Telephone numbers"                                      "Telefon-Nummern"
 ::msgcat::mcset de "Time"                                                   "Zeit"
@@ -648,7 +646,7 @@
 ::msgcat::mcset de "UTC:"                                                   "UTC:"
 ::msgcat::mcset de "Unit:"                                                  "Abteilung:"
 ::msgcat::mcset de "Uptime"                                                 "Betriebszeit"
-::msgcat::mcset de "User info"                                              "Benutzer-Informationen"
+::msgcat::mcset de "User info"                                              "Kontakt-Informationen"
 ::msgcat::mcset de "Version"                                                "Version"
 ::msgcat::mcset de "Video:"                                                 "Bild:"
 ::msgcat::mcset de "Voice:"                                                 "Sprache:"
@@ -686,12 +684,12 @@
 
 # .../ifaceck/iroster.tcl
 ::msgcat::mcset de "Add conference..."                                      "Konferenz hinzufügen..."
-::msgcat::mcset de "Add user..."                                            "Benutzer hinzufügen..."
+::msgcat::mcset de "Add user..."                                            "Kontakt hinzufügen..."
 ::msgcat::mcset de "Are you sure to remove group '%s' from roster?"         "Soll die Gruppe '%s' wirklich vom Roster entfernt werden?"
 ::msgcat::mcset de "is now"                                                 "ist jetzt"
 ::msgcat::mcset de "Remove item..."                                         "Eintrag entfernen..."
 ::msgcat::mcset de "Resubscribe"                                            "Autorisierung wiederholen"
-::msgcat::mcset de "Send contacts to"                                       "Benutzer senden an"
+::msgcat::mcset de "Send contacts to"                                       "Kontakte senden an"
 ::msgcat::mcset de "Use aliases"                                            "Aliase benutzen"
 
 # .../ifacetk/iface.tcl
@@ -699,12 +697,12 @@
 ::msgcat::mcset de "&Help"                                                  "&Hilfe"
 ::msgcat::mcset de "&Services"                                              "&Dienste"
 ::msgcat::mcset de "About"                                                  "Über Tkabber"
-::msgcat::mcset de "Accept messages from roster users only"                 "Nur Nachrichten von Benutzern im Roster akzeptieren"
+::msgcat::mcset de "Accept messages from roster users only"                 "Nur Nachrichten von Kontakten im Roster akzeptieren"
 ::msgcat::mcset de "Activate lists at startup"                              "Listen beim Start aktivieren"
 ::msgcat::mcset de "Activate search panel"                                  "Such-Leiste aktivieren"
 ::msgcat::mcset de "Add group by regexp on JIDs..."                         "Gruppe mit RegEx auf JIDs hinzufügen..."
-::msgcat::mcset de "Add new user..."                                        "Benutzer zu Roster hinzufügen..."
-::msgcat::mcset de "Add user to roster..."                                  "Benutzer zu Roster hinzufügen..."
+::msgcat::mcset de "Add new user..."                                        "Kontakt zu Roster hinzufügen..."
+::msgcat::mcset de "Add user to roster..."                                  "Kontakt zu Roster hinzufügen..."
 ::msgcat::mcset de "Admin tools"                                            "Administrator-Werkzeuge"
 ::msgcat::mcset de "Alexey Shchepin"                                        "Alexey Shchepin"
 ::msgcat::mcset de "Authors:"                                               "Autoren:"
@@ -735,7 +733,8 @@
 ::msgcat::mcset de "Emphasize"                                              "Hervorheben"
 ::msgcat::mcset de "Export roster..."                                       "Roster exportieren"
 ::msgcat::mcset de "Extended away"                                          "Länger abwesend"
-::msgcat::mcset de "Font to use in roster, chat windows etc."               "Schriftart/-größe für Roster, Chat-Fenster, etc."
+::msgcat::mcset de "Font to use in chat windows."                           "Schriftart/-größe für Chat-Fenster."
+::msgcat::mcset de "Font to use in roster windows."                         "Schriftart/-größe für Roster-Fenster."
 ::msgcat::mcset de "Free to chat"                                           "Frei zum Chatten"
 ::msgcat::mcset de "Generate enter/exit messages"                           "Betreten-/Verlassen-Nachrichten erstellen"
 ::msgcat::mcset de "Hide main window"                                       "Haupt-Fenster verbergen"
@@ -790,12 +789,12 @@
 ::msgcat::mcset de "Show main window"                                       "Haupt-Fenster anzeigen"
 ::msgcat::mcset de "Show menu tearoffs when possible."                      "Abreißbare Menüs anzeigen (wenn möglich)."
 ::msgcat::mcset de "Show number of unread messages in tab titles."          "Anzahl ungelesener Nachrichten in Tab-Titeln anzeigen."
-::msgcat::mcset de "Show online users only"                                 "Nur 'Online'-Benutzer anzeigen"
+::msgcat::mcset de "Show online users only"                                 "Nur 'Online'-Kontakte anzeigen"
 ::msgcat::mcset de "Show own resources"                                     "Eigene Ressourcen anzeigen"
 ::msgcat::mcset de "Show palette of emoticons"                              "Palette der Emoticons anzeigen"
 ::msgcat::mcset de "Show presence bar."                                     "Präsenz-Leiste anzeigen."
 ::msgcat::mcset de "Show status bar."                                       "Status-Leiste anzeigen."
-::msgcat::mcset de "Show user or service info..."                           "Benutzer- oder Dienst-Informationen anzeigen..."
+::msgcat::mcset de "Show user or service info..."                           "Kontakt- oder Dienst-Informationen anzeigen..."
 ::msgcat::mcset de "Side where to place tabs in tabbed mode."               "Fenster-Seite, an der die Tabs angeordnet werden sollen."
 ::msgcat::mcset de "Smart autoscroll"                                       "Intelligentes automatisches Scrollen"
 ::msgcat::mcset de "Status bar"                                             "Status-Leiste"
@@ -804,7 +803,7 @@
 ::msgcat::mcset de "Switch to tab number 1-9,10"                            "Wechsel zu Tab Nummer 1-9, 10"
 ::msgcat::mcset de "Systray:"                                               "SysTray:"
 ::msgcat::mcset de "Tabs:"                                                  "Tabs:"
-::msgcat::mcset de "Toggle showing offline users"                           "'Offline'-Benutzer anzeigen"
+::msgcat::mcset de "Toggle showing offline users"                           "'Offline'-Kontakte anzeigen"
 ::msgcat::mcset de "Toolbar"                                                "Werkzeug-Leiste"
 ::msgcat::mcset de "Top"                                                    "Oben"
 ::msgcat::mcset de "Undo"                                                   "Rückgängig"
@@ -842,44 +841,44 @@
 ::msgcat::mcset de "SSL certificate:"                                       "SSL-Zertifikat:"
 ::msgcat::mcset de "URL to poll:"                                           "URL für die Verbindung:"
 ::msgcat::mcset de "Use SASL authentication"                                "SASL-Authentifizierung benutzen"
-::msgcat::mcset de "Use client security keys"                               "Sicherheitsschlüssel benutzen (empfohlen)"
+::msgcat::mcset de "Use client security keys"                               "Sicherheitsschlüssel benutzen"
 
 # .../ifacetk/iroster.tcl
 ::msgcat::mcset de "Add chats group in roster."                             "'Chats'-Gruppe zu Roster hinzufügen."
 ::msgcat::mcset de "Add roster group by JID regexp"                         "Gruppe mit RegEx auf JIDs hinzufügen"
 ::msgcat::mcset de "Are you sure to remove %s from roster?"                 "Soll %s wirklich vom Roster entfernt werden?"
-::msgcat::mcset de "Are you sure to remove all users in group '%s' from roster? \n(Users which are in another groups too, will not be removed from the roster.)" "Sollen wirklich alle Benutzer in Gruppe '%s' vom Roster entfernt werden?\n(Benutzer, die gleichzeitig in einer anderen Gruppe sind, werden nicht entfernt.)"
-::msgcat::mcset de "Are you sure to remove group '%s' from roster? \n(Users which are in this group only, will be in undefined group.)" "Soll die Gruppe '%s' wirklich vom Roster entfernt werden?\n(Benutzer, die nur in dieser Gruppe sind, werden in die Gruppe 'Undefiniert' verschoben.)"
+::msgcat::mcset de "Are you sure to remove all users in group '%s' from roster? \n(Users which are in another groups too, will not be removed from the roster.)" "Sollen wirklich alle Kontakte in Gruppe '%s' vom Roster entfernt werden?\n(Kontakte, die gleichzeitig in einer anderen Gruppe sind, werden nicht entfernt.)"
+::msgcat::mcset de "Are you sure to remove group '%s' from roster? \n(Users which are in this group only, will be in undefined group.)" "Soll die Gruppe '%s' wirklich vom Roster entfernt werden?\n(Kontakte, die nur in dieser Gruppe sind, werden in die Gruppe 'Undefiniert' verschoben.)"
 ::msgcat::mcset de "Ask:"                                                   "Frage:"
 ::msgcat::mcset de "Default nested roster group delimiter."                 "Voreingestelltes Trennzeichen für verschachtelte Roster-Gruppen."
 ::msgcat::mcset de "Enable nested roster groups."                           "Verschachtelte Roster-Gruppen aktivieren."
 ::msgcat::mcset de "JID regexp:"                                            "Regulärer Ausdruck:"
-::msgcat::mcset de "Match contact JIDs in addition to nicknames in roster filter." "Im Roster-Filter zusätzlich zu den Nicknamen auch eine Übereinstimmung mit den Benutzer-JIDs überprüfen."
+::msgcat::mcset de "Match contact JIDs in addition to nicknames in roster filter." "Im Roster-Filter zusätzlich zu den Nicknamen auch eine Übereinstimmung mit den Kontakt-JIDs überprüfen."
 ::msgcat::mcset de "New group name:"                                        "Neuer Gruppen-Name:"
-::msgcat::mcset de "Remove all users in group..."                           "Alle Benutzer in Gruppe entfernen..."
+::msgcat::mcset de "Remove all users in group..."                           "Alle Kontakte in Gruppe entfernen..."
 ::msgcat::mcset de "Remove from roster..."                                  "Vom Roster entfernen..."
 ::msgcat::mcset de "Remove group..."                                        "Gruppe entfernen..."
 ::msgcat::mcset de "Rename group..."                                        "Gruppe umbenennen..."
 ::msgcat::mcset de "Rename roster group"                                    "Roster-Gruppe umbenennen"
-::msgcat::mcset de "Resubscribe to all users in group..."                   "Autorisierung bei allen Benutzern in Gruppe wiederholen"
+::msgcat::mcset de "Resubscribe to all users in group..."                   "Autorisierung bei allen Kontakten in Gruppe wiederholen"
 ::msgcat::mcset de "Roster filter."                                         "Roster-Filter."
 ::msgcat::mcset de "Roster item may be dropped not only over group name but also over any item in group." "Erlauben, daß Roster-Einträge nicht nur über Gruppen-Namen, sondern über jedem Eintrag in einer Gruppe fallen gelassen werden können."
 ::msgcat::mcset de "Roster of %s"                                           "Roster von %s"
 ::msgcat::mcset de "Roster options."                                        "Optionen für den Roster."
 ::msgcat::mcset de "Send custom presence"                                   "Spezielle Präsenz senden"
-::msgcat::mcset de "Send message to all users in group..."                  "Nachricht an alle Benutzer in Gruppe senden..."
+::msgcat::mcset de "Send message to all users in group..."                  "Nachricht an alle Kontakte in Gruppe senden..."
 ::msgcat::mcset de "Show detailed info on conference room members in roster item tooltips." "Detaillierte Informationen über Konferenz-Teilnehmer im Eintrags-Tooltip anzeigen."
 ::msgcat::mcset de "Show my own resources in the roster."                   "Eigene Ressourcen in Roster anzeigen."
-::msgcat::mcset de "Show native icons for contacts, connected to transports/services in roster." "Systemeigene Icons für Benutzer, die mit Transporten/Diensten verbunden sind, in Roster anzeigen."
+::msgcat::mcset de "Show native icons for contacts, connected to transports/services in roster." "Systemeigene Icons für Kontakte, die mit Transporten/Diensten verbunden sind, in Roster anzeigen."
 ::msgcat::mcset de "Show native icons for transports/services in roster."   "Systemeigene Icons für Transporte/Dienste in Roster anzeigen."
-::msgcat::mcset de "Show offline users"                                     "'Offline'-Benutzer anzeigen"
-::msgcat::mcset de "Show only online users in roster."                      "Nur 'Online'-Benutzer in Roster anzeigen."
+::msgcat::mcset de "Show offline users"                                     "'Offline'-Kontakte anzeigen"
+::msgcat::mcset de "Show only online users in roster."                      "Nur 'Online'-Kontakte in Roster anzeigen."
 ::msgcat::mcset de "Show subscription type in roster item tooltips."        "Autorisierungs-Status in Eintrags-Tooltip anzeigen."
 ::msgcat::mcset de "Stored collapsed roster groups."                        "Zusammengeklappte Roster-Gruppen gespeichert."
 ::msgcat::mcset de "Stored show offline roster groups."                     "'Offline anzeigen'-Roster-Gruppen gespeichert."
 ::msgcat::mcset de "Subscription:"                                          "Autorisierung:"
 ::msgcat::mcset de "Unavailable"                                            "Nicht verfügbar"
-::msgcat::mcset de "Use aliases to show multiple users in one roster item." "Aliase benutzen, um mehrere Benutzer in einem Roster-Eintrag anzuzeigen."
+::msgcat::mcset de "Use aliases to show multiple users in one roster item." "Aliase benutzen, um mehrere Kontakte in einem Roster-Eintrag anzuzeigen."
 ::msgcat::mcset de "Use roster filter."                                     "Roster-Filter anzeigen."
 
 # .../ifacetk/systray.tcl
@@ -1019,7 +1018,13 @@
 ::msgcat::mcset de "Number of groupchat messages to expire nick completion according to the last personally addressed message." "Anzahl der Konferenz-Nachrichten, nach denen die Nicknamen-Vervollständigung verfällt (unter Berücksichtigung der letzten persönlich adressierten Nachricht)."
 
 # .../plugins/chat/draw_timestamp.tcl
-::msgcat::mcset de "Format of timestamp in chat message. Refer to Tcl documentation of 'clock' command for description of format.\n\nExamples:\n  \[%R\] \u2013 \[20:37\]\n  \[%T\] \u2013 \[20:37:12\]\n  \[%a %b %d %H:%M:%S %Z %Y\] \u2013 \[Thu Jan 01 03:00:00 MSK 1970\]" "Format des Zeitstempels in Chat-Nachrichten (für Details bitte die Dokumentation des Tcl-'clock'-Kommandos lesen).\n\nBeispiele:\n  \[%R\]\t\[15:15\]\n  \[%T\]\t\[15:15:27\]\n  \[%a %d. %b %Y %H:%M:%S %Z\]      \[Son 11. Jun 2000 15:15:27 W. Europe Standard Time\]"
+::msgcat::mcset de "Format of timestamp in chat message.\
+Refer to Tcl documentation of 'clock' command for description of format.
+
+Examples:
+  \[%R\] \u2013 \[20:37\]
+  \[%T\] \u2013 \[20:37:12\]
+  \[%a %b %d %H:%M:%S %Z %Y\] \u2013 \[Thu Jan 01 03:00:00 MSK 1970\]"      "Format des Zeitstempels in Chat-Nachrichten (für Details bitte die Dokumentation des Tcl-'clock'-Kommandos lesen).\n\nBeispiele:\n  \[%R\]\t\[15:15\]\n  \[%T\]\t\[15:15:27\]\n  \[%a %d. %b %Y %H:%M:%S %Z\]      \[Son 11. Jun 2000 15:15:27 W. Europe Standard Time\]"
 ::msgcat::mcset de "Format of timestamp in delayed chat messages delayed for more than 24 hours." "Format des Zeitstempels für Chat-Nachrichten, die älter als 24 Stunden sind."
 
 # .../plugins/chat/draw_xhtml_message.tcl
@@ -1141,7 +1146,7 @@
 # .../plugins/chat/nick_colors.tcl
 ::msgcat::mcset de "Color message bodies in chat windows."                  "Farbige Nachrichten in Chat-Fenstern benutzen."
 ::msgcat::mcset de "Edit %s color"                                          "%s Farbe ändern"
-::msgcat::mcset de "Edit chat user colors"                                  "Chatbenutzer-Farben ändern"
+::msgcat::mcset de "Edit chat user colors"                                  "Chatteilnehmer-Farben ändern"
 ::msgcat::mcset de "Edit nick color..."                                     "Nicknamen-Farbe ändern..."
 ::msgcat::mcset de "Edit nick colors..."                                    "Nicknamen-Farben ändern..."
 ::msgcat::mcset de "Use colored messages"                                   "Farbige Nachrichten benutzen"
@@ -1186,7 +1191,7 @@
 ::msgcat::mcset de "Idle threshold in minutes after that Tkabber marks you as away." "Leerlauf-Zeit (in Minuten), nach der Tkabber 'Abwesend' anzeigt."
 ::msgcat::mcset de "Idle threshold in minutes after that Tkabber marks you as extended away." "Leerlauf-Zeit (in Minuten), nach der Tkabber 'Länger abwesend' anzeigt."
 ::msgcat::mcset de "Moving to extended away"                                "Wechseln zu 'Länger abwesend'"
-::msgcat::mcset de "Options for module that automatically marks you as away after idle threshold." "Optionen für das Modul, welches nach Leerlauf automatisch 'Abwesend' anzeigt."
+::msgcat::mcset de "Options for module that automatically marks you as away after idle threshold." "Optionen für das 'Automatisch-Abwesend'-Modul."
 ::msgcat::mcset de "Returning from auto-away"                               "Beende 'Automatisch-Abwesend'"
 ::msgcat::mcset de "Set priority to 0 when moving to extended away state."  "Setze Priorität auf 0 beim Wechsel zu 'Länger abwesend'."
 ::msgcat::mcset de "Starting auto-away"                                     "Starte 'Automatisch-Abwesend'"
@@ -1249,8 +1254,13 @@
 ::msgcat::mcset de "Ispell dictionary encoding. If it is empty, system encoding is used." "Ispell Wörterbuch-Kodierung. Wenn nicht angegeben, wird die System-Kodierung benutzt."
 ::msgcat::mcset de "Path to the ispell executable."                         "Pfad zum Ispell-Programm."
 ::msgcat::mcset de "Spell check options."                                   "Optionen für die Rechtschreibprüfung."
-::msgcat::mcset de "Ispell options. See ispell manual for details.\n\nExamples:\n  -d russian\n  -d german -T latin1\n  -C -d english" "Ispell-Optionen (für Details bitte die Ispell-Dokumentation lesen).\n\nBeispiele:\n  -d russian\n  -d german -T latin1 bzw. -d deutsch -T latin1\n  -C -d english"
+::msgcat::mcset de "Ispell options. See ispell manual for details.
 
+Examples:
+  -d russian
+  -d german -T latin1
+  -C -d english"                                                            "Ispell-Optionen (für Details bitte die Ispell-Dokumentation lesen).\n\nBeispiele:\n  -d russian\n  -d german -T latin1 bzw. -d deutsch -T latin1\n  -C -d english"
+
 # .../plugins/general/message_archive.tcl
 ::msgcat::mcset de "Dir"                                                    "<->"
 ::msgcat::mcset de "From/To"                                                "Von/An"
@@ -1280,15 +1290,15 @@
 ::msgcat::mcset de "Get items"                                              "Einträge erhalten"
 ::msgcat::mcset de "Headline message"                                       "Kopfzeilen-Nachricht"
 ::msgcat::mcset de "IQ"                                                     "IQ"
-::msgcat::mcset de "Indentation for pretty-printed XML subtags."            "Einzug für optimierte (pretty print) XML-'Subtags'."
+::msgcat::mcset de "Indentation for pretty-printed XML subtags."            "Einzug für optimierte (Pretty Print) XML-'Subtags'."
 ::msgcat::mcset de "Message"                                                "Nachricht"
 ::msgcat::mcset de "Normal message"                                         "Normale Nachricht"
 ::msgcat::mcset de "Not connected"                                          "Nicht verbunden"
 ::msgcat::mcset de "Open raw XML window"                                    "Original-XML öffnen"
-::msgcat::mcset de "Options for Raw XML Input module, which allows you to monitor incoming/outgoing traffic from connection to server and send custom XML stanzas." "Optionen für das Original-XML Modul, welches die Betrachtung ein- und ausgehenden Datenverkehrs zum Server und das Senden spezifischer XML-'Stanzas' erlaubt."
+::msgcat::mcset de "Options for Raw XML Input module, which allows you to monitor incoming/outgoing traffic from connection to server and send custom XML stanzas." "Optionen für das Original-XML Modul.\nDieses erlaubt die Betrachtung ein- und ausgehenden Datenverkehrs zum Server und das Senden spezifischer XML-'Stanzas'."
 ::msgcat::mcset de "Plugins options."                                       "Optionen für Plugins."
-::msgcat::mcset de "Pretty print XML"                                       "XML-Ausgabe optimieren (pretty print)"
-::msgcat::mcset de "Pretty print incoming and outgoing XML stanzas."        "Ausgabe ein- und ausgehender XML-'Stanzas' optimieren (pretty print)."
+::msgcat::mcset de "Pretty print XML"                                       "XML-Ausgabe optimieren (Pretty Print)"
+::msgcat::mcset de "Pretty print incoming and outgoing XML stanzas."        "Ausgabe ein- und ausgehender XML-'Stanzas' optimieren (Pretty Print)."
 ::msgcat::mcset de "Pub/sub"                                                "Pub/Sub"
 ::msgcat::mcset de "Publish node"                                           "Knoten veröffentlichen"
 ::msgcat::mcset de "Raw XML"                                                "Original-XML"
@@ -1356,7 +1366,7 @@
 # .../plugins/general/subscribe_gateway.tcl
 ::msgcat::mcset de "Convert"                                                "Konvertieren"
 ::msgcat::mcset de "Convert screenname"                                     "Bildschirm-Namen konvertieren"
-::msgcat::mcset de "Enter screenname of contact you want to add"            "Den Bildschirm-Namen des hinzuzufügenden Benutzers eingeben"
+::msgcat::mcset de "Enter screenname of contact you want to add"            "Den Bildschirm-Namen des hinzuzufügenden Kontakts eingeben"
 ::msgcat::mcset de "Error while converting screenname: %s."                 "Fehler beim Konvertieren des Bildschirm-Namens: %s"
 ::msgcat::mcset de "I would like to add you to my roster."                  "Ich würde Dich/Sie gerne in meine Kontaktliste aufnehmen.\nI would like to add you to my roster."
 ::msgcat::mcset de "Screenname conversion"                                  "Bildschirm-Namen-Konvertierung"
@@ -1420,19 +1430,19 @@
 ::msgcat::mcset de "%s's activity is unset"                                 "Aktivität für %s ist nicht gesetzt"
 ::msgcat::mcset de "Activity"                                               "Aktivität"
 ::msgcat::mcset de "Activity:"                                              "Aktivität:"
-::msgcat::mcset de "Auto-subscribe to other's user activity"                "Benutzer-Aktivität Anderer automatisch abonnieren"
-::msgcat::mcset de "Auto-subscribe to other's user activity notifications." "Benachrichtigungen über die Benutzer-Aktivitäten Anderer automatisch abonnieren."
+::msgcat::mcset de "Auto-subscribe to other's user activity"                "Kontakt-Aktivität Anderer automatisch abonnieren"
+::msgcat::mcset de "Auto-subscribe to other's user activity notifications." "Benachrichtigungen über die Kontakt-Aktivitäten Anderer automatisch abonnieren."
 ::msgcat::mcset de "Cannot publish empty activity"                          "Unausgefüllte Aktivität kann nicht veröffentlicht werden"
 ::msgcat::mcset de "Error"                                                  "Fehler"
-::msgcat::mcset de "Publish user activity"                                  "Benutzer-Aktivität veröffentlichen"
-::msgcat::mcset de "Unpublish user activity"                                "Benutzer-Aktivität zurückziehen"
+::msgcat::mcset de "Publish user activity"                                  "Eigene Kontakt-Aktivität veröffentlichen..."
+::msgcat::mcset de "Unpublish user activity"                                "Eigene Kontakt-Aktivität zurückziehen"
 ::msgcat::mcset de "Subactivity"                                            "Neben-Aktivität"
 ::msgcat::mcset de "Subactivity:"                                           "Neben-Aktivität:"
-::msgcat::mcset de "User activity"                                          "Benutzer-Aktivität"
-::msgcat::mcset de "User activity publishing failed: %s"                    "Veröffentlichen der Benutzer-Aktivität misslungen: %s"
-::msgcat::mcset de "User activity unpublishing failed: %s"                  "Zurückziehen der Benutzer-Aktivität misslungen: %s"
+::msgcat::mcset de "User activity"                                          "Kontakt-Aktivität"
+::msgcat::mcset de "User activity publishing failed: %s"                    "Veröffentlichen der Kontakt-Aktivität misslungen: %s"
+::msgcat::mcset de "User activity unpublishing failed: %s"                  "Zurückziehen der Kontakt-Aktivität misslungen: %s"
 ::msgcat::mcset de "\n\tActivity: %s"                                       "\n\tAktivität: %s"
-::msgcat::mcset de "\n\tUser's activity subscription: %s"                   "\n\tAktivitäts-Anmeldung des Benutzers: %s"
+::msgcat::mcset de "\n\tUser's activity subscription: %s"                   "\n\tAktivitäts-Anmeldung des Kontakts: %s"
 
 ::msgcat::mcset de "doing chores"                                           "Haushalt"
 ::msgcat::mcset de "buying groceries"                                         "Lebensmittel kaufen"
@@ -1509,15 +1519,15 @@
 # .../plugins/pep/user_location.tcl
 ::msgcat::mcset de "%s's location changed to %s : %s"                       "Standort für %s geändert in %s"
 ::msgcat::mcset de "%s's location is unset"                                 "Standort für %s ist nicht gesetzt"
-::msgcat::mcset de "Auto-subscribe to other's user location"                "Benutzer-Standort Anderer automatisch abonnieren"
-::msgcat::mcset de "Auto-subscribe to other's user location notifications." "Benachrichtigungen über die Benutzer-Standorte Anderer automatisch abonnieren."
-::msgcat::mcset de "Publish user location"                                  "Benutzer-Standort veröffentlichen"
-::msgcat::mcset de "Unpublish user location"                                "Benutzer-Standort zurückziehen"
-::msgcat::mcset de "User location"                                          "Benutzer-Standort"
-::msgcat::mcset de "User location publishing failed: %s"                    "Veröffentlichen des Benutzer-Standorts misslungen: %s"
-::msgcat::mcset de "User location unpublishing failed: %s"                  "Zurückziehen des Benutzer-Standorts misslungen: %s"
+::msgcat::mcset de "Auto-subscribe to other's user location"                "Kontakt-Standort Anderer automatisch abonnieren"
+::msgcat::mcset de "Auto-subscribe to other's user location notifications." "Benachrichtigungen über die Kontakt-Standorte Anderer automatisch abonnieren."
+::msgcat::mcset de "Publish user location"                                  "Eigenen Kontakt-Standort veröffentlichen..."
+::msgcat::mcset de "Unpublish user location"                                "Eigenen Kontakt-Standort zurückziehen"
+::msgcat::mcset de "User location"                                          "Kontakt-Standort"
+::msgcat::mcset de "User location publishing failed: %s"                    "Veröffentlichen des Kontakt-Standorts misslungen: %s"
+::msgcat::mcset de "User location unpublishing failed: %s"                  "Zurückziehen des Kontakt-Standorts misslungen: %s"
 ::msgcat::mcset de "\n\tLocation: %s : %s"                                  "\n\tStandort: %s"
-::msgcat::mcset de "\n\tUser's location subscription: %s"                   "\n\tStandort-Anmeldung des Benutzers: %s"
+::msgcat::mcset de "\n\tUser's location subscription: %s"                   "\n\tStandort-Anmeldung des Kontakts: %s"
 
 ::msgcat::mcset de "Altitude:"                                              "Höhenlage:"
 ::msgcat::mcset de "Area:"                                                  "Gegend:"
@@ -1536,24 +1546,24 @@
 # .../plugins/pep/user_mood.tcl
 ::msgcat::mcset de "%s's mood changed to %s"                                "Gemütslage für %s geändert in %s"
 ::msgcat::mcset de "%s's mood is unset"                                     "Gemütslage für %s ist nicht gesetzt"
-::msgcat::mcset de "Auto-subscribe to other's user mood"                    "Benutzer-Gemütslage Anderer automatisch abonnieren"
-::msgcat::mcset de "Auto-subscribe to other's user mood notifications."     "Benachrichtigungen über die Benutzer-Gemütslagen Anderer automatisch abonnieren."
+::msgcat::mcset de "Auto-subscribe to other's user mood"                    "Kontakt-Gemütslage Anderer automatisch abonnieren"
+::msgcat::mcset de "Auto-subscribe to other's user mood notifications."     "Benachrichtigungen über die Kontakt-Gemütslagen Anderer automatisch abonnieren."
 ::msgcat::mcset de "Cannot publish empty mood"                              "Unausgefüllte Gemütslage kann nicht veröffentlicht werden"
 ::msgcat::mcset de "Mood"                                                   "Gemütslage"
 ::msgcat::mcset de "Mood:"                                                  "Gemütslage:"
 ::msgcat::mcset de "Publish"                                                "Veröffentlichen"
 ::msgcat::mcset de "Unpublish"                                              "Zurückziehen"
-::msgcat::mcset de "Publish user mood"                                      "Benutzer-Gemütslage veröffentlichen"
-::msgcat::mcset de "Unpublish user mood"                                    "Benutzer-Gemütslage zurückziehen"
+::msgcat::mcset de "Publish user mood"                                      "Eigene Kontakt-Gemütslage veröffentlichen..."
+::msgcat::mcset de "Unpublish user mood"                                    "Eigene Kontakt-Gemütslage zurückziehen"
 ::msgcat::mcset de "Publishing is only possible while being online"         "Veröffentlichung nur möglich wenn 'Online'"
 ::msgcat::mcset de "Unpublishing is only possible while being online"       "Zurückziehung nur möglich wenn 'Online'"
 ::msgcat::mcset de "Unsubscribe"                                            "Abmelden/Zurückziehen"
 ::msgcat::mcset de "Use connection:"                                        "Benutze Verbindung:"
-::msgcat::mcset de "User mood"                                              "Benutzer-Gemütslage"
-::msgcat::mcset de "User mood publishing failed: %s"                        "Veröffentlichen der Benutzer-Gemütslage misslungen: %s"
-::msgcat::mcset de "User mood unpublishing failed: %s"                      "Zurückziehen der Benutzer-Gemütslage misslungen: %s"
+::msgcat::mcset de "User mood"                                              "Kontakt-Gemütslage"
+::msgcat::mcset de "User mood publishing failed: %s"                        "Veröffentlichen der Kontakt-Gemütslage misslungen: %s"
+::msgcat::mcset de "User mood unpublishing failed: %s"                      "Zurückziehen der Kontakt-Gemütslage misslungen: %s"
 ::msgcat::mcset de "\n\tMood: %s"                                           "\n\tGemütslage: %s"
-::msgcat::mcset de "\n\tUser's mood subscription: %s"                       "\n\tGemütslagen-Anmeldung des Benutzers: %s"
+::msgcat::mcset de "\n\tUser's mood subscription: %s"                       "\n\tGemütslagen-Anmeldung des Kontakts: %s"
 
 ::msgcat::mcset de "afraid"                                                 "ängstlich"
 ::msgcat::mcset de "amazed"                                                 "erstaunt"
@@ -1621,23 +1631,23 @@
 ::msgcat::mcset de "%s's tune changed to %s - %s"                           "Musik für %s geändert in  %s - %s"
 ::msgcat::mcset de "%s's tune is unset"                                     "Musik für %s ist nicht gesetzt"
 ::msgcat::mcset de "Artist:"                                                "Interpret:"
-::msgcat::mcset de "Auto-subscribe to other's user tune"                    "Benutzer-Musik Anderer automatisch abonnieren"
-::msgcat::mcset de "Auto-subscribe to other's user tune notifications."     "Benachrichtigungen über die Benutzer-Musik Anderer automatisch abonnieren."
+::msgcat::mcset de "Auto-subscribe to other's user tune"                    "Kontakt-Musik Anderer automatisch abonnieren"
+::msgcat::mcset de "Auto-subscribe to other's user tune notifications."     "Benachrichtigungen über die Kontakt-Musik Anderer automatisch abonnieren."
 ::msgcat::mcset de "Length:"                                                "Länge:"
-::msgcat::mcset de "Publish user tune"                                      "Benutzer-Musik veröffentlichen"
-::msgcat::mcset de "Unpublish user tune"                                    "Benutzer-Musik zurückziehen"
+::msgcat::mcset de "Publish user tune"                                      "Eigene Kontakt-Musik veröffentlichen..."
+::msgcat::mcset de "Unpublish user tune"                                    "Eigene Kontakt-Musik zurückziehen"
 ::msgcat::mcset de "Source:"                                                "Quelle:"
 ::msgcat::mcset de "Track:"                                                 "Index:"
 ::msgcat::mcset de "URI:"                                                   "URI:"
-::msgcat::mcset de "User tune"                                              "Benutzer-Musik"
-::msgcat::mcset de "User tune publishing failed: %s"                        "Veröffentlichen der Benutzer-Musik misslungen: %s"
-::msgcat::mcset de "User tune unpublishing failed: %s"                      "Zurückziehen der Benutzer-Musik misslungen: %s"
+::msgcat::mcset de "User tune"                                              "Kontakt-Musik"
+::msgcat::mcset de "User tune publishing failed: %s"                        "Veröffentlichen der Kontakt-Musik misslungen: %s"
+::msgcat::mcset de "User tune unpublishing failed: %s"                      "Zurückziehen der Kontakt-Musik misslungen: %s"
 ::msgcat::mcset de "\n\tTune: %s - %s"                                      "\n\tMusik: %s - %s"
-::msgcat::mcset de "\n\tUser's tune subscription: %s"                       "\n\tMusik-Anmeldung des Benutzers: %s"
+::msgcat::mcset de "\n\tUser's tune subscription: %s"                       "\n\tMusik-Anmeldung des Kontakts: %s"
 
 # .../plugins/richtext/emoticons.tcl
 ::msgcat::mcset de "Handle ROTFL/LOL smileys -- those like :))) -- by \"consuming\" all that parens and rendering the whole word with appropriate icon." "ROTFL/LOL Smileys, wie z. B. :-))), derart behandeln, daß alle Paare entfernt werden und das Ganze mit dem zugehörigen Icon dargestellt wird."
-::msgcat::mcset de "Handling of \"emoticons\". Emoticons (also known as \"smileys\") are small pictures resembling a human face used to represent user's emotion. They are typed in as special mnemonics like :) or can be inserted using menu." "Optionen für die Behandlung von Emoticons.\n'Emoticons' (auch als 'Smileys' bekannt) sind kleine, einem menschlichen Gesicht gleichende Bilder, die die Emotionen des Benutzers repräsentieren sollen. Sie werden mit einer speziellen Mnemonik wie z. B. :-) oder über ein Menü eingegeben."
+::msgcat::mcset de "Handling of \"emoticons\". Emoticons (also known as \"smileys\") are small pictures resembling a human face used to represent user's emotion. They are typed in as special mnemonics like :) or can be inserted using menu." "Optionen für die Behandlung von Emoticons.\n'Emoticons' (auch als 'Smileys' bekannt) sind kleine, einem menschlichen Gesicht gleichende Bilder, die die Emotionen des Kontakts repräsentieren sollen. Sie werden mit einer speziellen Mnemonik wie z. B. :-) oder über ein Menü eingegeben."
 ::msgcat::mcset de "Show images for emoticons."                             "Bilder für Emoticons anzeigen."
 ::msgcat::mcset de "Tkabber emoticons theme. To make new theme visible for Tkabber put it to some subdirectory of %s." "Tkabber Emoticon-Thema. Um es für Tkabber sichtbar zu machen, muß es in einem Unterordner von %s platziert werden."
 ::msgcat::mcset de "Use only whole words for emoticons."                    "Nur ganze Wörter als Emoticons benutzen."
@@ -1664,13 +1674,23 @@
 ::msgcat::mcset de "Store"                                                  "Sichern"
 ::msgcat::mcset de "Storing roster notes failed: %s"                        "Sichern der Roster-Notizen misslungen: %s"
 
+# .../plugins/roster/backup.tcl
+::msgcat::mcset de "Error restoring roster contacts: %s"                    "Fehler bei der Wiederherstellung der Roster-Kontakte: %s"
+::msgcat::mcset de "Roster restoration completed"                           "Roster-Wiederherstellung abgeschlossen"
+
+# .../plugins/roster/bkup_annotations.tcl
+::msgcat::mcset de "Error restoring annotations: %s"                        "Fehler bei der Wiederherstellung der Roster-Notizen: %s"
+
+# .../plugins/roster/bkup_conferences.tcl
+::msgcat::mcset de "Error restoring conference bookmarks: %s"               "Fehler bei der Wiederherstellung der Konferenz-Lesezeichen: %s"
+
 # .../plugins/roster/cache_categories.tcl
 ::msgcat::mcset de "Cached service categories and types (from disco#info)." "Zwischengespeicherte Dienst-Kategorien und -Typen (von disco#info)."
 
 # .../plugins/roster/conferenceinfo.tcl
 ::msgcat::mcset de "Interval (in minutes) after error reply on request of participants list." "Wartezeit nach einer Fehler-Antwort auf Abfragen der Teilnehmer-Listen (in Minuten)."
 ::msgcat::mcset de "Interval (in minutes) between requests of participants list." "Zeitraum zwischen den Abfragen der Teilnehmer-Listen (in Minuten)."
-::msgcat::mcset de "Options for Conference Info module, that allows you to see list of participants in roster popup, regardless of whether you are currently joined with the conference." "Optionen für das Konferenz-Informations Modul, welches erlaubt, die Liste der Teilnehmer im Eintrags-Tooltip einzusehen, unabhängig davon, ob man der Konferenz derzeit beiwohnt oder nicht."
+::msgcat::mcset de "Options for Conference Info module, that allows you to see list of participants in roster popup, regardless of whether you are currently joined with the conference." "Optionen für das Konferenz-Informations Modul.\nDieses erlaubt, die Liste der Konferenz-Teilnehmer im zugehörigen Eintrags-Tooltip einzusehen, unabhängig davon, ob man der Konferenz derzeit beiwohnt oder nicht."
 ::msgcat::mcset de "Periodically browse roster conferences"                 "Konferenzen regelmäßig durchsuchen"
 ::msgcat::mcset de "Use this module"                                        "Dieses Modul benutzen."
 ::msgcat::mcset de "\nRoom is empty at %s"                                  "\nKonferenz-Raum ist leer um %s"
@@ -1692,15 +1712,15 @@
 
 # .../plugins/roster/fetch_nicknames.tcl
 ::msgcat::mcset de "Fetch nickname"                                         "Nicknamen abrufen"
-::msgcat::mcset de "Fetch user nicknames"                                   "Benutzer-Nicknamen abrufen"
+::msgcat::mcset de "Fetch user nicknames"                                   "Kontakt-Nicknamen abrufen"
 
 # .../plugins/roster/rosterx.tcl
-::msgcat::mcset de "Attached user:"                                         "Angehängter Benutzer:"
-::msgcat::mcset de "Contact Information"                                    "Benutzer-Informationen"
-::msgcat::mcset de "No users in roster..."                                  "Keine Benutzer im Roster..."
+::msgcat::mcset de "Attached user:"                                         "Angehängter Kontakt:"
+::msgcat::mcset de "Contact Information"                                    "Kontakt-Informationen"
+::msgcat::mcset de "No users in roster..."                                  "Keine Kontakte im Roster..."
 ::msgcat::mcset de "Send"                                                   "Senden"
-::msgcat::mcset de "Send contacts to %s"                                    "Benutzer an %s senden"
-::msgcat::mcset de "Send users..."                                          "Benutzer senden..."
+::msgcat::mcset de "Send contacts to %s"                                    "Kontakte an %s senden"
+::msgcat::mcset de "Send users..."                                          "Kontakte senden..."
 
 # .../plugins/search/rawxml.tcl
 ::msgcat::mcset de "Search down"                                            "Abwärts suchen"

Modified: trunk/tkabber/plugins/chat/histool.tcl
===================================================================
--- trunk/tkabber/plugins/chat/histool.tcl	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/plugins/chat/histool.tcl	2008-03-23 08:04:51 UTC (rev 1397)
@@ -26,7 +26,11 @@
 
 proc histool::browse args {
     if {[is_unsupported]} {
-	tk_messageBox -message [::msgcat::mc "Unsupported log dir format"]
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
+		-message [::msgcat::mc "Unsupported log dir format"]
 	return
     }
 

Modified: trunk/tkabber/plugins/pep/user_activity.tcl
===================================================================
--- trunk/tkabber/plugins/pep/user_activity.tcl	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/plugins/pep/user_activity.tcl	2008-03-23 08:04:51 UTC (rev 1397)
@@ -132,6 +132,10 @@
 
     hook::add finload_hook \
 	    [namespace current]::on_init 60
+    hook::add connected_hook \
+	    [namespace current]::on_connect_disconnect
+    hook::add disconnected_hook \
+	    [namespace current]::on_connect_disconnect
     hook::add roster_jid_popup_menu_hook \
 	    [namespace current]::add_roster_pep_menu_item
     hook::add roster_user_popup_info_hook \
@@ -249,7 +253,7 @@
 	    }
 	}
     }
-    
+
     if {[string equal $res OK]} {
 	set substatus($connid,$jid) none
 	array unset activity *,$jid
@@ -456,14 +460,42 @@
     set mm [menu $m.activity -tearoff $::ifacetk::options(show_tearoffs)]
     $m add cascade -menu $mm \
 	   -label [::msgcat::mc "User activity"]
-    $mm add command -label [::msgcat::mc "Publish user activity"] \
+    $mm add command -label [::msgcat::mc "Publish user activity..."] \
+	    -state disabled \
 	    -command [namespace current]::show_publish_dialog
     $mm add command -label [::msgcat::mc "Unpublish user activity"] \
+	    -state disabled \
 	    -command [namespace current]::show_unpublish_dialog
     $mm add checkbutton -label [::msgcat::mc "Auto-subscribe to other's user activity"] \
 	    -variable [namespace current]::options(auto-subscribe)
-}   
+}
 
+proc activity::on_connect_disconnect {args} {
+    set mm [pep::get_main_menu_pep_submenu].activity
+    set idx [expr {$::ifacetk::options(show_tearoffs) ? 1 : 0}]
+
+    switch -- [llength [jlib::connections]] {
+	0 {
+	    $mm entryconfigure $idx -state disabled
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user activity"] \
+		-state disabled
+	}
+	1 {
+	    $mm entryconfigure $idx -state normal
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user activity"] \
+		-state normal
+	}
+	default {
+	    $mm entryconfigure $idx -state normal
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user activity..."] \
+		-state normal
+	}
+    }
+}
+
 proc activity::show_publish_dialog {} {
     variable d2m
     variable activityvalue
@@ -477,7 +509,10 @@
 
     set connids [jlib::connections]
     if {[llength $connids] == 0} {
-	tk_messageBox -icon error -title [::msgcat::mc "Error"] \
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Publishing is only possible\
 					while being online"]
 	return
@@ -569,7 +604,10 @@
     variable myjid
 
     if {$activityvalue == ""} {
-	tk_messageBox -icon error -title [::msgcat::mc "Error"] \
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Cannot publish empty activity"]
 	return
     }
@@ -605,8 +643,11 @@
 	}
     }
 
-    tk_messageBox -icon error -title [::msgcat::mc "Error"] \
-	-message [::msgcat::mc "User activity publishing failed: %s" $error]
+    NonmodalMessageDlg [epath] \
+	    -aspect 50000 \
+	    -icon error \
+	    -title [::msgcat::mc "Error"] \
+	    -message [::msgcat::mc "User activity publishing failed: %s" $error]
 }
 
 proc activity::show_unpublish_dialog {} {
@@ -619,7 +660,10 @@
 
     set connids [jlib::connections]
     if {[llength $connids] == 0} {
-	tk_messageBox -icon error -title [::msgcat::mc "Error"] \
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Unpublishing is only possible\
 					while being online"]
 	return
@@ -678,6 +722,9 @@
 proc activity::unpublish_result {res child} {
     switch -- $res {
 	ERR {
+	    if {[lindex [error_type_condition $child] 1] == "item-not-found"} {
+		return
+	    }
 	    set error [error_to_string $child]
 	}
 	default {
@@ -685,8 +732,11 @@
 	}
     }
 
-    tk_messageBox -icon error -title [::msgcat::mc "Error"] \
-	-message [::msgcat::mc "User activity unpublishing failed: %s" $error]
+    NonmodalMessageDlg [epath] \
+	    -aspect 50000 \
+	    -icon error \
+	    -title [::msgcat::mc "Error"] \
+	    -message [::msgcat::mc "User activity unpublishing failed: %s" $error]
 }
 
 proc activity::provide_userinfo {notebook connid jid editable} {

Modified: trunk/tkabber/plugins/pep/user_location.tcl
===================================================================
--- trunk/tkabber/plugins/pep/user_location.tcl	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/plugins/pep/user_location.tcl	2008-03-23 08:04:51 UTC (rev 1397)
@@ -18,6 +18,10 @@
 
     hook::add finload_hook \
 	    [namespace current]::on_init 60
+    hook::add connected_hook \
+	    [namespace current]::on_connect_disconnect
+    hook::add disconnected_hook \
+	    [namespace current]::on_connect_disconnect
     hook::add roster_jid_popup_menu_hook \
 	    [namespace current]::add_roster_pep_menu_item
     hook::add roster_user_popup_info_hook \
@@ -162,7 +166,7 @@
 	    }
 	}
     }
-    
+
     if {[string equal $res OK]} {
 	set substatus($connid,$jid) none
 	foreach f $fields {
@@ -332,14 +336,42 @@
     set mm [menu $m.geoloc -tearoff $::ifacetk::options(show_tearoffs)]
     $m add cascade -menu $mm \
 	   -label [::msgcat::mc "User location"]
-    $mm add command -label [::msgcat::mc "Publish user location"] \
+    $mm add command -label [::msgcat::mc "Publish user location..."] \
+	    -state disabled \
 	    -command [namespace current]::show_publish_dialog
     $mm add command -label [::msgcat::mc "Unpublish user location"] \
+	    -state disabled \
 	    -command [namespace current]::show_unpublish_dialog
     $mm add checkbutton -label [::msgcat::mc "Auto-subscribe to other's user location"] \
 	    -variable [namespace current]::options(auto-subscribe)
-}   
+}
 
+proc geoloc::on_connect_disconnect {args} {
+    set mm [pep::get_main_menu_pep_submenu].geoloc
+    set idx [expr {$::ifacetk::options(show_tearoffs) ? 1 : 0}]
+
+    switch -- [llength [jlib::connections]] {
+	0 {
+	    $mm entryconfigure $idx -state disabled
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user location"] \
+		-state disabled
+	}
+	1 {
+	    $mm entryconfigure $idx -state normal
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user location"] \
+		-state normal
+	}
+	default {
+	    $mm entryconfigure $idx -state normal
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user location..."] \
+		-state normal
+	}
+    }
+}
+
 proc geoloc::show_publish_dialog {} {
     variable fields
     variable labels
@@ -355,7 +387,10 @@
 
     set connids [jlib::connections]
     if {[llength $connids] == 0} {
-	tk_messageBox -icon error -title [::msgcat::mc "Error"] \
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Publishing is only possible\
 					while being online"]
 	return
@@ -438,8 +473,11 @@
 	}
     }
 
-    tk_messageBox -icon error -title [::msgcat::mc "Error"] \
-	-message [::msgcat::mc "User location publishing failed: %s" $error]
+    NonmodalMessageDlg [epath] \
+	    -aspect 50000 \
+	    -icon error \
+	    -title [::msgcat::mc "Error"] \
+	    -message [::msgcat::mc "User location publishing failed: %s" $error]
 }
 
 proc geoloc::show_unpublish_dialog {} {
@@ -452,7 +490,10 @@
 
     set connids [jlib::connections]
     if {[llength $connids] == 0} {
-	tk_messageBox -icon error -title [::msgcat::mc "Error"] \
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Unpublishing is only possible\
 					while being online"]
 	return
@@ -511,6 +552,9 @@
 proc geoloc::unpublish_result {res child} {
     switch -- $res {
 	ERR {
+	    if {[lindex [error_type_condition $child] 1] == "item-not-found"} {
+		return
+	    }
 	    set error [error_to_string $child]
 	}
 	default {
@@ -518,8 +562,11 @@
 	}
     }
 
-    tk_messageBox -icon error -title [::msgcat::mc "Error"] \
-	-message [::msgcat::mc "User location unpublishing failed: %s" $error]
+    NonmodalMessageDlg [epath] \
+	    -aspect 50000 \
+	    -icon error \
+	    -title [::msgcat::mc "Error"] \
+	    -message [::msgcat::mc "User location unpublishing failed: %s" $error]
 }
 
 proc geoloc::provide_userinfo {notebook connid jid editable} {

Modified: trunk/tkabber/plugins/pep/user_mood.tcl
===================================================================
--- trunk/tkabber/plugins/pep/user_mood.tcl	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/plugins/pep/user_mood.tcl	2008-03-23 08:04:51 UTC (rev 1397)
@@ -92,6 +92,10 @@
 
     hook::add finload_hook \
 	    [namespace current]::on_init 60
+    hook::add connected_hook \
+	    [namespace current]::on_connect_disconnect
+    hook::add disconnected_hook \
+	    [namespace current]::on_connect_disconnect
     hook::add roster_jid_popup_menu_hook \
 	    [namespace current]::add_roster_pep_menu_item
     hook::add roster_user_popup_info_hook \
@@ -209,7 +213,7 @@
 	    }
 	}
     }
-    
+
     if {[string equal $res OK]} {
 	set substatus($connid,$jid) none
 	catch {unset mood(mood,$connid,$jid)}
@@ -390,14 +394,42 @@
     set mm [menu $m.mood -tearoff $::ifacetk::options(show_tearoffs)]
     $m add cascade -menu $mm \
 	   -label [::msgcat::mc "User mood"]
-    $mm add command -label [::msgcat::mc "Publish user mood"] \
+    $mm add command -label [::msgcat::mc "Publish user mood..."] \
+	    -state disabled \
 	    -command [namespace current]::show_publish_dialog
     $mm add command -label [::msgcat::mc "Unpublish user mood"] \
+	    -state disabled \
 	    -command [namespace current]::show_unpublish_dialog
     $mm add checkbutton -label [::msgcat::mc "Auto-subscribe to other's user mood"] \
 	    -variable [namespace current]::options(auto-subscribe)
-}   
+}
 
+proc mood::on_connect_disconnect {args} {
+    set mm [pep::get_main_menu_pep_submenu].mood
+    set idx [expr {$::ifacetk::options(show_tearoffs) ? 1 : 0}]
+
+    switch -- [llength [jlib::connections]] {
+	0 {
+	    $mm entryconfigure $idx -state disabled
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user mood"] \
+		-state disabled
+	}
+	1 {
+	    $mm entryconfigure $idx -state normal
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user mood"] \
+		-state normal
+	}
+	default {
+	    $mm entryconfigure $idx -state normal
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user mood..."] \
+		-state normal
+	}
+    }
+}
+
 proc mood::show_publish_dialog {} {
     variable d2m
     variable moodvalue
@@ -411,7 +443,10 @@
 
     set connids [jlib::connections]
     if {[llength $connids] == 0} {
-	tk_messageBox -icon error -title [::msgcat::mc "Error"] \
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Publishing is only possible\
 					while being online"]
 	return
@@ -463,7 +498,10 @@
     variable myjid
 
     if {$moodvalue == ""} {
-	tk_messageBox -icon error -title [::msgcat::mc "Error"] \
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Cannot publish empty mood"]
 	return
     }
@@ -493,8 +531,11 @@
 	}
     }
 
-    tk_messageBox -icon error -title [::msgcat::mc "Error"] \
-	-message [::msgcat::mc "User mood publishing failed: %s" $error]
+    NonmodalMessageDlg [epath] \
+	    -aspect 50000 \
+	    -icon error \
+	    -title [::msgcat::mc "Error"] \
+	    -message [::msgcat::mc "User mood publishing failed: %s" $error]
 }
 
 proc mood::show_unpublish_dialog {} {
@@ -507,7 +548,10 @@
 
     set connids [jlib::connections]
     if {[llength $connids] == 0} {
-	tk_messageBox -icon error -title [::msgcat::mc "Error"] \
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Unpublishing is only possible\
 					while being online"]
 	return
@@ -566,6 +610,9 @@
 proc mood::unpublish_result {res child} {
     switch -- $res {
 	ERR {
+	    if {[lindex [error_type_condition $child] 1] == "item-not-found"} {
+		return
+	    }
 	    set error [error_to_string $child]
 	}
 	default {
@@ -573,8 +620,11 @@
 	}
     }
 
-    tk_messageBox -icon error -title [::msgcat::mc "Error"] \
-	-message [::msgcat::mc "User mood unpublishing failed: %s" $error]
+    NonmodalMessageDlg [epath] \
+	    -aspect 50000 \
+	    -icon error \
+	    -title [::msgcat::mc "Error"] \
+	    -message [::msgcat::mc "User mood unpublishing failed: %s" $error]
 }
 
 proc mood::provide_userinfo {notebook connid jid editable} {

Modified: trunk/tkabber/plugins/pep/user_tune.tcl
===================================================================
--- trunk/tkabber/plugins/pep/user_tune.tcl	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/plugins/pep/user_tune.tcl	2008-03-23 08:04:51 UTC (rev 1397)
@@ -18,6 +18,10 @@
 
     hook::add finload_hook \
 	    [namespace current]::on_init 60
+    hook::add connected_hook \
+	    [namespace current]::on_connect_disconnect
+    hook::add disconnected_hook \
+	    [namespace current]::on_connect_disconnect
     hook::add roster_jid_popup_menu_hook \
 	    [namespace current]::add_roster_pep_menu_item
     hook::add roster_user_popup_info_hook \
@@ -135,7 +139,7 @@
 	    }
 	}
     }
-    
+
     if {[string equal $res OK]} {
 	set substatus($connid,$jid) none
 	catch {unset tune(artist,$connid,$jid)}
@@ -340,14 +344,42 @@
     set mm [menu $m.tune -tearoff $::ifacetk::options(show_tearoffs)]
     $m add cascade -menu $mm \
 	   -label [::msgcat::mc "User tune"]
-    $mm add command -label [::msgcat::mc "Publish user tune"] \
+    $mm add command -label [::msgcat::mc "Publish user tune..."] \
+	    -state disabled \
 	    -command [namespace current]::show_publish_dialog
     $mm add command -label [::msgcat::mc "Unpublish user tune"] \
+	    -state disabled \
 	    -command [namespace current]::show_unpublish_dialog
     $mm add checkbutton -label [::msgcat::mc "Auto-subscribe to other's user tune"] \
 	    -variable [namespace current]::options(auto-subscribe)
-}   
+}
 
+proc tune::on_connect_disconnect {args} {
+    set mm [pep::get_main_menu_pep_submenu].tune
+    set idx [expr {$::ifacetk::options(show_tearoffs) ? 1 : 0}]
+
+    switch -- [llength [jlib::connections]] {
+	0 {
+	    $mm entryconfigure $idx -state disabled
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user tune"] \
+		-state disabled
+	}
+	1 {
+	    $mm entryconfigure $idx -state normal
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user tune"] \
+		-state normal
+	}
+	default {
+	    $mm entryconfigure $idx -state normal
+	    $mm entryconfigure [incr idx] \
+		-label [::msgcat::mc "Unpublish user tune..."] \
+		-state normal
+	}
+    }
+}
+
 proc tune::show_publish_dialog {} {
     variable tuneartist
     variable tunetitle
@@ -364,7 +396,10 @@
 
     set connids [jlib::connections]
     if {[llength $connids] == 0} {
-	tk_messageBox -icon error -title [::msgcat::mc "Error"] \
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Publishing is only possible\
 					while being online"]
 	return
@@ -462,8 +497,11 @@
 	}
     }
 
-    tk_messageBox -icon error -title [::msgcat::mc "Error"] \
-	-message [::msgcat::mc "User tune publishing failed: %s" $error]
+    NonmodalMessageDlg [epath] \
+	    -aspect 50000 \
+	    -icon error \
+	    -title [::msgcat::mc "Error"] \
+	    -message [::msgcat::mc "User tune publishing failed: %s" $error]
 }
 
 proc tune::show_unpublish_dialog {} {
@@ -476,7 +514,10 @@
 
     set connids [jlib::connections]
     if {[llength $connids] == 0} {
-	tk_messageBox -icon error -title [::msgcat::mc "Error"] \
+	NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
+		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Unpublishing is only possible\
 					while being online"]
 	return
@@ -535,6 +576,9 @@
 proc tune::unpublish_result {res child} {
     switch -- $res {
 	ERR {
+	    if {[lindex [error_type_condition $child] 1] == "item-not-found"} {
+		return
+	    }
 	    set error [error_to_string $child]
 	}
 	default {
@@ -542,8 +586,11 @@
 	}
     }
 
-    tk_messageBox -icon error -title [::msgcat::mc "Error"] \
-	-message [::msgcat::mc "User tune unpublishing failed: %s" $error]
+    NonmodalMessageDlg [epath] \
+	    -aspect 50000 \
+	    -icon error \
+	    -title [::msgcat::mc "Error"] \
+	    -message [::msgcat::mc "User tune unpublishing failed: %s" $error]
 }
 
 proc tune::provide_userinfo {notebook connid jid editable} {

Modified: trunk/tkabber/plugins/roster/backup.tcl
===================================================================
--- trunk/tkabber/plugins/roster/backup.tcl	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/plugins/roster/backup.tcl	2008-03-23 08:04:51 UTC (rev 1397)
@@ -257,7 +257,9 @@
 	}
 	default {
 	    # TODO check whether do we need to handle TIMEOUT specially
-	    tk_messageBox -icon error -parent . \
+	    NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
 		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Error restoring roster contacts: %s" \
 		    [error_to_string $xmldata]]
@@ -268,7 +270,9 @@
 ###############################################################################
 
 proc rosterbackup::show_restore_completion_dialog {connid continuation} {
-    tk_messageBox -icon info -parent . \
+    NonmodalMessageDlg [epath] \
+	-aspect 50000 \
+	-icon info \
 	-title [::msgcat::mc "Information"] \
 	-message [::msgcat::mc "Roster restoration completed"]
     eval $continuation

Modified: trunk/tkabber/plugins/roster/bkup_annotations.tcl
===================================================================
--- trunk/tkabber/plugins/roster/bkup_annotations.tcl	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/plugins/roster/bkup_annotations.tcl	2008-03-23 08:04:51 UTC (rev 1397)
@@ -84,7 +84,9 @@
 	}
 	default {
 	    # TODO check whether do we need to handle TIMEOUT specially
-	    tk_messageBox -icon error -parent . \
+	    NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
 		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Error restoring annotations: %s" \
 		    [error_to_string $xmldata]]

Modified: trunk/tkabber/plugins/roster/bkup_conferences.tcl
===================================================================
--- trunk/tkabber/plugins/roster/bkup_conferences.tcl	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/plugins/roster/bkup_conferences.tcl	2008-03-23 08:04:51 UTC (rev 1397)
@@ -95,7 +95,9 @@
 	}
 	default {
 	    # TODO check whether TIMEOUT should be processed separately
-	    tk_messageBox -icon error -parent . \
+	    NonmodalMessageDlg [epath] \
+		-aspect 50000 \
+		-icon error \
 		-title [::msgcat::mc "Error"] \
 		-message [::msgcat::mc "Error restoring conference bookmarks: %s" \
 		    [error_to_string $xmldata]]

Modified: trunk/tkabber/utils.tcl
===================================================================
--- trunk/tkabber/utils.tcl	2008-03-23 08:02:10 UTC (rev 1396)
+++ trunk/tkabber/utils.tcl	2008-03-23 08:04:51 UTC (rev 1397)
@@ -205,7 +205,6 @@
 }
 
 proc NonmodalMessageDlg {path args} {
-
     set icon "none"
     set title ""
     set message ""
@@ -564,4 +563,16 @@
     catch {unset ::hi($w)}
 }
 
+##################################################################
+
+proc epath {} {
+    global EPathNum
+    if {![info exists EPathNum]} {
+	set EPathNum 0
+    } else {
+	incr EPathNum
+    }
+    return .errorpath$EPathNum
+}
+
 # vim:ts=8:sw=4:sts=4:noet



More information about the Tkabber-dev mailing list