plugins/docklet/docklet.c

Tue, 11 Mar 2003 00:09:45 +0000

author
Sean Egan <seanegan@pidgin.im>
date
Tue, 11 Mar 2003 00:09:45 +0000
changeset 4698
da492b4191c1
parent 4635
475ccd9dc3ac
child 4729
7521e221beb7
permissions
-rw-r--r--

[gaim-migrate @ 5009]
The docklet's back.

4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
1 /* System tray icon (aka docklet) plugin for Gaim
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
2 * Copyright (C) 2002 Robert McQueen <robot101@debian.org>
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
3 * Inspired by a similar plugin by:
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
4 * John (J5) Palmieri <johnp@martianrock.com>
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
5 *
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
7 * modify it under the terms of the GNU General Public License as
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
8 * published by the Free Software Foundation; either version 2 of the
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
9 * License, or (at your option) any later version.
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
10 *
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful, but
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
14 * General Public License for more details.
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
15 *
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
19 * 02111-1307, USA.
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
20 */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
21
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
22 /* todo (in order of importance):
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
23 - check removing the icon factory actually frees the icons
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
24 - 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
25 - handle and update tooltips to show your current accounts/queued messages?
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
26 - show a count of queued messages in the unified queue
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
27 - dernyi's account status menu in the right click
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
28 - optional pop up notices when GNOME2's system-tray-applet supports it */
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
29
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
30 /* includes */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
31 #include <gtk/gtk.h>
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
32 #include "gaim.h"
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4491
diff changeset
33 #include "sound.h"
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
34 #include "eggtrayicon.h"
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
35
3867
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3773
diff changeset
36 #ifndef GAIM_PLUGINS
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3773
diff changeset
37 #define GAIM_PLUGINS
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3773
diff changeset
38 #endif
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3773
diff changeset
39
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
40 /* types */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
41 enum docklet_status {
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
42 offline,
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
43 offline_connecting,
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
44 online,
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
45 online_connecting,
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
46 online_pending,
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
47 away,
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
48 away_pending
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
49 };
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
50
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
51 /* functions */
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
52 static gboolean docklet_create();
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
53 static gboolean docklet_update_status();
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
54 void gaim_plugin_remove();
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
55
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
56 /* globals */
3513
32f8b1104d15 [gaim-migrate @ 3585]
Robert McQueen <robot101@debian.org>
parents: 3512
diff changeset
57 static EggTrayIcon *docklet = NULL;
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
58 static GtkWidget *image = NULL;
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
59 static GtkIconFactory *icon_factory = NULL;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
60 static enum docklet_status status;
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
61 static enum docklet_status icon;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
62
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
63 static void docklet_toggle_mute(GtkWidget *toggle, void *data) {
4561
2a82628d7345 [gaim-migrate @ 4842]
Nathan Walp <nwalp@pidgin.im>
parents: 4491
diff changeset
64 gaim_sound_set_mute(GTK_CHECK_MENU_ITEM(toggle)->active);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
65 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
66
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
67 static void docklet_toggle_queue(GtkWidget *widget, void *data) {
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
68 away_options ^= OPT_AWAY_QUEUE_UNREAD;
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
69 save_prefs();
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
70 }
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
71
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
72 /* static void docklet_toggle_blist_show(GtkWidget *widget, void *data) {
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
73 blist_options ^= OPT_BLIST_APP_BUDDY_SHOW;
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
74 save_prefs();
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
75 } */
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
76
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
77 static void docklet_flush_queue() {
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
78 if (unread_message_queue) {
4274
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
79 purge_away_queue(&unread_message_queue);
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
80 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
81 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
82
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
83 static void docklet_menu(GdkEventButton *event) {
3513
32f8b1104d15 [gaim-migrate @ 3585]
Robert McQueen <robot101@debian.org>
parents: 3512
diff changeset
84 static GtkWidget *menu = NULL;
3512
0748b330d4ec [gaim-migrate @ 3584]
Zyk
parents: 3510
diff changeset
85 GtkWidget *entry;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
86
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
87 if (menu) {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
88 gtk_widget_destroy(menu);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
89 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
90
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
91 menu = gtk_menu_new();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
92
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
93 switch (status) {
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
94 case offline:
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
95 case offline_connecting:
4567
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
96 entry = gtk_menu_item_new_with_label(_("Auto-login"));
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
97 g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(auto_login), NULL);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
98 gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry);
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 default:
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
101 gaim_new_item_from_stock(menu, _("New Message.."), GTK_STOCK_CONVERT, G_CALLBACK(show_im_dialog), NULL, 0, 0, NULL);
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
102 gaim_new_item_from_stock(menu, _("Join A Chat..."), GTK_STOCK_JUMP_TO, G_CALLBACK(join_chat), NULL, 0, 0, NULL);
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
103 break;
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
104 }
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
105
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
106 switch (status) {
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
107 case offline:
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
108 case offline_connecting:
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
109 break;
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
110 case online:
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
111 case online_connecting:
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
112 case online_pending: {
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
113 GtkWidget *docklet_awaymenu;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
114 GSList *awy = NULL;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
115 struct away_message *a = NULL;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
116
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
117 docklet_awaymenu = gtk_menu_new();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
118 awy = away_messages;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
119
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
120 while (awy) {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
121 a = (struct away_message *)awy->data;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
122
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
123 entry = gtk_menu_item_new_with_label(a->name);
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
124 g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(do_away_message), a);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
125 gtk_menu_shell_append(GTK_MENU_SHELL(docklet_awaymenu), entry);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
126
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
127 awy = g_slist_next(awy);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
128 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
129
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
130 if (away_messages)
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
131 gaim_separator(docklet_awaymenu);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
132
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
133 entry = gtk_menu_item_new_with_label(_("New..."));
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
134 g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(create_away_mess), NULL);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
135 gtk_menu_shell_append(GTK_MENU_SHELL(docklet_awaymenu), entry);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
136
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
137 entry = gtk_menu_item_new_with_label(_("Away"));
3512
0748b330d4ec [gaim-migrate @ 3584]
Zyk
parents: 3510
diff changeset
138 gtk_menu_item_set_submenu(GTK_MENU_ITEM(entry), docklet_awaymenu);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
139 gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry);
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
140 } break;
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
141 case away:
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
142 case away_pending:
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
143 entry = gtk_menu_item_new_with_label(_("Back"));
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
144 g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(do_im_back), NULL);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
145 gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry);
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
146 break;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
147 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
148
4567
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
149 gaim_separator(menu);
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
150
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
151 entry = gtk_check_menu_item_new_with_label(_("Mute Sounds"));
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
152 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
153 g_signal_connect(G_OBJECT(entry), "toggled", G_CALLBACK(docklet_toggle_mute), NULL);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
154 gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry);
4567
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
155
4698
da492b4191c1 [gaim-migrate @ 5009]
Sean Egan <seanegan@pidgin.im>
parents: 4635
diff changeset
156 gaim_new_item_from_stock(menu, _("File Transfers..."), GTK_STOCK_REVERT_TO_SAVED, G_CALLBACK(gaim_show_xfer_dialog), NULL, 0, 0, NULL);
4567
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
157 gaim_new_item_from_pixbuf(menu, _("Accounts..."), "accounts-menu.png", G_CALLBACK(account_editor), NULL, 0, 0, NULL);
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
158 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
159
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
160 gaim_separator(menu);
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
161
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
162 switch (status) {
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
163 case offline:
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
164 case offline_connecting:
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
165 break;
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
166 default:
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
167 entry = gtk_menu_item_new_with_label(_("Signoff"));
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
168 g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(signoff_all), NULL);
4635
475ccd9dc3ac [gaim-migrate @ 4942]
Nathan Walp <nwalp@pidgin.im>
parents: 4606
diff changeset
169 gtk_menu_shell_append(GTK_MENU_SHELL(menu), entry);
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
170 break;
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
171 }
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
172
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
173 gaim_new_item_from_stock(menu, _("Quit"), GTK_STOCK_QUIT, G_CALLBACK(do_quit), NULL, 0, 0, 0);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
174
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
175 gtk_widget_show_all(menu);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
176 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, event->button, event->time);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
177 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
178
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
179 static void docklet_clicked(GtkWidget *button, GdkEventButton *event, void *data) {
3939
27b0a88f2122 [gaim-migrate @ 4115]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
180 if (event->type != GDK_BUTTON_PRESS)
27b0a88f2122 [gaim-migrate @ 4115]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
181 return;
27b0a88f2122 [gaim-migrate @ 4115]
Robert McQueen <robot101@debian.org>
parents: 3867
diff changeset
182
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
183 switch (event->button) {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
184 case 1:
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
185 if (unread_message_queue) {
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
186 docklet_flush_queue();
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
187 docklet_update_status();
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
188 } else {
4698
da492b4191c1 [gaim-migrate @ 5009]
Sean Egan <seanegan@pidgin.im>
parents: 4635
diff changeset
189 gaim_gtk_blist_docklet_toggle();
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
190 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
191 break;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
192 case 2:
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
193 break;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
194 case 3:
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
195 docklet_menu(event);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
196 break;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
197 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
198 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
199
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
200 static void docklet_update_icon() {
4250
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
201 const gchar *icon_name = NULL;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
202
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
203 switch (icon) {
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
204 case offline:
4250
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
205 icon_name = "gaim-docklet-offline";
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
206 break;
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
207 case offline_connecting:
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
208 case online_connecting:
4250
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
209 icon_name = "gaim-docklet-connect";
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
210 break;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
211 case online:
4250
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
212 icon_name = "gaim-docklet-online";
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
213 break;
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
214 case online_pending:
4250
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
215 icon_name = "gaim-docklet-msgunread";
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
216 break;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
217 case away:
4250
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
218 icon_name = "gaim-docklet-away";
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
219 break;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
220 case away_pending:
4250
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
221 icon_name = "gaim-docklet-msgpend";
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
222 break;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
223 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
224
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
225 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
226
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
227 debug_printf("Tray Icon: updated icon to '%s'\n", icon_name);
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
228 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
229
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
230 static gboolean docklet_blink_icon() {
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
231 if (status == online_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 = online;
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 = online_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 if (status == away_pending) {
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
240 if (status == icon) {
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
241 /* last icon was the right one... let's change it */
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
242 icon = away;
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
243 } else {
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
244 /* last icon was the wrong one, change it back */
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
245 icon = away_pending;
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
246 }
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
247 } else {
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
248 /* no messages, stop blinking */
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
249 return FALSE;
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
250 }
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
251
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
252 docklet_update_icon();
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
253
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
254 return TRUE; /* keep blinking */
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
255 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
256
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
257 static gboolean docklet_update_status() {
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
258 enum docklet_status oldstatus;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
259
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
260 oldstatus = status;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
261
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
262 if (connections) {
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
263 if (unread_message_queue) {
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
264 status = online_pending;
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
265 } else if (awaymessage) {
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
266 if (message_queue) {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
267 status = away_pending;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
268 } else {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
269 status = away;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
270 }
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
271 } else if (connecting_count) {
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
272 status = online_connecting;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
273 } else {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
274 status = online;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
275 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
276 } else {
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
277 if (connecting_count) {
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
278 status = offline_connecting;
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
279 } else {
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
280 status = offline;
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
281 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
282 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
283
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
284 /* update the icon if we changed status */
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
285 if (status != oldstatus) {
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
286 icon = status;
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
287 docklet_update_icon();
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
288
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
289 /* and schedule the blinker function if messages are pending */
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
290 if (status == online_pending || status == away_pending) {
4274
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
291 g_timeout_add(500, docklet_blink_icon, &docklet);
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
292 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
293 }
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
294
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
295 return FALSE; /* for when we're called by the glib idle handler */
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
296 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
297
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
298 static void docklet_embedded(GtkWidget *widget, void *data) {
4698
da492b4191c1 [gaim-migrate @ 5009]
Sean Egan <seanegan@pidgin.im>
parents: 4635
diff changeset
299 debug_printf("Tray Icon:embedded\n");
da492b4191c1 [gaim-migrate @ 5009]
Sean Egan <seanegan@pidgin.im>
parents: 4635
diff changeset
300 gaim_gtk_blist_docklet_add();
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
301 }
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
302
4274
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
303 static void docklet_remove_callbacks() {
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
304 debug_printf("Tray Icon: removing callbacks");
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
305
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
306 while (g_source_remove_by_user_data(&docklet)) {
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
307 debug_printf(".");
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
308 }
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
309
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
310 debug_printf("\n");
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
311 }
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
312
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
313 static void docklet_destroyed(GtkWidget *widget, void *data) {
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
314 debug_printf("Tray Icon: destroyed\n");
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
315
4698
da492b4191c1 [gaim-migrate @ 5009]
Sean Egan <seanegan@pidgin.im>
parents: 4635
diff changeset
316 gaim_gtk_blist_docklet_remove();
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
317
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
318 docklet_flush_queue();
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
319
4274
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
320 docklet_remove_callbacks();
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
321
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
322 g_object_unref(G_OBJECT(docklet));
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
323 docklet = NULL;
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
324
4274
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
325 g_idle_add(docklet_create, &docklet);
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
326 }
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
327
4274
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
328 static gboolean docklet_create() {
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
329 GtkWidget *box;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
330
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
331 if (docklet) {
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
332 /* 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
333 something messed up. try destroying it before we proceed,
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
334 although docklet_refcount may be all hosed. hopefully won't happen. */
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
335 debug_printf("Tray Icon: trying to create icon but it already exists?\n");
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
336 gaim_plugin_remove();
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
337 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
338
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
339 docklet = egg_tray_icon_new("Gaim");
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
340 box = gtk_event_box_new();
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
341 image = gtk_image_new();
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
342
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
343 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
344 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
345 g_signal_connect(G_OBJECT(box), "button-press-event", G_CALLBACK(docklet_clicked), NULL);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
346
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
347 gtk_container_add(GTK_CONTAINER(box), image);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
348 gtk_container_add(GTK_CONTAINER(docklet), box);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
349 gtk_widget_show_all(GTK_WIDGET(docklet));
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
350
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
351 /* ref the docklet before we bandy it about the place */
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
352 g_object_ref(G_OBJECT(docklet));
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
353 docklet_update_status();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
354 docklet_update_icon();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
355
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
356 debug_printf("Tray Icon: created\n");
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
357
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
358 return FALSE; /* for when we're called by the glib idle handler */
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
359 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
360
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
361 static void gaim_signon(struct gaim_connection *gc, void *data) {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
362 docklet_update_status();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
363 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
364
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
365 static void gaim_signoff(struct gaim_connection *gc, void *data) {
4157
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
366 /* do this when idle so that if the prpl was connecting
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
367 and was cancelled, we register that connecting_count
5d3d2f6517ae [gaim-migrate @ 4385]
Robert McQueen <robot101@debian.org>
parents: 4108
diff changeset
368 has returned to 0 */
4274
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
369 g_idle_add(docklet_update_status, &docklet);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
370 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
371
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4274
diff changeset
372 static void gaim_connecting(struct gaim_account *account, void *data) {
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
373 docklet_update_status();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
374 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
375
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
376 static void gaim_away(struct gaim_connection *gc, char *state, char *message, void *data) {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
377 /* we only support global away. this is the way it is, ok? */
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
378 docklet_update_status();
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
379 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
380
4274
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
381 static void gaim_im_recv(struct gaim_connection *gc, char **who, char **what, void *data) {
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
382 /* 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
383 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
384 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
385 etc, before we run. */
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
386 g_idle_add(docklet_update_status, &docklet);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
387 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
388
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
389 /* static void gaim_buddy_signon(struct gaim_connection *gc, char *who, void *data) {
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
390 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
391
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
392 static void gaim_buddy_signoff(struct gaim_connection *gc, char *who, void *data) {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
393 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
394
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
395 static void gaim_buddy_away(struct gaim_connection *gc, char *who, void *data) {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
396 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
397
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
398 static void gaim_buddy_back(struct gaim_connection *gc, char *who, void *data) {
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
399 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
400
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
401 static void gaim_new_conversation(char *who, void *data) {
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
402 } */
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
403
4250
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
404 static void docklet_register_icon(const char *name, char *fn) {
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
405 gchar *filename;
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
406
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
407 filename = g_build_filename(DATADIR, "pixmaps", "gaim", fn, NULL);
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
408 gtk_icon_factory_add(icon_factory, name,
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
409 gtk_icon_set_new_from_pixbuf(gdk_pixbuf_new_from_file(filename, NULL)));
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
410 g_free(filename);
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
411 }
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
412
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
413 static void docklet_register_icon_factory() {
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
414 icon_factory = gtk_icon_factory_new();
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
415
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
416 docklet_register_icon("gaim-docklet-offline", "offline.png");
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
417 docklet_register_icon("gaim-docklet-connect", "connect.png");
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
418 docklet_register_icon("gaim-docklet-online", "online.png");
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
419 docklet_register_icon("gaim-docklet-msgunread", "msgunread.png");
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
420 docklet_register_icon("gaim-docklet-away", "away.png");
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
421 docklet_register_icon("gaim-docklet-msgpend", "msgpend.png");
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
422
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
423 gtk_icon_factory_add_default(icon_factory);
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
424 }
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
425
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
426 static void docklet_unregister_icon_factory() {
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
427 gtk_icon_factory_remove_default(icon_factory);
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
428 }
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
429
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
430 char *gaim_plugin_init(GModule *handle) {
4250
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
431 docklet_register_icon_factory();
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
432
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
433 docklet_create(NULL);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
434
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
435 gaim_signal_connect(handle, event_signon, gaim_signon, NULL);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
436 gaim_signal_connect(handle, event_signoff, gaim_signoff, NULL);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
437 gaim_signal_connect(handle, event_connecting, gaim_connecting, NULL);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
438 gaim_signal_connect(handle, event_away, gaim_away, NULL);
4274
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
439 gaim_signal_connect(handle, event_im_recv, gaim_im_recv, NULL);
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
440 /* gaim_signal_connect(handle, event_buddy_signon, gaim_buddy_signon, NULL);
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
441 gaim_signal_connect(handle, event_buddy_signoff, gaim_buddy_signoff, NULL);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
442 gaim_signal_connect(handle, event_buddy_away, gaim_buddy_away, NULL);
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
443 gaim_signal_connect(handle, event_buddy_back, gaim_buddy_back, NULL);
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
444 gaim_signal_connect(handle, event_new_conversation, gaim_new_conversation, NULL); */
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
445
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
446 return NULL;
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
447 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
448
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
449 void gaim_plugin_remove() {
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
450 if (GTK_WIDGET_VISIBLE(docklet)) {
4698
da492b4191c1 [gaim-migrate @ 5009]
Sean Egan <seanegan@pidgin.im>
parents: 4635
diff changeset
451 gaim_gtk_blist_docklet_remove();
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
452 }
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
453
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
454 docklet_flush_queue();
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
455
4274
2309c547cd6e [gaim-migrate @ 4525]
Robert McQueen <robot101@debian.org>
parents: 4261
diff changeset
456 docklet_remove_callbacks();
4261
cc35d7c0582f <Robot101> commit message:
Robert McQueen <robot101@debian.org>
parents: 4250
diff changeset
457
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
458 g_signal_handlers_disconnect_by_func(G_OBJECT(docklet), G_CALLBACK(docklet_destroyed), NULL);
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
459 gtk_widget_destroy(GTK_WIDGET(docklet));
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
460
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
461 g_object_unref(G_OBJECT(docklet));
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
462 docklet = NULL;
4250
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
463
79326f3059c4 [gaim-migrate @ 4500]
Robert McQueen <robot101@debian.org>
parents: 4157
diff changeset
464 docklet_unregister_icon_factory();
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
465
4567
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
466 /* 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
467 gaim_sound_set_mute(FALSE);
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
468
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
469 debug_printf("Tray Icon: removed\n");
3554
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
470 }
2e890297b051 [gaim-migrate @ 3644]
Robert McQueen <robot101@debian.org>
parents: 3551
diff changeset
471
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
472 GtkWidget *gaim_plugin_config_gtk() {
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
473 GtkWidget *frame;
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
474 GtkWidget *vbox, *hbox;
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
475 GtkWidget *toggle;
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
476
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
477 frame = gtk_vbox_new(FALSE, 18);
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
478 gtk_container_set_border_width(GTK_CONTAINER(frame), 12);
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
479
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
480 vbox = make_frame(frame, _("Tray Icon Configuration"));
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
481 hbox = gtk_hbox_new(FALSE, 18);
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
482 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
483
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
484 /* toggle = gtk_check_button_new_with_mnemonic(_("_Automatically show buddy list on sign on"));
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
485 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), blist_options & OPT_BLIST_APP_BUDDY_SHOW);
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
486 g_signal_connect(G_OBJECT(toggle), "clicked", G_CALLBACK(docklet_toggle_blist_show), NULL);
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
487 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); */
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
488
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
489 toggle = gtk_check_button_new_with_mnemonic(_("_Hide new messages until tray icon is clicked"));
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
490 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), away_options & OPT_AWAY_QUEUE_UNREAD);
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
491 g_signal_connect(G_OBJECT(toggle), "clicked", G_CALLBACK(docklet_toggle_queue), NULL);
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
492 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
493
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
494 gtk_widget_show_all(frame);
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
495 return frame;
3517
ef03be2348a5 [gaim-migrate @ 3590]
Sean Egan <seanegan@pidgin.im>
parents: 3514
diff changeset
496 }
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
497
3551
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 3550
diff changeset
498 struct gaim_plugin_description desc;
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 3550
diff changeset
499 struct gaim_plugin_description *gaim_plugin_desc() {
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 3550
diff changeset
500 desc.api_version = PLUGIN_API_VERSION;
4585
cd29170cbc26 [gaim-migrate @ 4869]
Matthew Smith <matthew@smigs.co.uk>
parents: 4567
diff changeset
501 desc.name = g_strdup(_("System Tray Icon"));
3551
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 3550
diff changeset
502 desc.version = g_strdup(VERSION);
4567
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
503 desc.description = g_strdup(_("Interacts with a Notification Area applet (in GNOME or KDE, for example) to display the current status of Gaim, allow fast access to commonly used functions, and to toggle display of the buddy list or login window. Also allows messages to be queued until the icon is clicked, similar to ICQ."));
4606
82c33fac5704 [gaim-migrate @ 4894]
Matthew Smith <matthew@smigs.co.uk>
parents: 4585
diff changeset
504 desc.authors = g_strdup("Robert McQueen &lt;robot101@debian.org>");
3551
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 3550
diff changeset
505 desc.url = g_strdup(WEBSITE);
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 3550
diff changeset
506 return &desc;
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 3550
diff changeset
507 }
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
508
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
509 char *name() {
4093
af4e3909a513 [gaim-migrate @ 4308]
Robert McQueen <robot101@debian.org>
parents: 3939
diff changeset
510 return _("System Tray Icon");
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
511 }
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
512
3570
4da512b20e12 [gaim-migrate @ 3666]
Sean Egan <seanegan@pidgin.im>
parents: 3554
diff changeset
513 char *description() {
4567
47e81b4a9d36 [gaim-migrate @ 4848]
Robert McQueen <robot101@debian.org>
parents: 4561
diff changeset
514 return _("Interacts with a Notification Area applet (in GNOME or KDE, for example) to display the current status of Gaim, allow fast access to commonly used functions, and to toggle display of the buddy list or login window. Also allows messages to be queued until the icon is clicked, similar to ICQ.");
3510
eb451ec1bf1c [gaim-migrate @ 3576]
Robert McQueen <robot101@debian.org>
parents:
diff changeset
515 }

mercurial