static GtkWidget * input_source_widget_new (GtkWidget *chooser, const gchar *type, const gchar *id) { CcInputChooserPrivate *priv = GET_PRIVATE (chooser); GtkWidget *widget = NULL; if (g_str_equal (type, INPUT_SOURCE_TYPE_XKB)) { const gchar *display_name; gnome_xkb_info_get_layout_info (priv->xkb_info, id, &display_name, NULL, NULL, NULL); widget = padded_label_new (display_name, ROW_LABEL_POSITION_START, ROW_TRAVEL_DIRECTION_NONE, FALSE); g_object_set_data (G_OBJECT (widget), "name", (gpointer) display_name); g_object_set_data_full (G_OBJECT (widget), "unaccented-name", cc_util_normalize_casefold_and_unaccent (display_name), g_free); } else if (g_str_equal (type, INPUT_SOURCE_TYPE_IBUS)) { #ifdef HAVE_IBUS gchar *display_name; GtkWidget *image; display_name = engine_get_display_name (g_hash_table_lookup (priv->ibus_engines, id)); widget = padded_label_new (display_name, ROW_LABEL_POSITION_START, ROW_TRAVEL_DIRECTION_NONE, FALSE); image = gtk_image_new_from_icon_name ("system-run-symbolic", GTK_ICON_SIZE_MENU); set_row_widget_margins (image); gtk_style_context_add_class (gtk_widget_get_style_context (image), "dim-label"); gtk_box_pack_start (GTK_BOX (widget), image, FALSE, TRUE, 0); g_object_set_data_full (G_OBJECT (widget), "name", display_name, g_free); g_object_set_data_full (G_OBJECT (widget), "unaccented-name", cc_util_normalize_casefold_and_unaccent (display_name), g_free); #else widget = NULL; #endif /* HAVE_IBUS */ } if (widget) { g_object_set_data (G_OBJECT (widget), "type", (gpointer) type); g_object_set_data (G_OBJECT (widget), "id", (gpointer) id); } return widget; }
static GtkWidget * no_results_widget_new (void) { GtkWidget *widget; widget = padded_label_new (_("No languages found"), TRUE); gtk_widget_set_sensitive (widget, FALSE); return widget; }
static GtkListBoxRow * locale_row_new (const gchar *text) { GtkWidget *row; GtkWidget *widget; row = gtk_list_box_row_new (); widget = padded_label_new (text, ROW_LABEL_POSITION_CENTER, ROW_TRAVEL_DIRECTION_NONE, FALSE); gtk_container_add (GTK_CONTAINER (row), widget); return GTK_LIST_BOX_ROW (row); }
static GtkWidget * locale_separator_widget_new (const gchar *text) { GtkWidget *widget; widget = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (widget), gtk_separator_new (GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (widget), padded_label_new (text, ROW_LABEL_POSITION_CENTER, ROW_TRAVEL_DIRECTION_NONE, TRUE), FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (widget), gtk_separator_new (GTK_ORIENTATION_HORIZONTAL), FALSE, FALSE, 0); return widget; }
static GtkWidget * language_widget_new (const gchar *locale_id, const gchar *current_locale_id, gboolean is_extra) { gchar *locale_name; gchar *locale_current_name; gchar *locale_untranslated_name; GtkWidget *row; GtkWidget *check; GtkWidget *box; locale_name = gnome_get_language_from_locale (locale_id, locale_id); locale_current_name = gnome_get_language_from_locale (locale_id, NULL); locale_untranslated_name = gnome_get_language_from_locale (locale_id, "C"); row = gtk_list_box_row_new (); box = padded_label_new (locale_name, is_extra); gtk_container_add (GTK_CONTAINER (row), box); /* We add a check on each side of the label to keep it centered. */ check = gtk_image_new (); gtk_image_set_from_icon_name (GTK_IMAGE (check), "object-select-symbolic", GTK_ICON_SIZE_MENU); gtk_widget_set_opacity (check, 0.0); g_object_set (check, "icon-size", GTK_ICON_SIZE_MENU, NULL); gtk_box_pack_start (GTK_BOX (box), check, FALSE, FALSE, 0); gtk_box_reorder_child (GTK_BOX (box), check, 0); check = gtk_image_new (); gtk_image_set_from_icon_name (GTK_IMAGE (check), "object-select-symbolic", GTK_ICON_SIZE_MENU); gtk_widget_set_opacity (check, 0.0); g_object_set (check, "icon-size", GTK_ICON_SIZE_MENU, NULL); gtk_box_pack_start (GTK_BOX (box), check, FALSE, FALSE, 0); if (g_strcmp0 (locale_id, current_locale_id) == 0) gtk_widget_set_opacity (check, 1.0); g_object_set_data (G_OBJECT (row), "check", check); g_object_set_data_full (G_OBJECT (row), "locale-id", g_strdup (locale_id), g_free); g_object_set_data_full (G_OBJECT (row), "locale-name", locale_name, g_free); g_object_set_data_full (G_OBJECT (row), "locale-current-name", locale_current_name, g_free); g_object_set_data_full (G_OBJECT (row), "locale-untranslated-name", locale_untranslated_name, g_free); g_object_set_data (G_OBJECT (row), "is-extra", GUINT_TO_POINTER (is_extra)); return row; }
static GtkWidget * language_widget_new (const char *locale_id, gboolean is_extra) { gchar *locale_name, *locale_current_name, *locale_untranslated_name; GtkWidget *checkmark; LanguageWidget *widget = g_new0 (LanguageWidget, 1); locale_name = gnome_get_language_from_locale (locale_id, locale_id); locale_current_name = gnome_get_language_from_locale (locale_id, NULL); locale_untranslated_name = gnome_get_language_from_locale (locale_id, "C"); widget->box = padded_label_new (locale_name); widget->locale_id = g_strdup (locale_id); widget->locale_name = locale_name; widget->locale_current_name = locale_current_name; widget->locale_untranslated_name = locale_untranslated_name; widget->is_extra = is_extra; /* We add a check on each side of the label to keep it centered. */ checkmark = gtk_image_new_from_icon_name ("object-select-symbolic", GTK_ICON_SIZE_MENU); gtk_widget_show (checkmark); gtk_widget_set_opacity (checkmark, 0.0); gtk_box_pack_start (GTK_BOX (widget->box), checkmark, FALSE, FALSE, 0); gtk_box_reorder_child (GTK_BOX (widget->box), checkmark, 0); widget->checkmark = gtk_image_new_from_icon_name ("object-select-symbolic", GTK_ICON_SIZE_MENU); gtk_box_pack_start (GTK_BOX (widget->box), widget->checkmark, FALSE, FALSE, 0); gtk_widget_show (widget->checkmark); g_object_set_data_full (G_OBJECT (widget->box), "language-widget", widget, language_widget_free); return widget->box; }
static GtkWidget * no_results_widget_new (void) { return padded_label_new (_("No input sources found"), ROW_LABEL_POSITION_CENTER, ROW_TRAVEL_DIRECTION_NONE, TRUE); }
static GtkWidget * locale_widget_new (const gchar *text) { return padded_label_new (text, ROW_LABEL_POSITION_CENTER, ROW_TRAVEL_DIRECTION_NONE, FALSE); }
static GtkWidget * back_widget_new (const gchar *text) { return padded_label_new (text, ROW_LABEL_POSITION_CENTER, ROW_TRAVEL_DIRECTION_BACKWARD, TRUE); }