# HG changeset patch # User SHiNE CsyFeK # Date 1225370607 0 # Node ID c3a211cea89fd8f0d4c0bfc345abcb981c7865e7 # Parent d971d5369b4306d38da5bcf594ee982076465ac3# Parent c06b85e1d02042575b15c7867da2fcb61b9dff64 propagate from branch 'im.pidgin.pidgin' (head 9287a75e196278c66cd6724dc8d30a471a029c27) to branch 'im.pidgin.pidgin.openq' (head 52b673726ba47e370199600825aae32d47e76d6c) diff -r d971d5369b43 -r c3a211cea89f COPYRIGHT --- a/COPYRIGHT Thu Oct 30 12:41:36 2008 +0000 +++ b/COPYRIGHT Thu Oct 30 12:43:27 2008 +0000 @@ -305,6 +305,7 @@ Ted Percival Eduardo Pérez Matt Perry +Diego Pettenò Nathan Peterson Sebastián E. Peyrott Celso Pinto diff -r d971d5369b43 -r c3a211cea89f libpurple/blist.c --- a/libpurple/blist.c Thu Oct 30 12:41:36 2008 +0000 +++ b/libpurple/blist.c Thu Oct 30 12:43:27 2008 +0000 @@ -20,6 +20,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA * */ +#define PURPLE_BLIST_STRUCTS + #include "internal.h" #include "blist.h" #include "conversation.h" @@ -41,7 +43,6 @@ static guint save_timer = 0; static gboolean blist_loaded = FALSE; - /********************************************************************* * Private utility functions * *********************************************************************/ diff -r d971d5369b43 -r c3a211cea89f libpurple/blist.h --- a/libpurple/blist.h Thu Oct 30 12:41:36 2008 +0000 +++ b/libpurple/blist.h Thu Oct 30 12:43:27 2008 +0000 @@ -89,6 +89,8 @@ /* Data Structures */ /**************************************************************************/ +#if !(defined PURPLE_HIDE_STRUCTS) || (defined PURPLE_BLIST_STRUCTS) + /** * A Buddy list node. This can represent a group, a buddy, or anything else. * This is a base class for struct buddy and struct group and for anything @@ -154,6 +156,8 @@ PurpleAccount *account; /**< The account this chat is attached to */ }; +#endif /* PURPLE_HIDE_STRUCTS && PURPLE_BLIST_STRUCTS */ + /** * The Buddy List diff -r d971d5369b43 -r c3a211cea89f libpurple/plugins/autoaccept.c --- a/libpurple/plugins/autoaccept.c Thu Oct 30 12:41:36 2008 +0000 +++ b/libpurple/plugins/autoaccept.c Thu Oct 30 12:43:27 2008 +0000 @@ -104,7 +104,7 @@ return; } - node = node->parent; + node = purple_blist_node_get_parent(node); g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(node)); pref = purple_prefs_get_string(PREF_PATH); @@ -179,7 +179,7 @@ save_cb(PurpleBlistNode *node, int choice) { if (PURPLE_BLIST_NODE_IS_BUDDY(node)) - node = node->parent; + node = purple_blist_node_get_parent(node); g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(node)); purple_blist_node_set_int(node, "autoaccept", choice); } @@ -190,7 +190,7 @@ char *message; if (PURPLE_BLIST_NODE_IS_BUDDY(node)) - node = node->parent; + node = purple_blist_node_get_parent(node); g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT(node)); message = g_strdup_printf(_("When a file-transfer request arrives from %s"), diff -r d971d5369b43 -r c3a211cea89f libpurple/plugins/log_reader.c --- a/libpurple/plugins/log_reader.c Thu Oct 30 12:41:36 2008 +0000 +++ b/libpurple/plugins/log_reader.c Thu Oct 30 12:43:27 2008 +0000 @@ -661,8 +661,10 @@ username = g_strdup(purple_normalize(account, account->username)); } - if (buddy) - savedfilename = purple_blist_node_get_string(&buddy->node, "log_reader_msn_log_filename"); + if (buddy) { + savedfilename = purple_blist_node_get_string((PurpleBlistNode *)buddy, + "log_reader_msn_log_filename"); + } if (savedfilename) { /* As a special case, we allow the null string to kill the parsing @@ -822,7 +824,8 @@ * detected for both buddies. */ if (buddy && logfile) { - purple_blist_node_set_string(&buddy->node, "log_reader_msn_log_filename", logfile); + PurpleBlistNode *node = (PurpleBlistNode *)buddy; + purple_blist_node_set_string(node, "log_reader_msn_log_filename", logfile); g_free(logfile); } @@ -981,8 +984,8 @@ gboolean from_name_matches; gboolean to_name_matches; - if (buddy && buddy->alias) - their_name = buddy->alias; + if (buddy) + their_name = purple_buddy_get_alias(buddy); if (log->account->alias) { @@ -1018,13 +1021,14 @@ } else if (to_name_matches) { name_guessed = NAME_GUESS_THEM; } else { - if (buddy && buddy->alias) { - char *alias = g_strdup(buddy->alias); + if (buddy) { + const char *server_alias = NULL; + char *alias = g_strdup(purple_buddy_get_alias(buddy)); + char *temp; /* "Truncate" the string at the first non-alphanumeric * character. The idea is to relax the comparison. */ - char *temp; for (temp = alias; *temp ; temp++) { if (!isalnum(*temp)) { *temp = '\0'; @@ -1056,9 +1060,9 @@ } } else if (to_name_matches) { name_guessed = NAME_GUESS_ME; - } else if (buddy->server_alias) { + } else if ((server_alias = purple_buddy_get_server_alias(buddy))) { friendly_name_length = - strlen(buddy->server_alias); + strlen(server_alias); /* Try to guess which user is them. * The first step is to determine if either of @@ -1068,13 +1072,13 @@ */ from_name_matches = (purple_str_has_prefix( from_name, - buddy->server_alias) && + server_alias) && !isalnum(*(from_name + friendly_name_length))); to_name_matches = to_name && ( (purple_str_has_prefix( - to_name, buddy->server_alias) && + to_name, server_alias) && !isalnum(*(to_name + friendly_name_length)))); @@ -1565,18 +1569,30 @@ g_string_append(formatted, ""); footer = NULL; } else if (strstr(line, " signed off ")) { - if (buddy != NULL && buddy->alias) + const char *alias = NULL; + + if (buddy != NULL) + alias = purple_buddy_get_alias(buddy); + + if (alias != NULL) { g_string_append_printf(formatted, - _("%s has signed off."), buddy->alias); - else + _("%s has signed off."), alias); + } else { g_string_append_printf(formatted, _("%s has signed off."), log->name); + } line = ""; } else if (strstr(line, " signed on ")) { - if (buddy != NULL && buddy->alias) - g_string_append(formatted, buddy->alias); + const char *alias = NULL; + + if (buddy != NULL) + alias = purple_buddy_get_alias(buddy); + + if (alias != NULL) + g_string_append(formatted, alias); else g_string_append(formatted, log->name); + line = " logged in."; } else if (purple_str_has_prefix(line, "One or more messages may have been undeliverable.")) { @@ -1631,11 +1647,15 @@ footer = ""; } } else if (purple_str_has_prefix(line, data->their_nickname)) { - if (buddy != NULL && buddy->alias) { - line += strlen(data->their_nickname) + 2; - g_string_append_printf(formatted, - "" - "%s: ", buddy->alias); + if (buddy != NULL) { + const char *alias = purple_buddy_get_alias(buddy); + + if (alias != NULL) { + line += strlen(data->their_nickname) + 2; + g_string_append_printf(formatted, + "" + "%s: ", alias); + } } } else { const char *line2 = strstr(line, ":"); @@ -2001,10 +2021,14 @@ g_string_append(formatted, " "); if (is_in_message) { - if (buddy_name != NULL && buddy != NULL && buddy->alias) { + const char *alias = NULL; + + if (buddy_name != NULL && buddy != NULL && + (alias = purple_buddy_get_alias(buddy))) + { g_string_append_printf(formatted, "" - "%s: ", buddy->alias); + "%s: ", alias); } } else { const char *acct_name; diff -r d971d5369b43 -r c3a211cea89f libpurple/plugins/signals-test.c --- a/libpurple/plugins/signals-test.c Thu Oct 30 12:41:36 2008 +0000 +++ b/libpurple/plugins/signals-test.c Thu Oct 30 12:43:27 2008 +0000 @@ -116,8 +116,9 @@ PurpleStatus *status, void *data) { purple_debug_misc("signals test", "buddy-status-changed (%s %s to %s)\n", - buddy->name, purple_status_get_id(old_status), - purple_status_get_id(status)); + purple_buddy_get_name(buddy), + purple_status_get_id(old_status), + purple_status_get_id(status)); } static void @@ -125,25 +126,29 @@ void *data) { purple_debug_misc("signals test", "buddy-idle-changed (%s %s)\n", - buddy->name, old_idle ? "unidled" : "idled"); + purple_buddy_get_name(buddy), + old_idle ? "unidled" : "idled"); } static void buddy_signed_on_cb(PurpleBuddy *buddy, void *data) { - purple_debug_misc("signals test", "buddy-signed-on (%s)\n", buddy->name); + purple_debug_misc("signals test", "buddy-signed-on (%s)\n", + purple_buddy_get_name(buddy)); } static void buddy_signed_off_cb(PurpleBuddy *buddy, void *data) { - purple_debug_misc("signals test", "buddy-signed-off (%s)\n", buddy->name); + purple_debug_misc("signals test", "buddy-signed-off (%s)\n", + purple_buddy_get_name(buddy)); } static void buddy_added_cb(PurpleBuddy *buddy, void *data) { - purple_debug_misc("signals test", "buddy_added_cb (%s)\n", purple_buddy_get_name(buddy)); + purple_debug_misc("signals test", "buddy_added_cb (%s)\n", + purple_buddy_get_name(buddy)); } static void @@ -160,17 +165,27 @@ PurpleChat *c = (PurpleChat *)node; PurpleGroup *g = (PurpleGroup *)node; - if (PURPLE_BLIST_NODE_IS_CONTACT(node)) - purple_debug_misc("signals test", "blist-node-aliased (Contact: %s, %s)\n", p->alias, old_alias); - else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) - purple_debug_misc("signals test", "blist-node-aliased (Buddy: %s, %s)\n", b->name, old_alias); - else if (PURPLE_BLIST_NODE_IS_CHAT(node)) - purple_debug_misc("signals test", "blist-node-aliased (Chat: %s, %s)\n", c->alias, old_alias); - else if (PURPLE_BLIST_NODE_IS_GROUP(node)) - purple_debug_misc("signals test", "blist-node-aliased (Group: %s, %s)\n", g->name, old_alias); - else - purple_debug_misc("signals test", "blist-node-aliased (UNKNOWN: %d, %s)\n", node->type, old_alias); - + if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { + purple_debug_misc("signals test", + "blist-node-aliased (Contact: %s, %s)\n", + purple_contact_get_alias(p), old_alias); + } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { + purple_debug_misc("signals test", + "blist-node-aliased (Buddy: %s, %s)\n", + purple_buddy_get_name(b), old_alias); + } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { + purple_debug_misc("signals test", + "blist-node-aliased (Chat: %s, %s)\n", + purple_chat_get_name(c), old_alias); + } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { + purple_debug_misc("signals test", + "blist-node-aliased (Group: %s, %s)\n", + purple_group_get_name(g), old_alias); + } else { + purple_debug_misc("signals test", + "blist-node-aliased (UNKNOWN: %d, %s)\n", + purple_blist_node_get_type(node), old_alias); + } } static void @@ -181,17 +196,27 @@ PurpleChat *c = (PurpleChat *)node; PurpleGroup *g = (PurpleGroup *)node; - if (PURPLE_BLIST_NODE_IS_CONTACT(node)) - purple_debug_misc("signals test", "blist-node-extended-menu (Contact: %s)\n", p->alias); - else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) - purple_debug_misc("signals test", "blist-node-extended-menu (Buddy: %s)\n", b->name); - else if (PURPLE_BLIST_NODE_IS_CHAT(node)) - purple_debug_misc("signals test", "blist-node-extended-menu (Chat: %s)\n", c->alias); - else if (PURPLE_BLIST_NODE_IS_GROUP(node)) - purple_debug_misc("signals test", "blist-node-extended-menu (Group: %s)\n", g->name); - else - purple_debug_misc("signals test", "blist-node-extended-menu (UNKNOWN: %d)\n", node->type); - + if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { + purple_debug_misc("signals test", + "blist-node-extended-menu (Contact: %s)\n", + purple_contact_get_alias(p)); + } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { + purple_debug_misc("signals test", + "blist-node-extended-menu (Buddy: %s)\n", + purple_buddy_get_name(b)); + } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { + purple_debug_misc("signals test", + "blist-node-extended-menu (Chat: %s)\n", + purple_chat_get_name(c)); + } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { + purple_debug_misc("signals test", + "blist-node-extended-menu (Group: %s)\n", + purple_group_get_name(g)); + } else { + purple_debug_misc("signals test", + "blist-node-extended-menu (UNKNOWN: %d)\n", + purple_blist_node_get_type(node)); + } } diff -r d971d5369b43 -r c3a211cea89f libpurple/plugins/statenotify.c --- a/libpurple/plugins/statenotify.c Thu Oct 30 12:41:36 2008 +0000 +++ b/libpurple/plugins/statenotify.c Thu Oct 30 12:43:27 2008 +0000 @@ -15,13 +15,18 @@ static void write_status(PurpleBuddy *buddy, const char *message) { + PurpleAccount *account = NULL; PurpleConversation *conv; const char *who; char buf[256]; char *escaped; + const gchar *buddy_name = NULL; + + account = purple_buddy_get_account(buddy); + buddy_name = purple_buddy_get_name(buddy); conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, - buddy->name, buddy->account); + buddy_name, account); if (conv == NULL) return; diff -r d971d5369b43 -r c3a211cea89f libpurple/plugins/tcl/tcl_cmds.c --- a/libpurple/plugins/tcl/tcl_cmds.c Thu Oct 30 12:41:36 2008 +0000 +++ b/libpurple/plugins/tcl/tcl_cmds.c Thu Oct 30 12:43:27 2008 +0000 @@ -414,7 +414,7 @@ Tcl_Obj *list, *tclgroup, *tclgrouplist, *tclcontact, *tclcontactlist, *tclbud, **elems, *result; const char *cmds[] = { "alias", "handle", "info", "list", NULL }; enum { CMD_BUDDY_ALIAS, CMD_BUDDY_HANDLE, CMD_BUDDY_INFO, CMD_BUDDY_LIST } cmd; - PurpleBuddyList *blist; + PurpleBlistNodeType type; PurpleBlistNode *node, *gnode, *bnode; PurpleAccount *account; PurpleBuddy *bud; @@ -428,6 +428,7 @@ if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK) return error; + type = purple_blist_node_get_type(node); switch (cmd) { case CMD_BUDDY_ALIAS: if (objc != 3) { @@ -438,10 +439,10 @@ return error; if ((node = tcl_list_to_buddy(interp, count, elems)) == NULL) return TCL_ERROR; - if (node->type == PURPLE_BLIST_CHAT_NODE) + if (type == PURPLE_BLIST_CHAT_NODE) Tcl_SetObjResult(interp, - Tcl_NewStringObj(((PurpleChat *)node)->alias, -1)); - else if (node->type == PURPLE_BLIST_BUDDY_NODE) + Tcl_NewStringObj(purple_chat_get_name((PurpleChat *)node), -1)); + else if (type == PURPLE_BLIST_BUDDY_NODE) Tcl_SetObjResult(interp, Tcl_NewStringObj((char *)purple_buddy_get_alias((PurpleBuddy *)node), -1)); return TCL_OK; @@ -494,15 +495,17 @@ } } list = Tcl_NewListObj(0, NULL); - blist = purple_get_blist(); - for (gnode = blist->root; gnode != NULL; gnode = gnode->next) { + for (gnode = purple_blist_get_root(); gnode != NULL; gnode = purple_blist_node_get_sibling_next(gnode)) { tclgroup = Tcl_NewListObj(0, NULL); Tcl_ListObjAppendElement(interp, tclgroup, Tcl_NewStringObj("group", -1)); Tcl_ListObjAppendElement(interp, tclgroup, - Tcl_NewStringObj(((PurpleGroup *)gnode)->name, -1)); + Tcl_NewStringObj(purple_group_get_name((PurpleGroup *)gnode), -1)); tclgrouplist = Tcl_NewListObj(0, NULL); - for (node = gnode->child; node != NULL; node = node->next) { - switch (node->type) { + for (node = purple_blist_node_get_first_child(gnode); node != NULL; node = purple_blist_node_get_sibling_next(node)) { + PurpleAccount *account; + + type = purple_blist_node_get_type(node); + switch (type) { case PURPLE_BLIST_CONTACT_NODE: tclcontact = Tcl_NewListObj(0, NULL); Tcl_IncrRefCount(tclcontact); @@ -510,17 +513,18 @@ tclcontactlist = Tcl_NewListObj(0, NULL); Tcl_IncrRefCount(tclcontactlist); count = 0; - for (bnode = node->child; bnode != NULL; bnode = bnode ->next) { - if (bnode->type != PURPLE_BLIST_BUDDY_NODE) + for (bnode = purple_blist_node_get_first_child(node); bnode != NULL; bnode = purple_blist_node_get_sibling_next(bnode)) { + if (purple_blist_node_get_type(bnode) != PURPLE_BLIST_BUDDY_NODE) continue; bud = (PurpleBuddy *)bnode; - if (!all && !purple_account_is_connected(bud->account)) + account = purple_buddy_get_account(bud); + if (!all && !purple_account_is_connected(account)) continue; count++; tclbud = Tcl_NewListObj(0, NULL); Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj("buddy", -1)); - Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj(bud->name, -1)); - Tcl_ListObjAppendElement(interp, tclbud, purple_tcl_ref_new(PurpleTclRefAccount, bud->account)); + Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj(purple_buddy_get_name(bud), -1)); + Tcl_ListObjAppendElement(interp, tclbud, purple_tcl_ref_new(PurpleTclRefAccount, account)); Tcl_ListObjAppendElement(interp, tclcontactlist, tclbud); } if (count) { @@ -532,16 +536,17 @@ break; case PURPLE_BLIST_CHAT_NODE: cnode = (PurpleChat *)node; - if (!all && !purple_account_is_connected(cnode->account)) + account = purple_chat_get_account(cnode); + if (!all && !purple_account_is_connected(account)) continue; tclbud = Tcl_NewListObj(0, NULL); Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj("chat", -1)); - Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj(cnode->alias, -1)); - Tcl_ListObjAppendElement(interp, tclbud, purple_tcl_ref_new(PurpleTclRefAccount, cnode->account)); + Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj(purple_chat_get_name(cnode), -1)); + Tcl_ListObjAppendElement(interp, tclbud, purple_tcl_ref_new(PurpleTclRefAccount, account)); Tcl_ListObjAppendElement(interp, tclgrouplist, tclbud); break; default: - purple_debug(PURPLE_DEBUG_WARNING, "tcl", "Unexpected buddy type %d", node->type); + purple_debug(PURPLE_DEBUG_WARNING, "tcl", "Unexpected buddy type %d", type); continue; } } diff -r d971d5369b43 -r c3a211cea89f libpurple/plugins/tcl/tcl_signals.c --- a/libpurple/plugins/tcl/tcl_signals.c Thu Oct 30 12:41:36 2008 +0000 +++ b/libpurple/plugins/tcl/tcl_signals.c Thu Oct 30 12:43:27 2008 +0000 @@ -292,13 +292,13 @@ node = *va_arg(args, PurpleBlistNode **); else node = va_arg(args, PurpleBlistNode *); - switch (node->type) { + switch (purple_blist_node_get_type(node)) { case PURPLE_BLIST_GROUP_NODE: arg = Tcl_NewListObj(0, NULL); Tcl_ListObjAppendElement(handler->interp, arg, Tcl_NewStringObj("group", -1)); Tcl_ListObjAppendElement(handler->interp, arg, - Tcl_NewStringObj(((PurpleGroup *)node)->name, -1)); + Tcl_NewStringObj(purple_group_get_name((PurpleGroup *)node), -1)); break; case PURPLE_BLIST_CONTACT_NODE: /* g_string_printf(val, "contact {%s}", Contact Name? ); */ @@ -309,20 +309,20 @@ Tcl_ListObjAppendElement(handler->interp, arg, Tcl_NewStringObj("buddy", -1)); Tcl_ListObjAppendElement(handler->interp, arg, - Tcl_NewStringObj(((PurpleBuddy *)node)->name, -1)); + Tcl_NewStringObj(purple_buddy_get_name((PurpleBuddy *)node), -1)); Tcl_ListObjAppendElement(handler->interp, arg, purple_tcl_ref_new(PurpleTclRefAccount, - ((PurpleBuddy *)node)->account)); + purple_buddy_get_account((PurpleBuddy *)node))); break; case PURPLE_BLIST_CHAT_NODE: arg = Tcl_NewListObj(0, NULL); Tcl_ListObjAppendElement(handler->interp, arg, Tcl_NewStringObj("chat", -1)); Tcl_ListObjAppendElement(handler->interp, arg, - Tcl_NewStringObj(((PurpleChat *)node)->alias, -1)); + Tcl_NewStringObj(purple_chat_get_name((PurpleChat *)node), -1)); Tcl_ListObjAppendElement(handler->interp, arg, purple_tcl_ref_new(PurpleTclRefAccount, - ((PurpleChat *)node)->account)); + purple_chat_get_account((PurpleChat *)node))); break; case PURPLE_BLIST_OTHER_NODE: arg = Tcl_NewStringObj("other", -1); diff -r d971d5369b43 -r c3a211cea89f libpurple/protocols/bonjour/bonjour.c --- a/libpurple/protocols/bonjour/bonjour.c Thu Oct 30 12:41:36 2008 +0000 +++ b/libpurple/protocols/bonjour/bonjour.c Thu Oct 30 12:43:27 2008 +0000 @@ -59,18 +59,18 @@ return; /* Go through and remove all buddies that belong to this account */ - for (cnode = ((PurpleBlistNode *) bonjour_group)->child; cnode; cnode = cnodenext) { - cnodenext = cnode->next; + for (cnode = purple_blist_node_get_first_child((PurpleBlistNode *) bonjour_group); cnode; cnode = cnodenext) { + cnodenext = purple_blist_node_get_sibling_next(cnode); if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue; - for (bnode = cnode->child; bnode; bnode = bnodenext) { - bnodenext = bnode->next; + for (bnode = purple_blist_node_get_first_child(cnode); bnode; bnode = bnodenext) { + bnodenext = purple_blist_node_get_sibling_next(bnode); if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue; buddy = (PurpleBuddy *) bnode; - if (buddy->account != account) + if (purple_buddy_get_account(buddy) != account) continue; - purple_prpl_got_user_status(account, buddy->name, "offline", NULL); + purple_prpl_got_user_status(account, purple_buddy_get_name(buddy), "offline", NULL); purple_account_remove_buddy(account, buddy, NULL); purple_blist_remove_buddy(buddy); } diff -r d971d5369b43 -r c3a211cea89f pidgin/Makefile.am --- a/pidgin/Makefile.am Thu Oct 30 12:41:36 2008 +0000 +++ b/pidgin/Makefile.am Thu Oct 30 12:43:27 2008 +0000 @@ -188,6 +188,7 @@ pidgin_LDFLAGS = -export-dynamic pidgin_LDADD = \ @LIBOBJS@ \ + $(GLIB_LIBS) \ $(DBUS_LIBS) \ $(GSTREAMER_LIBS) \ $(XSS_LIBS) \ diff -r d971d5369b43 -r c3a211cea89f pidgin/gtkconv.c --- a/pidgin/gtkconv.c Thu Oct 30 12:41:36 2008 +0000 +++ b/pidgin/gtkconv.c Thu Oct 30 12:43:27 2008 +0000 @@ -161,7 +161,7 @@ gboolean pidgin_conv_has_focus(PurpleConversation *conv); static GdkColor* generate_nick_colors(guint *numcolors, GdkColor background); static gboolean color_is_visible(GdkColor foreground, GdkColor background, int color_contrast, int brightness_contrast); -static GtkTextTag *get_buddy_tag(PurpleConversation *conv, const char *who, gboolean create); +static GtkTextTag *get_buddy_tag(PurpleConversation *conv, const char *who, PurpleMessageFlags flag, gboolean create); static void pidgin_conv_update_fields(PurpleConversation *conv, PidginConvFields fields); static void focus_out_from_menubar(GtkWidget *wid, PidginWindow *win); static void pidgin_conv_tab_pack(PidginWindow *win, PidginConversation *gtkconv); @@ -172,7 +172,8 @@ int width, int height); static gboolean pidgin_conv_xy_to_right_infopane(PidginWindow *win, int x, int y); -static const GdkColor *get_nick_color(PidginConversation *gtkconv, const char *name) { +static const GdkColor *get_nick_color(PidginConversation *gtkconv, const char *name) +{ static GdkColor col; GtkStyle *style = gtk_widget_get_style(gtkconv->imhtml); float scale; @@ -1910,6 +1911,40 @@ } static gboolean +gtkconv_cycle_focus(PidginConversation *gtkconv, GtkDirectionType dir) +{ + PurpleConversation *conv = gtkconv->active_conv; + gboolean chat = purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT; + GtkWidget *next = NULL; + struct { + GtkWidget *from; + GtkWidget *to; + } transitions[] = { + {gtkconv->entry, gtkconv->imhtml}, + {gtkconv->imhtml, chat ? gtkconv->u.chat->list : gtkconv->entry}, + {chat ? gtkconv->u.chat->list : NULL, gtkconv->entry}, + {NULL, NULL} + }, *ptr; + + for (ptr = transitions; !next && ptr->from; ptr++) { + GtkWidget *from, *to; + if (dir == GTK_DIR_TAB_FORWARD) { + from = ptr->from; + to = ptr->to; + } else { + from = ptr->to; + to = ptr->from; + } + if (gtk_widget_is_focus(from)) + next = to; + } + + if (next) + gtk_widget_grab_focus(next); + return !!next; +} + +static gboolean conv_keypress_common(PidginConversation *gtkconv, GdkEventKey *event) { PidginWindow *win; @@ -1970,7 +2005,10 @@ #endif return TRUE; break; - + case GDK_F6: + if (gtkconv_cycle_focus(gtkconv, event->state & GDK_SHIFT_MASK ? GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD)) + return TRUE; + break; } /* End of switch */ } @@ -1997,6 +2035,10 @@ return TRUE; } break; + case GDK_F6: + if (gtkconv_cycle_focus(gtkconv, event->state & GDK_SHIFT_MASK ? GTK_DIR_TAB_BACKWARD : GTK_DIR_TAB_FORWARD)) + return TRUE; + break; } } return FALSE; @@ -4423,7 +4465,7 @@ blist_node_aliased_cb((PurpleBlistNode *)buddy, NULL, conv); - texttag = get_buddy_tag(conv, purple_buddy_get_name(buddy), FALSE); /* XXX: do we want the normalized name? */ + texttag = get_buddy_tag(conv, purple_buddy_get_name(buddy), 0, FALSE); /* XXX: do we want the normalized name? */ if (texttag) { g_object_set(texttag, "weight", is_buddy ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL, NULL); } @@ -5343,16 +5385,35 @@ purple_conversation_write(conv, who, message, flags, mtime); } +static const char * +get_text_tag_color(GtkTextTag *tag) +{ + GdkColor *color = NULL; + gboolean set = FALSE; + static char colcode[] = "#XXXXXX"; + if (tag) + g_object_get(G_OBJECT(tag), "foreground-set", &set, "foreground-gdk", &color, NULL); + if (set && color) + g_snprintf(colcode, sizeof(colcode), "#%02x%02x%02x", + color->red >> 8, color->green >> 8, color->blue >> 8); + else + colcode[0] = '\0'; + if (color) + gdk_color_free(color); + return colcode; +} + /* The callback for an event on a link tag. */ static gboolean buddytag_event(GtkTextTag *tag, GObject *imhtml, - GdkEvent *event, GtkTextIter *arg2, gpointer data) { + GdkEvent *event, GtkTextIter *arg2, gpointer data) +{ if (event->type == GDK_BUTTON_PRESS || event->type == GDK_2BUTTON_PRESS) { GdkEventButton *btn_event = (GdkEventButton*) event; PurpleConversation *conv = data; char *buddyname; - /* strlen("BUDDY ") == 6 */ + /* strlen("BUDDY " or "HILIT ") == 6 */ g_return_val_if_fail((tag->name != NULL) && (strlen(tag->name) > 6), FALSE); @@ -5392,24 +5453,33 @@ return FALSE; } -static GtkTextTag *get_buddy_tag(PurpleConversation *conv, const char *who, gboolean create) +static GtkTextTag *get_buddy_tag(PurpleConversation *conv, const char *who, PurpleMessageFlags flag, + gboolean create) { PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv); GtkTextTag *buddytag; gchar *str; - - str = g_strdup_printf("BUDDY %s", who); + gboolean highlight = (flag & PURPLE_MESSAGE_NICK); + GtkTextBuffer *buffer = GTK_IMHTML(gtkconv->imhtml)->text_buffer; + + str = g_strdup_printf(highlight ? "HILIT %s" : "BUDDY %s", who); buddytag = gtk_text_tag_table_lookup( - gtk_text_buffer_get_tag_table( - GTK_IMHTML(gtkconv->imhtml)->text_buffer), str); + gtk_text_buffer_get_tag_table(buffer), str); if (buddytag == NULL && create) { - buddytag = gtk_text_buffer_create_tag( - GTK_IMHTML(gtkconv->imhtml)->text_buffer, str, - "foreground-gdk", get_nick_color(gtkconv, who), - "weight", purple_find_buddy(purple_conversation_get_account(conv), who) ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL, - NULL); + if (highlight) + buddytag = gtk_text_buffer_create_tag(buffer, str, + "foreground", get_text_tag_color(gtk_text_tag_table_lookup( + gtk_text_buffer_get_tag_table(buffer), "highlight-name")), + "weight", PANGO_WEIGHT_BOLD, + NULL); + else + buddytag = gtk_text_buffer_create_tag( + buffer, str, + "foreground-gdk", get_nick_color(gtkconv, who), + "weight", purple_find_buddy(purple_conversation_get_account(conv), who) ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL, + NULL); g_signal_connect(G_OBJECT(buddytag), "event", G_CALLBACK(buddytag_event), conv); @@ -5766,7 +5836,9 @@ } if (flags & PURPLE_MESSAGE_NICK) { - tagname = "highlight-name"; + if (type == PURPLE_CONV_TYPE_IM) { + tagname = "highlight-name"; + } } else if (flags & PURPLE_MESSAGE_RECV) { /* The tagname for chats is handled by get_buddy_tag */ if (type == PURPLE_CONV_TYPE_IM) { @@ -5785,7 +5857,7 @@ if (tagname) tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buffer), tagname); else - tag = get_buddy_tag(conv, name, TRUE); + tag = get_buddy_tag(conv, name, flags, TRUE); if (GTK_IMHTML(gtkconv->imhtml)->show_comments) { /* The color for the timestamp has to be set in the font-tags, unfortunately. @@ -5793,19 +5865,10 @@ * bold. I thought applying the "comment" tag again, which has "weight" set * to PANGO_WEIGHT_NORMAL, would remove the boldness. But it doesn't. So * this will have to do. I don't terribly like it. -- sadrul */ - GdkColor *color = NULL; - gboolean set = FALSE; - char colcode[] = "COLOR=\"#XXXXXX\""; - g_object_get(G_OBJECT(tag), "foreground-set", &set, "foreground-gdk", &color, NULL); - if (set && color) - g_snprintf(colcode, sizeof(colcode), "COLOR=\"#%02x%02x%02x\"", - color->red >> 8, color->green >> 8, color->blue >> 8); - else - colcode[0] = '\0'; - g_snprintf(buf2, BUF_LONG, "", colcode, mdate); + const char *color = get_text_tag_color(tag); + g_snprintf(buf2, BUF_LONG, "", + color ? "COLOR=\"" : "", color ? color : "", color ? "\"" : "", mdate); gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, gtk_font_options_all | GTK_IMHTML_NO_SCROLL); - if (color) - gdk_color_free(color); } gtk_text_buffer_get_end_iter(buffer, &end); diff -r d971d5369b43 -r c3a211cea89f pidgin/gtkdialogs.c --- a/pidgin/gtkdialogs.c Thu Oct 30 12:41:36 2008 +0000 +++ b/pidgin/gtkdialogs.c Thu Oct 30 12:43:27 2008 +0000 @@ -70,7 +70,7 @@ /* Order: Alphabetical by Last Name */ static const struct developer developers[] = { {"Daniel 'datallah' Atallah", NULL, NULL}, - {"John 'rekkanoryo' Bailey", N_("bug master"), NULL}, + {"John 'rekkanoryo' Bailey", N_("bug master"), "rekkanoryo@pidgin.im"}, {"Ethan 'Paco-Paco' Blanton", NULL, NULL}, {"Hylke Bons", N_("artist"), "h.bons@student.rug.nl"}, {"Thomas Butter", NULL, NULL}, diff -r d971d5369b43 -r c3a211cea89f pidgin/gtkimhtml.c --- a/pidgin/gtkimhtml.c Thu Oct 30 12:41:36 2008 +0000 +++ b/pidgin/gtkimhtml.c Thu Oct 30 12:43:27 2008 +0000 @@ -1974,7 +1974,7 @@ pos = strchr (t->values->str, *x); if (pos) - t = t->children [(unsigned int) pos - (unsigned int) t->values->str]; + t = t->children [pos - t->values->str]; else return; diff -r d971d5369b43 -r c3a211cea89f pidgin/gtkprefs.c --- a/pidgin/gtkprefs.c Thu Oct 30 12:41:36 2008 +0000 +++ b/pidgin/gtkprefs.c Thu Oct 30 12:43:27 2008 +0000 @@ -1836,14 +1836,14 @@ gpointer data) { GtkToggleButton *button = data; - gboolean muted = val; + gboolean muted = GPOINTER_TO_INT(val); g_return_if_fail(!strcmp (pref_name, PIDGIN_PREFS_ROOT "/sound/mute")); /* Block the handler that re-sets the preference. */ - g_signal_handlers_block_matched(button, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, pref_name); + g_signal_handlers_block_matched(button, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, (gpointer)pref_name); gtk_toggle_button_set_active (button, muted); - g_signal_handlers_unblock_matched(button, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, pref_name); + g_signal_handlers_unblock_matched(button, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, (gpointer)pref_name); } diff -r d971d5369b43 -r c3a211cea89f po/de.po --- a/po/de.po Thu Oct 30 12:41:36 2008 +0000 +++ b/po/de.po Thu Oct 30 12:43:27 2008 +0000 @@ -11,15 +11,15 @@ msgstr "" "Project-Id-Version: de\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-10-16 00:55-0700\n" -"PO-Revision-Date: 2008-10-02 23:07+0200\n" -"Last-Translator: Björn Voigt \n" +"POT-Creation-Date: 2008-10-28 17:46+0100\n" +"PO-Revision-Date: 2008-10-28 17:46+0100\n" +"Last-Translator: Jochen Kemnade \n" "Language-Team: Deutsch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: KBabel 1.11.4\n" +"X-Generator: Lokalize 0.2\n" #. Translators may want to transliterate the name. #. It is not to be translated. @@ -243,9 +243,6 @@ msgid "You must give a name for the group to add." msgstr "Bitte geben Sie den Namen der Gruppe ein, die hinzugefügt werden soll." -msgid "A group with the name already exists." -msgstr "Es gibt schon eine Gruppe mit diesem Namen." - msgid "Add Group" msgstr "Gruppe hinzufügen" @@ -283,8 +280,8 @@ msgid "Blocked" msgstr "Blockiert" -msgid "View Log" -msgstr "Mitschnitt anzeigen" +msgid "Show when offline" +msgstr "Anzeigen, wenn im Offline-Modus" #, c-format msgid "Please enter the new name for %s" @@ -328,6 +325,9 @@ msgid "Toggle Tag" msgstr "Markierung umkehren" +msgid "View Log" +msgstr "Mitschnitt anzeigen" + #. General msgid "Nickname" msgstr "Spitzname" @@ -1128,7 +1128,6 @@ msgid "%s has sent you a message. (%s)" msgstr "%s hat Ihnen eine Nachricht gesendet. (%s)" -#, c-format msgid "Unknown pounce event. Please report this!" msgstr "Unbekanntes Alarm-Ereignis. Bitte berichten Sie dieses Problem!" @@ -1498,7 +1497,6 @@ "Wenn eine neue Unterhaltung eröffnet wird, fügt dieses Plugin die letzte " "Unterhaltung in die aktuelle Unterhaltung ein." -#, c-format msgid "Online" msgstr "Online" @@ -1841,7 +1839,6 @@ "Fehler beim Lesen vom Auflösungsprozess:\n" "%s" -#, c-format msgid "Resolver process exited without answering our request" msgstr "Auflösungsprozess hat sich beendet ohne die Anfrage zu beantworten" @@ -1932,7 +1929,6 @@ msgid "Transfer of file %s complete" msgstr "Ãœbertragung der Datei %s ist komplett" -#, c-format msgid "File transfer complete" msgstr "Dateiübertragung ist komplett" @@ -1940,7 +1936,6 @@ msgid "You canceled the transfer of %s" msgstr "Sie haben die Dateiübertragung von %s abgebrochen" -#, c-format msgid "File transfer cancelled" msgstr "Dateiübertragung wurde abgebrochen" @@ -2148,7 +2143,6 @@ msgid "You are using %s, but this plugin requires %s." msgstr "Sie benutzen %s, aber dieses Plugin benötigt %s." -#, c-format msgid "This plugin has not defined an ID." msgstr "Dieses Plugin hat keine ID definiert." @@ -3044,7 +3038,6 @@ #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message #. Away stuff -#, c-format msgid "Away" msgstr "Abwesend" @@ -3936,7 +3929,6 @@ msgid "Extended Away" msgstr "Abwesend (erweitert)" -#, c-format msgid "Do Not Disturb" msgstr "Nicht stören" @@ -4711,220 +4703,166 @@ "%s ist auf der lokalen Liste, aber nicht auf der Serverliste. Möchten Sie, " "dass der Buddy hinzugefügt wird?" -#, c-format msgid "Unable to parse message" msgstr "Kann die Nachricht nicht parsen" -#, c-format msgid "Syntax Error (probably a client bug)" msgstr "Syntaxfehler (wahrscheinlich ein Client-Bug)" -#, c-format msgid "Invalid email address" msgstr "Ungültige E-Mail-Adresse" -#, c-format msgid "User does not exist" msgstr "Benutzer existiert nicht" -#, c-format msgid "Fully qualified domain name missing" msgstr "Der Fully Qualified Domain Name fehlt" -#, c-format msgid "Already logged in" msgstr "Schon angemeldet" -#, c-format msgid "Invalid username" msgstr "Ungültiger Benutzername" -#, c-format msgid "Invalid friendly name" msgstr "Ungültiger Freundesname" -#, c-format msgid "List full" msgstr "Liste voll" -#, c-format msgid "Already there" msgstr "Schon da" -#, c-format msgid "Not on list" msgstr "Nicht auf der Liste" -#, c-format msgid "User is offline" msgstr "Benutzer ist offline" -#, c-format msgid "Already in the mode" msgstr "Bereits in diesem Modus" -#, c-format msgid "Already in opposite list" msgstr "Bereits in der „Gegenteil-Liste“" -#, c-format msgid "Too many groups" msgstr "Zu viele Gruppen" -#, c-format msgid "Invalid group" msgstr "Ungültige Gruppe" -#, c-format msgid "User not in group" msgstr "Benutzer ist nicht in der Gruppe" -#, c-format msgid "Group name too long" msgstr "Name der Gruppe ist zu lang" -#, c-format msgid "Cannot remove group zero" msgstr "Kann die Gruppe „Null“ nicht entfernen" -#, c-format msgid "Tried to add a user to a group that doesn't exist" msgstr "" "Versuchte einen Benutzer zu einer nichtexistierenden Gruppe hinzuzufügen" -#, c-format msgid "Switchboard failed" msgstr "Vermittlung gescheitert" -#, c-format msgid "Notify transfer failed" msgstr "Ãœbertragung der Benachrichtigung gescheitert" -#, c-format msgid "Required fields missing" msgstr "Notwendige Felder fehlen" -#, c-format msgid "Too many hits to a FND" msgstr "Zu viele Treffer zu einem FND" -#, c-format msgid "Not logged in" msgstr "Nicht angemeldet" -#, c-format msgid "Service temporarily unavailable" msgstr "Dienst momentan nicht verfügbar" -#, c-format msgid "Database server error" msgstr "Fehler des Datenbank-Servers" -#, c-format msgid "Command disabled" msgstr "Kommando abgeschaltet" -#, c-format msgid "File operation error" msgstr "Dateiverarbeitungsfehler" -#, c-format msgid "Memory allocation error" msgstr "Fehler bei der Speicheranforderung" -#, c-format msgid "Wrong CHL value sent to server" msgstr "Falscher CHL-Wert zum Server gesendet" -#, c-format msgid "Server busy" msgstr "Server beschäftigt" -#, c-format msgid "Server unavailable" msgstr "Server unerreichbar" -#, c-format msgid "Peer notification server down" msgstr "Peer-Benachrichtigungsserver nicht erreichbar" -#, c-format msgid "Database connect error" msgstr "Datenbank-Verbindungsfehler" -#, c-format msgid "Server is going down (abandon ship)" msgstr "Server fährt runter (melden Sie sich ab)" -#, c-format msgid "Error creating connection" msgstr "Fehler beim Herstellen der Verbindung" -#, c-format msgid "CVR parameters are either unknown or not allowed" msgstr "CVR-Parameter sind entweder unbekannt oder nicht erlaubt" -#, c-format msgid "Unable to write" msgstr "Schreiben nicht möglich" -#, c-format msgid "Session overload" msgstr "Sitzung überlastet" -#, c-format msgid "User is too active" msgstr "Benutzer ist zu aktiv" -#, c-format msgid "Too many sessions" msgstr "Zu viele Sitzungen" -#, c-format msgid "Passport not verified" msgstr "Passport (MSN Benutzerausweis) wurde nicht überprüft" -#, c-format msgid "Bad friend file" msgstr "Falsche Friends-Datei" -#, c-format msgid "Not expected" msgstr "Nicht erwartet" -#, c-format msgid "Friendly name changes too rapidly" msgstr "Benutzernamen werden zu oft geändert" -#, c-format msgid "Server too busy" msgstr "Server ist zu beschäftigt" -#, c-format msgid "Authentication failed" msgstr "Authentifizierung fehlgeschlagen" -#, c-format msgid "Not allowed when offline" msgstr "Nicht erlaubt im Offline-Modus" -#, c-format msgid "Not accepting new users" msgstr "Akzeptiert keine neuen Benutzer" -#, c-format msgid "Kids Passport without parental consent" msgstr "Kinder-Passwort ohne die Zustimmung der Eltern" -#, c-format msgid "Passport account not yet verified" msgstr "Passport-Konto wurde noch nicht überprüft" -#, c-format msgid "Passport account suspended" msgstr "Passport-Konto gesperrt" -#, c-format msgid "Bad ticket" msgstr "Falsches Ticket" @@ -5290,6 +5228,7 @@ msgid "%s just sent you a Nudge!" msgstr "%s hat Sie gerade angestoßen!" +#. char *adl = g_strndup(payload, len); #, c-format msgid "Unknown error (%d)" msgstr "Unbekannter Fehler (%d)" @@ -6155,7 +6094,6 @@ msgid "Error. SSL support is not installed." msgstr "Fehler. SSL ist nicht installiert." -#, c-format msgid "This conference has been closed. No more messages can be sent." msgstr "" "Diese Konferenz wurde geschlossen. Es können keine Nachrichten mehr gesendet " @@ -6425,23 +6363,18 @@ msgid "Screen Sharing" msgstr "Gemeinsamer Bildschirm" -#, c-format msgid "Free For Chat" msgstr "Bereit zum Chatten" -#, c-format msgid "Not Available" msgstr "Nicht verfügbar" -#, c-format msgid "Occupied" msgstr "Beschäftigt" -#, c-format msgid "Web Aware" msgstr "In Web" -#, c-format msgid "Invisible" msgstr "Unsichtbar" @@ -7137,7 +7070,6 @@ msgid "Attempting to connect to %s:%hu." msgstr "Verbindungsversuch mit %s:%hu." -#, c-format msgid "Attempting to connect via proxy server." msgstr "Verbindungsversuch über einen Proxyserver." @@ -7675,7 +7607,6 @@ msgstr "Verbindung verloren" #. Update the login progress status display -#, c-format msgid "Request token" msgstr "Anfragekürzel" @@ -8379,7 +8310,6 @@ msgid "
Channel Topic:
%s" msgstr "
Thema des Kanals:
%s" -#, c-format msgid "
Channel Modes: " msgstr "
Kanal-Modi: " @@ -8404,7 +8334,6 @@ msgid "Channel Public Keys List" msgstr "Liste der öffentlichen Schlüssel des Kanals" -#, c-format msgid "" "Channel authentication is used to secure the channel from unauthorized " "access. The authentication may be based on passphrase and digital " @@ -8809,7 +8738,6 @@ msgid "Your Current Mood" msgstr "Ihre momentane Stimmung" -#, c-format msgid "Normal" msgstr "Normal" @@ -9195,47 +9123,37 @@ msgid "No server statistics available" msgstr "Keine Serverstatistik verfügbar" -#, c-format msgid "Failure: Version mismatch, upgrade your client" msgstr "Fehler: Unterschiedliche Version, aktualisieren Sie Ihren Client" -#, c-format msgid "Failure: Remote does not trust/support your public key" msgstr "" "Fehler: Die entfernte Seite vertraut Ihrem öffentlichen Schlüssel nicht" -#, c-format msgid "Failure: Remote does not support proposed KE group" msgstr "" "Fehler: Entferntes Programm unterstützt nicht die vorgeschlagen KE-Gruppe" -#, c-format msgid "Failure: Remote does not support proposed cipher" msgstr "" "Fehler: Entferntes Programm unterstützt die vorgeschlagene Cipher nicht" -#, c-format msgid "Failure: Remote does not support proposed PKCS" msgstr "Fehler: Entferntes Programm unterstützt die vorgeschlagene PKCS nicht" -#, c-format msgid "Failure: Remote does not support proposed hash function" msgstr "" "Fehler: Entferntes Programm unterstützt die vorgeschlagen Hashfunktion nicht" -#, c-format msgid "Failure: Remote does not support proposed HMAC" msgstr "Fehler: Entferntes Programm unterstützt das vorgeschlagene HMAC nicht" -#, c-format msgid "Failure: Incorrect signature" msgstr "Fehler: Falsche Signatur" -#, c-format msgid "Failure: Invalid cookie" msgstr "Fehler: Ungültiger Cookie" -#, c-format msgid "Failure: Authentication failed" msgstr "Fehler: Authentifizierung fehlgeschlagen" @@ -9332,7 +9250,6 @@ msgid "Warning of %s not allowed." msgstr "Verwarnung von %s nicht erlaubt." -#, c-format msgid "A message has been dropped, you are exceeding the server speed limit." msgstr "" "Eine Nachricht ging verloren. Sie überschreiten die Geschwindigkeitsgrenze " @@ -9356,39 +9273,30 @@ "Eine Nachricht von %s hat Sie nicht erreicht, da sie zu schnell gesendet " "wurde." -#, c-format msgid "Failure." msgstr "Fehler." -#, c-format msgid "Too many matches." msgstr "Zu viele Übereinstimmungen." -#, c-format msgid "Need more qualifiers." msgstr "Benötige mehr Angaben." -#, c-format msgid "Dir service temporarily unavailable." msgstr "Verzeichnis-Dienst ist zur Zeit nicht verfügbar." -#, c-format msgid "Email lookup restricted." msgstr "E-Mail-Suche eingeschränkt." -#, c-format msgid "Keyword ignored." msgstr "Stichwort ignoriert." -#, c-format msgid "No keywords." msgstr "Keine Stichwörter." -#, c-format msgid "User has no directory information." msgstr "Der Benutzer hat kein Profil." -#, c-format msgid "Country not supported." msgstr "Land nicht unterstützt." @@ -9396,19 +9304,15 @@ msgid "Failure unknown: %s." msgstr "Unbekannter Fehler: %s." -#, c-format msgid "Incorrect username or password." msgstr "Ungültiger Benutzername oder Passwort." -#, c-format msgid "The service is temporarily unavailable." msgstr "Der Dienst ist zur Zeit nicht verfügbar." -#, c-format msgid "Your warning level is currently too high to log in." msgstr "Ihre Warnstufe ist zur Zeit zu hoch, um sich anzumelden." -#, c-format msgid "" "You have been connecting and disconnecting too frequently. Wait ten minutes " "and try again. If you continue to try, you will need to wait even longer." @@ -10252,29 +10156,24 @@ msgstr " (%s)" #. 10053 -#, c-format msgid "Connection interrupted by other software on your computer." msgstr "" "Die Verbindung wurde von einer anderen Software auf ihrem Computer " "unterbrochen." #. 10054 -#, c-format msgid "Remote host closed connection." msgstr "Der entfernte Host hat die Verbindung beendet." #. 10060 -#, c-format msgid "Connection timed out." msgstr "Verbindungsabbruch wegen Zeitüberschreitung." #. 10061 -#, c-format msgid "Connection refused." msgstr "Verbindung abgelehnt." #. 10048 -#, c-format msgid "Address already in use." msgstr "Adresse wird bereits benutzt." @@ -10483,9 +10382,6 @@ msgid "Hide when offline" msgstr "Verstecken, wenn im Offline-Modus" -msgid "Show when offline" -msgstr "Anzeigen, wenn im Offline-Modus" - msgid "_Alias..." msgstr "_Alias..." @@ -10883,9 +10779,6 @@ msgid "SSL Servers" msgstr "SSL-Server" -msgid "Network disconnected" -msgstr "vom Netzwerk abgemeldet" - msgid "Unknown command." msgstr "Unbekanntes Kommando." @@ -11228,8 +11121,11 @@ msgid "Fatal Error" msgstr "Schwerer Fehler" -msgid "developer" -msgstr "Entwickler" +msgid "bug master" +msgstr "Bug-Master" + +msgid "artist" +msgstr "Künstler" #. feel free to not translate this msgid "Ka-Hing Cheung" @@ -11238,11 +11134,8 @@ msgid "support" msgstr "Support" -msgid "support/QA" -msgstr "Support/Qualitätssicherung" - -msgid "developer & webmaster" -msgstr "Entwickler & Webmaster" +msgid "webmaster" +msgstr "Webmaster" msgid "Senior Contributor/QA" msgstr "Senior-Beitragender/QA" @@ -11260,8 +11153,11 @@ msgid "hacker and designated driver [lazy bum]" msgstr "Grafische Benutzeroberfläche" -msgid "XMPP developer" -msgstr "XMPP-Entwickler" +msgid "support/QA" +msgstr "Support/Qualitätssicherung" + +msgid "XMPP" +msgstr "XMPP" msgid "original author" msgstr "Originalautor" @@ -11508,7 +11404,6 @@ "geschützt. Die Datei 'COPYRIGHT' enthält die komplette Liste der " "Mitwirkenden. Wir übernehmen keine Haftung für dieses Programm.

" -#, c-format msgid "IRC: #pidgin on irc.freenode.net

" msgstr "IRC: #pidgin auf irc.freenode.net

" @@ -11524,9 +11419,6 @@ msgid "Retired Crazy Patch Writers" msgstr "Zurückgetretene verrückte Patchschreiber" -msgid "Artists" -msgstr "Künstler" - msgid "Current Translators" msgstr "Aktuelle Übersetzer" @@ -11879,11 +11771,9 @@ msgid "Save Image" msgstr "Bild speichern" -#, c-format msgid "_Save Image..." msgstr "Bild _speichern..." -#, c-format msgid "_Add Custom Smiley..." msgstr "Benutzerdefinierten Smiley _hinzufügen..." @@ -12608,27 +12498,21 @@ msgid "Sound Selection" msgstr "Klang-Auswahl" -#, c-format msgid "Quietest" msgstr "Am leisesten" -#, c-format msgid "Quieter" msgstr "Leiser" -#, c-format msgid "Quiet" msgstr "Leise" -#, c-format msgid "Loud" msgstr "Laut" -#, c-format msgid "Louder" msgstr "Lauter" -#, c-format msgid "Loudest" msgstr "Am lautesten" @@ -13440,10 +13324,10 @@ msgstr "Zeichne eine Markierunglinie in " msgid "_IM windows" -msgstr "_IM-Fenstern" +msgstr "_IM-Fenster" msgid "C_hat windows" -msgstr "C_hat-Fenstern" +msgstr "C_hat-Fenster" msgid "" "A music messaging session has been requested. Please click the MM icon to " @@ -13525,6 +13409,9 @@ msgid "Set window manager \"_URGENT\" hint" msgstr "Setze den „_URGENT“-Hinweis für den Window-Manager" +msgid "_Flash window" +msgstr "Fenster _blinken lassen" + #. Raise window method button msgid "R_aise conversation window" msgstr "G_esprächsfenster in den Vordergrund bringen" @@ -13635,7 +13522,6 @@ msgid "Select Color" msgstr "Farbe auswählen" -#, c-format msgid "Select Interface Font" msgstr "Schriftart wählen" @@ -13862,7 +13748,6 @@ msgid "Timestamp Format Options" msgstr "Zeitstempelformat-Optionen" -#, c-format msgid "_Force 24-hour time format" msgstr "_Erzwinge 24-Stunden Zeitformat"