pidgin/prefs/pidginprefs.c

changeset 42072
606edc665dc2
parent 41947
7b3312d0760c
child 42179
b8bb444799a4
equal deleted inserted replaced
42071:a719f0f3c600 42072:606edc665dc2
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");

mercurial