Wed, 09 Aug 2006 14:47:37 +0000
[gaim-migrate @ 16679]
some translation updates. I have questions about gu.po, if someone sees that answered, we might need to revert that part of the change. It is all very confusing. The same person submitted the original gu.po and this update, but he called it gu_IN this timeā¦
| 5032 | 1 | /** |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
2 | * @file gtkpounce.c GTK+ Buddy Pounce API |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
3 | * @ingroup gtkui |
| 5032 | 4 | * |
| 5 | * gaim | |
| 6 | * | |
| 8046 | 7 | * Gaim is the legal property of its developers, whose names are too numerous |
| 8 | * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 9 | * source distribution. | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
10 | * |
| 5032 | 11 | * This program is free software; you can redistribute it and/or modify |
| 12 | * it under the terms of the GNU General Public License as published by | |
| 13 | * the Free Software Foundation; either version 2 of the License, or | |
| 14 | * (at your option) any later version. | |
| 15 | * | |
| 16 | * This program is distributed in the hope that it will be useful, | |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | * GNU General Public License for more details. | |
| 20 | * | |
| 21 | * You should have received a copy of the GNU General Public License | |
| 22 | * along with this program; if not, write to the Free Software | |
| 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 24 | * | |
| 25 | */ | |
| 9791 | 26 | #include "internal.h" |
| 27 | #include "gtkgaim.h" | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
28 | |
| 8235 | 29 | #include "account.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
30 | #include "conversation.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
31 | #include "debug.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
32 | #include "notify.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
33 | #include "prpl.h" |
|
9505
6120a3cb8af7
[gaim-migrate @ 10332]
Mark Doliner <markdoliner@pidgin.im>
parents:
9206
diff
changeset
|
34 | #include "request.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
35 | #include "server.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
36 | #include "sound.h" |
|
9709
2e73f176cc80
[gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents:
9699
diff
changeset
|
37 | #include "util.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
38 | |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
39 | #include "gtkblist.h" |
|
9709
2e73f176cc80
[gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents:
9699
diff
changeset
|
40 | #include "gtkdialogs.h" |
| 5032 | 41 | #include "gtkpounce.h" |
| 12136 | 42 | #include "gtkstock.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
43 | #include "gtkutils.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5866
diff
changeset
|
44 | |
| 12136 | 45 | /** |
| 46 | * These are used for the GtkTreeView when you're scrolling through | |
| 47 | * all your saved pounces. | |
| 48 | */ | |
| 49 | enum | |
| 50 | { | |
| 51 | /* Hidden column containing the GaimPounce */ | |
| 52 | POUNCES_MANAGER_COLUMN_POUNCE, | |
| 53 | POUNCES_MANAGER_COLUMN_ICON, | |
| 54 | POUNCES_MANAGER_COLUMN_TARGET, | |
| 55 | POUNCES_MANAGER_COLUMN_ACCOUNT, | |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
56 | POUNCES_MANAGER_COLUMN_RECURRING, |
| 12136 | 57 | POUNCES_MANAGER_NUM_COLUMNS |
| 58 | }; | |
| 59 | ||
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
60 | typedef struct |
| 5032 | 61 | { |
| 62 | /* Pounce data */ | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
63 | GaimPounce *pounce; |
|
5563
d5a7852aa0cb
[gaim-migrate @ 5965]
Christian Hammond <chipx86@chipx86.com>
parents:
5530
diff
changeset
|
64 | GaimAccount *account; |
| 5032 | 65 | |
| 66 | /* The window */ | |
| 67 | GtkWidget *window; | |
| 68 | ||
| 12694 | 69 | /* Pounce on Whom */ |
| 5032 | 70 | GtkWidget *account_menu; |
| 71 | GtkWidget *buddy_entry; | |
| 72 | ||
| 12694 | 73 | /* Pounce options */ |
| 74 | GtkWidget *on_away; | |
| 75 | ||
| 76 | /* Pounce When Buddy... */ | |
| 5032 | 77 | GtkWidget *signon; |
| 78 | GtkWidget *signoff; | |
| 79 | GtkWidget *away; | |
| 80 | GtkWidget *away_return; | |
| 81 | GtkWidget *idle; | |
| 82 | GtkWidget *idle_return; | |
| 83 | GtkWidget *typing; | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
84 | GtkWidget *typed; |
| 5032 | 85 | GtkWidget *stop_typing; |
| 12694 | 86 | GtkWidget *message_recv; |
| 5032 | 87 | |
| 12694 | 88 | /* Action */ |
| 5032 | 89 | GtkWidget *open_win; |
| 90 | GtkWidget *popup; | |
| 12934 | 91 | GtkWidget *popup_entry; |
| 5032 | 92 | GtkWidget *send_msg; |
| 93 | GtkWidget *send_msg_entry; | |
| 94 | GtkWidget *exec_cmd; | |
| 95 | GtkWidget *exec_cmd_entry; | |
| 5319 | 96 | GtkWidget *exec_cmd_browse; |
| 5032 | 97 | GtkWidget *play_sound; |
| 98 | GtkWidget *play_sound_entry; | |
| 5319 | 99 | GtkWidget *play_sound_browse; |
| 100 | GtkWidget *play_sound_test; | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
101 | |
| 5032 | 102 | GtkWidget *save_pounce; |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
103 | |
|
5876
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
104 | /* Buttons */ |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
105 | GtkWidget *save_button; |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
106 | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
107 | } GaimGtkPounceDialog; |
| 5032 | 108 | |
| 12136 | 109 | typedef struct |
| 110 | { | |
| 111 | GtkWidget *window; | |
| 112 | GtkListStore *model; | |
| 113 | GtkWidget *treeview; | |
| 114 | GtkWidget *modify_button; | |
| 115 | GtkWidget *delete_button; | |
| 116 | } PouncesManager; | |
| 117 | ||
| 118 | static PouncesManager *pounces_manager = NULL; | |
| 119 | ||
| 5032 | 120 | /************************************************************************** |
| 121 | * Callbacks | |
| 122 | **************************************************************************/ | |
| 123 | static gint | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
124 | delete_win_cb(GtkWidget *w, GdkEventAny *e, GaimGtkPounceDialog *dialog) |
| 5032 | 125 | { |
| 126 | gtk_widget_destroy(dialog->window); | |
| 127 | g_free(dialog); | |
| 128 | ||
| 129 | return TRUE; | |
| 130 | } | |
| 131 | ||
| 132 | static void | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
133 | cancel_cb(GtkWidget *w, GaimGtkPounceDialog *dialog) |
| 5032 | 134 | { |
| 135 | delete_win_cb(NULL, NULL, dialog); | |
| 136 | } | |
| 137 | ||
| 5319 | 138 | static void |
|
9505
6120a3cb8af7
[gaim-migrate @ 10332]
Mark Doliner <markdoliner@pidgin.im>
parents:
9206
diff
changeset
|
139 | pounce_update_entry_fields(void *user_data, const char *filename) |
| 5319 | 140 | { |
|
9505
6120a3cb8af7
[gaim-migrate @ 10332]
Mark Doliner <markdoliner@pidgin.im>
parents:
9206
diff
changeset
|
141 | GtkWidget *entry = (GtkWidget *)user_data; |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
142 | |
|
9505
6120a3cb8af7
[gaim-migrate @ 10332]
Mark Doliner <markdoliner@pidgin.im>
parents:
9206
diff
changeset
|
143 | gtk_entry_set_text(GTK_ENTRY(entry), filename); |
| 5319 | 144 | } |
| 145 | ||
| 146 | static void | |
|
9505
6120a3cb8af7
[gaim-migrate @ 10332]
Mark Doliner <markdoliner@pidgin.im>
parents:
9206
diff
changeset
|
147 | filesel(GtkWidget *widget, gpointer data) |
| 5319 | 148 | { |
| 149 | GtkWidget *entry; | |
|
9505
6120a3cb8af7
[gaim-migrate @ 10332]
Mark Doliner <markdoliner@pidgin.im>
parents:
9206
diff
changeset
|
150 | const gchar *name; |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
151 | |
|
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
152 | entry = (GtkWidget *)data; |
|
9505
6120a3cb8af7
[gaim-migrate @ 10332]
Mark Doliner <markdoliner@pidgin.im>
parents:
9206
diff
changeset
|
153 | name = gtk_entry_get_text(GTK_ENTRY(entry)); |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
154 | |
|
9505
6120a3cb8af7
[gaim-migrate @ 10332]
Mark Doliner <markdoliner@pidgin.im>
parents:
9206
diff
changeset
|
155 | gaim_request_file(entry, _("Select a file"), name, FALSE, |
|
6120a3cb8af7
[gaim-migrate @ 10332]
Mark Doliner <markdoliner@pidgin.im>
parents:
9206
diff
changeset
|
156 | G_CALLBACK(pounce_update_entry_fields), NULL, entry); |
| 5319 | 157 | } |
| 158 | ||
| 159 | static void | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
160 | pounce_test_sound(GtkWidget *w, GtkWidget *entry) |
| 5319 | 161 | { |
| 162 | const char *filename; | |
| 163 | ||
| 164 | filename = gtk_entry_get_text(GTK_ENTRY(entry)); | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
165 | |
|
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
166 | if (filename != NULL && *filename != '\0') |
|
11642
76b60f0bf467
[gaim-migrate @ 13919]
Casey Harkins <charkins@pidgin.im>
parents:
11338
diff
changeset
|
167 | gaim_sound_play_file(filename, NULL); |
| 5319 | 168 | else |
|
11642
76b60f0bf467
[gaim-migrate @ 13919]
Casey Harkins <charkins@pidgin.im>
parents:
11338
diff
changeset
|
169 | gaim_sound_play_event(GAIM_SOUND_POUNCE_DEFAULT, NULL); |
| 5319 | 170 | } |
| 5032 | 171 | |
| 172 | static void | |
| 12136 | 173 | add_pounce_to_treeview(GtkListStore *model, GaimPounce *pounce) |
| 174 | { | |
| 175 | GtkTreeIter iter; | |
| 176 | GaimAccount *account; | |
| 177 | GaimPounceEvent events; | |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
178 | gboolean recurring; |
| 12136 | 179 | const char *pouncer; |
| 180 | const char *pouncee; | |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13033
diff
changeset
|
181 | GdkPixbuf *pixbuf; |
| 12136 | 182 | |
| 183 | account = gaim_pounce_get_pouncer(pounce); | |
| 184 | ||
| 185 | if (gaim_account_is_disconnected(account)) | |
| 186 | return; | |
| 187 | ||
| 188 | events = gaim_pounce_get_events(pounce); | |
| 189 | ||
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13033
diff
changeset
|
190 | pixbuf = gaim_gtk_create_prpl_icon(account, 0.5); |
| 12136 | 191 | |
| 192 | pouncer = gaim_account_get_username(account); | |
| 193 | pouncee = gaim_pounce_get_pouncee(pounce); | |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
194 | recurring = gaim_pounce_get_save(pounce); |
| 12136 | 195 | |
| 196 | gtk_list_store_append(model, &iter); | |
| 197 | gtk_list_store_set(model, &iter, | |
| 198 | POUNCES_MANAGER_COLUMN_POUNCE, pounce, | |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13033
diff
changeset
|
199 | POUNCES_MANAGER_COLUMN_ICON, pixbuf, |
| 12136 | 200 | POUNCES_MANAGER_COLUMN_TARGET, pouncee, |
| 201 | POUNCES_MANAGER_COLUMN_ACCOUNT, pouncer, | |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
202 | POUNCES_MANAGER_COLUMN_RECURRING, recurring, |
| 12136 | 203 | -1); |
|
13091
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13033
diff
changeset
|
204 | |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13033
diff
changeset
|
205 | if (pixbuf != NULL) |
|
b5ed878998dd
[gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents:
13033
diff
changeset
|
206 | g_object_unref(pixbuf); |
| 12136 | 207 | } |
| 208 | ||
| 209 | static void | |
| 210 | populate_pounces_list(PouncesManager *dialog) | |
| 211 | { | |
| 212 | const GList *pounces; | |
| 213 | ||
| 214 | gtk_list_store_clear(dialog->model); | |
| 215 | ||
| 216 | for (pounces = gaim_pounces_get_all(); pounces != NULL; | |
| 217 | pounces = g_list_next(pounces)) | |
| 218 | { | |
| 219 | add_pounce_to_treeview(dialog->model, pounces->data); | |
| 220 | } | |
| 221 | } | |
| 222 | ||
| 223 | static void | |
| 224 | update_pounces(void) | |
| 225 | { | |
| 226 | /* Rebuild the pounces list if the pounces manager is open */ | |
| 227 | if (pounces_manager != NULL) | |
| 228 | { | |
| 229 | populate_pounces_list(pounces_manager); | |
| 230 | } | |
| 231 | } | |
| 232 | ||
| 233 | static void | |
| 234 | signed_on_off_cb(GaimConnection *gc, gpointer user_data) | |
| 235 | { | |
| 236 | update_pounces(); | |
| 237 | } | |
| 238 | ||
| 239 | static void | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
240 | save_pounce_cb(GtkWidget *w, GaimGtkPounceDialog *dialog) |
| 5032 | 241 | { |
| 242 | const char *name; | |
| 12934 | 243 | const char *message, *command, *sound, *reason; |
| 12694 | 244 | GaimPounceEvent events = GAIM_POUNCE_NONE; |
| 245 | GaimPounceOption options = GAIM_POUNCE_OPTION_NONE; | |
| 5032 | 246 | |
| 247 | name = gtk_entry_get_text(GTK_ENTRY(dialog->buddy_entry)); | |
| 248 | ||
|
9206
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
249 | if (*name == '\0') |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
250 | { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5319
diff
changeset
|
251 | gaim_notify_error(NULL, NULL, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5319
diff
changeset
|
252 | _("Please enter a buddy to pounce."), NULL); |
| 5032 | 253 | return; |
| 254 | } | |
| 255 | ||
| 12694 | 256 | /* Options */ |
| 257 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->on_away))) | |
| 258 | options |= GAIM_POUNCE_OPTION_AWAY; | |
| 259 | ||
| 5032 | 260 | /* Events */ |
| 261 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->signon))) | |
| 262 | events |= GAIM_POUNCE_SIGNON; | |
| 263 | ||
| 264 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->signoff))) | |
| 265 | events |= GAIM_POUNCE_SIGNOFF; | |
| 266 | ||
| 267 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->away))) | |
| 268 | events |= GAIM_POUNCE_AWAY; | |
| 269 | ||
| 270 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->away_return))) | |
| 271 | events |= GAIM_POUNCE_AWAY_RETURN; | |
| 272 | ||
| 273 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->idle))) | |
| 274 | events |= GAIM_POUNCE_IDLE; | |
| 275 | ||
| 276 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->idle_return))) | |
| 277 | events |= GAIM_POUNCE_IDLE_RETURN; | |
| 278 | ||
| 279 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->typing))) | |
| 280 | events |= GAIM_POUNCE_TYPING; | |
| 281 | ||
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
282 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->typed))) |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
283 | events |= GAIM_POUNCE_TYPED; |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
284 | |
| 5032 | 285 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->stop_typing))) |
| 286 | events |= GAIM_POUNCE_TYPING_STOPPED; | |
| 287 | ||
| 12694 | 288 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->message_recv))) |
| 289 | events |= GAIM_POUNCE_MESSAGE_RECEIVED; | |
| 290 | ||
| 5032 | 291 | /* Data fields */ |
| 292 | message = gtk_entry_get_text(GTK_ENTRY(dialog->send_msg_entry)); | |
| 293 | command = gtk_entry_get_text(GTK_ENTRY(dialog->exec_cmd_entry)); | |
| 294 | sound = gtk_entry_get_text(GTK_ENTRY(dialog->play_sound_entry)); | |
| 12934 | 295 | reason = gtk_entry_get_text(GTK_ENTRY(dialog->popup_entry)); |
| 5032 | 296 | |
| 12934 | 297 | if (*reason == '\0') reason = NULL; |
| 5032 | 298 | if (*message == '\0') message = NULL; |
| 299 | if (*command == '\0') command = NULL; | |
| 300 | if (*sound == '\0') sound = NULL; | |
| 301 | ||
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
302 | if (dialog->pounce == NULL) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
303 | { |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
304 | dialog->pounce = gaim_pounce_new(GAIM_GTK_UI, dialog->account, |
| 12694 | 305 | name, events, options); |
| 5032 | 306 | } |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
307 | else { |
| 5032 | 308 | gaim_pounce_set_events(dialog->pounce, events); |
| 12694 | 309 | gaim_pounce_set_options(dialog->pounce, options); |
| 5032 | 310 | gaim_pounce_set_pouncer(dialog->pounce, dialog->account); |
| 311 | gaim_pounce_set_pouncee(dialog->pounce, name); | |
| 312 | } | |
| 313 | ||
|
9206
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
314 | /* Actions */ |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
315 | gaim_pounce_action_set_enabled(dialog->pounce, "open-window", |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
316 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->open_win))); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
317 | gaim_pounce_action_set_enabled(dialog->pounce, "popup-notify", |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
318 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->popup))); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
319 | gaim_pounce_action_set_enabled(dialog->pounce, "send-message", |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
320 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->send_msg))); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
321 | gaim_pounce_action_set_enabled(dialog->pounce, "execute-command", |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
322 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->exec_cmd))); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
323 | gaim_pounce_action_set_enabled(dialog->pounce, "play-sound", |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
324 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->play_sound))); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
325 | |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
326 | gaim_pounce_action_set_attribute(dialog->pounce, "send-message", |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
327 | "message", message); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
328 | gaim_pounce_action_set_attribute(dialog->pounce, "execute-command", |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
329 | "command", command); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
330 | gaim_pounce_action_set_attribute(dialog->pounce, "play-sound", |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
331 | "filename", sound); |
| 12934 | 332 | gaim_pounce_action_set_attribute(dialog->pounce, "popup-notify", |
| 333 | "reason", reason); | |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
334 | |
|
9206
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
335 | /* Set the defaults for next time. */ |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
336 | gaim_prefs_set_bool("/gaim/gtk/pounces/default_actions/open-window", |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
337 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->open_win))); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
338 | gaim_prefs_set_bool("/gaim/gtk/pounces/default_actions/popup-notify", |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
339 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->popup))); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
340 | gaim_prefs_set_bool("/gaim/gtk/pounces/default_actions/send-message", |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
341 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->send_msg))); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
342 | gaim_prefs_set_bool("/gaim/gtk/pounces/default_actions/execute-command", |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
343 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->exec_cmd))); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
344 | gaim_prefs_set_bool("/gaim/gtk/pounces/default_actions/play-sound", |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
345 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->play_sound))); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
346 | |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
347 | gaim_pounce_set_save(dialog->pounce, |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
348 | gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(dialog->save_pounce))); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
349 | |
| 12136 | 350 | update_pounces(); |
| 5032 | 351 | |
| 12136 | 352 | delete_win_cb(NULL, NULL, dialog); |
| 5032 | 353 | } |
| 354 | ||
| 5054 | 355 | static void |
|
5877
37695b88b248
[gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents:
5876
diff
changeset
|
356 | pounce_choose_cb(GtkWidget *item, GaimAccount *account, |
|
37695b88b248
[gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents:
5876
diff
changeset
|
357 | GaimGtkPounceDialog *dialog) |
| 5032 | 358 | { |
|
5877
37695b88b248
[gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents:
5876
diff
changeset
|
359 | dialog->account = account; |
| 5032 | 360 | } |
| 361 | ||
|
5876
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
362 | static void |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
363 | buddy_changed_cb(GtkEntry *entry, GaimGtkPounceDialog *dialog) |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
364 | { |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
365 | if (dialog->save_button == NULL) |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
366 | return; |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
367 | |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
368 | gtk_widget_set_sensitive(dialog->save_button, |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
369 | *gtk_entry_get_text(entry) != '\0'); |
|
5876
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
370 | } |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
371 | |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
372 | static void |
| 12694 | 373 | message_recv_toggle(GtkButton *message_recv, GtkWidget *send_msg) |
| 374 | { | |
| 375 | gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(message_recv)); | |
| 376 | ||
| 377 | gtk_widget_set_sensitive(send_msg, !active); | |
| 378 | if (active) | |
| 379 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(send_msg), FALSE); | |
| 380 | } | |
| 381 | ||
| 382 | static void | |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
383 | pounce_dnd_recv(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
384 | GtkSelectionData *sd, guint info, guint t, gpointer data) |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
385 | { |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
386 | GaimGtkPounceDialog *dialog; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
387 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
388 | if (sd->target == gdk_atom_intern("GAIM_BLIST_NODE", FALSE)) |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
389 | { |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
390 | GaimBlistNode *node = NULL; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
391 | GaimBuddy *buddy; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
392 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
393 | memcpy(&node, sd->data, sizeof(node)); |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
394 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
395 | if (GAIM_BLIST_NODE_IS_CONTACT(node)) |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
396 | buddy = gaim_contact_get_priority_buddy((GaimContact *)node); |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
397 | else if (GAIM_BLIST_NODE_IS_BUDDY(node)) |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
398 | buddy = (GaimBuddy *)node; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
399 | else |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
400 | return; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
401 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
402 | dialog = (GaimGtkPounceDialog *)data; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
403 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
404 | gtk_entry_set_text(GTK_ENTRY(dialog->buddy_entry), buddy->name); |
|
9910
7b4465b92411
[gaim-migrate @ 10802]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9791
diff
changeset
|
405 | dialog->account = buddy->account; |
|
7b4465b92411
[gaim-migrate @ 10802]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9791
diff
changeset
|
406 | gaim_gtk_account_option_menu_set_selected(dialog->account_menu, buddy->account); |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
407 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
408 | gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
409 | } |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
410 | else if (sd->target == gdk_atom_intern("application/x-im-contact", FALSE)) |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
411 | { |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
412 | char *protocol = NULL; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
413 | char *username = NULL; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
414 | GaimAccount *account; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
415 | |
|
11137
cf40226ddff7
[gaim-migrate @ 13201]
Mark Doliner <markdoliner@pidgin.im>
parents:
10921
diff
changeset
|
416 | if (gaim_gtk_parse_x_im_contact((const char *)sd->data, FALSE, &account, |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
417 | &protocol, &username, NULL)) |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
418 | { |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
419 | if (account == NULL) |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
420 | { |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
421 | gaim_notify_error(NULL, NULL, |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
422 | _("You are not currently signed on with an account that " |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
423 | "can add that buddy."), NULL); |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
424 | } |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
425 | else |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
426 | { |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
427 | dialog = (GaimGtkPounceDialog *)data; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
428 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
429 | gtk_entry_set_text(GTK_ENTRY(dialog->buddy_entry), username); |
|
9910
7b4465b92411
[gaim-migrate @ 10802]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9791
diff
changeset
|
430 | dialog->account = account; |
|
7b4465b92411
[gaim-migrate @ 10802]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
9791
diff
changeset
|
431 | gaim_gtk_account_option_menu_set_selected(dialog->account_menu, account); |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
432 | } |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
433 | } |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
434 | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13844
diff
changeset
|
435 | g_free(username); |
|
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13844
diff
changeset
|
436 | g_free(protocol); |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
437 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
438 | gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t); |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
439 | } |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
440 | } |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
441 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
442 | static const GtkTargetEntry dnd_targets[] = |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
443 | { |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
444 | {"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, 0}, |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
445 | {"application/x-im-contact", 0, 1} |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
446 | }; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
447 | |
| 5032 | 448 | void |
| 12136 | 449 | gaim_gtk_pounce_editor_show(GaimAccount *account, const char *name, |
| 450 | GaimPounce *cur_pounce) | |
| 5032 | 451 | { |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
452 | GaimGtkPounceDialog *dialog; |
| 5032 | 453 | GtkWidget *window; |
| 454 | GtkWidget *label; | |
| 455 | GtkWidget *bbox; | |
| 456 | GtkWidget *vbox1, *vbox2; | |
| 457 | GtkWidget *hbox; | |
| 458 | GtkWidget *button; | |
| 459 | GtkWidget *frame; | |
| 460 | GtkWidget *table; | |
| 461 | GtkSizeGroup *sg; | |
| 5319 | 462 | GPtrArray *sound_widgets; |
| 463 | GPtrArray *exec_widgets; | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
464 | |
|
10352
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10250
diff
changeset
|
465 | g_return_if_fail((cur_pounce != NULL) || (account != NULL) || |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10250
diff
changeset
|
466 | (gaim_connections_get_all() != NULL)); |
|
802e7ab5b838
[gaim-migrate @ 11569]
Mark Doliner <markdoliner@pidgin.im>
parents:
10250
diff
changeset
|
467 | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
468 | dialog = g_new0(GaimGtkPounceDialog, 1); |
| 5032 | 469 | |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
470 | if (cur_pounce != NULL) |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
471 | { |
| 5032 | 472 | dialog->pounce = cur_pounce; |
| 473 | dialog->account = gaim_pounce_get_pouncer(cur_pounce); | |
| 474 | } | |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
475 | else if (account != NULL) |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
476 | { |
| 5032 | 477 | dialog->pounce = NULL; |
|
5907
b2812113a4a6
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5877
diff
changeset
|
478 | dialog->account = account; |
| 5032 | 479 | } |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
480 | else |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
481 | { |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
482 | GaimConnection *gc; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
483 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
484 | gc = (GaimConnection *)gaim_connections_get_all()->data; |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
485 | |
| 5032 | 486 | dialog->pounce = NULL; |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
487 | dialog->account = gaim_connection_get_account(gc); |
| 5032 | 488 | } |
| 489 | ||
| 490 | sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | |
| 491 | ||
| 492 | /* Create the window. */ | |
| 493 | dialog->window = window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 494 | gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG); | |
| 495 | gtk_window_set_role(GTK_WINDOW(window), "buddy_pounce"); | |
| 496 | gtk_window_set_resizable(GTK_WINDOW(window), FALSE); | |
| 497 | gtk_window_set_title(GTK_WINDOW(window), | |
| 498 | (cur_pounce == NULL | |
| 499 | ? _("New Buddy Pounce") : _("Edit Buddy Pounce"))); | |
| 500 | ||
| 11243 | 501 | gtk_container_set_border_width(GTK_CONTAINER(window), GAIM_HIG_BORDER); |
| 5032 | 502 | |
| 503 | g_signal_connect(G_OBJECT(window), "delete_event", | |
| 504 | G_CALLBACK(delete_win_cb), dialog); | |
| 505 | ||
| 506 | /* Create the parent vbox for everything. */ | |
| 11243 | 507 | vbox1 = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); |
| 5032 | 508 | gtk_container_add(GTK_CONTAINER(window), vbox1); |
| 509 | gtk_widget_show(vbox1); | |
| 510 | ||
| 511 | /* Create the vbox that will contain all the prefs stuff. */ | |
| 11243 | 512 | vbox2 = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 5032 | 513 | gtk_box_pack_start(GTK_BOX(vbox1), vbox2, TRUE, TRUE, 0); |
| 514 | ||
| 12694 | 515 | /* Create the "Pounce on Whom" frame. */ |
| 516 | frame = gaim_gtk_make_frame(vbox2, _("Pounce on Whom")); | |
| 5032 | 517 | |
| 518 | /* Account: */ | |
| 11243 | 519 | hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 5032 | 520 | gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0); |
| 521 | gtk_widget_show(hbox); | |
| 522 | ||
| 523 | label = gtk_label_new_with_mnemonic(_("_Account:")); | |
| 524 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | |
| 525 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
| 526 | gtk_widget_show(label); | |
| 527 | gtk_size_group_add_widget(sg, label); | |
| 528 | ||
|
5877
37695b88b248
[gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents:
5876
diff
changeset
|
529 | dialog->account_menu = |
|
6646
b9a0b5eb74e6
[gaim-migrate @ 7171]
Christian Hammond <chipx86@chipx86.com>
parents:
6640
diff
changeset
|
530 | gaim_gtk_account_option_menu_new(dialog->account, FALSE, |
|
b9a0b5eb74e6
[gaim-migrate @ 7171]
Christian Hammond <chipx86@chipx86.com>
parents:
6640
diff
changeset
|
531 | G_CALLBACK(pounce_choose_cb), |
|
b9a0b5eb74e6
[gaim-migrate @ 7171]
Christian Hammond <chipx86@chipx86.com>
parents:
6640
diff
changeset
|
532 | NULL, dialog); |
|
5877
37695b88b248
[gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents:
5876
diff
changeset
|
533 | |
| 5032 | 534 | gtk_box_pack_start(GTK_BOX(hbox), dialog->account_menu, FALSE, FALSE, 0); |
| 535 | gtk_widget_show(dialog->account_menu); | |
| 8137 | 536 | gaim_set_accessible_label (dialog->account_menu, label); |
| 5032 | 537 | |
| 538 | /* Buddy: */ | |
| 11243 | 539 | hbox = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); |
| 5032 | 540 | gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0); |
| 541 | gtk_widget_show(hbox); | |
| 542 | ||
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
543 | label = gtk_label_new_with_mnemonic(_("_Buddy name:")); |
| 5032 | 544 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 545 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
| 546 | gtk_widget_show(label); | |
| 547 | gtk_size_group_add_widget(sg, label); | |
| 548 | ||
| 549 | dialog->buddy_entry = gtk_entry_new(); | |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
550 | |
|
13361
bb2f64cf6721
[gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13228
diff
changeset
|
551 | gaim_gtk_setup_screenname_autocomplete(dialog->buddy_entry, dialog->account_menu, FALSE); |
|
bb2f64cf6721
[gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13228
diff
changeset
|
552 | |
| 5032 | 553 | gtk_box_pack_start(GTK_BOX(hbox), dialog->buddy_entry, TRUE, TRUE, 0); |
| 554 | gtk_widget_show(dialog->buddy_entry); | |
| 555 | ||
|
5876
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
556 | g_signal_connect(G_OBJECT(dialog->buddy_entry), "changed", |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
557 | G_CALLBACK(buddy_changed_cb), dialog); |
| 8137 | 558 | gaim_set_accessible_label (dialog->buddy_entry, label); |
|
5876
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
559 | |
| 5032 | 560 | if (cur_pounce != NULL) { |
| 561 | gtk_entry_set_text(GTK_ENTRY(dialog->buddy_entry), | |
| 562 | gaim_pounce_get_pouncee(cur_pounce)); | |
| 563 | } | |
|
5907
b2812113a4a6
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5877
diff
changeset
|
564 | else if (name != NULL) { |
|
b2812113a4a6
[gaim-migrate @ 6339]
Christian Hammond <chipx86@chipx86.com>
parents:
5877
diff
changeset
|
565 | gtk_entry_set_text(GTK_ENTRY(dialog->buddy_entry), name); |
| 5032 | 566 | } |
| 567 | ||
| 12694 | 568 | /* Create the "Pounce When Buddy..." frame. */ |
|
12141
9cd436b9b7f6
[gaim-migrate @ 14442]
Richard Laager <rlaager@pidgin.im>
parents:
12137
diff
changeset
|
569 | frame = gaim_gtk_make_frame(vbox2, _("Pounce When Buddy...")); |
| 5032 | 570 | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
571 | table = gtk_table_new(5, 2, FALSE); |
| 5032 | 572 | gtk_container_add(GTK_CONTAINER(frame), table); |
| 11243 | 573 | gtk_table_set_col_spacings(GTK_TABLE(table), GAIM_HIG_BORDER); |
| 5032 | 574 | gtk_widget_show(table); |
| 575 | ||
| 576 | dialog->signon = | |
|
12141
9cd436b9b7f6
[gaim-migrate @ 14442]
Richard Laager <rlaager@pidgin.im>
parents:
12137
diff
changeset
|
577 | gtk_check_button_new_with_mnemonic(_("Si_gns on")); |
| 5032 | 578 | dialog->signoff = |
|
12142
45aba96df80d
[gaim-migrate @ 14443]
Richard Laager <rlaager@pidgin.im>
parents:
12141
diff
changeset
|
579 | gtk_check_button_new_with_mnemonic(_("Signs o_ff")); |
| 5032 | 580 | dialog->away = |
|
12141
9cd436b9b7f6
[gaim-migrate @ 14442]
Richard Laager <rlaager@pidgin.im>
parents:
12137
diff
changeset
|
581 | gtk_check_button_new_with_mnemonic(_("Goes a_way")); |
| 5032 | 582 | dialog->away_return = |
|
12144
a24ccdee060b
[gaim-migrate @ 14445]
Richard Laager <rlaager@pidgin.im>
parents:
12142
diff
changeset
|
583 | gtk_check_button_new_with_mnemonic(_("Ret_urns from away")); |
| 5032 | 584 | dialog->idle = |
|
12192
36b7b33aa956
[gaim-migrate @ 14494]
Richard Laager <rlaager@pidgin.im>
parents:
12186
diff
changeset
|
585 | gtk_check_button_new_with_mnemonic(_("Becomes _idle")); |
| 5032 | 586 | dialog->idle_return = |
|
12192
36b7b33aa956
[gaim-migrate @ 14494]
Richard Laager <rlaager@pidgin.im>
parents:
12186
diff
changeset
|
587 | gtk_check_button_new_with_mnemonic(_("Is no longer i_dle")); |
| 5032 | 588 | dialog->typing = |
|
12141
9cd436b9b7f6
[gaim-migrate @ 14442]
Richard Laager <rlaager@pidgin.im>
parents:
12137
diff
changeset
|
589 | gtk_check_button_new_with_mnemonic(_("Starts _typing")); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
590 | dialog->typed = |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
591 | gtk_check_button_new_with_mnemonic(_("P_auses while typing")); |
| 5032 | 592 | dialog->stop_typing = |
|
12141
9cd436b9b7f6
[gaim-migrate @ 14442]
Richard Laager <rlaager@pidgin.im>
parents:
12137
diff
changeset
|
593 | gtk_check_button_new_with_mnemonic(_("Stops t_yping")); |
| 12694 | 594 | dialog->message_recv = |
| 595 | gtk_check_button_new_with_mnemonic(_("Sends a _message")); | |
| 5032 | 596 | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
597 | gtk_table_attach(GTK_TABLE(table), dialog->message_recv, 0, 1, 0, 1, |
| 5032 | 598 | GTK_FILL, 0, 0, 0); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
599 | gtk_table_attach(GTK_TABLE(table), dialog->signon, 0, 1, 1, 2, |
| 5032 | 600 | GTK_FILL, 0, 0, 0); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
601 | gtk_table_attach(GTK_TABLE(table), dialog->signoff, 0, 1, 2, 3, |
| 5032 | 602 | GTK_FILL, 0, 0, 0); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
603 | gtk_table_attach(GTK_TABLE(table), dialog->away, 0, 1, 3, 4, |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
604 | GTK_FILL, 0, 0, 0); |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
605 | gtk_table_attach(GTK_TABLE(table), dialog->away_return, 0, 1, 4, 5, |
| 5032 | 606 | GTK_FILL, 0, 0, 0); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
607 | gtk_table_attach(GTK_TABLE(table), dialog->idle, 1, 2, 0, 1, |
| 12694 | 608 | GTK_FILL, 0, 0, 0); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
609 | gtk_table_attach(GTK_TABLE(table), dialog->idle_return, 1, 2, 1, 2, |
| 5032 | 610 | GTK_FILL, 0, 0, 0); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
611 | gtk_table_attach(GTK_TABLE(table), dialog->typing, 1, 2, 2, 3, |
| 5032 | 612 | GTK_FILL, 0, 0, 0); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
613 | gtk_table_attach(GTK_TABLE(table), dialog->typed, 1, 2, 3, 4, |
| 5032 | 614 | GTK_FILL, 0, 0, 0); |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
615 | gtk_table_attach(GTK_TABLE(table), dialog->stop_typing, 1, 2, 4, 5, |
| 5032 | 616 | GTK_FILL, 0, 0, 0); |
| 617 | ||
| 618 | gtk_widget_show(dialog->signon); | |
| 619 | gtk_widget_show(dialog->signoff); | |
| 620 | gtk_widget_show(dialog->away); | |
| 621 | gtk_widget_show(dialog->away_return); | |
| 622 | gtk_widget_show(dialog->idle); | |
| 623 | gtk_widget_show(dialog->idle_return); | |
| 624 | gtk_widget_show(dialog->typing); | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
625 | gtk_widget_show(dialog->typed); |
| 5032 | 626 | gtk_widget_show(dialog->stop_typing); |
| 12694 | 627 | gtk_widget_show(dialog->message_recv); |
| 5032 | 628 | |
| 12694 | 629 | /* Create the "Action" frame. */ |
| 630 | frame = gaim_gtk_make_frame(vbox2, _("Action")); | |
| 5032 | 631 | |
| 5319 | 632 | table = gtk_table_new(3, 5, FALSE); |
| 5032 | 633 | gtk_container_add(GTK_CONTAINER(frame), table); |
| 11243 | 634 | gtk_table_set_col_spacings(GTK_TABLE(table), GAIM_HIG_BORDER); |
| 5032 | 635 | gtk_widget_show(table); |
| 636 | ||
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
637 | dialog->open_win |
|
12192
36b7b33aa956
[gaim-migrate @ 14494]
Richard Laager <rlaager@pidgin.im>
parents:
12186
diff
changeset
|
638 | = gtk_check_button_new_with_mnemonic(_("Ope_n an IM window")); |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
639 | dialog->popup |
|
12141
9cd436b9b7f6
[gaim-migrate @ 14442]
Richard Laager <rlaager@pidgin.im>
parents:
12137
diff
changeset
|
640 | = gtk_check_button_new_with_mnemonic(_("_Pop up a notification")); |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
641 | dialog->send_msg |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
642 | = gtk_check_button_new_with_mnemonic(_("Send a _message")); |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
643 | dialog->exec_cmd |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
644 | = gtk_check_button_new_with_mnemonic(_("E_xecute a command")); |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
645 | dialog->play_sound |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
646 | = gtk_check_button_new_with_mnemonic(_("P_lay a sound")); |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
647 | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
648 | dialog->send_msg_entry = gtk_entry_new(); |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
649 | dialog->exec_cmd_entry = gtk_entry_new(); |
| 12934 | 650 | dialog->popup_entry = gtk_entry_new(); |
|
12192
36b7b33aa956
[gaim-migrate @ 14494]
Richard Laager <rlaager@pidgin.im>
parents:
12186
diff
changeset
|
651 | dialog->exec_cmd_browse = gtk_button_new_with_mnemonic(_("Brows_e...")); |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
652 | dialog->play_sound_entry = gtk_entry_new(); |
|
12144
a24ccdee060b
[gaim-migrate @ 14445]
Richard Laager <rlaager@pidgin.im>
parents:
12142
diff
changeset
|
653 | dialog->play_sound_browse = gtk_button_new_with_mnemonic(_("Br_owse...")); |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
654 | dialog->play_sound_test = gtk_button_new_with_mnemonic(_("Pre_view")); |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
655 | |
| 12694 | 656 | gtk_widget_set_sensitive(dialog->send_msg_entry, FALSE); |
| 657 | gtk_widget_set_sensitive(dialog->exec_cmd_entry, FALSE); | |
| 12934 | 658 | gtk_widget_set_sensitive(dialog->popup_entry, FALSE); |
| 12694 | 659 | gtk_widget_set_sensitive(dialog->exec_cmd_browse, FALSE); |
| 660 | gtk_widget_set_sensitive(dialog->play_sound_entry, FALSE); | |
| 661 | gtk_widget_set_sensitive(dialog->play_sound_browse, FALSE); | |
| 662 | gtk_widget_set_sensitive(dialog->play_sound_test, FALSE); | |
| 663 | ||
| 664 | sg = gtk_size_group_new(GTK_SIZE_GROUP_VERTICAL); | |
| 665 | gtk_size_group_add_widget(sg, dialog->open_win); | |
| 666 | gtk_size_group_add_widget(sg, dialog->popup); | |
| 12934 | 667 | gtk_size_group_add_widget(sg, dialog->popup_entry); |
| 12694 | 668 | gtk_size_group_add_widget(sg, dialog->send_msg); |
| 669 | gtk_size_group_add_widget(sg, dialog->send_msg_entry); | |
| 670 | gtk_size_group_add_widget(sg, dialog->exec_cmd); | |
| 671 | gtk_size_group_add_widget(sg, dialog->exec_cmd_entry); | |
| 672 | gtk_size_group_add_widget(sg, dialog->exec_cmd_browse); | |
| 673 | gtk_size_group_add_widget(sg, dialog->play_sound); | |
| 674 | gtk_size_group_add_widget(sg, dialog->play_sound_entry); | |
| 675 | gtk_size_group_add_widget(sg, dialog->play_sound_browse); | |
| 676 | gtk_size_group_add_widget(sg, dialog->play_sound_test); | |
| 5032 | 677 | |
| 678 | gtk_table_attach(GTK_TABLE(table), dialog->open_win, 0, 1, 0, 1, | |
| 679 | GTK_FILL, 0, 0, 0); | |
| 680 | gtk_table_attach(GTK_TABLE(table), dialog->popup, 0, 1, 1, 2, | |
| 681 | GTK_FILL, 0, 0, 0); | |
| 12934 | 682 | gtk_table_attach(GTK_TABLE(table), dialog->popup_entry, 1, 4, 1, 2, |
| 683 | GTK_FILL, 0, 0, 0); | |
| 5032 | 684 | gtk_table_attach(GTK_TABLE(table), dialog->send_msg, 0, 1, 2, 3, |
| 685 | GTK_FILL, 0, 0, 0); | |
| 5319 | 686 | gtk_table_attach(GTK_TABLE(table), dialog->send_msg_entry, 1, 4, 2, 3, |
| 5032 | 687 | GTK_FILL, 0, 0, 0); |
| 688 | gtk_table_attach(GTK_TABLE(table), dialog->exec_cmd, 0, 1, 3, 4, | |
| 689 | GTK_FILL, 0, 0, 0); | |
| 690 | gtk_table_attach(GTK_TABLE(table), dialog->exec_cmd_entry, 1, 2, 3, 4, | |
| 691 | GTK_FILL, 0, 0, 0); | |
| 5319 | 692 | gtk_table_attach(GTK_TABLE(table), dialog->exec_cmd_browse, 2, 3, 3, 4, |
| 693 | GTK_FILL | GTK_EXPAND, 0, 0, 0); | |
| 5032 | 694 | gtk_table_attach(GTK_TABLE(table), dialog->play_sound, 0, 1, 4, 5, |
| 695 | GTK_FILL, 0, 0, 0); | |
| 696 | gtk_table_attach(GTK_TABLE(table), dialog->play_sound_entry, 1, 2, 4, 5, | |
| 697 | GTK_FILL, 0, 0, 0); | |
| 5319 | 698 | gtk_table_attach(GTK_TABLE(table), dialog->play_sound_browse, 2, 3, 4, 5, |
| 699 | GTK_FILL | GTK_EXPAND, 0, 0, 0); | |
| 700 | gtk_table_attach(GTK_TABLE(table), dialog->play_sound_test, 3, 4, 4, 5, | |
| 701 | GTK_FILL | GTK_EXPAND, 0, 0, 0); | |
| 5032 | 702 | |
| 12694 | 703 | gtk_table_set_row_spacings(GTK_TABLE(table), GAIM_HIG_BOX_SPACE / 2); |
| 704 | ||
| 5032 | 705 | gtk_widget_show(dialog->open_win); |
| 706 | gtk_widget_show(dialog->popup); | |
| 12934 | 707 | gtk_widget_show(dialog->popup_entry); |
| 5032 | 708 | gtk_widget_show(dialog->send_msg); |
| 709 | gtk_widget_show(dialog->send_msg_entry); | |
| 710 | gtk_widget_show(dialog->exec_cmd); | |
| 711 | gtk_widget_show(dialog->exec_cmd_entry); | |
| 5319 | 712 | gtk_widget_show(dialog->exec_cmd_browse); |
| 5032 | 713 | gtk_widget_show(dialog->play_sound); |
| 714 | gtk_widget_show(dialog->play_sound_entry); | |
| 5319 | 715 | gtk_widget_show(dialog->play_sound_browse); |
| 716 | gtk_widget_show(dialog->play_sound_test); | |
| 5032 | 717 | |
| 12694 | 718 | g_signal_connect(G_OBJECT(dialog->message_recv), "clicked", |
| 719 | G_CALLBACK(message_recv_toggle), | |
| 720 | dialog->send_msg); | |
| 721 | ||
| 5032 | 722 | g_signal_connect(G_OBJECT(dialog->send_msg), "clicked", |
| 723 | G_CALLBACK(gaim_gtk_toggle_sensitive), | |
| 724 | dialog->send_msg_entry); | |
| 5319 | 725 | |
| 12934 | 726 | g_signal_connect(G_OBJECT(dialog->popup), "clicked", |
| 727 | G_CALLBACK(gaim_gtk_toggle_sensitive), | |
| 728 | dialog->popup_entry); | |
| 729 | ||
| 5319 | 730 | exec_widgets = g_ptr_array_new(); |
| 731 | g_ptr_array_add(exec_widgets,dialog->exec_cmd_entry); | |
| 732 | g_ptr_array_add(exec_widgets,dialog->exec_cmd_browse); | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
733 | |
| 5032 | 734 | g_signal_connect(G_OBJECT(dialog->exec_cmd), "clicked", |
| 10590 | 735 | G_CALLBACK(gaim_gtk_toggle_sensitive_array), |
| 5319 | 736 | exec_widgets); |
| 737 | g_signal_connect(G_OBJECT(dialog->exec_cmd_browse), "clicked", | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
738 | G_CALLBACK(filesel), |
| 5032 | 739 | dialog->exec_cmd_entry); |
| 5319 | 740 | |
| 741 | sound_widgets = g_ptr_array_new(); | |
| 742 | g_ptr_array_add(sound_widgets,dialog->play_sound_entry); | |
| 743 | g_ptr_array_add(sound_widgets,dialog->play_sound_browse); | |
| 744 | g_ptr_array_add(sound_widgets,dialog->play_sound_test); | |
| 745 | ||
| 5032 | 746 | g_signal_connect(G_OBJECT(dialog->play_sound), "clicked", |
| 10590 | 747 | G_CALLBACK(gaim_gtk_toggle_sensitive_array), |
| 5319 | 748 | sound_widgets); |
| 749 | g_signal_connect(G_OBJECT(dialog->play_sound_browse), "clicked", | |
|
5857
52cff8a95261
[gaim-migrate @ 6288]
Christian Hammond <chipx86@chipx86.com>
parents:
5676
diff
changeset
|
750 | G_CALLBACK(filesel), |
| 5032 | 751 | dialog->play_sound_entry); |
| 5319 | 752 | g_signal_connect(G_OBJECT(dialog->play_sound_test), "clicked", |
| 753 | G_CALLBACK(pounce_test_sound), | |
| 754 | dialog->play_sound_entry); | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
755 | |
| 5032 | 756 | g_signal_connect(G_OBJECT(dialog->send_msg_entry), "activate", |
| 757 | G_CALLBACK(save_pounce_cb), dialog); | |
| 12934 | 758 | g_signal_connect(G_OBJECT(dialog->popup_entry), "activate", |
| 759 | G_CALLBACK(save_pounce_cb), dialog); | |
| 5032 | 760 | g_signal_connect(G_OBJECT(dialog->exec_cmd_entry), "activate", |
| 761 | G_CALLBACK(save_pounce_cb), dialog); | |
| 762 | g_signal_connect(G_OBJECT(dialog->play_sound_entry), "activate", | |
| 763 | G_CALLBACK(save_pounce_cb), dialog); | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
764 | |
| 12694 | 765 | /* Create the "Options" frame. */ |
| 766 | frame = gaim_gtk_make_frame(vbox2, _("Options")); | |
| 767 | ||
| 768 | table = gtk_table_new(2, 1, FALSE); | |
| 769 | gtk_container_add(GTK_CONTAINER(frame), table); | |
| 770 | gtk_table_set_col_spacings(GTK_TABLE(table), GAIM_HIG_BORDER); | |
| 771 | gtk_widget_show(table); | |
| 772 | ||
| 773 | dialog->on_away = | |
| 774 | gtk_check_button_new_with_mnemonic(_("P_ounce only when my status is not available")); | |
| 775 | gtk_table_attach(GTK_TABLE(table), dialog->on_away, 0, 1, 0, 1, | |
| 776 | GTK_FILL, 0, 0, 0); | |
| 777 | ||
| 5032 | 778 | dialog->save_pounce = gtk_check_button_new_with_mnemonic( |
|
12186
fddd08d58f3b
[gaim-migrate @ 14488]
Mark Doliner <markdoliner@pidgin.im>
parents:
12144
diff
changeset
|
779 | _("_Recurring")); |
| 12694 | 780 | gtk_table_attach(GTK_TABLE(table), dialog->save_pounce, 0, 1, 1, 2, |
| 781 | GTK_FILL, 0, 0, 0); | |
| 5032 | 782 | |
| 12694 | 783 | gtk_widget_show(dialog->on_away); |
| 784 | gtk_widget_show(dialog->save_pounce); | |
| 5032 | 785 | |
| 786 | /* Now the button box! */ | |
| 787 | bbox = gtk_hbutton_box_new(); | |
| 11243 | 788 | gtk_box_set_spacing(GTK_BOX(bbox), GAIM_HIG_BOX_SPACE); |
| 5032 | 789 | gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); |
| 790 | gtk_box_pack_end(GTK_BOX(vbox1), bbox, FALSE, FALSE, 0); | |
| 791 | gtk_widget_show(bbox); | |
| 792 | ||
| 793 | /* Cancel button */ | |
| 794 | button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); | |
| 795 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
| 796 | gtk_widget_show(button); | |
| 797 | ||
| 798 | g_signal_connect(G_OBJECT(button), "clicked", | |
| 799 | G_CALLBACK(cancel_cb), dialog); | |
| 800 | ||
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
801 | /* Save button */ |
|
5876
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
802 | dialog->save_button = button = gtk_button_new_from_stock(GTK_STOCK_SAVE); |
| 5032 | 803 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
| 804 | gtk_widget_show(button); | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6982
diff
changeset
|
805 | |
| 5032 | 806 | g_signal_connect(G_OBJECT(button), "clicked", |
| 807 | G_CALLBACK(save_pounce_cb), dialog); | |
| 808 | ||
|
5876
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
809 | if (*gtk_entry_get_text(GTK_ENTRY(dialog->buddy_entry)) == '\0') |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
810 | gtk_widget_set_sensitive(button, FALSE); |
|
c12b198bde14
[gaim-migrate @ 6308]
Christian Hammond <chipx86@chipx86.com>
parents:
5875
diff
changeset
|
811 | |
|
8803
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
812 | /* Setup drag-and-drop */ |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
813 | gtk_drag_dest_set(window, |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
814 | GTK_DEST_DEFAULT_MOTION | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
815 | GTK_DEST_DEFAULT_DROP, |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
816 | dnd_targets, |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
817 | sizeof(dnd_targets) / sizeof(GtkTargetEntry), |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
818 | GDK_ACTION_COPY); |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
819 | gtk_drag_dest_set(dialog->buddy_entry, |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
820 | GTK_DEST_DEFAULT_MOTION | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
821 | GTK_DEST_DEFAULT_DROP, |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
822 | dnd_targets, |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
823 | sizeof(dnd_targets) / sizeof(GtkTargetEntry), |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
824 | GDK_ACTION_COPY); |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
825 | |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
826 | g_signal_connect(G_OBJECT(window), "drag_data_received", |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
827 | G_CALLBACK(pounce_dnd_recv), dialog); |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
828 | g_signal_connect(G_OBJECT(dialog->buddy_entry), "drag_data_received", |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
829 | G_CALLBACK(pounce_dnd_recv), dialog); |
|
79bc4ecbcac7
[gaim-migrate @ 9565]
Christian Hammond <chipx86@chipx86.com>
parents:
8259
diff
changeset
|
830 | |
| 5032 | 831 | /* Set the values of stuff. */ |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
832 | if (cur_pounce != NULL) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
833 | { |
| 12694 | 834 | GaimPounceEvent events = gaim_pounce_get_events(cur_pounce); |
| 835 | GaimPounceOption options = gaim_pounce_get_options(cur_pounce); | |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
836 | const char *value; |
| 5032 | 837 | |
| 12694 | 838 | /* Options */ |
| 839 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->on_away), | |
| 840 | (options & GAIM_POUNCE_OPTION_AWAY)); | |
| 841 | ||
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
842 | /* Events */ |
| 5032 | 843 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->signon), |
| 844 | (events & GAIM_POUNCE_SIGNON)); | |
| 845 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->signoff), | |
| 846 | (events & GAIM_POUNCE_SIGNOFF)); | |
| 847 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->away), | |
| 848 | (events & GAIM_POUNCE_AWAY)); | |
| 849 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->away_return), | |
| 850 | (events & GAIM_POUNCE_AWAY_RETURN)); | |
| 851 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->idle), | |
| 852 | (events & GAIM_POUNCE_IDLE)); | |
| 853 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->idle_return), | |
| 854 | (events & GAIM_POUNCE_IDLE_RETURN)); | |
| 855 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->typing), | |
| 856 | (events & GAIM_POUNCE_TYPING)); | |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
857 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->typed), |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
858 | (events & GAIM_POUNCE_TYPED)); |
| 5032 | 859 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->stop_typing), |
| 860 | (events & GAIM_POUNCE_TYPING_STOPPED)); | |
| 12694 | 861 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->message_recv), |
| 862 | (events & GAIM_POUNCE_MESSAGE_RECEIVED)); | |
| 5032 | 863 | |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
864 | /* Actions */ |
| 5032 | 865 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->open_win), |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
866 | gaim_pounce_action_is_enabled(cur_pounce, "open-window")); |
| 5032 | 867 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->popup), |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
868 | gaim_pounce_action_is_enabled(cur_pounce, "popup-notify")); |
| 5032 | 869 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->send_msg), |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
870 | gaim_pounce_action_is_enabled(cur_pounce, "send-message")); |
| 5032 | 871 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->exec_cmd), |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
872 | gaim_pounce_action_is_enabled(cur_pounce, "execute-command")); |
| 5032 | 873 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->play_sound), |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
874 | gaim_pounce_action_is_enabled(cur_pounce, "play-sound")); |
| 5032 | 875 | |
| 876 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->save_pounce), | |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
877 | gaim_pounce_get_save(cur_pounce)); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
878 | |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
879 | if ((value = gaim_pounce_action_get_attribute(cur_pounce, |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
880 | "send-message", |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
881 | "message")) != NULL) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
882 | { |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
883 | gtk_entry_set_text(GTK_ENTRY(dialog->send_msg_entry), value); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
884 | } |
| 5032 | 885 | |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
886 | if ((value = gaim_pounce_action_get_attribute(cur_pounce, |
| 12934 | 887 | "popup-notify", |
| 888 | "reason")) != NULL) | |
| 889 | { | |
| 890 | gtk_entry_set_text(GTK_ENTRY(dialog->popup_entry), value); | |
| 891 | } | |
| 892 | ||
| 893 | if ((value = gaim_pounce_action_get_attribute(cur_pounce, | |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
894 | "execute-command", |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
895 | "command")) != NULL) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
896 | { |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
897 | gtk_entry_set_text(GTK_ENTRY(dialog->exec_cmd_entry), value); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
898 | } |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
899 | |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
900 | if ((value = gaim_pounce_action_get_attribute(cur_pounce, |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
901 | "play-sound", |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
902 | "filename")) != NULL) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
903 | { |
|
5864
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
904 | gtk_entry_set_text(GTK_ENTRY(dialog->play_sound_entry), value); |
|
86822afeeab0
[gaim-migrate @ 6295]
Christian Hammond <chipx86@chipx86.com>
parents:
5857
diff
changeset
|
905 | } |
| 5032 | 906 | } |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
907 | else |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
908 | { |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
909 | GaimBuddy *buddy = NULL; |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
910 | |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
911 | if (name != NULL) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
912 | buddy = gaim_find_buddy(account, name); |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
913 | |
| 5032 | 914 | /* Set some defaults */ |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
915 | if (buddy == NULL) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
916 | { |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
917 | gtk_toggle_button_set_active( |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
918 | GTK_TOGGLE_BUTTON(dialog->signon), TRUE); |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
919 | } |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
920 | else |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
921 | { |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
922 | if (!GAIM_BUDDY_IS_ONLINE(buddy)) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
923 | { |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
924 | gtk_toggle_button_set_active( |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
925 | GTK_TOGGLE_BUTTON(dialog->signon), TRUE); |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
926 | } |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
927 | else |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
928 | { |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
929 | gboolean default_set = FALSE; |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9910
diff
changeset
|
930 | GaimPresence *presence = gaim_buddy_get_presence(buddy); |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
931 | |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9910
diff
changeset
|
932 | if (gaim_presence_is_idle(presence)) |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
933 | { |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
934 | gtk_toggle_button_set_active( |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
935 | GTK_TOGGLE_BUTTON(dialog->idle_return), TRUE); |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
936 | |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
937 | default_set = TRUE; |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
938 | } |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
939 | |
|
9949
377cd65fab3d
[gaim-migrate @ 10845]
Daniel Atallah <datallah@pidgin.im>
parents:
9910
diff
changeset
|
940 | if (!gaim_presence_is_available(presence)) |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
941 | { |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
942 | gtk_toggle_button_set_active( |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
943 | GTK_TOGGLE_BUTTON(dialog->away_return), TRUE); |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
944 | |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
945 | default_set = TRUE; |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
946 | } |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
947 | |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
948 | if (!default_set) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
949 | { |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
950 | gtk_toggle_button_set_active( |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
951 | GTK_TOGGLE_BUTTON(dialog->signon), TRUE); |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
952 | } |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
953 | } |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
954 | } |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
955 | |
|
9206
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
956 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->open_win), |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
957 | gaim_prefs_get_bool("/gaim/gtk/pounces/default_actions/open-window")); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
958 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->popup), |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
959 | gaim_prefs_get_bool("/gaim/gtk/pounces/default_actions/popup-notify")); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
960 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->send_msg), |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
961 | gaim_prefs_get_bool("/gaim/gtk/pounces/default_actions/send-message")); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
962 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->exec_cmd), |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
963 | gaim_prefs_get_bool("/gaim/gtk/pounces/default_actions/execute-command")); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
964 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->play_sound), |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
965 | gaim_prefs_get_bool("/gaim/gtk/pounces/default_actions/play-sound")); |
| 5032 | 966 | } |
| 967 | ||
| 968 | gtk_widget_show_all(vbox2); | |
| 969 | gtk_widget_show(window); | |
| 970 | } | |
| 971 | ||
| 12136 | 972 | static gboolean |
| 973 | pounces_manager_configure_cb(GtkWidget *widget, GdkEventConfigure *event, PouncesManager *dialog) | |
| 974 | { | |
| 975 | if (GTK_WIDGET_VISIBLE(widget)) { | |
| 976 | gaim_prefs_set_int("/gaim/gtk/pounces/dialog/width", event->width); | |
| 977 | gaim_prefs_set_int("/gaim/gtk/pounces/dialog/height", event->height); | |
| 978 | } | |
| 979 | ||
| 980 | return FALSE; | |
| 981 | } | |
| 982 | ||
| 983 | static gboolean | |
| 984 | pounces_manager_find_pounce(GtkTreeIter *iter, GaimPounce *pounce) | |
| 5032 | 985 | { |
| 12136 | 986 | GtkTreeModel *model = GTK_TREE_MODEL(pounces_manager->model); |
| 987 | GaimPounce *p; | |
| 988 | ||
| 989 | if (!gtk_tree_model_get_iter_first(model, iter)) | |
| 990 | return FALSE; | |
| 991 | ||
| 992 | gtk_tree_model_get(model, iter, POUNCES_MANAGER_COLUMN_POUNCE, &p, -1); | |
| 993 | if (pounce == p) | |
| 994 | return TRUE; | |
| 995 | ||
| 996 | while (gtk_tree_model_iter_next(model, iter)) | |
| 997 | { | |
| 998 | gtk_tree_model_get(model, iter, POUNCES_MANAGER_COLUMN_POUNCE, &p, -1); | |
| 999 | if (pounce == p) | |
| 1000 | return TRUE; | |
| 1001 | } | |
| 1002 | ||
| 1003 | return FALSE; | |
| 1004 | } | |
| 1005 | ||
| 1006 | static gboolean | |
| 1007 | pounces_manager_destroy_cb(GtkWidget *widget, GdkEvent *event, gpointer user_data) | |
| 1008 | { | |
| 1009 | PouncesManager *dialog = user_data; | |
| 1010 | ||
| 1011 | dialog->window = NULL; | |
| 1012 | gaim_gtk_pounces_manager_hide(); | |
| 1013 | ||
| 1014 | return FALSE; | |
| 1015 | } | |
| 1016 | ||
| 1017 | #if !GTK_CHECK_VERSION(2,2,0) | |
| 1018 | static void | |
| 1019 | count_selected_helper(GtkTreeModel *model, GtkTreePath *path, | |
| 1020 | GtkTreeIter *iter, gpointer user_data) | |
| 1021 | { | |
| 1022 | (*(gint *)user_data)++; | |
| 1023 | } | |
| 1024 | #endif | |
| 1025 | ||
| 1026 | static void | |
| 1027 | pounces_manager_connection_cb(GaimConnection *gc, GtkWidget *add_button) | |
| 1028 | { | |
| 1029 | gtk_widget_set_sensitive(add_button, (gaim_connections_get_all() != NULL)); | |
| 5032 | 1030 | } |
| 1031 | ||
| 1032 | static void | |
| 12136 | 1033 | pounces_manager_add_cb(GtkButton *button, gpointer user_data) |
| 1034 | { | |
| 1035 | gaim_gtk_pounce_editor_show(NULL, NULL, NULL); | |
| 1036 | } | |
| 1037 | ||
| 1038 | static void | |
| 1039 | pounces_manager_modify_foreach(GtkTreeModel *model, GtkTreePath *path, | |
| 1040 | GtkTreeIter *iter, gpointer user_data) | |
|
5153
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1041 | { |
| 12136 | 1042 | GaimPounce *pounce; |
| 1043 | ||
| 1044 | gtk_tree_model_get(model, iter, POUNCES_MANAGER_COLUMN_POUNCE, &pounce, -1); | |
| 1045 | gaim_gtk_pounce_editor_show(NULL, NULL, pounce); | |
| 1046 | } | |
| 1047 | ||
| 1048 | static void | |
| 1049 | pounces_manager_modify_cb(GtkButton *button, gpointer user_data) | |
| 1050 | { | |
| 1051 | PouncesManager *dialog = user_data; | |
| 1052 | GtkTreeSelection *selection; | |
| 1053 | ||
| 1054 | selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview)); | |
| 1055 | ||
| 1056 | gtk_tree_selection_selected_foreach(selection, pounces_manager_modify_foreach, user_data); | |
| 1057 | } | |
| 1058 | ||
| 1059 | static void | |
| 1060 | pounces_manager_delete_confirm_cb(GaimPounce *pounce) | |
| 1061 | { | |
| 1062 | GtkTreeIter iter; | |
| 1063 | ||
|
13172
4e7621289194
[gaim-migrate @ 15534]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13120
diff
changeset
|
1064 | if (pounces_manager && pounces_manager_find_pounce(&iter, pounce)) |
| 12136 | 1065 | gtk_list_store_remove(pounces_manager->model, &iter); |
| 1066 | ||
|
13172
4e7621289194
[gaim-migrate @ 15534]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13120
diff
changeset
|
1067 | gaim_request_close_with_handle(pounce); |
|
5153
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1068 | gaim_pounce_destroy(pounce); |
|
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1069 | } |
|
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1070 | |
|
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1071 | static void |
| 12136 | 1072 | pounces_manager_delete_foreach(GtkTreeModel *model, GtkTreePath *path, |
| 1073 | GtkTreeIter *iter, gpointer user_data) | |
| 1074 | { | |
| 1075 | GaimPounce *pounce; | |
| 1076 | GaimAccount *account; | |
| 1077 | const char *pouncer, *pouncee; | |
| 1078 | char *buf; | |
| 1079 | ||
| 1080 | gtk_tree_model_get(model, iter, POUNCES_MANAGER_COLUMN_POUNCE, &pounce, -1); | |
| 1081 | account = gaim_pounce_get_pouncer(pounce); | |
| 1082 | pouncer = gaim_account_get_username(account); | |
| 1083 | pouncee = gaim_pounce_get_pouncee(pounce); | |
| 1084 | ||
| 1085 | buf = g_strdup_printf(_("Are you sure you want to delete the pounce on %s for %s?"), pouncee, pouncer); | |
|
13172
4e7621289194
[gaim-migrate @ 15534]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13120
diff
changeset
|
1086 | gaim_request_action(pounce, NULL, buf, NULL, 0, pounce, 2, |
| 12136 | 1087 | _("Delete"), pounces_manager_delete_confirm_cb, |
|
13228
d1ef216aba5c
[gaim-migrate @ 15592]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
13172
diff
changeset
|
1088 | _("Cancel"), NULL); |
| 12136 | 1089 | g_free(buf); |
| 1090 | } | |
| 1091 | ||
| 1092 | static void | |
| 1093 | pounces_manager_delete_cb(GtkButton *button, gpointer user_data) | |
| 1094 | { | |
| 1095 | PouncesManager *dialog = user_data; | |
| 1096 | GtkTreeSelection *selection; | |
| 1097 | ||
| 1098 | selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview)); | |
| 1099 | ||
| 1100 | gtk_tree_selection_selected_foreach(selection, pounces_manager_delete_foreach, user_data); | |
| 1101 | } | |
| 1102 | ||
| 1103 | static void | |
| 1104 | pounces_manager_close_cb(GtkButton *button, gpointer user_data) | |
| 5032 | 1105 | { |
| 12136 | 1106 | gaim_gtk_pounces_manager_hide(); |
| 1107 | } | |
| 1108 | ||
| 1109 | static void | |
| 1110 | pounce_selected_cb(GtkTreeSelection *sel, gpointer user_data) | |
| 1111 | { | |
| 1112 | PouncesManager *dialog = user_data; | |
| 1113 | int num_selected = 0; | |
| 1114 | ||
| 1115 | #if GTK_CHECK_VERSION(2,2,0) | |
| 1116 | num_selected = gtk_tree_selection_count_selected_rows(sel); | |
| 1117 | #else | |
| 1118 | gtk_tree_selection_selected_foreach(sel, count_selected_helper, &num_selected); | |
| 1119 | #endif | |
| 1120 | ||
| 1121 | gtk_widget_set_sensitive(dialog->modify_button, (num_selected > 0)); | |
| 1122 | gtk_widget_set_sensitive(dialog->delete_button, (num_selected > 0)); | |
| 1123 | } | |
| 1124 | ||
|
12137
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1125 | static gboolean |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1126 | pounce_double_click_cb(GtkTreeView *treeview, GdkEventButton *event, gpointer user_data) |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1127 | { |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1128 | PouncesManager *dialog = user_data; |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1129 | GtkTreePath *path; |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1130 | GtkTreeIter iter; |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1131 | GaimPounce *pounce; |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1132 | |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1133 | /* Figure out which node was clicked */ |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1134 | if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(dialog->treeview), event->x, event->y, &path, NULL, NULL, NULL)) |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1135 | return FALSE; |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1136 | gtk_tree_model_get_iter(GTK_TREE_MODEL(dialog->model), &iter, path); |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1137 | gtk_tree_path_free(path); |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1138 | gtk_tree_model_get(GTK_TREE_MODEL(dialog->model), &iter, POUNCES_MANAGER_COLUMN_POUNCE, &pounce, -1); |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1139 | |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1140 | if ((pounce != NULL) && (event->button == 1) && |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1141 | (event->type == GDK_2BUTTON_PRESS)) |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1142 | { |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1143 | gaim_gtk_pounce_editor_show(NULL, NULL, pounce); |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1144 | return TRUE; |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1145 | } |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1146 | |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1147 | return FALSE; |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1148 | } |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1149 | |
| 12136 | 1150 | static void |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
1151 | pounces_manager_recurring_cb(GtkCellRendererToggle *renderer, gchar *path_str, |
| 12136 | 1152 | gpointer user_data) |
| 1153 | { | |
| 1154 | PouncesManager *dialog = user_data; | |
| 1155 | GaimPounce *pounce; | |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
1156 | gboolean recurring; |
| 12136 | 1157 | GtkTreeModel *model = GTK_TREE_MODEL(dialog->model); |
| 1158 | GtkTreeIter iter; | |
| 1159 | ||
| 1160 | gtk_tree_model_get_iter_from_string(model, &iter, path_str); | |
| 1161 | gtk_tree_model_get(model, &iter, | |
| 1162 | POUNCES_MANAGER_COLUMN_POUNCE, &pounce, | |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
1163 | POUNCES_MANAGER_COLUMN_RECURRING, &recurring, |
| 12136 | 1164 | -1); |
| 1165 | ||
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
1166 | gaim_pounce_set_save(pounce, !recurring); |
| 12136 | 1167 | |
| 1168 | update_pounces(); | |
| 5032 | 1169 | } |
| 1170 | ||
|
8259
7ed91862683d
[gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
1171 | static gboolean |
| 12136 | 1172 | search_func(GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer search_data) |
|
5153
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1173 | { |
| 12136 | 1174 | gboolean result; |
| 1175 | char *haystack; | |
| 1176 | ||
| 1177 | gtk_tree_model_get(model, iter, column, &haystack, -1); | |
| 1178 | ||
| 1179 | result = (gaim_strcasestr(haystack, key) == NULL); | |
| 1180 | ||
| 1181 | g_free(haystack); | |
| 1182 | ||
| 1183 | return result; | |
| 1184 | } | |
| 1185 | ||
| 1186 | static GtkWidget * | |
| 1187 | create_pounces_list(PouncesManager *dialog) | |
| 1188 | { | |
| 1189 | GtkWidget *sw; | |
| 1190 | GtkWidget *treeview; | |
| 1191 | GtkTreeSelection *sel; | |
| 1192 | GtkTreeViewColumn *column; | |
| 1193 | GtkCellRenderer *renderer; | |
|
5153
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1194 | |
| 12136 | 1195 | /* Create the scrolled window */ |
| 1196 | sw = gtk_scrolled_window_new(0, 0); | |
| 1197 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13844
diff
changeset
|
1198 | GTK_POLICY_AUTOMATIC, |
| 13775 | 1199 | GTK_POLICY_AUTOMATIC); |
| 12136 | 1200 | gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
| 13775 | 1201 | GTK_SHADOW_IN); |
| 12136 | 1202 | gtk_widget_show(sw); |
|
8259
7ed91862683d
[gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
1203 | |
| 12136 | 1204 | /* Create the list model */ |
| 1205 | dialog->model = gtk_list_store_new(POUNCES_MANAGER_NUM_COLUMNS, | |
| 1206 | G_TYPE_POINTER, | |
| 1207 | GDK_TYPE_PIXBUF, | |
| 1208 | G_TYPE_STRING, | |
| 1209 | G_TYPE_STRING, | |
| 1210 | G_TYPE_BOOLEAN | |
| 1211 | ); | |
|
10250
9a0f00083ec1
[gaim-migrate @ 11390]
Mark Doliner <markdoliner@pidgin.im>
parents:
10246
diff
changeset
|
1212 | |
| 12136 | 1213 | /* Create the treeview */ |
| 1214 | treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(dialog->model)); | |
| 1215 | dialog->treeview = treeview; | |
| 1216 | gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE); | |
|
10250
9a0f00083ec1
[gaim-migrate @ 11390]
Mark Doliner <markdoliner@pidgin.im>
parents:
10246
diff
changeset
|
1217 | |
| 12136 | 1218 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); |
| 1219 | gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE); | |
| 1220 | g_signal_connect(G_OBJECT(sel), "changed", | |
| 1221 | G_CALLBACK(pounce_selected_cb), dialog); | |
| 1222 | ||
|
12137
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1223 | /* Handle double-clicking */ |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1224 | g_signal_connect(G_OBJECT(treeview), "button_press_event", |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1225 | G_CALLBACK(pounce_double_click_cb), dialog); |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1226 | |
|
6a9dafcaaed1
[gaim-migrate @ 14437]
Richard Laager <rlaager@pidgin.im>
parents:
12136
diff
changeset
|
1227 | |
| 12136 | 1228 | gtk_container_add(GTK_CONTAINER(sw), treeview); |
| 1229 | gtk_widget_show(treeview); | |
|
8259
7ed91862683d
[gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
1230 | |
| 12136 | 1231 | /* Pouncee Column */ |
| 1232 | column = gtk_tree_view_column_new(); | |
| 1233 | gtk_tree_view_column_set_title(column, _("Pounce Target")); | |
| 1234 | gtk_tree_view_column_set_resizable(column, TRUE); | |
| 1235 | gtk_tree_view_column_set_min_width(column, 200); | |
| 1236 | gtk_tree_view_column_set_sort_column_id(column, | |
| 1237 | POUNCES_MANAGER_COLUMN_TARGET); | |
| 1238 | gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); | |
| 5161 | 1239 | |
| 12136 | 1240 | /* Icon */ |
| 1241 | renderer = gtk_cell_renderer_pixbuf_new(); | |
| 1242 | gtk_tree_view_column_pack_start(column, renderer, FALSE); | |
| 1243 | gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", | |
| 1244 | POUNCES_MANAGER_COLUMN_ICON); | |
| 1245 | ||
| 1246 | /* Pouncee */ | |
| 1247 | renderer = gtk_cell_renderer_text_new(); | |
| 1248 | gtk_tree_view_column_pack_start(column, renderer, TRUE); | |
| 1249 | gtk_tree_view_column_add_attribute(column, renderer, "text", | |
| 1250 | POUNCES_MANAGER_COLUMN_TARGET); | |
| 1251 | ||
|
5153
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1252 | |
| 12136 | 1253 | /* Account Column */ |
| 1254 | column = gtk_tree_view_column_new(); | |
| 1255 | gtk_tree_view_column_set_title(column, _("Account")); | |
| 1256 | gtk_tree_view_column_set_resizable(column, TRUE); | |
| 1257 | gtk_tree_view_column_set_min_width(column, 200); | |
| 1258 | gtk_tree_view_column_set_sort_column_id(column, | |
| 1259 | POUNCES_MANAGER_COLUMN_ACCOUNT); | |
| 1260 | gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); | |
| 1261 | renderer = gtk_cell_renderer_text_new(); | |
| 1262 | gtk_tree_view_column_pack_start(column, renderer, TRUE); | |
| 1263 | gtk_tree_view_column_add_attribute(column, renderer, "text", | |
| 1264 | POUNCES_MANAGER_COLUMN_ACCOUNT); | |
|
5153
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1265 | |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
1266 | /* Recurring Column */ |
| 12136 | 1267 | renderer = gtk_cell_renderer_toggle_new(); |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
1268 | column = gtk_tree_view_column_new_with_attributes(_("Recurring"), renderer, |
|
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
1269 | "active", POUNCES_MANAGER_COLUMN_RECURRING, NULL); |
| 12136 | 1270 | gtk_tree_view_column_set_sort_column_id(column, |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
1271 | POUNCES_MANAGER_COLUMN_RECURRING); |
| 12136 | 1272 | gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); |
| 1273 | g_signal_connect(G_OBJECT(renderer), "toggled", | |
|
12193
243b18a880ba
[gaim-migrate @ 14495]
Richard Laager <rlaager@pidgin.im>
parents:
12192
diff
changeset
|
1274 | G_CALLBACK(pounces_manager_recurring_cb), dialog); |
|
5153
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1275 | |
| 12136 | 1276 | /* Enable CTRL+F searching */ |
| 1277 | gtk_tree_view_set_search_column(GTK_TREE_VIEW(treeview), POUNCES_MANAGER_COLUMN_TARGET); | |
| 1278 | gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(treeview), search_func, NULL, NULL); | |
|
8259
7ed91862683d
[gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
1279 | |
| 12136 | 1280 | /* Sort the pouncee column by default */ |
| 1281 | gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(dialog->model), | |
| 1282 | POUNCES_MANAGER_COLUMN_TARGET, | |
| 1283 | GTK_SORT_ASCENDING); | |
| 1284 | ||
| 1285 | /* Populate list */ | |
| 1286 | populate_pounces_list(dialog); | |
| 1287 | ||
| 1288 | return sw; | |
|
5153
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1289 | } |
|
4865538db77a
[gaim-migrate @ 5517]
Christian Hammond <chipx86@chipx86.com>
parents:
5054
diff
changeset
|
1290 | |
| 5032 | 1291 | void |
| 12136 | 1292 | gaim_gtk_pounces_manager_show(void) |
| 5032 | 1293 | { |
| 12136 | 1294 | PouncesManager *dialog; |
| 1295 | GtkWidget *bbox; | |
| 1296 | GtkWidget *button; | |
| 1297 | GtkWidget *list; | |
| 1298 | GtkWidget *vbox; | |
| 1299 | GtkWidget *win; | |
| 1300 | int width, height; | |
| 5032 | 1301 | |
| 12136 | 1302 | if (pounces_manager != NULL) { |
| 1303 | gtk_window_present(GTK_WINDOW(pounces_manager->window)); | |
| 1304 | return; | |
| 5032 | 1305 | } |
| 8252 | 1306 | |
| 12136 | 1307 | pounces_manager = dialog = g_new0(PouncesManager, 1); |
| 1308 | ||
| 1309 | width = gaim_prefs_get_int("/gaim/gtk/pounces/dialog/width"); | |
| 1310 | height = gaim_prefs_get_int("/gaim/gtk/pounces/dialog/height"); | |
| 1311 | ||
| 1312 | dialog->window = win = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 1313 | gtk_window_set_default_size(GTK_WINDOW(win), width, height); | |
| 1314 | gtk_window_set_role(GTK_WINDOW(win), "pounces"); | |
| 1315 | gtk_window_set_title(GTK_WINDOW(win), _("Buddy Pounces")); | |
| 1316 | gtk_container_set_border_width(GTK_CONTAINER(win), GAIM_HIG_BORDER); | |
| 1317 | ||
| 1318 | g_signal_connect(G_OBJECT(win), "delete_event", | |
| 1319 | G_CALLBACK(pounces_manager_destroy_cb), dialog); | |
| 1320 | g_signal_connect(G_OBJECT(win), "configure_event", | |
| 1321 | G_CALLBACK(pounces_manager_configure_cb), dialog); | |
| 1322 | ||
| 1323 | /* Setup the vbox */ | |
| 1324 | vbox = gtk_vbox_new(FALSE, GAIM_HIG_BORDER); | |
| 1325 | gtk_container_add(GTK_CONTAINER(win), vbox); | |
| 1326 | gtk_widget_show(vbox); | |
| 5032 | 1327 | |
| 12136 | 1328 | /* List of saved buddy pounces */ |
| 1329 | list = create_pounces_list(dialog); | |
| 1330 | gtk_box_pack_start(GTK_BOX(vbox), list, TRUE, TRUE, 0); | |
| 1331 | ||
| 1332 | /* Button box. */ | |
| 1333 | bbox = gtk_hbutton_box_new(); | |
| 1334 | gtk_box_set_spacing(GTK_BOX(bbox), GAIM_HIG_BOX_SPACE); | |
| 1335 | gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); | |
| 1336 | gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0); | |
| 1337 | gtk_widget_show(bbox); | |
| 5032 | 1338 | |
| 12136 | 1339 | /* Add button */ |
| 1340 | button = gtk_button_new_from_stock(GTK_STOCK_ADD); | |
| 1341 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
| 1342 | gtk_widget_set_sensitive(button, (gaim_connections_get_all() != NULL)); | |
| 1343 | gaim_signal_connect(gaim_connections_get_handle(), "signed-on", | |
| 1344 | pounces_manager, GAIM_CALLBACK(pounces_manager_connection_cb), button); | |
| 1345 | gaim_signal_connect(gaim_connections_get_handle(), "signed-off", | |
| 1346 | pounces_manager, GAIM_CALLBACK(pounces_manager_connection_cb), button); | |
| 1347 | gtk_widget_show(button); | |
| 1348 | ||
| 1349 | g_signal_connect(G_OBJECT(button), "clicked", | |
| 1350 | G_CALLBACK(pounces_manager_add_cb), dialog); | |
| 5032 | 1351 | |
| 12136 | 1352 | /* Modify button */ |
| 1353 | button = gtk_button_new_from_stock(GAIM_STOCK_MODIFY); | |
| 1354 | dialog->modify_button = button; | |
| 1355 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
| 1356 | gtk_widget_set_sensitive(button, FALSE); | |
| 1357 | gtk_widget_show(button); | |
| 1358 | ||
| 1359 | g_signal_connect(G_OBJECT(button), "clicked", | |
| 1360 | G_CALLBACK(pounces_manager_modify_cb), dialog); | |
|
8259
7ed91862683d
[gaim-migrate @ 8982]
Christian Hammond <chipx86@chipx86.com>
parents:
8252
diff
changeset
|
1361 | |
| 12136 | 1362 | /* Delete button */ |
| 1363 | button = gtk_button_new_from_stock(GTK_STOCK_DELETE); | |
| 1364 | dialog->delete_button = button; | |
| 1365 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
| 1366 | gtk_widget_set_sensitive(button, FALSE); | |
| 1367 | gtk_widget_show(button); | |
| 5032 | 1368 | |
| 12136 | 1369 | g_signal_connect(G_OBJECT(button), "clicked", |
| 1370 | G_CALLBACK(pounces_manager_delete_cb), dialog); | |
| 5032 | 1371 | |
| 12136 | 1372 | /* Close button */ |
| 1373 | button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); | |
| 1374 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); | |
| 1375 | gtk_widget_show(button); | |
| 1376 | ||
| 1377 | g_signal_connect(G_OBJECT(button), "clicked", | |
| 1378 | G_CALLBACK(pounces_manager_close_cb), dialog); | |
| 1379 | ||
| 1380 | gtk_widget_show(win); | |
| 1381 | } | |
| 1382 | ||
| 1383 | void | |
| 1384 | gaim_gtk_pounces_manager_hide(void) | |
| 1385 | { | |
| 1386 | if (pounces_manager == NULL) | |
| 1387 | return; | |
| 1388 | ||
| 1389 | if (pounces_manager->window != NULL) | |
| 1390 | gtk_widget_destroy(pounces_manager->window); | |
| 1391 | ||
| 1392 | gaim_signals_disconnect_by_handle(pounces_manager); | |
| 1393 | ||
| 1394 | g_free(pounces_manager); | |
| 1395 | pounces_manager = NULL; | |
| 5032 | 1396 | } |
| 1397 | ||
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1398 | static void |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1399 | pounce_cb(GaimPounce *pounce, GaimPounceEvent events, void *data) |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1400 | { |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1401 | GaimConversation *conv; |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1402 | GaimAccount *account; |
|
7994
13b0203d6d52
[gaim-migrate @ 8671]
Christian Hammond <chipx86@chipx86.com>
parents:
7276
diff
changeset
|
1403 | GaimBuddy *buddy; |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1404 | const char *pouncee; |
|
7994
13b0203d6d52
[gaim-migrate @ 8671]
Christian Hammond <chipx86@chipx86.com>
parents:
7276
diff
changeset
|
1405 | const char *alias; |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1406 | |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1407 | pouncee = gaim_pounce_get_pouncee(pounce); |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1408 | account = gaim_pounce_get_pouncer(pounce); |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1409 | |
|
7994
13b0203d6d52
[gaim-migrate @ 8671]
Christian Hammond <chipx86@chipx86.com>
parents:
7276
diff
changeset
|
1410 | buddy = gaim_find_buddy(account, pouncee); |
| 12934 | 1411 | if (buddy != NULL) |
| 1412 | { | |
| 1413 | alias = gaim_buddy_get_alias(buddy); | |
| 1414 | if (alias == NULL) | |
| 1415 | alias = pouncee; | |
| 1416 | } | |
| 1417 | else | |
| 1418 | alias = pouncee; | |
|
7994
13b0203d6d52
[gaim-migrate @ 8671]
Christian Hammond <chipx86@chipx86.com>
parents:
7276
diff
changeset
|
1419 | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1420 | if (gaim_pounce_action_is_enabled(pounce, "open-window")) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1421 | { |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11243
diff
changeset
|
1422 | conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, pouncee, account); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1423 | |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1424 | if (conv == NULL) |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11243
diff
changeset
|
1425 | conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, account, pouncee); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1426 | } |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1427 | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1428 | if (gaim_pounce_action_is_enabled(pounce, "popup-notify")) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1429 | { |
| 12934 | 1430 | char *tmp; |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1431 | const char *name_shown; |
| 12934 | 1432 | const char *reason; |
| 1433 | reason = gaim_pounce_action_get_attribute(pounce, "popup-notify", | |
| 1434 | "reason"); | |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1435 | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1436 | /* |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1437 | * Here we place the protocol name in the pounce dialog to lessen |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1438 | * confusion about what protocol a pounce is for. |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1439 | */ |
| 12934 | 1440 | tmp = g_strdup_printf( |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1441 | (events & GAIM_POUNCE_TYPING) ? |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1442 | _("%s has started typing to you (%s)") : |
|
13844
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
1443 | (events & GAIM_POUNCE_TYPED) ? |
|
835b8f7b3d1d
[gaim-migrate @ 16295]
Mark Doliner <markdoliner@pidgin.im>
parents:
13775
diff
changeset
|
1444 | _("%s has paused while typing to you (%s)") : |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1445 | (events & GAIM_POUNCE_SIGNON) ? |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1446 | _("%s has signed on (%s)") : |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1447 | (events & GAIM_POUNCE_IDLE_RETURN) ? |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1448 | _("%s has returned from being idle (%s)") : |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1449 | (events & GAIM_POUNCE_AWAY_RETURN) ? |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1450 | _("%s has returned from being away (%s)") : |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1451 | (events & GAIM_POUNCE_TYPING_STOPPED) ? |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1452 | _("%s has stopped typing to you (%s)") : |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1453 | (events & GAIM_POUNCE_SIGNOFF) ? |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1454 | _("%s has signed off (%s)") : |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1455 | (events & GAIM_POUNCE_IDLE) ? |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1456 | _("%s has become idle (%s)") : |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1457 | (events & GAIM_POUNCE_AWAY) ? |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1458 | _("%s has gone away. (%s)") : |
| 12694 | 1459 | (events & GAIM_POUNCE_MESSAGE_RECEIVED) ? |
| 1460 | _("%s has sent you a message. (%s)") : | |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1461 | _("Unknown pounce event. Please report this!"), |
|
10774
f4238d6312ff
[gaim-migrate @ 12383]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10590
diff
changeset
|
1462 | alias, gaim_account_get_protocol_name(account)); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1463 | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1464 | /* |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1465 | * Ok here is where I change the second argument, title, from |
| 12934 | 1466 | * NULL to the account alias if we have it or the account |
| 1467 | * name if that's all we have | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1468 | */ |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1469 | if ((name_shown = gaim_account_get_alias(account)) == NULL) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1470 | name_shown = gaim_account_get_username(account); |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1471 | |
| 12934 | 1472 | if (reason == NULL) |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
1473 | { |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
1474 | gaim_notify_info(NULL, name_shown, tmp, gaim_date_format_full(NULL)); |
|
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
1475 | } |
| 12934 | 1476 | else |
| 1477 | { | |
|
13120
c25222322810
[gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents:
13105
diff
changeset
|
1478 | char *tmp2 = g_strdup_printf("%s\n\n%s", reason, gaim_date_format_full(NULL)); |
| 12934 | 1479 | gaim_notify_info(NULL, name_shown, tmp, tmp2); |
| 1480 | g_free(tmp2); | |
| 1481 | } | |
| 1482 | g_free(tmp); | |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1483 | } |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1484 | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1485 | if (gaim_pounce_action_is_enabled(pounce, "send-message")) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1486 | { |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1487 | const char *message; |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1488 | |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1489 | message = gaim_pounce_action_get_attribute(pounce, "send-message", |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1490 | "message"); |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1491 | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1492 | if (message != NULL) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1493 | { |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11243
diff
changeset
|
1494 | conv = gaim_find_conversation_with_account(GAIM_CONV_TYPE_IM, pouncee, account); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1495 | |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1496 | if (conv == NULL) |
|
11338
1a3663ac9b05
[gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents:
11243
diff
changeset
|
1497 | conv = gaim_conversation_new(GAIM_CONV_TYPE_IM, account, pouncee); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1498 | |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6695
diff
changeset
|
1499 | gaim_conversation_write(conv, NULL, message, |
|
6621
2a18ef3e5224
[gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents:
6444
diff
changeset
|
1500 | GAIM_MESSAGE_SEND, time(NULL)); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1501 | |
|
6982
12f08de92674
[gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents:
6695
diff
changeset
|
1502 | serv_send_im(account->gc, (char *)pouncee, (char *)message, 0); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1503 | } |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1504 | } |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1505 | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1506 | if (gaim_pounce_action_is_enabled(pounce, "execute-command")) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1507 | { |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1508 | const char *command; |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1509 | |
|
10921
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1510 | command = gaim_pounce_action_get_attribute(pounce, |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1511 | "execute-command", "command"); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1512 | |
|
10921
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1513 | if (command != NULL) |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1514 | { |
| 6660 | 1515 | #ifndef _WIN32 |
|
10921
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1516 | char *localecmd = g_locale_from_utf8(command, -1, NULL, |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1517 | NULL, NULL); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1518 | |
|
10921
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1519 | if (localecmd != NULL) |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1520 | { |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1521 | int pid = fork(); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1522 | |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1523 | if (pid == 0) { |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1524 | char *args[4]; |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1525 | |
|
10921
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1526 | args[0] = "sh"; |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1527 | args[1] = "-c"; |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1528 | args[2] = (char *)localecmd; |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1529 | args[3] = NULL; |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1530 | |
|
10921
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1531 | execvp(args[0], args); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1532 | |
|
10921
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1533 | _exit(0); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1534 | } |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1535 | g_free(localecmd); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1536 | } |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1537 | #else /* !_WIN32 */ |
|
10921
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1538 | PROCESS_INFORMATION pi; |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1539 | BOOL retval; |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1540 | gchar *message = NULL; |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1541 | |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1542 | memset(&pi, 0, sizeof(pi)); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1543 | |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1544 | if (G_WIN32_HAVE_WIDECHAR_API ()) { |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1545 | STARTUPINFOW si; |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1546 | wchar_t *wc_cmd = g_utf8_to_utf16(command, |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1547 | -1, NULL, NULL, NULL); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1548 | |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1549 | memset(&si, 0 , sizeof(si)); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1550 | si.cb = sizeof(si); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1551 | |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1552 | retval = CreateProcessW(NULL, wc_cmd, NULL, |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1553 | NULL, 0, 0, NULL, NULL, |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1554 | &si, &pi); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1555 | g_free(wc_cmd); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1556 | } else { |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1557 | STARTUPINFOA si; |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1558 | char *l_cmd = g_locale_from_utf8(command, |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1559 | -1, NULL, NULL, NULL); |
| 6660 | 1560 | |
|
10921
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1561 | memset(&si, 0 , sizeof(si)); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1562 | si.cb = sizeof(si); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1563 | |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1564 | retval = CreateProcessA(NULL, l_cmd, NULL, |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1565 | NULL, 0, 0, NULL, NULL, |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1566 | &si, &pi); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1567 | g_free(l_cmd); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1568 | } |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1569 | |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1570 | if (retval) { |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1571 | CloseHandle(pi.hProcess); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1572 | CloseHandle(pi.hThread); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1573 | } else { |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1574 | message = g_win32_error_message(GetLastError()); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1575 | } |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1576 | |
|
7276
08382c6de2eb
[gaim-migrate @ 7855]
Christian Hammond <chipx86@chipx86.com>
parents:
7098
diff
changeset
|
1577 | gaim_debug_info("pounce", |
|
10921
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1578 | "Pounce execute command called for: " |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1579 | "%s\n%s%s%s", |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1580 | command, |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1581 | retval ? "" : "Error: ", |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1582 | retval ? "" : message, |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1583 | retval ? "" : "\n"); |
|
44adf364b1e7
[gaim-migrate @ 12688]
Daniel Atallah <datallah@pidgin.im>
parents:
10913
diff
changeset
|
1584 | g_free(message); |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1585 | #endif /* !_WIN32 */ |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1586 | } |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1587 | } |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1588 | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1589 | if (gaim_pounce_action_is_enabled(pounce, "play-sound")) |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1590 | { |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1591 | const char *sound; |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1592 | |
|
9205
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1593 | sound = gaim_pounce_action_get_attribute(pounce, |
|
8c4dbbe6386f
[gaim-migrate @ 10000]
Christian Hammond <chipx86@chipx86.com>
parents:
9191
diff
changeset
|
1594 | "play-sound", "filename"); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1595 | |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1596 | if (sound != NULL) |
|
11642
76b60f0bf467
[gaim-migrate @ 13919]
Casey Harkins <charkins@pidgin.im>
parents:
11338
diff
changeset
|
1597 | gaim_sound_play_file(sound, account); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1598 | else |
|
11642
76b60f0bf467
[gaim-migrate @ 13919]
Casey Harkins <charkins@pidgin.im>
parents:
11338
diff
changeset
|
1599 | gaim_sound_play_event(GAIM_SOUND_POUNCE_DEFAULT, account); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1600 | } |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1601 | } |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1602 | |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1603 | static void |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1604 | free_pounce(GaimPounce *pounce) |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1605 | { |
| 12136 | 1606 | update_pounces(); |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1607 | } |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1608 | |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1609 | static void |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1610 | new_pounce(GaimPounce *pounce) |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1611 | { |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1612 | gaim_pounce_action_register(pounce, "open-window"); |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1613 | gaim_pounce_action_register(pounce, "popup-notify"); |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1614 | gaim_pounce_action_register(pounce, "send-message"); |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1615 | gaim_pounce_action_register(pounce, "execute-command"); |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1616 | gaim_pounce_action_register(pounce, "play-sound"); |
| 12136 | 1617 | |
| 1618 | update_pounces(); | |
| 1619 | } | |
| 1620 | ||
| 1621 | void * | |
| 1622 | gaim_gtk_pounces_get_handle() { | |
| 1623 | static int handle; | |
| 1624 | ||
| 1625 | return &handle; | |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1626 | } |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1627 | |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1628 | void |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1629 | gaim_gtk_pounces_init(void) |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1630 | { |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1631 | gaim_pounces_register_handler(GAIM_GTK_UI, pounce_cb, new_pounce, |
|
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1632 | free_pounce); |
|
9206
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1633 | |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1634 | gaim_prefs_add_none("/gaim/gtk/pounces"); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1635 | gaim_prefs_add_none("/gaim/gtk/pounces/default_actions"); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1636 | gaim_prefs_add_bool("/gaim/gtk/pounces/default_actions/open-window", |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1637 | FALSE); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1638 | gaim_prefs_add_bool("/gaim/gtk/pounces/default_actions/popup-notify", |
|
12141
9cd436b9b7f6
[gaim-migrate @ 14442]
Richard Laager <rlaager@pidgin.im>
parents:
12137
diff
changeset
|
1639 | TRUE); |
|
9206
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1640 | gaim_prefs_add_bool("/gaim/gtk/pounces/default_actions/send-message", |
|
12141
9cd436b9b7f6
[gaim-migrate @ 14442]
Richard Laager <rlaager@pidgin.im>
parents:
12137
diff
changeset
|
1641 | FALSE); |
|
9206
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1642 | gaim_prefs_add_bool("/gaim/gtk/pounces/default_actions/execute-command", |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1643 | FALSE); |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1644 | gaim_prefs_add_bool("/gaim/gtk/pounces/default_actions/play-sound", |
|
57a4db675f8d
[gaim-migrate @ 10001]
Christian Hammond <chipx86@chipx86.com>
parents:
9205
diff
changeset
|
1645 | FALSE); |
| 12136 | 1646 | gaim_prefs_add_none("/gaim/gtk/pounces/dialog"); |
|
12336
bdcb02016b84
[gaim-migrate @ 14640]
Mark Doliner <markdoliner@pidgin.im>
parents:
12193
diff
changeset
|
1647 | gaim_prefs_add_int("/gaim/gtk/pounces/dialog/width", 520); |
|
bdcb02016b84
[gaim-migrate @ 14640]
Mark Doliner <markdoliner@pidgin.im>
parents:
12193
diff
changeset
|
1648 | gaim_prefs_add_int("/gaim/gtk/pounces/dialog/height", 321); |
| 12136 | 1649 | |
| 1650 | gaim_signal_connect(gaim_connections_get_handle(), "signed-on", | |
| 1651 | gaim_gtk_pounces_get_handle(), | |
| 1652 | GAIM_CALLBACK(signed_on_off_cb), NULL); | |
| 1653 | gaim_signal_connect(gaim_connections_get_handle(), "signed-off", | |
| 1654 | gaim_gtk_pounces_get_handle(), | |
| 1655 | GAIM_CALLBACK(signed_on_off_cb), NULL); | |
|
5875
493a921c0378
[gaim-migrate @ 6307]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
1656 | } |