| 40 |
40 |
| 41 struct _PidginPrefsWindow { |
41 struct _PidginPrefsWindow { |
| 42 GtkDialog parent; |
42 GtkDialog parent; |
| 43 }; |
43 }; |
| 44 |
44 |
| 45 /* Main dialog */ |
|
| 46 static PidginPrefsWindow *prefs = NULL; |
|
| 47 |
|
| 48 G_DEFINE_TYPE(PidginPrefsWindow, pidgin_prefs_window, GTK_TYPE_DIALOG); |
45 G_DEFINE_TYPE(PidginPrefsWindow, pidgin_prefs_window, GTK_TYPE_DIALOG); |
| 49 |
46 |
| 50 /****************************************************************************** |
47 /****************************************************************************** |
| 51 * Helpers |
48 * Helpers |
| 52 *****************************************************************************/ |
49 *****************************************************************************/ |
| 473 g_signal_connect(widget, "notify::enable-expansion", |
470 g_signal_connect(widget, "notify::enable-expansion", |
| 474 G_CALLBACK(set_expander_row_pref), (gchar *)key); |
471 G_CALLBACK(set_expander_row_pref), (gchar *)key); |
| 475 } |
472 } |
| 476 |
473 |
| 477 static void |
474 static void |
| 478 delete_prefs(G_GNUC_UNUSED GtkWidget *asdf, G_GNUC_UNUSED void *gdsa) |
|
| 479 { |
|
| 480 /* Close any request dialogs */ |
|
| 481 purple_request_close_with_handle(prefs); |
|
| 482 purple_notify_close_with_handle(prefs); |
|
| 483 |
|
| 484 /* Unregister callbacks. */ |
|
| 485 purple_prefs_disconnect_by_handle(prefs); |
|
| 486 |
|
| 487 prefs = NULL; |
|
| 488 } |
|
| 489 |
|
| 490 static void |
|
| 491 vv_test_switch_page_cb(GtkStack *stack, G_GNUC_UNUSED GParamSpec *pspec, |
475 vv_test_switch_page_cb(GtkStack *stack, G_GNUC_UNUSED GParamSpec *pspec, |
| 492 gpointer data) |
476 gpointer data) |
| 493 { |
477 { |
| 494 PidginVVPrefs *vv_prefs = data; |
478 PidginVVPrefs *vv_prefs = data; |
| 495 |
479 |
| 501 |
485 |
| 502 /****************************************************************************** |
486 /****************************************************************************** |
| 503 * GObject Implementation |
487 * GObject Implementation |
| 504 *****************************************************************************/ |
488 *****************************************************************************/ |
| 505 static void |
489 static void |
| |
490 pidgin_prefs_window_finalize(GObject *obj) { |
| |
491 purple_prefs_disconnect_by_handle(obj); |
| |
492 |
| |
493 G_OBJECT_CLASS(pidgin_prefs_window_parent_class)->finalize(obj); |
| |
494 } |
| |
495 |
| |
496 static void |
| 506 pidgin_prefs_window_class_init(PidginPrefsWindowClass *klass) |
497 pidgin_prefs_window_class_init(PidginPrefsWindowClass *klass) |
| 507 { |
498 { |
| |
499 GObjectClass *obj_class = G_OBJECT_CLASS(klass); |
| 508 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); |
500 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass); |
| |
501 |
| |
502 obj_class->finalize = pidgin_prefs_window_finalize; |
| 509 |
503 |
| 510 gtk_widget_class_set_template_from_resource( |
504 gtk_widget_class_set_template_from_resource( |
| 511 widget_class, |
505 widget_class, |
| 512 "/im/pidgin/Pidgin3/Prefs/prefs.ui" |
506 "/im/pidgin/Pidgin3/Prefs/prefs.ui" |
| 513 ); |
507 ); |
| 514 |
508 |
| 515 /* Main window */ |
509 /* Main window */ |
| 516 gtk_widget_class_bind_template_callback(widget_class, delete_prefs); |
|
| 517 gtk_widget_class_bind_template_callback(widget_class, |
510 gtk_widget_class_bind_template_callback(widget_class, |
| 518 vv_test_switch_page_cb); |
511 vv_test_switch_page_cb); |
| 519 } |
512 } |
| 520 |
513 |
| 521 static void |
514 static void |
| 525 } |
518 } |
| 526 |
519 |
| 527 /****************************************************************************** |
520 /****************************************************************************** |
| 528 * API |
521 * API |
| 529 *****************************************************************************/ |
522 *****************************************************************************/ |
| 530 void |
|
| 531 pidgin_prefs_show(void) |
|
| 532 { |
|
| 533 if (prefs == NULL) { |
|
| 534 prefs = PIDGIN_PREFS_WINDOW(g_object_new( |
|
| 535 pidgin_prefs_window_get_type(), NULL)); |
|
| 536 } |
|
| 537 |
|
| 538 gtk_window_present(GTK_WINDOW(prefs)); |
|
| 539 } |
|
| 540 |
|
| 541 void |
523 void |
| 542 pidgin_prefs_init(void) |
524 pidgin_prefs_init(void) |
| 543 { |
525 { |
| 544 purple_prefs_add_none(PIDGIN_PREFS_ROOT ""); |
526 purple_prefs_add_none(PIDGIN_PREFS_ROOT ""); |
| 545 purple_prefs_add_none("/plugins/gtk"); |
527 purple_prefs_add_none("/plugins/gtk"); |