# HG changeset patch # User Sean Egan # Date 1030251574 0 # Node ID 59589bb7ce1e9a3c8803b6bbd1524bb7dfa5f9d6 # Parent 0a7af6d4d2a0d0b5c95d013b8746fa1f4d06d820 [gaim-migrate @ 3451] HEAD is now GTK 2 only. If you want to use GTK1.2, use our gtk1_stable branch. committer: Tailor Script diff -r 0a7af6d4d2a0 -r 59589bb7ce1e Makefile.am --- a/Makefile.am Sun Aug 25 04:54:47 2002 +0000 +++ b/Makefile.am Sun Aug 25 04:59:34 2002 +0000 @@ -1,34 +1,6 @@ - -EXTRA_DIST = config.rpath gaim.spec.in gaim_applet.gnorba gaim.desktop gaim_applet.desktop \ +EXTRA_DIST = config.rpath gaim.spec.in gaim.desktop \ HACKING gaim2blt.pl licq2gaim.pl setup-gettext -if DISTRIB - -distribgnorbadir = $(sysconfdir)/CORBA/servers -distribgnorba_DATA = gaim_applet.gnorba - -distribdesktopdir = $(datadir)/applets/Network -distribdesktop_DATA = gaim_applet.desktop - -else - -if GNOMEAPPLET - -gnomesysconf = `@GNOME_CONFIG@ --sysconfdir` -gnomedata = `@GNOME_CONFIG@ --datadir` - -gaim_GNORBA = gaim_applet.gnorba -gaimgnorbadir = $(gnomesysconf)/CORBA/servers -gaimgnorba_DATA = $(gaim_GNORBA) - -gaim_DESKTOP = gaim_applet.desktop -gaimdesktopdir = $(gnomedata)/applets/Network -gaimdesktop_DATA = $(gaim_DESKTOP) - -endif - -endif - pixmapdir = $(datadir)/gnome/apps/Internet pixmap_DATA = gaim.desktop diff -r 0a7af6d4d2a0 -r 59589bb7ce1e configure.ac --- a/configure.ac Sun Aug 25 04:54:47 2002 +0000 +++ b/configure.ac Sun Aug 25 04:59:34 2002 +0000 @@ -104,12 +104,6 @@ AC_SUBST(STATIC_LINK_LIBS) AC_DEFINE_UNQUOTED(STATIC_PROTO_INIT, $extern_init void static_proto_init() { $load_proto }) -AC_ARG_ENABLE(gtk2, [ --enable-gtk2 compile using GTK 2 (BROKEN)],,enable_gtk2=no) -AC_ARG_ENABLE(gnome, [ --disable-gnome compile without Gnome bits],,enable_gnome=yes) -AC_ARG_ENABLE(pixbuf, [ --disable-pixbuf compile without GdkPixbuf],,enable_pixbuf=yes) -AC_ARG_ENABLE(panel, [ --enable-panel compile as a GNOME applet],,enable_panel=$enable_distrib) - -AM_CONDITIONAL(GNOMEAPPLET, test "x$enable_panel" = "xyes") AC_ARG_ENABLE(esd, [ --disable-esd Turn off ESD (default=auto)],,enable_esd=yes) AC_ARG_ENABLE(nas, [ --enable-nas Enable NAS (Network Audio System) support],,enable_nas=no) AC_ARG_ENABLE(artsc, [ --disable-artsc Turn off ArtsC (default=auto)],,enable_artsc=yes) @@ -126,118 +120,23 @@ AC_DEFINE(DEBUG) fi -if test "x$enable_gtk2" = "xyes" ; then - dnl AM_PATH_GTK_2_0(1.3.10,[ - dnl enable_gnome=no - dnl enable_pixbuf=no - dnl CFLAGS="$CFLAGS -DGTK_ENABLE_BROKEN" - dnl UI_LIBS="$UI_LIBS $GTK_LIBS" - dnl ],enable_gtk2=no) - - AC_PATH_PROG(pkgcfg, pkg-config) - if test "x$pkgcfg" = "x" ; then - enable_gtk2=no - else - GTK_VER=`$pkgcfg gtk+-2.0 --modversion 2>/dev/null` - if test "x$GTK_VER" = "x" ; then - enable_gtk2=no - else - GTK_CFLAGS=`$pkgcfg gtk+-2.0 --cflags` - CFLAGS="$CFLAGS -DGTK_ENABLE_BROKEN" - GTK_LIBS=`$pkgcfg gtk+-2.0 --libs` - UI_LIBS="$UI_LIBS $GTK_LIBS" - enable_gnome=no - enable_pixbuf=no - fi - fi -fi - -GNOME_INIT_HOOK([], nofail, applets) - -if test "x$enable_gnome" = "xyes" ; then - if test "x$enable_panel" = "xyes" ; then - GNOME_X_CHECKS - CFLAGS="$CFLAGS $GNOME_INCLUDEDIR" - AC_DEFINE(USE_APPLET) - AC_DEFINE(USE_GNOME) - UI_LIBS="$UI_LIBS $GTK_LIBS $GNOME_LIBDIR $GNOME_APPLETS_LIBS $GNOMEUI_LIBS" - AC_PATH_PROG(gaimpath, gaim_applet) - else - AC_PATH_PROG(gnomepath, gnome-config) - AC_MSG_CHECKING(for Gnome compile flags) - GNOME_CFLAGS=`$gnomepath gnomeui --cflags 2>/dev/null` - if test "x$GNOME_CFLAGS" = "x" ; then - enable_gnome=no - AC_MSG_RESULT([Gnome not found, building without it.]) - else - GNOME_VER=`$gnomepath --version |$sedpath 's/gnome-libs //' 2>/dev/null` - GNOME_MAJOR=`echo $GNOME_VER |$sedpath 's/\([[0-9]*]*\).\([[0-9]*]*\).\([[0-9]*]*\)/\1/' 2>/dev/null` - if test "x$GNOME_MAJOR" = "x0" ; then - enable_gnome = no - AC_MSG_RESULT([old Gnome found, building without it.]) - else - AC_MSG_RESULT(ok) - CFLAGS="$CFLAGS $GNOME_CFLAGS" - UI_LIBS="$UI_LIBS `$gnomepath gnomeui --libs 2>/dev/null`" - AC_DEFINE(USE_GNOME) - GNOME_CONFIG="$gnomepath" - AC_SUBST(GNOME_CONFIG) - AC_PATH_PROG(gaimpath, gaim) - fi - fi - fi -fi - -if test "x$enable_gnome" != "xyes" -a "x$enable_gtk2" != "xyes" ; then - AM_PATH_GLIB(1.2.5,,AC_MSG_ERROR([ -*** GLib is required to build Gaim; please make sure you have the GLib +AM_PATH_GLIB_2_0(1.3.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/.])) - AM_PATH_GTK(1.2.5,,AC_MSG_ERROR([ -*** GTK+ is required to build Gaim; please make sure you have the GTK+ +AM_PATH_GTK_2_0(1.3.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/.])) - UI_LIBS="$UI_LIBS $GTK_LIBS" - AC_PATH_PROG(gaimpath, gaim) -fi -CFLAGS="$CFLAGS $GTK_CFLAGS" -dnl if test "x$enable_panel" = "xyes" ; then - dnl Things moved with the new versoin of Orbit. Thanks for - dnl telling me, Dan. This should fix them. - dnl - dnl The gnome-config script should pick this up and affect GNOME_ variables - dnl correctly. Thus, this check is not needed; if it fails, it is because of - dnl a broken installation or that your appletsConf.sh file is not updated - dnl for the new orbit installation. Gaim shouldn't need to do this. - dnl - dnl CFLAGS="$CFLAGS $ORBIT_CFLAGS" -dnl fi - -use_pixbuf=no -if test "x$enable_pixbuf" = "xyes" ; then - AC_PATH_PROG(pixbufcfg, gdk-pixbuf-config) - if test "x$pixbufcfg" != "x" ; then - GDK_PIXBUF_CFLAGS=`$pixbufcfg --cflags` - GDK_PIXBUF_LIBS=`$pixbufcfg --libs` - GDK_PIXBUF_CONFIG="$pixbufcfg" - AC_SUBST(GDK_PIXBUF_CONFIG) - AC_SUBST(GDK_PIXBUF_CFLAGS) - AC_SUBST(GDK_PIXBUF_LIBS) - CFLAGS="$CFLAGS $GDK_PIXBUF_CFLAGS" - UI_LIBS="$UI_LIBS $GDK_PIXBUF_LIBS" - dnl We should be doing checks to see that the header files and functions exist. eh. - AC_DEFINE(USE_PIXBUF) - use_pixbuf=yes - fi -fi -AC_SUBST(UI_LIBS) +AC_PATH_PROG(gaimpath, gaim) +CFLAGS="$CFLAGS $GTK_CFLAGS -DGTK_ENABLE_BROKEN" dnl Check for XScreenSaver if test "x$enable_xss" = "xyes" ; then AC_PATH_X old_LIBS="$LIBS" - LIBS="$LIBS $UI_LIBS -L$x_libraries" + LIBS="$LIBS $GTK_LIBS -L$x_libraries" XSS_LIBS="no" XSS_HEADERS="no" AC_CHECK_LIB(Xext, XScreenSaverRegister,[XSS_LIBS="-L$x_libraries"],[],[-lX11 -lXext -lm]) @@ -462,20 +361,7 @@ echo Build Protocol Plugins........ : $enable_prpls echo Protocols to link statically.. : $STATIC_PRPLS echo -if test "x$enable_panel" = "xyes" ; then - echo UI Library.................... : GNOME Panel -elif test "x$enable_gnome" = "xyes" ; then - echo UI Library.................... : GNOME App -elif test "x$enable_gtk2" = "xyes" ; then - echo UI Library.................... : GTK+ 2.0 -else - echo UI Library.................... : GTK+ 1.2 -fi -if test "x$enable_gtk2" = "xno" ; then -dnl echo Use GdkPixbuf................. : yes -dnl else - echo Use GdkPixbuf................. : $use_pixbuf -fi +echo UI Library.................... : GTK 2.0 echo echo Build with Plugin support..... : $enable_plugins echo Build with Perl support....... : $enable_perl diff -r 0a7af6d4d2a0 -r 59589bb7ce1e configure.in --- a/configure.in Sun Aug 25 04:54:47 2002 +0000 +++ b/configure.in Sun Aug 25 04:59:34 2002 +0000 @@ -103,12 +103,6 @@ AC_SUBST(STATIC_LINK_LIBS) AC_DEFINE_UNQUOTED(STATIC_PROTO_INIT, $extern_init void static_proto_init() { $load_proto }) -AC_ARG_ENABLE(gtk2, [ --enable-gtk2 compile using GTK 2 (BROKEN)],,enable_gtk2=no) -AC_ARG_ENABLE(gnome, [ --disable-gnome compile without Gnome bits],,enable_gnome=yes) -AC_ARG_ENABLE(pixbuf, [ --disable-pixbuf compile without GdkPixbuf],,enable_pixbuf=yes) -AC_ARG_ENABLE(panel, [ --enable-panel compile as a GNOME applet],,enable_panel=$enable_distrib) - -AM_CONDITIONAL(GNOMEAPPLET, test "x$enable_panel" = "xyes") AC_ARG_ENABLE(esd, [ --disable-esd Turn off ESD (default=auto)],,enable_esd=yes) AC_ARG_ENABLE(nas, [ --enable-nas Enable NAS (Network Audio System) support],,enable_nas=no) AC_ARG_ENABLE(artsc, [ --disable-artsc Turn off ArtsC (default=auto)],,enable_artsc=yes) @@ -125,118 +119,26 @@ AC_DEFINE(DEBUG) fi -if test "x$enable_gtk2" = "xyes" ; then - dnl AM_PATH_GTK_2_0(1.3.10,[ - dnl enable_gnome=no - dnl enable_pixbuf=no - dnl CFLAGS="$CFLAGS -DGTK_ENABLE_BROKEN" - dnl UI_LIBS="$UI_LIBS $GTK_LIBS" - dnl ],enable_gtk2=no) - - AC_PATH_PROG(pkgcfg, pkg-config) - if test "x$pkgcfg" = "x" ; then - enable_gtk2=no - else - GTK_VER=`$pkgcfg gtk+-2.0 --modversion 2>/dev/null` - if test "x$GTK_VER" = "x" ; then - enable_gtk2=no - else - GTK_CFLAGS=`$pkgcfg gtk+-2.0 --cflags` - CFLAGS="$CFLAGS -DGTK_ENABLE_BROKEN" - GTK_LIBS=`$pkgcfg gtk+-2.0 --libs` - UI_LIBS="$UI_LIBS $GTK_LIBS" - enable_gnome=no - enable_pixbuf=no - fi - fi -fi - -GNOME_INIT_HOOK([], nofail, applets) -if test "x$enable_gnome" = "xyes" ; then - if test "x$enable_panel" = "xyes" ; then - GNOME_X_CHECKS - CFLAGS="$CFLAGS $GNOME_INCLUDEDIR" - AC_DEFINE(USE_APPLET) - AC_DEFINE(USE_GNOME) - UI_LIBS="$UI_LIBS $GTK_LIBS $GNOME_LIBDIR $GNOME_APPLETS_LIBS $GNOMEUI_LIBS" - AC_PATH_PROG(gaimpath, gaim_applet) - else - AC_PATH_PROG(gnomepath, gnome-config) - AC_MSG_CHECKING(for Gnome compile flags) - GNOME_CFLAGS=`$gnomepath gnomeui --cflags 2>/dev/null` - if test "x$GNOME_CFLAGS" = "x" ; then - enable_gnome=no - AC_MSG_RESULT([Gnome not found, building without it.]) - else - GNOME_VER=`$gnomepath --version |$sedpath 's/gnome-libs //' 2>/dev/null` - GNOME_MAJOR=`echo $GNOME_VER |$sedpath 's/\([[0-9]*]*\).\([[0-9]*]*\).\([[0-9]*]*\)/\1/' 2>/dev/null` - if test "x$GNOME_MAJOR" = "x0" ; then - enable_gnome = no - AC_MSG_RESULT([old Gnome found, building without it.]) - else - AC_MSG_RESULT(ok) - CFLAGS="$CFLAGS $GNOME_CFLAGS" - UI_LIBS="$UI_LIBS `$gnomepath gnomeui --libs 2>/dev/null`" - AC_DEFINE(USE_GNOME) - GNOME_CONFIG="$gnomepath" - AC_SUBST(GNOME_CONFIG) - AC_PATH_PROG(gaimpath, gaim) - fi - fi - fi -fi +AM_PATH_GLIB_2_0(1.3.0,AC_MSG_ERROR([ +*** Glib 2.0 is required to build Gaim 0.60 and above. Please make sure +*** you have the Glib 2.0 development headers installed, or use our 0.59 +*** stable branch, if you'd prefer to use Glib 1.2. Glib can be found at +*** http://www.gtk.org])) +AM_PATH_GTK_2_0(1.3.0,AC_MSG_ERROR([ +*** GTK+ 2.0 is required to build Gaim 0.60 and above. Please make sure +*** you have the GTK+ 2.0 development headers installed, or use our 0.59 +*** stable branch, if you'd prefer to use GTK+ 2.0. GTK can be found at +*** http://www.gtk.org])) +AC_PATH_PROG(gaimpath, gaim) +CFLAGS="$CFLAGS $GTK_CFLAGS -DGTK_ENABLE_BROKEN" -if test "x$enable_gnome" != "xyes" -a "x$enable_gtk2" != "xyes" ; then - AM_PATH_GLIB(1.2.5,,AC_MSG_ERROR([ -*** GLib 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/.])) - AM_PATH_GTK(1.2.5,,AC_MSG_ERROR([ -*** GTK+ 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/.])) - UI_LIBS="$UI_LIBS $GTK_LIBS" - AC_PATH_PROG(gaimpath, gaim) -fi -CFLAGS="$CFLAGS $GTK_CFLAGS" - -dnl if test "x$enable_panel" = "xyes" ; then - dnl Things moved with the new versoin of Orbit. Thanks for - dnl telling me, Dan. This should fix them. - dnl - dnl The gnome-config script should pick this up and affect GNOME_ variables - dnl correctly. Thus, this check is not needed; if it fails, it is because of - dnl a broken installation or that your appletsConf.sh file is not updated - dnl for the new orbit installation. Gaim shouldn't need to do this. - dnl - dnl CFLAGS="$CFLAGS $ORBIT_CFLAGS" -dnl fi - -use_pixbuf=no -if test "x$enable_pixbuf" = "xyes" ; then - AC_PATH_PROG(pixbufcfg, gdk-pixbuf-config) - if test "x$pixbufcfg" != "x" ; then - GDK_PIXBUF_CFLAGS=`$pixbufcfg --cflags` - GDK_PIXBUF_LIBS=`$pixbufcfg --libs` - GDK_PIXBUF_CONFIG="$pixbufcfg" - AC_SUBST(GDK_PIXBUF_CONFIG) - AC_SUBST(GDK_PIXBUF_CFLAGS) - AC_SUBST(GDK_PIXBUF_LIBS) - CFLAGS="$CFLAGS $GDK_PIXBUF_CFLAGS" - UI_LIBS="$UI_LIBS $GDK_PIXBUF_LIBS" - dnl We should be doing checks to see that the header files and functions exist. eh. - AC_DEFINE(USE_PIXBUF) - use_pixbuf=yes - fi -fi -AC_SUBST(UI_LIBS) dnl Check for XScreenSaver if test "x$enable_xss" = "xyes" ; then AC_PATH_X old_LIBS="$LIBS" - LIBS="$LIBS $UI_LIBS -L$x_libraries" + LIBS="$LIBS $GTK_LIBS -L$x_libraries" XSS_LIBS="no" XSS_HEADERS="no" AC_CHECK_LIB(Xext, XScreenSaverRegister,[XSS_LIBS="-L$x_libraries"],[],[-lX11 -lXext -lm]) @@ -459,20 +361,7 @@ echo Build Protocol Plugins........ : $enable_prpls echo Protocols to link statically.. : $STATIC_PRPLS echo -if test "x$enable_panel" = "xyes" ; then - echo UI Library.................... : GNOME Panel -elif test "x$enable_gnome" = "xyes" ; then - echo UI Library.................... : GNOME App -elif test "x$enable_gtk2" = "xyes" ; then - echo UI Library.................... : GTK+ 2.0 -else - echo UI Library.................... : GTK+ 1.2 -fi -if test "x$enable_gtk2" = "xyes" ; then - echo Use GdkPixbuf................. : yes -else - echo Use GdkPixbuf................. : $use_pixbuf -fi +echo UI Library.................... : GTK 2.0 echo echo Build with Plugin support..... : $enable_plugins echo Build with Perl support....... : $enable_perl diff -r 0a7af6d4d2a0 -r 59589bb7ce1e gaim_applet.desktop --- a/gaim_applet.desktop Sun Aug 25 04:54:47 2002 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -[Desktop Entry] -Name=Gaim -Comment=Client for AOL IM -Exec=gaim_applet --activate-goad-server=gaim_applet -Icon=gaim.xpm -Terminal=0 -Type=Application diff -r 0a7af6d4d2a0 -r 59589bb7ce1e gaim_applet.gnorba --- a/gaim_applet.gnorba Sun Aug 25 04:54:47 2002 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -[gaim_applet] -type=exe -repo_id=IDL:GNOME/Applet:1.0 -description=Gaim Applet -location_info=gaim_applet diff -r 0a7af6d4d2a0 -r 59589bb7ce1e pixmaps/Makefile.am --- a/pixmaps/Makefile.am Sun Aug 25 04:54:47 2002 +0000 +++ b/pixmaps/Makefile.am Sun Aug 25 04:59:34 2002 +0000 @@ -127,31 +127,10 @@ gaimbuttonpixdir = $(datadir)/pixmaps/gaim/buttons gaimbuttonpix_DATA = edit.png -if DISTRIB - - gaimdistpixdir = $(datadir)/pixmaps/gaim - gaimdistpix_DATA = away.png connect.png msgpend.png offline.png online.png - - distpixmapdir = $(datadir)/pixmaps - distpixmap_DATA = gaim.png - -else - -if GNOMEAPPLET - -gnomedata = `@GNOME_CONFIG@ --datadir` +gaimdistpixdir = $(datadir)/pixmaps/gaim +gaimdistpix_DATA = away.png connect.png msgpend.png offline.png online.png -gaimdistpmdir = $(gnomedata)/pixmaps/gaim -gaimdistpm_DATA = away.png connect.png msgpend.png offline.png online.png - -gaimpixmapdir = $(gnomedata)/pixmaps -gaimpixmap_DATA = gaim.png +distpixmapdir = $(datadir)/pixmaps +distpixmap_DATA = gaim.png -else -pixmapdir = $(datadir)/pixmaps -pixmap_DATA = gaim.png - -endif - -endif diff -r 0a7af6d4d2a0 -r 59589bb7ce1e src/.cvsignore --- a/src/.cvsignore Sun Aug 25 04:54:47 2002 +0000 +++ b/src/.cvsignore Sun Aug 25 04:59:34 2002 +0000 @@ -3,4 +3,4 @@ .deps .libs gaim -gaim_applet + diff -r 0a7af6d4d2a0 -r 59589bb7ce1e src/Makefile.am --- a/src/Makefile.am Sun Aug 25 04:54:47 2002 +0000 +++ b/src/Makefile.am Sun Aug 25 04:59:34 2002 +0000 @@ -1,38 +1,5 @@ SUBDIRS = protocols -if GNOMEAPPLET -bin_PROGRAMS = gaim_applet -gaim_applet_SOURCES = about.c \ - aim.c \ - applet.c \ - away.c \ - browser.c \ - buddy.c \ - buddy_chat.c \ - conversation.c \ - core.c \ - dialogs.c \ - gaimrc.c \ - gtkimhtml.c \ - gtkspell.c \ - html.c \ - idle.c \ - list.c \ - md5.c \ - module.c \ - multi.c \ - perl.c \ - plugins.c \ - prefs.c \ - proxy.c \ - prpl.c \ - server.c \ - sound.c \ - util.c -gaim_applet_DEPENDENCIES = @LIBOBJS@ $(STATIC_LINK_LIBS) -gaim_applet_LDFLAGS = -export-dynamic -gaim_applet_LDADD = @LDADD@ @LIBOBJS@ -else bin_PROGRAMS = gaim gaim_SOURCES = about.c \ aim.c \ @@ -64,12 +31,11 @@ gaim_DEPENDENCIES = @LIBOBJS@ $(STATIC_LINK_LIBS) gaim_LDFLAGS = -export-dynamic gaim_LDADD = @LDADD@ @LIBOBJS@ -endif CFLAGS += $(PERL_CFLAGS) CFLAGS += -DLOCALEDIR=\"$(datadir)/locale\" -DLIBDIR=\"$(libdir)/gaim/\" $(DEBUG_CFLAGS) -DDATADIR=\"$(datadir)\" -LIBS = @LIBS@ $(UI_LIBS) $(SOUND_LIBS) $(STATIC_LINK_LIBS) $(PERL_LIBS) $(XSS_LIBS) $(INTLLIBS) $(DEBUG_LIBS) +LIBS = @LIBS@ $(GTK_LIBS) $(SOUND_LIBS) $(STATIC_LINK_LIBS) $(PERL_LIBS) $(XSS_LIBS) $(INTLLIBS) $(DEBUG_LIBS) EXTRA_DIST = applet.h \ convo.h \ diff -r 0a7af6d4d2a0 -r 59589bb7ce1e src/applet.c --- a/src/applet.c Sun Aug 25 04:54:47 2002 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,403 +0,0 @@ -/************************************************************** -** -** GaimGnomeAppletMgr -** Author - Quinticent (John Palmieri: johnp@martianrock.com) -** -** Purpose - Takes over the task of managing the GNOME applet -** code and provides a centralized codebase for -** GNOME integration for Gaim. -** -** -** gaim -** -** Copyright (C) 1998-1999, Mark Spencer -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU General Public License as published by -** the Free Software Foundation; either version 2 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifdef HAVE_CONFIG_H -#include -#endif -#ifdef USE_APPLET -#include -#include -#include -#include -#include -#include "gaim.h" -#include "applet.h" -#include "pixmaps/aimicon.xpm" - -static int connecting = 0; - -gboolean applet_buddy_show = FALSE; - -GtkWidget *applet; -static GtkWidget *icon; - -static GtkAllocation *get_applet_pos(gboolean); -static gint sizehint = 48; - -static PanelBackType backtype = PANEL_BACK_NONE; -static GdkColor *backcolor = NULL; -static char *backfile = NULL; - - - -static GdkPixmap *get_applet_icon(const char *name) -{ - GdkPixmap *cache; - GdkGC *gc; - char *path; - GdkPixbuf *pb, *scale = NULL; - guchar *dst; - int w, h, rowstride; - double affine[6]; - - if (!applet) - return NULL; - cache = gdk_pixmap_new(applet->window, sizehint, sizehint, - gtk_widget_get_visual(applet)->depth); - gc = gdk_gc_new(cache); - gdk_gc_copy(gc, applet->style->bg_gc[GTK_WIDGET_STATE(applet)]); - path = gnome_pixmap_file(name); - if (path) { - scale = gdk_pixbuf_new_from_file(path); - g_free(path); - } - if (!scale) - return NULL; - pb = gdk_pixbuf_scale_simple(scale, sizehint, sizehint, GDK_INTERP_HYPER); - gdk_pixbuf_unref(scale); - - applet_widget_get_rgb_bg(APPLET_WIDGET(applet), &dst, &w, &h, &rowstride); - - art_affine_identity(affine); - art_rgb_rgba_affine(dst, 0, 0, w, h, rowstride, - gdk_pixbuf_get_pixels(pb), gdk_pixbuf_get_width(pb), - gdk_pixbuf_get_height(pb), gdk_pixbuf_get_rowstride(pb), - affine, ART_FILTER_NEAREST, NULL); - gdk_pixbuf_unref(pb); - gdk_draw_rgb_image(cache, gc, 0, 0, w, h, - GDK_RGB_DITHER_NORMAL, dst, rowstride); - g_free(dst); - - gdk_gc_unref(gc); - return cache; -} - -static gboolean update_applet() -{ - char buf[BUF_LONG]; - GSList *c = connections; - GdkPixmap *newpix; - - if (connecting) { - newpix = get_applet_icon(GAIM_GNOME_CONNECT_ICON); - applet_set_tooltips(_("Attempting to sign on....")); - } else if (!connections) { - newpix = get_applet_icon(GAIM_GNOME_OFFLINE_ICON); - applet_set_tooltips(_("Offline. Click to bring up login box.")); - } else if (awaymessage) { - int dsr = 0; - - if ((away_options & OPT_AWAY_QUEUE) && message_queue) { - GSList *m = message_queue; - while (m) { - struct queued_message *qm = m->data; - if (qm->flags & WFLAG_RECV) - dsr++; - m = m->next; - } - } - - if (dsr) { - newpix = get_applet_icon(GAIM_GNOME_MSG_PENDING_ICON); - g_snprintf(buf, sizeof(buf), _("Away: %d pending."), dsr); - } else { - newpix = get_applet_icon(GAIM_GNOME_AWAY_ICON); - g_snprintf(buf, sizeof(buf), _("Away.")); - } - - applet_set_tooltips(buf); - } else { - newpix = get_applet_icon(GAIM_GNOME_ONLINE_ICON); - g_snprintf(buf, sizeof buf, "Online: "); - while (c) { - strcat(buf, ((struct gaim_connection *)c->data)->username); - c = g_slist_next(c); - if (c) - strcat(buf, ", "); - } - applet_set_tooltips(buf); - } - - if (newpix) { - gtk_pixmap_set(GTK_PIXMAP(icon), newpix, NULL); - gdk_pixmap_unref(newpix); - } - - return TRUE; -} - -#ifdef HAVE_PANEL_PIXEL_SIZE - -static gint applet_update_pixel_size(gpointer data) -{ - update_applet(); - return FALSE; -} - -static void applet_change_pixel_size(GtkWidget *w, int size, gpointer data) -{ - sizehint = size; - gtk_widget_set_usize(icon, sizehint, sizehint); - /* we need to wait for the mainloop to finish updating the - background pixel size, otherwise we'll end up getting the - wrong background size when loading and drawing the new - icon */ - gtk_timeout_add(100, applet_update_pixel_size, - NULL); -} -#endif - -extern GtkWidget *mainwindow; -void applet_show_login(AppletWidget *widget, gpointer data) -{ - show_login(); - if (blist_options & OPT_BLIST_NEAR_APPLET) { - GtkAllocation *a = get_applet_pos(FALSE); - gtk_widget_set_uposition(mainwindow, a->x, a->y); - } -} - -void applet_do_signon(AppletWidget *widget, gpointer data) -{ - applet_show_login(NULL, 0); -} - -void insert_applet_away() -{ - GSList *awy = away_messages; - struct away_message *a; - char *awayname; - - applet_widget_register_callback_dir(APPLET_WIDGET(applet), "away/", _("Away")); - applet_widget_register_callback(APPLET_WIDGET(applet), - "away/new", - _("New Away Message"), - (AppletCallbackFunc)create_away_mess, NULL); - - while (awy) { - a = (struct away_message *)awy->data; - - awayname = g_malloc(sizeof *awayname * (6 + strlen(a->name))); - awayname[0] = '\0'; - strcat(awayname, "away/"); - strcat(awayname, a->name); - applet_widget_register_callback(APPLET_WIDGET(applet), - awayname, - a->name, (AppletCallbackFunc)do_away_message, a); - - awy = awy->next; - g_free(awayname); - } -} - -void remove_applet_away() -{ - GSList *awy = away_messages; - struct away_message *a; - char *awayname; - - if (!applet) - return; - - applet_widget_unregister_callback(APPLET_WIDGET(applet), "away/new"); - - while (awy) { - a = (struct away_message *)awy->data; - - awayname = g_malloc(sizeof *awayname * (6 + strlen(a->name))); - awayname[0] = '\0'; - strcat(awayname, "away/"); - strcat(awayname, a->name); - applet_widget_unregister_callback(APPLET_WIDGET(applet), awayname); - - awy = g_slist_next(awy); - g_free(awayname); - } - applet_widget_unregister_callback_dir(APPLET_WIDGET(applet), "away/"); - applet_widget_unregister_callback(APPLET_WIDGET(applet), "away"); -} - -static GtkAllocation *get_applet_pos(gboolean for_blist) -{ - gint x, y, pad; - GtkRequisition buddy_req, applet_req; - GtkAllocation *result = g_new0(GtkAllocation, 1); - GNOME_Panel_OrientType orient = applet_widget_get_panel_orient(APPLET_WIDGET(applet)); - pad = 5; - - gdk_window_get_position(gtk_widget_get_parent_window(icon), &x, &y); - if (for_blist) { - if (blist_options & OPT_BLIST_SAVED_WINDOWS) { - buddy_req.width = blist_pos.width; - buddy_req.height = blist_pos.height; - } else { - buddy_req = blist->requisition; - } - } else { - buddy_req = mainwindow->requisition; - } - applet_req = icon->requisition; - - switch (orient) { - case ORIENT_UP: - result->x = x; - result->y = y - (buddy_req.height + pad); - break; - case ORIENT_DOWN: - result->x = x; - result->y = y + applet_req.height + pad; - break; - case ORIENT_LEFT: - result->x = x - (buddy_req.width + pad); - result->y = y; - break; - case ORIENT_RIGHT: - result->x = x + applet_req.width + pad; - result->y = y; - break; - } - - if (result->x < 0) - result->x = 0; - if (result->y < 0) - result->y = 0; - if (result->x > gdk_screen_width() - buddy_req.width) - result->x = gdk_screen_width() - buddy_req.width; - if (result->y > gdk_screen_height() - buddy_req.height) - result->y = gdk_screen_height() - buddy_req.height; - - return result; -} - -void createOnlinePopup() -{ - GtkAllocation *al; - if (!blist) - return; - al = get_applet_pos(TRUE); - if (blist_options & OPT_BLIST_NEAR_APPLET) - gtk_widget_set_uposition(blist, al->x, al->y); - else if (blist_options & OPT_BLIST_SAVED_WINDOWS) - gtk_widget_set_uposition(blist, blist_pos.x - blist_pos.xoff, - blist_pos.y - blist_pos.yoff); - gtk_widget_show(blist); - g_free(al); -} - -void AppletClicked(GtkWidget *sender, GdkEventButton *ev, gpointer data) -{ - if (!ev || ev->button != 1 || ev->type != GDK_BUTTON_PRESS) - return; - - if (applet_buddy_show) { - applet_buddy_show = FALSE; - if (!connections && mainwindow) - gtk_widget_hide(mainwindow); - else - gtk_widget_hide(blist); - } else { - applet_buddy_show = TRUE; - if (!connections) - applet_show_login(APPLET_WIDGET(applet), NULL); - else - createOnlinePopup(); - } -} - - -/*************************************************************** -** -** Initialize GNOME stuff -** -****************************************************************/ - -gint init_applet_mgr(int argc, char *argv[]) -{ - GdkPixmap *pm; - - applet_widget_init("Gaim", VERSION, argc, argv, NULL, 0, NULL); - - applet = applet_widget_new("gaim_applet"); - if (!applet) - g_error(_("Can't create Gaim applet!")); - gtk_widget_set_events(applet, gtk_widget_get_events(applet) | GDK_BUTTON_PRESS_MASK); - gtk_widget_realize(applet); - - pm = get_applet_icon(GAIM_GNOME_OFFLINE_ICON); - if (!pm) - pm = gdk_pixmap_create_from_xpm_d(applet->window, NULL, - &applet->style->bg[GTK_WIDGET_STATE(applet)], aimicon_xpm); - icon = gtk_pixmap_new(pm, NULL); -#ifdef HAVE_PANEL_PIXEL_SIZE - gtk_widget_set_usize(icon, 5, 5); -#else - gtk_widget_set_usize(icon, 48, 48); -#endif - gdk_pixmap_unref(pm); - applet_widget_add(APPLET_WIDGET(applet), icon); - - applet_widget_register_stock_callback(APPLET_WIDGET(applet), - "about", - GNOME_STOCK_MENU_ABOUT, - _("About..."), (AppletCallbackFunc)show_about, NULL); - - gtk_signal_connect(GTK_OBJECT(applet), "button_press_event", GTK_SIGNAL_FUNC(AppletClicked), - NULL); - - gtk_signal_connect(GTK_OBJECT(applet), "destroy", GTK_SIGNAL_FUNC(do_quit), NULL); - -#ifdef HAVE_PANEL_PIXEL_SIZE - gtk_signal_connect(GTK_OBJECT(applet), "change_pixel_size", - GTK_SIGNAL_FUNC(applet_change_pixel_size), NULL); -#endif - - applet_widget_send_draw(APPLET_WIDGET(applet), TRUE); - gtk_signal_connect(GTK_OBJECT(applet), "do-draw", GTK_SIGNAL_FUNC(update_applet), NULL); - gtk_widget_show(icon); - gtk_widget_show(applet); - return 0; -} - -void set_user_state(enum gaim_user_states state) -{ - if (state == signing_on) - connecting++; - else if ((state == offline || state == away || state == online) && connecting > 0) - connecting--; - update_applet(); -} - -void applet_set_tooltips(char *msg) -{ - if (!applet) - return; - applet_widget_set_tooltip(APPLET_WIDGET(applet), msg); -} - -#endif /*USE_APPLET */ diff -r 0a7af6d4d2a0 -r 59589bb7ce1e src/applet.h --- a/src/applet.h Sun Aug 25 04:54:47 2002 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -/************************************************************** -** -** GaimGnomeAppletMgr -** Author - Quinticent (John Palmieri: johnp@martianrock.com) -** -** Purpose - Takes over the task of managing the GNOME applet -** code and provides a centralized codebase for -** GNOME integration for Gaim. -** -** Legal Stuff - -** -** gaim -** -** Copyright (C) 1998-1999, Mark Spencer -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU General Public License as published by -** the Free Software Foundation; either version 2 of the License, or -** (at your option) any later version. -** -** This program is distributed in the hope that it will be useful, -** but WITHOUT ANY WARRANTY; without even the implied warranty of -** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -** GNU General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -** -**************************************************************/ -#ifndef _APPLET_H_ -#define _APPLET_H_ -#ifdef USE_APPLET - -#include -#include -#include -#include -#include -#include -#include - -enum gaim_user_states { - offline = 0, - signing_on, - online, - away -}; - - -/* -#define _MSG_OFFLINE_ "Offline" -#define _MSG_CONNECT_ "Connecting" -#define _MSG_ONLINE_ "Online" -#define _MSG_FONT_ "-*-helvetica-medium-r-*-*-*-80-*-*-*-*-*-*" -*/ - -#define GAIM_GNOME_DEVIL_OFFLINE "gaim/gnome/devil-offline.png" -#define GAIM_GNOME_DEVIL_CONNECT "gaim/gnome/devil-connect.png" -#define GAIM_GNOME_DEVIL_ONLINE "gaim/gnome/devil-online.png" - -#define GAIM_GNOME_PENGUIN_OFFLINE "gaim/gnome/penguin-offline.png" -#define GAIM_GNOME_PENGUIN_CONNECT "gaim/gnome/penguin-connect.png" -#define GAIM_GNOME_PENGUIN_ONLINE "gaim/gnome/penguin-online.png" - -/* -#define GAIM_GNOME_OFFLINE_ICON "apple-red.png" -#define GAIM_GNOME_CONNECT_ICON "gnome-battery.png" -#define GAIM_GNOME_ONLINE_ICON "apple-green.png" -*/ - -#define GAIM_GNOME_OFFLINE_ICON "gaim/offline.png" -#define GAIM_GNOME_CONNECT_ICON "gaim/connect.png" -#define GAIM_GNOME_ONLINE_ICON "gaim/online.png" -#define GAIM_GNOME_AWAY_ICON "gaim/away.png" -#define GAIM_GNOME_MSG_PENDING_ICON "gaim/msgpend.png" - -extern GtkWidget *applet; - -extern gint init_applet_mgr(); -extern void applet_do_signon(AppletWidget *, gpointer); -extern void make_buddy(); -extern void cancel_logon(); -extern gint applet_destroy_buddy(GtkWidget *, GdkEvent *, gpointer *); -extern void createOnlinePopup(); - -extern void set_user_state( enum gaim_user_states state ); - -extern void insert_applet_away(); -extern void remove_applet_away(); - -extern void update_pixmaps(); -extern void applet_set_tooltips(char *); - -extern gboolean applet_buddy_show; - -#endif /*USE_APPLET*/ -#endif /*_APPLET_H_*/ diff -r 0a7af6d4d2a0 -r 59589bb7ce1e src/ticker.c --- a/src/ticker.c Sun Aug 25 04:54:47 2002 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,344 +0,0 @@ -/* GTK - The GIMP Toolkit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * ticker.c -- Syd Logan, Summer 2000 - */ - -#include -#include "gtkticker.h" -#include -#include -#include "gaim.h" -#include "prpl.h" -#include "pixmaps/no_icon.xpm" - -GtkWidget *tickerwindow = NULL; -GtkWidget *ticker; - -typedef struct { - char buddy[ 128 ]; - char alias[ 388 ]; - GtkWidget *hbox; - GtkWidget *ebox; - GtkWidget *label; - GtkWidget *pix; -} TickerData; - -static GList *tickerbuds = (GList *) NULL; -static gboolean userclose = FALSE; -static GtkWidget *msgw; - -void BuddyTickerDestroyWindow( GtkWidget *window ); -void BuddyTickerCreateWindow( void ); -void BuddyTickerAddUser( char *name, char *alias, GdkPixmap *pm, GdkBitmap *bm ); -void BuddyTickerRemoveUser( char *name ); -void BuddyTickerSetPixmap( char *name, GdkPixmap *pm, GdkBitmap *bm ); -void BuddyTickerClearList( void ); -void BuddyTickerSignOff( void ); -GList * BuddyTickerFindUser( char *name ); -int BuddyTickerMessageRemove( gpointer data ); -extern void pressed_ticker(char *); -void BuddyTickerShow(); - -void -BuddyTickerDestroyWindow( GtkWidget *window ) -{ - BuddyTickerClearList(); - gtk_ticker_stop_scroll( GTK_TICKER( ticker ) ); - gtk_widget_destroy( window ); - ticker = tickerwindow = (GtkWidget *) NULL; - userclose = TRUE; -} - -static char *msg = "Welcome to Gaim " VERSION ", brought to you by Rob Flynn (maintainer), Eric Warmenhoven, Mark Spencer, Jeramey Crawford, Jim Duchek, Syd Logan, and Sean Egan"; - -void -BuddyTickerCreateWindow() -{ - if ( tickerwindow != (GtkWidget *) NULL ) - return; - tickerwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_signal_connect (GTK_OBJECT(tickerwindow), "destroy", - GTK_SIGNAL_FUNC (BuddyTickerDestroyWindow), "WM destroy"); - gtk_window_set_title (GTK_WINDOW(tickerwindow), "Gaim - Buddy Ticker"); - gtk_window_set_wmclass (GTK_WINDOW(tickerwindow), - "ticker", "Gaim"); - gtk_widget_realize(tickerwindow); - aol_icon(tickerwindow->window); - - ticker = gtk_ticker_new(); - gtk_ticker_set_spacing( GTK_TICKER( ticker ), 20 ); - gtk_widget_set_usize( ticker, 500, -1 ); - gtk_container_add( GTK_CONTAINER( tickerwindow ), ticker ); - gtk_ticker_set_interval( GTK_TICKER( ticker ), 500 ); - gtk_ticker_set_scootch( GTK_TICKER( ticker ), 10 ); - msgw = gtk_label_new( msg ); - gtk_ticker_add( GTK_TICKER( ticker ), msgw ); - gtk_ticker_start_scroll( GTK_TICKER( ticker ) ); - - gtk_timeout_add( 60000, BuddyTickerMessageRemove, (gpointer) NULL ); - - gtk_widget_show_all (ticker); - -} - -gint -ButtonPressCallback( GtkWidget *widget, GdkEvent *event, gpointer callback_data ) -{ - TickerData *p = (TickerData *) callback_data; - - pressed_ticker( p->buddy ); - - return TRUE; -} - -void -BuddyTickerAddUser( char *name, char *alias, GdkPixmap *pm, GdkBitmap *bm ) -{ - TickerData *p; - GList *q; - - if ( userclose == TRUE ) - return; - - BuddyTickerCreateWindow(); - - q = (GList *) BuddyTickerFindUser( name ); - if ( q != (GList *) NULL ) - return; - - p = (TickerData *) malloc( sizeof( TickerData ) ); - p->hbox = (GtkWidget *) NULL; - p->label = (GtkWidget *) NULL; - p->pix = (GtkWidget *) NULL; - strcpy( p->buddy, name ); - strcpy( p->alias, alias); - tickerbuds = g_list_append( tickerbuds, p ); - - p->hbox = gtk_hbox_new( FALSE, 0 ); - gtk_ticker_add( GTK_TICKER( ticker ), p->hbox ); - gtk_widget_show_all( p->hbox ); - - BuddyTickerSetPixmap( name, pm, bm ); - - p->ebox = gtk_event_box_new(); - - /* click detection */ - - gtk_widget_set_events (p->ebox, GDK_BUTTON_PRESS_MASK); - gtk_signal_connect (GTK_OBJECT (p->ebox), "button_press_event", - GTK_SIGNAL_FUNC(ButtonPressCallback), (gpointer) p); - - gtk_box_pack_start_defaults( GTK_BOX( p->hbox ), p->ebox ); - gtk_widget_show( p->ebox ); - - if (im_options & OPT_IM_ALIAS_TAB) - p->label = gtk_label_new( alias ); - else - p->label = gtk_label_new( name ); - gtk_container_add( GTK_CONTAINER(p->ebox), p->label ); - - gtk_widget_show( p->label ); - - gtk_widget_show( tickerwindow ); -} - -void -BuddyTickerRemoveUser( char *name ) -{ - GList *p = (GList *) BuddyTickerFindUser( name ); - TickerData *data; - - if ( !p ) - return; - - data = (TickerData *) p->data; - - if ( userclose == TRUE ) - return; - if ( data ) { - gtk_ticker_remove( GTK_TICKER( ticker ), data->hbox ); - tickerbuds = g_list_remove( tickerbuds, data ); - free( data ); - } -} - -void -BuddyTickerSetPixmap( char *name, GdkPixmap *pm, GdkBitmap *bm ) -{ - GList *p; - TickerData *data; - - if ( userclose == TRUE ) - return; - p = (GList *) BuddyTickerFindUser( name ); - if ( p ) - data = (TickerData *) p->data; - else - return; - if ( data->pix == (GtkWidget *) NULL ) { - data->pix = gtk_pixmap_new( pm, bm ); - gtk_box_pack_start_defaults( GTK_BOX( data->hbox ), data->pix ); - } else { - gtk_widget_hide( data->pix ); - gtk_pixmap_set(GTK_PIXMAP(data->pix), pm, bm); - } - gtk_widget_show( data->pix ); -} - -void -BuddyTickerSetAlias( char *name, char *alias) { - GList *p; - TickerData *data; - - if ( userclose == TRUE ) - return; - p = (GList *) BuddyTickerFindUser( name ); - if ( p ) - data = (TickerData *) p->data; - else - return; - if (alias) { - g_snprintf(data->alias, sizeof(data->alias), alias); - - if (im_options & OPT_IM_ALIAS_TAB) - gtk_label_set_text(GTK_LABEL(data->label), alias); - } -} - -GList * -BuddyTickerFindUser( char *name ) -{ - GList *p = tickerbuds; - - while ( p ) { - TickerData *q = (TickerData *) p->data; - if ( !strcmp( name, q->buddy ) ) - return( p ); - p = p->next; - } - return (GList *) NULL; -} - -void -BuddyTickerSetNames() -{ - GList *p = tickerbuds; - while ( p ) { - TickerData *q = (TickerData *) p->data; - if (im_options & OPT_IM_ALIAS_TAB) - gtk_label_set_text(GTK_LABEL(q->label), q->alias); - else - gtk_label_set_text(GTK_LABEL(q->label), q->buddy); - p = p->next; - } -} - -int -BuddyTickerMessageRemove( gpointer data ) -{ - if ( userclose == TRUE ) - return FALSE; - if ( tickerwindow == NULL ) - return FALSE; - gtk_ticker_remove( GTK_TICKER( ticker ), msgw ); - return FALSE; -} - -int -BuddyTickerLogonTimeout( gpointer data ) -{ - return FALSE; -} - -int -BuddyTickerLogoutTimeout( gpointer data ) -{ - char *name = (char *) data; - - if ( userclose == TRUE ) - return FALSE; - BuddyTickerRemoveUser( name ); - - return FALSE; -} - -void -BuddyTickerSignoff( void ) -{ - GList *p = tickerbuds; - TickerData *q; - - while ( p ) { - q = (TickerData *) p->data; - if ( q ) - BuddyTickerRemoveUser( q->buddy ); - p = tickerbuds; - } - userclose = FALSE; - if ( tickerwindow ) - gtk_widget_hide( tickerwindow ); -} - -void -BuddyTickerClearList( void ) -{ - GList *p = tickerbuds; - - while ( p ) - p = g_list_remove( p, p->data ); - tickerbuds = (GList *) NULL; -} - -void BuddyTickerShow() -{ - GdkPixmap *pm; - GdkBitmap *bm; - struct gaim_connection *gc; - struct group *g; - struct buddy *b; - GSList *gcons, *grps, *buds; - char **xpm; - - if( !(misc_options & OPT_MISC_BUDDY_TICKER) ) { - BuddyTickerSignoff(); - misc_options &= ~OPT_MISC_BUDDY_TICKER; - return; - } - - for( gcons = connections; gcons; gcons = gcons->next ) { - gc = (struct gaim_connection *)gcons->data; - for( grps = gc->groups; grps; grps = grps->next ) { - g = (struct group *)grps->data; - for( buds = g->members; buds; buds = buds->next ) { - b = (struct buddy *)buds->data; - if( b->present ) { - xpm = NULL; - if (gc->prpl->list_icon) - xpm = gc->prpl->list_icon(b->uc); - if (xpm == NULL) - xpm = (char **)no_icon_xpm; - pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, NULL, xpm); - BuddyTickerAddUser( b->name, b->show, pm, bm ); - } - } - } - } -}