a bit more cleanup

svn path=/trunk/; revision=7420
This commit is contained in:
Sergey V. Udaltsov 2007-03-23 23:54:05 +00:00
parent a3cac171e0
commit d173601ca5
4 changed files with 46 additions and 31 deletions

View file

@ -29,11 +29,6 @@
#include "libgnomekbd/gkbd-keyboard-config.h"
G_BEGIN_DECLS
#define SEL_LAYOUT_TREE_COL_DESCRIPTION 0
#define SEL_LAYOUT_TREE_COL_DEFAULT 1
#define SEL_LAYOUT_TREE_COL_ID 2
#define AVAIL_LAYOUT_TREE_COL_DESCRIPTION 0
#define AVAIL_LAYOUT_TREE_COL_ID 1
#define CWID(s) glade_xml_get_widget (chooser_dialog, s)
extern XklEngine *engine;
extern XklConfigRegistry *config_registry;
@ -100,5 +95,8 @@ extern GtkWidget *xkb_layout_preview_create_widget (GladeXML *
extern void xkb_layout_preview_update (GladeXML * chooser_dialog);
extern gchar *xkb_layout_chooser_get_selected_id (GladeXML *
chooser_dialog);
G_END_DECLS
#endif /* __GNOME_KEYBOARD_PROPERTY_XKB_H */

View file

@ -35,6 +35,10 @@
#include "gnome-keyboard-properties-xkb.h"
#define SEL_LAYOUT_TREE_COL_DESCRIPTION 0
#define SEL_LAYOUT_TREE_COL_DEFAULT 1
#define SEL_LAYOUT_TREE_COL_ID 2
static int idx2select = -1;
static int max_selected_layouts = -1;
static int default_group = -1;
@ -113,7 +117,7 @@ def_group_in_gconf_changed (GConfClient * client,
GConfEntry * entry, GladeXML * dialog)
{
GConfValue *value = gconf_entry_get_value (entry);
if (!value)
return;
@ -219,8 +223,8 @@ xkb_layouts_prepare_selected_tree (GladeXML * dialog,
text_renderer = GTK_CELL_RENDERER (gtk_cell_renderer_text_new ());
toggle_renderer =
GTK_CELL_RENDERER (gtk_cell_renderer_toggle_new ());
gtk_cell_renderer_toggle_set_radio (
GTK_CELL_RENDERER_TOGGLE (toggle_renderer), TRUE);
gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE
(toggle_renderer), TRUE);
desc_column =
gtk_tree_view_column_new_with_attributes (_("Layout"),

View file

@ -37,6 +37,9 @@
#define GROUP_SWITCHERS_GROUP "grp"
#define DEFAULT_GROUP_SWITCH "grp:alts_toggle"
#define AVAIL_LAYOUT_TREE_COL_DESCRIPTION 0
#define AVAIL_LAYOUT_TREE_COL_ID 1
static GtkTreeIter current1st_level_iter;
static const char *current1st_level_id;
@ -93,18 +96,18 @@ add_layout_to_available_layouts_tree (XklConfigRegistry * config_registry,
static void
xkb_layout_chooser_enable_disable_buttons (GladeXML * chooser_dialog)
{
GtkWidget *available_layouts_tree = CWID ("xkb_layouts_available");
GtkTreeSelection *selection =
gtk_tree_view_get_selection (GTK_TREE_VIEW
(available_layouts_tree));
const int n_selected_available_layouts =
gtk_tree_selection_count_selected_rows (selection);
GtkWidget *available_layouts_tree = CWID ("xkb_layouts_available");
GtkTreeSelection *selection =
gtk_tree_view_get_selection (GTK_TREE_VIEW
(available_layouts_tree));
const int n_selected_available_layouts =
gtk_tree_selection_count_selected_rows (selection);
gtk_dialog_set_response_sensitive (GTK_DIALOG
(CWID ("xkb_layout_chooser")),
GTK_RESPONSE_OK,
n_selected_available_layouts >
0);
gtk_dialog_set_response_sensitive (GTK_DIALOG
(CWID ("xkb_layout_chooser")),
GTK_RESPONSE_OK,
n_selected_available_layouts >
0);
}
static void
@ -289,3 +292,22 @@ xkb_layout_choose (GladeXML * dialog)
gtk_dialog_run (GTK_DIALOG (chooser));
gtk_widget_destroy (chooser);
}
gchar *
xkb_layout_chooser_get_selected_id (GladeXML * chooser_dialog)
{
GtkWidget *available_layouts_tree = CWID ("xkb_layouts_available");
GtkTreeSelection *selection =
gtk_tree_view_get_selection (GTK_TREE_VIEW
(available_layouts_tree));
GtkTreeIter selected_iter;
GtkTreeModel *model;
if (gtk_tree_selection_get_selected (selection, &model,
&selected_iter)) {
gchar *id;
gtk_tree_model_get (model, &selected_iter,
AVAIL_LAYOUT_TREE_COL_ID, &id, -1);
return id;
}
return NULL;
}

View file

@ -72,24 +72,15 @@ xkb_layout_preview_update (GladeXML * chooser_dialog)
{
#ifdef HAVE_X11_EXTENSIONS_XKB_H
GtkWidget *chooser = CWID ("xkb_layout_chooser");
GtkWidget *available_layouts_tree = CWID ("xkb_layouts_available");
GtkTreeSelection *selection =
gtk_tree_view_get_selection (GTK_TREE_VIEW
(available_layouts_tree));
GtkTreeIter selected_iter;
GtkTreeModel *model;
GtkWidget *kbdraw =
GTK_WIDGET (g_object_get_data (G_OBJECT (chooser), "kbdraw"));
if (kbdraw != NULL
&& gtk_tree_selection_get_selected (selection, &model,
&selected_iter)) {
gchar *id;
gchar *id = xkb_layout_chooser_get_selected_id (chooser_dialog);
if (kbdraw != NULL && id != NULL) {
XklConfigRec *data;
char **p, *layout, *variant;
XkbComponentNamesRec component_names;
gtk_tree_model_get (model, &selected_iter,
AVAIL_LAYOUT_TREE_COL_ID, &id, -1);
data = xkl_config_rec_new ();
if (xkl_config_rec_get_from_server (data, engine)) {
if ((p = data->layouts) != NULL)