summaryrefslogtreecommitdiff
path: root/gui/greeter/greeter_action_language.c
diff options
context:
space:
mode:
Diffstat (limited to 'gui/greeter/greeter_action_language.c')
-rw-r--r--gui/greeter/greeter_action_language.c338
1 files changed, 0 insertions, 338 deletions
diff --git a/gui/greeter/greeter_action_language.c b/gui/greeter/greeter_action_language.c
deleted file mode 100644
index 83a20d1a..00000000
--- a/gui/greeter/greeter_action_language.c
+++ /dev/null
@@ -1,338 +0,0 @@
-/* GDM - The GNOME Display Manager
- * Copyright (C) 1998, 1999, 2000 Martin K. Petersen <mkp@mkp.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include "config.h"
-
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include <string.h>
-
-#include "gdm.h"
-#include "gdmwm.h"
-#include "gdmcommon.h"
-#include "gdmconfig.h"
-#include "gdmlanguages.h"
-#include "greeter.h"
-#include "greeter_configuration.h"
-#include "greeter_item_pam.h"
-#include "greeter_action_language.h"
-
-#define LAST_LANGUAGE "Last"
-#define DEFAULT_LANGUAGE "Default"
-
-enum {
- LOCALE_COLUMN,
- TRANSLATED_NAME_COLUMN,
- UNTRANSLATED_NAME_COLUMN,
- NUM_COLUMNS
-};
-
-static GtkListStore *lang_model = NULL;
-static GtkWidget *dialog = NULL;
-static gint savelang = GTK_RESPONSE_NO;
-static gchar *current_language = NULL;
-static gchar *dialog_selected_language = NULL;
-
-static void
-greeter_langauge_initialize_model (void)
-{
- GList *list, *li;
- GtkTreeIter iter;
-
- list = gdm_lang_read_locale_file (gdm_config_get_string (GDM_KEY_LOCALE_FILE));
-
- lang_model = gtk_list_store_new (NUM_COLUMNS,
- G_TYPE_STRING,
- G_TYPE_STRING,
- G_TYPE_STRING);
-
- gtk_list_store_append (lang_model, &iter);
- gtk_list_store_set (lang_model, &iter,
- TRANSLATED_NAME_COLUMN, _("Last Language"),
- UNTRANSLATED_NAME_COLUMN, NULL,
- LOCALE_COLUMN, LAST_LANGUAGE,
- -1);
-
- gtk_list_store_append (lang_model, &iter);
- gtk_list_store_set (lang_model, &iter,
- TRANSLATED_NAME_COLUMN, _("System Default"),
- UNTRANSLATED_NAME_COLUMN, NULL,
- LOCALE_COLUMN, DEFAULT_LANGUAGE,
- -1);
-
- for (li = list; li != NULL; li = li->next)
- {
- char *lang = li->data;
- char *name;
- char *untranslated;
-
- li->data = NULL;
-
- name = gdm_lang_name (lang,
- FALSE /* never_encoding */,
- TRUE /* no_group */,
- FALSE /* untranslated */,
- FALSE /* markup */);
-
- untranslated = gdm_lang_untranslated_name (lang,
- TRUE /* markup */);
-
- gtk_list_store_append (lang_model, &iter);
- gtk_list_store_set (lang_model, &iter,
- TRANSLATED_NAME_COLUMN, name,
- UNTRANSLATED_NAME_COLUMN, untranslated,
- LOCALE_COLUMN, lang,
- -1);
-
- g_free (name);
- g_free (untranslated);
- g_free (lang);
- }
- g_list_free (list);
-}
-
-gint
-greeter_language_get_save_language (void)
-{
- return savelang;
-}
-
-gchar *
-greeter_language_get_language (const char *old_language)
-{
- gchar *retval = NULL;
-
- /* Don't save language unless told otherwise */
- savelang = GTK_RESPONSE_NO;
-
- if (old_language == NULL)
- old_language = "";
-
- /* If a different language is selected */
- if (current_language != NULL && strcmp (current_language, LAST_LANGUAGE) != 0)
- {
- if (strcmp (current_language, DEFAULT_LANGUAGE) == 0)
- retval = g_strdup ("");
- else
- retval = g_strdup (current_language);
-
- /* User's saved language is not the chosen one */
- if (strcmp (old_language, retval) != 0)
- {
- gchar *primary_message;
- gchar *secondary_message;
- char *current_name, *saved_name;
-
- if (strcmp (current_language, DEFAULT_LANGUAGE) == 0)
- current_name = g_strdup (_("System Default"));
- else
- current_name = gdm_lang_name (current_language,
- FALSE /* never_encoding */,
- TRUE /* no_group */,
- TRUE /* untranslated */,
- TRUE /* markup */);
- if (strcmp (old_language, "") == 0)
- saved_name = g_strdup (_("System Default"));
- else
- saved_name = gdm_lang_name (old_language,
- FALSE /* never_encoding */,
- TRUE /* no_group */,
- TRUE /* untranslated */,
- TRUE /* markup */);
-
- primary_message = g_strdup_printf (_("Do you wish to make %s the default for future sessions?"),
- current_name);
- secondary_message = g_strdup_printf (_("You have chosen %s for this session, but your default setting is "
- "%s."), current_name, saved_name);
- g_free (current_name);
- g_free (saved_name);
-
- savelang = gdm_wm_query_dialog (primary_message, secondary_message,
- _("Make _Default"), _("Just For _This Session"), TRUE);
- g_free (primary_message);
- g_free (secondary_message);
- }
- }
- else
- {
- retval = g_strdup (old_language);
- }
-
- return retval;
-}
-
-static void
-selection_changed (GtkTreeSelection *selection,
- gpointer data)
-{
- GtkTreeIter iter;
-
- if (gtk_tree_selection_get_selected (selection, NULL, &iter))
- {
- g_free (dialog_selected_language);
- gtk_tree_model_get (GTK_TREE_MODEL (lang_model), &iter, LOCALE_COLUMN, &dialog_selected_language, -1);
- }
-}
-
-static void
-tree_row_activated (GtkTreeView *view,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- gpointer data)
-{
- GtkTreeIter iter;
- if (gtk_tree_model_get_iter (GTK_TREE_MODEL (lang_model), &iter, path))
- {
- g_free (dialog_selected_language);
- gtk_tree_model_get (GTK_TREE_MODEL (lang_model), &iter,
- LOCALE_COLUMN, &dialog_selected_language,
- -1);
- gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
- }
-}
-
-/*
- * The button with this handler appears in the F10 menu, so it
- * cannot depend on callback data being passed in.
- */
-void
-greeter_language_handler (void)
-{
- GreeterItemInfo *entry_info = greeter_lookup_id ("user-pw-entry");
- GtkWidget *entry = GNOME_CANVAS_WIDGET (entry_info->item)->widget;
-
- GtkWidget *view = NULL;
-
- if (dialog == NULL)
- {
- GtkWidget *main_vbox;
- GtkWidget *button;
- GtkWidget **tmp_p;
- GtkWidget *swindow;
- GtkWidget *label;
- char *s;
-
- dialog = gtk_dialog_new_with_buttons (_("Select a Language"),
-#ifdef TODO
- GTK_WINDOW (parent_window),
-#endif
- NULL,
- 0,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- NULL);
-
- button = gtk_button_new_with_mnemonic (_("Change _Language"));
- GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
- gtk_widget_show (button);
- gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button,
- GTK_RESPONSE_OK);
-
- gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 2);
-
- main_vbox = gtk_vbox_new (FALSE, 6);
- gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 5);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox),
- main_vbox, TRUE, TRUE, 0);
-
- gtk_dialog_set_default_response (GTK_DIALOG (dialog),
- GTK_RESPONSE_OK);
- /* evil gcc warnings */
- tmp_p = &dialog;
- g_object_add_weak_pointer (G_OBJECT (dialog), (gpointer *)tmp_p);
- s = g_strdup (_("_Select the language for your session to use:"));
- label = gtk_label_new_with_mnemonic (s);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- g_free (s);
- gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
- gtk_box_pack_start (GTK_BOX (main_vbox),
- label, FALSE, FALSE, 0);
- view = gtk_tree_view_new ();
- gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (view), TRUE);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), view);
- /* FIXME: we should handle this better, but things really look
- * bad if we aren't always LTR */
- gtk_widget_set_direction (view, GTK_TEXT_DIR_LTR);
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view), FALSE);
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view),
- GTK_DIALOG_MODAL,
- NULL,
- gtk_cell_renderer_text_new (),
- "text", TRANSLATED_NAME_COLUMN,
- NULL);
- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (view),
- GTK_DIALOG_MODAL,
- NULL,
- gtk_cell_renderer_text_new (),
- "markup",
- UNTRANSLATED_NAME_COLUMN,
- NULL);
- swindow = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swindow), GTK_SHADOW_IN);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_container_add (GTK_CONTAINER (swindow), view);
- gtk_box_pack_start (GTK_BOX (main_vbox),
- swindow, TRUE, TRUE, 0);
- gtk_window_set_default_size (GTK_WINDOW (dialog),
- MIN (400, gdm_wm_screen.width),
- MIN (600, gdm_wm_screen.height));
- g_signal_connect (G_OBJECT (gtk_tree_view_get_selection (GTK_TREE_VIEW (view))),
- "changed",
- (GCallback) selection_changed,
- NULL);
- g_signal_connect (G_OBJECT (view),
- "row_activated",
- (GCallback) tree_row_activated,
- NULL);
- gtk_widget_show_all (dialog);
- gdm_wm_center_window (GTK_WINDOW (dialog));
- }
- gdm_wm_no_login_focus_push ();
- if (view != NULL)
- {
- GtkTreeSelection *selection;
-
- gtk_widget_show_now (dialog);
- greeter_langauge_initialize_model ();
- gtk_tree_view_set_model (GTK_TREE_VIEW (view),
- GTK_TREE_MODEL (lang_model));
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
- if (selection != NULL)
- gtk_tree_selection_select_path (selection, gtk_tree_path_new_first ());
- }
- switch (gtk_dialog_run (GTK_DIALOG (dialog)))
- {
- case GTK_RESPONSE_OK:
- if (dialog_selected_language)
- current_language = g_strdup (dialog_selected_language);
- break;
- case GTK_RESPONSE_CANCEL:
- default:
- break;
- }
-
- gdm_wm_no_login_focus_pop ();
-
- if (dialog)
- gtk_widget_hide (dialog);
-}
-