Mon, 18 Aug 2003 01:03:43 +0000
[gaim-migrate @ 6999]
Removed the old event system and replaced it with a much better signal
system. There will most likely be some bugs in this, but it seems to be
working for now. Plugins can now generate their own signals, and other
plugins can find those plugins and connect to them. This could give
plugins a form of IPC. It's also useful for other things. It's rather
flexible, except for the damn marshalling, but there's no way around that
that I or the glib people can see.
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
1 | /* |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
2 | * System tray icon (aka docklet) plugin for Gaim |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
3 | * |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
4 | * Copyright (C) 2002-3 Robert McQueen <robot101@debian.org> |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
5 | * Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com> |
| 3510 | 6 | * Inspired by a similar plugin by: |
| 7 | * John (J5) Palmieri <johnp@martianrock.com> | |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
8 | * |
| 3510 | 9 | * This program is free software; you can redistribute it and/or |
| 10 | * modify it under the terms of the GNU General Public License as | |
| 11 | * published by the Free Software Foundation; either version 2 of the | |
| 12 | * License, or (at your option) any later version. | |
| 13 | * | |
| 14 | * This program is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| 17 | * General Public License for more details. | |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
18 | * |
| 3510 | 19 | * You should have received a copy of the GNU General Public License |
| 20 | * along with this program; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
| 22 | * 02111-1307, USA. | |
| 23 | */ | |
| 24 | ||
| 25 | /* todo (in order of importance): | |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
26 | - 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
|
27 | - handle and update tooltips to show your current accounts/queued messages? |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
28 | - show a count of queued messages in the unified queue |
| 3510 | 29 | - dernyi's account status menu in the right click |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
30 | - optional pop up notices when GNOME2's system-tray-applet supports it */ |
| 3510 | 31 | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
32 | #include "internal.h" |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6310
diff
changeset
|
33 | #include "gtkinternal.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
34 | |
|
6179
4df73df94250
[gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents:
6138
diff
changeset
|
35 | #include "core.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
36 | #include "debug.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
37 | #include "prefs.h" |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
38 | #include "signals.h" |
| 4561 | 39 | #include "sound.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
40 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
41 | #include "gtkaccount.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
42 | #include "gtkblist.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
43 | #include "gtkft.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
44 | #include "gtkplugin.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
45 | #include "gtkprefs.h" |
| 5684 | 46 | #include "gtksound.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
47 | #include "gtkutils.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
48 | #include "stock.h" |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
49 | #include "docklet.h" |
| 3510 | 50 | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
51 | #include "gaim.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
52 | #include "ui.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5684
diff
changeset
|
53 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
54 | /* globals */ |
| 3867 | 55 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
56 | GaimPlugin *handle = NULL; |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
57 | static struct docklet_ui_ops *ui_ops = NULL; |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
58 | static enum docklet_status status = offline; |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
59 | #ifdef _WIN32 |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
60 | __declspec(dllimport) GSList *unread_message_queue; |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
61 | __declspec(dllimport) GSList *away_messages; |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
62 | __declspec(dllimport) struct away_message *awaymessage; |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
63 | __declspec(dllimport) GSList *message_queue; |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
64 | #endif |
| 3510 | 65 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
66 | /* private functions */ |
| 3510 | 67 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
68 | static void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
69 | docklet_toggle_mute(GtkWidget *toggle, void *data) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
70 | { |
| 5684 | 71 | gaim_gtk_sound_set_mute(GTK_CHECK_MENU_ITEM(toggle)->active); |
| 3510 | 72 | } |
| 73 | ||
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
74 | static void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
75 | docklet_set_bool(GtkWidget *widget, const char *key) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
76 | { |
|
5554
a197dfd0d8b3
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
77 | gaim_prefs_set_bool(key, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))); |
| 3510 | 78 | } |
| 3570 | 79 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
80 | static void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
81 | docklet_auto_login() |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
82 | { |
|
5905
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5872
diff
changeset
|
83 | gaim_accounts_auto_login(GAIM_GTK_UI); |
|
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5872
diff
changeset
|
84 | } |
|
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5872
diff
changeset
|
85 | |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
86 | #ifdef _WIN32 |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
87 | /* This is a workaround for a bug in windows GTK+.. Clicking outside of the |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
88 | menu does not get rid of it, so instead we get rid of it as soon as the |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
89 | pointer leaves the menu. */ |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
90 | static gboolean |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
91 | docklet_menu_leave(GtkWidget *menu, GdkEventCrossing *event, void *data) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
92 | { |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
93 | if(event->detail == GDK_NOTIFY_ANCESTOR) { |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
94 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "menu leave-notify-event\n"); |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
95 | gtk_menu_popdown(GTK_MENU(menu)); |
| 3570 | 96 | } |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
97 | return FALSE; |
| 3510 | 98 | } |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
99 | #endif |
| 3510 | 100 | |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
101 | static void docklet_menu() { |
|
3513
32f8b1104d15
[gaim-migrate @ 3585]
Robert McQueen <robot101@debian.org>
parents:
3512
diff
changeset
|
102 | static GtkWidget *menu = NULL; |
| 3512 | 103 | GtkWidget *entry; |
| 3510 | 104 | |
| 105 | if (menu) { | |
| 106 | gtk_widget_destroy(menu); | |
| 107 | } | |
| 108 | ||
| 109 | menu = gtk_menu_new(); | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
110 | |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
111 | switch (status) { |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
112 | case offline: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
113 | case offline_connecting: |
|
5905
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5872
diff
changeset
|
114 | gaim_new_item_from_stock(menu, _("Auto-login"), GAIM_STOCK_SIGN_ON, G_CALLBACK(docklet_auto_login), NULL, 0, 0, NULL); |
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
115 | break; |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
116 | default: |
|
5024
3b5412e4b483
[gaim-migrate @ 5361]
Robert McQueen <robot101@debian.org>
parents:
4840
diff
changeset
|
117 | 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
|
118 | 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
|
119 | break; |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
120 | } |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
121 | |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
122 | switch (status) { |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
123 | case offline: |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
124 | case offline_connecting: |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
125 | break; |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
126 | case online: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
127 | case online_connecting: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
128 | case online_pending: { |
| 3510 | 129 | GtkWidget *docklet_awaymenu; |
| 130 | GSList *awy = NULL; | |
| 131 | struct away_message *a = NULL; | |
| 132 | ||
| 133 | docklet_awaymenu = gtk_menu_new(); | |
| 134 | awy = away_messages; | |
| 135 | ||
| 136 | while (awy) { | |
| 137 | a = (struct away_message *)awy->data; | |
| 138 | ||
| 139 | entry = gtk_menu_item_new_with_label(a->name); | |
|
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_away_message), a); |
| 4635 | 141 | gtk_menu_shell_append(GTK_MENU_SHELL(docklet_awaymenu), entry); |
| 3510 | 142 | |
| 143 | awy = g_slist_next(awy); | |
| 144 | } | |
| 145 | ||
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
146 | if (away_messages) |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
147 | gaim_separator(docklet_awaymenu); |
| 3510 | 148 | |
| 149 | entry = gtk_menu_item_new_with_label(_("New...")); | |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
150 | g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(create_away_mess), NULL); |
| 4635 | 151 | gtk_menu_shell_append(GTK_MENU_SHELL(docklet_awaymenu), entry); |
| 3510 | 152 | |
| 153 | entry = gtk_menu_item_new_with_label(_("Away")); | |
| 3512 | 154 | gtk_menu_item_set_submenu(GTK_MENU_ITEM(entry), docklet_awaymenu); |
| 4635 | 155 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry); |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
156 | } break; |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
157 | case away: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
158 | case away_pending: |
| 3510 | 159 | entry = gtk_menu_item_new_with_label(_("Back")); |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
160 | g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(do_im_back), NULL); |
| 4635 | 161 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry); |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
162 | break; |
| 3510 | 163 | } |
| 164 | ||
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
165 | gaim_separator(menu); |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
166 | |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
167 | entry = gtk_check_menu_item_new_with_label(_("Mute Sounds")); |
| 5684 | 168 | gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(entry), gaim_gtk_sound_get_mute()); |
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
169 | g_signal_connect(G_OBJECT(entry), "toggled", G_CALLBACK(docklet_toggle_mute), NULL); |
| 4635 | 170 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry); |
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
171 | |
| 5669 | 172 | gaim_new_item_from_stock(menu, _("File Transfers"), GAIM_STOCK_FILE_TRANSFER, G_CALLBACK(gaim_show_xfer_dialog), NULL, 0, 0, NULL); |
| 6138 | 173 | gaim_new_item_from_stock(menu, _("Accounts"), GAIM_STOCK_ACCOUNTS, G_CALLBACK(gaim_gtk_accounts_window_show), NULL, 0, 0, NULL); |
| 5669 | 174 | gaim_new_item_from_stock(menu, _("Preferences"), GTK_STOCK_PREFERENCES, G_CALLBACK(gaim_gtk_prefs_show), NULL, 0, 0, NULL); |
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
175 | |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
176 | gaim_separator(menu); |
|
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
177 | |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
178 | switch (status) { |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
179 | case offline: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
180 | case offline_connecting: |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
181 | break; |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
182 | default: |
| 5607 | 183 | gaim_new_item_from_stock(menu, _("Signoff"), GTK_STOCK_CLOSE, G_CALLBACK(gaim_connections_disconnect_all), NULL, 0, 0, 0); |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
184 | break; |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
185 | } |
|
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
186 | |
|
6179
4df73df94250
[gaim-migrate @ 6664]
Christian Hammond <chipx86@chipx86.com>
parents:
6138
diff
changeset
|
187 | gaim_new_item_from_stock(menu, _("Quit"), GTK_STOCK_QUIT, G_CALLBACK(gaim_core_quit), NULL, 0, 0, 0); |
| 3510 | 188 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
189 | #ifdef _WIN32 |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
190 | g_signal_connect(menu, "leave-notify-event", G_CALLBACK(docklet_menu_leave), NULL); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
191 | #endif |
| 3510 | 192 | gtk_widget_show_all(menu); |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
193 | gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time()); |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
194 | } |
| 3510 | 195 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
196 | static gboolean |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
197 | docklet_blink_icon() |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
198 | { |
|
6211
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
199 | static gboolean blinked = FALSE; |
|
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
200 | enum docklet_status icon = status; |
|
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
201 | |
|
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
202 | blinked = !blinked; |
|
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
203 | |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
204 | if (status == online_pending) { |
|
6211
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
205 | if (blinked) { |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
206 | /* last icon was the right one... let's change it */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
207 | icon = online; |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
208 | } else { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
209 | /* last icon was the wrong one, change it back */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
210 | icon = online_pending; |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
211 | } |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
212 | } else if (status == away_pending) { |
|
6211
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
213 | if (blinked) { |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
214 | /* last icon was the right one... let's change it */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
215 | icon = away; |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
216 | } else { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
217 | /* last icon was the wrong one, change it back */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
218 | icon = away_pending; |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
219 | } |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
220 | } else { |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
221 | /* no messages, stop blinking */ |
|
6211
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
222 | blinked = FALSE; |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
223 | return FALSE; |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
224 | } |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
225 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
226 | if (ui_ops->update_icon) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
227 | ui_ops->update_icon(icon); |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
228 | |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
229 | return TRUE; /* keep blinking */ |
| 3510 | 230 | } |
| 231 | ||
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
232 | static gboolean |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
233 | docklet_update_status() |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
234 | { |
| 3510 | 235 | enum docklet_status oldstatus; |
| 236 | ||
| 237 | oldstatus = status; | |
| 238 | ||
|
5584
b824439e352c
[gaim-migrate @ 5988]
Robert McQueen <robot101@debian.org>
parents:
5554
diff
changeset
|
239 | if (gaim_connections_get_all()) { |
| 3517 | 240 | if (unread_message_queue) { |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
241 | status = online_pending; |
| 3517 | 242 | } else if (awaymessage) { |
| 3510 | 243 | if (message_queue) { |
| 244 | status = away_pending; | |
| 245 | } else { | |
| 246 | status = away; | |
| 247 | } | |
|
5905
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5872
diff
changeset
|
248 | } else if (gaim_connections_get_connecting()) { |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
249 | status = online_connecting; |
| 3510 | 250 | } else { |
| 251 | status = online; | |
| 252 | } | |
| 253 | } else { | |
|
5905
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5872
diff
changeset
|
254 | if (gaim_connections_get_connecting()) { |
|
4157
5d3d2f6517ae
[gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents:
4108
diff
changeset
|
255 | status = offline_connecting; |
| 3517 | 256 | } else { |
| 257 | status = offline; | |
| 258 | } | |
| 3510 | 259 | } |
| 260 | ||
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
261 | /* update the icon if we changed status */ |
| 3510 | 262 | if (status != oldstatus) { |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
263 | if (ui_ops->update_icon) |
|
6211
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
264 | ui_ops->update_icon(status); |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
265 | |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
266 | /* and schedule the blinker function if messages are pending */ |
|
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
267 | if (status == online_pending || status == away_pending) { |
|
6310
efd8a4cbff53
[gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents:
6309
diff
changeset
|
268 | g_timeout_add(500, docklet_blink_icon, &handle); |
|
4261
cc35d7c0582f
<Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents:
4250
diff
changeset
|
269 | } |
| 3510 | 270 | } |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
271 | |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
272 | return FALSE; /* for when we're called by the glib idle handler */ |
| 3510 | 273 | } |
| 274 | ||
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
275 | void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
276 | docklet_flush_queue() |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
277 | { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
278 | if (unread_message_queue) { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
279 | purge_away_queue(&unread_message_queue); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
280 | } |
| 3510 | 281 | } |
| 282 | ||
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
283 | void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
284 | docklet_remove_callbacks() |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
285 | { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
286 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "removing callbacks"); |
| 3510 | 287 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
288 | while (g_source_remove_by_user_data(&handle)) { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
289 | gaim_debug(GAIM_DEBUG_INFO, NULL, "."); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
290 | } |
| 3510 | 291 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
292 | gaim_debug(GAIM_DEBUG_INFO, NULL, "\n"); |
| 3510 | 293 | } |
| 294 | ||
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
295 | /* public code */ |
| 3510 | 296 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
297 | void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
298 | docklet_clicked(int button_type) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
299 | { |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
300 | switch (button_type) { |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
301 | case 1: |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
302 | if (unread_message_queue) { |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
303 | docklet_flush_queue(); |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
304 | } else { |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
305 | gaim_gtk_blist_docklet_toggle(); |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
306 | } |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
307 | break; |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
308 | case 2: |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
309 | switch (status) { |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
310 | case offline: |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
311 | case offline_connecting: |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
312 | docklet_auto_login(); |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
313 | break; |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
314 | default: |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
315 | break; |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
316 | } |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
317 | break; |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
318 | case 3: |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
319 | docklet_menu(); |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
320 | break; |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
321 | } |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
322 | } |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
323 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
324 | void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
325 | docklet_embedded() |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
326 | { |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
327 | gaim_gtk_blist_docklet_add(); |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
328 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
329 | docklet_update_status(); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
330 | if (ui_ops->update_icon) |
|
6211
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
331 | ui_ops->update_icon(status); |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
332 | } |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
333 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
334 | void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
335 | docklet_remove(gboolean visible) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
336 | { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
337 | if (visible) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
338 | gaim_gtk_blist_docklet_remove(); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
339 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
340 | docklet_flush_queue(); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
341 | } |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
342 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
343 | void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
344 | docklet_set_ui_ops(struct docklet_ui_ops *ops) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
345 | { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
346 | ui_ops = ops; |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
347 | } |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
348 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
349 | /* callbacks */ |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
350 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
351 | static void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
352 | gaim_signon(GaimConnection *gc, void *data) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
353 | { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
354 | docklet_update_status(); |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
355 | } |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
356 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
357 | static void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
358 | gaim_signoff(GaimConnection *gc, void *data) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
359 | { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
360 | /* do this when idle so that if the prpl was connecting |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
361 | and was cancelled, we register that connecting_count |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
362 | has returned to 0 */ |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
363 | /* no longer necessary because Chip decided that us plugins |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
364 | didn't need to know if an account was connecting or not |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
365 | g_idle_add(docklet_update_status, &docklet); */ |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
366 | docklet_update_status(); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
367 | } |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
368 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
369 | static void |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
370 | gaim_connecting(GaimAccount *account, void *data) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
371 | { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
372 | docklet_update_status(); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
373 | } |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
374 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
375 | static void |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
376 | gaim_away(GaimAccount *account, char *state, char *message, void *data) |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
377 | { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
378 | /* we only support global away. this is the way it is, ok? */ |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
379 | docklet_update_status(); |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
380 | } |
|
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
381 | |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
382 | static gboolean |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
383 | gaim_im_recv(GaimAccount *account, GaimConversation *conv, char **who, |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
384 | char **what, int *flags, void *data) |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
385 | { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
386 | /* if message queuing while away is enabled, this event could be the first |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
387 | message so we need to see if the status (and hence icon) needs changing. |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
388 | do this when idle so that all message processing is completed, queuing |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
389 | etc, before we run. */ |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
390 | g_idle_add(docklet_update_status, &handle); |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
391 | |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
392 | return FALSE; |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
393 | } |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
394 | |
|
6211
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
395 | static void |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
396 | gaim_new_conversation(GaimConversation *conv, void *data) |
|
6211
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
397 | { |
|
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
398 | /* queue a callback here so if the queue is being |
|
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
399 | flushed, we stop flashing. thanks javabsp. */ |
|
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
400 | g_idle_add(docklet_update_status, &handle); |
|
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
401 | } |
|
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
402 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
403 | /* static void gaim_buddy_signon(GaimConnection *gc, char *who, void *data) { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
404 | } |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
405 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
406 | static void gaim_buddy_signoff(GaimConnection *gc, char *who, void *data) { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
407 | } |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
408 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
409 | static void gaim_buddy_away(GaimConnection *gc, char *who, void *data) { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
410 | } |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
411 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
412 | static void gaim_buddy_back(GaimConnection *gc, char *who, void *data) { |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
413 | } */ |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
414 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
415 | /* plugin glue */ |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
416 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
417 | #define DOCKLET_PLUGIN_ID "gtk-docklet" |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
418 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
419 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
420 | plugin_load(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
421 | { |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
422 | void *conn_handle = gaim_connections_get_handle(); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
423 | void *conv_handle = gaim_conversations_get_handle(); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
424 | void *accounts_handle = gaim_accounts_get_handle(); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
425 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
426 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "plugin loaded\n"); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
427 | |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
428 | handle = plugin; |
|
6077
a4e87d8f61a0
[gaim-migrate @ 6536]
Herman Bloggs <herman@bluedigits.com>
parents:
6063
diff
changeset
|
429 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
430 | docklet_ui_init(); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
431 | if (ui_ops->create) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
432 | ui_ops->create(); |
| 3510 | 433 | |
|
6485
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
434 | gaim_signal_connect(conn_handle, "signed-on", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
435 | plugin, GAIM_CALLBACK(gaim_signon), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
436 | gaim_signal_connect(conn_handle, "signed-off", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
437 | plugin, GAIM_CALLBACK(gaim_signoff), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
438 | gaim_signal_connect(accounts_handle, "account-connecting", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
439 | plugin, GAIM_CALLBACK(gaim_connecting), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
440 | gaim_signal_connect(accounts_handle, "account-away", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
441 | plugin, GAIM_CALLBACK(gaim_away), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
442 | gaim_signal_connect(conv_handle, "received-im-msg", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
443 | plugin, GAIM_CALLBACK(gaim_im_recv), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
444 | gaim_signal_connect(conv_handle, "conversation-created", |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
445 | plugin, GAIM_CALLBACK(gaim_new_conversation), NULL); |
|
3c7ba18e32f1
[gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
446 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
447 | /* gaim_signal_connect(plugin, event_buddy_signon, gaim_buddy_signon, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
448 | gaim_signal_connect(plugin, event_buddy_signoff, gaim_buddy_signoff, NULL); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
449 | gaim_signal_connect(plugin, event_buddy_away, gaim_buddy_away, NULL); |
|
6211
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
450 | gaim_signal_connect(plugin, event_buddy_back, gaim_buddy_back, NULL); */ |
| 3510 | 451 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
452 | return TRUE; |
| 3510 | 453 | } |
| 454 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
455 | static gboolean |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
456 | plugin_unload(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
457 | { |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
458 | if (ui_ops->destroy) |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
459 | ui_ops->destroy(); |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
460 | |
|
5905
62a6bdbc09b7
[gaim-migrate @ 6337]
Robert McQueen <robot101@debian.org>
parents:
5872
diff
changeset
|
461 | /* XXX: do this while gaim has no other way to toggle the global mute */ |
| 5684 | 462 | gaim_gtk_sound_set_mute(FALSE); |
|
6211
f54c1fa4071e
[gaim-migrate @ 6697]
Robert McQueen <robot101@debian.org>
parents:
6208
diff
changeset
|
463 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
464 | docklet_remove_callbacks(); |
|
4567
47e81b4a9d36
[gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents:
4561
diff
changeset
|
465 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
466 | gaim_debug(GAIM_DEBUG_INFO, "tray icon", "plugin unloaded\n"); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
467 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
468 | return TRUE; |
|
3554
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
469 | } |
|
2e890297b051
[gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents:
3551
diff
changeset
|
470 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
471 | static GtkWidget * |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
472 | plugin_config_frame(GaimPlugin *plugin) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
473 | { |
| 3570 | 474 | GtkWidget *frame; |
| 475 | GtkWidget *vbox, *hbox; | |
| 476 | GtkWidget *toggle; | |
|
5554
a197dfd0d8b3
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
477 | static const char *qmpref = "/plugins/gtk/docklet/queue_messages"; |
| 3517 | 478 | |
| 3570 | 479 | frame = gtk_vbox_new(FALSE, 18); |
| 480 | gtk_container_set_border_width(GTK_CONTAINER(frame), 12); | |
| 481 | ||
|
5530
ba1ad464b56f
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5234
diff
changeset
|
482 | vbox = gaim_gtk_make_frame(frame, _("Tray Icon Configuration")); |
| 3570 | 483 | hbox = gtk_hbox_new(FALSE, 18); |
| 484 | gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | |
| 3517 | 485 | |
|
4093
af4e3909a513
[gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents:
3939
diff
changeset
|
486 | toggle = gtk_check_button_new_with_mnemonic(_("_Hide new messages until tray icon is clicked")); |
|
5554
a197dfd0d8b3
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
487 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), gaim_prefs_get_bool(qmpref)); |
|
a197dfd0d8b3
[gaim-migrate @ 5955]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
488 | g_signal_connect(G_OBJECT(toggle), "clicked", G_CALLBACK(docklet_set_bool), (void *)qmpref); |
| 3570 | 489 | gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); |
| 490 | ||
| 491 | gtk_widget_show_all(frame); | |
| 492 | return frame; | |
| 3517 | 493 | } |
| 3570 | 494 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
495 | static GaimGtkPluginUiInfo ui_info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
496 | { |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
497 | plugin_config_frame |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
498 | }; |
|
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 | static GaimPluginInfo info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
501 | { |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
502 | 2, /**< api_version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
503 | GAIM_PLUGIN_STANDARD, /**< type */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
504 | GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
505 | 0, /**< flags */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
506 | NULL, /**< dependencies */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
507 | GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
508 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
509 | DOCKLET_PLUGIN_ID, /**< id */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
510 | N_("System Tray Icon"), /**< name */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
511 | VERSION, /**< version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
512 | /** summary */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
513 | N_("Displays an icon for Gaim in the system tray."), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
514 | /** description */ |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
515 | N_("Displays a system tray icon (in GNOME, KDE or Windows for example) " |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
516 | "to show the current status of Gaim, allow fast access to commonly " |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
517 | "used functions, and to toggle display of the buddy list or login " |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
518 | "window. Also allows messages to be queued until the icon is " |
|
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
519 | "clicked, similar to ICQ."), |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
520 | "Robert McQueen <robot101@debian.org>", /**< author */ |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6310
diff
changeset
|
521 | GAIM_WEBSITE, /**< homepage */ |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
522 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
523 | plugin_load, /**< load */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
524 | plugin_unload, /**< unload */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
525 | NULL, /**< destroy */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
526 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
527 | &ui_info, /**< ui_info */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
528 | NULL /**< extra_info */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
529 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
530 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
531 | static void |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
532 | plugin_init(GaimPlugin *plugin) |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5024
diff
changeset
|
533 | { |
|
6226
1c2ede7dc0fa
[gaim-migrate @ 6719]
Christian Hammond <chipx86@chipx86.com>
parents:
6211
diff
changeset
|
534 | gaim_prefs_add_none("/plugins/gtk/docklet"); |
|
1c2ede7dc0fa
[gaim-migrate @ 6719]
Christian Hammond <chipx86@chipx86.com>
parents:
6211
diff
changeset
|
535 | gaim_prefs_add_bool("/plugins/gtk/docklet/queue_messages", FALSE); |
| 3551 | 536 | } |
| 3510 | 537 | |
|
6208
46464ee45f48
[gaim-migrate @ 6694]
Robert McQueen <robot101@debian.org>
parents:
6179
diff
changeset
|
538 | GAIM_INIT_PLUGIN(docklet, plugin_init, info) |