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); }
static void show_input_sources_for_locale (GtkWidget *chooser, LocaleInfo *info) { CcInputChooserPrivate *priv = GET_PRIVATE (chooser); set_fixed_size (chooser); remove_all_children (GTK_CONTAINER (priv->list)); if (!info->back_row) { info->back_row = g_object_ref_sink (back_row_new (info->name)); g_object_set_data (G_OBJECT (info->back_row), "back", GINT_TO_POINTER (TRUE)); g_object_set_data (G_OBJECT (info->back_row), "locale-info", info); } gtk_container_add (GTK_CONTAINER (priv->list), GTK_WIDGET (info->back_row)); add_input_source_rows_for_locale (chooser, info); gtk_widget_show_all (priv->list); gtk_adjustment_set_value (priv->adjustment, gtk_adjustment_get_lower (priv->adjustment)); gtk_list_box_set_header_func (GTK_LIST_BOX (priv->list), cc_list_box_update_header_func, NULL, NULL); gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->list)); gtk_list_box_set_selection_mode (GTK_LIST_BOX (priv->list), GTK_SELECTION_SINGLE); gtk_list_box_set_activate_on_single_click (GTK_LIST_BOX (priv->list), FALSE); gtk_list_box_unselect_all (GTK_LIST_BOX (priv->list)); if (gtk_widget_is_visible (priv->filter_entry) && !gtk_widget_is_focus (priv->filter_entry)) gtk_widget_grab_focus (priv->filter_entry); }
static void show_locale_rows (GtkWidget *chooser) { CcInputChooserPrivate *priv = GET_PRIVATE (chooser); GHashTable *initial = NULL; LocaleInfo *info; GHashTableIter iter; remove_all_children (GTK_CONTAINER (priv->list)); if (!priv->showing_extra) initial = cc_common_language_get_initial_languages (); g_hash_table_iter_init (&iter, priv->locales); while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &info)) { if (!info->default_input_source_row && !g_hash_table_size (info->layout_rows_by_id) && !g_hash_table_size (info->engine_rows_by_id)) continue; if (!info->locale_row) { info->locale_row = g_object_ref_sink (locale_row_new (info->name)); g_object_set_data (G_OBJECT (info->locale_row), "locale-info", info); if (!priv->showing_extra && !g_hash_table_contains (initial, info->id) && !is_current_locale (info->id)) g_object_set_data (G_OBJECT (info->locale_row), "is-extra", GINT_TO_POINTER (TRUE)); } gtk_container_add (GTK_CONTAINER (priv->list), GTK_WIDGET (info->locale_row)); } gtk_container_add (GTK_CONTAINER (priv->list), GTK_WIDGET (priv->more_row)); gtk_widget_show_all (priv->list); gtk_adjustment_set_value (priv->adjustment, gtk_adjustment_get_lower (priv->adjustment)); gtk_list_box_set_header_func (GTK_LIST_BOX (priv->list), cc_list_box_update_header_func, NULL, NULL); gtk_list_box_invalidate_filter (GTK_LIST_BOX (priv->list)); gtk_list_box_set_selection_mode (GTK_LIST_BOX (priv->list), GTK_SELECTION_NONE); gtk_list_box_set_activate_on_single_click (GTK_LIST_BOX (priv->list), TRUE); if (gtk_widget_is_visible (priv->filter_entry) && !gtk_widget_is_focus (priv->filter_entry)) gtk_widget_grab_focus (priv->filter_entry); if (!priv->showing_extra) g_hash_table_destroy (initial); }
GtkWidget * do_listbox (GtkWidget *do_widget) { GtkWidget *scrolled, *listbox, *vbox, *label; GtkMessage *message; GtkMessageRow *row; GBytes *data; char **lines; int i; if (!window) { avatar_pixbuf_other = gdk_pixbuf_new_from_resource_at_scale ("/listbox/apple-red.png", 32, 32, FALSE, NULL); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_screen (GTK_WINDOW (window), gtk_widget_get_screen (do_widget)); gtk_window_set_title (GTK_WINDOW (window), "List Box"); gtk_window_set_default_size (GTK_WINDOW (window), 400, 600); /* NULL window variable when window is closed */ g_signal_connect (window, "destroy", G_CALLBACK (gtk_widget_destroyed), &window); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12); gtk_container_add (GTK_CONTAINER (window), vbox); label = gtk_label_new ("Messages from Gtk+ and friends"); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); scrolled = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (vbox), scrolled, TRUE, TRUE, 0); listbox = gtk_list_box_new (); gtk_container_add (GTK_CONTAINER (scrolled), listbox); gtk_list_box_set_sort_func (GTK_LIST_BOX (listbox), (GtkListBoxSortFunc)gtk_message_row_sort, listbox, NULL); gtk_list_box_set_activate_on_single_click (GTK_LIST_BOX (listbox), FALSE); g_signal_connect (listbox, "row-activated", G_CALLBACK (row_activated), NULL); gtk_widget_show_all (vbox); data = g_resources_lookup_data ("/listbox/messages.txt", 0, NULL); lines = g_strsplit (g_bytes_get_data (data, NULL), "\n", 0); for (i = 0; lines[i] != NULL && *lines[i]; i++) { message = gtk_message_new (lines[i]); row = gtk_message_row_new (message); gtk_widget_show (GTK_WIDGET (row)); gtk_container_add (GTK_CONTAINER (listbox), GTK_WIDGET (row)); } g_strfreev (lines); g_bytes_unref (data); } if (!gtk_widget_get_visible (window)) gtk_widget_show (window); else gtk_widget_destroy (window); return window; }
static void cc_sharing_panel_init (CcSharingPanel *self) { CcSharingPanelPrivate *priv = self->priv = PANEL_PRIVATE (self); GtkWidget *box; GError *err = NULL; gchar *objects[] = { "sharing-panel", "bluetooth-sharing-dialog", "media-sharing-dialog", "personal-file-sharing-dialog", "remote-login-dialog", "screen-sharing-dialog", NULL }; GError *error = NULL; g_resources_register (cc_sharing_get_resource ()); priv->builder = gtk_builder_new (); gtk_builder_add_objects_from_resource (priv->builder, "/org/gnome/control-center/sharing/sharing.ui", objects, &err); if (err) g_error ("Error loading CcSharingPanel user interface: %s", err->message); priv->hostname_entry = WID ("hostname-entry"); gtk_container_add (GTK_CONTAINER (self), WID ("sharing-panel")); g_signal_connect (WID ("main-list-box"), "row-activated", G_CALLBACK (cc_sharing_panel_main_list_box_row_activated), self); priv->hostname_cancellable = g_cancellable_new (); priv->bluetooth_sharing_dialog = WID ("bluetooth-sharing-dialog"); priv->media_sharing_dialog = WID ("media-sharing-dialog"); priv->personal_file_sharing_dialog = WID ("personal-file-sharing-dialog"); priv->remote_login_dialog = WID ("remote-login-dialog"); priv->remote_login_cancellable = g_cancellable_new (); priv->screen_sharing_dialog = WID ("screen-sharing-dialog"); g_signal_connect (priv->bluetooth_sharing_dialog, "response", G_CALLBACK (gtk_widget_hide), NULL); g_signal_connect (priv->media_sharing_dialog, "response", G_CALLBACK (gtk_widget_hide), NULL); g_signal_connect (priv->personal_file_sharing_dialog, "response", G_CALLBACK (gtk_widget_hide), NULL); g_signal_connect (priv->remote_login_dialog, "response", G_CALLBACK (gtk_widget_hide), NULL); g_signal_connect (priv->screen_sharing_dialog, "response", G_CALLBACK (gtk_widget_hide), NULL); gtk_list_box_set_activate_on_single_click (GTK_LIST_BOX (WID ("main-list-box")), TRUE); gtk_list_box_set_header_func (GTK_LIST_BOX (WID ("main-list-box")), cc_list_box_update_header_func, NULL, NULL); /* create the master switch */ box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); priv->master_switch = gtk_switch_new (); gtk_widget_set_valign (priv->master_switch, GTK_ALIGN_CENTER); gtk_box_pack_start (GTK_BOX (box), priv->master_switch, FALSE, FALSE, 4); gtk_widget_show_all (box); /* start the panel in the disabled state */ gtk_switch_set_active (GTK_SWITCH (priv->master_switch), FALSE); gtk_widget_set_sensitive (WID ("main-list-box"), FALSE); g_signal_connect (priv->master_switch, "notify::active", G_CALLBACK (cc_sharing_panel_master_switch_notify), self); self->priv->sharing_proxy = G_DBUS_PROXY (gsd_sharing_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, G_DBUS_PROXY_FLAGS_NONE, "org.gnome.SettingsDaemon.Sharing", "/org/gnome/SettingsDaemon/Sharing", NULL, &error)); if (!self->priv->sharing_proxy) { g_warning ("Failed to get sharing proxy: %s", error->message); g_error_free (error); } /* bluetooth */ if (cc_sharing_panel_check_schema_available (self, FILE_SHARING_SCHEMA_ID)) cc_sharing_panel_setup_bluetooth_sharing_dialog (self); else gtk_widget_hide (WID ("bluetooth-sharing-button")); /* media sharing */ cc_sharing_panel_setup_media_sharing_dialog (self); /* personal file sharing */ if (cc_sharing_panel_check_schema_available (self, FILE_SHARING_SCHEMA_ID)) cc_sharing_panel_setup_personal_file_sharing_dialog (self); else gtk_widget_hide (WID ("personal-file-sharing-button")); /* remote login */ cc_sharing_panel_setup_remote_login_dialog (self); /* screen sharing */ if (cc_sharing_panel_check_schema_available (self, VINO_SCHEMA_ID)) cc_sharing_panel_setup_screen_sharing_dialog (self); else gtk_widget_hide (WID ("screen-sharing-button")); /* make sure the hostname entry isn't focused by default */ g_signal_connect_swapped (self, "map", G_CALLBACK (gtk_widget_grab_focus), WID ("main-list-box")); }