pidgin/gtkprivacy.c

changeset 29742
631616e39444
parent 29741
3fbd100877f9
child 31321
1fef3832cfa2
child 32394
f883709bdba4
equal deleted inserted replaced
29741:3fbd100877f9 29742:631616e39444
218 218
219 dialog->account = account; 219 dialog->account = account;
220 220
221 for (i = 0; i < menu_entry_count; i++) { 221 for (i = 0; i < menu_entry_count; i++) {
222 if (menu_entries[i].num == account->perm_deny) { 222 if (menu_entries[i].num == account->perm_deny) {
223 #if GTK_CHECK_VERSION(2,4,0)
224 gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), i); 223 gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), i);
225 #else
226 gtk_option_menu_set_history(GTK_OPTION_MENU(dialog->type_menu), i);
227 #endif
228 break; 224 break;
229 } 225 }
230 } 226 }
231 227
232 rebuild_allow_list(dialog); 228 rebuild_allow_list(dialog);
235 231
236 /* 232 /*
237 * TODO: Setting the permit/deny setting needs to go through privacy.c 233 * TODO: Setting the permit/deny setting needs to go through privacy.c
238 * Even better: the privacy API needs to not suck. 234 * Even better: the privacy API needs to not suck.
239 */ 235 */
240 #if GTK_CHECK_VERSION(2,4,0)
241 static void 236 static void
242 type_changed_cb(GtkComboBox *combo, PidginPrivacyDialog *dialog) 237 type_changed_cb(GtkComboBox *combo, PidginPrivacyDialog *dialog)
243 { 238 {
244 int new_type = menu_entries[gtk_combo_box_get_active(combo)].num; 239 int new_type = menu_entries[gtk_combo_box_get_active(combo)].num;
245 #else
246 static void
247 type_changed_cb(GtkOptionMenu *optmenu, PidginPrivacyDialog *dialog)
248 {
249 int new_type = menu_entries[gtk_option_menu_get_history(optmenu)].num;
250 #endif
251 240
252 dialog->account->perm_deny = new_type; 241 dialog->account->perm_deny = new_type;
253 serv_set_permit_deny(purple_account_get_connection(dialog->account)); 242 serv_set_permit_deny(purple_account_get_connection(dialog->account));
254 243
255 gtk_widget_hide(dialog->allow_widget); 244 gtk_widget_hide(dialog->allow_widget);
352 PidginPrivacyDialog *dialog; 341 PidginPrivacyDialog *dialog;
353 GtkWidget *vbox; 342 GtkWidget *vbox;
354 GtkWidget *button; 343 GtkWidget *button;
355 GtkWidget *dropdown; 344 GtkWidget *dropdown;
356 GtkWidget *label; 345 GtkWidget *label;
357 #if !GTK_CHECK_VERSION(2,4,0) 346 int selected = -1;
358 GtkWidget *menu;
359 #endif
360 int selected = 0;
361 int i; 347 int i;
362 348
363 dialog = g_new0(PidginPrivacyDialog, 1); 349 dialog = g_new0(PidginPrivacyDialog, 1);
364 350
365 dialog->win = pidgin_create_dialog(_("Privacy"), PIDGIN_HIG_BORDER, "privacy", TRUE); 351 dialog->win = pidgin_create_dialog(_("Privacy"), PIDGIN_HIG_BORDER, "privacy", TRUE);
383 G_CALLBACK(select_account_cb), NULL, dialog); 369 G_CALLBACK(select_account_cb), NULL, dialog);
384 pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("Set privacy for:"), NULL, dropdown, TRUE, NULL); 370 pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("Set privacy for:"), NULL, dropdown, TRUE, NULL);
385 dialog->account = pidgin_account_option_menu_get_selected(dropdown); 371 dialog->account = pidgin_account_option_menu_get_selected(dropdown);
386 372
387 /* Add the drop-down list with the allow/block types. */ 373 /* Add the drop-down list with the allow/block types. */
388 #if GTK_CHECK_VERSION(2,4,0)
389 dialog->type_menu = gtk_combo_box_new_text(); 374 dialog->type_menu = gtk_combo_box_new_text();
390 gtk_box_pack_start(GTK_BOX(vbox), dialog->type_menu, FALSE, FALSE, 0); 375 gtk_box_pack_start(GTK_BOX(vbox), dialog->type_menu, FALSE, FALSE, 0);
391 gtk_widget_show(dialog->type_menu); 376 gtk_widget_show(dialog->type_menu);
392 377
393 for (i = 0; i < menu_entry_count; i++) { 378 for (i = 0; i < menu_entry_count; i++) {
400 385
401 gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), selected); 386 gtk_combo_box_set_active(GTK_COMBO_BOX(dialog->type_menu), selected);
402 387
403 g_signal_connect(G_OBJECT(dialog->type_menu), "changed", 388 g_signal_connect(G_OBJECT(dialog->type_menu), "changed",
404 G_CALLBACK(type_changed_cb), dialog); 389 G_CALLBACK(type_changed_cb), dialog);
405 #else
406 dialog->type_menu = gtk_option_menu_new();
407 gtk_box_pack_start(GTK_BOX(vbox), dialog->type_menu, FALSE, FALSE, 0);
408 gtk_widget_show(dialog->type_menu);
409
410 /* Build the menu for that. */
411 menu = gtk_menu_new();
412
413 for (i = 0; i < menu_entry_count; i++) {
414 pidgin_new_item(menu, _(menu_entries[i].text));
415
416 if (menu_entries[i].num == dialog->account->perm_deny)
417 selected = i;
418 }
419
420 gtk_option_menu_set_menu(GTK_OPTION_MENU(dialog->type_menu), menu);
421 gtk_option_menu_set_history(GTK_OPTION_MENU(dialog->type_menu), selected);
422
423 g_signal_connect(G_OBJECT(dialog->type_menu), "changed",
424 G_CALLBACK(type_changed_cb), dialog);
425 #endif
426 390
427 /* Build the treeview for the allow list. */ 391 /* Build the treeview for the allow list. */
428 dialog->allow_widget = build_allow_list(dialog); 392 dialog->allow_widget = build_allow_list(dialog);
429 gtk_box_pack_start(GTK_BOX(vbox), dialog->allow_widget, TRUE, TRUE, 0); 393 gtk_box_pack_start(GTK_BOX(vbox), dialog->allow_widget, TRUE, TRUE, 0);
430 394
451 415
452 /* Close button */ 416 /* Close button */
453 button = pidgin_dialog_add_button(GTK_DIALOG(dialog->win), GTK_STOCK_CLOSE, G_CALLBACK(close_cb), dialog); 417 button = pidgin_dialog_add_button(GTK_DIALOG(dialog->win), GTK_STOCK_CLOSE, G_CALLBACK(close_cb), dialog);
454 dialog->close_button = button; 418 dialog->close_button = button;
455 419
456 #if GTK_CHECK_VERSION(2,4,0)
457 type_changed_cb(GTK_COMBO_BOX(dialog->type_menu), dialog); 420 type_changed_cb(GTK_COMBO_BOX(dialog->type_menu), dialog);
458 #else
459 type_changed_cb(GTK_OPTION_MENU(dialog->type_menu), dialog);
460 #endif
461 #if 0 421 #if 0
462 if (dialog->account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) { 422 if (dialog->account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) {
463 gtk_widget_show(dialog->allow_widget); 423 gtk_widget_show(dialog->allow_widget);
464 gtk_widget_show(dialog->button_box); 424 gtk_widget_show(dialog->button_box);
465 dialog->in_allow_list = TRUE; 425 dialog->in_allow_list = TRUE;

mercurial