diff --git a/panels/keyboard/Makefile.am b/panels/keyboard/Makefile.am index 339d1c039..77c8d1a09 100644 --- a/panels/keyboard/Makefile.am +++ b/panels/keyboard/Makefile.am @@ -10,8 +10,10 @@ libkeyboard_la_SOURCES = \ cc-keyboard-panel.h \ wm-common.c \ wm-common.h \ - gnome-keyboard-panel.c \ - gnome-keyboard-panel.h \ + keyboard-general.c \ + keyboard-general.h \ + keyboard-shortcuts.c \ + keyboard-shortcuts.h \ eggcellrendererkeys.c \ eggcellrendererkeys.h \ eggaccelerators.c \ diff --git a/panels/keyboard/cc-keyboard-panel.c b/panels/keyboard/cc-keyboard-panel.c index 1170b7121..bb1def033 100644 --- a/panels/keyboard/cc-keyboard-panel.c +++ b/panels/keyboard/cc-keyboard-panel.c @@ -20,7 +20,8 @@ */ #include "cc-keyboard-panel.h" -#include "gnome-keyboard-panel.h" +#include "keyboard-general.h" +#include "keyboard-shortcuts.h" G_DEFINE_DYNAMIC_TYPE (CcKeyboardPanel, cc_keyboard_panel, CC_TYPE_PANEL) @@ -62,7 +63,8 @@ cc_keyboard_panel_set_property (GObject *object, static void cc_keyboard_panel_dispose (GObject *object) { - gnome_keybinding_properties_dispose (CC_PANEL (object)); + keyboard_general_dispose (CC_PANEL (object)); + keyboard_shortcuts_dispose (CC_PANEL (object)); G_OBJECT_CLASS (cc_keyboard_panel_parent_class)->dispose (object); } @@ -102,7 +104,8 @@ cc_keyboard_panel_constructor (GType gtype, return obj; } - gnome_keybinding_properties_init (CC_PANEL (self), priv->builder); + keyboard_general_init (CC_PANEL (self), priv->builder); + keyboard_shortcuts_init (CC_PANEL (self), priv->builder); widget = (GtkWidget *) gtk_builder_get_object (priv->builder, "keyboard_notebook"); diff --git a/panels/keyboard/gnome-keyboard-panel.c b/panels/keyboard/gnome-keyboard-panel.c index 3f58fad9f..e6f4d9eba 100644 --- a/panels/keyboard/gnome-keyboard-panel.c +++ b/panels/keyboard/gnome-keyboard-panel.c @@ -82,9 +82,7 @@ static gboolean block_accels = FALSE; static GtkWidget *custom_shortcut_dialog = NULL; static GtkWidget *custom_shortcut_name_entry = NULL; static GtkWidget *custom_shortcut_command_entry = NULL; - -static GSettings *keyboard_settings = NULL; -static GSettings *interface_settings = NULL; +static GHashTable *keyb_sections = NULL; #define WID(builder, name) (GTK_WIDGET (gtk_builder_get_object (builder, name))) @@ -1576,7 +1574,7 @@ add_custom_shortcut (GtkTreeView *tree_view, key_entry->gconf_cnxn_desc = gconf_client_notify_add (client, key_entry->desc_gconf_key, (GConfClientNotifyFunc) &keybinding_description_changed, - key_entry, NULL, NULL); + key_entry, NULL, NULL); key_entry->gconf_cnxn_cmd = gconf_client_notify_add (client, key_entry->cmd_gconf_key, (GConfClientNotifyFunc) &keybinding_command_changed, @@ -1821,33 +1819,6 @@ remove_button_clicked (GtkWidget *button, } } -static void -setup_general_page (GtkBuilder *builder) -{ - if (keyboard_settings == NULL) - keyboard_settings = g_settings_new ("org.gnome.settings-daemon.peripherals.keyboard"); - - if (interface_settings == NULL) - interface_settings = g_settings_new ("org.gnome.desktop.interface"); - - g_settings_bind (keyboard_settings, "repeat", - gtk_builder_get_object (builder, "repeat_toggle"), "active", - G_SETTINGS_BIND_DEFAULT); - g_settings_bind (keyboard_settings, "delay", - gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "repeat_delay_scale"))), "value", - G_SETTINGS_BIND_DEFAULT); - g_settings_bind (keyboard_settings, "rate", - gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "repeat_speed_scale"))), "value", - G_SETTINGS_BIND_DEFAULT); - - g_settings_bind (interface_settings, "cursor-blink", - gtk_builder_get_object (builder, "cursor_toggle"), "active", - G_SETTINGS_BIND_DEFAULT); - g_settings_bind (interface_settings, "cursor-blink-time", - gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "cursor_blink_time_scale"))), "value", - G_SETTINGS_BIND_DEFAULT); -} - static void setup_dialog (CcPanel *panel, GtkBuilder *builder) { @@ -1860,8 +1831,6 @@ setup_dialog (CcPanel *panel, GtkBuilder *builder) GSList *allowed_keys; CcShell *shell; - setup_general_page (builder); - treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "shortcut_treeview")); @@ -1972,6 +1941,9 @@ gnome_keybinding_properties_init (CcPanel *panel, GtkBuilder *builder) { wm_common_register_window_manager_change ((GFunc) on_window_manager_change, builder); + + keyb_sections = g_hash_table_new_full (g_str_hash, g_str_equal, + g_free, free_key_list); setup_dialog (panel, builder); } @@ -1988,6 +1960,9 @@ gnome_keybinding_properties_dispose (CcPanel *panel) g_signal_handler_disconnect (toplevel, maybe_block_accels_id); maybe_block_accels_id = 0; + + if (keyb_sections != NULL) + g_hash_table_destroy (keyb_sections); } } diff --git a/panels/keyboard/keyboard-general.c b/panels/keyboard/keyboard-general.c new file mode 100644 index 000000000..9dd5ea6d8 --- /dev/null +++ b/panels/keyboard/keyboard-general.c @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2010 Intel, Inc + * + * 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. + * + * Authors: Thomas Wood + * Rodrigo Moya + */ + +#include "keyboard-general.h" + +static GSettings *keyboard_settings = NULL; +static GSettings *interface_settings = NULL; + +void +keyboard_general_init (CcPanel *panel, GtkBuilder *builder) +{ + if (keyboard_settings == NULL) + keyboard_settings = g_settings_new ("org.gnome.settings-daemon.peripherals.keyboard"); + + if (interface_settings == NULL) + interface_settings = g_settings_new ("org.gnome.desktop.interface"); + + g_settings_bind (keyboard_settings, "repeat", + gtk_builder_get_object (builder, "repeat_toggle"), "active", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind (keyboard_settings, "delay", + gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "repeat_delay_scale"))), "value", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind (keyboard_settings, "rate", + gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "repeat_speed_scale"))), "value", + G_SETTINGS_BIND_DEFAULT); + + g_settings_bind (interface_settings, "cursor-blink", + gtk_builder_get_object (builder, "cursor_toggle"), "active", + G_SETTINGS_BIND_DEFAULT); + g_settings_bind (interface_settings, "cursor-blink-time", + gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "cursor_blink_time_scale"))), "value", + G_SETTINGS_BIND_DEFAULT); +} + +void +keyboard_general_dispose (CcPanel *panel) +{ + if (keyboard_settings != NULL) + { + g_object_unref (keyboard_settings); + keyboard_settings = NULL; + } + + if (interface_settings != NULL) + { + g_object_unref (interface_settings); + interface_settings = NULL; + } +} diff --git a/panels/keyboard/keyboard-general.h b/panels/keyboard/keyboard-general.h new file mode 100644 index 000000000..f5f77e1a6 --- /dev/null +++ b/panels/keyboard/keyboard-general.h @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2010 Intel, Inc + * + * 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. + * + * Authors: Thomas Wood + * Rodrigo Moya + */ + +#include +#include + +void keyboard_general_init (CcPanel *panel, GtkBuilder *builder); +void keyboard_general_dispose (CcPanel *panel); diff --git a/panels/keyboard/keyboard-shortcuts.c b/panels/keyboard/keyboard-shortcuts.c new file mode 100644 index 000000000..490025f8a --- /dev/null +++ b/panels/keyboard/keyboard-shortcuts.c @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2010 Intel, Inc + * + * 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. + * + * Authors: Thomas Wood + * Rodrigo Moya + */ + +#include "keyboard-shortcuts.h" + +GHashTable *kb_sections = NULL; + +static void +free_key_list (gpointer list) +{ +} + +static void +setup_dialog (CcPanel *panel, GtkBuilder *builder) +{ +} + +void +keyboard_shortcuts_init (CcPanel *panel, GtkBuilder *builder) +{ + kb_sections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, free_key_list); + setup_dialog (panel, builder); +} + +void +keyboard_shortcuts_dispose (CcPanel *panel) +{ +} diff --git a/panels/keyboard/keyboard-shortcuts.h b/panels/keyboard/keyboard-shortcuts.h new file mode 100644 index 000000000..03b4e3fe2 --- /dev/null +++ b/panels/keyboard/keyboard-shortcuts.h @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2010 Intel, Inc + * + * 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. + * + * Authors: Thomas Wood + * Rodrigo Moya + */ + +#include +#include + +void keyboard_shortcuts_init (CcPanel *panel, GtkBuilder *builder); +void keyboard_shortcuts_dispose (CcPanel *panel);