Mercurial > pidgin.yaz
annotate src/gtkpounce.c @ 5563:9eb5b13fd412
[gaim-migrate @ 5965]
Just a taste of what's coming.
Standard "This won't compile" thing. Plugin authors, you're going to hate
me, but that's okay, because I have friends too!
It's really late. My brain resembles that of fish swimming in jello pudding
with neon lights flying around chanting musicals. I'm not on drugs. I'm
just that tired.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Fri, 30 May 2003 09:38:29 +0000 |
parents | 2c4c975620f0 |
children | 86456ec3ca25 |
rev | line source |
---|---|
5032 | 1 /** |
2 * @file gtkpounce.h GTK+ buddy pounce API | |
3 * | |
4 * gaim | |
5 * | |
6 * Copyright (C) 2003, Christian Hammond <chipx86@gnupdate.org> | |
7 * | |
8 * This program is free software; you can redistribute it and/or modify | |
9 * it under the terms of the GNU General Public License as published by | |
10 * the Free Software Foundation; either version 2 of the License, or | |
11 * (at your option) any later version. | |
12 * | |
13 * This program is distributed in the hope that it will be useful, | |
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 * GNU General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU General Public License | |
19 * along with this program; if not, write to the Free Software | |
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
21 * | |
22 */ | |
5054 | 23 #include <unistd.h> |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
24 #include <string.h> |
5032 | 25 #include "gaim.h" |
26 #include "gtkpounce.h" | |
5228
1a53330dfd34
[gaim-migrate @ 5598]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
27 #include "gtkblist.h" |
5032 | 28 #include "prpl.h" |
29 #include "sound.h" | |
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5319
diff
changeset
|
30 #include "notify.h" |
5032 | 31 |
32 struct gaim_gtkpounce_dialog | |
33 { | |
34 /* Pounce data */ | |
35 struct gaim_pounce *pounce; | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
36 GaimAccount *account; |
5032 | 37 |
38 /* The window */ | |
39 GtkWidget *window; | |
40 | |
41 /* Pounce Who */ | |
42 GtkWidget *account_menu; | |
43 GtkWidget *buddy_entry; | |
44 | |
45 /* Pounce When */ | |
46 GtkWidget *signon; | |
47 GtkWidget *signoff; | |
48 GtkWidget *away; | |
49 GtkWidget *away_return; | |
50 GtkWidget *idle; | |
51 GtkWidget *idle_return; | |
52 GtkWidget *typing; | |
53 GtkWidget *stop_typing; | |
54 | |
55 /* Pounce Action */ | |
56 GtkWidget *open_win; | |
57 GtkWidget *popup; | |
58 GtkWidget *send_msg; | |
59 GtkWidget *send_msg_entry; | |
60 GtkWidget *exec_cmd; | |
61 GtkWidget *exec_cmd_entry; | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
62 GtkWidget *exec_cmd_browse; |
5032 | 63 GtkWidget *play_sound; |
64 GtkWidget *play_sound_entry; | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
65 GtkWidget *play_sound_browse; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
66 GtkWidget *play_sound_test; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
67 |
5032 | 68 GtkWidget *save_pounce; |
69 }; | |
70 | |
71 /************************************************************************** | |
72 * Callbacks | |
73 **************************************************************************/ | |
74 static gint | |
75 delete_win_cb(GtkWidget *w, GdkEventAny *e, | |
76 struct gaim_gtkpounce_dialog *dialog) | |
77 { | |
78 gtk_widget_destroy(dialog->window); | |
79 g_free(dialog); | |
80 | |
81 return TRUE; | |
82 } | |
83 | |
84 static void | |
5052
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
85 delete_cb(GtkWidget *w, struct gaim_gtkpounce_dialog *dialog) |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
86 { |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
87 gaim_pounce_destroy(dialog->pounce); |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
88 |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
89 delete_win_cb(NULL, NULL, dialog); |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
90 } |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
91 |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
92 static void |
5032 | 93 cancel_cb(GtkWidget *w, struct gaim_gtkpounce_dialog *dialog) |
94 { | |
95 delete_win_cb(NULL, NULL, dialog); | |
96 } | |
97 | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
98 static void |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
99 pounce_update_entryfields(GtkWidget *w, gpointer data) |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
100 { |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
101 const char *selected_filename; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
102 GHashTable *args; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
103 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
104 args = (GHashTable *) data; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
105 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
106 selected_filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(g_hash_table_lookup(args, "pounce_file_selector"))); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
107 if (selected_filename != NULL) |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
108 gtk_entry_set_text(GTK_ENTRY(g_hash_table_lookup(args, "entry")),selected_filename); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
109 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
110 g_free(args); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
111 } |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
112 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
113 static void |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
114 pounce_file_selector(GtkWidget *w, gpointer data) |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
115 { |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
116 GtkWidget *pounce_file_selector; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
117 GtkWidget *entry; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
118 GHashTable *args; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
119 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
120 entry = (GtkWidget *) data; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
121 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
122 pounce_file_selector = gtk_file_selection_new(_("Select a file")); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
123 gtk_file_selection_set_filename(GTK_FILE_SELECTION(pounce_file_selector), gtk_entry_get_text(GTK_ENTRY(entry))); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
124 gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(pounce_file_selector)); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
125 gtk_file_selection_set_select_multiple(GTK_FILE_SELECTION(pounce_file_selector), FALSE); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
126 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
127 args = g_hash_table_new(g_str_hash,g_str_equal); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
128 g_hash_table_insert(args, "pounce_file_selector", (gpointer) pounce_file_selector); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
129 g_hash_table_insert(args, "entry", (gpointer) entry); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
130 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
131 g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(pounce_file_selector)->ok_button), |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
132 "clicked", G_CALLBACK(pounce_update_entryfields), (gpointer) args); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
133 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
134 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(pounce_file_selector)->ok_button), |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
135 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer) pounce_file_selector); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
136 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(pounce_file_selector)->cancel_button), |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
137 "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer) pounce_file_selector); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
138 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
139 gtk_widget_show(pounce_file_selector); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
140 } |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
141 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
142 static void |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
143 pounce_test_sound(GtkWidget *w, gpointer data) |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
144 { |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
145 const char *filename; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
146 GtkWidget *entry; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
147 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
148 entry = (GtkWidget *) data; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
149 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
150 filename = gtk_entry_get_text(GTK_ENTRY(entry)); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
151 if ((filename != NULL) && (strlen(filename) > 0)) |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
152 gaim_sound_play_file((char *) filename); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
153 else |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
154 gaim_sound_play_event(GAIM_SOUND_POUNCE_DEFAULT); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
155 } |
5032 | 156 |
157 static void | |
158 save_pounce_cb(GtkWidget *w, struct gaim_gtkpounce_dialog *dialog) | |
159 { | |
160 const char *name; | |
161 const char *message, *command, *sound; | |
162 struct gaim_buddy_list *blist; | |
163 struct gaim_gtk_buddy_list *gtkblist; | |
164 GaimPounceEvent events = GAIM_POUNCE_NONE; | |
165 GaimGtkPounceAction actions = GAIM_GTKPOUNCE_NONE; | |
166 gboolean save; | |
167 | |
168 name = gtk_entry_get_text(GTK_ENTRY(dialog->buddy_entry)); | |
169 | |
170 if (*name == '\0') { | |
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5319
diff
changeset
|
171 gaim_notify_error(NULL, NULL, |
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5319
diff
changeset
|
172 _("Please enter a buddy to pounce."), NULL); |
5032 | 173 return; |
174 } | |
175 | |
176 /* Events */ | |
177 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->signon))) | |
178 events |= GAIM_POUNCE_SIGNON; | |
179 | |
180 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->signoff))) | |
181 events |= GAIM_POUNCE_SIGNOFF; | |
182 | |
183 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->away))) | |
184 events |= GAIM_POUNCE_AWAY; | |
185 | |
186 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->away_return))) | |
187 events |= GAIM_POUNCE_AWAY_RETURN; | |
188 | |
189 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->idle))) | |
190 events |= GAIM_POUNCE_IDLE; | |
191 | |
192 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->idle_return))) | |
193 events |= GAIM_POUNCE_IDLE_RETURN; | |
194 | |
195 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->typing))) | |
196 events |= GAIM_POUNCE_TYPING; | |
197 | |
198 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->stop_typing))) | |
199 events |= GAIM_POUNCE_TYPING_STOPPED; | |
200 | |
201 | |
202 /* Actions */ | |
203 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->open_win))) | |
204 actions |= GAIM_GTKPOUNCE_OPEN_WIN; | |
205 | |
206 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->popup))) | |
207 actions |= GAIM_GTKPOUNCE_POPUP; | |
208 | |
209 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->send_msg))) | |
210 actions |= GAIM_GTKPOUNCE_SEND_MSG; | |
211 | |
212 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->exec_cmd))) | |
213 actions |= GAIM_GTKPOUNCE_EXEC_CMD; | |
214 | |
215 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->play_sound))) | |
216 actions |= GAIM_GTKPOUNCE_PLAY_SOUND; | |
217 | |
218 save = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->save_pounce)); | |
219 | |
220 /* Data fields */ | |
221 message = gtk_entry_get_text(GTK_ENTRY(dialog->send_msg_entry)); | |
222 command = gtk_entry_get_text(GTK_ENTRY(dialog->exec_cmd_entry)); | |
223 sound = gtk_entry_get_text(GTK_ENTRY(dialog->play_sound_entry)); | |
224 | |
225 if (*message == '\0') message = NULL; | |
226 if (*command == '\0') command = NULL; | |
227 if (*sound == '\0') sound = NULL; | |
228 | |
229 if (dialog->pounce == NULL) | |
230 { | |
231 gaim_gtkpounce_new(dialog->account, name, events, actions, | |
232 message, command, sound, save); | |
233 } | |
234 else | |
235 { | |
236 struct gaim_gtkpounce_data *pounce_data; | |
237 | |
238 gaim_pounce_set_events(dialog->pounce, events); | |
239 gaim_pounce_set_pouncer(dialog->pounce, dialog->account); | |
240 gaim_pounce_set_pouncee(dialog->pounce, name); | |
241 | |
242 pounce_data = GAIM_GTKPOUNCE(dialog->pounce); | |
243 | |
244 if (pounce_data->message != NULL) g_free(pounce_data->message); | |
245 if (pounce_data->command != NULL) g_free(pounce_data->command); | |
246 if (pounce_data->sound != NULL) g_free(pounce_data->sound); | |
247 | |
248 pounce_data->message = (message == NULL ? NULL : g_strdup(message)); | |
249 pounce_data->command = (command == NULL ? NULL : g_strdup(command)); | |
250 pounce_data->sound = (sound == NULL ? NULL : g_strdup(sound)); | |
251 | |
252 pounce_data->actions = actions; | |
253 pounce_data->save = save; | |
254 } | |
255 | |
256 delete_win_cb(NULL, NULL, dialog); | |
257 /* Rebuild the pounce menu */ | |
258 blist = gaim_get_blist(); | |
259 | |
260 if (GAIM_IS_GTK_BLIST(blist)) | |
261 { | |
262 gtkblist = GAIM_GTK_BLIST(blist); | |
263 | |
264 gaim_gtkpounce_menu_build(gtkblist->bpmenu); | |
265 } | |
266 | |
267 save_prefs(); | |
268 } | |
269 | |
5054 | 270 static void |
5032 | 271 pounce_choose_cb(GtkWidget *item, struct gaim_gtkpounce_dialog *dialog) |
272 { | |
273 dialog->account = g_object_get_data(G_OBJECT(item), "user_data"); | |
274 } | |
275 | |
276 static GtkWidget * | |
277 pounce_user_menu(struct gaim_gtkpounce_dialog *dialog) | |
278 { | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
279 GaimAccount *account; |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
280 GaimPlugin *prpl; |
5032 | 281 GtkWidget *opt_menu; |
282 GtkWidget *menu; | |
283 GtkWidget *item; | |
284 GSList *l; | |
285 char buf[2048]; | |
5054 | 286 int count, place = 0; |
5032 | 287 |
288 opt_menu = gtk_option_menu_new(); | |
289 menu = gtk_menu_new(); | |
290 | |
291 for (l = gaim_accounts, count = 0; l != NULL; l = l->next, count++) { | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
292 account = (GaimAccount *)l->data; |
5032 | 293 |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
294 prpl = gaim_find_prpl(account->protocol); |
5032 | 295 |
296 g_snprintf(buf, sizeof(buf), "%s (%s)", account->username, | |
5205
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
297 (prpl && prpl->info->name) |
fefad67de2c7
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5161
diff
changeset
|
298 ? prpl->info->name : _("Unknown")); |
5032 | 299 |
300 item = gtk_menu_item_new_with_label(buf); | |
301 g_object_set_data(G_OBJECT(item), "user_data", account); | |
302 | |
303 g_signal_connect(G_OBJECT(item), "activate", | |
304 G_CALLBACK(pounce_choose_cb), dialog); | |
305 | |
306 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); | |
307 gtk_widget_show(item); | |
308 | |
309 if (dialog->account == account) { | |
310 gtk_menu_item_activate(GTK_MENU_ITEM(item)); | |
311 place = count; | |
312 } | |
313 } | |
314 | |
315 gtk_option_menu_set_menu(GTK_OPTION_MENU(opt_menu), menu); | |
316 gtk_option_menu_set_history(GTK_OPTION_MENU(opt_menu), place); | |
317 | |
318 return opt_menu; | |
319 } | |
320 | |
321 static void | |
322 pounce_cb(struct gaim_pounce *pounce, GaimPounceEvent events, void *data) | |
323 { | |
324 struct gaim_conversation *conv; | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
325 GaimAccount *account; |
5032 | 326 struct gaim_gtkpounce_data *pounce_data; |
327 const char *pouncee; | |
328 | |
329 pounce_data = (struct gaim_gtkpounce_data *)data; | |
330 pouncee = gaim_pounce_get_pouncee(pounce); | |
331 account = gaim_pounce_get_pouncer(pounce); | |
332 | |
333 if (pounce_data->actions & GAIM_GTKPOUNCE_OPEN_WIN) { | |
334 conv = gaim_find_conversation(pouncee); | |
335 | |
336 if (conv == NULL) | |
337 conv = gaim_conversation_new(GAIM_CONV_IM, account, pouncee); | |
338 } | |
339 | |
340 if (pounce_data->actions & GAIM_GTKPOUNCE_POPUP) { | |
341 char tmp[1024]; | |
342 | |
343 g_snprintf(tmp, sizeof(tmp), | |
344 (events & GAIM_POUNCE_TYPING) ? _("%s has started typing to you") : | |
345 (events & GAIM_POUNCE_SIGNON) ? _("%s has signed on") : | |
346 (events & GAIM_POUNCE_IDLE_RETURN) ? _("%s has returned from being idle") : | |
347 (events & GAIM_POUNCE_AWAY_RETURN) ? _("%s has returned from being away") : | |
348 (events & GAIM_POUNCE_TYPING_STOPPED) ? _("%s has stopped typing to you") : | |
349 (events & GAIM_POUNCE_SIGNOFF) ? _("%s has signed off") : | |
350 (events & GAIM_POUNCE_IDLE) ? _("%s has become idle") : | |
351 (events & GAIM_POUNCE_AWAY) ? _("%s has gone away.") : | |
352 _("Unknown pounce event. Please report this!"), | |
353 pouncee); | |
354 | |
5436
ad445074d239
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5319
diff
changeset
|
355 gaim_notify_info(NULL, NULL, tmp, NULL); |
5032 | 356 } |
357 | |
358 if (pounce_data->actions & GAIM_GTKPOUNCE_SEND_MSG && | |
5051
b3d9195777bb
[gaim-migrate @ 5400]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
359 pounce_data->message != NULL) { |
5032 | 360 |
361 conv = gaim_find_conversation(pouncee); | |
362 | |
363 if (conv == NULL) | |
364 conv = gaim_conversation_new(GAIM_CONV_IM, account, pouncee); | |
365 | |
366 gaim_conversation_write(conv, NULL, pounce_data->message, -1, | |
367 WFLAG_SEND, time(NULL)); | |
368 | |
369 serv_send_im(account->gc, (char *)pouncee, pounce_data->message, -1, 0); | |
370 } | |
371 | |
372 if (pounce_data->actions & GAIM_GTKPOUNCE_EXEC_CMD && | |
5051
b3d9195777bb
[gaim-migrate @ 5400]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
373 pounce_data->command != NULL) { |
5032 | 374 #ifndef _WIN32 |
375 int pid = fork(); | |
376 | |
377 if (pid == 0) { | |
378 char *args[4]; | |
379 | |
380 args[0] = "sh"; | |
381 args[1] = "-c"; | |
382 args[2] = pounce_data->command; | |
383 args[3] = NULL; | |
384 | |
385 execvp(args[0], args); | |
386 | |
387 _exit(0); | |
388 } | |
389 #endif /* _WIN32 */ | |
390 } | |
391 | |
392 if (pounce_data->actions & GAIM_GTKPOUNCE_PLAY_SOUND) { | |
5051
b3d9195777bb
[gaim-migrate @ 5400]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
393 if (pounce_data->sound != NULL) |
5032 | 394 gaim_sound_play_file(pounce_data->sound); |
395 else | |
396 gaim_sound_play_event(GAIM_SOUND_POUNCE_DEFAULT); | |
397 } | |
398 | |
399 if (!pounce_data->save) | |
400 gaim_pounce_destroy(pounce); | |
401 } | |
402 | |
403 static void | |
404 free_pounce(void *data) | |
405 { | |
406 struct gaim_gtkpounce_data *pounce_data; | |
407 struct gaim_buddy_list *blist; | |
408 struct gaim_gtk_buddy_list *gtkblist; | |
409 | |
410 pounce_data = (struct gaim_gtkpounce_data *)data; | |
411 | |
412 if (pounce_data->message != NULL) g_free(pounce_data->message); | |
413 if (pounce_data->command != NULL) g_free(pounce_data->command); | |
414 if (pounce_data->sound != NULL) g_free(pounce_data->sound); | |
415 | |
416 g_free(data); | |
417 | |
418 /* Rebuild the pounce menu */ | |
419 blist = gaim_get_blist(); | |
420 | |
421 if (GAIM_IS_GTK_BLIST(blist)) | |
422 { | |
423 gtkblist = GAIM_GTK_BLIST(blist); | |
424 | |
425 gaim_gtkpounce_menu_build(gtkblist->bpmenu); | |
426 } | |
427 | |
428 save_prefs(); | |
429 } | |
430 | |
431 struct gaim_pounce * | |
5563
9eb5b13fd412
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
432 gaim_gtkpounce_new(GaimAccount *pouncer, const char *pouncee, |
5032 | 433 GaimPounceEvent events, GaimGtkPounceAction actions, |
434 const char *message, const char *command, | |
435 const char *sound, gboolean save) | |
436 { | |
437 struct gaim_gtkpounce_data *data; | |
438 | |
439 data = g_new0(struct gaim_gtkpounce_data, 1); | |
440 | |
441 data->actions = actions; | |
442 | |
443 if (message != NULL) data->message = g_strdup(message); | |
444 if (command != NULL) data->command = g_strdup(command); | |
445 if (sound != NULL) data->sound = g_strdup(sound); | |
446 | |
447 data->save = save; | |
448 | |
449 return gaim_pounce_new(pouncer, pouncee, events, pounce_cb, data, | |
450 free_pounce); | |
451 } | |
452 | |
453 void | |
454 gaim_gtkpounce_dialog_show(struct buddy *buddy, | |
455 struct gaim_pounce *cur_pounce) | |
456 { | |
457 struct gaim_gtkpounce_dialog *dialog; | |
458 GtkWidget *window; | |
459 GtkWidget *label; | |
460 GtkWidget *bbox; | |
461 GtkWidget *vbox1, *vbox2; | |
462 GtkWidget *hbox; | |
463 GtkWidget *button; | |
464 GtkWidget *frame; | |
465 GtkWidget *table; | |
466 GtkWidget *sep; | |
467 GtkSizeGroup *sg; | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
468 GPtrArray *sound_widgets; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
469 GPtrArray *exec_widgets; |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
470 |
5032 | 471 dialog = g_new0(struct gaim_gtkpounce_dialog, 1); |
472 | |
473 if (cur_pounce != NULL) { | |
474 dialog->pounce = cur_pounce; | |
475 dialog->account = gaim_pounce_get_pouncer(cur_pounce); | |
476 } | |
477 else if (buddy != NULL) { | |
478 dialog->pounce = NULL; | |
479 dialog->account = buddy->account; | |
480 } | |
481 else { | |
482 dialog->pounce = NULL; | |
483 dialog->account = gaim_accounts->data; | |
484 } | |
485 | |
486 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
487 | |
488 /* Create the window. */ | |
489 dialog->window = window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
490 gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG); | |
491 gtk_window_set_role(GTK_WINDOW(window), "buddy_pounce"); | |
492 gtk_window_set_resizable(GTK_WINDOW(window), FALSE); | |
493 gtk_window_set_title(GTK_WINDOW(window), | |
494 (cur_pounce == NULL | |
495 ? _("New Buddy Pounce") : _("Edit Buddy Pounce"))); | |
496 | |
497 gtk_container_set_border_width(GTK_CONTAINER(window), 12); | |
498 gtk_widget_realize(window); | |
499 | |
500 g_signal_connect(G_OBJECT(window), "delete_event", | |
501 G_CALLBACK(delete_win_cb), dialog); | |
502 | |
503 /* Create the parent vbox for everything. */ | |
504 vbox1 = gtk_vbox_new(FALSE, 12); | |
505 gtk_container_add(GTK_CONTAINER(window), vbox1); | |
506 gtk_widget_show(vbox1); | |
507 | |
508 /* Create the vbox that will contain all the prefs stuff. */ | |
509 vbox2 = gtk_vbox_new(FALSE, 18); | |
510 gtk_box_pack_start(GTK_BOX(vbox1), vbox2, TRUE, TRUE, 0); | |
511 | |
512 /* Create the "Pounce Who" frame. */ | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
513 frame = gaim_gtk_make_frame(vbox2, _("Pounce Who")); |
5032 | 514 |
515 /* Account: */ | |
516 hbox = gtk_hbox_new(FALSE, 6); | |
517 gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0); | |
518 gtk_widget_show(hbox); | |
519 | |
520 label = gtk_label_new_with_mnemonic(_("_Account:")); | |
521 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
522 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
523 gtk_widget_show(label); | |
524 gtk_size_group_add_widget(sg, label); | |
525 | |
526 dialog->account_menu = pounce_user_menu(dialog); | |
527 gtk_box_pack_start(GTK_BOX(hbox), dialog->account_menu, FALSE, FALSE, 0); | |
528 gtk_widget_show(dialog->account_menu); | |
529 | |
530 /* Buddy: */ | |
531 hbox = gtk_hbox_new(FALSE, 6); | |
532 gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0); | |
533 gtk_widget_show(hbox); | |
534 | |
535 label = gtk_label_new_with_mnemonic(_("_Buddy Name:")); | |
536 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
537 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
538 gtk_widget_show(label); | |
539 gtk_size_group_add_widget(sg, label); | |
540 | |
541 dialog->buddy_entry = gtk_entry_new(); | |
542 gtk_box_pack_start(GTK_BOX(hbox), dialog->buddy_entry, TRUE, TRUE, 0); | |
543 gtk_widget_show(dialog->buddy_entry); | |
544 | |
545 if (cur_pounce != NULL) { | |
546 gtk_entry_set_text(GTK_ENTRY(dialog->buddy_entry), | |
547 gaim_pounce_get_pouncee(cur_pounce)); | |
548 } | |
549 else if (buddy != NULL) { | |
550 gtk_entry_set_text(GTK_ENTRY(dialog->buddy_entry), buddy->name); | |
551 } | |
552 | |
553 /* Create the "Pounce When" frame. */ | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
554 frame = gaim_gtk_make_frame(vbox2, _("Pounce When")); |
5032 | 555 |
556 table = gtk_table_new(2, 4, FALSE); | |
557 gtk_container_add(GTK_CONTAINER(frame), table); | |
558 gtk_table_set_col_spacings(GTK_TABLE(table), 12); | |
559 gtk_widget_show(table); | |
560 | |
561 dialog->signon = | |
562 gtk_check_button_new_with_label(_("Sign on")); | |
563 dialog->signoff = | |
564 gtk_check_button_new_with_label(_("Sign off")); | |
565 dialog->away = | |
566 gtk_check_button_new_with_label(_("Away")); | |
567 dialog->away_return = | |
568 gtk_check_button_new_with_label(_("Return from away")); | |
569 dialog->idle = | |
570 gtk_check_button_new_with_label(_("Idle")); | |
571 dialog->idle_return = | |
572 gtk_check_button_new_with_label(_("Return from idle")); | |
573 dialog->typing = | |
574 gtk_check_button_new_with_label(_("Buddy starts typing")); | |
575 dialog->stop_typing = | |
576 gtk_check_button_new_with_label(_("Buddy stops typing")); | |
577 | |
578 gtk_table_attach(GTK_TABLE(table), dialog->signon, 0, 1, 0, 1, | |
579 GTK_FILL, 0, 0, 0); | |
580 gtk_table_attach(GTK_TABLE(table), dialog->signoff, 1, 2, 0, 1, | |
581 GTK_FILL, 0, 0, 0); | |
582 gtk_table_attach(GTK_TABLE(table), dialog->away, 0, 1, 1, 2, | |
583 GTK_FILL, 0, 0, 0); | |
584 gtk_table_attach(GTK_TABLE(table), dialog->away_return, 1, 2, 1, 2, | |
585 GTK_FILL, 0, 0, 0); | |
586 gtk_table_attach(GTK_TABLE(table), dialog->idle, 0, 1, 2, 3, | |
587 GTK_FILL, 0, 0, 0); | |
588 gtk_table_attach(GTK_TABLE(table), dialog->idle_return, 1, 2, 2, 3, | |
589 GTK_FILL, 0, 0, 0); | |
590 gtk_table_attach(GTK_TABLE(table), dialog->typing, 0, 1, 3, 4, | |
591 GTK_FILL, 0, 0, 0); | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
592 gtk_table_attach(GTK_TABLE(table), dialog->stop_typing, 1, 2, 3, 5, |
5032 | 593 GTK_FILL, 0, 0, 0); |
594 | |
595 gtk_widget_show(dialog->signon); | |
596 gtk_widget_show(dialog->signoff); | |
597 gtk_widget_show(dialog->away); | |
598 gtk_widget_show(dialog->away_return); | |
599 gtk_widget_show(dialog->idle); | |
600 gtk_widget_show(dialog->idle_return); | |
601 gtk_widget_show(dialog->typing); | |
602 gtk_widget_show(dialog->stop_typing); | |
603 | |
604 /* Create the "Pounce Action" frame. */ | |
5530
2c4c975620f0
[gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
605 frame = gaim_gtk_make_frame(vbox2, _("Pounce Action")); |
5032 | 606 |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
607 table = gtk_table_new(3, 5, FALSE); |
5032 | 608 gtk_container_add(GTK_CONTAINER(frame), table); |
609 gtk_table_set_col_spacings(GTK_TABLE(table), 12); | |
610 gtk_widget_show(table); | |
611 | |
612 dialog->open_win = gtk_check_button_new_with_label(_("Open an IM window")); | |
613 dialog->popup = gtk_check_button_new_with_label(_("Popup notification")); | |
614 dialog->send_msg = gtk_check_button_new_with_label(_("Send a message")); | |
615 dialog->exec_cmd = gtk_check_button_new_with_label(_("Execute a command")); | |
5051
b3d9195777bb
[gaim-migrate @ 5400]
Christian Hammond <chipx86@chipx86.com>
parents:
5032
diff
changeset
|
616 dialog->play_sound = gtk_check_button_new_with_label(_("Play a sound")); |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
617 |
5032 | 618 dialog->send_msg_entry = gtk_entry_new(); |
619 dialog->exec_cmd_entry = gtk_entry_new(); | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
620 dialog->exec_cmd_browse = gtk_button_new_with_label(_("Browse")); |
5032 | 621 dialog->play_sound_entry = gtk_entry_new(); |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
622 dialog->play_sound_browse = gtk_button_new_with_label(_("Browse")); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
623 dialog->play_sound_test = gtk_button_new_with_label(_("Test")); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
624 |
5032 | 625 gtk_widget_set_sensitive(dialog->send_msg_entry, FALSE); |
626 gtk_widget_set_sensitive(dialog->exec_cmd_entry, FALSE); | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
627 gtk_widget_set_sensitive(dialog->exec_cmd_browse, FALSE); |
5032 | 628 gtk_widget_set_sensitive(dialog->play_sound_entry, FALSE); |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
629 gtk_widget_set_sensitive(dialog->play_sound_browse, FALSE); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
630 gtk_widget_set_sensitive(dialog->play_sound_test, FALSE); |
5032 | 631 |
632 gtk_table_attach(GTK_TABLE(table), dialog->open_win, 0, 1, 0, 1, | |
633 GTK_FILL, 0, 0, 0); | |
634 gtk_table_attach(GTK_TABLE(table), dialog->popup, 0, 1, 1, 2, | |
635 GTK_FILL, 0, 0, 0); | |
636 gtk_table_attach(GTK_TABLE(table), dialog->send_msg, 0, 1, 2, 3, | |
637 GTK_FILL, 0, 0, 0); | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
638 gtk_table_attach(GTK_TABLE(table), dialog->send_msg_entry, 1, 4, 2, 3, |
5032 | 639 GTK_FILL, 0, 0, 0); |
640 gtk_table_attach(GTK_TABLE(table), dialog->exec_cmd, 0, 1, 3, 4, | |
641 GTK_FILL, 0, 0, 0); | |
642 gtk_table_attach(GTK_TABLE(table), dialog->exec_cmd_entry, 1, 2, 3, 4, | |
643 GTK_FILL, 0, 0, 0); | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
644 gtk_table_attach(GTK_TABLE(table), dialog->exec_cmd_browse, 2, 3, 3, 4, |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
645 GTK_FILL | GTK_EXPAND, 0, 0, 0); |
5032 | 646 gtk_table_attach(GTK_TABLE(table), dialog->play_sound, 0, 1, 4, 5, |
647 GTK_FILL, 0, 0, 0); | |
648 gtk_table_attach(GTK_TABLE(table), dialog->play_sound_entry, 1, 2, 4, 5, | |
649 GTK_FILL, 0, 0, 0); | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
650 gtk_table_attach(GTK_TABLE(table), dialog->play_sound_browse, 2, 3, 4, 5, |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
651 GTK_FILL | GTK_EXPAND, 0, 0, 0); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
652 gtk_table_attach(GTK_TABLE(table), dialog->play_sound_test, 3, 4, 4, 5, |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
653 GTK_FILL | GTK_EXPAND, 0, 0, 0); |
5032 | 654 |
655 gtk_widget_show(dialog->open_win); | |
656 gtk_widget_show(dialog->popup); | |
657 gtk_widget_show(dialog->send_msg); | |
658 gtk_widget_show(dialog->send_msg_entry); | |
659 gtk_widget_show(dialog->exec_cmd); | |
660 gtk_widget_show(dialog->exec_cmd_entry); | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
661 gtk_widget_show(dialog->exec_cmd_browse); |
5032 | 662 gtk_widget_show(dialog->play_sound); |
663 gtk_widget_show(dialog->play_sound_entry); | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
664 gtk_widget_show(dialog->play_sound_browse); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
665 gtk_widget_show(dialog->play_sound_test); |
5032 | 666 |
667 g_signal_connect(G_OBJECT(dialog->send_msg), "clicked", | |
668 G_CALLBACK(gaim_gtk_toggle_sensitive), | |
669 dialog->send_msg_entry); | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
670 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
671 exec_widgets = g_ptr_array_new(); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
672 g_ptr_array_add(exec_widgets,dialog->exec_cmd_entry); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
673 g_ptr_array_add(exec_widgets,dialog->exec_cmd_browse); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
674 |
5032 | 675 g_signal_connect(G_OBJECT(dialog->exec_cmd), "clicked", |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
676 G_CALLBACK(gtk_toggle_sensitive_array), |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
677 exec_widgets); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
678 g_signal_connect(G_OBJECT(dialog->exec_cmd_browse), "clicked", |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
679 G_CALLBACK(pounce_file_selector), |
5032 | 680 dialog->exec_cmd_entry); |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
681 |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
682 sound_widgets = g_ptr_array_new(); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
683 g_ptr_array_add(sound_widgets,dialog->play_sound_entry); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
684 g_ptr_array_add(sound_widgets,dialog->play_sound_browse); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
685 g_ptr_array_add(sound_widgets,dialog->play_sound_test); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
686 |
5032 | 687 g_signal_connect(G_OBJECT(dialog->play_sound), "clicked", |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
688 G_CALLBACK(gtk_toggle_sensitive_array), |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
689 sound_widgets); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
690 g_signal_connect(G_OBJECT(dialog->play_sound_browse), "clicked", |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
691 G_CALLBACK(pounce_file_selector), |
5032 | 692 dialog->play_sound_entry); |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
693 g_signal_connect(G_OBJECT(dialog->play_sound_test), "clicked", |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
694 G_CALLBACK(pounce_test_sound), |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
695 dialog->play_sound_entry); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
696 |
5032 | 697 g_signal_connect(G_OBJECT(dialog->send_msg_entry), "activate", |
698 G_CALLBACK(save_pounce_cb), dialog); | |
699 g_signal_connect(G_OBJECT(dialog->exec_cmd_entry), "activate", | |
700 G_CALLBACK(save_pounce_cb), dialog); | |
701 g_signal_connect(G_OBJECT(dialog->play_sound_entry), "activate", | |
702 G_CALLBACK(save_pounce_cb), dialog); | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
703 |
5032 | 704 /* Now the last part, where we have the Save checkbox */ |
705 dialog->save_pounce = gtk_check_button_new_with_mnemonic( | |
706 _("_Save this pounce after activation")); | |
707 | |
708 gtk_box_pack_start(GTK_BOX(vbox2), dialog->save_pounce, FALSE, FALSE, 0); | |
709 | |
710 /* Separator... */ | |
711 sep = gtk_hseparator_new(); | |
712 gtk_box_pack_start(GTK_BOX(vbox1), sep, FALSE, FALSE, 0); | |
713 gtk_widget_show(sep); | |
714 | |
715 /* Now the button box! */ | |
716 bbox = gtk_hbutton_box_new(); | |
717 gtk_box_set_spacing(GTK_BOX(bbox), 6); | |
718 gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); | |
719 gtk_box_pack_end(GTK_BOX(vbox1), bbox, FALSE, FALSE, 0); | |
720 gtk_widget_show(bbox); | |
721 | |
5052
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
722 /* Delete button */ |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
723 button = gtk_button_new_from_stock(GTK_STOCK_DELETE); |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
724 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
725 gtk_widget_show(button); |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
726 |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
727 g_signal_connect(G_OBJECT(button), "clicked", |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
728 G_CALLBACK(delete_cb), dialog); |
6a7759f63766
[gaim-migrate @ 5401]
Christian Hammond <chipx86@chipx86.com>
parents:
5051
diff
changeset
|
729 |
5032 | 730 /* Cancel button */ |
731 button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); | |
732 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
733 gtk_widget_show(button); | |
734 | |
735 g_signal_connect(G_OBJECT(button), "clicked", | |
736 G_CALLBACK(cancel_cb), dialog); | |
737 | |
738 /* OK button */ | |
739 button = gtk_button_new_from_stock(GTK_STOCK_OK); | |
740 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
741 gtk_widget_show(button); | |
742 | |
743 g_signal_connect(G_OBJECT(button), "clicked", | |
744 G_CALLBACK(save_pounce_cb), dialog); | |
745 | |
746 /* Set the values of stuff. */ | |
747 if (cur_pounce != NULL) { | |
748 GaimPounceEvent events; | |
749 GaimGtkPounceAction actions; | |
750 struct gaim_gtkpounce_data *pounce_data; | |
751 | |
752 pounce_data = GAIM_GTKPOUNCE(cur_pounce); | |
753 events = gaim_pounce_get_events(cur_pounce); | |
754 actions = pounce_data->actions; | |
755 | |
756 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->signon), | |
757 (events & GAIM_POUNCE_SIGNON)); | |
758 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->signoff), | |
759 (events & GAIM_POUNCE_SIGNOFF)); | |
760 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->away), | |
761 (events & GAIM_POUNCE_AWAY)); | |
762 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->away_return), | |
763 (events & GAIM_POUNCE_AWAY_RETURN)); | |
764 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->idle), | |
765 (events & GAIM_POUNCE_IDLE)); | |
766 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->idle_return), | |
767 (events & GAIM_POUNCE_IDLE_RETURN)); | |
768 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->typing), | |
769 (events & GAIM_POUNCE_TYPING)); | |
770 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->stop_typing), | |
771 (events & GAIM_POUNCE_TYPING_STOPPED)); | |
772 | |
773 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->open_win), | |
774 (actions & GAIM_GTKPOUNCE_OPEN_WIN)); | |
775 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->popup), | |
776 (actions & GAIM_GTKPOUNCE_POPUP)); | |
777 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->send_msg), | |
778 (actions & GAIM_GTKPOUNCE_SEND_MSG)); | |
779 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->exec_cmd), | |
780 (actions & GAIM_GTKPOUNCE_EXEC_CMD)); | |
781 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->play_sound), | |
782 (actions & GAIM_GTKPOUNCE_PLAY_SOUND)); | |
783 | |
784 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->save_pounce), | |
785 pounce_data->save); | |
786 | |
5319
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
787 if (pounce_data->message != NULL) |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
788 gtk_entry_set_text(GTK_ENTRY(dialog->send_msg_entry), |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
789 pounce_data->message); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
790 if (pounce_data->command != NULL) |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
791 gtk_entry_set_text(GTK_ENTRY(dialog->exec_cmd_entry), |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
792 pounce_data->command); |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
793 if (pounce_data->sound != NULL) |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
794 gtk_entry_set_text(GTK_ENTRY(dialog->play_sound_entry), |
3adb20b869b4
[gaim-migrate @ 5691]
Christian Hammond <chipx86@chipx86.com>
parents:
5228
diff
changeset
|
795 pounce_data->sound); |
5032 | 796 } |
797 else { | |
798 /* Set some defaults */ | |
799 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->send_msg), TRUE); | |
800 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->signon), TRUE); | |
801 } | |
802 | |
803 gtk_widget_show_all(vbox2); | |
804 gtk_widget_show(window); | |
805 } | |
806 | |
807 static void | |
808 new_pounce_cb(GtkWidget *w, struct buddy *b) | |
809 { | |
810 gaim_gtkpounce_dialog_show(b, NULL); | |
811 } | |
812 | |
813 static void | |
5153
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
814 delete_pounce_cb(GtkWidget *w, struct gaim_pounce *pounce) |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
815 { |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
816 gaim_pounce_destroy(pounce); |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
817 } |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
818 |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
819 static void |
5032 | 820 edit_pounce_cb(GtkWidget *w, struct gaim_pounce *pounce) |
821 { | |
822 struct buddy *buddy; | |
823 | |
824 buddy = gaim_find_buddy(gaim_pounce_get_pouncer(pounce), | |
825 gaim_pounce_get_pouncee(pounce)); | |
826 | |
827 gaim_gtkpounce_dialog_show(buddy, pounce); | |
828 } | |
829 | |
5153
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
830 static void |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
831 fill_menu(GtkWidget *menu, GCallback cb) |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
832 { |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
833 GtkWidget *image; |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
834 GtkWidget *item; |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
835 GdkPixbuf *pixbuf, *scale; |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
836 struct gaim_pounce *pounce; |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
837 const char *buddy; |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
838 GList *bp; |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
839 |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
840 for (bp = gaim_get_pounces(); bp != NULL; bp = bp->next) { |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
841 pounce = (struct gaim_pounce *)bp->data; |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
842 buddy = gaim_pounce_get_pouncee(pounce); |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
843 |
5161 | 844 /* Build the menu item */ |
845 item = gtk_image_menu_item_new_with_label(buddy); | |
846 | |
5153
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
847 /* Create a pixmap for the protocol icon. */ |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
848 pixbuf = create_prpl_icon(gaim_pounce_get_pouncer(pounce)); |
5161 | 849 if(pixbuf) { |
850 scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, | |
851 GDK_INTERP_BILINEAR); | |
5153
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
852 |
5161 | 853 /* Now convert it to GtkImage */ |
5153
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
854 image = gtk_image_new_from_pixbuf(scale); |
5161 | 855 g_object_unref(G_OBJECT(scale)); |
856 g_object_unref(G_OBJECT(pixbuf)); | |
857 gtk_widget_show(image); | |
858 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image); | |
859 } | |
5153
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
860 |
5161 | 861 /* Put the item in the menu */ |
5153
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
862 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
863 gtk_widget_show(item); |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
864 |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
865 /* Set our callbacks. */ |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
866 g_signal_connect(G_OBJECT(item), "activate", cb, pounce); |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
867 } |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
868 } |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
869 |
5032 | 870 void |
871 gaim_gtkpounce_menu_build(GtkWidget *menu) | |
872 { | |
5153
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
873 GtkWidget *remmenu; |
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
874 GtkWidget *item; |
5032 | 875 GList *l; |
876 | |
877 for (l = gtk_container_get_children(GTK_CONTAINER(menu)); | |
878 l != NULL; | |
879 l = l->next) { | |
880 | |
881 gtk_widget_destroy(GTK_WIDGET(l->data)); | |
882 } | |
883 | |
884 /* "New Buddy Pounce" */ | |
885 item = gtk_menu_item_new_with_label(_("New Buddy Pounce")); | |
886 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); | |
887 gtk_widget_show(item); | |
888 g_signal_connect(G_OBJECT(item), "activate", | |
889 G_CALLBACK(new_pounce_cb), NULL); | |
890 | |
891 /* "Remove Buddy Pounce" */ | |
892 item = gtk_menu_item_new_with_label(_("Remove Buddy Pounce")); | |
893 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); | |
894 | |
895 /* "Remove Buddy Pounce" menu */ | |
896 remmenu = gtk_menu_new(); | |
897 | |
5153
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
898 fill_menu(remmenu, G_CALLBACK(delete_pounce_cb)); |
5032 | 899 |
900 gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), remmenu); | |
901 gtk_widget_show(remmenu); | |
902 gtk_widget_show(item); | |
903 | |
904 /* Separator */ | |
905 item = gtk_separator_menu_item_new(); | |
906 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); | |
907 gtk_widget_show(item); | |
908 | |
5153
ab0f12de3718
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
909 fill_menu(menu, G_CALLBACK(edit_pounce_cb)); |
5032 | 910 } |
911 |