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-05-18 15:44:13
|
Revision: 16192 Author: datallah Date: 2006-05-18 08:44:02 -0700 (Thu, 18 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16192&view=rev Log Message: ----------- Ma Xuan is the author of the win32 non-ASCII url open fix Modified Paths: -------------- trunk/COPYRIGHT Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-05-18 15:34:03 UTC (rev 16191) +++ trunk/COPYRIGHT 2006-05-18 15:44:02 UTC (rev 16192) @@ -315,6 +315,7 @@ Pui Lam Wong Justin Wood Ximian +Ma Xuan Jared Yanovich Timmy Yee Nickolai Zeldovich This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-05-18 15:34:20
|
Revision: 16191 Author: datallah Date: 2006-05-18 08:34:03 -0700 (Thu, 18 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16191&view=rev Log Message: ----------- SuperMMX submitted this patch to fix opening non-ASCII urls in win32. There are some other little changes that I've had laying around for a while here too. Modified Paths: -------------- trunk/src/win32/win32dep.c Modified: trunk/src/win32/win32dep.c =================================================================== --- trunk/src/win32/win32dep.c 2006-05-18 13:48:11 UTC (rev 16190) +++ trunk/src/win32/win32dep.c 2006-05-18 15:34:03 UTC (rev 16191) @@ -169,9 +169,8 @@ /* Get paths to special Windows folders. */ char *wgaim_get_special_folder(int folder_type) { static LPFNSHGETFOLDERPATHA MySHGetFolderPathA = NULL; + static LPFNSHGETFOLDERPATHW MySHGetFolderPathW = NULL; char *retval = NULL; -#if GLIB_CHECK_VERSION(2,6,0) - static LPFNSHGETFOLDERPATHW MySHGetFolderPathW = NULL; if (!MySHGetFolderPathW) { MySHGetFolderPathW = (LPFNSHGETFOLDERPATHW) @@ -186,7 +185,6 @@ retval = g_utf16_to_utf8(utf_16_dir, -1, NULL, NULL, NULL); } } -#endif if (!retval) { if (!MySHGetFolderPathA) { @@ -198,11 +196,7 @@ if (SUCCEEDED(MySHGetFolderPathA(NULL, folder_type, NULL, SHGFP_TYPE_CURRENT, locale_dir))) { -#if GLIB_CHECK_VERSION(2,6,0) retval = g_locale_to_utf8(locale_dir, -1, NULL, NULL, NULL); -#else - retval = g_strdup(locale_dir); -#endif } } } @@ -359,22 +353,51 @@ } void wgaim_notify_uri(const char *uri) { - SHELLEXECUTEINFO sinfo; - memset(&sinfo, 0, sizeof(sinfo)); - sinfo.cbSize = sizeof(sinfo); - sinfo.fMask = SEE_MASK_CLASSNAME; - sinfo.lpVerb = "open"; - sinfo.lpFile = uri; - sinfo.nShow = SW_SHOWNORMAL; - sinfo.lpClass = "http"; + /* We'll allow whatever URI schemes are supported by the + * default http browser. + */ - /* We'll allow whatever URI schemes are supported by the - default http browser. - */ - if(!ShellExecuteEx(&sinfo)) - gaim_debug_error("wgaim", "Error opening URI: %s error: %d\n", - uri, (int) sinfo.hInstApp); + if (G_WIN32_HAVE_WIDECHAR_API()) { + SHELLEXECUTEINFOW wsinfo; + wchar_t *w_uri; + + w_uri = g_utf8_to_utf16(uri, -1, NULL, NULL, NULL); + + memset(&wsinfo, 0, sizeof(wsinfo)); + wsinfo.cbSize = sizeof(wsinfo); + wsinfo.fMask = SEE_MASK_CLASSNAME; + wsinfo.lpVerb = L"open"; + wsinfo.lpFile = w_uri; + wsinfo.nShow = SW_SHOWNORMAL; + wsinfo.lpClass = L"http"; + + gaim_debug(GAIM_DEBUG_INFO, "wgaim_notify_uri", "The wide uri is %s\n", uri); + if(!ShellExecuteExW(&wsinfo)) + gaim_debug_error("wgaim", "Error opening URI: %s error: %d\n", + uri, (int) wsinfo.hInstApp); + + g_free(w_uri); + } else { + SHELLEXECUTEINFOA sinfo; + gchar *locale_uri; + + locale_uri = g_locale_from_utf8(uri, -1, NULL, NULL, NULL); + + memset(&sinfo, 0, sizeof(sinfo)); + sinfo.cbSize = sizeof(sinfo); + sinfo.fMask = SEE_MASK_CLASSNAME; + sinfo.lpVerb = "open"; + sinfo.lpFile = locale_uri; + sinfo.nShow = SW_SHOWNORMAL; + sinfo.lpClass = "http"; + + if(!ShellExecuteExA(&sinfo)) + gaim_debug_error("wgaim", "Error opening URI: %s error: %d\n", + uri, (int) sinfo.hInstApp); + + g_free(locale_uri); + } } void wgaim_init(HINSTANCE hint) { @@ -407,11 +430,10 @@ /* Set Environmental Variables */ /* Tell perl where to find Gaim's perl modules */ perlenv = g_getenv("PERL5LIB"); - newenv = g_strdup_printf("PERL5LIB=%s%s%s%s", + newenv = g_strdup_printf("PERL5LIB=%s%s%s" G_DIR_SEPARATOR_S "perlmod;", perlenv ? perlenv : "", perlenv ? ";" : "", - wgaim_install_dir(), - "\\perlmod;"); + wgaim_install_dir()); if (putenv(newenv) < 0) gaim_debug(GAIM_DEBUG_WARNING, "wgaim", "putenv failed\n"); g_free(newenv); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-05-18 13:48:20
|
Revision: 16190 Author: datallah Date: 2006-05-18 06:48:11 -0700 (Thu, 18 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16190&view=rev Log Message: ----------- Added wrapper for send() so that errno is set correctly Modified Paths: -------------- trunk/src/win32/libc_interface.c trunk/src/win32/libc_interface.h Modified: trunk/src/win32/libc_interface.c =================================================================== --- trunk/src/win32/libc_interface.c 2006-05-18 04:47:04 UTC (rev 16189) +++ trunk/src/win32/libc_interface.c 2006-05-18 13:48:11 UTC (rev 16190) @@ -285,20 +285,25 @@ } } -int wgaim_write(int fd, const void *buf, unsigned int size) { +int wgaim_send(int fd, const void *buf, unsigned int size, int flags) { int ret; - if(wgaim_is_socket(fd)) { - if((ret = send(fd, buf, size, 0)) == SOCKET_ERROR) { - errno = WSAGetLastError(); - if(errno == WSAEWOULDBLOCK) - errno = EAGAIN; - return -1; - } else { - /* success */ - return ret; - } - } else + ret = send(fd, buf, size, flags); + + if (ret == SOCKET_ERROR) { + errno = WSAGetLastError(); + if(errno == WSAEWOULDBLOCK) + errno = EAGAIN; + return -1; + } + return ret; +} + +int wgaim_write(int fd, const void *buf, unsigned int size) { + + if(wgaim_is_socket(fd)) + return wgaim_send(fd, buf, size, 0); + else return write(fd, buf, size); } Modified: trunk/src/win32/libc_interface.h =================================================================== --- trunk/src/win32/libc_interface.h 2006-05-18 04:47:04 UTC (rev 16189) +++ trunk/src/win32/libc_interface.h 2006-05-18 13:48:11 UTC (rev 16190) @@ -112,6 +112,10 @@ #define recv(fd, buf, len, flags) \ wgaim_recv(fd, buf, len, flags) +int wgaim_send(int fd, const void *buf, unsigned int size, int flags); +#define send(socket, buf, buflen, flags) \ +wgaim_send(socket, buf, buflen, flags) + int wgaim_close(int fd); #define close( fd ) \ wgaim_close( fd ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tal...@us...> - 2006-05-18 04:47:12
|
Revision: 16189 Author: taliesein Date: 2006-05-17 21:47:04 -0700 (Wed, 17 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16189&view=rev Log Message: ----------- fatally assertive in how I overstep during connect. So let's add more steps Modified Paths: -------------- trunk/src/protocols/sametime/sametime.c Modified: trunk/src/protocols/sametime/sametime.c =================================================================== --- trunk/src/protocols/sametime/sametime.c 2006-05-18 04:23:02 UTC (rev 16188) +++ trunk/src/protocols/sametime/sametime.c 2006-05-18 04:47:04 UTC (rev 16189) @@ -92,7 +92,7 @@ /* stages of connecting-ness */ -#define MW_CONNECT_STEPS 10 +#define MW_CONNECT_STEPS 11 /* stages of conciousness */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fac...@us...> - 2006-05-18 04:23:12
|
Revision: 16188 Author: faceprint Date: 2006-05-17 21:23:02 -0700 (Wed, 17 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16188&view=rev Log Message: ----------- jabber status message escape goodness Modified Paths: -------------- trunk/src/protocols/jabber/buddy.c Modified: trunk/src/protocols/jabber/buddy.c =================================================================== --- trunk/src/protocols/jabber/buddy.c 2006-05-16 15:43:45 UTC (rev 16187) +++ trunk/src/protocols/jabber/buddy.c 2006-05-18 04:23:02 UTC (rev 16188) @@ -110,7 +110,7 @@ jbr->state = state; if(jbr->status) g_free(jbr->status); - jbr->status = g_strdup(status); + jbr->status = g_markup_escape_text(status, -1); return jbr; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-16 15:43:48
|
Revision: 16187 Author: rlaager Date: 2006-05-16 08:43:45 -0700 (Tue, 16 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16187&view=rev Log Message: ----------- SVN fails to compile for some people (Luke, and the submitter of 1489421 at least). It worked for me and then didn't. Maybe I was looking at different trees? Anyway, this seems to fix it for me. We really need to cleanup the DBus stuff. Modified Paths: -------------- trunk/src/dbus-analyze-functions.py Modified: trunk/src/dbus-analyze-functions.py =================================================================== --- trunk/src/dbus-analyze-functions.py 2006-05-13 15:42:23 UTC (rev 16186) +++ trunk/src/dbus-analyze-functions.py 2006-05-16 15:43:45 UTC (rev 16187) @@ -26,6 +26,11 @@ "gaim_conv_placement_get_fnc", "gaim_conv_placement_get_current_func", "gaim_conv_placement_set_current_func", + + # This is excluded because this script treats GaimLogReadFlags* + # as pointer to a struct, instead of a pointer to an enum. This + # causes a compilation error. Someone should fix this script. + "gaim_log_read", ] # This is a list of functions that return a GList* whose elements are This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-13 15:42:27
|
Revision: 16186 Author: thekingant Date: 2006-05-13 08:42:23 -0700 (Sat, 13 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16186&view=rev Log Message: ----------- Fix a typo in the disable-gstreamer description and capitalize gadugadu Modified Paths: -------------- trunk/configure.ac Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-05-12 23:04:48 UTC (rev 16185) +++ trunk/configure.ac 2006-05-13 15:42:23 UTC (rev 16186) @@ -166,7 +166,7 @@ PKG_CHECK_MODULES(GSTREAMER, gstreamer-0.10, ,enable_gst=no) AC_SUBST(GSTREAMER_CFLAGS) AC_SUBST(GSTREAMER_LIBS) -AC_ARG_ENABLE(gstreamer,[ --disable-gstreamer compile with GStreamer audio support],enable_gst=no) +AC_ARG_ENABLE(gstreamer,[ --disable-gstreamer compile without GStreamer audio support],enable_gst=no) if test "x$enable_gst" = "xyes"; then AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for making sounds]) fi @@ -304,10 +304,10 @@ dnl ####################################################################### -dnl # Check for gadugadu client includes and libraries +dnl # Check for Gadu-Gadu client includes and libraries dnl ####################################################################### -AC_ARG_WITH(gadu-includes, [AC_HELP_STRING([--with-gadu-includes=DIR], [compile the gadugadu plugin against includes in DIR])], [ac_gadu_includes="$withval"], [ac_gadu_includes="no"]) -AC_ARG_WITH(gadu-libs, [AC_HELP_STRING([--with-gadu-libs=DIR], [compile the gadugadu plugin against the libs in DIR])], [ac_gadu_libs="$withval"], [ac_gadu_libs="no"]) +AC_ARG_WITH(gadu-includes, [AC_HELP_STRING([--with-gadu-includes=DIR], [compile the GaduGadu plugin against includes in DIR])], [ac_gadu_includes="$withval"], [ac_gadu_includes="no"]) +AC_ARG_WITH(gadu-libs, [AC_HELP_STRING([--with-gadu-libs=DIR], [compile the GaduGadu plugin against the libs in DIR])], [ac_gadu_libs="$withval"], [ac_gadu_libs="no"]) GADU_CFLAGS="" GADU_LIBS="" if test -n "$with_gadu_includes" || test -n "$with_gadu_libs"; then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-12 23:05:00
|
Revision: 16185 Author: rlaager Date: 2006-05-12 16:04:48 -0700 (Fri, 12 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16185&view=rev Log Message: ----------- SF Patch #1480147 from sanmarcos- "This removes unused scrollbars (i.e, there is nothing to scroll, and the bar is visible) in GtkAccount, GtkPounce, GtkPrivacy, GtkFt and GtkPlugin." I don't know of any compelling reason we have forced scrollbars here, and forcing scrollbars is almost always wrong, in my opinion. Modified Paths: -------------- trunk/src/gtkaccount.c trunk/src/gtkft.c trunk/src/gtkplugin.c trunk/src/gtkpounce.c trunk/src/gtkprivacy.c Modified: trunk/src/gtkaccount.c =================================================================== --- trunk/src/gtkaccount.c 2006-05-12 22:25:26 UTC (rev 16184) +++ trunk/src/gtkaccount.c 2006-05-12 23:04:48 UTC (rev 16185) @@ -2391,10 +2391,10 @@ /* Create the scrolled window. */ sw = gtk_scrolled_window_new(0, 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_ALWAYS); + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), - GTK_SHADOW_IN); + GTK_SHADOW_IN); gtk_widget_show(sw); /* Create the list model. */ Modified: trunk/src/gtkft.c =================================================================== --- trunk/src/gtkft.c 2006-05-12 22:25:26 UTC (rev 16184) +++ trunk/src/gtkft.c 2006-05-12 23:04:48 UTC (rev 16185) @@ -547,10 +547,10 @@ /* Create the scrolled window. */ sw = gtk_scrolled_window_new(0, 0); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), - GTK_SHADOW_IN); + GTK_SHADOW_IN); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_ALWAYS); + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); gtk_widget_show(sw); /* Build the tree model */ Modified: trunk/src/gtkplugin.c =================================================================== --- trunk/src/gtkplugin.c 2006-05-12 22:25:26 UTC (rev 16184) +++ trunk/src/gtkplugin.c 2006-05-12 23:04:48 UTC (rev 16185) @@ -547,7 +547,7 @@ gtk_window_set_role(GTK_WINDOW(plugin_dialog), "plugins"); sw = gtk_scrolled_window_new(NULL,NULL); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(plugin_dialog)->vbox), sw, TRUE, TRUE, 0); Modified: trunk/src/gtkpounce.c =================================================================== --- trunk/src/gtkpounce.c 2006-05-12 22:25:26 UTC (rev 16184) +++ trunk/src/gtkpounce.c 2006-05-12 23:04:48 UTC (rev 16185) @@ -1184,10 +1184,10 @@ /* Create the scrolled window */ sw = gtk_scrolled_window_new(0, 0); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_ALWAYS); + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), - GTK_SHADOW_IN); + GTK_SHADOW_IN); gtk_widget_show(sw); /* Create the list model */ Modified: trunk/src/gtkprivacy.c =================================================================== --- trunk/src/gtkprivacy.c 2006-05-12 22:25:26 UTC (rev 16184) +++ trunk/src/gtkprivacy.c 2006-05-12 23:04:48 UTC (rev 16185) @@ -150,8 +150,8 @@ sw = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_ALWAYS); + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-12 22:25:33
|
Revision: 16184 Author: rlaager Date: 2006-05-12 15:25:26 -0700 (Fri, 12 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16184&view=rev Log Message: ----------- Remove some print statements that were probably intended for debugging. Suppress printing "None" when there should be no output. Modified Paths: -------------- trunk/src/gaim-remote Modified: trunk/src/gaim-remote =================================================================== --- trunk/src/gaim-remote 2006-05-12 22:08:34 UTC (rev 16183) +++ trunk/src/gaim-remote 2006-05-12 22:25:26 UTC (rev 16184) @@ -54,7 +54,6 @@ except: # try to get any account and connect it account = cgaim.GaimAccountsFindAny(accountname, protocolname) - print gaim.GaimAccountGetUsername(account) gaim.GaimAccountSetStatusVargs(account, "online", 1) gaim.GaimAccountConnect(account) return account @@ -68,7 +67,7 @@ if protocol is not None: protocol = "prpl-" + protocol command = match.group(5) - paramstring = match.group(7) + paramstring = match.group(7) params = {} if paramstring is not None: for param in paramstring.split("&"): @@ -78,7 +77,6 @@ accountname = params.get("account", "") if command == "goim": - print params account = findaccount(accountname, protocol) conversation = cgaim.GaimConversationNew(1, account, params["screenname"]) if "message" in params: @@ -207,6 +205,8 @@ """ % sys.argv[0] for arg in sys.argv[1:]: - print execute(arg) - - + output = execute(arg) + + if (output != None): + print output + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <de...@us...> - 2006-05-12 22:08:45
|
Revision: 16183 Author: deryni9 Date: 2006-05-12 15:08:34 -0700 (Fri, 12 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16183&view=rev Log Message: ----------- Apparently if you just use --with-python the autotools decide you must mean you want to use yes(1) as your python interpreter, this results in an infinitely growing output file the first time the dbus stuff tries to generate a header. That's bad. This should make it a bit clearer. Modified Paths: -------------- trunk/configure.ac Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-05-12 21:50:19 UTC (rev 16182) +++ trunk/configure.ac 2006-05-12 22:08:34 UTC (rev 16183) @@ -673,7 +673,7 @@ dnl in C (brrrr ...). AC_ARG_WITH([python], - AC_HELP_STRING([--with-python], + AC_HELP_STRING([--with-python=PATH], [which python interpreter to use for dbus code generation]), PYTHON=$withval) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-12 21:50:27
|
Revision: 16182 Author: rlaager Date: 2006-05-12 14:50:19 -0700 (Fri, 12 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16182&view=rev Log Message: ----------- SF Patch #1460287 from J?\195?\169r?\195?\180me Poulin (ticpu), with a bug fix by Sadrul Currently, with a string like "vnc://ticpu.myftp.org:1/", the "ftp.org:1/" portion will be linkified as an FTP URL. This patch corrects that. Modified Paths: -------------- trunk/src/util.c Modified: trunk/src/util.c =================================================================== --- trunk/src/util.c 2006-05-12 20:21:35 UTC (rev 16181) +++ trunk/src/util.c 2006-05-12 21:50:19 UTC (rev 16182) @@ -1837,7 +1837,7 @@ t++; } - } else if (!g_ascii_strncasecmp(c, "www.", 4)) { + } else if (!g_ascii_strncasecmp(c, "www.", 4) && (c == text || badchar(c[-1]) || badentity(c-1))) { if (c[4] != '.') { t = c; while (1) { @@ -1892,7 +1892,7 @@ t++; } - } else if (!g_ascii_strncasecmp(c, "ftp.", 4)) { + } else if (!g_ascii_strncasecmp(c, "ftp.", 4) && (c == text || badchar(c[-1]) || badentity(c-1))) { if (c[4] != '.') { t = c; while (1) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-12 20:21:44
|
Revision: 16181 Author: rlaager Date: 2006-05-12 13:21:35 -0700 (Fri, 12 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16181&view=rev Log Message: ----------- SF Patch #1475297 points out that the side tab width is too much for people with lower resolutions. We've had a couple complaints. I e-mailed gaim-devel and I don't remember any responses (nor do I see any in my e-mail archive). I'm changing the side tab with from 18 to 12. The submitter of that patch item suggested 10, but I compromised a bit. If you object to this, let me know (or commit something else). Modified Paths: -------------- trunk/src/gtkconv.c Modified: trunk/src/gtkconv.c =================================================================== --- trunk/src/gtkconv.c 2006-05-12 03:45:47 UTC (rev 16180) +++ trunk/src/gtkconv.c 2006-05-12 20:21:35 UTC (rev 16181) @@ -7535,7 +7535,7 @@ g_object_set(G_OBJECT(gtkconv->tab_label), "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), 6); if (tabs_side) { - gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), MIN(g_utf8_strlen(tmp_lab, -1), 18)); + gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), MIN(g_utf8_strlen(tmp_lab, -1), 12)); } if (angle) gtk_label_set_angle(GTK_LABEL(gtkconv->tab_label), angle); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-05-12 03:45:51
|
Revision: 16180 Author: datallah Date: 2006-05-11 20:45:47 -0700 (Thu, 11 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16180&view=rev Log Message: ----------- Fix a docking bug. When gaim exits while the Buddy List is docked, but minimized to the docklet, the next time gaim is started, the sectionof the screen that would be used by the docked Buddy List will be empty - not any more. Modified Paths: -------------- trunk/plugins/win32/winprefs/winprefs.c Modified: trunk/plugins/win32/winprefs/winprefs.c =================================================================== --- trunk/plugins/win32/winprefs/winprefs.c 2006-05-12 02:50:23 UTC (rev 16179) +++ trunk/plugins/win32/winprefs/winprefs.c 2006-05-12 03:45:47 UTC (rev 16180) @@ -59,6 +59,7 @@ static GaimPlugin *handle = NULL; static GtkAppBar *blist_ab = NULL; static GtkWidget *blist = NULL; +static guint blist_visible_cb_id = 0; /* flash info */ @@ -109,11 +110,11 @@ static void blist_dock_cb(gboolean val) { if(val) { - gaim_debug_info(WINPREFS_PLUGIN_ID, "Blist Docking..\n"); + gaim_debug_info(WINPREFS_PLUGIN_ID, "Blist Docking...\n"); if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) != BLIST_TOP_NEVER) blist_set_ontop(TRUE); } else { - gaim_debug_info(WINPREFS_PLUGIN_ID, "Blist Undocking..\n"); + gaim_debug_info(WINPREFS_PLUGIN_ID, "Blist Undocking...\n"); if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_ALWAYS) blist_set_ontop(TRUE); else @@ -150,6 +151,34 @@ blist_set_dockable(FALSE); } +/* Listen for the first time the window stops being withdrawn */ +static void blist_visible_cb(const char *pref, GaimPrefType type, + gconstpointer value, gpointer user_data) { + if(gaim_prefs_get_bool(pref)) { + gtk_appbar_dock(blist_ab, + gaim_prefs_get_int(PREF_DBLIST_SIDE)); + + if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) + == BLIST_TOP_DOCKED) + blist_set_ontop(TRUE); + + /* We only need to be notified about this once */ + gaim_prefs_disconnect_callback(blist_visible_cb_id); + } +} + +/* This needs to be delayed otherwise, when the blist is originally created and + * hidden, it'll trigger the blist_visible_cb */ +static gboolean listen_for_blist_visible_cb(gpointer data) { + if (handle != NULL) + blist_visible_cb_id = + gaim_prefs_connect_callback(handle, + "/gaim/gtk/blist/list_visible", + blist_visible_cb, NULL); + + return FALSE; +} + static void blist_create_cb(GaimBuddyList *gaim_blist, void *data) { gaim_debug_info(WINPREFS_PLUGIN_ID, "buddy list created\n"); @@ -159,10 +188,16 @@ blist_set_dockable(TRUE); if(gaim_prefs_get_bool(PREF_DBLIST_DOCKED)) { blist_ab->undocked_height = gaim_prefs_get_int(PREF_DBLIST_HEIGHT); - gtk_appbar_dock(blist_ab, - gaim_prefs_get_int(PREF_DBLIST_SIDE)); - if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) == BLIST_TOP_DOCKED) - blist_set_ontop(TRUE); + if(!(gdk_window_get_state(blist->window) + & GDK_WINDOW_STATE_WITHDRAWN)) { + gtk_appbar_dock(blist_ab, + gaim_prefs_get_int(PREF_DBLIST_SIDE)); + if(gaim_prefs_get_int(PREF_BLIST_ON_TOP) + == BLIST_TOP_DOCKED) + blist_set_ontop(TRUE); + } else { + g_idle_add(listen_for_blist_visible_cb, NULL); + } } } @@ -374,6 +409,8 @@ blist_set_dockable(FALSE); blist_set_ontop(FALSE); + handle = NULL; + return TRUE; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-05-12 02:50:28
|
Revision: 16179 Author: datallah Date: 2006-05-11 19:50:23 -0700 (Thu, 11 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16179&view=rev Log Message: ----------- Fix Registry key leakage. Modified Paths: -------------- trunk/plugins/win32/winprefs/winprefs.c Modified: trunk/plugins/win32/winprefs/winprefs.c =================================================================== --- trunk/plugins/win32/winprefs/winprefs.c 2006-05-12 02:34:07 UTC (rev 16178) +++ trunk/plugins/win32/winprefs/winprefs.c 2006-05-12 02:50:23 UTC (rev 16179) @@ -382,7 +382,7 @@ GtkWidget *vbox; GtkWidget *button; char* gtk_version = NULL; - HKEY hKey = HKEY_CURRENT_USER; + HKEY hKey; ret = gtk_vbox_new(FALSE, 18); gtk_container_set_border_width(GTK_CONTAINER(ret), 12); @@ -409,6 +409,7 @@ if(ERROR_SUCCESS == RegQueryValueEx(hKey, "Gaim", 0, NULL, NULL, NULL)) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE); } + RegCloseKey(hKey); } g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(winprefs_set_autostart), NULL); gtk_widget_show(button); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-05-12 02:34:12
|
Revision: 16178 Author: datallah Date: 2006-05-11 19:34:07 -0700 (Thu, 11 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16178&view=rev Log Message: ----------- Workaround for win32 GTK+ bug causing the maximized window size to be saved Modified Paths: -------------- trunk/src/gtkblist.c Modified: trunk/src/gtkblist.c =================================================================== --- trunk/src/gtkblist.c 2006-05-11 17:02:46 UTC (rev 16177) +++ trunk/src/gtkblist.c 2006-05-12 02:34:07 UTC (rev 16178) @@ -212,6 +212,15 @@ else return FALSE; /* carry on normally */ +#ifdef _WIN32 + /* Workaround for GTK+ bug # 169811 - "configure_event" is fired + * when the window is being maximized */ + if (gdk_window_get_state(w->window) + & GDK_WINDOW_STATE_MAXIMIZED) { + return FALSE; + } +#endif + /* don't save if nothing changed */ if (x == gaim_prefs_get_int("/gaim/gtk/blist/x") && y == gaim_prefs_get_int("/gaim/gtk/blist/y") && This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-11 17:02:56
|
Revision: 16177 Author: rlaager Date: 2006-05-11 10:02:46 -0700 (Thu, 11 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16177&view=rev Log Message: ----------- SF Bug #1485718 "At Solaris ARC review, the architect committee noticed that gaim installs two files to /usr/bin with the *.py extension. These include: gaim-notifications-example.py gaim-remote.py ARC also noticed that there are no other applications in /usr/bin with this extension, and questioned whether it makes sense to add applications to the default user PATH like this. Does it make more sense to remove the .py from the filenames if you are planning to install them into PATH? They recommend changing the name for consistancy. Also, not sure it is a good idea to install example programs to /usr/bin. Perhaps gaim-notifications-example should be installed to a /usr/demo directory, or elsewhere?" I've renamed gaim-remote.py to gaim-remote and moved gaim-notifications-example to /usr/share/gaim/doc/examples. Modified Paths: -------------- trunk/src/Makefile.am Added Paths: ----------- trunk/src/gaim-notifications-example trunk/src/gaim-remote Removed Paths: ------------- trunk/src/gaim-notifications-example.py trunk/src/gaim-remote.py Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2006-05-11 01:35:30 UTC (rev 16176) +++ trunk/src/Makefile.am 2006-05-11 17:02:46 UTC (rev 16177) @@ -1,8 +1,8 @@ EXTRA_DIST = \ dbus-analyze-functions.py \ dbus-analyze-types.py \ - gaim-notifications-example.py \ - gaim-remote.py \ + gaim-notifications-example \ + gaim-remote \ gaim-send \ gaim-send-async \ getopt.c \ @@ -228,8 +228,11 @@ # scripts -bin_SCRIPTS = gaim-remote.py gaim-notifications-example.py gaim-send gaim-send-async +bin_SCRIPTS = gaim-remote gaim-send gaim-send-async +exampledir = $(datadir)/doc/@PACKAGE@/examples +example_DATA = gaim-notifications-example + endif bin_PROGRAMS = gaim $(gaim_clientbP) Copied: trunk/src/gaim-notifications-example (from rev 16172, trunk/src/gaim-notifications-example.py) =================================================================== --- trunk/src/gaim-notifications-example (rev 0) +++ trunk/src/gaim-notifications-example 2006-05-11 17:02:46 UTC (rev 16177) @@ -0,0 +1,86 @@ +#!/usr/bin/env python + +# This is a simple gaim notification server. +# It shows notifications when your buddy signs on or you get an IM message. +# +# This script requires Python 2.4 and PyGTK bindings +# +# Note that all function names are resolved dynamically, no +# gaim-specific library is needed. + +import dbus +import dbus.glib +import dbus.decorators +import gobject +import os + +def ensureimconversation(conversation, account, name): + if conversation != 0: + return conversation + else: + # 1 = GAIM_CONV_IM + return gaim.GaimConversationNew(1, account, name) + +def receivedimmsg(account, name, message, conversation, flags): + buddy = gaim.GaimFindBuddy(account, name) + if buddy != 0: + alias = gaim.GaimBuddyGetAlias(buddy) + else: + alias = name + + text = "%s says %s" % (alias, message) + code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons", + "'So what?','Show me',Close,Abuse", text) + + if code == 101: # so what? + pass + else: + conversation = ensureimconversation(conversation, account, name) + + if code == 102: # show me + window = gaim.GaimConversationGetWindow(conversation) + gaim.GaimConvWindowRaise(window) + + if code == 103: # close + gaim.GaimConversationDestroy(conversation) + + if code == 104: # abuse + im = gaim.GaimConversationGetImData(conversation) + gaim.GaimConvImSend(im, "Go away you f...") + + +def buddysignedon(buddyid): + alias = gaim.GaimBuddyGetAlias(buddyid) + text = "%s is online" % alias + + code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons", + "'So what?','Let's talk'", text) + + if code == 101: # so what? + pass + + if code == 102: # talk + name = gaim.GaimBuddyGetName(buddyid) + account = gaim.GaimBuddyGetAccount(buddyid) + gaim.GaimConversationNew(1, account, name) + + +bus = dbus.SessionBus() +obj = bus.get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject") +gaim = dbus.Interface(obj, "net.sf.gaim.GaimInterface") + +bus.add_signal_receiver(receivedimmsg, + dbus_interface = "net.sf.gaim.GaimInterface", + signal_name = "ReceivedImMsg") + +bus.add_signal_receiver(buddysignedon, + dbus_interface = "net.sf.gaim.GaimInterface", + signal_name = "BuddySignedOn") + +print "This is a simple gaim notification server." +print "It shows notifications when your buddy signs on or you get an IM message." + +loop = gobject.MainLoop() +loop.run() + + Property changes on: trunk/src/gaim-notifications-example ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Deleted: trunk/src/gaim-notifications-example.py =================================================================== --- trunk/src/gaim-notifications-example.py 2006-05-11 01:35:30 UTC (rev 16176) +++ trunk/src/gaim-notifications-example.py 2006-05-11 17:02:46 UTC (rev 16177) @@ -1,86 +0,0 @@ -#!/usr/bin/env python - -# This is a simple gaim notification server. -# It shows notifications when your buddy signs on or you get an IM message. -# -# This script requires Python 2.4 and PyGTK bindings -# -# Note that all function names are resolved dynamically, no -# gaim-specific library is needed. - -import dbus -import dbus.glib -import dbus.decorators -import gobject -import os - -def ensureimconversation(conversation, account, name): - if conversation != 0: - return conversation - else: - # 1 = GAIM_CONV_IM - return gaim.GaimConversationNew(1, account, name) - -def receivedimmsg(account, name, message, conversation, flags): - buddy = gaim.GaimFindBuddy(account, name) - if buddy != 0: - alias = gaim.GaimBuddyGetAlias(buddy) - else: - alias = name - - text = "%s says %s" % (alias, message) - code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons", - "'So what?','Show me',Close,Abuse", text) - - if code == 101: # so what? - pass - else: - conversation = ensureimconversation(conversation, account, name) - - if code == 102: # show me - window = gaim.GaimConversationGetWindow(conversation) - gaim.GaimConvWindowRaise(window) - - if code == 103: # close - gaim.GaimConversationDestroy(conversation) - - if code == 104: # abuse - im = gaim.GaimConversationGetImData(conversation) - gaim.GaimConvImSend(im, "Go away you f...") - - -def buddysignedon(buddyid): - alias = gaim.GaimBuddyGetAlias(buddyid) - text = "%s is online" % alias - - code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons", - "'So what?','Let's talk'", text) - - if code == 101: # so what? - pass - - if code == 102: # talk - name = gaim.GaimBuddyGetName(buddyid) - account = gaim.GaimBuddyGetAccount(buddyid) - gaim.GaimConversationNew(1, account, name) - - -bus = dbus.SessionBus() -obj = bus.get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject") -gaim = dbus.Interface(obj, "net.sf.gaim.GaimInterface") - -bus.add_signal_receiver(receivedimmsg, - dbus_interface = "net.sf.gaim.GaimInterface", - signal_name = "ReceivedImMsg") - -bus.add_signal_receiver(buddysignedon, - dbus_interface = "net.sf.gaim.GaimInterface", - signal_name = "BuddySignedOn") - -print "This is a simple gaim notification server." -print "It shows notifications when your buddy signs on or you get an IM message." - -loop = gobject.MainLoop() -loop.run() - - Copied: trunk/src/gaim-remote (from rev 16173, trunk/src/gaim-remote.py) =================================================================== --- trunk/src/gaim-remote (rev 0) +++ trunk/src/gaim-remote 2006-05-11 17:02:46 UTC (rev 16177) @@ -0,0 +1,212 @@ +#!/usr/bin/python + +import dbus +import re +import urllib +import sys + +import xml.dom.minidom + +xml.dom.minidom.Element.all = xml.dom.minidom.Element.getElementsByTagName + +obj = dbus.SessionBus().get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject") +gaim = dbus.Interface(obj, "net.sf.gaim.GaimInterface") + +class CheckedObject: + def __init__(self, obj): + self.obj = obj + + def __getattr__(self, attr): + return CheckedAttribute(self, attr) + +class CheckedAttribute: + def __init__(self, cobj, attr): + self.cobj = cobj + self.attr = attr + + def __call__(self, *args): + result = self.cobj.obj.__getattr__(self.attr)(*args) + if result == 0: + raise "Error: " + self.attr + " " + str(args) + " returned " + str(result) + return result + +cgaim = CheckedObject(gaim) + +urlregexp = r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?" + +def extendlist(list, length, fill): + if len(list) < length: + return list + [fill] * (length - len(list)) + else: + return list + +def convert(value): + try: + return int(value) + except: + return value + +def findaccount(accountname, protocolname): + try: + # prefer connected accounts + account = cgaim.GaimAccountsFindConnected(accountname, protocolname) + return account + except: + # try to get any account and connect it + account = cgaim.GaimAccountsFindAny(accountname, protocolname) + print gaim.GaimAccountGetUsername(account) + gaim.GaimAccountSetStatusVargs(account, "online", 1) + gaim.GaimAccountConnect(account) + return account + + +def execute(uri): + match = re.match(urlregexp, uri) + protocol = match.group(2) + if protocol == "aim" or protocol == "icq": + protocol = "oscar" + if protocol is not None: + protocol = "prpl-" + protocol + command = match.group(5) + paramstring = match.group(7) + params = {} + if paramstring is not None: + for param in paramstring.split("&"): + key, value = extendlist(param.split("=",1), 2, "") + params[key] = urllib.unquote(value) + + accountname = params.get("account", "") + + if command == "goim": + print params + account = findaccount(accountname, protocol) + conversation = cgaim.GaimConversationNew(1, account, params["screenname"]) + if "message" in params: + im = cgaim.GaimConversationGetImData(conversation) + gaim.GaimConvImSend(im, params["message"]) + return None + + elif command == "gochat": + account = findaccount(accountname, protocol) + connection = cgaim.GaimAccountGetConnection(account) + return gaim.ServJoinChat(connection, params) + + elif command == "addbuddy": + account = findaccount(accountname, protocol) + return cgaim.GaimBlistRequestAddBuddy(account, params["screenname"], + params.get("group", ""), "") + + elif command == "setstatus": + current = gaim.GaimSavedstatusGetCurrent() + + if "status" in params: + status_id = params["status"] + status_type = gaim.GaimPrimitiveGetTypeFromId(status_id) + else: + status_type = gaim.GaimSavedStatusGetType(current) + status_id = gaim.GaimPrimitiveGetIdFromType(status_type) + + if "message" in params: + message = params["message"]; + else: + message = gaim.GaimSavedstatusGetMessage(current) + + if "account" in params: + accounts = [cgaim.GaimAccountsFindAny(accountname, protocol)] + + for account in accounts: + status = gaim.GaimAccountGetStatus(account, status_id) + type = gaim.GaimStatusGetType(status) + gaim.GaimSavedstatusSetSubstatus(current, account, type, message) + gaim.GaimSavedstatusActivateForAccount(current, account) + else: + accounts = gaim.GaimAccountsGetAllActive() + saved = gaim.GaimSavedstatusNew("", status_type) + gaim.GaimSavedstatusSetMessage(saved, message) + gaim.GaimSavedstatusActivate(saved) + + return None + + elif command == "getinfo": + account = findaccount(accountname, protocol) + connection = cgaim.GaimAccountGetConnection(account) + return gaim.ServGetInfo(connection, params["screenname"]) + + elif command == "quit": + return gaim.GaimCoreQuit() + + elif command == "uri": + return None + + else: + match = re.match(r"(\w+)\s*\(([^)]*)\)", command) + if match is not None: + name = match.group(1) + argstr = match.group(2) + if argstr == "": + args = [] + else: + args = argstr.split(",") + fargs = [] + for arg in args: + fargs.append(convert(arg.strip())) + return gaim.__getattr__(name)(*fargs) + else: + # introspect the object to get parameter names and types + # this is slow because the entire introspection info must be downloaded + data = dbus.Interface(obj, "org.freedesktop.DBus.Introspectable").\ + Introspect() + introspect = xml.dom.minidom.parseString(data).documentElement + for method in introspect.all("method"): + if command == method.getAttribute("name"): + methodparams = [] + for arg in method.all("arg"): + if arg.getAttribute("direction") == "in": + value = params[arg.getAttribute("name")] + type = arg.getAttribute("type") + if type == "s": + methodparams.append(value) + elif type == "i": + methodparams.append(int(value)) + else: + raise "Don't know how to handle type \"%s\"" % type + return gaim.__getattr__(command)(*methodparams) + raise "Unknown command: %s" % command + + +if len(sys.argv) == 1: + print """This program uses DBus to communicate with gaim. + +Usage: + + %s "command1" "command2" ... + +Each command is of one of the three types: + + [protocol:]commandname?param1=value1¶m2=value2&... + FunctionName?param1=value1¶m2=value2&... + FunctionName(value1,value2,...) + +The second and third form are provided for completeness but their use +is not recommended; use gaim-send or gaim-send-async instead. The +second form uses introspection to find out the parameter names and +their types, therefore it is rather slow. + +Examples of commands: + + jabber:goim?screenname=testone@localhost&message=hi + jabber:gochat?room=TestRoom&server=conference.localhost + jabber:getinfo?screenname=testone@localhost + jabber:addbuddy?screenname=my friend + + setstatus?status=away&message=don't disturb + quit + + GaimAccountsFindConnected?name=&protocol=prpl-jabber + GaimAccountFindConnected(,prpl-jabber) +""" % sys.argv[0] + +for arg in sys.argv[1:]: + print execute(arg) + + Property changes on: trunk/src/gaim-remote ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + text/plain Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Deleted: trunk/src/gaim-remote.py =================================================================== --- trunk/src/gaim-remote.py 2006-05-11 01:35:30 UTC (rev 16176) +++ trunk/src/gaim-remote.py 2006-05-11 17:02:46 UTC (rev 16177) @@ -1,212 +0,0 @@ -#!/usr/bin/python - -import dbus -import re -import urllib -import sys - -import xml.dom.minidom - -xml.dom.minidom.Element.all = xml.dom.minidom.Element.getElementsByTagName - -obj = dbus.SessionBus().get_object("net.sf.gaim.GaimService", "/net/sf/gaim/GaimObject") -gaim = dbus.Interface(obj, "net.sf.gaim.GaimInterface") - -class CheckedObject: - def __init__(self, obj): - self.obj = obj - - def __getattr__(self, attr): - return CheckedAttribute(self, attr) - -class CheckedAttribute: - def __init__(self, cobj, attr): - self.cobj = cobj - self.attr = attr - - def __call__(self, *args): - result = self.cobj.obj.__getattr__(self.attr)(*args) - if result == 0: - raise "Error: " + self.attr + " " + str(args) + " returned " + str(result) - return result - -cgaim = CheckedObject(gaim) - -urlregexp = r"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?" - -def extendlist(list, length, fill): - if len(list) < length: - return list + [fill] * (length - len(list)) - else: - return list - -def convert(value): - try: - return int(value) - except: - return value - -def findaccount(accountname, protocolname): - try: - # prefer connected accounts - account = cgaim.GaimAccountsFindConnected(accountname, protocolname) - return account - except: - # try to get any account and connect it - account = cgaim.GaimAccountsFindAny(accountname, protocolname) - print gaim.GaimAccountGetUsername(account) - gaim.GaimAccountSetStatusVargs(account, "online", 1) - gaim.GaimAccountConnect(account) - return account - - -def execute(uri): - match = re.match(urlregexp, uri) - protocol = match.group(2) - if protocol == "aim" or protocol == "icq": - protocol = "oscar" - if protocol is not None: - protocol = "prpl-" + protocol - command = match.group(5) - paramstring = match.group(7) - params = {} - if paramstring is not None: - for param in paramstring.split("&"): - key, value = extendlist(param.split("=",1), 2, "") - params[key] = urllib.unquote(value) - - accountname = params.get("account", "") - - if command == "goim": - print params - account = findaccount(accountname, protocol) - conversation = cgaim.GaimConversationNew(1, account, params["screenname"]) - if "message" in params: - im = cgaim.GaimConversationGetImData(conversation) - gaim.GaimConvImSend(im, params["message"]) - return None - - elif command == "gochat": - account = findaccount(accountname, protocol) - connection = cgaim.GaimAccountGetConnection(account) - return gaim.ServJoinChat(connection, params) - - elif command == "addbuddy": - account = findaccount(accountname, protocol) - return cgaim.GaimBlistRequestAddBuddy(account, params["screenname"], - params.get("group", ""), "") - - elif command == "setstatus": - current = gaim.GaimSavedstatusGetCurrent() - - if "status" in params: - status_id = params["status"] - status_type = gaim.GaimPrimitiveGetTypeFromId(status_id) - else: - status_type = gaim.GaimSavedStatusGetType(current) - status_id = gaim.GaimPrimitiveGetIdFromType(status_type) - - if "message" in params: - message = params["message"]; - else: - message = gaim.GaimSavedstatusGetMessage(current) - - if "account" in params: - accounts = [cgaim.GaimAccountsFindAny(accountname, protocol)] - - for account in accounts: - status = gaim.GaimAccountGetStatus(account, status_id) - type = gaim.GaimStatusGetType(status) - gaim.GaimSavedstatusSetSubstatus(current, account, type, message) - gaim.GaimSavedstatusActivateForAccount(current, account) - else: - accounts = gaim.GaimAccountsGetAllActive() - saved = gaim.GaimSavedstatusNew("", status_type) - gaim.GaimSavedstatusSetMessage(saved, message) - gaim.GaimSavedstatusActivate(saved) - - return None - - elif command == "getinfo": - account = findaccount(accountname, protocol) - connection = cgaim.GaimAccountGetConnection(account) - return gaim.ServGetInfo(connection, params["screenname"]) - - elif command == "quit": - return gaim.GaimCoreQuit() - - elif command == "uri": - return None - - else: - match = re.match(r"(\w+)\s*\(([^)]*)\)", command) - if match is not None: - name = match.group(1) - argstr = match.group(2) - if argstr == "": - args = [] - else: - args = argstr.split(",") - fargs = [] - for arg in args: - fargs.append(convert(arg.strip())) - return gaim.__getattr__(name)(*fargs) - else: - # introspect the object to get parameter names and types - # this is slow because the entire introspection info must be downloaded - data = dbus.Interface(obj, "org.freedesktop.DBus.Introspectable").\ - Introspect() - introspect = xml.dom.minidom.parseString(data).documentElement - for method in introspect.all("method"): - if command == method.getAttribute("name"): - methodparams = [] - for arg in method.all("arg"): - if arg.getAttribute("direction") == "in": - value = params[arg.getAttribute("name")] - type = arg.getAttribute("type") - if type == "s": - methodparams.append(value) - elif type == "i": - methodparams.append(int(value)) - else: - raise "Don't know how to handle type \"%s\"" % type - return gaim.__getattr__(command)(*methodparams) - raise "Unknown command: %s" % command - - -if len(sys.argv) == 1: - print """This program uses DBus to communicate with gaim. - -Usage: - - %s "command1" "command2" ... - -Each command is of one of the three types: - - [protocol:]commandname?param1=value1¶m2=value2&... - FunctionName?param1=value1¶m2=value2&... - FunctionName(value1,value2,...) - -The second and third form are provided for completeness but their use -is not recommended; use gaim-send or gaim-send-async instead. The -second form uses introspection to find out the parameter names and -their types, therefore it is rather slow. - -Examples of commands: - - jabber:goim?screenname=testone@localhost&message=hi - jabber:gochat?room=TestRoom&server=conference.localhost - jabber:getinfo?screenname=testone@localhost - jabber:addbuddy?screenname=my friend - - setstatus?status=away&message=don't disturb - quit - - GaimAccountsFindConnected?name=&protocol=prpl-jabber - GaimAccountFindConnected(,prpl-jabber) -""" % sys.argv[0] - -for arg in sys.argv[1:]: - print execute(arg) - - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-05-11 01:35:34
|
Revision: 16176 Author: datallah Date: 2006-05-10 18:35:30 -0700 (Wed, 10 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16176&view=rev Log Message: ----------- Fix bug# 1464061. I haven't fixed a bug in forever and I needed a break from my old house plumbing nightmares. It seems that some versions of ejabberd don't necessarily provide an error element and we should probably not crash when this happens. Modified Paths: -------------- trunk/src/protocols/jabber/message.c Modified: trunk/src/protocols/jabber/message.c =================================================================== --- trunk/src/protocols/jabber/message.c 2006-05-10 17:33:51 UTC (rev 16175) +++ trunk/src/protocols/jabber/message.c 2006-05-11 01:35:30 UTC (rev 16176) @@ -231,7 +231,7 @@ return; buf = g_strdup_printf(_("Message delivery to %s failed: %s"), - jm->from, jm->error); + jm->from, jm->error ? jm->error : ""); gaim_notify_formatted(jm->js->gc, _("Jabber Message Error"), _("Jabber Message Error"), buf, jm->xhtml ? jm->xhtml : jm->body, NULL, NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-10 17:34:05
|
Revision: 16175 Author: rlaager Date: 2006-05-10 10:33:51 -0700 (Wed, 10 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16175&view=rev Log Message: ----------- dbus-server.c: In function ?\226?\128?\152gaim_dbus_pointer_to_id?\226?\128?\153: dbus-server.c:104: warning: ?\226?\128?\152return?\226?\128?\153 with no value, in function returning non-void dbus-server.c:107: warning: this function may return with or without a value Modified Paths: -------------- trunk/src/dbus-server.c Modified: trunk/src/dbus-server.c =================================================================== --- trunk/src/dbus-server.c 2006-05-10 17:32:51 UTC (rev 16174) +++ trunk/src/dbus-server.c 2006-05-10 17:33:51 UTC (rev 16175) @@ -101,7 +101,7 @@ { gaim_debug_warning("dbus", "Need to register an object with the dbus subsystem.\n"); - g_return_if_reached(); + g_return_val_if_reached(0); } return id; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-10 17:32:58
|
Revision: 16174 Author: rlaager Date: 2006-05-10 10:32:51 -0700 (Wed, 10 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16174&view=rev Log Message: ----------- (12:23:32) Sadrul Habib Chowdhury (sadrul): KingAnt: log.h probably needs to be added to dbus_exported in src/Makefile.am Modified Paths: -------------- trunk/src/Makefile.am Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2006-05-10 17:31:25 UTC (rev 16173) +++ trunk/src/Makefile.am 2006-05-10 17:32:51 UTC (rev 16174) @@ -176,7 +176,7 @@ dbus_sources = dbus-server.c dbus-useful.c dbus_headers = dbus-bindings.h dbus-gaim.h dbus-server.h dbus-useful.h dbus-define-api.h -dbus_exported = dbus-useful.h dbus-define-api.h account.h blist.h buddyicon.h connection.h conversation.h core.h roomlist.h savedstatuses.h status.h server.h +dbus_exported = dbus-useful.h dbus-define-api.h account.h blist.h buddyicon.h connection.h conversation.h core.h log.h roomlist.h savedstatuses.h status.h server.h gaim_build_coreheaders = $(addprefix $(srcdir)/, $(gaim_coreheaders)) dbus_build_exported = $(addprefix $(srcdir)/, $(dbus_exported)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-10 17:31:37
|
Revision: 16173 Author: rlaager Date: 2006-05-10 10:31:25 -0700 (Wed, 10 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16173&view=rev Log Message: ----------- SF Patch #1482854 from Sadrul "This exposes the savedstatuses-api to dbus and makes the "setstatus" command work for gaim-remot Modified Paths: -------------- trunk/src/Makefile.am trunk/src/dbus-server.c trunk/src/gaim-remote.py trunk/src/savedstatuses.c Modified: trunk/src/Makefile.am =================================================================== --- trunk/src/Makefile.am 2006-05-10 14:02:12 UTC (rev 16172) +++ trunk/src/Makefile.am 2006-05-10 17:31:25 UTC (rev 16173) @@ -176,7 +176,7 @@ dbus_sources = dbus-server.c dbus-useful.c dbus_headers = dbus-bindings.h dbus-gaim.h dbus-server.h dbus-useful.h dbus-define-api.h -dbus_exported = dbus-useful.h dbus-define-api.h account.h blist.h buddyicon.h connection.h conversation.h core.h roomlist.h status.h server.h +dbus_exported = dbus-useful.h dbus-define-api.h account.h blist.h buddyicon.h connection.h conversation.h core.h roomlist.h savedstatuses.h status.h server.h gaim_build_coreheaders = $(addprefix $(srcdir)/, $(gaim_coreheaders)) dbus_build_exported = $(addprefix $(srcdir)/, $(dbus_exported)) Modified: trunk/src/dbus-server.c =================================================================== --- trunk/src/dbus-server.c 2006-05-10 14:02:12 UTC (rev 16172) +++ trunk/src/dbus-server.c 2006-05-10 17:31:25 UTC (rev 16173) @@ -36,6 +36,7 @@ #include "dbus-bindings.h" #include "debug.h" #include "core.h" +#include "savedstatuses.h" #include "value.h" Modified: trunk/src/gaim-remote.py =================================================================== --- trunk/src/gaim-remote.py 2006-05-10 14:02:12 UTC (rev 16172) +++ trunk/src/gaim-remote.py 2006-05-10 17:31:25 UTC (rev 16173) @@ -97,17 +97,34 @@ params.get("group", ""), "") elif command == "setstatus": + current = gaim.GaimSavedstatusGetCurrent() + + if "status" in params: + status_id = params["status"] + status_type = gaim.GaimPrimitiveGetTypeFromId(status_id) + else: + status_type = gaim.GaimSavedStatusGetType(current) + status_id = gaim.GaimPrimitiveGetIdFromType(status_type) + + if "message" in params: + message = params["message"]; + else: + message = gaim.GaimSavedstatusGetMessage(current) + if "account" in params: accounts = [cgaim.GaimAccountsFindAny(accountname, protocol)] + + for account in accounts: + status = gaim.GaimAccountGetStatus(account, status_id) + type = gaim.GaimStatusGetType(status) + gaim.GaimSavedstatusSetSubstatus(current, account, type, message) + gaim.GaimSavedstatusActivateForAccount(current, account) else: accounts = gaim.GaimAccountsGetAllActive() + saved = gaim.GaimSavedstatusNew("", status_type) + gaim.GaimSavedstatusSetMessage(saved, message) + gaim.GaimSavedstatusActivate(saved) - for account in accounts: - status = cgaim.GaimAccountGetStatus(account, params["status"]) - for key, value in params.items(): - if key not in ["status", "account"]: - gaim.GaimStatusSetAttrString(status, key, value) - gaim.GaimAccountSetStatusVargs(account, params["status"], 1) return None elif command == "getinfo": Modified: trunk/src/savedstatuses.c =================================================================== --- trunk/src/savedstatuses.c 2006-05-10 14:02:12 UTC (rev 16172) +++ trunk/src/savedstatuses.c 2006-05-10 17:31:25 UTC (rev 16173) @@ -1,5 +1,5 @@ /** - * @file savedstatus.c Saved Status API + * @file savedstatuses.c Saved Status API * @ingroup core * * gaim @@ -27,6 +27,7 @@ #include "debug.h" #include "notify.h" #include "savedstatuses.h" +#include "dbus-maybe.h" #include "status.h" #include "util.h" #include "xmlnode.h" @@ -108,6 +109,7 @@ g_return_if_fail(substatus != NULL); g_free(substatus->message); + GAIM_DBUS_UNREGISTER_POINTER(substatus); g_free(substatus); } @@ -126,6 +128,7 @@ free_saved_status_sub(substatus); } + GAIM_DBUS_UNREGISTER_POINTER(status); g_free(status); } @@ -369,6 +372,7 @@ char *data; ret = g_new0(GaimSavedStatusSub, 1); + GAIM_DBUS_REGISTER_POINTER(ret, GaimSavedStatusSub); /* Read the account */ node = xmlnode_get_child(substatus, "account"); @@ -442,6 +446,7 @@ int i; ret = g_new0(GaimSavedStatus, 1); + GAIM_DBUS_REGISTER_POINTER(ret, GaimSavedStatus); attrib = xmlnode_get_attrib(status, "transient"); if ((attrib == NULL) || (strcmp(attrib, "true"))) @@ -547,6 +552,7 @@ g_return_val_if_fail(gaim_savedstatus_find(title) == NULL, NULL); status = g_new0(GaimSavedStatus, 1); + GAIM_DBUS_REGISTER_POINTER(status, GaimSavedStatus); status->title = g_strdup(title); status->type = type; set_creation_time(status, time(NULL)); @@ -613,6 +619,7 @@ if (substatus == NULL) { substatus = g_new0(GaimSavedStatusSub, 1); + GAIM_DBUS_REGISTER_POINTER(substatus, GaimSavedStatusSub); substatus->account = (GaimAccount *)account; saved_status->substatuses = g_list_prepend(saved_status->substatuses, substatus); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lsc...@us...> - 2006-05-10 14:02:24
|
Revision: 16172 Author: lschiere Date: 2006-05-10 07:02:12 -0700 (Wed, 10 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16172&view=rev Log Message: ----------- Err's comments in #gaim as I joined reminded me to check this, and lo, it was outdated. Modified Paths: -------------- web/htdocs/faq2.txt Modified: web/htdocs/faq2.txt =================================================================== --- web/htdocs/faq2.txt 2006-05-10 12:17:21 UTC (rev 16171) +++ web/htdocs/faq2.txt 2006-05-10 14:02:12 UTC (rev 16172) @@ -981,7 +981,7 @@ A: Save the perl script to <code>~/.gaim/plugins/</code> or <code>$prefix/lib/gaim/</code>, restart Gaim, and load the perl script by checking the check box -next to its name on the Plugins page in preferences. +next to its name in the Plugins dialog. Q: How do I compile a plugin for Gaim? @@ -1035,8 +1035,7 @@ perl script must be located in <code>$prefix/lib/gaim/</code> or in <code>~/.gaim/plugins/</code>, and must implement the new API, as documented by the <code>make docs</code> command from the root of the Gaim source code tree. This will generate -html documentation in the <code>doc/html</code> directory. Also note that plugins and perl -scripts are now controlled from preferences. +html documentation in the <code>doc/html</code> directory. Also note that plugins and perl scripts are now controlled from a separate Plugins dialog. Q: Where can I find documentation on writing plugins and Perl scripts? This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-10 12:17:28
|
Revision: 16171 Author: thekingant Date: 2006-05-10 05:17:21 -0700 (Wed, 10 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16171&view=rev Log Message: ----------- Fixes in 10 minutes or less, or your money back. Modified Paths: -------------- trunk/src/log.c Modified: trunk/src/log.c =================================================================== --- trunk/src/log.c 2006-05-10 02:35:09 UTC (rev 16170) +++ trunk/src/log.c 2006-05-10 12:17:21 UTC (rev 16171) @@ -24,6 +24,7 @@ */ #include "account.h" +#include "dbus-maybe.h" #include "debug.h" #include "internal.h" #include "log.h" @@ -80,6 +81,7 @@ /* IMPORTANT: Make sure to initialize all the members of GaimLog */ log = g_slice_new(GaimLog); + GAIM_DBUS_REGISTER_POINTER(log, GaimLog); log->type = type; log->name = g_strdup(gaim_normalize(account, name)); @@ -133,6 +135,7 @@ g_slice_free(struct tm, log->tm); } + GAIM_DBUS_UNREGISTER_POINTER(log); g_slice_free(GaimLog, log); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-10 02:35:26
|
Revision: 16170 Author: thekingant Date: 2006-05-09 19:35:09 -0700 (Tue, 09 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16170&view=rev Log Message: ----------- Hopefully provide a better message in the future when dbus doesn't know about an object that you're trying to pass to signal functions and stuff Modified Paths: -------------- trunk/src/dbus-server.c Modified: trunk/src/dbus-server.c =================================================================== --- trunk/src/dbus-server.c 2006-05-10 02:27:09 UTC (rev 16169) +++ trunk/src/dbus-server.c 2006-05-10 02:35:09 UTC (rev 16170) @@ -96,7 +96,12 @@ gint gaim_dbus_pointer_to_id(gpointer node) { gint id = GPOINTER_TO_INT(g_hash_table_lookup(map_node_id, node)); - g_return_val_if_fail(id || node == NULL, 0); + if ((id == 0) && (node != NULL)) + { + gaim_debug_warning("dbus", + "Need to register an object with the dbus subsystem.\n"); + g_return_if_reached(); + } return id; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-05-10 02:27:20
|
Revision: 16169 Author: thekingant Date: 2006-05-09 19:27:09 -0700 (Tue, 09 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16169&view=rev Log Message: ----------- This should eliminate an assertion failure when the cipher code initializes and you're using Dbus. The cipher code was not registering the cipher with Dbus. It's all good, brother. Modified Paths: -------------- trunk/src/cipher.c Modified: trunk/src/cipher.c =================================================================== --- trunk/src/cipher.c 2006-05-10 01:27:51 UTC (rev 16168) +++ trunk/src/cipher.c 2006-05-10 02:27:09 UTC (rev 16169) @@ -56,6 +56,7 @@ #include "internal.h" #include "cipher.h" +#include "dbus-maybe.h" #include "debug.h" #include "signals.h" #include "value.h" @@ -1380,6 +1381,7 @@ g_return_val_if_fail(!gaim_ciphers_find_cipher(name), NULL); cipher = g_new0(GaimCipher, 1); + GAIM_DBUS_REGISTER_POINTER(cipher, GaimCipher); cipher->name = g_strdup(name); cipher->ops = ops; @@ -1401,6 +1403,8 @@ ciphers = g_list_remove(ciphers, cipher); g_free(cipher->name); + + GAIM_DBUS_UNREGISTER_POINTER(cipher); g_free(cipher); return TRUE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-05-10 01:28:10
|
Revision: 16168 Author: rlaager Date: 2006-05-09 18:27:51 -0700 (Tue, 09 May 2006) ViewCVS: http://svn.sourceforge.net/gaim/?rev=16168&view=rev Log Message: ----------- Remove the expire_old_child static function, since it's not used: gtksound.c:344: warning: ?\226?\128?\152expire_old_child?\226?\128?\153 defined but not used Modified Paths: -------------- trunk/src/gtksound.c Modified: trunk/src/gtksound.c =================================================================== --- trunk/src/gtksound.c 2006-05-09 17:38:37 UTC (rev 16167) +++ trunk/src/gtksound.c 2006-05-10 01:27:51 UTC (rev 16168) @@ -340,23 +340,6 @@ #ifdef USE_GSTREAMER static gboolean -expire_old_child(gpointer data) -{ - int ret; - pid_t pid = GPOINTER_TO_INT(data); - - ret = waitpid(pid, NULL, WNOHANG | WUNTRACED); - - if(ret == 0) { - if(kill(pid, SIGKILL) < 0) - gaim_debug_error("gtksound", "Killing process %d failed (%s)\n", - pid, strerror(errno)); - } - - return FALSE; /* do not run again */ -} - -static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |