summaryrefslogtreecommitdiff
path: root/gnome-settings-daemon/gnome-settings-xmodmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'gnome-settings-daemon/gnome-settings-xmodmap.c')
-rw-r--r--gnome-settings-daemon/gnome-settings-xmodmap.c370
1 files changed, 0 insertions, 370 deletions
diff --git a/gnome-settings-daemon/gnome-settings-xmodmap.c b/gnome-settings-daemon/gnome-settings-xmodmap.c
deleted file mode 100644
index a9098d316..000000000
--- a/gnome-settings-daemon/gnome-settings-xmodmap.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/* gnome-settings-xmodmap.c
- *
- * Copyright © 2005 Novell Inc.
- *
- * Written by Shakti Sen <shprasad@novell.com>
- *
- * 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, 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 "gnome-settings-xmodmap.h"
-
-#include <string.h>
-
-#include <glib.h>
-#include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
-
-#include <glade/glade.h>
-
-static const char DISABLE_XMM_WARNING_KEY[] =
- "/desktop/gnome/peripherals/keyboard/disable_xmm_and_xkb_warning";
-
-static const char LOADED_FILES_KEY[] =
- "/desktop/gnome/peripherals/keyboard/general/update_handlers";
-
-
-static void
-check_button_callback (GtkWidget *chk_button,
- gpointer data)
-{
- GConfClient *confClient = gconf_client_get_default ();
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (chk_button))) {
- gconf_client_set_bool (confClient, DISABLE_XMM_WARNING_KEY, TRUE,
- NULL);
- }
- else {
- gconf_client_set_bool (confClient, DISABLE_XMM_WARNING_KEY, FALSE,
- NULL);
- }
- g_object_unref (confClient);
-}
-
-void
-gnome_settings_load_modmap_files ()
-{
- GConfClient *confClient = gconf_client_get_default ();
- GSList *tmp = NULL;
- GSList *loaded_file_list = gconf_client_get_list (confClient, LOADED_FILES_KEY, GCONF_VALUE_STRING, NULL);
- tmp = loaded_file_list;
- while (tmp != NULL) {
- gchar *command = NULL;
- command = g_strdup_printf ("xmodmap %s", g_build_filename (g_get_home_dir (), (gchar *)tmp->data, NULL));
- g_spawn_command_line_async (command, NULL);
- tmp = tmp->next;
- g_free (command);
- }
- g_object_unref (confClient);
-}
-
-static void
-response_callback (GtkWidget *dialog,
- int id,
- void *data)
-{
- if (id == GTK_RESPONSE_OK) {
- GtkWidget *chk_button = g_object_get_data (G_OBJECT (dialog), "check_button");
- check_button_callback (chk_button, NULL);
- gnome_settings_load_modmap_files ();
- }
- gtk_widget_destroy (GTK_WIDGET (dialog));
-}
-
-static void
-get_selected_files_func (GtkTreeModel *model,
- GtkTreePath *path,
- GtkTreeIter *iter,
- gpointer data)
-{
- GSList **list = data;
- gchar *filename;
-
- filename = NULL;
- gtk_tree_model_get (model,
- iter,
- 0,
- &filename,
- -1);
-
- *list = g_slist_prepend (*list, filename);
-}
-
-static GSList*
-remove_string_from_list (GSList *list,
- const char *str)
-{
- GSList *tmp;
-
- tmp = list;
- while (tmp != NULL) {
- if (strcmp (tmp->data, str) == 0)
- break;
-
- tmp = tmp->next;
- }
-
- if (tmp != NULL) {
- g_free (tmp->data);
- list = g_slist_remove (list, tmp->data);
- }
-
- return list;
-}
-
-
-static void
-remove_button_clicked_callback (GtkWidget *button,
- void *data)
-{
- GladeXML *xml;
- GtkWidget *dialog;
- GtkListStore *tree = NULL;
- GtkTreeSelection *selection;
- GtkWidget *treeview;
- GConfClient *confClient;
- GSList *filenames = NULL;
- GSList *tmp = NULL;
- GSList *loaded_files = NULL;
-
- dialog = data;
-
- xml = g_object_get_data (G_OBJECT (dialog), "treeview1");
- treeview = glade_xml_get_widget (xml, "treeview1");
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
- gtk_tree_selection_selected_foreach (selection,
- get_selected_files_func,
- &filenames);
-
- if (!filenames)
- return;
-
- /* Remove the selected file */
- confClient = gconf_client_get_default ();
- loaded_files = gconf_client_get_list (confClient, LOADED_FILES_KEY, GCONF_VALUE_STRING, NULL);
- loaded_files = remove_string_from_list (loaded_files, (char *)filenames->data);
-
- gconf_client_set_list (confClient, LOADED_FILES_KEY, GCONF_VALUE_STRING, loaded_files,
- NULL);
- tree = g_object_get_data (G_OBJECT (dialog), "tree");
-
- gtk_list_store_clear (tree);
- tmp = loaded_files;
- while (tmp != NULL) {
- GtkTreeIter iter;
- gtk_list_store_append (tree, &iter);
- gtk_list_store_set (tree, &iter,
- 0,
- (char *)tmp->data,
- -1);
- tmp = tmp->next;
- }
-
- g_slist_foreach (loaded_files, (GFunc) g_free, NULL);
- g_slist_free (loaded_files);
-
- g_object_unref (G_OBJECT (confClient));
-}
-
-static void
-load_button_clicked_callback (GtkWidget *button,
- void *data)
-{
- GtkWidget *dialog;
- GtkListStore *tree = NULL;
- GtkTreeSelection *selection;
- GtkWidget *treeview;
- GSList *filenames = NULL;
- GSList *tmp = NULL;
- GSList *loaded_files = NULL;
- GConfClient *confClient;
-
- dialog = data;
-
- treeview = g_object_get_data (G_OBJECT (dialog),
- "loaded-treeview");
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
- gtk_tree_selection_selected_foreach (selection,
- get_selected_files_func,
- &filenames);
-
- if (!filenames)
- return;
-
- /* Add the files to left-tree-view */
-
- confClient = gconf_client_get_default ();
- loaded_files = gconf_client_get_list (confClient, LOADED_FILES_KEY, GCONF_VALUE_STRING, NULL);
- tmp = loaded_files;
- while (tmp != NULL) {
- if (strcmp (tmp->data, (char *)filenames->data) == 0)
- return;;
-
- tmp = tmp->next;
-
- }
-
- loaded_files = g_slist_append (loaded_files, (char *)filenames->data);
- gconf_client_set_list (confClient, LOADED_FILES_KEY,
- GCONF_VALUE_STRING, loaded_files,
- NULL);
- tree = g_object_get_data (G_OBJECT (dialog), "tree");
-
- gtk_list_store_clear (tree);
- tmp = loaded_files;
- while (tmp != NULL) {
- GtkTreeIter iter;
- gtk_list_store_append (tree, &iter);
- gtk_list_store_set (tree, &iter,
- 0,
- (char *)tmp->data,
- -1);
- tmp = tmp->next;
- }
- g_slist_foreach (loaded_files, (GFunc) g_free, NULL);
- g_slist_free (loaded_files);
-
- g_object_unref (G_OBJECT (confClient));
-}
-
-void
-gnome_settings_modmap_dialog_call (void)
-{
- GladeXML *xml;
- GtkWidget *load_dialog;
- GtkListStore *tree;
- GtkCellRenderer *cell_renderer;
- GtkTreeIter parent_iter;
- GtkTreeIter iter;
- GtkTreeModel *sort_model;
- GtkTreeSelection *selection;
- GtkWidget *treeview;
- GtkWidget *treeview1;
- GtkTreeViewColumn *column;
- GtkWidget *add_button;
- GtkWidget *remove_button;
- GtkWidget *chk_button;
- GSList *tmp = NULL;
- GDir *homeDir;
- GSList *loaded_files = NULL;
- G_CONST_RETURN gchar *fname;
- GConfClient *confClient = gconf_client_get_default ();
- homeDir = g_dir_open (g_get_home_dir (), 0, NULL);
- if (homeDir == NULL)
- return;
- xml = glade_xml_new (GNOMECC_DATA_DIR "/interfaces/modmap-dialog.glade", "dialog1", NULL);
-
- if (! xml) {
- g_warning ("Could not find GLADE_FILE \n");
- return;
- }
-
- load_dialog = glade_xml_get_widget (xml, "dialog1");
- gtk_window_set_modal (GTK_WINDOW (load_dialog), TRUE);
- g_signal_connect (G_OBJECT (load_dialog), "response",
- G_CALLBACK (response_callback),
- xml);
- add_button = glade_xml_get_widget (xml, "button7");
- g_signal_connect (G_OBJECT (add_button), "clicked",
- G_CALLBACK (load_button_clicked_callback),
- load_dialog);
- remove_button = glade_xml_get_widget (xml, "button6");
- g_signal_connect (G_OBJECT (remove_button), "clicked",
- G_CALLBACK (remove_button_clicked_callback),
- load_dialog);
- chk_button = glade_xml_get_widget (xml, "checkbutton1");
- g_signal_connect (G_OBJECT (chk_button), "toggled",
- G_CALLBACK (check_button_callback),
- NULL);
- g_object_set_data (G_OBJECT (load_dialog), "check_button", chk_button);
- g_object_set_data (G_OBJECT (load_dialog), "treeview1", xml);
- treeview = glade_xml_get_widget (xml, "treeview2");
- g_object_set_data (G_OBJECT (load_dialog),
- "loaded-treeview",
- treeview);
- tree = gtk_list_store_new (1, G_TYPE_STRING);
- cell_renderer = gtk_cell_renderer_text_new ();
- column = gtk_tree_view_column_new_with_attributes ("modmap",
- cell_renderer,
- "text", 0,
- NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
- gtk_tree_view_column_set_sort_column_id (column, 0);
-
- /* Add the data */
- while ((fname = g_dir_read_name (homeDir)) != NULL) {
- if (g_strrstr (fname, "modmap")) {
- gtk_list_store_append (tree, &parent_iter);
- gtk_list_store_set (tree, &parent_iter,
- 0,
- g_strdup (fname),
- -1);
- }
- }
- sort_model = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (tree));
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
- 0,
- GTK_SORT_ASCENDING);
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), sort_model);
- g_object_unref (G_OBJECT (tree));
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
- gtk_tree_selection_set_mode (GTK_TREE_SELECTION (selection),
- GTK_SELECTION_MULTIPLE);
- gtk_widget_show (load_dialog);
-
- g_dir_close (homeDir);
-
- /* Left treeview */
- treeview1 = glade_xml_get_widget (xml, "treeview1");
- tree = gtk_list_store_new (1, G_TYPE_STRING);
- cell_renderer = gtk_cell_renderer_text_new ();
- column = gtk_tree_view_column_new_with_attributes ("modmap",
- cell_renderer,
- "text", 0,
- NULL);
- gtk_tree_view_append_column (GTK_TREE_VIEW (treeview1), column);
- gtk_tree_view_column_set_sort_column_id (column, 0);
-
- loaded_files = gconf_client_get_list (confClient, LOADED_FILES_KEY, GCONF_VALUE_STRING, NULL);
- g_object_unref (confClient);
-
- /* Add the data */
- tmp = loaded_files;
- while (tmp != NULL) {
- gchar *command = NULL;
- gtk_list_store_append (tree, &iter);
- gtk_list_store_set (tree, &iter,
- 0,
- (char *)tmp->data,
- -1);
- tmp = tmp->next;
- g_free (command);
- }
-
- sort_model = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (tree));
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
- 0,
- GTK_SORT_ASCENDING);
- gtk_tree_view_set_model (GTK_TREE_VIEW (treeview1), sort_model);
- g_object_unref (G_OBJECT (tree));
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview1));
- gtk_tree_selection_set_mode (GTK_TREE_SELECTION (selection),
- GTK_SELECTION_MULTIPLE);
- g_object_set_data (G_OBJECT (load_dialog), "tree", tree);
-
-}