language-chooser: Rearrange code
This will make the diff to the new chooser less mysterious
This commit is contained in:
parent
d3faf9cf8a
commit
2d3ed3468a
1 changed files with 57 additions and 55 deletions
|
@ -52,61 +52,6 @@ typedef struct {
|
||||||
|
|
||||||
#define GET_PRIVATE(chooser) ((CcLanguageChooserPrivate *) g_object_get_data (G_OBJECT (chooser), "private"))
|
#define GET_PRIVATE(chooser) ((CcLanguageChooserPrivate *) g_object_get_data (G_OBJECT (chooser), "private"))
|
||||||
|
|
||||||
static void
|
|
||||||
set_locale_id (GtkDialog *chooser,
|
|
||||||
const gchar *locale_id)
|
|
||||||
{
|
|
||||||
CcLanguageChooserPrivate *priv = GET_PRIVATE (chooser);
|
|
||||||
GList *children, *l;
|
|
||||||
|
|
||||||
children = gtk_container_get_children (GTK_CONTAINER (priv->language_list));
|
|
||||||
for (l = children; l; l = l->next) {
|
|
||||||
GtkWidget *row = l->data;
|
|
||||||
GtkWidget *check = g_object_get_data (G_OBJECT (row), "check");
|
|
||||||
const gchar *language = g_object_get_data (G_OBJECT (row), "locale-id");
|
|
||||||
if (check == NULL || language == NULL)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (g_strcmp0 (locale_id, language) == 0) {
|
|
||||||
gboolean is_extra;
|
|
||||||
|
|
||||||
gtk_widget_set_opacity (check, 1.0);
|
|
||||||
|
|
||||||
/* make sure the selected language is shown */
|
|
||||||
is_extra = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (row), "is-extra"));
|
|
||||||
if (!priv->showing_extra && is_extra) {
|
|
||||||
g_object_set_data (G_OBJECT (row), "is-extra", GINT_TO_POINTER (FALSE));
|
|
||||||
egg_list_box_refilter (EGG_LIST_BOX (priv->language_list));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
gtk_widget_set_opacity (check, 0.0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
g_list_free (children);
|
|
||||||
|
|
||||||
g_free (priv->language);
|
|
||||||
priv->language = g_strdup (locale_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gint
|
|
||||||
sort_languages (gconstpointer a,
|
|
||||||
gconstpointer b,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
const gchar *la;
|
|
||||||
const gchar *lb;
|
|
||||||
|
|
||||||
if (g_object_get_data (G_OBJECT (a), "locale-id") == NULL)
|
|
||||||
return 1;
|
|
||||||
if (g_object_get_data (G_OBJECT (b), "locale-id") == NULL)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
la = g_object_get_data (G_OBJECT (a), "locale-name");
|
|
||||||
lb = g_object_get_data (G_OBJECT (b), "locale-name");
|
|
||||||
|
|
||||||
return g_strcmp0 (la, lb);
|
|
||||||
}
|
|
||||||
|
|
||||||
static GtkWidget *
|
static GtkWidget *
|
||||||
padded_label_new (char *text, gboolean narrow)
|
padded_label_new (char *text, gboolean narrow)
|
||||||
{
|
{
|
||||||
|
@ -306,6 +251,25 @@ out:
|
||||||
return visible;
|
return visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gint
|
||||||
|
sort_languages (gconstpointer a,
|
||||||
|
gconstpointer b,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
const gchar *la;
|
||||||
|
const gchar *lb;
|
||||||
|
|
||||||
|
if (g_object_get_data (G_OBJECT (a), "locale-id") == NULL)
|
||||||
|
return 1;
|
||||||
|
if (g_object_get_data (G_OBJECT (b), "locale-id") == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
la = g_object_get_data (G_OBJECT (a), "locale-name");
|
||||||
|
lb = g_object_get_data (G_OBJECT (b), "locale-name");
|
||||||
|
|
||||||
|
return g_strcmp0 (la, lb);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
filter_changed (GtkDialog *chooser)
|
filter_changed (GtkDialog *chooser)
|
||||||
{
|
{
|
||||||
|
@ -349,6 +313,44 @@ show_more (GtkDialog *chooser)
|
||||||
egg_list_box_refilter (EGG_LIST_BOX (priv->language_list));
|
egg_list_box_refilter (EGG_LIST_BOX (priv->language_list));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_locale_id (GtkDialog *chooser,
|
||||||
|
const gchar *locale_id)
|
||||||
|
{
|
||||||
|
CcLanguageChooserPrivate *priv = GET_PRIVATE (chooser);
|
||||||
|
GList *children, *l;
|
||||||
|
|
||||||
|
children = gtk_container_get_children (GTK_CONTAINER (priv->language_list));
|
||||||
|
for (l = children; l; l = l->next) {
|
||||||
|
GtkWidget *row = l->data;
|
||||||
|
GtkWidget *check = g_object_get_data (G_OBJECT (row), "check");
|
||||||
|
const gchar *language = g_object_get_data (G_OBJECT (row), "locale-id");
|
||||||
|
if (check == NULL || language == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (g_strcmp0 (locale_id, language) == 0) {
|
||||||
|
gboolean is_extra;
|
||||||
|
|
||||||
|
gtk_widget_show (check);
|
||||||
|
|
||||||
|
/* make sure the selected language is shown */
|
||||||
|
is_extra = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (row), "is-extra"));
|
||||||
|
if (!priv->showing_extra && is_extra) {
|
||||||
|
g_object_set_data (G_OBJECT (row), "is-extra", GINT_TO_POINTER (FALSE));
|
||||||
|
egg_list_box_refilter (EGG_LIST_BOX (priv->language_list));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
gtk_image_clear (GTK_IMAGE (check));
|
||||||
|
g_object_set (check, "icon-size", GTK_ICON_SIZE_MENU, NULL);
|
||||||
|
gtk_widget_hide (check);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g_list_free (children);
|
||||||
|
|
||||||
|
g_free (priv->language);
|
||||||
|
priv->language = g_strdup (locale_id);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
child_activated (EggListBox *box,
|
child_activated (EggListBox *box,
|
||||||
GtkWidget *child,
|
GtkWidget *child,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue