From: <de...@us...> - 2006-10-12 20:39:04
|
Revision: 17471 http://svn.sourceforge.net/gaim/?rev=17471&view=rev Author: deryni9 Date: 2006-10-12 13:38:47 -0700 (Thu, 12 Oct 2006) Log Message: ----------- Martijn van Beers provided some patches to rework the perl object casting/blessing for signal instances in order to let the newly added jabber-* signals work. This is those patches. This is also a small whitespace change, a removal of the gaim debug message about "Found plugin info" it was just pissing me off, and a renamespacing of gaim_blist_node_get_extended_menu into Gaim::Blist::Node where it makes slightly more sense. Modified Paths: -------------- trunk/COPYRIGHT trunk/libgaim/plugins/perl/common/Account.xs trunk/libgaim/plugins/perl/common/BuddyIcon.xs trunk/libgaim/plugins/perl/common/BuddyList.xs trunk/libgaim/plugins/perl/common/Cipher.xs trunk/libgaim/plugins/perl/common/Connection.xs trunk/libgaim/plugins/perl/common/Conversation.xs trunk/libgaim/plugins/perl/common/Plugin.xs trunk/libgaim/plugins/perl/common/Pounce.xs trunk/libgaim/plugins/perl/common/Prefs.xs trunk/libgaim/plugins/perl/common/Proxy.xs trunk/libgaim/plugins/perl/common/SavedStatuses.xs trunk/libgaim/plugins/perl/common/Signal.xs trunk/libgaim/plugins/perl/common/Status.xs trunk/libgaim/plugins/perl/common/XMLNode.xs trunk/libgaim/plugins/perl/common/module.h trunk/libgaim/plugins/perl/common/typemap trunk/libgaim/plugins/perl/perl-common.c trunk/libgaim/plugins/perl/perl-handlers.c trunk/libgaim/plugins/perl/perl.c Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/COPYRIGHT 2006-10-12 20:38:47 UTC (rev 17471) @@ -305,6 +305,7 @@ Brad Turcotte Junichi Uekawa István Váradi +Martijn van Beers Philip Van Hoof Kristof Vansant James Vega Modified: trunk/libgaim/plugins/perl/common/Account.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Account.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/Account.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -306,7 +306,7 @@ Gaim::Account::UiOps gaim_accounts_get_ui_ops() -void * +Gaim::Handle gaim_accounts_get_handle() void Modified: trunk/libgaim/plugins/perl/common/BuddyIcon.xs =================================================================== --- trunk/libgaim/plugins/perl/common/BuddyIcon.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/BuddyIcon.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -80,7 +80,7 @@ const char * gaim_buddy_icons_get_cache_dir(); -void * +Gaim::Handle gaim_buddy_icons_get_handle(); void Modified: trunk/libgaim/plugins/perl/common/BuddyList.xs =================================================================== --- trunk/libgaim/plugins/perl/common/BuddyList.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/BuddyList.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -216,23 +216,13 @@ gaim_blist_request_add_group() void -gaim_blist_node_get_extended_menu(node) - Gaim::BuddyList::Node node -PREINIT: - GList *l; -PPCODE: - for (l = gaim_blist_node_get_extended_menu(node); l != NULL; l = l->next) { - XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Menu::Action"))); - } - -void gaim_blist_set_ui_ops(ops) Gaim::BuddyList::UiOps ops Gaim::BuddyList::UiOps gaim_blist_get_ui_ops() -void * +Gaim::Handle gaim_blist_get_handle() void @@ -245,6 +235,16 @@ PROTOTYPES: ENABLE void +gaim_blist_node_get_extended_menu(node) + Gaim::BuddyList::Node node +PREINIT: + GList *l; +PPCODE: + for (l = gaim_blist_node_get_extended_menu(node); l != NULL; l = l->next) { + XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Menu::Action"))); + } + +void gaim_blist_node_set_bool(node, key, value) Gaim::BuddyList::Node node const char * key Modified: trunk/libgaim/plugins/perl/common/Cipher.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Cipher.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/Cipher.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -45,7 +45,7 @@ XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Cipher"))); } -gpointer +Gaim::Handle gaim_ciphers_get_handle() void Modified: trunk/libgaim/plugins/perl/common/Connection.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Connection.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/Connection.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -85,5 +85,5 @@ void gaim_connections_uninit() -void * +Gaim::Handle gaim_connections_get_handle() Modified: trunk/libgaim/plugins/perl/common/Conversation.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Conversation.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/Conversation.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -33,7 +33,7 @@ MODULE = Gaim::Conversation PACKAGE = Gaim::Conversations PREFIX = gaim_conversations_ PROTOTYPES: ENABLE -void * +Gaim::Handle gaim_conversations_get_handle() void Modified: trunk/libgaim/plugins/perl/common/Plugin.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Plugin.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/Plugin.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -146,7 +146,7 @@ XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Plugin"))); } -void * +Gaim::Handle gaim_plugins_get_handle() void Modified: trunk/libgaim/plugins/perl/common/Pounce.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Pounce.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/Pounce.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -73,7 +73,7 @@ XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::Pounce"))); } -void * +Gaim::Handle gaim_pounces_get_handle() void Modified: trunk/libgaim/plugins/perl/common/Prefs.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Prefs.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/Prefs.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -58,7 +58,7 @@ gaim_prefs_get_bool(name) const char *name -void * +Gaim::Handle gaim_prefs_get_handle() int Modified: trunk/libgaim/plugins/perl/common/Proxy.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Proxy.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/Proxy.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -6,7 +6,7 @@ Gaim::ProxyInfo gaim_global_proxy_get_info() -void * +Gaim::Handle gaim_proxy_get_handle() void Modified: trunk/libgaim/plugins/perl/common/SavedStatuses.xs =================================================================== --- trunk/libgaim/plugins/perl/common/SavedStatuses.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/SavedStatuses.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -48,7 +48,7 @@ XPUSHs(sv_2mortal(gaim_perl_bless_object(l->data, "Gaim::SavedStatus"))); } -void * +Gaim::Handle gaim_savedstatuses_get_handle() void Modified: trunk/libgaim/plugins/perl/common/Signal.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Signal.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/Signal.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -6,7 +6,7 @@ void gaim_signal_connect_priority(instance, signal, plugin, callback, priority, data = 0) - void *instance + Gaim::Handle instance const char *signal Gaim::Plugin plugin SV *callback @@ -17,7 +17,7 @@ void gaim_signal_connect(instance, signal, plugin, callback, data = 0) - void *instance + Gaim::Handle instance const char *signal Gaim::Plugin plugin SV *callback @@ -27,7 +27,7 @@ void gaim_signal_disconnect(instance, signal, plugin) - void *instance + Gaim::Handle instance const char *signal Gaim::Plugin plugin CODE: Modified: trunk/libgaim/plugins/perl/common/Status.xs =================================================================== --- trunk/libgaim/plugins/perl/common/Status.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/Status.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -263,7 +263,7 @@ Gaim::Status status const char *id -void * +Gaim::Handle gaim_status_get_handle() const char * Modified: trunk/libgaim/plugins/perl/common/XMLNode.xs =================================================================== --- trunk/libgaim/plugins/perl/common/XMLNode.xs 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/XMLNode.xs 2006-10-12 20:38:47 UTC (rev 17471) @@ -5,13 +5,13 @@ Gaim::XMLNode xmlnode_copy(class, src) - xmlnode *src + Gaim::XMLNode src C_ARGS: src void xmlnode_free(node) - xmlnode *node + Gaim::XMLNode node Gaim::XMLNode xmlnode_from_str(class, str, size) @@ -22,36 +22,36 @@ const char * xmlnode_get_attrib(node, attr) - xmlnode *node + Gaim::XMLNode node const char *attr Gaim::XMLNode xmlnode_get_child(parent, name) - const xmlnode *parent + Gaim::XMLNode parent const char *name Gaim::XMLNode xmlnode_get_child_with_namespace(parent, name, xmlns) - const xmlnode *parent + Gaim::XMLNode parent const char *name const char *xmlns char * xmlnode_get_data(node) - xmlnode *node + Gaim::XMLNode node Gaim::XMLNode xmlnode_get_next_twin(node) - xmlnode *node + Gaim::XMLNode node void xmlnode_insert_child(parent, child) - xmlnode *parent - xmlnode *child + Gaim::XMLNode parent + Gaim::XMLNode child void xmlnode_insert_data(node, data, size) - xmlnode *node + Gaim::XMLNode node const char *data gssize size @@ -63,26 +63,26 @@ Gaim::XMLNode xmlnode_new_child(parent, name) - xmlnode *parent + Gaim::XMLNode parent const char *name void xmlnode_remove_attrib(node, attr) - xmlnode *node + Gaim::XMLNode node const char *attr void xmlnode_set_attrib(node, attr, value) - xmlnode *node + Gaim::XMLNode node const char *attr const char *value char * xmlnode_to_formatted_str(node, len) - xmlnode *node + Gaim::XMLNode node int *len char * xmlnode_to_str(node, len) - xmlnode *node + Gaim::XMLNode node int *len Modified: trunk/libgaim/plugins/perl/common/module.h =================================================================== --- trunk/libgaim/plugins/perl/common/module.h 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/module.h 2006-10-12 20:38:47 UTC (rev 17471) @@ -263,4 +263,5 @@ typedef xmlnode * Gaim__XMLNode; typedef XMLNodeType XMLNode__Type; -/* other.h */ +/* other */ +typedef void * Gaim__Handle; Modified: trunk/libgaim/plugins/perl/common/typemap =================================================================== --- trunk/libgaim/plugins/perl/common/typemap 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/common/typemap 2006-10-12 20:38:47 UTC (rev 17471) @@ -72,6 +72,8 @@ Gaim::Desktop::Item T_GaimObj Gaim::DesktopItemType T_IV +Gaim::Handle T_GaimObj + Gaim::IconScaleRules T_IV Gaim::Log T_GaimObj Modified: trunk/libgaim/plugins/perl/perl-common.c =================================================================== --- trunk/libgaim/plugins/perl/perl-common.c 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/perl-common.c 2006-10-12 20:38:47 UTC (rev 17471) @@ -447,6 +447,9 @@ case GAIM_SUBTYPE_XFER: stash = "Gaim::Xfer"; break; + case GAIM_SUBTYPE_XMLNODE: + stash = "Gaim::XMLNode"; + break; default: stash = "Gaim"; /* ? */ Modified: trunk/libgaim/plugins/perl/perl-handlers.c =================================================================== --- trunk/libgaim/plugins/perl/perl-handlers.c 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/perl-handlers.c 2006-10-12 20:38:47 UTC (rev 17471) @@ -71,7 +71,8 @@ /* XXX This *will* cease working correctly if context gets changed to * ever be able to hold anything other than a GaimConnection */ if (context != NULL) - XPUSHs(sv_2mortal(gaim_perl_bless_object(context, "Gaim::Connection"))); + XPUSHs(sv_2mortal(gaim_perl_bless_object(context, + "Gaim::Connection"))); else XPUSHs(&PL_sv_undef); PUTBACK; Modified: trunk/libgaim/plugins/perl/perl.c =================================================================== --- trunk/libgaim/plugins/perl/perl.c 2006-10-12 13:42:11 UTC (rev 17470) +++ trunk/libgaim/plugins/perl/perl.c 2006-10-12 20:38:47 UTC (rev 17471) @@ -276,9 +276,6 @@ char *basename; STRLEN len; - gaim_debug(GAIM_DEBUG_INFO, "perl", - "Found plugin info\n"); - info = g_new0(GaimPluginInfo, 1); gps = g_new0(GaimPerlScript, 1); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2006-10-13 00:27:02
|
Revision: 17473 http://svn.sourceforge.net/gaim/?rev=17473&view=rev Author: deryni9 Date: 2006-10-12 17:26:54 -0700 (Thu, 12 Oct 2006) Log Message: ----------- Fix some whitespace, some mine from one of the back before I was a developer, and some I have no real idea how it happened. Also add my IRC nick to the manpage, it seems to be a common thing. Modified Paths: -------------- trunk/doc/gaim.1.in trunk/gtk/gtkutils.c trunk/libgaim/mime.c Modified: trunk/doc/gaim.1.in =================================================================== --- trunk/doc/gaim.1.in 2006-10-12 23:25:36 UTC (rev 17472) +++ trunk/doc/gaim.1.in 2006-10-13 00:26:54 UTC (rev 17473) @@ -552,7 +552,7 @@ .br Christopher 'siege' O'Brien .br - Etan Reisner + Etan 'deryni' Reisner .br Tim 'marv' Ringenbach <\fIm...@us...\fR> .br Modified: trunk/gtk/gtkutils.c =================================================================== --- trunk/gtk/gtkutils.c 2006-10-12 23:25:36 UTC (rev 17472) +++ trunk/gtk/gtkutils.c 2006-10-13 00:26:54 UTC (rev 17473) @@ -847,13 +847,15 @@ void gaim_gtk_save_accels_cb(GtkAccelGroup *accel_group, guint arg1, - GdkModifierType arg2, GClosure *arg3, - gpointer data) + GdkModifierType arg2, GClosure *arg3, + gpointer data) { - gaim_debug(GAIM_DEBUG_MISC, "accels", "accel changed, scheduling save.\n"); + gaim_debug(GAIM_DEBUG_MISC, "accels", + "accel changed, scheduling save.\n"); if (!accels_save_timer) - accels_save_timer = g_timeout_add(5000, gaim_gtk_save_accels, NULL); + accels_save_timer = g_timeout_add(5000, gaim_gtk_save_accels, + NULL); } gboolean @@ -862,7 +864,7 @@ char *filename = NULL; filename = g_build_filename(gaim_user_dir(), G_DIR_SEPARATOR_S, - "accels", NULL); + "accels", NULL); gaim_debug(GAIM_DEBUG_MISC, "accels", "saving accels to %s\n", filename); gtk_accel_map_save(filename); g_free(filename); @@ -877,7 +879,7 @@ char *filename = NULL; filename = g_build_filename(gaim_user_dir(), G_DIR_SEPARATOR_S, - "accels", NULL); + "accels", NULL); gtk_accel_map_load(filename); g_free(filename); } Modified: trunk/libgaim/mime.c =================================================================== --- trunk/libgaim/mime.c 2006-10-12 23:25:36 UTC (rev 17472) +++ trunk/libgaim/mime.c 2006-10-13 00:26:54 UTC (rev 17473) @@ -352,7 +352,7 @@ *data = gaim_base16_decode(part->data->str, len); } else if(! g_ascii_strcasecmp(enc, "base64")) { - *data = gaim_base64_decode(part->data->str, len); + *data = gaim_base64_decode(part->data->str, len); } else if(! g_ascii_strcasecmp(enc, "quoted-printable")) { *data = gaim_quotedp_decode(part->data->str, len); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-10-13 02:32:46
|
Revision: 17476 http://svn.sourceforge.net/gaim/?rev=17476&view=rev Author: datallah Date: 2006-10-12 19:31:36 -0700 (Thu, 12 Oct 2006) Log Message: ----------- Implement the network manager stuff for wingaim. Also, fix some assertions and fix the freeing of the autorecon data without removing it from the hash. Modified Paths: -------------- trunk/gtk/gtkconn.c trunk/libgaim/dnsquery.c trunk/libgaim/network.c trunk/libgaim/win32/win32dep.c Modified: trunk/gtk/gtkconn.c =================================================================== --- trunk/gtk/gtkconn.c 2006-10-13 00:37:44 UTC (rev 17475) +++ trunk/gtk/gtkconn.c 2006-10-13 02:31:36 UTC (rev 17476) @@ -79,8 +79,7 @@ gtk_gaim_status_box_set_connecting(GTK_GAIM_STATUS_BOX(gtkblist->statusbox), (gaim_connections_get_connecting() != NULL)); - if (hash != NULL) - g_hash_table_remove(hash, account); + g_hash_table_remove(hash, account); gaim_gtk_blist_update_account_error_state(account, NULL); } @@ -204,10 +203,9 @@ while (list) { GaimAccount *account = (GaimAccount*)list->data; - GaimAutoRecon *info = g_hash_table_lookup(hash, account); - if (info) - free_auto_recon(info); - do_signon(account); + g_hash_table_remove(hash, account); + if (gaim_account_is_disconnected(account)) + do_signon(account); list = list->next; } } @@ -222,7 +220,8 @@ while (l) { GaimAccount *a = (GaimAccount*)l->data; - gaim_account_disconnect(a); + if (!gaim_account_is_disconnected(a)) + gaim_account_disconnect(a); l = l->next; } } Modified: trunk/libgaim/dnsquery.c =================================================================== --- trunk/libgaim/dnsquery.c 2006-10-13 00:37:44 UTC (rev 17475) +++ trunk/libgaim/dnsquery.c 2006-10-13 02:31:36 UTC (rev 17476) @@ -893,10 +893,6 @@ void gaim_dnsquery_init(void) { -#ifdef _WIN32 - if (!g_thread_supported()) - g_thread_init(NULL); -#endif } void Modified: trunk/libgaim/network.c =================================================================== --- trunk/libgaim/network.c 2006-10-13 00:37:44 UTC (rev 17475) +++ trunk/libgaim/network.c 2006-10-13 02:31:36 UTC (rev 17476) @@ -28,6 +28,8 @@ #ifndef _WIN32 #include <net/if.h> #include <sys/ioctl.h> +#else +#include <nspapi.h> #endif /* Solaris */ @@ -48,6 +50,8 @@ libnm_glib_ctx *nm_context = NULL; guint nm_callback_idx = 0; +#elif defined _WIN32 +static int current_network_count; #endif struct _GaimNetworkListenData { @@ -372,6 +376,103 @@ return ntohs(addr.sin_port); } +#ifdef _WIN32 +static guint +wgaim_get_connected_network_count(void) +{ + guint net_cnt = 0; + + WSAQUERYSET qs; + HANDLE h; + int retval; + + memset(&qs, 0, sizeof(WSAQUERYSET)); + qs.dwSize = sizeof(WSAQUERYSET); + qs.dwNameSpace = NS_ALL; + + retval = WSALookupServiceBegin(&qs, LUP_RETURN_ALL, &h); + if (retval != ERROR_SUCCESS) { + gchar *msg = g_win32_error_message(retval); + gaim_debug_warning("network", "Couldn't look up connected networks. %s (%lu).\n", msg, retval); + g_free(msg); + } else { + char buf[1024]; + WSAQUERYSET *res = (LPWSAQUERYSET) buf; + DWORD size = sizeof(buf); + while (WSALookupServiceNext(h, 0, &size, res) == ERROR_SUCCESS) { + net_cnt++; + gaim_debug_info("network", "found network '%s'\n", + res->lpszServiceInstanceName ? res->lpszServiceInstanceName : "(NULL)"); + size = sizeof(buf); + } + + WSALookupServiceEnd(h); + } + + return net_cnt; + +} + +static gboolean wgaim_network_change_thread_cb(gpointer data) +{ + guint new_count; + GaimConnectionUiOps *ui_ops = gaim_connections_get_ui_ops(); + + new_count = wgaim_get_connected_network_count(); + + gaim_debug_info("network", "Received Network Change Notification. Current network count is %d, previous count was %d.\n", new_count, current_network_count); + + if (new_count > 0) { + ui_ops->network_connected(); + } else if (new_count == 0 && current_network_count > 0) { + ui_ops->network_disconnected(); + } + + current_network_count = new_count; + + return FALSE; +} + +static gpointer wgaim_network_change_thread(gpointer data) +{ + HANDLE h; + WSAQUERYSET qs; + + int WSAAPI (*MyWSANSPIoctl) ( + HANDLE hLookup, DWORD dwControlCode, LPVOID lpvInBuffer, + DWORD cbInBuffer, LPVOID lpvOutBuffer, DWORD cbOutBuffer, + LPDWORD lpcbBytesReturned, LPWSACOMPLETION lpCompletion) = NULL; + + MyWSANSPIoctl = (void*) wgaim_find_and_loadproc("ws2_32.dll", "WSANSPIoctl"); + if (!MyWSANSPIoctl) { + gaim_debug_error("network", "Couldn't load WSANSPIoctl from ws2_32.dll.\n"); + g_thread_exit(NULL); + return NULL; + } + + while (TRUE) { + int retval; + DWORD retLen = 0; + + memset(&qs, 0, sizeof(WSAQUERYSET)); + qs.dwSize = sizeof(WSAQUERYSET); + qs.dwNameSpace = NS_ALL; + + retval = WSALookupServiceBegin(&qs, LUP_RETURN_ALL, &h); + + /* This will block until there is a network change */ + /* This is missing from the MinGW libws2_32.a as of version 3.7. + * When this patch: http://sourceforge.net/tracker/index.php?func=detail&aid=1576083&group_id=2435&atid=302435 gets into a release, we can call this directly + * retval = WSANSPIoctl(h, SIO_NSP_NOTIFY_CHANGE, NULL, 0, NULL, 0, &retLen, NULL);*/ + retval = MyWSANSPIoctl(h, SIO_NSP_NOTIFY_CHANGE, NULL, 0, NULL, 0, &retLen, NULL); + + retval = WSALookupServiceEnd(h); + + g_idle_add(wgaim_network_change_thread_cb, NULL); + } +} +#endif + gboolean gaim_network_is_available(void) { @@ -388,6 +489,8 @@ } if (libnm_retval == LIBNM_ACTIVE_NETWORK_CONNECTION) return TRUE; } +#elif _WIN32 + return (current_network_count > 0); #endif return TRUE; } @@ -429,6 +532,13 @@ void gaim_network_init(void) { +#ifdef _WIN32 + GError *err = NULL; + current_network_count = wgaim_get_connected_network_count(); + if (!g_thread_create(wgaim_network_change_thread, NULL, FALSE, &err)) + gaim_debug_error("network", "Couldn't create Network Monitor thread: %s\n", err ? err->message : ""); +#endif + gaim_prefs_add_none ("/core/network"); gaim_prefs_add_bool ("/core/network/auto_ip", TRUE); gaim_prefs_add_string("/core/network/public_ip", ""); Modified: trunk/libgaim/win32/win32dep.c =================================================================== --- trunk/libgaim/win32/win32dep.c 2006-10-13 00:37:44 UTC (rev 17475) +++ trunk/libgaim/win32/win32dep.c 2006-10-13 02:31:36 UTC (rev 17476) @@ -444,6 +444,9 @@ gaim_debug(GAIM_DEBUG_WARNING, "wgaim", "putenv failed\n"); g_free(newenv); + if (!g_thread_supported()) + g_thread_init(NULL); + gaim_debug(GAIM_DEBUG_INFO, "wgaim", "wgaim_init end\n"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-14 05:29:19
|
Revision: 17479 http://svn.sourceforge.net/gaim/?rev=17479&view=rev Author: sadrul Date: 2006-10-13 22:29:11 -0700 (Fri, 13 Oct 2006) Log Message: ----------- Make sure plugins are marked not-loadable if their ui-requirement can't be met. You are going to need to rebuild all the non-core plugins. The UI specific plugins for Gaim specifies their ui-requirement in the plugin structure. So it'd make sense to load such plugins only if the ui-requirement can be met. As it happens, gntgf (a gnt-plugin for gaim-text) can be loaded from Gaim, which has been reported to have caused Gaim to freeze. gntgf does mark itself as a gnt-plugin. So I think it should be upto libgaim to make sure plugins are marked not-loadable if the ui-requirements can not be met. This commit does exactly that. In doing so, it changes the string plugins use to specify their ui-requirement (the change is from "gtk" to GAIM_GTK_UI -- which is "gtk-gaim"). So this will require all the non-core plugins to be rebuilt. Modified Paths: -------------- trunk/console/gntplugin.h trunk/gtk/gtkplugin.h trunk/libgaim/plugin.c Modified: trunk/console/gntplugin.h =================================================================== --- trunk/console/gntplugin.h 2006-10-14 01:56:10 UTC (rev 17478) +++ trunk/console/gntplugin.h 2006-10-14 05:29:11 UTC (rev 17479) @@ -31,6 +31,8 @@ #include <string.h> +#include "gntgaim.h" + /********************************************************************** * @name GNT Plugins API **********************************************************************/ @@ -39,7 +41,7 @@ typedef GntWidget* (*GGPluginFrame) (); /* Guess where these came from */ -#define GAIM_GNT_PLUGIN_TYPE "gnt" +#define GAIM_GNT_PLUGIN_TYPE GAIM_GNT_UI /** * Decide whether a plugin is a GNT-plugin. Modified: trunk/gtk/gtkplugin.h =================================================================== --- trunk/gtk/gtkplugin.h 2006-10-14 01:56:10 UTC (rev 17478) +++ trunk/gtk/gtkplugin.h 2006-10-14 05:29:11 UTC (rev 17479) @@ -40,7 +40,7 @@ int page_num; /**< Reserved */ }; -#define GAIM_GTK_PLUGIN_TYPE "gtk" +#define GAIM_GTK_PLUGIN_TYPE GAIM_GTK_UI #define GAIM_IS_GTK_PLUGIN(plugin) \ ((plugin)->info != NULL && (plugin)->info->ui_info != NULL && \ Modified: trunk/libgaim/plugin.c =================================================================== --- trunk/libgaim/plugin.c 2006-10-14 01:56:10 UTC (rev 17478) +++ trunk/libgaim/plugin.c 2006-10-14 05:29:11 UTC (rev 17479) @@ -22,6 +22,7 @@ #include "internal.h" #include "accountopt.h" +#include "core.h" #include "dbus-maybe.h" #include "debug.h" #include "notify.h" @@ -358,6 +359,14 @@ gaim_plugin_destroy(plugin); return NULL; } + else if (plugin->info->ui_requirement && + strcmp(plugin->info->ui_requirement, gaim_core_get_ui())) + { + plugin->error = g_strdup_printf("The UI requirement for this plugin is not met."); + gaim_debug_error("plugins", "%s is not loadable: The UI requirement is not met.", plugin->path); + plugin->unloadable = TRUE; + return plugin; + } /* Really old plugins. */ if (plugin->info->magic != GAIM_PLUGIN_MAGIC) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-10-16 14:50:29
|
Revision: 17485 http://svn.sourceforge.net/gaim/?rev=17485&view=rev Author: thekingant Date: 2006-10-16 07:50:20 -0700 (Mon, 16 Oct 2006) Log Message: ----------- Get rid of some unused variables Modified Paths: -------------- trunk/console/libgnt/gntentry.c trunk/console/libgnt/gntmenu.c trunk/console/libgnt/gnttextview.c trunk/console/libgnt/gntwindow.c trunk/gtk/plugins/spellchk.c Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-10-15 16:30:50 UTC (rev 17484) +++ trunk/console/libgnt/gntentry.c 2006-10-16 14:50:20 UTC (rev 17485) @@ -12,7 +12,6 @@ }; static GntWidgetClass *parent_class = NULL; -static guint signals[SIGS] = { 0 }; static void destroy_suggest(GntEntry *entry) Modified: trunk/console/libgnt/gntmenu.c =================================================================== --- trunk/console/libgnt/gntmenu.c 2006-10-15 16:30:50 UTC (rev 17484) +++ trunk/console/libgnt/gntmenu.c 2006-10-16 14:50:20 UTC (rev 17485) @@ -8,7 +8,6 @@ }; static GntTreeClass *parent_class = NULL; -static guint signals[SIGS] = { 0 }; static void (*org_draw)(GntWidget *wid); static void (*org_destroy)(GntWidget *wid); Modified: trunk/console/libgnt/gnttextview.c =================================================================== --- trunk/console/libgnt/gnttextview.c 2006-10-15 16:30:50 UTC (rev 17484) +++ trunk/console/libgnt/gnttextview.c 2006-10-16 14:50:20 UTC (rev 17485) @@ -24,7 +24,6 @@ } GntTextLine; static GntWidgetClass *parent_class = NULL; -static guint signals[SIGS] = { 0 }; static void gnt_text_view_draw(GntWidget *widget) Modified: trunk/console/libgnt/gntwindow.c =================================================================== --- trunk/console/libgnt/gntwindow.c 2006-10-15 16:30:50 UTC (rev 17484) +++ trunk/console/libgnt/gntwindow.c 2006-10-16 14:50:20 UTC (rev 17485) @@ -8,7 +8,6 @@ }; static GntBoxClass *parent_class = NULL; -static guint signals[SIGS] = { 0 }; static gboolean (*org_keypress)(GntWidget *widget, const char *text); static void (*org_destroy)(GntWidget *widget); Modified: trunk/gtk/plugins/spellchk.c =================================================================== --- trunk/gtk/plugins/spellchk.c 2006-10-15 16:30:50 UTC (rev 17484) +++ trunk/gtk/plugins/spellchk.c 2006-10-16 14:50:20 UTC (rev 17485) @@ -304,8 +304,6 @@ gunichar ucs4_char = gtk_text_iter_get_char(iter); gchar *utf8_str; gchar c = 0; - gboolean result; - gboolean output; utf8_str = g_ucs4_to_utf8(&ucs4_char, 1, NULL, NULL, NULL); if (utf8_str != NULL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-10-16 17:14:54
|
Revision: 17486 http://svn.sourceforge.net/gaim/?rev=17486&view=rev Author: datallah Date: 2006-10-16 10:14:41 -0700 (Mon, 16 Oct 2006) Log Message: ----------- Add the thread-based win32 giochannel implementation from glib 2.6.6 to our src tree. This way we can use GTK+ >= 2.8.0 and still use the iochannel implementation that works for us. Hopefully at some point we can use the more efficient 2.8.x giochannel implementation. Modified Paths: -------------- trunk/gtk/gtkeventloop.c trunk/libgaim/Makefile.am trunk/libgaim/Makefile.mingw trunk/libgaim/win32/win32dep.h Added Paths: ----------- trunk/libgaim/win32/giowin32.c Modified: trunk/gtk/gtkeventloop.c =================================================================== --- trunk/gtk/gtkeventloop.c 2006-10-16 14:50:20 UTC (rev 17485) +++ trunk/gtk/gtkeventloop.c 2006-10-16 17:14:41 UTC (rev 17486) @@ -26,6 +26,7 @@ #include <glib.h> #include "gtkeventloop.h" #include "eventloop.h" +#include "win32dep.h" #define GAIM_GTK_READ_COND (G_IO_IN | G_IO_HUP | G_IO_ERR) #define GAIM_GTK_WRITE_COND (G_IO_OUT | G_IO_HUP | G_IO_ERR | G_IO_NVAL) @@ -92,7 +93,11 @@ if (condition & GAIM_INPUT_WRITE) cond |= GAIM_GTK_WRITE_COND; +#ifdef _WIN32 + channel = wgaim_g_io_channel_win32_new_socket(fd); +#else channel = g_io_channel_unix_new(fd); +#endif closure->result = g_io_add_watch_full(channel, G_PRIORITY_DEFAULT, cond, gaim_gtk_io_invoke, closure, gaim_gtk_io_destroy); Modified: trunk/libgaim/Makefile.am =================================================================== --- trunk/libgaim/Makefile.am 2006-10-16 14:50:20 UTC (rev 17485) +++ trunk/libgaim/Makefile.am 2006-10-16 17:14:41 UTC (rev 17486) @@ -16,6 +16,7 @@ win32/targets.mak \ win32/wgaimerror.h \ win32/win32dep.c \ + win32/giowin32.c \ win32/win32dep.h if USE_GCONFTOOL Modified: trunk/libgaim/Makefile.mingw =================================================================== --- trunk/libgaim/Makefile.mingw 2006-10-16 14:50:20 UTC (rev 17485) +++ trunk/libgaim/Makefile.mingw 2006-10-16 17:14:41 UTC (rev 17486) @@ -73,6 +73,7 @@ value.c \ xmlnode.c \ whiteboard.c \ + win32/giowin32.c \ win32/libc_interface.c \ win32/win32dep.c Added: trunk/libgaim/win32/giowin32.c =================================================================== --- trunk/libgaim/win32/giowin32.c (rev 0) +++ trunk/libgaim/win32/giowin32.c 2006-10-16 17:14:41 UTC (rev 17486) @@ -0,0 +1,857 @@ +/* GLIB - Library of useful routines for C programming + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * + * giowin32.c: IO Channels for Win32. + * Copyright 1998 Owen Taylor and Tor Lillqvist + * Copyright 1999-2000 Tor Lillqvist and Craig Setera + * Copyright 2001-2003 Andrew Lanoix + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* + * Modified by the GLib Team and others 1997-2000. See the AUTHORS + * file for a list of people on the GLib Team. See the ChangeLog + * files for a list of changes. These files are distributed with + * GLib at ftp://ftp.gtk.org/pub/gtk/. + */ + +/* Define this to get (very) verbose logging of all channels */ +/* #define G_IO_WIN32_DEBUG */ + +//#include "config.h" + +#include <glib.h> + +#include <stdlib.h> +#include <windows.h> +#include <winsock.h> /* Not everybody has winsock2 */ +#include <fcntl.h> +#include <io.h> +#include <process.h> +#include <errno.h> +#include <sys/stat.h> + +#include <glib/gstdio.h> + +typedef struct _GIOWin32Channel GIOWin32Channel; +typedef struct _GIOWin32Watch GIOWin32Watch; + +#define BUFFER_SIZE 4096 + +typedef enum { + G_IO_WIN32_WINDOWS_MESSAGES, /* Windows messages */ + G_IO_WIN32_FILE_DESC, /* Unix-like file descriptors from + * _open() or _pipe(). Read with read(). + * Have to create separate thread to read. + */ + G_IO_WIN32_SOCKET /* Sockets. A separate thread is blocked + * in select() most of the time. + */ +} GIOWin32ChannelType; + +struct _GIOWin32Channel { + GIOChannel channel; + gint fd; /* Either a Unix-like file handle as provided + * by the Microsoft C runtime, or a SOCKET + * as provided by WinSock. + */ + GIOWin32ChannelType type; + + gboolean debug; + + CRITICAL_SECTION mutex; + + /* This is used by G_IO_WIN32_WINDOWS_MESSAGES channels */ + HWND hwnd; /* handle of window, or NULL */ + + /* Following fields are used by both fd and socket channels. */ + gboolean running; /* Is reader thread running. FALSE if + * EOF has been reached. + */ + gboolean needs_close; /* If the channel has been closed while + * the reader thread was still running. + */ + guint thread_id; /* If non-NULL has a reader thread, or has + * had.*/ + HANDLE data_avail_event; + + gushort revents; + + /* Following fields used by fd channels for input */ + + /* Data is kept in a circular buffer. To be able to distinguish between + * empty and full buffer, we cannot fill it completely, but have to + * leave a one character gap. + * + * Data available is between indexes rdp and wrp-1 (modulo BUFFER_SIZE). + * + * Empty: wrp == rdp + * Full: (wrp + 1) % BUFFER_SIZE == rdp + * Partial: otherwise + */ + guchar *buffer; /* (Circular) buffer */ + gint wrp, rdp; /* Buffer indices for writing and reading */ + HANDLE space_avail_event; + + /* Following fields used by socket channels */ + GSList *watches; + HANDLE data_avail_noticed_event; + gint reset_send; /* socket used to send data so select_thread() can reset/re-loop */ + gint reset_recv; /* socket used to recv data so select_thread() can reset/re-loop */ +}; + +#define LOCK(mutex) EnterCriticalSection (&mutex) +#define UNLOCK(mutex) LeaveCriticalSection (&mutex) + +struct _GIOWin32Watch { + GSource source; + GPollFD pollfd; + GIOChannel *channel; + GIOCondition condition; +}; + +static void +g_win32_print_gioflags (GIOFlags flags) +{ + char *bar = ""; + + if (flags & G_IO_FLAG_APPEND) + bar = "|", g_print ("APPEND"); + if (flags & G_IO_FLAG_NONBLOCK) + g_print ("%sNONBLOCK", bar), bar = "|"; + if (flags & G_IO_FLAG_IS_READABLE) + g_print ("%sREADABLE", bar), bar = "|"; + if (flags & G_IO_FLAG_IS_WRITEABLE) + g_print ("%sWRITEABLE", bar), bar = "|"; + if (flags & G_IO_FLAG_IS_SEEKABLE) + g_print ("%sSEEKABLE", bar), bar = "|"; +} + +static gboolean +g_io_win32_get_debug_flag (void) +{ +#ifdef G_IO_WIN32_DEBUG + return TRUE; +#else + if (getenv ("G_IO_WIN32_DEBUG") != NULL) + return TRUE; + else + return FALSE; +#endif +} + +static void +g_io_channel_win32_init (GIOWin32Channel *channel) +{ + channel->debug = g_io_win32_get_debug_flag (); + channel->buffer = NULL; + channel->running = FALSE; + channel->needs_close = FALSE; + channel->thread_id = 0; + channel->data_avail_event = NULL; + channel->revents = 0; + channel->space_avail_event = NULL; + channel->reset_send = INVALID_SOCKET; + channel->reset_recv = INVALID_SOCKET; + channel->data_avail_noticed_event = NULL; + channel->watches = NULL; + InitializeCriticalSection (&channel->mutex); +} + +static void +create_events (GIOWin32Channel *channel) +{ + SECURITY_ATTRIBUTES sec_attrs; + + sec_attrs.nLength = sizeof (SECURITY_ATTRIBUTES); + sec_attrs.lpSecurityDescriptor = NULL; + sec_attrs.bInheritHandle = FALSE; + + /* The data available event is manual reset, the space available event + * is automatic reset. + */ + if (!(channel->data_avail_event = CreateEvent (&sec_attrs, TRUE, FALSE, NULL)) + || !(channel->space_avail_event = CreateEvent (&sec_attrs, FALSE, FALSE, NULL)) + || !(channel->data_avail_noticed_event = CreateEvent (&sec_attrs, FALSE, FALSE, NULL))) + { + gchar *emsg = g_win32_error_message (GetLastError ()); + g_error ("Error creating event: %s", emsg); + g_free (emsg); + } +} + +static void +create_thread (GIOWin32Channel *channel, + GIOCondition condition, + unsigned (__stdcall *thread) (void *parameter)) +{ + HANDLE thread_handle; + + thread_handle = (HANDLE) _beginthreadex (NULL, 0, thread, channel, 0, + &channel->thread_id); + if (thread_handle == 0) + g_warning (G_STRLOC ": Error creating reader thread: %s", + g_strerror (errno)); + else if (!CloseHandle (thread_handle)) + g_warning (G_STRLOC ": Error closing thread handle: %s\n", + g_win32_error_message (GetLastError ())); + + WaitForSingleObject (channel->space_avail_event, INFINITE); +} + +static void +init_reset_sockets (GIOWin32Channel *channel) +{ + struct sockaddr_in local, local2, server; + int len; + + channel->reset_send = (gint) socket (AF_INET, SOCK_DGRAM, 0); + if (channel->reset_send == INVALID_SOCKET) + { + g_warning (G_STRLOC ": Error creating reset_send socket: %s\n", + g_win32_error_message (WSAGetLastError ())); + } + + local.sin_family = AF_INET; + local.sin_port = 0; + local.sin_addr.s_addr = htonl (INADDR_LOOPBACK); + + if (bind (channel->reset_send, (struct sockaddr *)&local, sizeof (local)) == SOCKET_ERROR) + { + g_warning (G_STRLOC ": Error binding to reset_send socket: %s\n", + g_win32_error_message (WSAGetLastError ())); + } + + local2.sin_family = AF_INET; + local2.sin_port = 0; + local2.sin_addr.s_addr = htonl (INADDR_LOOPBACK); + + channel->reset_recv = (gint) socket (AF_INET, SOCK_DGRAM, 0); + if (channel->reset_recv == INVALID_SOCKET) + { + g_warning (G_STRLOC ": Error creating reset_recv socket: %s\n", + g_win32_error_message (WSAGetLastError ())); + } + + if (bind (channel->reset_recv, (struct sockaddr *)&local2, sizeof (local)) == SOCKET_ERROR) + { + g_warning (G_STRLOC ": Error binding to reset_recv socket: %s\n", + g_win32_error_message (WSAGetLastError ())); + } + + len = sizeof (local2); + if (getsockname (channel->reset_recv, (struct sockaddr *)&local2, &len) == SOCKET_ERROR) + { + g_warning (G_STRLOC ": Error getsockname with reset_recv socket: %s\n", + g_win32_error_message (WSAGetLastError ())); + } + + memset (&server, 0, sizeof (server)); + server.sin_addr.s_addr = htonl (INADDR_LOOPBACK); + server.sin_family = AF_INET; + server.sin_port = local2.sin_port; + + if (connect (channel->reset_send, (struct sockaddr *)&server, sizeof (server)) == SOCKET_ERROR) + { + g_warning (G_STRLOC ": connect to reset_recv socket: %s\n", + g_win32_error_message (WSAGetLastError ())); + } + +} + +static unsigned __stdcall +select_thread (void *parameter) +{ + GIOWin32Channel *channel = parameter; + fd_set read_fds, write_fds, except_fds; + GSList *tmp; + int n; + char buffer[8]; + + g_io_channel_ref ((GIOChannel *)channel); + + if (channel->debug) + g_print ("select_thread %#x: start fd:%d data_avail:%#x data_avail_noticed:%#x\n", + channel->thread_id, + channel->fd, + (guint) channel->data_avail_event, + (guint) channel->data_avail_noticed_event); + + channel->rdp = channel->wrp = 0; + channel->running = TRUE; + + SetEvent (channel->space_avail_event); + + while (channel->running) + { + FD_ZERO (&read_fds); + FD_ZERO (&write_fds); + FD_ZERO (&except_fds); + FD_SET (channel->reset_recv, &read_fds); + + LOCK (channel->mutex); + tmp = channel->watches; + while (tmp) + { + GIOWin32Watch *watch = (GIOWin32Watch *)tmp->data; + + if (watch->condition & (G_IO_IN | G_IO_HUP)) + FD_SET (channel->fd, &read_fds); + if (watch->condition & G_IO_OUT) + FD_SET (channel->fd, &write_fds); + if (watch->condition & G_IO_ERR) + FD_SET (channel->fd, &except_fds); + + tmp = tmp->next; + } + UNLOCK (channel->mutex); + + if (channel->debug) + g_print ("select_thread %#x: calling select() for%s%s%s\n", + channel->thread_id, + (FD_ISSET (channel->fd, &read_fds) ? " IN" : ""), + (FD_ISSET (channel->fd, &write_fds) ? " OUT" : ""), + (FD_ISSET (channel->fd, &except_fds) ? " ERR" : "")); + + n = select (1, &read_fds, &write_fds, &except_fds, NULL); + + LOCK (channel->mutex); + if (channel->needs_close) + { + UNLOCK (channel->mutex); + break; + } + UNLOCK (channel->mutex); + + if (n == SOCKET_ERROR) + { + if (channel->debug) + g_print ("select_thread %#x: select returned SOCKET_ERROR\n", + channel->thread_id); + break; + } + + if (FD_ISSET (channel->reset_recv, &read_fds)) + { + if (channel->debug) + g_print ("select_thread %#x: re-looping\n", + channel->thread_id); + recv (channel->reset_recv, (char *)&buffer, (int) sizeof (buffer), 0); + continue; + } + + if (channel->debug) + g_print ("select_thread %#x: got%s%s%s\n", + channel->thread_id, + (FD_ISSET (channel->fd, &read_fds) ? " IN" : ""), + (FD_ISSET (channel->fd, &write_fds) ? " OUT" : ""), + (FD_ISSET (channel->fd, &except_fds) ? " ERR" : "")); + + if (FD_ISSET (channel->fd, &read_fds)) + channel->revents |= G_IO_IN; + if (FD_ISSET (channel->fd, &write_fds)) + channel->revents |= G_IO_OUT; + if (FD_ISSET (channel->fd, &except_fds)) + channel->revents |= G_IO_ERR; + + if (channel->debug) + g_print ("select_thread %#x: resetting data_avail_noticed, setting data_avail\n", + channel->thread_id); + + LOCK (channel->mutex); + ResetEvent (channel->data_avail_noticed_event); + SetEvent (channel->data_avail_event); + if (channel->needs_close) + { + UNLOCK (channel->mutex); + break; + } + UNLOCK (channel->mutex); + + if (channel->debug) + g_print ("select_thread %#x: waiting for data_avail_noticed\n", + channel->thread_id); + + WaitForSingleObject (channel->data_avail_noticed_event, INFINITE); + if (channel->debug) + g_print ("select_thread %#x: got data_avail_noticed\n", + channel->thread_id); + } + + LOCK (channel->mutex); + channel->running = FALSE; + if (channel->debug) + g_print ("select_thread %#x: got error, setting data_avail\n", + channel->thread_id); + SetEvent (channel->data_avail_event); + g_io_channel_unref ((GIOChannel *)channel); + UNLOCK (channel->mutex); + + /* No need to call _endthreadex(), the actual thread starter routine + * in MSVCRT (see crt/src/threadex.c:_threadstartex) calls + * _endthreadex() for us. + */ + + return 0; +} + +static gboolean +g_io_win32_prepare (GSource *source, + gint *timeout) +{ + GIOWin32Watch *watch = (GIOWin32Watch *)source; + GIOCondition buffer_condition = g_io_channel_get_buffer_condition (watch->channel); + GIOWin32Channel *channel = (GIOWin32Channel *)watch->channel; + + *timeout = -1; + + if (channel->debug) + g_print ("g_io_win32_prepare: for thread %#x buffer_condition:%#x\n" + " watch->pollfd.events:%#x watch->pollfd.revents:%#x channel->revents:%#x\n", + channel->thread_id, buffer_condition, + watch->pollfd.events, watch->pollfd.revents, channel->revents); + + if (channel->type == G_IO_WIN32_FILE_DESC) + { + LOCK (channel->mutex); + if (channel->running && channel->wrp == channel->rdp) + { + if (channel->debug) + g_print ("g_io_win32_prepare: for thread %#x, setting channel->revents = 0\n", + channel->thread_id); + channel->revents = 0; + } + UNLOCK (channel->mutex); + } + else if (channel->type == G_IO_WIN32_SOCKET) + { + LOCK (channel->mutex); + channel->revents = 0; + if (channel->debug) + g_print ("g_io_win32_prepare: for thread %#x, setting data_avail_noticed\n", + channel->thread_id); + SetEvent (channel->data_avail_noticed_event); + if (channel->debug) + g_print ("g_io_win32_prepare: thread %#x, there.\n", + channel->thread_id); + UNLOCK (channel->mutex); + } + + return ((watch->condition & buffer_condition) == watch->condition); +} + +static gboolean +g_io_win32_check (GSource *source) +{ + MSG msg; + GIOWin32Watch *watch = (GIOWin32Watch *)source; + GIOWin32Channel *channel = (GIOWin32Channel *)watch->channel; + GIOCondition buffer_condition = g_io_channel_get_buffer_condition (watch->channel); + + if (channel->debug) + g_print ("g_io_win32_check: for thread %#x buffer_condition:%#x\n" + " watch->pollfd.events:%#x watch->pollfd.revents:%#x channel->revents:%#x\n", + channel->thread_id, buffer_condition, + watch->pollfd.events, watch->pollfd.revents, channel->revents); + + if (channel->type != G_IO_WIN32_WINDOWS_MESSAGES) + { + watch->pollfd.revents = (watch->pollfd.events & channel->revents); + } + else + { + return (PeekMessage (&msg, channel->hwnd, 0, 0, PM_NOREMOVE)); + } + + if (channel->type == G_IO_WIN32_SOCKET) + { + LOCK (channel->mutex); + if (channel->debug) + g_print ("g_io_win32_check: thread %#x, resetting data_avail\n", + channel->thread_id); + ResetEvent (channel->data_avail_event); + if (channel->debug) + g_print ("g_io_win32_check: thread %#x, there.\n", + channel->thread_id); + UNLOCK (channel->mutex); + } + + return ((watch->pollfd.revents | buffer_condition) & watch->condition); +} + +static gboolean +g_io_win32_dispatch (GSource *source, + GSourceFunc callback, + gpointer user_data) +{ + GIOFunc func = (GIOFunc)callback; + GIOWin32Watch *watch = (GIOWin32Watch *)source; + GIOCondition buffer_condition = g_io_channel_get_buffer_condition (watch->channel); + + if (!func) + { + g_warning (G_STRLOC ": GIOWin32Watch dispatched without callback\n" + "You must call g_source_connect()."); + return FALSE; + } + + return (*func) (watch->channel, + (watch->pollfd.revents | buffer_condition) & watch->condition, + user_data); +} + +static void +g_io_win32_finalize (GSource *source) +{ + GIOWin32Watch *watch = (GIOWin32Watch *)source; + GIOWin32Channel *channel = (GIOWin32Channel *)watch->channel; + char send_buffer[] = "f"; + + LOCK (channel->mutex); + if (channel->debug) + g_print ("g_io_win32_finalize: channel with thread %#x\n", + channel->thread_id); + + channel->watches = g_slist_remove (channel->watches, watch); + + SetEvent (channel->data_avail_noticed_event); + if (channel->type == G_IO_WIN32_SOCKET) + { + /* Tell select_thread() to exit */ + channel->needs_close = 1; + /* Wake up select_thread() from its blocking select() */ + send (channel->reset_send, send_buffer, sizeof (send_buffer), 0); + } + + UNLOCK (channel->mutex); + g_io_channel_unref (watch->channel); +} + +GSourceFuncs g_io_watch_funcs = { + g_io_win32_prepare, + g_io_win32_check, + g_io_win32_dispatch, + g_io_win32_finalize, + NULL, NULL +}; + +static GSource * +g_io_win32_create_watch (GIOChannel *channel, + GIOCondition condition, + unsigned (__stdcall *thread) (void *parameter)) +{ + GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel; + GIOWin32Watch *watch; + GSource *source; + char send_buffer[] = "c"; + + source = g_source_new (&g_io_watch_funcs, sizeof (GIOWin32Watch)); + watch = (GIOWin32Watch *)source; + + watch->channel = channel; + g_io_channel_ref (channel); + + watch->condition = condition; + + if (win32_channel->data_avail_event == NULL) + create_events (win32_channel); + + watch->pollfd.fd = (gint) win32_channel->data_avail_event; + watch->pollfd.events = condition; + + if (win32_channel->debug) + g_print ("g_io_win32_create_watch: fd:%d condition:%#x handle:%#x\n", + win32_channel->fd, condition, watch->pollfd.fd); + + LOCK (win32_channel->mutex); + win32_channel->watches = g_slist_append (win32_channel->watches, watch); + + if (win32_channel->thread_id == 0) + create_thread (win32_channel, condition, thread); + else + send (win32_channel->reset_send, send_buffer, sizeof (send_buffer), 0); + + g_source_add_poll (source, &watch->pollfd); + UNLOCK (win32_channel->mutex); + + return source; +} + +static void +g_io_win32_free (GIOChannel *channel) +{ + GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel; + + if (win32_channel->debug) + g_print ("thread %#x: freeing channel, fd: %d\n", + win32_channel->thread_id, + win32_channel->fd); + + if (win32_channel->reset_send && win32_channel->reset_send != INVALID_SOCKET) + closesocket (win32_channel->reset_send); + if (win32_channel->reset_recv && win32_channel->reset_recv != INVALID_SOCKET) + closesocket (win32_channel->reset_recv); + if (win32_channel->data_avail_event) + CloseHandle (win32_channel->data_avail_event); + if (win32_channel->space_avail_event) + CloseHandle (win32_channel->space_avail_event); + if (win32_channel->data_avail_noticed_event) + CloseHandle (win32_channel->data_avail_noticed_event); + DeleteCriticalSection (&win32_channel->mutex); + + g_free (win32_channel->buffer); + g_slist_free (win32_channel->watches); + g_free (win32_channel); +} + +static GIOStatus +g_io_win32_sock_read (GIOChannel *channel, + gchar *buf, + gsize count, + gsize *bytes_read, + GError **err) +{ + GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel; + gint result; + GIOChannelError error = G_IO_STATUS_NORMAL; + GIOStatus internal_status = G_IO_STATUS_NORMAL; + char send_buffer[] = "sr"; + + if (win32_channel->debug) + g_print ("g_io_win32_sock_read: sockfd:%d count:%d\n", + win32_channel->fd, count); +#ifdef WE_NEED_TO_HANDLE_WSAEINTR +repeat: +#endif + result = recv (win32_channel->fd, buf, count, 0); + + if (win32_channel->debug) + g_print ("g_io_win32_sock_read: recv:%d\n", result); + + if (result == SOCKET_ERROR) + { + *bytes_read = 0; + + switch (WSAGetLastError ()) + { + case WSAEINVAL: + error = G_IO_CHANNEL_ERROR_INVAL; + break; + case WSAEWOULDBLOCK: + return G_IO_STATUS_AGAIN; +#ifdef WE_NEED_TO_HANDLE_WSAEINTR /* not anymore with wsock2 ? */ + case WSAEINTR: + goto repeat; +#endif + default: + error = G_IO_CHANNEL_ERROR_FAILED; + break; + } + g_set_error (err, G_IO_CHANNEL_ERROR, error, "Socket read error"); + internal_status = G_IO_STATUS_ERROR; + /* FIXME get all errors, better error messages */ + } + else + { + *bytes_read = result; + if (result == 0) + internal_status = G_IO_STATUS_EOF; + } + + if ((internal_status == G_IO_STATUS_EOF) || + (internal_status == G_IO_STATUS_ERROR)) + { + LOCK (win32_channel->mutex); + SetEvent (win32_channel->data_avail_noticed_event); + win32_channel->needs_close = 1; + send (win32_channel->reset_send, send_buffer, sizeof (send_buffer), 0); + UNLOCK (win32_channel->mutex); + } + return internal_status; +} + +static GIOStatus +g_io_win32_sock_write (GIOChannel *channel, + const gchar *buf, + gsize count, + gsize *bytes_written, + GError **err) +{ + GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel; + gint result; + GIOChannelError error = G_IO_STATUS_NORMAL; + char send_buffer[] = "sw"; + + if (win32_channel->debug) + g_print ("g_io_win32_sock_write: sockfd:%d count:%d\n", + win32_channel->fd, count); +#ifdef WE_NEED_TO_HANDLE_WSAEINTR +repeat: +#endif + result = send (win32_channel->fd, buf, count, 0); + + if (win32_channel->debug) + g_print ("g_io_win32_sock_write: send:%d\n", result); + + if (result == SOCKET_ERROR) + { + *bytes_written = 0; + + switch (WSAGetLastError ()) + { + case WSAEINVAL: + error = G_IO_CHANNEL_ERROR_INVAL; + break; + case WSAEWOULDBLOCK: + return G_IO_STATUS_AGAIN; +#ifdef WE_NEED_TO_HANDLE_WSAEINTR /* not anymore with wsock2 ? */ + case WSAEINTR: + goto repeat; +#endif + default: + error = G_IO_CHANNEL_ERROR_FAILED; + break; + } + g_set_error (err, G_IO_CHANNEL_ERROR, error, "Socket write error"); + LOCK (win32_channel->mutex); + SetEvent (win32_channel->data_avail_noticed_event); + win32_channel->needs_close = 1; + send (win32_channel->reset_send, send_buffer, sizeof (send_buffer), 0); + UNLOCK (win32_channel->mutex); + return G_IO_STATUS_ERROR; + /* FIXME get all errors, better error messages */ + } + else + { + *bytes_written = result; + + return G_IO_STATUS_NORMAL; + } +} + +static GIOStatus +g_io_win32_sock_close (GIOChannel *channel, + GError **err) +{ + GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel; + + LOCK (win32_channel->mutex); + if (win32_channel->running) + { + if (win32_channel->debug) + g_print ("thread %#x: running, marking for later close\n", + win32_channel->thread_id); + win32_channel->running = FALSE; + win32_channel->needs_close = TRUE; + SetEvent(win32_channel->data_avail_noticed_event); + } + if (win32_channel->fd != -1) + { + if (win32_channel->debug) + g_print ("thread %#x: closing socket %d\n", + win32_channel->thread_id, + win32_channel->fd); + + closesocket (win32_channel->fd); + win32_channel->fd = -1; + } + UNLOCK (win32_channel->mutex); + + /* FIXME error detection? */ + + return G_IO_STATUS_NORMAL; +} + +static GSource * +g_io_win32_sock_create_watch (GIOChannel *channel, + GIOCondition condition) +{ + return g_io_win32_create_watch (channel, condition, select_thread); +} + +static GIOStatus +g_io_win32_set_flags (GIOChannel *channel, + GIOFlags flags, + GError **err) +{ + GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel; + + if (win32_channel->debug) + { + g_print ("g_io_win32_set_flags: "); + g_win32_print_gioflags (flags); + g_print ("\n"); + } + + g_warning ("g_io_win32_set_flags () not implemented.\n"); + + return G_IO_STATUS_NORMAL; +} + +static GIOFlags +g_io_win32_sock_get_flags (GIOChannel *channel) +{ + /* XXX Could do something here. */ + return 0; +} + +static GIOFuncs win32_channel_sock_funcs = { + g_io_win32_sock_read, + g_io_win32_sock_write, + NULL, + g_io_win32_sock_close, + g_io_win32_sock_create_watch, + g_io_win32_free, + g_io_win32_set_flags, + g_io_win32_sock_get_flags, +}; + +GIOChannel * +wgaim_g_io_channel_win32_new_socket (int socket) +{ + GIOWin32Channel *win32_channel = g_new (GIOWin32Channel, 1); + GIOChannel *channel = (GIOChannel *)win32_channel; + + g_io_channel_init (channel); + g_io_channel_win32_init (win32_channel); + init_reset_sockets (win32_channel); + if (win32_channel->debug) + g_print ("g_io_channel_win32_new_socket: sockfd:%d\n", socket); + channel->funcs = &win32_channel_sock_funcs; + win32_channel->type = G_IO_WIN32_SOCKET; + win32_channel->fd = socket; + + /* XXX: check this */ + channel->is_readable = TRUE; + channel->is_writeable = TRUE; + + channel->is_seekable = FALSE; + + return channel; +} + +#if 0 +void +g_io_channel_win32_set_debug (GIOChannel *channel, + gboolean flag) +{ + GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel; + + win32_channel->debug = flag; +} +#endif + Property changes on: trunk/libgaim/win32/giowin32.c ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Modified: trunk/libgaim/win32/win32dep.h =================================================================== --- trunk/libgaim/win32/win32dep.h 2006-10-16 14:50:20 UTC (rev 17485) +++ trunk/libgaim/win32/win32dep.h 2006-10-16 17:14:41 UTC (rev 17486) @@ -40,6 +40,7 @@ char *wgaim_read_reg_string(HKEY rootkey, const char *subkey, const char *valname); /* needs to be g_free'd */ gboolean wgaim_write_reg_string(HKEY rootkey, const char *subkey, const char *valname, const char *value); char *wgaim_escape_dirsep(const char *filename); /* needs to be g_free'd */ +GIOChannel *wgaim_g_io_channel_win32_new_socket(int socket); /* Until we get the post-2.8 glib win32 giochannel implementation working, use the thread-based one */ /* Determine Gaim paths */ char *wgaim_get_special_folder(int folder_type); /* needs to be g_free'd */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lsc...@us...> - 2006-10-16 20:20:44
|
Revision: 17488 http://svn.sourceforge.net/gaim/?rev=17488&view=rev Author: lschiere Date: 2006-10-16 13:20:14 -0700 (Mon, 16 Oct 2006) Log Message: ----------- 4 translation updates, 1 spelling fix. the po files have not been updated to reflect the spelling fix. I don't feel like hand editing N po files and the mistake is in a number of them. I should learn sed. Modified Paths: -------------- trunk/libgaim/protocols/qq/send_file.c trunk/po/es.po trunk/po/fi.po trunk/po/fr.po trunk/po/hu.po Modified: trunk/libgaim/protocols/qq/send_file.c =================================================================== --- trunk/libgaim/protocols/qq/send_file.c 2006-10-16 20:15:30 UTC (rev 17487) +++ trunk/libgaim/protocols/qq/send_file.c 2006-10-16 20:20:14 UTC (rev 17488) @@ -449,7 +449,7 @@ qd->xfer->data = info; filename_len = strlen(filename); - filelen_str = g_strdup_printf("%d \xD7ֽ\xDA", filesize); + filelen_str = g_strdup_printf("%d ?ֽ?", filesize); filelen_strlen = strlen(filelen_str); packet_len = 82 + filename_len + filelen_strlen; @@ -734,7 +734,7 @@ } filename = strrchr(gaim_xfer_get_local_filename(qd->xfer), '/') + 1; msg = g_strdup_printf - (_("The sending process of file[%s] has been cancaled by buddy[%d]"), + (_("The sending process of file[%s] has been canceled by buddy[%d]"), filename, sender_uid); gaim_notify_warning (gc, _("File Send"), msg, NULL); Modified: trunk/po/es.po =================================================================== --- trunk/po/es.po 2006-10-16 20:15:30 UTC (rev 17487) +++ trunk/po/es.po 2006-10-16 20:20:14 UTC (rev 17488) @@ -6,12 +6,12 @@ # Copyright (c) December 2003, Francisco Javier F. Serrador # <fra...@hi...>, 2003. # Copyright (C) June 2002, April 2003, January 2004, March 2004, September 2004, -# January 2005, January/February 2006 +# January 2005, January/February 2006, October 2006 # Javier Fernández-Sanguino Peña <jf...@de...> # # Agradecemos la ayuda de revisión realizada por: # Nathaniel Case, Santiago Erquicia, Francisco Javier F. Serrador, -# Rafael Bermudez +# Rafael Bermudez, Eduardo Pérez # # This file is distributed under the same license as the Gaim package. # @@ -33,6 +33,8 @@ # # Otros términos comunes y sus traducciones: # +# - Away: Ausente +# - Idle: Inactivo # - Nickname o Nick: Apodo # - Smileys: emoticonos (no «caras gráficas») # - Screenname: Nombre de usuario @@ -44,13 +46,14 @@ # - Plain text: «En claro» (refiriéndose a una autenticación que no está cifrada) # - Pounce: Aviso # - Smiley: Emoticono -# +# - Tab: solapa (pestaña está descartado por los traductores de +# GNOME desde la versión 2.6) msgid "" msgstr "" "Project-Id-Version: Gaim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-02-13 21:43+0100\n" -"PO-Revision-Date: 2006-02-17 00:37+0100\n" +"POT-Creation-Date: 2006-09-29 00:00-0400\n" +"PO-Revision-Date: 2006-10-15 21:55+0200\n" "Last-Translator: Javier Fernández-Sanguino <jf...@de...>\n" "Language-Team: Spanish team <es...@li...>\n" "MIME-Version: 1.0\n" @@ -60,2766 +63,1373 @@ #: ../gaim.desktop.in.h:1 msgid "Gaim Internet Messenger" -msgstr "Gaim - Mensajería en Internet" +msgstr "Gaim - cliente de mensajería de Internet" #: ../gaim.desktop.in.h:2 msgid "Internet Messenger" -msgstr "Mensajería en Internet" +msgstr "Cliente de mensajería de Internet" #: ../gaim.desktop.in.h:3 msgid "Send instant messages over multiple protocols" -msgstr "Envía mensajes instantáneos a través de múltiples protocolos" +msgstr "Cliente de mensajería instantánea multiprotocolo" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/ciphertest.c:264 plugins/ciphertest.c:264 -msgid "Cipher Test" -msgstr "Prueba de cifrado" +#: ../console/gntaccount.c:119 ../console/gntblist.c:240 +#: ../console/gntblist.c:357 ../console/gntblist.c:370 +#: ../console/gntplugin.c:169 ../console/gntplugin.c:214 +#: ../console/gntstatus.c:240 ../console/gntstatus.c:248 +#: ../libgaim/protocols/jabber/buddy.c:1363 +#: ../libgaim/protocols/jabber/chat.c:677 +#: ../libgaim/protocols/jabber/chat.c:688 +#: ../libgaim/protocols/jabber/jabber.c:1197 +#: ../libgaim/protocols/qq/group_join.c:322 +#: ../libgaim/protocols/silc/ops.c:1448 +msgid "Error" +msgstr "Error" -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/ciphertest.c:267 ../plugins/ciphertest.c:269 -#: plugins/ciphertest.c:267 plugins/ciphertest.c:269 -msgid "Tests the ciphers that ship with gaim." -msgstr "Prueba los cifrados que se incluyen en gaim." +#: ../console/gntaccount.c:119 +msgid "Account was not added" +msgstr "No se ha añadido la cuenta" -#: plugins/contact_priority.c:61 -msgid "Buddy is idle" -msgstr "El amigo está inactivo" +#: ../console/gntaccount.c:120 +msgid "Screenname of an account must be non-empty." +msgstr "El nombre de usuario de una cuenta no puede estar vacío." -#: plugins/contact_priority.c:62 -msgid "Buddy is away" -msgstr "El amigo está ausente" +#: ../console/gntaccount.c:423 ../gtk/gtkaccount.c:557 +msgid "New mail notifications" +msgstr "Notificaciones de correo nuevo" -#: plugins/contact_priority.c:63 -msgid "Buddy is \"extended\" away" -msgstr "El amigo está \"extended\" ausente" +#: ../console/gntaccount.c:433 ../gtk/gtkaccount.c:486 +msgid "Remember password" +msgstr "Recordar contraseña" -#. Not used yet. -#: ../plugins/contact_priority.c:66 -msgid "Buddy is mobile" -msgstr "El amigo está móvil" +#: ../console/gntaccount.c:474 ../gtk/gtkaccount.c:1399 ../gtk/gtkblist.c:3771 +msgid "Modify Account" +msgstr "Modificar cuenta" -#: plugins/contact_priority.c:64 -msgid "Buddy is offline" -msgstr "El amigo está desconectado" +#: ../console/gntaccount.c:474 +msgid "New Account" +msgstr "Nueva cuenta" -#: ../plugins/contact_priority.c:90 plugins/contact_priority.c:86 -msgid "Point values to use when..." -msgstr "" -"Valores a utilizar cuando..." +#: ../console/gntaccount.c:500 ../gtk/gtkaccount.c:398 ../gtk/gtkft.c:695 +msgid "Protocol:" +msgstr "Protocolo:" -#: plugins/contact_priority.c:114 -msgid "" -"The buddy with the <i>largest score</i> is the buddy who will have priority " -"in the contact.\n" -msgstr "" -"El amigo con el <i>mayor marcador</i> es el que tendrá prioridad en el " -"contacto.\n" +#: ../console/gntaccount.c:508 ../gtk/gtkaccount.c:403 ../gtk/gtkblist.c:4895 +#: ../gtk/plugins/gevolution/new_person_dialog.c:295 +msgid "Screen name:" +msgstr "Nombre de usuario:" -#: plugins/contact_priority.c:121 -msgid "Use last buddy when scores are equal" -msgstr "Usar el último amigo cuando los marcadores sean iguales" +#: ../console/gntaccount.c:521 ../gtk/gtkaccount.c:477 +msgid "Password:" +msgstr "Contraseña:" -#: ../plugins/contact_priority.c:130 plugins/contact_priority.c:126 -msgid "Point values to use for account..." -msgstr "" -"Valores a utilizar para la cuenta..." +#: ../console/gntaccount.c:531 ../gtk/gtkblist.c:4916 ../gtk/gtkblist.c:5281 +msgid "Alias:" +msgstr "Apodo:" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/contact_priority.c:182 plugins/contact_priority.c:177 -msgid "Contact Priority" -msgstr "Prioridad del contacto" +#. Cancel +#: ../console/gntaccount.c:554 ../console/gntaccount.c:615 +#: ../console/gntaccount.c:834 ../console/gntblist.c:281 +#: ../console/gntblist.c:347 ../console/gntblist.c:380 +#: ../console/gntblist.c:699 ../console/gntblist.c:863 +#: ../console/gntblist.c:951 ../console/gntprefs.c:224 +#: ../console/gntstatus.c:132 ../console/gntstatus.c:404 +#: ../console/gntstatus.c:524 ../gtk/gtkaccount.c:1832 +#: ../gtk/gtkaccount.c:2302 ../gtk/gtkblist.c:5337 ../gtk/gtkdialogs.c:667 +#: ../gtk/gtkdialogs.c:804 ../gtk/gtkdialogs.c:895 ../gtk/gtkdialogs.c:914 +#: ../gtk/gtkdialogs.c:936 ../gtk/gtkdialogs.c:956 ../gtk/gtkdialogs.c:1000 +#: ../gtk/gtkdialogs.c:1038 ../gtk/gtkdialogs.c:1092 ../gtk/gtkdialogs.c:1129 +#: ../gtk/gtkdialogs.c:1154 ../gtk/gtkimhtmltoolbar.c:419 +#: ../gtk/gtkplugin.c:296 ../gtk/gtkpounce.c:1088 ../gtk/gtkprivacy.c:566 +#: ../gtk/gtkprivacy.c:579 ../gtk/gtkprivacy.c:604 ../gtk/gtkprivacy.c:615 +#: ../gtk/gtkrequest.c:270 ../gtk/gtksavedstatuses.c:296 +#: ../libgaim/account.c:963 ../libgaim/account.c:1134 +#: ../libgaim/account.c:1168 ../libgaim/conversation.c:1164 +#: ../libgaim/protocols/gg/gg.c:498 ../libgaim/protocols/gg/gg.c:656 +#: ../libgaim/protocols/gg/gg.c:792 ../libgaim/protocols/gg/gg.c:871 +#: ../libgaim/protocols/jabber/buddy.c:588 +#: ../libgaim/protocols/jabber/buddy.c:1725 +#: ../libgaim/protocols/jabber/buddy.c:1759 +#: ../libgaim/protocols/jabber/chat.c:780 +#: ../libgaim/protocols/jabber/jabber.c:854 +#: ../libgaim/protocols/jabber/jabber.c:1352 +#: ../libgaim/protocols/jabber/xdata.c:338 ../libgaim/protocols/msn/msn.c:251 +#: ../libgaim/protocols/msn/msn.c:266 ../libgaim/protocols/msn/msn.c:281 +#: ../libgaim/protocols/msn/msn.c:296 ../libgaim/protocols/msn/msn.c:313 +#: ../libgaim/protocols/oscar/oscar.c:1387 +#: ../libgaim/protocols/oscar/oscar.c:2151 +#: ../libgaim/protocols/oscar/oscar.c:2190 +#: ../libgaim/protocols/oscar/oscar.c:2238 +#: ../libgaim/protocols/oscar/oscar.c:5732 +#: ../libgaim/protocols/oscar/oscar.c:5784 +#: ../libgaim/protocols/oscar/oscar.c:5936 +#: ../libgaim/protocols/oscar/oscar.c:5961 +#: ../libgaim/protocols/oscar/oscar.c:6017 +#: ../libgaim/protocols/oscar/oscar.c:6086 +#: ../libgaim/protocols/oscar/peer.c:991 +#: ../libgaim/protocols/qq/buddy_info.c:480 +#: ../libgaim/protocols/qq/buddy_opt.c:210 +#: ../libgaim/protocols/qq/buddy_opt.c:400 ../libgaim/protocols/qq/group.c:122 +#: ../libgaim/protocols/qq/group_join.c:136 +#: ../libgaim/protocols/qq/group_join.c:357 +#: ../libgaim/protocols/qq/group_opt.c:140 +#: ../libgaim/protocols/qq/group_opt.c:390 ../libgaim/protocols/qq/qq.c:459 +#: ../libgaim/protocols/qq/sendqueue.c:201 +#: ../libgaim/protocols/qq/sys_msg.c:102 ../libgaim/protocols/qq/sys_msg.c:157 +#: ../libgaim/protocols/qq/sys_msg.c:245 +#: ../libgaim/protocols/sametime/sametime.c:3364 +#: ../libgaim/protocols/sametime/sametime.c:3449 +#: ../libgaim/protocols/sametime/sametime.c:3619 +#: ../libgaim/protocols/sametime/sametime.c:5320 +#: ../libgaim/protocols/sametime/sametime.c:5409 +#: ../libgaim/protocols/sametime/sametime.c:5533 +#: ../libgaim/protocols/silc/buddy.c:467 +#: ../libgaim/protocols/silc/buddy.c:1078 +#: ../libgaim/protocols/silc/buddy.c:1183 ../libgaim/protocols/silc/chat.c:597 +#: ../libgaim/protocols/silc/chat.c:726 ../libgaim/protocols/silc/ops.c:1909 +#: ../libgaim/protocols/silc/silc.c:754 ../libgaim/protocols/silc/silc.c:959 +#: ../libgaim/protocols/yahoo/yahoo.c:3214 +#: ../libgaim/protocols/yahoo/yahoo.c:3223 ../libgaim/request.h:1344 +#: ../libgaim/request.h:1354 +msgid "Cancel" +msgstr "Cancelar" -#. *< name -#. *< version -#. *< summary -#: ../plugins/contact_priority.c:185 plugins/contact_priority.c:180 -msgid "" -"Allows for controlling the values associated with different buddy states." -msgstr "" -"Permite controlar los valores asociados a los diferentes estados de los " -"amigos." +#. Save +#: ../console/gntaccount.c:558 ../console/gntprefs.c:224 +#: ../console/gntstatus.c:407 ../console/gntstatus.c:512 ../gtk/gtkdebug.c:762 +#: ../gtk/gtkrequest.c:276 ../libgaim/account.c:1167 +#: ../libgaim/protocols/jabber/buddy.c:587 +msgid "Save" +msgstr "Guardar" -#. *< description -#: ../plugins/contact_priority.c:187 plugins/contact_priority.c:182 -msgid "" -"Allows for changing the point values of idle/away/offline states for buddies " -"in contact priority computations." -msgstr "" -"Permite cambiar los puntos asignados a los estados inactivo/ausente/no " -"disponible para los amigos en cálculos de prioridades de contacto." - -#. *< api_version -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/crazychat/cc_gaim_plugin.c:146 -#: plugins/crazychat/cc_gaim_plugin.c:146 -msgid "Crazychat" -msgstr "Crazychat" - -#. *< name -#. *< version -#. * summary -#: plugins/crazychat/cc_gaim_plugin.c:149 -msgid "Plugin to establish a Crazychat session." -msgstr "Complemento para establecer una sesión de «Crazychat»" - -#. * description -#: plugins/crazychat/cc_gaim_plugin.c:151 -msgid "Uses Gaim to obtain buddy ips to connect for a Crazychat session" -msgstr "Usar Gaim para obtener direcciones IP de los amigos para conectar a una sesión de «Crazychat»" - -#. make the network configuration frame -#: plugins/crazychat/cc_gaim_plugin.c:295 -msgid "Network Configuration" -msgstr "Configuración de red" - -#: plugins/crazychat/cc_gaim_plugin.c:307 -msgid "TCP port" -msgstr "Puerto TCP" - -#: plugins/crazychat/cc_gaim_plugin.c:317 -msgid "UDP port" -msgstr "Puerto UDP" - -#. make the feature configuration frame -#: plugins/crazychat/cc_gaim_plugin.c:329 -msgid "Feature Calibration" -msgstr "Ajuste de la función" - -#. add enabled / disabled -#: ../plugins/crazychat/cc_gaim_plugin.c:345 ../src/gtkaccount.c:2251 -#: ../src/gtkplugin.c:577 plugins/crazychat/cc_gaim_plugin.c:345 -#: src/gtkaccount.c:2236 src/gtkplugin.c:414 -msgid "Enabled" -msgstr "Habilitado" - -#: plugins/crazychat/cc_gaim_plugin.c:350 -msgid "Disabled" -msgstr "Deshabilitado" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: plugins/dbus-example.c:135 -msgid "DBus" -msgstr "DBus" - -#. *< name -#. *< version -#. * summary -#. * description -#: plugins/dbus-example.c:138 plugins/dbus-example.c:140 -msgid "DBus Plugin Example" -msgstr "Ejemplo de complemento DBus" - -#: plugins/docklet/docklet.c:153 -msgid "Right-click for more unread messages...\n" -msgstr "Pulse el botón derecho para ver más mensajes sin leer...\n" - -#: plugins/docklet/docklet.c:156 src/gtkblist.c:3244 +#: ../console/gntaccount.c:610 ../gtk/gtkaccount.c:1826 +#: ../gtk/gtksavedstatuses.c:293 #, c-format -msgid "%d unread message from %s\n" -msgid_plural "%d unread messages from %s\n" -msgstr[0] "%d mensaje sin leer de %s\n" -msgstr[1] "%d mensajes sin leer de %s\n" +msgid "Are you sure you want to delete %s?" +msgstr "¿Seguro que quiere borrar a %s?" -#: ../plugins/docklet/docklet.c:432 -msgid "Change Status" -msgstr "Cambiar estado:" +#. Close any other opened delete window +#: ../console/gntaccount.c:614 +msgid "Delete Account" +msgstr "Borrar cuenta" -#. hacks -#. zephyr has several exposures -#. NONE (where you are hidden, and zephyrs to you are in practice silently dropped -- yes this is wrong) -#. OPSTAFF "hidden" -#. REALM-VISIBLE visible to people in local realm -#. REALM-ANNOUNCED REALM-VISIBLE+ plus your logins/logouts are announced to <login,username,*> -#. NET-VISIBLE REALM-ANNOUNCED, plus visible to people in foreign realm -#. NET-ANNOUNCED NET-VISIBLE, plus logins/logouts are announced to <login,username,*> -#. -#. Online will set the user to the exposure they have in their options (defaulting to REALM-VISIBLE), -#. Hidden, will set the user's exposure to OPSTAFF -#. -#. Away won't change their exposure but will set an auto away message (for IMs only) -#. -#: ../plugins/docklet/docklet.c:435 ../src/gtkstatusbox.c:663 -#: ../src/protocols/jabber/buddy.c:1101 ../src/protocols/msn/state.c:29 -#: ../src/protocols/msn/state.c:30 ../src/protocols/msn/state.c:37 -#: ../src/protocols/msn/state.c:38 ../src/protocols/novell/novell.c:2845 -#: ../src/protocols/yahoo/yahoo.c:2733 ../src/status.c:155 -#: src/gtkstatusbox.c:438 src/protocols/bonjour/bonjour.c:251 -#: src/protocols/gg/gg.c:1437 src/protocols/irc/irc.c:171 -#: src/protocols/jabber/buddy.c:1089 src/protocols/jabber/jabber.c:1094 -#: src/protocols/msn/msn.c:581 src/protocols/msn/state.c:29 -#: src/protocols/msn/state.c:30 src/protocols/msn/state.c:37 -#: src/protocols/msn/state.c:38 src/protocols/napster/napster.c:584 -#: src/protocols/novell/novell.c:2846 src/protocols/novell/novell.c:2978 -#: src/protocols/oscar/oscar.c:7827 src/protocols/silc/silc.c:49 -#: src/protocols/simple/simple.c:254 src/protocols/yahoo/yahoo.c:2664 -#: src/protocols/zephyr/zephyr.c:2253 src/status.c:154 -msgid "Available" -msgstr "Disponible" +#: ../console/gntaccount.c:615 ../console/gntaccount.c:681 +#: ../console/gntstatus.c:132 ../console/gntstatus.c:194 +#: ../gtk/gtkaccount.c:1831 ../gtk/gtkpounce.c:1087 ../gtk/gtkrequest.c:273 +#: ../gtk/gtksavedstatuses.c:295 +msgid "Delete" +msgstr "Borrar" -#. Away stuff -#: ../plugins/docklet/docklet.c:439 ../src/gtkprefs.c:1759 -#: ../src/gtkstatusbox.c:664 ../src/protocols/irc/irc.c:520 -#: ../src/protocols/irc/msgs.c:219 ../src/protocols/jabber/buddy.c:1105 -#: ../src/protocols/novell/novell.c:2848 ../src/protocols/oscar/oscar.c:729 -#: ../src/protocols/oscar/oscar.c:6759 ../src/protocols/oscar/oscar.c:7800 -#: ../src/protocols/silc/buddy.c:1469 ../src/protocols/yahoo/yahoo.c:3187 -#: ../src/status.c:158 src/gtkprefs.c:1661 src/gtkstatusbox.c:439 -#: src/protocols/bonjour/bonjour.c:258 src/protocols/irc/irc.c:175 -#: src/protocols/irc/irc.c:457 src/protocols/irc/msgs.c:221 -#: src/protocols/jabber/buddy.c:1093 src/protocols/jabber/jabber.c:1110 -#: src/protocols/msn/msn.c:585 src/protocols/novell/novell.c:2849 -#: src/protocols/novell/novell.c:2984 src/protocols/oscar/oscar.c:707 -#: src/protocols/oscar/oscar.c:6621 src/protocols/oscar/oscar.c:7677 -#: src/protocols/oscar/oscar.c:7834 src/protocols/sametime/sametime.c:3247 -#: src/protocols/silc/buddy.c:1431 src/protocols/silc/silc.c:53 -#: src/protocols/yahoo/yahoo.c:3113 src/protocols/yahoo/yahoo.c:3212 -#: src/protocols/zephyr/zephyr.c:2260 src/status.c:157 -msgid "Away" -msgstr "Ausente" - -#: ../plugins/docklet/docklet.c:443 ../src/gtkstatusbox.c:665 -#: ../src/protocols/oscar/oscar.c:733 ../src/protocols/yahoo/yahoo.c:2727 -#: ../src/status.c:157 src/gtkstatusbox.c:440 src/protocols/gg/gg.c:1446 -#: src/protocols/oscar/oscar.c:711 src/protocols/oscar/oscar.c:7841 -#: src/protocols/yahoo/yahoo.c:2658 src/protocols/yahoo/yahoo.c:3245 -msgid "Invisible" -msgstr "Invisible" - -#: ../plugins/docklet/docklet.c:447 ../src/gtkblist.c:3016 -#: ../src/gtkstatusbox.c:666 ../src/protocols/jabber/buddy.c:1099 -#: ../src/protocols/novell/novell.c:2857 ../src/protocols/oscar/oscar.c:795 -#: ../src/protocols/oscar/oscar.c:7772 ../src/protocols/yahoo/yahoo.c:2731 -#: ../src/status.c:154 src/gtkstatusbox.c:441 -#: src/protocols/bonjour/bonjour.c:246 src/protocols/gg/gg.c:1432 -#: src/protocols/irc/irc.c:167 src/protocols/jabber/buddy.c:1087 -#: src/protocols/jabber/jabber.c:1087 src/protocols/msn/msn.c:577 -#: src/protocols/napster/napster.c:579 src/protocols/novell/novell.c:2858 -#: src/protocols/novell/novell.c:2975 src/protocols/oscar/oscar.c:769 -#: src/protocols/oscar/oscar.c:7649 src/protocols/oscar/oscar.c:7822 -#: src/protocols/sametime/sametime.c:3237 src/protocols/silc/silc.c:47 -#: src/protocols/simple/simple.c:250 src/protocols/yahoo/yahoo.c:2662 -#: src/protocols/yahoo/yahoo.c:3202 src/status.c:153 -msgid "Offline" -msgstr "Desconectado" - -#: ../plugins/docklet/docklet.c:467 ../src/gtkstatusbox.c:671 -msgid "New..." -msgstr "Nuevo..." - -#: ../plugins/docklet/docklet.c:468 ../src/gtkstatusbox.c:672 -#: src/gtkstatusbox.c:444 -msgid "Saved..." -msgstr "Guardado..." - -#: ../plugins/docklet/docklet.c:484 plugins/docklet/docklet.c:370 -msgid "Show Buddy List" -msgstr "Mostrar la lista de amigos" - -#: plugins/docklet/docklet.c:375 -msgid "Unread Messages" -msgstr "Mensajes sin leer" - -#: ../plugins/docklet/docklet.c:510 plugins/docklet/docklet.c:396 -msgid "New Message..." -msgstr "Mensaje nuevo..." - -#: ../plugins/docklet/docklet.c:519 ../src/gtkaccount.c:2467 -#: plugins/docklet/docklet.c:405 src/gtkaccount.c:2459 +#: ../console/gntaccount.c:644 ../console/gntblist.c:1638 +#: ../console/gntui.c:70 ../gtk/gtkaccount.c:2134 +#: ../gtk/plugins/docklet/docklet.c:519 msgid "Accounts" msgstr "Cuentas" -#: ../plugins/docklet/docklet.c:520 ../src/gtkplugin.c:541 -#: plugins/docklet/docklet.c:406 src/gtkplugin.c:383 -msgid "Plugins" -msgstr "Complementos" +#: ../console/gntaccount.c:650 +msgid "You can enable/disable accounts from the following list." +msgstr "Puede (desh)habilitar cuentas de la lista a continuación." -#: ../plugins/docklet/docklet.c:521 ../src/gtkprefs.c:1900 -#: plugins/docklet/docklet.c:407 src/gtkprefs.c:1779 -msgid "Preferences" -msgstr "Preferencias" +#: ../console/gntaccount.c:673 ../console/gntaccount.c:833 +#: ../console/gntblist.c:281 ../console/gntblist.c:347 +#: ../console/gntblist.c:380 ../console/gntnotify.c:306 +#: ../console/gntstatus.c:184 ../gtk/gtkaccount.c:2301 ../gtk/gtkblist.c:5336 +#: ../gtk/gtkconv.c:1626 ../gtk/gtkrequest.c:274 +#: ../libgaim/protocols/gg/gg.c:870 ../libgaim/protocols/oscar/oscar.c:2429 +#: ../libgaim/protocols/qq/sys_msg.c:102 ../libgaim/protocols/qq/sys_msg.c:157 +#: ../libgaim/protocols/qq/sys_msg.c:245 +#: ../libgaim/protocols/sametime/sametime.c:5408 +#: ../libgaim/protocols/silc/chat.c:596 +msgid "Add" +msgstr "Añadir" -#: ../plugins/docklet/docklet.c:525 plugins/docklet/docklet.c:413 -msgid "Mute Sounds" -msgstr "Sin sonido" +#: ../console/gntaccount.c:677 +msgid "Modify" +msgstr "Modificar" -#. TODO: need a submenu to change status, this needs to "link" -#. * to the status in the buddy list gtkstatusbox -#. -#: ../plugins/docklet/docklet.c:538 plugins/docklet/docklet.c:426 -msgid "Quit" -msgstr "Salir" +#: ../console/gntaccount.c:758 ../gtk/gtkaccount.c:2250 +#, c-format +msgid "%s%s%s%s has made %s his or her buddy%s%s" +msgstr "%s%s%s%s ha hecho a %s su amigo o amiga%s%s" -#: plugins/docklet/docklet.c:567 -msgid "Blink tray icon for unread..." -msgstr "" -"Hacer parpadear el icono en el área de notificación del sistema para los " -"mensajes sin leer..." +#: ../console/gntaccount.c:831 ../gtk/gtkaccount.c:2299 +msgid "Add buddy to your list?" +msgstr "¿Desea añadir el amigo a su lista?" -#: plugins/docklet/docklet.c:570 -msgid "_Instant Messages:" -msgstr "Mensajes instantáneos:" +#: ../console/gntblist.c:232 +msgid "You must provide a screename for the buddy." +msgstr "Debe dar un nombre de usuario para el amigo." -#: ../plugins/docklet/docklet.c:684 ../plugins/docklet/docklet.c:692 -#: ../plugins/win32/winprefs/winprefs.c:411 ../src/gtkprefs.c:823 -#: ../src/gtkprefs.c:1749 ../src/gtkprefs.c:1763 plugins/docklet/docklet.c:572 -#: plugins/docklet/docklet.c:580 plugins/win32/winprefs/winprefs.c:412 -#: src/gtkprefs.c:816 src/gtkprefs.c:1665 -msgid "Never" -msgstr "Nunca" +#: ../console/gntblist.c:234 +msgid "You must provide a group." +msgstr "Debe indicar un grupo." -#: plugins/docklet/docklet.c:573 -msgid "In hidden conversations" -msgstr "En conversaciones ocultas" +#: ../console/gntblist.c:236 +msgid "You must select an account." +msgstr "Debe seleccionar una cuenta." -#: ../plugins/docklet/docklet.c:686 ../plugins/docklet/docklet.c:694 -#: ../plugins/timestamp_format.c:39 ../plugins/timestamp_format.c:48 -#: ../plugins/win32/winprefs/winprefs.c:412 ../src/gtkprefs.c:825 -#: plugins/docklet/docklet.c:574 plugins/docklet/docklet.c:582 -#: plugins/win32/winprefs/winprefs.c:413 src/gtkprefs.c:818 -msgid "Always" -msgstr "Siempre" +#: ../console/gntblist.c:240 +msgid "Error adding buddy" +msgstr "Error al añadiro al amigo" -#: plugins/docklet/docklet.c:578 -msgid "C_hat Messages:" -msgstr "Mensajes del c_hat" +#: ../console/gntblist.c:265 ../gtk/gtkaccount.c:1895 +#: ../gtk/gtksavedstatuses.c:893 ../libgaim/protocols/oscar/oscar.c:2803 +msgid "Screen Name" +msgstr "Nombre de usuario" -#: plugins/docklet/docklet.c:581 -msgid "When my nick is said" -msgstr "Cuando mi apodo es mencionado" +#: ../console/gntblist.c:268 ../console/gntblist.c:339 ../gtk/gtkdialogs.c:913 +#: ../gtk/gtkdialogs.c:935 ../gtk/gtkdialogs.c:955 ../gtk/gtkrequest.c:277 +#: ../libgaim/protocols/silc/chat.c:587 +msgid "Alias" +msgstr "Apodo" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/docklet/docklet.c:720 plugins/docklet/docklet.c:607 -msgid "System Tray Icon" -msgstr "Icono del área de notificación del sistema" +#: ../console/gntblist.c:271 ../console/gntblist.c:342 +msgid "Group" +msgstr "Grupo" -#. *< name -#. *< version -#. * summary -#: ../plugins/docklet/docklet.c:723 plugins/docklet/docklet.c:610 -msgid "Displays an icon for Gaim in the system tray." -msgstr "Muestra un icono para Gaim en el área de notificación del sistema." +#: ../console/gntblist.c:274 ../console/gntblist.c:330 +#: ../console/gntnotify.c:155 ../console/gntstatus.c:495 +#: ../gtk/gtknotify.c:402 ../gtk/gtkpounce.c:1255 +#: ../gtk/plugins/gevolution/gevolution.c:450 ../libgaim/plugins/idle.c:153 +#: ../libgaim/plugins/idle.c:189 +msgid "Account" +msgstr "Cuenta" -#. * description -#: plugins/docklet/docklet.c:612 -msgid "" -"Displays a system tray icon (in GNOME, KDE, or Windows for example) to show " -"the current status of Gaim, allow fast access to commonly used functions, " -"and to toggle display of the buddy list. Also provides options to blink for " -"unread messages." -msgstr "" -"Muestra un icono en el área de notificación del sistema (por ejemplo en " -"Gnome, KDE o Windows) para mostrar el estado actual de Gaim. Permite un " -"acceso rápido a las funciones más comunes, e indicar si se debe mostrar la " -"lista de de amigos. También ofrece opciones para hacer parpadear los " -"mensajes sin leer." +#: ../console/gntblist.c:280 ../console/gntblist.c:739 ../gtk/gtkblist.c:4849 +#: ../gtk/plugins/gevolution/add_buddy_dialog.c:442 +#: ../libgaim/protocols/silc/buddy.c:736 +#: ../libgaim/protocols/silc/buddy.c:1030 +#: ../libgaim/protocols/silc/buddy.c:1075 +#: ../libgaim/protocols/silc/buddy.c:1174 +#: ../libgaim/protocols/yahoo/yahoo.c:3128 +msgid "Add Buddy" +msgstr "Añadir amigo" -#: ../plugins/docklet/eggtrayicon.c:123 plugins/docklet/eggtrayicon.c:122 -msgid "Orientation" -msgstr "Orientación" +#: ../console/gntblist.c:280 +msgid "Please enter buddy information." +msgstr "Introduzca la información del amigo." -#: ../plugins/docklet/eggtrayicon.c:124 plugins/docklet/eggtrayicon.c:123 -msgid "The orientation of the tray." -msgstr "La orientación en el área de notificación." +#: ../console/gntblist.c:303 ../libgaim/blist.c:1182 +msgid "Chats" +msgstr "Chats" -#: ../plugins/extplacement.c:80 plugins/extplacement.c:80 -msgid "By conversation count" -msgstr "Por número de conversaciones" +#. Extract their Name and put it in +#. Contact Info +#. Personal +#. Business +#: ../console/gntblist.c:336 ../gtk/gtkplugin.c:589 ../gtk/gtkroomlist.c:600 +#: ../gtk/plugins/gevolution/add_buddy_dialog.c:131 +#: ../gtk/plugins/gevolution/assoc-buddy.c:119 +#: ../libgaim/protocols/jabber/jabber.c:785 +#: ../libgaim/protocols/msn/msn.c:1533 ../libgaim/protocols/msn/msn.c:1586 +#: ../libgaim/protocols/msn/msn.c:1608 ../libgaim/protocols/qq/buddy_info.c:42 +msgid "Name" +msgstr "Nombre" -#: ../plugins/extplacement.c:101 plugins/extplacement.c:101 -msgid "Conversation Placement" -msgstr "Localización de la conversación" +#: ../console/gntblist.c:345 ../console/gntblist.c:741 ../gtk/gtkblist.c:5227 +msgid "Add Chat" +msgstr "Añadir chat" -#: ../plugins/extplacement.c:106 plugins/extplacement.c:106 -msgid "Number of conversations per window" -msgstr "Número de conversaciones por ventana" +#: ../console/gntblist.c:346 +msgid "You can edit more information from the context menu later." +msgstr "Puede editar más información más adelante a través del menú contextual." -#: ../plugins/extplacement.c:112 plugins/extplacement.c:112 -msgid "Separate IM and Chat windows when placing by number" -msgstr "Separar ventanas de MIs y chats cuando se ubican por número" +#: ../console/gntblist.c:357 ../console/gntblist.c:370 +msgid "Error adding group" +msgstr "Error al añadir al grupo" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/extplacement.c:135 plugins/extplacement.c:133 -msgid "ExtPlacement" -msgstr "_UbicaciónExt" +#: ../console/gntblist.c:358 +msgid "You must give a name for the group to add." +msgstr "Debe dar un nombre al grupo a añadir." -#. *< name -#. *< version -#: ../plugins/extplacement.c:137 plugins/extplacement.c:135 -msgid "Extra conversation placement options." -msgstr "Opciones adicionales de ubicación de conversaciones." +#: ../console/gntblist.c:371 +msgid "A group with the name already exists." +msgstr "Ya existe un grupo con ese nombre" -#. *< summary -#. * description -#: ../plugins/extplacement.c:139 plugins/extplacement.c:137 -msgid "" -"Restrict the number of conversations per windows, optionally separating IMs " -"and Chats" -msgstr "" -"Restringir el número de conversaciones por ventana, de forma optativa " -"utilizar ventanas distintas para MIs y Chats" +#: ../console/gntblist.c:378 ../console/gntblist.c:743 ../gtk/gtkblist.c:5333 +#: ../libgaim/protocols/sametime/sametime.c:5319 +#: ../libgaim/protocols/sametime/sametime.c:5406 +msgid "Add Group" +msgstr "Añadir grupo" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/filectl.c:245 plugins/filectl.c:245 -msgid "Gaim File Control" -msgstr "Control de archivos de Gaim" +#: ../console/gntblist.c:378 +msgid "Enter the name of the group" +msgstr "Introduzca el nombre del grupo" -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/filectl.c:248 ../plugins/filectl.c:250 plugins/filectl.c:248 -#: plugins/filectl.c:250 -msgid "Allows you to control Gaim by entering commands in a file." -msgstr "Permite controlar Gaim introduciendo órdenes en un archivo." +#: ../console/gntblist.c:698 +msgid "Edit Chat" +msgstr "Editar chat" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/gaiminc.c:91 plugins/gaiminc.c:91 -msgid "Gaim Demonstration Plugin" -msgstr "Complemento de demostración de Gaim" +#: ../console/gntblist.c:698 +msgid "Please Update the necessary fields." +msgstr "Por favor Actualice los campos necesarios." -#. *< name -#. *< version -#. * summary -#: ../plugins/gaiminc.c:94 plugins/gaiminc.c:94 -msgid "An example plugin that does stuff - see the description." -msgstr "Un ejemplo de complemento que hace cosas - consulte la descripción." +#: ../console/gntblist.c:699 ../console/gntstatus.c:189 +msgid "Edit" +msgstr "Editar" -#. * description -#: ../plugins/gaiminc.c:96 plugins/gaiminc.c:96 -msgid "" -"This is a really cool plugin that does a lot of stuff:\n" -"- It tells you who wrote the program when you log in\n" -"- It reverses all incoming text\n" -"- It sends a message to people on your list immediately when they sign on" -msgstr "" -"Éste es un complemento muy interesante que hace muchas cosas:\n" -"- Le dice quién escribió el programa cuando inicia la sesión\n" -"- Transpone el texto que le envían\n" -"- Envía un mensaje a las personas en su lista inmediatamente cuando se " -"conectan" +#: ../console/gntblist.c:705 +msgid "Auto-join" +msgstr "Conectarse automáticamente" -#: ../plugins/gaimrc.c:41 plugins/gaimrc.c:41 -msgid "Cursor Color" -msgstr "" -"Color del puntero" +#: ../console/gntblist.c:713 +msgid "Edit Settings" +msgstr "Editar configuración" -#: ../plugins/gaimrc.c:42 plugins/gaimrc.c:42 -msgid "Secondary Cursor Color" -msgstr "" -"Color secundario del puntero" +# No se traduce como «Obtener Información» porque sino hace muy grande el +# botón que utiliza este texto y, consecuentemente, la pantalla de Gaim, jfs +#: ../console/gntblist.c:761 ../libgaim/protocols/silc/chat.c:878 +msgid "Get Info" +msgstr "Info" -#: ../plugins/gaimrc.c:43 plugins/gaimrc.c:43 -msgid "Hyperlink Color" -msgstr "Color de hiperenlace" +#: ../console/gntblist.c:766 +msgid "Add Buddy Pounce" +msgstr "Añadir aviso de amigo" -#: ../plugins/gaimrc.c:56 plugins/gaimrc.c:58 -msgid "GtkTreeView Expander Size" -msgstr "Tamaño del expansor GtkTreeView" +#: ../console/gntblist.c:773 ../gtk/gtkconv.c:1574 +#: ../libgaim/protocols/oscar/oscar.c:615 +msgid "Send File" +msgstr "Enviar archivo" -#: plugins/gaimrc.c:60 -msgid "GtkTreeView Horizontal Separation" -msgstr "Separación horizontal GtkTreeView" +#: ../console/gntblist.c:777 +msgid "View Log" +msgstr "Ver registro" -#: ../plugins/gaimrc.c:76 plugins/gaimrc.c:79 -msgid "Conversation Entry" -msgstr "Entrada de conversaciones" +#: ../console/gntblist.c:859 +#, c-format +msgid "Please enter the new name for %s" +msgstr "Introduzca el nuevo nombre para %s" -#: ../plugins/gaimrc.c:77 plugins/gaimrc.c:80 -msgid "Conversation History" -msgstr "" -"Historial de conversaciones" +#. These are common for everything +#: ../console/gntblist.c:861 ../console/gntblist.c:862 +#: ../console/gntblist.c:1005 +msgid "Rename" +msgstr "Renombrar" -#: ../plugins/gaimrc.c:78 plugins/gaimrc.c:81 -msgid "Log Viewer" -msgstr "" -"Visor del registro" +#: ../console/gntblist.c:861 +msgid "Enter empty string to reset the name." +msgstr "Introduzca una cadena vacía para resetear el nombre." -#: ../plugins/gaimrc.c:79 plugins/gaimrc.c:82 -msgid "Request Dialog" -msgstr "" -"Diálogo de solicitud" +#: ../console/gntblist.c:939 +msgid "Removing this group will also remove all the buddies in the group" +msgstr "Si elimina este grupo también eliminará a todos los amigos en el grupo" -#: ../plugins/gaimrc.c:80 plugins/gaimrc.c:83 -msgid "Notify Dialog" -msgstr "" -"Diálogo de notificación" +#: ../console/gntblist.c:944 +#, c-format +msgid "Are you sure you want to remove %s?" +msgstr "¿Está seguro que quiere borrar a %s?" -#: ../plugins/gaimrc.c:91 -msgid "GtkTreeView Indent Expanders" -msgstr "Sangrado de los expansores GtkTreeView" +#. XXX: anything to do with the returned ui-handle? +#: ../console/gntblist.c:947 +msgid "Confirm Remove" +msgstr "Confirmar borrado" -#: ../plugins/gaimrc.c:287 plugins/gaimrc.c:286 -#, c-format -msgid "Select Color for %s" -msgstr "Seleccionar el color para %s" +#: ../console/gntblist.c:950 ../console/gntblist.c:1007 ../gtk/gtkblist.c:1033 +#: ../gtk/gtkconv.c:1623 ../gtk/gtkrequest.c:275 +msgid "Remove" +msgstr "Quitar" -#: ../plugins/gaimrc.c:289 plugins/gaimrc.c:288 -msgid "Select Color" -msgstr "" -"Seleccionar el color" - -#: ../plugins/gaimrc.c:324 plugins/gaimrc.c:323 +#: ../console/gntblist.c:1040 ../console/gntblist.c:1144 #, c-format -msgid "Select Font for %s" -msgstr "Seleccionar tipografía para %s" +msgid "Account: %s (%s)" +msgstr "Cuenta: %s (%s)" -#: ../plugins/gaimrc.c:362 plugins/gaimrc.c:361 -msgid "Select Interface Font" -msgstr "Seleccionar tipografía de la interfaz" - -#: ../plugins/gaimrc.c:415 -msgid "General" -msgstr "General" - -#: ../plugins/gaimrc.c:420 plugins/gaimrc.c:421 -msgid "GTK+ Interface Font" -msgstr "Tipografía de la interfaz GTK+" - -#: ../plugins/gaimrc.c:440 -msgid "GTK+ Text Shortcut Theme" -msgstr "Tema de atajos de teclado GTK+" - -#: ../plugins/gaimrc.c:475 -msgid "Interface colors" -msgstr "Colores de la interfaz" - -#: ../plugins/gaimrc.c:499 -msgid "Widget Sizes" -msgstr "Tamaño de los controles" - -#: ../plugins/gaimrc.c:520 -msgid "Fonts" -msgstr "Tipografía" - -#: ../plugins/gaimrc.c:543 -msgid "Tools" -msgstr "Herramientas" - -#: ../plugins/gaimrc.c:548 +#: ../console/gntblist.c:1065 #, c-format -msgid "Write settings to %s%sgtkrc-2.0" -msgstr "Escribir la configuración en %s%sgtkrc-2.0" - -#: plugins/gaimrc.c:531 -msgid "Re-read gtkrc files" -msgstr "Volver a leer archivos de configuración gtkrc" - -#: ../plugins/gaimrc.c:583 plugins/gaimrc.c:557 -msgid "Gaim GTK+ Theme Control" -msgstr "" -"Control de tema GTK+ de Gaim" - -#: ../plugins/gaimrc.c:585 ../plugins/gaimrc.c:586 plugins/gaimrc.c:559 -#: plugins/gaimrc.c:560 -msgid "Provides access to commonly used gtkrc settings." -msgstr "" -"Da acceso a los parámetros de configuración de gtkrc que se utilizan " -"habitualmente." - -#. Configuration frame -#: ../plugins/gestures/gestures.c:235 plugins/gestures/gestures.c:243 -msgid "Mouse Gestures Configuration" -msgstr "Configuración de los gestos con el ratón" - -#: ../plugins/gestures/gestures.c:242 plugins/gestures/gestures.c:250 -msgid "Middle mouse button" -msgstr "Botón central del ratón" - -#: ../plugins/gestures/gestures.c:247 plugins/gestures/gestures.c:255 -msgid "Right mouse button" -msgstr "Botón derecho del ratón" - -#. "Visual gesture display" checkbox -#: ../plugins/gestures/gestures.c:259 plugins/gestures/gestures.c:267 -msgid "_Visual gesture display" -msgstr "Mostrar gestos _visuales" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/gestures/gestures.c:289 plugins/gestures/gestures.c:296 -msgid "Mouse Gestures" -msgstr "Gestos con el ratón" - -#. *< name -#. *< version -#. * summary -#: ../plugins/gestures/gestures.c:292 plugins/gestures/gestures.c:299 -msgid "Provides support for mouse gestures" -msgstr "" -"Proporciona soporte para gestos con el ratón" - -#. * description -#: ../plugins/gestures/gestures.c:294 plugins/gestures/gestures.c:301 msgid "" -"Allows support for mouse gestures in conversation windows.\n" -"Drag the middle mouse button to perform certain actions:\n" "\n" -"Drag down and then to the right to close a conversation.\n" -"Drag up and then to the left to switch to the previous conversation.\n" -"Drag up and then to the right to switch to the next conversation." -msgstr "" -"Añade soporte de gestos del ratón en las ventanas de conversación.\n" -"Arrastre con el botón central del ratón para realizar las siguientes " -"acciones:\n" -"\n" -"Abajo y después a la derecha para cerrar una ventana de conversación.\n" -"Arriba y después a la izquierda para cambiar a la conversación anterior.\n" -"Arriba y después a la derecha para cambiar a la siguiente conversación." +"Idle: %s" +msgstr "\nInactivo: %s" -#: ../plugins/gevolution/add_buddy_dialog.c:131 -#: ../plugins/gevolution/assoc-buddy.c:119 ../src/gtkplugin.c:590 -#: ../src/gtkroomlist.c:604 ../src/protocols/jabber/jabber.c:754 -#: ../src/protocols/msn/msn.c:1524 plugins/gevolution/add_buddy_dialog.c:131 -#: plugins/gevolution/assoc-buddy.c:119 src/gtkplugin.c:424 -#: src/gtkroomlist.c:572 src/protocols/jabber/jabber.c:686 -#: src/protocols/msn/msn.c:1513 -msgid "Name" -msgstr "Nombre" +#: ../console/gntblist.c:1123 +#, c-format +msgid "Nickname: %s\n" +msgstr "Apodo: %s\n" -#: ../plugins/gevolution/add_buddy_dialog.c:142 -#: plugins/gevolution/add_buddy_dialog.c:142 -msgid "Instant Messaging" -msgstr "Mensajería Instantáneos" - -#. Add the label. -#: ../plugins/gevolution/add_buddy_dialog.c:454 -#: plugins/gevolution/add_buddy_dialog.c:458 -msgid "Select a person from your address book below, or add a new person." -msgstr "" -"Seleccione una persona de su agenda mostrada abajo, o añada una nueva " -"persona." - -#. "Search" -#: ../plugins/gevolution/add_buddy_dialog.c:467 -#: ../plugins/gevolution/assoc-buddy.c:353 -#: ../src/protocols/jabber/buddy.c:1411 ../src/protocols/oscar/oscar.c:8320 -#: ../src/protocols/sametime/sametime.c:5533 -#: plugins/gevolution/add_buddy_dialog.c:471 -#: plugins/gevolution/assoc-buddy.c:353 src/protocols/jabber/buddy.c:1357 -#: src/protocols/oscar/oscar.c:8198 -msgid "Search" -msgstr "Buscar" - -#: ../plugins/gevolution/add_buddy_dialog.c:548 -#: ../plugins/gevolution/new_person_dialog.c:306 ../src/gtkblist.c:4555 -#: ../src/gtkblist.c:4919 plugins/gevolution/add_buddy_dialog.c:552 -#: plugins/gevolution/new_person_dialog.c:306 src/gtkblist.c:4453 -#: src/gtkblist.c:4833 -msgid "Group:" -msgstr "Grupo:" - -#. "New Person" button -#: ../plugins/gevolution/add_buddy_dialog.c:574 -#: ../plugins/gevolution/assoc-buddy.c:464 -#: plugins/gevolution/add_buddy_dialog.c:578 -#: plugins/gevolution/assoc-buddy.c:464 -msgid "New Person" -msgstr "Nueva persona" - -#. "Select Buddy" button -#: ../plugins/gevolution/add_buddy_dialog.c:591 -#: plugins/gevolution/add_buddy_dialog.c:595 -msgid "Select Buddy" -msgstr "Seleccionar amigo" - -#. Add the label. -#: ../plugins/gevolution/assoc-buddy.c:340 -#: plugins/gevolution/assoc-buddy.c:340 +#: ../console/gntblist.c:1135 +#, c-format msgid "" -"Select a person from your address book to add this buddy to, or create a new " -"person." +"Online: %d\n" +"Total: %d" msgstr "" -"Seleccione una persona de su agenda a la que añadir este amigo, o cree una " -"nueva persona." +"En línea: %d\n" +"Total: %d" -#. Add the expander -#: ../plugins/gevolution/assoc-buddy.c:428 -#: plugins/gevolution/assoc-buddy.c:428 -msgid "User _details" -msgstr "" -"_Detalles del usuario" - -#. "Associate Buddy" button -#: ../plugins/gevolution/assoc-buddy.c:481 -#: plugins/gevolution/assoc-buddy.c:481 -msgid "_Associate Buddy" -msgstr "_Asociar amigo" - -#: ../plugins/gevolution/eds-utils.c:73 ../plugins/gevolution/eds-utils.c:86 -#: ../src/protocols/jabber/jabber.c:1124 plugins/gevolution/eds-utils.c:73 -#: plugins/gevolution/eds-utils.c:86 src/protocols/jabber/jabber.c:1037 -#: src/protocols/yahoo/yahoo.c:2802 -msgid "None" -msgstr "Ninguno" - -#: ../plugins/gevolution/gevo-util.c:64 ../plugins/gevolution/gevolution.c:96 -#: ../src/blist.c:516 ../src/blist.c:1270 ../src/blist.c:1495 -#: ../src/gtkblist.c:4364 ../src/protocols/jabber/roster.c:65 -#: plugins/gevolution/gevo-util.c:64 plugins/gevolution/gevolution.c:96 -#: src/blist.c:518 src/blist.c:1275 src/blist.c:1500 src/gtkblist.c:4261 -#: src/protocols/jabber/roster.c:65 -msgid "Buddies" -msgstr "Amigos" - -#: ../plugins/gevolution/gevolution.c:262 -#: ../plugins/gevolution/gevolution.c:268 plugins/gevolution/gevolution.c:262 -#: plugins/gevolution/gevolution.c:268 -msgid "Unable to send e-mail" -msgstr "" -"No se pudo enviar el correo electrónico" - -#: ../plugins/gevolution/gevolution.c:263 plugins/gevolution/gevolution.c:263 -msgid "The evolution executable was not found in the PATH." -msgstr "" -"No se encontró el ejecutable de Evolution en la ruta." - -#: ../plugins/gevolution/gevolution.c:269 plugins/gevolution/gevolution.c:269 -msgid "The specified buddy was not found in the Evolution Contacts." -msgstr "No se encontró al amigo especificado dentro en los contactos de Evolution." - -#: ../plugins/gevolution/gevolution.c:286 plugins/gevolution/gevolution.c:286 -msgid "Add to Address Book" -msgstr "Añadir a la agenda" - -#: ../plugins/gevolution/gevolution.c:290 plugins/gevolution/gevolution.c:290 -msgid "Send E-Mail" -msgstr "Enviar correo electrónico" - -#. Configuration frame -#: ../plugins/gevolution/gevolution.c:417 plugins/gevolution/gevolution.c:417 -msgid "Evolution Integration Configuration" -msgstr "Configuración de la integración con Evolution" - -#. Label -#: ../plugins/gevolution/gevolution.c:420 plugins/gevolution/gevolution.c:420 -msgid "Select all accounts that buddies should be auto-added to." -msgstr "" -"Seleccione todas las cuentas a los que los amigos se añadirán de forma " -"automática." - -#: ../plugins/gevolution/gevolution.c:450 ../plugins/idle.c:147 -#: ../plugins/idle.c:183 ../src/gtknotify.c:371 ../src/gtkpounce.c:1260 -#: plugins/gevolution/gevolution.c:450 plugins/idle.c:112 plugins/idle.c:147 -#: src/gtkpounce.c:1167 -msgid "Account" -msgstr "Cuenta" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/gevolution/gevolution.c:527 plugins/gevolution/gevolution.c:534 -msgid "Evolution Integration" -msgstr "Integración con Evolution" - -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/gevolution/gevolution.c:530 -#: ../plugins/gevolution/gevolution.c:532 plugins/gevolution/gevolution.c:537 -#: plugins/gevolution/gevolution.c:539 -msgid "Provides integration with Evolution." -msgstr "Ofrece integración con Evolution." - -#: ../plugins/gevolution/new_person_dialog.c:266 -#: plugins/gevolution/new_person_dialog.c:266 -msgid "Please enter the person's information below." -msgstr "Introduzca la información de la persona a continuación." - -#: ../plugins/gevolution/new_person_dialog.c:270 -#: plugins/gevolution/new_person_dialog.c:270 -msgid "Please enter the buddy's screen name and account type below." -msgstr "" -"Introduzca el nombre de usuario de su amigo y el tipo de cuenta más abajo." - -#: ../plugins/gevolution/new_person_dialog.c:290 -#: plugins/gevolution/new_person_dialog.c:290 -msgid "Account type:" -msgstr "Tipo de cuenta:" - -#: plugins/gevolution/new_person_dialog.c:294 src/gtkaccount.c:764 -msgid "Screen name:" -msgstr "Nombre de usuario:" - -#. Optional Information section -#: ../plugins/gevolution/new_person_dialog.c:314 -#: plugins/gevolution/new_person_dialog.c:314 -msgid "Optional information:" -msgstr "Información opcional:" - -#. Label -#: ../plugins/gevolution/new_person_dialog.c:337 ../src/gtkaccount.c:424 -#: ../src/gtkaccount.c:446 ../src/protocols/oscar/oscar.c:635 -#: plugins/gevolution/new_person_dialog.c:337 src/gtkaccount.c:407 -#: src/gtkaccount.c:429 src/protocols/oscar/oscar.c:613 -msgid "Buddy Icon" -msgstr "Icono de amigo" - -#: ../plugins/gevolution/new_person_dialog.c:349 -#: plugins/gevolution/new_person_dialog.c:349 -msgid "First name:" -msgstr "Nombre:" - -#: ../plugins/gevolution/new_person_dialog.c:361 -#: plugins/gevolution/new_person_dialog.c:361 -msgid "Last name:" -msgstr "Apellidos:" - -#: ../plugins/gevolution/new_person_dialog.c:381 -#: plugins/gevolution/new_person_dialog.c:381 -msgid "E-mail:" -msgstr "Correo electrónico:" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/gtk-signals-test.c:160 plugins/gtk-signals-test.c:107 -msgid "GTK Signals Test" -msgstr "Prueba de señales GTK" - -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/gtk-signals-test.c:163 ../plugins/gtk-signals-test.c:165 -#: plugins/gtk-signals-test.c:110 plugins/gtk-signals-test.c:112 -msgid "Test to see that all ui signals are working properly." -msgstr "" -"Probar para ver si todas las señales de la interfaz de usuario funcionan " -"correctamente." - -#: ../plugins/history.c:143 plugins/history.c:146 -msgid "History Plugin Requires Logging" -msgstr "" -"Debe estar conectad para utilizar el complemento de histórico" - -#: ../plugins/history.c:144 +#: ../console/gntblist.c:1156 +#, c-format msgid "" -"Logging can be enabled from Tools -> Preferences -> Logging.\n" "\n" -"Enabling logs for instant messages and/or chats will activate history for " -"the same conversation type(s)." -msgstr "" -"Puede activar el registro en Herramientas -> Preferencias -> Registro.\n" -"\n" -"La activación del registro en mensajes instantáneos y/o chats activará el " -"histórico para los mismos tipos de conversación." +"Last Seen: %s ago" +msgstr "\nVisto por última vez: hace %s" -#: ../plugins/history.c:184 plugins/history.c:186 -msgid "History" -msgstr "Histórico" +#: ../console/gntblist.c:1375 ../gtk/gtkstatusbox.c:947 +#: ../gtk/plugins/docklet/docklet.c:467 +msgid "New..." +msgstr "Nuevo..." -#: ../plugins/history.c:186 plugins/history.c:188 -msgid "Shows recently logged conversations in new conversations." -msgstr "" -"Muestra las conversaciones registradas previamente en las nuevas " -"conversaciones." +#: ../console/gntblist.c:1382 ../gtk/gtkstatusbox.c:948 +#: ../gtk/plugins/docklet/docklet.c:468 +msgid "Saved..." +msgstr "Guardado..." -#: ../plugins/history.c:187 -msgid "" -"When a new conversation is opened this plugin will insert the last " -"conversation into the current conversation." -msgstr "" -"Cuando se abre una nueva conversación este complemento introduce la última " -"conversación en la conversación actual." +#. Buddy List +#: ../console/gntblist.c:1695 ../console/gntprefs.c:219 ../console/gntui.c:71 +#: ../gtk/gtkblist.c:3888 ../gtk/plugins/win32/winprefs/winprefs.c:451 +msgid "Buddy List" +msgstr "Lista de amigos" -# Nota: ni «iconizar» ni «iconificar» están en el diccionario... jfs -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/iconaway.c:82 plugins/iconaway.c:101 -msgid "Iconify on Away" -msgstr "Iconizar en ausencia" +#: ../console/gntconn.c:36 +#, c-format +msgid "%s (%s)" +msgstr "%s (%s)" -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/iconaway.c:85 ../plugins/iconaway.c:87 plugins/iconaway.c:104 -#: plugins/iconaway.c:106 -msgid "Iconifies the buddy list and your conversations when you go away." -msgstr "" -"Iconiza la lista de amigos y de conversaciones cuando usted está ausente." +#: ../console/gntconn.c:39 +#, c-format +msgid "%s disconnected." +msgstr "%s se ha desconectado." -#: ../plugins/idle.c:152 ../plugins/idle.c:210 plugins/idle.c:116 -msgid "Minutes" -msgstr "minutos" - -#: ../plugins/idle.c:159 ../plugins/idle.c:192 ../plugins/idle.c:217 -#: ../plugins/idle.c:306 plugins/idle.c:123 plugins/idle.c:156 -#: plugins/idle.c:222 -msgid "I'dle Mak'er" -msgstr "Generador de ausencia" - -#: ../plugins/idle.c:160 ../plugins/idle.c:249 plugins/idle.c:124 -#: plugins/idle.c:188 -msgid "Set Account Idle Time" -msgstr "Establecer tiempo de inactividad de la cuenta" - -#: ../plugins/idle.c:163 ../plugins/idle.c:221 plugins/idle.c:127 -msgid "_Set" -msgstr "_Guardar" - -#: ../plugins/idle.c:164 ../plugins/idle.c:197 ../plugins/idle.c:222 -#: plugins/idle.c:128 plugins/idle.c:161 -msgid "_Cancel" -msgstr "_Cancelar" - -#: plugins/idle.c:141 -msgid "None of your accounts are idle." -msgstr "Ninguna de sus cuentas está inactiva." - -#: ../plugins/idle.c:193 ../plugins/idle.c:253 plugins/idle.c:157 -#: plugins/idle.c:192 -msgid "Unset Account Idle Time" -msgstr "Desactivar tiempo de inactividad de la cuenta" - -#: ../plugins/idle.c:196 plugins/idle.c:160 -msgid "_Unset" -msgstr "_Desactivar" - -#: ../plugins/idle.c:218 ../plugins/idle.c:257 -msgid "Set Idle Time for All Accounts" -msgstr "Fijar tiempo de inactividad para todas las cuentas" - -#: plugins/idle.c:197 -msgid "Unset Idle Time for All Idled Accounts" -msgstr "Desactivar tiempo de inactividad para todas las cuentas inactivas" - -#: ../plugins/idle.c:308 ../plugins/idle.c:309 plugins/idle.c:224 -#: plugins/idle.c:225 -msgid "Allows you to hand-configure how long you've been idle" +#: ../console/gntconn.c:40 +#, c-format +msgid "" +"%s was disconnected due to the following error:\n" +"%s" msgstr "" -"Permite configurar manualmente cuánto tiempo ha estado ausente" +"%s se ha desconectado por el siguiente error:\n" +"%s" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/ipc-test-client.c:87 plugins/ipc-test-client.c:87 -msgid "IPC Test Client" -msgstr "Cliente de prueba IPC" +#: ../console/gntconn.c:43 ../gtk/gtkblist.c:3768 ../libgaim/account.c:990 +#: ../libgaim/connection.c:106 +msgid "Connection Error" +msgstr "Error de conexión" -#. *< name -#. *< version -#. * summary -#: ../plugins/ipc-test-client.c:90 plugins/ipc-test-client.c:90 -msgid "Test plugin IPC support, as a client." -msgstr "Complemento de prueba con soporte IPC, como cliente." +#: ../console/gntconv.c:102 ../gtk/gtkconv.c:478 +msgid "No such command." +msgstr "No existe esa orden." -#. * description -#: ../plugins/ipc-test-client.c:92 plugins/ipc-test-client.c:92 -msgid "" -"Test plugin IPC support, as a client. This locates the server plugin and " -"calls the commands registered." +#: ../console/gntconv.c:106 ../gtk/gtkconv.c:485 +msgid "Syntax Error: You typed the wrong number of arguments to that command." msgstr "" -"Soporte de IPC como cliente, complemento de prueba. Éste localiza el " -"complemento de servidor y llama a las órdenes registradas." +"Error sintáctico: Vd. no escribió suficientes argumentos para esa orden." -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/ipc-test-server.c:74 plugins/ipc-test-server.c:74 -msgid "IPC Test Server" -msgstr "Servidor de prueba IPC" +#: ../console/gntconv.c:111 ../gtk/gtkconv.c:490 +msgid "Your command failed for an unknown reason." +msgstr "Su orden ha fallado por motivos desconocidos." -#. *< name -#. *< version -#. * summary -#: ../plugins/ipc-test-server.c:77 plugins/ipc-test-server.c:77 -msgid "Test plugin IPC support, as a server." -msgstr "Complemento de soporte IPC de prueba, como servidor." +#: ../console/gntconv.c:116 ../gtk/gtkconv.c:496 +msgid "That command only works in chats, not IMs." +msgstr "Esa orden sólo funciona en chats, no en MIs." -#. * description -#: ../plugins/ipc-test-server.c:79 plugins/ipc-test-server.c:79 -msgid "Test plugin IPC support, as a server. This registers the IPC commands." -msgstr "" -"Complemento de soporte IPC de prueba, como servidor. Éste registra las " -"órdenes IPC." +#: ../console/gntconv.c:119 ../gtk/gtkconv.c:499 +msgid "That command only works in IMs, not chats." +msgstr "Esa orden sólo funciona en MIs, no en chats." -#: plugins/log_reader.c:1403 -msgid "User is offline." -msgstr "El usuario no está conectado." +#: ../console/gntconv.c:123 ../gtk/gtkconv.c:503 +msgid "That command doesn't work on this protocol." +msgstr "Esa orden no funciona en este protocolo." -#: plugins/log_reader.c:1409 -msgid "Auto-response sent:" -msgstr "_Enviar respuesta automática:" +#: ../console/gntconv.c:130 +msgid "Commands are not supported yet. Message was NOT sent." +msgstr "Órdenes no soportadas. NO se ha enviado el mensaje." -#: ../plugins/log_reader.c:1423 ../plugins/log_reader.c:1426 -#: plugins/log_reader.c:1419 plugins/log_reader.c:1422 +#: ../console/gntconv.c:224 #, c-format -msgid "%s logged out." -msgstr "%s se ha desconectado." +msgid "%s (%s -- %s)" +msgstr "%s (%s -- %s)" -#: plugins/log_reader.c:1436 -msgid "One or more messages may have been undeliverable." -msgstr "Uno o más mensajes puede no haber llegado a destino." +#: ../console/gntconv.c:244 +#, c-format +msgid "%s [%s]" +msgstr "%s [%s]" -#. MSG_SERVER_DISCONNECTING -#. we have been kicked off =^( -#: ../plugins/log_reader.c:1450 ../src/protocols/napster/napster.c:363 -#: plugins/log_reader.c:1446 src/protocols/napster/napster.c:363 -msgid "You were disconnected from the server." -msgstr "Ha sido desconectado del servidor." +#: ../console/gntconv.c:374 +msgid "<AUTO-REPLY> " +msgstr "<RESPUESTA AUTOMÁTICA> " -#: plugins/log_reader.c:1454 -msgid "" -"You are currently disconnected. Messages will not be received unless you are " -"logged in." -msgstr "" -"Actualmente está desconectado. No podrá recibir mensajes a menos que se " -"conecte." +#. Print the list of users in the room +#: ../console/gntconv.c:468 +msgid "List of users:\n" +msgstr "Lista de usuarios:\n" -#: plugins/log_reader.c:1469 -msgid "Message could not be sent because the maximum length was exceeded." -msgstr "" -"No se pudo enviar el mensaje porque excede la longitud máxima permitida." +#: ../console/gntconv.c:592 ../gtk/gtkconv.c:372 +msgid "Supported debug options are: version" +msgstr "Las opciones de depuración soportadas son: version" -#: plugins/log_reader.c:1474 -msgid "Message could not be sent." -msgstr "No se envió su mensaje." +#: ../console/gntconv.c:627 ../gtk/gtkconv.c:408 +msgid "No such command (in this context)." +msgstr "No existe esa orden (en este contexto)." -#. Add general preferences. -#: plugins/log_reader.c:1908 -msgid "General Log Reading Configuration" -msgstr "Configuración general de lectura del registro" - -#: plugins/log_reader.c:1912 -msgid "Fast size calculations" -msgstr "Cálculos de tamaño rápido" - -#: ../plugins/log_reader.c:1920 plugins/log_reader.c:1916 -msgid "Use name heuristics" -msgstr "Utilizar heurísticos de nombres" - -#. Add Log Directory preferences. -#: plugins/log_reader.c:1922 -msgid "Log Directory" -msgstr "Directorio de registro" - -#: plugins/log_reader.c:1926 -msgid "Adium" -msgstr "Adium" - -#: plugins/log_reader.c:1930 -msgid "Fire" -msgstr "Fire" - -#: plugins/log_reader.c:1934 -msgid "Messenger Plus!" -msgstr "Messenger Plus!" - -#: plugins/log_reader.c:1938 -msgid "MSN Messenger" -msgstr "MSN Messenger" - -#: plugins/log_reader.c:1942 -msgid "Trillian" -msgstr "Trillian" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: plugins/log_reader.c:1963 -msgid "Log Reader" -msgstr "Lector de registro" - -#. *< name -#. *< version -#. * summary -#: plugins/log_reader.c:1967 -msgid "Includes other IM clients' logs in the log viewer." -msgstr "Incluir otros registros de clientes de MI en el visor de registro." - -#. * description -#: plugins/log_reader.c:1971 +#: ../console/gntconv.c:630 ../gtk/gtkconv.c:411 msgid "" -"When viewing logs, this plugin will include logs from other IM clients. " -"Currently, this includes Adium, Fire, Messenger Plus!, MSN Messenger, and " -"Trillian." +"Use \"/help <command>\" for help on a specific command.\n" +"The following commands are available in this context:\n" msgstr "" -"Cuando los registros sean vistos, este complemento incluirá registros de " -"otros clientes de IM. Actualmente, esto incluye a Adium, Fire, Messenger " -"Plus!, MSN Messenger, y Trillian." +"Utilice \"/help <orden>\" para obtener ayuda de una orden concreta.\n" +"Las siguientes órdenes están disponibles en este contexto:\n" -#: ../plugins/mailchk.c:160 plugins/mailchk.c:160 -msgid "Mail Checker" -msgstr "Comprobador de correo" - -#: ../plugins/mailchk.c:162 plugins/mailchk.c:162 -msgid "Checks for new local mail." -msgstr "Comprueba si hay correo local nuevo." - -#: ../plugins/mailchk.c:163 plugins/mailchk.c:163 -msgid "Adds a small box to the buddy list that shows if you have new mail." -msgstr "" -"Añade una pequeña caja a la lista de amigos que muestra si tiene nuevo " -"correo." - -#: plugins/mono/loader/mono.c:213 -msgid "Mono Plugin Loader" -msgstr "Cargador de complementos Mono" - -#: plugins/mono/loader/mono.c:215 plugins/mono/loader/mono.c:216 -msgid "Loads .NET plugins with Mono." -msgstr "Cargar complementos .NET con Mono." - -#: ../plugins/musicmessaging/musicmessaging.c:44 +#: ../console/gntconv.c:669 ../gtk/gtkconv.c:6639 msgid "" -"A music messaging session has been requested. Please click the MM icon to " -"accept." -msgstr "Se ha solicitado una sesión de mensajería musical. Por favor, seleccione el icono de MM para aceptarla." - -#: ../plugins/musicmessaging/musicmessaging.c:45 -msgid "Music messaging session confirmed." -msgstr "Se ha confirmado la sesión de mensajería musical." - -#: ../plugins/musicmessaging/musicmessaging.c:414 -msgid "Music Messaging" -msgstr "Mensajería musical" - -#: ../plugins/musicmessaging/musicmessaging.c:415 -msgid "There was a conflict in running the command:" -msgstr "Se ha producido un conflicto al ejecutar la orden:" - -#: ../plugins/musicmessaging/musicmessaging.c:523 -msgid "Error Running Editor" -msgstr "Error al ejecutar el editor" - -#: ../plugins/musicmessaging/musicmessaging.c:524 -msgid "The following error has occured:" -msgstr "Ha ocurrido el siguiente error:" - -#. Configuration frame -#: plugins/musicmessaging/musicmessaging.c:622 -msgid "Music Messaging Configuration" -msgstr "Configuración de Mensajes de música" - -#: ../plugins/musicmessaging/musicmessaging.c:627 -msgid "Score Editor Path" -msgstr "Ruta del editor de partituras" - -#: ../plugins/musicmessaging/musicmessaging.c:628 -#: plugins/musicmessaging/musicmessaging.c:627 -msgid "_Apply" -msgstr "_Aplicar" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#. *< name -#. *< version -#: ../plugins/musicmessaging/musicmessaging.c:663 -msgid "Music Messaging Plugin for collaborative composition." -msgstr "Complemento de mensajería musical para composición colaborativa." - -#. * summary -#: ../plugins/musicmessaging/musicmessaging.c:665 -msgid "" -"The Music Messaging Plugin allows a number of users to simultaneously work " -"on a piece of music by editting a common score in real-time." -msgstr "El complemento de mensajería musical permite trabajar a distintos usuarios de forma simultánea en una pieza de música editando una partitura común en tiempo real." - -#. ---------- "Notify For" ---------- -#: ../plugins/notify.c:638 plugins/notify.c:639 -msgid "Notify For" -msgstr "Notificar de" - -#: ../plugins/notify.c:642 plugins/notify.c:643 -msgid "_IM windows" -msgstr "Ventanas de M_I" - -#: ../plugins/notify.c:649 plugins/notify.c:650 -msgid "C_hat windows" -msgstr "Ventanas de _chat" - -#: ../plugins/notify.c:657 -msgid "\t_Only when someone says your nick" -msgstr "\t_Sólo si alguien menciona su apodo" - -#: ../plugins/notify.c:667 plugins/notify.c:657 -msgid "_Focused windows" -msgstr "Ventanas _enfocadas" - -#. ---------- "Notification Method... [truncated message content] |
From: <rl...@us...> - 2006-10-17 03:23:11
|
Revision: 17491 http://svn.sourceforge.net/gaim/?rev=17491&view=rev Author: rlaager Date: 2006-10-16 20:23:08 -0700 (Mon, 16 Oct 2006) Log Message: ----------- SF Patch #1578297 from Matteo Settenvini "Gaim 2.0.0_beta3 (and, as far as I can tell, other versions too) doesn't build correctly with LDFLAGS="-Wl,--as-needed"." "This is caused to an incorrect use of the LDFLAGS variable inside the configure.ac." Modified Paths: -------------- trunk/COPYRIGHT trunk/configure.ac Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-10-16 21:57:03 UTC (rev 17490) +++ trunk/COPYRIGHT 2006-10-17 03:23:08 UTC (rev 17491) @@ -254,6 +254,7 @@ Andrew Sayman Alceste Scalas Carsten Schaar +Matteo Settenvini Colin Seymour Luke Schierer Ralph Schmieder Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-10-16 21:57:03 UTC (rev 17490) +++ trunk/configure.ac 2006-10-17 03:23:08 UTC (rev 17491) @@ -1243,7 +1243,7 @@ if test "x$with_gnutls_libs" != "xno" -a \ "x$have_gnutls_includes" != "xno"; then - LDFLAGS_save="$LDFLAGS" + LIBS_save="$LIBS" case $with_gnutls_libs in ""|-L*) ;; @@ -1252,9 +1252,9 @@ AC_CACHE_CHECK([for GnuTLS libraries], gnutls_libs, [ - LDFLAGS="$LDFLAGS $with_gnutls_libs -lgnutls -lgcrypt" + LIBS="$LIBS $with_gnutls_libs -lgnutls -lgcrypt" AC_TRY_LINK_FUNC(gnutls_init, gnutls_libs="yes", gnutls_libs="no") - LDFLAGS="$LDFLAGS_save" + LIBS="$LIBS_save" ]) if test "x$gnutls_libs" != "xno"; then @@ -1498,7 +1498,7 @@ AC_CACHE_CHECK([for Mozilla nss libraries], moz_nss_libs, [ LIBS_save=$LIBS - LDFLAGS="$LDFLAGS -L$with_nspr_libs $nsprlibs -L$with_nss_libs $nsslibs" + LDFLAGS="$LDFLAGS -L$with_nspr_libs -L$with_nss_libs" LIBS="$nsslibs $nsprlibs" AC_TRY_LINK_FUNC(NSS_Init, @@ -1507,7 +1507,8 @@ if test "x$moz_nss_libs" = "xno"; then nsslibs="-lssl3 -lsmime3 -lnss3 -lsoftokn3" - LDFLAGS="$LDFLAGS -L$with_nspr_libs $nsprlibs -L$with_nss_libs $nsslibs" + LDFLAGS="$LDFLAGS -L$with_nspr_libs -L$with_nss_libs" + LIBS="$LIBS $nsslibs" AC_TRY_LINK_FUNC(NSS_Init, [moz_nss_libs="yes"], [moz_nss_libs="no"]) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-10-18 00:55:03
|
Revision: 17504 http://svn.sourceforge.net/gaim/?rev=17504&view=rev Author: datallah Date: 2006-10-17 17:54:57 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Don't exclude the current popular status from the popular statuses list. Also, fix selecting a saved status that doesn't apply to the token status account. Modified Paths: -------------- trunk/gtk/gtkstatusbox.c trunk/libgaim/savedstatuses.c Modified: trunk/gtk/gtkstatusbox.c =================================================================== --- trunk/gtk/gtkstatusbox.c 2006-10-17 21:47:48 UTC (rev 17503) +++ trunk/gtk/gtkstatusbox.c 2006-10-18 00:54:57 UTC (rev 17504) @@ -687,15 +687,13 @@ * dropdown using a loop. Otherwise select from the default list. */ primitive = gaim_savedstatus_get_type(saved_status); - if (!status_box->token_status_account) + if (!status_box->token_status_account && gaim_savedstatus_is_transient(saved_status) && + ((primitive == GAIM_STATUS_AVAILABLE) || (primitive == GAIM_STATUS_AWAY) || + (primitive == GAIM_STATUS_INVISIBLE) || (primitive == GAIM_STATUS_OFFLINE)) && + (!gaim_savedstatus_has_substatuses(saved_status))) { - if (gaim_savedstatus_is_transient(saved_status)) { - index = get_statusbox_index(status_box, saved_status); - gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), - index); - } else { - gtk_gaim_status_box_refresh(status_box); - } + index = get_statusbox_index(status_box, saved_status); + gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), index); } else { @@ -715,7 +713,11 @@ TYPE_COLUMN, &type, DATA_COLUMN, &data, -1); - if (type == GTK_GAIM_STATUS_BOX_TYPE_PRIMITIVE && primitive == GPOINTER_TO_INT(data)) + + /* This is a special case because Primitives for the token_status_account are actually + * saved statuses with substatuses for the enabled accounts */ + if (status_box->token_status_account && gaim_savedstatus_is_transient(saved_status) + && type == GTK_GAIM_STATUS_BOX_TYPE_PRIMITIVE && primitive == GPOINTER_TO_INT(data)) { char *name; const char *acct_status_name = gaim_status_get_name( @@ -724,7 +726,8 @@ gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter, TEXT_COLUMN, &name, -1); - if (!strcmp(name, acct_status_name)) + if (!gaim_savedstatus_has_substatuses(saved_status) + || !strcmp(name, acct_status_name)) { /* Found! */ gtk_combo_box_set_active_iter(GTK_COMBO_BOX(status_box), &iter); @@ -733,6 +736,13 @@ } g_free(name); } + else if ((type == GTK_GAIM_STATUS_BOX_TYPE_POPULAR) && + (GPOINTER_TO_INT(data) == gaim_savedstatus_get_creation_time(saved_status))) + { + /* Found! */ + gtk_combo_box_set_active_iter(GTK_COMBO_BOX(status_box), &iter); + break; + } } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(status_box->dropdown_store), &iter)); } @@ -1770,7 +1780,16 @@ { /* Selected status and previous status is the same */ if (!message_changed(message, gaim_status_get_attr_string(status, "message"))) - changed = FALSE; + { + GaimSavedStatus *ss = gaim_savedstatus_get_current(); + /* Make sure that statusbox displays the correct thing. + * It can get messed up if the previous selection was a + * saved status that wasn't supported by this account */ + if ((gaim_savedstatus_get_type(ss) == primitive) + && gaim_savedstatus_is_transient(ss) + && gaim_savedstatus_has_substatuses(ss)) + changed = FALSE; + } } } else { saved_status = gaim_savedstatus_get_current(); @@ -1790,12 +1809,11 @@ GList *tmp, *active_accts = gaim_accounts_get_all_active(); for (; iter != NULL; iter = iter->next) { - GaimSavedStatus *ss= iter->data; + GaimSavedStatus *ss = iter->data; const char *ss_msg = gaim_savedstatus_get_message(ss); if ((gaim_savedstatus_get_type(ss) == primitive) && gaim_savedstatus_is_transient(ss) && gaim_savedstatus_has_substatuses(ss) && /* Must have substatuses */ - (((ss_msg == NULL) && (message == NULL)) || - ((ss_msg != NULL) && (message != NULL) && !strcmp(ss_msg, message)))) + !message_changed(ss_msg, message)) { gboolean found = FALSE; /* The currently enabled accounts must have substatuses for all the active accts */ Modified: trunk/libgaim/savedstatuses.c =================================================================== --- trunk/libgaim/savedstatuses.c 2006-10-17 21:47:48 UTC (rev 17503) +++ trunk/libgaim/savedstatuses.c 2006-10-18 00:54:57 UTC (rev 17504) @@ -700,18 +700,15 @@ GList *popular = NULL; GList *cur; int i; - GaimSavedStatus *current, *next; + GaimSavedStatus *next; - /* We don't want the current status to be in the GList */ - current = gaim_savedstatus_get_current(); - /* Copy 'how_many' elements to a new list */ i = 0; cur = saved_statuses; while ((i < how_many) && (cur != NULL)) { next = cur->data; - if ((next != current) && (!gaim_savedstatus_is_transient(next) + if ((!gaim_savedstatus_is_transient(next) || gaim_savedstatus_get_message(next) != NULL)) { popular = g_list_prepend(popular, cur->data); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-10-18 01:04:14
|
Revision: 17505 http://svn.sourceforge.net/gaim/?rev=17505&view=rev Author: datallah Date: 2006-10-17 18:04:07 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Cleanup and debug output deconfusifying. Modified Paths: -------------- trunk/gtk/win32/win_gaim.c trunk/libgaim/win32/win32dep.c Modified: trunk/gtk/win32/win_gaim.c =================================================================== --- trunk/gtk/win32/win_gaim.c 2006-10-18 00:54:57 UTC (rev 17504) +++ trunk/gtk/win32/win_gaim.c 2006-10-18 01:04:07 UTC (rev 17505) @@ -81,7 +81,7 @@ NULL, retv, 0, (LPTSTR) &szBuf, sizeof(szBuf), NULL); - printf("Could not read reg key '%s' subkey '%s' value: '%s'\nError: (%ld) %s\n", + printf("Could not read reg key '%s' subkey '%s' value: '%s'.\nMessage: (%ld) %s\n", ((key == HKEY_LOCAL_MACHINE) ? "HKLM" : (key == HKEY_CURRENT_USER) ? "HKCU" : "???"), Modified: trunk/libgaim/win32/win32dep.c =================================================================== --- trunk/libgaim/win32/win32dep.c 2006-10-18 00:54:57 UTC (rev 17504) +++ trunk/libgaim/win32/win32dep.c 2006-10-18 01:04:07 UTC (rev 17505) @@ -57,24 +57,7 @@ static HINSTANCE libgaimdll_hInstance = 0; - /* - * STATIC CODE - */ - -static void wgaim_debug_print(GaimDebugLevel level, const char *category, - const char *arg_s) { - if(category) - printf("%s: %s", category, arg_s); - else - printf(arg_s); -} - -static GaimDebugUiOps ops = { - wgaim_debug_print -}; - -/* * PUBLIC CODE */ @@ -115,9 +98,9 @@ FARPROC proc = 0; if(!(hmod = GetModuleHandle(dllname))) { - gaim_debug(GAIM_DEBUG_WARNING, "wgaim", "%s not already loaded; loading it...\n", dllname); + gaim_debug_warning("wgaim", "%s not already loaded; loading it...\n", dllname); if(!(hmod = LoadLibrary(dllname))) { - gaim_debug(GAIM_DEBUG_ERROR, "wgaim", "Could not load: %s\n", dllname); + gaim_debug_error("wgaim", "Could not load: %s\n", dllname); return NULL; } else @@ -125,12 +108,12 @@ } if((proc = GetProcAddress(hmod, procedure))) { - gaim_debug(GAIM_DEBUG_INFO, "wgaim", "This version of %s contains %s\n", + gaim_debug_info("wgaim", "This version of %s contains %s\n", dllname, procedure); return proc; } else { - gaim_debug(GAIM_DEBUG_WARNING, "wgaim", "Function %s not found in dll %s\n", + gaim_debug_warning("wgaim", "Function %s not found in dll %s\n", procedure, dllname); if(did_load) { /* unload dll */ @@ -203,7 +186,7 @@ if (tmp == NULL) { tmp = g_win32_error_message(GetLastError()); - gaim_debug(GAIM_DEBUG_ERROR, "wgaim", + gaim_debug_error("wgaim", "GetModuleFileName error: %s\n", tmp); g_free(tmp); return NULL; @@ -261,7 +244,7 @@ if (!app_data_dir) app_data_dir = g_strdup("C:"); } - gaim_debug(GAIM_DEBUG_INFO, "wgaim", "Gaim settings dir: %s\n", + gaim_debug_info("wgaim", "Gaim settings dir: %s\n", app_data_dir); } @@ -414,9 +397,10 @@ const char *perlenv; char *newenv; - gaim_debug_set_ui_ops(&ops); gaim_debug_info("wgaim", "wgaim_init start\n"); + gaim_debug_info("wgaim", "libgaim version: " VERSION "\n"); + gaim_debug_info("wgaim", "Glib:%u.%u.%u\n", glib_major_version, glib_minor_version, glib_micro_version); @@ -429,7 +413,7 @@ 2.2 in addition to 2.2, it will still return 2.2 in wVersion since that is the version we requested. */ if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) { - gaim_debug(GAIM_DEBUG_WARNING, "wgaim", "Could not find a usable WinSock DLL. Oh well.\n"); + gaim_debug_error("wgaim", "Could not find a usable WinSock DLL. Oh well.\n"); WSACleanup(); } @@ -441,19 +425,19 @@ perlenv ? ";" : "", wgaim_install_dir()); if (!g_setenv("PERL5LIB", newenv, TRUE)) - gaim_debug(GAIM_DEBUG_WARNING, "wgaim", "putenv failed\n"); + gaim_debug_warning("wgaim", "putenv failed for PERL5LIB\n"); g_free(newenv); if (!g_thread_supported()) g_thread_init(NULL); - gaim_debug(GAIM_DEBUG_INFO, "wgaim", "wgaim_init end\n"); + gaim_debug_info("wgaim", "wgaim_init end\n"); } /* Windows Cleanup */ void wgaim_cleanup(void) { - gaim_debug(GAIM_DEBUG_INFO, "wgaim", "wgaim_cleanup\n"); + gaim_debug_info("wgaim", "wgaim_cleanup\n"); /* winsock cleanup */ WSACleanup(); @@ -465,7 +449,7 @@ } /* DLL initializer */ -BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) { +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { libgaimdll_hInstance = hinstDLL; return TRUE; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-10-18 03:51:14
|
Revision: 17510 http://svn.sourceforge.net/gaim/?rev=17510&view=rev Author: seanegan Date: 2006-10-17 20:51:12 -0700 (Tue, 17 Oct 2006) Log Message: ----------- beta4 Modified Paths: -------------- trunk/NEWS trunk/configure.ac Modified: trunk/NEWS =================================================================== --- trunk/NEWS 2006-10-18 03:32:14 UTC (rev 17509) +++ trunk/NEWS 2006-10-18 03:51:12 UTC (rev 17510) @@ -1,5 +1,8 @@ -=[ Gaim ]=- The Pimpin' Penguin IM Client That's Good For The Soul! +2.0.0beta4 (10/17/2006) + Sean: Still beta. Maybe the next one should be a gamma.. :) + 2.0.0beta3 (03/25/2006): Mark: Yeah, I know, another beta. Don't worry, we'll get this puppy out the door eventually. Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-10-18 03:32:14 UTC (rev 17509) +++ trunk/configure.ac 2006-10-18 03:51:12 UTC (rev 17510) @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -AC_INIT([gaim], [2.0.0dev], [gai...@li...]) +AC_INIT([gaim], [2.0.0beta4], [gai...@li...]) AC_CANONICAL_SYSTEM AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2006-10-18 16:43:32
|
Revision: 17521 http://svn.sourceforge.net/gaim/?rev=17521&view=rev Author: deryni9 Date: 2006-10-18 08:45:22 -0700 (Wed, 18 Oct 2006) Log Message: ----------- Fix a couple of issues I ran into while running make distcheck. It still isn't successfully completing but it is getting farther. Right now I'm getting: /usr/bin/xgettext: error while opening "../../po/../gtk/plugins/crazychat/cc_gaim_plugin.c" for reading: No such file or directory ERROR: xgettext failed to generate PO template file. Please consult error message above if there is any. while in the /home/deryni/gaim/clean/gaim-2.0.0beta4/_build/po directory. I think we either need to remove crazy chat from the po files or add it to DIST_SUBDIRS, but I don't have time to test that right now. Modified Paths: -------------- trunk/Makefile.am trunk/console/plugins/Makefile.am trunk/gtk/plugins/perl/Makefile.am Modified: trunk/Makefile.am =================================================================== --- trunk/Makefile.am 2006-10-18 15:27:38 UTC (rev 17520) +++ trunk/Makefile.am 2006-10-18 15:45:22 UTC (rev 17521) @@ -42,7 +42,7 @@ cp gaim.spec $(distdir) rm $(distdir)/config.h -distcheck-hook: libgaim/plugins/perl/common/Gaim.pm +distcheck-hook: libgaim/plugins/perl/common/Gaim.pm gtk/plugins/perl/common/GtkUI.pm # cp libgaim/plugins/perl/common/Gaim.pm $(distdir)/libgaim/plugins/perl/common appsdir = $(datadir)/applications Modified: trunk/console/plugins/Makefile.am =================================================================== --- trunk/console/plugins/Makefile.am 2006-10-18 15:27:38 UTC (rev 17520) +++ trunk/console/plugins/Makefile.am 2006-10-18 15:45:22 UTC (rev 17521) @@ -28,6 +28,7 @@ -DVERSION=\"$(VERSION)\" \ -I$(top_builddir)/libgaim \ -I$(top_srcdir)/libgaim \ + -I$(top_srcdir) \ -I$(top_srcdir)/console \ -I$(top_srcdir)/console/libgnt \ $(DEBUG_CFLAGS) \ Modified: trunk/gtk/plugins/perl/Makefile.am =================================================================== --- trunk/gtk/plugins/perl/Makefile.am 2006-10-18 15:27:38 UTC (rev 17520) +++ trunk/gtk/plugins/perl/Makefile.am 2006-10-18 15:45:22 UTC (rev 17521) @@ -37,6 +37,11 @@ $(common_sources) common/Makefile: common/Makefile.PL + @if test "x${top_srcdir}" != "x${top_builddir}"; then \ + for f in ${common_sources}; do \ + ${LN_S} -f ../${srcdir}/$$f $$f; \ + done; \ + fi @cd common && $(perlpath) Makefile.PL $(PERL_MM_PARAMS) common/Makefile.PL: common/Makefile.PL.in $(top_builddir)/config.status This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-21 21:08:50
|
Revision: 17558 http://svn.sourceforge.net/gaim/?rev=17558&view=rev Author: sadrul Date: 2006-10-21 14:08:24 -0700 (Sat, 21 Oct 2006) Log Message: ----------- Introduce actions. You can specify the bindings for the actions. Right now, only the tree and the entry widget have them. The manual includes the details. I believe Ethan had suggested something like this a while back. It made sense, so here it is. Modified Paths: -------------- trunk/console/libgnt/gnt-skel.c trunk/console/libgnt/gntentry.c trunk/console/libgnt/gntkeys.h trunk/console/libgnt/gntstyle.c trunk/console/libgnt/gnttree.c trunk/console/libgnt/gntutils.c trunk/console/libgnt/gntutils.h trunk/console/libgnt/gntwidget.c trunk/console/libgnt/gntwidget.h trunk/console/libgnt/test/multiwin.c trunk/console/libgnt/test/tv.c trunk/doc/gaim-text.1.in Modified: trunk/console/libgnt/gnt-skel.c =================================================================== --- trunk/console/libgnt/gnt-skel.c 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/gnt-skel.c 2006-10-21 21:08:24 UTC (rev 17558) @@ -50,6 +50,13 @@ parent_class->size_request = gnt_skel_size_request; parent_class->key_pressed = gnt_skel_key_pressed; + parent_class->actions = g_hash_table_duplicate(parent_class->actions, g_str_hash, + g_str_equal, NULL, (GDestroyNotify)gnt_widget_action_free); + parent_class->bindings = g_hash_table_duplicate(parent_class->bindings, g_str_hash, + g_str_equal, NULL, (GDestroyNotify)gnt_widget_action_param_free); + + gnt_widget_actions_read(G_OBJECT_CLASS_TYPE(klass), klass); + GNTDEBUG; } Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/gntentry.c 2006-10-21 21:08:24 UTC (rev 17558) @@ -157,35 +157,40 @@ gnt_widget_queue_update(widget); } -static void -move_back(GntEntry *entry) +static gboolean +move_back(GntWidget *widget, GList *null) { + GntEntry *entry = GNT_ENTRY(widget); if (entry->cursor <= entry->start) - return; + return FALSE; entry->cursor = g_utf8_find_prev_char(entry->start, entry->cursor); if (entry->cursor < entry->scroll) entry->scroll = entry->cursor; entry_redraw(GNT_WIDGET(entry)); + return TRUE; } -static void -move_forward(GntEntry *entry) +static gboolean +move_forward(GntWidget *widget, GList *list) { + GntEntry *entry = GNT_ENTRY(widget); if (entry->cursor >= entry->end) - return; + return FALSE; entry->cursor = g_utf8_find_next_char(entry->cursor, NULL); while (gnt_util_onscreen_width(entry->scroll, entry->cursor) >= GNT_WIDGET(entry)->priv.width) entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); entry_redraw(GNT_WIDGET(entry)); + return TRUE; } -static void -backspace(GntEntry *entry) +static gboolean +backspace(GntWidget *widget, GList *null) { int len; + GntEntry *entry = GNT_ENTRY(widget); if (entry->cursor <= entry->start) - return; + return TRUE; len = entry->cursor - g_utf8_find_prev_char(entry->start, entry->cursor); entry->cursor -= len; @@ -198,15 +203,17 @@ entry_redraw(GNT_WIDGET(entry)); if (entry->ddown) show_suggest_dropdown(entry); + return TRUE; } -static void -delkey(GntEntry *entry) +static gboolean +delkey(GntWidget *widget, GList *null) { int len; + GntEntry *entry = GNT_ENTRY(widget); if (entry->cursor >= entry->end) - return; + return FALSE; len = g_utf8_find_next_char(entry->cursor, NULL) - entry->cursor; memmove(entry->cursor, entry->cursor + len, entry->end - entry->cursor - len + 1); @@ -215,99 +222,129 @@ if (entry->ddown) show_suggest_dropdown(entry); + return TRUE; } -static void -move_start(GntEntry *entry) +static gboolean +move_start(GntWidget *widget, GList *null) { + GntEntry *entry = GNT_ENTRY(widget); entry->scroll = entry->cursor = entry->start; entry_redraw(GNT_WIDGET(entry)); + return TRUE; } -static void -move_end(GntEntry *entry) +static gboolean +move_end(GntWidget *widget, GList *null) { + GntEntry *entry = GNT_ENTRY(widget); entry->cursor = entry->end; /* This should be better than this */ while (gnt_util_onscreen_width(entry->scroll, entry->cursor) >= GNT_WIDGET(entry)->priv.width) entry->scroll = g_utf8_find_next_char(entry->scroll, NULL); entry_redraw(GNT_WIDGET(entry)); + return TRUE; } static gboolean -gnt_entry_key_pressed(GntWidget *widget, const char *text) +history_prev(GntWidget *widget, GList *null) { GntEntry *entry = GNT_ENTRY(widget); + if (entry->histlength && entry->history->prev) + { + entry->history = entry->history->prev; + gnt_entry_set_text(entry, entry->history->data); + destroy_suggest(entry); - if (text[0] == 27) + return TRUE; + } + return FALSE; +} + +static gboolean +history_next(GntWidget *widget, GList *null) +{ + GntEntry *entry = GNT_ENTRY(widget); + if (entry->histlength && entry->history->next) { - if (strcmp(text + 1, GNT_KEY_DEL) == 0 && entry->cursor < entry->end) + if (entry->history->prev == NULL) { - delkey(entry); - return TRUE; + /* Save the current contents */ + char *text = g_strdup(gnt_entry_get_text(entry)); + g_free(entry->history->data); + entry->history->data = text; } - else if (strcmp(text + 1, GNT_KEY_LEFT) == 0) - { - move_back(entry); - return TRUE; - } - else if (strcmp(text + 1, GNT_KEY_RIGHT) == 0) - { - move_forward(entry); - return TRUE; - } - else if (strcmp(text + 1, GNT_KEY_HOME) == 0) - { - move_start(entry); - return TRUE; - } - else if (strcmp(text + 1, GNT_KEY_END) == 0) - { - move_end(entry); - return TRUE; - } - else if (strcmp(text + 1, GNT_KEY_CTRL_DOWN) == 0 && entry->histlength) - { - if (entry->history->prev) - { - entry->history = entry->history->prev; - gnt_entry_set_text(entry, entry->history->data); - destroy_suggest(entry); - return TRUE; - } - } - else if (strcmp(text + 1, GNT_KEY_UP) == 0 || - strcmp(text + 1, GNT_KEY_DOWN) == 0) - { - if (entry->ddown) - { - gnt_widget_key_pressed(entry->ddown, text); - return TRUE; - } - } - else if (strcmp(text + 1, GNT_KEY_CTRL_UP) == 0 && entry->histlength) - { - if (entry->history->next) - { - if (entry->history->prev == NULL) - { - /* Save the current contents */ - char *text = g_strdup(gnt_entry_get_text(entry)); - g_free(entry->history->data); - entry->history->data = text; - } + entry->history = entry->history->next; + gnt_entry_set_text(entry, entry->history->data); + destroy_suggest(entry); - entry->history = entry->history->next; - gnt_entry_set_text(entry, entry->history->data); - destroy_suggest(entry); + return TRUE; + } + return FALSE; +} - return TRUE; - } - } - else if (text[1] == 0) +static gboolean +suggest_show(GntWidget *widget, GList *null) +{ + return show_suggest_dropdown(GNT_ENTRY(widget)); +} + +static gboolean +suggest_next(GntWidget *widget, GList *null) +{ + GntEntry *entry = GNT_ENTRY(widget); + if (entry->ddown) { + gnt_widget_perform_action_named(entry->ddown, "move-down", NULL); + return TRUE; + } + return FALSE; +} + +static gboolean +suggest_prev(GntWidget *widget, GList *null) +{ + GntEntry *entry = GNT_ENTRY(widget); + if (entry->ddown) { + gnt_widget_perform_action_named(entry->ddown, "move-up", NULL); + return TRUE; + } + return FALSE; +} + +static gboolean +del_to_home(GntWidget *widget, GList *null) +{ + GntEntry *entry = GNT_ENTRY(widget); + memmove(entry->start, entry->cursor, entry->end - entry->cursor); + entry->end -= (entry->cursor - entry->start); + entry->cursor = entry->scroll = entry->start; + memset(entry->end, '\0', entry->buffer - (entry->end - entry->start)); + entry_redraw(widget); + return TRUE; +} + +static gboolean +del_to_end(GntWidget *widget, GList *null) +{ + GntEntry *entry = GNT_ENTRY(widget); + entry->end = entry->cursor; + memset(entry->end, '\0', entry->buffer - (entry->end - entry->start)); + entry_redraw(widget); + return TRUE; +} + +static gboolean +gnt_entry_key_pressed(GntWidget *widget, const char *text) +{ + GntEntry *entry = GNT_ENTRY(widget); + + if (text[0] == 27) + { + if (text[1] == 0) { destroy_suggest(entry); + return TRUE; } return FALSE; @@ -400,60 +437,6 @@ entry_redraw(widget); return TRUE; } - else - { - if (strcmp(text, GNT_KEY_BACKSPACE) == 0 && entry->cursor > entry->start) - { - backspace(entry); - return TRUE; - } - else if (strcmp(text, GNT_KEY_CTRL_A) == 0) - { - move_start(entry); - return TRUE; - } - else if (strcmp(text, GNT_KEY_CTRL_B) == 0) - { - move_back(entry); - return TRUE; - } - else if (strcmp(text, GNT_KEY_CTRL_D) == 0) - { - delkey(entry); - return TRUE; - } - else if (strcmp(text, GNT_KEY_CTRL_E) == 0) - { - move_end(entry); - return TRUE; - } - else if (strcmp(text, GNT_KEY_CTRL_F) == 0) - { - move_forward(entry); - return TRUE; - } - else if (strcmp(text, GNT_KEY_CTRL_H) == 0) - { - backspace(entry); - return TRUE; - } - else if (strcmp(text, GNT_KEY_CTRL_K) == 0) - { - entry->end = entry->cursor; - memset(entry->end, '\0', entry->buffer - (entry->end - entry->start)); - entry_redraw(widget); - return TRUE; - } - else if (strcmp(text, GNT_KEY_CTRL_U) == 0) - { - memmove(entry->start, entry->cursor, entry->end - entry->cursor); - entry->end -= (entry->cursor - entry->start); - entry->cursor = entry->scroll = entry->start; - memset(entry->end, '\0', entry->buffer - (entry->end - entry->start)); - entry_redraw(widget); - return TRUE; - } - } } return FALSE; @@ -503,6 +486,49 @@ parent_class->key_pressed = gnt_entry_key_pressed; parent_class->lost_focus = gnt_entry_lost_focus; + parent_class->actions = g_hash_table_duplicate(parent_class->actions, g_str_hash, + g_str_equal, g_free, (GDestroyNotify)gnt_widget_action_free); + parent_class->bindings = g_hash_table_duplicate(parent_class->bindings, g_str_hash, + g_str_equal, g_free, (GDestroyNotify)gnt_widget_action_param_free); + + gnt_widget_class_register_action(parent_class, "cursor-home", move_start, + GNT_KEY_CTRL_A, NULL); + gnt_widget_register_binding(parent_class, "cursor-home", "\033" GNT_KEY_HOME, NULL); + gnt_widget_class_register_action(parent_class, "cursor-end", move_end, + GNT_KEY_CTRL_E, NULL); + gnt_widget_register_binding(parent_class, "cursor-end", "\033" GNT_KEY_END, NULL); + gnt_widget_class_register_action(parent_class, "delete-prev", backspace, + GNT_KEY_BACKSPACE, NULL); + gnt_widget_class_register_action(parent_class, "delete-next", delkey, + "\033" GNT_KEY_DEL, NULL); + gnt_widget_register_binding(parent_class, "delete-next", GNT_KEY_CTRL_D, NULL); + gnt_widget_class_register_action(parent_class, "delete-start", del_to_home, + GNT_KEY_CTRL_U, NULL); + gnt_widget_class_register_action(parent_class, "delete-end", del_to_end, + GNT_KEY_CTRL_K, NULL); +#if 0 + gnt_widget_class_register_action(parent_class, "delete-prev-word", del_prev_word, + NULL, 1, NULL); + gnt_widget_class_register_action(parent_class, "delete-next-word", del_next_word, + NULL, 1, NULL); +#endif + gnt_widget_class_register_action(parent_class, "cursor-prev", move_back, + "\033" GNT_KEY_LEFT, NULL); + gnt_widget_class_register_action(parent_class, "cursor-next", move_forward, + "\033" GNT_KEY_RIGHT, NULL); + gnt_widget_class_register_action(parent_class, "suggest-show", suggest_show, + "\t", NULL); + gnt_widget_class_register_action(parent_class, "suggest-next", suggest_next, + "\033" GNT_KEY_DOWN, NULL); + gnt_widget_class_register_action(parent_class, "suggest-prev", suggest_prev, + "\033" GNT_KEY_UP, NULL); + gnt_widget_class_register_action(parent_class, "history-prev", history_prev, + "\033" GNT_KEY_CTRL_UP, NULL); + gnt_widget_class_register_action(parent_class, "history-next", history_next, + "\033" GNT_KEY_CTRL_DOWN, NULL); + + gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), klass); + GNTDEBUG; } Modified: trunk/console/libgnt/gntkeys.h =================================================================== --- trunk/console/libgnt/gntkeys.h 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/gntkeys.h 2006-10-21 21:08:24 UTC (rev 17558) @@ -23,6 +23,7 @@ #define GNT_KEY_BACKSPACE "\177" #define GNT_KEY_DEL "[3~" +#define GNT_KEY_INS "[2~" #define GNT_KEY_CTRL_A "\001" #define GNT_KEY_CTRL_B "\002" @@ -47,6 +48,19 @@ #define GNT_KEY_CTRL_X "\030" #define GNT_KEY_CTRL_Y "\031" +#define GNT_KEY_F1 "[[A" +#define GNT_KEY_F2 "[[B" +#define GNT_KEY_F3 "[[C" +#define GNT_KEY_F4 "[[D" +#define GNT_KEY_F5 "[[E" +#define GNT_KEY_F6 "[17~" +#define GNT_KEY_F7 "[18~" +#define GNT_KEY_F8 "[19~" +#define GNT_KEY_F9 "[20~" +#define GNT_KEY_F10 "[21~" +#define GNT_KEY_F11 "[23~" +#define GNT_KEY_F12 "[24~" + /** * This will do stuff with the terminal settings and stuff. */ Modified: trunk/console/libgnt/gntstyle.c =================================================================== --- trunk/console/libgnt/gntstyle.c 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/gntstyle.c 2006-10-21 21:08:24 UTC (rev 17558) @@ -79,6 +79,141 @@ *t = '\0'; } +static char * +parse_key(const char *key) +{ + char *ret = NULL; + int ctrl = 0, alt = 0; + char k; + + /* XXX: Need to do something about ctrl/alt+home, end etc. */ + +#define SPECIAL_KEY(k, code) do { \ + if (strncasecmp(key, k, sizeof(k) - 1) == 0) \ + return g_strdup(code); \ + } while (0) + + SPECIAL_KEY("home", "\033" GNT_KEY_HOME); + SPECIAL_KEY("end", "\033" GNT_KEY_END); + SPECIAL_KEY("pageup", "\033" GNT_KEY_PGUP); + SPECIAL_KEY("pagedown", "\033" GNT_KEY_PGDOWN); + SPECIAL_KEY("insert", "\033" GNT_KEY_INS); + SPECIAL_KEY("delete", "\033" GNT_KEY_DEL); + + SPECIAL_KEY("left", "\033" GNT_KEY_LEFT); + SPECIAL_KEY("right", "\033" GNT_KEY_RIGHT); + SPECIAL_KEY("up", "\033" GNT_KEY_UP); + SPECIAL_KEY("down", "\033" GNT_KEY_DOWN); + + SPECIAL_KEY("tab", "\t"); + SPECIAL_KEY("menu", "\033" GNT_KEY_POPUP); + + SPECIAL_KEY("f1", "\033" GNT_KEY_F1); + SPECIAL_KEY("f2", "\033" GNT_KEY_F2); + SPECIAL_KEY("f3", "\033" GNT_KEY_F3); + SPECIAL_KEY("f4", "\033" GNT_KEY_F4); + SPECIAL_KEY("f5", "\033" GNT_KEY_F5); + SPECIAL_KEY("f6", "\033" GNT_KEY_F6); + SPECIAL_KEY("f7", "\033" GNT_KEY_F7); + SPECIAL_KEY("f8", "\033" GNT_KEY_F8); + SPECIAL_KEY("f9", "\033" GNT_KEY_F9); + SPECIAL_KEY("f10", "\033" GNT_KEY_F10); + SPECIAL_KEY("f11", "\033" GNT_KEY_F11); + SPECIAL_KEY("f12", "\033" GNT_KEY_F12); + +#undef SPECIAL_KEY + +#define MATCH(string, var) do { \ + if (strncasecmp(key, string, sizeof(string) - 1) == 0) { \ + key += sizeof(string) - 1; \ + var = 1; \ + } \ + }while (0) + + MATCH("c-", ctrl); + MATCH("ctl-", ctrl); + MATCH("ctr-", ctrl); + MATCH("ctrl-", ctrl); + + MATCH("alt-", alt); + MATCH("a-", alt); + MATCH("m-", alt); + MATCH("meta-", alt); + + if (strlen(key) != 1) /* We can only have stuff like "ctrl-alt-a" */ + return NULL; + + if (ctrl && (strchr("hijm", *key) != NULL || !isalpha(*key))) { + /* These keys cannot be used with ctrl */ + return NULL; + } + + if (ctrl) + k = *key | 0x20; + else + k = *key; + + ret = g_strdup_printf("%s%c", alt ? "\033" : "", ctrl ? k - 0x60 : k); + +#undef MATCH + + return ret; +} + +void gnt_style_read_actions(GType type, GntWidgetClass *klass) +{ +#if GLIB_CHECK_VERSION(2,6,0) + char *name; + GError *error = NULL; + + name = g_strdup_printf("%s::binding", g_type_name(type)); + + if (g_key_file_has_group(gkfile, name)) + { + unsigned int len = 0; + char **keys; + + keys = g_key_file_get_keys(gkfile, name, &len, &error); + if (error) + { + g_printerr("GntStyle: %s\n", error->message); + g_error_free(error); + g_free(name); + return; + } + + while (len--) + { + char *key, *action; + + key = g_strdup(keys[len]); + action = g_key_file_get_string(gkfile, name, keys[len], &error); + + if (error) + { + g_printerr("GntStyle: %s\n", error->message); + g_error_free(error); + error = NULL; + } + else + { + char *keycode = parse_key(key); + if (keycode == NULL) { + g_printerr("GntStyle: Invalid key-binding %s\n", key); + } else { + gnt_widget_register_binding(klass, action, keycode, NULL); + g_free(keycode); + } + } + g_free(key); + g_free(action); + } + g_strfreev(keys); + } + g_free(name); +#endif +} + void gnt_styles_get_keyremaps(GType type, GHashTable *hash) { #if GLIB_CHECK_VERSION(2,6,0) @@ -97,6 +232,7 @@ { g_printerr("GntStyle: %s\n", error->message); g_error_free(error); + g_free(name); return; } Modified: trunk/console/libgnt/gnttree.c =================================================================== --- trunk/console/libgnt/gnttree.c 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/gnttree.c 2006-10-21 21:08:24 UTC (rev 17558) @@ -480,111 +480,108 @@ return g_hash_table_lookup(tree->hash, key); } -static void -action_down(GntTree *tree) +static gboolean +action_down(GntWidget *widget, GList *null) { int dist; + GntTree *tree = GNT_TREE(widget); + GntTreeRow *old = tree->current; GntTreeRow *row = get_next(tree->current); if (row == NULL) - return; + return FALSE; tree->current = row; if ((dist = get_distance(tree->current, tree->bottom)) < 0) gnt_tree_scroll(tree, -dist); else redraw_tree(tree); + if (old != tree->current) + tree_selection_changed(tree, old, tree->current); + return TRUE; } -static void -action_up(GntTree *tree) +static gboolean +action_up(GntWidget *widget, GList *list) { int dist; + GntTree *tree = GNT_TREE(widget); + GntTreeRow *old = tree->current; GntTreeRow *row = get_prev(tree->current); if (!row) - return; + return FALSE; tree->current = row; if ((dist = get_distance(tree->current, tree->top)) > 0) gnt_tree_scroll(tree, -dist); else redraw_tree(tree); + if (old != tree->current) + tree_selection_changed(tree, old, tree->current); + + return TRUE; } static gboolean -gnt_tree_key_pressed(GntWidget *widget, const char *text) +action_page_down(GntWidget *widget, GList *null) { GntTree *tree = GNT_TREE(widget); GntTreeRow *old = tree->current; + GntTreeRow *row = get_next(tree->bottom); + if (row) + { + int dist = get_distance(tree->top, tree->current); + tree->top = tree->bottom; + tree->current = get_next_n_opt(tree->top, dist, NULL); + redraw_tree(tree); + } + else if (tree->current != tree->bottom) + { + tree->current = tree->bottom; + redraw_tree(tree); + } + + if (old != tree->current) + tree_selection_changed(tree, old, tree->current); + return TRUE; +} + +static gboolean +action_page_up(GntWidget *widget, GList *null) +{ + GntTree *tree = GNT_TREE(widget); GntTreeRow *row; - int dist; + GntTreeRow *old = tree->current; - if (text[0] == 27) + if (tree->top != tree->root) { - if (strcmp(text+1, GNT_KEY_DOWN) == 0) - { - action_down(tree); - } - else if (strcmp(text+1, GNT_KEY_UP) == 0) - { - action_up(tree); - } - else if (strcmp(text+1, GNT_KEY_PGDOWN) == 0) - { - row = get_next(tree->bottom); - if (row) - { - int dist = get_distance(tree->top, tree->current); - tree->top = tree->bottom; - tree->current = get_next_n_opt(tree->top, dist, NULL); - redraw_tree(tree); - } - else if (tree->current != tree->bottom) - { - tree->current = tree->bottom; - redraw_tree(tree); - } - } - else if (strcmp(text+1, GNT_KEY_PGUP) == 0) - { - if (tree->top != tree->root) - { - int dist = get_distance(tree->top, tree->current); - row = get_prev_n(tree->top, widget->priv.height - 1 - - tree->show_title * 2 - 2 * (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER) == 0)); - if (row == NULL) - row = tree->root; - tree->top = row; - tree->current = get_next_n_opt(tree->top, dist, NULL); - redraw_tree(tree); - } - else if (tree->current != tree->top) - { - tree->current = tree->top; - redraw_tree(tree); - } - } + int dist = get_distance(tree->top, tree->current); + row = get_prev_n(tree->top, widget->priv.height - 1 - + tree->show_title * 2 - 2 * (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER) == 0)); + if (row == NULL) + row = tree->root; + tree->top = row; + tree->current = get_next_n_opt(tree->top, dist, NULL); + redraw_tree(tree); } - else if (iscntrl(text[0])) + else if (tree->current != tree->top) { - if (strcmp(text, GNT_KEY_CTRL_N) == 0 && (row = get_next(tree->current)) != NULL) - { - tree->current = row; - if ((dist = get_distance(tree->current, tree->bottom)) < 0) - gnt_tree_scroll(tree, -dist); - else - redraw_tree(tree); - } - else if (strcmp(text, GNT_KEY_CTRL_P) == 0 && (row = get_prev(tree->current)) != NULL) - { - tree->current = row; + tree->current = tree->top; + redraw_tree(tree); + } + if (old != tree->current) + tree_selection_changed(tree, old, tree->current); + return TRUE; +} - if ((dist = get_distance(tree->current, tree->top)) > 0) - gnt_tree_scroll(tree, -dist); - else - redraw_tree(tree); - } - else if (text[0] == '\r') - { - gnt_widget_activate(widget); - } +static gboolean +gnt_tree_key_pressed(GntWidget *widget, const char *text) +{ + GntTree *tree = GNT_TREE(widget); + GntTreeRow *old = tree->current; + GntTreeRow *row; + int dist; + + if (text[0] == '\r') + { + gnt_widget_activate(widget); } else if (text[0] == ' ' && text[1] == 0) { @@ -634,9 +631,9 @@ GntTree *tree = GNT_TREE(widget); GntTreeRow *old = tree->current; if (event == GNT_MOUSE_SCROLL_UP) { - action_up(GNT_TREE(widget)); + action_up(widget, NULL); } else if (event == GNT_MOUSE_SCROLL_DOWN) { - action_down(GNT_TREE(widget)); + action_down(widget, NULL); } else if (event == GNT_LEFT_MOUSE_DOWN) { GntTreeRow *row; GntTree *tree = GNT_TREE(widget); @@ -706,6 +703,24 @@ g_cclosure_marshal_VOID__POINTER, G_TYPE_NONE, 1, G_TYPE_POINTER); + parent_class->actions = g_hash_table_duplicate(parent_class->actions, g_str_hash, + g_str_equal, g_free, (GDestroyNotify)gnt_widget_action_free); + parent_class->bindings = g_hash_table_duplicate(parent_class->bindings, g_str_hash, + g_str_equal, g_free, (GDestroyNotify)gnt_widget_action_param_free); + + gnt_widget_class_register_action(parent_class, "move-up", action_up, + "\033" GNT_KEY_UP, NULL); + gnt_widget_register_binding(parent_class, "move-up", "\033" GNT_KEY_CTRL_N, NULL); + gnt_widget_class_register_action(parent_class, "move-down", action_down, + "\033" GNT_KEY_DOWN, NULL); + gnt_widget_register_binding(parent_class, "move-down", "\033" GNT_KEY_CTRL_P, NULL); + gnt_widget_class_register_action(parent_class, "page-up", action_page_up, + "\033" GNT_KEY_PGUP, NULL); + gnt_widget_class_register_action(parent_class, "page-down", action_page_down, + "\033" GNT_KEY_PGDOWN, NULL); + + gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), klass); + GNTDEBUG; } @@ -1350,11 +1365,9 @@ for (i = 0; i < tree->ncol; i++) { gnt_tree_set_col_width(tree, i, widths[i]); twidth += widths[i] + (tree->show_separator ? 1 : 0) + 1; - fprintf(stderr, "column width for col %d: %d\n", i, widths[i]); } g_free(widths); - fprintf(stderr, "tree width: %d\n", twidth); gnt_widget_get_size(GNT_WIDGET(tree), NULL, &height); gnt_widget_set_size(GNT_WIDGET(tree), twidth, height); } Modified: trunk/console/libgnt/gntutils.c =================================================================== --- trunk/console/libgnt/gntutils.c 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/gntutils.c 2006-10-21 21:08:24 UTC (rev 17558) @@ -105,3 +105,17 @@ return g_string_free(str, FALSE); } +static void +duplicate_values(gpointer key, gpointer value, gpointer data) +{ + g_hash_table_insert(data, key, value); +} + +GHashTable *g_hash_table_duplicate(GHashTable *src, GHashFunc hash, + GEqualFunc equal, GDestroyNotify key_d, GDestroyNotify value_d) +{ + GHashTable *dest = g_hash_table_new_full(hash, equal, key_d, value_d); + g_hash_table_foreach(src, duplicate_values, dest); + return dest; +} + Modified: trunk/console/libgnt/gntutils.h =================================================================== --- trunk/console/libgnt/gntutils.h 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/gntutils.h 2006-10-21 21:08:24 UTC (rev 17558) @@ -17,3 +17,6 @@ * Returns a newly allocated string. */ char *gnt_util_onscreen_fit_string(const char *string, int maxw); + +GHashTable *g_hash_table_duplicate(GHashTable *src, GHashFunc hash, + GEqualFunc equal, GDestroyNotify key_d, GDestroyNotify value_d); Modified: trunk/console/libgnt/gntwidget.c =================================================================== --- trunk/console/libgnt/gntwidget.c 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/gntwidget.c 2006-10-21 21:08:24 UTC (rev 17558) @@ -234,6 +234,13 @@ gnt_closure_marshal_BOOLEAN__INT_INT_INT, G_TYPE_BOOLEAN, 3, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); + klass->actions = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, + (GDestroyNotify)gnt_widget_action_free); + klass->bindings = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, + (GDestroyNotify)gnt_widget_action_param_free); + + gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), klass); + GNTDEBUG; } @@ -384,12 +391,56 @@ } gboolean +gnt_widget_perform_action_named(GntWidget *widget, const char *name, ...) +{ + GType type = G_OBJECT_TYPE(widget); + GntWidgetClass *klass = GNT_WIDGET_CLASS(G_OBJECT_GET_CLASS(widget)); + GList *list = NULL; + va_list args; + GntWidgetAction *action; + void *p; + + va_start(args, name); + while ((p = va_arg(args, void *)) != NULL) + list = g_list_append(list, p); + va_end(args); + + action = g_hash_table_lookup(klass->actions, name); + if (action && action->u.action) { + if (list) + return action->u.action(widget, list); + else + return action->u.action_noparam(widget); + } + return FALSE; +} + +static gboolean +gnt_widget_perform_action(GntWidget *widget, const char *keys) +{ + GType type = G_OBJECT_TYPE(widget); + GntWidgetClass *klass = GNT_WIDGET_CLASS(G_OBJECT_GET_CLASS(widget)); + GntWidgetActionParam *param = g_hash_table_lookup(klass->bindings, keys); + + if (param && param->action) { + if (param->list) + return param->action->u.action(widget, param->list); + else + return param->action->u.action_noparam(widget); + } + return FALSE; +} + +gboolean gnt_widget_key_pressed(GntWidget *widget, const char *keys) { gboolean ret; if (!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_CAN_TAKE_FOCUS)) return FALSE; + if (gnt_widget_perform_action(widget, keys)) + return TRUE; + keys = gnt_widget_remap_keys(widget, keys); g_signal_emit(widget, signals[SIG_KEY_PRESSED], 0, keys, &ret); return ret; @@ -632,3 +683,71 @@ gnt_style_get_bool(GNT_STYLE_SHADOW, FALSE)); } +static void +register_binding(GntWidgetClass *klass, const char *name, const char *trigger, GList *list) +{ + GntWidgetActionParam *param; + + if (name == NULL || *name == '\0') { + g_hash_table_remove(klass->bindings, (char*)trigger); + return; + } + + param = g_new0(GntWidgetActionParam, 1); + param->action = g_hash_table_lookup(klass->actions, name); + param->list = list; + g_hash_table_replace(klass->bindings, g_strdup(trigger), param); +} + +void gnt_widget_register_binding(GntWidgetClass *klass, const char *name, + const char *trigger, ...) +{ + GList *list = NULL; + va_list args; + void *data; + + va_start(args, trigger); + while ((data = va_arg(args, void *))) { + list = g_list_append(list, data); + } + va_end(args); + + register_binding(klass, name, trigger, list); +} + +void gnt_widget_class_register_action(GntWidgetClass *klass, const char *name, + GntWidgetActionCallback callback, + const char *trigger, ...) +{ + void *data; + va_list args; + GntWidgetAction *action = g_new0(GntWidgetAction, 1); + GList *list; + + action->name = g_strdup(name); + action->u.action = callback; + + g_hash_table_replace(klass->actions, g_strdup(name), action); + + list = NULL; + va_start(args, trigger); + while ((data = va_arg(args, void *))) { + list = g_list_append(list, data); + } + va_end(args); + + register_binding(klass, name, trigger, list); +} + +void gnt_widget_action_free(GntWidgetAction *action) +{ + g_free(action->name); + g_free(action); +} + +void gnt_widget_action_param_free(GntWidgetActionParam *param) +{ + g_list_free(param->list); /* XXX: There may be a leak here for string parameters */ + g_free(param); +} + Modified: trunk/console/libgnt/gntwidget.h =================================================================== --- trunk/console/libgnt/gntwidget.h 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/gntwidget.h 2006-10-21 21:08:24 UTC (rev 17558) @@ -88,6 +88,8 @@ GObjectClass parent; GHashTable *remaps; /* Key remaps */ + GHashTable *actions; /* name -> Action */ + GHashTable *bindings; /* key -> ActionParam */ void (*map)(GntWidget *obj); void (*show)(GntWidget *obj); /* This will call draw() and take focus (if it can take focus) */ @@ -149,6 +151,40 @@ gboolean gnt_widget_has_shadow(GntWidget *widget); +/******************/ +/* Widget Actions */ +/******************/ +typedef gboolean (*GntWidgetActionCallback) (GntWidget *widget, GList *params); +typedef gboolean (*GntWidgetActionCallbackNoParam)(GntWidget *widget); + +typedef struct _GnWidgetAction GntWidgetAction; +typedef struct _GnWidgetActionParam GntWidgetActionParam; + +struct _GnWidgetAction +{ + char *name; /* The name of the action */ + union { + gboolean (*action)(GntWidget *widget, GList *params); + gboolean (*action_noparam)(GntWidget *widget); + } u; +}; + +struct _GnWidgetActionParam +{ + GntWidgetAction *action; + GList *list; +}; + + +GntWidgetAction *gnt_widget_action_parse(const char *name); + +void gnt_widget_action_free(GntWidgetAction *action); +void gnt_widget_action_param_free(GntWidgetActionParam *param); + + +void gnt_widget_class_register_action(GntWidgetClass *klass, const char *name, + GntWidgetActionCallback callback, const char *trigger, ...); + G_END_DECLS #endif /* GNT_WIDGET_H */ Modified: trunk/console/libgnt/test/multiwin.c =================================================================== --- trunk/console/libgnt/test/multiwin.c 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/test/multiwin.c 2006-10-21 21:08:24 UTC (rev 17558) @@ -62,6 +62,7 @@ gnt_tree_add_row_after(GNT_TREE(tree), "6", gnt_tree_create_row(GNT_TREE(tree), "6", " long text", "a2"), "4", NULL); + gnt_tree_add_row_after(GNT_TREE(tree), NULL, NULL, NULL, "4"); int i; for (i = 110; i < 430; i++) { Modified: trunk/console/libgnt/test/tv.c =================================================================== --- trunk/console/libgnt/test/tv.c 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/console/libgnt/test/tv.c 2006-10-21 21:08:24 UTC (rev 17558) @@ -13,7 +13,7 @@ { gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(view), gnt_entry_get_text(GNT_ENTRY(w)), - GNT_TEXT_FLAG_HIGHLIGHT); + GNT_TEXT_FLAG_UNDERLINE | GNT_TEXT_FLAG_HIGHLIGHT); gnt_entry_add_to_history(GNT_ENTRY(w), gnt_entry_get_text(GNT_ENTRY(w))); gnt_text_view_next_line(GNT_TEXT_VIEW(view)); gnt_entry_clear(GNT_ENTRY(w)); Modified: trunk/doc/gaim-text.1.in =================================================================== --- trunk/doc/gaim-text.1.in 2006-10-21 20:40:12 UTC (rev 17557) +++ trunk/doc/gaim-text.1.in 2006-10-21 21:08:24 UTC (rev 17558) @@ -192,6 +192,63 @@ \\ = \\r .br +.SH Widget Actions +You can specifiy key-bindings for specific widgets. The following entries in +\fI~/.gntrc\fR correspond to the default keybindings for the actions: + +.br +[GntEntry::binding] +.br +c-a = cursor-home +.br +home = cursor-home +.br +c-e = cursor-end +.br +end = cursor-end +.br +backspace = delete-prev +.br +del = delete-next +.br +c-d = delete-next +.br +c-u = delete-start +.br +c-k = delete-end +.br +left = cursor-prev +.br +right = cursor-next +.br +tab = suggest-show +.br +down = suggest-next +.br +up = suggest-prev +.br + +.br +[GntTree::binding] +.br +up = move-up +.br +down = move-down +.br +c-n = move-down +.br +c-p = move-up +.br +pageup = page-up +.br +pagedown = page-down +.br + +The \fBc-\fR corresponds to the \fBControl\fR key. You can also use \fBctrl-\fR +or \fBctr-\fR or \fBctl-\fR to indicate a combination. For alt-keys, you can use +one of \fBa-\fR, \fBalt-\fR, \fBm-\fR or \fBmeta-\fR. You can also use +\fBhome\fR, \fBend\fR, \fBleft\fR, \fBright\fR etc. keys. + .SH Mouse Support There is experimental mouse support. You can focus windows, activate buttons, select rows in a list, scroll using the wheel-scroll etc. Mouse support is This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-10-21 21:19:08
|
Revision: 17559 http://svn.sourceforge.net/gaim/?rev=17559&view=rev Author: datallah Date: 2006-10-21 14:19:02 -0700 (Sat, 21 Oct 2006) Log Message: ----------- move win32 gtk plugin extra dist stuff to gtk/plugins/Makefile.am Modified Paths: -------------- trunk/Makefile.am trunk/gtk/plugins/Makefile.am Modified: trunk/Makefile.am =================================================================== --- trunk/Makefile.am 2006-10-21 21:08:24 UTC (rev 17558) +++ trunk/Makefile.am 2006-10-21 21:19:02 UTC (rev 17559) @@ -20,12 +20,6 @@ intltool-merge.in \ intltool-update.in \ config.h.mingw \ - gtk/plugins/win32/transparency/Makefile.mingw \ - gtk/plugins/win32/transparency/win2ktrans.c \ - gtk/plugins/win32/winprefs/gtkappbar.c \ - gtk/plugins/win32/winprefs/gtkappbar.h \ - gtk/plugins/win32/winprefs/Makefile.mingw \ - gtk/plugins/win32/winprefs/winprefs.c \ po/Makefile.mingw noinst_HEADERS = config.h Modified: trunk/gtk/plugins/Makefile.am =================================================================== --- trunk/gtk/plugins/Makefile.am 2006-10-21 21:08:24 UTC (rev 17558) +++ trunk/gtk/plugins/Makefile.am 2006-10-21 21:19:02 UTC (rev 17559) @@ -78,7 +78,13 @@ gaiminc.c \ gtk-signals-test.c \ mailchk.c \ - raw.c + raw.c \ + win32/transparency/Makefile.mingw \ + win32/transparency/win2ktrans.c \ + win32/winprefs/gtkappbar.c \ + win32/winprefs/gtkappbar.h \ + win32/winprefs/Makefile.mingw \ + win32/winprefs/winprefs.c AM_CPPFLAGS = \ -DDATADIR=\"$(datadir)\" \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-10-22 05:12:31
|
Revision: 17562 http://svn.sourceforge.net/gaim/?rev=17562&view=rev Author: rlaager Date: 2006-10-21 22:12:28 -0700 (Sat, 21 Oct 2006) Log Message: ----------- SF Patch #1581054 from Jason Lynch Fixes SF Bug #1581014 'Several switches in the configure script (startup-notification and gtkspell, among others) explicitly set the relevant enable_x variable to "no" in the AC_ARG_ENABLE macro in the "action-if-given" area, with the side effect that if someone explicitly passes --enable-feature, the feature will be disabled. replacing the "no" with "$enableval" as in other AC_ARG_ENABLE calls fixes the problem.' The signature is: AC_ARG_ENABLE (FEATURE, HELP-STRING, [ACTION-IF-GIVEN], [ACTION-IF-NOT-GIVEN]) Modified Paths: -------------- trunk/COPYRIGHT trunk/configure.ac Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-10-22 05:05:16 UTC (rev 17561) +++ trunk/COPYRIGHT 2006-10-22 05:12:28 UTC (rev 17562) @@ -178,6 +178,7 @@ Uli Luckas Matthew Luckie Mike Lundy +Jason Lynch Lucio Maciel Brian Macke Paolo Maggi Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-10-22 05:05:16 UTC (rev 17561) +++ trunk/configure.ac 2006-10-22 05:12:28 UTC (rev 17562) @@ -186,27 +186,27 @@ AC_ARG_ENABLE(screensaver, [AC_HELP_STRING([--disable-screensaver], [compile without X screensaver extension (used to detect idleness)])], - enable_screensaver="no", enable_screensaver="yes") + enable_screensaver="$enableval", enable_screensaver="yes") AC_ARG_ENABLE(sm, [AC_HELP_STRING([--disable-sm], [compile without X session management support])], - enable_sm="no", enable_sm="yes") + enable_sm="$enableval", enable_sm="yes") AC_ARG_ENABLE(startup-notification, [AC_HELP_STRING([--disable-startup-notification], [compile without startup notification support])], - enable_startup_notification="no", enable_startup_notification="yes") + enable_startup_notification="$enableval", enable_startup_notification="yes") AC_ARG_ENABLE(gtkspell, [AC_HELP_STRING([--disable-gtkspell], [compile without GtkSpell automatic spell checking])], - enable_gtkspell="no", enable_gtkspell="yes") + enable_gtkspell="$enableval", enable_gtkspell="yes") AC_ARG_ENABLE(gevolution, [AC_HELP_STRING([--disable-gevolution], [compile without the Gaim Evolution plugin])], - enable_gevolution="no", enable_gevolution="yes") + enable_gevolution="$enableval", enable_gevolution="yes") AC_ARG_ENABLE(cap, [AC_HELP_STRING([--disable-cap], [compile without Contact Availability Prediction plugin])], - enable_cap="no", enable_cap="yes") + enable_cap="$enableval", enable_cap="yes") AC_PATH_XTRA @@ -455,7 +455,7 @@ dnl ####################################################################### AC_ARG_ENABLE(gstreamer, [AC_HELP_STRING([--disable-gstreamer], [compile without GStreamer audio support])], - enable_gst="no", enable_gst="yes") + enable_gst="$enableval", enable_gst="yes") PKG_CHECK_MODULES(GSTREAMER, [gstreamer-0.10], , [ AC_MSG_RESULT(no) enable_gst="no" @@ -1564,7 +1564,7 @@ dnl # Check for Tcl dnl ####################################################################### AC_ARG_ENABLE(tcl, [AC_HELP_STRING([--disable-tcl], - [compile without Tcl scripting])], enable_tcl="no", enable_tcl="yes") + [compile without Tcl scripting])], enable_tcl="$enableval", enable_tcl="yes") AC_ARG_WITH(tclconfig, [AC_HELP_STRING([--with-tclconfig=DIR], [directory containing tclConfig.sh])]) @@ -1633,7 +1633,7 @@ dnl # Check for Tk dnl ####################################################################### AC_ARG_ENABLE(tk, [AC_HELP_STRING([--disable-tk], - [compile without Tcl support for Tk])], enable_tk="no", enable_tk="yes") + [compile without Tcl support for Tk])], enable_tk="$enableval", enable_tk="yes") AC_ARG_WITH(tkconfig, [AC_HELP_STRING([--with-tkconfig=DIR], [directory containing tkConfig.sh])]) @@ -1812,11 +1812,11 @@ AC_ARG_ENABLE(doxygen, [AC_HELP_STRING([--disable-doxygen], [enable documentation with doxygen])], - enable_doxygen="no", enable_doxygen="yes") + enable_doxygen="$enableval", enable_doxygen="yes") AC_ARG_ENABLE(dot, [AC_HELP_STRING([--enable-dot], [enable graphs in doxygen via 'dot'])], - enable_dot="no", enable_dot="yes") + enable_dot="$enableval", enable_dot="yes") if test "x$enable_doxygen" = xyes; then AC_CHECK_PROG(DOXYGEN, doxygen, true, false) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-10-22 07:04:35
|
Revision: 17563 http://svn.sourceforge.net/gaim/?rev=17563&view=rev Author: rlaager Date: 2006-10-22 00:04:28 -0700 (Sun, 22 Oct 2006) Log Message: ----------- SF Patch #1580113 from Taso N. Devetzis "gtkcellrendererexpander.c:aim_gtk_cell_renderer_expander_activate() prototype needs tweaking to compile under Solaris." Modified Paths: -------------- trunk/COPYRIGHT trunk/gtk/gtkcellrendererexpander.c Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-10-22 05:12:28 UTC (rev 17562) +++ trunk/COPYRIGHT 2006-10-22 07:04:28 UTC (rev 17563) @@ -73,6 +73,7 @@ Michael Culbertson Martijn Dekker Philip Derrin +Taso N. Devetzis Balwinder Singh Dheeman Andrew Dieffenbach Finlay Dobbie Modified: trunk/gtk/gtkcellrendererexpander.c =================================================================== --- trunk/gtk/gtkcellrendererexpander.c 2006-10-22 05:12:28 UTC (rev 17562) +++ trunk/gtk/gtkcellrendererexpander.c 2006-10-22 07:04:28 UTC (rev 17563) @@ -62,7 +62,7 @@ const gchar *path, GdkRectangle *background_area, GdkRectangle *cell_area, - guint flags); + GtkCellRendererState flags); static void gaim_gtk_cell_renderer_expander_finalize (GObject *gobject); enum { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-10-23 01:07:31
|
Revision: 17564 http://svn.sourceforge.net/gaim/?rev=17564&view=rev Author: rlaager Date: 2006-10-22 18:07:27 -0700 (Sun, 22 Oct 2006) Log Message: ----------- Revert the changes from 17036. The log-displaying signal has a GaimGtkLogViewer argument, and gaim-encryption uses it. Accessor methods would be another way to solve this, but I don't really want to risk breaking things more. Modified Paths: -------------- trunk/ChangeLog.API trunk/gtk/gtklog.c trunk/gtk/gtklog.h Modified: trunk/ChangeLog.API =================================================================== --- trunk/ChangeLog.API 2006-10-22 07:04:28 UTC (rev 17563) +++ trunk/ChangeLog.API 2006-10-23 01:07:27 UTC (rev 17564) @@ -198,7 +198,6 @@ * gaim_conversation_get_send_history(), and send_history from GaimConversation * Removed ui_ops from GaimBuddyList. Use gaim_blist_get_ui_ops() instead - * GaimGtkLogViewer hidden... You weren't using it anyway. * GaimGtkConversation: dialogs (dialogs.search moved to GaimGtkWindow) * gaim_show_xfer_dialog: Use gaim_gtk_xfer_dialog_show(NULL) instead. * GaimGtkRoomlistDialog: Nothing used it outside of the file it was in. Modified: trunk/gtk/gtklog.c =================================================================== --- trunk/gtk/gtklog.c 2006-10-22 07:04:28 UTC (rev 17563) +++ trunk/gtk/gtklog.c 2006-10-23 01:07:27 UTC (rev 17564) @@ -34,25 +34,6 @@ #include "notify.h" #include "util.h" -typedef struct _GaimGtkLogViewer GaimGtkLogViewer; - -/** - * A GTK+ Log Viewer. You can look at logs with it. - */ -struct _GaimGtkLogViewer { - GList *logs; /**< The list of logs viewed in this viewer */ - - GtkWidget *window; /**< The viewer's window */ - GtkTreeStore *treestore; /**< The treestore containing said logs */ - GtkWidget *treeview; /**< The treeview representing said treestore */ - GtkWidget *imhtml; /**< The imhtml to display said logs */ - GtkWidget *entry; /**< The search entry, in which search terms - * are entered */ - GaimLogReadFlags flags; /**< The most recently used log flags */ - char *search; /**< The string currently being searched for */ - GtkWidget *label; /**< The label at the top of the log viewer */ -}; - static GHashTable *log_viewers = NULL; static void populate_log_tree(GaimGtkLogViewer *lv); static GaimGtkLogViewer *syslog_viewer = NULL; Modified: trunk/gtk/gtklog.h =================================================================== --- trunk/gtk/gtklog.h 2006-10-22 07:04:28 UTC (rev 17563) +++ trunk/gtk/gtklog.h 2006-10-23 01:07:27 UTC (rev 17564) @@ -30,6 +30,27 @@ #include "account.h" +typedef struct _GaimGtkLogViewer GaimGtkLogViewer; + +/** + * A GTK+ Log Viewer. You can look at logs with it. + */ +struct _GaimGtkLogViewer { + GList *logs; /**< The list of logs viewed in this viewer */ + + GtkWidget *window; /**< The viewer's window */ + GtkTreeStore *treestore; /**< The treestore containing said logs */ + GtkWidget *treeview; /**< The treeview representing said treestore */ + GtkWidget *imhtml; /**< The imhtml to display said logs */ + GtkWidget *entry; /**< The search entry, in which search terms + * are entered */ + GaimLogReadFlags flags; /**< The most recently used log flags */ + char *search; /**< The string currently being searched for */ + GtkWidget *label; /**< The label at the top of the log viewer */ +}; + + + void gaim_gtk_log_show(GaimLogType type, const char *screenname, GaimAccount *account); void gaim_gtk_log_show_contact(GaimContact *contact); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-10-23 17:54:12
|
Revision: 17565 http://svn.sourceforge.net/gaim/?rev=17565&view=rev Author: seanegan Date: 2006-10-23 10:53:55 -0700 (Mon, 23 Oct 2006) Log Message: ----------- [ 1582776 ] Re-init resolver when libnm connection changes Modified Paths: -------------- trunk/COPYRIGHT trunk/libgaim/network.c Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-10-23 01:07:27 UTC (rev 17564) +++ trunk/COPYRIGHT 2006-10-23 17:53:55 UTC (rev 17565) @@ -62,6 +62,7 @@ Jason Cohen Todd Cohen Jono Cole +Lorenzo Colitti Nathan Conrad Felipe Contreras Alex Converse Modified: trunk/libgaim/network.c =================================================================== --- trunk/libgaim/network.c 2006-10-23 01:07:27 UTC (rev 17564) +++ trunk/libgaim/network.c 2006-10-23 17:53:55 UTC (rev 17565) @@ -543,6 +543,8 @@ switch(current) { case LIBNM_ACTIVE_NETWORK_CONNECTION: + /* Call res_init in case DNS servers have changed */ + res_init(); ui_ops->network_connected(); prev = current; break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-10-23 19:05:35
|
Revision: 17567 http://svn.sourceforge.net/gaim/?rev=17567&view=rev Author: seanegan Date: 2006-10-23 12:05:14 -0700 (Mon, 23 Oct 2006) Log Message: ----------- res_init build fix? Modified Paths: -------------- trunk/gtk/gtkblist.c trunk/gtk/gtkblist.h trunk/gtk/gtknotify.c trunk/gtk/gtkstatusbox.c trunk/gtk/gtkstatusbox.h trunk/libgaim/network.c Modified: trunk/gtk/gtkblist.c =================================================================== --- trunk/gtk/gtkblist.c 2006-10-23 18:10:51 UTC (rev 17566) +++ trunk/gtk/gtkblist.c 2006-10-23 19:05:14 UTC (rev 17567) @@ -2078,6 +2078,7 @@ GdkPixbuf *status_icon; GdkPixbuf *avatar; int avatar_width; + int avatar_height; int width; int height; }; @@ -2101,6 +2102,7 @@ if(td->avatar) { td->avatar_width = gdk_pixbuf_get_width(td->avatar); + td->avatar_height = gdk_pixbuf_get_height(td->avatar); td->width += td->avatar_width + 8; td->height = MAX(td->height, gdk_pixbuf_get_height(td->avatar) + 8); } @@ -2134,6 +2136,8 @@ { struct tooltip_data *td = l->data; + + #if GTK_CHECK_VERSION(2,2,0) gdk_draw_pixbuf(GDK_DRAWABLE(gtkblist->tipwindow->window), NULL, td->status_icon, 0, 0, 4, current_height, -1 , -1, GDK_RGB_DITHER_NONE, 0, 0); @@ -2148,7 +2152,7 @@ max_width - (td->avatar_width + 4), current_height, -1, -1, GDK_RGB_DITHER_NONE, 0, 0); #endif - + gtk_paint_layout (style, gtkblist->tipwindow->window, GTK_STATE_NORMAL, FALSE, NULL, gtkblist->tipwindow, "tooltip", 38 + 4, current_height, td->layout); @@ -3860,6 +3864,10 @@ create_connection_error_buttons, NULL); } +void gaim_gtk_blist_add_alert(GtkWidget *alert) { + gtk_notebook_append_page(gtkblist->alert_notebook, alert, NULL); +} + /******************************************/ /* End of connection error handling stuff */ /******************************************/ @@ -3872,6 +3880,8 @@ GtkWidget *menu; GtkWidget *sw; GtkWidget *sep; + GtkWidget *hbox; + GtkWidget *label, *arrow; GtkAccelGroup *accel_group; GtkTreeSelection *selection; GtkTargetEntry dte[] = {{"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW}, @@ -4076,6 +4086,22 @@ gtkblist->error_buttons = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->error_buttons, FALSE, FALSE, 0); + /* Create an area for showing buddy list alerts */ + hbox = gtk_hbox_new(FALSE,0); + gtk_box_pack_start(GTK_BOX(gtkblist->vbox), hbox, FALSE, FALSE, 0); + arrow = gtk_arrow_new(GTK_ARROW_RIGHT,GTK_SHADOW_NONE); + gtk_box_pack_end(GTK_BOX(hbox),arrow,FALSE,FALSE,0); + label = gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(label), "<span size='smaller'><b>(2/3)</b></span>"); + gtk_box_pack_end(GTK_BOX(hbox),label,FALSE,FALSE,0); + arrow = gtk_arrow_new(GTK_ARROW_LEFT,GTK_SHADOW_NONE); + gtk_box_pack_end(GTK_BOX(hbox),arrow,FALSE,FALSE,0); + + gtkblist->alert_notebook = gtk_notebook_new(); + gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gtkblist->alert_notebook), FALSE); + gtk_notebook_set_show_border(GTK_NOTEBOOK(gtkblist->alert_notebook), FALSE); + gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->alert_notebook, FALSE, FALSE, 0); + /* Add the statusbox */ gtkblist->statusbox = gtk_gaim_status_box_new(); gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->statusbox, FALSE, TRUE, 0); Modified: trunk/gtk/gtkblist.h =================================================================== --- trunk/gtk/gtkblist.h 2006-10-23 18:10:51 UTC (rev 17566) +++ trunk/gtk/gtkblist.h 2006-10-23 19:05:14 UTC (rev 17567) @@ -94,6 +94,8 @@ GaimBlistNode *selected_node; /**< The currently selected node */ GtkWidget *error_buttons; /**< Box containing the connection error buttons */ GtkWidget *statusbox; /**< The status selector dropdown */ + + GtkWidget *alert_notebook; /**< The notebook for alerts */ }; #define GAIM_GTK_BLIST(list) ((GaimGtkBuddyList *)(list)->ui_data) @@ -301,4 +303,11 @@ */ void gaim_gtk_blist_update_account_error_state(GaimAccount *account, const char *message); +/** + * Adds a widget to the alert area of the buddy list + * + * @param widget The widget to add + */ +void gaim_gtk_blist_add_alert(GtkWidget *alert); + #endif /* _GAIM_GTKBLIST_H_ */ Modified: trunk/gtk/gtknotify.c =================================================================== --- trunk/gtk/gtknotify.c 2006-10-23 18:10:51 UTC (rev 17566) +++ trunk/gtk/gtknotify.c 2006-10-23 19:05:14 UTC (rev 17567) @@ -196,84 +196,138 @@ g_list_free(row); } + static void * gaim_gtk_notify_message(GaimNotifyMsgType type, const char *title, - const char *primary, const char *secondary) + const char *primary, const char *secondary) { - GtkWidget *dialog; - GtkWidget *hbox; - GtkWidget *label; - GtkWidget *img = NULL; - char label_text[2048]; - const char *icon_name = NULL; - char *primary_esc, *secondary_esc; + GtkStyle *style; + GdkColor color; + GtkWidget *ebox; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *bbox; + GtkWidget *label; + GtkWidget *button; + GtkWidget *alignment; + GtkWidget *img = NULL; + GtkStockItem close_item; + char label_text[2048]; + const char *icon_name = NULL; + char *primary_esc, *secondary_esc; - switch (type) - { - case GAIM_NOTIFY_MSG_ERROR: - icon_name = GAIM_STOCK_DIALOG_ERROR; - break; + switch (type) + { + case GAIM_NOTIFY_MSG_ERROR: + icon_name = GAIM_STOCK_DIALOG_ERROR; + break; - case GAIM_NOTIFY_MSG_WARNING: - icon_name = GAIM_STOCK_DIALOG_WARNING; - break; + case GAIM_NOTIFY_MSG_WARNING: + icon_name = GAIM_STOCK_DIALOG_WARNING; + break; - case GAIM_NOTIFY_MSG_INFO: - icon_name = GAIM_STOCK_DIALOG_INFO; - break; + case GAIM_NOTIFY_MSG_INFO: + icon_name = GAIM_STOCK_DIALOG_INFO; + break; - default: - icon_name = NULL; - break; - } + default: + icon_name = NULL; + break; + } - if (icon_name != NULL) - { - img = gtk_image_new_from_stock(icon_name, GTK_ICON_SIZE_DIALOG); - gtk_misc_set_alignment(GTK_MISC(img), 0, 0); - } + if (icon_name != NULL) + { + img = gtk_image_new_from_stock(icon_name, GTK_ICON_SIZE_BUTTON); + gtk_misc_set_alignment(GTK_MISC(img), 0, 0); + } - dialog = gtk_dialog_new_with_buttons(title ? title : GAIM_ALERT_TITLE, - NULL, 0, GTK_STOCK_CLOSE, - GTK_RESPONSE_CLOSE, NULL); + ebox = gtk_event_box_new(); + vbox = gtk_vbox_new(FALSE,0); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); + color.red = 65535; + // gtk_widget_modify_bg(ebox, GTK_STATE_NORMAL, &(vbox->style->base[GTK_STATE_SELECTED])); + gtk_container_add(GTK_CONTAINER(ebox),vbox); - gtk_window_set_role(GTK_WINDOW(dialog), "notify_dialog"); + hbox = gtk_hbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(vbox), hbox); - g_signal_connect(G_OBJECT(dialog), "response", - G_CALLBACK(message_response_cb), dialog); + if (img != NULL) + gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); + primary_esc = g_markup_escape_text(primary, -1); + if (secondary) + secondary_esc = g_markup_escape_text(secondary, -1); + g_snprintf(label_text, sizeof(label_text), + "<span weight=\"bold\" size=\"smaller\">%s</span>%s<span size=\"smaller\">%s</span>", + primary_esc, + secondary ? "\n" : "", + secondary ? secondary_esc : ""); + g_free(primary_esc); + label = gtk_label_new(NULL); + gtk_widget_modify_text(vbox, GTK_STATE_NORMAL, &(label->style->white)); + gtk_label_set_markup(GTK_LABEL(label), label_text); + gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); + gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); +#if GTK_CHECK_VERSION(2,6,0) + g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL); +#endif +#if 0 + if (secondary) { + secondary_esc = g_markup_escape_text(secondary, -1); + g_snprintf(label_text, sizeof(label_text), + "<span size=\"smaller\">%s</span>", + secondary_esc); + g_free(secondary_esc); + label = gtk_label_new(NULL); + gtk_label_set_markup(GTK_LABEL(label), label_text); + gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); + gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); +#if GTK_CHECK_VERSION(2,6,0) + g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL); +#endif + } +#endif + bbox = gtk_hbutton_box_new(); + gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_container_set_border_width(GTK_CONTAINER(dialog), GAIM_HIG_BORDER); - gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); - gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); - gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BORDER); - gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), GAIM_HIG_BOX_SPACE); + button = gtk_button_new(); + g_signal_connect_swapped(G_OBJECT(button), "activate", gtk_widget_destroy, ebox); + alignment = gtk_alignment_new(0.5, 0.5, 0, 0); + gtk_container_add(GTK_CONTAINER(button), alignment); - hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER); - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); + hbox = gtk_hbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(alignment), hbox); - if (img != NULL) - gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); + img = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU); + gtk_misc_set_alignment(GTK_MISC(img), 0.5, 0.5); + gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); - primary_esc = g_markup_escape_text(primary, -1); - secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL; - g_snprintf(label_text, sizeof(label_text), - "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s", - primary_esc, (secondary ? secondary_esc : "")); - g_free(primary_esc); - g_free(secondary_esc); + gtk_stock_lookup(GTK_STOCK_CLOSE, &close_item); + g_snprintf(label_text, sizeof(label_text), + "<span size=\"smaller\">%s</span>", close_item.label); + label = gtk_label_new(NULL); + gtk_misc_set_alignment(GTK_MISC(img), 0.5, 0.5); + gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); - label = gtk_label_new(NULL); + gtk_stock_lookup(GTK_STOCK_CLOSE, &close_item); + g_snprintf(label_text, sizeof(label_text), + "<span size=\"smaller\">%s</span>", close_item.label); + label = gtk_label_new(NULL); + gtk_misc_set_alignment(GTK_MISC(img), 0.5, 0.5); + gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), label_text); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); - gtk_label_set_markup(GTK_LABEL(label), label_text); - gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0); - gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); + gtk_container_add(GTK_CONTAINER(bbox), button); - gtk_widget_show_all(dialog); + gtk_widget_show_all(ebox); + gaim_gtk_blist_add_alert(ebox); - return dialog; + return ebox; } + static void selection_changed_cb(GtkTreeSelection *sel, GaimMailDialog *dialog) { Modified: trunk/gtk/gtkstatusbox.c =================================================================== --- trunk/gtk/gtkstatusbox.c 2006-10-23 18:10:51 UTC (rev 17566) +++ trunk/gtk/gtkstatusbox.c 2006-10-23 19:05:14 UTC (rev 17567) @@ -83,10 +83,6 @@ static void do_colorshift (GdkPixbuf *dest, GdkPixbuf *src, int shift); static void icon_choose_cb(const char *filename, gpointer data); -static void (*combo_box_size_request)(GtkWidget *widget, GtkRequisition *requisition); -static void (*combo_box_size_allocate)(GtkWidget *widget, GtkAllocation *allocation); -static void (*combo_box_forall) (GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data); - enum { /** A GtkGaimStatusBoxItemType */ TYPE_COLUMN, @@ -122,7 +118,7 @@ PROP_ICON_SEL, }; -GtkComboBoxClass *parent_class = NULL; +GtkContainer *parent_class = NULL; static void gtk_gaim_status_box_class_init (GtkGaimStatusBoxClass *klass); static void gtk_gaim_status_box_init (GtkGaimStatusBox *status_box); @@ -148,8 +144,8 @@ NULL /* value_table */ }; - status_box_type = g_type_register_static(GTK_TYPE_COMBO_BOX, - "GtkGaimStatusBox", + status_box_type = g_type_register_static(GTK_TYPE_CONTAINER, + "GtkGaimStatusBox", &status_box_info, 0); } @@ -199,7 +195,7 @@ if (status_no != -1) { gtk_widget_set_sensitive(GTK_WIDGET(status_box), FALSE); - gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), status_no); +// gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), status_no); message = gaim_status_get_attr_string(newstatus, "message"); @@ -426,23 +422,16 @@ gtk_gaim_status_box_class_init (GtkGaimStatusBoxClass *klass) { GObjectClass *object_class; - GtkComboBoxClass *combo_class; GtkWidgetClass *widget_class; GtkContainerClass *container_class = (GtkContainerClass*)klass; parent_class = g_type_class_peek_parent(klass); - combo_class = (GtkComboBoxClass*)klass; - combo_class->changed = gtk_gaim_status_box_changed; - widget_class = (GtkWidgetClass*)klass; - combo_box_size_request = widget_class->size_request; widget_class->size_request = gtk_gaim_status_box_size_request; - combo_box_size_allocate = widget_class->size_allocate; widget_class->size_allocate = gtk_gaim_status_box_size_allocate; widget_class->expose_event = gtk_gaim_status_box_expose_event; - combo_box_forall = container_class->forall; container_class->forall = gtk_gaim_status_box_forall; container_class->remove = NULL; @@ -518,16 +507,17 @@ gpointer data; /* Primary (get the status selected in the dropdown) */ - gtk_combo_box_get_active_iter(GTK_COMBO_BOX(status_box), &iter); - gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter, - TYPE_COLUMN, &type, - DATA_COLUMN, &data, - -1); - if (type == GTK_GAIM_STATUS_BOX_TYPE_PRIMITIVE) - primary = g_strdup(gaim_primitive_get_name_from_type(GPOINTER_TO_INT(data))); - else - /* This should never happen, but just in case... */ - primary = g_strdup("New status"); +// gtk_combo_box_get_active_iter(GTK_COMBO_BOX(status_box), &iter); +// gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter, +// TYPE_COLUMN, &type, +// DATA_COLUMN, &data, +// -1); +// if (type == GTK_GAIM_STATUS_BOX_TYPE_PRIMITIVE) +// primary = g_strdup(gaim_primitive_get_name_from_type(GPOINTER_TO_INT(data))); +// else +// /* This should never happen, but just in case... */ +// primary = g_strdup("New status"); + primary = g_strdup("Available"); } else if (account_status) primary = g_strdup(gaim_status_get_name(gaim_account_get_active_status(acct))); @@ -627,7 +617,7 @@ /* Make sure to activate the only row in the tree view */ path = gtk_tree_path_new_from_string("0"); - gtk_cell_view_set_displayed_row(GTK_CELL_VIEW(status_box->cell_view), path); +// gtk_cell_view_set_displayed_row(GTK_CELL_VIEW(status_box->cell_view), path); gtk_tree_path_free(path); update_size(status_box); @@ -693,7 +683,7 @@ (!gaim_savedstatus_has_substatuses(saved_status))) { index = get_statusbox_index(status_box, saved_status); - gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), index); +// gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), index); } else { @@ -702,7 +692,7 @@ gpointer data; /* Unset the active item */ - gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), -1); +// gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), -1); /* If this saved status is in the list store, then set it as the active item */ if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(status_box->dropdown_store), &iter)) @@ -730,7 +720,7 @@ || !strcmp(name, acct_status_name)) { /* Found! */ - gtk_combo_box_set_active_iter(GTK_COMBO_BOX(status_box), &iter); +// gtk_combo_box_set_active_iter(GTK_COMBO_BOX(status_box), &iter); g_free(name); break; } @@ -740,7 +730,7 @@ (GPOINTER_TO_INT(data) == gaim_savedstatus_get_creation_time(saved_status))) { /* Found! */ - gtk_combo_box_set_active_iter(GTK_COMBO_BOX(status_box), &iter); +// gtk_combo_box_set_active_iter(GTK_COMBO_BOX(status_box), &iter); break; } } @@ -926,7 +916,7 @@ if (tmp != NULL) g_object_unref(tmp); } - gtk_combo_box_set_model(GTK_COMBO_BOX(status_box), GTK_TREE_MODEL(status_box->dropdown_store)); +// gtk_combo_box_set_model(GTK_COMBO_BOX(status_box), GTK_TREE_MODEL(status_box->dropdown_store)); } static void @@ -943,7 +933,7 @@ icon_size = gtk_icon_size_from_name(GAIM_ICON_SIZE_STATUS_SMALL); /* Unset the model while clearing it */ - gtk_combo_box_set_model(GTK_COMBO_BOX(status_box), NULL); +// gtk_combo_box_set_model(GTK_COMBO_BOX(status_box), NULL); gtk_list_store_clear(status_box->dropdown_store); /* Don't set the model until the new statuses have been added to the box. * What is presumably a bug in Gtk < 2.4 causes things to get all confused @@ -985,7 +975,7 @@ gtk_gaim_status_box_add(GTK_GAIM_STATUS_BOX(status_box), GTK_GAIM_STATUS_BOX_TYPE_SAVED, pixbuf, _("Saved..."), NULL, NULL); if (pixbuf) g_object_unref(G_OBJECT(pixbuf)); - gtk_combo_box_set_model(GTK_COMBO_BOX(status_box), GTK_TREE_MODEL(status_box->dropdown_store)); +// gtk_combo_box_set_model(GTK_COMBO_BOX(status_box), GTK_TREE_MODEL(status_box->dropdown_store)); status_menu_refresh_iter(status_box); } else { @@ -1187,7 +1177,7 @@ static void toggled_cb(GtkWidget *widget, GtkGaimStatusBox *box) { - gtk_combo_box_popup(GTK_COMBO_BOX(box)); +// gtk_combo_box_popup(GTK_COMBO_BOX(box)); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(box->toggle_button), FALSE); } @@ -1272,9 +1262,9 @@ status_box->store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER); - gtk_combo_box_set_model(GTK_COMBO_BOX(status_box), GTK_TREE_MODEL(status_box->dropdown_store)); +// gtk_combo_box_set_model(GTK_COMBO_BOX(status_box), GTK_TREE_MODEL(status_box->dropdown_store)); gtk_cell_view_set_model(GTK_CELL_VIEW(status_box->cell_view), GTK_TREE_MODEL(status_box->store)); - gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(status_box), 0); +// gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(status_box), 0); gtk_list_store_append(status_box->store, &(status_box->iter)); gtk_container_add(GTK_CONTAINER(status_box->toggle_button), status_box->hbox); @@ -1288,20 +1278,20 @@ text_rend = gtk_cell_renderer_text_new(); icon_rend = gtk_cell_renderer_pixbuf_new(); - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box), icon_rend, FALSE); - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box), text_rend, TRUE); - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box), icon_rend, "pixbuf", ICON_COLUMN, NULL); - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box), text_rend, "markup", TEXT_COLUMN, NULL); +// gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box), icon_rend, FALSE); +// gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box), text_rend, TRUE); +// gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box), icon_rend, "pixbuf", ICON_COLUMN, NULL); +// gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box), text_rend, "markup", TEXT_COLUMN, NULL); #if GTK_CHECK_VERSION(2, 6, 0) g_object_set(text_rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); #endif status_box->icon_rend = gtk_cell_renderer_pixbuf_new(); status_box->text_rend = gtk_cell_renderer_text_new(); - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box->cell_view), status_box->icon_rend, FALSE); - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box->cell_view), status_box->text_rend, TRUE); - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), status_box->icon_rend, "pixbuf", ICON_COLUMN, NULL); - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), status_box->text_rend, "markup", TEXT_COLUMN, NULL); +// gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box->cell_view), status_box->icon_rend, FALSE); +// gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box->cell_view), status_box->text_rend, TRUE); +// gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), status_box->icon_rend, "pixbuf", ICON_COLUMN, NULL); +// gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), status_box->text_rend, "markup", TEXT_COLUMN, NULL); #if GTK_CHECK_VERSION(2, 6, 0) g_object_set(status_box->text_rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL); #endif @@ -1341,7 +1331,7 @@ G_CALLBACK(imhtml_scroll_event_cb), status_box->imhtml); #if GTK_CHECK_VERSION(2,6,0) - gtk_combo_box_set_row_separator_func(GTK_COMBO_BOX(status_box), dropdown_store_row_separator_func, NULL, NULL); +// gtk_combo_box_set_row_separator_func(GTK_COMBO_BOX(status_box), dropdown_store_row_separator_func, NULL, NULL); #endif status_box->token_status_account = check_active_accounts_for_identical_statuses(); @@ -1376,7 +1366,7 @@ GtkRequisition *requisition) { GtkRequisition box_req; - combo_box_size_request(widget, requisition); + gtk_widget_size_request(GTK_GAIM_STATUS_BOX(widget)->toggle_button, requisition); requisition->height += 3; /* If the gtkimhtml is visible, then add some additional padding */ @@ -1438,7 +1428,7 @@ GtkAllocation parent_alc, box_alc, icon_alc; gint border_width = GTK_CONTAINER (widget)->border_width; - combo_box_size_request(widget, &req); + gtk_widget_size_request(GTK_GAIM_STATUS_BOX(widget)->toggle_button, &req); box_alc = *allocation; @@ -1477,7 +1467,6 @@ gtk_widget_size_allocate(status_box->icon_box, &icon_alc); } - combo_box_size_allocate(widget, &parent_alc); gtk_widget_size_allocate(status_box->toggle_button, &parent_alc); widget->allocation = *allocation; } @@ -1511,7 +1500,7 @@ (* callback) (status_box->icon_box, callback_data); } - combo_box_forall(container, include_internals, callback, callback_data); +// combo_box_forall(container, include_internals, callback, callback_data); } GtkWidget * @@ -1724,8 +1713,8 @@ GaimSavedStatus *saved_status = NULL; gboolean changed = TRUE; - if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(status_box), &iter)) - return; +// if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(status_box), &iter)) +// return; gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter, TYPE_COLUMN, &type, @@ -1964,8 +1953,8 @@ status_box = GTK_GAIM_STATUS_BOX(box); - if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(status_box), &iter)) - return; +// if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(status_box), &iter)) +// return; gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter, TYPE_COLUMN, &type, DATA_COLUMN, &data, Modified: trunk/gtk/gtkstatusbox.h =================================================================== --- trunk/gtk/gtkstatusbox.h 2006-10-23 18:10:51 UTC (rev 17566) +++ trunk/gtk/gtkstatusbox.h 2006-10-23 19:05:14 UTC (rev 17567) @@ -65,7 +65,7 @@ struct _GtkGaimStatusBox { - GtkComboBox parent_instance; + GtkContainer parent_instance; /** * This GtkListStore contains only one row--the currently selected status. @@ -131,7 +131,7 @@ struct _GtkGaimStatusBoxClass { - GtkComboBoxClass parent_class; + GtkContainerClass parent_class; /* signals */ void (* changed) (GtkComboBox *combo_box); Modified: trunk/libgaim/network.c =================================================================== --- trunk/libgaim/network.c 2006-10-23 18:10:51 UTC (rev 17566) +++ trunk/libgaim/network.c 2006-10-23 19:05:14 UTC (rev 17567) @@ -26,6 +26,9 @@ #include "internal.h" #ifndef _WIN32 +#include <resolv.h> +#include <netinet/in.h> +#include <arpa/nameser.h> #include <net/if.h> #include <sys/ioctl.h> #else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2006-10-23 23:30:19
|
Revision: 17571 http://svn.sourceforge.net/gaim/?rev=17571&view=rev Author: deryni9 Date: 2006-10-23 16:30:15 -0700 (Mon, 23 Oct 2006) Log Message: ----------- 18:40:29 <casted> Hi, I found a bug in the gaim-remote script 18:41:48 <casted> ok. On line 104 it is currently: status_type = gaim.GaimSavedStatusGetType(current) 18:41:57 <casted> but should be: status_type = gaim.GaimSavedstatusGetType(current) 18:42:06 <casted> the status must be lowercase Modified Paths: -------------- trunk/COPYRIGHT trunk/libgaim/gaim-remote Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-10-23 20:25:16 UTC (rev 17570) +++ trunk/COPYRIGHT 2006-10-23 23:30:15 UTC (rev 17571) @@ -45,6 +45,7 @@ Thomas Butter Andrea Canciani Michael Carlson +Keegan Carruthers-Smith Steve Cavilia Julien Cegarra Cerulean Studios, LLC Modified: trunk/libgaim/gaim-remote =================================================================== --- trunk/libgaim/gaim-remote 2006-10-23 20:25:16 UTC (rev 17570) +++ trunk/libgaim/gaim-remote 2006-10-23 23:30:15 UTC (rev 17571) @@ -101,7 +101,7 @@ status_id = params["status"] status_type = gaim.GaimPrimitiveGetTypeFromId(status_id) else: - status_type = gaim.GaimSavedStatusGetType(current) + status_type = gaim.GaimSavedstatusGetType(current) status_id = gaim.GaimPrimitiveGetIdFromType(status_type) if "message" in params: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lsc...@us...> - 2006-10-24 20:11:14
|
Revision: 17577 http://svn.sourceforge.net/gaim/?rev=17577&view=rev Author: lschiere Date: 2006-10-24 12:57:20 -0700 (Tue, 24 Oct 2006) Log Message: ----------- new translation Modified Paths: -------------- trunk/configure.ac trunk/gtk/gtkdialogs.c trunk/po/ChangeLog Added Paths: ----------- trunk/po/eo.po Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-10-24 19:49:18 UTC (rev 17576) +++ trunk/configure.ac 2006-10-24 19:57:20 UTC (rev 17577) @@ -47,7 +47,7 @@ ;; esac -ALL_LINGUAS="am ar az bg bn bs ca ca@valencia cs da de el en_AU en_CA en_GB es et eu fa fi fr gl gu he hi hu it ja ka ko ku lt mk my_MM nb ne nl nn pa pl pt_BR pt ro ru sk sl sq sr sr@Latn sv ta te th tr uk vi xh zh_CN zh_TW" +ALL_LINGUAS="am ar az bg bn bs ca ca@valencia cs da de el en_AU en_CA en_GB eo es et eu fa fi fr gl gu he hi hu it ja ka ko ku lt mk my_MM nb ne nl nn pa pl pt_BR pt ro ru sk sl sq sr sr@Latn sv ta te th tr uk vi xh zh_CN zh_TW" AM_GLIB_GNU_GETTEXT dnl we don't use autobreak on cygwin!! Modified: trunk/gtk/gtkdialogs.c =================================================================== --- trunk/gtk/gtkdialogs.c 2006-10-24 19:49:18 UTC (rev 17576) +++ trunk/gtk/gtkdialogs.c 2006-10-24 19:57:20 UTC (rev 17577) @@ -130,6 +130,7 @@ {N_("Australian English"), "en_AU", "Peter Lawler", "tr...@si..."}, {N_("Canadian English"), "en_CA", "Adam Weinberger", "ad...@gn..."}, {N_("British English"), "en_GB", "Luke Ross", "luk...@sy..."}, + {N_("Esperanto"), "eo", "Stéphane Fillod", "fi...@us..."}, {N_("Spanish"), "es", "Javier Fernández-Sanguino Peña", "jf...@de..."}, {N_("Euskera(Basque)"), "eu", "Hizkuntza Politikarako Sailburuordetza", "hi...@ej..."}, {N_("Euskera(Basque)"), "eu", "Iñaki Larrañaga Murgoitio", "do...@zu..."}, Modified: trunk/po/ChangeLog =================================================================== --- trunk/po/ChangeLog 2006-10-24 19:49:18 UTC (rev 17576) +++ trunk/po/ChangeLog 2006-10-24 19:57:20 UTC (rev 17577) @@ -13,6 +13,7 @@ * Dutch translation updated (Roy Spliet, Vincent van Adrighem) * English (British) translation updated (Stu Tomlinson and Luke Ross) * English (Canadian) translation updated (Adam Weinberger) + * Esperanto translation added (Stéphane Fillod) * Estonian translation updated (Ivar Smolin) * Euskera (Basque) translation added (Hizkuntza Politikarako Sailburuordetza and Iñaki Larrañaga Murgoitio) Added: trunk/po/eo.po =================================================================== --- trunk/po/eo.po (rev 0) +++ trunk/po/eo.po 2006-10-24 19:57:20 UTC (rev 17577) @@ -0,0 +1,14251 @@ +# translation of eo.po to Esperanto +# Gaim Esperanto translation +# +# Copyright (C) 2006, Stéphane Fillod <fi...@us...> +# +# Stéphane Fillod <f8...@fr...>, 2006. +# This file is distributed under the same license as the Gaim package. +msgid "" +msgstr "" +"Project-Id-Version: eo\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2006-10-21 14:28+0200\n" +"PO-Revision-Date: 2006-10-22 01:57+0200\n" +"Last-Translator: Stéphane Fillod <f8...@fr...>\n" +"Language-Team: Esperanto <eo...@li...>\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.2\n" + +#: ../gaim.desktop.in.h:1 +msgid "Gaim Internet Messenger" +msgstr "Gaim Interreta Mesaĝilo" + +#: ../gaim.desktop.in.h:2 +msgid "Internet Messenger" +msgstr "Interreta Mesaĝilo" + +#: ../gaim.desktop.in.h:3 +msgid "Send instant messages over multiple protocols" +msgstr "Sendu tujmesaĝojn per pluraj protokoloj" + +#: ../console/gntaccount.c:119 ../console/gntblist.c:250 +#: ../console/gntblist.c:368 ../console/gntblist.c:381 +#: ../console/gntplugin.c:169 ../console/gntplugin.c:214 +#: ../console/gntstatus.c:291 ../console/gntstatus.c:299 +#: ../libgaim/protocols/jabber/buddy.c:1363 +#: ../libgaim/protocols/jabber/chat.c:677 +#: ../libgaim/protocols/jabber/chat.c:688 +#: ../libgaim/protocols/jabber/jabber.c:1197 +#: ../libgaim/protocols/qq/group_join.c:322 +#: ../libgaim/protocols/silc/ops.c:1449 +msgid "Error" +msgstr "Eraro" + +#: ../console/gntaccount.c:119 +msgid "Account was not added" +msgstr "Konto ne estis aldonita" + +#: ../console/gntaccount.c:120 +msgid "Screenname of an account must be non-empty." +msgstr "Ekrannomo de konto ne devas esti malplena." + +#: ../console/gntaccount.c:423 ../gtk/gtkaccount.c:558 +msgid "New mail notifications" +msgstr "Nova retpoŝto avizoj" + +#: ../console/gntaccount.c:433 ../gtk/gtkaccount.c:487 +msgid "Remember password" +msgstr "Memoru pasvorton" + +#: ../console/gntaccount.c:474 ../gtk/gtkaccount.c:1400 ../gtk/gtkblist.c:3777 +msgid "Modify Account" +msgstr "Ŝanĝu Konton" + +#: ../console/gntaccount.c:474 +msgid "New Account" +msgstr "Nova Konto" + +#: ../console/gntaccount.c:500 ../gtk/gtkaccount.c:399 ../gtk/gtkft.c:695 +msgid "Protocol:" +msgstr "Protokolo:" + +#: ../console/gntaccount.c:508 ../gtk/gtkaccount.c:404 ../gtk/gtkblist.c:4920 +#: ../gtk/plugins/gevolution/new_person_dialog.c:295 +msgid "Screen name:" +msgstr "Ekrannomo:" + +#: ../console/gntaccount.c:521 ../gtk/gtkaccount.c:478 +msgid "Password:" +msgstr "Pasvorton:" + +#: ../console/gntaccount.c:531 ../gtk/gtkblist.c:4941 ../gtk/gtkblist.c:5306 +msgid "Alias:" +msgstr "Alinomo:" + +#. Cancel +#: ../console/gntaccount.c:554 ../console/gntaccount.c:615 +#: ../console/gntaccount.c:834 ../console/gntblist.c:291 +#: ../console/gntblist.c:358 ../console/gntblist.c:391 +#: ../console/gntblist.c:712 ../console/gntblist.c:893 +#: ../console/gntblist.c:984 ../console/gntprefs.c:224 +#: ../console/gntstatus.c:139 ../console/gntstatus.c:471 +#: ../console/gntstatus.c:596 ../gtk/gtkaccount.c:1833 +#: ../gtk/gtkaccount.c:2303 ../gtk/gtkblist.c:5362 ../gtk/gtkdialogs.c:668 +#: ../gtk/gtkdialogs.c:805 ../gtk/gtkdialogs.c:896 ../gtk/gtkdialogs.c:915 +#: ../gtk/gtkdialogs.c:937 ../gtk/gtkdialogs.c:957 ../gtk/gtkdialogs.c:1001 +#: ../gtk/gtkdialogs.c:1039 ../gtk/gtkdialogs.c:1093 ../gtk/gtkdialogs.c:1130 +#: ../gtk/gtkdialogs.c:1155 ../gtk/gtkimhtmltoolbar.c:419 +#: ../gtk/gtkplugin.c:296 ../gtk/gtkpounce.c:1088 ../gtk/gtkprivacy.c:566 +#: ../gtk/gtkprivacy.c:579 ../gtk/gtkprivacy.c:604 ../gtk/gtkprivacy.c:615 +#: ../gtk/gtkrequest.c:270 ../gtk/gtksavedstatuses.c:296 +#: ../libgaim/account.c:964 ../libgaim/account.c:1135 +#: ../libgaim/account.c:1169 ../libgaim/conversation.c:1164 +#: ../libgaim/protocols/gg/gg.c:498 ../libgaim/protocols/gg/gg.c:656 +#: ../libgaim/protocols/gg/gg.c:792 ../libgaim/protocols/gg/gg.c:871 +#: ../libgaim/protocols/jabber/buddy.c:588 +#: ../libgaim/protocols/jabber/buddy.c:1725 +#: ../libgaim/protocols/jabber/buddy.c:1759 +#: ../libgaim/protocols/jabber/chat.c:780 +#: ../libgaim/protocols/jabber/jabber.c:854 +#: ../libgaim/protocols/jabber/jabber.c:1352 +#: ../libgaim/protocols/jabber/xdata.c:338 ../libgaim/protocols/msn/msn.c:251 +#: ../libgaim/protocols/msn/msn.c:266 ../libgaim/protocols/msn/msn.c:281 +#: ../libgaim/protocols/msn/msn.c:296 ../libgaim/protocols/msn/msn.c:313 +#: ../libgaim/protocols/oscar/oscar.c:1387 +#: ../libgaim/protocols/oscar/oscar.c:2151 +#: ../libgaim/protocols/oscar/oscar.c:2190 +#: ../libgaim/protocols/oscar/oscar.c:2238 +#: ../libgaim/protocols/oscar/oscar.c:5732 +#: ../libgaim/protocols/oscar/oscar.c:5784 +#: ../libgaim/protocols/oscar/oscar.c:5936 +#: ../libgaim/protocols/oscar/oscar.c:5961 +#: ../libgaim/protocols/oscar/oscar.c:6017 +#: ../libgaim/protocols/oscar/oscar.c:6086 +#: ../libgaim/protocols/oscar/peer.c:991 +#: ../libgaim/protocols/qq/buddy_info.c:480 +#: ../libgaim/protocols/qq/buddy_opt.c:210 +#: ../libgaim/protocols/qq/buddy_opt.c:400 ../libgaim/protocols/qq/group.c:122 +#: ../libgaim/protocols/qq/group_join.c:136 +#: ../libgaim/protocols/qq/group_join.c:357 +#: ../libgaim/protocols/qq/group_opt.c:140 +#: ../libgaim/protocols/qq/group_opt.c:390 ../libgaim/protocols/qq/qq.c:459 +#: ../libgaim/protocols/qq/sendqueue.c:201 +#: ../libgaim/protocols/qq/sys_msg.c:102 ../libgaim/protocols/qq/sys_msg.c:157 +#: ../libgaim/protocols/qq/sys_msg.c:245 +#: ../libgaim/protocols/sametime/sametime.c:3364 +#: ../libgaim/protocols/sametime/sametime.c:3449 +#: ../libgaim/protocols/sametime/sametime.c:3619 +#: ../libgaim/protocols/sametime/sametime.c:5320 +#: ../libgaim/protocols/sametime/sametime.c:5409 +#: ../libgaim/protocols/sametime/sametime.c:5533 +#: ../libgaim/protocols/silc/buddy.c:467 +#: ../libgaim/protocols/silc/buddy.c:1078 +#: ../libgaim/protocols/silc/buddy.c:1183 ../libgaim/protocols/silc/chat.c:597 +#: ../libgaim/protocols/silc/chat.c:726 ../libgaim/protocols/silc/ops.c:1910 +#: ../libgaim/protocols/silc/silc.c:754 ../libgaim/protocols/silc/silc.c:959 +#: ../libgaim/protocols/yahoo/yahoo.c:3214 +#: ../libgaim/protocols/yahoo/yahoo.c:3223 ../libgaim/request.h:1344 +#: ../libgaim/request.h:1354 +msgid "Cancel" +msgstr "Rezignu" + +#. Save +#: ../console/gntaccount.c:558 ../console/gntprefs.c:224 +#: ../console/gntstatus.c:474 ../console/gntstatus.c:584 ../gtk/gtkdebug.c:762 +#: ../gtk/gtkrequest.c:276 ../libgaim/account.c:1168 +#: ../libgaim/protocols/jabber/buddy.c:587 +msgid "Save" +msgstr "Konservu" + +#: ../console/gntaccount.c:610 ../gtk/gtkaccount.c:1827 +#: ../gtk/gtksavedstatuses.c:293 +#, c-format +msgid "Are you sure you want to delete %s?" +msgstr "Ĉu vi certas vi volas forigi %s-n?" + +#. Close any other opened delete window +#: ../console/gntaccount.c:614 +msgid "Delete Account" +msgstr "Forigu Konton" + +#: ../console/gntaccount.c:615 ../console/gntaccount.c:681 +#: ../console/gntstatus.c:139 ../console/gntstatus.c:201 +#: ../gtk/gtkaccount.c:1832 ../gtk/gtkpounce.c:1087 ../gtk/gtkrequest.c:273 +#: ../gtk/gtksavedstatuses.c:295 +msgid "Delete" +msgstr "Forigu" + +#: ../console/gntaccount.c:644 ../console/gntblist.c:1780 +#: ../console/gntui.c:70 ../gtk/gtkaccount.c:2135 ../gtk/gtkdocklet.c:493 +msgid "Accounts" +msgstr "Kontoj" + +#: ../console/gntaccount.c:650 +msgid "You can enable/disable accounts from the following list." +msgstr "Vi povas ŝalti/malŝalti kontojn de la jena listo." + +#: ../console/gntaccount.c:673 ../console/gntaccount.c:833 +#: ../console/gntblist.c:291 ../console/gntblist.c:358 +#: ../console/gntblist.c:391 ../console/gntnotify.c:306 +#: ../console/gntstatus.c:191 ../gtk/gtkaccount.c:2302 ../gtk/gtkblist.c:5361 +#: ../gtk/gtkconv.c:1632 ../gtk/gtkrequest.c:274 +#: ../libgaim/protocols/gg/gg.c:870 ../libgaim/protocols/oscar/oscar.c:2429 +#: ../libgaim/protocols/qq/sys_msg.c:102 ../libgaim/protocols/qq/sys_msg.c:157 +#: ../libgaim/protocols/qq/sys_msg.c:245 +#: ../libgaim/protocols/sametime/sametime.c:5408 +#: ../libgaim/protocols/silc/chat.c:596 +msgid "Add" +msgstr "Aldonu" + +#: ../console/gntaccount.c:677 +msgid "Modify" +msgstr "Ŝanĝu" + +#: ../console/gntaccount.c:758 ../gtk/gtkaccount.c:2251 +#, c-format +msgid "%s%s%s%s has made %s his or her buddy%s%s" +msgstr "%s%s%s%s faris %s-n sia kunul%s%s" + +#: ../console/gntaccount.c:831 ../gtk/gtkaccount.c:2300 +msgid "Add buddy to your list?" +msgstr "Aldonu kunulon al via listo?" + +#: ../console/gntblist.c:242 +msgid "You must provide a screename for the buddy." +msgstr "Vi devas enigi ekrannomon por la kunul." + +#: ../console/gntblist.c:244 +msgid "You must provide a group." +msgstr "Vi devas enigi grupon." + +#: ../console/gntblist.c:246 +msgid "You must select an account." +msgstr "Vi devas elekti konton." + +#: ../console/gntblist.c:250 +msgid "Error adding buddy" +msgstr "Eraro aldonante kunul" + +#: ../console/gntblist.c:275 ../gtk/gtkaccount.c:1896 +#: ../gtk/gtksavedstatuses.c:893 ../libgaim/protocols/oscar/oscar.c:2803 +msgid "Screen Name" +msgstr "Ekranonomo" + +#: ../console/gntblist.c:278 ../console/gntblist.c:350 ../gtk/gtkdialogs.c:914 +#: ../gtk/gtkdialogs.c:936 ../gtk/gtkdialogs.c:956 ../gtk/gtkrequest.c:277 +#: ../libgaim/protocols/silc/chat.c:587 +msgid "Alias" +msgstr "Alinomo" + +#: ../console/gntblist.c:281 ../console/gntblist.c:353 +msgid "Group" +msgstr "Grupo" + +#: ../console/gntblist.c:284 ../console/gntblist.c:341 +#: ../console/gntnotify.c:155 ../console/gntstatus.c:562 +#: ../gtk/gtknotify.c:402 ../gtk/gtkpounce.c:1255 +#: ../gtk/plugins/gevolution/gevolution.c:450 ../libgaim/plugins/idle.c:153 +#: ../libgaim/plugins/idle.c:189 +msgid "Account" +msgstr "Konto" + +#: ../console/gntblist.c:290 ../console/gntblist.c:752 ../gtk/gtkblist.c:4874 +#: ../gtk/plugins/gevolution/add_buddy_dialog.c:447 +#: ../libgaim/protocols/silc/buddy.c:736 +#: ../libgaim/protocols/silc/buddy.c:1030 +#: ../libgaim/protocols/silc/buddy.c:1075 +#: ../libgaim/protocols/silc/buddy.c:1174 +#: ../libgaim/protocols/yahoo/yahoo.c:3128 +msgid "Add Buddy" +msgstr "Aldonu Kunulon" + +#: ../console/gntblist.c:290 +msgid "Please enter buddy information." +msgstr "B.v. enigi kunul informon." + +#: ../console/gntblist.c:313 ../libgaim/blist.c:1195 +msgid "Chats" +msgstr "Babilejoj" + +#. Extract their Name and put it in +#. Contact Info +#. Personal +#. Business +#: ../console/gntblist.c:347 ../gtk/gtkplugin.c:589 ../gtk/gtkroomlist.c:600 +#: ../gtk/plugins/gevolution/add_buddy_dialog.c:132 +#: ../gtk/plugins/gevolution/assoc-buddy.c:123 +#: ../libgaim/protocols/jabber/jabber.c:785 +#: ../libgaim/protocols/msn/msn.c:1533 ../libgaim/protocols/msn/msn.c:1586 +#: ../libgaim/protocols/msn/msn.c:1608 ../libgaim/protocols/qq/buddy_info.c:42 +msgid "Name" +msgstr "Nomo" + +#: ../console/gntblist.c:356 ../console/gntblist.c:754 ../gtk/gtkblist.c:5252 +msgid "Add Chat" +msgstr "Aldonu Babilejon" + +#: ../console/gntblist.c:357 +msgid "You can edit more information from the context menu later." +msgstr "Vi povas redakti plian informon per la ĉirkaŭteksto menuo poste." + +#: ../console/gntblist.c:368 ../console/gntblist.c:381 +msgid "Error adding group" +msgstr "Eraro aldonante grupo" + +#: ../console/gntblist.c:369 +msgid "You must give a name for the group to add." +msgstr "Vi devas enigi nomon de la grupo aldonenda." + +#: ../console/gntblist.c:382 +msgid "A group with the name already exists." +msgstr "Grupo samnomita jam ekzistas." + +#: ../console/gntblist.c:389 ../console/gntblist.c:756 ../gtk/gtkblist.c:5358 +#: ../libgaim/protocols/sametime/sametime.c:5319 +#: ../libgaim/protocols/sametime/sametime.c:5406 +msgid "Add Group" +msgstr "Aldonu Grupon" + +#: ../console/gntblist.c:389 +msgid "Enter the name of the group" +msgstr "B.v. enigi la nomon de la grupo" + +#: ../console/gntblist.c:711 +msgid "Edit Chat" +msgstr "Redaktu Babilejon" + +#: ../console/gntblist.c:711 +msgid "Please Update the necessary fields." +msgstr "B.v. Aktualigi la necesajn kampojn." + +#: ../console/gntblist.c:712 ../console/gntstatus.c:196 +msgid "Edit" +msgstr "Redaktu" + +#: ../console/gntblist.c:718 +msgid "Auto-join" +msgstr "Aŭtomate-aliĝu" + +#: ../console/gntblist.c:726 +msgid "Edit Settings" +msgstr "Agordu" + +#: ../console/gntblist.c:774 ../libgaim/protocols/silc/chat.c:878 +msgid "Get Info" +msgstr "Ricevu Informon" + +#: ../console/gntblist.c:779 +msgid "Add Buddy Pounce" +msgstr "Aldonu Kunul Atentigon" + +#: ../console/gntblist.c:786 ../gtk/gtkconv.c:1580 +#: ../libgaim/protocols/oscar/oscar.c:615 +msgid "Send File" +msgstr "Sendu Dosieron" + +#: ../console/gntblist.c:790 +msgid "View Log" +msgstr "Montru Protokolon" + +#: ../console/gntblist.c:889 +#, c-format +msgid "Please enter the new name for %s" +msgstr "B.v. enigi la novan nomon por %s" + +#: ../console/gntblist.c:891 ../console/gntblist.c:892 +#: ../console/gntblist.c:1061 +msgid "Rename" +msgstr "Alinomu" + +#: ../console/gntblist.c:891 +msgid "Enter empty string to reset the name." +msgstr "Enigu malplenan ĉenon por forviŝi la nomon." + +#: ../console/gntblist.c:964 +msgid "Removing this contact will also remove all the buddies in the contact" +msgstr "Forigi tiun kontakton ankaŭ forigos ĉiujn kunulojn en la kontakto" + +#: ../console/gntblist.c:972 +msgid "Removing this group will also remove all the buddies in the group" +msgstr "Forigi tiun grupon ankaŭ forigos ĉiujn kunulojn en la grupo" + +#: ../console/gntblist.c:977 +#, c-format +msgid "Are you sure you want to remove %s?" +msgstr "Ĉu vi certas vi volas forigi %s?" + +#. XXX: anything to do with the returned ui-handle? +#: ../console/gntblist.c:980 +msgid "Confirm Remove" +msgstr "Konfirmu Forigon" + +#: ../console/gntblist.c:983 ../console/gntblist.c:1063 ../gtk/gtkblist.c:1039 +#: ../gtk/gtkconv.c:1629 ../gtk/gtkrequest.c:275 +msgid "Remove" +msgstr "Forigu" + +#. Buddy List +#: ../console/gntblist.c:1038 ../console/gntblist.c:1888 +#: ../console/gntprefs.c:219 ../console/gntui.c:71 ../gtk/gtkblist.c:3894 +#: ../gtk/plugins/win32/winprefs/winprefs.c:327 +msgid "Buddy List" +msgstr "Kunul Listo" + +#: ../console/gntblist.c:1067 +msgid "Place tagged" +msgstr "Loko etikedita" + +#: ../console/gntblist.c:1070 +msgid "Tag" +msgstr "Etikedo" + +#: ../console/gntblist.c:1105 ../console/gntblist.c:1209 +#, c-format +msgid "Account: %s (%s)" +msgstr "Konto: %s (%s)" + +#: ../console/gntblist.c:1130 +#, c-format +msgid "" +"\n" +"Idle: %s" +msgstr "" +"\n" +"Senfara: %s" + +#: ../console/gntblist.c:1188 +#, c-format +msgid "Nickname: %s\n" +msgstr "Karesnomo: %s\n" + +#: ../console/gntblist.c:1200 +#, c-format +msgid "" +"Online: %d\n" +"Total: %d" +msgstr "" +"Konektita: %d\n" +"Entute: %d" + +#: ../console/gntblist.c:1221 +#, c-format +msgid "" +"\n" +"Last Seen: %s ago" +msgstr "" +"\n" +"Laste vidita: antaŭ %s" + +#: ../console/gntblist.c:1451 ../gtk/gtkdocklet.c:441 +#: ../gtk/gtkstatusbox.c:984 +msgid "New..." +msgstr "Nova..." + +#: ../console/gntblist.c:1458 ../gtk/gtkdocklet.c:442 +#: ../gtk/gtkstatusbox.c:985 +msgid "Saved..." +msgstr "Konservita..." + +#. Create the "Options" frame. +#: ../console/gntblist.c:1850 ../gtk/gtkpounce.c:766 +msgid "Options" +msgstr "Opcioj" + +#: ../console/gntblist.c:1856 +msgid "Toggle offline buddies" +msgstr "Inversigi senkonektajn kunulojn" + +#: ../console/gntblist.c:1860 +msgid "Sort by status" +msgstr "Ordigi laŭ stato" + +#: ../console/gntblist.c:1864 +msgid "Sort alphabetically" +msgstr "Ordigi alfabete" + +#: ../console/gntblist.c:1868 +msgid "Sort by log size" +msgstr "Oridgi laŭ protokolo grandeco" + +#: ../console/gntconn.c:36 +#, c-format +msgid "%s (%s)" +msgstr "%s (%s)" + +#: ../console/gntconn.c:39 +#, c-format +msgid "%s disconnected." +msgstr "%s malkontaktita." + +#: ../console/gntconn.c:40 +#, c-format +msgid "" +"%s was disconnected due to the following error:\n" +"%s" +msgstr "" + +#: ../console/gntconn.c:43 ../gtk/gtkblist.c:3774 ../libgaim/account.c:991 +#: ../libgaim/connection.c:106 +msgid "Connection Error" +msgstr "Konekteraro" + +#: ../console/gntconv.c:71 ../gtk/gtkconv.c:484 +msgid "No such command." +msgstr "" + +#: ../console/gntconv.c:75 ../gtk/gtkconv.c:491 +msgid "Syntax Error: You typed the wrong number of arguments to that command." +msgstr "" + +#: ../console/gntconv.c:80 ../gtk/gtkconv.c:496 +msgid "Your command failed for an unknown reason." +msgstr "" + +#: ../console/gntconv.c:85 ../gtk/gtkconv.c:502 +msgid "That command only works in chats, not IMs." +msgstr "" + +#: ../console/gntconv.c:88 ../gtk/gtkconv.c:505 +msgid "That command only works in IMs, not chats." +msgstr "" + +#: ../console/gntconv.c:92 ../gtk/gtkconv.c:509 +msgid "That command doesn't work on this protocol." +msgstr "" + +#: ../console/gntconv.c:99 +msgid "Commands are not supported yet. Message was NOT sent." +msgstr "" + +#: ../console/gntconv.c:193 +#, c-format +msgid "%s (%s -- %s)" +msgstr "%s (%s -- %s)" + +#: ../console/gntconv.c:214 +#, c-format +msgid "%s [%s]" +msgstr "%s [%s]" + +#: ../console/gntconv.c:344 +msgid "<AUTO-REPLY> " +msgstr "<AŬTO-RESPONDO> " + +#. Print the list of users in the room +#: ../console/gntconv.c:438 +msgid "List of users:\n" +msgstr "Uzantoj Listo:\n" + +#: ../console/gntconv.c:562 ../gtk/gtkconv.c:378 +msgid "Supported debug options are: version" +msgstr "Subtenitaj sencimigopcioj estas: versio" + +#: ../console/gntconv.c:597 ../gtk/gtkconv.c:414 +msgid "No such command (in this context)." +msgstr "" + +#: ../console/gntconv.c:600 ../gtk/gtkconv.c:417 +msgid "" +"Use \"/help <command>\" for help on a specific command.\n" +"The following commands are available in this context:\n" +msgstr "" + +#: ../console/gntconv.c:639 ../gtk/gtkconv.c:6645 +msgid "" +"say <message>: Send a message normally as if you weren't using a " +"command." +msgstr "" + +#: ../console/gntconv.c:642 ../gtk/gtkconv.c:6648 +msgid "me <action>: Send an IRC style action to a buddy or chat." +msgstr "" + +#: ../console/gntconv.c:645 ../gtk/gtkconv.c:6651 +msgid "" +"debug <option>: Send various debug information to the current " +"conversation." +msgstr "" + +#: ../console/gntconv.c:648 ../gtk/gtkconv.c:6654 +msgid "clear: Clears the conversation scrollback." +msgstr "" + +#: ../console/gntconv.c:651 ../gtk/gtkconv.c:6657 +msgid "help <command>: Help on a specific command." +msgstr "" + +#: ../console/gntconv.c:656 +msgid "plugins: Show the plugins window." +msgstr "" + +#: ../console/gntconv.c:659 +msgid "buddylist: Show the buddylist." +msgstr "" + +#: ../console/gntconv.c:662 +msgid "accounts: Show the accounts window." +msgstr "" + +#: ../console/gntconv.c:665 +msgid "debugwin: Show the debug window." +msgstr "" + +#: ../console/gntconv.c:668 +msgid "prefs: Show the preference window." +msgstr "" + +#: ../console/gntconv.c:671 +msgid "statuses: Show the savedstatuses window." +msgstr "" + +#: ../console/gntdebug.c:203 ../console/gntui.c:72 ../gtk/gtkdebug.c:708 +msgid "Debug Window" +msgstr "Sencimigo Fenestro" + +#. XXX: Setting the GROW_Y for the following widgets don't make sense. But right now +#. * it's necessary to make the width of the debug window resizable ... like I said, +#. * it doesn't make sense. The bug is likely in the packing in gntbox.c. +#. +#: ../console/gntdebug.c:220 ../gtk/gtkdebug.c:767 +msgid "Clear" +msgstr "Forviŝu" + +#: ../console/gntdebug.c:225 ../gtk/gtkdebug.c:776 +msgid "Pause" +msgstr "Paŭzu" + +#: ../console/gntdebug.c:230 ../gtk/gtkdebug.c:783 ../gtk/gtkdebug.c:784 +msgid "Timestamps" +msgstr "Tempomarkojn" + +#: ../console/gntgaim.c:166 +#, c-format +msgid "%s. Try `%s -h' for more information.\n" +msgstr "%s. Provu `%s -h' por plia informo.\n" + +#: ../console/gntgaim.c:168 +#, c-format +msgid "" +"%s\n" +"Usage: %s [OPTION]...\n" +"\n" +" -c, --config=DIR use DIR for config files\n" +" -d, --debug print debugging messages to stdout\n" +" -h, --help display this help and exit\n" +" -n, --nologin don't automatically login\n" +" -v, --version display the current version and exit\n" +msgstr "" +"%s\n" +"Uzo: %s [OPCIOJ]...\n" +"\n" +" -c, --config=UJO uzu UJOn por agordo dosieroj\n" +" -d, --debug montru sencimigajn mesaĝojn al stdout\n" +" -h, --help vidigu tiun helpon kaj finu\n" +" -n, --nologin ne aŭtomate ensalutu\n" +" -v, --version vidigu la aktualan version kaj finu\n" + +#. * +#. * A wrapper for gaim_request_action() that uses @c OK and @c Cancel buttons. +#. +#: ../console/gntnotify.c:79 ../gtk/gtkblist.c:3776 ../gtk/gtkdialogs.c:667 +#: ../gtk/gtkdialogs.c:804 ../gtk/gtkdialogs.c:895 ../gtk/gtkrequest.c:269 +#: ../libgaim/account.c:963 ../libgaim/account.c:1134 +#: ../libgaim/protocols/gg/gg.c:497 ../libgaim/protocols/gg/gg.c:655 +#: ../libgaim/protocols/gg/gg.c:791 ../libgaim/protocols/jabber/jabber.c:1351 +#: ../libgaim/protocols/jabber/xdata.c:337 ../libgaim/protocols/msn/msn.c:250 +#: ../libgaim/protocols/msn/msn.c:265 ../libgaim/protocols/msn/msn.c:280 +#: ../libgaim/protocols/msn/msn.c:295 ../libgaim/protocols/oscar/oscar.c:1386 +#: ../libgaim/protocols/oscar/oscar.c:2150 +#: ../libgaim/protocols/oscar/oscar.c:2237 +#: ../libgaim/protocols/oscar/oscar.c:5731 +#: ../libgaim/protocols/oscar/oscar.c:5935 +#: ../libgaim/protocols/oscar/oscar.c:5960 +#: ../libgaim/protocols/oscar/oscar.c:6016 +#: ../libgaim/protocols/silc/buddy.c:466 +#: ../libgaim/protocols/silc/buddy.c:1182 ../libgaim/protocols/silc/chat.c:424 +#: ../libgaim/protocols/silc/chat.c:462 ../libgaim/protocols/silc/chat.c:725 +#: ../libgaim/protocols/silc/ops.c:1297 ../libgaim/protocols/silc/ops.c:1909 +#: ../libgaim/protocols/silc/silc.c:753 +#: ../libgaim/protocols/yahoo/yahoo.c:3213 +#: ../libgaim/protocols/yahoo/yahoo.c:3222 ../libgaim/request.h:1344 +msgid "OK" +msgstr "Daŭrigu" + +#: ../console/gntnotify.c:146 +msgid "Emails" +msgstr "Retadresoj" + +#: ../console/gntnotify.c:152 ../console/gntnotify.c:206 +msgid "You have mail!" +msgstr "Vi ricevis retmesaĝon!" + +#: ../console/gntnotify.c:155 ../gtk/gtknotify.c:414 +#: ../libgaim/protocols/jabber/jabber.c:1147 +msgid "From" +msgstr "De" + +#: ../console/gntnotify.c:155 ../gtk/gtknotify.c:423 +msgid "Subject" +msgstr "Subjekto" + +#: ../console/gntnotify.c:163 ../console/gntplugin.c:193 +#: ../console/gntplugin.c:274 ../console/gntstatus.c:206 +#: ../gtk/gtkrequest.c:272 ../libgaim/protocols/msn/msn.c:357 +#: ../libgaim/protocols/silc/util.c:377 +msgid "Close" +msgstr "Fermu" + +#: ../console/gntnotify.c:182 +#, c-format +msgid "%s (%s) has %d new message." +msgid_plural "%s (%s) has %d new messages." +msgstr[0] "%s (%s) havas %d novan mesaĝon." +msgstr[1] "%s (%s) havas %d novajn mesaĝojn." + +#: ../console/gntnotify.c:206 ../gtk/gtknotify.c:332 +msgid "New Mail" +msgstr "Nova Retmesaĝo" + +#: ../console/gntnotify.c:229 ../gtk/gtknotify.c:849 +#: ../libgaim/protocols/oscar/oscar.c:2610 +#, c-format +msgid "Info for %s" +msgstr "Informo pri %s" + +#: ../console/gntnotify.c:230 ../gtk/gtknotify.c:850 +#: ../libgaim/protocols/toc/toc.c:476 +msgid "Buddy Information" +msgstr "Kunul Informo" + +#: ../console/gntnotify.c:303 +msgid "Continue" +msgstr "Daŭrigu" + +#: ../console/gntnotify.c:309 ../gtk/gtkconv.c:1608 ../gtk/gtkdebug.c:862 +msgid "Info" +msgstr "Informo" + +#: ../console/gntnotify.c:312 ../gtk/gtkconv.c:1569 +msgid "IM" +msgstr "TM" + +#: ../console/gntnotify.c:315 +msgid "Join" +msgstr "Aliĝu" + +#: ../console/gntnotify.c:318 ../libgaim/protocols/sametime/sametime.c:3448 +msgid "Invite" +msgstr "Invitu" + +#: ../console/gntnotify.c:321 +msgid "(none)" +msgstr "(neniu)" + +#: ../console/gntplugin.c:117 +#, c-format +msgid "" +"Name: %s\n" +"Version: %s\n" +"Description: %s\n" +"Author: %s\n" +"Website: %s\n" +"Filename: %s\n" +msgstr "" +"Nomo: %s\n" +"Versio: %s\n" +"Priskribo: %s\n" +"Aŭtoro: %s\n" +"Retejo: %s\n" +"Dosiernomo: %s\n" + +#: ../console/gntplugin.c:170 +msgid "Plugin need to be loaded before you can configure it." +msgstr "" + +#: ../console/gntplugin.c:208 +msgid "..." +msgstr "..." + +#: ../console/gntplugin.c:209 +msgid "Still need to do something about this." +msgstr "" + +#: ../console/gntplugin.c:215 +msgid "No configuration options for this plugin." +msgstr "Neniuj agordaj opcioj por tiu kromaĵo." + +#: ../console/gntplugin.c:231 ../console/gntui.c:73 ../gtk/gtkdocklet.c:494 +#: ../gtk/gtkplugin.c:538 +msgid "Plugins" +msgstr "Kromaĵoj" + +#: ../console/gntplugin.c:236 +msgid "You can (un)load plugins from the following list." +msgstr "" + +#: ../console/gntplugin.c:279 +msgid "Configure Plugin" +msgstr "Agordu Kromaĵon" + +#: ../console/gntprefs.c:122 +msgid "Show Idle Time" +msgstr "Montru Senfaran Tempon" + +#: ../console/gntprefs.c:123 +msgid "Show Offline Buddies" +msgstr "Montru Senkonektajn Kunulojn" + +#: ../console/gntprefs.c:129 +msgid "Show Timestamps" +msgstr "Montru Tempomarkojn" + +#: ../console/gntprefs.c:130 +msgid "Notify buddies when you are typing" +msgstr "Avizu kunulojn kiam vi estas tajpante" + +#: ../console/gntprefs.c:136 +msgid "Log format" +msgstr "Protokolo formato" + +#: ../console/gntprefs.c:137 +msgid "Log IMs" +msgstr "Protokolu TM-ojn" + +#: ../console/gntprefs.c:138 +msgid "Log chats" +msgstr "Protokolu babilojn" + +#: ../console/gntprefs.c:139 +msgid "Log status change events" +msgstr "Protokolu stato ŝanĝeventojn" + +#. Conversations +#: ../console/gntprefs.c:220 ../gtk/gtkprefs.c:822 ../gtk/gtkprefs.c:1884 +#: ../gtk/plugins/win32/winprefs/winprefs.c:341 +msgid "Conversations" +msgstr "Konversacioj" + +#: ../console/gntprefs.c:221 ../gtk/gtkprefs.c:1314 ../gtk/gtkprefs.c:1895 +msgid "Logging" +msgstr "Protokolado" + +#: ../console/gntprefs.c:223 ../console/gntui.c:74 ../gtk/gtkdocklet.c:495 +#: ../gtk/gtkprefs.c:1920 +msgid "Preferences" +msgstr "Agordo" + +#: ../console/gntrequest.c:495 +msgid "Not implemented yet." +msgstr "Ne jam programita." + +#: ../console/gntstatus.c:135 +#, c-format +msgid "Are you sure you want to delete \"%s\"" +msgstr "Ĉu vi certas vi volas forigi \"%s\"" + +#: ../console/gntstatus.c:138 +msgid "Delete Status" +msgstr "Forigu Staton" + +#: ../console/gntstatus.c:167 ../gtk/gtksavedstatuses.c:526 +msgid "Saved Statuses" +msgstr "Konservitaj Statoj" + +#: ../console/gntstatus.c:174 ../console/gntstatus.c:525 +#: ../gtk/gtksavedstatuses.c:433 ../libgaim/protocols/jabber/buddy.c:283 +#: ../libgaim/protocols/jabber/buddy.c:917 +#: ../libgaim/protocols/novell/novell.c:1484 +msgid "Title" +msgstr "Titolon" + +#: ../console/gntstatus.c:174 ../gtk/gtksavedstatuses.c:448 +msgid "Type" +msgstr "Tipo" + +#: ../console/gntstatus.c:174 ../console/gntstatus.c:550 +#: ../console/gntstatus.c:562 ../gtk/gtksavedstatuses.c:459 +#: ../gtk/gtksavedstatuses.c:923 ../libgaim/protocols/bonjour/bonjour.c:256 +#: ../libgaim/protocols/bonjour/bonjour.c:263 +#: ../libgaim/protocols/gg/gg.c:1592 ../libgaim/protocols/gg/gg.c:1602 +#: ../libgaim/protocols/gg/gg.c:1608 ../libgaim/protocols/gg/gg.c:1617 +#: ../libgaim/protocols/gg/gg.c:1622 ../libgaim/protocols/irc/irc.c:244 +#: ../libgaim/protocols/jabber/jabber.c:1214 +#: ../libgaim/protocols/jabber/jabber.c:1224 +#: ../libgaim/protocols/jabber/jabber.c:1234 +#: ../libgaim/protocols/jabber/jabber.c:1244 +#: ../libgaim/protocols/jabber/jabber.c:1254 +#: ../libgaim/protocols/jabber/jabber.c:1266 +#: ../libgaim/protocols/novell/novell.c:2876 +#: ../libgaim/protocols/novell/novell.c:2982 +#: ../libgaim/protocols/novell/novell.c:2988 +#: ../libgaim/protocols/novell/novell.c:2994 +#: ../libgaim/protocols/oscar/oscar.c:5395 +#: ../libgaim/protocols/oscar/oscar.c:5410 +#: ../libgaim/protocols/oscar/oscar.c:5415 +#: ../libgaim/protocols/oscar/oscar.c:5623 +#: ../libgaim/protocols/oscar/oscar.c:5635 +#: ../libgaim/protocols/oscar/oscar.c:5648 +#: ../libgaim/protocols/oscar/oscar.c:5655 +#: ../libgaim/protocols/oscar/oscar.c:5662 +#: ../libgaim/protocols/sametime/sametime.c:3262 +#: ../libgaim/protocols/sametime/sametime.c:3268 +#: ../libgaim/protocols/sametime/sametime.c:3274 +#: ../libgaim/protocols/sametime/sametime.c:3353 +#: ../libgaim/protocols/silc/buddy.c:1544 +#: ../libgaim/protocols/simple/simple.c:246 +#: ../libgaim/protocols/yahoo/yahoo.c:3456 +#: ../libgaim/protocols/yahoo/yahoo.c:3462 +#: ../libgaim/protocols/zephyr/zephyr.c:2333 +msgid "Message" +msgstr "Mesaĝo" + +#. Use +#: ../console/gntstatus.c:186 ../console/gntstatus.c:579 +msgid "Use" +msgstr "Uzu" + +#: ../console/gntstatus.c:291 +msgid "Invalid title" +msgstr "Malvalida titolo" + +#: ../console/gntstatus.c:292 +msgid "Please enter a non-empty title for the status." +msgstr "B.v. enigi malmalplenan titolon por la stato." + +#: ../console/gntstatus.c:299 +msgid "Duplicate title" +msgstr "Duplikata titolo" + +#: ../console/gntstatus.c:300 +msgid "Please enter a different title for the status." +msgstr "B.v. enigi malsimilan titolon por la stato." + +#: ../console/gntstatus.c:439 +msgid "Substatus" +msgstr "Substato" + +#. Set up stuff for the account box +#: ../console/gntstatus.c:442 ../gtk/gtkblist.c:4968 ../gtk/gtkblist.c:5286 +msgid "Account:" +msgstr "Konto:" + +#: ../console/gntstatus.c:450 ../gtk/gtkft.c:698 +msgid "Status:" +msgstr "Stato" + +#: ../console/gntstatus.c:465 +msgid "Message:" +msgstr "Mesaĝo:" + +#: ../console/gntstatus.c:514 +msgid "Edit Status" +msgstr "Redaktu Staton" + +#: ../console/gntstatus.c:533 ../console/gntstatus.c:562 +#: ../gtk/gtksavedstatuses.c:912 ../gtk/gtksavedstatuses.c:1059 +#: ../libgaim/protocols/gg/gg.c:1024 ../libgaim/protocols/gg/gg.c:1575 +#: ../libgaim/protocols/gg/gg.c:1579 ../libgaim/protocols/jabber/buddy.c:623 +#: ../libgaim/protocols/jabber/buddy.c:630 +#: ../libgaim/protocols/jabber/buddy.c:658 +#: ../libgaim/protocols/jabber/jabber.c:1185 +#: ../libgaim/protocols/msn/msn.c:546 +#: ../libgaim/protocols/novell/novell.c:2875 +#: ../libgaim/protocols/novell/novell.c:2879 +#: ../libgaim/protocols/oscar/oscar.c:759 +#: ../libgaim/protocols/oscar/oscar.c:765 +#: ../libgaim/protocols/oscar/oscar.c:768 +#: ../libgaim/protocols/yahoo/yahoo.c:3032 +msgid "Status" +msgstr "Stato" + +#: ../console/gntstatus.c:556 +msgid "Use different status for following accounts" +msgstr "Uzu malsimilan staton por jenaj kontoj" + +#. Save & Use +#: ../console/gntstatus.c:590 +msgid "Save & Use" +msgstr "Konservu & Uzu" + +#: ../console/gntui.c:75 +msgid "Statuses" +msgstr "Statoj" + +#: ../console/plugins/gntgf.c:209 +#, c-format +msgid "%s just signed on" +msgstr "%s ekensalutis" + +#: ../console/plugins/gntgf.c:216 +#, c-format +msgid "%s just signed off" +msgstr "%s ekmalsalutis" + +#: ../console/plugins/gntgf.c:224 +#, c-format +msgid "%s sent you a message" +msgstr "%s sendis mesaĝon al vi" + +#: ../console/plugins/gntgf.c:243 +#, c-format +msgid "%s said your nick in %s" +msgstr "%s diris vian karesnomon en %s" + +#: ../console/plugins/gntgf.c:245 +#, c-format +msgid "%s sent a message in %s" +msgstr "%s sendis mesaĝon en %s" + +#: ../console/plugins/gntgf.c:283 +msgid "Buddy signs on/off" +msgstr "Kunul en/el-salutas" + +#: ../console/plugins/gntgf.c:284 +msgid "You receive an IM" +msgstr "Vi ricevas TM-on" + +#: ../console/plugins/gntgf.c:285 +msgid "Someone speaks in a chat" +msgstr "Iun babilas en babilejo" + +#: ../console/plugins/gntgf.c:286 +msgid "Someone says your name in a chat" +msgstr "Iun diras vian nomon en babilejo" + +#: ../console/plugins/gntgf.c:314 +msgid "Notify with a toaster when" +msgstr "Avizu per panrostilo kiam" + +#: ../console/plugins/gntgf.c:329 +msgid "Beep too!" +msgstr "Pep ankaŭ!" + +#: ../console/plugins/gntgf.c:335 +msgid "Set URGENT for the terminal window." +msgstr "Difini URĜAN por la terminalfenestro." + +#: ../console/plugins/gntgf.c:355 +msgid "GntGf" +msgstr "GntGf" + +#: ../console/plugins/gntgf.c:357 ../console/plugins/gntgf.c:358 +msgid "Toaster plugin for GntGaim." +msgstr "Panrostilo kromaĵo por GnGaim" + +#: ../console/plugins/gnthistory.c:119 ../gtk/plugins/history.c:120 +#, c-format +msgid "<b>Conversation with %s on %s:</b><br>" +msgstr "<b>Konversacion kun %s ĉe %s:</b><br>" + +#: ../console/plugins/gnthistory.c:140 ../gtk/plugins/history.c:147 +msgid "History Plugin Requires Logging" +msgstr "Historio Kormaĵo postulas Protokoladon" + +#: ../console/plugins/gnthistory.c:141 ../gtk/plugins/history.c:148 +msgid "" +"Logging can be enabled from Tools -> Preferences -> Logging.\n" +"\n" +"Enabling logs for instant messages and/or chats will activate history for " +"the same conversation type(s)." +msgstr "" + +#: ../console/plugins/gnthistory.c:181 +msgid "GntHistory" +msgstr "GntHistorio" + +#: ../console/plugins/gnthistory.c:183 ../gtk/plugins/history.c:190 +msgid "Shows recently logged conversations in new conversations." +msgstr "Montru lastatempe protokolatajn konversaciojn en novajn konversaciojn." + +#: ../console/plugins/gnthistory.c:184 ../gtk/plugins/history.c:191 +msgid "" +"When a new conversation is opened this plugin will insert the last " +"conversation into the current conversation." +msgstr "" +"Kiam nova konversacio estas malfermita, tiu kromaĵo enmetos la lastan " +"konversacion en la aktuala konversacio." + +#: ../console/plugins/lastlog.c:69 +msgid "Lastlog" +msgstr "Lastprotokolo" + +#: ../console/plugins/lastlog.c:99 +msgid "lastlog: Searches for a substring in the backlog." +msgstr "" + +#: ../console/plugins/lastlog.c:121 +msgid "GntLastlog" +msgstr "GntLastlog" + +#: ../console/plugins/lastlog.c:123 ../console/plugins/lastlog.c:124 +msgid "Lastlog plugin for gaim-text." +msgstr "" + +#: ../gtk/eggtrayicon.c:129 +msgid "Orientation" +msgstr "Orientiĝo" + +#: ../gtk/eggtrayicon.c:130 +msgid "The orientation of the tray." +msgstr "La oientiĝo de la pleto." + +#: ../gtk/gaimstock.c:137 +msgid "_Alias" +msgstr "_Alinomo" + +#. join button +#: ../gtk/gaimstock.c:138 ../gtk/gtkblist.c:1120 ../gtk/gtkroomlist.c:285 +#: ../gtk/gtkroomlist.c:442 +msgid "_Join" +msgstr "_Aliĝu" + +#: ../gtk/gaimstock.c:139 +msgid "Close _tabs" +msgstr "Fermu _langetojn" + +#: ../gtk/gaimstock.c:140 ../gtk/gtkblist.c:1004 +msgid "I_M" +msgstr "T_M" + +#: ../gtk/gaimstock.c:141 +msgid "_Get Info" +msgstr "_Ricevu Informon" + +#: ../gtk/gaimstock.c:142 +msgid "_Invite" +msgstr "_Ivitu" + +#: ../gtk/gaimstock.c:143 +msgid "_Modify" +msgstr "Ŝ_anĝu..." + +#: ../gtk/gaimstock.c:144 +msgid "_Open Mail" +msgstr "_Malfermu retmesaĝon" + +#. Pause button +#: ../gtk/gaimstock.c:145 ../gtk/gtkft.c:835 +msgid "_Pause" +msgstr "_Paŭzo" + +#. Build the login options frame. +#: ../gtk/gtkaccount.c:382 +msgid "Login Options" +msgstr "Salutaj Opcioj" + +#: ../gtk/gtkaccount.c:483 +msgid "Local alias:" +msgstr "Loka Alinomo:" + +#. Build the user options frame. +#: ../gtk/gtkaccount.c:545 +msgid "User Options" +msgstr "Uzantoopcioj" + +#. Buddy icon +#: ../gtk/gtkaccount.c:563 +msgid "Use this buddy icon for this account:" +msgstr "Uzu tiun kunul piktogramon por tiu konto:" + +#. Build the protocol options frame. +#: ../gtk/gtkaccount.c:671 +#, c-format +msgid "%s Options" +msgstr "%s Opcioj" + +#: ../gtk/gtkaccount.c:867 +msgid "Use Global Proxy Settings" +msgstr "Uzu Sistemajn Prokurilo-Agordojn" + +#: ../gtk/gtkaccount.c:873 +msgid "No Proxy" +msgstr "Sen Prokurilo" + +#: ../gtk/gtkaccount.c:879 +msgid "HTTP" +msgstr "HTTP" + +#: ../gtk/gtkaccount.c:885 +msgid "SOCKS 4" +msgstr "SOCKS 4" + +#: ../gtk/gtkaccount.c:891 +msgid "SOCKS 5" +msgstr "SOCKS 5" + +#: ../gtk/gtkaccount.c:897 ../gtk/gtkprefs.c:1061 +msgid "Use Environmental Settings" +msgstr "Uzu Mediajn Agordojn" + +#. This is an easter egg. +#. It means one of two things, both intended as humourus: +#. A) your network is really slow and you have nothing better to do than +#. look at butterflies. +#. B)You are looking really closely at something that shouldn't matter. +#: ../gtk/gtkaccount.c:936 +msgid "If you look real closely" +msgstr "Se vi rigardas sufiĉe proksime" + +#. This is an easter egg. See the comment on the previous line in the source. +#: ../gtk/gtkaccount.c:939 +msgid "you can see the butterflies mating" +msgstr "vi povas vidi la Zamenhofan barbon kreski" + +#: ../gtk/gtkaccount.c:960 +msgid "Proxy Options" +msgstr "Prokurilo Opcioj" + +#: ../gtk/gtkaccount.c:974 ../gtk/gtkprefs.c:1055 +msgid "Proxy _type:" +msgstr "Prokurilo _tipo:" + +#: ../gtk/gtkaccount.c:983 ../gtk/gtkprefs.c:1076 +msgid "_Host:" +msgstr "_Retnodo:" + +#: ../gtk/gtkaccount.c:987 ../gtk/gtkprefs.c:1094 +msgid "_Port:" +msgstr "_Pordo:" + +#: ../gtk/gtkaccount.c:995 +msgid "_Username:" +msgstr "_Salutnomo:" + +#: ../gtk/gtkaccount.c:1001 ../gtk/gtkprefs.c:1131 +msgid "Pa_ssword:" +msgstr "Pa_svorto:" + +#: ../gtk/gtkaccount.c:1398 +msgid "Add Account" +msgstr "Aldonu Konton" + +#: ../gtk/gtkaccount.c:1422 +msgid "_Basic" +msgstr "_Baza" + +#: ../gtk/gtkaccount.c:1433 +msgid "_Advanced" +msgstr "_Kroma" + +#. Register button +#: ../gtk/gtkaccount.c:1448 ../libgaim/protocols/jabber/jabber.c:853 +msgid "Register" +msgstr "Registru" + +#: ../gtk/gtkaccount.c:1919 ../gtk/gtkplugin.c:576 +msgid "Enabled" +msgstr "Enŝaltita" + +#: ../gtk/gtkaccount.c:1927 +msgid "Protocol" +msgstr "Protokolo" + +#: ../gtk/gtkblist.c:705 +msgid "Join a Chat" +msgstr "Aliĝu Babilejon" + +#: ../gtk/gtkblist.c:726 +msgid "" +"Please enter the appropriate information about the chat you would like to " +"join.\n" +msgstr "B.v enigi la konvenan informon pri la babilejo kiun vi deziras aliĝi.\n" + +#: ../gtk/gtkblist.c:737 ../gtk/gtkpounce.c:523 ../gtk/gtkroomlist.c:378 +msgid "_Account:" +msgstr "_Konto:" + +#: ../gtk/gtkblist.c:1001 +msgid "Get _Info" +msgstr "Ricevu _Informon" + +#: ../gtk/gtkblist.c:1010 +msgid "_Send File" +msgstr "_Sendu Dosieron" + +#: ../gtk/gtkblist.c:1017 +msgid "Add Buddy _Pounce" +msgstr "Aldonu Kunul _Atentigon" + +#: ../gtk/gtkblist.c:1021 ../gtk/gtkblist.c:1025 ../gtk/gtkblist.c:1124 +#: ../gtk/gtkblist.c:1147 +msgid "View _Log" +msgstr "Montru Protoko_lon" + +#: ../gtk/gtkblist.c:1036 +msgid "Alias..." +msgstr "Alinomo..." + +#: ../gtk/gtkblist.c:1045 ../gtk/gtkblist.c:1132 ../gtk/gtkblist.c:1153 +msgid "_Alias..." +msgstr "_Alinomo..." + +#: ../gtk/gtkblist.c:1047 ../gtk/gtkblist.c:1134 ../gtk/gtkblist.c:1155 +msgid "_Remove" +msgstr "Fo_rigu" + +#: ../gtk/gtkblist.c:1095 +msgid "Add a _Buddy" +msgstr "Aldonu K_unulon" + +#: ../gtk/gtkblist.c:1097 +msgid "Add a C_hat" +msgstr "Aldonu Babile_jon" + +#: ../gtk/gtkblist.c:1100 +msgid "_Delete Group" +msgstr "_Forigu Grupon" + +#: ../gtk/gtkblist.c:1102 +msgid "_Rename" +msgstr "_Alinomu" + +#: ../gtk/gtkblist.c:1122 +msgid "Auto-Join" +msgstr "Aŭtomate-aliĝu" + +#: ../gtk/gtkblist.c:1160 ../gtk/gtkblist.c:1183 +msgid "_Collapse" +msgstr "_Maletendu" + +#: ../gtk/gtkblist.c:1188 +msgid "_Expand" +msgstr "_Etendu" + +#: ../gtk/gtkblist.c:1434 ../gtk/gtkblist.c:1446 ../gtk/gtkblist.c:4095 +#: ../gtk/gtkblist.c:4105 +msgid "/Tools/Mute Sounds" +msgstr "/Iloj/Mutu Sonojn" + +#: ../gtk/gtkblist.c:1906 ../gtk/gtkconv.c:4277 ../gtk/gtkpounce.c:422 +msgid "You are not currently signed on with an account that can add that buddy." +msgstr "Vi ne ensalutis nun per konto kiu povas aldoni tiun kunul." + +#. Buddies menu +#: ../gtk/gtkblist.c:2480 +msgid "/_Buddies" +msgstr "/K_unuloj" + +#: ../gtk/gtkblist.c:2481 +msgid "/Buddies/New Instant _Message..." +msgstr "/Kunuloj/Nova Tuj _Mesaĝo..." + +#: ../gtk/gtkblist.c:2482 +msgid "/Buddies/Join a _Chat..." +msgstr "/Kunuloj/Aliĝu Babile_jon..." + +#: ../gtk/gtkblist.c:2483 +msgid "/Buddies/Get User _Info..." +msgstr "/Kunuloj/Ricevu Uzanto-_Informon..." + +#: ../gtk/gtkblist.c:2484 +msgid "/Buddies/View User _Log..." +msgstr "/Kunuloj/Montru Uzanto-_Protokolon..." + +#: ../gtk/gtkblist.c:2486 +msgid "/Buddies/Show _Offline Buddies" +msgstr "/Kunuloj/Montru Nek_onektitajn Kunulojn" + +#: ../gtk/gtkblist.c:2487 +msgid "/Buddies/Show _Empty Groups" +msgstr "/Kunuloj/Montru Malpl_enajn Grupojn" + +#: ../gtk/gtkblist.c:2488 +msgid "/Buddies/Show Buddy _Details" +msgstr "/Kunuloj/Montru Kunul-_Detalojn" + +#: ../gtk/gtkblist.c:2489 +msgid "/Buddies/Show Idle _Times" +msgstr "/Kunuloj/Montru Senfarajn _Tempojn" + +#: ../gtk/gtkblist.c:2490 +msgid "/Buddies/_Sort Buddies" +msgstr "/Kunuloj/_Oridgu Kunulojn" + +#: ../gtk/gtkblist.c:2492 +msgid "/Buddies/_Add Buddy..." +msgstr "/Kunuloj/_Aldonu Kunulon..." + +#: ../gtk/gtkblist.c:2493 +msgid "/Buddies/Add C_hat..." +msgstr "/Kunuloj/Aldonu Babile_jon..." + +#: ../gtk/gtkblist.c:2494 +msgid "/Buddies/Add _Group..." +msgstr "/Kunuloj/Aldonu _Grupon..." + +#: ../gtk/gtkblist.c:2496 +msgid "/Buddies/_Quit" +msgstr "/Kunuloj/_Finu" + +#. Accounts menu +#: ../gtk/gtkblist.c:2499 +msgid "/_Accounts" +msgstr "/_Kontoj" + +#: ../gtk/gtkblist.c:2500 ../gtk/gtkblist.c:5945 +msgid "/Accounts/Add\\/Edit" +msgstr "/Kontoj/Aldonu\\/Redaktu" + +#. Tools +#: ../gtk/gtkblist.c:2503 +msgid "/_Tools" +msgstr "/_Iloj" + +#: ../gtk/gtkblist.c:2504 +msgid "/Tools/Buddy _Pounces" +msgstr "/Iloj/Kunul _Atentigoj" + +#: ../gtk/gtkblist.c:2505 +msgid "/Tools/Plu_gins" +msgstr "/Iloj/Kromaĵoj" + +#: ../gtk/gtkblist.c:2506 +msgid "/Tools/Pr_eferences" +msgstr "/Iloj/Agordoj" + +#: ../gtk/gtkblist.c:2507 +msgid "/Tools/Pr_ivacy" +msgstr "/Iloj/Pr_ivateco" + +#: ../gtk/gtkblist.c:2509 +msgid "/Tools/_File Transfers" +msgstr "/Iloj/_Dosiero-alŝutoj" + +#: ../gtk/gtkblist.c:2510 +msgid "/Tools/R_oom List" +msgstr "/Iloj/Ĉambro-Listo" + +#: ../gtk/gtkblist.c:2511 +msgid "/Tools/System _Log" +msgstr "/Iloj/Sistemo-_Protokolo" + +#: ../gtk/gtkblist.c:2513 +msgid "/Tools/Mute _Sounds" +msgstr "/Iloj/Mutu _Sonojn" + +#. Help +#: ../gtk/gtkblist.c:2516 +msgid "/_Help" +msgstr "/_Helpo" + +#: ../gtk/gtkblist.c:2517 +msgid "/Help/Online _Help" +msgstr "/Helpo/Reta _Helpo" + +#: ../gtk/gtkblist.c:2518 +msgid "/Help/_Debug Window" +msgstr "/Helpo/_Sencimig-fenestro" + +#: ../gtk/gtkblist.c:2519 +msgid "/Help/_About" +msgstr "/Helpo/_Pri" + +#: ../gtk/gtkblist.c:2551 ../gtk/gtkblist.c:2620 +#, c-format +msgid "" +"\n" +"<b>Account:</b> %s" +msgstr "" +"\n" +"<b>Konto:</b> %s" + +#: ../gtk/gtkblist.c:2632 +#, c-format +msgid "" +"\n" +"<b>Buddy Alias:</b> %s" +msgstr "" +"\n" +"<b>Kunul Alinomo:</b> %s" + +#: ../gtk/gtkblist.c:2644 +#, c-format +msgid "" +"\n" +"<b>Nickname:</b> %s" +msgstr "" +"\n" +"<b>Karesnamo:</b> %s" + +#: ../gtk/gtkblist.c:2653 +#, c-format +msgid "" +"\n" +"<b>Logged In:</b> %s" +msgstr "" +"\n" +"<b>Ensalutita En:</b> %s" + +#: ../gtk/gtkblist.c:2664 +#, c-format +msgid "" +"\n" +"<b>Idle:</b> %s" +msgstr "" +"\n" +"<b>Senfara:</b> %s" + +#: ../gtk/gtkblist.c:2699 +#, c-format +msgid "" +"\n" +"<b>Last Seen:</b> %s ago" +msgstr "" +"\n" +"<b>Laste vidita:</b> antaŭ %s" + +#: ../gtk/gtkblist.c:2708 +msgid "" +"\n" +"<b>Status:</b> Offline" +msgstr "" +"\n" +"<b>Stato:</b> Nekonektita" + +#: ../gtk/gtkblist.c:2719 +msgid "" +"\n" +"<b>Description:</b> Spooky" +msgstr "" +"\n" +"<b>Priskribo:</b> Timiga" + +#: ../gtk/gtkblist.c:2721 +msgid "" +"\n" +"<b>Status:</b> Awesome" +msgstr "" + +#: ../gtk/gtkblist.c:2723 +msgid "" +"\n" +"<b>Status:</b> Rockin'" +msgstr "" + +#: ../gtk/gtkblist.c:3190 ../gtk/gtkdocklet.c:421 ../gtk/gtkstatusbox.c:974 +#: ../libgaim/protocols/gg/gg.c:993 ../libgaim/protocols/jabber/buddy.c:1365 +#: ../libgaim/protocols/novell/novell.c:2865 +#: ../libgaim/protocols/oscar/oscar.c:769 +#: ../libgaim/protocols/oscar/oscar.c:5445 +#: ../libgaim/protocols/yahoo/yahoo.c:2883 ../libgaim/status.c:154 +msgid "Offline" +msgstr "Senkonekta" + +#: ../gtk/gtkblist.c:3206 +#, c-format +msgid "Idle %dh %02dm" +msgstr "Senfara %dh %02dm" + +#: ../gtk/gtkblist.c:3208 +#, c-format +msgid "Idle %dm" +msgstr "Senfara %dm" + +#. Idle stuff +#: ../gtk/gtkblist.c:3211 ../gtk/gtkprefs.c:1765 +#: ../libgaim/protocols/bonjour/bonjour.c:333 +#: ../libgaim/protocols/jabber/buddy.c:635 +#: ../libgaim/protocols/jabber/buddy.c:668 ../libgaim/protocols/msn/msn.c:548 +#: ../libgaim/protocols/msn/state.c:32 +#: ../libgaim/protocols/novell/novell.c:2862 +#: ../libgaim/protocols/oscar/oscar.c:2824 +#: ../libgaim/protocols/yahoo/yahoo.c:2881 +#: ../libgaim/protocols/yahoo/yahoo_profile.c:691 +msgid "Idle" +msgstr "Senfara" + +#: ../gtk/gtkblist.c:3339 +msgid "/Buddies/New Instant Message..." +msgstr "/Kunuloj/Nova Tuj Mesaĝo..." + +#: ../gtk/gtkblist.c:3340 ../gtk/gtkblist.c:3373 +msgid "/Buddies/Join a Chat..." +msgstr "/Kunuloj/Aliĝu Babilejon..." + +#: ../gtk/gtkblist.c:3341 +msgid "/Buddies/Get User Info..." +msgstr "/Kunuloj/Ricevu Uzanto-Informon..." + +#: ../gtk/gtkblist.c:3342 +msgid "/Buddies/Add Buddy..." +msgstr "/Kunuloj/Aldonu Kunulon..." + +#: ../gtk/gtkblist.c:3343 ../gtk/gtkblist.c:3376 +msgid "/Buddies/Add Chat..." +msgstr "/Kunuloj/Aldonu Babilejon..." + +#: ../gtk/gtkblist.c:3344 +msgid "/Buddies/Add Group..." +msgstr "/Kunuloj/Aldonu Grupon..." + +#: ../gtk/gtkblist.c:3379 +msgid "/Tools/Buddy Pounces" +msgstr "/Iloj/Kunul Atentigoj" + +#: ../gtk/gtkblist.c:3382 +msgid "/Tools/Privacy" +msgstr "/Iloj/Privateco" + +#: ../gtk/gtkblist.c:3385 +msgid "/Tools/Room List" +msgstr "/Iloj/Ĉambro Listo" + +#: ../gtk/gtkblist.c:3481 ../gtk/gtkdocklet.c:136 +#, c-format +msgid "%d unread message from %s\n" +msgid_plural "%d unread messages from %s\n" +msgstr[0] "%d nelegita mesaĝo el %s\n" +msgstr[1] "%d nelegitaj mesaĝoj el %s\n" + +#: ../gtk/gtkblist.c:3557 +msgid "Manually" +msgstr "Mane" + +#: ../gtk/gtkblist.c:3559 +msgid "Alphabetically" +msgstr "Alfabete" + +#: ../gtk/gtkblist.c:3560 +msgid "By status" +msgstr "Laŭ stato" + +#: ../gtk/gtkblist.c:3561 +msgid "By log size" +msgstr "Laŭ protokolo grandeco" + +#: ../gtk/gtkblist.c:3769 ../gtk/gtkconn.c:178 +#, c-format +msgid "%s disconnected" +msgstr "%s malkontaktita" + +#: ../gtk/gtkblist.c:3778 ../libgaim/protocols/sametime/sametime.c:3618 +msgid "Connect" +msgstr "Kontaktu" + +#: ../gtk/gtkblist.c:3778 +msgid "Re-enable Account" +msgstr "Reŝaltu Konton" + +#: ../gtk/gtkblist.c:3799 +#, c-format +msgid "<span color=\"red\">%s disconnected: %s</span>" +msgstr "<span color=\"red\">%s malkontaktita: %s</span>" + +#: ../gtk/gtkblist.c:3928 +msgid "/Accounts" +msgstr "/Kontoj" + +#. set the Show Offline Buddies option. must be done +#. * after the treeview or faceprint gets mad. -Robot101 +#. +#: ../gtk/gtkblist.c:4089 +msgid "/Buddies/Show Offline Buddies" +msgstr "/Kunuloj/Montru Senkonektajn Kunulojn" + +#: ../gtk/gtkblist.c:4092 +msgid "/Buddies/Show Empty Groups" +msgstr "/Kunuloj/Montru Malplenajn Grupojn" + +#: ../gtk/gtkblist.c:4098 +msgid "/Buddies/Show Buddy Details" +msgstr "/Kunulojn/Montru Kunul-Detalojn" + +#: ../gtk/gtkblist.c:4101 +msgid "/Buddies/Show Idle Times" +msgstr "/Kunuloj/Montru Senfarajn Tempojn" + +#: ../gtk/gtkblist.c:4764 ../gtk/plugins/gevolution/gevolution.c:96 +#: ../gtk/plugins/gevolution/gevo-util.c:64 ../libgaim/blist.c:521 +#: ../libgaim/blist.c:1294 ../libgaim/blist.c:1523 +#: ../libgaim/protocols/jabber/roster.c:67 +msgid "Buddies" +msgstr "Kunuloj" + +#: ../gtk/gtkblist.c:4898 +msgid "" +"Please enter the screen name of the person you would like to add to your " +"buddy list. You may optionally enter an alias, or nickname, for the buddy. " +"The alias will be displayed in place of the screen name whenever possible.\n" +msgstr "" +"B.v. enigi la ekranan nomon de la persono kiun vi volas aldoni en via " +"kunullisto. Vi povas laŭ deziro enigi alinomon, aŭ karesnomon, pri la kunul. " +"La alinomo estos vidigita anstataŭ la erkrana nomo laŭ kaze.\n" + +#: ../gtk/gtkblist.c:4958 ../gtk/gtkblist.c:5321 +#: ../gtk/plugins/gevolution/add_buddy_dialog.c:554 +#: ../gtk/plugins/gevolution/new_person_dialog.c:307 +msgid "Group:" +msgstr "Grupo:" + +#: ../gtk/gtkblist.c:5219 +msgid "This protocol does not support chat rooms." +msgstr "" + +#: ../gtk/gtkblist.c:5235 +msgid "" +"You are not currently signed on with any protocols that have the ability to " +"chat." +msgstr "" + +#: ../gtk/gtkblist.c:5276 +msgid "" +"Please enter an alias, and the appropriate information about the chat you " +"would like to add to your buddy list.\n" +msgstr "" +"B.v. enigi alinomon, kaj la konvenan informon pri la babilejo kiun vi volas " +"aldoni en via kunullisto.\n" + +#: ../gtk/gtkblist.c:5359 +msgid "Please enter the name of the group to be added." +msgstr "B.v. enigi la nomon de la grupo aldonenda." + +#: ../gtk/gtkblist.c:5985 +msgid "_Edit Account" +msgstr "_Redaktu Konton" + +#: ../gtk/gtkblist.c:6018 ../gtk/gtkblist.c:6024 ../gtk/gtkconv.c:2781 +msgid "No actions available" +msgstr "Neniu ago disponebla" + +#: ../gtk/gtkblist.c:6032 +msgid "_Disable" +msgstr "_Malŝaltu" + +#: ../gtk/gtkblist.c:6044 +msgid "Enable Account" +msgstr "Ŝaltu Konton" + +#: ../gtk/gtkblist.c:6097 +msgid "/Tools" +msgstr "/Iloj" + +#: ../gtk/gtkblist.c:6183 +msgid "/Buddies/Sort Buddies" +msgstr "/Kunuloj/Ordigu Kunulojn" + +#: ../gtk/gtkconn.c:179 +#, c-format +msgid "" +"%s was disconnected due to an error: %s\n" +"Gaim will not attempt to reconnect the account until you correct the error " +"and re-enable the account." +msgstr "" + +#: ../gtk/gtkconv.c:744 ../gtk/gtkconv.c:770 +msgid "That buddy is not on the same protocol as this chat." +msgstr "" + +#: ../gtk/gtkconv.c:764 +msgid "You are not currently signed on with an account that can invite that buddy." +msgstr "" + +#: ../gtk/gtkconv.c:817 +msgid "Invite Buddy Into Chat Room" +msgstr "Invitu Kunul En Babilejo" + +#. Put our happy label in it. +#: ../gtk/gtkconv.c:847 +msgid "" +"Please enter the name of the user you wish to invite, along with an optional " +"invite message." +msgstr "" +"B.v. enigi la nomon de uzanto kiun vi deziras inviti, kun fakultativan " +"invitmesaĝon." + +#: ../gtk/gtkconv.c:868 +msgid "_Buddy:" +msgstr "K_unul:" + +#: ../gtk/gtkconv.c:888 ../gtk/gtksavedstatuses.c:1111 +#: ../gtk/gtksavedstatuses.c:1447 +msgid "_Message:" +msgstr "_Mesaĝo:" + +#: ../gtk/gtkconv.c:945 ../gtk/gtkconv.c:2398 ../gtk/gtkdebug.c:218 +#: ../gtk/gtkft.c:542 +msgid "Unable to open file." +msgstr "Dosiero malfermeblas." + +#: ../gtk/gtkconv.c:951 +#, c-format +msgid "<h1>Conversation with %s</h1>\n" +msgstr "<h1>Konversacio kun %s</h1>\n" + +#: ../gtk/gtkconv.c:975 +msgid "Save Conversation" +msgstr "Konservu Konversacion" + +#: ../gtk/gtkconv.c:1122 ../gtk/gtkdebug.c:166 ../gtk/gtkdebug.c:756 +msgid "Find" +msgstr "Trovu" + +#: ../gtk/gtkconv.c:1148 ../gtk/gtkdebug.c:194 +msgid "_Search for:" +msgstr "_Trovu:" + +#: ../gtk/gtkconv.c:1319 +msgid "Logging started. Future messages in this conversation will be logged." +msgstr "" + +#: ../gtk/gtkconv.c:1327 +msgid "Logging stopped. Future messages in this conversation will not be logged." +msgstr "" + +#: ../gtk/gtkconv.c:1595 +msgid "Un-Ignore" +msgstr "Malignoru" + +#: ../gtk/gtkconv.c:1598 +msgid "Ignore" +msgstr "Ignoru" + +#: ../gtk/gtkconv.c:1618 +msgid "Get Away Message" +msgstr "Montru Formesaĝon" + +#: ../gtk/gtkconv.c:1641 +msgid "Last said" +msgstr "Laste diris" + +#: ../gtk/gtkconv.c:2406 +msgid "Unable to save icon file to disk." +msgstr "" + +#: ../gtk/gtkconv.c:2430 +msgid "Save Icon" +msgstr "Konservu Piktogramon" + +#: ../gtk/gtkconv.c:2479 +msgid "Animate" +msgstr "Animaciigi" + +#: ../gtk/gtkconv.c:2484 +msgid "Hide Icon" +msgstr "Kaŝu Piktogramon" + +#: ../gtk/gtkconv.c:2490 +msgid "Save Icon As..." +msgstr "Konservu Piktogramon Kiel..." + +#. Conversation menu +#: ../gtk/gtkconv.c:2630 +msgid "/_Conversation" +msgstr "/_Konversacio" + +#: ../gtk/gtkconv.c:2632 +msgid "/Conversation/New Instant _Message..." +msgstr "/Konversacio/Nova Tuj _Mesaĝo..." + +#: ../gtk/gtkconv.c:2637 +msgid "/Conversation/_Find..." +msgstr "/Konversacio/_Trovu..." + +#: ../gtk/gtkconv.c:2639 +msgid "/Conversation/View _Log" +msgstr "/Konversacio/Montru _Protokolon" + +#: ../gtk/gtkconv.c:2640 +msgid "/Conversation/_Save As..." +msgstr "/Konversacio/_Konservu Kiel..." + +#: ../gtk/gtkconv.c:2642 +msgid "/Conversation/Clea_r Scrollback" +msgstr "/Konversacio/Fo_rviŝu Dialogon" + +#: ../gtk/gtkconv.c:2646 +msgid "/Conversation/Se_nd File..." +msgstr "/Konversacio/Se_ndu Dosieron..." + +#: ../gtk/gtkconv.c:2647 +msgid "/Conversation/Add Buddy _Pounce..." +msgstr "/Konversacio/Aldonu Kunul-_Atentigon..." + +#: ../gtk/gtkconv.c:2649 +msgid "/Conversation/_Get Info" +msgstr "/Konversatio/_Ricevu Informon" + +#: ../gtk/gtkconv.c:2651 +msgid "/Conversation/In_vite..." +msgstr "/Konversacio/In_vitu..." + +#: ../gtk/gtkconv.c:2653 +msgid "/Conversation/M_ore" +msgstr "/Konversacio/_Pli" + +#: ../gtk/gtkconv.c:2657 +msgid "/Conversation/Al_ias..." +msgstr "/Konversacio/Al_inomo..." + +#: ../gtk/gtkconv.c:2659 +msgid "/Conversation/_Block..." +msgstr "/KConversacio/_Bloku..." + +#: ../gtk/gtkconv.c:2661 +msgid "/Conversation/_Add..." +msgstr "/Konversacio/_Aldonu..." + +#: ../gtk/gtkconv.c:2663 +msgid "/Conversation/_Remove..." +msgstr "/Konversacio/_Forigu..." + +#: ../gtk/gtkconv.c:2668 +msgid "/Conversation/Insert Lin_k..." +msgstr "/Konversacio/Enmetu Ligi_lon..." + +#: ../gtk/gtkconv.c:2670 +msgid "/Conversation/Insert Imag_e..." +msgstr "/Konversacio/Enm_etu Bildon..." + +#: ../gtk/gtkconv.c:2675 +msgid "/Conversation/_Close" +msgstr "/Konversacio/_Fermu" + +#. Options +#: ../gtk/gtkconv.c:2679 +msgid "/_Options" +msgstr "/_Opcioj" + +#: ../gtk/gtkconv.c:2680 +msgid "/Options/Enable _Logging" +msgstr "/Opcioj/Ŝaltu _Protokoladon" + +#: ../gtk/gtkconv.c:2681 +msgid "/Options/Enable _Sounds" +msgstr "/Opcioj/Ŝaltu _Sonojn" + +#: ../gtk/gtkconv.c:2682 +msgid "/Options/Show Buddy _Icon" +msgstr "/Opcioj/Montru Kunul-P_iktogramon" + +#: ../gtk/gtkconv.c:2684 +msgid "/Options/Show Formatting _Toolbars" +msgstr "/Opcioj/Montru Formato-_Illistelojn" + +#: ../gtk/gtkconv.c:2685 +msgid "/Options/Show Ti_mestamps" +msgstr "/Opcioj/Montru Te_mpomarkojn" + +#: ../gtk/gtkconv.c:2760 +msgid "/Conversation/More" +msgstr "/Konversacio/_Pli" + +#: ../gtk/gtkconv.c:2798 ../gtk/gtkconv.c:2825 +msgid "/Conversation" +msgstr "/_Konversacio" + +#: ../gtk/gtkconv.c:2835 +msgid "/Conversation/View Log" +msgstr "/Konversacio/Montru Protokoladon" + +#: ../gtk/gtkconv.c:2841 +msgid "/Conversation/Send File..." +msgstr "/Konversacio/Sendu Dosieron..." + +#: ../gtk/gtkconv.c:2845 +msgid "/Conversation/Add Buddy Pounce..." +msgstr "/Konversacio/Aldonu Kunul-Atentijon..." + +#: ../gtk/gtkconv.c:2851 +msgid "/Conversation/Get Info" +msgstr "/Konversacio/Ricevu Informon" + +#: ../gtk/gtkconv.c:2855 +msgid "/Conversation/Invite..." +msgstr "/Konversacio/Invitu..." + +#: ../gtk/gtkconv.c:2861 +msgid "/Conversation/Alias..." +msgstr "/Konversacio/Alinomo..." + +#: ../gtk/gtkconv.c:2865 +msgid "/Conversation/Block..." +msgstr "/Konversacio/Bloku..." + +#: ../gtk/gtkconv.c:2869 +msgid "/Conversation/Add..." +msgstr "/Konversacion/Aldonu..." + +#: ../gtk/gtkconv.c:2873 +msgid "/Conversation/Remove..." +msgstr "/Konversacio/Forigu..." + +#: ../gtk/gtkconv.c:2879 +msgid "/Conversation/Insert Link..." +msgstr "/Konversacio/Enmetu Ligilon..." + +#: ../gtk/gtkconv.c:2883 +msgid "/Conversation/Insert Image..." +msgstr "/Konversacio/Enmetu Bildon..." + +#: ../gtk/gtkconv.c:2889 +msgid "/Options/Enable Logging" +msgstr "/Opcioj/Ŝaltu Protokoladon" + +#: ../gtk/gtkconv.c:2892 +msgid "/Options/Enable Sounds" +msgstr "/Opcioj/Ŝaltu Sonojn" + +#: ../gtk/gtkconv.c:2905 +msgid "/Options/Show Formatting Toolbars" +msgstr "/Opcioj/Montru Formato-Illistelojn" + +#: ../gtk/gtkconv.c:2908 +msgid "/Options/Show Timestamps" +msgstr "/Opcioj/Montru Tempomarkojn" + +#: ../gtk/gtkconv.c:2911 +msgid "/Options/Show Buddy Icon" +msgstr "/Opcioj/Montru Kunul-Piktogramon" + +#: ../gtk/gtkconv.c:2987 +msgid "User is typing..." +msgstr "Uzanto tajpas..." + +#: ../gtk/gtkconv.c:2990 +msgid "User has typed something and stopped" +msgstr "Uzanto tajpis ion kaj haltis" + +#. Build the Send To menu +#: ../gtk/gtkconv.c:3173 +msgid "_Send To" +msgstr "_Sendu Al" + +#: ../gtk/gtkconv.c:3875 +msgid "_Send" +msgstr "_Sendu" + +#: ../gtk/gtkconv.c:3929 ../libgaim/protocols/sametime/sametime.c:3560 +msgid "Topic:" +msgstr "Temo:" + +#. Setup the label telling how many people are in the room. +#: ../gtk/gtkconv.c:3981 +msgid "0 people in room" +msgstr "0 homo en ĉambro" + +#: ../gtk/gtkconv.c:5028 ../gtk/gtkconv.c:5149 +#, c-format +msgid "%d person in room" +msgid_plural "%d people in room" +msgstr[0] "%d homo en ĉambro" +msgstr[1] "%d homoj en ĉambro" + +#: ../gtk/gtkconv.c:5702 ../gtk/gtkstatusbox.c:541 +msgid "Typing" +msgstr "Tajpante" + +#: ../gtk/gtkconv.c:5708 +msgid "Stopped Typing" +msgstr "Ekmaltajpas" + +#: ../gtk/gtkconv.c:5713 +msgid "Nick Said" +msgstr "Karesnomo Diris" + +#: ../gtk/gtkconv.c:5718 ../gtk/gtkdocklet.c:463 +msgid "Unread Messages" +msgstr "Nelegitaj mesaĝoj" + +#: ../gtk/gtkconv.c:5723 +msgid "New Event" +msgstr "Nova Evento" + +#: ../gtk/gtkconv.c:6818 +msgid "Confirm close" +msgstr "Konfirmu fermon" + +#: ../gtk/gtkconv.c:6850 +msgid "You have unread messages. Are you sure you want to close the window?" +msgstr "Vi havas nelegitajn mesaĝojn. Ĉu vi certas vi volas fermi la fenestron?" + +#: ../gtk/gtkconv.c:7385 +msgid "Close other tabs" +msgstr "Fermu aliajn langetojn" + +#: ../gtk/gtkconv.c:7391 +msgid "Close all tabs" +msgstr "Fermu ĉiujn langetojn" + +#: ../gtk/gtkconv.c:7399 +msgid "Detach this tab" +msgstr "Deigu tiun langeton" + +#: ../gtk/gtkconv.c:7405 +msgid "Close this tab" +msgstr "Fermu tiun langeton" + +#: ../gtk/gtkconv.c:7672 +msgid "Close conversation" +msgstr "Fermu konversacion" + +#: ../gtk/gtkconv.c:8136 +msgid "Last created window" +msgstr "Lasta kreita fenestro" + +#: ../gtk/gtkconv.c:8138 +msgid "Separate IM and Chat windows" +msgstr "Disigu TM-aj kaj Babilejajn fenestrojn" + +#: ../gtk/gtkconv.c:8140 ../gtk/gtkprefs.c:1263 +msgid "New window" +msgstr "Nova fenestro" + +#: ../gtk/gtkconv.c:8142 +msgid "By group" +msgstr "Laŭ grupo" + +#: ../gtk/gtkconv.c:8144 +msgid "By account" +msgstr "Laŭ konto" + +#: ../gtk/gtkdebug.c:233 +msgid "Save Debug Log" +msgstr "Konservu Sencimigo-Protokolon" + +#: ../gtk/gtkdebug.c:594 +msgid "Invert" +msgstr "Maligu" + +#: ../gtk/gtkdebug.c:597 +msgid "Highlight matches" +msgstr "Emfazu t... [truncated message content] |
From: <dat...@us...> - 2006-10-28 00:28:23
|
Revision: 17592 http://svn.sourceforge.net/gaim/?rev=17592&view=rev Author: datallah Date: 2006-10-27 17:28:06 -0700 (Fri, 27 Oct 2006) Log Message: ----------- Enable QQ in wingaim. I don't really have a way to test it. Also disable some debug stuff in the about screen that doesn't make sense in wingaim. Modified Paths: -------------- trunk/gaim-installer.nsi trunk/gtk/gtkdialogs.c trunk/gtk/pixmaps/smileys/default/Makefile.mingw trunk/gtk/pixmaps/status/default/Makefile.mingw trunk/libgaim/protocols/Makefile.mingw Modified: trunk/gaim-installer.nsi =================================================================== --- trunk/gaim-installer.nsi 2006-10-27 18:30:56 UTC (rev 17591) +++ trunk/gaim-installer.nsi 2006-10-28 00:28:06 UTC (rev 17592) @@ -670,6 +670,7 @@ Delete "$INSTDIR\plugins\libnapster.dll" Delete "$INSTDIR\plugins\libnovell.dll" Delete "$INSTDIR\plugins\liboscar.dll" + Delete "$INSTDIR\plugins\libqq.dll" Delete "$INSTDIR\plugins\libsametime.dll" Delete "$INSTDIR\plugins\libsilc.dll" Delete "$INSTDIR\plugins\libsimple.dll" Modified: trunk/gtk/gtkdialogs.c =================================================================== --- trunk/gtk/gtkdialogs.c 2006-10-27 18:30:56 UTC (rev 17591) +++ trunk/gtk/gtkdialogs.c 2006-10-28 00:28:06 UTC (rev 17592) @@ -528,17 +528,21 @@ #endif #endif +#ifndef _WIN32 #ifdef ENABLE_MONO g_string_append(str, " <b>Mono:</b> Enabled<br/>"); #else g_string_append(str, " <b>Mono:</b> Disabled<br/>"); #endif +#endif +#ifndef _WIN32 #ifdef HAVE_LIBNM g_string_append(str, " <b>NetworkManager:</b> Enabled<br/>"); #else g_string_append(str, " <b>NetworkManager:</b> Disabled<br/>"); #endif +#endif #ifdef HAVE_NSS g_string_append(str, " <b>Network Security Services (NSS):</b> Enabled<br/>"); Modified: trunk/gtk/pixmaps/smileys/default/Makefile.mingw =================================================================== --- trunk/gtk/pixmaps/smileys/default/Makefile.mingw 2006-10-27 18:30:56 UTC (rev 17591) +++ trunk/gtk/pixmaps/smileys/default/Makefile.mingw 2006-10-28 00:28:06 UTC (rev 17592) @@ -12,11 +12,9 @@ .PHONY: install -#Exclude 132k of qq smileys that aren't used on wingaim install: if test '$(gaimsmileypix_DATA)'; then \ mkdir -p $(gaimsmileypixdir); \ cp $(gaimsmileypix_DATA) $(gaimsmileypixdir); \ - rm -f $(gaimsmileypixdir)/qq_*; \ fi; Modified: trunk/gtk/pixmaps/status/default/Makefile.mingw =================================================================== --- trunk/gtk/pixmaps/status/default/Makefile.mingw 2006-10-27 18:30:56 UTC (rev 17591) +++ trunk/gtk/pixmaps/status/default/Makefile.mingw 2006-10-28 00:28:06 UTC (rev 17592) @@ -10,11 +10,9 @@ datadir = $(GAIM_INSTALL_DIR) include ./Makefile.am -#Exclude 264k of qq icons that aren't used on wingaim install: if test '$(gaimstatuspix_DATA)'; then \ mkdir -p $(gaimstatuspixdir); \ cp $(gaimstatuspix_DATA) $(gaimstatuspixdir); \ - rm -f $(gaimstatuspixdir)/qq*; \ fi; Modified: trunk/libgaim/protocols/Makefile.mingw =================================================================== --- trunk/libgaim/protocols/Makefile.mingw 2006-10-27 18:30:56 UTC (rev 17591) +++ trunk/libgaim/protocols/Makefile.mingw 2006-10-28 00:28:06 UTC (rev 17592) @@ -8,69 +8,22 @@ GAIM_TOP := ../.. include $(GAIM_TOP)/libgaim/win32/global.mak -GG = $(GAIM_PROTOS_TOP)/gg -IRC = $(GAIM_PROTOS_TOP)/irc -JABBER = $(GAIM_PROTOS_TOP)/jabber -MSN = $(GAIM_PROTOS_TOP)/msn -NOVELL = $(GAIM_PROTOS_TOP)/novell -OSCAR = $(GAIM_PROTOS_TOP)/oscar -SAMETIME = $(GAIM_PROTOS_TOP)/sametime -SILC = $(GAIM_PROTOS_TOP)/silc -SIMPLE = $(GAIM_PROTOS_TOP)/simple -TOC = $(GAIM_PROTOS_TOP)/toc -YAHOO = $(GAIM_PROTOS_TOP)/yahoo +SUBDIRS = gg irc jabber msn novell oscar qq sametime silc simple yahoo -## -## Don't forget to change STATIC_PROTO_INIT, in config.h.mingw if you -## change the status of a protocol (static/plugin) -## - -GG_TYPE = PLUGIN -IRC_TYPE = PLUGIN -JABBER_TYPE = PLUGIN -MSN_TYPE = PLUGIN -NOVELL_TYPE = PLUGIN -OSCAR_TYPE = PLUGIN -SAMETIME_TYPE = PLUGIN -SILC_TYPE = PLUGIN -SIMPLE_TYPE = PLUGIN -TOC_TYPE = PLUGIN -YAHOO_TYPE = PLUGIN - .PHONY: all install clean all: - $(MAKE) TYPE='$(GG_TYPE)' -C $(GG) -f $(GAIM_WIN32_MAKEFILE) - $(MAKE) TYPE='$(IRC_TYPE)' -C $(IRC) -f $(GAIM_WIN32_MAKEFILE) - $(MAKE) TYPE='$(JABBER_TYPE)' -C $(JABBER) -f $(GAIM_WIN32_MAKEFILE) - $(MAKE) TYPE='$(MSN_TYPE)' -C $(MSN) -f $(GAIM_WIN32_MAKEFILE) - $(MAKE) TYPE='$(NOVELL_TYPE)' -C $(NOVELL) -f $(GAIM_WIN32_MAKEFILE) - $(MAKE) TYPE='$(OSCAR_TYPE)' -C $(OSCAR) -f $(GAIM_WIN32_MAKEFILE) - $(MAKE) TYPE='$(SAMETIME_TYPE)' -C $(SAMETIME) -f $(GAIM_WIN32_MAKEFILE) - $(MAKE) TYPE='$(SILC_TYPE)' -C $(SILC) -f $(GAIM_WIN32_MAKEFILE) - $(MAKE) TYPE='$(SIMPLE_TYPE)' -C $(SIMPLE) -f $(GAIM_WIN32_MAKEFILE) - $(MAKE) TYPE='$(YAHOO_TYPE)' -C $(YAHOO) -f $(GAIM_WIN32_MAKEFILE) + for subdir in $(SUBDIRS); do \ + $(MAKE) -C $$subdir -f $(GAIM_WIN32_MAKEFILE) || exit 1; \ + done; install: all - $(MAKE) TYPE='$(GG_TYPE)' -C $(GG) -f $(GAIM_WIN32_MAKEFILE) install - $(MAKE) TYPE='$(IRC_TYPE)' -C $(IRC) -f $(GAIM_WIN32_MAKEFILE) install - $(MAKE) TYPE='$(JABBER_TYPE)' -C $(JABBER) -f $(GAIM_WIN32_MAKEFILE) install - $(MAKE) TYPE='$(MSN_TYPE)' -C $(MSN) -f $(GAIM_WIN32_MAKEFILE) install - $(MAKE) TYPE='$(NOVELL_TYPE)' -C $(NOVELL) -f $(GAIM_WIN32_MAKEFILE) install - $(MAKE) TYPE='$(OSCAR_TYPE)' -C $(OSCAR) -f $(GAIM_WIN32_MAKEFILE) install - $(MAKE) TYPE='$(SAMETIME_TYPE)' -C $(SAMETIME) -f $(GAIM_WIN32_MAKEFILE) install - $(MAKE) TYPE='$(SILC_TYPE)' -C $(SILC) -f $(GAIM_WIN32_MAKEFILE) install - $(MAKE) TYPE='$(SIMPLE_TYPE)' -C $(SIMPLE) -f $(GAIM_WIN32_MAKEFILE) install - $(MAKE) TYPE='$(YAHOO_TYPE)' -C $(YAHOO) -f $(GAIM_WIN32_MAKEFILE) install + for subdir in $(SUBDIRS); do \ + $(MAKE) -C $$subdir -f $(GAIM_WIN32_MAKEFILE) install || exit 1; \ + done; clean: - $(MAKE) TYPE='$(GG_TYPE)' -C $(GG) -f $(GAIM_WIN32_MAKEFILE) clean - $(MAKE) TYPE='$(IRC_TYPE)' -C $(IRC) -f $(GAIM_WIN32_MAKEFILE) clean - $(MAKE) TYPE='$(JABBER_TYPE)' -C $(JABBER) -f $(GAIM_WIN32_MAKEFILE) clean - $(MAKE) TYPE='$(MSN_TYPE)' -C $(MSN) -f $(GAIM_WIN32_MAKEFILE) clean - $(MAKE) TYPE='$(NOVELL_TYPE)' -C $(NOVELL) -f $(GAIM_WIN32_MAKEFILE) clean - $(MAKE) TYPE='$(OSCAR_TYPE)' -C $(OSCAR) -f $(GAIM_WIN32_MAKEFILE) clean - $(MAKE) TYPE='$(SAMETIME_TYPE)' -C $(SAMETIME) -f $(GAIM_WIN32_MAKEFILE) clean - $(MAKE) TYPE='$(SILC_TYPE)' -C $(SILC) -f $(GAIM_WIN32_MAKEFILE) clean - $(MAKE) TYPE='$(SIMPLE_TYPE)' -C $(SIMPLE) -f $(GAIM_WIN32_MAKEFILE) clean - $(MAKE) TYPE='$(YAHOO_TYPE)' -C $(YAHOO) -f $(GAIM_WIN32_MAKEFILE) clean + for subdir in $(SUBDIRS); do \ + $(MAKE) -C $$subdir -f $(GAIM_WIN32_MAKEFILE) clean || exit 1; \ + done; + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-10-28 20:05:04
|
Revision: 17606 http://svn.sourceforge.net/gaim/?rev=17606&view=rev Author: thekingant Date: 2006-10-28 13:04:03 -0700 (Sat, 28 Oct 2006) Log Message: ----------- Add a "handle" parameter to gaim_proxy_connect(). It seemed like people thought this was a good idea. You can still cancel each gaim_proxy_connect() individually, if needed. I passed in NULL for the handle in most places. It might be better to pass in the gc in more places, but these changes do no harm, and they should help some Yahoo! things, and I wanted to get the API change in. Modified Paths: -------------- trunk/ChangeLog.API trunk/libgaim/ft.c trunk/libgaim/protocols/irc/irc.c trunk/libgaim/protocols/irc/irc.h trunk/libgaim/protocols/jabber/jabber.c trunk/libgaim/protocols/jabber/jabber.h trunk/libgaim/protocols/jabber/si.c trunk/libgaim/protocols/msn/directconn.c trunk/libgaim/protocols/msn/httpconn.c trunk/libgaim/protocols/msn/servconn.c trunk/libgaim/protocols/oscar/oscar.c trunk/libgaim/protocols/oscar/peer.c trunk/libgaim/protocols/qq/qq_proxy.c trunk/libgaim/protocols/sametime/sametime.c trunk/libgaim/protocols/silc/silc.c trunk/libgaim/protocols/silc/silcgaim.h trunk/libgaim/protocols/simple/simple.c trunk/libgaim/protocols/toc/toc.c trunk/libgaim/protocols/yahoo/yahoo.c trunk/libgaim/protocols/yahoo/yahoo_filexfer.c trunk/libgaim/protocols/yahoo/yahoo_picture.c trunk/libgaim/protocols/yahoo/yahoochat.c trunk/libgaim/protocols/yahoo/ycht.c trunk/libgaim/proxy.c trunk/libgaim/proxy.h trunk/libgaim/sslconn.c trunk/libgaim/upnp.c trunk/libgaim/util.c Modified: trunk/ChangeLog.API =================================================================== --- trunk/ChangeLog.API 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/ChangeLog.API 2006-10-28 20:04:03 UTC (rev 17606) @@ -118,7 +118,9 @@ gaim_proxy_connect() and gaim_network_listen*(). * gaim_proxy_connect(): changed to return NULL on error and a pointer to a GaimProxyConnectInfo object which can be used to cancel - connection attempts using gaim_proxy_connect_cancel(). + connection attempts using gaim_proxy_connect_cancel(). Also added + a 'handle' parameter that can be used to cancel to cancel the + connection attempt using gaim_proxy_connect_cancel_with_handle(). * gaim_gethostbyname_async(): Renamed to gaim_dnsquery_a() and changed to return a pointer to a data structure that can be used to cancel the pending DNS query using gaim_dnsquery_destroy() @@ -321,6 +323,8 @@ call to gaim_network_listen() or gaim_network_listen_range() * gaim_proxy_connect_cancel(): Can be used to cancel a pending gaim_proxy_connect() request + * gaim_proxy_connect_cancel_with_handle(): Can be used to cancel + a previous gaim_proxy_connect() request using a specified handle * gaim_dnsquery_destroy(): Can be used to cancel a pending DNS query. * gaim_util_fetch_url_cancel(): Can be used to cancel a pending Modified: trunk/libgaim/ft.c =================================================================== --- trunk/libgaim/ft.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/ft.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -945,7 +945,7 @@ xfer->remote_port = port; /* Establish a file descriptor. */ - gaim_proxy_connect(xfer->account, xfer->remote_ip, + gaim_proxy_connect(NULL, xfer->account, xfer->remote_ip, xfer->remote_port, connect_cb, xfer); return; Modified: trunk/libgaim/protocols/irc/irc.c =================================================================== --- trunk/libgaim/protocols/irc/irc.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/irc/irc.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -341,11 +341,10 @@ if (!irc->gsc) { - irc->connect_data = gaim_proxy_connect(account, irc->server, + if (gaim_proxy_connect(gc, account, irc->server, gaim_account_get_int(account, "port", IRC_DEFAULT_PORT), - irc_login_cb, gc); - - if (!irc->connect_data || !gaim_account_get_connection(account)) { + irc_login_cb, gc) == NULL) + { gaim_connection_error(gc, _("Couldn't create socket")); return; } @@ -409,8 +408,6 @@ GaimConnection *gc = data; struct irc_conn *irc = gc->proto_data; - irc->connect_data = NULL; - if (source < 0) { gaim_connection_error(gc, _("Couldn't connect to host")); return; @@ -452,9 +449,6 @@ if (irc->gsc || (irc->fd >= 0)) irc_cmd_quit(irc, "quit", NULL, NULL); - if (irc->connect_data) - gaim_proxy_connect_cancel(irc->connect_data); - if (gc->inpa) gaim_input_remove(gc->inpa); Modified: trunk/libgaim/protocols/irc/irc.h =================================================================== --- trunk/libgaim/protocols/irc/irc.h 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/irc/irc.h 2006-10-28 20:04:03 UTC (rev 17606) @@ -54,8 +54,6 @@ guint timer; GHashTable *buddies; - GaimProxyConnectData *connect_data; - char *inbuf; int inbuflen; int inbufused; Modified: trunk/libgaim/protocols/jabber/jabber.c =================================================================== --- trunk/libgaim/protocols/jabber/jabber.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/jabber/jabber.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -445,8 +445,6 @@ GaimConnection *gc = data; JabberStream *js = gc->proto_data; - js->connect_data = NULL; - if (source < 0) { gaim_connection_error(gc, _("Couldn't connect to host")); return; @@ -490,10 +488,8 @@ static void jabber_login_connect(JabberStream *js, const char *server, int port) { - js->connect_data = gaim_proxy_connect(js->gc->account, server, - port, jabber_login_callback, js->gc); - - if (js->connect_data == NULL) + if (gaim_proxy_connect(js->gc, js->gc->account, server, + port, jabber_login_callback, js->gc) == NULL) gaim_connection_error(js->gc, _("Unable to create socket")); } @@ -922,11 +918,9 @@ } if(!js->gsc) { - js->connect_data = gaim_proxy_connect(account, server, + if (gaim_proxy_connect(gc, account, server, gaim_account_get_int(account, "port", 5222), - jabber_login_callback, gc); - - if (js->connect_data == NULL) + jabber_login_callback, gc) == NULL) gaim_connection_error(gc, _("Unable to create socket")); } } @@ -945,9 +939,6 @@ if (js->srv_query_data) gaim_srv_cancel(js->srv_query_data); - if (js->connect_data) - gaim_proxy_connect_cancel(js->connect_data); - if(js->gsc) { #ifdef HAVE_OPENSSL if (!gc->disconnect_timeout) Modified: trunk/libgaim/protocols/jabber/jabber.h =================================================================== --- trunk/libgaim/protocols/jabber/jabber.h 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/jabber/jabber.h 2006-10-28 20:04:03 UTC (rev 17606) @@ -67,7 +67,6 @@ int fd; GaimSrvQueryData *srv_query_data; - GaimProxyConnectData *connect_data; xmlParserCtxt *context; xmlnode *current; Modified: trunk/libgaim/protocols/jabber/si.c =================================================================== --- trunk/libgaim/protocols/jabber/si.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/jabber/si.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -177,7 +177,8 @@ for(i=0; i<20; i++, p+=2) snprintf(p, 3, "%02x", hashval[i]); - jsx->connect_data = gaim_proxy_connect_socks5(jsx->gpi, dstaddr, 0, + jsx->connect_data = gaim_proxy_connect_socks5(NULL, jsx->gpi, + dstaddr, 0, jabber_si_bytestreams_connect_cb, xfer); g_free(dstaddr); Modified: trunk/libgaim/protocols/msn/directconn.c =================================================================== --- trunk/libgaim/protocols/msn/directconn.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/msn/directconn.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -423,8 +423,8 @@ } #endif - directconn->connect_data = gaim_proxy_connect(session->account, host, port, - connect_cb, directconn); + directconn->connect_data = gaim_proxy_connect(NULL, session->account, + host, port, connect_cb, directconn); if (directconn->connect_data != NULL) { Modified: trunk/libgaim/protocols/msn/httpconn.c =================================================================== --- trunk/libgaim/protocols/msn/httpconn.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/msn/httpconn.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -727,7 +727,7 @@ if (httpconn->connected) msn_httpconn_disconnect(httpconn); - httpconn->connect_data = gaim_proxy_connect(httpconn->session->account, + httpconn->connect_data = gaim_proxy_connect(NULL, httpconn->session->account, "gateway.messenger.hotmail.com", 80, connect_cb, httpconn); if (httpconn->connect_data != NULL) Modified: trunk/libgaim/protocols/msn/servconn.c =================================================================== --- trunk/libgaim/protocols/msn/servconn.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/msn/servconn.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -213,9 +213,7 @@ if (servconn->connected) msn_servconn_disconnect(servconn); - if (servconn->host != NULL) - g_free(servconn->host); - + g_free(servconn->host); servconn->host = g_strdup(host); if (session->http_method) @@ -235,8 +233,8 @@ return TRUE; } - servconn->connect_data = gaim_proxy_connect(session->account, host, port, - connect_cb, servconn); + servconn->connect_data = gaim_proxy_connect(NULL, session->account, + host, port, connect_cb, servconn); if (servconn->connect_data != NULL) { Modified: trunk/libgaim/protocols/oscar/oscar.c =================================================================== --- trunk/libgaim/protocols/oscar/oscar.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/oscar/oscar.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -1211,7 +1211,7 @@ gaim_prefs_connect_callback(gc, "/plugins/prpl/oscar/recent_buddies", recent_buddies_cb, gc); newconn = flap_connection_new(od, SNAC_FAMILY_AUTH); - newconn->connect_data = gaim_proxy_connect(account, + newconn->connect_data = gaim_proxy_connect(NULL, account, gaim_account_get_string(account, "server", OSCAR_DEFAULT_LOGIN_SERVER), gaim_account_get_int(account, "port", OSCAR_DEFAULT_LOGIN_PORT), connection_established_cb, newconn); @@ -1333,7 +1333,7 @@ newconn = flap_connection_new(od, SNAC_FAMILY_LOCATE); newconn->cookielen = info->cookielen; newconn->cookie = g_memdup(info->cookie, info->cookielen); - newconn->connect_data = gaim_proxy_connect(account, host, port, + newconn->connect_data = gaim_proxy_connect(NULL, account, host, port, connection_established_cb, newconn); g_free(host); if (newconn->connect_data == NULL) @@ -1546,7 +1546,7 @@ pos->modname = g_strdup(modname); /* TODO: Keep track of this return value. */ - if (gaim_proxy_connect(pos->gc->account, "gaim.sourceforge.net", 80, + if (gaim_proxy_connect(NULL, pos->gc->account, "gaim.sourceforge.net", 80, straight_to_hell, pos) == NULL) { char buf[256]; @@ -1632,13 +1632,13 @@ gaim_debug_info("oscar", "Connecting to chat room %s exchange %hu\n", cc->name, cc->exchange); } - newconn->connect_data = gaim_proxy_connect(account, host, port, + newconn->connect_data = gaim_proxy_connect(NULL, account, host, port, connection_established_cb, newconn); if (newconn->connect_data == NULL) { flap_connection_schedule_destroy(newconn, OSCAR_DISCONNECT_COULD_NOT_CONNECT, - _("gaim_proxy_connect() failed")); + _("Unable to initialize connection")); gaim_debug_error("oscar", "Unable to connect to FLAP server " "of type 0x%04hx\n", redir->group); } Modified: trunk/libgaim/protocols/oscar/peer.c =================================================================== --- trunk/libgaim/protocols/oscar/peer.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/oscar/peer.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -708,7 +708,7 @@ g_free(tmp); } - conn->connect_data = gaim_proxy_connect(account, + conn->connect_data = gaim_proxy_connect(NULL, account, conn->verifiedip, conn->port, peer_connection_established_cb, conn); if (conn->connect_data != NULL) @@ -743,7 +743,7 @@ g_free(tmp); } - conn->connect_data = gaim_proxy_connect(account, + conn->connect_data = gaim_proxy_connect(NULL, account, conn->clientip, conn->port, peer_connection_established_cb, conn); if (conn->connect_data != NULL) @@ -807,7 +807,7 @@ g_free(tmp); } - conn->connect_data = gaim_proxy_connect(account, + conn->connect_data = gaim_proxy_connect(NULL, account, (conn->proxyip != NULL) ? conn->proxyip : PEER_PROXY_SERVER, PEER_PROXY_PORT, peer_proxy_connection_established_cb, conn); Modified: trunk/libgaim/protocols/qq/qq_proxy.c =================================================================== --- trunk/libgaim/protocols/qq/qq_proxy.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/qq/qq_proxy.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -420,7 +420,7 @@ qd->server_port = port; if(use_tcp) - return (gaim_proxy_connect(account, host, port, func, data) == NULL); + return (gaim_proxy_connect(NULL, account, host, port, func, data) == NULL); else return _qq_udp_proxy_connect(account, host, port, func, data); } Modified: trunk/libgaim/protocols/sametime/sametime.c =================================================================== --- trunk/libgaim/protocols/sametime/sametime.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/sametime/sametime.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -225,7 +225,6 @@ /** socket fd */ int socket; gint outpa; /* like inpa, but the other way */ - GaimProxyConnectData *connect_data; /** circular buffer for outgoing data */ GaimCircBuffer *sock_buf; @@ -1409,7 +1408,7 @@ port = gaim_account_get_int(account, MW_KEY_PORT, MW_PLUGIN_DEFAULT_PORT); if(gaim_account_get_bool(account, MW_KEY_FORCE, FALSE) || - (gaim_proxy_connect(account, host, port, connect_cb, pd) == NULL)) { + (gaim_proxy_connect(NULL, account, host, port, connect_cb, pd) == NULL)) { mwSession_forceLogin(session); } @@ -1674,8 +1673,6 @@ struct mwGaimPluginData *pd = data; GaimConnection *gc = pd->gc; - pd->connect_data = NULL; - if(source < 0) { /* connection failed */ @@ -3680,8 +3677,7 @@ gaim_connection_update_progress(gc, _("Connecting"), 1, MW_CONNECT_STEPS); - pd->connect_data = gaim_proxy_connect(account, host, port, connect_cb, pd); - if(pd->connect_data == NULL) { + if (gaim_proxy_connect(gc, account, host, port, connect_cb, pd) == NULL) { gaim_connection_error(gc, _("Unable to connect to host")); } } @@ -3714,11 +3710,6 @@ gc->inpa = 0; } - if(pd->connect_data != NULL) { - gaim_proxy_connect_cancel(pd->connect_data); - pd->connect_data = NULL; - } - /* clean up the rest */ mwGaimPluginData_free(pd); } Modified: trunk/libgaim/protocols/silc/silc.c =================================================================== --- trunk/libgaim/protocols/silc/silc.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/silc/silc.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -154,7 +154,6 @@ g_return_if_fail(gc != NULL); sg = gc->proto_data; - sg->connect_data = NULL; if (source < 0) { gaim_connection_error(gc, _("Connection failed")); @@ -357,12 +356,11 @@ gc->proto_data = sg; /* Connect to the SILC server */ - sg->connect_data = gaim_proxy_connect(account, + if (gaim_proxy_connect(gc, account, gaim_account_get_string(account, "server", "silc.silcnet.org"), gaim_account_get_int(account, "port", 706), - silcgaim_login_connected, gc); - if (sg->connect_data == NULL) + silcgaim_login_connected, gc) == NULL) { gaim_connection_error(gc, _("Unable to create connection")); return; @@ -382,8 +380,6 @@ SilcGaim sg = (SilcGaim)context; silc_client_stop(sg->client); silc_client_free(sg->client); - if (sg->connect_data != NULL) - gaim_proxy_connect_cancel(sg->connect_data); #ifdef HAVE_SILCMIME_H if (sg->mimeass) silc_mime_assembler_free(sg->mimeass); Modified: trunk/libgaim/protocols/silc/silcgaim.h =================================================================== --- trunk/libgaim/protocols/silc/silcgaim.h 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/silc/silcgaim.h 2006-10-28 20:04:03 UTC (rev 17606) @@ -67,7 +67,6 @@ SilcClient client; SilcClientConnection conn; - GaimProxyConnectData *connect_data; guint scheduler; GaimConnection *gc; GaimAccount *account; Modified: trunk/libgaim/protocols/simple/simple.c =================================================================== --- trunk/libgaim/protocols/simple/simple.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/simple/simple.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -457,12 +457,10 @@ static void sendlater(GaimConnection *gc, const char *buf) { struct simple_account_data *sip = gc->proto_data; - GaimProxyConnectData *connect_data; if(!sip->connecting) { gaim_debug_info("simple", "connecting to %s port %d\n", sip->realhostname ? sip->realhostname : "{NULL}", sip->realport); - connect_data = gaim_proxy_connect(sip->account, sip->realhostname, sip->realport, send_later_cb, gc); - if(connect_data == NULL) { + if (gaim_proxy_connect(gc, sip->account, sip->realhostname, sip->realport, send_later_cb, gc) == NULL) { gaim_connection_error(gc, _("Couldn't create socket")); } sip->connecting = TRUE; @@ -1565,7 +1563,6 @@ static void simple_tcp_connect_listen_cb(int listenfd, gpointer data) { struct simple_account_data *sip = (struct simple_account_data*) data; - GaimProxyConnectData *connect_data; sip->listen_data = NULL; @@ -1582,9 +1579,8 @@ gaim_debug_info("simple", "connecting to %s port %d\n", sip->realhostname, sip->realport); /* open tcp connection to the server */ - connect_data = gaim_proxy_connect(sip->account, sip->realhostname, - sip->realport, login_cb, sip->gc); - if(connect_data == NULL) { + if (gaim_proxy_connect(sip->gc, sip->account, sip->realhostname, + sip->realport, login_cb, sip->gc) == NULL) { gaim_connection_error(sip->gc, _("Couldn't create socket")); } } Modified: trunk/libgaim/protocols/toc/toc.c =================================================================== --- trunk/libgaim/protocols/toc/toc.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/toc/toc.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -141,7 +141,7 @@ gaim_connection_update_progress(gc, buf, 0, TOC_CONNECT_STEPS); gaim_debug(GAIM_DEBUG_INFO, "toc", "Client connects to TOC\n"); - if (gaim_proxy_connect(account, + if (gaim_proxy_connect(gc, account, gaim_account_get_string(account, "server", TOC_HOST), gaim_account_get_int(account, "port", TOC_PORT), toc_login_callback, gc) != 0 || !account->gc) { @@ -1933,7 +1933,7 @@ g_snprintf(buf, sizeof(buf), "toc_rvous_accept %s %s %s", ft->user, ft->cookie, FILE_SEND_UID); sflap_send(ft->gc, buf, -1, TYPE_DATA); - if (gaim_proxy_connect(account, ft->ip, ft->port, toc_send_file_connect, ft) != 0) { + if (gaim_proxy_connect(ft->gc, account, ft->ip, ft->port, toc_send_file_connect, ft) != 0) { gaim_notify_error(ft->gc, NULL, _("Could not connect for transfer."), NULL); g_free(ft->filename); @@ -2145,7 +2145,7 @@ g_snprintf(buf2, sizeof(buf2), "toc_rvous_accept %s %s %s", ft->user, ft->cookie, FILE_GET_UID); sflap_send(ft->gc, buf2, -1, TYPE_DATA); - if (gaim_proxy_connect(account, ft->ip, ft->port, toc_get_file_connect, ft) < 0) { + if (gaim_proxy_connect(ft->gc, account, ft->ip, ft->port, toc_get_file_connect, ft) < 0) { gaim_notify_error(ft->gc, NULL, _("Could not connect for transfer."), NULL); fclose(ft->file); Modified: trunk/libgaim/protocols/yahoo/yahoo.c =================================================================== --- trunk/libgaim/protocols/yahoo/yahoo.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/yahoo/yahoo.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -2459,7 +2459,7 @@ yd->rxqueue = NULL; yd->rxlen = 0; /* Now we have our cookies to login with. I'll go get the milk. */ - if (gaim_proxy_connect(account, "wcs2.msg.dcn.yahoo.com", + if (gaim_proxy_connect(gc, account, "wcs2.msg.dcn.yahoo.com", gaim_account_get_int(account, "port", YAHOO_PAGER_PORT), yahoo_got_web_connected, gc) == NULL) { gaim_connection_error(gc, _("Connection problem")); @@ -2633,7 +2633,7 @@ "Host: login.yahoo.com\r\n\r\n"); g_hash_table_destroy(hash); yd->auth = g_string_free(url, FALSE); - if (gaim_proxy_connect(account, "login.yahoo.com", 80, yahoo_got_cookies, gc) == NULL) { + if (gaim_proxy_connect(gc, account, "login.yahoo.com", 80, yahoo_got_cookies, gc) == NULL) { gaim_connection_error(gc, _("Connection problem")); return; } @@ -2732,7 +2732,7 @@ if (gaim_account_get_bool(account, "yahoojp", FALSE)) { yd->jp = TRUE; - if (gaim_proxy_connect(account, + if (gaim_proxy_connect(gc, account, gaim_account_get_string(account, "serverjp", YAHOOJP_PAGER_HOST), gaim_account_get_int(account, "port", YAHOO_PAGER_PORT), yahoo_got_connected, gc) == NULL) @@ -2742,7 +2742,7 @@ } } else { yd->jp = FALSE; - if (gaim_proxy_connect(account, + if (gaim_proxy_connect(gc, account, gaim_account_get_string(account, "server", YAHOO_PAGER_HOST), gaim_account_get_int(account, "port", YAHOO_PAGER_PORT), yahoo_got_connected, gc) == NULL) Modified: trunk/libgaim/protocols/yahoo/yahoo_filexfer.c =================================================================== --- trunk/libgaim/protocols/yahoo/yahoo_filexfer.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/yahoo/yahoo_filexfer.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -261,7 +261,7 @@ if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) { if (yd->jp) { - if (gaim_proxy_connect(account, gaim_account_get_string(account, "xferjp_host", YAHOOJP_XFER_HOST), + if (gaim_proxy_connect(NULL, account, gaim_account_get_string(account, "xferjp_host", YAHOOJP_XFER_HOST), gaim_account_get_int(account, "xfer_port", YAHOO_XFER_PORT), yahoo_sendfile_connected, xfer) == NULL) { @@ -270,7 +270,7 @@ gaim_xfer_cancel_remote(xfer); } } else { - if (gaim_proxy_connect(account, gaim_account_get_string(account, "xfer_host", YAHOO_XFER_HOST), + if (gaim_proxy_connect(NULL, account, gaim_account_get_string(account, "xfer_host", YAHOO_XFER_HOST), gaim_account_get_int(account, "xfer_port", YAHOO_XFER_PORT), yahoo_sendfile_connected, xfer) == NULL) { @@ -281,7 +281,7 @@ } } else { /* TODO: Using xfer->fd like this is probably a bad thing... */ - if (gaim_proxy_connect(account, xfer_data->host, xfer_data->port, + if (gaim_proxy_connect(NULL, account, xfer_data->host, xfer_data->port, yahoo_receivefile_connected, xfer) == NULL) xfer->fd = -1; else Modified: trunk/libgaim/protocols/yahoo/yahoo_picture.c =================================================================== --- trunk/libgaim/protocols/yahoo/yahoo_picture.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/yahoo/yahoo_picture.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -511,7 +511,7 @@ } if (yd->jp) { - if ((connect_data = gaim_proxy_connect(account, gaim_account_get_string(account, "xferjp_host", YAHOOJP_XFER_HOST), + if ((connect_data = gaim_proxy_connect(NULL, account, gaim_account_get_string(account, "xferjp_host", YAHOOJP_XFER_HOST), gaim_account_get_int(account, "xfer_port", YAHOO_XFER_PORT), yahoo_buddy_icon_upload_connected, d)) == NULL) { @@ -519,7 +519,7 @@ yahoo_buddy_icon_upload_data_free(d); } } else { - if ((connect_data = gaim_proxy_connect(account, gaim_account_get_string(account, "xfer_host", YAHOO_XFER_HOST), + if ((connect_data = gaim_proxy_connect(NULL, account, gaim_account_get_string(account, "xfer_host", YAHOO_XFER_HOST), gaim_account_get_int(account, "xfer_port", YAHOO_XFER_PORT), yahoo_buddy_icon_upload_connected, d)) == NULL) { Modified: trunk/libgaim/protocols/yahoo/yahoochat.c =================================================================== --- trunk/libgaim/protocols/yahoo/yahoochat.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/yahoo/yahoochat.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -1449,7 +1449,7 @@ gaim_roomlist_set_fields(rl, fields); - if (gaim_proxy_connect(gaim_connection_get_account(gc), yrl->host, 80, + if (gaim_proxy_connect(NULL, gaim_connection_get_account(gc), yrl->host, 80, yahoo_roomlist_got_connected, yrl) == NULL) { gaim_notify_error(gc, NULL, _("Connection problem"), _("Unable to fetch room list.")); @@ -1518,7 +1518,7 @@ yrl->ucat = gaim_roomlist_room_new(GAIM_ROOMLIST_ROOMTYPE_CATEGORY, _("User Rooms"), yrl->cat); gaim_roomlist_room_add(list, yrl->ucat); - if (gaim_proxy_connect(list->account, yrl->host, 80, + if (gaim_proxy_connect(NULL, list->account, yrl->host, 80, yahoo_roomlist_got_connected, yrl) == NULL) { gaim_notify_error(gaim_account_get_connection(list->account), Modified: trunk/libgaim/protocols/yahoo/ycht.c =================================================================== --- trunk/libgaim/protocols/yahoo/ycht.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/protocols/yahoo/ycht.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -577,7 +577,7 @@ yd->ycht = ycht; - if (gaim_proxy_connect(account, + if (gaim_proxy_connect(NULL, account, gaim_account_get_string(account, "ycht-server", YAHOO_YCHT_HOST), gaim_account_get_int(account, "ycht-port", YAHOO_YCHT_PORT), ycht_got_connected, ycht) == NULL) Modified: trunk/libgaim/proxy.c =================================================================== --- trunk/libgaim/proxy.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/proxy.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -40,6 +40,7 @@ #include "util.h" struct _GaimProxyConnectData { + void *handle; GaimProxyConnectFunction connect_cb; gpointer data; gchar *host; @@ -82,12 +83,7 @@ static GaimProxyInfo *global_proxy_info = NULL; -/* - * TODO: Once all callers of gaim_proxy_connect() are keeping track - * of the return value from that function this linked list - * will no longer be needed. - */ -static GSList *connect_datas = NULL; +static GSList *handles = NULL; static void try_connect(GaimProxyConnectData *connect_data); @@ -281,7 +277,7 @@ static void gaim_proxy_connect_data_destroy(GaimProxyConnectData *connect_data) { - connect_datas = g_slist_remove(connect_datas, connect_data); + handles = g_slist_remove(handles, connect_data); if (connect_data->query_data != NULL) gaim_dnsquery_destroy(connect_data->query_data); @@ -1750,7 +1746,8 @@ } GaimProxyConnectData * -gaim_proxy_connect(GaimAccount *account, const char *host, int port, +gaim_proxy_connect(void *handle, GaimAccount *account, + const char *host, int port, GaimProxyConnectFunction connect_cb, gpointer data) { const char *connecthost = host; @@ -1763,6 +1760,7 @@ connect_data = g_new0(GaimProxyConnectData, 1); connect_data->fd = -1; + connect_data->handle = handle; connect_data->connect_cb = connect_cb; connect_data->data = data; connect_data->host = g_strdup(host); @@ -1804,7 +1802,7 @@ return NULL; } - connect_datas = g_slist_prepend(connect_datas, connect_data); + handles = g_slist_prepend(handles, connect_data); return connect_data; } @@ -1813,8 +1811,10 @@ * Combine some of this code with gaim_proxy_connect() */ GaimProxyConnectData * -gaim_proxy_connect_socks5(GaimProxyInfo *gpi, const char *host, int port, - GaimProxyConnectFunction connect_cb, gpointer data) +gaim_proxy_connect_socks5(void *handle, GaimProxyInfo *gpi, + const char *host, int port, + GaimProxyConnectFunction connect_cb, + gpointer data) { GaimProxyConnectData *connect_data; @@ -1824,6 +1824,7 @@ connect_data = g_new0(GaimProxyConnectData, 1); connect_data->fd = -1; + connect_data->handle = handle; connect_data->connect_cb = connect_cb; connect_data->data = data; connect_data->host = g_strdup(host); @@ -1840,7 +1841,7 @@ return NULL; } - connect_datas = g_slist_prepend(connect_datas, connect_data); + handles = g_slist_prepend(handles, connect_data); return connect_data; } @@ -1852,6 +1853,21 @@ gaim_proxy_connect_data_destroy(connect_data); } +void +gaim_proxy_connect_cancel_with_handle(void *handle) +{ + GSList *l, *l_next; + + for (l = handles; l != NULL; l = l_next) { + GaimProxyConnectData *connect_data = l->data; + + l_next = l->next; + + if (connect_data->handle == handle) + gaim_proxy_connect_cancel(connect_data); + } +} + static void proxy_pref_cb(const char *name, GaimPrefType type, gconstpointer value, gpointer data) @@ -1927,9 +1943,9 @@ void gaim_proxy_uninit(void) { - while (connect_datas != NULL) + while (handles != NULL) { - gaim_proxy_connect_data_disconnect(connect_datas->data, NULL); - gaim_proxy_connect_data_destroy(connect_datas->data); + gaim_proxy_connect_data_disconnect(handles->data, NULL); + gaim_proxy_connect_data_destroy(handles->data); } } Modified: trunk/libgaim/proxy.h =================================================================== --- trunk/libgaim/proxy.h 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/proxy.h 2006-10-28 20:04:03 UTC (rev 17606) @@ -237,7 +237,8 @@ * structure that can be used to cancel the pending * connection, if needed. */ -GaimProxyConnectData *gaim_proxy_connect(GaimAccount *account, +GaimProxyConnectData *gaim_proxy_connect(void *handle, + GaimAccount *account, const char *host, int port, GaimProxyConnectFunction connect_cb, gpointer data); @@ -257,7 +258,8 @@ * structure that can be used to cancel the pending * connection, if needed. */ -GaimProxyConnectData *gaim_proxy_connect_socks5(GaimProxyInfo *gpi, +GaimProxyConnectData *gaim_proxy_connect_socks5(void *handle, + GaimProxyInfo *gpi, const char *host, int port, GaimProxyConnectFunction connect_cb, gpointer data); @@ -272,6 +274,13 @@ */ void gaim_proxy_connect_cancel(GaimProxyConnectData *connect_data); +/* + * Closes all proxy connections registered with the specified handle. + * + * @param handle The handle. + */ +void gaim_proxy_connect_cancel_with_handle(void *handle); + /*@}*/ #ifdef __cplusplus Modified: trunk/libgaim/sslconn.c =================================================================== --- trunk/libgaim/sslconn.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/sslconn.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -117,7 +117,7 @@ gsc->connect_cb = func; gsc->error_cb = error_func; - gsc->connect_data = gaim_proxy_connect(account, host, port, gaim_ssl_connect_cb, gsc); + gsc->connect_data = gaim_proxy_connect(NULL, account, host, port, gaim_ssl_connect_cb, gsc); if (gsc->connect_data == NULL) { Modified: trunk/libgaim/upnp.c =================================================================== --- trunk/libgaim/upnp.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/upnp.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -215,14 +215,14 @@ /* make sure we have a valid http response */ if(g_strstr_len(httpResponse, len, HTTP_OK) == NULL) { gaim_debug_error("upnp", - "parse_description_response(): Failed In HTTP_OK\n\n"); + "parse_description_response(): Failed In HTTP_OK\n"); return NULL; } /* find the root of the xml document */ if((xmlRoot = g_strstr_len(httpResponse, len, "<root")) == NULL) { gaim_debug_error("upnp", - "parse_description_response(): Failed finding root\n\n"); + "parse_description_response(): Failed finding root\n"); return NULL; } @@ -230,7 +230,7 @@ if((xmlRootNode = xmlnode_from_str(xmlRoot, len - (xmlRoot - httpResponse))) == NULL) { gaim_debug_error("upnp", - "parse_description_response(): Could not parse xml root node\n\n"); + "parse_description_response(): Could not parse xml root node\n"); return NULL; } @@ -252,7 +252,7 @@ } if(serviceTypeNode == NULL) { gaim_debug_error("upnp", - "parse_description_response(): could not get serviceTypeNode 1\n\n"); + "parse_description_response(): could not get serviceTypeNode 1\n"); g_free(baseURL); xmlnode_free(xmlRootNode); return NULL; @@ -260,7 +260,7 @@ serviceTypeNode = xmlnode_get_child(serviceTypeNode, "deviceList"); if(serviceTypeNode == NULL) { gaim_debug_error("upnp", - "parse_description_response(): could not get serviceTypeNode 2\n\n"); + "parse_description_response(): could not get serviceTypeNode 2\n"); g_free(baseURL); xmlnode_free(xmlRootNode); return NULL; @@ -275,7 +275,7 @@ } if(serviceTypeNode == NULL) { gaim_debug_error("upnp", - "parse_description_response(): could not get serviceTypeNode 3\n\n"); + "parse_description_response(): could not get serviceTypeNode 3\n"); g_free(baseURL); xmlnode_free(xmlRootNode); return NULL; @@ -283,7 +283,7 @@ serviceTypeNode = xmlnode_get_child(serviceTypeNode, "deviceList"); if(serviceTypeNode == NULL) { gaim_debug_error("upnp", - "parse_description_response(): could not get serviceTypeNode 4\n\n"); + "parse_description_response(): could not get serviceTypeNode 4\n"); g_free(baseURL); xmlnode_free(xmlRootNode); return NULL; @@ -297,7 +297,7 @@ } if(serviceTypeNode == NULL) { gaim_debug_error("upnp", - "parse_description_response(): could not get serviceTypeNode 5\n\n"); + "parse_description_response(): could not get serviceTypeNode 5\n"); g_free(baseURL); xmlnode_free(xmlRootNode); return NULL; @@ -305,7 +305,7 @@ serviceTypeNode = xmlnode_get_child(serviceTypeNode, "serviceList"); if(serviceTypeNode == NULL) { gaim_debug_error("upnp", - "parse_description_response(): could not get serviceTypeNode 6\n\n"); + "parse_description_response(): could not get serviceTypeNode 6\n"); g_free(baseURL); xmlnode_free(xmlRootNode); return NULL; @@ -322,7 +322,7 @@ g_free(service); if(serviceTypeNode == NULL) { gaim_debug_error("upnp", - "parse_description_response(): could not get serviceTypeNode 7\n\n"); + "parse_description_response(): could not get serviceTypeNode 7\n"); g_free(baseURL); xmlnode_free(xmlRootNode); return NULL; @@ -332,7 +332,7 @@ if((controlURLNode = xmlnode_get_child(serviceTypeNode, "controlURL")) == NULL) { gaim_debug_error("upnp", - "parse_description_response(): Could not find controlURL\n\n"); + "parse_description_response(): Could not find controlURL\n"); g_free(baseURL); xmlnode_free(xmlRootNode); return NULL; @@ -367,7 +367,7 @@ if(control_url == NULL) { gaim_debug_error("upnp", - "gaim_upnp_parse_description(): control URL is NULL\n\n"); + "gaim_upnp_parse_description(): control URL is NULL\n"); } control_info.status = control_url ? GAIM_UPNP_STATUS_DISCOVERED @@ -444,13 +444,13 @@ if(g_strstr_len(buf, buf_len, HTTP_OK) == NULL) { gaim_debug_error("upnp", - "parse_discover_response(): Failed In HTTP_OK\n\n"); + "parse_discover_response(): Failed In HTTP_OK\n"); return; } if((startDescURL = g_strstr_len(buf, buf_len, "http://")) == NULL) { gaim_debug_error("upnp", - "parse_discover_response(): Failed In finding http://\n\n"); + "parse_discover_response(): Failed In finding http://\n"); return; } @@ -461,7 +461,7 @@ buf_len - (startDescURL - buf), "\n"); if(endDescURL == NULL) { gaim_debug_error("upnp", - "parse_discover_response(): Failed In endDescURL\n\n"); + "parse_discover_response(): Failed In endDescURL\n"); return; } } @@ -469,7 +469,7 @@ /* XXX: I'm not sure how this could ever happen */ if(endDescURL == startDescURL) { gaim_debug_error("upnp", - "parse_discover_response(): endDescURL == startDescURL\n\n"); + "parse_discover_response(): endDescURL == startDescURL\n"); return; } @@ -492,6 +492,7 @@ dd->tima = 0; if (dd->retry_count < NUM_UDP_ATTEMPTS) { + /* TODO: We probably shouldn't be incrementing retry_count in two places */ dd->retry_count++; gaim_upnp_discover_send_broadcast(dd); } else { @@ -625,7 +626,7 @@ sock = socket(AF_INET, SOCK_DGRAM, 0); if(sock == -1) { gaim_debug_error("upnp", - "gaim_upnp_discover(): Failed In sock creation\n\n"); + "gaim_upnp_discover(): Failed In sock creation\n"); /* Short circuit the retry attempts */ dd->retry_count = NUM_UDP_ATTEMPTS; gaim_timeout_add(10, gaim_upnp_discover_timeout, dd); @@ -634,10 +635,10 @@ dd->fd = sock; - /* This shouldn't block */ + /* TODO: Non-blocking! */ if((hp = gethostbyname(HTTPMU_HOST_ADDRESS)) == NULL) { gaim_debug_error("upnp", - "gaim_upnp_discover(): Failed In gethostbyname\n\n"); + "gaim_upnp_discover(): Failed In gethostbyname\n"); /* Short circuit the retry attempts */ dd->retry_count = NUM_UDP_ATTEMPTS; gaim_timeout_add(10, gaim_upnp_discover_timeout, dd); @@ -670,7 +671,7 @@ if(!gaim_url_parse(control_info.control_url, &addressOfControl, &port, &pathOfControl, NULL, NULL)) { gaim_debug_error("upnp", - "generate_action_message_and_send(): Failed In Parse URL\n\n"); + "generate_action_message_and_send(): Failed In Parse URL\n"); /* XXX: This should probably be async */ if(cb) cb(NULL, cb_data, NULL, 0, NULL); @@ -728,17 +729,17 @@ if((temp = g_strstr_len(httpResponse, len, "<NewExternalIPAddress")) == NULL) { gaim_debug_error("upnp", - "looked_up_public_ip_cb(): Failed Finding <NewExternalIPAddress\n\n"); + "looked_up_public_ip_cb(): Failed Finding <NewExternalIPAddress\n"); return; } if(!(temp = g_strstr_len(temp, len - (temp - httpResponse), ">"))) { gaim_debug_error("upnp", - "looked_up_public_ip_cb(): Failed In Finding >\n\n"); + "looked_up_public_ip_cb(): Failed In Finding >\n"); return; } if(!(temp2 = g_strstr_len(temp, len - (temp - httpResponse), "<"))) { gaim_debug_error("upnp", - "looked_up_public_ip_cb(): Failed In Finding <\n\n"); + "looked_up_public_ip_cb(): Failed In Finding <\n"); return; } *temp2 = '\0'; @@ -798,14 +799,14 @@ if(!gaim_url_parse(control_info.control_url, &addressOfControl, &port, NULL, NULL, NULL)) { gaim_debug_error("upnp", - "lookup_internal_ip(): Failed In Parse URL\n\n"); + "lookup_internal_ip(): Failed In Parse URL\n"); return; } if(port == 0 || port == -1) { port = DEFAULT_HTTP_PORT; } - if(gaim_proxy_connect(NULL, addressOfControl, port, + if(gaim_proxy_connect(NULL, NULL, addressOfControl, port, looked_up_internal_ip_cb, NULL) == NULL) { gaim_debug_error("upnp", "Get Local IP Connect Failed: Address: %s @@@ Port %d\n", @@ -828,7 +829,7 @@ (g_strstr_len(httpResponse, len, HTTP_OK) == NULL)) { gaim_debug_error("upnp", - "gaim_upnp_set_port_mapping(): Failed HTTP_OK\n\n%s\n\n", + "gaim_upnp_set_port_mapping(): Failed HTTP_OK\n%s\n", httpResponse ? httpResponse : "(null)"); success = FALSE; } else @@ -852,7 +853,7 @@ /* get the internal IP */ if(!(internal_ip = gaim_upnp_get_internal_ip())) { gaim_debug_error("upnp", - "gaim_upnp_set_port_mapping(): couldn't get local ip\n\n"); + "gaim_upnp_set_port_mapping(): couldn't get local ip\n"); /* UGLY */ if (ar->cb) ar->cb(FALSE, ar->cb_data); Modified: trunk/libgaim/util.c =================================================================== --- trunk/libgaim/util.c 2006-10-28 19:52:30 UTC (rev 17605) +++ trunk/libgaim/util.c 2006-10-28 20:04:03 UTC (rev 17606) @@ -3152,7 +3152,7 @@ gaim_url_parse(new_url, &gfud->website.address, &gfud->website.port, &gfud->website.page, &gfud->website.user, &gfud->website.passwd); - gfud->connect_data = gaim_proxy_connect(NULL, + gfud->connect_data = gaim_proxy_connect(NULL, NULL, gfud->website.address, gfud->website.port, url_fetch_connect_cb, gfud); @@ -3451,7 +3451,7 @@ gaim_url_parse(url, &gfud->website.address, &gfud->website.port, &gfud->website.page, &gfud->website.user, &gfud->website.passwd); - gfud->connect_data = gaim_proxy_connect(NULL, + gfud->connect_data = gaim_proxy_connect(NULL, NULL, gfud->website.address, gfud->website.port, url_fetch_connect_cb, gfud); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-10-29 23:28:58
|
Revision: 17620 http://svn.sourceforge.net/gaim/?rev=17620&view=rev Author: datallah Date: 2006-10-29 15:28:37 -0800 (Sun, 29 Oct 2006) Log Message: ----------- A couple patches from Lee Roach. -Delete the Perl loader link library when making clean. -Force the Tcl loader plugin to use the ActiveTcl installation. This will prevent 99.99% of the cygwin "hang on start" issues, at the cost of having the Tcl loader not work for some people - if you're one of the 5 or so people using the Tcl loader on win32, you can figure out how to fix it - maybe we'll add a faq entry. This should cut down on the frequent bug reports of gaim failing to start. Modified Paths: -------------- trunk/COPYRIGHT trunk/libgaim/plugins/perl/Makefile.mingw trunk/libgaim/plugins/tcl/tcl.c Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-10-29 15:59:05 UTC (rev 17619) +++ trunk/COPYRIGHT 2006-10-29 23:28:37 UTC (rev 17620) @@ -243,6 +243,7 @@ Pekka Riikonen Tim Ringenbach Dennis Ristuccia +Lee Roach Rhett Robinson Luciano Miguel Ferreira Rocha Andrew Rodland Modified: trunk/libgaim/plugins/perl/Makefile.mingw =================================================================== --- trunk/libgaim/plugins/perl/Makefile.mingw 2006-10-29 15:59:05 UTC (rev 17619) +++ trunk/libgaim/plugins/perl/Makefile.mingw 2006-10-29 23:28:37 UTC (rev 17620) @@ -76,7 +76,7 @@ ## clean: rm -rf $(OBJECTS) - rm -rf $(TARGET).dll + rm -rf $(TARGET).dll $(TARGET).dll.a $(MAKE) -C ./common -f $(GAIM_WIN32_MAKEFILE) clean include $(GAIM_COMMON_TARGETS) Modified: trunk/libgaim/plugins/tcl/tcl.c =================================================================== --- trunk/libgaim/plugins/tcl/tcl.c 2006-10-29 15:59:05 UTC (rev 17619) +++ trunk/libgaim/plugins/tcl/tcl.c 2006-10-29 23:28:37 UTC (rev 17620) @@ -437,36 +437,50 @@ #define Tk_Init wtk_Init static gboolean tcl_win32_init() { - gaim_debug(GAIM_DEBUG_INFO, "tcl", - "Initializing the Tcl runtime. If Gaim doesn't load, it is " - "most likely because you have cygwin in your PATH and you " - "should remove it. See http://gaim.sf.net/win32 for more " - "information\n"); + const char regkey[] = "SOFTWARE\\ActiveState\\ActiveTcl\\"; + char *version = NULL; + gboolean retval = FALSE; - if(!(wtcl_CreateInterp = (LPFNTCLCREATEINTERP) wgaim_find_and_loadproc("tcl84.dll", "Tcl_CreateInterp"))) { - gaim_debug(GAIM_DEBUG_INFO, "tcl", "tcl_win32_init error loading Tcl_CreateInterp\n"); - return FALSE; - } + if ((version = wgaim_read_reg_string(HKEY_LOCAL_MACHINE, regkey, "CurrentVersion")) + || (version = wgaim_read_reg_string(HKEY_CURRENT_USER, regkey, "CurrentVersion"))) { + char *path; + char *regkey2; - if(!(wtk_Init = (LPFNTKINIT) wgaim_find_and_loadproc("tk84.dll", "Tk_Init"))) { - HMODULE mod; - gaim_debug(GAIM_DEBUG_INFO, "tcl", "tcl_win32_init error loading Tk_Init\n"); - if((mod = GetModuleHandle("tcl84.dll"))) - FreeLibrary(mod); - return FALSE; - } + regkey2 = g_strdup_printf("%s%s\\", regkey, version); + if ((path = wgaim_read_reg_string(HKEY_LOCAL_MACHINE, regkey2, NULL)) || (path = wgaim_read_reg_string(HKEY_CURRENT_USER, regkey2, NULL))) { + char *tclpath; + char *tkpath; - if (GetModuleHandle("cygwin1.dll")) { - HMODULE mod; - gaim_debug(GAIM_DEBUG_INFO, "tcl", "Cygwin has been loaded by tcl84.dll and/or tk84.dll. Disabling Tcl support to avoid problems.\n"); - if((mod = GetModuleHandle("tcl84.dll"))) - FreeLibrary(mod); - if((mod = GetModuleHandle("tk84.dll"))) - FreeLibrary(mod); - return FALSE; + gaim_debug(GAIM_DEBUG_INFO, "tcl", "Loading ActiveTCL version %s from \"%s\"\n", version, path); + + tclpath = g_build_filename(path, "bin", "tcl84.dll", NULL); + tkpath = g_build_filename(path, "bin", "tk84.dll", NULL); + + if(!(wtcl_CreateInterp = (LPFNTCLCREATEINTERP) wgaim_find_and_loadproc(tclpath, "Tcl_CreateInterp"))) { + gaim_debug(GAIM_DEBUG_INFO, "tcl", "tcl_win32_init error loading Tcl_CreateInterp\n"); + } else { + if(!(wtk_Init = (LPFNTKINIT) wgaim_find_and_loadproc(tkpath, "Tk_Init"))) { + HMODULE mod; + gaim_debug(GAIM_DEBUG_INFO, "tcl", "tcl_win32_init error loading Tk_Init\n"); + if((mod = GetModuleHandle("tcl84.dll"))) + FreeLibrary(mod); + } else { + retval = TRUE; + } + } + g_free(tclpath); + g_free(tkpath); + } + g_free(path); + g_free(regkey2); } - return TRUE; + g_free(version); + + if (!retval) + gaim_debug(GAIM_DEBUG_INFO, "tcl", _("Unable to detect ActiveTCL installation. If you wish to use TCL plugins, install ActiveTCL from http://www.activestate.com\n")); + + return retval; } #endif /* _WIN32 */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-29 23:36:29
|
Revision: 17621 http://svn.sourceforge.net/gaim/?rev=17621&view=rev Author: sadrul Date: 2006-10-29 15:35:57 -0800 (Sun, 29 Oct 2006) Log Message: ----------- Allow custom buddy icons for people in the buddylist. It's done completely in the UI side. The custom icon does not overwrite the original icon, which is displayed in the tooltip. You can set the icon by dragging an image on the conv window, or on the buddy in the buddylist. You can also set/remove custom icon from the conversation window by right clicking on the icon in the conv window. Modified Paths: -------------- trunk/ChangeLog.API trunk/gtk/gtkblist.c trunk/gtk/gtkconv.c trunk/gtk/gtkutils.c trunk/gtk/gtkutils.h Modified: trunk/ChangeLog.API =================================================================== --- trunk/ChangeLog.API 2006-10-29 23:28:37 UTC (rev 17620) +++ trunk/ChangeLog.API 2006-10-29 23:35:57 UTC (rev 17621) @@ -138,6 +138,7 @@ a change in the values stored in the column. * gaim_find_buddies() returns a list of all buddies in the account if name is NULL. + * gaim_gtk_set_custom_buddy_icon() sets custom icon for a user. Removed: * gaim_gtk_sound_{get,set}_mute() (replaced by the /gaim/gtk/sound/mute Modified: trunk/gtk/gtkblist.c =================================================================== --- trunk/gtk/gtkblist.c 2006-10-29 23:28:37 UTC (rev 17620) +++ trunk/gtk/gtkblist.c 2006-10-29 23:35:57 UTC (rev 17621) @@ -1992,12 +1992,12 @@ } static GdkPixbuf *gaim_gtk_blist_get_buddy_icon(GaimBlistNode *node, - gboolean scaled, gboolean greyed) + gboolean scaled, gboolean greyed, gboolean custom) { GdkPixbuf *buf, *ret = NULL; GdkPixbufLoader *loader; GaimBuddyIcon *icon; - const guchar *data; + const guchar *data = NULL; gsize len; GaimBuddy *buddy = (GaimBuddy *)node; @@ -2014,12 +2014,30 @@ return NULL; #endif - if (!(icon = gaim_buddy_get_icon(buddy))) - if (!(icon = gaim_buddy_icons_find(buddy->account, buddy->name))) /* Not sure I like this...*/ - return NULL; + if (custom) { + const char *file = gaim_blist_node_get_string((GaimBlistNode*)gaim_buddy_get_contact(buddy), + "custom_buddy_icon"); + if (file && *file) { + char *contents; + GError *err = NULL; + if (!g_file_get_contents(file, &contents, &len, &err)) { + gaim_debug_info("custom -icon", "Could not open custom-icon %s for %s\n", + file, gaim_buddy_get_name(buddy), err->message); + g_error_free(err); + } else + data = (const guchar*)contents; + } + } + if (data == NULL) { + if (!(icon = gaim_buddy_get_icon(buddy))) + if (!(icon = gaim_buddy_icons_find(buddy->account, buddy->name))) /* Not sure I like this...*/ + return NULL; + data = gaim_buddy_icon_get_data(icon, &len); + custom = FALSE; /* We are not using the custom icon */ + } + loader = gdk_pixbuf_loader_new(); - data = gaim_buddy_icon_get_data(icon, &len); gdk_pixbuf_loader_write(loader, data, len, NULL); gdk_pixbuf_loader_close(loader, NULL); buf = gdk_pixbuf_loader_get_pixbuf(loader); @@ -2027,6 +2045,8 @@ g_object_ref(G_OBJECT(buf)); g_object_unref(G_OBJECT(loader)); + if (custom) + g_free((void*)data); if (buf) { GaimAccount *account = gaim_buddy_get_account(buddy); GaimPluginProtocolInfo *prpl_info = NULL; @@ -2088,7 +2108,7 @@ struct tooltip_data *td = g_new0(struct tooltip_data, 1); td->status_icon = gaim_gtk_blist_get_status_icon(node, GAIM_STATUS_ICON_LARGE); - td->avatar = gaim_gtk_blist_get_buddy_icon(node, !full, FALSE); + td->avatar = gaim_gtk_blist_get_buddy_icon(node, !full, FALSE, FALSE); tooltip_text = gaim_get_tooltip_text(node, full); td->layout = gtk_widget_create_pango_layout(gtkblist->tipwindow, NULL); pango_layout_set_markup(td->layout, tooltip_text, -1); @@ -4470,7 +4490,7 @@ status = gaim_gtk_blist_get_status_icon((GaimBlistNode*)buddy, biglist ? GAIM_STATUS_ICON_LARGE : GAIM_STATUS_ICON_SMALL); - avatar = gaim_gtk_blist_get_buddy_icon((GaimBlistNode *)buddy, TRUE, TRUE); + avatar = gaim_gtk_blist_get_buddy_icon((GaimBlistNode *)buddy, TRUE, TRUE, TRUE); mark = gaim_gtk_blist_get_name_markup(buddy, selected); if (gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time") && Modified: trunk/gtk/gtkconv.c =================================================================== --- trunk/gtk/gtkconv.c 2006-10-29 23:28:37 UTC (rev 17620) +++ trunk/gtk/gtkconv.c 2006-10-29 23:35:57 UTC (rev 17621) @@ -2354,7 +2354,7 @@ } static void -remove_icon(GaimGtkConversation *gtkconv) +remove_icon(GtkWidget *widget, GaimGtkConversation *gtkconv) { GaimConversation *conv = gtkconv->active_conv; GaimGtkWindow *gtkwin; @@ -2412,7 +2412,54 @@ fclose(fp); } +static const char * +custom_icon_pref_name(GaimGtkConversation *gtkconv) +{ + GaimConversation *conv; + GaimAccount *account; + GaimBuddy *buddy; + + conv = gtkconv->active_conv; + account = gaim_conversation_get_account(conv); + buddy = gaim_find_buddy(account, gaim_conversation_get_name(conv)); + if (buddy) { + GaimContact *contact = gaim_buddy_get_contact(buddy); + return gaim_blist_node_get_string((GaimBlistNode*)contact, "custom_buddy_icon"); + } + return NULL; +} + static void +custom_icon_sel_cb(const char *filename, gpointer data) +{ + if (filename) { + GaimGtkConversation *gtkconv = data; + GaimConversation *conv = gtkconv->active_conv; + GaimAccount *account = gaim_conversation_get_account(conv); + gaim_gtk_set_custom_buddy_icon(account, gaim_conversation_get_name(conv), filename); + } +} + +static void +set_custom_icon_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) +{ + GtkWidget *win = gaim_gtk_buddy_icon_chooser_new(GTK_WINDOW(gtkconv->win->window), + custom_icon_sel_cb, gtkconv); + gtk_widget_show_all(win); +} + +static void +remove_custom_icon_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) +{ + GaimConversation *conv; + GaimAccount *account; + + conv = gtkconv->active_conv; + account = gaim_conversation_get_account(conv); + gaim_gtk_set_custom_buddy_icon(account, gaim_conversation_get_name(conv), NULL); +} + +static void icon_menu_save_cb(GtkWidget *widget, GaimGtkConversation *gtkconv) { GaimConversation *conv = gtkconv->active_conv; @@ -2459,7 +2506,7 @@ icon_menu(GtkObject *obj, GdkEventButton *e, GaimGtkConversation *gtkconv) { static GtkWidget *menu = NULL; - GtkWidget *item; + const char *pref; if (e->button != 3 || e->type != GDK_BUTTON_PRESS) return FALSE; @@ -2481,16 +2528,25 @@ gtkconv->u.im->icon_timer); } - item = gtk_menu_item_new_with_label(_("Hide Icon")); - g_signal_connect_swapped(G_OBJECT(item), "activate", - G_CALLBACK(remove_icon), gtkconv); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - gtk_widget_show(item); + gaim_new_item_from_stock(menu, _("Hide Icon"), NULL, G_CALLBACK(remove_icon), + gtkconv, 0, 0, NULL); gaim_new_item_from_stock(menu, _("Save Icon As..."), GTK_STOCK_SAVE_AS, G_CALLBACK(icon_menu_save_cb), gtkconv, 0, 0, NULL); + gaim_new_item_from_stock(menu, _("Set Custom Icon..."), NULL, + G_CALLBACK(set_custom_icon_cb), gtkconv, + 0, 0, NULL); + + /* Is there a custom icon for this person? */ + pref = custom_icon_pref_name(gtkconv); + if (pref && *pref) { + gaim_new_item_from_stock(menu, _("Remove Custom Icon"), NULL, + G_CALLBACK(remove_custom_icon_cb), gtkconv, + 0, 0, NULL); + } + gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, e->button, e->time); return TRUE; @@ -2518,7 +2574,7 @@ if (active) gaim_gtkconv_update_buddy_icon(conv); else - remove_icon(gtkconv); + remove_icon(NULL, gtkconv); } /************************************************************************** @@ -5836,7 +5892,8 @@ GdkPixbufAnimation *anim; GError *err = NULL; - const void *data; + const char *custom = NULL; + const void *data = NULL; size_t len; GdkPixbuf *buf; @@ -5893,13 +5950,29 @@ if (gaim_conversation_get_gc(conv) == NULL) return; - icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); + custom = custom_icon_pref_name(gtkconv); + if (custom) { + /* There is a custom icon for this user */ + char *contents = NULL; + if (!g_file_get_contents(custom, &contents, &len, &err)) { + gaim_debug_warning("custom icon", "could not load custom icon %s for %s\n", + custom, gaim_conversation_get_name(conv)); + g_error_free(err); + err = NULL; + } else + data = contents; + } - if (icon == NULL) - return; + if (data == NULL) { + icon = gaim_conv_im_get_icon(GAIM_CONV_IM(conv)); - data = gaim_buddy_icon_get_data(icon, &len); + if (icon == NULL) + return; + data = gaim_buddy_icon_get_data(icon, &len); + custom = NULL; + } + loader = gdk_pixbuf_loader_new(); gdk_pixbuf_loader_write(loader, data, len, NULL); gdk_pixbuf_loader_close(loader, &err); @@ -5908,6 +5981,9 @@ g_object_ref(G_OBJECT(anim)); g_object_unref(loader); + if (custom) + g_free((void*)data); + if (!anim) return; gtkconv->u.im->anim = anim; Modified: trunk/gtk/gtkutils.c =================================================================== --- trunk/gtk/gtkutils.c 2006-10-29 23:28:37 UTC (rev 17620) +++ trunk/gtk/gtkutils.c 2006-10-29 23:35:57 UTC (rev 17621) @@ -1,5 +1,5 @@ /** - * @file gtkutils.h GTK+ utility functions + * @file gtkutils.c GTK+ utility functions * @ingroup gtkui * * gaim @@ -1296,6 +1296,7 @@ { char *filedata; size_t size; + struct stat st; GError *err = NULL; GaimConversation *conv; GaimGtkConversation *gtkconv; @@ -1303,23 +1304,20 @@ int id; switch (choice) { case DND_BUDDY_ICON: - if (!g_file_get_contents(data->filename, &filedata, &size, - &err)) { + if (g_stat(data->filename, &st)) { char *str; - str = g_strdup_printf(_("The following error has occurred loading %s: %s"), data->filename, err->message); + str = g_strdup_printf(_("The following error has occurred loading %s: %s"), + data->filename, strerror(errno)); gaim_notify_error(NULL, NULL, _("Failed to load image"), str); - - g_error_free(err); g_free(str); return; } - gaim_buddy_icons_set_for_user(data->account, data->who, filedata, size); - g_free(filedata); + gaim_gtk_set_custom_buddy_icon(data->account, data->who, data->filename); break; case DND_FILE_TRANSFER: serv_send_file(gaim_account_get_connection(data->account), data->who, data->filename); @@ -2795,3 +2793,48 @@ } #endif +void gaim_gtk_set_custom_buddy_icon(GaimAccount *account, const char *who, const char *filename) +{ + GaimConversation *conv; + GaimBuddy *buddy; + GaimBlistNode *node; + char *path = NULL; + + buddy = gaim_find_buddy(account, who); + if (!buddy) { + gaim_debug_info("custom-icon", "You can only set custom icon for someone in your buddylist.\n"); + return; + } + + node = (GaimBlistNode*)gaim_buddy_get_contact(buddy); + path = (char*)gaim_blist_node_get_string(node, "custom_buddy_icon"); + if (path) { + struct stat st; + if (g_stat(path, &st) == 0) + g_unlink(path); + path = NULL; + } + + if (filename) { + char *newfile; + + newfile = gaim_gtk_convert_buddy_icon(gaim_find_prpl(gaim_account_get_protocol_id(account)), + filename); + path = gaim_buddy_icons_get_full_path(newfile); + g_free(newfile); + } + + gaim_blist_node_set_string(node, "custom_buddy_icon", path); + g_free(path); + + /* Update the conversation */ + conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, who, account); + if (conv) + gaim_conversation_update(conv, GAIM_CONV_UPDATE_ICON); + + /* Update the buddylist */ + if (buddy) + gaim_blist_update_buddy_icon(buddy); +} + + Modified: trunk/gtk/gtkutils.h =================================================================== --- trunk/gtk/gtkutils.h 2006-10-29 23:28:37 UTC (rev 17620) +++ trunk/gtk/gtkutils.h 2006-10-29 23:35:57 UTC (rev 17621) @@ -475,7 +475,7 @@ * * @param plugin The prpl to conver the icon * @param path The path of a buddy icon to convert - * @return The path of a new buddy icon + * @return The name of a new buddy icon */ char* gaim_gtk_convert_buddy_icon(GaimPlugin *plugin, const char *path); @@ -491,3 +491,13 @@ #endif #endif /* _GAIM_GTKUTILS_H_ */ + +/** + * Set or unset a custom buddyicon for a user. + * + * @param account The account the user belongs to. + * @param who The name of the user. + * @param filename The path of the custom icon. If this is @c NULL, then any + * previously set custom buddy icon for the user is removed. + */ +void gaim_gtk_set_custom_buddy_icon(GaimAccount *account, const char *who, const char *filename); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |