You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(106) |
Oct
(334) |
Nov
(246) |
Dec
(145) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(42) |
Feb
(53) |
Mar
(232) |
Apr
(109) |
May
(137) |
Jun
(63) |
Jul
(26) |
Aug
(263) |
Sep
(193) |
Oct
(507) |
Nov
(440) |
Dec
(241) |
2003 |
Jan
(567) |
Feb
(195) |
Mar
(504) |
Apr
(481) |
May
(524) |
Jun
(522) |
Jul
(594) |
Aug
(502) |
Sep
(643) |
Oct
(508) |
Nov
(430) |
Dec
(377) |
2004 |
Jan
(361) |
Feb
(251) |
Mar
(219) |
Apr
(499) |
May
(461) |
Jun
(419) |
Jul
(314) |
Aug
(519) |
Sep
(416) |
Oct
(247) |
Nov
(305) |
Dec
(382) |
2005 |
Jan
(267) |
Feb
(282) |
Mar
(327) |
Apr
(338) |
May
(189) |
Jun
(400) |
Jul
(462) |
Aug
(530) |
Sep
(316) |
Oct
(523) |
Nov
(481) |
Dec
(650) |
2006 |
Jan
(536) |
Feb
(361) |
Mar
(287) |
Apr
(146) |
May
(101) |
Jun
(169) |
Jul
(221) |
Aug
(498) |
Sep
(300) |
Oct
(236) |
Nov
(209) |
Dec
(205) |
2007 |
Jan
(30) |
Feb
(23) |
Mar
(26) |
Apr
(15) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Sean E. <sea...@us...> - 2002-09-26 15:23:36
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv7945/src Modified Files: browser.c buddy.c conversation.c dialogs.c gaim.h multi.c ui.h Log Message: A long annoying patch by one Robert McQueen. Index: browser.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/browser.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- browser.c 29 Aug 2002 21:40:06 -0000 1.30 +++ browser.c 26 Sep 2002 15:23:32 -0000 1.31 @@ -490,7 +490,7 @@ mozilla_remote_init_atoms(); window = mozilla_remote_find_window(); - if (window && (((GdkWindowPrivate *) window)->destroyed == FALSE)) { + if (window && (GDK_WINDOW_OBJECT(window)->destroyed == FALSE)) { XSelectInput(gdk_display, GDK_WINDOW_XWINDOW(window), (PropertyChangeMask | StructureNotifyMask)); @@ -528,7 +528,7 @@ mozilla_remote_init_atoms(); window = mozilla_remote_find_window(); - if (window && (((GdkWindowPrivate *) window)->destroyed == FALSE)) { + if (window && (GDK_WINDOW_OBJECT(window)->destroyed == FALSE)) { XSelectInput(gdk_display, GDK_WINDOW_XWINDOW(window), (PropertyChangeMask | StructureNotifyMask)); Index: buddy.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/buddy.c,v retrieving revision 1.336 retrieving revision 1.337 diff -u -d -r1.336 -r1.337 --- buddy.c 26 Sep 2002 07:37:51 -0000 1.336 +++ buddy.c 26 Sep 2002 15:23:32 -0000 1.337 @@ -1999,7 +1999,7 @@ buddy list/login window--depending on which is active */ if (connections) { if (GTK_WIDGET_VISIBLE(blist)) { - if (DOCKLET_WINDOW_ICONIFIED(blist)) { + if (GAIM_WINDOW_ICONIFIED(blist)) { unhide_buddy_list(); } else { hide_buddy_list(); @@ -2009,7 +2009,7 @@ } } else { if (GTK_WIDGET_VISIBLE(mainwindow)) { - if (DOCKLET_WINDOW_ICONIFIED(mainwindow)) { + if (GAIM_WINDOW_ICONIFIED(mainwindow)) { gtk_window_present(GTK_WINDOW(mainwindow)); } else { gtk_widget_hide(mainwindow); @@ -2458,6 +2458,13 @@ } } +static void change_state_blist_window(GtkWidget *w, GdkEventWindowState *event, void *dummy) { + if (event->new_window_state & GDK_WINDOW_STATE_ICONIFIED && + docklet_count) { + gtk_widget_hide(blist); + } +} + /******************************************************************* * * Helper funs for making the menu @@ -2493,8 +2500,7 @@ gtk_widget_add_accelerator(menuitem, "activate", accel, str[0], GDK_MOD1_MASK, GTK_ACCEL_LOCKED); - gtk_widget_lock_accelerators(menuitem); - + return menuitem; } @@ -2544,7 +2550,6 @@ if (accel_key) { gtk_widget_add_accelerator(menuitem, "activate", accel, accel_key, accel_mods, GTK_ACCEL_LOCKED); - gtk_widget_lock_accelerators(menuitem); } return menuitem; @@ -2656,7 +2661,7 @@ gtk_window_set_policy(GTK_WINDOW(blist), TRUE, TRUE, TRUE); accel = gtk_accel_group_new(); - gtk_accel_group_attach(accel, G_OBJECT(blist)); + gtk_window_add_accel_group(G_OBJECT(blist), accel); menubar = gtk_menu_bar_new(); @@ -2866,6 +2871,8 @@ NULL); gtk_signal_connect(GTK_OBJECT(blist), "configure_event", GTK_SIGNAL_FUNC(configure_blist_window), + NULL); + gtk_signal_connect(GTK_OBJECT(blist), "window_state_event", GTK_SIGNAL_FUNC(change_state_blist_window), NULL); Index: conversation.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/conversation.c,v retrieving revision 1.381 retrieving revision 1.382 diff -u -d -r1.381 -r1.382 --- conversation.c 25 Sep 2002 13:19:44 -0000 1.381 +++ conversation.c 26 Sep 2002 15:23:33 -0000 1.382 @@ -2118,7 +2118,7 @@ GtkWidget *win; GtkWidget *entry; - toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + toolbar = gtk_toolbar_new(); win = c->window; entry = c->entry; Index: dialogs.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/dialogs.c,v retrieving revision 1.341 retrieving revision 1.342 diff -u -d -r1.341 -r1.342 --- dialogs.c 23 Sep 2002 14:58:06 -0000 1.341 +++ dialogs.c 26 Sep 2002 15:23:33 -0000 1.342 @@ -3692,7 +3692,7 @@ /* pack buttons */ if (c->gc->prpl->smiley_list == NULL) { - smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + smiley_box = gtk_toolbar_new(); gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); toolbar_add_smiley(c, smiley_box, angel_xpm, win, "O:-)"); @@ -3700,7 +3700,7 @@ toolbar_add_smiley(c, smiley_box, burp_xpm, win, ":-!"); toolbar_add_smiley(c, smiley_box, crossedlips_xpm, win, ":-X"); - smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + smiley_box = gtk_toolbar_new(); gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); toolbar_add_smiley(c, smiley_box, cry_xpm, win, ":'("); @@ -3708,7 +3708,7 @@ toolbar_add_smiley(c, smiley_box, kiss_xpm, win, ":-*"); toolbar_add_smiley(c, smiley_box, moneymouth_xpm, win, ":-$"); - smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + smiley_box = gtk_toolbar_new(); gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); toolbar_add_smiley(c, smiley_box, sad_xpm, win, ":-("); @@ -3716,7 +3716,7 @@ toolbar_add_smiley(c, smiley_box, smile_xpm, win, ":-)"); toolbar_add_smiley(c, smiley_box, smile8_xpm, win, "8-)"); - smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + smiley_box = gtk_toolbar_new(); gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); toolbar_add_smiley(c, smiley_box, think_xpm, win, ":-/"); @@ -3740,7 +3740,7 @@ smilies = c->gc->prpl->smiley_list(); - smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + smiley_box = gtk_toolbar_new(); gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); while (smilies) { @@ -3750,7 +3750,7 @@ if (smile->show) { if ((!(smiley_count % ((int)(sqrt(total_count))))) && (smiley_count > 0)) { - smiley_box = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + smiley_box = gtk_toolbar_new(); gtk_box_pack_start(GTK_BOX(vbox), smiley_box, TRUE, TRUE, 0); } Index: gaim.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/gaim.h,v retrieving revision 1.338 retrieving revision 1.339 diff -u -d -r1.338 -r1.339 --- gaim.h 17 Sep 2002 02:56:40 -0000 1.338 +++ gaim.h 26 Sep 2002 15:23:33 -0000 1.339 @@ -353,7 +353,6 @@ extern void do_pounce(struct gaim_connection *, char *, int); void create_prpl_icon(GtkWidget *widget, struct gaim_connection *gc, GdkPixmap **pixmap, GdkBitmap **mask); -void docklet_toggle(); /* Functions in buddy_chat.c */ extern void show_new_buddy_chat(struct conversation *); Index: multi.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/multi.c,v retrieving revision 1.129 retrieving revision 1.130 diff -u -d -r1.129 -r1.130 --- multi.c 16 Sep 2002 08:35:23 -0000 1.129 +++ multi.c 26 Sep 2002 15:23:33 -0000 1.130 @@ -1112,7 +1112,7 @@ gtk_widget_destroy(meter_win->window); g_free (meter_win); meter_win = NULL; - } + } } void account_online(struct gaim_connection *gc) @@ -1130,22 +1130,6 @@ /* then we do the buddy list stuff */ if (mainwindow) gtk_widget_hide(mainwindow); - -/* fixme: docklet - if (blist_options & OPT_BLIST_APP_BUDDY_SHOW) { - show_buddy_list(); - refresh_buddy_window(); - createOnlinePopup(); - applet_buddy_show = TRUE; - } else if (!blist) { - show_buddy_list(); - build_edit_tree(); - gtk_widget_hide(blist); - applet_buddy_show = FALSE; - } else { - build_edit_tree(); - } - set_user_state(online); */ show_buddy_list(); refresh_buddy_window(); Index: ui.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/ui.h,v retrieving revision 1.57 retrieving revision 1.58 diff -u -d -r1.57 -r1.58 --- ui.h 23 Sep 2002 03:31:02 -0000 1.57 +++ ui.h 26 Sep 2002 15:23:33 -0000 1.58 @@ -31,12 +31,8 @@ #define GAIM_DIALOG(x) x = gtk_window_new(GTK_WINDOW_TOPLEVEL); \ gtk_window_set_type_hint(GTK_WINDOW(x), GDK_WINDOW_TYPE_HINT_DIALOG) -#define GdkWindowPrivate GdkWindowObject -#define gtk_toolbar_new(x,y) gtk_toolbar_new() -#define gtk_accel_group_attach(x, y) _gtk_accel_group_attach(x, y) -#define gtk_widget_lock_accelerators(x) -#define DOCKLET_WINDOW_ICONIFIED(x) (gdk_window_get_state(GTK_WIDGET(x)->window) & GDK_WINDOW_STATE_ICONIFIED) +#define GAIM_WINDOW_ICONIFIED(x) (gdk_window_get_state(GTK_WIDGET(x)->window) & GDK_WINDOW_STATE_ICONIFIED) #define DEFAULT_FONT_FACE "Helvetica" |
From: Sean E. <sea...@us...> - 2002-09-26 15:23:35
|
Update of /cvsroot/gaim/gaim/plugins/docklet In directory usw-pr-cvs1:/tmp/cvs-serv7945/plugins/docklet Modified Files: docklet.c Log Message: A long annoying patch by one Robert McQueen. Index: docklet.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/docklet/docklet.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- docklet.c 26 Sep 2002 07:37:51 -0000 1.8 +++ docklet.c 26 Sep 2002 15:23:31 -0000 1.9 @@ -26,13 +26,12 @@ - handle and update tooltips to show your current accounts - dernyi's account status menu in the right click - store icons in gtk2 stock icon thing (needs doing for the whole prog) - - pop up notices when GNOME2's system-tray-applet supports it, with a - prefs dialog to choose what to alert for */ + - optional pop up notices when GNOME2's system-tray-applet supports it + - support blinking the icon when messages are pending */ /* includes */ #define GAIM_PLUGINS #include <gtk/gtk.h> -#include <fcntl.h> #include "gaim.h" #include "eggtrayicon.h" @@ -48,35 +47,28 @@ /* functions */ static void docklet_create(); +static void docklet_update_status(); /* globals */ +static GtkWidget *configwin; static EggTrayIcon *docklet = NULL; static GtkWidget *icon; static enum docklet_status status; -static GtkWidget *configwin = NULL; -static void docklet_embedded(GtkWidget *widget, void *data) { - debug_printf("Docklet: embedded\n"); - docklet_add(); +static void docklet_toggle_mute(GtkWidget *toggle, void *data) { + mute_sounds = GTK_CHECK_MENU_ITEM(toggle)->active; } -static void docklet_destroyed(GtkWidget *widget, void *data) { - debug_printf("Docklet: destroyed\n"); - docklet_remove(); - docklet_create(); +static void docklet_toggle_queue(GtkWidget *widget, void *data) { + away_options ^= OPT_AWAY_QUEUE_UNREAD; + save_prefs(); } - - -static void docklet_mute(GtkWidget *toggle, void *data) { - mute_sounds = GTK_CHECK_MENU_ITEM(toggle)->active; - if (mute_sounds) { - debug_printf("Docklet: sounds muted\n"); - } else { - debug_printf("Docklet: sounds unmuted\n"); - } + +static void docklet_flush_queue() { + purge_away_queue(unread_message_queue); + unread_message_queue = NULL; } - static void docklet_menu(GdkEventButton *event) { static GtkWidget *menu = NULL; GtkWidget *entry; @@ -89,7 +81,7 @@ if (status == offline) { entry = gtk_menu_item_new_with_label(_("Auto-login")); - g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(auto_login), NULL); + g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(auto_login), NULL); gtk_menu_append(GTK_MENU(menu), entry); } else { if (status == online) { @@ -104,7 +96,7 @@ a = (struct away_message *)awy->data; entry = gtk_menu_item_new_with_label(a->name); - g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(do_away_message), a); + g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(do_away_message), a); gtk_menu_append(GTK_MENU(docklet_awaymenu), entry); awy = g_slist_next(awy); @@ -114,7 +106,7 @@ gtk_menu_append(GTK_MENU(docklet_awaymenu), entry); entry = gtk_menu_item_new_with_label(_("New...")); - g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(create_away_mess), NULL); + g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(create_away_mess), NULL); gtk_menu_append(GTK_MENU(docklet_awaymenu), entry); entry = gtk_menu_item_new_with_label(_("Away")); @@ -122,12 +114,12 @@ gtk_menu_append(GTK_MENU(menu), entry); } else { entry = gtk_menu_item_new_with_label(_("Back")); - g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(do_im_back), NULL); + g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(do_im_back), NULL); gtk_menu_append(GTK_MENU(menu), entry); } entry = gtk_menu_item_new_with_label(_("Signoff")); - g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(signoff_all), NULL); + g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(signoff_all), NULL); gtk_menu_append(GTK_MENU(menu), entry); } @@ -136,26 +128,26 @@ entry = gtk_check_menu_item_new_with_label(_("Mute Sounds")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(entry), mute_sounds); - g_signal_connect(GTK_WIDGET(entry), "toggled", G_CALLBACK(docklet_mute), NULL); + g_signal_connect(G_OBJECT(entry), "toggled", G_CALLBACK(docklet_toggle_mute), NULL); gtk_menu_append(GTK_MENU(menu), entry); entry = gtk_menu_item_new_with_label(_("Accounts")); - g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(account_editor), NULL); + g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(account_editor), NULL); gtk_menu_append(GTK_MENU(menu), entry); entry = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL); - g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(show_prefs), NULL); + g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(show_prefs), NULL); gtk_menu_append(GTK_MENU(menu), entry); entry = gtk_separator_menu_item_new(); gtk_menu_append(GTK_MENU(menu), entry); entry = gtk_menu_item_new_with_label(_("About")); - g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(show_about), NULL); + g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(show_about), NULL); gtk_menu_append(GTK_MENU(menu), entry); entry = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL); - g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(do_quit), NULL); + g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(do_quit), NULL); gtk_menu_append(GTK_MENU(menu), entry); gtk_widget_show_all(menu); @@ -166,12 +158,12 @@ switch (event->button) { case 1: if (unread_message_queue) { - purge_away_queue(unread_message_queue); - unread_message_queue=NULL; + docklet_flush_queue(); docklet_update_status(); } - else + else { docklet_toggle(); + } break; case 2: break; @@ -238,6 +230,8 @@ } else { status = away; } + } else if (connecting_count) { + status = connecting; } else { status = online; } @@ -254,28 +248,47 @@ } } +static void docklet_embedded(GtkWidget *widget, void *data) { + debug_printf("Docklet: embedded\n"); + docklet_add(); +} + +static void docklet_destroyed(GtkWidget *widget, void *data) { + debug_printf("Docklet: destroyed\n"); + docklet_flush_queue(); + docklet_remove(); + docklet_create(); +} + static void docklet_create() { GtkWidget *box; - /* is this necessary/wise? */ - if (docklet) { - g_signal_handlers_disconnect_by_func(GTK_WIDGET(docklet), G_CALLBACK(docklet_destroyed), NULL); - gtk_widget_destroy(GTK_WIDGET(docklet)); - debug_printf("Docklet: freed\n"); + if (docklet) { + /* if this is being called when a docklet exists, it's because that + docklet is in the process of being destroyed. all we need to do + is tell gobject we're not interested in it any more, and throw + the pointer away. Alan Cox said so. */ + + /* Ooooh, look at me! I'm Robot101! I know Alan Cox! I talk to him + all the time! I'm sooooo special! --Sean Egan */ + g_object_unref(G_OBJECT(docklet)); + docklet = NULL; } docklet = egg_tray_icon_new("Gaim"); box = gtk_event_box_new(); icon = gtk_image_new(); - g_signal_connect(GTK_WIDGET(docklet), "embedded", G_CALLBACK(docklet_embedded), NULL); - g_signal_connect(GTK_WIDGET(docklet), "destroy", G_CALLBACK(docklet_destroyed), NULL); - g_signal_connect(box, "button-press-event", G_CALLBACK(docklet_clicked), NULL); + g_signal_connect(G_OBJECT(docklet), "embedded", G_CALLBACK(docklet_embedded), NULL); + g_signal_connect(G_OBJECT(docklet), "destroy", G_CALLBACK(docklet_destroyed), NULL); + g_signal_connect(G_OBJECT(box), "button-press-event", G_CALLBACK(docklet_clicked), NULL); gtk_container_add(GTK_CONTAINER(box), icon); gtk_container_add(GTK_CONTAINER(docklet), box); gtk_widget_show_all(GTK_WIDGET(docklet)); + /* ref the docklet before we bandy it about the place */ + g_object_ref(G_OBJECT(docklet)); docklet_update_status(); docklet_update_icon(); @@ -338,19 +351,34 @@ return NULL; } -static void toggle_queue (GtkWidget *w, void *null) { - away_options ^= OPT_AWAY_QUEUE_UNREAD; - save_prefs(); +void gaim_plugin_remove() { + if (GTK_WIDGET_VISIBLE(docklet)) { + docklet_remove(); + } + + docklet_flush_queue(); + + g_object_unref(G_OBJECT(docklet)); + g_signal_handlers_disconnect_by_func(G_OBJECT(docklet), G_CALLBACK(docklet_destroyed), NULL); + gtk_widget_destroy(GTK_WIDGET(docklet)); + + debug_printf("Docklet: removed\n"); } - + +static void config_close() { + configwin = NULL; +} + void gaim_plugin_config() { /* This is the sorriest dialog ever written ever */ /* It's a good thing I plan on rewriting it later tonight */ GtkWidget *button; GtkWidget *vbox; - if (configwin) return; + if (configwin) + return; GAIM_DIALOG(configwin); + g_signal_connect(G_OBJECT(configwin), "destroy", GTK_SIGNAL_FUNC(config_close), NULL); vbox = gtk_vbox_new(0, 6); gtk_container_add(GTK_CONTAINER(configwin), vbox); @@ -358,22 +386,10 @@ button = gtk_check_button_new_with_mnemonic("_Hide new messages until docklet is clicked"); gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), away_options & OPT_AWAY_QUEUE_UNREAD); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_queue), NULL); + g_signal_connect(G_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(docklet_toggle_queue), NULL); gtk_box_pack_end(GTK_BOX(vbox), button, 0, 0, 0); gtk_widget_show_all(configwin); -} - - -void gaim_plugin_remove() { - if (GTK_WIDGET_VISIBLE(docklet)) { - docklet_remove(); - } - - g_signal_handlers_disconnect_by_func(GTK_WIDGET(docklet), G_CALLBACK(docklet_destroyed), NULL); - gtk_widget_destroy(GTK_WIDGET(docklet)); - - debug_printf("Docklet: removed\n"); } struct gaim_plugin_description desc; |
From: Sean E. <sea...@us...> - 2002-09-26 15:23:34
|
Update of /cvsroot/gaim/gaim/plugins In directory usw-pr-cvs1:/tmp/cvs-serv7945/plugins Modified Files: SIGNALS Log Message: A long annoying patch by one Robert McQueen. Index: SIGNALS =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/SIGNALS,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- SIGNALS 16 Sep 2002 08:35:14 -0000 1.31 +++ SIGNALS 26 Sep 2002 15:23:30 -0000 1.32 @@ -346,14 +346,14 @@ 'c' is he conversation being closed. -event_connecting +event_connecting: struct aim_user *u This is called when Gaim attempts to bring a user on-line. The - boolean u->connecting is set to true, and a global counter + boolean u->connecting is set to true, and connecting_count incremented. The attempt can end with event_signon or event_signoff being called, depending upon whether the attempt was a sucess or a failure. In both cases, u->connecting is set to false and the counter decremented. - 'u' is the account being connected + 'u' is the account being connected. |
From: Sean E. <sea...@us...> - 2002-09-26 14:26:14
|
Update of /cvsroot/gaim/gaim In directory usw-pr-cvs1:/tmp/cvs-serv22189 Modified Files: ChangeLog Log Message: Added entry ChangeLog changed. Index: ChangeLog =================================================================== RCS file: /cvsroot/gaim/gaim/ChangeLog,v retrieving revision 1.547 retrieving revision 1.548 diff -u -d -r1.547 -r1.548 --- ChangeLog 26 Sep 2002 07:37:51 -0000 1.547 +++ ChangeLog 26 Sep 2002 14:26:11 -0000 1.548 @@ -69,7 +69,7 @@ * /topic with no argument displays the current topic (Thanks Mark Doliner) * i18n fixes (Thanks Matt Wilson) - * Changed Ctrl-C color removed + * Removed Ctrl-C binding for color * Docklet plugin--replaces the old GNOME applet. You'll need the Panel Notification Area applet for GNOME 2, or the patch from RedHat for KDE 3. (Thanks Robert McQueen) |
From: Sean E. <sea...@us...> - 2002-09-26 14:06:52
|
Update of /cvsroot/gaim/web/htdocs/images/screenshots In directory usw-pr-cvs1:/tmp/cvs-serv15836/images/screenshots Added Files: buddylist.png buddylist_t.png Log Message: I had added this screenshot a few days ago, too. --- NEW FILE: buddylist.png --- PNG ò¦â xD@\ÚD ÃsByi²¶b(æÿ&fر4ºÌÀ23ú²åyÒTÇþ ÜT,ñ*Ñ Ø©¥Æ{Ö;oq\$ N ˱Ω¸ Õé¤:±D¼Åx·$ØQmÜ¥Ö@ÕJB®1X< 1iU Y0ÊWª$îqÇ"Ù Ñ^0Y0°Xs¬D§J¬©}¹º<X¬9ñ5âN%X©ÙP`ù®1?lLÃ`*äÑ7×G&ÌjôNÂxÀû0åIUUUÒiÛ·Òg³1kI» @ðNËSÁ`ùb*,_Lå©`°|1/¦)°|Ëÿ¡]ô°LºQéä¶d']À¨<B@äÝØhÁËÉ÷^¤I"çgJ>ªÄj± 0©Æx&õõº¦¹©b=v]Öéôªgju:½ëº;ËCüL´ã ë õBï]o:)TªZϧé¥fÕ3µ;Õä¾)ýx #I±¼-Ü7ÜÞÛ;ÞQ%©ì?k§6R¦ýnâ¦ÇqÞ1|ÅIo¢Xóëf²0ì1Èi1µöþÃqð~áóác^` ÛCÈî:¸oxìïÖnÕqÓ\ÇëVÀ´¿ñ¢+ä8*ULØÔQVøAÙÅ&¦yphª£ ê·éźm:öñÈc ÙЬÛJkµ:¦±Q»-9\MöHÞº=Éé:h7ëØÇÉ]Ť£ó¾¡ÐäìlHü+F(}ÐfCƽß_îh©~öÚgtætPlLÅ/½öÝÏ*;HÞh7k<Ðé!×);[®]ø¾´ZlÅèd®×ÁwÏ×°M[¬I%_Ë¡vÛ kð!q`±m¯u¾£ë ÐDð!k=aë<jÉxH¤ùÕïç^4B1¤¾ÐÉ,®Ð ÷®ÏzÂÖývW1z²&)ÖÌé@k,Ìíæ©é)íVi_áo¥{ h.*4Q·¾ÎvÒ&Î-Èaþsý¿yÐFa7síÊ`Á{Ù]ËÕÖÞÒnÕ^Xþ´Û̦ààÇ1ÙPÕ+¿0 >õòïáÚ¦ÀÉ Kùüåßõ ^0Ybð`%`ùb*,_Lå©`°|1LÚtqM0òAZ¾ØSHËÄ©á%GÄTéLYlûbV æ åJ®ëù«ÖTKî{h,,À`VNÒ:°ÆÆÜ ëiÝÈMä¡kð#ML¨§³Z:ÁÊ-ö_õ´Ì"o±TªÚo'¾)[`Êlî¾°|1L ÉWæyJµxïúúÞïϾ<CÍæ¼ë{¿ß{×÷éK~ßjؾ=#jíVý½Þ"¹FBAÝo¼{#î±æÔ2Im _6î3-¼Cða ÙøÐß&z®®·:[-GÌîÂü)[Ç·J·nb·x>:|ÝÝÚnüW±ÆBi磯[ Ø<5{ƼÎ't\7Ü£,Êý|Ü«ìgìM/5_äSa7ñË«³2TªZù¿ìÛ#I¥ù`k$ì}êßý@³¡YõLmíO7$y§;xºdx¼,ó9/»ô;ôÔF*Ý{é;Ý×ûnoâà C"éÂãeidÜ7ÝI}ï÷wïL2HÐâ¾cS Äw-l_{Ó>£û¦Ûú;+BÞH[·'Yî&% ÊÊì¤ Ñ'@{Lò|T§Ûyç³Q©_çåaÌw¢YÂ=áÍÿZS-J¨1×õáÆF¦ÖÉËWPà·_ë}%CôUØÕ$l§º3tßpµîk)T»¶·»/¬%í¼ÞWf7 ¢ÿlçI¹êQϨÌÑè?Ûo9b¼ÝĤåæýjIþ{I ËSÁ`ùb*,_LS^òmbîRwS|wêuo¶Cm¦å[ùu°°l)³úfmÐë!65¬ÿ Ñ3Å%Xzì\C0/0çÎë <±+¦¬(ùØ)G¬!¼_E ÚòÝ÷YÙ,Úf²ô~Cqêý= ÞÛã nmuëël'm=?î pÿÙmµXù9^»Y;ð¡=]`,ÑmÖQÏfp¬%ot.JÖ@×A% ËSÁ`ùb*,_LSâàC ]»2è¸èýCÓåô~o1Oïû½BçígNu2õ¤}GO%®®RÕ òõ{½ã^!¾°Á46@÷;Ðy<X~v6ä8ïè?ïøï@ÓKͦ}FËQô}XTµµÂGZ`aOúÞïm?hNM¾"à»çk{À42Ý(fWèâTmðaÀzì¤0671ÍCTBöí;'ÿ:z ÏGëë & 饿Óït%yeYOEP¤èê%_óPÅ4Ó Éá Þ»>ë [÷Û]Âþtùäd°¶<ÑÃ>^ðÕkùmk~õ<mÌxÐn¥ïxïTU-åVu¿ "@ü7Þj©§³³¡¤¿tµå4)kxÙ0È{{Åw1 ßÉ<:ksÅ ëÐ&ß ZC(}ìíQW²fCKp:Lõ¢»ø1ghr¢ÅØÂÏà Ô9WzÔ:fYk3D AÌñál(Âq %ïÈÇA¹ÓÂ`)§nL~`ùb*,_Lå©`°|1/¦ÁòÅT0#ߤ'ÆáHX§Ó÷í/Hm ¥ô&ó <n~µÙ|Ðl97Kp²µA)G_Ñ[8ÉyXÞ8<n24Y´+é°ÎÁK¬¿"<º0é(|UªÚùMô¼ ¤Ý¯ÌÂú×¼ôï» ÝÎãÃËÒ ¥sØJçàHù{taÒQ6¶ïçàó Âæ¿æÔÈMqM/5[Só²8.:íçìµ ËQK÷ï²kµì1xÇå;îKZý(0òñ0ó ¢°·xïúõ0ŦllßÝ@P03*¼R©$´:{®ëîÖf\æÜÎa+W:ÊÓ£Ë7y½çýWþ5ß(l¦Þ] ^ 7ÓΦ÷H{V:t^5@ÙnÓ B¨ÿGà«ÀÀö¤áYæf5)ãàG?ý`ùv+=ù×ÙÙÐÄDÀtÀ$æÞ!I¸Ç@J i å_øÐѺè7¡Ýªõ=ðéw,¸¾!·ÉJª?1JZðA å·mÝÉc³Ì!ÌêS²Ñwv6$ظ4wö?GÓÀMqV5Ó p cÖ#¶à ËSÁ`ùb*,_Lå©`°|@y.B÷Þõõ½ß}y4 ÍòeúÞï÷Þõ¬_ dõäëº:Ülh²²5½Ôì¼<üGÊB\M¦z¦¶¾^×öZ÷sïJ*¬ ¼{öw½µ°T? £à¼Å9tÕÕ}*ÅáL¥µC\fC!ãõÄ µ45½ôßq /m'ÒæM¨!Î9íüÈ)¼LòÍð²Á{{AÞÛÞ=ùò"îÇyÇðçl(ärÚ?°'ªÄ}Ãcïôl(tíÊ ã¢SwöçZLm ;&&¡ÉÉÞ¾^ÿÒf¨wÜkÜk¹©.zÎËC¼å½ MýIìÓÈxïù|÷}ú]Ë>ÅtåEPeÓ GßÃÕ ÷|¹£ý¥>ø ÛbjK 5$û»ußÒM¼`Yóz_Á-§9Ó>cÏ»}w<£éZó|>>8ä\ Ìh|»GL§%¤|c^ÈgøµÁ;îVqÏ)S^@»YxÐ?¿P ð`ÙW%ß=èu±ÚDÈuÊÎã üvâëzZ7rÓñ£á(^ó°!Iåà¥Û©Ìfû+ñ¦-low^ÈI»Å£,\51ÙÍè?Ûß)öyÔ3*s4þ³ý#,ï2W,ßUbõÍ0æ}Áu&ÿeX}°ñ©`°|1/¦ÁòÅT0eqëÖÄ,ø¨Üñæv#yÊ)ýèÛÄ4AáOÔqAXýU&å¹®e Sbù Ú_Ê(¸$ÊðÝó5¿Ú"øçé¶ëmov©ò þyö3§=¾q½gúÛ_·Lþubò¯uÏÖY%;ôfïÙ}ɧ²yª*XôB*4qè{¿·ó¨E\¾í¸èÜn-G-ºí;Mû%\ ^h{£ûtÓÈv3 ] BZO ²¼40rcDÈÒ·Ùmh6¶xny5ö1ÛÚnÝ<--'Oô°ÜÚZ~ÃBömÙ¬PTªÚß2k¨$ã!uFlv6ä¼0`=fÝð³z èy=ªÜ3)aÉx¹5«ÞJ?úvÜ6=¯<0"ÉSì7ÒÉ \×=cãö3½ôFÅ7Åùü¾¡ËC9÷ÌlAl®Þìl(?¥~ô#Á'±À4ÁÍQHÑ ËSÁ`ùb*,_Lå©`°|1̪Æ÷M\ßYW-®ÅÁ}Ãã¸î'¸Çjê4ýã>ÌY ¢¸òMZÜõV§aQ»ö?P®þÉ=Xn+gêu:C£Á²ßBÑv6Ì#Çr¾û¾î÷»'bw ÀòMÒ«éÉ|ÐLo¤Hö 8pÓËJs( B§ /2 ºººR÷¨2¨×é,,ôÙÁùpvV»IKjHj#U¯Ó[Á ¯JUÛ~ÀdÜob^HÈ\_tE°uòíÎcG® _+ù8'÷ÚðV«^¼¾¿¼cå¨]z|òÑ*X`¤ .ðù°Åÿ ¿ÍÔ@\B»îë.õI X¾B¤ËÍÎ Ænða@·mñ&# ¯'Eyêæ»ïÓoÓ- ½q@¤ãý~õwª-ÕÀÖõVgc#S p:D"¢ÙǬï¾Ï²?9ÞW)¼|"eÿ#4|ÝeÿâÁ¢j-'J¼õ,ѬWW'¼u4ã¦Ñ9æx4Í-ûQvßXQ¹\FÜè\4<Ãq ô£ °ºß41R¾÷ááÈ>`]ÝÂ~(©pE&áÁ bî&~ö*Umçaz=Y Õíû %â¦Âô& .|Åq"ér;û/ºÎþGb躨)Í<;j{cðÒiBAh·jíçN÷qö®v[ãG.¿P*í=T©j?ýËÂÓ^ÏÇËJ¸"äIje<n<Ôë¦öõ{ôWp±F_ÉË-ìT©j)µÅ ®àÕ/ .UÓù!ØÄã®z£:ò$â»å«ÔÑW¥ªýôÿÕ,.]O§K> Nکߣ/¬vaõGßWþwi³¥cv6ô£ÿWâ.3±Àêöh$Óz®àÚ UoyJ¡<{µö(Ƽ/vǬErÂòÅT0X¾ ËSÁ`ùb*,_Lå©`°|1/¦ÁòÅT0%XqV¼wWÕÿST¤|½wÝ¿1ZKÝLé©<ù ÚývâëRw¤¬÷Z-'רj¤ÔÅ«ØöÅT0X¾ ËSÁ`ùb*,_Lå©`Fùþ¼þ¹òl½´«DVcÞw\á%?øsÃ?¯N,¸-W¿ÐnÖv²/ò½|g0"¹É×û¹·ç>ö [·¾ÎrÔb>ÐSEÕqwN§,?Ü7ݶݣ\[,FÇf²5BMR½ ¸ÙGÁLSNñéKõ(øU°ãµç~ñÜÎíMÖ#6q¿8¦ ?¯Nø«K$I#3Ôz$÷ø¿ ¶½Öñó_<·S¿¬u¡cm¦çt;Û¾ÓzL¢c ê({¿]» v~´ã[¥ªõÝ÷µ:jº¡ö§ÚLüL4©ñ¡JU|h3µnØP_[»¡íµðÌRBÇE§®^×üR3WJÁ`ÐÖÕm>dþ2ðõ¨w¤õ@Kja´ûvâkáO¦6GüßÖ!¶Í¦õî7»-Ìß¾ýl4±õà#Ööf·å°ùKß/ÿr§u¿DÇ<·<ÞqïûÚàÐç¦Ç}sa¡íXVKßñÞñv¿Õí»_ôìÁåI¶òußpµ'í4jwß\ ãzáCG{»iò¯ÿý5ýlùܪÞ3ýí¯ÿýåä_¿®ûIÝÉc=Â~×u·÷¶wô³ÑOFW®ëÃYöP;QÇyg÷ÉÎ] Ȳ¡!ϼ7BÏýbçÎ_5yo{ Èæ,Çyg÷[ »@d غ㣻§»aWAAHvl誫ëÝÓä: AZ8ýìcÙÕHYC666t,b `V&b9Ün;a¤6ÕsO¸¾3ý×®fsbêì`ö Ö×HÚHYµ»ÿ5 ¦dÅø¸·Ô]ÀJ¯ÕR^é Ë5öÌB´ò-óOÃgÉ|£Ñp'òÅÚÅHȷ̵ÐCÌê,_<°a*<q©`°|1/¦Q --- NEW FILE: buddylist_t.png --- PNG 0C0HÓ4ERCÏç^¯¶.ÿä'?eÿ¬V HÇ}8`CWDÀá "M#ªH~`ü8CP§8"(%Ñ6䶺$ vÜâÄù\`ÜhÆ¡i4¨1pâóyû³nBà Pú(aldÙMxt|´huU+*®ïÞ½ý«ªº O<þ%!6°Va$Á`(SõàÁìzùÁP0Ìc_Ù rÑ4ÍÊSÔÊ9°³¢ÆÚNëøX£QK$?7· ¬ékÄ[öïß{àÀþööÎÜܹ<²±énZZÉÔÑD××7dd¤úÕ¹ÚÛ;ãâbµZMeeUaá>§Ó%IÇÆÆ1¢èþ}{wVW ïÝkøXxƶêê[ry¤×ëýÝï~/sr²½^_0ÌÉÉê4uäçíª,koi¹\^Vv.-- ½ÖDë[¯ëvàÃÑ@3 8;VÚa2åçíNL4Þ¼U)Û[P°SZ®bejYUu¼^û &QtÝ>Üãñ²3>ÏãmvJ ÷î)èéí ¹¼»§¯§§_Vuuõ´ÜkM0 EQö©EQA [è´îµÜ¬¨x{lìíÉv x<r ûûe2Xl·;Ý.·VÍápª«o #Z,ðjX,ÊHO»t©<6..==U( Â-M]·Ä£eÚ¹¹ñþðG$511)BLL»åN¨#99Q¡P<]ôùàñCÃÉI©4M Çñéé ö¸=·o×ú¼¾öö (&I2ü ½RvnK*l¡ V[ݤKÙ38t Tø.r%ѽIîÛ{éRyRR¢T*q8FcüÔÔ4I³só Æø>ÅÂç vçåÞihVGgd¤µwt¶µuäçíNIIb ¹99s`ð¾PÀg0z¤RI\¡¿prrê`IÑNjºÂfoi²¨´Þ ùfßuR9s²¸ø |ÃB¡N¯+(ÈGäÅoünM[ ¢¢¢\.wbaËËC!"33½¦¦6ÞoÐë]. hOoߢ@(Ø¥ÇÚN+77ÇñÕSâ¢×«ø<~RRIR+¬Í³L&åñ°¨(%+i·Û/_¾* O;j6Yh ]¹¹<ottE¨(%.]-,ÜûÙ§.WäïRE)Íf+¢ìÉ´e»](\9V lËË==½`°ÓÔ-÷ìÉãóø%%EMMÍ11Ú¦¦¦-mÍomXÚ^*ÙXÆï÷ïÚµrLfvvnµ_Û3ó`6++cu¥/³~ª¶ "%5Y§ñ©©©(ìÞûgNgwOGwOG__A<2ÆßB'&&ýä'ù/¿|ìàÁ15LÓD«kjêõz]JJZvºÜéiá#è×ÖÖVPWS[7;·À]c_SR'&¦uº½^Ïår÷ïÛ³l·'ãßVbffzqq 8PÜÒÒ¼e Q¬¼¾d·WHÒÃ'^ sînIéé[UW>üxcÕíÚ;IÉ)³s³ssEÖÖ=eÕv] cc 28oWNßààÈÐPla~~>xz7î÷ûRSS].w[»i||Êí²¬öåµ1¿úõ¯¯VU õíRHÚ¾x{=HäbÜûÃ÷»MÝ'NxªÜ¾ÃRdnqN§Ñâfgç)ÞL%{þ@B|²ÝáÔh¢>ÿüù´ãáÃÔ×7È£"$jttb¤y`()9i3ï 0@ xåü+ßýþwQ¥§ôÁ)·ëÝwÿ±¾éNÕôA(àINNÜ@%"""##5Z£êèê4õa`ãÇ |
From: Sean E. <sea...@us...> - 2002-09-26 14:06:52
|
Update of /cvsroot/gaim/web/htdocs In directory usw-pr-cvs1:/tmp/cvs-serv15836 Modified Files: screenshots.php Log Message: I had added this screenshot a few days ago, too. Index: screenshots.php =================================================================== RCS file: /cvsroot/gaim/web/htdocs/screenshots.php,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- screenshots.php 26 Sep 2002 10:22:05 -0000 1.1.1.1 +++ screenshots.php 26 Sep 2002 14:06:49 -0000 1.2 @@ -41,15 +41,15 @@ "names? Yup! It notifies you of new messages." ), - "jabber.gif" => array( - "WIDTH" => 212, - "HEIGHT" => 375, - "THUMBNAIL" => "jabber_t.gif", - "THUMBWIDTH" => 75, - "THUMBHEIGHT" => 133, - "TEXT" => "This one is pretty crazy. It's a gaim " . - "buddylist doing many protocols. Namely: Jabber, Icq, IRC, " . - "Napster, Yahoo, and AIM." + "buddylist.png" => array( + "WIDTH" => 234, + "HEIGHT" => 363, + "THUMBNAIL" => "buddylist_t.png", + "THUMBWIDTH" => 80, + "THUMBHEIGHT" => 124, + "TEXT" => "A shot of our in-development GTK2 port doing " . + "a bunch of protocols--namely AIM, Yahoo!, IRC, Gadu-Gadu, " . + "MSN, ICQ, and Jabber." ), |
From: Luke S. <lsc...@us...> - 2002-09-26 13:05:20
|
Update of /cvsroot/gaim/web/htdocs In directory usw-pr-cvs1:/tmp/cvs-serv27963 Modified Files: faq.txt shortcuts.php Log Message: my attempt to recreate the lost information in the faq. also removed the control-c entry from shortcuts, reflecting its removal. Index: faq.txt =================================================================== RCS file: /cvsroot/gaim/web/htdocs/faq.txt,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- faq.txt 26 Sep 2002 10:21:59 -0000 1.1.1.1 +++ faq.txt 26 Sep 2002 13:05:11 -0000 1.2 @@ -64,7 +64,9 @@ Q: I have a question about GTK2. -A: Don't ask untill the changelog says it works. +A: Our GTK2 port is in progress, the 0.59.x release series will be entirely Gtk1.2 and entirely devoid of new features. +0.60 will be the first release with Gtk2 supported, and will no longer have support for Gtk1.2. We are not sure when we will +be finished with this port, but if you want, you can use cvs to try it out. !SECTION Using Gaim @@ -125,7 +127,7 @@ Q: Will Gaim save my buddy list to the server? A: Gaim already does this in MSN, Yahoo, and TOC. As of version 0.53, -this support exists for Oscar as well. Improved Jabber support is being +this support exists for AIM via Oscar as well. ICQ and improved Jabber support is being worked on. Q: Can Gaim import my buddy list? @@ -213,7 +215,8 @@ Q: Why am I getting disconnected when I try to connect to IRC? A: You will be disconnected if the nickname you chose is already in use on -that IRC server. Try again with a different nickname. +that IRC server. Try again with a different nickname. In 0.60 or latter, Gaim will +prompt you to change your screenname in this situation. !SECTION Jabber Protocol @@ -311,6 +314,19 @@ on-line. </p> +!SECTON MSN + +Q: I'm getting lots of "Already in Opposite list" errors on msn, why? + +A: The reason this happens is because you have a screenname in both +your permit list and your deny list. There are two ways to fix this: the correct +way and the quick way. The correct way is to go to tools->preferences (tools->privacy +in 0.60 or latter), and manually scan the list and remove the duplicate entries. The +quick way is to remove the msn .blist file from the ~/.gaim directory. This will have +a side effect: the msn server stores the screennames of your contacts, but does not +store what group they are in, so you will have to re-sort your msn contacts into the +appropriate groups. + !SECTION Scripts and Plugins Q: Where can I find documentation on writing plugins and Perl scripts? @@ -386,16 +402,18 @@ Q: Will Gaim be ported to Windows 95/98/Me/2000/XP? -A: When GTK+ 2.0 comes out and compiles well against <a -href="http://www.cygwin.com/">Cygwin</a>, and Gaim has been ported to it, Gaim -should work. It will not happen before GTK+ 2.0 is ported to Windows, though. +A: Gaim has released a Windows version. Right now it is an "alpha" release, the +most buggy type of release a project can make. For some people it works very reliably, +for others it is unusable. -Q: Will there be a QT dock app? +Q: How do I put Gaim in my Panel, or dock Gaim? -A: Right now Gaim, is done entirely in C and GTK+, so a QT dock app is not in -planned. You can either write a patch to do this yourself, or wait until the -core and UI of Gaim are split. A QT UI will probably be considered at that -time. +A: In 0.59.x and below, Gaim only has support for Gnome's panel. Once 0.60 is released +Gaim will have replaced the gnome-applet with a docklet that conforms to the standards at +<a href="http://www.freedesktop.org/">www.freedesktop.org</a>. KDE supports this in the current cvs +(what will be the 3.1 release), as does Gnome. Gaim will insert the docklet in any System Tray +implementation that conforms to these standards, so feel free to write one for your window manager +of choice. !SECTION Misc. Questions Index: shortcuts.php =================================================================== RCS file: /cvsroot/gaim/web/htdocs/shortcuts.php,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- shortcuts.php 26 Sep 2002 10:22:05 -0000 1.1.1.1 +++ shortcuts.php 26 Sep 2002 13:05:11 -0000 1.2 @@ -120,10 +120,6 @@ <td>Choose Font</td> </tr> <tr> - <td><b>Control-C</b></td> - <td>Choose Color</td> - </tr> - <tr> <td><b>Control-<1-9></b></td> <td>Insert Smily <font color="#0000DD">*</font></td> </tr> |
From: Christian H. <ch...@us...> - 2002-09-26 11:10:38
|
Update of /cvsroot/gaim/web/htdocs In directory usw-pr-cvs1:/tmp/cvs-serv24169 Added Files: ChangeLog Log Message: Forgot to add the ChangeLog. --- NEW FILE: ChangeLog --- Gaim: The Pimpin' Penguin IM Clone thats good for the soul! version 0.59.3 (09/14/2002): * Reversed patch that accidentally caused Yahoo not to connect--for implementation reasons * Changed "color" binding to Ctrl-K. * Unaliaising a person in the "Online" tab will show up in the "Edit" tab as well (Thanks, Jason Willis) * Internationalization fixes, esp. with UTF-8 locales (Thanks Matt Wilson and Ethan Blanton) version 0.59.2 (09/09/2002): * Japanese translation updated (Thanks, Junichi Uekawa) * Won't crash when you set your MSN Friendly name to an empty string. * Default manual browser command changed to reflect the fix in 0.59.1 * Fixed the non-manual browser settings which were broke in 0.59.1 (Thanks, Chris Blizzard) * Improved MSN internationalization (Thanks A Lee) * Smiley lookup will search for longest match for smilies like :-(( (Thanks Eric Melski) * When an IM image is clicked, don't open the browser (Thanks Ari Pollak) * Prevent a possible crash in unhide_buddy_list() (Thanks Ari Pollak) * Fixed a compilation problem on systems without iconv. * GtkIMHtml can be set to render font sizes as point size or AIMish relative sizes -- no more huge Yahoo fonts. (Thanks Ka-Hing Cheung) * Fixed a bug with regard to Jabber resources (Thanks Nathan Walp) * Fixed a possible segfault when signing off Jabber (Thanks Craig Boston) * Word-wrapping on mail notification text (Thanks, Andrew Molloy) * Strip trailing and leading spaces from MSN/Yahoo names (Thanks, Arun Tharuvai) version 0.59.1 (08/25/2002): * Created a gtk1-stable branch for GTK+ 1.2 bugfix releases. Development will continue in our main branch in GTK+ 2 only. * Fixed a security bug in the manual browser setting (Thanks Robert McQueen) * Now using libiconv for better i18n support (Thanks Junichi Uekawa) * Will work with Perl 5.8 (thanks, Timothy Lee and Dan Colascione) * Fix for HTTP proxies (thanks, Ethan Blanton) * Read proxy environment variables. (thanks, Christian Hammond) * Use the pretty gaim.png for our menu entry. * Added support for gettext 0.11.x. version 0.59 (06/24/2002): * Hungarian translation added (Thanks, Sutto Zoltan) * Swedish translation updated (Thanks, Christian Rose) * Spanish translation updated (Thanks, Alex) * Traditional Chinese translation updated (Thanks, Paladin Liu) * Czech translation added (Thanks, Honza) * Polish translation updated (Thanks Przemyslaw Sulek) * Squashed a bug in buddy right-click menu handling that crashed Gaim. In the process: found and eliminated some memory leaks. * Fixed a significant applet leak * Can now change Jabber password on server (Thanks, Nathan Walp) * Certain types of Jabber presence errors no longer falsely show a buddy on-line. Instead now a "broken light-bulb" icon is shown and the error status is available via "Get Away Msg" (Thanks and a tip o' the hat to Christian Hammond for the graphic) * Conversation struct has pointer to toolbar (thanks Brent Priddy and Paul Miller) * Zephyr fixes (thanks, Arun A. Tharuvai) * Aliases in buddy ticker * Perl scripts can play Gaim sounds (thanks Andrew Rodland) * Internal sounds can be played by commands (thanks Lex Spoon) * Auto-login item in applet menu (thanks Chris Boyle) * Fixed MSN "Unkown Error Code", "Already there", and "Already in opposite list" errors * Changed "Play sound" button to "Mute" button * You can now have "reserved" chars in IM and proxy passwords * Jabber now has typing notification (Thanks, Nathan Walp) * Improved support for Jabber resources (Thanks, Nathan Walp) * Fixed problem with Gaim crashing on non-ASCII Jabber buddy aliases (Jabber "name" attribute) chars (Thanks, Ho-seok Lee) * Plugged memory leaks in Jabber plug-in * Fixed problem with Jabber away status not being propagated to conference rooms for jabberd (server) v1.4.2 and above * Chat room buddy lists are now sorted independent of case * Added capability for protocol-specific edit buddy menu entries * Can now remove a Jabber buddy roster item from the server entirely * Gaim can now handle messages from Mac ICQ and Miranda ICQ (Thanks, Mark Doliner) * Added Mozilla to browser options and changed KFM to Konqueror. * Can now set the server and port for MSN and Napster * MSN Internationalization (Thanks Felipe Contreras and countless, countless others) * E-mail addresses are no longer truncated when there is a '.' at the end. version 0.58 (05/13/2002): * Bulgarian translation added (Thanks, Igel Itzo) * Traditional Chinese translation added (Thanks, Paladin Liu) * Better applet transparency * Option to raise buddy list on signons/signoffs * Formatting of incoming MSN messages * Get Info from menu multiple-account-aware (thanks Brian Bernas) * Hide and unhide functions for the filectl plugin. (Thanks, Ari Pollak) * Added helpful stuff to the Help menu. * Self-aliasing from the account editor. * Better selection in GtkIMHtml (Thanks Ben Miller) * A warning when your OSCAR buddy list is too long (Thanks, Mark Doliner) * ICQ status messages in OSCAR (Thanks, Mark Doliner) * Play sound when your name is said in a chat * Approval dialog for Jabber when somebody wants to subscribe to user's presence. Also gives user the opportunity to add that buddy if not already on the user's buddy list. * Jabber "Change buddy group" roster synchronization now works again. (This was unknowingly broken when the "out-sourced" Jabber libs were upgraded in 0.56) * Invalid Jabber I.D.'s no longer crash Gaim. User now notified with pop-up's. * Jabber Buddy sign-on time support, added in 0.57, removed until and unless and inconsistency can be resolved. (Thanks, Nathan Walp) * Bug-fix for potential buffer overflow in Jabber plugin. (Thanks, rwscott) * Tempfiles used for secure MSN/HotMail login (added in 0.57) are now themselves created securely. * Secure MSN logins (added in 0.57) no longer blow up on Solaris. * Timezone support improved. version 0.57 (04/25/2002): * New authorization method for Yahoo! * Polish translation updated (Thanks Przemyslaw Sulek) * Jabber will tell you when your buddies signed on (Thanks Nathan Walp) * Danish translation added (Thanks, Sarauw Hansen) * Finnish translation update (Thanks, Tero Kuusela) * Japanese translation added (Thanks, Ryosuke Kutsuna) * Jabber improvements (Thanks, Nathan Walp) * More keyboard shortcuts * event_chat_recv takes char**'s, and event_im_recv takes a *guint32 for flags * Secure hotmail login for MSN (thanks for the tips, Scott Werndorfer) version 0.56 (04/11/2002): * German translation update (Thanks Karsten Weiss) * Shell-like send history binded to Ctrl-Up and Ctrl-Down * Russian Translation Updated (thanks Grigory Bakunov) * libjabber upgraded to most recent stable version * Buddylist looks a little better * Fixed MSN privacy settings * Group deletion fix (Thanks Mark Doliner) * Alias/Group syncronization for Jabber (Thanks JSeymour) * Fixed broken signal handling in gdm-started GNOME sessions (Thanks Jim Seymour, Vann, Robert McQueen) * Oscar group syncronization (Thanks, Mark Doliner) * ICQ Authorization via Oscar (Thanks, Mark Doliner) version 0.55 (03/29/2002): * Jabber improvements (Thanks Jim Seymour) * Various sound cleanups (Thanks Robert McQueen) * Login process shown in single window (Thanks Michael Golden) * Can reorder your accounts in the account editor (Thanks Luke Schierer) * Updated Dutch translation * Shows "mobile" icon for Oscar buddies using mobile devices (Thanks Mark Doliner) * Updated Polish Translation (Thanks Przemyslaw Sulek) * Fixed bug in MSN smilies that crashed PPC (and other?) platforms * Updated Spanish Translation (Thanks Amaya) * Updated French translation * Updated Finnish translation (Thanks Tero Kuusela) * HTTP Proxy settings now HTTP compliant (Thanks Robert McQueen) * Speling corections (Thanks Tero Kuusela) * Oscar list icon fixes (Thanks Mark Doliner) * Oscar idle times work again (Thanks Mark Doliner) * Protocol icons on Edit Buddies tab (Thanks Christian Hammond) version 0.54 (03/14/2002): * Compiles without GdkPixbuf again * GtkIMHtml will refresh when you set a new GTK+ theme * Improved Yahoo! typing notification (thanks Brian Macke) * Prompt to authorize MSN buddies who added you while you were offline (Thanks Jason Willis) * Option to globally disable Buddy Icon animation (Thanks Luke Schierer) * Numerous bugfixes * Yahoo! will tell you when your buddies are playing Yahoo! games and give you the ability to join them * Yahoo! can receive offline messages * IRC can do DCC chat. * IRC will convert HTML formatting to mIRC formatting. * Buddylist tab placement option (Thanks Jason Willis) * Protocol specific smiley faces * Italian translation added * IM Image sending version 0.53 (02/28/2002): * Updated Polish Translation (thanks Przemyslaw Sulek) * Slovak translation added (Thanks Daniel Rezny) * Minor bug fixes re: queued away messages * Better buddy icon transparency (for real this time ;-)) * Ability to change formatting of Oscar screen name * Better selection in HTML widget (Thanks BMiller) * New icons for ICQ (Thanks Kevin Miller) * Editable buddy pounces (Thanks Jason Willis) * Server side buddy lists in Oscar (Thanks KingAnt :-)) * Fix for the chatlist plugin * Typing Notification (AIM Direct Connect, Yahoo, MSN) * IM Images (Receive Only) * Prettier GtkImHtml selection version 0.52 (02/17/2002): * Better buddy icon transparency (thanks SeanEgan) * Updated Polish Translation (thanks Przemyslaw Sulek) * Fixed a little bug with connecting via proxy (thanks for reminding me of this, Manish Singh) * Updated Simplified Chinese Translation (Thanks Rocky S. Lee) * Updated German Translation (Thanks Karsten Weiss) * Yahoo! Messenger works again * MSN Works again * Can register a new user with a Jabber Server (JSeymour) * Can now set Jabber vCards (JSeymour) * Jabber vCards are now shown in their entirety (JSeymour) * Various jabber bug fixes/enhancements (JSeymour) version 0.51 (01/24/2002): * Arrow buttons in log viewer and some other dialogs work (thanks Ben Miller) * Option to only send auto-response while idle (thanks Sean Egan) * Control time between sending auto-responses (thanks Mark Doliner) * Should be able to sign on to Oscar using Mac OS X (thanks Fingolfin, Vincas Ciziunas, et al.) * Finnish translation added (Thanks Tero Kuusela) * Updated French Translation (Thanks sebfrance) version 0.50 (12/14/2001): * Updated polish translation (Thanks Przemyslaw Sulek) * Able to import GnomeICU contact lists * Galeon as browser option (Thanks Rob McQueen) * IRC /list, /invite (Thanks Sean Egan) * Added swedish translation (Thanks Christian Rose) * Option to have IMs and Chats tabbed in same window * Finally put the lagmeter plugin out of its misery and removed it. (/me dances on its grave.) version 0.49 (11/29/2001): * Can compile against GTK+ 2.0 (version 1.3.10/1.3.11) * Confirm before removing buddies * Updated Russian translation (thanks Grigory Bakunov) * Updated Korean translation (thanks Ho-seok Lee, also for resized ICQ icons) * Updated Dutch translation (thanks Floris Eshuis) * Yahoo updates (thanks Brian Macke) * Jabber updates * Zephyr updates (thanks Arun A Tharuvai) * Gadu-Gadu updates (thanks Arkadiusz Miskiewicz) * Option to show aliases in conversation tabs * Option to hide windows after sending messages * licq2gaim.pl conversion script (thanks Arturo Cisneros, Jr.) version 0.48 (11/18/2001): * Right-click on links to open/copy URL * Yahoo changes * Oscar can send/receive offline messages in ICQ. Since the "real" ICQ protocol isn't working too well it's recommended that you use Oscar for ICQ. version 0.47 (11/01/2001): * Better font loading (pays attention to charset now) (thanks Arkadiusz Miskiewicz) * Better recoding in Gadu-Gadu (thanks Arkadiusz Miskiewicz) * Open Mail button for when you get new mail (Yahoo and MSN) * New buddy pounce option: Popup Notification * When adding a buddy, the groups list now updates when you switch accounts. * When creating a new buddy pounce, gaim now automagically selects "on away" or "on idle", if the user is away or idle. * Add Opera to the available browsers (thanks Brian Enigma) * Improved log viewer (thanks to Ben Miller) * When you are queueing away messages, double clicking on a buddy's name will cause the messages for that name to be dequeued. * You can choose which sound player you use at run-time (thanks Ben Miller) * When someone adds you to their buddy list, it asks if you want to add them as well (Yahoo, ICQ, and MSN) (thanks Nathan Walp) * Option to grey idle buddies (thanks Nathan Walp) * MSN Privacy Options * In MSN you can set a person's alias to their "friendly name" by right-click on their name while they're online. * IRC can do /WHOIS * The usual bug fixes and memory leak plugs * Added Dutch translation * Updated Korean translation version 0.46 (10/18/2001): * New applet icons (courtesy David Raeman) * ICQ works on big-endian platforms, e.g. sparc and ppc (thanks to Nathan Walp and Ben Miller) * Better applet icon drawing (thanks to Ari Pollak) * An extraordinary number of bug fixes * Updated Korean translation * Ability to stop animation on buddy icons, restart animation, hide certain buddy icons, and save people's buddy icons, all through a right-click menu * Event handlers in perl passed arguments as elements of an array rather than all concatenated as a string, making perl much easier to use (thanks Dennis Lambe Jr.) * Can pass an argument to timeout_handlers in perl (thanks Artem Litvinovich) * Redesigned Modify Account window (thanks Sean Egan) * Add buddy dialog now lets you select which protocol to add the buddy to * Pressing 'signon' on the first screen for accounts that do not require passwords no longer incorrectly displays an error message. version 0.45 (10/04/2001): * New plugin event: event_chat_send_invite * Major updates to the perl system (reread PERL-HOWTO and SIGNALS) * Major updates to event_chat_* events for plugins (reread SIGNALS) * Some GtkIMHtml improvements * Various bugfixes * Nick Highlighting in chat * Tab-completion for nicks in chat (thanks to Sean Egan) * Large internal reworkings * New Protocol: Gadu-Gadu, written by Arkadiusz Miskiewicz * Can choose buddy icon to send (for Oscar) * New Translation: Polish translation by Przemysaw Suek version 0.44 (09/20/2001): * More sane scaling of buddy icons (intelligently scale to either 48x48 or 50x50 depending on icon) * Have you ever had it happen where you cancel a login and Gaim starts using all the available processing power? I think I fixed that. * Temporarily removed Jabber user registration, which wasn't working anyway. * Added a spiffy Help button * Wrote a plugin for all those people who miss having the chat rooms in their buddy lists (chatlist.so) * Updated libfaim * Added drop down selection to chat invitation * Improved the look of the chat invitation dialog * Improved the look of the proxy preferences * event_im_recv and event_im_display_rcvd passed whether the message received was auto-response (see SIGNALS) * IRC fixes (largly copied from X-Chat) * Internal change to how preferences are stored * Other bug fixes * Option to hide buddy icons version 0.43 (09/06/2001): * Updated German Translation (thanks Daniel Seifert) * Can change friendly name in MSN again * Bug fixes * Auto-reconnect plugin has exponential timeout (i.e. it tries after 8 seconds, then 16, then 32, etc. up to 17 minutes) * Removed file transfer things from Napster. It didn't work well anyway. It'll be back eventually. (Does anyone even use napster anymore?) version 0.11.0-pre15 (08/28/2001): * MSN works again * Fixed a little segfault when images are links * Redid the about box again. * Fixed a nice little bug with the manual browser command * Oscar Unicode fix (Thanks John Matthews) * Added Russian Translation * Can select which protocols are compiled statically (e.g.: ./configure --with-static-prpls=oscar,jabber) * New plugin events: event_im_displayed_sent and event_im_displayed_rcvd. Use these to change messages after they're displayed (e.g. encrypt sent messages, or send auto-responses and have them display locally properly) * Updated French Translation (thanks sebfrance) * Can use Arts for sound (thanks Tom Dyas) version 0.11.0-pre14 (06/17/2001): * Fixed a segfault with Oscar's account confirmation (Thanks, Adam) * Updated the German translation (Thanks, Dominik) * Some MSN changes * Some HTML widget changes * Can specify hosts/ports for Yahoo (thanks Jeremy Brooks) * Many many bugfixes version 0.11.0-pre13 (06/06/2001): * Can view/set chat topic in Jabber (thanks faceprint) * The napster plugin no longer segfaults on invalid names and/or passwords. * HTML is properly stripped from away messages in protocols that do not use HTML. (thanks, faceprint) * Can view/set chat topic in IRC * MSN properly escapes outgoing messages * Much needed updates to the gaim man page (thanks, Sean Egan) version 0.11.0-pre12 (05/29/2001): * Fixed a funny bug with auto responses when queued messages are enabled. * Redesigned the Font Options preference page * Improved Jabber chat support (it whispers now, too) * Zephyr can do Subscriptions now (thanks to nsanch) * Auto-recon plugin got reworked * Lots of clean-ups * Some new pixmaps (Thanks, DennisR). * Fixed a segfault in IRC (Thanks Sean Egan) * MSN can now change your 'friendly name' (Thanks for the packet logs, aechols) * More IRC improvements [colors, etc] (Thanks Sean Egan) * Improved proxy options * Fixed a small issue with HTML not being stripped from log files properly (Thanks, faceprint and David Stoddard) * Can turn on/off Yahoo! Mail announcements * Can force messages through the server for ICQ (use this if you have problems sending) * Can receive buddy icons in Oscar (requires gdk_pixbuf, which GNOME depends on. If you --disable-pixbuf, it will disable this.) * Redesigned plugins dialog (thanks Mike Heffner) version 0.11.0-pre11 (04/30/2001): * Zephyr updates and additions, thanks Neil Sanchala (nsanch) * Jabber can send/accept chat invites (due to mid) * MSN has the option to notify you of new hotmail messages * Fixed a problem with ADD requests in MSN * Fixed a small memory leak with MSN * Moved MSN's spammy debug output into debug_printf's * Can rename groups/buddies in the Edit Buddies pane (thanks Neil Sanchala) * Some perl updates (thanks to Sean Egan) * IRC got the following slash commands: op, deop, voice, devoice, mode, raw, quote, and kick (thanks to Sean Egan) * MSN Properly handles URL decoding of 'friendly' names * Redesigned Preferences pages (design by DennisR) * Can select where tabs are for tabbed IM/Chat windows * Option to queue away messages while away * Jabber got good updates (from faceprint) * Oh yes, and Oscar works, yet again. (gee... that's what, 4 releases that have "fixed" it now?) version 0.11.0-pre10 (04/13/2001): * Many, many bug fixes * Can choose to not send away auto-response (thanks phzzzt) * Uh... Oscar works? For now? * IRC Plugin can do whois (right click and info) * IRC Plugin got away message support * Gaim blist to WinAIM blt perl script (courtesy Andy Harrison) * Sound on buddy pounce (Thanks Andrew Echols) * Can view all group chats in one tabbed window (same keybindings as for tabbed normal conversations) * More Protocol plugins: Zephyr (plugins/zephyr) (DON'T USE THIS unless you know what it is and why you'd want to use it) version 0.11.0-pre9 (03/26/2001): * Can register Jabber accounts (load the Jabber plugin and click Register on the login window) * GtkIMHtml handles themes (no background pixmaps though) (thanks decklin, mishan) * URLS Linkify properly in Buddy chats * Jabber compiles better on Solaris? * Gaim works with Oscar Again (Huge thanks to Adam Fritzler of libfaim) version 0.11.0-pre8 (03/23/2001): * Fixed a problem with MSN not detecting signoffs and buddy updates. * Implemented away options in MSN * Alt-[1-9] to go to [1-9]th pane in tabbed convo window * Jabber fixes, Oscar fixes (!), Yahoo fixes, TOC fixes * Can use Alt to access menu, and Ctl-char for certain actions (thanks baldnik) * Oscar blocking works (?) * MSN can see status of other users version 0.11.0-pre7 (03/16/2001): * Can build RPMs as non-root * New yahoo library (can use HTTP proxy) * Command-line arg to specify config file (thanks Jason Boerner) * Can view all conversations in one tabbed window (Control-[ and Control-] move left and right respectively; Control-Tab moves to the next unread, or the next tab if there are no unread tabs) * Tooltips on links work again * Can log system notices: signons/signoffs, awayness and idleness (thanks Andrew Echols) * MSN fixes * Applet fixes version 0.11.0-pre6 (03/06/2001): * Fixed bug with NAS support * Napster plugin is included again (Thanks for pointing out that it was missing, (Yan V. Bulgak) * Oscar can: search by email, request confirmation, change password * TOC fixes * ICQ fixes * Faster HTML parsing/rendering version 0.11.0-pre5 (02/26/2001): * Minor GUI changes * ICQ Alias problem fixed * Negative times fixed * Cannot create blank away messages/messages with blank titles * Can right-click Edit Buddies list to alias/add pounce/etc. * Ability to independently set accounts as away * Can use all away states for ICQ, Yahoo (N/A, Be Right Back, etc.) * Fixed hanging trees * Can close windows by hitting 'Esc' (optional) * Better HTML Widget * Can toggle timestamps by hitting F2 (optional) * Rewritten file transfer for TOC * Jabber got chat * Log Viewer (courtesy BMiller) * Can save conversation history * Napster can kinda sorta download files sometimes :) * You can activate IDs in Yahoo * ICQ upgraded to use icqlib 1.1.5 version 0.11.0-pre4: * ICQ upgraded to use icqlib 1.1.0 * An enormous amount of bug fixes * Even More Protocol Plugins: Jabber (plugins/jabber) Napster (plugins/napster.c) * Fixed a segfault with 'Ignore new conversations while away' version 0.11.0-pre3 (12/15/2000): * Away messages arranged alphabetically (Thanks Justin) * More GUI adjustments * Can optionally run command to play sound files * Icons for ICQ plugin (blatently stolen from GnomeICU) * Icons for Yahoo plugin (not-so-blatently stolen from GTKYahoo) * Optionally display warning level next to name in buddy list * Optionally ignore fonts on incoming messages * Command-line option to automatically set yourself as away upon signon (thanks bmiller) * Buddy list backups now stored in ~/.gaim/SN.protocol.blist (gaim will move the old file for you). Needed for when you have the same name on two different protocols. (Oscar and TOC share the same file.) * More Protocol plugins: MSN (plugins/msn) version 0.11.0-pre2 (12/04/2000): * Fixed a segfault with a bad util.c version 0.11.0-pre1 (12/03/2000): * Multiple connections * Protocol plugins: IRC (plugins/irc.c) Yahoo (plugins/yay) ICQ (plugins/icq) * Logs now stored to ~/.gaim/logs rather than ~/.gaim/SN/ * User configurable sounds * Scroll bar now functions properly in chat room user lists * X-Idle support added (thanks bmiller and bryner) * small change in the way away messages are displayed (Thanks Ryan C. Gordon) * Plugin system uses GModule now (improves portability, adds features) (Requires recompile and probably modifications of most plugins) * Perl got updates (reread plugins/PERL-HOWTO) * Spell checker now uses gtkspell * Auto-Away (thanks, yet again, to bmiller ;) * More buddy pounce options * Various GUI improvements version 0.10.3 (10/09/2000): * Segfault when viewing user info fixed * libdb problem fixed version 0.10.2 (10/07/2000): * A few fixes to the URL parser. * Better placement of smiley dialog * Improved log file readibility * Code cleanups (thanks kylev) * Fixed problem when closing away message box (thanks bmiller) * sprintf() problem on some systems * Various small bug fixes version 0.10.1 (09/15/2000): * Better chatroom logging * Oscar works again. Pay no attention to Slashdot. * gtkhtml handles background colours better. * A third conversation window display preference. * Better support for things like Sawfish version 0.10.0 (09/11/2000): * New Smiley Faces and Pixmaps added. * Smiley faces now properly wrap in the conversation windows. * Smiley dialog * Fixed 0-byte file segfault. * Borderless buttons (for that cool pop-up look) * Fixed some resizing bugs * Added Ctrl+{B/I/U/S} hotkeys to conversation windows. * Added Ctrl+(number) hotkeys to insert smileys in conversation windows. * Support for %n, %d, and %t in away messages. Thanks bmiller! * Background colors * Redesigned preferences dialog * Redesigned conversation dialog * Removed the Lag-O-Meter (Lag-O-Meter is now a plugin) * Socks 4/5 Proxy works * Buddy Pounces are now saved in .gaimrc * Buddy Chats are now saved in .gaimrc * Ability to merge gaim, aim2, aim4 buddylists. Thanks again bmiller! * ICQ-style aliases. This lets you change the name you see your buddy as. For example, if your buddy's SN is 'CouldntGetMyName', you can alias him as 'Loser'. * Compile with GNOME bits if available * Added GNOME Url Handler as an available web-browser * Added the S html tag. * Optionally Ignore TiK's Automated Messages * Option to beep instead of play sound * New icons for panel (depends on some GNOME pixmaps) * Perl scripting. See plugins/PERL-HOWTO for how to write perl scripts. All .pl files in ~/.gaim are autoloaded when gaim starts. * HTML widget is faster, more stable version 0.9.20 (07/14/2000): * More plugin events, more plugin features * French (fr), Spanish (es), Simplified Chinese (zh_CN), Korean (kr) translations added * Run-time OSCAR support * Added buddy list ticker (See prefs/Appearance). Clicking on a name will cause a new or previous IM window to display for that screenname * "You are sending messages too quickly" error is now fixed when you have a large buddylist. * Fixed the LC_ALL compile problem on Solaris boxes * Fixed PPC and ARM compile problem with oscar.c * Smileys work better, and don't cause font attributes to drop * Dialog windows are now prettier * /me in IM window; font/color dialogs and smileys in chat window version 0.9.19 (06/09/2000): * Graphical Smiley Faces * Applet got a bit of a makeover (inside & out) * Compile-time options affect Preferences dialog * Whispering in chat works (does anyone even use this?) * HTML-tag buttons in chat * Chat got all kinds of new features (like IRC-sytle /me) * Chat in oscar works much better * Locale support * Fixed the segfault when your server-side config is null * Many many bugfixes version 0.9.18 (06/02/2000): * Logging in works better for oscar * Double error bug when sending message to an offline user is fixed. * Pressing enter once again sends a message in buddy chatrooms (oops) * More fixes for the change on the AOL sign-on process. * Fixed bug where Gaim sometimes doesn't find a font to use. * Per-conversation font and color dialogs (thanks fflewddur) * Chat in oscar works (somewhat) * Even more fixes for the sign-on process, and now you don't flash when setting permit/deny lists. version 0.9.17 (05/31/2000): * Automagic feature to check for new versions has been removed * Infinite loop bug fixed version 0.9.16: (05/31/2000) * Paned buddy chat window (Thanks Syd) * Buddy lists (and changes) are cached to ~/.gaim/<sn>.blist where <sn> is your screen name. If for some reason, you log into the AOL server and the buddy list comes back empty, we check for a cache file, and, if we find one, read it in. This essentially implements recovery from a server crash at AOL (AOL does not back up machines that contain TOC-based buddy lists, unfortunately). (Thanks Syd) * Font selection dialog * Small changes to the Oscar/libfaim stuff (see libfaim/README.gaim) * SOCKS v4 Proxy support * Better proxy support overall (you can get people's info now! :) ) * Two-way file transfer (you can get and send files, but you still can't initiate either) * Fixed font problem with Misconfigured X-Servers. Thanks Decklin! * Fixed the No Configuration problem that came about today (5/31) version 0.9.15: (05/06/2000) * Plugin support enabled by default (oops) * Some plugins built/installed by default * Option to automagically check for new releases * Ability to receive files (one-way file transfer) * In-line spell checker (thanks to Torrey Searle of the Everybuddy Devel team for this one) version 0.9.14: * Numerous Fixes by G. Sumner Hayes (buffer over flow patches, etc) * Paned Conversation Windows (Thanks Syd) * Raise Window On Message Received, Fixed (Thanks Syd) * When multiple screen names, Gaim now correctly remembers the name that was used last. * FONT sizes now work correctly. * PLUGIN SUPPORT!! (Lots of cool goodies here) * Fixed another leak or two * Added ability to change your screenname password * Devil pixmaps version 0.9.13 (03/27/2000): * Dialog Box Segfault Fixed (When You Click A Toggle Then Cancel) * Double Log-Out Message Fixed * GNOME compile error fixed * Away Message Problem Fixed * Fixed URL Right Click Menus * Conversation Loggin now shows Full Date and Time * Internal Change to Buddy List version 0.9.12 (03/25/2000): * Segfault fix for PPC/Alpha/etc machines with log(0) Thanks to Todd Cohen for this one. * Small internal change to the way prefs work * GNOME Applet support works better (thanks to Eric Warmenhoven for the patch) * Support for displaying true type fonts * Lag-O-Meter does not send lag-test if not selected * Fixed problem with saving away messages which contain spaces and numbers. * Various GNOME Applet Enhancements (thanks AGAIN to Eric. Someone needs to stop this boy :-) ) * A lot of random, obscure bugs fixed * All of the major and I believe all of the minor memory leaks are now fixed (Thanks to Peter Teichman, Larry Ewing, Jeramey Crawford, and me) version 0.9.11 (03/22/2000): * <STRIKE>Strike Tag Support</STRIKE> :-) * Another memory leak fix * New .gaimrc format * Better support for multiple screen names * Font Properties * Saving of buddylist window position * Fixed a problem with Gaim and the Netscape-branded version of Mozilla * New Sound Properties * More General Properties * Bigger Text-Entry field (Thanks to CrazyDavy for this one) * Various Random Bug fixes version 0.9.10 (11/03/1999): * Fixed a nasty memory leak. No more 40M Gaim processes. LOL * IDLE Times are displayed in a neater fashion. version 0.9.9 (10/31/1999): * A little selection bug has been squished * Small memory leak fixed * Small network fix (problem with HTTP Proxy fixed?) * Proxy stuff should work now :) * Widget table support, dir info looks nicer * Info box looks nicer (thanks to Decklin Foster) * Client now 'corrects' time values from the server for accurate login times. * Lag-O-Meter (ala Drunken Jim) * IDLE Preferences version 0.9.8 (10/04/1999): * HTTP Proxy Support (No SOCKS yet) * HTML Widget more robust * Graphical Debug Window * Buddylist bug fixed * Some logging fixes and improvements * configurable host/port selection * Clickable Links in buddy chat * New Gaim Logo * Display Signon/Signoff messages in conversation windows * Option to strip HTML from logged messages * GNOME cleanups (It might work now haha) * When viewing user info, URLS are converted to clickable links * Tooltips on URLS version 0.9.7 (08/08/1999): * Preliminary Oscar Support * Fixed bad network bug * Fixed some bad text rendering bugs in the HTML widget * log all conversation names are now normalized. * Fixed another bad network bug :) * Multiple browser support, some Netscape buggies fixed. * Permit/Deny preferences moved to 'Permit' pane on buddylist. * Fixed problem with _, ', and \ in passwords version 0.9.6 (08/01/1999): * Fixed 'log all conversation' segfault * Added NAS support * Removed Xmu dependancies. * Restructured network code * ESD detection more robust. * Sound fallbacks are MUCH more robust! version 0.9.5 (07/25/1999): * Fixed About Box SegFault * Autologin Works with Applet * Option to Show Buddy List after Signon with Applet * 2048 character messages * Away-Detection (shows a different icon on the buddy list) * Fixed Segfault with messages > allowed size * Added option to log all conversations * Changed g_new to g_new0 * Buddy List: Right Click Menus * Find Buddy By Email * Find Buddy By Info * New HTML widget (Underline/Links/HRs) * Updated Toolbar with 'Underline' Icon * More Buddy Pounce Options * Option to auto-change urls into clickable links (Under Prefs) * Better Buddy Chat functionality * Away Prefs * Registration Information (Let Us Know Who You Are) * Buddy Chat Prefs (Update Chatroom Lists) * Set User Info * FAQ added to the distribution * Sound problem with some systems fixed * Set Dir Info * Autostart of Netscape on URL Click * DnD Rearranging of Groups * Better Netscape Functionality * Right Click `URL' Menus * DnD Rearranging of Buddies * Script to convert win95 buddylist to gaim buddylist * Added `Link/URL' button to conversation window * ESD is now autodetected * Not too important but we GNU-ified the source tree :) version 0.8.0 (04/31/1999): * Code clean-up * Updated Prefs * Buddy Pouncing * Pixmaps for buttons * Buddylist import/export * Autoconf/Automake * Conversation Logging * Coloured Text Selection * Updated Preferences * ESD Support * Minor Bug Fixes * `Warning' support * `Blocking' on conversation window * Add/Remove buddy from conversation window * Scroll-Wheel Mice work in Conversation Window * Fixed WindowMaker Appicon * Version Number in About Box * Gaim Slogan in about box :) * Created Changelog File :) |
From: Christian H. <ch...@us...> - 2002-09-26 10:58:09
|
Update of /cvsroot/gaim/web In directory usw-pr-cvs1:/tmp/cvs-serv14313 Modified Files: .cvsignore Log Message: Ignore a few more things. Index: .cvsignore =================================================================== RCS file: /cvsroot/gaim/web/.cvsignore,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- .cvsignore 26 Sep 2002 10:21:44 -0000 1.1.1.1 +++ .cvsignore 26 Sep 2002 10:33:06 -0000 1.2 @@ -3,7 +3,13 @@ .xvpics *.bak logs -old* +*old* faq www *php* +aim32 +cgi-bin +counter +*.tgz +log +tmp* |
From: Christian H. <ch...@us...> - 2002-09-26 10:52:51
|
Update of /cvsroot/gaim/web/htdocs In directory usw-pr-cvs1:/tmp/cvs-serv19453 Modified Files: .cvsignore Log Message: More things to ignore. Index: .cvsignore =================================================================== RCS file: /cvsroot/gaim/web/htdocs/.cvsignore,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- .cvsignore 26 Sep 2002 10:39:45 -0000 1.2 +++ .cvsignore 26 Sep 2002 10:52:48 -0000 1.3 @@ -1,4 +1,6 @@ apt +aim_data.phps +aim_data.txt .*.swp *.bak *.old |
From: Christian H. <ch...@us...> - 2002-09-26 10:51:38
|
Update of /cvsroot/gaim/web/htdocs In directory usw-pr-cvs1:/tmp/cvs-serv19220 Modified Files: news.txt Log Message: News update. Index: news.txt =================================================================== RCS file: /cvsroot/gaim/web/htdocs/news.txt,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- news.txt 26 Sep 2002 10:22:03 -0000 1.1.1.1 +++ news.txt 26 Sep 2002 10:51:35 -0000 1.2 @@ -1,3 +1,8 @@ +Website maintenance +September 26th, 2002 - 3:41AM PDT +We experienced a few problems with the website, and lost some data. Particularly, the past two news items, relating to the win32 release of gaim and something else I can't remember, and updated FAQ information. We'll be working to restore this data. +The necessary back-end code for member management and the all-new plugins database has been added, though not yet enabled. When some work is done to the plugins system in gaim, this portion of the site will be up. +# apt-rpm repository created July 10th, 2002 - 3:36PM PDT Hi everyone. ChipX86 here. After many hours of hard work, typos, and long crying sessions with my Tux penguin, I am proud to present an <a href="http://apt4rpm.sourceforge.net/">apt-rpm</a> repository for Gaim! Those of you using apt-rpm can now update to the latest release of Gaim automatically by following the simply <a href="downloads.php#apt-rpm">instructions</a> I've written for you. Maybe if you're good, we'll have nightly CVS packages in here eventually, but only if you read the <a href="faq.php">FAQ</a> before asking questions in #gaim! |
From: Christian H. <ch...@us...> - 2002-09-26 10:51:26
|
Update of /cvsroot/gaim/web/htdocs In directory usw-pr-cvs1:/tmp/cvs-serv19171 Added Files: favicon.ico Log Message: Added the favicon back. --- NEW FILE: favicon.ico --- PNG øp\8Þë/ÀÀã;¦'¶|úcÕ·>rÜ3=n¶T]=íºôµíû'üùÏ~×:]àyàL0:²ðÚòËðv౿~rÏ£y·®×1PEÅ£¶æ¤tÒüïvÇúW7^R tÃÏ^ `QïÐÜqïvÝ6Žp:p5ØP Ù ¥Z×û;vlùÈûÊ8¦öFLm/¦¶S»ª»0Ê$T¡2 ³ÁØQ`g¸ONwC]tѳ¿¨&6B§ÿ¢ÔúøÑ#¿º³û¦Õ|lÀJµ±qûÈùÚÕ/æÝÞ¹{êÁÝÉèÛ¶µ¦ÞóTr4wz1Pë.°\$o%|vÃ4Z/{÷µ=õò©î)/E/¾<uö¢ÍónÝæíw¶â}jÞMºúÄH^ß»#3Qxøv¤Ýàé_øÄ¸àBê, â^ ïÓÒ~ 6Èxâ÷ÇõûÙÿpë>×û!ïÙçÓÞ¦hæÜ¡jQ[d:ð !*î5Sï;ÎîÃçÑàíÙ@êÊÛÙêÖªÀÜFWAkhu&Z CÔÔX£Az´H:H×ó©÷}ÿEÓ®¡.íËåå&[+ë ¢F}bgðù4»tÑ<oÑ,Gsà{I ®-¸®P«AÞ ¿ÿmó¿ú¦Ö½ a'ø~i&'tÄëÀ*ë¯aÁ¤ããV#Ä ê=&V´&h*P´"Ä^ñ(°4.Ìúøo}ûwèØ'þÀÑ`¤)¾þjúó#bCWá¤(ÈDB+qq,D%®Qq ñÆÃ_w|A~éy½ÖÔôÀ¦¾óa¼q7 öPíý¯¤ã=ê=êD]8öa*.ga¸J½mª |(ÒWJSRÚd«åÇõ01&Eå*Hºê-ê8A¬ ¹B.H¦ Eîû\ÁÃÄ @?§]ÔB'¥í̤Èu¡'øÌIÕ´0Þ¶PÛµHOð]ÁwI(¶£Øva¸fÅR#EYÕÖúQ趺\¢+j÷êºk`@²ç@Ú¨ÏP_h ¾cáå¼àH®yWñ!mÚÊèlÍM¤tÕr£¥ÂohÌÍgsê®1t4G¬Ãõ<¶-¸NA©%Ul«S´Ò¨§¼aúªD¥ÁE©ëUì¬$ Ï# `7V£ßVÈhVin¤ToÀåK¦f]|µ<®%ä !k@ÖPò@Ô_ ]a¼ôÉ @$pý\ n#+åÈ3ÏÎÿÙïÖ¨w¸¥ì']´¡ôºð⬮üù·ùÛyù?âì´ß<Bý!½-2Ù[x©I+ìZÊù$pv#b#E<0wEæ|;C£ÛRò¶tàsGôüáèÅ.3áÙØÉ³mÎüá3ùØ·y¡&½k©`à%§VÀ[+é§f³ °Ö½¥ÐQFBøó ï¬/Óâ8|¿¿´p(ü^;DoMk³þÕ ?®3ÜÅÁsí |
From: Christian H. <ch...@us...> - 2002-09-26 10:39:48
|
Update of /cvsroot/gaim/web/htdocs In directory usw-pr-cvs1:/tmp/cvs-serv15827 Modified Files: .cvsignore Log Message: Ignore apt/ too. Index: .cvsignore =================================================================== RCS file: /cvsroot/gaim/web/htdocs/.cvsignore,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- .cvsignore 26 Sep 2002 10:21:44 -0000 1.1.1.1 +++ .cvsignore 26 Sep 2002 10:39:45 -0000 1.2 @@ -1,3 +1,4 @@ +apt .*.swp *.bak *.old |
From: Christian H. <ch...@us...> - 2002-09-26 10:34:09
|
Update of /cvsroot/gaim/web In directory usw-pr-cvs1:/tmp/cvs-serv14536 Modified Files: .cvsignore Log Message: La de da. Index: .cvsignore =================================================================== RCS file: /cvsroot/gaim/web/.cvsignore,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- .cvsignore 26 Sep 2002 10:33:06 -0000 1.2 +++ .cvsignore 26 Sep 2002 10:34:06 -0000 1.3 @@ -1,15 +1,16 @@ -*.gz -*.bz2 -.xvpics -*.bak -logs -*old* -faq -www -*php* -aim32 +aim35 cgi-bin counter -*.tgz +faq log +logs +marko.net tmp* +www +.xvpics +*.bak +*.bz2 +*.gz +*.tgz +*old* +*php* |
From: Christian H. <ch...@us...> - 2002-09-26 10:23:28
|
Update of /cvsroot/gaim/web In directory usw-pr-cvs1:/tmp/cvs-serv11327 Log Message: Initial import into CVS Status: Vendor Tag: chipx86 Release Tags: start N web/.cvsignore N web/htdocs/.cvsignore N web/htdocs/EC_2000_sm.jpg N web/htdocs/Tuxie_2001.jpg N web/htdocs/aim_data.php3 N web/htdocs/aol.shtml N web/htdocs/aoltw.pdf N web/htdocs/bug.php N web/htdocs/contactinfo.php N web/htdocs/cvs.php N web/htdocs/documentation.php N web/htdocs/downloads.php N web/htdocs/faq.php N web/htdocs/faq.txt N web/htdocs/faqtext.php N web/htdocs/gdb.php N web/htdocs/get-daily-cvs.php N web/htdocs/index.php N web/htdocs/login.php N web/htdocs/logout.php N web/htdocs/memorialday-011.jpg N web/htdocs/news.txt N web/htdocs/plugins.php N web/htdocs/protocol.php N web/htdocs/register.php N web/htdocs/rollcage.jpg N web/htdocs/screenshots.php N web/htdocs/shortcuts.php N web/htdocs/statusicons.php N web/htdocs/wtc_flag.jpg N web/htdocs/eric/ABcherrychopAIM.gif N web/htdocs/eric/ABpenguinsAIM.gif N web/htdocs/eric/Solefald.diff N web/htdocs/eric/autoadd.c N web/htdocs/eric/base64.c N web/htdocs/eric/bf.gif N web/htdocs/eric/broken.diff N web/htdocs/eric/broken2.diff N web/htdocs/eric/design.txt N web/htdocs/eric/download.php N web/htdocs/eric/eric.php N web/htdocs/eric/evil.jpg N web/htdocs/eric/gaim-0.12.0pre20010725.tar.gz N web/htdocs/eric/gaim.diff N web/htdocs/eric/gendiff.sh N web/htdocs/eric/gtk2.php N web/htdocs/eric/gtk2.shtml N web/htdocs/eric/gtkcount.sh N web/htdocs/eric/idle.c N web/htdocs/eric/index.php N web/htdocs/eric/index.shtml N web/htdocs/eric/m.c N web/htdocs/eric/makediff.sh N web/htdocs/eric/maxconvo.c N web/htdocs/eric/mid.diff N web/htdocs/eric/pixbuf.c N web/htdocs/eric/pixbuf.php N web/htdocs/eric/pixbuf.shtml N web/htdocs/eric/pixbuf2.c N web/htdocs/eric/roadmap.txt N web/htdocs/eric/tricks.php N web/htdocs/eric/tricks.shtml N web/htdocs/eric/whatfont.diff N web/htdocs/rob/index.php N web/htdocs/images/.cvsignore N web/htdocs/images/a.gif N web/htdocs/images/blackpixel.gif N web/htdocs/images/date_bottom.gif N web/htdocs/images/links_bg.gif N web/htdocs/images/links_tl.gif N web/htdocs/images/logo.xcf N web/htdocs/images/news_bottom.gif N web/htdocs/images/news_left.gif N web/htdocs/images/news_mb.gif N web/htdocs/images/news_tl.gif N web/htdocs/images/news_top.gif N web/htdocs/images/penguin2.gif N web/htdocs/images/q.gif N web/htdocs/images/transpixel.gif N web/htdocs/images/version.gif N web/htdocs/images/halloween/.cvsignore N web/htdocs/images/halloween/links_bg.gif N web/htdocs/images/halloween/links_bg.jpg N web/htdocs/images/halloween/links_tl.jpg N web/htdocs/images/halloween/one-pumpkin.jpg N web/htdocs/images/halloween/penguin2.gif N web/htdocs/images/halloween/penguin2.xcf N web/htdocs/images/halloween/navbar/.cvsignore N web/htdocs/images/halloween/navbar/contactinfo_b.gif N web/htdocs/images/halloween/navbar/contactinfo_bh.gif N web/htdocs/images/halloween/navbar/contactinfo_t.gif N web/htdocs/images/halloween/navbar/cvsinfo_b.gif N web/htdocs/images/halloween/navbar/cvsinfo_bh.gif N web/htdocs/images/halloween/navbar/cvsinfo_t.gif N web/htdocs/images/halloween/navbar/documentation_b.gif N web/htdocs/images/halloween/navbar/documentation_bh.gif N web/htdocs/images/halloween/navbar/documentation_t.gif N web/htdocs/images/halloween/navbar/downloads_b.gif N web/htdocs/images/halloween/navbar/downloads_bh.gif N web/htdocs/images/halloween/navbar/downloads_t.gif N web/htdocs/images/halloween/navbar/news_b.gif N web/htdocs/images/halloween/navbar/news_bh.gif N web/htdocs/images/halloween/navbar/news_t.gif N web/htdocs/images/halloween/navbar/project_b.gif N web/htdocs/images/halloween/navbar/project_bh.gif N web/htdocs/images/halloween/navbar/project_t.gif N web/htdocs/images/halloween/navbar/screenshots_b.gif N web/htdocs/images/halloween/navbar/screenshots_bh.gif N web/htdocs/images/halloween/navbar/screenshots_t.gif N web/htdocs/images/navbar/.cvsignore N web/htdocs/images/navbar/bugs_b.gif N web/htdocs/images/navbar/bugs_bh.gif N web/htdocs/images/navbar/bugs_t.gif N web/htdocs/images/navbar/contactinfo_b.gif N web/htdocs/images/navbar/contactinfo_bh.gif N web/htdocs/images/navbar/contactinfo_t.gif N web/htdocs/images/navbar/cvsinfo_b.gif N web/htdocs/images/navbar/cvsinfo_bh.gif N web/htdocs/images/navbar/cvsinfo_t.gif N web/htdocs/images/navbar/documentation_b.gif N web/htdocs/images/navbar/documentation_bh.gif N web/htdocs/images/navbar/documentation_t.gif N web/htdocs/images/navbar/downloads_b.gif N web/htdocs/images/navbar/downloads_bh.gif N web/htdocs/images/navbar/downloads_t.gif N web/htdocs/images/navbar/news_b.gif N web/htdocs/images/navbar/news_bh.gif N web/htdocs/images/navbar/news_t.gif N web/htdocs/images/navbar/plugins_b.gif N web/htdocs/images/navbar/plugins_bh.gif N web/htdocs/images/navbar/plugins_t.gif N web/htdocs/images/navbar/project_b.gif N web/htdocs/images/navbar/project_bh.gif N web/htdocs/images/navbar/project_t.gif N web/htdocs/images/navbar/screenshots_b.gif N web/htdocs/images/navbar/screenshots_bh.gif N web/htdocs/images/navbar/screenshots_t.gif N web/htdocs/images/screenshots/.cvsignore N web/htdocs/images/screenshots/convo1.gif N web/htdocs/images/screenshots/convo1_t.gif N web/htdocs/images/screenshots/jabber.gif N web/htdocs/images/screenshots/jabber_t.gif N web/htdocs/images/screenshots/msn_buddylist.gif N web/htdocs/images/screenshots/msn_buddylist_t.gif N web/htdocs/images/screenshots/msn_convo.gif N web/htdocs/images/screenshots/msn_convo_t.gif N web/htdocs/images/screenshots/tabbed.gif N web/htdocs/images/screenshots/tabbed_t.gif N web/htdocs/images/statusicons/.cvsignore N web/htdocs/images/statusicons/aim/.cvsignore N web/htdocs/images/statusicons/aim/activebuddy.gif N web/htdocs/images/statusicons/aim/admin.gif N web/htdocs/images/statusicons/aim/aol.gif N web/htdocs/images/statusicons/aim/away.gif N web/htdocs/images/statusicons/aim/confirmed.gif N web/htdocs/images/statusicons/aim/offline.gif N web/htdocs/images/statusicons/aim/unconfirmed.gif N web/htdocs/images/statusicons/aim/wireless.gif N web/htdocs/images/statusicons/gg/.cvsignore N web/htdocs/images/statusicons/gg/away.gif N web/htdocs/images/statusicons/gg/busy.gif N web/htdocs/images/statusicons/gg/invisible.gif N web/htdocs/images/statusicons/gg/online.gif N web/htdocs/images/statusicons/icq/.cvsignore N web/htdocs/images/statusicons/icq/away.gif N web/htdocs/images/statusicons/icq/dnd.gif N web/htdocs/images/statusicons/icq/ffc.gif N web/htdocs/images/statusicons/icq/na.gif N web/htdocs/images/statusicons/icq/occ.gif N web/htdocs/images/statusicons/icq/offline.gif N web/htdocs/images/statusicons/icq/online.gif N web/htdocs/images/statusicons/irc/.cvsignore N web/htdocs/images/statusicons/irc/offline.gif N web/htdocs/images/statusicons/irc/online.gif N web/htdocs/images/statusicons/jabber/.cvsignore N web/htdocs/images/statusicons/jabber/available.gif N web/htdocs/images/statusicons/jabber/away.gif N web/htdocs/images/statusicons/jabber/chat.gif N web/htdocs/images/statusicons/jabber/dnd.gif N web/htdocs/images/statusicons/jabber/error.gif N web/htdocs/images/statusicons/jabber/offline.gif N web/htdocs/images/statusicons/jabber/xa.gif N web/htdocs/images/statusicons/msn/.cvsignore N web/htdocs/images/statusicons/msn/away.gif N web/htdocs/images/statusicons/msn/occupied.gif N web/htdocs/images/statusicons/msn/offline.gif N web/htdocs/images/statusicons/msn/online.gif N web/htdocs/images/statusicons/napster/.cvsignore N web/htdocs/images/statusicons/napster/online.gif N web/htdocs/images/statusicons/yahoo/.cvsignore N web/htdocs/images/statusicons/yahoo/away.gif N web/htdocs/images/statusicons/yahoo/game.gif N web/htdocs/images/statusicons/yahoo/idle.gif N web/htdocs/images/statusicons/yahoo/offline.gif N web/htdocs/images/statusicons/yahoo/online.gif N web/htdocs/oldplugins/misc/grumpy.c N web/htdocs/sean/index.php N web/htdocs/win32/index.php N web/inc/base.inc.php N web/inc/config.inc.php N web/inc/database.inc.php N web/inc/html.inc.halloween.php N web/inc/html.inc.normal.php N web/inc/html.inc.php N web/inc/plugins.inc.php N web/inc/sessions.inc.php N web/inc/users.inc.php N web/inc/utils.inc.php N web/inc/version.inc.php N web/sql/plugins.sql No conflicts created by this import ***** Bogus filespec: - Imported sources |
From: Sean E. <sea...@us...> - 2002-09-26 07:40:12
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv31236/src Modified Files: Makefile.am Removed Files: plugins.c Log Message: Removing the code for the old plugin UI. Index: Makefile.am =================================================================== RCS file: /cvsroot/gaim/gaim/src/Makefile.am,v retrieving revision 1.53 retrieving revision 1.54 diff -u -d -r1.53 -r1.54 --- Makefile.am 18 Sep 2002 00:16:12 -0000 1.53 +++ Makefile.am 26 Sep 2002 07:40:06 -0000 1.54 @@ -20,7 +20,6 @@ module.c \ multi.c \ perl.c \ - plugins.c \ prefs.c \ proxy.c \ prpl.c \ --- plugins.c DELETED --- |
From: Sean E. <sea...@us...> - 2002-09-26 07:37:55
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv29880/src Modified Files: aim.c buddy.c core.h module.c perl.c plugins.c prefs.c Log Message: In the interest of continued progress, I pulled what's usable out of my development tree and am committing it. Here, we have gotten rid of the plugins dialog and perl menu under Tools and put them both in preferences. Perl scripts now work like plugins--you have to load them explicitly (it will probe $prefix/lib/gaim and $HOME/.gaim for them) and you can unload them (although right now, this is entirely unreliable) Oh, and I broke all your perl scripts. Sorry about that. Don't try fixing them yet, though--I'm gonna make unloading single scripts more reliable tommorow. I should also finish Phase Two tommorow as well. Index: aim.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/aim.c,v retrieving revision 1.200 retrieving revision 1.201 diff -u -d -r1.200 -r1.201 --- aim.c 18 Sep 2002 00:11:44 -0000 1.200 +++ aim.c 26 Sep 2002 07:37:51 -0000 1.201 @@ -217,9 +217,7 @@ { GtkWidget *signon_all; GtkWidget *options; -#ifdef GAIM_PLUGINS GtkWidget *plugs; -#endif #ifndef NO_MULTI GtkWidget *accts; #endif @@ -340,32 +338,24 @@ reg = gtk_button_new_with_label(_("Auto-login")); options = gtk_button_new_with_label(_("Options")); -#ifdef GAIM_PLUGINS - plugs = gtk_button_new_with_label(_("Plugins")); -#endif + plugs = gtk_button_new_with_label(_("About")); if (misc_options & OPT_MISC_COOL_LOOK) { gtk_button_set_relief(GTK_BUTTON(reg), GTK_RELIEF_NONE); gtk_button_set_relief(GTK_BUTTON(options), GTK_RELIEF_NONE); -#ifdef GAIM_PLUGINS gtk_button_set_relief(GTK_BUTTON(plugs), GTK_RELIEF_NONE); -#endif } gtk_signal_connect(GTK_OBJECT(reg), "clicked", GTK_SIGNAL_FUNC(dologin_all), NULL); gtk_signal_connect(GTK_OBJECT(options), "clicked", GTK_SIGNAL_FUNC(show_prefs), NULL); -#ifdef GAIM_PLUGINS - gtk_signal_connect(GTK_OBJECT(plugs), "clicked", GTK_SIGNAL_FUNC(show_plugins), NULL); + gtk_signal_connect(GTK_OBJECT(plugs), "clicked", GTK_SIGNAL_FUNC(show_about), NULL); gtk_box_pack_start(GTK_BOX(hbox), plugs, TRUE, TRUE, 0); -#endif gtk_box_pack_start(GTK_BOX(hbox), options, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), reg, TRUE, TRUE, 0); gtk_widget_show(reg); gtk_widget_show(options); -#ifdef GAIM_PLUGINS gtk_widget_show(plugs); -#endif if (aim_users) { struct aim_user *c = (struct aim_user *)aim_users->data; @@ -724,9 +714,11 @@ printf("Gaim %s\n",VERSION); return 0; } - + +#if GAIM_PLUGINS || USE_PERL + gaim_probe_plugins(); +#endif load_prefs(); - core_main(); ui_main(); @@ -752,9 +744,7 @@ debug_printf("gtkspell started with ispell\n"); } } -#ifdef USE_PERL - perl_autoload(); -#endif + static_proto_init(); /* deal with --login */ Index: buddy.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/buddy.c,v retrieving revision 1.335 retrieving revision 1.336 diff -u -d -r1.335 -r1.336 --- buddy.c 24 Sep 2002 00:46:39 -0000 1.335 +++ buddy.c 26 Sep 2002 07:37:51 -0000 1.336 @@ -2729,32 +2729,6 @@ gaim_new_item_with_pixmap(menu, _("View System Log"), prefs_small_xpm, GTK_SIGNAL_FUNC(show_syslog), NULL, 0, 0, 0); - gaim_separator(menu); - -#ifdef GAIM_PLUGINS - gaim_new_item_with_pixmap(menu, _("Plugins"), plugins_small_xpm, GTK_SIGNAL_FUNC(show_plugins), NULL, - 0, 0, 0); -#endif -#ifdef USE_PERL - perlmenu = gtk_menu_new(); - gtk_widget_show(perlmenu); - menuitem = gaim_new_item_with_pixmap(menu, _("Perl"), plugins_small_xpm, NULL, NULL, 0, 0, 0); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), perlmenu); - gtk_widget_show(menuitem); - menuitem = gtk_menu_item_new_with_label(_("Load Script")); - gtk_menu_append(GTK_MENU(perlmenu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(load_perl_script), NULL); - gtk_widget_show(menuitem); - menuitem = gtk_menu_item_new_with_label(_("Unload All Scripts")); - gtk_menu_append(GTK_MENU(perlmenu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(unload_perl_scripts), NULL); - gtk_widget_show(menuitem); - menuitem = gtk_menu_item_new_with_label(_("List Scripts")); - gtk_menu_append(GTK_MENU(perlmenu), menuitem); - gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(list_perl_scripts), NULL); - gtk_widget_show(menuitem); -#endif - menu = gtk_menu_new(); menuitem = gaim_new_item(NULL, _("Help")); Index: core.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/core.h,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- core.h 16 Sep 2002 08:35:21 -0000 1.26 +++ core.h 26 Sep 2002 07:37:52 -0000 1.27 @@ -109,21 +109,37 @@ guint inpa; }; -#ifdef GAIM_PLUGINS +#define USE_PLUGINS GAIM_PLUGINS || USE_PERL +#define PLUGIN_API_VERSION 1 +enum gaim_plugin_type { + perl_script, + plugin +}; + +struct gaim_plugin_description { + int api_version; + gchar *name; + gchar *version; + gchar *description; + gchar *authors; + gchar *url; + gchar *iconfile; +}; struct gaim_plugin { - GModule *handle; - char *name; - char *description; + enum gaim_plugin_type type; + void *handle; + gchar path[128]; + struct gaim_plugin_description desc; }; +#ifdef GAIM_PLUGINS struct gaim_callback { GModule *handle; enum gaim_event event; void *function; void *data; }; - #endif #define BUDDY_ALIAS_MAXLEN 388 /* because MSN names can be 387 characters */ @@ -155,6 +171,7 @@ /* Globals in plugins.c */ extern GList *plugins; +extern GList *probed_plugins; extern GList *callbacks; /* Functions in buddy.c */ @@ -188,12 +205,13 @@ /* Functions in perl.c */ #ifdef USE_PERL -extern void perl_autoload(); extern void perl_end(); extern int perl_event(enum gaim_event, void *, void *, void *, void *, void *); extern int perl_load_file(char *); +extern void perl_unload_file(struct gaim_plugin *); extern void unload_perl_scripts(); extern void list_perl_scripts(); +extern struct gaim_plugin *probe_perl(const char *); #endif /* Functions in plugins.c */ @@ -206,6 +224,7 @@ extern void gaim_plugin_unload(GModule *); extern void remove_all_plugins(); #endif +extern void gaim_probe_plugins(); extern int plugin_event(enum gaim_event, ...); extern char *event_name(enum gaim_event); Index: module.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/module.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -d -r1.21 -r1.22 --- module.c 16 Sep 2002 08:35:23 -0000 1.21 +++ module.c 26 Sep 2002 07:37:52 -0000 1.22 @@ -36,8 +36,6 @@ #include "gaim.h" -#ifdef GAIM_PLUGINS - #include <string.h> #include <sys/time.h> @@ -51,6 +49,7 @@ /* ------------------ Global Variables ----------------------- */ GList *plugins = NULL; +GList *probed_plugins = NULL; GList *callbacks = NULL; char *last_dir = NULL; @@ -58,9 +57,9 @@ /* --------------- Function Declarations --------------------- */ struct gaim_plugin * load_plugin(const char *); +#ifdef GAIM_PLUGINS void unload_plugin(struct gaim_plugin *p); struct gaim_plugin *reload_plugin(struct gaim_plugin *p); - void gaim_signal_connect(GModule *, enum gaim_event, void *, void *); void gaim_signal_disconnect(GModule *, enum gaim_event, void *); void gaim_plugin_unload(GModule *); @@ -68,50 +67,141 @@ /* --------------- Static Function Declarations ------------- */ static void plugin_remove_callbacks(GModule *); - +#endif /* ------------------ Code Below ---------------------------- */ +static int is_so_file(char *filename, char *ext) +{ + int len; + if (!filename) return 0; + if (!filename[0]) return 0; + len = strlen(filename); + len -= strlen(ext); + if (len < 0) return 0; + return (!strncmp(filename + len, ext, strlen(ext))); +} + +void gaim_probe_plugins() { + GDir *dir; + const gchar *file; + gchar *path; + struct gaim_plugin_description *plugdes; + struct gaim_plugin *plug; + char userspace[128]; + char *probedirs[] = {LIBDIR, &userspace, 0}; +#if GAIM_PLUGINS + char *(*gaim_plugin_init)(GModule *); + char *(*cfunc)(); + int l; + struct gaim_plugin_description *(*desc)(); + GModule *handle; +#endif + + g_snprintf(userspace, sizeof(userspace), "%s" G_DIR_SEPARATOR_S ".gaim", g_get_home_dir()); + + for (l=0; probedirs[l]; l++) { + dir = g_dir_open(probedirs[l], 0, NULL); + if (dir) { + while ((file = g_dir_read_name(dir))) { +#ifdef GAIM_PLUGINS + if (is_so_file(file, ".so") && g_module_supported()) { + path = g_build_filename(probedirs[l], file, NULL); + handle = g_module_open(path, 0); + if (!handle) { + debug_printf("%s is unloadable: %s\n", file, g_module_error()); + continue; + } + if (!g_module_symbol(handle, "gaim_plugin_init", (gpointer *)&gaim_plugin_init)) { + debug_printf("%s is unloadable %s\n", file, g_module_error()); + g_module_close(handle); + continue; + } + plug = g_new0(struct gaim_plugin, 1); + g_snprintf(plug->path, sizeof(plug->path), path); + plug->type = plugin; + g_free(path); + if (g_module_symbol(handle, "gaim_plugin_desc", (gpointer *)&desc)) { + memcpy(&(plug->desc), desc(), sizeof(plug->desc)); + } else { + if (g_module_symbol(handle, "name", (gpointer *)&cfunc)) { + plug->desc.name = g_strdup(cfunc()); + } + if (g_module_symbol(handle, "description", (gpointer *)&cfunc)) { + plug->desc.description = g_strdup(cfunc()); + } + } + probed_plugins = g_list_append(probed_plugins, plug); + g_module_close(handle); + } +#endif +#ifdef USE_PERL + if (is_so_file(file, ".pl")) { + path = g_build_filename(LIBDIR, file, NULL); + plug = probe_perl(path); + if (plug) + probed_plugins = g_list_append(probed_plugins, plug); + g_free(path); + } +#endif + } + g_dir_close(dir); + } + } +} + +#ifdef GAIM_PLUGINS struct gaim_plugin *load_plugin(const char *filename) { struct gaim_plugin *plug; + struct gaim_plugin_description *desc; + struct gaim_plugin_description *(*gaim_plugin_desc)(); + char *(*cfunc)(); GList *c = plugins; + GList *p = probed_plugins; char *(*gaim_plugin_init)(GModule *); - char *(*cfunc)(); - char *error; - char *retval; + char *error, *retval, *tmp; + gboolean newplug = FALSE; if (!g_module_supported()) return NULL; - if (filename && !strlen(filename)) + if (!filename || !strlen(filename)) return NULL; - while (filename && c) { - plug = (struct gaim_plugin *)c->data; - if (!strcmp(filename, g_module_name(plug->handle))) { - /* just need to reload plugin */ - return reload_plugin(plug); - } else - c = g_list_next(c); + while (filename && p) { + plug = (struct gaim_plugin *)p->data; + if (!strcmp(filename, plug->path)) + break; + p = p->next; } - plug = g_malloc(sizeof *plug); - - if (last_dir) - g_free(last_dir); - last_dir = g_dirname(filename); - + + if (plug && plug->handle) { + reload_plugin(plug); + return NULL; + } + + if (!plug) { + plug = g_new0(struct gaim_plugin, 1); + g_snprintf(plug->path, sizeof(plug->path), filename); + newplug = TRUE; + } + debug_printf("Loading %s\n", filename); plug->handle = g_module_open(filename, 0); if (!plug->handle) { error = (char *)g_module_error(); - do_error_dialog(_("Gaim was unable to load your plugin."), error, GAIM_ERROR); - g_free(plug); + plug->handle = NULL; + tmp = plug->desc.description; + plug->desc.description = g_strdup_printf("<span weight=\"bold\" foreground=\"red\">%s</span>\n\n%s", error, tmp); + g_free(tmp); return NULL; } - + if (!g_module_symbol(plug->handle, "gaim_plugin_init", (gpointer *)&gaim_plugin_init)) { - do_error_dialog(_("Gaim was unable to load your plugin."), g_module_error(), GAIM_ERROR); g_module_close(plug->handle); - g_free(plug); + plug->handle = NULL; + tmp = plug->desc.description; + plug->desc.description = g_strdup_printf("<span foreground=\"red\">%s</span>\n\n%s", g_module_error(), tmp); + g_free(tmp); return NULL; } @@ -121,25 +211,31 @@ plugin_remove_callbacks(plug->handle); do_error_dialog("Gaim was unable to load your plugin.", retval, GAIM_ERROR); g_module_close(plug->handle); - g_free(plug); + plug->handle = NULL; return NULL; } plugins = g_list_append(plugins, plug); - if (g_module_symbol(plug->handle, "name", (gpointer *)&cfunc)) { - plug->name = cfunc(); - } else { - plug->name = NULL; + if (newplug) { + g_snprintf(plug->path, sizeof(plug->path), filename); + if (g_module_symbol(plug->handle, "gaim_plugin_desc", (gpointer *)&gaim_plugin_desc)) { + desc = gaim_plugin_desc(); + plug->desc.name = desc->name; + } else { + if (g_module_symbol(plug->handle, "name", (gpointer *)&cfunc)) { + plug->desc.name = g_strdup(cfunc()); + } + if (g_module_symbol(plug->handle, "description", (gpointer *)&cfunc)) { + plug->desc.description = g_strdup(cfunc()); + } + } + probed_plugins = g_list_append(probed_plugins, plug); } - - if (g_module_symbol(plug->handle, "description", (gpointer *)&cfunc)) - plug->description = cfunc(); - else - plug->description = NULL; - + save_prefs(); return plug; + } static void unload_gaim_plugin(struct gaim_plugin *p) @@ -155,7 +251,7 @@ plugin_remove_callbacks(p->handle); plugins = g_list_remove(plugins, p); - g_free(p); + p->handle = NULL; save_prefs(); } @@ -194,8 +290,8 @@ plugin_remove_callbacks(p->handle); plugins = g_list_remove(plugins, p); g_free(p); - /* XXX CUI need to tell UI what happened, but not like this */ - update_show_plugins(); + /* XXX CUI need to tell UI what happened, but not like this + update_show_plugins(); */ g_timeout_add(5000, unload_timeout, handle); } @@ -381,13 +477,14 @@ #ifdef GAIM_PLUGINS GList *c = callbacks; struct gaim_callback *g; +#endif va_list arrg; void *arg1 = NULL, *arg2 = NULL, *arg3 = NULL, *arg4 = NULL, *arg5 = NULL; -#endif + debug_printf("%s\n", event_name(event)); Index: perl.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/perl.c,v retrieving revision 1.77 retrieving revision 1.78 diff -u -d -r1.77 -r1.78 --- perl.c 16 Sep 2002 08:35:23 -0000 1.77 +++ perl.c 26 Sep 2002 07:37:52 -0000 1.78 @@ -73,12 +73,14 @@ struct _perl_event_handlers { char *event_type; char *handler_name; + char *handle; }; struct _perl_timeout_handlers { char *handler_name; char *handler_args; gint iotag; + char *handle; }; static GList *perl_list = NULL; /* should probably extern this at some point */ @@ -115,7 +117,31 @@ void xs_init() { char *file = __FILE__; + + /* This one allows dynamic loading of perl modules in perl + scripts by the 'use perlmod;' construction*/ newXS ("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); + + /* load up all the custom Gaim perl functions */ + newXS ("GAIM::register", XS_GAIM_register, "GAIM"); + newXS ("GAIM::get_info", XS_GAIM_get_info, "GAIM"); + newXS ("GAIM::print", XS_GAIM_print, "GAIM"); + newXS ("GAIM::write_to_conv", XS_GAIM_write_to_conv, "GAIM"); + + newXS ("GAIM::buddy_list", XS_GAIM_buddy_list, "GAIM"); + newXS ("GAIM::online_list", XS_GAIM_online_list, "GAIM"); + + newXS ("GAIM::command", XS_GAIM_command, "GAIM"); + newXS ("GAIM::user_info", XS_GAIM_user_info, "GAIM"); + newXS ("GAIM::print_to_conv", XS_GAIM_print_to_conv, "GAIM"); + newXS ("GAIM::print_to_chat", XS_GAIM_print_to_chat, "GAIM"); + newXS ("GAIM::serv_send_im", XS_GAIM_serv_send_im, "GAIM"); + + newXS ("GAIM::add_event_handler", XS_GAIM_add_event_handler, "GAIM"); + newXS ("GAIM::remove_event_handler", XS_GAIM_remove_event_handler, "GAIM"); + newXS ("GAIM::add_timeout_handler", XS_GAIM_add_timeout_handler, "GAIM"); + + newXS ("GAIM::play_sound", XS_GAIM_play_sound, "GAIM"); } static char *escape_quotes(char *buf) @@ -136,119 +162,243 @@ return (tmp_buf); } -static SV *execute_perl(char *function, char *args) +/* + 2001/06/14: execute_perl replaced by Martin Persson <me...@pa...> + previous use of perl_eval leaked memory, replaced with + a version that uses perl_call instead +*/ + +static int +execute_perl(char *function, char *args) { - static char *perl_cmd = NULL; - SV *i; + char *perl_args[2] = { args, NULL }, buf[512]; + int count, ret_value = 1; + SV *sv; - if (perl_cmd) - g_free(perl_cmd); - perl_cmd = g_malloc(strlen(function) + strlen(args) + 4); - sprintf(perl_cmd, "&%s(%s)", function, args); -#ifndef HAVE_PERL_EVAL_PV - i = (perl_eval_pv(perl_cmd, TRUE)); -#else - i = (Perl_eval_pv(perl_cmd, TRUE)); -#endif - return i; + dSP; + ENTER; + SAVETMPS; + PUSHMARK(sp); + count = perl_call_argv(function, G_EVAL | G_SCALAR, perl_args); + SPAGAIN; + + sv = GvSV(gv_fetchpv("@", TRUE, SVt_PV)); + if (SvTRUE(sv)) { + snprintf(buf, 512, "Perl error: %s\n", SvPV(sv, count)); + debug_printf(buf); + POPs; + } else if (count != 1) { + snprintf(buf, 512, "Perl error: expected 1 value from %s, " + "got: %d\n", function, count); + debug_printf(buf); + } else { + ret_value = POPi; + } + + PUTBACK; + FREETMPS; + LEAVE; + + return ret_value; + +} + +/* This function is so incredibly broken and should never, ever, ever + be trusted to work */ +void perl_unload_file(struct gaim_plugin *plug) { + struct perlscript *scp = NULL; + struct _perl_timeout_handlers *thn; + struct _perl_event_handlers *ehn; + + GList *pl = perl_list; + + debug_printf("Unloading %s\n", plug->handle); + while (pl) { + scp = pl->data; + /* This is so broken */ + if (!strcmp(scp->name, plug->desc.name) && + !strcmp(scp->version, plug->desc.version)) + break; + pl = pl->next; + scp = NULL; + } + if (scp) { + perl_list = g_list_remove(perl_list, scp); + if (scp->shutdowncallback[0]) + execute_perl(scp->shutdowncallback, ""); + perl_list = g_list_remove(perl_list, scp); + g_free(scp->name); + g_free(scp->version); + g_free(scp->shutdowncallback); + g_free(scp); + } + + pl = perl_timeout_handlers; + while (pl) { + thn = pl->data; + if (thn && thn->handle == plug->handle) { + g_list_remove(perl_timeout_handlers, thn); + g_source_remove(thn->iotag); + g_free(thn->handler_args); + g_free(thn->handler_name); + g_free(thn); + } + pl = pl->next; + } + + pl = perl_event_handlers; + while (pl) { + ehn = pl->data; + if (ehn && ehn->handle == plug->handle) { + perl_event_handlers = g_list_remove(perl_event_handlers, ehn); + g_free(ehn->event_type); + g_free(ehn->handler_name); + g_free(ehn); + } + pl = pl->next; + } + + plug->handle=NULL; } int perl_load_file(char *script_name) { - char *name = g_strdup_printf("'%s'", escape_quotes(script_name)); - SV *return_val; + struct gaim_plugin *plug; + GList *p = probed_plugins; + GList *e = perl_event_handlers; + GList *t = perl_timeout_handlers; + int num_e, num_t, ret; + if (my_perl == NULL) perl_init(); - return_val = execute_perl("load_file", name); - g_free(name); - return SvNV (return_val); -} + + while (p) { + plug = (struct gaim_plugin *)p->data; + if (!strcmp(script_name, plug->path)) + break; + p = p->next; + } + + if (!plug) { + probe_perl(script_name); + } + + plug->handle = plug->path; + + /* This is such a terrible hack-- if I weren't tired and annoyed + * with perl, I'm sure I wouldn't even be considering this. */ + num_e=g_list_length(e); + num_t=g_list_length(t); -static int is_pl_file(char *filename) -{ - int len; - if (!filename) return 0; - if (!filename[0]) return 0; - len = strlen(filename); - len -= 3; - if (len < 0) return 0; - return (!strncmp(filename + len, ".pl", 3)); + ret = execute_perl("load_n_eval", script_name); + + t = g_list_nth(perl_timeout_handlers, num_t++); + while (t) { + struct _perl_timeout_handlers *h = t->data; + h->handle = plug->handle; + t = t->next; + } + + e = g_list_nth(perl_event_handlers, num_e++); + while (e) { + struct _perl_event_handlers *h = e->data; + h->handle = plug->handle; + e = e->next; + } + return ret; } -void perl_autoload() -{ - DIR *dir; - struct dirent *ent; - struct dirent dirent_buf; - char *buf; - char *path; +struct gaim_plugin *probe_perl(const char *filename) { - path = gaim_user_dir(); - dir = opendir(path); - if (dir) { - while ((readdir_r(dir,&dirent_buf,&ent),ent)) { - if (strcmp(ent->d_name, ".") && strcmp(ent->d_name, "..")) { - if (is_pl_file(ent->d_name)) { - buf = g_malloc(strlen(path) + strlen(ent->d_name) + 2); - sprintf(buf, "%s/%s", path, ent->d_name); - perl_load_file(buf); - g_free(buf); - } - } + /* XXX This woulld be much faster if I didn't create a new + * PerlInterpreter every time I did probed a plugin */ + + PerlInterpreter *prober = perl_alloc(); + struct gaim_plugin * plug = NULL; + char *argv[] = {"", filename}; + int count; + perl_construct(prober); + perl_parse(prober, NULL, 2, argv, NULL); + + { + dSP; + ENTER; + SAVETMPS; + PUSHMARK(SP); + count =perl_call_pv("description", G_NOARGS | G_ARRAY); + SPAGAIN; + + if (count = sizeof(struct gaim_plugin_description) / sizeof(char*)) { + plug = g_new0(struct gaim_plugin, 1); + plug->type = perl_script; + g_snprintf(plug->path, sizeof(plug->path), filename); + plug->desc.iconfile = g_strdup(POPp); + plug->desc.url = g_strdup(POPp); + plug->desc.authors = g_strdup(POPp); + plug->desc.description = g_strdup(POPp); + plug->desc.version = g_strdup(POPp); + plug->desc.name = g_strdup(POPp); } - closedir(dir); + + PUTBACK; + FREETMPS; + LEAVE; } - g_free(path); + perl_destruct(prober); + perl_free(prober); + return plug; } static void perl_init() -{ - char *perl_args[] = {"", "-e", "0", "-w"}; - char load_file[] = -"sub load_file()\n" -"{\n" -" (my $file_name) = @_;\n" -" open FH, $file_name or return 2;\n" -" my $is = $/;\n" -" local($/) = undef;\n" -" $file = <FH>;\n" -" close FH;\n" -" $/ = $is;\n" -" $file = \"\\@ISA = qw(Exporter DynaLoader);\\n\" . $file;\n" -" eval $file;\n" -" eval $file if $@;\n" -" return 1 if $@;\n" -" return 0;\n" -"}"; +{ /*changed the name of the variable from load_file to + perl_definitions since now it does much more than defining + the load_file sub. Moreover, deplaced the initialisation to + the xs_init function. (TheHobbit)*/ + char *perl_args[] = { "", "-e", "0", "-w" }; + char perl_definitions[] = + { + /* We use to function one to load a file the other to + execute the string obtained from the first and holding + the file conents. This allows to have a realy local $/ + without introducing temp variables to hold the old + value. Just a question of style:) */ + "sub load_file{" + "my $f_name=shift;" + "local $/=undef;" + "open FH,$f_name or return \"__FAILED__\";" + "$_=<FH>;" + "close FH;" + "return $_;" + "}" + "sub load_n_eval{" + "my $f_name=shift;" + "my $strin=load_file($f_name);" + "return 2 if($strin eq \"__FAILED__\");" + "eval $strin;" + "if($@){" + /*" #something went wrong\n"*/ + "GAIM::print\"Errors loading file $f_name:\\n\";" + "GAIM::print\"$@\\n\";" + "return 1;" + "}" + "return 0;" + "}" + }; my_perl = perl_alloc(); perl_construct(my_perl); +#ifdef DEBUG perl_parse(my_perl, xs_init, 4, perl_args, NULL); +#else + perl_parse(my_perl, xs_init, 3, perl_args, NULL); +#endif #ifndef HAVE_PERL_EVAL_PV - perl_eval_pv(load_file, TRUE); + eval_pv(perl_definitions, TRUE); #else - Perl_eval_pv(load_file, TRUE); + perl_eval_pv(perl_definitions, TRUE); /* deprecated */ #endif - newXS ("GAIM::register", XS_GAIM_register, "GAIM"); - newXS ("GAIM::get_info", XS_GAIM_get_info, "GAIM"); - newXS ("GAIM::print", XS_GAIM_print, "GAIM"); - newXS ("GAIM::write_to_conv", XS_GAIM_write_to_conv, "GAIM"); - - newXS ("GAIM::buddy_list", XS_GAIM_buddy_list, "GAIM"); - newXS ("GAIM::online_list", XS_GAIM_online_list, "GAIM"); - - newXS ("GAIM::command", XS_GAIM_command, "GAIM"); - newXS ("GAIM::user_info", XS_GAIM_user_info, "GAIM"); - newXS ("GAIM::print_to_conv", XS_GAIM_print_to_conv, "GAIM"); - newXS ("GAIM::print_to_chat", XS_GAIM_print_to_chat, "GAIM"); - newXS ("GAIM::serv_send_im", XS_GAIM_serv_send_im, "GAIM"); - - newXS ("GAIM::add_event_handler", XS_GAIM_add_event_handler, "GAIM"); - newXS ("GAIM::remove_event_handler", XS_GAIM_remove_event_handler, "GAIM"); - newXS ("GAIM::add_timeout_handler", XS_GAIM_add_timeout_handler, "GAIM"); - newXS ("GAIM::play_sound", XS_GAIM_play_sound, "GAIM"); } void perl_end() @@ -281,6 +431,7 @@ ehn = perl_event_handlers->data; perl_event_handlers = g_list_remove(perl_event_handlers, ehn); g_free(ehn->event_type); + debug_printf("handler_name: %s\n", ehn->handler_name); g_free(ehn->handler_name); g_free(ehn); } @@ -412,7 +563,7 @@ title = SvPV(ST(0), junk); message = SvPV(ST(1), junk); - do_error_dialog(message, NULL, GAIM_INFO); + do_error_dialog(title, message, GAIM_INFO); XSRETURN(0); } Index: plugins.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/plugins.c,v retrieving revision 1.91 retrieving revision 1.92 diff -u -d -r1.91 -r1.92 --- plugins.c 30 Aug 2002 03:14:03 -0000 1.91 +++ plugins.c 26 Sep 2002 07:37:52 -0000 1.92 @@ -1,515 +0,0 @@ -/* - * gaim - * - * Copyright (C) 1998-1999, Mark Spencer <mar...@ma...> - * - * 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 - * - * ---------------- - * The Plug-in plug - * - * Plugin support is currently being maintained by Mike Saraf - * ms...@dw... - * - * Well, I didn't see any work done on it for a while, so I'm going to try - * my hand at it. - Eric war...@ya... - * - * Mike is my roomate. I can assure you that he's lazy :-P -- Rob ro...@ma... - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#ifdef GAIM_PLUGINS - -#include <string.h> -#include <sys/time.h> - -#include <sys/types.h> -#include <sys/stat.h> - -#include <unistd.h> -#include <stdio.h> -#include <stdlib.h> -#include <gtk/gtk.h> -#include "gaim.h" - -#include "pixmaps/gnome_add.xpm" -#include "pixmaps/gnome_remove.xpm" -#include "pixmaps/gnome_preferences.xpm" -#include "pixmaps/refresh.xpm" -#include "pixmaps/cancel.xpm" - -#define PATHSIZE 1024 /* XXX: stolen from dialogs.c */ - - -/* ------------------ Local Variables ------------------------ */ - -static GtkWidget *plugin_dialog = NULL; - -static GtkWidget *pluglist = NULL; -static GtkWidget *plugtext = NULL; -static GtkWidget *plugwindow = NULL; -static GtkWidget *plugentry = NULL; - -static GtkTooltips *tooltips = NULL; - -static GtkWidget *config = NULL; -static guint confighandle = 0; -static GtkWidget *reload = NULL; -static GtkWidget *unload = NULL; -extern char *last_dir; - -/* --------------- Function Declarations --------------------- */ - -void show_plugins(GtkWidget *, gpointer); - -/* UI button callbacks */ -static void unload_plugin_cb(GtkWidget *, gpointer); -static void plugin_reload_cb(GtkWidget *, gpointer); - -static const gchar *plugin_makelistname(GModule *); - -static void destroy_plugins(GtkWidget *, gpointer); -static void load_file(GtkWidget *, gpointer); -static void load_which_plugin(GtkWidget *, gpointer); -void update_show_plugins(); -static void hide_plugins(GtkWidget *, gpointer); -static void clear_plugin_display(); -static struct gaim_plugin *get_selected_plugin(GtkWidget *); -static void select_plugin(GtkWidget *w, struct gaim_plugin *p); -static void list_clicked(GtkWidget *, gpointer); - -/* ------------------ Code Below ---------------------------- */ - -static void destroy_plugins(GtkWidget *w, gpointer data) -{ - if (plugin_dialog) - gtk_widget_destroy(plugin_dialog); - plugin_dialog = NULL; -} - -static void load_file(GtkWidget *w, gpointer data) -{ - gchar *buf; - - if (plugin_dialog) { - gtk_widget_show(plugin_dialog); - gdk_window_raise(plugin_dialog->window); - return; - } - - plugin_dialog = gtk_file_selection_new(_("Gaim - Plugin List")); - - gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(plugin_dialog)); - - if (!last_dir) - buf = g_strdup(LIBDIR); - else - buf = g_strconcat(last_dir, G_DIR_SEPARATOR_S, NULL); - - gtk_file_selection_set_filename(GTK_FILE_SELECTION(plugin_dialog), buf); - gtk_file_selection_complete(GTK_FILE_SELECTION(plugin_dialog), "*.so"); - gtk_signal_connect(GTK_OBJECT(plugin_dialog), "destroy", - GTK_SIGNAL_FUNC(destroy_plugins), plugin_dialog); - - gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(plugin_dialog)->ok_button), - "clicked", GTK_SIGNAL_FUNC(load_which_plugin), NULL); - - gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(plugin_dialog)->cancel_button), - "clicked", GTK_SIGNAL_FUNC(destroy_plugins), NULL); - - g_free(buf); - gtk_widget_show(plugin_dialog); - gdk_window_raise(plugin_dialog->window); -} - -static void load_which_plugin(GtkWidget *w, gpointer data) -{ - const char *file; - struct gaim_plugin *p; - - file = (char *)gtk_file_selection_get_filename(GTK_FILE_SELECTION(plugin_dialog)); - if (file_is_dir(file, plugin_dialog)) { - return; - } - - if (file) - p = load_plugin(file); - else - p = NULL; - - if (plugin_dialog) - gtk_widget_destroy(plugin_dialog); - plugin_dialog = NULL; - - update_show_plugins(); - /* Select newly loaded plugin */ - if(p == NULL) - return; - select_plugin(pluglist, p); -} - -void show_plugins(GtkWidget *w, gpointer data) -{ - /* most of this code was shamelessly stolen from Glade */ - GtkWidget *mainvbox; - GtkWidget *tophbox; - GtkWidget *bothbox; - GtkWidget *hbox; - GtkWidget *vbox; - GtkWidget *frame; - GtkWidget *scrolledwindow; - GtkWidget *label; - GtkWidget *add; - GtkWidget *close; - /* stuff needed for GtkTreeView *pluglist */ - GtkListStore *store; - GtkCellRenderer *renderer; - GtkTreeViewColumn *column; - GtkTreeSelection *selection; - /* needed for GtkTextView *plugtext */ - GtkTextBuffer *buffer; - - if (plugwindow) { - gtk_window_present(GTK_WINDOW(plugwindow)); - return; - } - - GAIM_DIALOG(plugwindow); - gtk_window_set_wmclass(GTK_WINDOW(plugwindow), "plugins", "Gaim"); - gtk_widget_realize(plugwindow); - gtk_window_set_title(GTK_WINDOW(plugwindow), _("Gaim - Plugins")); - gtk_signal_connect(GTK_OBJECT(plugwindow), "destroy", GTK_SIGNAL_FUNC(hide_plugins), NULL); - - mainvbox = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(plugwindow), mainvbox); - gtk_widget_show(mainvbox); - - /* Build the top */ - tophbox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(mainvbox), tophbox, TRUE, TRUE, 0); - gtk_widget_show(tophbox); - - /* Left side: frame with list of plugin file names */ - frame = gtk_frame_new(_("Loaded Plugins")); - gtk_box_pack_start(GTK_BOX(tophbox), frame, FALSE, FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - gtk_frame_set_label_align(GTK_FRAME(frame), 0.05, 0.5); - gtk_widget_show(frame); - - scrolledwindow = gtk_scrolled_window_new(NULL, NULL); - gtk_container_add(GTK_CONTAINER(frame), scrolledwindow); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_widget_show(scrolledwindow); - gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwindow), - GTK_SHADOW_IN); - - /* Create & show plugin list */ - store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT); - pluglist = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); - gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(pluglist), FALSE); - renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes("text", - renderer, "text", 0, NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(pluglist), column); - gtk_container_add(GTK_CONTAINER(scrolledwindow), pluglist); - - g_object_unref(G_OBJECT(store)); - - selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pluglist)); - g_signal_connect(G_OBJECT(selection), "changed", - G_CALLBACK(list_clicked), - NULL); - - gtk_widget_show(pluglist); - - /* Right side: frame with description and the filepath of plugin */ - frame = gtk_frame_new(_("Selected Plugin")); - gtk_box_pack_start(GTK_BOX(tophbox), frame, TRUE, TRUE, 0); - gtk_container_set_border_width(GTK_CONTAINER(frame), 6); - gtk_frame_set_label_align(GTK_FRAME(frame), 0.05, 0.5); - gtk_widget_show(frame); - - vbox = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(frame), vbox); - gtk_widget_show(vbox); - - scrolledwindow = gtk_scrolled_window_new(NULL, NULL); - gtk_box_pack_start(GTK_BOX(vbox), scrolledwindow, TRUE, TRUE, 0); - gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_widget_show(scrolledwindow); - gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwindow), - GTK_SHADOW_IN); - - /* Create & show the plugin description widget */ - plugtext = gtk_text_view_new(); - gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(plugtext), GTK_WRAP_WORD); - gtk_text_view_set_editable(GTK_TEXT_VIEW(plugtext), FALSE); - gtk_container_add(GTK_CONTAINER(scrolledwindow), plugtext); - gtk_widget_set_size_request(GTK_WIDGET(plugtext), -1, 200); - - buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(plugtext)); - gtk_text_buffer_create_tag(buffer, "bold", "weight", - PANGO_WEIGHT_BOLD, NULL); - gtk_widget_show(plugtext); - - hbox = gtk_hbox_new(FALSE, 5); - gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(hbox), 6); - gtk_widget_show(hbox); - - label = gtk_label_new(_("Filepath:")); - gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); - gtk_widget_show(label); - - plugentry = gtk_entry_new(); - gtk_box_pack_start(GTK_BOX(hbox), plugentry, TRUE, TRUE, 0); - gtk_entry_set_editable(GTK_ENTRY(plugentry), FALSE); - gtk_widget_show(plugentry); - - /* Build the bottom button bar */ - bothbox = gtk_hbox_new(TRUE, 3); - gtk_box_pack_start(GTK_BOX(mainvbox), bothbox, FALSE, FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(hbox), 5); - gtk_widget_show(bothbox); - - if (!tooltips) - tooltips = gtk_tooltips_new(); - - add = picture_button(plugwindow, _("Load"), gnome_add_xpm); - gtk_signal_connect(GTK_OBJECT(add), "clicked", GTK_SIGNAL_FUNC(load_file), NULL); - gtk_box_pack_start_defaults(GTK_BOX(bothbox), add); - gtk_tooltips_set_tip(tooltips, add, _("Load a plugin from a file"), ""); - - config = picture_button(plugwindow, _("Configure"), gnome_preferences_xpm); - gtk_widget_set_sensitive(config, FALSE); - gtk_box_pack_start_defaults(GTK_BOX(bothbox), config); - gtk_tooltips_set_tip(tooltips, config, _("Configure settings of the selected plugin"), ""); - - reload = picture_button(plugwindow, _("Reload"), refresh_xpm); - gtk_widget_set_sensitive(reload, FALSE); - gtk_signal_connect(GTK_OBJECT(reload), "clicked", GTK_SIGNAL_FUNC(plugin_reload_cb), NULL); - gtk_box_pack_start_defaults(GTK_BOX(bothbox), reload); - gtk_tooltips_set_tip(tooltips, reload, _("Reload the selected plugin"), ""); - - unload = picture_button(plugwindow, _("Unload"), gnome_remove_xpm); - gtk_signal_connect(GTK_OBJECT(unload), "clicked", GTK_SIGNAL_FUNC(unload_plugin_cb), pluglist); - gtk_box_pack_start_defaults(GTK_BOX(bothbox), unload); - gtk_tooltips_set_tip(tooltips, unload, _("Unload the selected plugin"), ""); - - close = picture_button(plugwindow, _("Close"), cancel_xpm); - gtk_signal_connect(GTK_OBJECT(close), "clicked", GTK_SIGNAL_FUNC(hide_plugins), NULL); - gtk_box_pack_start_defaults(GTK_BOX(bothbox), close); - gtk_tooltips_set_tip(tooltips, close, _("Close this window"), ""); - - update_show_plugins(); - gtk_widget_show(plugwindow); -} - -void update_show_plugins() -{ - GList *plugs = plugins; - struct gaim_plugin *p; - int pnum = 0; - GtkListStore *store; - GtkTreeIter iter; - - if (plugwindow == NULL) - return; - - store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(pluglist))); - gtk_list_store_clear(store); - while (plugs) { - p = (struct gaim_plugin *)plugs->data; - gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, 0, plugin_makelistname(p->handle), -1); - gtk_list_store_set(store, &iter, 1, pnum++, -1); - plugs = g_list_next(plugs); - } - - clear_plugin_display(); -} - -static void unload_plugin_cb(GtkWidget *w, gpointer data) -{ - struct gaim_plugin *p; - p = get_selected_plugin(pluglist); - if(p == NULL) - return; - unload_plugin(p); - update_show_plugins(); -} - -static void plugin_reload_cb(GtkWidget *w, gpointer data) -{ - struct gaim_plugin *p; - p = get_selected_plugin(pluglist); - if(p == NULL) - return; - p = reload_plugin(p); - update_show_plugins(); - - /* Try and reselect the plugin in list */ - if (!pluglist) - return; - select_plugin(pluglist, p); -} - - -static void list_clicked(GtkWidget *w, gpointer data) -{ - void (*gaim_plugin_config)(); - struct gaim_plugin *p; - GtkTextBuffer *buffer; - GtkTextIter iter; - - if (confighandle != 0) { - gtk_signal_disconnect(GTK_OBJECT(config), confighandle); - confighandle = 0; - } - - p = get_selected_plugin(pluglist); - if(p == NULL) { /* No selected plugin */ - clear_plugin_display(); - return; - } - - /* Set text and filepath widgets */ - buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(plugtext)); - gtk_text_buffer_set_text(buffer, "", -1); - gtk_text_buffer_get_start_iter(buffer, &iter); - - gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, "Name:", -1, - "bold", NULL); - gtk_text_buffer_insert(buffer, &iter, " ", -1); - gtk_text_buffer_insert(buffer, &iter, (p->name != NULL) ? p->name : "", -1); - gtk_text_buffer_insert(buffer, &iter, "\n\n", -1); - gtk_text_buffer_insert_with_tags_by_name(buffer, &iter, "Description:", -1, - "bold", NULL); - gtk_text_buffer_insert(buffer, &iter, "\n", -1); - gtk_text_buffer_insert(buffer, &iter, - (p->description != NULL) ? p->description : "", -1); - - gtk_entry_set_text(GTK_ENTRY(plugentry), g_module_name(p->handle)); - /* Find out if this plug-in has a configuration function */ - if (g_module_symbol(p->handle, "gaim_plugin_config", (gpointer *)&gaim_plugin_config)) { - confighandle = gtk_signal_connect(GTK_OBJECT(config), "clicked", - GTK_SIGNAL_FUNC(gaim_plugin_config), NULL); - gtk_widget_set_sensitive(config, TRUE); - } else { - confighandle = 0; - gtk_widget_set_sensitive(config, FALSE); - } - - gtk_widget_set_sensitive(reload, TRUE); - gtk_widget_set_sensitive(unload, TRUE); -} - -static void hide_plugins(GtkWidget *w, gpointer data) -{ - if (plugwindow) - gtk_widget_destroy(plugwindow); - plugwindow = NULL; - config = NULL; - confighandle = 0; -} - -static const gchar *plugin_makelistname(GModule *module) -{ - static gchar filename[PATHSIZE]; - const gchar *filepath = (char *)g_module_name(module); - const char *cp; - - if (filepath == NULL || strlen(filepath) == 0) - return NULL; - - if ((cp = strrchr(filepath, '/')) == NULL || *++cp == '\0') - cp = filepath; - - strncpy(filename, cp, sizeof(filename)); - filename[sizeof(filename) - 1] = '\0'; - - /* Try to pretty name by removing any trailing ".so" */ - if (strlen(filename) > 3 && - strncmp(filename + strlen(filename) - 3, ".so", 3) == 0) - filename[strlen(filename) - 3] = '\0'; - - return filename; -} - -static struct gaim_plugin *get_selected_plugin(GtkWidget *w) { - /* Given the pluglist widget, this will return a pointer to the plugin - * currently selected in the list, and NULL if none is selected. */ - gint index; - GList *plugs = plugins; - GtkTreeSelection *sel; - GtkTreeIter iter; - GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(w)); - - /* Get list index of selected plugin */ - sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(w)); - if(!gtk_tree_selection_get_selected(sel, &model, &iter)) - return NULL; - gtk_tree_model_get(model, &iter, 1, &index, -1); - - /* Get plugin entry from index */ - plugs = g_list_nth(plugins, index); - if(plugs == NULL) - return NULL; - else - return (struct gaim_plugin *)plugs->data; -} - -static void select_plugin(GtkWidget *w, struct gaim_plugin *p) { - /* Given the pluglist widget and a plugin, this will try to select - * entry in the list which corresponds with the plugin. */ - GtkTreeSelection *sel; - GtkTreeIter iter; - GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(w)); - gchar temp[10]; - - if(g_list_index(plugins, p) == -1) - return; - - snprintf(temp, 10, "%d", g_list_index(plugins, p)); - gtk_tree_model_get_iter_from_string(model, - &iter, temp); - sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(w)); - gtk_tree_selection_select_iter(sel, &iter); -} - -static void clear_plugin_display() { - GtkTreeSelection *selection; - GtkTextBuffer *buffer; - - /* Clear the plugin display if nothing's selected */ - selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(pluglist)); - if(gtk_tree_selection_get_selected(selection, NULL, NULL) == FALSE) { - buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(plugtext)); - gtk_text_buffer_set_text(buffer, "", -1); - gtk_entry_set_text(GTK_ENTRY(plugentry), ""); - - gtk_widget_set_sensitive(config, FALSE); - gtk_widget_set_sensitive(reload, FALSE); - gtk_widget_set_sensitive(unload, FALSE); - } -} - -#endif Index: prefs.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/prefs.c,v retrieving revision 1.253 retrieving revision 1.254 diff -u -d -r1.253 -r1.254 --- prefs.c 17 Sep 2002 01:48:59 -0000 1.253 +++ prefs.c 26 Sep 2002 07:37:52 -0000 1.254 @@ -100,7 +100,7 @@ for (v = 0; v < NUM_SOUNDS; v++) { if (sound_file_new[v]) { g_free(sound_file_new[v]); - sound_file_new[v] = NULL; + sound_file_new[v] = NULL; } } sound_entry = NULL; @@ -847,6 +847,198 @@ return ret; } +#if USE_PLUGINS +GtkWidget *plugin_description=NULL, *plugin_details=NULL; +static void prefs_plugin_sel (GtkTreeSelection *sel, GtkTreeModel *model) +{ + gchar buf[1024]; + GtkTreeIter iter; + GValue val = { 0, }; + struct gaim_plugin *plug; + + if (! gtk_tree_selection_get_selected (sel, &model, &iter)) + return; + gtk_tree_model_get_value (model, &iter, 2, &val); + plug = g_value_get_pointer(&val); + + g_snprintf(buf, sizeof(buf), _("<span size=\"larger\">%s %s</span>\n\n%s"), + plug->desc.name, plug->desc.version, plug->desc.description); + gtk_label_set_markup(GTK_LABEL(plugin_description), buf); + g_snprintf(buf, sizeof(buf), _("<span size=\"larger\">%s %s</span>\n\n" + "<span weight=\"bold\">Written by:</span>\t%s\n" + "<span weight=\"bold\">URL:</span>\t%s\n" + "<span weight=\"bold\">File name:</span>\t %s"), + plug->desc.name, plug->desc.version, plug->desc.authors, plug->desc.url, plug->path); + gtk_label_set_markup(GTK_LABEL(plugin_details), buf); + g_value_unset (&val); +} + +static void plugin_load (GtkCellRendererToggle *cell, gchar *pth, gpointer data) +{ + GtkTreeModel *model = (GtkTreeModel *)data; + GtkTreeIter iter; + GtkTreePath *path = gtk_tree_path_new_from_string(pth); + struct gaim_plugin *plug; + gchar buf[1024]; + GdkCursor *wait = gdk_cursor_new (GDK_WATCH); + gdk_window_set_cursor(prefs->window, wait); + gdk_cursor_unref(wait); + + gtk_tree_model_get_iter (model, &iter, path); + gtk_tree_model_get (model, &iter, 2, &plug, -1); + + if (!plug->handle) + + if (plug->type == plugin) +#ifdef GAIM_PLUGINS + load_plugin(plug->path); +#else + {} +#endif + else +#ifdef USE_PERL + perl_load_file(plug->path); +#else + {} +#endif + else + if (plug->type == plugin) +#ifdef GAIM_PLUGINS + unload_plugin(plug); +#else + {} +#endif + else +#ifdef USE_PERL + perl_unload_file(plug); +#else + {} +#endif + gdk_window_set_cursor(prefs->window, NULL); + + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, plug->handle, -1); + g_snprintf(buf, sizeof(buf), _("<span size=\"larger\">%s %s</span>\n\n%s"), + plug->desc.name, plug->desc.version, plug->desc.description); + gtk_label_set_markup(GTK_LABEL(plugin_description), buf); + gtk_tree_path_free(path); +} + +static GtkWidget *plugin_page () +{ + GtkWidget *ret; + + GtkWidget *sw, *vp; + GtkTreeIter iter; + GtkWidget *event_view; + GtkListStore *ls; + GtkCellRenderer *rend, *rendt; + GtkTreeViewColumn *col; + GtkTreeSelection *sel; + GtkTreePath *path; + + GtkWidget *nb; + + GList *probes = probed_plugins; + struct gaim_plugin *plug; + + ret = gtk_vbox_new(FALSE, 18); + gtk_container_set_border_width (GTK_CONTAINER (ret), 12); + + sw = gtk_scrolled_window_new(NULL,NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); + + gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); + + ls = gtk_list_store_new (3, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_POINTER); + while (probes) { + plug = probes->data; + gtk_list_store_append (ls, &iter); + gtk_list_store_set(ls, &iter, + 0, plug->handle, + 1, plug->desc.name ? plug->desc.name : plug->path, + 2, plug, -1); + probes = probes->next; + } + + event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(ls)); + + rend = gtk_cell_renderer_toggle_new(); + sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (event_view)); + + + col = gtk_tree_view_column_new_with_attributes ("Load", + rend, + "active", 0, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); + + rendt = gtk_cell_renderer_text_new(); + col = gtk_tree_view_column_new_with_attributes ("Name", + rendt, + "text", 1, + NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW(event_view), col); + g_object_unref(G_OBJECT(ls)); + gtk_container_add(GTK_CONTAINER(sw), event_view); + + + nb = gtk_notebook_new(); + gtk_notebook_set_tab_pos (GTK_NOTEBOOK(nb), GTK_POS_BOTTOM); + gtk_notebook_popup_disable(GTK_NOTEBOOK(nb)); + + /* Description */ + sw = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + plugin_description = gtk_label_new(NULL); + + vp = gtk_viewport_new(NULL, NULL); + gtk_viewport_set_shadow_type(vp, GTK_SHADOW_NONE); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE); + + gtk_container_add(vp, plugin_description); + gtk_container_add(sw, vp); + + gtk_label_set_selectable(plugin_description, TRUE); + gtk_label_set_line_wrap(plugin_description, TRUE); + gtk_misc_set_alignment(GTK_MISC(plugin_description), 0, 0); + gtk_misc_set_padding(GTK_MISC(plugin_description), 6, 6); + gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, gtk_label_new(_("Description"))); + + /* Details */ + sw = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + plugin_details = gtk_label_new(NULL); + + vp = gtk_viewport_new(NULL, NULL); + gtk_viewport_set_shadow_type(vp, GTK_SHADOW_NONE); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_NONE); + + gtk_container_add(vp, plugin_details); + gtk_container_add(sw, vp); + + gtk_label_set_selectable(plugin_details, TRUE); + gtk_label_set_line_wrap(plugin_details, TRUE); + gtk_misc_set_alignment(GTK_MISC(plugin_details), 0, 0); + gtk_misc_set_padding(GTK_MISC(plugin_details), 6, 6); + gtk_notebook_append_page(GTK_NOTEBOOK(nb), sw, gtk_label_new(_("Details"))); + gtk_box_pack_start(GTK_BOX(ret), nb, TRUE, TRUE, 0); + + g_signal_connect (G_OBJECT (sel), "changed", + G_CALLBACK (prefs_plugin_sel), + NULL); + g_signal_connect (G_OBJECT(rend), "toggled", + G_CALLBACK(plugin_load), ls); + + path = gtk_tree_path_new_first(); + gtk_tree_selection_select_path(sel, path); + gtk_tree_path_free(path); + + gtk_widget_show_all(ret); + return ret; +} +#endif + static void event_toggled (GtkCellRendererToggle *cell, gchar *pth, gpointer data) { GtkTreeModel *model = (GtkTreeModel *)data; @@ -1233,6 +1425,9 @@ prefs_notebook_add_page(_("Sound Events"), NULL, sound_events_page(), &c, &p, a++); prefs_notebook_add_page(_("Away / Idle"), NULL, away_page(), &p, NULL, a++); prefs_notebook_add_page(_("Away Messages"), NULL, away_message_page(), &c, &p, a++); +#if USE_PLUGINS + prefs_notebook_add_page(_("Plugins"), NULL, plugin_page(), &p, NULL, a++); +#endif } void show_prefs() |
From: Sean E. <sea...@us...> - 2002-09-26 07:37:54
|
Update of /cvsroot/gaim/gaim/plugins In directory usw-pr-cvs1:/tmp/cvs-serv29880/plugins Modified Files: PERL-HOWTO chatlist.c error.c events.c filectl.c gaim.pl gaiminc.c gtik.c iconaway.c mailchk.c notify.c raw.c simple.c spellchk.c Log Message: In the interest of continued progress, I pulled what's usable out of my development tree and am committing it. Here, we have gotten rid of the plugins dialog and perl menu under Tools and put them both in preferences. Perl scripts now work like plugins--you have to load them explicitly (it will probe $prefix/lib/gaim and $HOME/.gaim for them) and you can unload them (although right now, this is entirely unreliable) Oh, and I broke all your perl scripts. Sorry about that. Don't try fixing them yet, though--I'm gonna make unloading single scripts more reliable tommorow. I should also finish Phase Two tommorow as well. Index: PERL-HOWTO =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/PERL-HOWTO,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- PERL-HOWTO 28 Aug 2002 02:38:18 -0000 1.15 +++ PERL-HOWTO 26 Sep 2002 07:37:51 -0000 1.16 @@ -1,33 +1,42 @@ -This is really the wrong place for a HOWTO on writing perl scripts for gaim, -but there didn't seem to be a much better place. +So, you wanna write a perl script. -If you've ever written a perl script for X-Chat then you've basically written -one for gaim as well. perl.c in gaim's source is basically an exact copy of -X-Chat's perl.c file, with small modifications to suit Gaim rather than IRC. +Perl scripts in Gaim can be very useful. Although they can't directly manipulate +Gaim data like a plugin, or provide any sort of UI, they're portable, easy to develop +rapidly and extremely powerful when manipulating incoming and outgoing messages. -Basically the reason for including perl is based on the experience with the -plugins. X-Chat's docs on Perl Scripting sums it up nicely: - it's not quite as simple to stick a module together in C and make it - stable compared to the development time of perl code +This document assumes you know perl--Gaim perl scripts work exactly like normal perl +scripts, with a few extra commands you can use. -Plugins are more powerful as they can directly access gaim's functions and -variables; as such they should be used for things like modifying the UI or -when something takes quite a bit of trickery not offered by perl. But for -the most part things should be written in Perl. It's more stable than -plugins. +The first thing Gaim will do with your plugin (provided it's in $prefix/lib/gaim or +$HOME/.gaim/) is look for and call a function called "description". description() +gives Gaim the information it will use in the plugins dialog--script name, version, +your name--all sorts of good things. Let's look at an example: -There's a really quick simple perl script in this directory, gaim.pl, that -should show most of the functions. Most things should be self-explanatory. + sub description { + my($a, $b, $c, $d, $e, $f) = @_; + ("Example", "1.0", "An example Gaim perl script that does nothing + particularly useful:\n\t-Show a dialog on load\n\t-Set user idle for + 6,000 seconds\n\t-Greets people signing on with \"Hello\"\n\t-Informs + you when script has been loaded for one minute.", + "Eric Warmenhoven <eric\@warmenhoven.org>", "http://gaim.sf.net", + "/dev/null"); + } -There's one thing you need to be aware of in perl scripts for gaim. Gaim -supports multiple connections, and perl deals with them by using a unique -identifier for each of them (that's a fancy way of saying that perl scripts -use the memory address of the connection). +This pushes what's needed to the perl stack. What is all that stuff? + $a - Name + $b - Version + $c - Description + $d - Authors + $e - Webpage + $f - Icon (this is the path to an icon Gaim will use for your script) -Everything available in normal perl scripts should be available in gaim's -perl interface, so I'm not going to bother describing that. The important -things are the functions provided by gaim's internal GAIM module, which is -what most of this document is about. So, onto the functions. +It should be noted that this information will be formatted according to Pango's +markup language--a language akin to HTML. This is neat in that it lets you bold +and italicize your description and stuff, but it's important you take care to +properly escape stuff (notice the < in $d). + +Now, for the Gaim-specific perl functions (if you know x-chat scripts, you'll +feel right at home): GAIM::register(name, version, shutdownroutine, unused) Just like X-Chat. This is the first function your script should call. Index: chatlist.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/chatlist.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- chatlist.c 30 Aug 2002 03:17:21 -0000 1.13 +++ chatlist.c 26 Sep 2002 07:37:51 -0000 1.14 @@ -459,6 +459,17 @@ cp = NULL; } +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Chat List"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Allows you to add chat rooms to your buddy list."); + desc.authors = g_strdup("Eric Warmenhoven <er...@wa...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + char *name() { return "Chat List"; Index: error.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/error.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- error.c 1 Nov 2000 22:30:35 -0000 1.6 +++ error.c 26 Sep 2002 07:37:51 -0000 1.7 @@ -37,6 +37,17 @@ } } +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Error Tester"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("A plugin that causes error messages."); + desc.authors = g_strdup("Eric Warmehoven <er...@wa...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + char *name() { return "Error Tester " VERSION ; } Index: events.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/events.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- events.c 6 Aug 2001 21:47:17 -0000 1.6 +++ events.c 26 Sep 2002 07:37:51 -0000 1.7 @@ -142,6 +142,17 @@ return NULL; } +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Event Tester"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Test to see that all plugin events are working properly."); + desc.authors = g_strdup("Eric Warmehoven <er...@wa...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + char *name() { return "Event Test"; Index: filectl.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/filectl.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- filectl.c 29 Aug 2002 21:40:06 -0000 1.11 +++ filectl.c 26 Sep 2002 07:37:51 -0000 1.12 @@ -118,6 +118,17 @@ gtk_timeout_remove(check); } +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Gaim File Control"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Allows you to control Gaim by entering commands in aa file."); + desc.authors = g_strdup("Eric Warmehoven <er...@wa...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + char *name() { return "Gaim File Control"; } Index: gaim.pl =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/gaim.pl,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- gaim.pl 15 Oct 2001 19:52:44 -0000 1.4 +++ gaim.pl 26 Sep 2002 07:37:51 -0000 1.5 @@ -1,4 +1,4 @@ -GAIM::register("gaim test", "0.0.1", "goodbye", ""); +GAIM::register("Example", "1.0", "goodbye", ""); $ver = GAIM::get_info(0); @ids = GAIM::get_info(1); @@ -30,3 +30,9 @@ sub goodbye { GAIM::print("You Bastard!", "You killed Kenny!"); } + +sub description { + my($a, $b, $c, $d, $e, $f) = @_; + ("Example", "1.0", "An example Gaim perl script that does nothing particularly useful:\n\t-Show a dialog on load\n\t-Set user idle for 6,000 seconds\n\t-Greets people signing on with \"Hello\"\n\t-Informs you when script has been loaded for one minute.", "Eric Warmenhoven <eric\@warmenhoven.org>", "http://gaim.sf.net", "/dev/null"); + } + Index: gaiminc.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/gaiminc.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- gaiminc.c 1 Nov 2000 22:30:35 -0000 1.6 +++ gaiminc.c 26 Sep 2002 07:37:51 -0000 1.7 @@ -53,6 +53,23 @@ return NULL; } +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Demonstration"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup( + "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";); + desc.authors = g_strdup("Eric Warmehoven <er...@wa...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + + char *name() { return "Gaim Demonstration Plugin"; } Index: gtik.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/gtik.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- gtik.c 18 Oct 2001 12:12:36 -0000 1.5 +++ gtik.c 26 Sep 2002 07:37:51 -0000 1.6 @@ -593,7 +593,27 @@ /*-----------------------------------------------------------------*/ - char *description() { + + struct gaim_plugin_description desc; + struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Stock Ticker"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup( + " This program uses ghttp to connect to " + "a popular stock quote site, then downloads " + "and parses the html returned from the " + "site to scroll delayed quotes" + "\n\n The Gnome Stock Ticker is a free, Internet based application. These quotes are not " + "guaranteed to be timely or accurate. " + "Do not use the Gnome Stock Ticker for making investment decisions; it is for " + "informational purposes only."); + desc.authors = g_strdup("Jayson Lorenzen, Jim Garrison, Rached Blili"); + desc.url = g_strdup(WEBSITE); + return &desc; + } + + char *description() { return " This program uses ghttp to connect to " "a popular stock quote site, then downloads " Index: iconaway.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/iconaway.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- iconaway.c 29 Aug 2002 21:40:06 -0000 1.15 +++ iconaway.c 26 Sep 2002 07:37:51 -0000 1.16 @@ -33,6 +33,17 @@ return NULL; } +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Iconify on away"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Iconifies the away box and thee buddy list when you go away."); + desc.authors = g_strdup("Eric Warmenhoven <er...@wa...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + char *name() { return "Iconify On Away"; } Index: mailchk.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/mailchk.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- mailchk.c 16 Mar 2002 00:32:53 -0000 1.5 +++ mailchk.c 26 Sep 2002 07:37:51 -0000 1.6 @@ -116,6 +116,17 @@ mail = NULL; } +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Mail Checker"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Checks for new local mail."); + desc.authors = g_strdup("Eric Warmehoven <er...@wa...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + char *name() { return "Mail Check"; Index: notify.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/notify.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- notify.c 15 Sep 2002 03:40:47 -0000 1.14 +++ notify.c 26 Sep 2002 07:37:51 -0000 1.15 @@ -261,7 +261,7 @@ snprintf(buf, 1000, "%s/.gaim/.notify", getenv("HOME")); if (!(fp = fopen(buf, "w"))) { - do_error_dialog(_("Unable to write to config file"), _("Notify plugin"), GAIM_ERROR); + do_eror_dialog(_("Unable to write to config file"), _("Notify plugin"), GAIM_ERROR); return; } @@ -403,6 +403,17 @@ /* } */ c = c->next; } +} + +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Message Notification"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Provides a variety of ways of notifying you of unread messages."); + desc.authors = g_strdup("Etan Reisner <de...@ed...>"); + desc.url = g_strdup(WEBSITE); + return &desc; } char *name() { Index: raw.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/raw.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- raw.c 1 Dec 2001 02:14:47 -0000 1.2 +++ raw.c 26 Sep 2002 07:37:51 -0000 1.3 @@ -17,6 +17,18 @@ * gc->proto_data for MSN, TOC, and IRC connections can be cast to an int *. */ +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Raw Input"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Lets you send raw input to text-vased protocols (Jabber, MSN, IRC, TOC). Hit 'Enter' in the entry box to send. Watch the debug window."); + desc.authors = g_strdup("Eric Warmehoven <er...@wa...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + + char *name() { return "Raw"; Index: simple.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/simple.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- simple.c 15 Feb 2001 17:14:15 -0000 1.6 +++ simple.c 26 Sep 2002 07:37:51 -0000 1.7 @@ -20,6 +20,17 @@ printf("configuring plugin.\n"); } +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Simple Plugin"); + desc.version = g_strdup("1.0"); + desc.description = g_strdup("Tests to see that most things are working."); + desc.authors = g_strdup("Eric Warmehoven <er...@wa...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + char *name() { return "Simple Plugin Version 1.0"; } Index: spellchk.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/spellchk.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- spellchk.c 21 Dec 2001 10:23:03 -0000 1.22 +++ spellchk.c 26 Sep 2002 07:37:51 -0000 1.23 @@ -147,6 +147,17 @@ void gaim_plugin_remove() { } +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Text replacement"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Replaces text in outgoing messages according to user-defined rules."); + desc.authors = g_strdup("Eric Warmehoven <er...@wa...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + char *name() { return "IM Spell Check"; } |
From: Sean E. <sea...@us...> - 2002-09-26 07:37:54
|
Update of /cvsroot/gaim/gaim/plugins/ticker In directory usw-pr-cvs1:/tmp/cvs-serv29880/plugins/ticker Modified Files: ticker.c Log Message: In the interest of continued progress, I pulled what's usable out of my development tree and am committing it. Here, we have gotten rid of the plugins dialog and perl menu under Tools and put them both in preferences. Perl scripts now work like plugins--you have to load them explicitly (it will probe $prefix/lib/gaim and $HOME/.gaim for them) and you can unload them (although right now, this is entirely unreliable) Oh, and I broke all your perl scripts. Sorry about that. Don't try fixing them yet, though--I'm gonna make unloading single scripts more reliable tommorow. I should also finish Phase Two tommorow as well. Index: ticker.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/ticker/ticker.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- ticker.c 30 Aug 2002 03:17:21 -0000 1.3 +++ ticker.c 26 Sep 2002 07:37:51 -0000 1.4 @@ -408,7 +408,6 @@ gaim_signal_connect(h, event_signoff, signoff_cb, NULL); gaim_signal_connect(h, event_buddy_signoff, buddy_signoff_cb, NULL); gaim_signal_connect(h, event_buddy_away, away_cb, NULL); - gaim_signal_connect(h, event_buddy_back, away_cb, NULL); if (connections) BuddyTickerShow(); @@ -417,4 +416,14 @@ void gaim_plugin_remove() { gtk_widget_destroy(tickerwindow); +} +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("Ticker"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("A horizontal scrolling version of the buddy list."); + desc.authors = g_strdup("Syd Logan"); + desc.url = g_strdup(WEBSITE); + return &desc; } |
From: Sean E. <sea...@us...> - 2002-09-26 07:37:54
|
Update of /cvsroot/gaim/gaim In directory usw-pr-cvs1:/tmp/cvs-serv29880 Modified Files: ChangeLog configure.ac configure.in Log Message: In the interest of continued progress, I pulled what's usable out of my development tree and am committing it. Here, we have gotten rid of the plugins dialog and perl menu under Tools and put them both in preferences. Perl scripts now work like plugins--you have to load them explicitly (it will probe $prefix/lib/gaim and $HOME/.gaim for them) and you can unload them (although right now, this is entirely unreliable) Oh, and I broke all your perl scripts. Sorry about that. Don't try fixing them yet, though--I'm gonna make unloading single scripts more reliable tommorow. I should also finish Phase Two tommorow as well. Index: ChangeLog =================================================================== RCS file: /cvsroot/gaim/gaim/ChangeLog,v retrieving revision 1.546 retrieving revision 1.547 diff -u -d -r1.546 -r1.547 --- ChangeLog 16 Sep 2002 08:35:12 -0000 1.546 +++ ChangeLog 26 Sep 2002 07:37:51 -0000 1.547 @@ -26,7 +26,6 @@ * Updated desktop and window icons (Thanks Robert McQueen) * GTK2 Goodness: - Preferences dialog - - Plugins dialog (Ari Pollak) - GtkIMHtml, sorta (Ari Pollak, Christian Hammond) - Buddy Icons - IM Images @@ -74,6 +73,7 @@ * Docklet plugin--replaces the old GNOME applet. You'll need the Panel Notification Area applet for GNOME 2, or the patch from RedHat for KDE 3. (Thanks Robert McQueen) + * Plugins dialog and perl script menu merged into preferences. version 0.59 (06/24/2002): * Hungarian translation added (Thanks, Sutto Zoltan) Index: configure.ac =================================================================== RCS file: /cvsroot/gaim/gaim/configure.ac,v retrieving revision 1.81 retrieving revision 1.82 diff -u -d -r1.81 -r1.82 --- configure.ac 14 Sep 2002 23:27:25 -0000 1.81 +++ configure.ac 26 Sep 2002 07:37:51 -0000 1.82 @@ -120,11 +120,11 @@ AC_DEFINE(DEBUG) fi -AM_PATH_GLIB_2_0(1.3.0,,AC_MSG_ERROR([ +AM_PATH_GLIB_2_0(2.0.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_2_0(1.3.0,,AC_MSG_ERROR([ +AM_PATH_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/.])) Index: configure.in =================================================================== RCS file: /cvsroot/gaim/gaim/configure.in,v retrieving revision 1.130 retrieving revision 1.131 diff -u -d -r1.130 -r1.131 --- configure.in 14 Sep 2002 23:27:26 -0000 1.130 +++ configure.in 26 Sep 2002 07:37:51 -0000 1.131 @@ -120,11 +120,11 @@ fi -AM_PATH_GLIB_2_0(1.3.0,,AC_MSG_ERROR([ +AM_PATH_GLIB_2_0(2.0.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_2_0(1.3.0,,AC_MSG_ERROR([ +AM_PATH_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/.])) |
From: Sean E. <sea...@us...> - 2002-09-26 07:37:54
|
Update of /cvsroot/gaim/gaim/plugins/docklet In directory usw-pr-cvs1:/tmp/cvs-serv29880/plugins/docklet Modified Files: docklet.c Log Message: In the interest of continued progress, I pulled what's usable out of my development tree and am committing it. Here, we have gotten rid of the plugins dialog and perl menu under Tools and put them both in preferences. Perl scripts now work like plugins--you have to load them explicitly (it will probe $prefix/lib/gaim and $HOME/.gaim for them) and you can unload them (although right now, this is entirely unreliable) Oh, and I broke all your perl scripts. Sorry about that. Don't try fixing them yet, though--I'm gonna make unloading single scripts more reliable tommorow. I should also finish Phase Two tommorow as well. Index: docklet.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/docklet/docklet.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- docklet.c 25 Sep 2002 14:27:18 -0000 1.7 +++ docklet.c 26 Sep 2002 07:37:51 -0000 1.8 @@ -147,10 +147,6 @@ g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(show_prefs), NULL); gtk_menu_append(GTK_MENU(menu), entry); - entry = gtk_menu_item_new_with_label(_("Plugins")); - g_signal_connect(GTK_WIDGET(entry), "activate", G_CALLBACK(show_plugins), NULL); - gtk_menu_append(GTK_MENU(menu), entry); - entry = gtk_separator_menu_item_new(); gtk_menu_append(GTK_MENU(menu), entry); @@ -331,6 +327,7 @@ gaim_signal_connect(handle, event_signoff, gaim_signoff, NULL); gaim_signal_connect(handle, event_connecting, gaim_connecting, NULL); gaim_signal_connect(handle, event_away, gaim_away, NULL); + gaim_signal_connect(handle, event_im_displayed_rcvd, gaim_im_recv, NULL); gaim_signal_connect(handle, event_im_recv, gaim_im_recv, NULL); gaim_signal_connect(handle, event_buddy_signon, gaim_buddy_signon, NULL); gaim_signal_connect(handle, event_buddy_signoff, gaim_buddy_signoff, NULL); @@ -378,6 +375,18 @@ debug_printf("Docklet: removed\n"); } + +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("System Tray Docklet"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Interacts with a System Tray applet (in GNOME or KDE, for example) to display the current status of Gaim, allow fast access to commonly used functions, and to toggle display of the buddy list or login window."); + desc.authors = g_strdup("Robert McQueen <rob...@de...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + const char *name() { return _("System Tray Docklet"); |
From: Luke S. <lsc...@us...> - 2002-09-25 14:27:22
|
Update of /cvsroot/gaim/gaim/plugins/docklet In directory usw-pr-cvs1:/tmp/cvs-serv19551/plugins/docklet Modified Files: docklet.c Log Message: I reversed the last patch. it stopped gaim from compiling, and while i can easily see that PLUGIN_API_VERSION isn't defined, i don't know what was up with the illegal usage of a struct. Index: docklet.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/docklet/docklet.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- docklet.c 25 Sep 2002 07:22:28 -0000 1.6 +++ docklet.c 25 Sep 2002 14:27:18 -0000 1.7 @@ -331,7 +331,6 @@ gaim_signal_connect(handle, event_signoff, gaim_signoff, NULL); gaim_signal_connect(handle, event_connecting, gaim_connecting, NULL); gaim_signal_connect(handle, event_away, gaim_away, NULL); - gaim_signal_connect(handle, event_im_displayed_rcvd, gaim_im_recv, NULL); gaim_signal_connect(handle, event_im_recv, gaim_im_recv, NULL); gaim_signal_connect(handle, event_buddy_signon, gaim_buddy_signon, NULL); gaim_signal_connect(handle, event_buddy_signoff, gaim_buddy_signoff, NULL); @@ -379,23 +378,11 @@ debug_printf("Docklet: removed\n"); } - -struct gaim_plugin_description desc; -struct gaim_plugin_description *gaim_plugin_desc() { - desc.api_version = PLUGIN_API_VERSION; - desc.name = g_strdup("System Tray Docklet"); - desc.version = g_strdup(VERSION); - desc.description = g_strdup("Interacts with a System Tray applet (in GNOME or KDE, for example) to display the current status of Gaim, allow fast access to commonly used functions, and to toggle display of the buddy list or login window."); - desc.authors = g_strdup("Robert McQueen <rob...@de...>"); - desc.url = g_strdup(WEBSITE); - return &desc; -} - const char *name() { - return _("System Tray Docklet 2"); + return _("System Tray Docklet"); } const char *description() { - return _(" 22 Interacts with a System Tray applet (in GNOME or KDE, for example) to display the current status of Gaim, allow fast access to commonly used functions, and to toggle display of the buddy list or login window."); + return _("Interacts with a System Tray applet (in GNOME or KDE, for example) to display the current status of Gaim, allow fast access to commonly used functions, and to toggle display of the buddy list or login window."); } |
From: Luke S. <lsc...@us...> - 2002-09-25 13:19:48
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv19551/src Modified Files: conversation.c Log Message: the last patch fixed most of the problems with typing notification. this finishes the job. thanks faceprint Index: conversation.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/conversation.c,v retrieving revision 1.380 retrieving revision 1.381 diff -u -d -r1.380 -r1.381 --- conversation.c 25 Sep 2002 06:39:30 -0000 1.380 +++ conversation.c 25 Sep 2002 13:19:44 -0000 1.381 @@ -1066,8 +1066,8 @@ if (c && (!(misc_options & OPT_MISC_STEALTH_TYPING)) && !c->is_chat) { char *txt = gtk_editable_get_chars(GTK_EDITABLE(c->entry), 0, -1); - if ((strlen(txt) == 0 && gdk_keyval_to_unicode(event->keyval) && isprint(event->keyval)) || - (c->type_again != 0 && time(NULL) > c->type_again)) { + if (gdk_keyval_to_unicode(event->keyval) && + (strlen(txt) == 0 || (c->type_again != 0 && time(NULL) > c->type_again))) { int timeout = serv_send_typing(c->gc, c->name, TRUE); if (timeout) c->type_again = time(NULL) + timeout; |
From: Sean E. <sea...@us...> - 2002-09-25 07:22:31
|
Update of /cvsroot/gaim/gaim/plugins/docklet In directory usw-pr-cvs1:/tmp/cvs-serv9604/plugins/docklet Modified Files: docklet.c Log Message: fix by Derek Ireland--and by myself before him ;) Index: docklet.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/docklet/docklet.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- docklet.c 16 Sep 2002 08:35:16 -0000 1.5 +++ docklet.c 25 Sep 2002 07:22:28 -0000 1.6 @@ -331,6 +331,7 @@ gaim_signal_connect(handle, event_signoff, gaim_signoff, NULL); gaim_signal_connect(handle, event_connecting, gaim_connecting, NULL); gaim_signal_connect(handle, event_away, gaim_away, NULL); + gaim_signal_connect(handle, event_im_displayed_rcvd, gaim_im_recv, NULL); gaim_signal_connect(handle, event_im_recv, gaim_im_recv, NULL); gaim_signal_connect(handle, event_buddy_signon, gaim_buddy_signon, NULL); gaim_signal_connect(handle, event_buddy_signoff, gaim_buddy_signoff, NULL); @@ -378,11 +379,23 @@ debug_printf("Docklet: removed\n"); } + +struct gaim_plugin_description desc; +struct gaim_plugin_description *gaim_plugin_desc() { + desc.api_version = PLUGIN_API_VERSION; + desc.name = g_strdup("System Tray Docklet"); + desc.version = g_strdup(VERSION); + desc.description = g_strdup("Interacts with a System Tray applet (in GNOME or KDE, for example) to display the current status of Gaim, allow fast access to commonly used functions, and to toggle display of the buddy list or login window."); + desc.authors = g_strdup("Robert McQueen <rob...@de...>"); + desc.url = g_strdup(WEBSITE); + return &desc; +} + const char *name() { - return _("System Tray Docklet"); + return _("System Tray Docklet 2"); } const char *description() { - return _("Interacts with a System Tray applet (in GNOME or KDE, for example) to display the current status of Gaim, allow fast access to commonly used functions, and to toggle display of the buddy list or login window."); + return _(" 22 Interacts with a System Tray applet (in GNOME or KDE, for example) to display the current status of Gaim, allow fast access to commonly used functions, and to toggle display of the buddy list or login window."); } |
From: Luke S. <lsc...@us...> - 2002-09-25 06:39:34
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv30174/src Modified Files: conversation.c Log Message: typing notification fixes from faceprint! Index: conversation.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/conversation.c,v retrieving revision 1.379 retrieving revision 1.380 diff -u -d -r1.379 -r1.380 --- conversation.c 18 Sep 2002 17:06:27 -0000 1.379 +++ conversation.c 25 Sep 2002 06:39:30 -0000 1.380 @@ -1066,7 +1066,7 @@ if (c && (!(misc_options & OPT_MISC_STEALTH_TYPING)) && !c->is_chat) { char *txt = gtk_editable_get_chars(GTK_EDITABLE(c->entry), 0, -1); - if ((strlen(txt) == 0 && event->keyval < 256 && isprint(event->keyval)) || + if ((strlen(txt) == 0 && gdk_keyval_to_unicode(event->keyval) && isprint(event->keyval)) || (c->type_again != 0 && time(NULL) > c->type_again)) { int timeout = serv_send_typing(c->gc, c->name, TRUE); if (timeout) @@ -1080,6 +1080,7 @@ serv_send_typing(c->gc, c->name, FALSE); } else if (GTK_OLD_EDITABLE(c->entry)->selection_start_pos == 0) { if (GTK_OLD_EDITABLE(c->entry)->selection_end_pos == strlen(txt) && + strlen(txt) > 0 && (event->keyval == GDK_BackSpace || event->keyval == GDK_Delete)) serv_send_typing(c->gc, c->name, FALSE); } |