Fri, 25 Apr 2003 06:47:33 +0000
[gaim-migrate @ 5573]
I had a damn good commit message, but it was eaten. Let's try it again.
Announcing, Gaim Plugin API version 2.0, or GPAPIV2.0 for short.
There are lots'a cool thingies here.
Okay now, this isn't as cool as the previous message, but:
1) There's now a single entry function for all plugin types. It returns a
detailed information structure on the plugin. This removes a lot of the
ugliness from old plugins. Oh yeah, libicq wasn't converted to this, so
if you use it, well, you shouldn't have used it anyway, but now you
can't! bwahahaha. Use AIM/ICQ.
2) There are now 3 types of plugins: Standard, Loader, and Protocol
plugins.
Standard plugins are, well, standard, compiled plugins.
Loader plugins load other plugins. For example, the perl support is now
a loader plugin. It loads perl scripts. In the future, we'll have
Ruby and Python loader plugins.
Protocol plugins are, well, protocol plugins... yeah...
3) Plugins have unique IDs, so they can be referred to or automatically
updated from a plugin database in the future. Neat, huh?
4) Plugins will have dependency support in the future, and can be hidden,
so if you have, say, a logging core plugin, it won't have to show up,
but then you load the GTK+ logging plugin and it'll auto-load the core
plugin. Core/UI split plugins!
5) There will eventually be custom plugin signals and RPC of some sort, for
the core/ui split plugins.
So, okay, back up .gaimrc.
I'd like to thank my parents for their support, javabsp for helping convert
a bunch of protocol plugins, and Etan for helping convert a bunch of
standard plugins.
Have fun. If you have any problems, please let me know, but you probably
won't have anything major happen. You will have to convert your plugins,
though, and I'm not guaranteeing that all perl scripts will still work.
I'll end up changing the perl script API eventually, so I know they won't
down the road. Don't worry, though. It'll be mass cool.
faceprint wants me to just commit the damn code already. So, here we go!!!
..
..
I need a massage. From a young, cute girl. Are there any young, cute girls
in the audience? IM me plz k thx.
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
1 | /* System tray icon (aka docklet) plugin for Gaim |
| 3510 | 2 | * Copyright (C) 2002 Robert McQueen <robot101@debian.org> |
| 3 | * Inspired by a similar plugin by: | |
| 4 | * John (J5) Palmieri <johnp@martianrock.com> | |
| 5 | * | |
| 6 | * This program is free software; you can redistribute it and/or | |
| 7 | * modify it under the terms of the GNU General Public License as | |
| 8 | * published by the Free Software Foundation; either version 2 of the | |
| 9 | * License, or (at your option) any later version. | |
| 10 | * | |
| 11 | * This program is distributed in the hope that it will be useful, but | |
| 12 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 14 | * General Public License for more details. | |
| 15 | * | |
| 16 | * You should have received a copy of the GNU General Public License | |
| 17 | * along with this program; if not, write to the Free Software | |
| 18 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
| 19 | * 02111-1307, USA. | |
| 20 | */ | |
| 21 | ||
| 22 | /* todo (in order of importance): | |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
23 | - unify the queue so we can have a global away without the dialog |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
24 | - handle and update tooltips to show your current accounts/queued messages? |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
25 | - show a count of queued messages in the unified queue |
| 3510 | 26 | - dernyi's account status menu in the right click |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
27 | - optional pop up notices when GNOME2's system-tray-applet supports it */ |
| 3510 | 28 | |
| 29 | /* includes */ | |
| 30 | #include <gtk/gtk.h> | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
31 | #include "gtkplugin.h" |
| 3510 | 32 | #include "gaim.h" |
| 4561 | 33 | #include "sound.h" |
| 3510 | 34 | #include "eggtrayicon.h" |
| 4729 | 35 | #include "gtklist.h" |
| 3510 | 36 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
37 | #define DOCKLET_PLUGIN_ID "gtk-docklet" |
| 3867 | 38 | |
| 3510 | 39 | /* types */ |
| 40 | enum docklet_status { | |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
41 | offline, |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
42 | offline_connecting, |
| 3510 | 43 | online, |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
44 | online_connecting, |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
45 | online_pending, |
| 3510 | 46 | away, |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
47 | away_pending |
| 3510 | 48 | }; |
| 49 | ||
| 50 | /* functions */ | |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
51 | static gboolean docklet_create(); |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
52 | static gboolean docklet_update_status(); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
53 | static gboolean plugin_unload(GaimPlugin *plugin); |
| 3510 | 54 | |
| 55 | /* globals */ | |
|
3513
32f8b1104d15
[gaim-migrate @ 3585]
Robert McQueen <robot101@debian.org>
parents:
3512
diff
changeset
|
56 | static EggTrayIcon *docklet = NULL; |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
57 | static GtkWidget *image = NULL; |
| 3510 | 58 | static enum docklet_status status; |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
59 | static enum docklet_status icon; |
| 3510 | 60 | |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
61 | static void docklet_toggle_mute(GtkWidget *toggle, void *data) { |
| 4561 | 62 | gaim_sound_set_mute(GTK_CHECK_MENU_ITEM(toggle)->active); |
| 3510 | 63 | } |
| 64 | ||
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
65 | static void docklet_toggle_queue(GtkWidget *widget, void *data) { |
|
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
66 | away_options ^= OPT_AWAY_QUEUE_UNREAD; |
|
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
67 | save_prefs(); |
| 3510 | 68 | } |
| 3570 | 69 | |
| 70 | /* static void docklet_toggle_blist_show(GtkWidget *widget, void *data) { | |
| 71 | blist_options ^= OPT_BLIST_APP_BUDDY_SHOW; | |
| 72 | save_prefs(); | |
| 73 | } */ | |
| 74 | ||
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
75 | static void docklet_flush_queue() { |
| 3570 | 76 | if (unread_message_queue) { |
|
4274
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
77 | purge_away_queue(&unread_message_queue); |
| 3570 | 78 | } |
| 3510 | 79 | } |
| 80 | ||
| 81 | static void docklet_menu(GdkEventButton *event) { | |
|
3513
32f8b1104d15
[gaim-migrate @ 3585]
Robert McQueen <robot101@debian.org>
parents:
3512
diff
changeset
|
82 | static GtkWidget *menu = NULL; |
| 3512 | 83 | GtkWidget *entry; |
| 3510 | 84 | |
| 85 | if (menu) { | |
| 86 | gtk_widget_destroy(menu); | |
| 87 | } | |
| 88 | ||
| 89 | menu = gtk_menu_new(); | |
| 90 | ||
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
91 | switch (status) { |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
92 | case offline: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
93 | case offline_connecting: |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
94 | gaim_new_item_from_stock(menu, _("Auto-login"), GAIM_STOCK_SIGN_ON, G_CALLBACK(auto_login), NULL, 0, 0, NULL); |
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
95 | break; |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
96 | default: |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
97 | gaim_new_item_from_stock(menu, _("New Message.."), GAIM_STOCK_IM, G_CALLBACK(show_im_dialog), NULL, 0, 0, NULL); |
|
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
98 | gaim_new_item_from_stock(menu, _("Join A Chat..."), GAIM_STOCK_CHAT, G_CALLBACK(join_chat), NULL, 0, 0, NULL); |
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
99 | break; |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
100 | } |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
101 | |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
102 | switch (status) { |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
103 | case offline: |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
104 | case offline_connecting: |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
105 | break; |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
106 | case online: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
107 | case online_connecting: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
108 | case online_pending: { |
| 3510 | 109 | GtkWidget *docklet_awaymenu; |
| 110 | GSList *awy = NULL; | |
| 111 | struct away_message *a = NULL; | |
| 112 | ||
| 113 | docklet_awaymenu = gtk_menu_new(); | |
| 114 | awy = away_messages; | |
| 115 | ||
| 116 | while (awy) { | |
| 117 | a = (struct away_message *)awy->data; | |
| 118 | ||
| 119 | entry = gtk_menu_item_new_with_label(a->name); | |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
120 | g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(do_away_message), a); |
| 4635 | 121 | gtk_menu_shell_append(GTK_MENU_SHELL(docklet_awaymenu), entry); |
| 3510 | 122 | |
| 123 | awy = g_slist_next(awy); | |
| 124 | } | |
| 125 | ||
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
126 | if (away_messages) |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
127 | gaim_separator(docklet_awaymenu); |
| 3510 | 128 | |
| 129 | entry = gtk_menu_item_new_with_label(_("New...")); | |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
130 | g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(create_away_mess), NULL); |
| 4635 | 131 | gtk_menu_shell_append(GTK_MENU_SHELL(docklet_awaymenu), entry); |
| 3510 | 132 | |
| 133 | entry = gtk_menu_item_new_with_label(_("Away")); | |
| 3512 | 134 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(entry), docklet_awaymenu); |
| 4635 | 135 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry); |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
136 | } break; |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
137 | case away: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
138 | case away_pending: |
| 3510 | 139 | entry = gtk_menu_item_new_with_label(_("Back")); |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
140 | g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(do_im_back), NULL); |
| 4635 | 141 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry); |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
142 | break; |
| 3510 | 143 | } |
| 144 | ||
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
145 | gaim_separator(menu); |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
146 | |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
147 | entry = gtk_check_menu_item_new_with_label(_("Mute Sounds")); |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
148 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(entry), gaim_sound_get_mute()); |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
149 | g_signal_connect(G_OBJECT(entry), "toggled", G_CALLBACK(docklet_toggle_mute), NULL); |
| 4635 | 150 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry); |
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
151 | |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
152 | gaim_new_item_from_stock(menu, _("File Transfers..."), GAIM_STOCK_FILE_TRANSFER, G_CALLBACK(gaim_show_xfer_dialog), NULL, 0, 0, NULL); |
|
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
153 | gaim_new_item_from_stock(menu, _("Accounts..."), GAIM_STOCK_ACCOUNTS, G_CALLBACK(account_editor), NULL, 0, 0, NULL); |
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
154 | gaim_new_item_from_stock(menu, _("Preferences..."), GTK_STOCK_PREFERENCES, G_CALLBACK(show_prefs), NULL, 0, 0, NULL); |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
155 | |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
156 | gaim_separator(menu); |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
157 | |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
158 | switch (status) { |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
159 | case offline: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
160 | case offline_connecting: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
161 | break; |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
162 | default: |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
163 | gaim_new_item_from_stock(menu, _("Signoff"), GTK_STOCK_CLOSE, G_CALLBACK(signoff_all), NULL, 0, 0, 0); |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
164 | break; |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
165 | } |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
166 | |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
167 | gaim_new_item_from_stock(menu, _("Quit"), GTK_STOCK_QUIT, G_CALLBACK(do_quit), NULL, 0, 0, 0); |
| 3510 | 168 | |
| 169 | gtk_widget_show_all(menu); | |
| 170 | gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, event->button, event->time); | |
| 171 | } | |
| 172 | ||
| 173 | static void docklet_clicked(GtkWidget *button, GdkEventButton *event, void *data) { | |
|
3939
27b0a88f2122
[gaim-migrate @ 4115]
Robert McQueen <robot101@debian.org>
parents:
3867
diff
changeset
|
174 | if (event->type != GDK_BUTTON_PRESS) |
|
27b0a88f2122
[gaim-migrate @ 4115]
Robert McQueen <robot101@debian.org>
parents:
3867
diff
changeset
|
175 | return; |
|
27b0a88f2122
[gaim-migrate @ 4115]
Robert McQueen <robot101@debian.org>
parents:
3867
diff
changeset
|
176 | |
| 3510 | 177 | switch (event->button) { |
| 178 | case 1: | |
| 3517 | 179 | if (unread_message_queue) { |
| 3570 | 180 | docklet_flush_queue(); |
| 3517 | 181 | docklet_update_status(); |
| 3570 | 182 | } else { |
| 4698 | 183 | gaim_gtk_blist_docklet_toggle(); |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
184 | } |
| 3510 | 185 | break; |
| 186 | case 2: | |
| 187 | break; | |
| 188 | case 3: | |
| 189 | docklet_menu(event); | |
| 190 | break; | |
| 191 | } | |
| 192 | } | |
| 193 | ||
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
194 | static void docklet_update_icon() { |
|
4250
79326f3059c4
[gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents:
4157
diff
changeset
|
195 | const gchar *icon_name = NULL; |
| 3510 | 196 | |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
197 | switch (icon) { |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
198 | case offline: |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
199 | icon_name = GAIM_STOCK_ICON_OFFLINE; |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
200 | break; |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
201 | case offline_connecting: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
202 | case online_connecting: |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
203 | icon_name = GAIM_STOCK_ICON_CONNECT; |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
204 | break; |
| 3510 | 205 | case online: |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
206 | icon_name = GAIM_STOCK_ICON_ONLINE; |
| 3510 | 207 | break; |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
208 | case online_pending: |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
209 | icon_name = GAIM_STOCK_ICON_ONLINE_MSG; |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
210 | break; |
| 3510 | 211 | case away: |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
212 | icon_name = GAIM_STOCK_ICON_AWAY; |
| 3510 | 213 | break; |
| 214 | case away_pending: | |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
215 | icon_name = GAIM_STOCK_ICON_AWAY_MSG; |
| 3510 | 216 | break; |
| 217 | } | |
| 218 | ||
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
219 | gtk_image_set_from_stock(GTK_IMAGE(image), icon_name, GTK_ICON_SIZE_LARGE_TOOLBAR); |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
220 | } |
| 3510 | 221 | |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
222 | static gboolean docklet_blink_icon() { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
223 | if (status == online_pending) { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
224 | if (status == icon) { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
225 | /* last icon was the right one... let's change it */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
226 | icon = online; |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
227 | } else { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
228 | /* last icon was the wrong one, change it back */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
229 | icon = online_pending; |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
230 | } |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
231 | } else if (status == away_pending) { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
232 | if (status == icon) { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
233 | /* last icon was the right one... let's change it */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
234 | icon = away; |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
235 | } else { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
236 | /* last icon was the wrong one, change it back */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
237 | icon = away_pending; |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
238 | } |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
239 | } else { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
240 | /* no messages, stop blinking */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
241 | return FALSE; |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
242 | } |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
243 | |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
244 | docklet_update_icon(); |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
245 | |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
246 | return TRUE; /* keep blinking */ |
| 3510 | 247 | } |
| 248 | ||
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
249 | static gboolean docklet_update_status() { |
| 3510 | 250 | enum docklet_status oldstatus; |
| 251 | ||
| 252 | oldstatus = status; | |
| 253 | ||
| 254 | if (connections) { | |
| 3517 | 255 | if (unread_message_queue) { |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
256 | status = online_pending; |
| 3517 | 257 | } else if (awaymessage) { |
| 3510 | 258 | if (message_queue) { |
| 259 | status = away_pending; | |
| 260 | } else { | |
| 261 | status = away; | |
| 262 | } | |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
263 | } else if (connecting_count) { |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
264 | status = online_connecting; |
| 3510 | 265 | } else { |
| 266 | status = online; | |
| 267 | } | |
| 268 | } else { | |
| 3517 | 269 | if (connecting_count) { |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
270 | status = offline_connecting; |
| 3517 | 271 | } else { |
| 272 | status = offline; | |
| 273 | } | |
| 3510 | 274 | } |
| 275 | ||
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
276 | /* update the icon if we changed status */ |
| 3510 | 277 | if (status != oldstatus) { |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
278 | icon = status; |
| 3510 | 279 | docklet_update_icon(); |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
280 | |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
281 | /* and schedule the blinker function if messages are pending */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
282 | if (status == online_pending || status == away_pending) { |
|
4274
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
283 | g_timeout_add(500, docklet_blink_icon, &docklet); |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
284 | } |
| 3510 | 285 | } |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
286 | |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
287 | return FALSE; /* for when we're called by the glib idle handler */ |
| 3510 | 288 | } |
| 289 | ||
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
290 | static void docklet_embedded(GtkWidget *widget, void *data) { |
|
4840
79551218e881
[gaim-migrate @ 5165]
Robert McQueen <robot101@debian.org>
parents:
4729
diff
changeset
|
291 | debug_printf("Tray Icon: embedded\n"); |
| 4698 | 292 | gaim_gtk_blist_docklet_add(); |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
293 | } |
|
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
294 | |
|
4274
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
295 | static void docklet_remove_callbacks() { |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
296 | debug_printf("Tray Icon: removing callbacks"); |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
297 | |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
298 | while (g_source_remove_by_user_data(&docklet)) { |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
299 | debug_printf("."); |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
300 | } |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
301 | |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
302 | debug_printf("\n"); |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
303 | } |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
304 | |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
305 | static void docklet_destroyed(GtkWidget *widget, void *data) { |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
306 | debug_printf("Tray Icon: destroyed\n"); |
|
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
307 | |
| 4698 | 308 | gaim_gtk_blist_docklet_remove(); |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
309 | |
| 3570 | 310 | docklet_flush_queue(); |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
311 | |
|
4274
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
312 | docklet_remove_callbacks(); |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
313 | |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
314 | g_object_unref(G_OBJECT(docklet)); |
|
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
315 | docklet = NULL; |
|
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
316 | |
|
4274
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
317 | g_idle_add(docklet_create, &docklet); |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
318 | } |
|
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
319 | |
|
4274
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
320 | static gboolean docklet_create() { |
| 3510 | 321 | GtkWidget *box; |
| 322 | ||
| 3570 | 323 | if (docklet) { |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
324 | /* if this is being called when a tray icon exists, it's because |
|
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
325 | something messed up. try destroying it before we proceed, |
|
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
326 | although docklet_refcount may be all hosed. hopefully won't happen. */ |
|
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
327 | debug_printf("Tray Icon: trying to create icon but it already exists?\n"); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
328 | plugin_unload(NULL); |
| 3510 | 329 | } |
| 330 | ||
| 331 | docklet = egg_tray_icon_new("Gaim"); | |
| 332 | box = gtk_event_box_new(); | |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
333 | image = gtk_image_new(); |
| 3510 | 334 | |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
335 | g_signal_connect(G_OBJECT(docklet), "embedded", G_CALLBACK(docklet_embedded), NULL); |
|
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
336 | g_signal_connect(G_OBJECT(docklet), "destroy", G_CALLBACK(docklet_destroyed), NULL); |
|
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
337 | g_signal_connect(G_OBJECT(box), "button-press-event", G_CALLBACK(docklet_clicked), NULL); |
| 3510 | 338 | |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
339 | gtk_container_add(GTK_CONTAINER(box), image); |
| 3510 | 340 | gtk_container_add(GTK_CONTAINER(docklet), box); |
| 341 | gtk_widget_show_all(GTK_WIDGET(docklet)); | |
| 342 | ||
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
343 | /* ref the docklet before we bandy it about the place */ |
|
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
344 | g_object_ref(G_OBJECT(docklet)); |
| 3510 | 345 | docklet_update_status(); |
| 346 | docklet_update_icon(); | |
| 347 | ||
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
348 | debug_printf("Tray Icon: created\n"); |
|
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
349 | |
|
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
350 | return FALSE; /* for when we're called by the glib idle handler */ |
| 3510 | 351 | } |
| 352 | ||
| 353 | static void gaim_signon(struct gaim_connection *gc, void *data) { | |
| 354 | docklet_update_status(); | |
| 355 | } | |
| 356 | ||
| 357 | static void gaim_signoff(struct gaim_connection *gc, void *data) { | |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
358 | /* do this when idle so that if the prpl was connecting |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
359 | and was cancelled, we register that connecting_count |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
360 | has returned to 0 */ |
|
4274
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
361 | g_idle_add(docklet_update_status, &docklet); |
| 3510 | 362 | } |
| 363 | ||
| 4491 | 364 | static void gaim_connecting(struct gaim_account *account, void *data) { |
| 3510 | 365 | docklet_update_status(); |
| 366 | } | |
| 367 | ||
| 368 | static void gaim_away(struct gaim_connection *gc, char *state, char *message, void *data) { | |
| 369 | /* we only support global away. this is the way it is, ok? */ | |
| 370 | docklet_update_status(); | |
| 371 | } | |
| 372 | ||
|
4274
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
373 | static void gaim_im_recv(struct gaim_connection *gc, char **who, char **what, void *data) { |
| 3510 | 374 | /* if message queuing while away is enabled, this event could be the first |
|
4274
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
375 | message so we need to see if the status (and hence icon) needs changing. |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
376 | do this when idle so that all message processing is completed, queuing |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
377 | etc, before we run. */ |
|
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
378 | g_idle_add(docklet_update_status, &docklet); |
| 3510 | 379 | } |
| 380 | ||
| 3570 | 381 | /* static void gaim_buddy_signon(struct gaim_connection *gc, char *who, void *data) { |
| 3510 | 382 | } |
| 383 | ||
| 384 | static void gaim_buddy_signoff(struct gaim_connection *gc, char *who, void *data) { | |
| 385 | } | |
| 386 | ||
| 387 | static void gaim_buddy_away(struct gaim_connection *gc, char *who, void *data) { | |
| 388 | } | |
| 389 | ||
| 390 | static void gaim_buddy_back(struct gaim_connection *gc, char *who, void *data) { | |
| 391 | } | |
| 392 | ||
| 393 | static void gaim_new_conversation(char *who, void *data) { | |
| 3570 | 394 | } */ |
| 3510 | 395 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
396 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
397 | plugin_load(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
398 | { |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
399 | docklet_create(NULL); |
| 3510 | 400 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
401 | gaim_signal_connect(plugin, event_signon, gaim_signon, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
402 | gaim_signal_connect(plugin, event_signoff, gaim_signoff, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
403 | gaim_signal_connect(plugin, event_connecting, gaim_connecting, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
404 | gaim_signal_connect(plugin, event_away, gaim_away, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
405 | gaim_signal_connect(plugin, event_im_recv, gaim_im_recv, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
406 | /* gaim_signal_connect(plugin, event_buddy_signon, gaim_buddy_signon, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
407 | gaim_signal_connect(plugin, event_buddy_signoff, gaim_buddy_signoff, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
408 | gaim_signal_connect(plugin, event_buddy_away, gaim_buddy_away, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
409 | gaim_signal_connect(plugin, event_buddy_back, gaim_buddy_back, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
410 | gaim_signal_connect(plugin, event_new_conversation, gaim_new_conversation, NULL); */ |
| 3510 | 411 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
412 | return TRUE; |
| 3510 | 413 | } |
| 414 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
415 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
416 | plugin_unload(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
417 | { |
| 3570 | 418 | if (GTK_WIDGET_VISIBLE(docklet)) { |
| 4698 | 419 | gaim_gtk_blist_docklet_remove(); |
| 3570 | 420 | } |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
421 | |
| 3570 | 422 | docklet_flush_queue(); |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
423 | |
|
4274
2309c547cd6e
[gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents:
4261
diff
changeset
|
424 | docklet_remove_callbacks(); |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
425 | |
| 3570 | 426 | g_signal_handlers_disconnect_by_func(G_OBJECT(docklet), G_CALLBACK(docklet_destroyed), NULL); |
| 427 | gtk_widget_destroy(GTK_WIDGET(docklet)); | |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
428 | |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
429 | g_object_unref(G_OBJECT(docklet)); |
|
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
430 | docklet = NULL; |
|
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
431 | |
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
432 | /* do this while gaim has no other way to toggle the global mute */ |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
433 | gaim_sound_set_mute(FALSE); |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
434 | |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
435 | debug_printf("Tray Icon: removed\n"); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
436 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
437 | return TRUE; |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
438 | } |
|
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
439 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
440 | static GtkWidget * |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
441 | get_config_frame(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
442 | { |
| 3570 | 443 | GtkWidget *frame; |
| 444 | GtkWidget *vbox, *hbox; | |
| 445 | GtkWidget *toggle; | |
| 3517 | 446 | |
| 3570 | 447 | frame = gtk_vbox_new(FALSE, 18); |
| 448 | gtk_container_set_border_width(GTK_CONTAINER(frame), 12); | |
| 449 | ||
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
450 | vbox = make_frame(frame, _("Tray Icon Configuration")); |
| 3570 | 451 | hbox = gtk_hbox_new(FALSE, 18); |
| 452 | gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
| 3517 | 453 | |
| 3570 | 454 | /* toggle = gtk_check_button_new_with_mnemonic(_("_Automatically show buddy list on sign on")); |
| 455 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), blist_options & OPT_BLIST_APP_BUDDY_SHOW); | |
| 456 | g_signal_connect(G_OBJECT(toggle), "clicked", G_CALLBACK(docklet_toggle_blist_show), NULL); | |
| 457 | gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); */ | |
| 3517 | 458 | |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
459 | toggle = gtk_check_button_new_with_mnemonic(_("_Hide new messages until tray icon is clicked")); |
| 3570 | 460 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), away_options & OPT_AWAY_QUEUE_UNREAD); |
| 461 | g_signal_connect(G_OBJECT(toggle), "clicked", G_CALLBACK(docklet_toggle_queue), NULL); | |
| 462 | gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | |
| 463 | ||
| 464 | gtk_widget_show_all(frame); | |
| 465 | return frame; | |
| 3517 | 466 | } |
| 3570 | 467 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
468 | static GaimGtkPluginUiInfo ui_info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
469 | { |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
470 | get_config_frame |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
471 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
472 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
473 | static GaimPluginInfo info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
474 | { |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
475 | 2, /**< api_version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
476 | GAIM_PLUGIN_STANDARD, /**< type */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
477 | GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
478 | 0, /**< flags */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
479 | NULL, /**< dependencies */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
480 | GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
481 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
482 | DOCKLET_PLUGIN_ID, /**< id */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
483 | N_("System Tray Icon"), /**< name */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
484 | VERSION, /**< version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
485 | /** summary */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
486 | N_("Displays an icon for Gaim in the system tray."), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
487 | /** description */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
488 | N_("Interacts with a Notification Area applet (in GNOME or KDE, " |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
489 | "for example) to display the current status of Gaim, allow fast " |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
490 | "access to commonly used functions, and to toggle display of the " |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
491 | "buddy list or login window. Also allows messages to be queued " |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
492 | "until the icon is clicked, similar to ICQ."), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
493 | "Robert McQueen <robot101@debian.org>", /**< author */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
494 | WEBSITE, /**< homepage */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
495 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
496 | plugin_load, /**< load */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
497 | plugin_unload, /**< unload */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
498 | NULL, /**< destroy */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
499 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
500 | &ui_info, /**< ui_info */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
501 | NULL /**< extra_info */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
502 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
503 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
504 | static void |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
505 | __init_plugin(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
506 | { |
| 3551 | 507 | } |
| 3510 | 508 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
509 | GAIM_INIT_PLUGIN(docklet, __init_plugin, info); |