You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(106) |
Oct
(334) |
Nov
(246) |
Dec
(145) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(42) |
Feb
(53) |
Mar
(232) |
Apr
(109) |
May
(137) |
Jun
(63) |
Jul
(26) |
Aug
(263) |
Sep
(193) |
Oct
(507) |
Nov
(440) |
Dec
(241) |
2003 |
Jan
(567) |
Feb
(195) |
Mar
(504) |
Apr
(481) |
May
(524) |
Jun
(522) |
Jul
(594) |
Aug
(502) |
Sep
(643) |
Oct
(508) |
Nov
(430) |
Dec
(377) |
2004 |
Jan
(361) |
Feb
(251) |
Mar
(219) |
Apr
(499) |
May
(461) |
Jun
(419) |
Jul
(314) |
Aug
(519) |
Sep
(416) |
Oct
(247) |
Nov
(305) |
Dec
(382) |
2005 |
Jan
(267) |
Feb
(282) |
Mar
(327) |
Apr
(338) |
May
(189) |
Jun
(400) |
Jul
(462) |
Aug
(530) |
Sep
(316) |
Oct
(523) |
Nov
(481) |
Dec
(650) |
2006 |
Jan
(536) |
Feb
(361) |
Mar
(287) |
Apr
(146) |
May
(101) |
Jun
(169) |
Jul
(221) |
Aug
(498) |
Sep
(300) |
Oct
(236) |
Nov
(209) |
Dec
(205) |
2007 |
Jan
(30) |
Feb
(23) |
Mar
(26) |
Apr
(15) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <dat...@us...> - 2006-10-17 19:21:35
|
Revision: 17500 http://svn.sourceforge.net/gaim/?rev=17500&view=rev Author: datallah Date: 2006-10-17 12:21:30 -0700 (Tue, 17 Oct 2006) Log Message: ----------- deryni noticed that the refresh call was redundant Modified Paths: -------------- trunk/gtk/gtkstatusbox.c Modified: trunk/gtk/gtkstatusbox.c =================================================================== --- trunk/gtk/gtkstatusbox.c 2006-10-17 19:01:38 UTC (rev 17499) +++ trunk/gtk/gtkstatusbox.c 2006-10-17 19:21:30 UTC (rev 17500) @@ -227,10 +227,7 @@ if (status_box->account == account) update_to_reflect_account_status(status_box, account, newstatus); else if (status_box->token_status_account == account) - { - gtk_gaim_status_box_refresh(status_box); status_menu_refresh_iter(status_box); - } } static gboolean This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-10-17 19:01:52
|
Revision: 17499 http://svn.sourceforge.net/gaim/?rev=17499&view=rev Author: datallah Date: 2006-10-17 12:01:38 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Attach to the "account-status-changed" signal so that we can notice primitive status changes on the token account. This is based on stuff from Richard Nelson and and rewster. Modified Paths: -------------- trunk/gtk/gtkstatusbox.c trunk/gtk/gtkstatusbox.h Modified: trunk/gtk/gtkstatusbox.c =================================================================== --- trunk/gtk/gtkstatusbox.c 2006-10-17 14:30:58 UTC (rev 17498) +++ trunk/gtk/gtkstatusbox.c 2006-10-17 19:01:38 UTC (rev 17499) @@ -71,6 +71,7 @@ static void gtk_gaim_status_box_pulse_typing(GtkGaimStatusBox *status_box); static void gtk_gaim_status_box_refresh(GtkGaimStatusBox *status_box); +static void status_menu_refresh_iter(GtkGaimStatusBox *status_box); static void gtk_gaim_status_box_regenerate(GtkGaimStatusBox *status_box); static void gtk_gaim_status_box_changed(GtkComboBox *box); static void gtk_gaim_status_box_size_request (GtkWidget *widget, GtkRequisition *requisition); @@ -225,6 +226,11 @@ { if (status_box->account == account) update_to_reflect_account_status(status_box, account, newstatus); + else if (status_box->token_status_account == account) + { + gtk_gaim_status_box_refresh(status_box); + status_menu_refresh_iter(status_box); + } } static gboolean @@ -388,17 +394,6 @@ case PROP_ACCOUNT: statusbox->account = g_value_get_pointer(value); - if (statusbox->status_changed_signal) { - gaim_signal_disconnect(gaim_accounts_get_handle(), "account-status-changed", - statusbox, GAIM_CALLBACK(account_status_changed_cb)); - statusbox->status_changed_signal = 0; - } - - if (statusbox->account) { - statusbox->status_changed_signal = gaim_signal_connect(gaim_accounts_get_handle(), "account-status-changed", - statusbox, GAIM_CALLBACK(account_status_changed_cb), - statusbox); - } gtk_gaim_status_box_regenerate(statusbox); break; @@ -413,11 +408,6 @@ { GtkGaimStatusBox *statusbox = GTK_GAIM_STATUS_BOX(obj); - if (statusbox->status_changed_signal) { - gaim_signal_disconnect(gaim_accounts_get_handle(), "account-status-changed", - statusbox, GAIM_CALLBACK(account_status_changed_cb)); - statusbox->status_changed_signal = 0; - } gaim_signals_disconnect_by_handle(statusbox); gaim_prefs_disconnect_by_handle(statusbox); @@ -1359,6 +1349,10 @@ gaim_signal_connect(gaim_accounts_get_handle(), "account-disabled", status_box, GAIM_CALLBACK(account_enabled_cb), status_box); + gaim_signal_connect(gaim_accounts_get_handle(), "account-status-changed", status_box, + GAIM_CALLBACK(account_status_changed_cb), + status_box); + gaim_prefs_connect_callback(status_box, "/gaim/gtk/blist/show_buddy_icons", buddy_list_details_pref_changed_cb, status_box); gaim_prefs_connect_callback(status_box, "/gaim/gtk/conversations/spellcheck", Modified: trunk/gtk/gtkstatusbox.h =================================================================== --- trunk/gtk/gtkstatusbox.h 2006-10-17 14:30:58 UTC (rev 17498) +++ trunk/gtk/gtkstatusbox.h 2006-10-17 19:01:38 UTC (rev 17499) @@ -117,8 +117,6 @@ GtkTreeIter iter; char *error; - gulong status_changed_signal; - /* * These widgets are made for renderin' * That's just what they'll do This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-10-17 14:31:04
|
Revision: 17498 http://svn.sourceforge.net/gaim/?rev=17498&view=rev Author: thekingant Date: 2006-10-17 07:30:58 -0700 (Tue, 17 Oct 2006) Log Message: ----------- This error message seems more clear to me Modified Paths: -------------- trunk/libgaim/plugin.c Modified: trunk/libgaim/plugin.c =================================================================== --- trunk/libgaim/plugin.c 2006-10-17 14:25:49 UTC (rev 17497) +++ trunk/libgaim/plugin.c 2006-10-17 14:30:58 UTC (rev 17498) @@ -362,8 +362,8 @@ else if (plugin->info->ui_requirement && strcmp(plugin->info->ui_requirement, gaim_core_get_ui())) { - plugin->error = g_strdup_printf("The UI requirement (%s) for this plugin is not met.", - plugin->info->ui_requirement); + plugin->error = g_strdup_printf("You are using %s, but this plugin requires %s.", + gaim_core_get_ui(), plugin->info->ui_requirement); gaim_debug_error("plugins", "%s is not loadable: The UI requirement is not met.", plugin->path); plugin->unloadable = TRUE; return plugin; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-10-17 14:25:54
|
Revision: 17497 http://svn.sourceforge.net/gaim/?rev=17497&view=rev Author: rlaager Date: 2006-10-17 07:25:49 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Fix a typo on the plugins page. Fixes SF Bug #1578809 Modified Paths: -------------- web/htdocs/plugins.php Modified: web/htdocs/plugins.php =================================================================== --- web/htdocs/plugins.php 2006-10-17 14:16:46 UTC (rev 17496) +++ web/htdocs/plugins.php 2006-10-17 14:25:49 UTC (rev 17497) @@ -49,7 +49,7 @@ "PyGaim" => array( "URL" => "http://pygaim.sourceforge.net/", - "TEXT" => " PyGaim is a gaim plugin that enables Gaim to be exstensible with Python." + "TEXT" => " PyGaim is a gaim plugin that enables Gaim to be extensible with Python." ), ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-10-17 14:16:51
|
Revision: 17496 http://svn.sourceforge.net/gaim/?rev=17496&view=rev Author: thekingant Date: 2006-10-17 07:16:46 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Better error messages, in my opinion. Now we don't need to worry about defuzzing anything... Modified Paths: -------------- trunk/libgaim/protocols/qq/send_file.c Modified: trunk/libgaim/protocols/qq/send_file.c =================================================================== --- trunk/libgaim/protocols/qq/send_file.c 2006-10-17 08:13:41 UTC (rev 17495) +++ trunk/libgaim/protocols/qq/send_file.c 2006-10-17 14:16:46 UTC (rev 17496) @@ -703,10 +703,8 @@ return; } filename = strrchr(gaim_xfer_get_local_filename(qd->xfer), '/') + 1; - msg = g_strdup_printf - (_ - ("Your request to send file[%s] has been rejected by buddy[%d]"), - filename, sender_uid); + msg = g_strdup_printf(_("%d has declined the file %s"), + sender_uid, filename); gaim_notify_warning (gc, _("File Send"), msg, NULL); gaim_xfer_request_denied(qd->xfer); @@ -734,8 +732,8 @@ } filename = strrchr(gaim_xfer_get_local_filename(qd->xfer), '/') + 1; msg = g_strdup_printf - (_("The sending process of file[%s] has been canceled by buddy[%d]"), - filename, sender_uid); + (_("%d canceled the transfer of %s"), + sender_uid, filename); gaim_notify_warning (gc, _("File Send"), msg, NULL); gaim_xfer_cancel_remote(qd->xfer); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2006-10-17 08:13:55
|
Revision: 17495 http://svn.sourceforge.net/gaim/?rev=17495&view=rev Author: deryni9 Date: 2006-10-17 01:13:41 -0700 (Tue, 17 Oct 2006) Log Message: ----------- This should fix the statusbox issues that were keeping us from releasing beta 4 (and which were just really annoying). Thakn sadrul for most of this, I just added the if (index == -1) bit. Anyway, the way this works now is that for saved/popular statuses the primitive underlying that status is where the dropdown for the statusbox starts. If we don't like that we can change it but I'm not sure we'll find something better. Also, this might plug a couple leaks, I'm not really sure but it certainly looks right. Up next, the patch to make the docklet use the per-protocol statuses in the top section. Modified Paths: -------------- trunk/gtk/gtkstatusbox.c Modified: trunk/gtk/gtkstatusbox.c =================================================================== --- trunk/gtk/gtkstatusbox.c 2006-10-17 05:00:19 UTC (rev 17494) +++ trunk/gtk/gtkstatusbox.c 2006-10-17 08:13:41 UTC (rev 17495) @@ -696,19 +696,16 @@ gtk_widget_set_sensitive(GTK_WIDGET(status_box), FALSE); /* - * If the saved_status is transient, is Available, Away, Invisible - * or Offline, and it does not have an substatuses, then select - * the primitive in the dropdown menu. Otherwise select the - * popular status in the dropdown menu. + * If there is a token-account, then select the primitive from the + * dropdown using a loop. Otherwise select from the default list. */ primitive = gaim_savedstatus_get_type(saved_status); - 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 (!status_box->token_status_account) { index = get_statusbox_index(status_box, saved_status); gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), index); + if (index == -1) + gtk_gaim_status_box_refresh(status_box); } else { @@ -728,8 +725,7 @@ TYPE_COLUMN, &type, DATA_COLUMN, &data, -1); - if (status_box->token_status_account && gaim_savedstatus_is_transient(saved_status) - && type == GTK_GAIM_STATUS_BOX_TYPE_PRIMITIVE && primitive == GPOINTER_TO_INT(data)) + if (type == GTK_GAIM_STATUS_BOX_TYPE_PRIMITIVE && primitive == GPOINTER_TO_INT(data)) { char *name; const char *acct_status_name = gaim_status_get_name( @@ -738,8 +734,7 @@ gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter, TEXT_COLUMN, &name, -1); - if (!gaim_savedstatus_has_substatuses(saved_status) - || !strcmp(name, acct_status_name)) + if (!strcmp(name, acct_status_name)) { /* Found! */ gtk_combo_box_set_active_iter(GTK_COMBO_BOX(status_box), &iter); @@ -748,13 +743,6 @@ } 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)); } @@ -984,6 +972,10 @@ gtk_gaim_status_box_add(GTK_GAIM_STATUS_BOX(status_box), GTK_GAIM_STATUS_BOX_TYPE_PRIMITIVE, pixbuf2, _("Away"), NULL, GINT_TO_POINTER(GAIM_STATUS_AWAY)); gtk_gaim_status_box_add(GTK_GAIM_STATUS_BOX(status_box), GTK_GAIM_STATUS_BOX_TYPE_PRIMITIVE, pixbuf4, _("Invisible"), NULL, GINT_TO_POINTER(GAIM_STATUS_INVISIBLE)); gtk_gaim_status_box_add(GTK_GAIM_STATUS_BOX(status_box), GTK_GAIM_STATUS_BOX_TYPE_PRIMITIVE, pixbuf3, _("Offline"), NULL, GINT_TO_POINTER(GAIM_STATUS_OFFLINE)); + + if (pixbuf2) g_object_unref(G_OBJECT(pixbuf2)); + if (pixbuf3) g_object_unref(G_OBJECT(pixbuf3)); + if (pixbuf4) g_object_unref(G_OBJECT(pixbuf4)); } add_popular_statuses(status_box); @@ -991,6 +983,7 @@ gtk_gaim_status_box_add_separator(GTK_GAIM_STATUS_BOX(status_box)); gtk_gaim_status_box_add(GTK_GAIM_STATUS_BOX(status_box), GTK_GAIM_STATUS_BOX_TYPE_CUSTOM, pixbuf, _("New..."), NULL, NULL); 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)); status_menu_refresh_iter(status_box); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-17 05:00:49
|
Revision: 17494 http://svn.sourceforge.net/gaim/?rev=17494&view=rev Author: sadrul Date: 2006-10-16 22:00:19 -0700 (Mon, 16 Oct 2006) Log Message: ----------- I believe this was required to make libgnt compile in osx (Is this correct, LSchiere?) Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-10-17 04:34:55 UTC (rev 17493) +++ trunk/console/libgnt/gntmain.c 2006-10-17 05:00:19 UTC (rev 17494) @@ -1,4 +1,7 @@ #define _GNU_SOURCE +#if defined(__APPLE__) +#define _XOPEN_SOURCE_EXTENDED +#endif #include "config.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-17 04:35:26
|
Revision: 17493 http://svn.sourceforge.net/gaim/?rev=17493&view=rev Author: sadrul Date: 2006-10-16 21:34:55 -0700 (Mon, 16 Oct 2006) Log Message: ----------- Patch from Richard Nelson (wabz). This will allow the WM to do stuff when a window is closed. Also, ignore SIGPIPE, although this doesn't seem to help. Modified Paths: -------------- trunk/console/libgnt/gntmain.c Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-10-17 04:07:19 UTC (rev 17492) +++ trunk/console/libgnt/gntmain.c 2006-10-17 04:34:55 UTC (rev 17493) @@ -268,7 +268,8 @@ GNT_WIDGET_UNSET_FLAGS(w, GNT_WIDGET_URGENT); if (wm.window_update) { GntNode *node = g_hash_table_lookup(nodes, w); - wm.window_update(node->panel, w); + if (node) + wm.window_update(node->panel, w); } } else if (GNT_WIDGET_IS_FLAG_SET(w, GNT_WIDGET_URGENT)) { /* This is a window with the URGENT hint set */ @@ -1158,6 +1159,7 @@ signal(SIGWINCH, sighandler); #endif signal(SIGCHLD, sighandler); + signal(SIGPIPE, SIG_IGN); g_type_init(); @@ -1225,6 +1227,9 @@ if (node == NULL) /* Yay! Nothing to do. */ return; + if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_DESTROYING) && wm.close_window) + wm.close_window(widget); + g_hash_table_remove(nodes, widget); if (window_list) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-10-17 04:07:22
|
Revision: 17492 http://svn.sourceforge.net/gaim/?rev=17492&view=rev Author: datallah Date: 2006-10-16 21:07:19 -0700 (Mon, 16 Oct 2006) Log Message: ----------- Fix to work with GTK+ 2.10.6 installer. Modified Paths: -------------- trunk/gaim-installer.nsi Modified: trunk/gaim-installer.nsi =================================================================== --- trunk/gaim-installer.nsi 2006-10-17 03:23:08 UTC (rev 17491) +++ trunk/gaim-installer.nsi 2006-10-17 04:07:19 UTC (rev 17492) @@ -48,6 +48,10 @@ !include "WordFunc.nsh" !insertmacro VersionCompare +!include "TextFunc.nsh" +!insertmacro ConfigRead +!insertmacro ConfigWriteS + ;-------------------------------- ;Defines @@ -60,15 +64,12 @@ !define GAIM_STARTUP_RUN_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" !define GAIM_UNINST_EXE "gaim-uninst.exe" -!define GTK_VERSION "2.6.10" +!define GTK_VERSION "2.10.6" !define GTK_REG_KEY "SOFTWARE\GTK\2.0" !define PERL_REG_KEY "SOFTWARE\Perl" !define PERL_DLL "perl58.dll" !define GTK_DEFAULT_INSTALL_PATH "$COMMONFILES\GTK\2.0" !define GTK_RUNTIME_INSTALLER "..\gtk_installer\gtk-runtime*.exe" -!define GTK_THEME_DIR "..\gtk_installer\gtk_themes" -!define GTK_DEFAULT_THEME_GTKRC_DIR "share\themes\Default\gtk-2.0" -!define GTK_DEFAULT_THEME_ENGINE_DIR "lib\gtk-2.0\2.4.0\engines" !define ASPELL_REG_KEY "SOFTWARE\Aspell" !define DOWNLOADER_URL "http://gaim.sourceforge.net/win32/download_redir.php" @@ -510,59 +511,23 @@ SubSection /e $(GTK_THEMES_SECTION_TITLE) SecGtkThemes Section /o $(GTK_NOTHEME_SECTION_TITLE) SecGtkNone - Call CanWeInstallATheme - Pop $R0 - StrCmp $R0 "" done - SetOverwrite on - Rename $R0\${GTK_DEFAULT_THEME_GTKRC_DIR}\gtkrc $R0\${GTK_DEFAULT_THEME_GTKRC_DIR}\gtkrc.old - CopyFiles $R0\${GTK_DEFAULT_THEME_GTKRC_DIR}\gtkrc.plain $R0\${GTK_DEFAULT_THEME_GTKRC_DIR}\gtkrc - SetOverwrite off - done: + Push "Raleigh" + Call WriteGtkThemeConfig SectionEnd Section $(GTK_WIMP_SECTION_TITLE) SecGtkWimp - Call CanWeInstallATheme - Pop $R0 - StrCmp $R0 "" done - SetOverwrite on - Rename $R0\${GTK_DEFAULT_THEME_GTKRC_DIR}\gtkrc $R0\${GTK_DEFAULT_THEME_GTKRC_DIR}\gtkrc.old - SetOutPath $R0\${GTK_DEFAULT_THEME_ENGINE_DIR} - File ${GTK_THEME_DIR}\engines\libwimp.dll - SetOutPath $R0\${GTK_DEFAULT_THEME_GTKRC_DIR} - File ${GTK_THEME_DIR}\themes\gtkrc.gtkwimp - File /oname=gtkrc ${GTK_THEME_DIR}\themes\gtkrc.gtkwimp - SetOverwrite off - done: + Push "MS-Windows" + Call WriteGtkThemeConfig SectionEnd Section /o $(GTK_BLUECURVE_SECTION_TITLE) SecGtkBluecurve - Call CanWeInstallATheme - Pop $R0 - StrCmp $R0 "" done - SetOverwrite on - Rename $R0\${GTK_DEFAULT_THEME_GTKRC_DIR}\gtkrc $R0\${GTK_DEFAULT_THEME_GTKRC_DIR}\gtkrc.old - SetOutPath $R0\${GTK_DEFAULT_THEME_ENGINE_DIR} - File ${GTK_THEME_DIR}\engines\libbluecurve.dll - SetOutPath $R0\${GTK_DEFAULT_THEME_GTKRC_DIR} - File ${GTK_THEME_DIR}\themes\gtkrc.bluecurve - File /oname=gtkrc ${GTK_THEME_DIR}\themes\gtkrc.bluecurve - SetOverwrite off - done: + Push "Bluecurve" + Call WriteGtkThemeConfig SectionEnd Section /o $(GTK_LIGHTHOUSEBLUE_SECTION_TITLE) SecGtkLighthouseblue - Call CanWeInstallATheme - Pop $R0 - StrCmp $R0 "" done - SetOverwrite on - Rename $R0\${GTK_DEFAULT_THEME_GTKRC_DIR}\gtkrc $R0\${GTK_DEFAULT_THEME_GTKRC_DIR}\gtkrc.old - SetOutPath $R0\${GTK_DEFAULT_THEME_ENGINE_DIR} - File ${GTK_THEME_DIR}\engines\liblighthouseblue.dll - SetOutPath $R0\${GTK_DEFAULT_THEME_GTKRC_DIR} - File ${GTK_THEME_DIR}\themes\gtkrc.lighthouseblue - File /oname=gtkrc ${GTK_THEME_DIR}\themes\gtkrc.lighthouseblue - SetOverwrite off - done: + Push "Lighthouseblue" + Call WriteGtkThemeConfig SectionEnd SubSectionEnd @@ -758,6 +723,7 @@ !ifdef DEBUG Delete "$INSTDIR\exchndl.dll" !endif + Delete "$INSTDIR\install.log" ;Try to remove Gaim install dir .. if empty RMDir "$INSTDIR" @@ -857,50 +823,26 @@ ;-------------------------------- ;Functions -; -; Usage: -; -; Call CanWeInstallATheme -; Pop $R0 -; -; Return: -; "" - If no -; "root path of GTK+ installation" - if yes -; -Function CanWeInstallATheme - Push $1 - Push $0 +Function WriteGtkThemeConfig +Exch $0 +Push $1 - ; Set default.. no rights - StrCpy $1 "" +ClearErrors +${ConfigRead} "$PROFILE\.gtkrc-2.0" "gtk-theme-name =" $1 +IfErrors new_file +${ConfigWriteS} "$PROFILE\.gtkrc-2.0" "gtk-theme-name =" "$\"$0$\"" $1 +Goto done - Call CheckUserInstallRights - Pop $0 +new_file: +ClearErrors +FileOpen $1 "$PROFILE\.gtkrc-2.0" w +FileWrite $1 "gtk-theme-name = $\"$0$\"" +FileClose $1 +Goto done - ; If no rights check if gtk was installed to gaim dir.. - StrCmp $0 "NONE" 0 themes_cont - StrCmp $GTK_FOLDER $INSTDIR 0 no_rights - StrCpy $1 $INSTDIR - Goto done - themes_cont: - - StrCmp $0 "HKCU" hkcu hklm - - hkcu: - ReadRegStr $1 HKCU ${GTK_REG_KEY} "Path" - StrCmp $1 "" no_rights done - - hklm: - ReadRegStr $1 HKLM ${GTK_REG_KEY} "Path" - Goto done - - no_rights: - MessageBox MB_OK $(GTK_NO_THEME_INSTALL_RIGHTS) /SD IDOK - StrCpy $1 "" - - done: - Pop $0 - Exch $1 +done: +Pop $1 +Pop $0 FunctionEnd !macro CheckUserInstallRightsMacro UN This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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: <rl...@us...> - 2006-10-16 21:57:17
|
Revision: 17490 http://svn.sourceforge.net/gaim/?rev=17490&view=rev Author: rlaager Date: 2006-10-16 14:57:03 -0700 (Mon, 16 Oct 2006) Log Message: ----------- Update POTFILES.in Modified Paths: -------------- trunk/po/POTFILES.in Modified: trunk/po/POTFILES.in =================================================================== --- trunk/po/POTFILES.in 2006-10-16 20:29:48 UTC (rev 17489) +++ trunk/po/POTFILES.in 2006-10-16 21:57:03 UTC (rev 17490) @@ -29,6 +29,8 @@ console/libgnt/gntwidget.c console/plugins/gntgf.c console/plugins/gnthistory.c +console/plugins/lastlog.c +gtk/eggtrayicon.c gtk/gaimcombobox.c gtk/gaimstock.c gtk/gtkaccount.c @@ -38,6 +40,7 @@ gtk/gtkconv.c gtk/gtkdebug.c gtk/gtkdialogs.c +gtk/gtkdocklet.c gtk/gtkexpander.c gtk/gtkft.c gtk/gtkimhtml.c @@ -60,7 +63,6 @@ gtk/plugins/contact_priority.c gtk/plugins/crazychat/cc_gaim_plugin.c gtk/plugins/docklet/docklet.c -gtk/plugins/docklet/eggtrayicon.c gtk/plugins/extplacement.c gtk/plugins/gaiminc.c gtk/plugins/gaimrc.c 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:30:08
|
Revision: 17489 http://svn.sourceforge.net/gaim/?rev=17489&view=rev Author: lschiere Date: 2006-10-16 13:29:48 -0700 (Mon, 16 Oct 2006) Log Message: ----------- (16:26:26) elb: LSchiere: for file in *.po; do sed -e 's/context context cancal context/context context cancel context/' < $file > $file.new; mv $file.new $file; done (16:27:07) LSchiere2: elb rocks Turned out it wasn't that many files, but elb still rocks. Modified Paths: -------------- trunk/po/es.po trunk/po/fi.po trunk/po/fr.po trunk/po/nl.po trunk/po/zh_CN.po Modified: trunk/po/es.po =================================================================== --- trunk/po/es.po 2006-10-16 20:20:14 UTC (rev 17488) +++ trunk/po/es.po 2006-10-16 20:29:48 UTC (rev 17489) @@ -11659,7 +11659,7 @@ #: ../libgaim/protocols/qq/send_file.c:737 #, c-format -msgid "The sending process of file[%s] has been cancaled by buddy[%d]" +msgid "The sending process of file[%s] has been canceled by buddy[%d]" msgstr "El proceso de envío de fichero[%s] ha sido cancelado por el amigo[%d]" #: ../libgaim/protocols/qq/sendqueue.c:167 Modified: trunk/po/fi.po =================================================================== --- trunk/po/fi.po 2006-10-16 20:20:14 UTC (rev 17488) +++ trunk/po/fi.po 2006-10-16 20:29:48 UTC (rev 17489) @@ -11671,7 +11671,7 @@ #: ../libgaim/protocols/qq/send_file.c:737 #, c-format -msgid "The sending process of file[%s] has been cancaled by buddy[%d]" +msgid "The sending process of file[%s] has been canceled by buddy[%d]" msgstr "Tiedoston (%s) lähetys on peruutettu tuttavan (%d) toimesta" #: ../libgaim/protocols/qq/sendqueue.c:167 Modified: trunk/po/fr.po =================================================================== --- trunk/po/fr.po 2006-10-16 20:20:14 UTC (rev 17488) +++ trunk/po/fr.po 2006-10-16 20:29:48 UTC (rev 17489) @@ -11649,7 +11649,7 @@ #: ../libgaim/protocols/qq/send_file.c:737 #, c-format -msgid "The sending process of file[%s] has been cancaled by buddy[%d]" +msgid "The sending process of file[%s] has been canceled by buddy[%d]" msgstr "L'encoi du fichier (%s) a été annulé par le contact (%d)." #: ../libgaim/protocols/qq/sendqueue.c:167 Modified: trunk/po/nl.po =================================================================== --- trunk/po/nl.po 2006-10-16 20:20:14 UTC (rev 17488) +++ trunk/po/nl.po 2006-10-16 20:29:48 UTC (rev 17489) @@ -11318,7 +11318,7 @@ #: ../libgaim/protocols/qq/send_file.c:744 #, c-format -msgid "The sending process of file[%s] has been cancaled by buddy[%d]" +msgid "The sending process of file[%s] has been canceled by buddy[%d]" msgstr "het oversturen van het bestand[%s] is afgebroken door de gebruiker[%d]" #: ../libgaim/protocols/qq/sendqueue.c:169 Modified: trunk/po/zh_CN.po =================================================================== --- trunk/po/zh_CN.po 2006-10-16 20:20:14 UTC (rev 17488) +++ trunk/po/zh_CN.po 2006-10-16 20:29:48 UTC (rev 17489) @@ -11138,7 +11138,7 @@ #: ../libgaim/protocols/qq/send_file.c:744 #, c-format -msgid "The sending process of file[%s] has been cancaled by buddy[%d]" +msgid "The sending process of file[%s] has been canceled by buddy[%d]" msgstr "" #: ../libgaim/protocols/qq/sendqueue.c:169 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: <dat...@us...> - 2006-10-16 20:15:39
|
Revision: 17487 http://svn.sourceforge.net/gaim/?rev=17487&view=rev Author: datallah Date: 2006-10-16 13:15:30 -0700 (Mon, 16 Oct 2006) Log Message: ----------- Luke was glaring, so I was fixing. Modified Paths: -------------- trunk/gtk/gtkeventloop.c Modified: trunk/gtk/gtkeventloop.c =================================================================== --- trunk/gtk/gtkeventloop.c 2006-10-16 17:14:41 UTC (rev 17486) +++ trunk/gtk/gtkeventloop.c 2006-10-16 20:15:30 UTC (rev 17487) @@ -26,7 +26,9 @@ #include <glib.h> #include "gtkeventloop.h" #include "eventloop.h" +#ifdef _WIN32 #include "win32dep.h" +#endif #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) 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: <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: <nos...@us...> - 2006-10-15 16:31:14
|
Revision: 17484 http://svn.sourceforge.net/gaim/?rev=17484&view=rev Author: nosnilmot Date: 2006-10-15 09:30:50 -0700 (Sun, 15 Oct 2006) Log Message: ----------- Fix Coverity CID 264, jm->body could be NULL Modified Paths: -------------- trunk/libgaim/protocols/jabber/message.c Modified: trunk/libgaim/protocols/jabber/message.c =================================================================== --- trunk/libgaim/protocols/jabber/message.c 2006-10-15 13:26:34 UTC (rev 17483) +++ trunk/libgaim/protocols/jabber/message.c 2006-10-15 16:30:50 UTC (rev 17484) @@ -138,7 +138,7 @@ desctxt = xmlnode_get_data(desc); /* I'm all about ugly hacks */ - if(body->len && !strcmp(body->str, jm->body)) + if(body->len && jm->body && !strcmp(body->str, jm->body)) g_string_printf(body, "<a href='%s'>%s</a>", urltxt, desctxt); else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <may...@us...> - 2006-10-15 13:26:45
|
Revision: 17483 http://svn.sourceforge.net/gaim/?rev=17483&view=rev Author: mayuan2006 Date: 2006-10-15 06:26:34 -0700 (Sun, 15 Oct 2006) Log Message: ----------- add some function prototype Modified Paths: -------------- branches/soc-2006-msnp13/src/protocols/msn/session.h Modified: branches/soc-2006-msnp13/src/protocols/msn/session.h =================================================================== --- branches/soc-2006-msnp13/src/protocols/msn/session.h 2006-10-15 00:48:35 UTC (rev 17482) +++ branches/soc-2006-msnp13/src/protocols/msn/session.h 2006-10-15 13:26:34 UTC (rev 17483) @@ -245,4 +245,9 @@ /*post message to User*/ void msn_session_report_user(MsnSession *session,const char *passport, char *msg,GaimMessageFlags flags); + +void msn_session_set_bnode(MsnSession *session); + +GaimBlistNode *msn_session_get_bnode(MsnSession *session); + #endif /* _MSN_SESSION_H_ */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-15 00:48:40
|
Revision: 17482 http://svn.sourceforge.net/gaim/?rev=17482&view=rev Author: sadrul Date: 2006-10-14 17:48:35 -0700 (Sat, 14 Oct 2006) Log Message: ----------- Patch from Richard Nelson (wabz). This turns off some flags so that the empty spaces at the end of the lines do not have underlines or blinking. Modified Paths: -------------- trunk/console/libgnt/gnttextview.c Modified: trunk/console/libgnt/gnttextview.c =================================================================== --- trunk/console/libgnt/gnttextview.c 2006-10-14 20:00:56 UTC (rev 17481) +++ trunk/console/libgnt/gnttextview.c 2006-10-15 00:48:35 UTC (rev 17482) @@ -51,10 +51,10 @@ *end = '\0'; wattrset(widget->window, seg->flags); wprintw(widget->window, "%s", (view->string->str + seg->start)); - if (!iter->next) - whline(widget->window, ' ' | seg->flags, widget->priv.width - line->length - 1); *end = back; } + wattroff(widget->window, A_UNDERLINE | A_BLINK | A_REVERSE); + whline(widget->window, ' ', widget->priv.width - line->length - 1); } scrcol = widget->priv.width - 1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <may...@us...> - 2006-10-14 20:01:12
|
Revision: 17481 http://svn.sourceforge.net/gaim/?rev=17481&view=rev Author: mayuan2006 Date: 2006-10-14 13:00:56 -0700 (Sat, 14 Oct 2006) Log Message: ----------- gradually got SOAP contact list and address book from Server. Cache the info in blist.xml Modified Paths: -------------- branches/soc-2006-msnp13/src/protocols/msn/contact.c branches/soc-2006-msnp13/src/protocols/msn/contact.h branches/soc-2006-msnp13/src/protocols/msn/notification.c branches/soc-2006-msnp13/src/protocols/msn/session.c branches/soc-2006-msnp13/src/protocols/msn/session.h branches/soc-2006-msnp13/src/protocols/msn/user.c branches/soc-2006-msnp13/src/protocols/msn/user.h branches/soc-2006-msnp13/src/protocols/msn/userlist.c branches/soc-2006-msnp13/src/protocols/msn/userlist.h Modified: branches/soc-2006-msnp13/src/protocols/msn/contact.c =================================================================== --- branches/soc-2006-msnp13/src/protocols/msn/contact.c 2006-10-14 18:28:22 UTC (rev 17480) +++ branches/soc-2006-msnp13/src/protocols/msn/contact.c 2006-10-14 20:00:56 UTC (rev 17481) @@ -85,7 +85,7 @@ g_return_if_fail(session != NULL); /*login ok!We can retrieve the contact list*/ -// msn_get_contact_list(contact); +// msn_get_contact_list(contact,NULL); } /*get MSN member role utility*/ @@ -126,38 +126,45 @@ MsnSession * session; int list_op =0; char * passport; - xmlnode * node,*body,*response,*result,*services,*service,*memberships; + xmlnode * node,*body,*response,*result,*services; + xmlnode *service,*memberships; xmlnode *LastChangeNode; xmlnode *membershipnode,*members,*member,*passportNode; - char *lastchange; + char *LastChangeStr; session = contact->session; - gaim_debug_misc("xml","parse contact list:{%s}\nsize:%d\n",contact->soapconn->body,contact->soapconn->body_len); + gaim_debug_misc("MSNCL","parse contact list:{%s}\nsize:%d\n",contact->soapconn->body,contact->soapconn->body_len); node = xmlnode_from_str(contact->soapconn->body, contact->soapconn->body_len); if(node == NULL){ - gaim_debug_misc("xml","parse contact from str err!\n"); + gaim_debug_misc("MSNCL","parse contact from str err!\n"); return; } - gaim_debug_misc("xml","node{%p},name:%s,child:%s,last:%s\n",node,node->name,node->child->name,node->lastchild->name); + gaim_debug_misc("MSNCL","node{%p},name:%s,child:%s,last:%s\n",node,node->name,node->child->name,node->lastchild->name); body = xmlnode_get_child(node,"Body"); - gaim_debug_misc("xml","body{%p},name:%s\n",body,body->name); + gaim_debug_misc("MSNCL","body{%p},name:%s\n",body,body->name); response = xmlnode_get_child(body,"FindMembershipResponse"); - gaim_debug_misc("xml","response{%p},name:%s\n",response,response->name); + gaim_debug_misc("MSNCL","response{%p},name:%s\n",response,response->name); result =xmlnode_get_child(response,"FindMembershipResult"); - gaim_debug_misc("xml","result{%p},name:%s\n",result,result->name); + if(result == NULL){ + gaim_debug_misc("MSNCL","receive No Update!\n"); + return; + } + gaim_debug_misc("MSNCL","result{%p},name:%s\n",result,result->name); services =xmlnode_get_child(result,"Services"); - gaim_debug_misc("xml","services{%p},name:%s\n",services,services->name); + gaim_debug_misc("MSNCL","services{%p},name:%s\n",services,services->name); service =xmlnode_get_child(services,"Service"); - gaim_debug_misc("xml","service{%p},name:%s\n",service,service->name); + gaim_debug_misc("MSNCL","service{%p},name:%s\n",service,service->name); /*Last Change Node*/ LastChangeNode = xmlnode_get_child(service,"LastChange"); - lastchange = xmlnode_get_data(LastChangeNode); - gaim_debug_misc("MSNContact","LastChangeNode %s\n",lastchange); + LastChangeStr = xmlnode_get_data(LastChangeNode); + gaim_debug_misc("MSNCL","LastChangeNode0 %s\n",LastChangeStr); + gaim_blist_node_set_string(msn_session_get_bnode(contact->session),"CLLastChange",LastChangeStr); + gaim_debug_misc("MSNCL","LastChangeNode %s\n",LastChangeStr); memberships =xmlnode_get_child(service,"Memberships"); - gaim_debug_misc("xml","memberships{%p},name:%s\n",memberships,memberships->name); + gaim_debug_misc("MSNCL","memberships{%p},name:%s\n",memberships,memberships->name); for(membershipnode = xmlnode_get_child(memberships, "Membership"); membershipnode; membershipnode = xmlnode_get_next_twin(membershipnode)){ xmlnode *roleNode; @@ -165,7 +172,7 @@ roleNode = xmlnode_get_child(membershipnode,"MemberRole"); role=xmlnode_get_data(roleNode); list_op = msn_get_memberrole(role); - gaim_debug_misc("memberrole","role:%s,list_op:%d\n",role,list_op); + gaim_debug_misc("MSNCL","MemberRole role:%s,list_op:%d\n",role,list_op); g_free(role); members = xmlnode_get_child(membershipnode,"Members"); for(member = xmlnode_get_child(members, "Member"); member; @@ -174,13 +181,13 @@ xmlnode * typeNode; char * type; - gaim_debug_misc("MaYuan","type:%s\n",xmlnode_get_attrib(member,"type")); + gaim_debug_misc("MSNCL","type:%s\n",xmlnode_get_attrib(member,"type")); if(!g_strcasecmp(xmlnode_get_attrib(member,"type"),"PassportMember")){ passportNode = xmlnode_get_child(member,"PassportName"); passport = xmlnode_get_data(passportNode); typeNode = xmlnode_get_child(member,"Type"); type = xmlnode_get_data(typeNode); - gaim_debug_misc("Passport","name:%s,type:%s\n",passport,type); + gaim_debug_misc("MSNCL","Passport name:%s,type:%s\n",passport,type); g_free(type); user = msn_userlist_find_add_user(session->userlist,passport,NULL); @@ -194,7 +201,7 @@ emailNode = xmlnode_get_child(member,"Email"); passport = xmlnode_get_data(emailNode); - gaim_debug_info("Email","name:%s,list_op:%d\n",passport,list_op); + gaim_debug_info("MSNCL","Email Member :name:%s,list_op:%d\n",passport,list_op); user = msn_userlist_find_add_user(session->userlist,passport,NULL); msn_got_lst_user(session,user,list_op,NULL); g_free(passport); @@ -211,6 +218,8 @@ MsnSoapConn * soapconn = data; MsnContact *contact; MsnSession *session; + const char * abLastChange; + const char * dynamicItemLastChange; contact = soapconn->parent; g_return_if_fail(contact != NULL); @@ -224,7 +233,9 @@ /*free the read buffer*/ msn_soap_free_read_buf(soapconn); - msn_get_address_book(contact); + abLastChange = gaim_blist_node_get_string(msn_session_get_bnode(contact->session),"ablastChange"); + dynamicItemLastChange = gaim_blist_node_get_string(msn_session_get_bnode(contact->session),"dynamicItemLastChange"); + msn_get_address_book(contact,abLastChange,dynamicItemLastChange); } static void @@ -237,18 +248,30 @@ // msn_soap_read_cb(data,source,cond); } +/*SOAP get contact list*/ void -msn_get_contact_list(MsnContact * contact) +msn_get_contact_list(MsnContact * contact,char * update_time) { MsnSoapReq *soap_request; - + char *body = NULL; + char * update_str; + gaim_debug_info("MaYuan","Getting Contact List...\n"); + if(update_time != NULL){ + gaim_debug_info("MSNCL","last update time:{%s}\n",update_time); + update_str = g_strdup_printf(MSN_GET_CONTACT_UPDATE_XML,update_time); + }else{ + update_str = g_strdup(""); + } + body = g_strdup_printf(MSN_GET_CONTACT_TEMPLATE,update_str); soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, MSN_GET_CONTACT_POST_URL,MSN_GET_CONTACT_SOAP_ACTION, - MSN_GET_CONTACT_TEMPLATE, + body, msn_get_contact_list_cb, msn_get_contact_written_cb); msn_soap_post(contact->soapconn,soap_request,msn_contact_connect_init); + g_free(update_str); + g_free(body); } static void @@ -258,8 +281,7 @@ xmlnode * node,*body,*response,*result; xmlnode *groups,*group,*groupname,*groupId,*groupInfo; xmlnode *contacts,*contactNode,*contactId,*contactInfo,*contactType,*passportName,*displayName,*groupIds,*guid; - xmlnode *abNode,*LastChangeNode; - char *lastchange; + xmlnode *abNode; char *group_name,*group_id; session = contact->session; @@ -276,6 +298,10 @@ response = xmlnode_get_child(body,"ABFindAllResponse"); gaim_debug_misc("xml","response{%p},name:%s\n",response,response->name); result =xmlnode_get_child(response,"ABFindAllResult"); + if(result == NULL){ + gaim_debug_misc("MSNAB","receive no address book update\n"); + return; + } gaim_debug_misc("xml","result{%p},name:%s\n",result,result->name); /*Process Group List*/ @@ -298,6 +324,7 @@ gaim_debug_misc("MsnAB","group_id:%s name:%s\n",group_id,group_name); if ((gaim_find_group(group_name)) == NULL){ GaimGroup *g = gaim_group_new(group_name); + gaim_blist_node_set_string(&(g->node),"groupId",group_id); gaim_blist_add_group(g, NULL); } g_free(group_id); @@ -437,9 +464,18 @@ abNode =xmlnode_get_child(result,"ab"); if(abNode != NULL){ + xmlnode *LastChangeNode, *DynamicItemLastChangedNode; + char *lastchange, *dynamicChange; + LastChangeNode = xmlnode_get_child(abNode,"lastChange"); lastchange = xmlnode_get_data(LastChangeNode); gaim_debug_info("MsnAB"," lastchanged Time:{%s}\n",lastchange); + gaim_blist_node_set_string(msn_session_get_bnode(contact->session),"ablastChange",lastchange); + + DynamicItemLastChangedNode = xmlnode_get_child(abNode,"DynamicItemLastChanged"); + dynamicChange = xmlnode_get_data(DynamicItemLastChangedNode); + gaim_debug_info("MsnAB"," DynamicItemLastChanged :{%s}\n",dynamicChange); + gaim_blist_node_set_string(msn_session_get_bnode(contact->session),"DynamicItemLastChanged",lastchange); } xmlnode_free(node); @@ -481,18 +517,36 @@ /*get the address book*/ void -msn_get_address_book(MsnContact *contact) +msn_get_address_book(MsnContact *contact,char * LastChanged, char * dynamicItemLastChange) { MsnSoapReq *soap_request; + char *body = NULL; + char *ab_update_str,*update_str; gaim_debug_info("MaYuan","msn_get_address_book()...\n"); /*build SOAP and POST it*/ + if(LastChanged != NULL){ + ab_update_str = g_strdup_printf(MSN_GET_ADDRESS_UPDATE_XML,LastChanged); + }else{ + ab_update_str = g_strdup(""); + } + if(dynamicItemLastChange != NULL){ + update_str = g_strdup_printf(MSN_GET_ADDRESS_UPDATE_XML, + ab_update_str,dynamicItemLastChange); + }else{ + update_str = g_strdup(ab_update_str); + } + g_free(ab_update_str); + + body = g_strdup_printf(MSN_GET_ADDRESS_TEMPLATE,update_str); soap_request = msn_soap_request_new(MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL,MSN_GET_ADDRESS_SOAP_ACTION, - MSN_GET_ADDRESS_TEMPLATE, + body, msn_get_address_cb, msn_address_written_cb); msn_soap_post(contact->soapconn,soap_request,msn_contact_connect_init); + g_free(update_str); + g_free(body); } static void Modified: branches/soc-2006-msnp13/src/protocols/msn/contact.h =================================================================== --- branches/soc-2006-msnp13/src/protocols/msn/contact.h 2006-10-14 18:28:22 UTC (rev 17480) +++ branches/soc-2006-msnp13/src/protocols/msn/contact.h 2006-10-14 20:00:56 UTC (rev 17481) @@ -30,6 +30,9 @@ /*get contact list soap request template*/ #define MSN_GET_CONTACT_POST_URL "/abservice/SharingService.asmx" #define MSN_GET_CONTACT_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/FindMembership" +#define MSN_GET_CONTACT_UPDATE_XML "<View>Full</View>"\ + "<deltasOnly>true</deltasOnly>"\ + "<lastChange>%s</lastChange>" #define MSN_GET_CONTACT_TEMPLATE "<?xml version='1.0' encoding='utf-8'?>"\ "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\ "<soap:Header xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"\ @@ -53,6 +56,7 @@ "<ServiceType xmlns=\"http://www.msn.com/webservices/AddressBook\">Profile</ServiceType>"\ "</Types>"\ "</serviceFilter>"\ + "%s"\ "</FindMembership>"\ "</soap:Body>"\ "</soap:Envelope>" @@ -63,6 +67,15 @@ #define MSN_ADDRESS_BOOK_POST_URL "/abservice/abservice.asmx" /*get addressbook soap request template*/ #define MSN_GET_ADDRESS_SOAP_ACTION "http://www.msn.com/webservices/AddressBook/ABFindAll" +#define MSN_GET_ADDRESS_FULL_TIME "0001-01-01T00:00:00.0000000-08:00" +#define MSN_GET_ADDRESS_UPDATE_XML "<deltasOnly>true</deltasOnly>"\ + "<lastChange>%s</lastChange>" + +#define MSN_GET_GLEAM_UPDATE_XML \ + "%s"\ + "<dynamicItemView>Gleam</dynamicItemView>"\ + "<dynamicItemLastChange>%s</dynamicItemLastChange>" + #define MSN_GET_ADDRESS_TEMPLATE "<?xml version=\"1.0\" encoding=\"utf-8\"?>"\ "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">"\ "<soap:Header>"\ @@ -79,6 +92,7 @@ "<ABFindAll xmlns=\"http://www.msn.com/webservices/AddressBook\">"\ "<abId>00000000-0000-0000-0000-000000000000</abId>"\ "<abView>Full</abView>"\ + "%s"\ "</ABFindAll>"\ "</soap:Body>"\ "</soap:Envelope>" @@ -199,8 +213,8 @@ void msn_contact_destroy(MsnContact *contact); void msn_contact_connect(MsnContact *contact); -void msn_get_contact_list(MsnContact * contact); -void msn_get_address_book(MsnContact *contact); +void msn_get_contact_list(MsnContact * contact,char * update); +void msn_get_address_book(MsnContact *contact,char * update, char * gupdate); /*contact SOAP Operation*/ void msn_add_contact(MsnContact *contact,const char *passport,const char *groupId); Modified: branches/soc-2006-msnp13/src/protocols/msn/notification.c =================================================================== --- branches/soc-2006-msnp13/src/protocols/msn/notification.c 2006-10-14 18:28:22 UTC (rev 17480) +++ branches/soc-2006-msnp13/src/protocols/msn/notification.c 2006-10-14 20:00:56 UTC (rev 17481) @@ -1450,6 +1450,7 @@ { MsnSession *session; const char *value; + const char *clLastChange; gaim_debug_info("MaYuan","profile_msg... \n"); session = cmdproc->session; @@ -1495,8 +1496,12 @@ session->passport_info.sl = atol(value); /*starting retrieve the contact list*/ + msn_userlist_load(session); + + msn_session_set_bnode(session); session->contact = msn_contact_new(session); - msn_get_contact_list(session->contact); + clLastChange = gaim_blist_node_get_string(msn_session_get_bnode(session),"CLLastChange"); + msn_get_contact_list(session->contact,clLastChange); // msn_contact_connect(session->contact); } Modified: branches/soc-2006-msnp13/src/protocols/msn/session.c =================================================================== --- branches/soc-2006-msnp13/src/protocols/msn/session.c 2006-10-14 18:28:22 UTC (rev 17480) +++ branches/soc-2006-msnp13/src/protocols/msn/session.c 2006-10-14 20:00:56 UTC (rev 17481) @@ -42,7 +42,8 @@ session->user = msn_user_new(session->userlist, gaim_account_get_username(account), NULL); - + session->bnode = NULL; + /*if you want to chat with Yahoo Messenger*/ //session->protocol_ver = WLM_YAHOO_PROT_VER; session->protocol_ver = WLM_PROT_VER; @@ -260,6 +261,47 @@ return swboard; } +/*setup the bnode, for MSN SOAP contact/address book op*/ +void +msn_session_set_bnode(MsnSession *session) +{ + GaimBlistNode *gnode, *cnode, *bnode; + GaimConnection *gc = gaim_account_get_connection(session->account); + + g_return_if_fail(gc != NULL); + + for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next){ + if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) + continue; + for(cnode = gnode->child; cnode; cnode = cnode->next) { + if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) + continue; + for(bnode = cnode->child; bnode; bnode = bnode->next) { + GaimBuddy *b; + if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) + continue; + b = (GaimBuddy *)bnode; + if(b->account == gc->account){ + session->bnode = bnode; + return; + } + } + } + } + session->bnode = NULL; +} + +/*get bnode*/ +GaimBlistNode * +msn_session_get_bnode(MsnSession *session) +{ +#if 1 + return session->bnode; +#else + return gaim_get_blist()->root; +#endif +} + static void msn_session_sync_users(MsnSession *session) { Modified: branches/soc-2006-msnp13/src/protocols/msn/session.h =================================================================== --- branches/soc-2006-msnp13/src/protocols/msn/session.h 2006-10-14 18:28:22 UTC (rev 17480) +++ branches/soc-2006-msnp13/src/protocols/msn/session.h 2006-10-14 20:00:56 UTC (rev 17481) @@ -111,7 +111,10 @@ /*psm info*/ char *psm; - + + /*first blist contact node*/ + GaimBlistNode *bnode; + struct { /*t and p, get via USR TWN*/ Modified: branches/soc-2006-msnp13/src/protocols/msn/user.c =================================================================== --- branches/soc-2006-msnp13/src/protocols/msn/user.c 2006-10-14 18:28:22 UTC (rev 17480) +++ branches/soc-2006-msnp13/src/protocols/msn/user.c 2006-10-14 20:00:56 UTC (rev 17481) @@ -186,6 +186,13 @@ } void +msn_user_set_op(MsnUser *user,int list_op) +{ + g_return_if_fail(list_op != NULL); + user->list_op |= list_op; +} + +void msn_user_set_buddy_icon(MsnUser *user, const char *filename) { struct stat st; @@ -295,14 +302,13 @@ } b = gaim_find_buddy_in_group(account, passport, g); - if (b == NULL){ b = gaim_buddy_new(account, passport, NULL); - gaim_blist_add_buddy(b, NULL, g, NULL); } - b->proto_data = user; + /*Update the blist Node info*/ +// gaim_blist_node_set_string(&(b->node), "", ""); } /*check if the msn user is online*/ Modified: branches/soc-2006-msnp13/src/protocols/msn/user.h =================================================================== --- branches/soc-2006-msnp13/src/protocols/msn/user.h 2006-10-14 18:28:22 UTC (rev 17480) +++ branches/soc-2006-msnp13/src/protocols/msn/user.h 2006-10-14 20:00:56 UTC (rev 17481) @@ -306,6 +306,10 @@ */ gboolean msn_user_is_yahoo(GaimAccount *account ,const char *name); + +void msn_user_set_op(MsnUser *user,int list_op); + /*@}*/ + #endif /* _MSN_USER_H_ */ Modified: branches/soc-2006-msnp13/src/protocols/msn/userlist.c =================================================================== --- branches/soc-2006-msnp13/src/protocols/msn/userlist.c 2006-10-14 18:28:22 UTC (rev 17480) +++ branches/soc-2006-msnp13/src/protocols/msn/userlist.c 2006-10-14 20:00:56 UTC (rev 17481) @@ -718,3 +718,46 @@ msn_userlist_rem_buddy(userlist, who, MSN_LIST_FL, old_group_name); } +/*load userlist from the Blist file cache*/ +void +msn_userlist_load(MsnSession *session) +{ + GaimBlistNode *gnode, *cnode, *bnode; + GaimConnection *gc = gaim_account_get_connection(session->account); + GSList *l; + MsnUser * user; + + g_return_if_fail(gc != NULL); + + for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next){ + if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) + continue; + for(cnode = gnode->child; cnode; cnode = cnode->next) { + if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) + continue; + for(bnode = cnode->child; bnode; bnode = bnode->next) { + GaimBuddy *b; + if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) + continue; + b = (GaimBuddy *)bnode; + if(b->account == gc->account){ + user = msn_userlist_find_add_user(session->userlist, + b->name,NULL); + msn_user_set_op(user,MSN_LIST_FL_OP); + } + } + } + } + for (l = session->account->permit; l != NULL; l = l->next) { + user = msn_userlist_find_add_user(session->userlist, + (char *)l->data,NULL); + msn_user_set_op(user,MSN_LIST_AL_OP); + } + for (l = session->account->deny; l != NULL; l = l->next) { + user = msn_userlist_find_add_user(session->userlist, + (char *)l->data,NULL); + msn_user_set_op(user,MSN_LIST_BL_OP); + } + +} + Modified: branches/soc-2006-msnp13/src/protocols/msn/userlist.h =================================================================== --- branches/soc-2006-msnp13/src/protocols/msn/userlist.h 2006-10-14 18:28:22 UTC (rev 17480) +++ branches/soc-2006-msnp13/src/protocols/msn/userlist.h 2006-10-14 20:00:56 UTC (rev 17481) @@ -103,5 +103,6 @@ void msn_userlist_move_buddy(MsnUserList *userlist, const char *who, const char *old_group_name, const char *new_group_name); +void msn_userlist_load(MsnSession *session); #endif /* _MSN_USERLIST_H_ */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-14 18:28:32
|
Revision: 17480 http://svn.sourceforge.net/gaim/?rev=17480&view=rev Author: sadrul Date: 2006-10-14 11:28:22 -0700 (Sat, 14 Oct 2006) Log Message: ----------- Change the string to make sure it's a little more descriptive. Thanks to John Bailey (rekkanoryo) for noticing this. Modified Paths: -------------- trunk/libgaim/plugin.c Modified: trunk/libgaim/plugin.c =================================================================== --- trunk/libgaim/plugin.c 2006-10-14 05:29:11 UTC (rev 17479) +++ trunk/libgaim/plugin.c 2006-10-14 18:28:22 UTC (rev 17480) @@ -362,7 +362,8 @@ 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."); + plugin->error = g_strdup_printf("The UI requirement (%s) for this plugin is not met.", + plugin->info->ui_requirement); gaim_debug_error("plugins", "%s is not loadable: The UI requirement is not met.", plugin->path); plugin->unloadable = TRUE; return plugin; 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: <sa...@us...> - 2006-10-14 01:56:29
|
Revision: 17478 http://svn.sourceforge.net/gaim/?rev=17478&view=rev Author: sadrul Date: 2006-10-13 18:56:10 -0700 (Fri, 13 Oct 2006) Log Message: ----------- Patch from Richard Nelson (wabz) to plug a leak. Modified Paths: -------------- trunk/console/gntgaim.c Modified: trunk/console/gntgaim.c =================================================================== --- trunk/console/gntgaim.c 2006-10-14 01:52:33 UTC (rev 17477) +++ trunk/console/gntgaim.c 2006-10-14 01:56:10 UTC (rev 17478) @@ -252,6 +252,7 @@ /* set a user-specified config directory */ if (opt_config_dir_arg != NULL) { gaim_util_set_user_dir(opt_config_dir_arg); + g_free(opt_config_dir_arg); } /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-10-14 01:52:45
|
Revision: 17477 http://svn.sourceforge.net/gaim/?rev=17477&view=rev Author: sadrul Date: 2006-10-13 18:52:33 -0700 (Fri, 13 Oct 2006) Log Message: ----------- Patch from Richard Nelson (wabz) to fix a crash in the statusbox. Modified Paths: -------------- trunk/console/libgnt/gntcombobox.c Modified: trunk/console/libgnt/gntcombobox.c =================================================================== --- trunk/console/libgnt/gntcombobox.c 2006-10-13 02:31:36 UTC (rev 17476) +++ trunk/console/libgnt/gntcombobox.c 2006-10-14 01:52:33 UTC (rev 17477) @@ -102,6 +102,8 @@ mvwin(parent->window, y, widget->priv.x); wresize(parent->window, height+2, widget->priv.width); } + parent->priv.width = widget->priv.width; + parent->priv.height = height + 2; gnt_widget_draw(parent); } 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. |