static void empathy_roster_view_constructed (GObject *object) { EmpathyRosterView *self = EMPATHY_ROSTER_VIEW (object); void (*chain_up) (GObject *) = ((GObjectClass *) empathy_roster_view_parent_class)->constructed; if (chain_up != NULL) chain_up (object); g_assert (EMPATHY_IS_ROSTER_MODEL (self->priv->model)); /* Get saved group states. */ empathy_contact_groups_get_all (); populate_view (self); tp_g_signal_connect_object (self->priv->model, "individual-added", G_CALLBACK (individual_added_cb), self, 0); tp_g_signal_connect_object (self->priv->model, "individual-removed", G_CALLBACK (individual_removed_cb), self, 0); tp_g_signal_connect_object (self->priv->model, "groups-changed", G_CALLBACK (groups_changed_cb), self, 0); gtk_list_box_set_sort_func (GTK_LIST_BOX (self), roster_view_sort, self, NULL); gtk_list_box_set_header_func (GTK_LIST_BOX (self), update_header, self, NULL); gtk_list_box_set_filter_func (GTK_LIST_BOX (self), filter_list, self, NULL); gtk_list_box_set_activate_on_single_click (GTK_LIST_BOX (self), FALSE); }
GtkWidget * cc_input_chooser_new (GtkWindow *main_window, GnomeXkbInfo *xkb_info, GHashTable *ibus_engines) { GtkBuilder *builder; GtkWidget *chooser; CcInputChooserPrivate *priv; gint width; GError *error = NULL; builder = gtk_builder_new (); if (gtk_builder_add_from_resource (builder, "/org/gnome/initial-setup/input-chooser.ui", &error) == 0) { g_object_unref (builder); g_warning ("failed to load input chooser: %s", error->message); g_error_free (error); return NULL; } chooser = WID ("input-dialog"); priv = g_new0 (CcInputChooserPrivate, 1); g_object_set_data_full (G_OBJECT (chooser), "private", priv, cc_input_chooser_private_free); g_object_set_data_full (G_OBJECT (chooser), "builder", builder, g_object_unref); priv->xkb_info = xkb_info; priv->ibus_engines = ibus_engines; priv->add_button = WID ("add-button"); priv->filter_entry = WID ("filter-entry"); priv->list = WID ("list"); priv->scrolledwindow = WID ("scrolledwindow"); priv->adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->scrolledwindow)); priv->more_item = g_object_ref_sink (more_widget_new ()); priv->no_results = g_object_ref_sink (no_results_widget_new ()); gtk_list_box_set_filter_func (GTK_LIST_BOX (priv->list), list_filter, chooser, NULL); gtk_list_box_set_sort_func (GTK_LIST_BOX (priv->list), list_sort, chooser, NULL); g_signal_connect (priv->list, "row-activated", G_CALLBACK (row_activated), chooser); g_signal_connect (priv->list, "row-selected", G_CALLBACK (row_selected), chooser); g_signal_connect_swapped (priv->filter_entry, "changed", G_CALLBACK (filter_changed), chooser); get_locale_infos (chooser); #ifdef HAVE_IBUS get_ibus_locale_infos (chooser); #endif /* HAVE_IBUS */ show_locale_widgets (chooser); /* Try to come up with a sensible width */ gtk_window_get_size (main_window, &width, NULL); gtk_widget_set_size_request (chooser, width * MAIN_WINDOW_WIDTH_RATIO, -1); gtk_window_set_resizable (GTK_WINDOW (chooser), TRUE); gtk_window_set_transient_for (GTK_WINDOW (chooser), main_window); return chooser; }
GtkWidget * cc_language_chooser_new (GtkWidget *parent) { GtkBuilder *builder; GtkWidget *chooser; CcLanguageChooserPrivate *priv; GError *error = NULL; g_resources_register (cc_common_get_resource ()); builder = gtk_builder_new (); if (gtk_builder_add_from_resource (builder, "/org/gnome/control-center/common/language-chooser.ui", &error) == 0) { g_object_unref (builder); g_warning ("failed to load language chooser: %s", error->message); g_error_free (error); return NULL; } chooser = WID ("language-dialog"); priv = g_new0 (CcLanguageChooserPrivate, 1); g_object_set_data_full (G_OBJECT (chooser), "private", priv, cc_language_chooser_private_free); g_object_set_data_full (G_OBJECT (chooser), "builder", builder, g_object_unref); priv->done_button = WID ("ok-button"); priv->filter_entry = WID ("language-filter-entry"); priv->language_list = WID ("language-list"); priv->scrolledwindow = WID ("language-scrolledwindow"); priv->more_item = more_widget_new (); /* We ref-sink here so we can reuse this widget multiple times */ priv->no_results = g_object_ref_sink (no_results_widget_new ()); gtk_widget_show_all (priv->no_results); gtk_list_box_set_sort_func (GTK_LIST_BOX (priv->language_list), sort_languages, chooser, NULL); gtk_list_box_set_filter_func (GTK_LIST_BOX (priv->language_list), language_visible, chooser, NULL); gtk_list_box_set_selection_mode (GTK_LIST_BOX (priv->language_list), GTK_SELECTION_NONE); gtk_list_box_set_header_func (GTK_LIST_BOX (priv->language_list), cc_list_box_update_header_func, NULL, NULL); add_all_languages (GTK_DIALOG (chooser)); g_signal_connect_swapped (priv->filter_entry, "search-changed", G_CALLBACK (filter_changed), chooser); g_signal_connect (priv->language_list, "row-activated", G_CALLBACK (row_activated), chooser); gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->language_list)); gtk_window_set_transient_for (GTK_WINDOW (chooser), GTK_WINDOW (parent)); g_signal_connect (chooser, "activate-default", G_CALLBACK (activate_default), chooser); return chooser; }
static void cc_language_chooser_constructed (GObject *object) { GtkBuilder *builder; CcLanguageChooser *chooser = CC_LANGUAGE_CHOOSER (object); CcLanguageChooserPrivate *priv = chooser->priv; GError *error = NULL; G_OBJECT_CLASS (cc_language_chooser_parent_class)->constructed (object); builder = gtk_builder_new (); if (gtk_builder_add_from_resource (builder, "/org/gnome/control-center/language-chooser.ui", &error) == 0) { g_object_unref (builder); g_warning ("failed to load language chooser: %s", error->message); g_error_free (error); return; } gtk_container_add (GTK_CONTAINER (chooser), WID ("language-chooser")); priv->filter_entry = WID ("language-filter-entry"); priv->language_list = WID ("language-list"); priv->more_item = more_widget_new (); priv->no_results = no_results_widget_new (); gtk_list_box_set_sort_func (GTK_LIST_BOX (priv->language_list), sort_languages, chooser, NULL); gtk_list_box_set_filter_func (GTK_LIST_BOX (priv->language_list), language_visible, chooser, NULL); gtk_list_box_set_header_func (GTK_LIST_BOX (priv->language_list), update_header_func, chooser, NULL); gtk_list_box_set_selection_mode (GTK_LIST_BOX (priv->language_list), GTK_SELECTION_NONE); add_all_languages (chooser); g_signal_connect (priv->filter_entry, "changed", G_CALLBACK (filter_changed), chooser); g_signal_connect (priv->language_list, "row-activated", G_CALLBACK (row_activated), chooser); if (priv->language == NULL) priv->language = cc_common_language_get_current_language (); sync_all_checkmarks (chooser); g_object_unref (builder); }
GtkWidget * cc_format_chooser_new (GtkWidget *parent) { GtkBuilder *builder; GtkWidget *chooser; CcFormatChooserPrivate *priv; GError *error = NULL; builder = gtk_builder_new (); if (gtk_builder_add_from_resource (builder, "/org/gnome/control-center/region/format-chooser.ui", &error) == 0) { g_object_unref (builder); g_warning ("failed to load format chooser: %s", error->message); g_error_free (error); return NULL; } chooser = WID ("dialog"); priv = g_new0 (CcFormatChooserPrivate, 1); g_object_set_data_full (G_OBJECT (chooser), "private", priv, cc_format_chooser_private_free); g_object_set_data_full (G_OBJECT (chooser), "builder", builder, g_object_unref); priv->done_button = WID ("ok-button"); priv->filter_entry = WID ("region-filter-entry"); priv->list = WID ("region-list"); priv->scrolledwindow = WID ("region-scrolledwindow"); priv->more_item = more_widget_new (); /* We ref-sink here so we can reuse this widget multiple times */ priv->no_results = g_object_ref_sink (no_results_widget_new ()); gtk_widget_show_all (priv->no_results); priv->full_date = WID ("full-date-format"); priv->medium_date = WID ("medium-date-format"); priv->short_date = WID ("short-date-format"); priv->time = WID ("time-format"); priv->number = WID ("number-format"); priv->measurement = WID ("measurement-format"); priv->paper = WID ("paper-format"); gtk_list_box_set_adjustment (GTK_LIST_BOX (priv->list), gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->scrolledwindow))); gtk_list_box_set_sort_func (GTK_LIST_BOX (priv->list), (GtkListBoxSortFunc)sort_regions, chooser, NULL); gtk_list_box_set_filter_func (GTK_LIST_BOX (priv->list), region_visible, chooser, NULL); gtk_list_box_set_selection_mode (GTK_LIST_BOX (priv->list), GTK_SELECTION_NONE); gtk_list_box_set_header_func (GTK_LIST_BOX (priv->list), cc_list_box_update_header_func, NULL, NULL); add_all_regions (GTK_DIALOG (chooser)); g_signal_connect_swapped (priv->filter_entry, "search-changed", G_CALLBACK (filter_changed), chooser); g_signal_connect (priv->list, "row-activated", G_CALLBACK (row_activated), chooser); gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->list)); gtk_window_set_transient_for (GTK_WINDOW (chooser), GTK_WINDOW (parent)); g_signal_connect (chooser, "activate-default", G_CALLBACK (activate_default), chooser); return chooser; }
void extensions__dlg_preferences_construct_cb (GtkWidget *dialog, GthBrowser *browser, GtkBuilder *dialog_builder) { BrowserData *data; GthExtensionManager *manager; GList *extensions; GList *descriptions; GList *scan; char **all_active_extensions; int i; GtkWidget *label; GtkWidget *page; data = g_new0 (BrowserData, 1); data->builder = _gtk_builder_new_from_file ("extensions-preferences.ui", NULL); data->settings = g_settings_new (GTHUMB_GENERAL_SCHEMA); data->dialog = dialog; data->enabled_disabled_cardinality_changed = FALSE; /* save the active extensions to decide if a restart is needed */ manager = gth_main_get_default_extension_manager (); data->active_extensions = NULL; all_active_extensions = g_settings_get_strv (data->settings, PREF_GENERAL_ACTIVE_EXTENSIONS); for (i = 0; all_active_extensions[i] != NULL; i++) { char *name = all_active_extensions[i]; GthExtensionDescription *description; description = gth_extension_manager_get_description (manager, name); if ((description == NULL) || description->mandatory || description->hidden) continue; data->active_extensions = g_list_prepend (data->active_extensions, g_strdup (name)); } data->active_extensions = g_list_reverse (data->active_extensions); g_strfreev (all_active_extensions); /* the extensions list */ data->extensions_list = gtk_list_box_new (); gtk_list_box_set_selection_mode (GTK_LIST_BOX (data->extensions_list), GTK_SELECTION_NONE); gtk_list_box_set_filter_func (GTK_LIST_BOX (data->extensions_list), extensions_list_filter_func, data, NULL); extensions = gth_extension_manager_get_extensions (manager); descriptions = NULL; for (scan = extensions; scan; scan = scan->next) { const char *name = scan->data; GthExtensionDescription *description; description = gth_extension_manager_get_description (manager, name); if ((description == NULL) || description->mandatory || description->hidden) continue; descriptions = g_list_prepend (descriptions, description); } descriptions = g_list_sort (descriptions, sort_extensions_by_name); for (scan = descriptions; scan; scan = scan->next) { GthExtensionDescription *description = scan->data; if (scan != descriptions) _gtk_list_box_add_separator (GTK_LIST_BOX (data->extensions_list)); gtk_container_add (GTK_CONTAINER (data->extensions_list), create_extensions_row (description, data)); } gtk_widget_show (data->extensions_list); gtk_container_add (GTK_CONTAINER (GET_WIDGET ("extensions_list_scrolledwindow")), data->extensions_list); g_list_free (descriptions); g_list_free (extensions); /* the category combobox */ add_category_combobox_columns (GET_WIDGET ("category_combobox"), data); data->current_category = g_strdup (EXTENSION_CATEGORY_ALL); for (i = 0; extension_category[i].id != NULL; i++) { GtkTreeIter iter; gtk_list_store_append (GTK_LIST_STORE (GET_WIDGET ("category_liststore")), &iter); if (strcmp (extension_category[i].id, EXTENSION_CATEGORY_SEPARATOR) == 0) gtk_list_store_set (GTK_LIST_STORE (GET_WIDGET ("category_liststore")), &iter, CATEGORY_SEPARATOR_COLUMN, TRUE, -1); else { char *cardinality; cardinality = g_strdup_printf (CARDINALITY_FORMAT, get_category_cardinality (data, extension_category[i].id)); gtk_list_store_set (GTK_LIST_STORE (GET_WIDGET ("category_liststore")), &iter, CATEGORY_NAME_COLUMN, _(extension_category[i].name), CATEGORY_ID_COLUMN, extension_category[i].id, /* CATEGORY_ICON_COLUMN, extension_category[i].icon, */ CATEGORY_SEPARATOR_COLUMN, FALSE, CATEGORY_CARDINALITY_COLUMN, cardinality, -1); g_free (cardinality); } } gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (GET_WIDGET ("category_combobox")), category_view_separator_func, data, NULL); gtk_combo_box_set_active (GTK_COMBO_BOX (GET_WIDGET ("category_combobox")), 0); /* Set the signals handlers. */ g_signal_connect (GET_WIDGET ("category_combobox"), "changed", G_CALLBACK (category_combobox_changed_cb), data); /* add the page to the preferences dialog */ label = gtk_label_new (_("Extensions")); gtk_widget_show (label); page = _gtk_builder_get_widget (data->builder, "preferences_page"); gtk_widget_show (page); gtk_notebook_append_page (GTK_NOTEBOOK (_gtk_builder_get_widget (dialog_builder, "notebook")), page, label); g_object_set_data_full (G_OBJECT (dialog), BROWSER_DATA_KEY, data, (GDestroyNotify) browser_data_free); }