GtkWidget * cc_input_options_new (GtkWidget *parent) { GtkBuilder *builder; GtkWidget *options; CcInputOptionsPrivate *priv; GError *error = NULL; builder = gtk_builder_new (); if (gtk_builder_add_from_resource (builder, "/org/gnome/control-center/region/input-options.ui", &error) == 0) { g_object_unref (builder); g_warning ("failed to load input options: %s", error->message); g_error_free (error); return NULL; } options = WID ("dialog"); priv = g_new0 (CcInputOptionsPrivate, 1); g_object_set_data_full (G_OBJECT (options), "private", priv, cc_input_options_private_free); g_object_set_data_full (G_OBJECT (options), "builder", builder, g_object_unref); priv->same_source = WID ("same-source"); priv->per_window_source = WID ("per-window-source"); priv->previous_source = WID ("previous-source"); priv->next_source = WID ("next-source"); priv->alt_next_source = WID ("alt-next-source"); g_object_bind_property (priv->previous_source, "visible", WID ("previous-source-label"), "visible", G_BINDING_DEFAULT); g_object_bind_property (priv->next_source, "visible", WID ("next-source-label"), "visible", G_BINDING_DEFAULT); g_object_bind_property (priv->alt_next_source, "visible", WID ("alt-next-source-label"), "visible", G_BINDING_DEFAULT); priv->settings = g_settings_new ("org.gnome.desktop.input-sources"); g_settings_bind (priv->settings, "per-window", priv->per_window_source, "active", G_SETTINGS_BIND_DEFAULT); g_settings_bind (priv->settings, "per-window", priv->same_source, "active", G_SETTINGS_BIND_DEFAULT | G_SETTINGS_BIND_INVERT_BOOLEAN); update_shortcuts (options); update_modifiers_shortcut (options); gtk_window_set_transient_for (GTK_WINDOW (options), GTK_WINDOW (parent)); return options; }
void setup_input_tabs (GtkBuilder *builder, GisKeyboardPage *page) { GtkWidget *treeview; GtkTreeViewColumn *column; GtkCellRenderer *cell; GtkListStore *store; GtkTreeSelection *selection; /* set up the list of active inputs */ treeview = WID("active_input_sources"); column = gtk_tree_view_column_new (); cell = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (column, cell, TRUE); gtk_tree_view_column_add_attribute (column, cell, "text", NAME_COLUMN); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_DESKTOP_APP_INFO); gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), GTK_TREE_MODEL (store)); input_sources_settings = g_settings_new (GNOME_DESKTOP_INPUT_SOURCES_DIR); g_settings_delay (input_sources_settings); g_object_weak_ref (G_OBJECT (builder), (GWeakNotify) g_object_unref, input_sources_settings); if (!xkb_info) xkb_info = gnome_xkb_info_new (); #ifdef HAVE_IBUS ibus_init (); if (!ibus) { ibus = ibus_bus_new_async (); if (ibus_bus_is_connected (ibus)) fetch_ibus_engines (builder); else g_signal_connect_swapped (ibus, "connected", G_CALLBACK (fetch_ibus_engines), builder); g_object_weak_ref (G_OBJECT (builder), (GWeakNotify) clear_ibus, NULL); } maybe_start_ibus (); #endif populate_with_active_sources (store); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect_swapped (selection, "changed", G_CALLBACK (update_button_sensitivity), builder); /* set up the buttons */ g_signal_connect (WID("input_source_add"), "clicked", G_CALLBACK (add_input), builder); g_signal_connect (WID("input_source_remove"), "clicked", G_CALLBACK (remove_selected_input), builder); g_signal_connect (WID("input_source_move_up"), "clicked", G_CALLBACK (move_selected_input_up), builder); g_signal_connect (WID("input_source_move_down"), "clicked", G_CALLBACK (move_selected_input_down), builder); g_signal_connect (WID("input_source_show"), "clicked", G_CALLBACK (show_selected_layout), builder); g_signal_connect (WID("input_source_settings"), "clicked", G_CALLBACK (show_selected_settings), builder); /* use an em dash is no shortcut */ update_shortcuts (builder); /* g_signal_connect (WID("jump-to-shortcuts"), "activate-link", G_CALLBACK (go_to_shortcuts), page);*/ g_signal_connect (G_OBJECT (input_sources_settings), "changed::" KEY_INPUT_SOURCES, G_CALLBACK (input_sources_changed), builder); }