From: <the...@us...> - 2006-09-04 03:55:16
|
Revision: 17150 http://svn.sourceforge.net/gaim/?rev=17150&view=rev Author: thekingant Date: 2006-09-03 20:55:12 -0700 (Sun, 03 Sep 2006) Log Message: ----------- libxml2 is now required for XML parsing Modified Paths: -------------- trunk/ChangeLog trunk/configure.ac trunk/gtk/gtkdialogs.c trunk/libgaim/protocols/jabber/jabber.c trunk/libgaim/protocols/jabber/jabber.h trunk/libgaim/protocols/jabber/parser.c trunk/libgaim/xmlnode.c trunk/libgaim/xmlnode.h Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-09-04 03:23:41 UTC (rev 17149) +++ trunk/ChangeLog 2006-09-04 03:55:12 UTC (rev 17150) @@ -9,8 +9,8 @@ (Sadrul Habib Chowdhury, Google Summer of Code) * Reorganized the source tree to split apart the code for the UI changes and libgaim targets - * libxml2 can now be used in place of gmarkup for expanded XML parsing - features + * libxml2 is now required. We switched from gmarkup to libxml2 for + more correct XML parsing. Status System: * The code dealing with buddy and account status, away messages, Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-09-04 03:23:41 UTC (rev 17149) +++ trunk/configure.ac 2006-09-04 03:55:12 UTC (rev 17150) @@ -183,17 +183,16 @@ dnl ################# enable_libxml2=yes PKG_CHECK_MODULES(LIBXML, [libxml-2.0], , - [ - AC_MSG_RESULT(no) - enable_libxml2=no - ]) + [ + AC_MSG_ERROR([ +*** libxml2 is required to build Gaim; please make sure you have the +*** libxml2 development headers installed.]) + ]) AC_SUBST(LIBXML_CFLAGS) AC_SUBST(LIBXML_LIBS) -AC_ARG_ENABLE(libxml, [AC_HELP_STRING([--disable-libxml], [compile without libxml2 support])],enable_libxml2=no) -if test "x$enable_libxml2" = "xyes"; then - AC_DEFINE(HAVE_LIBXML, 1, [Use libxml2 for xml parsing]) -fi + + dnl ####################################################################### dnl # Check for Meanwhile headers (for Sametime) dnl ####################################################################### @@ -1933,7 +1932,6 @@ eval eval echo DBUS servies directory........ : $DBUS_SERVICES_DIR fi echo Build with Cyrus SASL support. : $enable_cyrus_sasl -echo Build with libxml2 support.... : $enable_libxml2 echo Has you....................... : yes echo echo Use kerberos 4 with zephyr.... : $kerberos Modified: trunk/gtk/gtkdialogs.c =================================================================== --- trunk/gtk/gtkdialogs.c 2006-09-04 03:23:41 UTC (rev 17149) +++ trunk/gtk/gtkdialogs.c 2006-09-04 03:55:12 UTC (rev 17150) @@ -558,12 +558,6 @@ g_string_append(str, " <b>Tk:</b> Disabled<br/>"); #endif -#ifdef HAVE_LIBXML - g_string_append(str, " <b>XML Parser:</b> libxml2<br/>"); -#else - g_string_append(str, " <b>XML Parser:</b> GMarkup<br/>"); -#endif - #ifndef _WIN32 #ifdef USE_SM g_string_append(str, " <b>X Session Management:</b> Enabled<br/>"); Modified: trunk/libgaim/protocols/jabber/jabber.c =================================================================== --- trunk/libgaim/protocols/jabber/jabber.c 2006-09-04 03:23:41 UTC (rev 17149) +++ trunk/libgaim/protocols/jabber/jabber.c 2006-09-04 03:55:12 UTC (rev 17150) @@ -945,10 +945,6 @@ gaim_input_remove(js->gc->inpa); close(js->fd); } -#ifndef HAVE_LIBXML - if(js->context) - g_markup_parse_context_free(js->context); -#endif if(js->iq_callbacks) g_hash_table_destroy(js->iq_callbacks); if(js->disco_callbacks) Modified: trunk/libgaim/protocols/jabber/jabber.h =================================================================== --- trunk/libgaim/protocols/jabber/jabber.h 2006-09-04 03:23:41 UTC (rev 17149) +++ trunk/libgaim/protocols/jabber/jabber.h 2006-09-04 03:55:12 UTC (rev 17150) @@ -22,9 +22,7 @@ #ifndef _GAIM_JABBER_H_ #define _GAIM_JABBER_H_ -#ifdef HAVE_LIBXML #include <libxml/parser.h> -#endif #include <glib.h> #include "circbuffer.h" #include "connection.h" @@ -71,11 +69,7 @@ GaimSrvQueryData *srv_query_data; GaimProxyConnectData *connect_data; -#ifdef HAVE_LIBXML xmlParserCtxt *context; -#else - GMarkupParseContext *context; -#endif xmlnode *current; enum { Modified: trunk/libgaim/protocols/jabber/parser.c =================================================================== --- trunk/libgaim/protocols/jabber/parser.c 2006-09-04 03:23:41 UTC (rev 17149) +++ trunk/libgaim/protocols/jabber/parser.c 2006-09-04 03:55:12 UTC (rev 17150) @@ -20,9 +20,7 @@ */ #include "internal.h" -#ifdef HAVE_LIBXML #include <libxml/parser.h> -#endif #include "connection.h" #include "debug.h" @@ -30,88 +28,7 @@ #include "parser.h" #include "xmlnode.h" -#ifndef HAVE_LIBXML static void -jabber_parser_element_start(GMarkupParseContext *context, - const char *element_name, const char **attrib_names, - const char **attrib_values, gpointer user_data, GError **error) -{ - JabberStream *js = user_data; - xmlnode *node; - int i; - - if(!element_name) { - return; - } else if(!strcmp(element_name, "stream:stream")) { - js->protocol_version = JABBER_PROTO_0_9; - for(i=0; attrib_names[i]; i++) { - if(!strcmp(attrib_names[i], "version") - && !strcmp(attrib_values[i], "1.0")) { - js->protocol_version = JABBER_PROTO_1_0; - } else if(!strcmp(attrib_names[i], "id")) { - if(js->stream_id) - g_free(js->stream_id); - js->stream_id = g_strdup(attrib_values[i]); - } - } - if(js->protocol_version == JABBER_PROTO_0_9) - js->auth_type = JABBER_AUTH_IQ_AUTH; - - if(js->state == JABBER_STREAM_INITIALIZING) - jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING); - } else { - - if(js->current) - node = xmlnode_new_child(js->current, element_name); - else - node = xmlnode_new(element_name); - - for(i=0; attrib_names[i]; i++) { - xmlnode_set_attrib(node, attrib_names[i], attrib_values[i]); - } - - js->current = node; - } -} - -static void -jabber_parser_element_end(GMarkupParseContext *context, - const char *element_name, gpointer user_data, GError **error) -{ - JabberStream *js = user_data; - - if(!js->current) - return; - - if(js->current->parent) { - if(!strcmp(js->current->name, element_name)) - js->current = js->current->parent; - } else { - xmlnode *packet = js->current; - js->current = NULL; - jabber_process_packet(js, packet); - xmlnode_free(packet); - } -} - -static void -jabber_parser_element_text(GMarkupParseContext *context, const char *text, - gsize text_len, gpointer user_data, GError **error) -{ - JabberStream *js = user_data; - - if(!js->current) - return; - - if(!text || !text_len) - return; - - xmlnode_insert_data(js->current, text, text_len); -} - -#else /* HAVE_LIBXML */ - -static void jabber_parser_element_start_libxml(void *user_data, const xmlChar *element_name, const xmlChar *prefix, const xmlChar *namespace, int nb_namespaces, const xmlChar **namespaces, @@ -130,7 +47,7 @@ char *attrib = g_malloc(attrib_len + 1); memcpy(attrib, attributes[i+3], attrib_len); attrib[attrib_len] = '\0'; - + if(!strcmp(attributes[i], "version") && !strcmp(attrib, "1.0")) { js->protocol_version = JABBER_PROTO_1_0; @@ -168,7 +85,7 @@ } static void -jabber_parser_element_end_libxml(void *user_data, const xmlChar *element_name, +jabber_parser_element_end_libxml(void *user_data, const xmlChar *element_name, const xmlChar *prefix, const xmlChar *namespace) { JabberStream *js = user_data; @@ -200,10 +117,7 @@ xmlnode_insert_data(js->current, text, text_len); } -#endif /* HAVE_LIBXML */ - -#ifdef HAVE_LIBXML static xmlSAXHandler jabber_parser_libxml = { .internalSubset = NULL, .isStandalone = NULL, @@ -238,20 +152,10 @@ .endElementNs = jabber_parser_element_end_libxml, .serror = NULL }; -#else -static GMarkupParser jabber_parser = { - jabber_parser_element_start, - jabber_parser_element_end, - jabber_parser_element_text, - NULL, - NULL -}; -#endif void jabber_parser_setup(JabberStream *js) { -#ifdef HAVE_LIBXML /* This seems backwards, but it makes sense. The libxml code creates the parser * context when you try to use it (this way, it can figure out the encoding at * creation time. So, setting up the parser is just a matter of destroying any @@ -261,24 +165,11 @@ xmlFreeParserCtxt(js->context); js->context = NULL; } -#else - if(!js->context) - js->context = g_markup_parse_context_new(&jabber_parser, 0, js, NULL); -#endif } void jabber_parser_process(JabberStream *js, const char *buf, int len) { - -#ifndef HAVE_LIBXML - /* May need to check for other encodings and do the conversion here */ - if(!g_markup_parse_context_parse(js->context, buf, len, NULL)) { - g_markup_parse_context_free(js->context); - js->context = NULL; - gaim_connection_error(js->gc, _("XML Parse error")); - } -#else if (js->context == NULL) { /* libxml inconsistently starts parsing on creating the parser, so so a ParseChunk * right afterwards to force it. */ @@ -286,6 +177,5 @@ } else if (xmlParseChunk(js->context, buf, len, 0) < 0) { gaim_connection_error(js->gc, _("XML Parse error")); } -#endif } Modified: trunk/libgaim/xmlnode.c =================================================================== --- trunk/libgaim/xmlnode.c 2006-09-04 03:23:41 UTC (rev 17149) +++ trunk/libgaim/xmlnode.c 2006-09-04 03:55:12 UTC (rev 17150) @@ -29,9 +29,7 @@ #include "internal.h" -#ifdef HAVE_LIBXML #include <libxml/parser.h> -#endif #include <string.h> #include <glib.h> @@ -181,25 +179,17 @@ void xmlnode_set_namespace(xmlnode *node, const char *xmlns) { -#ifdef HAVE_LIBXML g_return_if_fail(node != NULL); g_free(node->namespace); node->namespace = g_strdup(xmlns); -#else - xmlnode_set_attrib(node, "xmlns", xmlns); -#endif } const char *xmlnode_get_namespace(xmlnode *node) { -#ifdef HAVE_LIBXML g_return_val_if_fail(node != NULL, NULL); return node->namespace; -#else - return xmlnode_get_attrib(node, "xmlns"); -#endif } void @@ -218,9 +208,7 @@ g_free(node->name); g_free(node->data); -#ifdef HAVE_LIBXML g_free(node->namespace); -#endif GAIM_DBUS_UNREGISTER_POINTER(node); g_free(node); @@ -305,13 +293,11 @@ node_name = g_markup_escape_text(node->name, -1); g_string_append_printf(text, "<%s", node_name); -#ifdef HAVE_LIBXML if (node->namespace) { char *namespace = g_markup_escape_text(node->namespace, -1); g_string_append_printf(text, " xmlns='%s'", namespace); g_free(namespace); } -#endif for(c = node->child; c; c = c->next) { if(c->type == XMLNODE_TYPE_ATTRIB) { @@ -386,7 +372,6 @@ xmlnode *current; }; -#ifdef HAVE_LIBXML static void xmlnode_parser_element_start_libxml(void *user_data, const xmlChar *element_name, const xmlChar *prefix, const xmlChar *namespace, @@ -408,18 +393,14 @@ xmlnode_set_namespace(node, namespace); for(i=0; i < nb_attributes * 5; i+=5) { -#ifdef HAVE_LIBXML char *txt; -#endif int attrib_len = attributes[i+4] - attributes[i+3]; char *attrib = g_malloc(attrib_len + 1); memcpy(attrib, attributes[i+3], attrib_len); attrib[attrib_len] = '\0'; -#ifdef HAVE_LIBXML txt = attrib; attrib = gaim_unescape_html(txt); g_free(txt); -#endif xmlnode_set_attrib(node, attributes[i], attrib); g_free(attrib); } @@ -457,64 +438,6 @@ xmlnode_insert_data(xpd->current, text, text_len); } -#else - -static void -xmlnode_parser_element_start(GMarkupParseContext *context, - const char *element_name, const char **attrib_names, - const char **attrib_values, gpointer user_data, GError **error) -{ - struct _xmlnode_parser_data *xpd = user_data; - xmlnode *node; - int i; - - if(!element_name) { - return; - } else { - if(xpd->current) - node = xmlnode_new_child(xpd->current, element_name); - else - node = xmlnode_new(element_name); - - for(i=0; attrib_names[i]; i++) - xmlnode_set_attrib(node, attrib_names[i], attrib_values[i]); - - xpd->current = node; - } -} - -static void -xmlnode_parser_element_end(GMarkupParseContext *context, - const char *element_name, gpointer user_data, GError **error) -{ - struct _xmlnode_parser_data *xpd = user_data; - - if(!element_name || !xpd->current) - return; - - if(xpd->current->parent) { - if(!strcmp(xpd->current->name, element_name)) - xpd->current = xpd->current->parent; - } -} - -static void -xmlnode_parser_element_text(GMarkupParseContext *context, const char *text, - gsize text_len, gpointer user_data, GError **error) -{ - struct _xmlnode_parser_data *xpd = user_data; - - if(!xpd->current) - return; - - if(!text || !text_len) - return; - - xmlnode_insert_data(xpd->current, text, text_len); -} -#endif - -#ifdef HAVE_LIBXML static xmlSAXHandler xmlnode_parser_libxml = { .internalSubset = NULL, .isStandalone = NULL, @@ -549,24 +472,12 @@ .endElementNs = xmlnode_parser_element_end_libxml, .serror = NULL }; -#else -static GMarkupParser xmlnode_parser = { - xmlnode_parser_element_start, - xmlnode_parser_element_end, - xmlnode_parser_element_text, - NULL, - NULL -}; -#endif xmlnode * xmlnode_from_str(const char *str, gssize size) { struct _xmlnode_parser_data *xpd; xmlnode *ret; -#ifndef HAVE_LIBXML - GMarkupParseContext *context; -#endif gsize real_size; g_return_val_if_fail(str != NULL, NULL); @@ -574,7 +485,6 @@ real_size = size < 0 ? strlen(str) : size; xpd = g_new0(struct _xmlnode_parser_data, 1); -#ifdef HAVE_LIBXML if (xmlSAXUserParseMemory(&xmlnode_parser_libxml, xpd, str, real_size) < 0) { while(xpd->current && xpd->current->parent) xpd->current = xpd->current->parent; @@ -582,18 +492,6 @@ xmlnode_free(xpd->current); xpd->current = NULL; } -#else - context = g_markup_parse_context_new(&xmlnode_parser, 0, xpd, NULL); - - if(!g_markup_parse_context_parse(context, str, real_size, NULL)) { - while(xpd->current && xpd->current->parent) - xpd->current = xpd->current->parent; - if(xpd->current) - xmlnode_free(xpd->current); - xpd->current = NULL; - } - g_markup_parse_context_free(context); -#endif ret = xpd->current; g_free(xpd); return ret; Modified: trunk/libgaim/xmlnode.h =================================================================== --- trunk/libgaim/xmlnode.h 2006-09-04 03:23:41 UTC (rev 17149) +++ trunk/libgaim/xmlnode.h 2006-09-04 03:55:12 UTC (rev 17150) @@ -42,9 +42,7 @@ struct _xmlnode { char *name; /**< The name of the node. */ -#ifdef HAVE_LIBXML char *namespace; /**< The namespace of the node */ -#endif XMLNodeType type; /**< The type of the node. */ char *data; /**< The data for the node. */ size_t data_sz; /**< The size of the data. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-04 05:48:50
|
Revision: 17155 http://svn.sourceforge.net/gaim/?rev=17155&view=rev Author: thekingant Date: 2006-09-03 22:48:45 -0700 (Sun, 03 Sep 2006) Log Message: ----------- Minor cleanup and whitespace. And make some error messages a bit more concise. Modified Paths: -------------- trunk/autogen.sh trunk/configure.ac Modified: trunk/autogen.sh =================================================================== --- trunk/autogen.sh 2006-09-04 04:38:03 UTC (rev 17154) +++ trunk/autogen.sh 2006-09-04 05:48:45 UTC (rev 17155) @@ -2,35 +2,35 @@ (glib-gettextize --version) < /dev/null > /dev/null 2>&1 || { echo; - echo "You must have glib-gettextize installed to compile Gaim"; + echo "You must have glib-gettextize installed to compile Gaim."; echo; exit; } (intltoolize --version) < /dev/null > /dev/null 2>&1 || { echo; - echo "You must have intltool installed to compile Gaim"; + echo "You must have intltool installed to compile Gaim."; echo; exit; } (libtoolize --version) < /dev/null > /dev/null 2>&1 || { echo; - echo "You must have libtool installed to compile Gaim"; + echo "You must have libtool installed to compile Gaim."; echo; exit; } (automake --version) < /dev/null > /dev/null 2>&1 || { echo; - echo "You must have automake installed to compile Gaim"; + echo "You must have automake installed to compile Gaim."; echo; exit; } (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo; - echo "You must have autoconf installed to compile Gaim"; + echo "You must have autoconf installed to compile Gaim."; echo; exit; } Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-09-04 04:38:03 UTC (rev 17154) +++ trunk/configure.ac 2006-09-04 05:48:45 UTC (rev 17155) @@ -83,13 +83,14 @@ AC_CHECK_LIB(resolv, __res_query) AC_CHECK_LIB(nsl, gethostent) AC_CHECK_FUNC(socket, , - [AC_CHECK_LIB(socket, socket, , [AC_ERROR([socket not found])])]) + [AC_CHECK_LIB(socket, socket, , [AC_ERROR([socket not found])])]) dnl If all goes well, by this point the previous two checks will have dnl pulled in -lsocket and -lnsl if we need them. -AC_CHECK_FUNC(getaddrinfo, [AC_DEFINE([HAVE_GETADDRINFO], [1], - [Define to 1 if you have the getaddrinfo function.])], - [AC_CHECK_LIB(socket, getaddrinfo, - [AC_DEFINE([HAVE_GETADDRINFO]) LIBS="-lsocket -lsnl $LIBS"], , , -lnsl)]) +AC_CHECK_FUNC(getaddrinfo, + [AC_DEFINE([HAVE_GETADDRINFO], [1], + [Define to 1 if you have the getaddrinfo function.])], + [AC_CHECK_LIB(socket, getaddrinfo, + [AC_DEFINE([HAVE_GETADDRINFO]) LIBS="-lsocket -lsnl $LIBS"], , , -lnsl)]) dnl Check for socklen_t (in Unix98) AC_MSG_CHECKING(for socklen_t) @@ -146,16 +147,13 @@ (buf[4] >= '0' && buf[4] <= '9') ); } -], -[ +], [ AC_MSG_RESULT(yes) AC_DEFINE([HAVE_STRFTIME_Z_FORMAT], [1], - [Define to 1 if you have a strftime() that supports the %z format string.]) -], -[ + [Define to 1 if you have a strftime() that supports the %z format string.]) +], [ AC_MSG_RESULT(no) -], -[ +], [ # Fallback for Cross Compiling... # This will enable the compatibility code. AC_MSG_RESULT(no) @@ -163,41 +161,38 @@ ) dnl ####################################################################### -dnl # GStreamer +dnl # Check for LibXML2 (required) dnl ####################################################################### -enable_gst=yes -PKG_CHECK_MODULES(GSTREAMER, [gstreamer-0.10], , - [ - AC_MSG_RESULT(no) - enable_gst=no - ]) -AC_SUBST(GSTREAMER_CFLAGS) -AC_SUBST(GSTREAMER_LIBS) -AC_ARG_ENABLE(gstreamer, [AC_HELP_STRING([--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 - -dnl ################# -dnl # LibXML2 -dnl ################# -enable_libxml2=yes PKG_CHECK_MODULES(LIBXML, [libxml-2.0], , [ + AC_MSG_RESULT(no) AC_MSG_ERROR([ -*** libxml2 is required to build Gaim; please make sure you have the -*** libxml2 development headers installed.]) - ]) + +You must have the libxml2 development headers installed to build Gaim. +])]) AC_SUBST(LIBXML_CFLAGS) AC_SUBST(LIBXML_LIBS) +dnl ####################################################################### +dnl # Check for GStreamer +dnl ####################################################################### +AC_ARG_ENABLE(gstreamer, + [AC_HELP_STRING([--disable-gstreamer], [compile without GStreamer audio support])], + enable_gst="no", enable_gst="yes") +PKG_CHECK_MODULES(GSTREAMER, [gstreamer-0.10], , [ + AC_MSG_RESULT(no) + enable_gst="no" + ]) +if test "x$enable_gst" != "xno"; then + AC_SUBST(GSTREAMER_CFLAGS) + AC_SUBST(GSTREAMER_LIBS) + AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for playing sounds]) +fi - dnl ####################################################################### dnl # Check for Meanwhile headers (for Sametime) dnl ####################################################################### -PKG_CHECK_MODULES(MEANWHILE, - [meanwhile >= 1.0.0 meanwhile < 2.0.0], [ +PKG_CHECK_MODULES(MEANWHILE, [meanwhile >= 1.0.0 meanwhile < 2.0.0], [ have_meanwhile="yes" ], [ AC_MSG_RESULT(no) @@ -206,8 +201,6 @@ AC_SUBST(MEANWHILE_CFLAGS) AC_SUBST(MEANWHILE_LIBS) - - dnl ####################################################################### dnl # Check for Howl headers (for Bonjour) dnl ####################################################################### @@ -256,8 +249,6 @@ AC_SUBST(HOWL_CFLAGS) AC_SUBST(HOWL_LIBS) - - dnl ####################################################################### dnl # Check for SILC client includes and libraries dnl ####################################################################### @@ -324,7 +315,6 @@ CPPFLAGS="$CPPFLAGS_save" fi - dnl ####################################################################### dnl # Check for Gadu-Gadu client includes and libraries dnl ####################################################################### @@ -371,7 +361,7 @@ ], [ AC_MSG_RESULT(yes) AC_DEFINE([HAVE_LIBGADU], [1], - [Define to 1 if you have libgadu.]) + [Define to 1 if you have libgadu.]) ], [ AC_MSG_RESULT(no) echo @@ -471,7 +461,7 @@ DYNAMIC_PRPLS="bonjour gg irc jabber msn novell oscar qq sametime silc simple yahoo zephyr" fi if test "x$have_meanwhile" != "xyes"; then - DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/sametime//'` + DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/sametime//'` fi if test "x$howlincludes" != "xyes" -o "x$howllibs" != "xyes"; then DYNAMIC_PRPLS=`echo $DYNAMIC_PRPLS | $sedpath 's/bonjour//'` @@ -517,15 +507,12 @@ AM_CONDITIONAL(DYNAMIC_YAHOO, test "x$dynamic_yahoo" = "xyes") AM_CONDITIONAL(DYNAMIC_ZEPHYR, test "x$dynamic_zephyr" = "xyes") -AC_ARG_ENABLE(mono, [AC_HELP_STRING([--enable-mono], [compile with Mono runtime support])], , enable_mono=no) -AC_ARG_ENABLE(cap, [AC_HELP_STRING([--enable-cap], [compile with Contact Availability Prediction Plugin])], , enable_cap=no) AC_ARG_ENABLE(plugins, [AC_HELP_STRING([--disable-plugins], [compile without plugin support])], , enable_plugins=yes) AC_ARG_ENABLE(perl, [AC_HELP_STRING([--disable-perl], [compile without perl scripting])], , enable_perl=yes) AC_ARG_ENABLE(tcl, [AC_HELP_STRING([--disable-tcl], [compile without Tcl scripting])], , enable_tcl=yes) AC_ARG_WITH(tclconfig, [AC_HELP_STRING([--with-tclconfig=DIR], [directory containing tclConfig.sh])]) AC_ARG_ENABLE(tk, [AC_HELP_STRING([--disable-tk], [compile without Tcl support for Tk])], , enable_tk=yes) AC_ARG_WITH(tkconfig, [AC_HELP_STRING([--with-tkconfig=DIR], [directory containing tkConfig.sh])]) -AC_ARG_ENABLE(gtkspell, [AC_HELP_STRING([--disable-gtkspell], [compile without GtkSpell automatic spell checking])], , enable_gtkspell=yes) AC_ARG_ENABLE(debug, [AC_HELP_STRING([--enable-debug], [compile with debugging support])], , enable_debug=no) AC_ARG_ENABLE(gtkgaim, [AC_HELP_STRING([--disable-gtkgaim], [compile without GtkGaim client])], enable_gtk=$enableval, enable_gtk=yes) @@ -637,29 +624,28 @@ fi AC_SUBST(CFLAGS) -PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.0.0 gobject-2.0 gmodule-2.0 gthread-2.0],, - [ - AC_MSG_ERROR([ -*** GLib 2.0 is required to build Gaim; please make sure you have the GLib -*** development headers installed. The latest version of GLib is -*** always available at http://www.gtk.org/.]) - ]) +PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.0.0 gobject-2.0 gmodule-2.0 gthread-2.0], , + [ + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + +You must have the GLib 2.0 development headers installed to build Gaim. +])]) AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) AC_PATH_PROG(gaimpath, gaim) if test "x$enable_gtk" = "xyes" ; then - PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.0.0],, - [ - AC_MSG_ERROR([ -*** GTK+ 2.0 is required to build Gaim. please make sure you have the GTK+ -*** development headers installed. The latest version of GTK+ is -*** always available at http://www.gtk.org/. -*** -*** If you wish to build just gntgaim or libgaim, -*** configure with --disable-gtkgaim]) - ]) + PKG_CHECK_MODULES(GTK, [gtk+-2.0 >= 2.0.0],, + [ + AC_MSG_RESULT(no) + AC_MSG_ERROR([ + +You must have the GTK+ 2.0 development headers installed to compile Gaim's +GTK+ interface. If you only want to build the console interface then +specify --disable-gtkgaim when calling configure. +])]) AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) fi @@ -679,7 +665,7 @@ x_incpath_add="-I$x_includes" fi -PKG_CHECK_MODULES(X11, x11, +PKG_CHECK_MODULES(X11, x11, [AC_DEFINE(HAVE_X11, 1, [Define to 1 if you have X11])], [AC_MSG_RESULT(no)]) AC_SUBST(X11_LIBS) AC_SUBST(X11_CFLAGS) @@ -691,7 +677,7 @@ AC_ARG_ENABLE(dbus, [AC_HELP_STRING([--enable-dbus], [enable DBUS support])], , enable_dbus=yes) if test "x$enable_dbus" = "xyes" ; then - AC_CHECK_PROG(enable_dbus, dbus-binding-tool, yes, no) + AC_CHECK_PROG(enable_dbus, dbus-binding-tool, yes, no) fi if test "x$enable_dbus" = "xyes" ; then @@ -707,19 +693,21 @@ ]) fi -dnl Why do we need python? +dnl ####################################################################### +dnl # Check for Python +dnl ####################################################################### -dnl Python scripts are used to auto-generate about 3000 lines of C -dnl and XML code that wraps (part of) the existing Gaim API so that -dnl it is now accessible through DBUS. +dnl Python scripts are used to auto-generate about 3000 lines of C +dnl and XML code that wraps (part of) the existing Gaim API so that +dnl it is now accessible through DBUS. -dnl Python is only required if --enable-dbus is used, and only for -dnl the build process to generate the code, not for running gaim. -dnl This autogenerated code is system-independent, so in principle we -dnl can generate all of it before shipping. But I thought adding -dnl auto-generated stuff to the repository is inelegant. -dnl Alternatively, these python scripts could be rewritten -dnl in C (brrrr ...). +dnl Python is only required if --enable-dbus is used, and only for +dnl the build process to generate the code, not for running gaim. +dnl This autogenerated code is system-independent, so in principle we +dnl can generate all of it before shipping. But I thought adding +dnl auto-generated stuff to the repository is inelegant. +dnl Alternatively, these python scripts could be rewritten +dnl in C (brrrr ...). AC_ARG_WITH([python], AC_HELP_STRING([--with-python=PATH], @@ -794,14 +782,14 @@ fi fi AC_MSG_RESULT([$DBUS_SERVICES_DIR]) - AC_DEFINE(HAVE_DBUS, 1, [Define if we are re using DBUS.]) + AC_DEFINE(HAVE_DBUS, 1, [Define if we are re using DBUS.]) fi AC_SUBST(DBUS_SERVICES_DIR) if test "x$enable_dbus" = "xyes" ; then - echo "Building with DBUS support" + echo "Building with DBUS support" else - echo "Building without DBUS support" + echo "Building without DBUS support" fi AM_CONDITIONAL(ENABLE_DBUS, test "x$enable_dbus" = "xyes") @@ -873,43 +861,33 @@ if test "x$enable_gtk" = "xyes"; then -dnl ####################################################################### -dnl # Check for startup notification -dnl ####################################################################### -AC_ARG_ENABLE(startup-notification, [AC_HELP_STRING([--disable-startup-notification], [compile without startup notification support])], , enable_startup_notification=yes) + dnl ####################################################################### + dnl # Check for startup notification + dnl ####################################################################### + AC_ARG_ENABLE(startup-notification, [AC_HELP_STRING([--disable-startup-notification], [compile without startup notification support])], , enable_startup_notification=yes) -if test "x$enable_startup_notification" = "xyes"; then - PKG_CHECK_MODULES(STARTUP_NOTIFICATION, libstartup-notification-1.0 >= 0.5, - [ - AC_DEFINE(HAVE_STARTUP_NOTIFICATION, 1, [Define if we're using libstartup-notification.]) - enable_startup_notification=yes - ], - [ - AC_MSG_RESULT(no) - enable_startup_notification=no - ]) + if test "x$enable_startup_notification" = "xyes"; then + PKG_CHECK_MODULES(STARTUP_NOTIFICATION, libstartup-notification-1.0 >= 0.5, + [ + AC_DEFINE(HAVE_STARTUP_NOTIFICATION, 1, [Define if we're using libstartup-notification.]) + enable_startup_notification=yes + ], [ + AC_MSG_RESULT(no) + enable_startup_notification=no + ]) - AC_SUBST(STARTUP_NOTIFICATION_CFLAGS) - AC_SUBST(STARTUP_NOTIFICATION_LIBS) -fi + AC_SUBST(STARTUP_NOTIFICATION_CFLAGS) + AC_SUBST(STARTUP_NOTIFICATION_LIBS) + fi -dnl ####################################################################### -dnl # Check for stuff needed by the evolution integration plugin. -dnl ####################################################################### -build_gevo=no -AC_ARG_ENABLE(gevolution, [AC_HELP_STRING([--disable-gevolution], [compile without the Gaim-Evolution plugin])], , enable_gevolution=yes) + dnl ####################################################################### + dnl # Check for stuff needed by the evolution integration plugin. + dnl ####################################################################### + build_gevo=no + AC_ARG_ENABLE(gevolution, [AC_HELP_STRING([--disable-gevolution], [compile without the Gaim-Evolution plugin])], , enable_gevolution=yes) -if test "x$enable_gevolution" = "xyes"; then - evo_deps="libebook-1.2 libedata-book-1.2" - PKG_CHECK_MODULES(EVOLUTION_ADDRESSBOOK, $evo_deps, [ - AC_DEFINE(HAVE_EVOLUTION_ADDRESSBOOK, 1, [Define if we're using evolution addressbook.]) - build_gevo=yes - ], [ - AC_MSG_RESULT(yes) - build_gevo=no - ]) - if test "x$build_gevo" = "xno"; then - evo_deps="libebook-1.0 libedata-book-1.0" + if test "x$enable_gevolution" = "xyes"; then + evo_deps="libebook-1.2 libedata-book-1.2" PKG_CHECK_MODULES(EVOLUTION_ADDRESSBOOK, $evo_deps, [ AC_DEFINE(HAVE_EVOLUTION_ADDRESSBOOK, 1, [Define if we're using evolution addressbook.]) build_gevo=yes @@ -917,88 +895,99 @@ AC_MSG_RESULT(yes) build_gevo=no ]) + if test "x$build_gevo" = "xno"; then + evo_deps="libebook-1.0 libedata-book-1.0" + PKG_CHECK_MODULES(EVOLUTION_ADDRESSBOOK, $evo_deps, [ + AC_DEFINE(HAVE_EVOLUTION_ADDRESSBOOK, 1, [Define if we're using evolution addressbook.]) + build_gevo=yes + ], [ + AC_MSG_RESULT(yes) + build_gevo=no + ]) + fi + + AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS) + AC_SUBST(EVOLUTION_ADDRESSBOOK_LIBS) fi - AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS) - AC_SUBST(EVOLUTION_ADDRESSBOOK_LIBS) -fi + dnl ####################################################################### + dnl # Check for XScreenSaver + dnl ####################################################################### + if test "x$enable_xss" = "xyes" ; then + old_LIBS="$LIBS" + LIBS="$LIBS $GTK_LIBS $x_libpath_add" + XSS_LIBS="no" + XSS_HEADERS="no" + AC_CHECK_LIB(Xext, XScreenSaverRegister,[XSS_LIBS="$X_LIBS $X_PRE_LIBS -lX11 -lXext $X_EXTRA_LIBS"],[],[-lX11 -lXext -lm]) + AC_CHECK_LIB(Xss, XScreenSaverRegister,[XSS_LIBS="$X_LIBS $X_PRE_LIBS -lX11 -lXext $X_LIBS $X_EXTRA_LIBS -lXss"],[],[-lX11 -lXext -lm]) + if test \! "$XSS_LIBS" = "no"; then + oldCPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $x_incpath_add" + AC_TRY_COMPILE([ + #include <X11/Xlib.h> + #include <X11/extensions/scrnsaver.h> + ],[],[ + AC_DEFINE(USE_SCREENSAVER, 1, [Define if we're using XScreenSaver.])],[enable_xss=no] + ) + CPPFLAGS="$oldCPPFLAGS" + else + XSS_LIBS="" + enable_xss=no + fi + LIBS="$old_LIBS" + else + XSS_LIBS="" + enable_xss=no + fi + AC_SUBST(XSS_LIBS) -dnl ####################################################################### -dnl # Check for XScreenSaver -dnl ####################################################################### -if test "x$enable_xss" = "xyes" ; then - old_LIBS="$LIBS" - LIBS="$LIBS $GTK_LIBS $x_libpath_add" - XSS_LIBS="no" - XSS_HEADERS="no" - AC_CHECK_LIB(Xext, XScreenSaverRegister,[XSS_LIBS="$X_LIBS $X_PRE_LIBS -lX11 -lXext $X_EXTRA_LIBS"],[],[-lX11 -lXext -lm]) - AC_CHECK_LIB(Xss, XScreenSaverRegister,[XSS_LIBS="$X_LIBS $X_PRE_LIBS -lX11 -lXext $X_LIBS $X_EXTRA_LIBS -lXss"],[],[-lX11 -lXext -lm]) - if test \! "$XSS_LIBS" = "no"; then - oldCPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $x_incpath_add" - AC_TRY_COMPILE([ -#include <X11/Xlib.h> -#include <X11/extensions/scrnsaver.h> - ],[],[ - AC_DEFINE(USE_SCREENSAVER, 1, [Define if we're using XScreenSaver.])],[enable_xss=no] - ) - CPPFLAGS="$oldCPPFLAGS" + dnl ####################################################################### + dnl # Check for X session management libs + dnl ####################################################################### + if test "x$enable_sm" = "xyes"; then + enable_sm=no + AC_CHECK_LIB(SM, SmcSaveYourselfDone, found_sm_lib=true, , [$x_libpath_add -lICE]) + if test "$found_sm_lib" = "true"; then + oldCPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $x_incpath_add" + AC_CHECK_HEADERS(X11/SM/SMlib.h, SM_LIBS="$x_libpath_add -lSM -lICE" enable_sm=yes) + CPPFLAGS="$oldCPPFLAGS" + fi else - XSS_LIBS="" - enable_xss=no + SM_LIBS="" + enable_sm=no fi - LIBS="$old_LIBS" -else - XSS_LIBS="" - enable_xss=no -fi -AC_SUBST(XSS_LIBS) + AC_SUBST(SM_LIBS) + if test "$enable_sm" = "yes"; then + AC_DEFINE(USE_SM, 1, [Define if we're using X Session Management.]) + fi - -dnl ####################################################################### -dnl # Check for X session management libs -dnl ####################################################################### -if test "x$enable_sm" = "xyes"; then - enable_sm=no - AC_CHECK_LIB(SM, SmcSaveYourselfDone, found_sm_lib=true, , [$x_libpath_add -lICE]) - if test "$found_sm_lib" = "true"; then - oldCPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $x_incpath_add" - AC_CHECK_HEADERS(X11/SM/SMlib.h, SM_LIBS="$x_libpath_add -lSM -lICE" enable_sm=yes) - CPPFLAGS="$oldCPPFLAGS" + AC_DEFUN([GC_TM_GMTOFF], + [AC_REQUIRE([AC_STRUCT_TM])dnl + AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff, + [AC_TRY_COMPILE([#include <sys/types.h> + #include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_gmtoff;], + ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)]) + if test "$ac_cv_struct_tm_gmtoff" = yes; then + AC_DEFINE(HAVE_TM_GMTOFF, 1, [tm_gmtoff is available.]) fi -else - SM_LIBS="" - enable_sm=no -fi -AC_SUBST(SM_LIBS) -if test "$enable_sm" = "yes"; then - AC_DEFINE(USE_SM, 1, [Define if we're using X Session Management.]) -fi + ]) -AC_DEFUN([GC_TM_GMTOFF], -[AC_REQUIRE([AC_STRUCT_TM])dnl -AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff, -[AC_TRY_COMPILE([#include <sys/types.h> -#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_gmtoff;], - ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)]) -if test "$ac_cv_struct_tm_gmtoff" = yes; then - AC_DEFINE(HAVE_TM_GMTOFF, 1, [tm_gmtoff is available.]) -fi -]) - -dnl Thanks, Evan. -if test "$enable_gtkspell" = yes ; then - PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, [], [ - AC_MSG_RESULT(no) - enable_gtkspell=no - ]) - if test "$enable_gtkspell" = "yes" ; then - AC_SUBST(GTKSPELL_CFLAGS) - AC_SUBST(GTKSPELL_LIBS) - AC_DEFINE(USE_GTKSPELL,,[do we have gtkspell?]) + dnl ####################################################################### + dnl # Check for GtkSpell + dnl ####################################################################### + AC_ARG_ENABLE(gtkspell, [AC_HELP_STRING([--disable-gtkspell], [compile without GtkSpell automatic spell checking])], , enable_gtkspell=yes) + if test "$enable_gtkspell" = yes ; then + PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, [], [ + AC_MSG_RESULT(no) + enable_gtkspell=no + ]) + if test "$enable_gtkspell" = "yes" ; then + AC_SUBST(GTKSPELL_CFLAGS) + AC_SUBST(GTKSPELL_LIBS) + AC_DEFINE(USE_GTKSPELL,,[do we have gtkspell?]) + fi fi -fi else # GTK enable_gevolution=no enable_sm=no @@ -1014,8 +1003,9 @@ GC_TM_GMTOFF dnl ####################################################################### -dnl # Contact Availability Prediction (CAP) +dnl # Check for libdbi (Contact Availability Prediction plugin) dnl ####################################################################### +AC_ARG_ENABLE(cap, [AC_HELP_STRING([--enable-cap], [compile with Contact Availability Prediction Plugin])], , enable_cap=no) if test "x$enable_cap" = "xyes"; then AC_CHECK_HEADERS(dbi/dbi.h, [], enable_cap=no) fi @@ -1028,7 +1018,7 @@ dnl ####################################################################### dnl # Check for Mono support dnl ####################################################################### - +AC_ARG_ENABLE(mono, [AC_HELP_STRING([--enable-mono], [compile with Mono runtime support])], , enable_mono=no) if test x"$enable_mono" = x"yes" ; then AC_MSG_CHECKING(for Mono compile flags) MONO_CFLAGS=`pkg-config --cflags mono 2> /dev/null` @@ -1142,8 +1132,8 @@ fi AC_ARG_WITH(perl-lib, - [AC_HELP_STRING([--with-perl-lib=[site|vendor|DIR]], [specify where to install the - Perl libraries for gaim. Default is site.])], + [AC_HELP_STRING([--with-perl-lib=[site|vendor|DIR]], + [specify where to install the Perl libraries for gaim. Default is site.])], [ if test "x$withval" = xsite; then PERL_MM_PARAMS="" @@ -1579,21 +1569,23 @@ msg_ssl=$msg_gnutls fi -dnl Check for Tcl +dnl ####################################################################### +dnl # Check for Tcl +dnl ####################################################################### if test "$enable_plugins" = no; then enable_tcl=no fi if test "$enable_tcl" = yes; then AC_MSG_CHECKING([for tclConfig.sh]) - TCLCONFIG=no + TCLCONFIG=no TCLCONFIGDIRS="/usr/lib \ - /usr/lib64 \ - /usr/lib/tcl8.4 \ - /usr/lib/tcl8.3 \ - /usr/lib/tcl8.2 \ - /System/Library/Tcl/8.3 \ - /usr/local/lib" + /usr/lib64 \ + /usr/lib/tcl8.4 \ + /usr/lib/tcl8.3 \ + /usr/lib/tcl8.2 \ + /System/Library/Tcl/8.3 \ + /usr/local/lib" for dir in $with_tclconfig $TCLCONFIGDIRS; do if test -f $dir/tclConfig.sh; then TCLCONFIG=$dir/tclConfig.sh @@ -1618,9 +1610,9 @@ oldLIBS=$LIBS LIBS="$LIBS $TCL_LIB_SPEC" AC_TRY_LINK([#include <tcl.h>], - [Tcl_Interp *interp=NULL; Tcl_Init(interp)], - [AC_MSG_RESULT([yes]);enable_tcl=yes], - [AC_MSG_RESULT([no]);enable_tcl=no]) + [Tcl_Interp *interp=NULL; Tcl_Init(interp)], + [AC_MSG_RESULT([yes]);enable_tcl=yes], + [AC_MSG_RESULT([no]);enable_tcl=no]) CPPFLAGS="$oldCPPFLAGS" LIBS="$oldLIBS" fi @@ -1641,16 +1633,18 @@ AM_CONDITIONAL(USE_TCL, false) fi -dnl Check for Tk +dnl ####################################################################### +dnl # Check for Tk +dnl ####################################################################### if test "$enable_tcl" = yes -a "$enable_tk" = yes; then AC_MSG_CHECKING([for tkConfig.sh]) TKCONFIG=no TKCONFIGDIRS="/usr/lib \ - /usr/lib64 \ - /usr/lib/tk8.4 \ - /usr/lib/tk8.3 \ - /usr/lib/tk8.2 \ - /usr/local/lib" + /usr/lib64 \ + /usr/lib/tk8.4 \ + /usr/lib/tk8.3 \ + /usr/lib/tk8.2 \ + /usr/local/lib" for dir in $with_tkconfig $TKCONFIGDIRS; do if test -f $dir/tkConfig.sh; then TKCONFIG=$dir/tkConfig.sh @@ -1669,9 +1663,9 @@ oldLIBS=$LIBS LIBS="$LIBS $TCL_LIB_SPEC $TK_LIB_SPEC" AC_TRY_LINK([#include <tk.h>], - [Tcl_Interp *interp=NULL; Tcl_Init(interp); Tk_Init(interp);], - [AC_MSG_RESULT([yes]);enable_tk=yes], - [AC_MSG_RESULT([no]);enable_tk=no]) + [Tcl_Interp *interp=NULL; Tcl_Init(interp); Tk_Init(interp);], + [AC_MSG_RESULT([yes]);enable_tk=yes], + [AC_MSG_RESULT([no]);enable_tk=no]) CPPFLAGS="$oldCPPFLAGS" LIBS="$oldLIBS" fi @@ -1713,16 +1707,25 @@ enable_prpls=no fi -dnl checks for jabber +dnl ####################################################################### +dnl # Check for Cyrus-SASL (for Jabber) +dnl ####################################################################### dnl AC_CHECK_SIZEOF(short) AC_CHECK_FUNCS(snprintf connect) AC_SUBST(SASL_LIBS) AC_ARG_ENABLE(cyrus-sasl, AC_HELP_STRING([--enable-cyrus-sasl], [enable Cyrus SASL support for jabberd]), enable_cyrus_sasl=$enableval, enable_cyrus_sasl=no) -if test "x-$enable_cyrus_sasl" = "x-yes" ; then - AC_CHECK_LIB(sasl2, sasl_client_init, [AC_DEFINE(HAVE_CYRUS_SASL, [1], [Define to 1 if Cyrus SASL is present]) SASL_LIBS=-"lsasl2"], [AC_ERROR(Cyrus SASL library not found)]) +if test "x$enable_cyrus_sasl" = "xyes" ; then + AC_CHECK_LIB(sasl2, sasl_client_init, [ + AC_DEFINE(HAVE_CYRUS_SASL, [1], [Define to 1 if Cyrus SASL is present]) + SASL_LIBS=-"lsasl2" + ], [ + AC_ERROR(Cyrus SASL library not found) + ]) fi -dnl checks for zephyr +dnl ####################################################################### +dnl # Check for Kerberos (for Zephyr) +dnl ####################################################################### AC_DEFINE(ZEPHYR_INT32, long, [Size of an int32.]) AC_SUBST(KRB4_CFLAGS) AC_SUBST(KRB4_LDFLAGS) @@ -1758,13 +1761,15 @@ LDFLAGS="$orig_LDFLAGS" fi -dnl checks for an external libzephyr +dnl ####################################################################### +dnl # Check for external libzephyr +dnl ####################################################################### AC_SUBST(ZEPHYR_CFLAGS) AC_SUBST(ZEPHYR_LDFLAGS) AC_SUBST(ZEPHYR_LIBS) if test "$zephyr" != "no" ; then - if test "$zephyr" != "yes" ; then - ZEPHYR_CFLAGS="-I${zephyr}/include" + if test "$zephyr" != "yes" ; then + ZEPHYR_CFLAGS="-I${zephyr}/include" ZEPHYR_LDFLAGS="-L${zephyr}/lib" elif test -d /usr/athena/include/zephyr ; then ZEPHYR_CFLAGS="-I/usr/athena/include" @@ -1778,9 +1783,9 @@ orig_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $ZEPHYR_LDFLAGS" AC_CHECK_LIB(zephyr, ZInitialize, - [ZEPHYR_LIBS="-lzephyr"], - [AC_ERROR(Zephyr libraries not found)], - -lzephyr) + [ZEPHYR_LIBS="-lzephyr"], + [AC_ERROR(Zephyr libraries not found)], + -lzephyr) orig_LIBS="$LIBS" LIBS="$orig_LIBS" LDFLAGS="$orig_LDFLAGS" @@ -1799,7 +1804,7 @@ AC_VAR_TIMEZONE_EXTERNALS dnl ####################################################################### -dnl # Doxygen Stuff +dnl # Check for Doxygen and dot (part of GraphViz) dnl ####################################################################### AC_ARG_ENABLE(doxygen, [AC_HELP_STRING([--enable-doxygen], [enable documentation with doxygen])],,enable_doxygen=yes) AC_ARG_ENABLE(dot, [AC_HELP_STRING([--enable-dot], [enable graphs in doxygen via 'dot'])],,enable_dot=yes) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-09-04 23:00:34
|
Revision: 17161 http://svn.sourceforge.net/gaim/?rev=17161&view=rev Author: datallah Date: 2006-09-04 16:00:13 -0700 (Mon, 04 Sep 2006) Log Message: ----------- Make the Perl GTK+ stuff work in wingaim. Modified Paths: -------------- trunk/gtk/Makefile.mingw trunk/gtk/plugins/Makefile.mingw trunk/gtk/plugins/perl/common/Gtk.xs trunk/gtk/plugins/perl/common/GtkBlist.xs trunk/gtk/plugins/perl/common/GtkConv.xs trunk/libgaim/plugins/perl/Makefile.mingw trunk/libgaim/plugins/perl/common/Makefile.mingw trunk/libgaim/plugins/perl/scripts/request.pl trunk/libgaim/win32/global.mak trunk/libgaim/win32/rules.mak trunk/libgaim/win32/targets.mak Added Paths: ----------- trunk/gtk/plugins/perl/Makefile.mingw trunk/gtk/plugins/perl/common/Makefile.mingw Modified: trunk/gtk/Makefile.mingw =================================================================== --- trunk/gtk/Makefile.mingw 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/gtk/Makefile.mingw 2006-09-04 23:00:13 UTC (rev 17161) @@ -113,11 +113,11 @@ -lws2_32 \ -lwinmm \ -lz \ - -liberty \ - -lidletrack + -liberty GTKGAIM_LIBS = \ $(LIBGAIM_LIBS) \ + -lidletrack \ -lgtk-win32-2.0 \ -latk-1.0 \ -lpango-1.0 \ @@ -145,7 +145,7 @@ $(GTKGAIM_OBJECTS): $(GAIM_CONFIG_H) $(GTKGAIM_TARGET).dll $(GTKGAIM_TARGET).dll.a: $(GAIM_LIBGAIM_DLL).a $(GAIM_IDLETRACK_DLL).a $(GTKGAIM_OBJECTS) - $(CC) -shared $(LIBGAIM_OBJECTS) $(GTKGAIM_OBJECTS) $(LIB_PATHS) $(GTKGAIM_LIBS) $(DLL_LD_FLAGS) -Wl,--out-implib,$(GTKGAIM_TARGET).dll.a -o $(GTKGAIM_TARGET).dll + $(CC) -shared $(GTKGAIM_OBJECTS) $(LIB_PATHS) $(GTKGAIM_LIBS) $(DLL_LD_FLAGS) -Wl,--out-implib,$(GTKGAIM_TARGET).dll.a -o $(GTKGAIM_TARGET).dll $(EXE_TARGET).exe: $(GAIM_CONFIG_H) $(GAIM_GTKGAIM_DLL).a $(GAIM_IDLETRACK_DLL).a $(EXE_OBJECTS) $(CC) $(LDFLAGS) $(EXE_OBJECTS) $(LIB_PATHS) $(EXE_LIBS) -o $(EXE_TARGET).exe Modified: trunk/gtk/plugins/Makefile.mingw =================================================================== --- trunk/gtk/plugins/Makefile.mingw 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/gtk/plugins/Makefile.mingw 2006-09-04 23:00:13 UTC (rev 17161) @@ -7,10 +7,11 @@ GAIM_TOP := ../.. include $(GAIM_TOP)/libgaim/win32/global.mak -DOCKLET_PLUGIN := $(GAIM_GTK_PLUGINS_TOP)/docklet -TICKER_PLUGIN := $(GAIM_GTK_PLUGINS_TOP)/ticker -TRANSPARENCY_PLUGIN := $(GAIM_GTK_PLUGINS_TOP)/win32/transparency -WINPREFS_PLUGIN := $(GAIM_GTK_PLUGINS_TOP)/win32/winprefs +DOCKLET_PLUGIN := ./docklet +GTKPERL_PLUGIN := ./perl +TICKER_PLUGIN := ./ticker +TRANSPARENCY_PLUGIN := ./win32/transparency +WINPREFS_PLUGIN := ./win32/winprefs .SUFFIXES: .SUFFIXES: .c .dll @@ -58,16 +59,18 @@ all: plugins $(MAKE) -C $(DOCKLET_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) + $(MAKE) -C $(GTKPERL_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) $(MAKE) -C $(TICKER_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) $(MAKE) -C $(TRANSPARENCY_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) $(MAKE) -C $(WINPREFS_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) install: $(GAIM_INSTALL_PLUGINS_DIR) $(MAKE) -C $(DOCKLET_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) install + $(MAKE) -C $(GTKPERL_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) install $(MAKE) -C $(TICKER_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) install $(MAKE) -C $(TRANSPARENCY_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) install $(MAKE) -C $(WINPREFS_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) install - cp $(GAIM_GTK_PLUGINS_TOP)/*.dll $(GAIM_INSTALL_PLUGINS_DIR) + cp *.dll $(GAIM_INSTALL_PLUGINS_DIR) .c.dll: $(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@.o -c $< @@ -88,9 +91,10 @@ ## CLEAN RULES ## clean: - rm -rf $(GAIM_GTK_PLUGINS_TOP)/*.o - rm -rf $(GAIM_GTK_PLUGINS_TOP)/*.dll + rm -f *.o + rm -f *.dll $(MAKE) -C $(DOCKLET_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) clean + $(MAKE) -C $(GTKPERL_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) clean $(MAKE) -C $(TICKER_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) clean $(MAKE) -C $(TRANSPARENCY_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) clean $(MAKE) -C $(WINPREFS_PLUGIN) -f $(GAIM_WIN32_MAKEFILE) clean Added: trunk/gtk/plugins/perl/Makefile.mingw =================================================================== --- trunk/gtk/plugins/perl/Makefile.mingw (rev 0) +++ trunk/gtk/plugins/perl/Makefile.mingw 2006-09-04 23:00:13 UTC (rev 17161) @@ -0,0 +1,25 @@ +# +# Makefile.mingw +# +# Description: Makefile for perl plugin loader plugin. +# + +GAIM_TOP := ../../.. +include $(GAIM_TOP)/libgaim/win32/global.mak + +## +## TARGET DEFINITIONS +## +.PHONY: all clean + +all: + $(MAKE) -C ./common -f $(GAIM_WIN32_MAKEFILE) + +install: all $(GAIM_INSTALL_PLUGINS_DIR) + $(MAKE) -C ./common -f $(GAIM_WIN32_MAKEFILE) install + +## +## CLEAN RULES +## +clean: + $(MAKE) -C ./common -f $(GAIM_WIN32_MAKEFILE) clean Property changes on: trunk/gtk/plugins/perl/Makefile.mingw ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Modified: trunk/gtk/plugins/perl/common/Gtk.xs =================================================================== --- trunk/gtk/plugins/perl/common/Gtk.xs 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/gtk/plugins/perl/common/Gtk.xs 2006-09-04 23:00:13 UTC (rev 17161) @@ -38,7 +38,9 @@ GAIM_PERL_BOOT_PROTO(Gtk__Privacy); GAIM_PERL_BOOT_PROTO(Gtk__Roomlist); GAIM_PERL_BOOT_PROTO(Gtk__Status); +#ifndef _WIN32 GAIM_PERL_BOOT_PROTO(Gtk__Session); +#endif GAIM_PERL_BOOT_PROTO(Gtk__Sound); GAIM_PERL_BOOT_PROTO(Gtk__StatusBox); GAIM_PERL_BOOT_PROTO(Gtk__Themes); @@ -68,7 +70,9 @@ GAIM_PERL_BOOT(Gtk__Privacy); GAIM_PERL_BOOT(Gtk__Roomlist); GAIM_PERL_BOOT(Gtk__Status); +#ifndef _WIN32 GAIM_PERL_BOOT(Gtk__Session); +#endif GAIM_PERL_BOOT(Gtk__Sound); GAIM_PERL_BOOT(Gtk__StatusBox); GAIM_PERL_BOOT(Gtk__Themes); Modified: trunk/gtk/plugins/perl/common/GtkBlist.xs =================================================================== --- trunk/gtk/plugins/perl/common/GtkBlist.xs 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/gtk/plugins/perl/common/GtkBlist.xs 2006-09-04 23:00:13 UTC (rev 17161) @@ -51,9 +51,12 @@ gaim_gtk_blist_refresh(list) Gaim::BuddyList list +#if 0 void gaim_gtk_blist_update_toolbar() +#endif + void gaim_gtk_blist_update_columns() Modified: trunk/gtk/plugins/perl/common/GtkConv.xs =================================================================== --- trunk/gtk/plugins/perl/common/GtkConv.xs 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/gtk/plugins/perl/common/GtkConv.xs 2006-09-04 23:00:13 UTC (rev 17161) @@ -50,9 +50,12 @@ gaim_gtkconv_switch_active_conversation(conv) Gaim::Conversation conv +#if 0 void gaim_gtkconv_update_tabs() +#endif + void gaim_gtkconv_update_buttons_by_protocol(conv) Gaim::Conversation conv Added: trunk/gtk/plugins/perl/common/Makefile.mingw =================================================================== --- trunk/gtk/plugins/perl/common/Makefile.mingw (rev 0) +++ trunk/gtk/plugins/perl/common/Makefile.mingw 2006-09-04 23:00:13 UTC (rev 17161) @@ -0,0 +1,108 @@ +# +# Makefile.mingw +# +# Description: Makefile for Gaim perl module. +# + +GAIM_TOP := ../../../.. +include $(GAIM_TOP)/libgaim/win32/global.mak + +TARGET = Gtk +EXTUTILS := C:/perl/lib/ExtUtils + +CFLAGS += -Wno-comment + +## +## INCLUDE PATHS +## +INCLUDE_PATHS = -I. \ + -I$(GAIM_TOP) \ + -I$(GAIM_LIB_TOP) \ + -I$(GAIM_GTK_TOP) \ + -I$(GTK_TOP)/include \ + -I$(GTK_TOP)/include/atk-1.0 \ + -I$(GTK_TOP)/include/glib-2.0 \ + -I$(GTK_TOP)/include/gtk-2.0 \ + -I$(GTK_TOP)/include/pango-1.0 \ + -I$(GTK_TOP)/lib/glib-2.0/include \ + -I$(GTK_TOP)/lib/gtk-2.0/include \ + -I$(PERL_LIB_TOP)/CORE + +LIB_PATHS = -L$(PERL_LIB_TOP) \ + -L$(GAIM_LIB_TOP) \ + -L$(GAIM_GTK_TOP) \ + -L$(GAIM_LIB_PERL_TOP) \ + -L$(GTK_TOP)/lib + +## +## SOURCES, OBJECTS +## +XS_FILES = \ + Gtk.xs \ + GtkAccount.xs \ + GtkBlist.xs \ + GtkConn.xs \ + GtkConv.xs \ + GtkConvWin.xs \ + GtkDebug.xs \ + GtkDialogs.xs \ + GtkFt.xs \ + GtkIMHtml.xs \ + GtkIMHtmlToolbar.xs \ + GtkLog.xs \ + GtkMenuTray.xs \ + GtkPlugin.xs \ + GtkPluginPref.xs \ + GtkPounce.xs \ + GtkPrefs.xs \ + GtkPrivacy.xs \ + GtkRoomlist.xs \ + GtkSavedStatuses.xs \ + GtkSound.xs \ + GtkStatusBox.xs \ + GtkThemes.xs \ + GtkUtils.xs + + +C_FILES = $(XS_FILES:%.xs=%.c) +OBJECTS = $(C_FILES:%.c=%.o) + +## +## LIBRARIES +## +LIBS = -lperl58 \ + -lperl \ + -lgaim \ + -lgtkgaim \ + -lglib-2.0 + +include $(GAIM_COMMON_RULES) + +## +## TARGETS +## +.PHONY: all clean + +all: $(TARGET).dll + +$(GAIM_INSTALL_PERLMOD_DIR)/Gaim.pm: + $(MAKE) -C $(GAIM_LIB_PERL_TOP)/common -f $(GAIM_WIN32_MAKEFILE) install + +install: all $(GAIM_INSTALL_PERLMOD_DIR)/Gaim.pm + rm -f $(GAIM_INSTALL_PERLMOD_DIR)/Gaim/$(TARGET).dll $(GAIM_INSTALL_PERLMOD_DIR)/Gaim/$(TARGET).pm + mkdir -p $(GAIM_INSTALL_PERLMOD_DIR)/Gaim + cp $(TARGET).pm $(GAIM_INSTALL_PERLMOD_DIR)/Gaim/ + cp $(TARGET).dll $(GAIM_INSTALL_PERLMOD_DIR)/Gaim/ + +$(C_FILES): $(GAIM_CONFIG_H) + +$(TARGET).dll: $(GAIM_GTKGAIM_DLL).a $(GAIM_LIBGAIM_PERL_DLL).a $(OBJECTS) + $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) -o $(TARGET).dll + +## +## CLEAN +## +clean: + rm -f *.o $(TARGET).dll + +include $(GAIM_COMMON_TARGETS) Property changes on: trunk/gtk/plugins/perl/common/Makefile.mingw ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Modified: trunk/libgaim/plugins/perl/Makefile.mingw =================================================================== --- trunk/libgaim/plugins/perl/Makefile.mingw 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/libgaim/plugins/perl/Makefile.mingw 2006-09-04 23:00:13 UTC (rev 17161) @@ -68,8 +68,8 @@ ## ## BUILD DLL ## -$(TARGET).dll: $(GAIM_LIBGAIM_DLL).a $(OBJECTS) - $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -Wl,--export-all-symbols -o $(TARGET).dll +$(TARGET).dll $(TARGET).dll.a: $(GAIM_LIBGAIM_DLL).a $(OBJECTS) + $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -Wl,--export-all-symbols -Wl,--out-implib,$(TARGET).dll.a -o $(TARGET).dll ## ## CLEAN RULES Modified: trunk/libgaim/plugins/perl/common/Makefile.mingw =================================================================== --- trunk/libgaim/plugins/perl/common/Makefile.mingw 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/libgaim/plugins/perl/common/Makefile.mingw 2006-09-04 23:00:13 UTC (rev 17161) @@ -98,12 +98,12 @@ $(C_FILES): $(GAIM_CONFIG_H) -$(AUTOSPLIT): Gaim.pm +$(AUTOSPLIT): mkdir -p ./lib/auto cp Gaim.pm ./lib $(PERL) -MAutoSplit -e 'autosplit("lib/Gaim.pm")' -$(TARGET).dll: $(GAIM_LIBGAIM_DLL).a $(FALLBACKS) $(OBJECTS) +$(TARGET).dll: $(GAIM_LIBGAIM_DLL).a $(GAIM_LIBGAIM_PERL_DLL).a $(FALLBACKS) $(OBJECTS) $(CC) -shared $(OBJECTS) $(LIB_PATHS) $(LIBS) -o $(TARGET).dll ## Modified: trunk/libgaim/plugins/perl/scripts/request.pl =================================================================== --- trunk/libgaim/plugins/perl/scripts/request.pl 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/libgaim/plugins/perl/scripts/request.pl 2006-09-04 23:00:13 UTC (rev 17161) @@ -17,17 +17,6 @@ plugin_action_sub => "plugin_action_names" ); - - # These names must already exist - my $GROUP = "UIUC Buddies"; - my $USERNAME = "johnhkelm2"; - - # We will create these on load then destroy them on unload - my $TEST_GROUP = "perlTestGroup"; - my $TEST_NAME = "perlTestName"; - my $TEST_ALIAS = "perlTestAlias"; - my $PROTOCOL_ID = "prpl-oscar"; - %plugin_actions = ( "Plugin Action Test Label" => \&plugin_action_test, ); Modified: trunk/libgaim/win32/global.mak =================================================================== --- trunk/libgaim/win32/global.mak 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/libgaim/win32/global.mak 2006-09-04 23:00:13 UTC (rev 17161) @@ -31,6 +31,7 @@ # Important (enough) locations in our source code GAIM_LIB_TOP := $(GAIM_TOP)/libgaim GAIM_LIB_PLUGINS_TOP := $(GAIM_LIB_TOP)/plugins +GAIM_LIB_PERL_TOP := $(GAIM_LIB_PLUGINS_TOP)/perl GAIM_GTK_TOP := $(GAIM_TOP)/gtk GAIM_GTK_IDLETRACK_TOP := $(GAIM_GTK_TOP)/win32/IdleTracker GAIM_GTK_PIXMAPS_TOP := $(GAIM_GTK_TOP)/pixmaps @@ -43,6 +44,7 @@ GAIM_CONFIG_H := $(GAIM_TOP)/config.h GAIM_IDLETRACK_DLL := $(GAIM_GTK_IDLETRACK_TOP)/idletrack.dll GAIM_LIBGAIM_DLL := $(GAIM_LIB_TOP)/libgaim.dll +GAIM_LIBGAIM_PERL_DLL := $(GAIM_LIB_PERL_TOP)/perl.dll GAIM_GTKGAIM_DLL := $(GAIM_GTK_TOP)/gtkgaim.dll GAIM_EXE := $(GAIM_GTK_TOP)/gaim.exe GAIM_PORTABLE_EXE := $(GAIM_GTK_TOP)/gaim-portable.exe Modified: trunk/libgaim/win32/rules.mak =================================================================== --- trunk/libgaim/win32/rules.mak 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/libgaim/win32/rules.mak 2006-09-04 23:00:13 UTC (rev 17161) @@ -4,7 +4,7 @@ $(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@ -c $< %.c: %.xs - $(PERL) $(EXTUTILS)/xsubpp -typemap $(EXTUTILS)/typemap -typemap typemap $< > $@ + $(PERL) $(EXTUTILS)/xsubpp -typemap $(EXTUTILS)/typemap -typemap $(GAIM_LIB_PERL_TOP)/common/typemap $< > $@ %.o: %.rc $(WINDRES) -i $< -o $@ Modified: trunk/libgaim/win32/targets.mak =================================================================== --- trunk/libgaim/win32/targets.mak 2006-09-04 21:58:49 UTC (rev 17160) +++ trunk/libgaim/win32/targets.mak 2006-09-04 23:00:13 UTC (rev 17161) @@ -11,6 +11,9 @@ $(GAIM_LIBGAIM_DLL) $(GAIM_LIBGAIM_DLL).a: $(MAKE) -C $(GAIM_LIB_TOP) -f $(GAIM_WIN32_MAKEFILE) libgaim.dll +$(GAIM_LIBGAIM_PERL_DLL) $(GAIM_LIBGAIM_PERL_DLL).a: + $(MAKE) -C $(GAIM_LIB_PERL_TOP) -f $(GAIM_WIN32_MAKEFILE) perl.dll + $(GAIM_GTKGAIM_DLL) $(GAIM_GTKGAIM_DLL).a: $(MAKE) -C $(GAIM_GTK_TOP) -f $(GAIM_WIN32_MAKEFILE) gtkgaim.dll This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-09-05 02:09:24
|
Revision: 17163 http://svn.sourceforge.net/gaim/?rev=17163&view=rev Author: datallah Date: 2006-09-04 19:09:17 -0700 (Mon, 04 Sep 2006) Log Message: ----------- Make Gaim::Gtk actually work in wingaim. Modified Paths: -------------- trunk/gtk/plugins/perl/common/Makefile.mingw trunk/libgaim/plugins/perl/scripts/request.pl Modified: trunk/gtk/plugins/perl/common/Makefile.mingw =================================================================== --- trunk/gtk/plugins/perl/common/Makefile.mingw 2006-09-04 23:26:50 UTC (rev 17162) +++ trunk/gtk/plugins/perl/common/Makefile.mingw 2006-09-05 02:09:17 UTC (rev 17163) @@ -89,10 +89,10 @@ $(MAKE) -C $(GAIM_LIB_PERL_TOP)/common -f $(GAIM_WIN32_MAKEFILE) install install: all $(GAIM_INSTALL_PERLMOD_DIR)/Gaim.pm - rm -f $(GAIM_INSTALL_PERLMOD_DIR)/Gaim/$(TARGET).dll $(GAIM_INSTALL_PERLMOD_DIR)/Gaim/$(TARGET).pm + rm -f $(GAIM_INSTALL_PERLMOD_DIR)/$(TARGET).dll $(GAIM_INSTALL_PERLMOD_DIR)/Gaim/$(TARGET).pm mkdir -p $(GAIM_INSTALL_PERLMOD_DIR)/Gaim cp $(TARGET).pm $(GAIM_INSTALL_PERLMOD_DIR)/Gaim/ - cp $(TARGET).dll $(GAIM_INSTALL_PERLMOD_DIR)/Gaim/ + cp $(TARGET).dll $(GAIM_INSTALL_PERLMOD_DIR) $(C_FILES): $(GAIM_CONFIG_H) Modified: trunk/libgaim/plugins/perl/scripts/request.pl =================================================================== --- trunk/libgaim/plugins/perl/scripts/request.pl 2006-09-04 23:26:50 UTC (rev 17162) +++ trunk/libgaim/plugins/perl/scripts/request.pl 2006-09-05 02:09:17 UTC (rev 17163) @@ -5,7 +5,7 @@ # All the information Gaim gets about our nifty plugin %PLUGIN_INFO = ( perl_api_version => 2, - name => " Perl: $MODULE_NAME", + name => "Perl: $MODULE_NAME", version => "0.1", summary => "Test plugin for the Perl interpreter.", description => "Implements a set of test proccedures to ensure all functions that work in the C API still work in the Perl plugin interface. As XSUBs are added, this *should* be updated to test the changes. Furthermore, this will function as the tutorial perl plugin.", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-09-05 03:14:52
|
Revision: 17164 http://svn.sourceforge.net/gaim/?rev=17164&view=rev Author: datallah Date: 2006-09-04 20:14:46 -0700 (Mon, 04 Sep 2006) Log Message: ----------- Fix the installer to be more robust in its version checking. John D. Ramsdell noticed this. Modified Paths: -------------- trunk/gaim-installer.nsi trunk/gtk/win32/nsis/gaim-plugin.nsh Modified: trunk/gaim-installer.nsi =================================================================== --- trunk/gaim-installer.nsi 2006-09-05 02:09:17 UTC (rev 17163) +++ trunk/gaim-installer.nsi 2006-09-05 03:14:46 UTC (rev 17164) @@ -39,12 +39,15 @@ !include "MUI.nsh" !include "Sections.nsh" -!include "FileFunc.nsh" +!include "FileFunc.nsh" !insertmacro GetParameters !insertmacro GetOptions !insertmacro GetParent +!include "WordFunc.nsh" +!insertmacro VersionCompare + ;-------------------------------- ;Defines @@ -998,62 +1001,15 @@ Call VerifyDir Pop $0 StrCmp $0 "0" 0 dir_good - Abort + Pop $0 + Abort dir_good: Pop $0 FunctionEnd -; CheckGtkVersion -; inputs: Push 2 GTK+ version strings to check. The major value needs to -; be equal and the minor value needs to be greater or equal. ; ; Usage: -; Push "2.1.0" ; Reference version -; Push "2.2.1" ; Version to check -; Call CheckGtkVersion -; Pop $R0 -; $R0 will now equal "1", because 2.2 is greater than 2.1 -; -Function CheckGtkVersion - ; Version we want to check - Exch $R0 - Exch - ; Reference version - Exch $R1 - Push $R2 - Push $R3 - - ; Check that the string to check is at least 5 chars long (i.e. x.x.x) - StrLen $R2 $R0 - IntCmp $R2 5 0 bad_version - - ; Major version check - StrCpy $R2 $R0 1 - StrCpy $R3 $R1 1 - IntCmp $R2 $R3 check_minor bad_version bad_version - - check_minor: - StrCpy $R2 $R0 1 2 - StrCpy $R3 $R1 1 2 - IntCmp $R2 $R3 good_version bad_version good_version - - bad_version: - StrCpy $R0 "0" - Goto done - - good_version: - StrCpy $R0 "1" - - done: - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 -FunctionEnd - -; -; Usage: ; Call DoWeNeedGtk ; First Pop: ; 0 - We have the correct version @@ -1077,77 +1033,68 @@ ; - If no rights ; - Check HKLM Push $0 + Push $1 Push $2 - Push $3 - Push $4 - Push $5 Call CheckUserInstallRights - Pop $3 - StrCmp $3 "HKLM" check_hklm - StrCmp $3 "HKCU" check_hkcu check_hklm + Pop $1 + StrCmp $1 "HKLM" check_hklm + StrCmp $1 "HKCU" check_hkcu check_hklm check_hkcu: ReadRegStr $0 HKCU ${GTK_REG_KEY} "Version" - StrCpy $5 "HKCU" + StrCpy $2 "HKCU" StrCmp $0 "" check_hklm have_gtk check_hklm: ReadRegStr $0 HKLM ${GTK_REG_KEY} "Version" - StrCpy $5 "HKLM" + StrCpy $2 "HKLM" StrCmp $0 "" no_gtk have_gtk have_gtk: ; GTK+ is already installed.. check version. - Push ${GTK_VERSION} ; Minimum GTK+ version needed - Push $0 - Call CheckGtkVersion - Pop $2 - StrCmp $2 "1" good_version bad_version + ${VersionCompare} ${GTK_VERSION} $0 $0 + IntCmp $0 1 bad_version good_version good_version + bad_version: ; Bad version. If hklm ver and we have hkcu or no rights.. return no gtk - StrCmp $3 "NONE" no_gtk ; if no rights.. can't upgrade - StrCmp $3 "HKCU" 0 upgrade_gtk ; if HKLM can upgrade.. - StrCmp $5 "HKLM" no_gtk upgrade_gtk ; have hkcu rights.. if found hklm ver can't upgrade.. + StrCmp $1 "NONE" no_gtk ; if no rights.. can't upgrade + StrCmp $1 "HKCU" 0 upgrade_gtk ; if HKLM can upgrade.. + StrCmp $2 "HKLM" no_gtk upgrade_gtk ; have hkcu rights.. if found hklm ver can't upgrade.. upgrade_gtk: - StrCpy $2 "1" - Push $5 Push $2 + Push "1" Goto done good_version: - StrCmp $5 "HKLM" have_hklm_gtk have_hkcu_gtk + StrCmp $2 "HKLM" have_hklm_gtk have_hkcu_gtk have_hkcu_gtk: ; Have HKCU version - ReadRegStr $4 HKCU ${GTK_REG_KEY} "Path" + ReadRegStr $0 HKCU ${GTK_REG_KEY} "Path" Goto good_version_cont have_hklm_gtk: - ReadRegStr $4 HKLM ${GTK_REG_KEY} "Path" + ReadRegStr $0 HKLM ${GTK_REG_KEY} "Path" Goto good_version_cont good_version_cont: - StrCpy $2 "0" - Push $4 ; The path to existing GTK+ - Push $2 + Push $0 ; The path to existing GTK+ + Push "0" Goto done no_gtk: - StrCpy $2 "2" - Push $3 ; our rights - Push $2 + Push $1 ; our rights + Push "2" Goto done done: ; The top two items on the stack are what we want to return - Exch 5 + Exch 3 Pop $0 - Exch 5 + Exch 3 Pop $2 - Pop $5 - Pop $4 - Pop $3 + Pop $1 FunctionEnd @@ -1156,7 +1103,7 @@ Push $R0 System::Call 'kernel32::OpenMutex(i 2031617, b 0, t "gaim_is_running") i .R0' IntCmp $R0 0 done - MessageBox MB_OK|MB_ICONEXCLAMATION $(GAIM_IS_RUNNING) /SD IDOK + MessageBox MB_OK|MB_ICONEXCLAMATION $(GAIM_IS_RUNNING) /SD IDOK Abort done: Pop $R0 @@ -1346,11 +1293,15 @@ ; Don't show dir selector.. Upgrades are done to existing path.. have_gtk: upgrade_gtk: + Pop $R1 + Pop $R0 Abort no_gtk: StrCmp $R1 "NONE" 0 no_gtk_cont ; Got no install rights.. + Pop $R1 + Pop $R0 Abort no_gtk_cont: ; Suggest path.. @@ -1377,6 +1328,7 @@ Pop $R0 StrCmp $R0 "0" 0 done MessageBox MB_OK $(GTK_BAD_INSTALL_PATH) /SD IDOK + Pop $R0 Abort done: Pop $R0 Modified: trunk/gtk/win32/nsis/gaim-plugin.nsh =================================================================== --- trunk/gtk/win32/nsis/gaim-plugin.nsh 2006-09-05 02:09:17 UTC (rev 17163) +++ trunk/gtk/win32/nsis/gaim-plugin.nsh 2006-09-05 03:14:46 UTC (rev 17164) @@ -3,7 +3,7 @@ ;; Copyright 2005, Daniel Atallah <dan...@ya...> ;; ;; Include in plugin installer scripts using: -;; !addincludedir "${PATH_TO_GAIM_SRC}\src\win32\nsis" +;; !addincludedir "${PATH_TO_GAIM_SRC}\gtkgaim\win32\nsis" ;; !include "gaim-plugin.nsh" ;; @@ -41,7 +41,7 @@ ; Push the Plugin's Gaim Version onto the Stack before calling ; After calling, the top of the Stack will contain the result of the check: ; GAIM_VERSION_OK - If the installed gaim version is compatible w/ the version specified -; GAIM_VERSION_INCOMPATIBLE - If the installed gaim version isn't compatible w/ the ersion specified +; GAIM_VERSION_INCOMPATIBLE - If the installed gaim version isn't compatible w/ the version specified ; GAIM_VERSION_UNDEFINED - If the installed gaim version can't be determined Function CheckGaimVersion ; Save the Variable values that we will use in the stack @@ -121,7 +121,7 @@ ; Save the Variable values that we will use in the stack Push $1 - Exch + Exch Pop $1 ;The version component which we want to extract (0, 1, 2) Exch Push $0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-05 08:21:54
|
Revision: 17166 http://svn.sourceforge.net/gaim/?rev=17166&view=rev Author: thekingant Date: 2006-09-05 01:21:51 -0700 (Tue, 05 Sep 2006) Log Message: ----------- "make dist" is closer to working now. gtk/plugins/perl/Makefile.am still needs some work, but I'm tired Modified Paths: -------------- trunk/Makefile.am trunk/gtk/Makefile.am trunk/gtk/plugins/Makefile.am trunk/gtk/plugins/perl/Makefile.am trunk/libgaim/Makefile.am Modified: trunk/Makefile.am =================================================================== --- trunk/Makefile.am 2006-09-05 06:10:38 UTC (rev 17165) +++ trunk/Makefile.am 2006-09-05 08:21:51 UTC (rev 17166) @@ -18,12 +18,12 @@ README.mingw \ VERSION \ VERSION.in \ - plugins/win32/transparency/Makefile.mingw \ - plugins/win32/transparency/win2ktrans.c \ - plugins/win32/winprefs/gtkappbar.c \ - plugins/win32/winprefs/gtkappbar.h \ - plugins/win32/winprefs/Makefile.mingw \ - plugins/win32/winprefs/winprefs.c \ + gtk/plugins/win32/transparency/Makefile.mingw \ + gtk/plugins/win32/transparency/win2ktrans.c \ + gtk/plugins/win32/winprefs/gtkappbar.c \ + gtk/plugins/win32/winprefs/gtkappbar.h \ + gtk/plugins/win32/winprefs/Makefile.mingw \ + gtk/plugins/win32/winprefs/winprefs.c \ po/Makefile.mingw gaimincludedir=$(includedir)/gaim Modified: trunk/gtk/Makefile.am =================================================================== --- trunk/gtk/Makefile.am 2006-09-05 06:10:38 UTC (rev 17165) +++ trunk/gtk/Makefile.am 2006-09-05 08:21:51 UTC (rev 17166) @@ -5,21 +5,16 @@ getopt.h \ getopt1.c \ Makefile.mingw \ - win_gaim.c \ win32/IdleTracker/Makefile.mingw \ win32/IdleTracker/idletrack.c \ win32/IdleTracker/idletrack.h \ win32/gaimrc.rc \ - win32/global.mak \ - win32/libc_interface.c \ - win32/libc_interface.h \ - win32/libc_internal.h \ + win32/gtkwin32dep.c \ + win32/gtkwin32dep.h \ win32/resource.h \ win32/untar.c \ win32/untar.h \ - win32/wgaimerror.h \ - win32/win32dep.c \ - win32/win32dep.h \ + win32/win_gaim.c \ win32/wspell.c \ win32/wspell.h \ win32/nsis/gaim-header.bmp \ Modified: trunk/gtk/plugins/Makefile.am =================================================================== --- trunk/gtk/plugins/Makefile.am 2006-09-05 06:10:38 UTC (rev 17165) +++ trunk/gtk/plugins/Makefile.am 2006-09-05 08:21:51 UTC (rev 17166) @@ -64,8 +64,6 @@ endif # PLUGINS EXTRA_DIST = \ - ChangeLog HOWTO \ - ChangeLog.API \ Makefile.mingw \ contact_priority.c \ gaiminc.c \ Modified: trunk/gtk/plugins/perl/Makefile.am =================================================================== --- trunk/gtk/plugins/perl/Makefile.am 2006-09-05 06:10:38 UTC (rev 17165) +++ trunk/gtk/plugins/perl/Makefile.am 2006-09-05 08:21:51 UTC (rev 17166) @@ -28,12 +28,12 @@ common/GtkThemes.xs \ common/GtkUtils.xs \ common/gtkmodule.h \ + common/Makefile.PL.in \ common/typemap EXTRA_DIST = \ Makefile.mingw \ common/Makefile.mingw \ - common/Makefile.Pl.in \ $(common_sources) all-local: common/Makefile Modified: trunk/libgaim/Makefile.am =================================================================== --- trunk/libgaim/Makefile.am 2006-09-05 06:10:38 UTC (rev 17165) +++ trunk/libgaim/Makefile.am 2006-09-05 08:21:51 UTC (rev 17166) @@ -6,58 +6,13 @@ gaim-send \ gaim-send-async \ Makefile.mingw \ - win_gaim.c \ - win32/IdleTracker/Makefile.mingw \ - win32/IdleTracker/idletrack.c \ - win32/IdleTracker/idletrack.h \ - win32/gaimrc.rc \ win32/global.mak \ win32/libc_interface.c \ win32/libc_interface.h \ win32/libc_internal.h \ - win32/resource.h \ - win32/untar.c \ - win32/untar.h \ win32/wgaimerror.h \ win32/win32dep.c \ - win32/win32dep.h \ - win32/wspell.c \ - win32/wspell.h \ - win32/nsis/gaim-header.bmp \ - win32/nsis/gaim-intro.bmp \ - win32/nsis/gaim-plugin.nsh \ - win32/nsis/langmacros.nsh \ - win32/nsis/translations/albanian.nsh \ - win32/nsis/translations/bulgarian.nsh \ - win32/nsis/translations/catalan.nsh \ - win32/nsis/translations/czech.nsh \ - win32/nsis/translations/danish.nsh \ - win32/nsis/translations/dutch.nsh \ - win32/nsis/translations/english.nsh \ - win32/nsis/translations/finnish.nsh \ - win32/nsis/translations/french.nsh \ - win32/nsis/translations/german.nsh \ - win32/nsis/translations/hebrew.nsh \ - win32/nsis/translations/hungarian.nsh \ - win32/nsis/translations/italian.nsh \ - win32/nsis/translations/japanese.nsh \ - win32/nsis/translations/korean.nsh \ - win32/nsis/translations/kurdish.nsh \ - win32/nsis/translations/lithuanian.nsh \ - win32/nsis/translations/norwegian.nsh \ - win32/nsis/translations/polish.nsh \ - win32/nsis/translations/portuguese.nsh \ - win32/nsis/translations/portuguese-br.nsh \ - win32/nsis/translations/romanian.nsh \ - win32/nsis/translations/russian.nsh \ - win32/nsis/translations/serbian-latin.nsh \ - win32/nsis/translations/simp-chinese.nsh \ - win32/nsis/translations/slovak.nsh \ - win32/nsis/translations/slovenian.nsh \ - win32/nsis/translations/spanish.nsh \ - win32/nsis/translations/swedish.nsh \ - win32/nsis/translations/trad-chinese.nsh \ - win32/nsis/translations/vietnamese.nsh + win32/win32dep.h SUBDIRS = plugins protocols This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-09-05 15:40:30
|
Revision: 17168 http://svn.sourceforge.net/gaim/?rev=17168&view=rev Author: datallah Date: 2006-09-05 08:40:24 -0700 (Tue, 05 Sep 2006) Log Message: ----------- Use NSIS' built-in language registry key stuff. This fixes the installer forgetting which language you've selected. Fill the installer file versioning information - Unfortunately, there doesn't appear to be a way to manipulate the value to use for the ProductVersion inside the NSIS script, so the Makefile needs to massage the data. Modified Paths: -------------- trunk/Makefile.mingw trunk/gaim-installer.nsi Modified: trunk/Makefile.mingw =================================================================== --- trunk/Makefile.mingw 2006-09-05 13:55:50 UTC (rev 17167) +++ trunk/Makefile.mingw 2006-09-05 15:40:24 UTC (rev 17168) @@ -8,6 +8,30 @@ GAIM_TOP := . include $(GAIM_TOP)/libgaim/win32/global.mak +# Generate a X.X.X.X version for the installer file versioning header +# The last digit will be 99 for a final release, 0 for dev or unknown, or the beta number +GAIM_PRODUCT_VERSION = $(shell \ +awk 'BEGIN {FS="."} { \ + if (int($$3) == $$3) { \ + $$4 = "99"; \ + } else { \ + $$5 = $$3; \ + sub(int($$3), "", $$5); \ + if ($$5 == "dev") { \ + $$4 = "0"; \ + } else { \ + if (sub("beta", "", $$5) > 0) { \ + $$4 = $$5; \ + } else { \ + $$4 = "0"; \ + } \ + } \ + } \ + printf("%s.%s.%s.%s", $$1, $$2, int($$3), $$4); \ + exit; \ +}' VERSION) + + all: $(GAIM_CONFIG_H) $(MAKE) -C $(GAIM_LIB_TOP) -f $(GAIM_WIN32_MAKEFILE) $(MAKE) -C $(GAIM_GTK_TOP) -f $(GAIM_WIN32_MAKEFILE) @@ -19,13 +43,13 @@ $(MAKE) -C $(GAIM_PO_TOP) -f $(GAIM_WIN32_MAKEFILE) install installer: install - $(MAKENSIS) /V3 /DGAIM_VERSION="$(GAIM_VERSION)" /DWITH_GTK gaim-installer.nsi + $(MAKENSIS) /V3 /DGAIM_VERSION="$(GAIM_VERSION)" /DGAIM_PRODUCT_VERSION="$(GAIM_PRODUCT_VERSION)" /DWITH_GTK gaim-installer.nsi installer_nogtk: install - $(MAKENSIS) /V3 /DGAIM_VERSION="$(GAIM_VERSION)" gaim-installer.nsi + $(MAKENSIS) /V3 /DGAIM_VERSION="$(GAIM_VERSION)" /DGAIM_PRODUCT_VERSION="$(GAIM_PRODUCT_VERSION)" gaim-installer.nsi installer_debug: install - $(MAKENSIS) /V3 /DGAIM_VERSION="$(GAIM_VERSION)" /DDEBUG gaim-installer.nsi + $(MAKENSIS) /V3 /DGAIM_VERSION="$(GAIM_VERSION)" /DGAIM_PRODUCT_VERSION="$(GAIM_PRODUCT_VERSION)" /DDEBUG gaim-installer.nsi installers: installer installer_nogtk Modified: trunk/gaim-installer.nsi =================================================================== --- trunk/gaim-installer.nsi 2006-09-05 13:55:50 UTC (rev 17167) +++ trunk/gaim-installer.nsi 2006-09-05 15:40:24 UTC (rev 17168) @@ -59,7 +59,6 @@ !define HKLM_APP_PATHS_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\gaim.exe" !define GAIM_STARTUP_RUN_KEY "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" !define GAIM_UNINST_EXE "gaim-uninst.exe" -!define GAIM_REG_LANG "Installer Language" !define GTK_VERSION "2.6.10" !define GTK_REG_KEY "SOFTWARE\GTK\2.0" @@ -75,6 +74,23 @@ !define DOWNLOADER_URL "http://gaim.sourceforge.net/win32/download_redir.php" ;-------------------------------- +;Version resource +VIProductVersion "${GAIM_PRODUCT_VERSION}" +VIAddVersionKey "ProductName" "Gaim" +VIAddVersionKey "FileVersion" "${GAIM_VERSION}" +VIAddVersionKey "ProductVersion" "${GAIM_VERSION}" +VIAddVersionKey "LegalCopyright" "" +!ifdef WITH_GTK +VIAddVersionKey "FileDescription" "Gaim Installer (w/ GTK+ Installer)" +!else +!ifdef DEBUG +VIAddVersionKey "FileDescription" "Gaim Installer (Debug Version)" +!else +VIAddVersionKey "FileDescription" "Gaim Installer (w/o GTK+ Installer)" +!endif +!endif + +;-------------------------------- ;Modern UI Configuration !define MUI_ICON ".\gtk\pixmaps\gaim-install.ico" @@ -87,6 +103,10 @@ !define MUI_LICENSEPAGE_BUTTON $(GAIM_LICENSE_BUTTON) !define MUI_LICENSEPAGE_TEXT_BOTTOM $(GAIM_LICENSE_BOTTOM_TEXT) + !define MUI_LANGDLL_REGISTRY_ROOT "HKCU" + !define MUI_LANGDLL_REGISTRY_KEY ${GAIM_REG_KEY} + !define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" + !define MUI_COMPONENTSPAGE_SMALLDESC !define MUI_ABORTWARNING @@ -459,9 +479,6 @@ StrCmp $R0 "NONE" done SetOverwrite off - ; Write out installer language - WriteRegStr HKCU "${GAIM_REG_KEY}" "${GAIM_REG_LANG}" "$LANGUAGE" - ; write out uninstaller SetOverwrite on WriteUninstaller "$INSTDIR\${GAIM_UNINST_EXE}" @@ -1184,8 +1201,8 @@ Call un.RunCheck StrCpy $name "Gaim ${GAIM_VERSION}" - ; Get stored language prefrence - ReadRegStr $LANGUAGE HKCU ${GAIM_REG_KEY} "${GAIM_REG_LANG}" + ; Get stored language preference + !insertmacro MUI_UNGETLANGUAGE FunctionEnd This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-09-05 16:14:03
|
Revision: 17169 http://svn.sourceforge.net/gaim/?rev=17169&view=rev Author: datallah Date: 2006-09-05 09:13:57 -0700 (Tue, 05 Sep 2006) Log Message: ----------- Remove VERSION file from svn, it was only needed there for wingaim and was causing problems elsewhere when it was not overwritten. Parse the version number from the configure.ac file for the wingaim build instead. Modified Paths: -------------- trunk/Makefile.am trunk/libgaim/win32/global.mak Removed Paths: ------------- trunk/VERSION Property Changed: ---------------- trunk/ Property changes on: trunk ___________________________________________________________________ Name: svn:ignore - ABOUT-NLS aclocal.m4 autom4te.cache compile confdefs.h config.cache config.guess config.h config.h.in config.h.in~ config.log config.status config.sub configure configure.2.1x depcomp Doxyfile gaim.apspec gaim.desktop gaim.pc gaim.service gaim.spec install-sh intl intltool-extract intltool-extract.in intltool-merge intltool-merge.in intltool-update intltool-update.in libtool ltconfig ltmain.sh Makefile Makefile.in missing mkinstalldirs stamp-h stamp-h1 stamp-h.in *.swp .temp-gettextize win32-install-dir gaim-*.exe + ABOUT-NLS aclocal.m4 autom4te.cache compile confdefs.h config.cache config.guess config.h config.h.in config.h.in~ config.log config.status config.sub configure configure.2.1x depcomp Doxyfile gaim.apspec gaim.desktop gaim.pc gaim.service gaim.spec install-sh intl intltool-extract intltool-extract.in intltool-merge intltool-merge.in intltool-update intltool-update.in libtool ltconfig ltmain.sh Makefile Makefile.in missing mkinstalldirs stamp-h stamp-h1 stamp-h.in *.swp .temp-gettextize win32-install-dir gaim-*.exe VERSION Modified: trunk/Makefile.am =================================================================== --- trunk/Makefile.am 2006-09-05 15:40:24 UTC (rev 17168) +++ trunk/Makefile.am 2006-09-05 16:13:57 UTC (rev 17169) @@ -16,7 +16,6 @@ config.h.mingw \ Makefile.mingw \ README.mingw \ - VERSION \ VERSION.in \ gtk/plugins/win32/transparency/Makefile.mingw \ gtk/plugins/win32/transparency/win2ktrans.c \ Deleted: trunk/VERSION =================================================================== --- trunk/VERSION 2006-09-05 15:40:24 UTC (rev 17168) +++ trunk/VERSION 2006-09-05 16:13:57 UTC (rev 17169) @@ -1 +0,0 @@ -2.0.0dev Modified: trunk/libgaim/win32/global.mak =================================================================== --- trunk/libgaim/win32/global.mak 2006-09-05 15:40:24 UTC (rev 17168) +++ trunk/libgaim/win32/global.mak 2006-09-05 16:13:57 UTC (rev 17169) @@ -50,7 +50,17 @@ GAIM_PORTABLE_EXE := $(GAIM_GTK_TOP)/gaim-portable.exe GCCWARNINGS := -Waggregate-return -Wcast-align -Wdeclaration-after-statement -Werror-implicit-function-declaration -Wextra -Wno-sign-compare -Wno-unused-parameter -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wundef -GAIM_VERSION := $(shell cat $(GAIM_TOP)/VERSION) + +# parse the version number from the configure.ac file if it is newer +#AC_INIT([gaim], [2.0.0dev], [gai...@li...]) +GAIM_VERSION := $(shell \ + if [ ! $(GAIM_TOP)/VERSION -nt $(GAIM_TOP)/configure.ac ]; then \ + awk 'BEGIN {FS="\\] *, *\\["} /^AC_INIT\(.+\)/ {printf("%s",$$2); exit}' \ + $(GAIM_TOP)/configure.ac > $(GAIM_TOP)/VERSION; \ + fi; \ + cat $(GAIM_TOP)/VERSION \ +) + DEFINES += -DVERSION=\"$(GAIM_VERSION)\" \ -DHAVE_CONFIG_H This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-09-06 00:46:07
|
Revision: 17172 http://svn.sourceforge.net/gaim/?rev=17172&view=rev Author: rlaager Date: 2006-09-05 17:46:00 -0700 (Tue, 05 Sep 2006) Log Message: ----------- SF Patch #1547447 from Anders Kaseorg Fixes SF Bug #1547383 "This patch fixes bug 1547383 (Zephyr does not correctly escape @ character), and also makes both zephyr_to_html and html_to_zephyr much more correct and robust" For the record, I have no way of testing this, so I'm following the patches-to-Zephyr-that-compile-are-good approach. Modified Paths: -------------- trunk/COPYRIGHT trunk/libgaim/protocols/zephyr/zephyr.c Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-09-06 00:36:04 UTC (rev 17171) +++ trunk/COPYRIGHT 2006-09-06 00:46:00 UTC (rev 17172) @@ -145,6 +145,7 @@ Hans Petter Jansson Henry Jen Benjamin Kahn +Anders Kaseorg Praveen Karadakal John Kelm Akuke Kok Modified: trunk/libgaim/protocols/zephyr/zephyr.c =================================================================== --- trunk/libgaim/protocols/zephyr/zephyr.c 2006-09-06 00:36:04 UTC (rev 17171) +++ trunk/libgaim/protocols/zephyr/zephyr.c 2006-09-06 00:46:00 UTC (rev 17172) @@ -1,4 +1,4 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * gaim * @@ -117,10 +117,19 @@ /* true for everything but @color, since inside the parens of that one is * the color. */ gboolean has_closer; + /* @i, @b, etc. */ + const char *env; + /* }=1, ]=2, )=4, >=8 */ + int closer_mask; + /* }, ], ), > */ + char *closer; /* </i>, </font>, </b>, etc. */ - char *closing; + const char *closing; /* text including the opening html thingie. */ GString *text; + /* href for links */ + gboolean is_href; + GString *href; struct _zframe *enclosing; }; @@ -351,11 +360,6 @@ } } -/* utility macros that are useful for zephyr_to_html */ - -#define IS_OPENER(c) ((c == '{') || (c == '[') || (c == '(') || (c == '<')) -#define IS_CLOSER(c) ((c == '}') || (c == ']') || (c == ')') || (c == '>')) - /* This parses HTML formatting (put out by one of the gtkimhtml widgets And converts it to zephyr formatting. It currently deals properly with <b>, <br>, <i>, <font face=...>, <font color=...>, @@ -364,146 +368,239 @@ <font size = "1 or 2" -> @small 3 or 4 @medium() 5,6, or 7 @large() - <a href is dealt with by ignoring the description and outputting the link + <a href is dealt with by outputting "description <link>" or just "description" as appropriate */ static char *html_to_zephyr(const char *message) { - int len, cnt, retcount; + zframe *frames, *new_f; char *ret; - len = strlen(message); - if (!len) + if (*message == '\0') return g_strdup(""); - ret = g_new0(char, len * 3); + frames = g_new(zframe, 1); + frames->text = g_string_new(""); + frames->href = NULL; + frames->is_href = FALSE; + frames->enclosing = NULL; + frames->closing = NULL; + frames->env = ""; + frames->has_closer = FALSE; + frames->closer_mask = 15; - bzero(ret, len * 3); - retcount = 0; - cnt = 0; gaim_debug_info("zephyr","html received %s\n",message); - while (cnt <= len) { - if (message[cnt] == '<') { - if (!g_ascii_strncasecmp(message + cnt + 1, "i>", 2)) { - strncpy(ret + retcount, "@i(", 3); - cnt += 3; - retcount += 3; - } else if (!g_ascii_strncasecmp(message + cnt + 1, "b>", 2)) { - strncpy(ret + retcount, "@b(", 3); - cnt += 3; - retcount += 3; - } else if (!g_ascii_strncasecmp(message + cnt + 1, "br>", 3)) { - strncpy(ret + retcount, "\n", 1); - cnt += 4; - retcount += 1; - } else if (!g_ascii_strncasecmp(message + cnt + 1, "a href=\"mailto:", 15)) { - cnt += 16; - while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) { - ret[retcount] = message[cnt]; - retcount++; - cnt++; + while (*message) { + if (frames->closing && !g_ascii_strncasecmp(message, frames->closing, strlen(frames->closing))) { + zframe *popped; + message += strlen(frames->closing); + popped = frames; + frames = frames->enclosing; + if (popped->is_href) { + frames->href = popped->text; + } else { + g_string_append(frames->text, popped->env); + if (popped->has_closer) { + g_string_append_c(frames->text, + (popped->closer_mask & 1) ? '{' : + (popped->closer_mask & 2) ? '[' : + (popped->closer_mask & 4) ? '(' : + '<'); } - if (message[cnt] != '\0') - cnt += 2; - /* ignore descriptive string */ - while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) { - cnt++; + g_string_append(frames->text, popped->text->str); + if (popped->href) + { + int text_len = strlen(popped->text->str), href_len = strlen(popped->href->str); + if (!((text_len == href_len && !strncmp(popped->href->str, popped->text->str, text_len)) || + (7 + text_len == href_len && !strncmp(popped->href->str, "http://", 7) && + !strncmp(popped->href->str + 7, popped->text->str, text_len)) || + (7 + text_len == href_len && !strncmp(popped->href->str, "mailto:", 7) && + !strncmp(popped->href->str + 7, popped->text->str, text_len)))) { + g_string_append(frames->text, " <"); + g_string_append(frames->text, popped->href->str); + if (popped->closer_mask & ~8) { + g_string_append_c(frames->text, '>'); + popped->closer_mask &= ~8; + } else { + g_string_append(frames->text, "@{>}"); + } + } + g_string_free(popped->href, TRUE); } - if (message[cnt] != '\0') - cnt += 4; - } else if (!g_ascii_strncasecmp(message + cnt + 1, "a href=\"", 8)) { - cnt += 9; - while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) { - ret[retcount] = message[cnt]; - retcount++; - cnt++; + if (popped->has_closer) { + g_string_append_c(frames->text, + (popped->closer_mask & 1) ? '}' : + (popped->closer_mask & 2) ? ']' : + (popped->closer_mask & 4) ? ')' : + '>'); } - if (message[cnt] != '\0') - cnt += 2; - /* ignore descriptive string */ - while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) { - cnt++; - } - if (message[cnt] != '\0') - cnt += 4; - } else if (!g_ascii_strncasecmp(message + cnt + 1, "font", 4)) { - cnt += 5; - while ((message[cnt] != '\0') && (message[cnt] != ' ')) - cnt++; - if ((message[cnt] != '\0') && !g_ascii_strncasecmp(message + cnt, "color=\"", 7)) { - cnt += 7; - strncpy(ret + retcount, "@color(", 7); - retcount += 7; - while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) { - ret[retcount] = message[cnt]; - retcount++; - cnt++; + if (!popped->has_closer) + frames->closer_mask = popped->closer_mask; + g_string_free(popped->text, TRUE); + } + g_free(popped); + } else if (*message == '<') { + if (!g_ascii_strncasecmp(message + 1, "i>", 2)) { + new_f = g_new(zframe, 1); + new_f->enclosing = frames; + new_f->text = g_string_new(""); + new_f->href = NULL; + new_f->is_href = FALSE; + new_f->closing = "</i>"; + new_f->env = "@i"; + new_f->has_closer = TRUE; + new_f->closer_mask = 15; + frames = new_f; + message += 3; + } else if (!g_ascii_strncasecmp(message + 1, "b>", 2)) { + new_f = g_new(zframe, 1); + new_f->enclosing = frames; + new_f->text = g_string_new(""); + new_f->href = NULL; + new_f->is_href = FALSE; + new_f->closing = "</b>"; + new_f->env = "@b"; + new_f->has_closer = TRUE; + new_f->closer_mask = 15; + frames = new_f; + message += 3; + } else if (!g_ascii_strncasecmp(message + 1, "br>", 3)) { + g_string_append_c(frames->text, '\n'); + message += 4; + } else if (!g_ascii_strncasecmp(message + 1, "a href=\"", 8)) { + message += 9; + new_f = g_new(zframe, 1); + new_f->enclosing = frames; + new_f->text = g_string_new(""); + new_f->href = NULL; + new_f->is_href = FALSE; + new_f->closing = "</a>"; + new_f->env = ""; + new_f->has_closer = FALSE; + new_f->closer_mask = frames->closer_mask; + frames = new_f; + new_f = g_new(zframe, 1); + new_f->enclosing = frames; + new_f->text = g_string_new(""); + new_f->href = NULL; + new_f->is_href = TRUE; + new_f->closing = "\">"; + new_f->has_closer = FALSE; + new_f->closer_mask = frames->closer_mask; + frames = new_f; + } else if (!g_ascii_strncasecmp(message + 1, "font", 4)) { + new_f = g_new(zframe, 1); + new_f->enclosing = frames; + new_f->text = g_string_new(""); + new_f->href = NULL; + new_f->is_href = FALSE; + new_f->closing = "</font>"; + new_f->has_closer = TRUE; + new_f->closer_mask = 15; + message += 5; + while (*message == ' ') + message++; + if (!g_ascii_strncasecmp(message, "color=\"", 7)) { + message += 7; + new_f->env = "@"; + frames = new_f; + new_f = g_new(zframe, 1); + new_f->enclosing = frames; + new_f->env = "@color"; + new_f->text = g_string_new(""); + new_f->href = NULL; + new_f->is_href = FALSE; + new_f->closing = "\">"; + new_f->has_closer = TRUE; + new_f->closer_mask = 15; + } else if (!g_ascii_strncasecmp(message, "face=\"", 6)) { + message += 6; + new_f->env = "@"; + frames = new_f; + new_f = g_new(zframe, 1); + new_f->enclosing = frames; + new_f->env = "@font"; + new_f->text = g_string_new(""); + new_f->href = NULL; + new_f->is_href = FALSE; + new_f->closing = "\">"; + new_f->has_closer = TRUE; + new_f->closer_mask = 15; + } else if (!g_ascii_strncasecmp(message, "size=\"", 6)) { + message += 6; + if ((*message == '1') || (*message == '2')) { + new_f->env = "@small"; + } else if ((*message == '3') + || (*message == '4')) { + new_f->env = "@medium"; + } else if ((*message == '5') + || (*message == '6') + || (*message == '7')) { + new_f->env = "@large"; + } else { + new_f->env = ""; + new_f->has_closer = FALSE; + new_f->closer_mask = frames->closer_mask; } - ret[retcount] = ')'; - retcount++; - if (message[cnt] != '\0') - cnt += 2; - } else if (!g_ascii_strncasecmp(message + cnt, "face=\"", 6)) { - cnt += 6; - strncpy(ret + retcount, "@font(", 6); - retcount += 6; - while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) { - ret[retcount] = message[cnt]; - retcount++; - cnt++; - } - ret[retcount] = ')'; - retcount++; - if (message[cnt] != '\0') - cnt += 2; - } else if (!g_ascii_strncasecmp(message + cnt, "size=\"", 6)) { - cnt += 6; - if ((message[cnt] == '1') || (message[cnt] == '2')) { - strncpy(ret + retcount, "@small(", 7); - retcount += 7; - } else if ((message[cnt] == '3') - || (message[cnt] == '4')) { - strncpy(ret + retcount, "@medium(", 8); - retcount += 8; - } else if ((message[cnt] == '5') - || (message[cnt] == '6') - || (message[cnt] == '7')) { - strncpy(ret + retcount, "@large(", 7); - retcount += 7; - } - cnt += 3; + message += 3; } else { /* Drop all unrecognized/misparsed font tags */ - while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) { - cnt++; + new_f->env = ""; + new_f->has_closer = FALSE; + new_f->closer_mask = frames->closer_mask; + while (g_ascii_strncasecmp(message, "\">", 2) != 0) { + message++; } - if (message[cnt] != '\0') - cnt += 2; + if (*message != '\0') + message += 2; } - } else if (!g_ascii_strncasecmp(message + cnt + 1, "/i>", 3) - || !g_ascii_strncasecmp(message + cnt + 1, "/b>", 3)) { - cnt += 4; - ret[retcount] = ')'; - retcount++; - } else if (!g_ascii_strncasecmp(message + cnt + 1, "/font>", 6)) { - cnt += 7; - strncpy(ret + retcount, "@font(fixed)", 12); - retcount += 12; + frames = new_f; } else { /* Catch all for all unrecognized/misparsed <foo> tage */ - while ((message[cnt] != '\0') && (message[cnt] != '>')) { - ret[retcount] = message[cnt]; - retcount++; - cnt++; - } + g_string_append_c(frames->text, *message++); } + } else if (*message == '@') { + g_string_append(frames->text, "@@"); + message++; + } else if (*message == '}') { + if (frames->closer_mask & ~1) { + frames->closer_mask &= ~1; + g_string_append_c(frames->text, *message++); + } else { + g_string_append(frames->text, "@[}]"); + message++; + } + } else if (*message == ']') { + if (frames->closer_mask & ~2) { + frames->closer_mask &= ~2; + g_string_append_c(frames->text, *message++); + } else { + g_string_append(frames->text, "@{]}"); + message++; + } + } else if (*message == ')') { + if (frames->closer_mask & ~4) { + frames->closer_mask &= ~4; + g_string_append_c(frames->text, *message++); + } else { + g_string_append(frames->text, "@{)}"); + message++; + } + } else if (!g_ascii_strncasecmp(message, ">", 4)) { + if (frames->closer_mask & ~8) { + frames->closer_mask &= ~8; + g_string_append_c(frames->text, *message++); + } else { + g_string_append(frames->text, "@{>}"); + message += 4; + } } else { - /* Duh */ - ret[retcount] = message[cnt]; - retcount++; - cnt++; + g_string_append_c(frames->text, *message++); } } + ret = frames->text->str; + g_string_free(frames->text, FALSE); + g_free(frames); gaim_debug_info("zephyr","zephyr outputted %s\n",ret); return ret; } @@ -511,9 +608,8 @@ /* this parses zephyr formatting and converts it to html. For example, if * you pass in "@{@color(blue)@i(hello)}" you should get out * "<font color=blue><i>hello</i></font>". */ -static char *zephyr_to_html(char *message) +static char *zephyr_to_html(const char *message) { - int len, cnt; zframe *frames, *curr; char *ret; @@ -522,126 +618,83 @@ frames->enclosing = NULL; frames->closing = ""; frames->has_closer = FALSE; + frames->closer = NULL; - len = strlen(message); - cnt = 0; - while (cnt <= len) { - if (message[cnt] == '@') { - zframe *new_f; - char *buf; + while (*message) { + if (*message == '@' && message[1] == '@') { + g_string_append(frames->text, "@"); + message += 2; + } else if (*message == '@') { int end; - - for (end = 1; (cnt + end) <= len && !IS_OPENER(message[cnt + end]) - && !IS_CLOSER(message[cnt + end]); end++); - buf = g_new0(char, end); - - if (end) { - g_snprintf(buf, end, "%s", message + cnt + 1); - } - if (!g_ascii_strcasecmp(buf, "italic") || !g_ascii_strcasecmp(buf, "i")) { + for (end = 1; message[end] && (isalnum(message[end]) || message[end] == '_'); end++); + if (message[end] && + (message[end] == '{' || message[end] == '[' || message[end] == '(' || + !g_ascii_strncasecmp(message + end, "<", 4))) { + zframe *new_f; + char *buf; + buf = g_new0(char, end); + g_snprintf(buf, end, "%s", message + 1); + message += end; new_f = g_new(zframe, 1); new_f->enclosing = frames; - new_f->text = g_string_new("<i>"); - new_f->closing = "</i>"; new_f->has_closer = TRUE; - frames = new_f; - cnt += end + 1; /* cnt points to char after opener */ - } else if (!g_ascii_strcasecmp(buf, "small")) { - new_f = g_new(zframe, 1); - new_f->enclosing = frames; - new_f->text = g_string_new("<font size=\"1\">"); - new_f->closing = "</font>"; - frames = new_f; - cnt += end + 1; - } else if (!g_ascii_strcasecmp(buf, "medium")) { - new_f = g_new(zframe, 1); - new_f->enclosing = frames; - new_f->text = g_string_new("<font size=\"3\">"); - new_f->closing = "</font>"; - frames = new_f; - cnt += end + 1; - } else if (!g_ascii_strcasecmp(buf, "large")) { - new_f = g_new(zframe, 1); - new_f->enclosing = frames; - new_f->text = g_string_new("<font size=\"7\">"); - new_f->closing = "</font>"; - frames = new_f; - cnt += end + 1; - } else if (!g_ascii_strcasecmp(buf, "bold") - || !g_ascii_strcasecmp(buf, "b")) { - new_f = g_new(zframe, 1); - new_f->enclosing = frames; - new_f->text = g_string_new("<b>"); - new_f->closing = "</b>"; - new_f->has_closer = TRUE; - frames = new_f; - cnt += end + 1; - } else if (!g_ascii_strcasecmp(buf, "font")) { - cnt += end + 1; - new_f = g_new(zframe, 1); - new_f->enclosing = frames; - new_f->text = g_string_new("<font face="); - for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) { - g_string_append_c(new_f->text, message[cnt]); - } - cnt++; /* point to char after closer */ - g_string_append_c(new_f->text, '>'); - new_f->closing = "</font>"; - new_f->has_closer = FALSE; - frames = new_f; - } else if (!g_ascii_strcasecmp(buf, "color")) { - cnt += end + 1; - new_f = g_new(zframe, 1); - new_f->enclosing = frames; - new_f->text = g_string_new("<font color="); - for (; (cnt <= len) && !IS_CLOSER(message[cnt]); cnt++) { - g_string_append_c(new_f->text, message[cnt]); - } - cnt++; /* point to char after closer */ - g_string_append_c(new_f->text, '>'); - new_f->closing = "</font>"; - new_f->has_closer = FALSE; - frames = new_f; - } else if (!g_ascii_strcasecmp(buf, "")) { - new_f = g_new(zframe, 1); - new_f->enclosing = frames; - new_f->text = g_string_new(""); - new_f->closing = ""; - new_f->has_closer = TRUE; - frames = new_f; - cnt += end + 1; /* cnt points to char after opener */ - } else { - if ((cnt + end) > len) { - g_string_append_c(frames->text, '@'); - cnt++; - } else if (IS_CLOSER(message[cnt + end])) { - /* We have @chars..closer . This is - merely a sequence of chars that isn't a formatting tag - */ - int tmp = cnt; - - while (tmp <= cnt + end) { - g_string_append_c(frames->text, message[tmp]); - tmp++; - } - cnt += end + 1; + new_f->closer = (*message == '{' ? "}" : + *message == '[' ? "]" : + *message == '(' ? ")" : + ">"); + message += (*message == '&' ? 4 : 1); + if (!g_ascii_strcasecmp(buf, "italic") || !g_ascii_strcasecmp(buf, "i")) { + new_f->text = g_string_new("<i>"); + new_f->closing = "</i>"; + } else if (!g_ascii_strcasecmp(buf, "small")) { + new_f->text = g_string_new("<font size=\"1\">"); + new_f->closing = "</font>"; + } else if (!g_ascii_strcasecmp(buf, "medium")) { + new_f->text = g_string_new("<font size=\"3\">"); + new_f->closing = "</font>"; + } else if (!g_ascii_strcasecmp(buf, "large")) { + new_f->text = g_string_new("<font size=\"7\">"); + new_f->closing = "</font>"; + } else if (!g_ascii_strcasecmp(buf, "bold") + || !g_ascii_strcasecmp(buf, "b")) { + new_f->text = g_string_new("<b>"); + new_f->closing = "</b>"; + } else if (!g_ascii_strcasecmp(buf, "font")) { + zframe *extra_f; + extra_f = g_new(zframe, 1); + extra_f->enclosing = frames; + new_f->enclosing = extra_f; + extra_f->text = g_string_new(""); + extra_f->has_closer = FALSE; + extra_f->closer = frames->closer; + extra_f->closing = "</font>"; + new_f->text = g_string_new("<font face=\""); + new_f->closing = "\">"; + } else if (!g_ascii_strcasecmp(buf, "color")) { + zframe *extra_f; + extra_f = g_new(zframe, 1); + extra_f->enclosing = frames; + new_f->enclosing = extra_f; + extra_f->text = g_string_new(""); + extra_f->has_closer = FALSE; + extra_f->closer = frames->closer; + extra_f->closing = "</font>"; + new_f->text = g_string_new("<font color=\""); + new_f->closing = "\">"; } else { - /* unrecognized thingie. act like it's not there, but we - * still need to take care of the corresponding closer, - * make a frame that does nothing. */ - new_f = g_new(zframe, 1); - new_f->enclosing = frames; new_f->text = g_string_new(""); new_f->closing = ""; - new_f->has_closer = TRUE; - frames = new_f; - cnt += end + 1; /* cnt points to char after opener */ } + frames = new_f; + } else { + /* Not a formatting tag, add the character as normal. */ + g_string_append_c(frames->text, *message++); } - } else if (IS_CLOSER(message[cnt])) { + } else if (frames->closer && !g_ascii_strncasecmp(message, frames->closer, strlen(frames->closer))) { zframe *popped; gboolean last_had_closer; + message += strlen(frames->closer); if (frames && frames->enclosing) { do { popped = frames; @@ -653,14 +706,13 @@ g_free(popped); } while (frames && frames->enclosing && !last_had_closer); } else { - g_string_append_c(frames->text, message[cnt]); + g_string_append_c(frames->text, *message); } - cnt++; - } else if (message[cnt] == '\n') { + } else if (*message == '\n') { g_string_append(frames->text, "<br>"); - cnt++; + message++; } else { - g_string_append_c(frames->text, message[cnt++]); + g_string_append_c(frames->text, *message++); } } /* go through all the stuff that they didn't close */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-09-06 03:02:12
|
Revision: 17175 http://svn.sourceforge.net/gaim/?rev=17175&view=rev Author: datallah Date: 2006-09-05 20:01:57 -0700 (Tue, 05 Sep 2006) Log Message: ----------- A couple mingw makefile tweaks from Lee Roach and some cleanup from me. Modified Paths: -------------- trunk/Makefile.mingw trunk/gtk/pixmaps/Makefile.mingw trunk/gtk/pixmaps/smileys/default/Makefile.mingw trunk/gtk/pixmaps/smileys/none/Makefile.mingw trunk/gtk/pixmaps/status/default/Makefile.mingw trunk/gtk/sounds/Makefile.mingw trunk/libgaim/win32/global.mak trunk/libgaim/win32/targets.mak Modified: trunk/Makefile.mingw =================================================================== --- trunk/Makefile.mingw 2006-09-06 02:33:25 UTC (rev 17174) +++ trunk/Makefile.mingw 2006-09-06 03:01:57 UTC (rev 17175) @@ -59,7 +59,6 @@ $(MAKE) -C $(GAIM_LIB_TOP) -f $(GAIM_WIN32_MAKEFILE) clean rm -rf $(GAIM_CONFIG_H) rm -rf gaim*.exe - rm -rf $(GAIM_INSTALL_PERLMOD_DIR) $(GAIM_INSTALL_PIXMAPS_DIR) $(GAIM_INSTALL_PLUGINS_DIR) - rm -rf $(GAIM_INSTALL_PO_DIR) $(GAIM_INSTALL_SOUNDS_DIR) $(GAIM_INSTALL_DIR) + rm -rf $(GAIM_INSTALL_PERLMOD_DIR) $(GAIM_INSTALL_PLUGINS_DIR) $(GAIM_INSTALL_PO_DIR) $(GAIM_INSTALL_DIR) include $(GAIM_COMMON_TARGETS) Modified: trunk/gtk/pixmaps/Makefile.mingw =================================================================== --- trunk/gtk/pixmaps/Makefile.mingw 2006-09-06 02:33:25 UTC (rev 17174) +++ trunk/gtk/pixmaps/Makefile.mingw 2006-09-06 03:01:57 UTC (rev 17175) @@ -7,13 +7,13 @@ GAIM_TOP := ../.. include $(GAIM_TOP)/libgaim/win32/global.mak -datadir = $(GAIM_INSTALL_DIR) +datadir := $(GAIM_INSTALL_DIR) include ./Makefile.am install: if test '$(SUBDIRS)'; then \ list='$(SUBDIRS)'; for subdir in $$list; do \ - $(MAKE) -C $$subdir -f Makefile.mingw install; \ + $(MAKE) -C $$subdir -f $(GAIM_WIN32_MAKEFILE) install; \ done; \ fi; if test '$(gaimbuttonpix_DATA)'; then \ Modified: trunk/gtk/pixmaps/smileys/default/Makefile.mingw =================================================================== --- trunk/gtk/pixmaps/smileys/default/Makefile.mingw 2006-09-06 02:33:25 UTC (rev 17174) +++ trunk/gtk/pixmaps/smileys/default/Makefile.mingw 2006-09-06 03:01:57 UTC (rev 17175) @@ -11,11 +11,6 @@ include ./Makefile.am install: - if test '$(SUBDIRS)'; then \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - $(MAKE) -C $$subdir -f Makefile.mingw install; \ - done; \ - fi; if test '$(gaimsmileypix_DATA)'; then \ mkdir -p $(gaimsmileypixdir); \ cp $(gaimsmileypix_DATA) $(gaimsmileypixdir); \ Modified: trunk/gtk/pixmaps/smileys/none/Makefile.mingw =================================================================== --- trunk/gtk/pixmaps/smileys/none/Makefile.mingw 2006-09-06 02:33:25 UTC (rev 17174) +++ trunk/gtk/pixmaps/smileys/none/Makefile.mingw 2006-09-06 03:01:57 UTC (rev 17175) @@ -11,11 +11,6 @@ include ./Makefile.am install: - if test '$(SUBDIRS)'; then \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - $(MAKE) -C $$subdir -f Makefile.mingw install; \ - done; \ - fi; if test '$(gaimsmileypix_DATA)'; then \ mkdir -p $(gaimsmileypixdir); \ cp $(gaimsmileypix_DATA) $(gaimsmileypixdir); \ Modified: trunk/gtk/pixmaps/status/default/Makefile.mingw =================================================================== --- trunk/gtk/pixmaps/status/default/Makefile.mingw 2006-09-06 02:33:25 UTC (rev 17174) +++ trunk/gtk/pixmaps/status/default/Makefile.mingw 2006-09-06 03:01:57 UTC (rev 17175) @@ -11,11 +11,6 @@ include ./Makefile.am install: - if test '$(SUBDIRS)'; then \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - $(MAKE) -C $$subdir -f Makefile.mingw install; \ - done; \ - fi; if test '$(gaimstatuspix_DATA)'; then \ mkdir -p $(gaimstatuspixdir); \ cp $(gaimstatuspix_DATA) $(gaimstatuspixdir); \ Modified: trunk/gtk/sounds/Makefile.mingw =================================================================== --- trunk/gtk/sounds/Makefile.mingw 2006-09-06 02:33:25 UTC (rev 17174) +++ trunk/gtk/sounds/Makefile.mingw 2006-09-06 03:01:57 UTC (rev 17175) @@ -1,14 +1,18 @@ # # Makefile.mingw # -# Description: Makefile for win32 (mingw) version of Gaim +# Description: Makefile for win32 (mingw) version of Gaim sounds # GAIM_TOP := ../.. include $(GAIM_TOP)/libgaim/win32/global.mak -include $(GAIM_GTK_SOUNDS_TOP)/Makefile.am -install: $(GAIM_INSTALL_SOUNDS_DIR) - cp $(EXTRA_DIST) $(GAIM_INSTALL_SOUNDS_DIR) +datadir := $(GAIM_INSTALL_DIR) +include ./Makefile.am -include $(GAIM_COMMON_TARGETS) +install: + if test '$(sounds_DATA)'; then \ + mkdir -p $(soundsdir); \ + cp $(sounds_DATA) $(soundsdir); \ + fi; + Modified: trunk/libgaim/win32/global.mak =================================================================== --- trunk/libgaim/win32/global.mak 2006-09-06 02:33:25 UTC (rev 17174) +++ trunk/libgaim/win32/global.mak 2006-09-06 03:01:57 UTC (rev 17175) @@ -23,10 +23,8 @@ # Where we installing this stuff to? GAIM_INSTALL_DIR := $(GAIM_TOP)/win32-install-dir GAIM_INSTALL_PERLMOD_DIR := $(GAIM_INSTALL_DIR)/perlmod -GAIM_INSTALL_PIXMAPS_DIR := $(GAIM_INSTALL_DIR)/pixmaps GAIM_INSTALL_PLUGINS_DIR := $(GAIM_INSTALL_DIR)/plugins GAIM_INSTALL_PO_DIR := $(GAIM_INSTALL_DIR)/locale -GAIM_INSTALL_SOUNDS_DIR := $(GAIM_INSTALL_DIR)/sounds # Important (enough) locations in our source code GAIM_LIB_TOP := $(GAIM_TOP)/libgaim Modified: trunk/libgaim/win32/targets.mak =================================================================== --- trunk/libgaim/win32/targets.mak 2006-09-06 02:33:25 UTC (rev 17174) +++ trunk/libgaim/win32/targets.mak 2006-09-06 03:01:57 UTC (rev 17175) @@ -36,11 +36,6 @@ $(GAIM_INSTALL_PLUGINS_DIR): mkdir -p $(GAIM_INSTALL_PLUGINS_DIR) -$(GAIM_INSTALL_PIXMAPS_DIR): - mkdir -p $(GAIM_INSTALL_PIXMAPS_DIR) - $(GAIM_INSTALL_PO_DIR): mkdir -p $(GAIM_INSTALL_PO_DIR) -$(GAIM_INSTALL_SOUNDS_DIR): - mkdir -p $(GAIM_INSTALL_SOUNDS_DIR) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-09-07 17:53:46
|
Revision: 17183 http://svn.sourceforge.net/gaim/?rev=17183&view=rev Author: datallah Date: 2006-09-07 10:53:25 -0700 (Thu, 07 Sep 2006) Log Message: ----------- The gaim executable and the gtkgaim and libgaim dlls now contain version information. Modified Paths: -------------- trunk/gtk/Makefile.am trunk/gtk/Makefile.mingw trunk/libgaim/Makefile.am trunk/libgaim/Makefile.mingw trunk/libgaim/win32/rules.mak Added Paths: ----------- trunk/gtk/win32/gaimrc.rc.in trunk/gtk/win32/gtkgaimrc.rc.in trunk/libgaim/win32/libgaimrc.rc.in Removed Paths: ------------- trunk/gtk/win32/gaimrc.rc Property Changed: ---------------- trunk/gtk/win32/ trunk/libgaim/win32/ Modified: trunk/gtk/Makefile.am =================================================================== --- trunk/gtk/Makefile.am 2006-09-07 17:32:25 UTC (rev 17182) +++ trunk/gtk/Makefile.am 2006-09-07 17:53:25 UTC (rev 17183) @@ -8,7 +8,8 @@ win32/IdleTracker/Makefile.mingw \ win32/IdleTracker/idletrack.c \ win32/IdleTracker/idletrack.h \ - win32/gaimrc.rc \ + win32/gaimrc.rc.in \ + win32/gtkgaimrc.rc.in \ win32/gtkwin32dep.c \ win32/gtkwin32dep.h \ win32/resource.h \ Modified: trunk/gtk/Makefile.mingw =================================================================== --- trunk/gtk/Makefile.mingw 2006-09-07 17:32:25 UTC (rev 17182) +++ trunk/gtk/Makefile.mingw 2006-09-07 17:53:25 UTC (rev 17183) @@ -12,13 +12,10 @@ ## ## VARIABLE DEFINITIONS ## -EXE_TARGET = gaim -GTKGAIM_TARGET = gtkgaim +EXE_TARGET := gaim +GTKGAIM_TARGET := gtkgaim +EXE_NAME := $(EXE_TARGET).exe -ifeq ($(MAKECMDGOALS), $(EXE_TARGET)-portable.exe) -DEFINES := $(DEFINES) -DPORTABLE -endif - WINAPP := -mwindows # The Debug version of gaim is a console app, always having a console CONSOLEAPP := -mconsole @@ -95,10 +92,12 @@ win32/untar.c \ win32/wspell.c -RC_SRC = win32/gaimrc.rc +GTKGAIM_RC_SRC = win32/gtkgaimrc.rc +GTKGAIM_OBJECTS = $(GTKGAIM_C_SRC:%.c=%.o) $(GTKGAIM_RC_SRC:%.rc=%.o) + +EXE_RC_SRC = win32/gaimrc.rc EXE_C_SRC = win32/win_gaim.c -GTKGAIM_OBJECTS = $(GTKGAIM_C_SRC:%.c=%.o) -EXE_OBJECTS = $(EXE_C_SRC:%.c=%.o) $(RC_SRC:%.rc=%.o) +EXE_OBJECTS = $(EXE_C_SRC:%.c=%.o) $(EXE_RC_SRC:%.rc=%.o) ## ## LIBRARIES @@ -129,8 +128,13 @@ ## ## TARGET DEFINITIONS ## -.PHONY: all clean +.PHONY: all clean clean_exe +./win32/gaimrc.rc: ./win32/gaimrc.rc.in $(GAIM_TOP)/VERSION + sed -e 's/@GAIM_VERSION@/$(GAIM_VERSION)/g' \ + -e 's/@ORIGINAL_FILENAME@/$(EXE_NAME)/' \ + $@.in > $@ + all: $(EXE_TARGET).exe $(GTKGAIM_TARGET).dll $(MAKE) -C $(GAIM_GTK_PLUGINS_TOP) -f $(GAIM_WIN32_MAKEFILE) @@ -142,17 +146,23 @@ cp $(EXE_TARGET).exe $(GTKGAIM_TARGET).dll $(GAIM_INSTALL_DIR) cp $(NEEDED_DLLS) $(GAIM_INSTALL_DIR) -$(GTKGAIM_OBJECTS): $(GAIM_CONFIG_H) +./win32/gtkgaimrc.rc: ./win32/gtkgaimrc.rc.in $(GAIM_TOP)/VERSION + sed -e 's/@GAIM_VERSION@/$(GAIM_VERSION)/g' \ + $@.in > $@ +$(EXE_OBJECTS) $(GTKGAIM_OBJECTS): $(GAIM_CONFIG_H) + $(GTKGAIM_TARGET).dll $(GTKGAIM_TARGET).dll.a: $(GAIM_LIBGAIM_DLL).a $(GAIM_IDLETRACK_DLL).a $(GTKGAIM_OBJECTS) $(CC) -shared $(GTKGAIM_OBJECTS) $(LIB_PATHS) $(GTKGAIM_LIBS) $(DLL_LD_FLAGS) -Wl,--out-implib,$(GTKGAIM_TARGET).dll.a -o $(GTKGAIM_TARGET).dll $(EXE_TARGET).exe: $(GAIM_CONFIG_H) $(GAIM_GTKGAIM_DLL).a $(GAIM_IDLETRACK_DLL).a $(EXE_OBJECTS) - $(CC) $(LDFLAGS) $(EXE_OBJECTS) $(LIB_PATHS) $(EXE_LIBS) -o $(EXE_TARGET).exe + $(CC) $(LDFLAGS) $(EXE_OBJECTS) -o $(EXE_TARGET).exe +$(EXE_TARGET)-portable.exe: DEFINES += -DPORTABLE +$(EXE_TARGET)-portable.exe: EXE_NAME := $(EXE_TARGET)-portable.exe $(EXE_TARGET)-portable.exe: clean_exe $(GAIM_CONFIG_H) $(GAIM_GTKGAIM_DLL).a $(GAIM_IDLETRACK_DLL).a $(EXE_OBJECTS) - $(CC) $(LDFLAGS) $(EXE_OBJECTS) $(LIB_PATHS) $(EXE_LIBS) -o $(EXE_TARGET)-portable.exe - rm win_gaim.o + $(CC) $(LDFLAGS) $(EXE_OBJECTS) -o $(EXE_TARGET)-portable.exe + $(MAKE) -f $(GAIM_WIN32_MAKEFILE) clean_exe ## ## CLEAN RULES @@ -160,13 +170,11 @@ clean: $(MAKE) -C $(GAIM_GTK_IDLETRACK_TOP) -f $(GAIM_WIN32_MAKEFILE) clean $(MAKE) -C $(GAIM_GTK_PLUGINS_TOP) -f $(GAIM_WIN32_MAKEFILE) clean - rm -f $(GTKGAIM_OBJECTS) $(EXE_OBJECTS) - rm -f $(GTKGAIM_TARGET).dll - rm -f $(GTKGAIM_TARGET).dll.a - rm -f $(EXE_TARGET).exe - rm -f $(EXE_TARGET)-portable.exe + rm -f $(GTKGAIM_OBJECTS) $(GTKGAIM_RC_SRC) $(EXE_OBJECTS) $(EXE_RC_SRC) + rm -f $(GTKGAIM_TARGET).dll $(GTKGAIM_TARGET).dll.a + rm -f $(EXE_TARGET).exe $(EXE_TARGET)-portable.exe clean_exe: - rm -f win_gaim.o + rm -f $(EXE_OBJECTS) $(EXE_RC_SRC) include $(GAIM_COMMON_TARGETS) Property changes on: trunk/gtk/win32 ___________________________________________________________________ Name: svn:ignore + gtkgaimrc.rc gaimrc.rc *.o Deleted: trunk/gtk/win32/gaimrc.rc =================================================================== --- trunk/gtk/win32/gaimrc.rc 2006-09-07 17:32:25 UTC (rev 17182) +++ trunk/gtk/win32/gaimrc.rc 2006-09-07 17:53:25 UTC (rev 17183) @@ -1,16 +0,0 @@ -#include "resource.h" - -#define PIXMAPDIR "pixmaps/" - -GAIM_ICON ICON PIXMAPDIR "gaim.ico" -GAIM_TRAY_ICON ICON PIXMAPDIR "gaim_16.ico" -GAIM_OFFLINE_TRAY_ICON ICON PIXMAPDIR "gaim_offline_16.ico" -GAIM_AWAY_TRAY_ICON ICON PIXMAPDIR "gaim_away_16.ico" -GAIM_PEND_TRAY_ICON ICON PIXMAPDIR "gaim_msgunread_16.ico" -GAIM_AWAYPEND_TRAY_ICON ICON PIXMAPDIR "gaim_msgpend_16.ico" -GAIM_BLANK_TRAY_ICON ICON PIXMAPDIR "gaim_blank_4bit_16.ico" -GAIM_TRAY_ICON_4BIT ICON PIXMAPDIR "gaim_4bit_16.ico" -GAIM_OFFLINE_TRAY_ICON_4BIT ICON PIXMAPDIR "gaim_offline_4bit_16.ico" -GAIM_AWAY_TRAY_ICON_4BIT ICON PIXMAPDIR "gaim_away_4bit_16.ico" -GAIM_PEND_TRAY_ICON_4BIT ICON PIXMAPDIR "gaim_msgunread_4bit_16.ico" -GAIM_AWAYPEND_TRAY_ICON_4BIT ICON PIXMAPDIR "gaim_msgpend_4bit_16.ico" Copied: trunk/gtk/win32/gaimrc.rc.in (from rev 17176, trunk/gtk/win32/gaimrc.rc) =================================================================== --- trunk/gtk/win32/gaimrc.rc.in (rev 0) +++ trunk/gtk/win32/gaimrc.rc.in 2006-09-07 17:53:25 UTC (rev 17183) @@ -0,0 +1,47 @@ +#include <winver.h> +#include "resource.h" +#include "version.h" + +#define PIXMAPDIR "pixmaps/" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION GAIM_MAJOR_VERSION,GAIM_MINOR_VERSION,GAIM_MICRO_VERSION,0 + PRODUCTVERSION GAIM_MAJOR_VERSION,GAIM_MINOR_VERSION,GAIM_MICRO_VERSION,0 + FILEFLAGSMASK 0 + FILEFLAGS 0 + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE VFT2_UNKNOWN + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "The Gaim developer community" + VALUE "FileDescription", "Gaim Executable" + VALUE "FileVersion", "@GAIM_VERSION@" + VALUE "InternalName", "gaim" + VALUE "LegalCopyright", "Copyright (C) 1998-2006 The Gaim developer community (See the COPYRIGHT file in the source distribution)." + VALUE "OriginalFilename", "@ORIGINAL_FILENAME@" + VALUE "ProductName", "Gaim" + VALUE "ProductVersion", "@GAIM_VERSION@" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END + END + +GAIM_ICON ICON PIXMAPDIR "gaim.ico" +GAIM_TRAY_ICON ICON PIXMAPDIR "gaim_16.ico" +GAIM_OFFLINE_TRAY_ICON ICON PIXMAPDIR "gaim_offline_16.ico" +GAIM_AWAY_TRAY_ICON ICON PIXMAPDIR "gaim_away_16.ico" +GAIM_PEND_TRAY_ICON ICON PIXMAPDIR "gaim_msgunread_16.ico" +GAIM_AWAYPEND_TRAY_ICON ICON PIXMAPDIR "gaim_msgpend_16.ico" +GAIM_BLANK_TRAY_ICON ICON PIXMAPDIR "gaim_blank_4bit_16.ico" +GAIM_TRAY_ICON_4BIT ICON PIXMAPDIR "gaim_4bit_16.ico" +GAIM_OFFLINE_TRAY_ICON_4BIT ICON PIXMAPDIR "gaim_offline_4bit_16.ico" +GAIM_AWAY_TRAY_ICON_4BIT ICON PIXMAPDIR "gaim_away_4bit_16.ico" +GAIM_PEND_TRAY_ICON_4BIT ICON PIXMAPDIR "gaim_msgunread_4bit_16.ico" +GAIM_AWAYPEND_TRAY_ICON_4BIT ICON PIXMAPDIR "gaim_msgpend_4bit_16.ico" Property changes on: trunk/gtk/win32/gaimrc.rc.in ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Author Date Id Revision Name: svn:eol-style + native Added: trunk/gtk/win32/gtkgaimrc.rc.in =================================================================== --- trunk/gtk/win32/gtkgaimrc.rc.in (rev 0) +++ trunk/gtk/win32/gtkgaimrc.rc.in 2006-09-07 17:53:25 UTC (rev 17183) @@ -0,0 +1,32 @@ +#include <winver.h> +#include "version.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION GAIM_MAJOR_VERSION,GAIM_MINOR_VERSION,GAIM_MICRO_VERSION,0 + PRODUCTVERSION GAIM_MAJOR_VERSION,GAIM_MINOR_VERSION,GAIM_MICRO_VERSION,0 + FILEFLAGSMASK 0 + FILEFLAGS 0 + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE VFT2_UNKNOWN + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "The Gaim developer community" + VALUE "FileDescription", "GTK+ Gaim Library" + VALUE "FileVersion", "@GAIM_VERSION@" + VALUE "InternalName", "gtkgaim" + VALUE "LegalCopyright", "Copyright (C) 1998-2006 The Gaim developer community (See the COPYRIGHT file in the source distribution)." + VALUE "OriginalFilename", "gtkgaim.dll" + VALUE "ProductName", "Gaim" + VALUE "ProductVersion", "@GAIM_VERSION@" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END + END + Property changes on: trunk/gtk/win32/gtkgaimrc.rc.in ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Modified: trunk/libgaim/Makefile.am =================================================================== --- trunk/libgaim/Makefile.am 2006-09-07 17:32:25 UTC (rev 17182) +++ trunk/libgaim/Makefile.am 2006-09-07 17:53:25 UTC (rev 17183) @@ -10,6 +10,9 @@ win32/libc_interface.c \ win32/libc_interface.h \ win32/libc_internal.h \ + win32/libgaimrc.rc.in \ + win32/rules.mak \ + win32/targets.mak \ win32/wgaimerror.h \ win32/win32dep.c \ win32/win32dep.h Modified: trunk/libgaim/Makefile.mingw =================================================================== --- trunk/libgaim/Makefile.mingw 2006-09-07 17:32:25 UTC (rev 17182) +++ trunk/libgaim/Makefile.mingw 2006-09-07 17:53:25 UTC (rev 17183) @@ -76,8 +76,10 @@ win32/libc_interface.c \ win32/win32dep.c -OBJECTS = $(C_SRC:%.c=%.o) +RC_SRC = win32/libgaimrc.rc +OBJECTS = $(C_SRC:%.c=%.o) $(RC_SRC:%.rc=%.o) + ## ## LIBRARIES ## @@ -108,6 +110,10 @@ cp $(TARGET).dll $(GAIM_INSTALL_DIR) cp $(NEEDED_DLLS) $(GAIM_INSTALL_DIR) +./win32/libgaimrc.rc: ./win32/libgaimrc.rc.in $(GAIM_TOP)/VERSION + sed -e 's/@GAIM_VERSION@/$(GAIM_VERSION)/g' \ + $@.in > $@ + $(OBJECTS): $(GAIM_CONFIG_H) $(TARGET).dll $(TARGET).dll.a: $(OBJECTS) @@ -117,9 +123,8 @@ ## CLEAN RULES ## clean: - rm -rf $(OBJECTS) - rm -rf $(TARGET).dll - rm -rf $(TARGET).dll.a + rm -f $(OBJECTS) $(RC_SRC) + rm -f $(TARGET).dll $(TARGET).dll.a $(MAKE) -C $(GAIM_PROTOS_TOP) -f $(GAIM_WIN32_MAKEFILE) clean $(MAKE) -C $(GAIM_LIB_PLUGINS_TOP) -f $(GAIM_WIN32_MAKEFILE) clean Property changes on: trunk/libgaim/win32 ___________________________________________________________________ Name: svn:ignore + *.o libgaimrc.rc Added: trunk/libgaim/win32/libgaimrc.rc.in =================================================================== --- trunk/libgaim/win32/libgaimrc.rc.in (rev 0) +++ trunk/libgaim/win32/libgaimrc.rc.in 2006-09-07 17:53:25 UTC (rev 17183) @@ -0,0 +1,32 @@ +#include <winver.h> +#include "version.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION GAIM_MAJOR_VERSION,GAIM_MINOR_VERSION,GAIM_MICRO_VERSION,0 + PRODUCTVERSION GAIM_MAJOR_VERSION,GAIM_MINOR_VERSION,GAIM_MICRO_VERSION,0 + FILEFLAGSMASK 0 + FILEFLAGS 0 + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE VFT2_UNKNOWN + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "The Gaim developer community" + VALUE "FileDescription", "Libgaim Library" + VALUE "FileVersion", "@GAIM_VERSION@" + VALUE "InternalName", "libgaim" + VALUE "LegalCopyright", "Copyright (C) 1998-2006 The Gaim developer community (See the COPYRIGHT file in the source distribution)." + VALUE "OriginalFilename", "libgaim.dll" + VALUE "ProductName", "Gaim" + VALUE "ProductVersion", "@GAIM_VERSION@" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END + END + Property changes on: trunk/libgaim/win32/libgaimrc.rc.in ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Modified: trunk/libgaim/win32/rules.mak =================================================================== --- trunk/libgaim/win32/rules.mak 2006-09-07 17:32:25 UTC (rev 17182) +++ trunk/libgaim/win32/rules.mak 2006-09-07 17:53:25 UTC (rev 17183) @@ -7,4 +7,4 @@ $(PERL) $(EXTUTILS)/xsubpp -typemap $(EXTUTILS)/typemap -typemap $(GAIM_LIB_PERL_TOP)/common/typemap $< > $@ %.o: %.rc - $(WINDRES) -i $< -o $@ + $(WINDRES) -I$(GAIM_LIB_TOP) -i $< -o $@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-09-09 02:19:29
|
Revision: 17195 http://svn.sourceforge.net/gaim/?rev=17195&view=rev Author: sadrul Date: 2006-09-08 19:19:16 -0700 (Fri, 08 Sep 2006) Log Message: ----------- Build libgnt with ncurses if ncursesw is not found. I uninstalled ncursesw and it's still working for me .. of course, with no wide-character support. Improve the mouse support a bit. Modified Paths: -------------- trunk/configure.ac trunk/console/gntblist.c trunk/console/libgnt/configure.ac trunk/console/libgnt/gntentry.c trunk/console/libgnt/gntmain.c trunk/console/libgnt/gntutils.c trunk/console/libgnt/gntwidget.h trunk/console/libgnt/gntwm.h trunk/console/plugins/Makefile.am Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-09-08 22:47:36 UTC (rev 17194) +++ trunk/configure.ac 2006-09-09 02:19:16 UTC (rev 17195) @@ -353,48 +353,51 @@ AC_CHECK_LIB(ncursesw, initscr, [GNT_LIBS="-lncursesw"], [enable_consoleui=no]) AC_CHECK_LIB(panelw, update_panels, [GNT_LIBS="$GNT_LIBS -lpanelw"], [enable_consoleui=no]) - LIBS_save="$LIBS" - LIBS="$LIBS $GNT_LIBS" + if test "x$enable_consoleui" = "xyes"; then + dnl # Some distros put the headers in ncursesw/, some don't + found_ncurses_h=no + for f in /usr/include/ncursesw/ncurses.h /usr/include/ncurses.h + do + AC_CHECK_HEADER($f,[ + AC_MSG_CHECKING([if $f supports wide characters]) + AC_TRY_COMPILE([ + #define _XOPEN_SOURCE_EXTENDED + #include <$f> + ], [ + #ifndef get_wch + # error get_wch not found! + #endif + ], [ + dir=`dirname $f` + if test x"$dir" != x"." ; then + GNT_CFLAGS="-I$dir/" + else + GNT_CFLAGS="" + fi - dnl # Some distros put the headers in ncursesw/, some don't - found_ncurses_h=no - for f in /usr/include/ncursesw/ncurses.h /usr/include/ncurses.h - do - AC_CHECK_HEADER($f,[ - AC_MSG_CHECKING([if $f supports wide characters]) - AC_TRY_COMPILE([ - #define _XOPEN_SOURCE_EXTENDED - #include <$f> - ], [ - #ifndef get_wch - # error get_wch not found! - #endif - ], [ - dir=`dirname $f` - if test x"$dir" != x"." ; then - GNT_CFLAGS="-I$dir/" - else - GNT_CFLAGS="" - fi - - found_ncurses_h=yes - AC_MSG_RESULT([yes]) - break - ], [ - AC_MSG_RESULT([no]) + found_ncurses_h=yes + AC_MSG_RESULT([yes]) + break + ], [ + AC_MSG_RESULT([no]) + ]) ]) - ]) - done + done - LIBS="$LIBS_save" - - if test x"$found_ncurses_h" = x"no" ; then - GNT_LIBS="" - GNT_CFLAGS="" - enable_consoleui=no - AC_MSG_RESULT([no]) + if test x"$found_ncurses_h" = x"no" ; then + GNT_LIBS="" + GNT_CFLAGS="" + enable_consoleui=no + AC_MSG_RESULT([no]) + else + AC_MSG_RESULT([yes]) + fi else - AC_MSG_RESULT([yes]) + # ncursesw was not found. Look for plain old ncurses + enable_consoleui=yes + AC_CHECK_LIB(ncurses, initscr, [GNT_LIBS="-lncurses"], [enable_consoleui=no]) + AC_CHECK_LIB(panel, update_panels, [GNT_LIBS="$GNT_LIBS -lpanel"], [enable_consoleui=no]) + AC_DEFINE(NO_WIDECHAR, 1, [Define to 1 if you don't have wide-character support.]) fi PKG_CHECK_MODULES(X11, x11, @@ -407,7 +410,7 @@ AC_SUBST(GNT_CFLAGS) AM_CONDITIONAL(ENABLE_GNT, test "x$enable_consoleui" = "xyes") -AC_CHECK_FUNC(wcwidth, [AC_DEFINE([HAVE_WCWIDTH], [1], [Define to 1 if you have wcwidth function.])]) +#AC_CHECK_FUNC(wcwidth, [AC_DEFINE([HAVE_WCWIDTH], [1], [Define to 1 if you have wcwidth function.])]) dnl ####################################################################### dnl # Check for LibXML2 (required) Modified: trunk/console/gntblist.c =================================================================== --- trunk/console/gntblist.c 2006-09-08 22:47:36 UTC (rev 17194) +++ trunk/console/gntblist.c 2006-09-09 02:19:16 UTC (rev 17195) @@ -1160,6 +1160,8 @@ static void selection_changed(GntWidget *widget, gpointer old, gpointer current, GGBlist *ggblist) { + if (ggblist->context) + remove_context_menu(ggblist); draw_tooltip(ggblist); } @@ -1568,6 +1570,15 @@ return ret; } +static gboolean +blist_clicked(GntTree *tree, GntMouseEvent event, int x, int y, gpointer ggblist) +{ + if (event == GNT_RIGHT_MOUSE_DOWN) { + draw_context_menu(ggblist); + } + return FALSE; +} + void gg_blist_show() { if (ggblist) @@ -1626,6 +1637,7 @@ g_signal_connect(G_OBJECT(ggblist->tree), "selection_changed", G_CALLBACK(selection_changed), ggblist); g_signal_connect(G_OBJECT(ggblist->tree), "key_pressed", G_CALLBACK(key_pressed), ggblist); + g_signal_connect_after(G_OBJECT(ggblist->tree), "clicked", G_CALLBACK(blist_clicked), ggblist); g_signal_connect(G_OBJECT(ggblist->tree), "activate", G_CALLBACK(selection_activate), ggblist); g_signal_connect_data(G_OBJECT(ggblist->tree), "gained-focus", G_CALLBACK(draw_tooltip), ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED); Modified: trunk/console/libgnt/configure.ac =================================================================== --- trunk/console/libgnt/configure.ac 2006-09-08 22:47:36 UTC (rev 17194) +++ trunk/console/libgnt/configure.ac 2006-09-09 02:19:16 UTC (rev 17195) @@ -182,7 +182,7 @@ PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.0.0 gobject-2.0 gmodule-2.0],, [ AC_MSG_ERROR([ -*** GLib 2.0 is required to build Gaim; please make sure you have the GLib +*** GLib 2.0 is required to build LibGNT; please make sure you have the GLib *** development headers installed. The latest version of GLib is *** always available at http://www.gtk.org/.]) ]) @@ -201,9 +201,55 @@ #AC_CHECK_FUNC(wcwidth, [AC_DEFINE([HAVE_WCWIDTH], [1], [Define to 1 if you have wcwidth function.])]) #AC_VAR_TIMEZONE_EXTERNALS -AC_CHECK_LIB(ncursesw, initscr, , [AC_MSG_ERROR([ -*** You need ncursesw. ])]) +GNT_CFLAGS= +GNT_LIBS= +AC_CHECK_LIB(ncursesw, initscr, [GNT_LIBS="-lncursesw"], [enable_gnt=no]) +AC_CHECK_LIB(panelw, update_panels, [GNT_LIBS="$GNT_LIBS -lpanelw"], [enable_gnt=no]) +# If ncursesw is not found, look for plain old ncurses +if test "x$enable_gnt" = "xno"; then + AC_CHECK_LIB(ncurses, initscr, [[GNT_LIBS="-lncurses"] [enable_gnt=yes]], [enable_gnt=no]) + AC_CHECK_LIB(panel, update_panels, [[GNT_LIBS="$GNT_LIBS -lpanel"] [enable_gnt=yes]], [enable_gnt=no]) + AC_DEFINE(NO_WIDECHAR, [1], [Define to 1 if you do not have ncursesw.]) +else + dnl # Some distros put the headers in ncursesw/, some don't + found_ncurses_h=no + for f in /usr/include/ncursesw/ncurses.h /usr/include/ncurses.h + do + AC_CHECK_HEADER($f,[ + AC_MSG_CHECKING([if $f supports wide characters]) + AC_TRY_COMPILE([ + #define _XOPEN_SOURCE_EXTENDED + #include <$f> + ], [ + #ifndef get_wch + # error get_wch not found! + #endif + ], [ + dir=`dirname $f` + if test x"$dir" != x"." ; then + GNT_CFLAGS="-I$dir/" + else + GNT_CFLAGS="" + fi + + found_ncurses_h=yes + AC_MSG_RESULT([yes]) + break + ], [ + AC_MSG_RESULT([no]) + ]) + ]) + done +fi +AC_SUBST(GNT_CFLAGS) +AC_SUBST(GNT_LIBS) + +if test "x$enable_gnt" = "xno"; then + AC_MSG_ERROR([ +*** You need ncursesw or ncurses.]) +fi + AC_OUTPUT([Makefile gnt.pc wms/Makefile Modified: trunk/console/libgnt/gntentry.c =================================================================== --- trunk/console/libgnt/gntentry.c 2006-09-08 22:47:36 UTC (rev 17194) +++ trunk/console/libgnt/gntentry.c 2006-09-09 02:19:16 UTC (rev 17195) @@ -64,6 +64,7 @@ entry->ddown = gnt_tree_new(); gnt_tree_set_compare_func(GNT_TREE(entry->ddown), (GCompareFunc)g_utf8_collate); gnt_box_add_widget(GNT_BOX(box), entry->ddown); + /* XXX: Connect to the "activate" signal for the dropdown tree */ GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_TRANSIENT); Modified: trunk/console/libgnt/gntmain.c =================================================================== --- trunk/console/libgnt/gntmain.c 2006-09-08 22:47:36 UTC (rev 17194) +++ trunk/console/libgnt/gntmain.c 2006-09-09 02:19:16 UTC (rev 17195) @@ -1,5 +1,4 @@ -#define _XOPEN_SOURCE -#define _XOPEN_SOURCE_EXTENDED +#define _GNU_SOURCE #include "config.h" @@ -11,6 +10,7 @@ #include "gntkeys.h" #include "gntstyle.h" #include "gnttree.h" +#include "gntutils.h" #include "gntwm.h" #include <panel.h> @@ -27,8 +27,6 @@ #include <sys/types.h> #include <sys/wait.h> -#include <wchar.h> - /** * Notes: Interesting functions to look at: * scr_dump, scr_init, scr_restore: for workspaces @@ -253,6 +251,8 @@ mvwhline(taskbar, 0, width * i, ' ' | COLOR_PAIR(color), width); title = GNT_BOX(w)->title; mvwprintw(taskbar, 0, width * i, "%s", title ? title : "<gnt>"); + if (i) + mvwaddch(taskbar, 0, width *i - 1, ACS_VLINE | A_STANDOUT | COLOR_PAIR(GNT_COLOR_NORMAL)); update_window_in_list(w); } @@ -423,7 +423,7 @@ for (x = 0; x < getmaxx(stdscr); x++) { char ch; - now = mvwinch(newscr, y, x); + now = mvwinch(curscr, y, x); ch = now & A_CHARTEXT; now ^= ch; @@ -561,7 +561,7 @@ static int offset = 0; GntMouseEvent event; GntWidget *widget = NULL; - GList *iter; + PANEL *p = NULL; if (!ordered || buffer[0] != 27) return FALSE; @@ -577,8 +577,14 @@ x -= 33; y -= 33; - for (iter = ordered; iter; iter = iter->next) { - GntWidget *wid = iter->data; + /* It might be a better idea to use panel_below. That would allow mouse-clicks + * to be operated on transient windows, which would be cool.*/ + while ((p = panel_below(p)) != NULL) { + const GntNode *node = panel_userptr(p); + GntWidget *wid; + if (!node) + continue; + wid = node->me; if (x >= wid->priv.x && x < wid->priv.x + wid->priv.width) { if (y >= wid->priv.y && y < wid->priv.y + wid->priv.height) { widget = wid; @@ -586,6 +592,7 @@ } } } + if (strncmp(buffer, "[M ", 3) == 0) { /* left button down */ /* Bring the window you clicked on to front */ @@ -612,7 +619,8 @@ if (wm.mouse_clicked && wm.mouse_clicked(event, x, y, widget)) return TRUE; - if (event == GNT_LEFT_MOUSE_DOWN && widget) { + if (event == GNT_LEFT_MOUSE_DOWN && widget && widget != _list.window && + !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT)) { if (widget != ordered->data) { GntWidget *w = ordered->data; ordered = g_list_bring_to_front(ordered, widget); @@ -644,30 +652,49 @@ offset = 0; } - gnt_widget_clicked(ordered->data, event, x, y); - return FALSE; /* XXX: this should be TRUE */ + gnt_widget_clicked(widget, event, x, y); + return TRUE; /* XXX: this should be TRUE */ } +#ifndef NO_WIDECHAR +static int +widestringwidth(wchar_t *wide) +{ + int len, ret; + char *string; + + len = wcstombs(NULL, wide, 0) + 1; + string = g_new0(char, len); + wcstombs(string, wide, len); + ret = gnt_util_onscreen_width(string, NULL); + g_free(string); + return ret; +} +#endif + /* Returns the onscreen width of the character at the position */ static int reverse_char(WINDOW *d, int y, int x, gboolean set) { - /* This is supposed to simply in_wch the cchar_t, set the attribute, - * and add_wch. But that doesn't currently work, possibly because of - * a bug in ncurses. This is an ugly hack to work around that. */ - cchar_t ch; - int wc = 1, j; - #define DECIDE(ch) (set ? ((ch) | WA_REVERSE) : ((ch) & ~WA_REVERSE)) +#ifdef NO_WIDECHAR + chtype ch; + ch = mvwinch(d, y, x); + mvwaddch(d, y, x, DECIDE(ch)); + return 1; +#else + cchar_t ch; + int wc = 1; if (mvwin_wch(d, y, x, &ch) == OK) { - wc = wcswidth(ch.chars, CCHARW_MAX); - for (j = 0; j < wc; j++) - mvwdelch(d, y, x); + wc = widestringwidth(ch.chars); ch.attr = DECIDE(ch.attr); - mvwins_wch(d, y, x, &ch); + ch.attr &= WA_ATTRIBUTES; /* XXX: This is a workaround for a bug */ + mvwadd_wch(d, y, x, &ch); } + return wc; +#endif } static void @@ -1178,6 +1205,7 @@ node->panel = wm.new_window(node->me); else node->panel = new_panel(node->me->window); + set_panel_userptr(node->panel, node); if (!GNT_WIDGET_IS_FLAG_SET(node->me, GNT_WIDGET_TRANSIENT)) { bottom_panel(node->panel); /* New windows should not grab focus */ Modified: trunk/console/libgnt/gntutils.c =================================================================== --- trunk/console/libgnt/gntutils.c 2006-09-08 22:47:36 UTC (rev 17194) +++ trunk/console/libgnt/gntutils.c 2006-09-09 02:19:16 UTC (rev 17195) @@ -43,6 +43,9 @@ { int width = 0; + if (end == NULL) + end = start + strlen(start); + while (start < end) { width += g_unichar_iswide(g_utf8_get_char(start)) ? 2 : 1; start = g_utf8_next_char(start); Modified: trunk/console/libgnt/gntwidget.h =================================================================== --- trunk/console/libgnt/gntwidget.h 2006-09-08 22:47:36 UTC (rev 17194) +++ trunk/console/libgnt/gntwidget.h 2006-09-09 02:19:16 UTC (rev 17195) @@ -1,8 +1,6 @@ #ifndef GNT_WIDGET_H #define GNT_WIDGET_H -#include "config.h" - #include <stdio.h> #include <glib.h> #include <glib-object.h> Modified: trunk/console/libgnt/gntwm.h =================================================================== --- trunk/console/libgnt/gntwm.h 2006-09-08 22:47:36 UTC (rev 17194) +++ trunk/console/libgnt/gntwm.h 2006-09-09 02:19:16 UTC (rev 17195) @@ -1,5 +1,3 @@ -#include "config.h" - #include <panel.h> #include "gntwidget.h" Modified: trunk/console/plugins/Makefile.am =================================================================== --- trunk/console/plugins/Makefile.am 2006-09-08 22:47:36 UTC (rev 17194) +++ trunk/console/plugins/Makefile.am 2006-09-09 02:19:16 UTC (rev 17195) @@ -9,7 +9,7 @@ plugindir = $(libdir)/gaim -gntgf_la_SOURCES = gntgf.c +gntgf_la_SOURCES = gntgf.c gnthistory_la_SOURCES = gnthistory.c endif # PLUGINS This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-09 06:49:07
|
Revision: 17197 http://svn.sourceforge.net/gaim/?rev=17197&view=rev Author: thekingant Date: 2006-09-08 23:49:05 -0700 (Fri, 08 Sep 2006) Log Message: ----------- Herman, we've moving you to "retired," but feel free to come back and work on stuff any time! (And let me know if I missed anything) Modified Paths: -------------- trunk/AUTHORS trunk/doc/gaim.1.in trunk/gtk/gtkdialogs.c Modified: trunk/AUTHORS =================================================================== --- trunk/AUTHORS 2006-09-09 06:48:02 UTC (rev 17196) +++ trunk/AUTHORS 2006-09-09 06:49:05 UTC (rev 17197) @@ -17,7 +17,6 @@ Daniel 'datallah' Atallah Ethan 'Paco-Paco' Blanton - Developer -Herman Bloggs - Win32 Port Thomas Butter - Developer Mark 'KingAnt' Doliner - Developer Christian 'ChipX86' Hammond - Developer & Webmaster @@ -34,7 +33,6 @@ Crazy Patch Writers: -------------------- - Ka-Hing 'javabsp' Cheung Sadrul Habib Chowdhury Felipe 'shx' Contreras @@ -46,6 +44,7 @@ Retired Developers: -------- +Herman Bloggs - Win32 Port Jim Duchek <ji...@li...> - maintainer Rob Flynn <ga...@ro...> - maintainer Adam Fritzler - libfaim maintainer Modified: trunk/doc/gaim.1.in =================================================================== --- trunk/doc/gaim.1.in 2006-09-09 06:48:02 UTC (rev 17196) +++ trunk/doc/gaim.1.in 2006-09-09 06:49:05 UTC (rev 17197) @@ -542,8 +542,6 @@ .br Ethan 'Paco-Paco' Blanton (developer) .br - Herman Bloggs (win32 port) <\fIh...@bl...\fR> -.br Mark 'KingAnt' Doliner (developer) <\fIt...@us...\fR> .br Christian 'ChipX86' Hammond (developer & webmaster) <\fIc...@ch...\fR> @@ -588,6 +586,8 @@ The retired developers of \fBgaim\fR are: + Herman Bloggs (win32 port) <\fIh...@bl...\fR> +.br Jim Duchek <\fI...@li...\fR> (maintainer) .br Rob Flynn <\fI...@ro...\fR> (maintainer) Modified: trunk/gtk/gtkdialogs.c =================================================================== --- trunk/gtk/gtkdialogs.c 2006-09-09 06:48:02 UTC (rev 17196) +++ trunk/gtk/gtkdialogs.c 2006-09-09 06:49:05 UTC (rev 17197) @@ -66,7 +66,6 @@ {"Sean Egan", N_("lead developer"), "sea...@gm..."}, {"Daniel 'datallah' Atallah", N_("developer"), NULL}, {"Ethan 'Paco-Paco' Blanton", N_("developer"), NULL}, - {"Herman Bloggs", N_("win32 port"), "he...@bl..."}, {"Thomas Butter", N_("developer"), NULL}, {"Mark 'KingAnt' Doliner", N_("developer"), NULL}, {"Christian 'ChipX86' Hammond", N_("developer & webmaster"), NULL}, @@ -99,8 +98,9 @@ /* Order: Alphabetical by Last Name */ static struct developer retired_developers[] = { + {"Herman Bloggs", N_("win32 port"), "he...@bl..."}, {"Jim Duchek", N_("maintainer"), "ji...@li..."}, - {"Rob Flynn", N_("maintainer"), "ga...@ro..."}, + {"Rob Flynn", N_("maintainer"), "ga...@ro..."}, {"Adam Fritzler", N_("libfaim maintainer"), NULL}, /* If "lazy bum" translates literally into a serious insult, use something else or omit it. */ {"Syd Logan", N_("hacker and designated driver [lazy bum]"), NULL}, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-09 21:32:51
|
Revision: 17209 http://svn.sourceforge.net/gaim/?rev=17209&view=rev Author: thekingant Date: 2006-09-09 14:32:30 -0700 (Sat, 09 Sep 2006) Log Message: ----------- More changes to help make dist work again. Let's see here * Alphabetize some stuff in gtk/Makefile.am * Include gntwm.h in the tar.gz * Include gntplugin.h in the tar.gz (instead of gntplugin.c (typo)) * libgaim/connection.c and libgaim/upnp.c shouldn't include gaim.h gaim.h should only be used by stuff outside of libgaim * Include gaim.h in the tar.gz (not sure if we want to keep it this way, I'll send an email to gaim-devel in a little bit) Modified Paths: -------------- trunk/console/Makefile.am trunk/console/libgnt/Makefile.am trunk/gtk/Makefile.am trunk/libgaim/connection.c trunk/libgaim/upnp.c Modified: trunk/console/Makefile.am =================================================================== --- trunk/console/Makefile.am 2006-09-09 21:02:31 UTC (rev 17208) +++ trunk/console/Makefile.am 2006-09-09 21:32:30 UTC (rev 17209) @@ -25,7 +25,7 @@ gntconv.h \ gntdebug.h \ gntnotify.h \ - gntplugin.c \ + gntplugin.h \ gntprefs.h \ gntrequest.h \ gntstatus.h \ Modified: trunk/console/libgnt/Makefile.am =================================================================== --- trunk/console/libgnt/Makefile.am 2006-09-09 21:02:31 UTC (rev 17208) +++ trunk/console/libgnt/Makefile.am 2006-09-09 21:32:30 UTC (rev 17209) @@ -38,6 +38,7 @@ gnttextview.h \ gnttree.h \ gntutils.h \ + gntwm.h \ gnt.h libgnt_laincludedir=$(includedir)/gnt Modified: trunk/gtk/Makefile.am =================================================================== --- trunk/gtk/Makefile.am 2006-09-09 21:02:31 UTC (rev 17208) +++ trunk/gtk/Makefile.am 2006-09-09 21:32:30 UTC (rev 17209) @@ -59,13 +59,14 @@ bin_PROGRAMS = gaim gaim_SOURCES = \ + gaimcombobox.c \ + gaimstock.c \ gtkaccount.c \ gtkblist.c \ gtkcelllayout.c \ gtkcellrendererprogress.c \ gtkcellview.c \ gtkcellviewmenuitem.c \ - gaimcombobox.c \ gtkconn.c \ gtkconv.c \ gtkdebug.c \ @@ -83,9 +84,9 @@ gtknotify.c \ gtkplugin.c \ gtkpluginpref.c \ + gtkpounce.c \ gtkprefs.c \ gtkprivacy.c \ - gtkpounce.c \ gtkrequest.c \ gtkroomlist.c \ gtksavedstatuses.c \ @@ -93,7 +94,6 @@ gtksound.c \ gtksourceiter.c \ gtkstatusbox.c \ - gaimstock.c \ gtkthemes.c \ gtkutils.c \ gtkwhiteboard.c Modified: trunk/libgaim/connection.c =================================================================== --- trunk/libgaim/connection.c 2006-09-09 21:02:31 UTC (rev 17208) +++ trunk/libgaim/connection.c 2006-09-09 21:32:30 UTC (rev 17209) @@ -28,7 +28,6 @@ #include "connection.h" #include "dbus-maybe.h" #include "debug.h" -#include "gaim.h" #include "log.h" #include "notify.h" #include "prefs.h" Modified: trunk/libgaim/upnp.c =================================================================== --- trunk/libgaim/upnp.c 2006-09-09 21:02:31 UTC (rev 17208) +++ trunk/libgaim/upnp.c 2006-09-09 21:32:30 UTC (rev 17209) @@ -23,7 +23,6 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "internal.h" -#include "gaim.h" #include "debug.h" #include "util.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-09-09 21:33:10
|
Revision: 17210 http://svn.sourceforge.net/gaim/?rev=17210&view=rev Author: rlaager Date: 2006-09-09 14:32:47 -0700 (Sat, 09 Sep 2006) Log Message: ----------- SF Patch #1554418 from TiCPU Adds gaim_buddy_get_server_alias(). Modified Paths: -------------- trunk/doc/ChangeLog.API trunk/libgaim/blist.c trunk/libgaim/blist.h Modified: trunk/doc/ChangeLog.API =================================================================== --- trunk/doc/ChangeLog.API 2006-09-09 21:32:30 UTC (rev 17209) +++ trunk/doc/ChangeLog.API 2006-09-09 21:32:47 UTC (rev 17210) @@ -320,6 +320,7 @@ * gaim_util_fetch_url_cancel(): Can be used to cancel a pending call to gaim_util_fetch_url() or gaim_util_fetch_url_request(). * GaimGtkWindow: dialogs.search (previously in GaimGtkConversation) + * gaim_buddy_get_server_alias() Signals - Changed: (See the Doxygen docs for details on all signals.) * Signal propagation now stops after a handler returns a non-NULL value. Modified: trunk/libgaim/blist.c =================================================================== --- trunk/libgaim/blist.c 2006-09-09 21:32:30 UTC (rev 17209) +++ trunk/libgaim/blist.c 2006-09-09 21:32:47 UTC (rev 17210) @@ -2014,6 +2014,16 @@ return buddy->name; } +const char *gaim_buddy_get_server_alias(GaimBuddy *buddy) +{ + g_return_val_if_fail(buddy != NULL, NULL); + + if ((buddy->server_alias) && (*buddy->server_alias)) + return buddy->server_alias; + + return NULL; +} + const char *gaim_buddy_get_local_alias(GaimBuddy *buddy) { GaimContact *c; Modified: trunk/libgaim/blist.h =================================================================== --- trunk/libgaim/blist.h 2006-09-09 21:32:30 UTC (rev 17209) +++ trunk/libgaim/blist.h 2006-09-09 21:32:47 UTC (rev 17210) @@ -545,6 +545,13 @@ */ const char *gaim_buddy_get_alias_only(GaimBuddy *buddy); +/** + * Gets the server alias for a buddy. + * + * @param buddy The buddy whose name will be returned + * @return The server alias, or NULL if it is not set. + */ +const char *gaim_buddy_get_server_alias(GaimBuddy *buddy); /** * Returns the correct name to display for a buddy, taking the contact alias This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-10 19:39:12
|
Revision: 17220 http://svn.sourceforge.net/gaim/?rev=17220&view=rev Author: thekingant Date: 2006-09-10 12:39:08 -0700 (Sun, 10 Sep 2006) Log Message: ----------- Merge the contents of CREDITS into the AUTHORS file Modified Paths: -------------- trunk/AUTHORS Removed Paths: ------------- trunk/doc/CREDITS Modified: trunk/AUTHORS =================================================================== --- trunk/AUTHORS 2006-09-10 19:28:41 UTC (rev 17219) +++ trunk/AUTHORS 2006-09-10 19:39:08 UTC (rev 17220) @@ -1,9 +1,11 @@ gaim - the Pimpin' Penguin IM Clone that's Good for the Soul ============================================================ -We've got an IRC room now too, #gaim on irc.freenode.net (#wingaim for Windows -users). Come check us out. +For a complete list of all contributors, see the COPYRIGHT file. +We've got an IRC room now too, #gaim on irc.freenode.net (#wingaim for +Windows users). Come check us out. + Current Developers: ------------------ @@ -32,7 +34,7 @@ Nathan 'faceprint' Walp - Developer Crazy Patch Writers: --------------------- +------------------- Ka-Hing 'javabsp' Cheung Sadrul Habib Chowdhury Felipe 'shx' Contreras @@ -43,7 +45,7 @@ Kevin 'SimGuy' Stange Retired Developers: --------- +------------------ Herman Bloggs - Win32 Port Jim Duchek <ji...@li...> - maintainer Rob Flynn <ga...@ro...> - maintainer @@ -52,3 +54,71 @@ Jim Seymour - Jabber developer Mark Spencer <mar...@ma...> - original author Eric Warmenhoven <er...@wa...> - lead developer + +Other Contributions: +------------------- +Much thanks to Evan Martin <ma...@cs...> for writing +GtkSpell <http://gtkspell.sourceforge.net> responsible for the +"Highlight misspelled words" feature and for gtk-nativewin +<http://bunny.darktech.org/cvs/gtk-nativewin/> the default GTK+-2.0 +engine used in our win32 port. + +** LOGO DESIGNED BY: Naru Sundar ** + +Peter Teichiman <pe...@he...> +Larry Ewing +Jeramey A. Crawford + Thanks to these boys. Peter and Larry managed to stomp + out a large list of Mem Leaks. Jeramey found the remaining + onees and pointed me to those. Props to the boys at + Helix Code. Thanks guys. + +Nathan Walp + A healthy amount of patches for the Jabber plugin + +Neil Sanchala + Wrote most of the Zephyr plugin + +Arkadiusz Miskiewicz + Wrote the Gadu-Gadu plugin + +David Prater <IM: dRaven43> dr...@tc... + Log and Colour Button Images + +Sébastien Carpe <IM: Seb Carpe> + Base HTTP Proxy Support + +Ari Pollak <IM: Ari Pollak> compwiz.dhs.org + Resize conversation window patch + +Decklin Foster + Many GUI improvements, other nifty additions and fixes + +David <IM: CrazyDavy> + The neato-bigger text box + +S D Erle + Writing a cool perl script to translate WinAIM lists to gaim + +BMiller + A good collection of stuff. %n for away messages, import winaim + lists, pic/text/pic+text for buttons, among others + +Lance Rocker + Improved HTML formatting in logs, plus lots of debugging on *BSD. + +ergofobe: + GNOME Url handler patch + +Justin M. Ward <ju...@yo...>: + Alphabetical Away Messages patch + +G. Sumner Hayes <IM: SumnerFool> Security Patches + +Brian Ryner for a little make file patch :) + +Ryan C. Gordon - I still think you look like Silent Bob. + +Elliot Tobin <el...@bh...> + +Thanks to Jeroen van der Vegt for the initial smiley plugin and images. Deleted: trunk/doc/CREDITS =================================================================== --- trunk/doc/CREDITS 2006-09-10 19:28:41 UTC (rev 17219) +++ trunk/doc/CREDITS 2006-09-10 19:39:08 UTC (rev 17220) @@ -1,84 +0,0 @@ -gaim: The Pimpin' Penguin IM Clone that's Good For The Soul! - -This file is very old. Newer developers and contributors are -credited in the AUTHORS and COPYRIGHT files. - -CREDITS -------- -Authors: - -Rob Flynn <IM: RobFlynn> rf...@bl... -Syd Logan -Jim Duchek <IM: zilding> jim...@ou... -Eric Warmenhoven er...@wa... -Mark Spencer <IM: markster97> mar...@ma... -Sean Egan <IM: SeanEgn> bj...@bi... - -Other Contributors: - -Adam Fritzler (mid) - Wrote libfaim, fixed the proxy code, added the stuff to let - Oscar go through a proxy, and wrote the beginnings of the - Jabber plugin.. - -Much thanks to Evan Martin <ma...@cs...> for writing -GtkSpell <http://gtkspell.sourceforge.net> responsible for the -"Highlight misspelled words" feature and for gtk-nativewin -<http://bunny.darktech.org/cvs/gtk-nativewin/> the default GTK+-2.0 -engine used in our win32 port. - -** LOGO DESIGNED BY: Naru Sundar ** - -Peter Teichiman <pe...@he...> -Larry Ewing -Jeramey A. Crawford - Thanks to these boys. Peter and Larry managed to stomp - out a large list of Mem Leaks. Jeramey found the remaining - onees and pointed me to those. Props to the boys at - Helix Code. Thanks guys. - -Nathan Walp - A healthy amount of patches for the Jabber plugin -Neil Sanchala - Wrote most of the Zephyr plugin -Arkadiusz Miskiewicz - Wrote the Gadu-Gadu plugin - -David Prater <IM: dRaven43> dr...@tc... - Log and Colour Button Images -S\xE9bastien Carpe <IM: Seb Carpe> - Base HTTP Proxy Support -Ari Pollak <IM: Ari Pollak> compwiz.dhs.org - Resize conversation window patch -Decklin Foster - Many GUI improvements, other nifty additions and fixes -David <IM: CrazyDavy> - The neato-bigger text box -S D Erle - Writing a cool perl script to translate WinAIM lists to gaim -BMiller - A good collection of stuff. %n for away messages, import winaim - lists, pic/text/pic+text for buttons, among others -Lance Rocker - Improved HTML formatting in logs, plus lots of debugging on *BSD. - -ergofobe: - GNOME Url handler patch - -Justin M. Ward <ju...@yo...>: - Alphabetical Away Messages patch - -G. Sumner Hayes <IM: SumnerFool> Security Patches -Brian Ryner for a little make file patch :) -Ryan C. Gordon - I still think you look like Silent Bob. -Elliot Tobin <el...@bh...> - -Many, many thanks to Luke Schierer who logs many hours in #gaim (as LSchiere) -providing technical support to users and testing patches for developers. - -Similar thanks to Ka-Hing Cheung for also committing tons of time offering -support and submitting patches - -Thanks to Jeroen van der Vegt for the initial smiley plugin and images. - -And tons of thanks to all our users and testers! This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-10 20:04:27
|
Revision: 17222 http://svn.sourceforge.net/gaim/?rev=17222&view=rev Author: thekingant Date: 2006-09-10 13:04:20 -0700 (Sun, 10 Sep 2006) Log Message: ----------- Move ChangeLog.API next to ChangeLog and ChangeLog.win32 Added Paths: ----------- trunk/ChangeLog.API Removed Paths: ------------- trunk/doc/ChangeLog.API Copied: trunk/ChangeLog.API (from rev 17218, trunk/doc/ChangeLog.API) =================================================================== --- trunk/ChangeLog.API (rev 0) +++ trunk/ChangeLog.API 2006-09-10 20:04:20 UTC (rev 17222) @@ -0,0 +1,638 @@ +Gaim: The Pimpin' Penguin IM Client that's good for the soul! + +version 2.0.0: + Changed: + * All the status stuff. Yay! + * gaim_prefs_connect_callback(), added handle parameter + * gtk_imhtml_toolbar now descends from GtkHBox making it easier to add your + own widgets to it + * gaim_find_conversation_with_account, added a "type" parameter + * gaim_gtk_prefs_labeled_spin_button, the "key" parameter is now a + const char* instead of just a char* + * gaim_gtk_prefs_labeled_entry, the "key" parameter is now a const char* + instead of just a char* + * the add_buddy perl sub. The sub now takes the account as the first + argument, and buddy and group as the second and third. It also adds + the buddy to the server-side buddy list of the given account. + * gaim_connection_new, gaim_account_connect and gaim_account_register no + longer return a GaimConnection + * keep_alive in GaimConnection is renamed to keepalive + * gaim_mkstemp, added a second argument, a boolean, of whether or not the + file is binary + * gaim_log_logger_new, rewritten + * gaim_conv_window_remove_conversation()'s last argument to be a + GaimConversation. + * A new blocked icon: pixmaps/status/default/blocked.png + * In pixmaps/status/default: extendedaway.png renamed to extended_away.png + * In pixmaps/status/default: na.png renamed to unavailable.png + * gtk_imhtml_toggle_bold(): No longer returns a value + * gtk_imhtml_toggle_italic(): No longer returns a value + * gtk_imhtml_toggle_underline(): No longer returns a value + * gtk_imhtml_toggle_strike(): No longer returns a value + * gtk_imhtml_scroll_to_end(): Added the smooth paramter + * gaim_log_new(), added conv parameter + * gaim_buddy_icon_new(), leaves a reference which the caller owns. Use + gaim_buddy_icon_unref() immediately if you don't want a reference (the + old behavior). + * GAIM_CONV_UNKNOWN to GAIM_CONV_TYPE_UNKNOWN. + * GAIM_CONV_IM to GAIM_CONV_TYPE_IM. + * GAIM_CONV_CHAT to GAIM_CONV_TYPE_CHAT. + * GAIM_CONV_MISC to GAIM_CONV_TYPE_MISC. + * GAIM_CONV_ANY to GAIM_CONV_TYPE_ANY. + * GaimConversationUiOps.write_conv, Replaced const char *who with + const char *name, const char *alias + * gaim_conv_chat_add_users(), added extra_msgs and new_arrivals (pass NULL + and FALSE respectively, to get the same behavior as before) + * chat_add_users in GaimConversationUiOps, added cbuddies and + new_arrivals and removed buddies. + * chat_rename_user in GaimConversationUiOps, added new_alias + * gaim_conv_chat_cb_new(), added alias. (pass NULL to get the same + behavior as before). + * GaimConversation.log became GList * GaimConversation.logs, so that a + conversation can have multiple logs at once + * gaim_conv_chat_add_user, added extra_msgs + * gaim_notify_userinfo, removed primary and secondary parameters + * GaimNotifyUiOps.notify_userinfo: removed title, primary, and + secondary parameters + * Idle timers are now added and removed in gtkidle.c in response + to the signed-on and signed-off signals + * GaimXfer->ops.read, GaimXfer->ops.write, gaim_xfer_set_read_fnc(), + gaim_xfer_set_write_fnc(), gaim_xfer_read(), gaim_xfer_write(): + Changed ssize_t to gssize + * serv_got_im, serv_got_chat_in, serv_send_im and serv_chat_send all use + GaimMessageFlags instead of GaimConvImFlags / GaimConvChatFlags + * All core<->prpl message passing now uses html. This was previously true + for receiving messages, it's now also true for sending them. prpls that + don't support html need to gaim_unescape_html() the message. + * Notify API: GCallback -> GaimNotifyCloseCallback, + void *user_data -> gpointer user_data + * gaim_notify_searchresults_get_rows_count, + gaim_notify_searchresults_get_columns_count: return type now guint + * gaim_account_notify_added: No longer checks if there is a + GaimBuddy for the added user, that's left up to the prpls. See the + documentation for this function and gaim_account_request_add. + * gaim_accounts_reorder: new_index is now a gint instead of a size_t + * displaying-message signals: displaying-[im|chat]-msg and + displayed-[im|chat]-msg signals are emitted for all messages + (ie, for received messages, sent messages, system messages, error + messages etc.), and the signals now have + gaim_gtk_conversations_get_handle() for their handle. + * GAIM_NOTIFY_BUTTON_ADD_BUDDY to GAIM_NOTIFY_BUTTON_ADD + * conversation-switched: This signal has been moved from conversation to + the UI and the signal-handlers only receive the + conversation that has been switched to. + * GaimPluginProtocolInfo: Added offline_message + * GaimPluginProtocolInfo: Added whiteboard_prpl_ops + * GaimPluginProtocolInfo: Added media_prpl_ops + * GaimPluginProtocolInfo: Added "str" argument to tooltip_text, changed + the return type to void + * GaimPluginProtocolInfo: Added "full" argument to tooltip_text + * gaim_pounce_new(): Added option argument for pounce options + * gaim_network_listen() and gaim_network_listen_range(): Added + socket_type parameter to allow creation of UDP listening. Modified + to be asynchronous with a callback to allow for UPnP operation. + Returns a data structure that can be used to cancel the listen + attempt using gaim_network_listen_cancel() + * GaimPrefCallback: val is now a gconstpointer instead of a gpointer + * gtk_imhtml_get_current_format(): the arguments are now set to TRUE or + FALSE. Previously they were set to TRUE or left alone. Also, you + may now pass NULL if you're not interested in a specific formatting. + * Smiley Themes: Backslashes must be backslash-escaped. + * Plugins: Depedencies are now honored when unloading plugins. + * gaim_markup_extract_info_field(): Added format_cb parameter. + * gaim_str_to_time(): Added support for parsing the MM/DD/YYYY format. + * gaim_plugin_action_new(): label is now const char * + * gaim_plugin_pref_new_with_name(): name is now const char * + * gaim_plugin_pref_new_with_label(): label is now const char * + * gaim_plugin_pref_new_with_name_and_label(): name and label are + now const char * + * gaim_plugin_pref_set_name(): name is now const char * + * gaim_plugin_pref_get_name(): return type is now const char * + * gaim_plugin_pref_set_label(): label is now const char * + * gaim_plugin_pref_get_label(): return type is now const char * + * gaim_plugin_pref_add_choice(): label is now const char * + * struct proto_chat_entry: label is now const char * + * struct proto_chat_entry: identifier is now const char * + * All network activity has been updated to use non-blocking sockets. + This means that plugins must be updated to expect such a socket from + gaim_proxy_connect() and gaim_network_listen*(). + * gaim_proxy_connect(): changed to return NULL on error and a pointer + to a GaimProxyConnectInfo object which can be used to cancel + connection attempts using gaim_proxy_connect_cancel(). + * gaim_gethostbyname_async(): Renamed to gaim_dnsquery_a() and + changed to return a pointer to a data structure that can be + used to cancel the pending DNS query using gaim_dnsquery_destroy() + * gaim_url_fetch(): Renamed to gaim_util_fetch_url() and changed + to return a pointer to a data structer that can be used to cancel + the pending HTTP request using gaim_util_fetch_url_cancel(). + * gaim_gtk_create_imhtml(): Added sw_ret() parameter + * gaim_account_get_log(): Added create parameter + * GAIM_CMD_P_VERYHIGH is now GAIM_CMD_P_VERY_HIGH + * gtk_imhtml_search_find(): Now wraps around to the top instead of + clearing the search at the end. + * gaim_gtkxfer_dialog_show: Can now take NULL to show (and possibly + create) a default gtkxfer dialog. + + Removed: + * gaim_gtk_sound_{get,set}_mute() (replaced by the /gaim/gtk/sound/mute + preference) + * gaim_escape_html(const char *html) (use g_markup_escape_text(html, -1) + instead) + * gaim_accounts_sync, account changes are now scheduled to be saved + automatically + * gaim_connection_connect + * gaim_connection_disconnect + * gaim_connection_register + * gaim_accounts_auto_login + * gaim_find_conversation, use gaim_find_conversation_with_account instead + * serv_login + * serv_close + * serv_finish_login + * gaim_chat_get_display_name + * gaim_conversation_set_history, gaim_conversation_get_history, and + GaimConversation->history. Use gtk_imhtml_get_markup instead. + * serv_rename_group + * set_gaim_user_dir to gaim_util_set_user_dir + * create_prpl_icon to gaim_gtk_create_prpl_icon + * Window flashing support in the core: gaim_conv_window_flash, and flash UI + operation for conversations. Use signal "received-im-msg" or similar. + * All warning stuff from the core. + * gaim_gtkconv_get_dest_tab_at_xy(), instead use gaim_gtkconv_get_tab_at_xy() + * chat_add_user from GaimConversationUiOps: only chat_add_users is used + * chat_remove_user from GaimConversationUiOps: only chat_remove_users is used + * uc from the GaimBuddy struct + * gaim_sound_get_handle() + * gaim_debug_vargs() + * serv_add_buddy(); use gaim_account_add_buddy() instead + * serv_add_buddies(); use gaim_account_add_buddies() instead + * serv_remove_buddy(); use gaim_account_remove_buddy() instead + * serv_remove_buddies(); use gaim_account_remove_buddies() instead + * serv_change_passwd(); use gaim_account_change_password() instead + * serv_touch_idle(): use gaim_gtk_check_idle() instead + * GaimGtkImPane->a_virgin + * gaim_str_strip_cr(); use gaim_str_strip_char(str, '\r') instead + * gaim_find_buddys_group renamed to gaim_buddy_get_group + * gaim_gtkpounce_menu_build() + * gaim_gtkpounce_dialog_show() + * GaimGtkBuddyList->bpmenu + * GaimConvImFlags and GaimConvChatFlags; use GaimMessageFlags instead + * cb and user_data from the ops in GaimNotifyUiOps: This is now handled + by the notify API in the core. + * GaimConversationUiOps.updated: use the conversation-updated signal + * GAIM_SUBTYPE_CONV_WINDOW: windows are now only represented in the UI, + so GAIM_TYPE_BOXED is used for the signal types + * gaim_gtk_privacy_is_showable(): We do fallback privacy in the core + now, so this would always be TRUE now. + * GaimBlistNodeAction: See GaimMenuAction + * gaim_blist_node_action_new(); use gaim_menu_action_new() instead + * gaim_date() + * gaim_date_full(): See gaim_date_format_full() + * gaim_strftime(): See gaim_utf8_strftime() + * GAIM_MESSAGE_COLORIZE + * user_data from gaim_notify_searchresults_new_rows and from + notify_searchresults in GaimNotifyUiOps. + * gaim_conversation_get_send_history(), and send_history from + GaimConversation + * Removed ui_ops from GaimBuddyList. Use gaim_blist_get_ui_ops() instead + * GaimGtkLogViewer hidden... You weren't using it anyway. + * GaimGtkConversation: dialogs (dialogs.search moved to GaimGtkWindow) + * gaim_show_xfer_dialog: Use gaim_gtk_xfer_dialog_show(NULL) instead. + + Added: + * gaim_prefs_disconnect_by_handle() + * a password field to GaimConnection, which only persists for the + session (when "remember password" is false, account->password is + NEVER set) Use gaim_connection_get_password(GaimConnection *gc) + * gaim_log_common_writer, gaim_log_common_lister, gaim_log_common_sizer, + and gaim_log_get_log_dir to allow log formats that use standard Gaim + log directory to use Gaim's built-in code for these purposes. + * GaimLogCommonLoggerData struct for a basic logger_data struct to be + used with "common" logger functions. + * gaim_gtk_blist_node_is_contact_expanded, returns TRUE if the given + blist node is a buddy inside an expanded contact, or is itself an + expanded contact + * GaimLogSet struct, get_log_sets function to GaimLogLogger, + gaim_log_get_log_sets, gaim_log_set_compare + * gaim_privacy_check(), to check if a given user is allowed to send + messages to the specified account + * gtk_imhtml_clear_formatting() + * gtk_imhtml_delete to clear out part of a imhtml buffer + * gtk_imhtml_get_protocol_name() + * gaim_buddy_icons_get_full_path(), to get the full path of a buddy + icon setting + * CHAT_USERS_ALIAS_COLUMN, CHAT_USERS_COLOR_COLUMN, + CHAT_USERS_BUDDY_COLUMN to the list of columns for the chat + user list + * gaim_account_add_buddy() + * gaim_account_add_buddies() + * gaim_account_remove_buddy() + * gaim_account_remove_buddies() + * gaim_account_change_password() + * gaim_account_supports_offline_message() + * gaim_conversation_close_logs(), to force a conversation's log(s) to + be closed. New logs will be opened as necessary. + * gaim_plugin_get_id() + * gaim_plugin_get_name() + * gaim_plugin_get_version() + * gaim_plugin_get_summary() + * gaim_plugin_get_description() + * gaim_plugin_get_author() + * gaim_plugin_get_homepage() + * gaim_gtkconv_switch_active_conversation(GaimConversation *) + * gaim_str_strip_char() to strip a given character from + a given string + * gaim_util_chrreplace() to replace a given character with a + different character + * gaim_gtk_blist_toggle_visibility() to intelligently toggle the + visiblity of the buddy list + * gaim_gtk_blist_visibility_manager_add() to indicate the addition of a + visibility manager - see the docs for more information + * gaim_gtk_blist_visibility_manager_remove() to indicate the removal of + a visibility manager - see the docs for more information + * gaim_gtk_conversations_find_unseen_list() to get a list of conversations + with an "unseen" state >= to the specified state and other criteria + * gaim_gtk_conversations_fill_menu() fill a menu from list of conversations + * gaim_gtk_create_prpl_icon() + * gaim_gtk_create_prpl_icon_with_status() + * gaim_gtk_pounces_manager_show() + * gaim_gtk_pounces_manager_hide() + * gaim_gtk_pounce_editor_show() + * GAIM_POUNCE_MESSAGE_RECEIVED + * GaimPounceOption + * gaim_pounce_set_options() + * gaim_pounce_set_options() + * GAIM_STOCK_CONNECT, GAIM_STOCK_DISCONNECT + * GAIM_STOCK_PLUGIN + * gaim_account_request_add: Notifies the user that they were added to + someone's buddy list, and offers them the choice + of adding that person to their buddy list. + * gaim_blist_alias_contact() + * gaim_cipher_http_digest_calculate_session_key() + * gaim_cipher_http_digest_calculate_response() + * gaim_notify_searchresults_labeled() + * GAIM_NOTIFY_BUTTON_LABELED, GAIM_NOTIFY_BUTTON_INFO, + GAIM_NOTIFY_BUTTON_IM, GAIM_NOTIFY_BUTTON_JOIN, + GAIM_NOTIFY_BUTTON_INVITE + * stock buttons GAIM_STOCK_IM, GAIM_STOCK_INFO + * gaim_conversation_present() + * GaimConversationUiOps->present(GaimConversation *) + * GaimPlugin.unloadable + * gaim_plugin_is_unloadable() + * GAIM_PLUGIN_PREF_STRING_FORMAT + * gaim_plugin_pref_get_format_type() + * gaim_plugin_pref_set_format_type() + * GaimStringFormatType + * gaim_log_get_handle() + * gaim_log_uninit() + * GAIM_SUBTYPE_LOG + * gaim_marshal_POINTER__POINTER_POINTER + * gaim_utf8_ncr_encode() + * gaim_gtk_log_init() + * gaim_gtk_log_get_handle() + * gaim_gtk_log_uninit() + * gaim_util_fetch_url_request() + * GaimMenuAction + * gaim_menu_action_new() + * gaim_menu_action_free() + * GaimInfoFieldFormatCallback + * gaim_utf8_strftime() + * gaim_date_format_short() + * gaim_date_format_long() + * gaim_date_format_full() + * gaim_time_format() + * gaim_plugin_action_free() + * GaimRequestType: Added GAIM_REQUEST_FOLDER + * GaimRequestUiOps: Added request_folder + * gaim_request_folder() + * gaim_gtk_setup_screenname_autocomplete() + * gaim_gtk_set_cursor() + * gaim_gtk_clear_cursor() + * GAIM_MESSAGE_ACTIVE_ONLY + * gaim_proxy_get_setup() + * GaimNotifySearchResultsCallback: Added user_data. + * gaim_notify_searchresults: Added user_data. + * gaim_network_listen_cancel(): Can be used to cancel a previous + call to gaim_network_listen() or gaim_network_listen_range() + * gaim_proxy_connect_cancel(): Can be used to cancel a pending + gaim_proxy_connect() request + * gaim_dnsquery_destroy(): Can be used to cancel a pending DNS + query. + * gaim_util_fetch_url_cancel(): Can be used to cancel a pending + call to gaim_util_fetch_url() or gaim_util_fetch_url_request(). + * GaimGtkWindow: dialogs.search (previously in GaimGtkConversation) + * gaim_buddy_get_server_alias() + + Signals - Changed: (See the Doxygen docs for details on all signals.) + * Signal propagation now stops after a handler returns a non-NULL value. + This value is now returned. Previously, all registered handlers were + called and the value from the last handler was used. + * "buddy-typing" and "buddy-typing-stopped": replaced the GaimConversation* + with GaimAccount*, const char *name. Also, the signal is now emitted + regardless of whether a conversation exists and regardless of whether + the user is on the buddy list. + * "chat-buddy-joined": added the new_arrival argument + * "chat-invited" handlers can now return a value to control what happens + to the invite (accept, reject, prompt the user). + * "chat-left": Emitted *after* setting chat->left to TRUE. + * "drawing-tooltip": the second argument is now a GString* instead of + a char** + * "drawing-tooltip": added the "full" argument + * "received-im-msg" and "received-chat-msg" to match, both now pass a + conversation pointer and flags + * "receiving-im-msg" and "receving-chat-msg" to match, both now pass a + conversation pointer and a pointer to the flags. + * "writing-im-msg", "wrote-im-msg", "writing-chat-msg", "wrote-chat-msg": + Now emitted from a difference place in the message handling code. + The arguments also changed. + * "displaying-im-msg", "displayed-im-msg", "displaying-chat-msg", + "displayed-chat-msg": Added "who" argument, which changes the order + of the existing arguments. + + Signals - Added: (See the Doxygen docs for details on all signals.) + * "account-disabled" + * "account-status-changed" + * "account-alias-changed" + * "cipher-added" + * "cipher-removed" + * "conversation-dragging" + * "dbus-method-called" + * "dbus-introspect" + * "file-recv-accept" + * "file-recv-start" + * "file-recv-cancel" + * "file-recv-complete" + * "file-recv-request" + * "file-send-accept" + * "file-send-start" + * "file-send-cancel" + * "file-send-complete" + * "buddy-added" + * "buddy-removed" + * "blist-node-aliased" + * "buddy-status-changed" + * "buddy-idle-changed": A buddy's idle status changed. + * "buddy-icon-changed" + * "displaying-userinfo" + * "gtkblist-hiding" + * "gtkblist-unhiding" + * "log-displaying" + * "savedstatus-changed" + * "sendto-extended-menu" + + Signals - Removed: + * "account-away": replaced by account-status-changed + * "account-warned" + * "buddy-away": replaced by buddy-status-changed + * "buddy-back": replaced by buddy-status-changed + * "buddy-idle": replaced by buddy-idle-changed + * "buddy-unidle": replaced by buddy-idle-changed + * "buddy-icon-cached": replaced by buddy-icon-changed + * "conversation-drag-end": replaced by conversation-dragging + * "conversation-switching" + +version 1.5.0 (8/11/2005): + * Added: gaim_xfer_conversation_write + Writes a messages to a conversation window with the use + of the associated file transfer. + +version 1.4.0 (7/7/2005): + * Added: gaim_buddy_icon_uncache() + Deletes a cached buddy icon for a specified buddy + * Added: gaim_buddy_icon_get_type + Attempts to determine the type of a given buddy icon. + * Added: buddy-icon-cached signal + Emitted when a new buddy icon is cached. + +version 1.3.1 (6/9/2005): + * No changes + +version 1.3.0 (5/10/2005): + * Added: gaim_blist_schedule_save() + This should be used instead of gaim_blist_sync when you + want the blist.xml file to be written to disk. There + should not be many occasions when you want to do this, + as the functions in the blist API that modify the buddy + list will normally call it for you. + * Added: OPT_PROTO_NO_NORMALIZE_CONV + Tells the conversation API to not normalize screen names + in conversations. This is used by the Jabber PRPL. + +version 1.2.1 (4/3/2005): + * No changes + +version 1.2.0 (3/17/2005): + * You can use gaim_signal_connect_priority() and + gaim_signal_connect_priority_vargs() to connect to + Gaim signals with a given priority (Will Gorman) + * Added: gaim_conversation_set_features + gaim_conversation_get_features + These allow plugins (notable prpls) to change the + formatting capabilities of an existing conversation. + This comes with a new "features" field in + GaimConversation (Christopher O'Brien) + * Added: GAIM_CONNECTION_NO_IMAGES to GaimConectionFlags + (Christopher O'Brien) + * Added: GAIM_CBFLAGS_TYPING to GaimConvChatBuddyFlags + (Christopher O'Brien) + * Added: gaim_account_request_add which takes the same arguments as + * gaim_account_notify_added but always asks the user if they want to add + * the buddy to the buddy list + * Added: An accompanying request_add GaimAccountUiOp + +version 1.1.4 (2/24/2005): + * No changes + +version 1.1.3 (2/17/2005): + * No changes + +version 1.1.2 (1/20/2005): + * No changes + +version 1.1.1 (12/28/2004): + * No changes + +version 1.1.0 (12/02/2004): + * Added: gaim_utf8_salvage + * Added: binary relocation support in prefix.h + WARNING: If your plugin uses anything inside the + #ifdef ENABLE_BINRELOC from prefix.h, it won't be + loadable on a copy of Gaim compiled without binreloc + support. In particular, watch out for the autoconf-like + macros, and accidently including them through internal.h, + which you probably shouldn't be including anyway. + +version 1.0.0 (09/17/2004): + * Added: get_chat_name to the GaimPluginProtocolInfo struct + * Changed: gaim_blist_update_buddy_presence(), presence changed to + type gboolean + * Changed: the versioning scheme, and all the plugin structs + +version 0.82 (08/26/2004): + Gaim API: + * Removed: gaim_gtk_get_dispstyle(), gaim_gtk_change_text() + * Removed: multi.h + * Renamed: ui.h to gtkdialogs.h + * Renamed: gtkinternal.h to gtkgaim.h + * Renamed: show_info_dialog to gaim_gtkdialogs_info + * Renamed: show_log_dialog to gaim_gtkdialogs_log + * Renamed: show_warn_dialog to gaim_gtkdialogs_warn + * Renamed: show_im_dialog to gaim_gtkdialogs_im + * Renamed: gaim_gtkdialogs_new_im to gaim_gtkdialogs_im_with_user + * Renamed: destroy_all_dialogs to gaim_gtkdialogs_destroy_all + * Renamed: alias_dialog_bud to gaim_gtkdialogs_alias_buddy + * Renamed: alias_dialog_contact to gaim_gtkdialogs_alias_contact + * Renamed: alias_dialog_blist_chat to gaim_gtkdialogs_alias_chat + * Renamed: show_confirm_del to gaim_gtkdialogs_remove_buddy + * Renamed: show_confirm_del_group to gaim_gtkdialogs_remove_group + * Renamed: show_confirm_del_blist_chat to gaim_gtkdialogs_remove_chat + * Renamed: show_confirm_del_contact to gaim_gtkdialogs_remove_contact + * Renamed: show_about to gaim_gtkdialogs_about + * Added: gaim_notify_userinfo() and the associated notify_userinfo() UI op + (someone who knows just why we have this can edit here) + + Buddy List API: + * Changed: gaim_blist_request_add_chat(), added name parameter + * Added: gaim_contact_on_account() + * Added: flags parameter to the GaimBlistNode struct + + Conversation API: + * Added: gaim_gtkconv_button_new() + + Protocol Plugin API: v7 + * Added: chat_info_defaults to the GaimPluginProtocolInfo struct + + Signals: + * Added: conversation-updated for any update to the data associated + with the conversation (topic, icon, adding to buddy list, etc.) + + Conversation API: + * Changed: gaim_conv_chat_add_user() (added new_arrival parameter) + +version 0.81 (08/05/2004): + Commands API: + * Most functions now have a void *data argument. + + Blist API: + * Added: gaim_buddy_get_contact_alias + * Renamed: gaim_get_buddy_alias to gaim_buddy_get_alias + * Renamed: gaim_get_buddy_alias_only to gaim_buddy_get_alias_only + + Conversation API: + * Changed: gaim_conv_chat_add_user(), added flags parameter + * Changed: gaim_conv_chat_add_users(), added GList of flags parameter + * Changed: gaim_conv_chat_get_users(), now returns a GList of + GaimConvChatBuddy's + * Changed: gaim_conv_chat_set_users() now expects a GList of + GaimConvChatBuddy's + * Added: gaim_conv_chat_set_user_flags() + * Added: gaim_conv_chat_get_user_flags() + * Added: gaim_conv_chat_find_user() + * Added: gaim_conv_chat_cb_new() + * Added: gaim_conv_chat_cb_find() + * Added: gaim_conv_chat_cb_destroy() + * Added: gaim_conv_chat_cb_get_name() + + Conversation UI ops: + * Added: chat_update_user() + + Signals: + * Changed: chat-buddy-joining & chat-buddy-joined now include the user's flags + * Changed: chat-buddy-joining & chat-buddy-leaving are now booleans, return + TRUE if you don't want the join/leave to be displayed in the UI. + * Added: chat-buddy-flags for when user's flags change + gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT (required for the new + chat-buddy-flags signal) + * Added: account-modified for when account settings have been changed. + +version 0.80 (07/15/2004): + Gaim API: + * Removed: PRPL numbers : gaim_account_set_protocol(), + gaim_account_get_protocol(), gaim_accounts_find_with_prpl_num, + gaim_prpl_num_to_id(), gaim_prpl_id_to_num(), GaimProtocol + + Protocol Plugin API: v6 + * Added: can_receive_file & send_file to the GaimPluginProtocolInfo struct + + Signals: + * Changed "chat-invited" to also include the components hash table so + plugins can use serv_join_chat when the signal is emitted. + * Added "chat-topic-changed" signal plugins know when a topic is changed. + +version 0.79 (06/24/2004): + Gaim API: + * gaim_url_parse() now takes two additional parameters, which are used + for returning the username and password from the URL, if they exist. + * Added: has_focus UI op to GaimConversationUiOps and + GaimConvWindowUiOps. + * Added: gaim_conversation_has_focus() and gaim_conv_window_has_focus(). + * Removed: gaim_blist_save() + + Protocol Plugin API: v5 + * Changed: add_buddy, add_buddies, remove_buddy, remove_buddies, + rename_group and remove_group to take GaimBuddy's and + GaimGroup's consistently. + * Removed: OPT_PROTO_BUDDY_ICON (replaced by icon_spec) + * Added: icon_spec to the GaimPluginProtocolInfo struct + +version 0.78 (05/30/2004): + Plugin API: v4 + * Added: actions - for plugins to add to the new Plugin Actions menu + + Loader Plugin API: v2 (no changes) + + Protocol Plugin API: v4 + * Removed: set_dir, get_dir and dir_search (not used, AIM-centric) + * Removed: actions (replaced by generic plugin actions) + + Perl Plugin API: v2 (no changes) + TCL Plugin API: (no changes) + + Signals: + * Added: "blist-node-extended-menu" for extending Buddy, Chat and + Group right-click menus + * Added: "drawing-tooltip" for plugins to allow plugins to change text + appearing in tooltips + * Added: "gtkblist-created" + * Added: "receiving-im-msg" and "receiving-chat-msg" (these behave + exactly like received-*-msg used to) + * Added: "buddy-idle-updated" signal, for when the idle time changes. + * Changed: "received-im-msg" and "received-chat-msg" no longer pass + pointers to who, message and flags, and are now void. + * Removed: "drawing-menu" - it was UI sepecific and + "blist-node-extended-menu" is superior + +version 0.77 (04/22/2004): + Loader & Protocol Plugins independantly versioned + Plugin loading now checks versioning on plugins (Standard, Loader & + Protocol) + new GAIM_{PLUGIN,PRPL,LOADER}_API_VERSION constants + + Plugin API: v3 + * Added: prefs_info for UI independant plugin prefs + + Loader Plugin API: v2 + * Added: api_version at top of GaimPluginLoaderInfo struct + + Protocol Plugin API: v2 + * Added: api_version at top of GaimPluginProtocolInfo struct + * Added: chat_menu for protocol specific extensions to the chat menu + * Removed: get_away "Nada used it. Pink elephants on parade." + * Removed: protocol_prefs (replaced by generic plugin prefs_info) + + Perl Plugin API: v2 (no changes) + TCL API: (no changes) + + Signals: + * Added: "conversation-drag-ended" + +version 0.76 (04/01/2004): + Plugin API: v2 + Perl Plugin API: v2 + Loader Plugin API: (not versioned) + Protocol Plugin API: (not versioned) + * Added: protocol_prefs for protocol specific preferences + * Added: reject_chat so protocols can act on chat invite rejection + + TCL Plugin API: (not versioned) + * Changes to plugin registration to show descriptions + Deleted: trunk/doc/ChangeLog.API =================================================================== --- trunk/doc/ChangeLog.API 2006-09-10 20:03:24 UTC (rev 17221) +++ trunk/doc/ChangeLog.API 2006-09-10 20:04:20 UTC (rev 17222) @@ -1,638 +0,0 @@ -Gaim: The Pimpin' Penguin IM Client that's good for the soul! - -version 2.0.0: - Changed: - * All the status stuff. Yay! - * gaim_prefs_connect_callback(), added handle parameter - * gtk_imhtml_toolbar now descends from GtkHBox making it easier to add your - own widgets to it - * gaim_find_conversation_with_account, added a "type" parameter - * gaim_gtk_prefs_labeled_spin_button, the "key" parameter is now a - const char* instead of just a char* - * gaim_gtk_prefs_labeled_entry, the "key" parameter is now a const char* - instead of just a char* - * the add_buddy perl sub. The sub now takes the account as the first - argument, and buddy and group as the second and third. It also adds - the buddy to the server-side buddy list of the given account. - * gaim_connection_new, gaim_account_connect and gaim_account_register no - longer return a GaimConnection - * keep_alive in GaimConnection is renamed to keepalive - * gaim_mkstemp, added a second argument, a boolean, of whether or not the - file is binary - * gaim_log_logger_new, rewritten - * gaim_conv_window_remove_conversation()'s last argument to be a - GaimConversation. - * A new blocked icon: pixmaps/status/default/blocked.png - * In pixmaps/status/default: extendedaway.png renamed to extended_away.png - * In pixmaps/status/default: na.png renamed to unavailable.png - * gtk_imhtml_toggle_bold(): No longer returns a value - * gtk_imhtml_toggle_italic(): No longer returns a value - * gtk_imhtml_toggle_underline(): No longer returns a value - * gtk_imhtml_toggle_strike(): No longer returns a value - * gtk_imhtml_scroll_to_end(): Added the smooth paramter - * gaim_log_new(), added conv parameter - * gaim_buddy_icon_new(), leaves a reference which the caller owns. Use - gaim_buddy_icon_unref() immediately if you don't want a reference (the - old behavior). - * GAIM_CONV_UNKNOWN to GAIM_CONV_TYPE_UNKNOWN. - * GAIM_CONV_IM to GAIM_CONV_TYPE_IM. - * GAIM_CONV_CHAT to GAIM_CONV_TYPE_CHAT. - * GAIM_CONV_MISC to GAIM_CONV_TYPE_MISC. - * GAIM_CONV_ANY to GAIM_CONV_TYPE_ANY. - * GaimConversationUiOps.write_conv, Replaced const char *who with - const char *name, const char *alias - * gaim_conv_chat_add_users(), added extra_msgs and new_arrivals (pass NULL - and FALSE respectively, to get the same behavior as before) - * chat_add_users in GaimConversationUiOps, added cbuddies and - new_arrivals and removed buddies. - * chat_rename_user in GaimConversationUiOps, added new_alias - * gaim_conv_chat_cb_new(), added alias. (pass NULL to get the same - behavior as before). - * GaimConversation.log became GList * GaimConversation.logs, so that a - conversation can have multiple logs at once - * gaim_conv_chat_add_user, added extra_msgs - * gaim_notify_userinfo, removed primary and secondary parameters - * GaimNotifyUiOps.notify_userinfo: removed title, primary, and - secondary parameters - * Idle timers are now added and removed in gtkidle.c in response - to the signed-on and signed-off signals - * GaimXfer->ops.read, GaimXfer->ops.write, gaim_xfer_set_read_fnc(), - gaim_xfer_set_write_fnc(), gaim_xfer_read(), gaim_xfer_write(): - Changed ssize_t to gssize - * serv_got_im, serv_got_chat_in, serv_send_im and serv_chat_send all use - GaimMessageFlags instead of GaimConvImFlags / GaimConvChatFlags - * All core<->prpl message passing now uses html. This was previously true - for receiving messages, it's now also true for sending them. prpls that - don't support html need to gaim_unescape_html() the message. - * Notify API: GCallback -> GaimNotifyCloseCallback, - void *user_data -> gpointer user_data - * gaim_notify_searchresults_get_rows_count, - gaim_notify_searchresults_get_columns_count: return type now guint - * gaim_account_notify_added: No longer checks if there is a - GaimBuddy for the added user, that's left up to the prpls. See the - documentation for this function and gaim_account_request_add. - * gaim_accounts_reorder: new_index is now a gint instead of a size_t - * displaying-message signals: displaying-[im|chat]-msg and - displayed-[im|chat]-msg signals are emitted for all messages - (ie, for received messages, sent messages, system messages, error - messages etc.), and the signals now have - gaim_gtk_conversations_get_handle() for their handle. - * GAIM_NOTIFY_BUTTON_ADD_BUDDY to GAIM_NOTIFY_BUTTON_ADD - * conversation-switched: This signal has been moved from conversation to - the UI and the signal-handlers only receive the - conversation that has been switched to. - * GaimPluginProtocolInfo: Added offline_message - * GaimPluginProtocolInfo: Added whiteboard_prpl_ops - * GaimPluginProtocolInfo: Added media_prpl_ops - * GaimPluginProtocolInfo: Added "str" argument to tooltip_text, changed - the return type to void - * GaimPluginProtocolInfo: Added "full" argument to tooltip_text - * gaim_pounce_new(): Added option argument for pounce options - * gaim_network_listen() and gaim_network_listen_range(): Added - socket_type parameter to allow creation of UDP listening. Modified - to be asynchronous with a callback to allow for UPnP operation. - Returns a data structure that can be used to cancel the listen - attempt using gaim_network_listen_cancel() - * GaimPrefCallback: val is now a gconstpointer instead of a gpointer - * gtk_imhtml_get_current_format(): the arguments are now set to TRUE or - FALSE. Previously they were set to TRUE or left alone. Also, you - may now pass NULL if you're not interested in a specific formatting. - * Smiley Themes: Backslashes must be backslash-escaped. - * Plugins: Depedencies are now honored when unloading plugins. - * gaim_markup_extract_info_field(): Added format_cb parameter. - * gaim_str_to_time(): Added support for parsing the MM/DD/YYYY format. - * gaim_plugin_action_new(): label is now const char * - * gaim_plugin_pref_new_with_name(): name is now const char * - * gaim_plugin_pref_new_with_label(): label is now const char * - * gaim_plugin_pref_new_with_name_and_label(): name and label are - now const char * - * gaim_plugin_pref_set_name(): name is now const char * - * gaim_plugin_pref_get_name(): return type is now const char * - * gaim_plugin_pref_set_label(): label is now const char * - * gaim_plugin_pref_get_label(): return type is now const char * - * gaim_plugin_pref_add_choice(): label is now const char * - * struct proto_chat_entry: label is now const char * - * struct proto_chat_entry: identifier is now const char * - * All network activity has been updated to use non-blocking sockets. - This means that plugins must be updated to expect such a socket from - gaim_proxy_connect() and gaim_network_listen*(). - * gaim_proxy_connect(): changed to return NULL on error and a pointer - to a GaimProxyConnectInfo object which can be used to cancel - connection attempts using gaim_proxy_connect_cancel(). - * gaim_gethostbyname_async(): Renamed to gaim_dnsquery_a() and - changed to return a pointer to a data structure that can be - used to cancel the pending DNS query using gaim_dnsquery_destroy() - * gaim_url_fetch(): Renamed to gaim_util_fetch_url() and changed - to return a pointer to a data structer that can be used to cancel - the pending HTTP request using gaim_util_fetch_url_cancel(). - * gaim_gtk_create_imhtml(): Added sw_ret() parameter - * gaim_account_get_log(): Added create parameter - * GAIM_CMD_P_VERYHIGH is now GAIM_CMD_P_VERY_HIGH - * gtk_imhtml_search_find(): Now wraps around to the top instead of - clearing the search at the end. - * gaim_gtkxfer_dialog_show: Can now take NULL to show (and possibly - create) a default gtkxfer dialog. - - Removed: - * gaim_gtk_sound_{get,set}_mute() (replaced by the /gaim/gtk/sound/mute - preference) - * gaim_escape_html(const char *html) (use g_markup_escape_text(html, -1) - instead) - * gaim_accounts_sync, account changes are now scheduled to be saved - automatically - * gaim_connection_connect - * gaim_connection_disconnect - * gaim_connection_register - * gaim_accounts_auto_login - * gaim_find_conversation, use gaim_find_conversation_with_account instead - * serv_login - * serv_close - * serv_finish_login - * gaim_chat_get_display_name - * gaim_conversation_set_history, gaim_conversation_get_history, and - GaimConversation->history. Use gtk_imhtml_get_markup instead. - * serv_rename_group - * set_gaim_user_dir to gaim_util_set_user_dir - * create_prpl_icon to gaim_gtk_create_prpl_icon - * Window flashing support in the core: gaim_conv_window_flash, and flash UI - operation for conversations. Use signal "received-im-msg" or similar. - * All warning stuff from the core. - * gaim_gtkconv_get_dest_tab_at_xy(), instead use gaim_gtkconv_get_tab_at_xy() - * chat_add_user from GaimConversationUiOps: only chat_add_users is used - * chat_remove_user from GaimConversationUiOps: only chat_remove_users is used - * uc from the GaimBuddy struct - * gaim_sound_get_handle() - * gaim_debug_vargs() - * serv_add_buddy(); use gaim_account_add_buddy() instead - * serv_add_buddies(); use gaim_account_add_buddies() instead - * serv_remove_buddy(); use gaim_account_remove_buddy() instead - * serv_remove_buddies(); use gaim_account_remove_buddies() instead - * serv_change_passwd(); use gaim_account_change_password() instead - * serv_touch_idle(): use gaim_gtk_check_idle() instead - * GaimGtkImPane->a_virgin - * gaim_str_strip_cr(); use gaim_str_strip_char(str, '\r') instead - * gaim_find_buddys_group renamed to gaim_buddy_get_group - * gaim_gtkpounce_menu_build() - * gaim_gtkpounce_dialog_show() - * GaimGtkBuddyList->bpmenu - * GaimConvImFlags and GaimConvChatFlags; use GaimMessageFlags instead - * cb and user_data from the ops in GaimNotifyUiOps: This is now handled - by the notify API in the core. - * GaimConversationUiOps.updated: use the conversation-updated signal - * GAIM_SUBTYPE_CONV_WINDOW: windows are now only represented in the UI, - so GAIM_TYPE_BOXED is used for the signal types - * gaim_gtk_privacy_is_showable(): We do fallback privacy in the core - now, so this would always be TRUE now. - * GaimBlistNodeAction: See GaimMenuAction - * gaim_blist_node_action_new(); use gaim_menu_action_new() instead - * gaim_date() - * gaim_date_full(): See gaim_date_format_full() - * gaim_strftime(): See gaim_utf8_strftime() - * GAIM_MESSAGE_COLORIZE - * user_data from gaim_notify_searchresults_new_rows and from - notify_searchresults in GaimNotifyUiOps. - * gaim_conversation_get_send_history(), and send_history from - GaimConversation - * Removed ui_ops from GaimBuddyList. Use gaim_blist_get_ui_ops() instead - * GaimGtkLogViewer hidden... You weren't using it anyway. - * GaimGtkConversation: dialogs (dialogs.search moved to GaimGtkWindow) - * gaim_show_xfer_dialog: Use gaim_gtk_xfer_dialog_show(NULL) instead. - - Added: - * gaim_prefs_disconnect_by_handle() - * a password field to GaimConnection, which only persists for the - session (when "remember password" is false, account->password is - NEVER set) Use gaim_connection_get_password(GaimConnection *gc) - * gaim_log_common_writer, gaim_log_common_lister, gaim_log_common_sizer, - and gaim_log_get_log_dir to allow log formats that use standard Gaim - log directory to use Gaim's built-in code for these purposes. - * GaimLogCommonLoggerData struct for a basic logger_data struct to be - used with "common" logger functions. - * gaim_gtk_blist_node_is_contact_expanded, returns TRUE if the given - blist node is a buddy inside an expanded contact, or is itself an - expanded contact - * GaimLogSet struct, get_log_sets function to GaimLogLogger, - gaim_log_get_log_sets, gaim_log_set_compare - * gaim_privacy_check(), to check if a given user is allowed to send - messages to the specified account - * gtk_imhtml_clear_formatting() - * gtk_imhtml_delete to clear out part of a imhtml buffer - * gtk_imhtml_get_protocol_name() - * gaim_buddy_icons_get_full_path(), to get the full path of a buddy - icon setting - * CHAT_USERS_ALIAS_COLUMN, CHAT_USERS_COLOR_COLUMN, - CHAT_USERS_BUDDY_COLUMN to the list of columns for the chat - user list - * gaim_account_add_buddy() - * gaim_account_add_buddies() - * gaim_account_remove_buddy() - * gaim_account_remove_buddies() - * gaim_account_change_password() - * gaim_account_supports_offline_message() - * gaim_conversation_close_logs(), to force a conversation's log(s) to - be closed. New logs will be opened as necessary. - * gaim_plugin_get_id() - * gaim_plugin_get_name() - * gaim_plugin_get_version() - * gaim_plugin_get_summary() - * gaim_plugin_get_description() - * gaim_plugin_get_author() - * gaim_plugin_get_homepage() - * gaim_gtkconv_switch_active_conversation(GaimConversation *) - * gaim_str_strip_char() to strip a given character from - a given string - * gaim_util_chrreplace() to replace a given character with a - different character - * gaim_gtk_blist_toggle_visibility() to intelligently toggle the - visiblity of the buddy list - * gaim_gtk_blist_visibility_manager_add() to indicate the addition of a - visibility manager - see the docs for more information - * gaim_gtk_blist_visibility_manager_remove() to indicate the removal of - a visibility manager - see the docs for more information - * gaim_gtk_conversations_find_unseen_list() to get a list of conversations - with an "unseen" state >= to the specified state and other criteria - * gaim_gtk_conversations_fill_menu() fill a menu from list of conversations - * gaim_gtk_create_prpl_icon() - * gaim_gtk_create_prpl_icon_with_status() - * gaim_gtk_pounces_manager_show() - * gaim_gtk_pounces_manager_hide() - * gaim_gtk_pounce_editor_show() - * GAIM_POUNCE_MESSAGE_RECEIVED - * GaimPounceOption - * gaim_pounce_set_options() - * gaim_pounce_set_options() - * GAIM_STOCK_CONNECT, GAIM_STOCK_DISCONNECT - * GAIM_STOCK_PLUGIN - * gaim_account_request_add: Notifies the user that they were added to - someone's buddy list, and offers them the choice - of adding that person to their buddy list. - * gaim_blist_alias_contact() - * gaim_cipher_http_digest_calculate_session_key() - * gaim_cipher_http_digest_calculate_response() - * gaim_notify_searchresults_labeled() - * GAIM_NOTIFY_BUTTON_LABELED, GAIM_NOTIFY_BUTTON_INFO, - GAIM_NOTIFY_BUTTON_IM, GAIM_NOTIFY_BUTTON_JOIN, - GAIM_NOTIFY_BUTTON_INVITE - * stock buttons GAIM_STOCK_IM, GAIM_STOCK_INFO - * gaim_conversation_present() - * GaimConversationUiOps->present(GaimConversation *) - * GaimPlugin.unloadable - * gaim_plugin_is_unloadable() - * GAIM_PLUGIN_PREF_STRING_FORMAT - * gaim_plugin_pref_get_format_type() - * gaim_plugin_pref_set_format_type() - * GaimStringFormatType - * gaim_log_get_handle() - * gaim_log_uninit() - * GAIM_SUBTYPE_LOG - * gaim_marshal_POINTER__POINTER_POINTER - * gaim_utf8_ncr_encode() - * gaim_gtk_log_init() - * gaim_gtk_log_get_handle() - * gaim_gtk_log_uninit() - * gaim_util_fetch_url_request() - * GaimMenuAction - * gaim_menu_action_new() - * gaim_menu_action_free() - * GaimInfoFieldFormatCallback - * gaim_utf8_strftime() - * gaim_date_format_short() - * gaim_date_format_long() - * gaim_date_format_full() - * gaim_time_format() - * gaim_plugin_action_free() - * GaimRequestType: Added GAIM_REQUEST_FOLDER - * GaimRequestUiOps: Added request_folder - * gaim_request_folder() - * gaim_gtk_setup_screenname_autocomplete() - * gaim_gtk_set_cursor() - * gaim_gtk_clear_cursor() - * GAIM_MESSAGE_ACTIVE_ONLY - * gaim_proxy_get_setup() - * GaimNotifySearchResultsCallback: Added user_data. - * gaim_notify_searchresults: Added user_data. - * gaim_network_listen_cancel(): Can be used to cancel a previous - call to gaim_network_listen() or gaim_network_listen_range() - * gaim_proxy_connect_cancel(): Can be used to cancel a pending - gaim_proxy_connect() request - * gaim_dnsquery_destroy(): Can be used to cancel a pending DNS - query. - * gaim_util_fetch_url_cancel(): Can be used to cancel a pending - call to gaim_util_fetch_url() or gaim_util_fetch_url_request(). - * GaimGtkWindow: dialogs.search (previously in GaimGtkConversation) - * gaim_buddy_get_server_alias() - - Signals - Changed: (See the Doxygen docs for details on all signals.) - * Signal propagation now stops after a handler returns a non-NULL value. - This value is now returned. Previously, all registered handlers were - called and the value from the last handler was used. - * "buddy-typing" and "buddy-typing-stopped": replaced the GaimConversation* - with GaimAccount*, const char *name. Also, the signal is now emitted - regardless of whether a conversation exists and regardless of whether - the user is on the buddy list. - * "chat-buddy-joined": added the new_arrival argument - * "chat-invited" handlers can now return a value to control what happens - to the invite (accept, reject, prompt the user). - * "chat-left": Emitted *after* setting chat->left to TRUE. - * "drawing-tooltip": the second argument is now a GString* instead of - a char** - * "drawing-tooltip": added the "full" argument - * "received-im-msg" and "received-chat-msg" to match, both now pass a - conversation pointer and flags - * "receiving-im-msg" and "receving-chat-msg" to match, both now pass a - conversation pointer and a pointer to the flags. - * "writing-im-msg", "wrote-im-msg", "writing-chat-msg", "wrote-chat-msg": - Now emitted from a difference place in the message handling code. - The arguments also changed. - * "displaying-im-msg", "displayed-im-msg", "displaying-chat-msg", - "displayed-chat-msg": Added "who" argument, which changes the order - of the existing arguments. - - Signals - Added: (See the Doxygen docs for details on all signals.) - * "account-disabled" - * "account-status-changed" - * "account-alias-changed" - * "cipher-added" - * "cipher-removed" - * "conversation-dragging" - * "dbus-method-called" - * "dbus-introspect" - * "file-recv-accept" - * "file-recv-start" - * "file-recv-cancel" - * "file-recv-complete" - * "file-recv-request" - * "file-send-accept" - * "file-send-start" - * "file-send-cancel" - * "file-send-complete" - * "buddy-added" - * "buddy-removed" - * "blist-node-aliased" - * "buddy-status-changed" - * "buddy-idle-changed": A buddy's idle status changed. - * "buddy-icon-changed" - * "displaying-userinfo" - * "gtkblist-hiding" - * "gtkblist-unhiding" - * "log-displaying" - * "savedstatus-changed" - * "sendto-extended-menu" - - Signals - Removed: - * "account-away": replaced by account-status-changed - * "account-warned" - * "buddy-away": replaced by buddy-status-changed - * "buddy-back": replaced by buddy-status-changed - * "buddy-idle": replaced by buddy-idle-changed - * "buddy-unidle": replaced by buddy-idle-changed - * "buddy-icon-cached": replaced by buddy-icon-changed - * "conversation-drag-end": replaced by conversation-dragging - * "conversation-switching" - -version 1.5.0 (8/11/2005): - * Added: gaim_xfer_conversation_write - Writes a messages to a conversation window with the use - of the associated file transfer. - -version 1.4.0 (7/7/2005): - * Added: gaim_buddy_icon_uncache() - Deletes a cached buddy icon for a specified buddy - * Added: gaim_buddy_icon_get_type - Attempts to determine the type of a given buddy icon. - * Added: buddy-icon-cached signal - Emitted when a new buddy icon is cached. - -version 1.3.1 (6/9/2005): - * No changes - -version 1.3.0 (5/10/2005): - * Added: gaim_blist_schedule_save() - This should be used instead of gaim_blist_sync when you - want the blist.xml file to be written to disk. There - should not be many occasions when you want to do this, - as the functions in the blist API that modify the buddy - list will normally call it for you. - * Added: OPT_PROTO_NO_NORMALIZE_CONV - Tells the conversation API to not normalize screen names - in conversations. This is used by the Jabber PRPL. - -version 1.2.1 (4/3/2005): - * No changes - -version 1.2.0 (3/17/2005): - * You can use gaim_signal_connect_priority() and - gaim_signal_connect_priority_vargs() to connect to - Gaim signals with a given priority (Will Gorman) - * Added: gaim_conversation_set_features - gaim_conversation_get_features - These allow plugins (notable prpls) to change the - formatting capabilities of an existing conversation. - This comes with a new "features" field in - GaimConversation (Christopher O'Brien) - * Added: GAIM_CONNECTION_NO_IMAGES to GaimConectionFlags - (Christopher O'Brien) - * Added: GAIM_CBFLAGS_TYPING to GaimConvChatBuddyFlags - (Christopher O'Brien) - * Added: gaim_account_request_add which takes the same arguments as - * gaim_account_notify_added but always asks the user if they want to add - * the buddy to the buddy list - * Added: An accompanying request_add GaimAccountUiOp - -version 1.1.4 (2/24/2005): - * No changes - -version 1.1.3 (2/17/2005): - * No changes - -version 1.1.2 (1/20/2005): - * No changes - -version 1.1.1 (12/28/2004): - * No changes - -version 1.1.0 (12/02/2004): - * Added: gaim_utf8_salvage - * Added: binary relocation support in prefix.h - WARNING: If your plugin uses anything inside the - #ifdef ENABLE_BINRELOC from prefix.h, it won't be - loadable on a copy of Gaim compiled without binreloc - support. In particular, watch out for the autoconf-like - macros, and accidently including them through internal.h, - which you probably shouldn't be including anyway. - -version 1.0.0 (09/17/2004): - * Added: get_chat_name to the GaimPluginProtocolInfo struct - * Changed: gaim_blist_update_buddy_presence(), presence changed to - type gboolean - * Changed: the versioning scheme, and all the plugin structs - -version 0.82 (08/26/2004): - Gaim API: - * Removed: gaim_gtk_get_dispstyle(), gaim_gtk_change_text() - * Removed: multi.h - * Renamed: ui.h to gtkdialogs.h - * Renamed: gtkinternal.h to gtkgaim.h - * Renamed: show_info_dialog to gaim_gtkdialogs_info - * Renamed: show_log_dialog to gaim_gtkdialogs_log - * Renamed: show_warn_dialog to gaim_gtkdialogs_warn - * Renamed: show_im_dialog to gaim_gtkdialogs_im - * Renamed: gaim_gtkdialogs_new_im to gaim_gtkdialogs_im_with_user - * Renamed: destroy_all_dialogs to gaim_gtkdialogs_destroy_all - * Renamed: alias_dialog_bud to gaim_gtkdialogs_alias_buddy - * Renamed: alias_dialog_contact to gaim_gtkdialogs_alias_contact - * Renamed: alias_dialog_blist_chat to gaim_gtkdialogs_alias_chat - * Renamed: show_confirm_del to gaim_gtkdialogs_remove_buddy - * Renamed: show_confirm_del_group to gaim_gtkdialogs_remove_group - * Renamed: show_confirm_del_blist_chat to gaim_gtkdialogs_remove_chat - * Renamed: show_confirm_del_contact to gaim_gtkdialogs_remove_contact - * Renamed: show_about to gaim_gtkdialogs_about - * Added: gaim_notify_userinfo() and the associated notify_userinfo() UI op - (someone who knows just why we have this can edit here) - - Buddy List API: - * Changed: gaim_blist_request_add_chat(), added name parameter - * Added: gaim_contact_on_account() - * Added: flags parameter to the GaimBlistNode struct - - Conversation API: - * Added: gaim_gtkconv_button_new() - - Protocol Plugin API: v7 - * Added: chat_info_defaults to the GaimPluginProtocolInfo struct - - Signals: - * Added: conversation-updated for any update to the data associated - with the conversation (topic, icon, adding to buddy list, etc.) - - Conversation API: - * Changed: gaim_conv_chat_add_user() (added new_arrival parameter) - -version 0.81 (08/05/2004): - Commands API: - * Most functions now have a void *data argument. - - Blist API: - * Added: gaim_buddy_get_contact_alias - * Renamed: gaim_get_buddy_alias to gaim_buddy_get_alias - * Renamed: gaim_get_buddy_alias_only to gaim_buddy_get_alias_only - - Conversation API: - * Changed: gaim_conv_chat_add_user(), added flags parameter - * Changed: gaim_conv_chat_add_users(), added GList of flags parameter - * Changed: gaim_conv_chat_get_users(), now returns a GList of - GaimConvChatBuddy's - * Changed: gaim_conv_chat_set_users() now expects a GList of - GaimConvChatBuddy's - * Added: gaim_conv_chat_set_user_flags() - * Added: gaim_conv_chat_get_user_flags() - * Added: gaim_conv_chat_find_user() - * Added: gaim_conv_chat_cb_new() - * Added: gaim_conv_chat_cb_find() - * Added: gaim_conv_chat_cb_destroy() - * Added: gaim_conv_chat_cb_get_name() - - Conversation UI ops: - * Added: chat_update_user() - - Signals: - * Changed: chat-buddy-joining & chat-buddy-joined now include the user's flags - * Changed: chat-buddy-joining & chat-buddy-leaving are now booleans, return - TRUE if you don't want the join/leave to be displayed in the UI. - * Added: chat-buddy-flags for when user's flags change - gaim_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT (required for the new - chat-buddy-flags signal) - * Added: account-modified for when account settings have been changed. - -version 0.80 (07/15/2004): - Gaim API: - * Removed: PRPL numbers : gaim_account_set_protocol(), - gaim_account_get_protocol(), gaim_accounts_find_with_prpl_num, - gaim_prpl_num_to_id(), gaim_prpl_id_to_num(), GaimProtocol - - Protocol Plugin API: v6 - * Added: can_receive_file & send_file to the GaimPluginProtocolInfo struct - - Signals: - * Changed "chat-invited" to also include the components hash table so - plugins can use serv_join_chat when the signal is emitted. - * Added "chat-topic-changed" signal plugins know when a topic is changed. - -version 0.79 (06/24/2004): - Gaim API: - * gaim_url_parse() now takes two additional parameters, which are used - for returning the username and password from the URL, if they exist. - * Added: has_focus UI op to GaimConversationUiOps and - GaimConvWindowUiOps. - * Added: gaim_conversation_has_focus() and gaim_conv_window_has_focus(). - * Removed: gaim_blist_save() - - Protocol Plugin API: v5 - * Changed: add_buddy, add_buddies, remove_buddy, remove_buddies, - rename_group and remove_group to take GaimBuddy's and - GaimGroup's consistently. - * Removed: OPT_PROTO_BUDDY_ICON (replaced by icon_spec) - * Added: icon_spec to the GaimPluginProtocolInfo struct - -version 0.78 (05/30/2004): - Plugin API: v4 - * Added: actions - for plugins to add to the new Plugin Actions menu - - Loader Plugin API: v2 (no changes) - - Protocol Plugin API: v4 - * Removed: set_dir, get_dir and dir_search (not used, AIM-centric) - * Removed: actions (replaced by generic plugin actions) - - Perl Plugin API: v2 (no changes) - TCL Plugin API: (no changes) - - Signals: - * Added: "blist-node-extended-menu" for extending Buddy, Chat and - Group right-click menus - * Added: "drawing-tooltip" for plugins to allow plugins to change text - appearing in tooltips - * Added: "gtkblist-created" - * Added: "receiving-im-msg" and "receiving-chat-msg" (these behave - exactly like received-*-msg used to) - * Added: "buddy-idle-updated" signal, for when the idle time changes. - * Changed: "received-im-msg" and "received-chat-msg" no longer pass - pointers to who, message and flags, and are now void. - * Removed: "drawing-menu" - it was UI sepecific and - "blist-node-extended-menu" is superior - -version 0.77 (04/22/2004): - Loader & Protocol Plugins independantly versioned - Plugin loading now checks versioning on plugins (Standard, Loader & - Protocol) - new GAIM_{PLUGIN,PRPL,LOADER}_API_VERSION constants - - Plugin API: v3 - * Added: prefs_info for UI independant plugin prefs - - Loader Plugin API: v2 - * Added: api_version at top of GaimPluginLoaderInfo struct - - Protocol Plugin API: v2 - * Added: api_version at top of GaimPluginProtocolInfo struct - * Added: chat_menu for protocol specific extensions to the chat menu - * Removed: get_away "Nada used it. Pink elephants on parade." - * Removed: protocol_prefs (replaced by generic plugin prefs_info) - - Perl Plugin API: v2 (no changes) - TCL API: (no changes) - - Signals: - * Added: "conversation-drag-ended" - -version 0.76 (04/01/2004): - Plugin API: v2 - Perl Plugin API: v2 - Loader Plugin API: (not versioned) - Protocol Plugin API: (not versioned) - * Added: protocol_prefs for protocol specific preferences - * Added: reject_chat so protocols can act on chat invite rejection - - TCL Plugin API: (not versioned) - * Changes to plugin registration to show descriptions - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-10 20:06:06
|
Revision: 17223 http://svn.sourceforge.net/gaim/?rev=17223&view=rev Author: thekingant Date: 2006-09-10 13:05:53 -0700 (Sun, 10 Sep 2006) Log Message: ----------- Move doc/HOWTO to PLUGINS_HOWTO. Someone should add a section to the bottom of our C Plugin HOWTO that describes how to compile a C plugin outside of the Gaim source tree, and give a really small example Makefile Added Paths: ----------- trunk/PLUGINS_HOWTO Removed Paths: ------------- trunk/doc/HOWTO Copied: trunk/PLUGINS_HOWTO (from rev 17218, trunk/doc/HOWTO) =================================================================== --- trunk/PLUGINS_HOWTO (rev 0) +++ trunk/PLUGINS_HOWTO 2006-09-10 20:05:53 UTC (rev 17223) @@ -0,0 +1,20 @@ +For information on writing a plugin for Gaim, go +http://gaim.sourceforge.net/api/ and see the HOWTOs in the +"Related Pages" section. + +You can also generate this documentation locally by installing +doxygen and graphviz dot, then running "make docs" in the Gaim +source tree. The documentation will be in the docs/html directory. + +This next paragraph is old and possibly out of date: +Compilation of the plugins is fairly straight-forward; there is a +Makefile in this directory that has a rule for making the .so file +from a .c file. No modification of the Makefile should be necessary, +unless if you simply want to type 'make' to have it made; otherwise, +'make filename.so' will take filename.c and make the .so plugin from +it. If you need to link in with extra libraries, you can set the +environment variable PLUGIN_LIBS to be the libraries you want to link +with. + +It should be possible to compile plugins outside of the Gaim source +tree, which is a much cleaner solution. Deleted: trunk/doc/HOWTO =================================================================== --- trunk/doc/HOWTO 2006-09-10 20:04:20 UTC (rev 17222) +++ trunk/doc/HOWTO 2006-09-10 20:05:53 UTC (rev 17223) @@ -1,83 +0,0 @@ -Everything in this file should be considered old and potentially out of -date. For more reliable information, install doxygen and graphiz dot, -then run -make docs -in the gaim source tree. This will produce html docs in gaim/docs/html -that will provide an api reference and in the related pages section, -information on perl and c plugins. - - -Ok, this howto is going to be really short and sweet and to the point. - -First off, before you do anything else, in all of the files for your plugin, -put the lines - -#define GAIM_PLUGINS -#include "gaim.h" - -I mean this. Without this, all kinds of things will not work correctly. If you -really want to know exactly what this does, read ../src/gaim.h and learn. But -if you don't want to do that, just know that it's important. - -Now that you've put that there, make sure gaim.h is in your include path. - -Ok, now you're ready to write the plugin. - -The only function that is required is gaim_plugin_init(GModule *). This gets -called as soon as it gets loaded (sort of - man dlopen for more details). If -your function never returns, it will crash gaim! If your plugin uses up all -the memory in the system, it will crash gaim! Once your plugin gets loaded, -it effectively becomes a part of gaim, and anything that goes wrong will look -like it is a problem with gaim itself. I write bugfree code! :) Therefore, it -is your problem, not mine. (I'm usually nice and willing to help you with your -problems though.) - -The GModule* that gets passed to gaim_plugin_init is the handle for the plugin. -DO NOT CHANGE THIS POINTER! Bad things will happen. You've been warned. It's -needed for connecting to signals and things. It's a good idea to remember it -somehow. - -gaim_plugin_init should return a char*. If the char* returned is not NULL, it -is interpreted as an error, and used as an error message. See the ChangeLog -file in this directory for more details. - -You can basically do anything you want in the plugin. You can make function -calls, change public widgets, display new widgets, things like that. But the -really neat thing is you can do things at events. For example, when one of -your buddies signs on, you can instantly send them a message. You can modify -the incoming and outgoing text. You can do all kinds of crazy things. Whatever -you want. Check out SIGNALS for more information. - -Plugins can share globals with gaim, but will not share with other plugins. -This is so if you have a global variable GtkWidget *window in your plugin and -J. Random Hacker also has the same name on a global variable, you won't be -constantly overwriting each others' variables. Unfortunately, this also means -that plugins will have difficulty working together. But then again, that's -what shared memory is for. - -Plugins can be configured. This makes it so they don't have to be recompiled -in order to change things internal to them, and it's also just a cool feature -to have :). It's optional; to allow your plugin to be configured, add a -function called gaim_plugin_config(). The advised course of action is to have -it pop up a dialog window; but it's your plugin. - -When your plugin gets unloaded, gaim will try to call gaim_plugin_remove(). It -doesn't have to be there, but it's nice if, say, you create a window, and when -the plugin gets unloaded, it removes the window. Also, all the callbacks you -have attached to gaim signals will be removed. - -Plugins can also unload themselves. To do this, call gaim_plugin_unload(GModule *) -(the GModule* is the handle passed to gaim_plugin_init). When your plugin gets -unloaded, gaim will remove all of your callbacks. It will not call your -gaim_plugin_remove function, however, since it will assume you have already -done the necessary cleanup. - -Compilation of the plugins is fairly straight-forward; there is a Makefile in -this directory that has a rule for making the .so file from a .c file. No -modification of the Makefile should be necessary, unless if you simply want -to type 'make' to have it made; otherwise, 'make filename.so' will take -filename.c and make the .so plugin from it. If you need to link in with extra -libraries, you can set the environment variable PLUGIN_LIBS to be the libraries -you want to link with. - -There are a few examples in this directory. Enjoy. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-10 20:12:33
|
Revision: 17225 http://svn.sourceforge.net/gaim/?rev=17225&view=rev Author: thekingant Date: 2006-09-10 13:12:24 -0700 (Sun, 10 Sep 2006) Log Message: ----------- This is a better name Added Paths: ----------- trunk/PLUGIN_HOWTO Removed Paths: ------------- trunk/PLUGINS_HOWTO Deleted: trunk/PLUGINS_HOWTO =================================================================== --- trunk/PLUGINS_HOWTO 2006-09-10 20:08:19 UTC (rev 17224) +++ trunk/PLUGINS_HOWTO 2006-09-10 20:12:24 UTC (rev 17225) @@ -1,20 +0,0 @@ -For information on writing a plugin for Gaim, go -http://gaim.sourceforge.net/api/ and see the HOWTOs in the -"Related Pages" section. - -You can also generate this documentation locally by installing -doxygen and graphviz dot, then running "make docs" in the Gaim -source tree. The documentation will be in the docs/html directory. - -This next paragraph is old and possibly out of date: -Compilation of the plugins is fairly straight-forward; there is a -Makefile in this directory that has a rule for making the .so file -from a .c file. No modification of the Makefile should be necessary, -unless if you simply want to type 'make' to have it made; otherwise, -'make filename.so' will take filename.c and make the .so plugin from -it. If you need to link in with extra libraries, you can set the -environment variable PLUGIN_LIBS to be the libraries you want to link -with. - -It should be possible to compile plugins outside of the Gaim source -tree, which is a much cleaner solution. Copied: trunk/PLUGIN_HOWTO (from rev 17224, trunk/PLUGINS_HOWTO) =================================================================== --- trunk/PLUGIN_HOWTO (rev 0) +++ trunk/PLUGIN_HOWTO 2006-09-10 20:12:24 UTC (rev 17225) @@ -0,0 +1,20 @@ +For information on writing a plugin for Gaim, go +http://gaim.sourceforge.net/api/ and see the HOWTOs in the +"Related Pages" section. + +You can also generate this documentation locally by installing +doxygen and graphviz dot, then running "make docs" in the Gaim +source tree. The documentation will be in the docs/html directory. + +This next paragraph is old and possibly out of date: +Compilation of the plugins is fairly straight-forward; there is a +Makefile in this directory that has a rule for making the .so file +from a .c file. No modification of the Makefile should be necessary, +unless if you simply want to type 'make' to have it made; otherwise, +'make filename.so' will take filename.c and make the .so plugin from +it. If you need to link in with extra libraries, you can set the +environment variable PLUGIN_LIBS to be the libraries you want to link +with. + +It should be possible to compile plugins outside of the Gaim source +tree, which is a much cleaner solution. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-10 20:14:47
|
Revision: 17226 http://svn.sourceforge.net/gaim/?rev=17226&view=rev Author: thekingant Date: 2006-09-10 13:14:43 -0700 (Sun, 10 Sep 2006) Log Message: ----------- Fix two Makefiles to include the correct files in EXTRA_DIST Modified Paths: -------------- trunk/Makefile.am trunk/doc/Makefile.am Modified: trunk/Makefile.am =================================================================== --- trunk/Makefile.am 2006-09-10 20:12:24 UTC (rev 17225) +++ trunk/Makefile.am 2006-09-10 20:14:43 UTC (rev 17226) @@ -1,22 +1,26 @@ EXTRA_DIST = \ COPYRIGHT \ + ChangeLog.API \ + ChangeLog.win32 \ Doxyfile.in \ + HACKING \ + Makefile.mingw \ + PLUGIN_HOWTO \ + PROGRAMMING_NOTES \ + README.SVN \ + README.dbus \ + README.mingw \ + VERSION.in \ gaim.pc.in \ gaim.spec.in \ gaim.apspec.in \ gaim.desktop.in \ gaim.service.in \ gaim-installer.nsi \ - HACKING \ intltool-extract.in \ intltool-merge.in \ intltool-update.in \ - PROGRAMMING_NOTES \ - ChangeLog.win32 \ config.h.mingw \ - Makefile.mingw \ - README.mingw \ - VERSION.in \ gtk/plugins/win32/transparency/Makefile.mingw \ gtk/plugins/win32/transparency/win2ktrans.c \ gtk/plugins/win32/winprefs/gtkappbar.c \ Modified: trunk/doc/Makefile.am =================================================================== --- trunk/doc/Makefile.am 2006-09-10 20:12:24 UTC (rev 17225) +++ trunk/doc/Makefile.am 2006-09-10 20:14:43 UTC (rev 17226) @@ -2,7 +2,6 @@ EXTRA_DIST = \ C-HOWTO.dox \ - CREDITS \ FAQ \ PERL-HOWTO.dox \ TCL-HOWTO.dox \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-10 20:46:54
|
Revision: 17227 http://svn.sourceforge.net/gaim/?rev=17227&view=rev Author: thekingant Date: 2006-09-10 13:46:47 -0700 (Sun, 10 Sep 2006) Log Message: ----------- Include gaim.h and gntgaim.h in the tar.gz file Modified Paths: -------------- trunk/console/Makefile.am trunk/libgaim/Makefile.am Modified: trunk/console/Makefile.am =================================================================== --- trunk/console/Makefile.am 2006-09-10 20:14:43 UTC (rev 17226) +++ trunk/console/Makefile.am 2006-09-10 20:46:47 UTC (rev 17227) @@ -24,6 +24,7 @@ gntconn.h \ gntconv.h \ gntdebug.h \ + gntgaim.h \ gntnotify.h \ gntplugin.h \ gntprefs.h \ Modified: trunk/libgaim/Makefile.am =================================================================== --- trunk/libgaim/Makefile.am 2006-09-10 20:14:43 UTC (rev 17226) +++ trunk/libgaim/Makefile.am 2006-09-10 20:46:47 UTC (rev 17227) @@ -83,6 +83,7 @@ desktopitem.h \ eventloop.h \ ft.h \ + gaim.h \ idle.h \ imgstore.h \ log.h \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <g-...@us...> - 2006-09-11 00:28:48
|
Revision: 17231 http://svn.sourceforge.net/gaim/?rev=17231&view=rev Author: g-off_ Date: 2006-09-10 17:28:35 -0700 (Sun, 10 Sep 2006) Log Message: ----------- Switched from using libdbi to using sqlite3. Results in easier configuration (no need to setup database server/create database/add tables). Also Gtk Gaim no longer needs to link against libdbi. This should make the plugin more easily distributable and thus hopefully it can be included in binary releases of Gaim (fingers crossed). Modified Paths: -------------- trunk/configure.ac trunk/gtk/Makefile.am trunk/gtk/plugins/cap/Makefile.am trunk/gtk/plugins/cap/cap.c trunk/gtk/plugins/cap/cap.h Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-09-10 22:33:28 UTC (rev 17230) +++ trunk/configure.ac 2006-09-11 00:28:35 UTC (rev 17231) @@ -324,12 +324,10 @@ fi dnl ####################################################################### - dnl # Check for libdbi (for the Contact Availability Prediction plugin) + dnl # Check for libsqlite3 (for the Contact Availability Prediction plugin) dnl ####################################################################### if test "x$enable_cap" = "xyes"; then - AC_CHECK_HEADERS(dbi/dbi.h, , enable_cap="no") - AC_CHECK_LIB(dbi, dbi_result_field_is_null, CAP_LIBS="-ldbi", enable_cap="no") - AC_SUBST(CAP_LIBS) + PKG_CHECK_MODULES(SQLITE3, sqlite3 >= 3.3, , enable_cap="no") fi else # GTK Modified: trunk/gtk/Makefile.am =================================================================== --- trunk/gtk/Makefile.am 2006-09-10 22:33:28 UTC (rev 17230) +++ trunk/gtk/Makefile.am 2006-09-11 00:28:35 UTC (rev 17231) @@ -161,7 +161,6 @@ $(STARTUP_NOTIFICATION_LIBS) \ $(LIBXML_LIBS) \ $(GTK_LIBS) \ - $(CAP_LIBS) \ $(top_builddir)/libgaim/libgaim.la AM_CPPFLAGS = \ Modified: trunk/gtk/plugins/cap/Makefile.am =================================================================== --- trunk/gtk/plugins/cap/Makefile.am 2006-09-10 22:33:28 UTC (rev 17230) +++ trunk/gtk/plugins/cap/Makefile.am 2006-09-11 00:28:35 UTC (rev 17231) @@ -15,10 +15,8 @@ endif -CAP_LIBS = -ldl -ldbi +cap_la_LIBADD = $(SQLITE3_LIBS) -cap_la_LIBADD = $(CAP_LIBS) - AM_CPPFLAGS = \ -DDATADIR=\"$(datadir)\" \ -DVERSION=\"$(VERSION)\" \ @@ -26,4 +24,4 @@ -I$(top_srcdir)/gtk \ $(DEBUG_CFLAGS) \ $(GTK_CFLAGS) \ - $(CAP_CFLAGS) + $(SQLITE3_CFLAGS) Modified: trunk/gtk/plugins/cap/cap.c =================================================================== --- trunk/gtk/plugins/cap/cap.c 2006-09-10 22:33:28 UTC (rev 17230) +++ trunk/gtk/plugins/cap/cap.c 2006-09-11 00:28:35 UTC (rev 17231) @@ -21,29 +21,6 @@ #include "cap.h" -static char * quote_string(const char *str) { - gchar *quoted_str = NULL; - quoted_str = g_strdup(str); - dbi_driver_quote_string(_driver, "ed_str); - return quoted_str; -} - -static void generate_minute_stats(CapStatistics *statistics) { - gchar *buddy_name = quote_string(statistics->buddy->name); - gchar *protocol_id = quote_string(gaim_account_get_protocol_id(statistics->buddy->account)); - gchar *account_id = quote_string(gaim_account_get_username(statistics->buddy->account)); - dbi_result result = dbi_conn_queryf(_conn, "select minute_val, success_count, failed_count from cap_msg_count where buddy=%s account=%s and protocol=%s;", buddy_name, account_id, protocol_id); - - while(dbi_result_next_row(result)) { - int minute_val = dbi_result_get_int(result, "minute_val"); - int success_count = dbi_result_get_int(result, "success_count"); - int failed_count = dbi_result_get_int(result, "failed_count"); - double ratio = ((double)success_count/(double)(success_count + failed_count)); - statistics->minute_stats[minute_val] = ratio; - } - dbi_result_free(result); -} - static void generate_prediction(CapStatistics *statistics) { if(statistics->buddy) { if(statistics->prediction == NULL) @@ -56,86 +33,67 @@ static double generate_prediction_for(GaimBuddy *buddy) { double prediction = 1.0f; gboolean generated = FALSE; - gchar *buddy_name = quote_string(buddy->name); - gchar *protocol_id = quote_string(gaim_account_get_protocol_id(buddy->account)); - gchar *account_id = quote_string(gaim_account_get_username(buddy->account)); - gchar *status_id = quote_string(gaim_status_get_id(get_status_for(buddy))); + gchar *buddy_name = buddy->name; + const gchar *protocol_id = gaim_account_get_protocol_id(buddy->account); + const gchar *account_id = gaim_account_get_username(buddy->account); + const gchar *status_id = gaim_status_get_id(get_status_for(buddy)); time_t t = time(NULL); struct tm *current_time = localtime(&t); int current_minute = current_time->tm_min + current_time->tm_hour * 60; int threshold = gaim_prefs_get_int("/plugins/gtk/cap/threshold"); int min_minute = (current_minute - threshold) % 1440; int max_minute = (current_minute + threshold) % 1440; - dbi_result result; + char *sql; + sqlite3_stmt *stmt = NULL; + const char *tail = NULL; + int rc; - result = dbi_conn_queryf(_conn, "select success_count, failed_count from cap_msg_count where buddy=%s and account=%s and protocol=%s and minute_val>=%d and minute_val<=%d;", buddy_name, account_id, protocol_id, min_minute, max_minute); - if(result) { + + sql = sqlite3_mprintf("select sum(success_count) as successes, sum(failed_count) as failures " + "from cap_msg_count where " + "buddy=%Q and account=%Q and protocol=%Q and minute_val>=%d and minute_val<=%d;", + buddy_name, account_id, protocol_id, min_minute, max_minute); + rc = sqlite3_prepare(_db, sql, -1, &stmt, &tail); + if(rc == SQLITE_OK) { int successes = 0; int failures = 0; - while(dbi_result_next_row(result)) { - if(!dbi_result_field_is_null(result, "success_count")) - successes += dbi_result_get_int(result, "success_count"); - - if(!dbi_result_field_is_null(result, "failed_count")) - failures += dbi_result_get_int(result, "failed_count"); + if(stmt != NULL) { + if(sqlite3_step(stmt) == SQLITE_ROW) { + successes = sqlite3_column_int(stmt, 0); + failures = sqlite3_column_int(stmt, 1); + if(failures + successes > 0) { + prediction *= ((double)successes/((double)(successes+failures))); + generated = TRUE; + } + } + sqlite3_finalize(stmt); } - if(failures + successes > 0) { - prediction *= ((double)successes/((double)(successes + failures))); - generated = TRUE; - } - dbi_result_free(result); } + sqlite3_free(sql); - -/* - * Note to self: apparently when using a function like sum results in not being able to get - * the values for fields using libdbi...why? the way I'm doing it above sucks, find a fix. - result = dbi_conn_queryf(_conn, "select sum(success_count) as successes, sum(failed_count) as failures from cap_msg_count where buddy=%s and account=%s and protocol=%s and minute_val>=%d and minute_val<=%d;", buddy_name, account_id, protocol_id, min_minute, max_minute); - gaim_debug_info("cap", "select sum(success_count) as successes, sum(failed_count) as failures from cap_msg_count where buddy=%s and account=%s and protocol=%s and minute_val>=%d and minute_val<=%d;\n", buddy_name, account_id, protocol_id, min_minute, max_minute); - - if(result) { - int failures; - int successes; - int rc = dbi_result_get_numrows(result); - dbi_result_next_row(result); - gaim_debug_info("cap", "Result code: %d\n", rc); - failures = dbi_result_get_int_idx(result, 1);//"failures"); - successes = dbi_result_get_int_idx(result, 2); //"successes"); - gaim_debug_info("cap", "Successes = %d; Failures = %d\n", successes, failures); - dbi_result_get_fields(result, "successes.%i failures.%i", &successes, &failures); - gaim_debug_info("cap", "Successes = %d; Failures = %d\n", successes, failures); - if(failures + successes > 0.0) - prediction *= ((double)successes/((double)(successes + failures))); - gaim_debug_info("cap", "After message value prediction is %0.4f.\n", prediction); - dbi_result_free(result); - } -*/ - - result = dbi_conn_queryf(_conn, "select success_count, failed_count from cap_status_count where buddy=%s and account=%s and protocol=%s and status=%s;", buddy_name, account_id, protocol_id, status_id); - if(result) { + sql = sqlite3_mprintf("select sum(success_count) as successes, sum(failed_count) as failures " + "from cap_status_count where " + "buddy=%Q and account=%Q and protocol=%Q and status=%Q;", + buddy_name, account_id, protocol_id, status_id); + rc = sqlite3_prepare(_db, sql, -1, &stmt, &tail); + if(rc == SQLITE_OK) { int successes = 0; int failures = 0; - - dbi_result_next_row(result); - - if(!dbi_result_field_is_null(result, "success_count")) - successes = dbi_result_get_int(result, "success_count"); - - if(!dbi_result_field_is_null(result, "failed_count")) - failures = dbi_result_get_int(result, "failed_count"); - - if(successes + failures > 0) { - prediction *= ((double)successes/(double)(successes + failures)); - generated = TRUE; + if(stmt != NULL) { + if(sqlite3_step(stmt) == SQLITE_ROW) { + successes = sqlite3_column_int(stmt, 0); + failures = sqlite3_column_int(stmt, 1); + if(failures + successes > 0) { + prediction *= ((double)successes/((double)(successes+failures))); + generated = TRUE; + } + } + sqlite3_finalize(stmt); } - dbi_result_free(result); } + sqlite3_free(sql); - free(buddy_name); - free(account_id); - free(protocol_id); - free(status_id); - + if(strcmp(gaim_status_get_id(get_status_for(buddy)), "offline") == 0) { //This is kind of stupid, change it. if(prediction == 1.0f) @@ -150,12 +108,10 @@ static CapStatistics * get_stats_for(GaimBuddy *buddy) { gchar *buddy_name; - gchar *q_buddy_name = quote_string(buddy->name); CapStatistics *stats; buddy_name = g_strdup(buddy->name); stats = g_hash_table_lookup(_buddy_stats, buddy_name); if(!stats) { - dbi_result result; stats = g_malloc(sizeof(CapStatistics)); stats->last_message = -1; stats->last_message_status_id = NULL; @@ -163,37 +119,11 @@ stats->prediction = NULL; g_hash_table_insert(_buddy_stats, buddy_name, stats); stats->buddy = buddy; - /* Setup the last seen online time from database or -1 if no time available. */ - result = dbi_conn_queryf(_conn, - //"select max(event_time) as last_event_time from cap_status where buddy=\'%s\' and status!=\'offline\';", - "select event_time from cap_status where buddy=\'%s\' and status!=\'offline\' order by event_time desc;", - q_buddy_name); - if(result && dbi_result_get_numrows(result) > 0) { - dbi_result_next_row(result); - stats->last_seen = dbi_result_get_datetime(result, "event_time"); - } else { - stats->last_seen = -1; - } - dbi_result_free(result); - /* Setup the last messaged time to be a 'useable' value for comparisons. */ - //result = dbi_conn_queryf(conn, "", ); - /* Setup the last status id to nothing */ - // --> Better approach would be to get the last status available in db and use it. - result = dbi_conn_queryf(_conn, - "select status, max(event_time) from cap_status where buddy=\'%s\' group by status;", - buddy->name); - if(result && dbi_result_get_numrows(result) > 0) { - dbi_result_next_row(result); - stats->last_status_id = dbi_result_get_string_copy(result, "status"); - } else { - stats->last_status_id = ""; - } - dbi_result_free(result); - //TODO: populate stats from database + stats->last_seen = -1; + stats->last_status_id = ""; } else { g_free(buddy_name); } - free(q_buddy_name); generate_prediction(stats); return stats; } @@ -206,43 +136,161 @@ g_free(stats); } -static gboolean remove_stats_for(GaimBuddy *buddy) { - gboolean success = TRUE; - //GString *buddy_name = g_string_new(buddy->name); - gchar *buddy_name = g_strdup(buddy->name); - success = g_hash_table_remove(_buddy_stats, buddy_name); - g_free(buddy_name); - return success; -} +static void +insert_cap_msg_count_success(const char *buddy_name, const char *account, const char *protocol, int minute) { + int rc; + sqlite3_stmt *stmt; + const char *tail; + char *sql_select = sqlite3_mprintf("SELECT * FROM cap_msg_count WHERE " + "buddy=%Q AND account=%Q AND protocol=%Q AND minute_val=%d;", + buddy_name, account, protocol, minute); + char *sql_ins_up = NULL; -static dbi_result insert_cap_msg_count_success(const char *buddy_name, const char *account, const char *protocol, int minute) { - gaim_debug_info("cap", "Insert cap_msg_count success: %s %s %s %d\n", buddy_name, account, protocol, minute); - return dbi_conn_queryf(_conn, "insert into cap_msg_count (buddy, account, protocol, minute_val, success_count, failed_count) values (%s, %s, %s, %d, %d, %d) on duplicate key update success_count=success_count+1;", buddy_name, account, protocol, minute, 1, 0); + gaim_debug_info("cap", "%s\n", sql_select); + + sqlite3_prepare(_db, sql_select, -1, &stmt, &tail); + + rc = sqlite3_step(stmt); + + if(rc == SQLITE_DONE) { + sql_ins_up = sqlite3_mprintf("INSERT INTO cap_msg_count VALUES (%Q, %Q, %Q, %d, %d, %d);", + buddy_name, account, protocol, minute, 1, 0); + } else if(rc == SQLITE_ROW) { + sql_ins_up = sqlite3_mprintf("UPDATE cap_msg_count SET success_count=success_count+1 WHERE " + "buddy=%Q AND account=%Q AND protocol=%Q AND minute_val=%d;", + buddy_name, account, protocol, minute); + } else { + gaim_debug_info("cap", "%d\n", rc); + sqlite3_finalize(stmt); + sqlite3_free(sql_select); + return; + } + + sqlite3_finalize(stmt); + sqlite3_free(sql_select); + + sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL); + sqlite3_free(sql_ins_up); } -static dbi_result insert_cap_status_count_success(const char *buddy_name, const char *account, const char *protocol, const char *status_id) { - gaim_debug_info("cap", "Insert cap_status_count success: %s %s %s %s\n", buddy_name, account, protocol, status_id); - return dbi_conn_queryf(_conn, "insert into cap_status_count (buddy, account, protocol, status, success_count, failed_count) values(%s, %s, %s, %s, %d, %d) on duplicate key update success_count=success_count+1;", buddy_name, account, protocol, status_id, 1, 0); +static void +insert_cap_status_count_success(const char *buddy_name, const char *account, const char *protocol, const char *status_id) { + int rc; + sqlite3_stmt *stmt; + const char *tail; + char *sql_select = sqlite3_mprintf("SELECT * FROM cap_status_count WHERE " + "buddy=%Q AND account=%Q AND protocol=%Q AND status=%Q;", + buddy_name, account, protocol, status_id); + char *sql_ins_up = NULL; + + gaim_debug_info("cap", "%s\n", sql_select); + + sqlite3_prepare(_db, sql_select, -1, &stmt, &tail); + + rc = sqlite3_step(stmt); + + if(rc == SQLITE_DONE) { + sql_ins_up = sqlite3_mprintf("INSERT INTO cap_status_count VALUES (%Q, %Q, %Q, %Q, %d, %d);", + buddy_name, account, protocol, status_id, 1, 0); + } else if(rc == SQLITE_ROW) { + sql_ins_up = sqlite3_mprintf("UPDATE cap_status_count SET success_count=success_count+1 WHERE " + "buddy=%Q AND account=%Q AND protocol=%Q AND status=%Q;", + buddy_name, account, protocol, status_id); + } else { + gaim_debug_info("cap", "%d\n", rc); + sqlite3_finalize(stmt); + sqlite3_free(sql_select); + return; + } + + sqlite3_finalize(stmt); + sqlite3_free(sql_select); + + sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL); + sqlite3_free(sql_ins_up); } -static dbi_result insert_cap_msg_count_failed(const char *buddy_name, const char *account, const char *protocol, int minute) { - gaim_debug_info("cap", "Insert cap_msg_count failed: %s %s %s %d\n", buddy_name, account, protocol, minute); - return dbi_conn_queryf(_conn, "insert into cap_msg_count (buddy, account, protocol, minute_val, success_count, failed_count) values (%s, %s, %s, %d, %d, %d) on duplicate key update failed_count=failed_count+1;", buddy_name, account, protocol, minute, 0, 1); +static void +insert_cap_msg_count_failed(const char *buddy_name, const char *account, const char *protocol, int minute) { + int rc; + sqlite3_stmt *stmt; + const char *tail; + char *sql_select = sqlite3_mprintf("SELECT * FROM cap_msg_count WHERE " + "buddy=%Q AND account=%Q AND protocol=%Q AND minute_val=%d;", + buddy_name, account, protocol, minute); + char *sql_ins_up = NULL; + + gaim_debug_info("cap", "%s\n", sql_select); + + sqlite3_prepare(_db, sql_select, -1, &stmt, &tail); + + rc = sqlite3_step(stmt); + + if(rc == SQLITE_DONE) { + sql_ins_up = sqlite3_mprintf("INSERT INTO cap_msg_count VALUES (%Q, %Q, %Q, %d, %d, %d);", + buddy_name, account, protocol, minute, 0, 1); + } else if(rc == SQLITE_ROW) { + sql_ins_up = sqlite3_mprintf("UPDATE cap_msg_count SET failed_count=failed_count+1 WHERE " + "buddy=%Q AND account=%Q AND protocol=%Q AND minute_val=%d;", + buddy_name, account, protocol, minute); + } else { + gaim_debug_info("cap", "%d\n", rc); + sqlite3_finalize(stmt); + sqlite3_free(sql_select); + return; + } + + sqlite3_finalize(stmt); + sqlite3_free(sql_select); + + sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL); + sqlite3_free(sql_ins_up); } -static dbi_result insert_cap_status_count_failed(const char *buddy_name, const char *account, const char *protocol, const char *status_id) { - gaim_debug_info("cap", "Insert cap_status_count failed: %s %s %s %s\n", buddy_name, account, protocol, status_id); - return dbi_conn_queryf(_conn, "insert into cap_status_count (buddy, account, protocol, status, success_count, failed_count) values(%s, %s, %s, %s, %d, %d) on duplicate key update failed_count=failed_count+1;", buddy_name, account, protocol, status_id, 0, 1); +static void +insert_cap_status_count_failed(const char *buddy_name, const char *account, const char *protocol, const char *status_id) { + int rc; + sqlite3_stmt *stmt; + const char *tail; + char *sql_select = sqlite3_mprintf("SELECT * FROM cap_status_count WHERE " + "buddy=%Q AND account=%Q AND protocol=%Q AND status=%Q;", + buddy_name, account, protocol, status_id); + char *sql_ins_up = NULL; + + gaim_debug_info("cap", "%s\n", sql_select); + + sqlite3_prepare(_db, sql_select, -1, &stmt, &tail); + + rc = sqlite3_step(stmt); + + if(rc == SQLITE_DONE) { + sql_ins_up = sqlite3_mprintf("INSERT INTO cap_status_count VALUES (%Q, %Q, %Q, %Q, %d, %d);", + buddy_name, account, protocol, status_id, 0, 1); + } else if(rc == SQLITE_ROW) { + sql_ins_up = sqlite3_mprintf("UPDATE cap_status_count SET failed_count=failed_count+1 WHERE " + "buddy=%Q AND account=%Q AND protocol=%Q AND status=%Q;", + buddy_name, account, protocol, status_id); + } else { + gaim_debug_info("cap", "%d\n", rc); + sqlite3_finalize(stmt); + sqlite3_free(sql_select); + return; + } + + sqlite3_finalize(stmt); + sqlite3_free(sql_select); + + sqlite3_exec(_db, sql_ins_up, NULL, NULL, NULL); + sqlite3_free(sql_ins_up); } static void insert_cap_success(CapStatistics *stats) { - dbi_result result; - gchar *buddy_name = quote_string(stats->buddy->name); - gchar *protocol_id = quote_string(gaim_account_get_protocol_id(stats->buddy->account)); - gchar *account_id = quote_string(gaim_account_get_username(stats->buddy->account)); - gchar *status_id = (stats->last_message_status_id) ? - quote_string(stats->last_message_status_id) : - quote_string(gaim_status_get_id(get_status_for(stats->buddy))); + gchar *buddy_name = stats->buddy->name; + const gchar *protocol_id = gaim_account_get_protocol_id(stats->buddy->account); + const gchar *account_id = gaim_account_get_username(stats->buddy->account); + const gchar *status_id = (stats->last_message_status_id) ? + stats->last_message_status_id : + gaim_status_get_id(get_status_for(stats->buddy)); struct tm *current_time; int minute; @@ -254,49 +302,30 @@ } minute = current_time->tm_min + current_time->tm_hour * 60; - result = insert_cap_msg_count_success(buddy_name, account_id, protocol_id, minute); - if(result) - dbi_result_free(result); + insert_cap_msg_count_success(buddy_name, account_id, protocol_id, minute); - result = insert_cap_status_count_success(buddy_name, account_id, protocol_id, status_id); - if(result) - dbi_result_free(result); + insert_cap_status_count_success(buddy_name, account_id, protocol_id, status_id); stats->last_message = -1; stats->last_message_status_id = NULL; - - free(status_id); - free(protocol_id); - free(account_id); - free(buddy_name); } static void insert_cap_failure(CapStatistics *stats) { - dbi_result result; - gchar *buddy_name = quote_string(stats->buddy->name); - gchar *protocol_id = quote_string(gaim_account_get_protocol_id(stats->buddy->account)); - gchar *account_id = quote_string(gaim_account_get_username(stats->buddy->account)); - gchar *status_id = (stats->last_message_status_id) ? - quote_string(stats->last_message_status_id) : - quote_string(gaim_status_get_id(get_status_for(stats->buddy))); + gchar *buddy_name = stats->buddy->name; + const gchar *protocol_id = gaim_account_get_protocol_id(stats->buddy->account); + const gchar *account_id = gaim_account_get_username(stats->buddy->account); + const gchar *status_id = (stats->last_message_status_id) ? + stats->last_message_status_id : + gaim_status_get_id(get_status_for(stats->buddy)); struct tm *current_time = localtime(&stats->last_message); int minute = current_time->tm_min + current_time->tm_hour * 60; - result = insert_cap_msg_count_failed(buddy_name, account_id, protocol_id, minute); - if(result) - dbi_result_free(result); + insert_cap_msg_count_failed(buddy_name, account_id, protocol_id, minute); - result = insert_cap_status_count_failed(buddy_name, account_id, protocol_id, status_id); - if(result) - dbi_result_free(result); + insert_cap_status_count_failed(buddy_name, account_id, protocol_id, status_id); stats->last_message = -1; stats->last_message_status_id = NULL; - - free(status_id); - free(protocol_id); - free(account_id); - free(buddy_name); } static gboolean max_message_difference_cb(gpointer data) { @@ -326,10 +355,10 @@ } //received-im-msg -static void received_im_msg(GaimAccount *account, char *sender, char *message, - GaimConversation *conv, GaimMessageFlags flags) { +static void +received_im_msg(GaimAccount *account, char *sender, char *message, GaimConversation *conv, GaimMessageFlags flags) { GaimBuddy *buddy = gaim_find_buddy(account, sender); - guint words = word_count(message); + //guint words = word_count(message); CapStatistics *stats = get_stats_for(buddy); //insert_word_count(sender, buddy_name, words); @@ -407,7 +436,8 @@ CapStatistics *stats = get_stats_for(buddy); // get the probability that this buddy will respond and add to the tooltip if(stats->prediction->probability >= 0.0) { - g_string_append_printf(text, "\n<b>%s</b> %0.4f", _("Response Probability:"), stats->prediction->probability); + g_string_append_printf(text, "\n<b>%s</b> %3.0f %%", _("Response Probability:"), + 100 * stats->prediction->probability); } else { g_string_append_printf(text, "\n<b>%s</b> ???", _("Response Probability:")); } @@ -421,13 +451,13 @@ gchar *my_name = g_strdup(my_gaim_name); time_t *last_offline = g_hash_table_lookup(_my_offline_times, my_name); - gchar *account_id = quote_string(gaim_account_get_username(account)); - gchar *protocol_id = quote_string(gaim_account_get_protocol_id(account)); - dbi_result result; + const gchar *account_id = gaim_account_get_username(account); + const gchar *protocol_id = gaim_account_get_protocol_id(account); + char *sql; - result = dbi_conn_queryf(_conn, "insert into cap_my_usage values(%s, %s, %d, now());", account_id, protocol_id, 1); - if(result) - dbi_result_free(result); + sql = sqlite3_mprintf("insert into cap_my_usage values(%Q, %Q, %d, now());", account_id, protocol_id, 1); + sqlite3_exec(_db, sql, NULL, NULL, NULL); + sqlite3_free(sql); if(last_offline) { if(difftime(*last_offline, time(NULL)) > gaim_prefs_get_int("/plugins/gtk/cap/max_seen_difference") * 60) { @@ -448,39 +478,18 @@ const char *my_gaim_name = gaim_account_get_username(account); gchar *my_name = g_strdup(my_gaim_name); time_t *offline_time = g_malloc(sizeof(time_t)); - gchar *account_id = quote_string(gaim_account_get_username(account)); - gchar *protocol_id = quote_string(gaim_account_get_protocol_id(account)); - dbi_result result; + const gchar *account_id = gaim_account_get_username(account); + const gchar *protocol_id = gaim_account_get_protocol_id(account); + char *sql; - result = dbi_conn_queryf(_conn, "insert into cap_my_usage values(%s, %s, %d, now());", account_id, protocol_id, 0); - if(result) - dbi_result_free(result); + sql = sqlite3_mprintf("insert into cap_my_usage values(%Q, %Q, %d, now());", account_id, protocol_id, 0); + sqlite3_exec(_db, sql, NULL, NULL, NULL); + sqlite3_free(sql); time(offline_time); g_hash_table_insert(_my_offline_times, my_name, offline_time); } -static const gchar * get_error_msg() { - if(error_msg) - return error_msg->str; - else - return NULL; -} - -static void set_error_msg(const gchar *msg) { - if(!error_msg) - error_msg = g_string_new(msg); - else - g_string_assign(error_msg, msg); -} - -static void append_error_msg(const gchar *msg) { - if(!error_msg) - set_error_msg(msg); - else - g_string_append(error_msg, msg); -} - static void reset_all_last_message_times(gpointer key, gpointer value, gpointer user_data) { CapStatistics *stats = value; stats->last_message = -1; @@ -493,52 +502,89 @@ } static void create_tables() { + int rc; + rc = sqlite3_exec(_db, + "CREATE TABLE IF NOT EXISTS cap_status (" + " buddy varchar(60) not null," + " account varchar(60) not null," + " protocol varchar(60) not null," + " status varchar(60) not null," + " event_time datetime not null," + " primary key (buddy, account, protocol, event_time)" + ");", + NULL, NULL, NULL); + + rc = sqlite3_exec(_db, + "create table if not exists cap_message (" + " sender varchar(60) not null," + " receiver varchar(60) not null," + " account varchar(60) not null," + " protocol varchar(60) not null," + " word_count integer not null," + " event_time datetime not null," + " primary key (sender, account, protocol, receiver, event_time)" + ");", + NULL, NULL, NULL); + + rc = sqlite3_exec(_db, + "create table if not exists cap_msg_count (" + " buddy varchar(60) not null," + " account varchar(60) not null," + " protocol varchar(60) not null," + " minute_val int not null," + " success_count int not null," + " failed_count int not null," + " primary key (buddy, account, protocol, minute_val)" + ");", + NULL, NULL, NULL); + + rc = sqlite3_exec(_db, + "create table if not exists cap_status_count (" + " buddy varchar(60) not null," + " account varchar(60) not null," + " protocol varchar(60) not null," + " status varchar(60) not null," + " success_count int not null," + " failed_count int not null," + " primary key (buddy, account, protocol, status)" + ");", + NULL, NULL, NULL); + + rc = sqlite3_exec(_db, + "create table if not exists cap_my_usage (" + " account varchar(60) not null," + " protocol varchar(60) not null," + " online tinyint not null," + " event_time datetime not null," + " primary key(account, protocol, online, event_time)" + ");", + NULL, NULL, NULL); } static gboolean create_database_connection() { + GString *path; int rc; - int driver_type; - if(_conn) + if(_db) return TRUE; //make database connection here - _conn = dbi_conn_new(gaim_prefs_get_string("/plugins/gtk/cap/db_driver")); - if(!_conn) + path = g_string_new(gaim_user_dir()); + g_string_append(path, "/cap.db"); + rc = sqlite3_open(path->str, &_db); + if(rc != SQLITE_OK) return FALSE; - _driver = dbi_conn_get_driver(_conn); - gaim_debug_info("cap", "Using driver: %s\n", gaim_prefs_get_string("/plugins/gtk/cap/db_driver")); - if(strcmp(gaim_prefs_get_string("/plugins/gtk/cap/db_driver"), "mysql") == 0) { - driver_type = MYSQL; - dbi_conn_set_option(_conn, "host", gaim_prefs_get_string("/plugins/gtk/cap/mysql/db_host")); - dbi_conn_set_option(_conn, "username", gaim_prefs_get_string("/plugins/gtk/cap/mysql/db_user")); - dbi_conn_set_option(_conn, "password", gaim_prefs_get_string("/plugins/gtk/cap/mysql/db_password")); - dbi_conn_set_option(_conn, "dbname", gaim_prefs_get_string("/plugins/gtk/cap/mysql/db_name")); - dbi_conn_set_option(_conn, "encoding", "auto"); - dbi_conn_set_option_numeric(_conn, "port", gaim_prefs_get_int("/plugins/gtk/cap/mysql/db_port")); - } - if(dbi_conn_connect(_conn) < 0) { - const char *err_msg = ""; - //rc = dbi_conn_error(_conn, &err_msg); - rc = dbi_conn_error(_conn, NULL); - gaim_debug_error("cap", "CAP could not create database connection. %d\n", rc); - //set_error_msg(_("Could not create database connection. Reason: ")); - //append_error_msg(err_msg); - _conn = NULL; - return FALSE; - } else { - //Add tables here - create_tables(); - } + //Add tables here + create_tables(); gaim_debug_info("cap", "Database connection successfully made.\n"); return TRUE; } static void destroy_database_connection() { - if(_conn) - dbi_conn_close(_conn); + if(_db) + sqlite3_close(_db); - _conn = NULL; + _db = NULL; } static guint word_count(const gchar *string) { @@ -551,53 +597,17 @@ return count; } -/* If the difference in time between the present time and the time that - * you last sent a message to a buddy is less than some value then return - * true, otherwise return false. - * The difference can either be + or - the max_difference. - * max_difference is in seconds - */ -static gboolean last_message_time_in_range(CapStatistics *statistics, gdouble max_difference) { - time_t now = time(NULL); - gdouble difference = 0.0; - //If there is no last_message time then it is considered in range - if(statistics->last_message == -1) { - return TRUE; - } - //Compute the difference between now and the last_message - difference = difftime(statistics->last_message, now); - //Absolute value - difference = (difference < 0.0) ? -difference : difference; - //If the difference is less than the maximum then we are good and its in range, otherwise not - if(difference <= max_difference) - return TRUE; - else - return FALSE; -} - -static gboolean last_seen_time_in_range(CapStatistics *statistics, gdouble max_difference) { - time_t now = time(NULL); - gdouble difference = 0.0; - if(statistics->last_seen == -1) - return FALSE; - difference = difftime(statistics->last_seen, now); - difference = (difference < 0.0) ? -difference : difference; - if(difference < max_difference) - return TRUE; - else - return FALSE; -} - static void insert_status_change(CapStatistics *statistics) { insert_status_change_from_gaim_status(statistics, get_status_for(statistics->buddy)); } static void insert_status_change_from_gaim_status(CapStatistics *statistics, GaimStatus *status) { - dbi_result result; - gchar *status_id; - gchar *buddy_name; - gchar *protocol_id; - gchar *account_id; + char *sql; + int rc; + const gchar *status_id; + const gchar *buddy_name; + const gchar *protocol_id; + const gchar *account_id; /* It would seem that some protocols receive periodic updates of the buddies status. * Check to make sure the last status is not the same as current status to prevent @@ -605,27 +615,18 @@ if(strcmp(statistics->last_status_id, gaim_status_get_id(status)) == 0) return; - status_id = quote_string(gaim_status_get_id(status)); - buddy_name = quote_string(statistics->buddy->name); - protocol_id = quote_string(gaim_account_get_protocol_id(statistics->buddy->account)); - account_id = quote_string(gaim_account_get_username(statistics->buddy->account)); + status_id = gaim_status_get_id(status); + buddy_name = statistics->buddy->name; + protocol_id = gaim_account_get_protocol_id(statistics->buddy->account); + account_id = gaim_account_get_username(statistics->buddy->account); statistics->last_status_id = gaim_status_get_id(status); + gaim_debug_info("cap", "Executing: insert into cap_status (buddy, account, protocol, status, event_time) values(%s, %s, %s, %s, now());\n", buddy_name, account_id, protocol_id, status_id); - result = dbi_conn_queryf(_conn, "insert into cap_status (buddy, account, protocol, status, event_time) values(%s, %s, %s, %s, now());", buddy_name, account_id, protocol_id, status_id); - if(result) - dbi_result_free(result); - else { - const char *err = ""; - dbi_conn_error(_conn, &err); - gaim_debug_error("cap", "Could not insert status change event into database. %s\n", err); - } - - free(status_id); - free(buddy_name); - free(protocol_id); - free(account_id); + sql = sqlite3_mprintf("insert into cap_status values (%Q, %Q, %Q, %Q, now());", buddy_name, account_id, protocol_id, status_id); + rc = sqlite3_exec(_db, sql, NULL, NULL, NULL); + sqlite3_free(sql); } static void insert_word_count(const char *sender, const char *receiver, guint count) { @@ -658,25 +659,9 @@ */ _my_offline_times = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); - if(gaim_prefs_exists("/plugins/gtk/cap/libdbi_drivers")) - _num_drivers = dbi_initialize(gaim_prefs_get_string("/plugins/gtk/cap/libdbi_drivers")); - else - _num_drivers = dbi_initialize(NULL); - - if(_num_drivers == -1) { - gaim_debug_error("cap", "Error initializing dbi.\n"); - gaim_prefs_set_bool("/plugins/gtk/cap/configured", FALSE); - _dbi_initialized = FALSE; - } else { - _dbi_initialized = TRUE; + if(create_database_connection()) { + add_plugin_functionality(plugin); } - - - if(gaim_prefs_get_bool("/plugins/gtk/cap/configured") && gaim_prefs_get_bool("/plugins/gtk/cap/connected")) { - if(create_database_connection()) { - add_plugin_functionality(plugin); - } - } return TRUE; } @@ -788,71 +773,18 @@ } //close database connection - dbi_conn_close(_conn); - _conn = NULL; - dbi_shutdown(); + destroy_database_connection(); return TRUE; } -static GtkWidget * get_config_frame(GaimPlugin *plugin) { - CapPrefsUI *ui = create_cap_prefs_ui(); - - /* Since we are editing the database setup we will disable the plugin. - * This will prevent database updates from occuring while there is potentially - * no connection to the database. - */ - remove_plugin_functionality(_plugin_pointer); - - return ui->ret; -} - -static void cap_prefs_ui_destroy_cb(GtkObject *object, gpointer user_data) { - CapPrefsUI *ui = user_data; - if(_conn) { - add_plugin_functionality(_plugin_pointer); - } - g_free(ui); -} - static CapPrefsUI * create_cap_prefs_ui() { CapPrefsUI *ui = g_malloc(sizeof(CapPrefsUI)); ui->ret = gtk_vbox_new(FALSE, 18); gtk_container_set_border_width(GTK_CONTAINER(ui->ret), 10); - ui->db_vbox = gaim_gtk_make_frame(ui->ret, _("Database Configuration")); ui->cap_vbox = gaim_gtk_make_frame(ui->ret, _("Statistics Configuration")); - /* dbd path input folder selector button */ - ui->dbd_label = gtk_label_new(_("libdbi driver path:")); - gtk_misc_set_alignment(GTK_MISC(ui->dbd_label), 0, 0.5); - ui->dbd_input = gtk_file_chooser_button_new(_("libdbi Drivers Path"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); - ui->dbd_button = gtk_button_new_with_label(_("Verify")); - ui->dbd_hbox = gtk_hbox_new(FALSE, 18); - gtk_box_pack_start(GTK_BOX(ui->dbd_hbox), ui->dbd_label, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(ui->dbd_hbox), ui->dbd_input, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(ui->dbd_hbox), ui->dbd_button, FALSE, FALSE, 0); - - /* Setup the driver selection widget */ - ui->driver_choice = gtk_combo_box_new_text(); - - ui->driver_vbox = gtk_vbox_new(FALSE, 18); - ui->driver_label = gtk_label_new(_("Driver:")); - gtk_misc_set_alignment(GTK_MISC(ui->driver_label), 0, 0.5); - ui->driver_select_hbox = gtk_hbox_new(FALSE, 18); - ui->driver_connect_button = gtk_toggle_button_new_with_label(_("Connected")); - - gtk_box_pack_start(GTK_BOX(ui->driver_select_hbox), ui->driver_label, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(ui->driver_select_hbox), ui->driver_choice, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(ui->driver_select_hbox), ui->driver_connect_button, FALSE, FALSE, 0); - - ui->driver_config = gtk_expander_new_with_mnemonic(_("Configure")); - ui->driver_config_hbox = gtk_hbox_new(FALSE, 18); - gtk_box_pack_start(GTK_BOX(ui->driver_config_hbox), ui->driver_config, FALSE, FALSE, 0); - - gtk_box_pack_start(GTK_BOX(ui->driver_vbox), ui->driver_select_hbox, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(ui->driver_vbox), ui->driver_config_hbox, FALSE, FALSE, 0); - /* msg_difference spinner */ ui->msg_difference_label = gtk_label_new(_("Maximum response timeout:")); gtk_misc_set_alignment(GTK_MISC(ui->msg_difference_label), 0, 0.5); @@ -914,16 +846,11 @@ /* Config window - lay it out */ - gtk_box_pack_start(GTK_BOX(ui->db_vbox), ui->dbd_hbox, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(ui->db_vbox), ui->driver_vbox, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(ui->cap_vbox), ui->table_layout, FALSE, FALSE, 0); /* Set the input areas to contain the configuration values from * gaim prefs. */ - if(gaim_prefs_exists("/plugins/gtk/cap/libdbi_drivers")) { - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(ui->dbd_input), gaim_prefs_get_string("/plugins/gtk/cap/libdbi_drivers")); - } if(gaim_prefs_exists("/plugins/gtk/cap/max_msg_difference")) { int max_msg_diff = gaim_prefs_get_int("/plugins/gtk/cap/max_msg_difference"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(ui->msg_difference_input), max_msg_diff); @@ -941,15 +868,6 @@ g_signal_connect(G_OBJECT(ui->ret), "destroy", G_CALLBACK(cap_prefs_ui_destroy_cb), ui); - g_signal_connect(G_OBJECT(ui->driver_choice), "changed", - G_CALLBACK(driver_choice_changed_cb), ui); - - g_signal_connect(G_OBJECT(ui->driver_config), "notify::expanded", - G_CALLBACK(driver_config_expanded_cb), ui); - - g_signal_connect(G_OBJECT(ui->driver_connect_button), "toggled", - G_CALLBACK(connect_toggled_cb), ui); - g_signal_connect(G_OBJECT(ui->msg_difference_input), "value-changed", G_CALLBACK(numeric_spinner_prefs_cb), "/plugins/gtk/cap/max_msg_difference"); @@ -959,244 +877,21 @@ g_signal_connect(G_OBJECT(ui->threshold_input), "value-changed", G_CALLBACK(numeric_spinner_prefs_cb), "/plugins/gtk/cap/threshold"); - g_signal_connect(G_OBJECT(ui->dbd_button), "clicked", - G_CALLBACK(driver_location_verify_cb), ui); - - /* libdbi was not successfully initialized so disable the driver selection. - * Also disable the configuration for the database. - */ - if(!_dbi_initialized || _num_drivers <= 0) { - /* Since DBI is not available disable database configuration */ - gtk_widget_set_sensitive(ui->driver_choice, FALSE); - gtk_widget_set_sensitive(ui->driver_config, FALSE); - gtk_widget_set_sensitive(ui->driver_connect_button, FALSE); - } else { - set_driver_choice_options(GTK_COMBO_BOX(ui->driver_choice)); - } - - if(_conn) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ui->driver_connect_button), TRUE); - gtk_widget_set_sensitive(ui->driver_choice, FALSE); - gtk_widget_set_sensitive(ui->driver_config, FALSE); - } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ui->driver_connect_button), FALSE); - } - return ui; } -static void driver_choice_changed_cb(GtkComboBox *widget, gpointer user_data) { +static void cap_prefs_ui_destroy_cb(GtkObject *object, gpointer user_data) { CapPrefsUI *ui = user_data; - if(strcmp(gtk_combo_box_get_active_text(GTK_COMBO_BOX(ui->driver_choice)), "mysql") == 0) { - gtk_widget_set_sensitive(ui->driver_config, TRUE); - gtk_widget_set_sensitive(ui->driver_connect_button, TRUE); - } else { - gtk_widget_set_sensitive(ui->driver_config, FALSE); - gtk_widget_set_sensitive(ui->driver_connect_button, FALSE); + if(_db) { + add_plugin_functionality(_plugin_pointer); } + g_free(ui); } -static void driver_config_expanded_cb(GObject *object, GParamSpec *param_spec, gpointer user_data) { - CapPrefsUI *ui = user_data; - GtkExpander *expander; - gchar *driver = gtk_combo_box_get_active_text(GTK_COMBO_BOX(ui->driver_choice)); - expander = GTK_EXPANDER(object); - if(gtk_expander_get_expanded(expander)) { - if(strcmp(driver, "mysql") == 0) { - gtk_container_add(GTK_CONTAINER(expander), get_mysql_config()); - } - } else { - gtk_container_remove(GTK_CONTAINER(expander), gtk_bin_get_child(GTK_BIN(expander))); - } -} - -static void connect_toggled_cb(GtkToggleButton *togglebutton, gpointer user_data) { - CapPrefsUI *ui = user_data; - if(gtk_toggle_button_get_active(togglebutton)) { - //connect - if(create_database_connection()) { - gtk_widget_set_sensitive(GTK_WIDGET(ui->driver_choice), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(ui->driver_config), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(ui->dbd_input), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(ui->dbd_button), FALSE); - gaim_prefs_set_bool("/plugins/gtk/cap/connected", TRUE); - } else { - gtk_toggle_button_set_active(togglebutton, FALSE); - } - } else { - //disconnect - destroy_database_connection(); - gtk_widget_set_sensitive(GTK_WIDGET(ui->driver_choice), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(ui->driver_config), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(ui->dbd_input), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(ui->dbd_button), TRUE); - gaim_prefs_set_bool("/plugins/gtk/cap/connected", FALSE); - } -} - static void numeric_spinner_prefs_cb(GtkSpinButton *spinbutton, gpointer user_data) { gaim_prefs_set_int(user_data, gtk_spin_button_get_value_as_int(spinbutton)); } -static void driver_location_verify_cb(GtkButton *button, gpointer user_data) { - CapPrefsUI *ui = user_data; - gchar *path = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(ui->dbd_input)); - - if(_dbi_initialized) - dbi_shutdown(); - - gaim_prefs_set_string("/plugins/gtk/cap/libdbi_drivers", path); - _num_drivers = dbi_initialize(path); - if(_num_drivers == -1) { - _dbi_initialized = FALSE; - } else { - _dbi_initialized = TRUE; - } - if(_num_drivers > 0) { - gtk_widget_set_sensitive(GTK_WIDGET(ui->driver_choice), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(ui->driver_config), TRUE); - gtk_widget_set_sensitive(GTK_WIDGET(ui->driver_connect_button), TRUE); - set_driver_choice_options(GTK_COMBO_BOX(ui->driver_choice)); - } else { - gtk_widget_set_sensitive(GTK_WIDGET(ui->driver_choice), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(ui->driver_config), FALSE); - gtk_expander_set_expanded(GTK_EXPANDER(ui->driver_config), FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(ui->driver_connect_button), FALSE); - } -} - -static gboolean text_entry_prefs_cb(GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { - gaim_prefs_set_string(user_data, gtk_entry_get_text(GTK_ENTRY(widget))); - return FALSE; -} - -void set_driver_choice_options(GtkComboBox *chooser) { - dbi_driver driver = NULL; - GtkListStore *list_store; - gint index = 0; - gint selected = 0; - - list_store = GTK_LIST_STORE(gtk_combo_box_get_model(chooser)); - gtk_list_store_clear(list_store); - - if(!_dbi_initialized) - return; - - while((driver = dbi_driver_list(driver)) != NULL) { - gtk_combo_box_append_text(chooser, dbi_driver_get_name(driver)); - if(strcmp(dbi_driver_get_name(driver), gaim_prefs_get_string("/plugins/gtk/cap/db_driver")) == 0) { - selected = index; - } - ++index; - } - gtk_combo_box_set_active(chooser, selected); -} - -static GtkWidget * get_mysql_config() { - GtkWidget *config_area = gtk_table_new(5, 2, FALSE); - GtkWidget *username_label = gtk_label_new(_("Username:")); - GtkWidget *username_input = gtk_entry_new(); - GtkWidget *password_label = gtk_label_new(_("Password:")); - GtkWidget *password_input = gtk_entry_new(); - GtkWidget *host_label = gtk_label_new(_("Host:")); - GtkWidget *host_input = gtk_entry_new(); - GtkWidget *db_label = gtk_label_new(_("Database:")); - GtkWidget *db_input = gtk_entry_new(); - GtkWidget *port_label = gtk_label_new(_("Port:")); - GtkWidget *port_input = gtk_spin_button_new_with_range(0, 10000, 1); - - gtk_entry_set_visibility(GTK_ENTRY(password_input), FALSE); - - gtk_misc_set_alignment(GTK_MISC(username_label), 0, 0.5); - gtk_misc_set_padding(GTK_MISC(username_label), 10, 0); - - gtk_misc_set_alignment(GTK_MISC(password_label), 0, 0.5); - gtk_misc_set_padding(GTK_MISC(password_label), 10, 0); - - gtk_misc_set_alignment(GTK_MISC(host_label), 0, 0.5); - gtk_misc_set_padding(GTK_MISC(host_label), 10, 0); - - gtk_misc_set_alignment(GTK_MISC(db_label), 0, 0.5); - gtk_misc_set_padding(GTK_MISC(db_label), 10, 0); - - gtk_misc_set_alignment(GTK_MISC(port_label), 0, 0.5); - gtk_misc_set_padding(GTK_MISC(port_label), 10, 0); - - gtk_table_attach(GTK_TABLE(config_area), host_label, 0, 1, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_table_attach(GTK_TABLE(config_area), host_input, 1, 2, 0, 1, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_table_attach(GTK_TABLE(config_area), port_label, 0, 1, 1, 2, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_table_attach(GTK_TABLE(config_area), port_input, 1, 2, 1, 2, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_table_attach(GTK_TABLE(config_area), db_label, 0, 1, 2, 3, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_table_attach(GTK_TABLE(config_area), db_input, 1, 2, 2, 3, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_table_attach(GTK_TABLE(config_area), username_label, 0, 1, 3, 4, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_table_attach(GTK_TABLE(config_area), username_input, 1, 2, 3, 4, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_table_attach(GTK_TABLE(config_area), password_label, 0, 1, 4, 5, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - gtk_table_attach(GTK_TABLE(config_area), password_input, 1, 2, 4, 5, - (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), - (GtkAttachOptions) (0), 0, 0); - - //Initialize with data - if(gaim_prefs_exists("/plugins/gtk/cap/mysql/db_host")) { - gtk_entry_set_text(GTK_ENTRY(host_input), gaim_prefs_get_string("/plugins/gtk/cap/mysql/db_host")); - } else { - gtk_entry_set_text(GTK_ENTRY(host_input), "localhost"); - } - if(gaim_prefs_exists("/plugins/gtk/cap/mysql/db_port")) { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(port_input), gaim_prefs_get_int("/plugins/gtk/cap/mysql/db_port")); - } else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(port_input), 3306); - } - if(gaim_prefs_exists("/plugins/gtk/cap/mysql/db_user")) { - gtk_entry_set_text(GTK_ENTRY(username_input), gaim_prefs_get_string("/plugins/gtk/cap/mysql/db_user")); - } else { - gtk_entry_set_text(GTK_ENTRY(username_input), "root"); - } - if(gaim_prefs_exists("/plugins/gtk/cap/mysql/db_password")) { - gtk_entry_set_text(GTK_ENTRY(password_input), gaim_prefs_get_string("/plugins/gtk/cap/mysql/db_password")); - } else { - gtk_entry_set_text(GTK_ENTRY(password_input), ""); - } - if(gaim_prefs_exists("/plugins/gtk/cap/mysql/db_name")) { - gtk_entry_set_text(GTK_ENTRY(db_input), gaim_prefs_get_string("/plugins/gtk/cap/mysql/db_name")); - } else { - gtk_entry_set_text(GTK_ENTRY(db_input), "cap"); - } - - //Add callbacks - g_signal_connect(G_OBJECT(host_input), "focus-out-event", - G_CALLBACK(text_entry_prefs_cb), "/plugins/gtk/cap/mysql/db_host"); - g_signal_connect(G_OBJECT(port_input), "value-changed", - G_CALLBACK(numeric_spinner_prefs_cb), "/plugins/gtk/cap/mysql/db_port"); - g_signal_connect(G_OBJECT(username_input), "focus-out-event", - G_CALLBACK(text_entry_prefs_cb), "/plugins/gtk/cap/mysql/db_user"); - g_signal_connect(G_OBJECT(password_input), "focus-out-event", - G_CALLBACK(text_entry_prefs_cb), "/plugins/gtk/cap/mysql/db_password"); - g_signal_connect(G_OBJECT(db_input), "focus-out-event", - G_CALLBACK(text_entry_prefs_cb), "/plugins/gtk/cap/mysql/db_name"); - - gtk_widget_show_all(config_area); - - return config_area; -} - static GaimGtkPluginUiInfo ui_info = { get_config_frame, 0 /* page_num (reserved) */ @@ -1228,19 +923,22 @@ NULL }; +static GtkWidget * get_config_frame(GaimPlugin *plugin) { + CapPrefsUI *ui = create_cap_prefs_ui(); + + /* + * Prevent database stuff from occuring since we are editing values + */ + remove_plugin_functionality(_plugin_pointer); + + return ui->ret; +} + static void init_plugin(GaimPlugin *plugin) { gaim_prefs_add_none("/plugins/gtk/cap"); gaim_prefs_add_int("/plugins/gtk/cap/max_seen_difference", 1); gaim_prefs_add_int("/plugins/gtk/cap/max_msg_difference", 10); gaim_prefs_add_int("/plugins/gtk/cap/threshold", 5); - gaim_prefs_add_bool("/plugins/gtk/cap/configured", FALSE); - gaim_prefs_add_string("/plugins/gtk/cap/db_driver", "mysql"); - gaim_prefs_add_none("/plugins/gtk/cap/mysql"); - gaim_prefs_add_string("/plugins/gtk/cap/mysql/db_host", "localhost"); - gaim_prefs_add_int("/plugins/gtk/cap/mysql/db_port", 3306); - gaim_prefs_add_string("/plugins/gtk/cap/mysql/db_user", "root"); - gaim_prefs_add_string("/plugins/gtk/cap/mysql/db_password", ""); - gaim_prefs_add_string("/plugins/gtk/cap/mysql/db_name", "cap"); } GAIM_INIT_PLUGIN(cap, init_plugin, info); Modified: trunk/gtk/plugins/cap/cap.h =================================================================== --- trunk/gtk/plugins/cap/cap.h 2006-09-10 22:33:28 UTC (rev 17230) +++ trunk/gtk/plugins/cap/cap.h 2006-09-11 00:28:35 UTC (rev 17231) @@ -39,100 +39,30 @@ #include "util.h" -#include <dbi/dbi.h> #include <glib.h> #include <time.h> +#include <sqlite3.h> #include "cap_statistics.h" #define CAP_PLUGIN_ID "gtk-g-off_-cap" /* Variables used throughout lifetime of the plugin */ GaimPlugin *_plugin_pointer; -dbi_conn _conn = NULL; /**< The database connection */ -dbi_driver _driver = NULL; /**< The database driver */ +sqlite3 *_db; /**< The database */ + GHashTable *_buddy_stats = NULL; GHashTable *_my_offline_times = NULL; -GString *error_msg = NULL; gboolean _signals_connected; -gboolean _dbi_initialized; -int _num_drivers; +gboolean _sqlite_initialized; -enum driver_types {MYSQL}; - -/* Function definitions */ -static char * quote_string(const char *str); -static gboolean plugin_load(GaimPlugin *plugin); -static void add_plugin_functionality(GaimPlugin *plugin); -static void cancel_conversation_timeouts(gpointer key, gpointer value, gpointer user_data); -static void remove_plugin_functionality(GaimPlugin *plugin); -static gboolean plugin_unload(GaimPlugin *plugin); -static void init_plugin(GaimPlugin *plugin); -static void generate_prediction(CapStatistics *statistics); -static double generate_prediction_for(GaimBuddy *buddy); -static CapStatistics * get_stats_for(GaimBuddy *buddy); -static void destroy_stats(gpointer data); -static gboolean remove_stats_for(GaimBuddy *buddy); -static dbi_result insert_cap_msg_count_success(const char *buddy_name, const char *account, const char *protocol, int minute); -static dbi_result insert_cap_status_count_success(const char *buddy_name, const char *account, const char *protocol, const char *status_id); -static dbi_result insert_cap_msg_count_failed(const char *buddy_name, const char *account, const char *protocol, int minute); -static dbi_result insert_cap_status_count_failed(const char *buddy_name, const char *account, const char *protocol, const char *status_id); -static void insert_cap_success(CapStatistics *stats); -static void insert_cap_failure(CapStatistics *stats); -static gboolean max_message_difference_cb(gpointer data); - -/* Various CAP helper functions */ -static const gchar * get_error_msg(void); -static void set_error_msg(const gchar *msg); -static void reset_all_last_message_times(gpointer key, gpointer value, gpointer user_data); -static GaimStatus * get_status_for(GaimBuddy *buddy); -static void create_tables(void); -static gboolean create_database_connection(void); -static void destroy_database_connection(void); -static guint word_count(const gchar *string); -static gboolean last_message_time_in_range(CapStatistics *statistics, gdouble max_difference); -static gboolean last_seen_time_in_range(CapStatistics *statistics, gdouble max_difference); -static void insert_status_change(CapStatistics *statistics); -static void insert_status_change_from_gaim_status(CapStatistics *statistics, GaimStatus *status); -static void insert_word_count(const char *sender, const char *receiver, guint count); - -/* Gaim Signal Handlers */ -static void sent_im_msg(GaimAccount *account, const char *receiver, const char *message); -static void received_im_msg(GaimAccount *account, char *sender, char *message, - GaimConversation *conv, GaimMessageFlags flags); -static void buddy_status_changed(GaimBuddy *buddy, GaimStatus *old_status, GaimStatus *status); -static void buddy_signed_on(GaimBuddy *buddy); -static void buddy_signed_off(GaimBuddy *buddy); -static void buddy_idle(GaimBuddy *buddy, gboolean old_idle, gboolean idle); -static void blist_node_extended_menu(GaimBlistNode *node, GList **menu); -static void drawing_tooltip(GaimBlistNode *node, GString *text, gboolean full); -static void signed_on(GaimConnection *gc); -static void signed_off(GaimConnection *gc); - -/* Call backs */ -void display_statistics_action_cb(GaimBlistNode *node, gpointer data); - /* Prefs UI */ typedef struct _CapPrefsUI CapPrefsUI; -struct _CapPrefsUI { +struct _CapPrefsUI { GtkWidget *ret; - GtkWidget *db_vbox; GtkWidget *cap_vbox; GtkWidget *table_layout; - GtkWidget *driver_vbox; - GtkWidget *driver_select_hbox; - GtkWidget *driver_choice; - GtkWidget *driver_label; - GtkWidget *driver_config_hbox; - GtkWidget *driver_config; - GtkWidget *driver_connect_button; - - GtkWidget *dbd_label; - GtkWidget *dbd_input; - GtkWidget *dbd_hbox; - GtkWidget *dbd_button; - GtkWidget *threshold_label; GtkWidget *threshold_input; GtkWidget *threshold_minutes_label; @@ -146,18 +76,56 @@ GtkWidget *last_seen_minutes_label; }; -static GtkWidget * get_config_frame(GaimPlugin *plugin); +static void generate_prediction(CapStatistics *statistics); +static double generate_prediction_for(GaimBuddy *buddy); +static CapStatistics * get_stats_for(GaimBuddy *buddy); +static void destroy_stats(gpointer data); +static void insert_cap_msg_count_success(const char *buddy_name, const char *account, const char *protocol, int minute); +static void insert_cap_status_count_success(const char *buddy_name, const char *account, const char *protocol, const char *status_id); +static void insert_cap_msg_count_failed(const char *buddy_name, const char *account, const char *protocol, int minute); +static void insert_cap_status_count_failed(const char *buddy_name, const char *account, const char *protocol, const char *status_id); +static void insert_cap_success(CapStatistics *stats); +static void insert_cap_failure(CapStatistics *stats); +static gboolean max_message_difference_cb(gpointer data); +/* Gaim Signal Handlers */ +//sent-im-msg +static void sent_im_msg(GaimAccount *account, const char *receiver, const char *message); +//received-im-msg +static void received_im_msg(GaimAccount *account, char *sender, char *message, GaimConversation *conv, GaimMessageFlags flags); +//buddy-status-changed +static void buddy_status_changed(GaimBuddy *buddy, GaimStatus *old_status, GaimStatus *status); +//buddy-signed-on +static void buddy_signed_on(GaimBuddy *buddy); +//buddy-signed-off +static void buddy_signed_off(GaimBuddy *buddy); +static void buddy_idle(GaimBuddy *buddy, gboolean old_idle, gboolean idle); +static void blist_node_extended_menu(GaimBlistNode *node, GList **menu); +//drawing-tooltip +static void drawing_tooltip(GaimBlistNode *node, GString *text, gboolean full); +//signed-on +static void signed_on(GaimConnection *gc); +//signed-off +static void signed_off(GaimConnection *gc); +static void reset_all_last_message_times(gpointer key, gpointer value, gpointer user_data); +static GaimStatus * get_status_for(GaimBuddy *buddy); +static void create_tables(); +static gboolean create_database_connection(); +static void destroy_database_connection(); +static guint word_count(const gchar *string); +static void insert_status_change(CapStatistics *statistics); +static void insert_status_change_from_gaim_status(CapStatistics *statistics, GaimStatus *status); +static void insert_word_count(const char *sender, const char *receiver, guint count); +void display_statistics_action_cb(GaimBlistNode *node, gpointer data); +static gboolean plugin_load(GaimPlugin *plugin); +static void add_plugin_functionality(GaimPlugin *plugin); +static void cancel_conversation_timeouts(gpointer key, gpointer value, gpointer user_data); +static void remove_plugin_functionality(GaimPlugin *plugin); +static void write_stats_on_unload(gpointer key, gpointer value, gpointer user_data); +static gboolean plugin_unload(GaimPlugin *plugin); +static CapPrefsUI * create_cap_prefs_ui(); static void cap_prefs_ui_destroy_cb(GtkObject *object, gpointer user_data); -static CapPrefsUI * create_cap_prefs_ui(void); - -static void driver_choice_changed_cb(GtkComboBox *widget, gpointer user_data); -static void driver_config_expanded_cb(GObject *object, GParamSpec *param_spec, gpointer user_data); -static void connect_toggled_cb(GtkToggleButton *togglebutton, gpointer user_data); static void numeric_spinner_prefs_cb(GtkSpinButton *spinbutton, gpointer user_data); -static void driver_location_verify_cb(GtkButton *button, gpointer user_data); -static gboolean text_entry_prefs_cb(GtkWidget *widget, GdkEventFocus *event, gpointer user_data); +static GtkWidget * get_config_frame(GaimPlugin *plugin); +static void init_plugin(GaimPlugin *plugin); -static void set_driver_choice_options(GtkComboBox *chooser); -static GtkWidget * get_mysql_config(void); - #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rl...@us...> - 2006-09-11 02:31:14
|
Revision: 17240 http://svn.sourceforge.net/gaim/?rev=17240&view=rev Author: rlaager Date: 2006-09-10 19:30:59 -0700 (Sun, 10 Sep 2006) Log Message: ----------- SF Patch #1492561 from Lars T. Mikkelsen "This patch adds gaim-url-handler, a URL handler for most protocols in Gaim. The gaim-url-handler is similar to (and based on) gaim-remote, however, it uses the native URL format of each protocol. Furthermore, the patch includes a GConf schema, which allows Gnome applications to use the URL handler." With this and gaim-send/gaim-send-async, we should be able to drop gaim-remote. Please let me know if you object, or I'll remove gaim-remote shortly. For the record, I know this doesn't support 100% of the ChatZilla IRC URL spec, and I haven't investigated the XMPP URL spec beyond a casual first look. We can tweak these things later -- I figured it was important to get the bulk of the code in place. Modified Paths: -------------- trunk/COPYRIGHT trunk/ChangeLog.API trunk/acinclude.m4 trunk/configure.ac trunk/gtk/gtkconv.c trunk/libgaim/Makefile.am trunk/libgaim/conversation.c trunk/libgaim/conversation.h Added Paths: ----------- trunk/libgaim/gaim-url-handler trunk/libgaim/gconf/ trunk/libgaim/gconf/Makefile.am trunk/libgaim/gconf/gaim.schemas Modified: trunk/COPYRIGHT =================================================================== --- trunk/COPYRIGHT 2006-09-11 02:02:18 UTC (rev 17239) +++ trunk/COPYRIGHT 2006-09-11 02:30:59 UTC (rev 17240) @@ -189,6 +189,7 @@ Torrey McMahon Robert McQueen Robert Mibus +Lars T. Mikkelsen Benjamin Miller Kevin Miller Paul Miller Modified: trunk/ChangeLog.API =================================================================== --- trunk/ChangeLog.API 2006-09-11 02:02:18 UTC (rev 17239) +++ trunk/ChangeLog.API 2006-09-11 02:30:59 UTC (rev 17240) @@ -321,6 +321,8 @@ call to gaim_util_fetch_url() or gaim_util_fetch_url_request(). * GaimGtkWindow: dialogs.search (previously in GaimGtkConversation) * gaim_buddy_get_server_alias() + * gaim_conv_send_confirm() + * GaimConversationUiOps.send_confirm Signals - Changed: (See the Doxygen docs for details on all signals.) * Signal propagation now stops after a handler returns a non-NULL value. Modified: trunk/acinclude.m4 =================================================================== --- trunk/acinclude.m4 2006-09-11 02:02:18 UTC (rev 17239) +++ trunk/acinclude.m4 2006-09-11 02:30:59 UTC (rev 17240) @@ -836,3 +836,42 @@ AC_SUBST(BINRELOC_CFLAGS) AC_SUBST(BINRELOC_LIBS) ]) +dnl AM_GCONF_SOURCE_2 +dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas +dnl (i.e. pass to gconftool-2 +dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where +dnl you should install foo.schemas files +dnl + +AC_DEFUN([AM_GCONF_SOURCE_2], +[ + if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then + GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source` + else + GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE + fi + + AC_ARG_WITH(gconf-source, + [ --with-gconf-source=sourceaddress Config database for installing schema files.],GCONF_SCHEMA_CONFIG_SOURCE="$withval",) + + AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE) + AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation]) + + if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then + GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas' + fi + + AC_ARG_WITH(gconf-schema-file-dir, + [ --with-gconf-schema-file-dir=dir Directory for installing schema files.],GCONF_SCHEMA_FILE_DIR="$withval",) + + AC_SUBST(GCONF_SCHEMA_FILE_DIR) + AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files]) + + AC_ARG_ENABLE(schemas-install, + [ --disable-schemas-install Disable the schemas installation], + [case ${enableval} in + yes|no) ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-schemas-install) ;; + esac]) + AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no]) +]) Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-09-11 02:02:18 UTC (rev 17239) +++ trunk/configure.ac 2006-09-11 02:30:59 UTC (rev 17240) @@ -423,6 +423,13 @@ AC_SUBST(LIBXML_LIBS) dnl ####################################################################### +dnl # GConf schemas +dnl ####################################################################### +AC_PATH_PROG(GCONFTOOL, gconftool-2, no) +AM_CONDITIONAL(USE_GCONFTOOL, test "x$GCONFTOOL" != "xno") +AM_GCONF_SOURCE_2 + +dnl ####################################################################### dnl # Check for GStreamer dnl ####################################################################### AC_ARG_ENABLE(gstreamer, @@ -577,7 +584,7 @@ gadu_manual_check="no" fi if test "x$gadu_manual_check" = "xno"; then - PKG_CHECK_MODULES(GADU, libgadu, [ + PKG_CHECK_MODULES(LIBGADU, libgadu, [ gadu_includes="yes" gadu_libs="yes" ], [ @@ -1870,6 +1877,7 @@ gtk/plugins/perl/common/Makefile.PL gtk/plugins/ticker/Makefile gtk/sounds/Makefile + libgaim/gconf/Makefile libgaim/plugins/Makefile libgaim/plugins/mono/Makefile libgaim/plugins/mono/api/Makefile Modified: trunk/gtk/gtkconv.c =================================================================== --- trunk/gtk/gtkconv.c 2006-09-11 02:02:18 UTC (rev 17239) +++ trunk/gtk/gtkconv.c 2006-09-11 02:30:59 UTC (rev 17240) @@ -5396,6 +5396,14 @@ } +static void +gaim_gtkconv_send_confirm(GaimConversation *conv, const char *message) +{ + GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION(conv); + + gtk_imhtml_append_text(GTK_IMHTML(gtkconv->entry), message, 0); +} + /* * Makes sure all the menu items and all the buttons are hidden/shown and * sensitive/insensitive. This is called after changing tabs and when an @@ -5780,7 +5788,8 @@ gaim_gtkconv_has_focus, /* has_focus */ gaim_gtkconv_custom_smiley_add, /* custom_smiley_add */ gaim_gtkconv_custom_smiley_write, /* custom_smiley_write */ - gaim_gtkconv_custom_smiley_close /* custom_smiley_close */ + gaim_gtkconv_custom_smiley_close, /* custom_smiley_close */ + gaim_gtkconv_send_confirm, /* send_confirm */ }; GaimConversationUiOps * Modified: trunk/libgaim/Makefile.am =================================================================== --- trunk/libgaim/Makefile.am 2006-09-11 02:02:18 UTC (rev 17239) +++ trunk/libgaim/Makefile.am 2006-09-11 02:30:59 UTC (rev 17240) @@ -5,6 +5,7 @@ gaim-remote \ gaim-send \ gaim-send-async \ + gaim-url-handler \ Makefile.mingw \ win32/global.mak \ win32/libc_interface.c \ @@ -17,8 +18,12 @@ win32/win32dep.c \ win32/win32dep.h -SUBDIRS = plugins protocols +if USE_GCONFTOOL +GCONF_DIR=gconf +endif +SUBDIRS = $(GCONF_DIR) plugins protocols + gaim_coresources = \ account.c \ accountopt.c \ @@ -187,7 +192,7 @@ # scripts -bin_SCRIPTS = gaim-notifications-example gaim-remote gaim-send gaim-send-async +bin_SCRIPTS = gaim-notifications-example gaim-remote gaim-send gaim-send-async gaim-url-handler endif Modified: trunk/libgaim/conversation.c =================================================================== --- trunk/libgaim/conversation.c 2006-09-11 02:02:18 UTC (rev 17239) +++ trunk/libgaim/conversation.c 2006-09-11 02:30:59 UTC (rev 17240) @@ -28,6 +28,7 @@ #include "notify.h" #include "prefs.h" #include "prpl.h" +#include "request.h" #include "signals.h" #include "util.h" @@ -338,6 +339,8 @@ g_return_if_fail(conv != NULL); + gaim_request_close_with_handle(conv); + ops = gaim_conversation_get_ui_ops(conv); gc = gaim_conversation_get_gc(conv); name = gaim_conversation_get_name(conv); @@ -1126,7 +1129,42 @@ gaim_conv_im_send_with_flags(im, message, 0); } +static void +gaim_conv_send_confirm_cb(gpointer *data) +{ + GaimConversation *conv = data[0]; + char *message = data[1]; + + g_free(data); + common_send(conv, message, 0); +} + void +gaim_conv_send_confirm(GaimConversation *conv, const char *message) +{ + char *text; + gpointer *data; + + g_return_if_fail(conv != NULL); + g_return_if_fail(message != NULL); + + if (conv->ui_ops != NULL && conv->ui_ops->send_confirm != NULL) + { + conv->ui_ops->send_confirm(conv, message); + return; + } + + text = g_strdup_printf("You are about to send the following message:\n%s", message); + data = g_new0(gpointer, 2); + data[0] = conv; + data[1] = (gpointer)message; + + gaim_request_action(conv, NULL, _("Send Message"), text, 0, data, 2, + _("_Send Message"), G_CALLBACK(gaim_conv_send_confirm_cb), + _("Cancel"), NULL); +} + +void gaim_conv_im_send_with_flags(GaimConvIm *im, const char *message, GaimMessageFlags flags) { g_return_if_fail(im != NULL); Modified: trunk/libgaim/conversation.h =================================================================== --- trunk/libgaim/conversation.h 2006-09-11 02:02:18 UTC (rev 17239) +++ trunk/libgaim/conversation.h 2006-09-11 02:30:59 UTC (rev 17240) @@ -174,6 +174,8 @@ void (*custom_smiley_write)(GaimConversation *conv, const char *smile, const guchar *data, gsize size); void (*custom_smiley_close)(GaimConversation *conv, const char *smile); + + void (*send_confirm)(GaimConversation *conv, const char *message); }; /** @@ -758,6 +760,20 @@ void gaim_conv_im_send(GaimConvIm *im, const char *message); /** + * Sends a message to a conversation after confirming with + * the user. + * + * This function is intended for use in cases where the user + * hasn't explicitly and knowingly caused a message to be sent. + * The confirmation ensures that the user isn't sending a + * message by mistake. + * + * @param conv The conversation. + * @param message The message to send. + */ +void gaim_conv_send_confirm(GaimConversation *conv, const char *message); + +/** * Sends a message to this IM conversation with specified flags. * * @param im The IM. Added: trunk/libgaim/gaim-url-handler =================================================================== --- trunk/libgaim/gaim-url-handler (rev 0) +++ trunk/libgaim/gaim-url-handler 2006-09-11 02:30:59 UTC (rev 17240) @@ -0,0 +1,274 @@ +#!/usr/bin/python + +import dbus +import re +import sys +import time +import urllib + +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) + +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(protocolname, accountname=""): + 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) + gaim.GaimAccountSetStatusVargs(account, "online", 1) + gaim.GaimAccountConnect(account) + return account + +def goim(account, screenname, message=None): + # XXX: 1 == GAIM_CONV_TYPE_IM + conversation = cgaim.GaimConversationNew(1, account, screenname) + if message: + gaim.GaimConvSendConfirm(conversation, message) + +def gochat(account, params, message=None): + connection = cgaim.GaimAccountGetConnection(account) + gaim.ServJoinChat(connection, params) + + if message != None: + for i in range(20): + # XXX: 2 == GAIM_CONV_TYPE_CHAT + conversation = gaim.GaimFindConversationWithAccount(2, params.get("channel", params.get("room")), account) + if conversation: + gaim.GaimConvSendConfirm(conversation, message) + break + else: + time.sleep(0.5) + +def addbuddy(account, screenname, group="", alias=""): + cgaim.GaimBlistRequestAddBuddy(account, screenname, group, alias) + + +def aim(uri): + protocol = "prpl-oscar" + match = re.match(r"^(aim|icq):([^?]*)(\?(.*))", uri) + if not match: + print "Invalid aim URI: %s" % uri + return + + command = urllib.unquote(match.group(2)) + paramstring = match.group(4) + params = {} + if paramstring: + for param in paramstring.split("&"): + key, value = extendlist(param.split("=", 1), 2, "") + params[key] = urllib.unquote(value) + accountname = params.get("account", "") + screenname = params.get("screenname", "") + + account = findaccount(protocol, accountname) + + if command == "goim": + goim(account, screenname, params.get("message")) + elif command == "gochat": + gochat(account, params) + elif command == "addbuddy": + addbuddy(account, screenname, params.get("group", "")) + +def gg(uri): + protocol = "prpl-gg" + match = re.match(r"^gg:(.*)", uri) + if not match: + print "Invalid gg URI: %s" % uri + return + + screenname = urllib.unquote(match.group(1)) + account = findaccount(protocol) + goim(account, screenname) + +def icq(uri): + aim(uri) + +def irc(uri): + protocol = "prpl-irc" + match = re.match(r"^irc:(//([^/]*)/)?([^?]*)(\?(.*))?", uri) + if not match: + print "Invalid irc URI: %s" % uri + return + + server = urllib.unquote(match.group(2)) or "" + target = match.group(3) or "" + query = match.group(5) or "" + + modifiers = {} + if target: + for modifier in target.split(",")[1:]: + modifiers[modifier] = True + + isnick = modifiers.has_key("isnick") + + paramstring = match.group(5) + params = {} + if paramstring: + for param in paramstring.split("&"): + key, value = extendlist(param.split("=", 1), 2, "") + params[key] = urllib.unquote(value) + + account = findaccount(protocol) + + if (target != ""): + if (isnick): + goim(account, urllib.unquote(target.split(",")[0]), params.get("msg")) + else: + channel = urllib.unquote(target.split(",")[0]) + if channel[0] != "#": + channel = "#" + channel + gochat(account, {"server": server, "channel": channel, "password": params.get("key", "")}, params.get("msg")) + +def msnim(uri): + protocol = "prpl-msn" + match = re.match(r"^msnim:([^?]*)(\?(.*))", uri) + if not match: + print "Invalid msnim URI: %s" % uri + return + + command = urllib.unquote(match.group(1)) + paramstring = match.group(3) + params = {} + if paramstring: + for param in paramstring.split("&"): + key, value = extendlist(param.split("=", 1), 2, "") + params[key] = urllib.unquote(value) + screenname = params.get("contact", "") + + account = findaccount(protocol) + + if command == "chat": + goim(account, screenname) + elif command == "add": + addbuddy(account, screenname) + +def sip(uri): + protocol = "prpl-simple" + match = re.match(r"^sip:(.*)", uri) + if not match: + print "Invalid sip URI: %s" % uri + return + + screenname = urllib.unquote(match.group(1)) + account = findaccount(protocol) + goim(account, screenname) + +def xmpp(uri): + protocol = "prpl-jabber" + match = re.match(r"^xmpp:(//([^/?#]*))?(/?([^?#]*))(\?([^;#]*)(;([^#]*))?)?(#(.*))?", uri) + if not match: + print "Invalid xmpp URI: %s" % uri + return + + accountname = urllib.unquote(match.group(2)) or "" + screenname = urllib.unquote(match.group(4)) + command = urllib.unquote(match.group(6)) + paramstring = match.group(8) + params = {} + if paramstring: + for param in paramstring.split(";"): + key, value = extendlist(param.split("=", 1), 2, "") + params[key] = urllib.unquote(value) + + account = findaccount(protocol, accountname) + + if command == "message": + goim(account, screenname, params.get("body")) + elif command == "join": + room, server = screenname.split("@") + gochat(account, {"room": room, "server": server}) + elif command == "roster": + addbuddy(account, screenname, params.get("group", ""), params.get("name", "")) + else: + goim(account, screenname) + +def ymsgr(uri): + protocol = "prpl-yahoo" + match = re.match(r"^ymsgr:([^?]*)(\?([^&]*)(&(.*))?)", uri) + if not match: + print "Invalid ymsgr URI: %s" % uri + return + + command = urllib.unquote(match.group(1)) + screenname = urllib.unquote(match.group(3)) + paramstring = match.group(5) + params = {} + if paramstring: + for param in paramstring.split("&"): + key, value = extendlist(param.split("=", 1), 2, "") + params[key] = urllib.unquote(value) + + account = findaccount(protocol) + + if command == "sendIM": + goim(account, screenname, params.get("m")) + elif command == "chat": + gochat(account, {"room": screenname}) + elif command == "addfriend": + addbuddy(account, screenname) + + +def main(argv=sys.argv): + if len(argv) != 2: + print "Usage: %s URI" % argv[0] + print "Example: %s \"xmpp:ro...@mo...?message\"" % argv[0] + return + + uri = argv[1] + type = uri.split(":")[0] + + if type == "aim": + aim(uri) + elif type == "gg": + gg(uri) + elif type == "icq": + icq(uri) + elif type == "irc": + irc(uri) + elif type == "msnim": + msnim(uri) + elif type == "sip": + sip(uri) + elif type == "xmpp": + xmpp(uri) + elif type == "ymsgr": + ymsgr(uri) + else: + print "Unkown protocol: %s" % type + +if __name__ == "__main__": + main() Property changes on: trunk/libgaim/gaim-url-handler ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/libgaim/gconf/Makefile.am =================================================================== --- trunk/libgaim/gconf/Makefile.am (rev 0) +++ trunk/libgaim/gconf/Makefile.am 2006-09-11 02:30:59 UTC (rev 17240) @@ -0,0 +1,9 @@ +schemadir = @GCONF_SCHEMA_FILE_DIR@ +schema_DATA = gaim.schemas + +if GCONF_SCHEMAS_INSTALL +install-data-local: + GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$(schema_DATA) +else +install-data-local: +endif Property changes on: trunk/libgaim/gconf/Makefile.am ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/libgaim/gconf/gaim.schemas =================================================================== --- trunk/libgaim/gconf/gaim.schemas (rev 0) +++ trunk/libgaim/gconf/gaim.schemas 2006-09-11 02:30:59 UTC (rev 17240) @@ -0,0 +1,276 @@ +<?xml version="1.0"?> +<gconfschemafile> + <schemalist> + <schema> + <key>/schemas/desktop/gnome/url-handlers/aim/enabled</key> + <applyto>/desktop/gnome/url-handlers/aim/enabled</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether the specified command should handle "aim" URLs</short> + <long>True if the command specified in the "command" key should handle "aim" URLs.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/aim/command</key> +im <applyto>/desktop/gnome/url-handlers/aim/command</applyto> + <owner>gaim</owner> + <type>string</type> + <default>gaim-url-handler "%s"</default> + <locale name="C"> + <short>The handler for "aim" URLs</short> + <long>The command used to handle "aim" URLs, if enabled.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/aim/needs_terminal</key> + <applyto>/desktop/gnome/url-handlers/aim/needs_terminal</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Run the command in a terminal</short> + <long>True if the command used to handle this type of URL should be run in a terminal.</long> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/gg/enabled</key> + <applyto>/desktop/gnome/url-handlers/gg/enabled</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether the specified command should handle "gg" URLs</short> + <long>True if the command specified in the "command" key should handle "gg" URLs.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/gg/command</key> + <applyto>/desktop/gnome/url-handlers/gg/command</applyto> + <owner>gaim</owner> + <type>string</type> + <default>gaim-url-handler "%s"</default> + <locale name="C"> + <short>The handler for "gg" URLs</short> + <long>The command used to handle "gg" URLs, if enabled.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/gg/needs_terminal</key> + <applyto>/desktop/gnome/url-handlers/gg/needs_terminal</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Run the command in a terminal</short> + <long>True if the command used to handle this type of URL should be run in a terminal.</long> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/icq/enabled</key> + <applyto>/desktop/gnome/url-handlers/icq/enabled</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether the specified command should handle "icq" URLs</short> + <long>True if the command specified in the "command" key should handle "icq" URLs.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/icq/command</key> + <applyto>/desktop/gnome/url-handlers/icq/command</applyto> + <owner>gaim</owner> + <type>string</type> + <default>gaim-url-handler "%s"</default> + <locale name="C"> + <short>The handler for "icq" URLs</short> + <long>The command used to handle "icq" URLs, if enabled.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/icq/needs_terminal</key> + <applyto>/desktop/gnome/url-handlers/icq/needs_terminal</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Run the command in a terminal</short> + <long>True if the command used to handle this type of URL should be run in a terminal.</long> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/irc/enabled</key> + <applyto>/desktop/gnome/url-handlers/irc/enabled</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether the specified command should handle "irc" URLs</short> + <long>True if the command specified in the "command" key should handle "irc" URLs.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/irc/command</key> + <applyto>/desktop/gnome/url-handlers/irc/command</applyto> + <owner>gaim</owner> + <type>string</type> + <default>gaim-url-handler "%s"</default> + <locale name="C"> + <short>The handler for "irc" URLs</short> + <long>The command used to handle "irc" URLs, if enabled.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/irc/needs_terminal</key> + <applyto>/desktop/gnome/url-handlers/irc/needs_terminal</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Run the command in a terminal</short> + <long>True if the command used to handle this type of URL should be run in a terminal.</long> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/msnim/enabled</key> + <applyto>/desktop/gnome/url-handlers/msnim/enabled</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether the specified command should handle "msnim" URLs</short> + <long>True if the command specified in the "command" key should handle "msnim" URLs.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/msnim/command</key> + <applyto>/desktop/gnome/url-handlers/msnim/command</applyto> + <owner>gaim</owner> + <type>string</type> + <default>gaim-url-handler "%s"</default> + <locale name="C"> + <short>The handler for "msnim" URLs</short> + <long>The command used to handle "msnim" URLs, if enabled.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/msnim/needs_terminal</key> + <applyto>/desktop/gnome/url-handlers/msnim/needs_terminal</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Run the command in a terminal</short> + <long>True if the command used to handle this type of URL should be run in a terminal.</long> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/sip/enabled</key> + <applyto>/desktop/gnome/url-handlers/sip/enabled</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether the specified command should handle "sip" URLs</short> + <long>True if the command specified in the "command" key should handle "sip" URLs.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/sip/command</key> + <applyto>/desktop/gnome/url-handlers/sip/command</applyto> + <owner>gaim</owner> + <type>string</type> + <default>gaim-url-handler "%s"</default> + <locale name="C"> + <short>The handler for "sip" URLs</short> + <long>The command used to handle "sip" URLs, if enabled.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/sip/needs_terminal</key> + <applyto>/desktop/gnome/url-handlers/sip/needs_terminal</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Run the command in a terminal</short> + <long>True if the command used to handle this type of URL should be run in a terminal.</long> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/xmpp/enabled</key> + <applyto>/desktop/gnome/url-handlers/xmpp/enabled</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether the specified command should handle "xmpp" URLs</short> + <long>True if the command specified in the "command" key should handle "xmpp" URLs.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/xmpp/command</key> + <applyto>/desktop/gnome/url-handlers/xmpp/command</applyto> + <owner>gaim</owner> + <type>string</type> + <default>gaim-url-handler "%s"</default> + <locale name="C"> + <short>The handler for "xmpp" URLs</short> + <long>The command used to handle "xmpp" URLs, if enabled.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/xmpp/needs_terminal</key> + <applyto>/desktop/gnome/url-handlers/xmpp/needs_terminal</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Run the command in a terminal</short> + <long>True if the command used to handle this type of URL should be run in a terminal.</long> + </locale> + </schema> + + <schema> + <key>/schemas/desktop/gnome/url-handlers/ymsgr/enabled</key> + <applyto>/desktop/gnome/url-handlers/ymsgr/enabled</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>true</default> + <locale name="C"> + <short>Whether the specified command should handle "ymsgr" URLs</short> + <long>True if the command specified in the "command" key should handle "ymsgr" URLs.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/ymsgr/command</key> + <applyto>/desktop/gnome/url-handlers/ymsgr/command</applyto> + <owner>gaim</owner> + <type>string</type> + <default>gaim-url-handler "%s"</default> + <locale name="C"> + <short>The handler for "ymsgr" URLs</short> + <long>The command used to handle "ymsgr" URLs, if enabled.</long> + </locale> + </schema> + <schema> + <key>/schemas/desktop/gnome/url-handlers/ymsgr/needs_terminal</key> + <applyto>/desktop/gnome/url-handlers/ymsgr/needs_terminal</applyto> + <owner>gaim</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Run the command in a terminal</short> + <long>True if the command used to handle this type of URL should be run in a terminal.</long> + </locale> + </schema> + </schemalist> +</gconfschemafile> Property changes on: trunk/libgaim/gconf/gaim.schemas ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-09-11 06:16:01
|
Revision: 17245 http://svn.sourceforge.net/gaim/?rev=17245&view=rev Author: thekingant Date: 2006-09-10 23:15:58 -0700 (Sun, 10 Sep 2006) Log Message: ----------- * Don't install gaim-notifications-example when make installing * Have gaim-notifications-example placed in the doc dir when installing Gaim from RPMs * Add the gconf schema to the Gaim RPM * Alphabetize some stuff Modified Paths: -------------- trunk/gaim.spec.in trunk/libgaim/Makefile.am Modified: trunk/gaim.spec.in =================================================================== --- trunk/gaim.spec.in 2006-09-11 04:59:22 UTC (rev 17244) +++ trunk/gaim.spec.in 2006-09-11 06:15:58 UTC (rev 17245) @@ -28,17 +28,17 @@ # Generic build requirements BuildRequires: libtool, pkgconfig, intltool, gettext +%{?_with_avahi:BuildRequires: avahi-compat-howl avahi-compat-howl-devel} +%{?_with_dbus:BuildRequires: dbus-devel >= 0.35} +%{?_with_gadugadu:BuildRequires: libgadu-devel} %{!?_without_gstreamer:BuildRequires: gstreamer-devel} -%{?_with_avahi:BuildRequires: avahi-compat-howl avahi-compat-howl-devel} +%{!?_without_gtkspell:BuildRequires: gtkspell-devel} %{?_with_howl:BuildRequires: howl-devel} -%{?_with_silc:BuildRequires: /usr/include/silc/silcclient.h} %{?_with_meanwhile:BuildRequires: meanwhile-devel} -%{?_with_gadugadu:BuildRequires: libgadu-devel} -%{?_with_tcl:BuildRequires: tcl, tk, /usr/include/tcl.h} %{?_with_mono:BuildRequires: mono-devel} -%{?_with_dbus:BuildRequires: dbus-devel >= 0.35} -%{!?_without_gtkspell:BuildRequires: gtkspell-devel} %{?_with_sasl:BuildRequires: cyrus-sasl-devel >= 2} +%{?_with_silc:BuildRequires: /usr/include/silc/silcclient.h} +%{?_with_tcl:BuildRequires: tcl, tk, /usr/include/tcl.h} # For some reason perl isn't always automatically detected as a requirement :( Requires: perl @@ -63,6 +63,11 @@ %endif %endif +%package devel +Summary: Development headers, documentation, and libraries for Gaim. +Group: Applications/Internet +Requires: pkgconfig, gaim = %{epoch}:%{version} + %if 0%{?_with_howl:1} || 0%{?_with_avahi:1} %package bonjour Summary: Bonjour plugin for Gaim @@ -70,9 +75,9 @@ Requires: gaim = %{epoch}:%{version} %endif -%if 0%{?_with_silc:1} -%package silc -Summary: SILC (Secure Internet Live Conferencing) plugin for Gaim +%if 0%{?_with_gadugadu:1} +%package gadugadu +Summary: Gadu-Gadu plugin for Gaim using the libgadu library Group: Applications/Internet Requires: gaim = %{epoch}:%{version} %endif @@ -84,32 +89,27 @@ Requires: gaim = %{epoch}:%{version} %endif -%if 0%{?_with_gadugadu:1} -%package gadugadu -Summary: Gadu-Gadu plugin for Gaim using the libgadu library +%if 0%{?_with_mono:1} +%package mono +Summary: Mono .NET plugin support for Gaim Group: Applications/Internet Requires: gaim = %{epoch}:%{version} %endif -%if 0%{?_with_tcl:1} -%package tcl -Summary: Tcl scripting support for Gaim +%if 0%{?_with_silc:1} +%package silc +Summary: SILC (Secure Internet Live Conferencing) plugin for Gaim Group: Applications/Internet Requires: gaim = %{epoch}:%{version} %endif -%if 0%{?_with_mono:1} -%package mono -Summary: Mono .NET plugin support for Gaim +%if 0%{?_with_tcl:1} +%package tcl +Summary: Tcl scripting support for Gaim Group: Applications/Internet Requires: gaim = %{epoch}:%{version} %endif -%package devel -Summary: Development headers, documentation, and libraries for Gaim. -Group: Applications/Internet -Requires: pkgconfig, gaim = %{epoch}:%{version} - %description Gaim allows you to talk to anyone using a variety of messaging protocols, including AIM, ICQ, IRC, Yahoo!, Novell Groupwise, MSN @@ -123,14 +123,19 @@ Gaim is NOT affiliated with or endorsed by America Online, Inc., Microsoft Corporation, Yahoo! Inc., or ICQ Inc. +%description devel +The gaim-devel package contains the header files, developer +documentation, and libraries required for development of gaim scripts +and plugins. + %if 0%{?_with_howl:1} || 0%{?_with_avahi:1} %description bonjour Bonjour plugin for Gaim %endif -%if 0%{?_with_silc:1} -%description silc -SILC (Secure Internet Live Conferencing) plugin for Gaim +%if 0%{?_with_gadugadu:1} +%description gadugadu +Gadu-Gadu plugin for Gaim using the libgadu library %endif %if 0%{?_with_meanwhile:1} @@ -138,28 +143,23 @@ Lotus Sametime plugin for Gaim using the Meanwhile library %endif -%if 0%{?_with_gadugadu:1} -%description gadugadu -Gadu-Gadu plugin for Gaim using the libgadu library +%if 0%{?_with_mono:1} +%description mono +Mono plugin loader for Gaim. This package will allow you to write or +use Gaim plugins written in the .NET programming language. %endif +%if 0%{?_with_silc:1} +%description silc +SILC (Secure Internet Live Conferencing) plugin for Gaim +%endif + %if 0%{?_with_tcl:1} %description tcl Tcl plugin loader for Gaim. This package will allow you to write or use Gaim plugins written in the Tcl programming language. %endif -%if 0%{?_with_mono:1} -%description mono -Mono plugin loader for Gaim. This package will allow you to write or -use Gaim plugins written in the .NET programming language. -%endif - -%description devel -The gaim-devel package contains the header files, developer -documentation, and libraries required for development of gaim scripts -and plugins. - %prep %setup -q -n %{name}-@VERSION@ @@ -171,17 +171,16 @@ --libdir=%{_libdir} \ --mandir=%{_mandir} \ --sysconfdir=%{_sysconfdir} \ - --with-ao=%{_libdir} \ + %{!?_with_dbus:--disable-dbus} \ + %{?_without_gstreamer:--disable-gstreamer} \ + %{?_without_gtkspell:--disable-gtkspell} \ + %{?_with_mono:--enable-mono} \ + %{?_with_perlmakehack:--with-perl-lib=%{buildroot}%{_prefix}} \ %{!?_with_perlmakehack:--with-perl-lib=%{_prefix}} \ - %{?_with_perlmakehack:--with-perl-lib=%{buildroot}%{_prefix}} \ + %{?_with_sasl:--enable-cyrus-sasl} \ %{?_with_silc:--with-silc-includes=%{_includedir}/silc} \ %{?_with_silc:--with-silc-libs=%{_libdir}/silc} \ - %{?_with_mono:--enable-mono} \ - %{!?_with_tcl:--disable-tcl} \ - %{!?_with_dbus:--disable-dbus} \ - %{?_without_gtkspell:--disable-gtkspell} \ - %{?_with_sasl:--enable-cyrus-sasl} \ - %{?_without_gstreamer:--disable-gstreamer} + %{!?_with_tcl:--disable-tcl} make %{?_smp_mflags} @@ -197,38 +196,39 @@ make DESTDIR=$RPM_BUILD_ROOT install %endif +# Delete files that we don't want to put in any of the RPMs rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/*.la rm -f $RPM_BUILD_ROOT%{_libdir}/*.la rm -f $RPM_BUILD_ROOT%{perl_archlib}/perllocal.pod find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';' find $RPM_BUILD_ROOT -type f -name '*.bs' -empty -exec rm -f {} ';' +%if 0%{!?_with_gadugadu:1} +rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/libgg.so +%endif + %if 0%{!?_with_howl:1} && 0%{!?_with_avahi:1} rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/libbonjour.so %endif -%if 0%{!?_with_silc:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/libsilcgaim.so -%endif - %if 0%{!?_with_meanwhile:1} rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/libsametime.so %endif -%if 0%{!?_with_gadugadu:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/libgg.so +%if 0%{!?_with_mono:1} +rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/mono.so +rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/*.dll %endif +%if 0%{!?_with_silc:1} +rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/libsilcgaim.so +%endif + %if 0%{!?_with_tcl:1} rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/tcl.so %endif -%if 0%{!?_with_mono:1} -rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/mono.so -rm -f $RPM_BUILD_ROOT%{_libdir}/gaim/*.dll -%endif - find $RPM_BUILD_ROOT%{_libdir}/gaim -type f -print | \ sed "s@^$RPM_BUILD_ROOT@@g" | \ grep -v libbonjour.so | \ @@ -275,27 +275,37 @@ %{_libdir}/libgaim-client.so.* %{_datadir}/dbus-1/services/gaim.service %doc README.dbus +%doc libgaim/gaim-notifications-example %endif -%if 0%{?_with_howl:1} || 0%{?_with_avahi:1} -%files bonjour +%files devel %defattr(-, root, root) -%{_libdir}/gaim/libbonjour.* -%endif +%doc ChangeLog.API +%doc HACKING +%doc PLUGIN_HOWTO +%doc PROGRAMMING_NOTES -%if 0%{?_with_silc:1} -%files silc -%defattr(-, root, root) - -%{_libdir}/gaim/libsilcgaim.* +%dir %{_includedir}/gaim +%{_includedir}/gaim/*.h +%dir %{_includedir}/gaim/gnt +%{_includedir}/gaim/gnt/*.h +%dir %{_includedir}/gnt +%{_includedir}/gnt/*.h +%{_libdir}/libgaim.so +%{_libdir}/libgnt.so +%{_libdir}/pkgconfig/gaim.pc +%{_libdir}/pkgconfig/gnt.pc +%{_datadir}/aclocal/gaim.m4 +%if 0%{?_with_dbus:1} +%{_libdir}/libgaim-client.so %endif -%if 0%{?_with_meanwhile:1} -%files meanwhile +%if 0%{?_with_howl:1} || 0%{?_with_avahi:1} +%files bonjour %defattr(-, root, root) -%{_libdir}/gaim/libsametime.* +%{_libdir}/gaim/libbonjour.* %endif %if 0%{?_with_gadugadu:1} @@ -305,11 +315,11 @@ %{_libdir}/gaim/libgg.* %endif -%if 0%{?_with_tcl:1} -%files tcl +%if 0%{?_with_meanwhile:1} +%files meanwhile %defattr(-, root, root) -%{_libdir}/gaim/tcl.so +%{_libdir}/gaim/libsametime.* %endif %if 0%{?_with_mono:1} @@ -320,27 +330,18 @@ %{_libdir}/gaim/*.dll %endif -%files devel +%if 0%{?_with_silc:1} +%files silc %defattr(-, root, root) -%doc ChangeLog.API -%doc HACKING -%doc PLUGIN_HOWTO -%doc PROGRAMMING_NOTES +%{_libdir}/gaim/libsilcgaim.* +%endif -%dir %{_includedir}/gaim -%{_includedir}/gaim/*.h -%dir %{_includedir}/gaim/gnt -%{_includedir}/gaim/gnt/*.h -%dir %{_includedir}/gnt -%{_includedir}/gnt/*.h -%{_libdir}/libgaim.so -%{_libdir}/libgnt.so -%{_libdir}/pkgconfig/gaim.pc -%{_libdir}/pkgconfig/gnt.pc -%{_datadir}/aclocal/gaim.m4 -%if 0%{?_with_dbus:1} -%{_libdir}/libgaim-client.so +%if 0%{?_with_tcl:1} +%files tcl +%defattr(-, root, root) + +%{_libdir}/gaim/tcl.so %endif %changelog Modified: trunk/libgaim/Makefile.am =================================================================== --- trunk/libgaim/Makefile.am 2006-09-11 04:59:22 UTC (rev 17244) +++ trunk/libgaim/Makefile.am 2006-09-11 06:15:58 UTC (rev 17245) @@ -192,7 +192,7 @@ # scripts -bin_SCRIPTS = gaim-notifications-example gaim-remote gaim-send gaim-send-async gaim-url-handler +bin_SCRIPTS = gaim-remote gaim-send gaim-send-async gaim-url-handler endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lsc...@us...> - 2006-09-11 16:52:11
|
Revision: 17250 http://svn.sourceforge.net/gaim/?rev=17250&view=rev Author: lschiere Date: 2006-09-11 09:51:42 -0700 (Mon, 11 Sep 2006) Log Message: ----------- a few translation updates Modified Paths: -------------- trunk/gtk/gtkdialogs.c trunk/po/ca.po trunk/po/zh_CN.po Modified: trunk/gtk/gtkdialogs.c =================================================================== --- trunk/gtk/gtkdialogs.c 2006-09-11 07:14:39 UTC (rev 17249) +++ trunk/gtk/gtkdialogs.c 2006-09-11 16:51:42 UTC (rev 17250) @@ -138,6 +138,8 @@ {N_("French"), "fr", "Éric Boumaour", "zon...@us..."}, {N_("Galician"), "gl", "Ignacio Casal Quinteiro", "nac...@gm..."}, {N_("Gujarati"), "gu", "Ankit Patel", "ank...@us..."}, + {N_("Gujarati"), "gu", "Kartik Mistry", "kar...@gm..."}, + {N_("Gujarati"), "gu", "Gujarati Language Team", "ind...@li..." {N_("Hebrew"), "he", "Shalom Craimer", "scr...@gm..."}, {N_("Hindi"), "hi", "Ravishankar Shrivastava", "rav...@ya..."}, {N_("Hungarian"), "hu", "Zoltan Sutto", "sut...@ru..."}, Modified: trunk/po/ca.po =================================================================== --- trunk/po/ca.po 2006-09-11 07:14:39 UTC (rev 17249) +++ trunk/po/ca.po 2006-09-11 16:51:42 UTC (rev 17250) @@ -33,8 +33,8 @@ msgstr "" "Project-Id-Version: Gaim\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2006-02-28 19:45+0100\n" -"PO-Revision-Date: 2006-02-28 20:10+0100\n" +"POT-Creation-Date: 2006-08-26 22:47+0200\n" +"PO-Revision-Date: 2006-08-27 02:39+0200\n" "Last-Translator: Josep Puigdemont i Casamajó <jos...@gm...>\n" "Language-Team: Catalan <tra...@so...>\n" "MIME-Version: 1.0\n" @@ -54,2513 +54,1277 @@ msgid "Send instant messages over multiple protocols" msgstr "Envieu missatges instantanis en múltiples protocols" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/ciphertest.c:264 -msgid "Cipher Test" -msgstr "Prova de xifratge" +#: ../console/gntaccount.c:95 ../console/gntblist.c:168 +#: ../console/gntblist.c:219 ../console/gntblist.c:232 +#: ../console/gntplugin.c:145 ../console/gntplugin.c:190 +#: ../console/gntstatus.c:216 ../console/gntstatus.c:224 +#: ../libgaim/protocols/jabber/buddy.c:1365 +#: ../libgaim/protocols/jabber/chat.c:675 +#: ../libgaim/protocols/jabber/chat.c:686 +#: ../libgaim/protocols/jabber/jabber.c:1191 +#: ../libgaim/protocols/silc/ops.c:1448 +msgid "Error" +msgstr "Error" -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/ciphertest.c:267 ../plugins/ciphertest.c:269 -msgid "Tests the ciphers that ship with gaim." -msgstr "Fa una prova dels xifratges que es distribueixen amb el gaim." +#: ../console/gntaccount.c:95 +msgid "Account was not added" +msgstr "No s'ha afegit el compte" -#: ../plugins/contact_priority.c:61 -msgid "Buddy is idle" -msgstr "L'amic està inactiu" +#: ../console/gntaccount.c:96 +msgid "Screenname of an account must be non-empty." +msgstr "El nom d'usuari d'un compte no pot ser buit." -#: ../plugins/contact_priority.c:62 -msgid "Buddy is away" -msgstr "L'amic està absent" +#: ../console/gntaccount.c:399 ../gtk/gtkaccount.c:553 +msgid "New mail notifications" +msgstr "Notifica si hi ha nou correu" -#: ../plugins/contact_priority.c:63 -msgid "Buddy is \"extended\" away" -msgstr "L'amic està absent «estès»" +#: ../console/gntaccount.c:409 ../gtk/gtkaccount.c:482 +msgid "Remember password" +msgstr "Recorda la contrasenya" -#. Not used yet. -#: ../plugins/contact_priority.c:66 -msgid "Buddy is mobile" -msgstr "L'amis és mòbil" +#: ../console/gntaccount.c:450 ../gtk/gtkaccount.c:1395 ../gtk/gtkblist.c:3787 +msgid "Modify Account" +msgstr "Modifica compte" -#: ../plugins/contact_priority.c:68 -msgid "Buddy is offline" -msgstr "L'amic no està connectat" +#: ../console/gntaccount.c:450 +msgid "New Account" +msgstr "Compte nou" -#: ../plugins/contact_priority.c:90 -msgid "Point values to use when..." -msgstr "Puntuació quan..." +#: ../console/gntaccount.c:476 ../gtk/gtkaccount.c:394 ../gtk/gtkft.c:642 +msgid "Protocol:" +msgstr "Protocol:" -#: ../plugins/contact_priority.c:118 -msgid "" -"The buddy with the <i>largest score</i> is the buddy who will have priority " -"in the contact.\n" -msgstr "" -"L'amic amb la <i>puntuació més alta</i> és l'amic que tindrà prioritat de " -"contace.\n" +#: ../console/gntaccount.c:484 ../gtk/gtkaccount.c:399 ../gtk/gtkblist.c:4842 +#: ../gtk/plugins/gevolution/new_person_dialog.c:295 +msgid "Screen name:" +msgstr "Nom d'usuari:" -#: ../plugins/contact_priority.c:125 -msgid "Use last buddy when scores are equal" -msgstr "Utilitza l'últim amic quan les puntuacions siguin iguals" +#: ../console/gntaccount.c:497 ../gtk/gtkaccount.c:473 +#: ../gtk/plugins/cap/cap.c:934 +msgid "Password:" +msgstr "Contrasenya:" -#: ../plugins/contact_priority.c:130 -msgid "Point values to use for account..." -msgstr "Puntuació a utilitzar per al compte..." +#: ../console/gntaccount.c:507 ../gtk/gtkblist.c:4863 ../gtk/gtkblist.c:5228 +msgid "Alias:" +msgstr "Àlies:" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/contact_priority.c:182 -msgid "Contact Priority" -msgstr "Prioritat de contacte" +#. Cancel +#: ../console/gntaccount.c:530 ../console/gntaccount.c:591 +#: ../console/gntaccount.c:803 ../console/gntblist.c:209 +#: ../console/gntblist.c:242 ../console/gntblist.c:609 +#: ../console/gntblist.c:697 ../console/gntprefs.c:202 +#: ../console/gntstatus.c:108 ../console/gntstatus.c:380 +#: ../console/gntstatus.c:500 ../gtk/gtkaccount.c:1828 +#: ../gtk/gtkaccount.c:2298 ../gtk/gtkblist.c:5284 ../gtk/gtkdialogs.c:666 +#: ../gtk/gtkdialogs.c:803 ../gtk/gtkdialogs.c:894 ../gtk/gtkdialogs.c:913 +#: ../gtk/gtkdialogs.c:935 ../gtk/gtkdialogs.c:955 ../gtk/gtkdialogs.c:999 +#: ../gtk/gtkdialogs.c:1054 ../gtk/gtkdialogs.c:1091 ../gtk/gtkdialogs.c:1116 +#: ../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:1171 +#: ../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:594 +#: ../libgaim/protocols/jabber/buddy.c:1727 +#: ../libgaim/protocols/jabber/buddy.c:1761 +#: ../libgaim/protocols/jabber/chat.c:778 +#: ../libgaim/protocols/jabber/jabber.c:841 +#: ../libgaim/protocols/jabber/jabber.c:1346 +#: ../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:1368 +#: ../libgaim/protocols/oscar/oscar.c:2130 +#: ../libgaim/protocols/oscar/oscar.c:2169 +#: ../libgaim/protocols/oscar/oscar.c:2217 +#: ../libgaim/protocols/oscar/oscar.c:5710 +#: ../libgaim/protocols/oscar/oscar.c:5762 +#: ../libgaim/protocols/oscar/oscar.c:5914 +#: ../libgaim/protocols/oscar/oscar.c:5939 +#: ../libgaim/protocols/oscar/oscar.c:5995 +#: ../libgaim/protocols/oscar/oscar.c:6064 +#: ../libgaim/protocols/oscar/peer.c:982 +#: ../libgaim/protocols/sametime/sametime.c:3365 +#: ../libgaim/protocols/sametime/sametime.c:3450 +#: ../libgaim/protocols/sametime/sametime.c:3620 +#: ../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:3156 +#: ../libgaim/protocols/yahoo/yahoo.c:3165 ../libgaim/request.h:1344 +#: ../libgaim/request.h:1354 +msgid "Cancel" +msgstr "Cancel·la" -#. *< name -#. *< version -#. *< summary -#: ../plugins/contact_priority.c:185 -msgid "" -"Allows for controlling the values associated with different buddy states." -msgstr "" -"Us permet canviar els valors associats als diferents estats dels amics." +#. Save +#: ../console/gntaccount.c:534 ../console/gntprefs.c:202 +#: ../console/gntstatus.c:383 ../console/gntstatus.c:488 ../gtk/gtkdebug.c:684 +#: ../gtk/gtkrequest.c:276 ../libgaim/account.c:1170 +#: ../libgaim/protocols/jabber/buddy.c:593 +msgid "Save" +msgstr "Desa" -#. *< description -#: ../plugins/contact_priority.c:187 -msgid "" -"Allows for changing the point values of idle/away/offline states for buddies " -"in contact priority computations." -msgstr "" -"Us permet canviar els valors dels estats inactiu, absent i desconnectat pel " -"càlcul de la prioritat dels amics." +#: ../console/gntaccount.c:586 ../gtk/gtkaccount.c:1822 +#: ../gtk/gtksavedstatuses.c:293 +#, c-format +msgid "Are you sure you want to delete %s?" +msgstr "Esteu segur que voleu suprimir %s?" -#. *< api_version -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/crazychat/cc_gaim_plugin.c:146 -msgid "Crazychat" -msgstr "Crazychat" +#. Close any other opened delete window +#: ../console/gntaccount.c:590 +msgid "Delete Account" +msgstr "Suprimeix un compte" -#. *< name -#. *< version -#. * summary -#: ../plugins/crazychat/cc_gaim_plugin.c:149 -msgid "Plugin to establish a Crazychat session." -msgstr "Connector per a establir una connexió Crazychat." +#: ../console/gntaccount.c:591 ../console/gntaccount.c:657 +#: ../console/gntstatus.c:108 ../console/gntstatus.c:170 +#: ../gtk/gtkaccount.c:1827 ../gtk/gtkpounce.c:1087 ../gtk/gtkrequest.c:273 +#: ../gtk/gtksavedstatuses.c:295 +msgid "Delete" +msgstr "Suprimeix" -#. * description -#: ../plugins/crazychat/cc_gaim_plugin.c:151 -msgid "Uses Gaim to obtain buddy ips to connect for a Crazychat session" -msgstr "" -"Utilitza el Gaim per a obtenir les IP d'amics on connectar per a sessions " -"Crazychat" +#: ../console/gntaccount.c:620 ../gtk/gtkaccount.c:2130 +#: ../gtk/plugins/docklet/docklet.c:519 +msgid "Accounts" +msgstr "Comptes" -#. make the network configuration frame -#: ../plugins/crazychat/cc_gaim_plugin.c:295 -msgid "Network Configuration" -msgstr "Configuració de xarxa" +#: ../console/gntaccount.c:626 +msgid "You can enable/disable accounts from the following list." +msgstr "Podeu habilitar/inhabilitar comptes d'aquesta llista." -#: ../plugins/crazychat/cc_gaim_plugin.c:307 -msgid "TCP port" -msgstr "Port TCP" +#: ../console/gntaccount.c:649 ../console/gntaccount.c:802 +#: ../console/gntblist.c:209 ../console/gntblist.c:242 +#: ../console/gntnotify.c:282 ../console/gntstatus.c:160 +#: ../gtk/gtkaccount.c:2297 ../gtk/gtkblist.c:5283 ../gtk/gtkconv.c:1594 +#: ../gtk/gtkrequest.c:274 ../libgaim/protocols/gg/gg.c:870 +#: ../libgaim/protocols/oscar/oscar.c:2407 +#: ../libgaim/protocols/sametime/sametime.c:5408 +#: ../libgaim/protocols/silc/chat.c:596 +msgid "Add" +msgstr "Afegeix" -#: ../plugins/crazychat/cc_gaim_plugin.c:317 -msgid "UDP port" -msgstr "Port UDP" +#: ../console/gntaccount.c:653 +msgid "Modify" +msgstr "Modifica" -#. make the feature configuration frame -#: ../plugins/crazychat/cc_gaim_plugin.c:329 -msgid "Feature Calibration" -msgstr "Calibratge de característiques" - -#. add enabled / disabled -#: ../plugins/crazychat/cc_gaim_plugin.c:345 ../src/gtkaccount.c:2251 -#: ../src/gtkplugin.c:577 -msgid "Enabled" -msgstr "Habilitat" - -#: ../plugins/crazychat/cc_gaim_plugin.c:350 -msgid "Disabled" -msgstr "Inhabilitat" - -#. *< 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 "Exemple de connector DBus" - -# FIXME: Do not use "Right click", as left-handed people would use left click. -# Instead it might be better to use "primary button" (josep) -#: ../plugins/docklet/docklet.c:154 -msgid "Right-click for more unread messages...\n" -msgstr "Feu clic amb el botó principal per a més missatges sense llegir...\n" - -#: ../plugins/docklet/docklet.c:157 ../src/gtkblist.c:3274 +#: ../console/gntaccount.c:727 ../gtk/gtkaccount.c:2246 #, c-format -msgid "%d unread message from %s\n" -msgid_plural "%d unread messages from %s\n" -msgstr[0] "%d missatge sense llegir de %s\n" -msgstr[1] "%d missatges sense llegir de %s\n" +msgid "%s%s%s%s has made %s his or her buddy%s%s" +msgstr "%s%s%s%s ha fet a %s un dels seus amics%s%s" -#: ../plugins/docklet/docklet.c:432 -msgid "Change Status" -msgstr "Canvia l'estat" +#: ../console/gntaccount.c:800 ../gtk/gtkaccount.c:2295 +msgid "Add buddy to your list?" +msgstr "Voleu afegir l'amic a la llista?" -#: ../plugins/docklet/docklet.c:435 ../src/gtkstatusbox.c:673 -#: ../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:2734 ../src/status.c:155 -msgid "Available" -msgstr "Disponible" +#: ../console/gntblist.c:160 +msgid "You must provide a screename for the buddy." +msgstr "Heu de proporcionar el nom d'usuari per a l'amic." -#. Away stuff -#: ../plugins/docklet/docklet.c:439 ../src/gtkprefs.c:1759 -#: ../src/gtkstatusbox.c:674 ../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:3188 -#: ../src/status.c:158 -msgid "Away" -msgstr "Absent" +#: ../console/gntblist.c:162 +msgid "You must provide a group." +msgstr "Heu de proporcionar un grup." -#: ../plugins/docklet/docklet.c:443 ../src/gtkstatusbox.c:675 -#: ../src/protocols/oscar/oscar.c:733 ../src/protocols/yahoo/yahoo.c:2728 -#: ../src/status.c:157 -msgid "Invisible" -msgstr "Invisible" +#: ../console/gntblist.c:164 +msgid "You must select an account." +msgstr "Heu de seleccionar un compte." -#: ../plugins/docklet/docklet.c:447 ../src/gtkblist.c:3004 -#: ../src/gtkstatusbox.c:676 ../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:2732 -#: ../src/status.c:154 -msgid "Offline" -msgstr "Fora de línia" +#: ../console/gntblist.c:168 +msgid "Error adding buddy" +msgstr "S'ha produït un error en afegir un amic" -#: ../plugins/docklet/docklet.c:467 ../src/gtkstatusbox.c:681 -msgid "New..." -msgstr "Nou..." +#: ../console/gntblist.c:193 ../gtk/gtkaccount.c:1891 +#: ../gtk/gtksavedstatuses.c:893 ../libgaim/protocols/oscar/oscar.c:2781 +msgid "Screen Name" +msgstr "Nom d'usuari" -#: ../plugins/docklet/docklet.c:468 ../src/gtkstatusbox.c:682 -msgid "Saved..." -msgstr "Desat..." +#: ../console/gntblist.c:196 ../gtk/gtkdialogs.c:912 ../gtk/gtkdialogs.c:934 +#: ../gtk/gtkdialogs.c:954 ../gtk/gtkrequest.c:277 +#: ../libgaim/protocols/silc/chat.c:587 +msgid "Alias" +msgstr "Àlies" -#: ../plugins/docklet/docklet.c:484 -msgid "Show Buddy List" -msgstr "Mostra la llista d'amics" +#: ../console/gntblist.c:199 +msgid "Group" +msgstr "Grup" -#: ../plugins/docklet/docklet.c:489 -msgid "Unread Messages" -msgstr "Missatges sense llegir" - -#: ../plugins/docklet/docklet.c:510 -msgid "New Message..." -msgstr "Missatge nou..." - -#: ../plugins/docklet/docklet.c:519 ../src/gtkaccount.c:2467 -msgid "Accounts" +#: ../console/gntblist.c:202 ../console/gntnotify.c:131 +#: ../console/gntstatus.c:471 ../gtk/gtknotify.c:406 ../gtk/gtkpounce.c:1255 +#: ../gtk/plugins/gevolution/gevolution.c:450 ../libgaim/plugins/idle.c:153 +#: ../libgaim/plugins/idle.c:189 +msgid "Account" msgstr "Comptes" -#: ../plugins/docklet/docklet.c:520 ../src/gtkplugin.c:541 -msgid "Plugins" -msgstr "Connectors" +#: ../console/gntblist.c:208 ../console/gntblist.c:496 ../gtk/gtkblist.c:4796 +#: ../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:3070 +msgid "Add Buddy" +msgstr "Afegeix un amic" -#: ../plugins/docklet/docklet.c:521 ../src/gtkprefs.c:1900 -msgid "Preferences" -msgstr "Preferències" +#: ../console/gntblist.c:208 +msgid "Please enter buddy information." +msgstr "Entreu informació sobre l'amic." -#: ../plugins/docklet/docklet.c:525 -msgid "Mute Sounds" -msgstr "Inhabilita els sons" +#: ../console/gntblist.c:219 ../console/gntblist.c:232 +msgid "Error adding group" +msgstr "S'ha produït un error en afegir el grup" -#. TODO: need a submenu to change status, this needs to "link" -#. * to the status in the buddy list gtkstatusbox -#. -#: ../plugins/docklet/docklet.c:538 -msgid "Quit" -msgstr "Surt" +#: ../console/gntblist.c:220 +msgid "You must give a name for the group to add." +msgstr "Heu de donar un nom al grup que vulgueu afegir." -#: ../plugins/docklet/docklet.c:679 -msgid "Blink tray icon for unread..." -msgstr "Pampallugueja la icona de l'àrea de notificació per a no llegits..." +#: ../console/gntblist.c:233 +msgid "A group with the name already exists." +msgstr "Ja existeix una grup amb aquest nom." -#: ../plugins/docklet/docklet.c:682 -msgid "_Instant Messages:" -msgstr "Missatges _instantanis:" +#: ../console/gntblist.c:240 ../console/gntblist.c:498 ../gtk/gtkblist.c:5280 +#: ../libgaim/protocols/sametime/sametime.c:5319 +#: ../libgaim/protocols/sametime/sametime.c:5406 +msgid "Add Group" +msgstr "Afegeix un grup" -#: ../plugins/docklet/docklet.c:684 ../plugins/docklet/docklet.c:692 -#: ../plugins/win32/winprefs/winprefs.c:424 ../src/gtkprefs.c:823 -#: ../src/gtkprefs.c:1749 ../src/gtkprefs.c:1763 -msgid "Never" -msgstr "Mai" +#: ../console/gntblist.c:240 +msgid "Enter the name of the group" +msgstr "Entreu el nom del grup" -#: ../plugins/docklet/docklet.c:685 -msgid "In hidden conversations" -msgstr "En converses amagades" +#: ../console/gntblist.c:471 +msgid "Auto-join" +msgstr "Entra automàticament" -#: ../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:425 ../src/gtkprefs.c:825 -msgid "Always" -msgstr "Sempre" +#: ../console/gntblist.c:516 ../libgaim/protocols/silc/chat.c:878 +msgid "Get Info" +msgstr "Aconsegueix informació" -#: ../plugins/docklet/docklet.c:690 -msgid "C_hat Messages:" -msgstr "Missatges de _xat:" +#: ../console/gntblist.c:521 +msgid "Add Buddy Pounce" +msgstr "Afegeix un avís per a l'amic" -#: ../plugins/docklet/docklet.c:693 -msgid "When my nick is said" -msgstr "Quan s'anomeni el meu sobrenom" +#: ../console/gntblist.c:528 ../gtk/gtkconv.c:1542 +#: ../libgaim/protocols/oscar/oscar.c:616 +msgid "Send File" +msgstr "Envia un fitxer" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/docklet/docklet.c:720 -msgid "System Tray Icon" -msgstr "Icona d'estat" +#: ../console/gntblist.c:532 +msgid "View Log" +msgstr "Visualitza el registre" -#. *< name -#. *< version -#. * summary -#: ../plugins/docklet/docklet.c:723 -msgid "Displays an icon for Gaim in the system tray." -msgstr "Mostra una icona per al Gaim a la barra d'estat." +#: ../console/gntblist.c:605 +#, c-format +msgid "Please enter the new name for %s" +msgstr "Entreu un nou nom per a %s" -#. * description -#: ../plugins/docklet/docklet.c:725 -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 "" -"Mostra una icona a l'àrea de notificació (per exemple del GNOME, KDE o " -"Windows) per a mostrar l'estat actual del Gaim, permet un accés ràpid de " -"funcions d'ús habitual, i mostrar o oculta la llista d'amics. També permet " -"opcions que fa que pampalluguegi si hi ha missatges per llegir." +#. These are common for everything +#: ../console/gntblist.c:607 ../console/gntblist.c:608 +#: ../console/gntblist.c:752 +msgid "Rename" +msgstr "Reanomena" -#: ../plugins/docklet/eggtrayicon.c:123 -msgid "Orientation" -msgstr "Orientació" +#: ../console/gntblist.c:607 +msgid "Enter empty string to reset the name." +msgstr "Entreu una cadena buida per a reiniciar el nom." -#: ../plugins/docklet/eggtrayicon.c:124 -msgid "The orientation of the tray." -msgstr "Orientació de l'àrea de notificació." - -#: ../plugins/extplacement.c:80 -msgid "By conversation count" -msgstr "Pel nombre de converses" - -#: ../plugins/extplacement.c:101 -msgid "Conversation Placement" -msgstr "Ubicació de la conversa" - -#: ../plugins/extplacement.c:106 -msgid "Number of conversations per window" -msgstr "Nombre de converses per finestra" - -#: ../plugins/extplacement.c:112 -msgid "Separate IM and Chat windows when placing by number" -msgstr "Separa les finestres de xat i de MI quan s'ubiquin per nombre" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/extplacement.c:135 -msgid "ExtPlacement" -msgstr "Ubicació extra" - -#. *< name -#. *< version -#: ../plugins/extplacement.c:137 -msgid "Extra conversation placement options." -msgstr "Opcions extres per a la ubicació de les converses." - -#. *< summary -#. * description -#: ../plugins/extplacement.c:139 -msgid "" -"Restrict the number of conversations per windows, optionally separating IMs " -"and Chats" +#: ../console/gntblist.c:685 +msgid "Removing this group will also remove all the buddies in the group" msgstr "" -"Restringeix el nombre de converses per finestra, separant opcionalment la MI " -"dels xats" +"En suprimir aquest grup, també se suprimiran tots els amics que hi hagi" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/filectl.c:245 -msgid "Gaim File Control" -msgstr "Control de fitxers del Gaim" +#: ../console/gntblist.c:690 +#, c-format +msgid "Are you sure you want to remove %s?" +msgstr "Esteu segur que voleu suprimir %s?" -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/filectl.c:248 ../plugins/filectl.c:250 -msgid "Allows you to control Gaim by entering commands in a file." -msgstr "Us permet controlar el Gaim entrant ordres en un fitxer." +#. XXX: anything to do with the returned ui-handle? +#: ../console/gntblist.c:693 +msgid "Confirm Remove" +msgstr "Confirmeu que voleu suprimir" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/gaiminc.c:91 -msgid "Gaim Demonstration Plugin" -msgstr "Connector de demostració del Gaim" +#: ../console/gntblist.c:696 ../console/gntblist.c:754 ../gtk/gtkblist.c:1027 +#: ../gtk/gtkconv.c:1591 ../gtk/gtkrequest.c:275 +msgid "Remove" +msgstr "Suprimeix" -#. *< name -#. *< version -#. * summary -#: ../plugins/gaiminc.c:94 -msgid "An example plugin that does stuff - see the description." -msgstr "Un connector d'exemple que fa coses - vegeu-ne la descripció." - -#. * description -#: ../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 "" -"Aquest és un connector realment interessant que fa moltes coses:\n" -"- mostra qui ha escrit el programa quan us connecteu\n" -"- escriu a l'inrevés tots els missatges rebuts\n" -"- envia un missatge a tots els amics immediatament després de que es " -"connectin" - -#: ../plugins/gaimrc.c:41 -msgid "Cursor Color" -msgstr "Color del cursor" - -#: ../plugins/gaimrc.c:42 -msgid "Secondary Cursor Color" -msgstr "Color secundari del cursor" - -#: ../plugins/gaimrc.c:43 -msgid "Hyperlink Color" -msgstr "Color dels hiperenllaços" - -#: ../plugins/gaimrc.c:56 -msgid "GtkTreeView Expander Size" -msgstr "Mida de l'expansor del GTkTreeView" - -#: ../plugins/gaimrc.c:57 -msgid "GtkTreeView Horizontal Separation" -msgstr "Separació horitzontal del GtkTreeView" - -#: ../plugins/gaimrc.c:76 -msgid "Conversation Entry" -msgstr "Entrada de la conversa" - -#: ../plugins/gaimrc.c:77 -msgid "Conversation History" -msgstr "Històric de converses" - -#: ../plugins/gaimrc.c:78 -msgid "Log Viewer" -msgstr "Visualitzador del registre" - -#: ../plugins/gaimrc.c:79 -msgid "Request Dialog" -msgstr "Diàleg de sol·licitud" - -#: ../plugins/gaimrc.c:80 -msgid "Notify Dialog" -msgstr "Diàleg de notificació" - -#: ../plugins/gaimrc.c:91 -msgid "GtkTreeView Indent Expanders" -msgstr "Expansors del sagnat del GTkTreeView" - -#: ../plugins/gaimrc.c:287 +#: ../console/gntblist.c:818 ../console/gntblist.c:867 #, c-format -msgid "Select Color for %s" -msgstr "Selecciona el color per a %s" +msgid "Account: %s (%s)" +msgstr "Compte: %s (%s)" -#: ../plugins/gaimrc.c:289 -msgid "Select Color" -msgstr "Selecciona el color per a %s" - -#: ../plugins/gaimrc.c:324 +#: ../console/gntblist.c:845 #, c-format -msgid "Select Font for %s" -msgstr "Selecciona el tipus de lletra per a %s" - -#: ../plugins/gaimrc.c:362 -msgid "Select Interface Font" -msgstr "Selecciona el tipus de lletra de la interfície" - -#: ../plugins/gaimrc.c:415 -msgid "General" -msgstr "General" - -#: ../plugins/gaimrc.c:420 -msgid "GTK+ Interface Font" -msgstr "Tipus de lletra de la interfície GTK+" - -#: ../plugins/gaimrc.c:440 -msgid "GTK+ Text Shortcut Theme" -msgstr "Tema de la drecera de text de GTK+" - -#: ../plugins/gaimrc.c:475 -msgid "Interface colors" -msgstr "Colors de la interfície" - -#: ../plugins/gaimrc.c:499 -msgid "Widget Sizes" -msgstr "Mides del giny" - -#: ../plugins/gaimrc.c:520 -msgid "Fonts" -msgstr "Tipus de lletra" - -#: ../plugins/gaimrc.c:543 -msgid "Tools" -msgstr "Eines" - -#: ../plugins/gaimrc.c:548 -#, c-format -msgid "Write settings to %s%sgtkrc-2.0" -msgstr "Escriu els paràmetres a %s%sgtkrc-2.0" - -#: ../plugins/gaimrc.c:556 -msgid "Re-read gtkrc files" -msgstr "Torna a llegir els fitxers gtkrc" - -#: ../plugins/gaimrc.c:583 -msgid "Gaim GTK+ Theme Control" -msgstr "Control de temes GTK+ del Gaim" - -#: ../plugins/gaimrc.c:585 ../plugins/gaimrc.c:586 -msgid "Provides access to commonly used gtkrc settings." -msgstr "Proporciona accés a paràmetres del gtkrc utilitzats habitualment." - -#. Configuration frame -#: ../plugins/gestures/gestures.c:235 -msgid "Mouse Gestures Configuration" -msgstr "Configuració de les gesticulacions amb el ratolí" - -#: ../plugins/gestures/gestures.c:242 -msgid "Middle mouse button" -msgstr "Botó central del ratolí" - -#: ../plugins/gestures/gestures.c:247 -msgid "Right mouse button" -msgstr "Botó dret del ratolí" - -#. "Visual gesture display" checkbox -#: ../plugins/gestures/gestures.c:259 -msgid "_Visual gesture display" -msgstr "Mostra les gesticulacions _visualment" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/gestures/gestures.c:289 -msgid "Mouse Gestures" -msgstr "Gesticulacions amb el ratolí" - -#. *< name -#. *< version -#. * summary -#: ../plugins/gestures/gestures.c:292 -msgid "Provides support for mouse gestures" -msgstr "Permet l'ús de gesticulacions amb el ratolí" - -#. * description -#: ../plugins/gestures/gestures.c:294 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." +"Idle: %s" msgstr "" -"Permet usar gesticulacions amb el ratolí en les finestres de conversa.\n" -"Arrossegueu el botó central del ratolí per realitzar certes accions:\n" "\n" -"A baix i després a la dreta per tancar una conversa\n" -"A dalt i després a l'esquerra per passar a l'anterior conversa\n" -"A dalt i després a la dreta per passar a la següent conversa" +"Inactiu: %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:755 -#: ../src/protocols/msn/msn.c:1524 -msgid "Name" -msgstr "Nom" - -#: ../plugins/gevolution/add_buddy_dialog.c:142 -msgid "Instant Messaging" -msgstr "Missatgeria instantània" - -#. Add the label. -#: ../plugins/gevolution/add_buddy_dialog.c:454 -msgid "Select a person from your address book below, or add a new person." -msgstr "" -"Seleccioneu una persona de la llibreta d'adreces d'aquí baix, o afegiu-n'hi " -"una de nova." - -#. "Search" -#: ../plugins/gevolution/add_buddy_dialog.c:467 -#: ../plugins/gevolution/assoc-buddy.c:353 -#: ../src/protocols/jabber/buddy.c:1418 ../src/protocols/oscar/oscar.c:8320 -#: ../src/protocols/sametime/sametime.c:5532 -msgid "Search" -msgstr "Cerca" - -#: ../plugins/gevolution/add_buddy_dialog.c:548 -#: ../plugins/gevolution/new_person_dialog.c:306 ../src/gtkblist.c:4570 -#: ../src/gtkblist.c:4934 -msgid "Group:" -msgstr "Grup:" - -#. "New Person" button -#: ../plugins/gevolution/add_buddy_dialog.c:574 -#: ../plugins/gevolution/assoc-buddy.c:464 -msgid "New Person" -msgstr "Nova persona" - -#. "Select Buddy" button -#: ../plugins/gevolution/add_buddy_dialog.c:591 -msgid "Select Buddy" -msgstr "Selecciona amic" - -#. Add the label. -#: ../plugins/gevolution/assoc-buddy.c:340 +#: ../console/gntblist.c:856 +#, 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 "" -"Seleccioneu una persona de la llibreta d'adreces on afegir aquest amic, o " -"creeu-n'hi una de nova." +"En línia: %d\n" +"Total: %d" -#. Add the expander -#: ../plugins/gevolution/assoc-buddy.c:428 -msgid "User _details" -msgstr "Detalls de l'_usuari" +#: ../console/gntblist.c:1074 ../gtk/gtkstatusbox.c:814 +#: ../gtk/plugins/docklet/docklet.c:467 +msgid "New..." +msgstr "Nou..." -#. "Associate Buddy" button -#: ../plugins/gevolution/assoc-buddy.c:481 -msgid "_Associate Buddy" -msgstr "_Associa amic" +#: ../console/gntblist.c:1081 ../gtk/gtkstatusbox.c:815 +#: ../gtk/plugins/docklet/docklet.c:468 +msgid "Saved..." +msgstr "Desat..." -#: ../plugins/gevolution/eds-utils.c:73 ../plugins/gevolution/eds-utils.c:86 -#: ../src/protocols/jabber/jabber.c:1125 -msgid "None" -msgstr "Cap" +#. Buddy List +#: ../console/gntblist.c:1284 ../console/gntprefs.c:197 ../gtk/gtkblist.c:3903 +#: ../gtk/plugins/win32/winprefs/winprefs.c:451 +msgid "Buddy List" +msgstr "Llista d'amics" -#: ../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:4379 ../src/protocols/jabber/roster.c:65 -msgid "Buddies" -msgstr "Amics" +#: ../console/gntconn.c:12 +#, c-format +msgid "%s (%s)" +msgstr "%s (%s)" -#: ../plugins/gevolution/gevolution.c:262 -#: ../plugins/gevolution/gevolution.c:268 -msgid "Unable to send e-mail" -msgstr "No s'ha pogut enviar el correu electrònic." +#: ../console/gntconn.c:15 +#, c-format +msgid "%s disconnected." +msgstr "%s s'ha desconnectat." -#: ../plugins/gevolution/gevolution.c:263 -msgid "The evolution executable was not found in the PATH." -msgstr "" -"No s'ha trobat l'executable de l'evolution a la variable d'entorn PATH." - -#: ../plugins/gevolution/gevolution.c:269 -msgid "The specified buddy was not found in the Evolution Contacts." -msgstr "No s'ha trobat l'amic especificat en els contactes de l'Evolution." - -#: ../plugins/gevolution/gevolution.c:286 -msgid "Add to Address Book" -msgstr "Afegeix a la llibreta d'adreces" - -#: ../plugins/gevolution/gevolution.c:290 -msgid "Send E-Mail" -msgstr "Envia un correu" - -#. Configuration frame -#: ../plugins/gevolution/gevolution.c:417 -msgid "Evolution Integration Configuration" -msgstr "Configuració de la integració amb l'Evolution" - -#. Label -#: ../plugins/gevolution/gevolution.c:420 -msgid "Select all accounts that buddies should be auto-added to." -msgstr "" -"Seleccioneu tots els comptes on els amics s'hagin d'afegir automàticament." - -#: ../plugins/gevolution/gevolution.c:450 ../plugins/idle.c:147 -#: ../plugins/idle.c:183 ../src/gtknotify.c:371 ../src/gtkpounce.c:1260 -msgid "Account" -msgstr "Comptes" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/gevolution/gevolution.c:527 -msgid "Evolution Integration" -msgstr "Integració amb l'Evolution" - -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/gevolution/gevolution.c:530 -#: ../plugins/gevolution/gevolution.c:532 -msgid "Provides integration with Evolution." -msgstr "Proporciona la integració amb l'Evolution." - -#: ../plugins/gevolution/new_person_dialog.c:266 -msgid "Please enter the person's information below." -msgstr "Entreu la informació de la persona aquí sota." - -#: ../plugins/gevolution/new_person_dialog.c:270 -msgid "Please enter the buddy's screen name and account type below." -msgstr "Entreu el nom d'usuari i el tipus de compte aquí sota." - -#: ../plugins/gevolution/new_person_dialog.c:290 -msgid "Account type:" -msgstr "Tipus de compte:" - -#: ../plugins/gevolution/new_person_dialog.c:294 ../src/gtkaccount.c:784 -msgid "Screen name:" -msgstr "Nom d'usuari:" - -#. Optional Information section -#: ../plugins/gevolution/new_person_dialog.c:314 -msgid "Optional information:" -msgstr "Informació opcional:" - -#. Label -#: ../plugins/gevolution/new_person_dialog.c:337 ../src/gtkaccount.c:424 -#: ../src/gtkaccount.c:446 ../src/protocols/oscar/oscar.c:635 -msgid "Buddy Icon" -msgstr "Icona de l'amic" - -#: ../plugins/gevolution/new_person_dialog.c:349 -msgid "First name:" -msgstr "Nom:" - -#: ../plugins/gevolution/new_person_dialog.c:361 -msgid "Last name:" -msgstr "Cognoms:" - -#: ../plugins/gevolution/new_person_dialog.c:381 -msgid "E-mail:" -msgstr "Correu electrònic:" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/gtk-signals-test.c:160 -msgid "GTK Signals Test" -msgstr "Comprovació de senyals GTK" - -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/gtk-signals-test.c:163 ../plugins/gtk-signals-test.c:165 -msgid "Test to see that all ui signals are working properly." -msgstr "" -"Prova per veure si tots els senyals de la interfície d'usuari funcionen " -"correctament." - -#: ../plugins/history.c:120 +#: ../console/gntconn.c:16 #, c-format -msgid "<b>Conversation with %s on %s:</b><br>" -msgstr "<b>Converses amb %s a %s:</b><br>" - -#: ../plugins/history.c:147 -msgid "History Plugin Requires Logging" -msgstr "El connector per a l'historial requereix que es registri" - -#: ../plugins/history.c:148 msgid "" -"Logging can be enabled from Tools -> Preferences -> Logging.\n" -"\n" -"Enabling logs for instant messages and/or chats will activate history for " -"the same conversation type(s)." +"%s was disconnected due to the following error:\n" +"%s" msgstr "" -"El registre es pot habilitar des de Eines -> Preferències -> Registre.\n" -"\n" -"En habilitar el registre per a missatges instantanis o xats s'activarà\n" -"l'historial per a cada tipus de conversa especificat." +"S'ha desconnectat %s pel següent error:\n" +"%s" -#: ../plugins/history.c:188 -msgid "History" -msgstr "Historial" +#: ../console/gntconn.c:19 ../gtk/gtkblist.c:3784 ../libgaim/account.c:990 +#: ../libgaim/connection.c:99 +msgid "Connection Error" +msgstr "Error de connexió" -#: ../plugins/history.c:190 -msgid "Shows recently logged conversations in new conversations." -msgstr "Mostra converses registrades recentment en noves converses." +#: ../console/gntconv.c:78 ../gtk/gtkconv.c:472 +msgid "No such command." +msgstr "No existeix l'ordre." -#: ../plugins/history.c:191 -msgid "" -"When a new conversation is opened this plugin will insert the last " -"conversation into the current conversation." +#: ../console/gntconv.c:82 ../gtk/gtkconv.c:479 +msgid "Syntax Error: You typed the wrong number of arguments to that command." msgstr "" -"Quan s'obri una nova conversa aquest connector inserirà la darrera conversa " -"en la conversa actual." +"Error de sintaxi: Heu escrit un nombre d'arguments equivocat per a aquesta " +"ordre." -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/iconaway.c:82 -msgid "Iconify on Away" -msgstr "Iconifica si s'està absent" +#: ../console/gntconv.c:87 ../gtk/gtkconv.c:484 +msgid "Your command failed for an unknown reason." +msgstr "L'ordre ha fallat per motius desconeguts." -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/iconaway.c:85 ../plugins/iconaway.c:87 -msgid "Iconifies the buddy list and your conversations when you go away." -msgstr "Iconifica la llista d'amics i les converses quan passeu a absent." +#: ../console/gntconv.c:92 ../gtk/gtkconv.c:490 +msgid "That command only works in chats, not IMs." +msgstr "Aquesta ordre només funciona en xats, no en MI." -#: ../plugins/idle.c:152 ../plugins/idle.c:210 -msgid "Minutes" -msgstr "Minuts" +#: ../console/gntconv.c:95 ../gtk/gtkconv.c:493 +msgid "That command only works in IMs, not chats." +msgstr "Aquesta ordre només funciona en MI, no en xats." -#: ../plugins/idle.c:159 ../plugins/idle.c:192 ../plugins/idle.c:217 -#: ../plugins/idle.c:306 -msgid "I'dle Mak'er" -msgstr "I'dle Mak'er" +#: ../console/gntconv.c:99 ../gtk/gtkconv.c:497 +msgid "That command doesn't work on this protocol." +msgstr "Aquesta ordre no funciona per a aquest protocol." -#: ../plugins/idle.c:160 ../plugins/idle.c:249 -msgid "Set Account Idle Time" -msgstr "Especifiqueu el temps inactiu per al compte" +#: ../console/gntconv.c:106 +msgid "Commands are not supported yet. Message was NOT sent." +msgstr "Les ordres encara no estan implementades. No s'ha enviat el missatge." -#: ../plugins/idle.c:163 ../plugins/idle.c:221 -msgid "_Set" -msgstr "E_specifica" - -#: ../plugins/idle.c:164 ../plugins/idle.c:197 ../plugins/idle.c:222 -msgid "_Cancel" -msgstr "_Cancel·la" - -#: ../plugins/idle.c:177 -msgid "None of your accounts are idle." -msgstr "Cap dels vostres comptes està inactiu." - -# FIXME -#: ../plugins/idle.c:193 ../plugins/idle.c:253 -msgid "Unset Account Idle Time" -msgstr "Desestableix el temps d'inactivitat del compte" - -# FIXME -#: ../plugins/idle.c:196 -msgid "_Unset" -msgstr "_Desestableix" - -#: ../plugins/idle.c:218 ../plugins/idle.c:257 -msgid "Set Idle Time for All Accounts" -msgstr "Estableix el temps d'inactivitat de tots els comptes" - -#: ../plugins/idle.c:262 -msgid "Unset Idle Time for All Idled Accounts" -msgstr "Desestableix el temps d'inactivitat de tots els comptes inactius" - -#: ../plugins/idle.c:308 ../plugins/idle.c:309 -msgid "Allows you to hand-configure how long you've been idle" -msgstr "Us permet configurar a mà per quant de temps heu estat inactiu" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/ipc-test-client.c:87 -msgid "IPC Test Client" -msgstr "Client de proves d'IPC" - -#. *< name -#. *< version -#. * summary -#: ../plugins/ipc-test-client.c:90 -msgid "Test plugin IPC support, as a client." -msgstr "Connector de proves com a client per a IPC." - -#. * description -#: ../plugins/ipc-test-client.c:92 -msgid "" -"Test plugin IPC support, as a client. This locates the server plugin and " -"calls the commands registered." -msgstr "" -"Connector de proves, com a client, per a IPC. Localitza el connector del " -"servidor i crida les ordres registrades." - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/ipc-test-server.c:74 -msgid "IPC Test Server" -msgstr "Servidor de proves d'IPC" - -#. *< name -#. *< version -#. * summary -#: ../plugins/ipc-test-server.c:77 -msgid "Test plugin IPC support, as a server." -msgstr "Connector de proves per a servidor d'IPC." - -#. * description -#: ../plugins/ipc-test-server.c:79 -msgid "Test plugin IPC support, as a server. This registers the IPC commands." -msgstr "Connector de proves per a servidor d'IPC, que registra les ordres IPC." - -#: ../plugins/log_reader.c:1407 -msgid "User is offline." -msgstr "L'usuari està fora de línia." - -#: ../plugins/log_reader.c:1413 -msgid "Auto-response sent:" -msgstr "Resposta automàtica enviada:" - -#: ../plugins/log_reader.c:1423 ../plugins/log_reader.c:1426 +#: ../console/gntconv.c:189 #, c-format -msgid "%s logged out." -msgstr "%s ha sortit." +msgid "%s" +msgstr "%s" -#: ../plugins/log_reader.c:1440 -msgid "One or more messages may have been undeliverable." -msgstr "Pot ser que no s'hagin pogut trametre un o més missatges." +#. Print the list of users in the room +#: ../console/gntconv.c:334 +msgid "List of users:\n" +msgstr "Llista d'usuaris:\n" -#. MSG_SERVER_DISCONNECTING -#. we have been kicked off =^( -#: ../plugins/log_reader.c:1450 ../src/protocols/napster/napster.c:363 -msgid "You were disconnected from the server." -msgstr "Heu estat desconnectat del servidor." +#: ../console/gntconv.c:466 ../gtk/gtkconv.c:366 +msgid "Supported debug options are: version" +msgstr "Les opcions de depuració disponibles són: version" -#: ../plugins/log_reader.c:1458 -msgid "" -"You are currently disconnected. Messages will not be received unless you are " -"logged in." -msgstr "Esteu desconnectat. No rebreu missatges a no ser que us connecteu." +#: ../console/gntconv.c:501 ../gtk/gtkconv.c:402 +msgid "No such command (in this context)." +msgstr "L'ordre no existeix (en aquest context)." -#: ../plugins/log_reader.c:1473 -msgid "Message could not be sent because the maximum length was exceeded." -msgstr "El missatge no s'ha pogut enviar perquè s'ha superat la mida màxima." - -#: ../plugins/log_reader.c:1478 -msgid "Message could not be sent." -msgstr "No s'ha pogut enviar el missatge." - -#. Add general preferences. -#: ../plugins/log_reader.c:1912 -msgid "General Log Reading Configuration" -msgstr "Configuració general de la lectura de registres" - -#: ../plugins/log_reader.c:1916 -msgid "Fast size calculations" -msgstr "Càlculs de mida ràpids" - -#: ../plugins/log_reader.c:1920 -msgid "Use name heuristics" -msgstr "Utilitza heurístiques de noms" - -#. Add Log Directory preferences. -#: ../plugins/log_reader.c:1926 -msgid "Log Directory" -msgstr "Directori dels registres" - -#: ../plugins/log_reader.c:1930 -msgid "Adium" -msgstr "Adium" - -#: ../plugins/log_reader.c:1934 -msgid "Fire" -msgstr "Fire" - -#: ../plugins/log_reader.c:1938 -msgid "Messenger Plus!" -msgstr "Messenger Plus!" - -#: ../plugins/log_reader.c:1942 -msgid "MSN Messenger" -msgstr "MSN Messenger" - -#: ../plugins/log_reader.c:1946 -msgid "Trillian" -msgstr "Trillian" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/log_reader.c:1969 -msgid "Log Reader" -msgstr "Lector del registre" - -#. *< name -#. *< version -#. * summary -#: ../plugins/log_reader.c:1973 -msgid "Includes other IM clients' logs in the log viewer." -msgstr "" -"Inclou registres d'altres clients de MI en el visualitzador de registres." - -#. * description -#: ../plugins/log_reader.c:1977 +#: ../console/gntconv.c:504 ../gtk/gtkconv.c:405 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 "" -"Quan es visualitzin els registres, aquest connector inclourà registres " -"d'altres clients de MI. De moment, es poden incloure els d'Adium, Fire, " -"Messenger Plus!, MSN Messenger, i Trillian." +"Feu servir «/help <ordre>» per obtenir ajuda sobre una ordre.\n" +"Les següents ordres estan disponibles en aquest context:\n" -#: ../plugins/mailchk.c:160 -msgid "Mail Checker" -msgstr "Comprovador de correu" - -#: ../plugins/mailchk.c:162 -msgid "Checks for new local mail." -msgstr "Comprova si hi ha correu nou a la màquina local." - -#: ../plugins/mailchk.c:163 -msgid "Adds a small box to the buddy list that shows if you have new mail." -msgstr "" -"Afegeix una caixeta a la llista d'amics que indica si teniu correus nous." - -#: ../plugins/mono/loader/mono.c:213 -msgid "Mono Plugin Loader" -msgstr "Carregador de connectors Mono" - -#: ../plugins/mono/loader/mono.c:215 ../plugins/mono/loader/mono.c:216 -msgid "Loads .NET plugins with Mono." -msgstr "Carrega connectors .NET amb Mono." - -#: ../plugins/musicmessaging/musicmessaging.c:44 +#: ../console/gntconv.c:545 ../gtk/gtkconv.c:6584 msgid "" -"A music messaging session has been requested. Please click the MM icon to " -"accept." +"say <message>: Send a message normally as if you weren't using a " +"command." msgstr "" -"S'ha sol·licitat una sessió de missatgeria de música. Feu clic a la icona de " -"MM per a acceptar." +"say <missatge>: Envia un missatge normalment com si no féssiu servir " +"cap ordre." -#: ../plugins/musicmessaging/musicmessaging.c:45 -msgid "Music messaging session confirmed." -msgstr "S'ha confirmat la sessió de missatgeria de música." +#: ../console/gntconv.c:548 ../gtk/gtkconv.c:6587 +msgid "me <action>: Send an IRC style action to a buddy or chat." +msgstr "me <acció>: Envia una acció a l'estil IRC a un amic o xat." -#: ../plugins/musicmessaging/musicmessaging.c:414 -msgid "Music Messaging" -msgstr "Missatgeria de música" - -#: ../plugins/musicmessaging/musicmessaging.c:415 -msgid "There was a conflict in running the command:" -msgstr "Hi ha hagut un conflicte en executar l'ordre:" - -#: ../plugins/musicmessaging/musicmessaging.c:523 -msgid "Error Running Editor" -msgstr "S'ha produït un error en executar l'editor" - -#: ../plugins/musicmessaging/musicmessaging.c:524 -msgid "The following error has occured:" -msgstr "S'ha produït el següent error:" - -#. Configuration frame -#: ../plugins/musicmessaging/musicmessaging.c:623 -msgid "Music Messaging Configuration" -msgstr "Configuració dels missatges de música" - -#: ../plugins/musicmessaging/musicmessaging.c:627 -msgid "Score Editor Path" -msgstr "Camí de l'editor de partitures" - -#: ../plugins/musicmessaging/musicmessaging.c:628 -msgid "_Apply" -msgstr "_Aplica" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#. *< name -#. *< version -#: ../plugins/musicmessaging/musicmessaging.c:663 -msgid "Music Messaging Plugin for collaborative composition." -msgstr "Connector de missatgeria de música per a composar conjuntament." - -#. * summary -#: ../plugins/musicmessaging/musicmessaging.c:665 +#: ../console/gntconv.c:551 ../gtk/gtkconv.c:6590 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." +"debug <option>: Send various debug information to the current " +"conversation." msgstr "" -"El connector per a missatgeria de música permet que diferents uruaris puguin " -"treballar en una mateixa peça de música, editant la mateixa partitura en " -"temps real." +"debug <opció>: Envia informació de depuració diversa a la conversa " +"actual." -#. ---------- "Notify For" ---------- -#: ../plugins/notify.c:638 -msgid "Notify For" -msgstr "Notifica per a" +#: ../console/gntconv.c:554 ../gtk/gtkconv.c:6593 +msgid "clear: Clears the conversation scrollback." +msgstr "clear: Neteja la conversa." -#: ../plugins/notify.c:642 -msgid "_IM windows" -msgstr "Finestres de M_I" +#: ../console/gntconv.c:557 ../gtk/gtkconv.c:6596 +msgid "help <command>: Help on a specific command." +msgstr "help <ordre>: Ajuda específica quant a l'ordre." -#: ../plugins/notify.c:649 -msgid "C_hat windows" -msgstr "Finestres de _xat" +#: ../console/gntconv.c:562 +msgid "plugins: Show the plugins window." +msgstr "plugins: Mostra la finestra de connectors." -#: ../plugins/notify.c:657 -msgid "\t_Only when someone says your nick" -msgstr "\tNomés quan algú digui el vostre sobrenom" +#: ../console/gntconv.c:565 +msgid "buddylist: Show the buddylist." +msgstr "buddylist: Mostra la llista d'amics." -#: ../plugins/notify.c:667 -msgid "_Focused windows" -msgstr "_Finestres actives" +#: ../console/gntconv.c:568 +msgid "accounts: Show the accounts window." +msgstr "accounts: Mostra la finestra dels comptes." -#. ---------- "Notification Methods" ---------- -#: ../plugins/notify.c:675 -msgid "Notification Methods" -msgstr "Mètodes de notificació" +#: ../console/gntconv.c:571 +msgid "debugwin: Show the debug window." +msgstr "debugwin: Mostra la finestra de depuració." -#: ../plugins/notify.c:682 -msgid "Prepend _string into window title:" -msgstr "Po_sa aquesta cadena davant del títol de la finestra:" +#: ../console/gntconv.c:574 +msgid "prefs: Show the preference window." +msgstr "prefs: Mostra la finestra de preferències." -#. Count method button -#: ../plugins/notify.c:701 -msgid "Insert c_ount of new messages into window title" -msgstr "Insereix el _nombre de missatges nous al títol de la finestra" +#: ../console/gntconv.c:577 +msgid "statuses: Show the savedstatuses window." +msgstr "statuses: Mostra la finestra d'estats desats." -#. Urgent method button -#: ../plugins/notify.c:710 -msgid "Set window manager \"_URGENT\" hint" -msgstr "Aplica l'opció «_URGENT» del gestor de finestres" +#: ../console/gntdebug.c:95 ../gtk/gtkdebug.c:636 +msgid "Debug Window" +msgstr "Finestra de depuració" -#. Raise window method button -#: ../plugins/notify.c:719 -msgid "R_aise conversation window" -msgstr "_Alça la finestra de conversa" - -#. ---------- "Notification Removals" ---------- -#: ../plugins/notify.c:727 -msgid "Notification Removal" -msgstr "Supressió de notificacions" - -#. Remove on focus button -#: ../plugins/notify.c:732 -msgid "Remove when conversation window _gains focus" -msgstr "Suprimeix quan la finestra de la conversa esti_gui activada" - -#. Remove on click button -#: ../plugins/notify.c:739 -msgid "Remove when conversation window _receives click" -msgstr "Suprimeix quan es faci clic a la finestra de la conve_rsa" - -#. Remove on type button -#: ../plugins/notify.c:747 -msgid "Remove when _typing in conversation window" -msgstr "Suprimeix quan s'escrigui a la fines_tra de la conversa" - -#. Remove on message send button -#: ../plugins/notify.c:755 -msgid "Remove when a _message gets sent" -msgstr "Suprimeix quan s'enviï un _missatge" - -#. Remove on conversation switch button -#: ../plugins/notify.c:764 -msgid "Remove on switch to conversation ta_b" -msgstr "Suprimeix en canviar a la _pestanya de la conversa" - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/notify.c:853 -msgid "Message Notification" -msgstr "Notificació de missatges" - -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/notify.c:856 ../plugins/notify.c:858 -msgid "Provides a variety of ways of notifying you of unread messages." -msgstr "" -"Us proporciona diferents maneres de notificar-vos la presència de missatges " -"sense llegir." - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/perl/perl.c:583 -msgid "Perl Plugin Loader" -msgstr "Carregador de connectors en Perl" - -#. *< name -#. *< version -#. *< summary -#: ../plugins/perl/perl.c:585 ../plugins/perl/perl.c:586 -msgid "Provides support for loading perl plugins." -msgstr "Proporciona suport per a carregar connectors en Perl." - -#: ../plugins/psychic.c:22 -msgid "Psychic Mode" -msgstr "Mode psicòtic" - -#: ../plugins/psychic.c:23 -msgid "Psychic mode for incoming conversation" -msgstr "Mode psicòtic per a converses entrants" - -#: ../plugins/psychic.c:24 -msgid "" -"Causes conversation windows to appear as other users begin to message you. " -"This works for AIM, ICQ, Jabber, Sametime, and Yahoo!" -msgstr "" -"Fa que apareguin finestres de conversa així que altres usuaris us comencin a " -"enviar missatges. Funciona per a AIM, ICQ, Jabber, Sametime, i Yahoo!" - -#: ../plugins/psychic.c:60 -msgid "You feel a disturbance in the force..." -msgstr "Sentireu un certa pertorbació en la força..." - -#: ../plugins/psychic.c:79 -msgid "Only enable for users on the buddy list" -msgstr "Habilita-ho només per als usuaris de la llista d'amics" - -#: ../plugins/psychic.c:84 -msgid "Disable when away" -msgstr "Inhabilita-ho quan estigui absent" - -#: ../plugins/psychic.c:88 -msgid "Display notification message in conversations" -msgstr "Mostra un missatge de notificació a la conversa" - -#: ../plugins/raw.c:175 -msgid "Raw" -msgstr "En brut" - -#: ../plugins/raw.c:177 -msgid "Lets you send raw input to text-based protocols." -msgstr "Us permet enviar dades en brut als protocols en mode text." - -#: ../plugins/raw.c:178 -msgid "" -"Lets you send raw input to text-based protocols (Jabber, MSN, IRC, TOC). Hit " -"'Enter' in the entry box to send. Watch the debug window." -msgstr "" -"Permet enviar dades en brut als protocols en mode text (Jabber, MSN, IRC, " -"TOC). Premeu la tecla de retorn a la caixa d'entrada per enviar-les. " -"Observeu la finestra de depuració." - -#: ../plugins/relnot.c:63 +#: ../console/gntgaim.c:145 #, c-format -msgid "You are using Gaim version %s. The current version is %s.<hr>" -msgstr "Esteu usant la versió %s del Gaim. La versió actual és %s.<hr>" +msgid "%s. Try `%s -h' for more information.\n" +msgstr "%s. Proveu «%s -h» per a més informació.\n" -#: ../plugins/relnot.c:69 +#: ../console/gntgaim.c:147 #, c-format msgid "" -"<b>ChangeLog:</b>\n" -"%s<br><br>" +"%s\n" +"Usage: %s [OPTION]...\n" +"\n" +" -c, --config=DIR use DIR for config files\n" +" -d, --debug print debugging messages to stdout\n" +" -h, --help display this help and exit\n" +" -n, --nologin don't automatically login\n" +" -v, --version display the current version and exit\n" msgstr "" -"<b>Registre de canvis:</b>\n" -"%s<br><br>" +"%s\n" +"Forma d'ús: %s [OPCIÓ]...\n" +"\n" +" -c, --config=DIR utilitza DIR per als fitxers de configuració\n" +" -d, --debug mostra missatges de depuració a la sortida estàndard\n" +" -h, --help mostra aquesta ajuda i surt\n" +" -n, --nologin no entra automàticament\n" +" -v, --version mostra la versió actual i surt\n" -#: ../plugins/relnot.c:74 -#, c-format -msgid "" -"You can get version %s from:<br><a href=\"http://gaim.sourceforge.net/" -"\">http://gaim.sourceforge.net</a>." -msgstr "" -"Podeu obtenir la versió %s de:<br><a href=\"http://gaim.sourceforge.net/" -"\">http://gaim.sourceforge.net</a>." +#. * +#. * A wrapper for gaim_request_action() that uses @c OK and @c Cancel buttons. +#. +#: ../console/gntnotify.c:55 ../gtk/gtkblist.c:3786 ../gtk/gtkdialogs.c:665 +#: ../gtk/gtkdialogs.c:802 ../gtk/gtkdialogs.c:893 ../gtk/gtkrequest.c:269 +#: ../libgaim/account.c:962 ../libgaim/account.c:1133 +#: ../libgaim/protocols/gg/gg.c:497 ../libgaim/protocols/gg/gg.c:655 +#: ../libgaim/protocols/gg/gg.c:791 ../libgaim/protocols/jabber/jabber.c:1345 +#: ../libgaim/protocols/jabber/xdata.c:337 ../libgaim/protocols/msn/msn.c:250 +#: ../libgaim/protocols/msn/msn.c:265 ../libgaim/protocols/msn/msn.c:280 +#: ../libgaim/protocols/msn/msn.c:295 ../libgaim/protocols/oscar/oscar.c:1367 +#: ../libgaim/protocols/oscar/oscar.c:2129 +#: ../libgaim/protocols/oscar/oscar.c:2216 +#: ../libgaim/protocols/oscar/oscar.c:5709 +#: ../libgaim/protocols/oscar/oscar.c:5913 +#: ../libgaim/protocols/oscar/oscar.c:5938 +#: ../libgaim/protocols/oscar/oscar.c:5994 +#: ../libgaim/protocols/silc/buddy.c:466 +#: ../libgaim/protocols/silc/buddy.c:1182 ../libgaim/protocols/silc/chat.c:424 +#: ../libgaim/protocols/silc/chat.c:462 ../libgaim/protocols/silc/chat.c:725 +#: ../libgaim/protocols/silc/ops.c:1296 ../libgaim/protocols/silc/ops.c:1908 +#: ../libgaim/protocols/silc/silc.c:753 +#: ../libgaim/protocols/yahoo/yahoo.c:3155 +#: ../libgaim/protocols/yahoo/yahoo.c:3164 ../libgaim/request.h:1344 +msgid "OK" +msgstr "D'acord" -#: ../plugins/relnot.c:78 ../plugins/relnot.c:79 -msgid "New Version Available" -msgstr "Nova versió disponible" +#: ../console/gntnotify.c:122 +msgid "Emails" +msgstr "Correus electrònics" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/relnot.c:137 -msgid "Release Notification" -msgstr "Notificació de versions noves" +#: ../console/gntnotify.c:128 ../console/gntnotify.c:182 +msgid "You have mail!" +msgstr "Teniu correu!" -#. *< name -#. *< version -#. * summary -#: ../plugins/relnot.c:140 -msgid "Checks periodically for new releases." -msgstr "Comprova periòdicament si hi ha versions noves." +#: ../console/gntnotify.c:131 ../gtk/gtknotify.c:418 +#: ../libgaim/protocols/jabber/jabber.c:1141 +msgid "From" +msgstr "De" -#. * description -#: ../plugins/relnot.c:142 -msgid "" -"Checks periodically for new releases and notifies the user with the " -"ChangeLog." -msgstr "" -"Comprova periòdicament si hi ha versions noves i us ho notifica juntament " -"amb el seu registre de canvis." +#: ../console/gntnotify.c:131 ../gtk/gtknotify.c:427 +msgid "Subject" +msgstr "Assumpte" -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/signals-test.c:684 -msgid "Signals Test" -msgstr "Comprovació de senyals" +#: ../console/gntnotify.c:139 ../console/gntplugin.c:169 +#: ../console/gntplugin.c:250 ../console/gntstatus.c:175 +#: ../gtk/gtkrequest.c:272 ../libgaim/protocols/msn/msn.c:357 +#: ../libgaim/protocols/silc/util.c:377 +msgid "Close" +msgstr "Tanca" -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/signals-test.c:687 ../plugins/signals-test.c:689 -msgid "Test to see that all signals are working properly." -msgstr "Prova per veure si tots els senyals funcionen correctament." - -#. *< type -#. *< ui_requirement -#. *< flags -#. *< dependencies -#. *< priority -#. *< id -#: ../plugins/simple.c:34 -msgid "Simple Plugin" -msgstr "Connector simple" - -#. *< name -#. *< version -#. * summary -#. * description -#: ../plugins/simple.c:37 ../plugins/simple.c:39 -msgid "Tests to see that most things are working." -msgstr "Proves per veure si la majoria de coses funcionen." - -#: ../plugins/spellchk.c:1917 -msgid "Duplicate Correction" -msgstr "Duplicació de la correcció" - -#: ../plugins/spellchk.c:1918 -msgid "The specified word already exists in the correction list." -msgstr "La paraula especificada ja existeix a la llista de correccions." - -#: ../plugins/spellchk.c:2127 -msgid "Text Replacements" -msgstr "Substitució de text" - -#: ../plugins/spellchk.c:2150 -msgid "You type" -msgstr "Quan escriviu" - -#: ../plugins/spellchk.c:2164 -msgid "You send" -msgstr "S'enviarà" - -#: ../plugins/spellchk.c:2178 -msgid "Whole words only" -msgstr "Només paraules completes" - -#: ../plugins/spellchk.c:2190 -msgid "Case sensitive" -msgstr "Distingeix majúscules i minúscules" - -#: ../plugins/spellchk.c:2216 -msgid "Add a new text replacement" -msgstr "Afegeix una altra substitució de text" - -#: ../plugins/spellchk.c:2232 -msgid "You _type:" -msgstr "_Escriviu:" - -#: ../plugins/spellchk.c:2249 -msgid "You _send:" -msgstr "_S'envia:" - -#. Created here so it can be passed to whole_words_button_toggled. -#: ../plugins/spellchk.c:2261 -msgid "_Exact case match (uncheck for automatic case handling)" -msgstr "" - -#: ../plugins/spellchk.c:2263 -msgid "Only replace _whole words" -msgstr "Substitueix només paraules _completes" - -#: ../plugins/spellc... [truncated message content] |