dependency on libxklavier 4.0, optional load/display of extra layouts
This commit is contained in:
parent
1c4a3a3b0e
commit
1e58245df0
5 changed files with 105 additions and 40 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
2009-06-29 Sergey Udaltsov <svu@gnome.org>
|
||||||
|
|
||||||
|
* configure.in: Dependency on libxklavier 4.0
|
||||||
|
|
||||||
2009-05-28 Jens Granseuer <jensgr@gmx.net>
|
2009-05-28 Jens Granseuer <jensgr@gmx.net>
|
||||||
|
|
||||||
* font-viewer/font-thumbnailer.c (main): Timeout value was supposed
|
* font-viewer/font-thumbnailer.c (main): Timeout value was supposed
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2009-06-29 Sergey Udaltsov <svu@gnome.org>
|
||||||
|
|
||||||
|
* gnome-keyboard-properties-xkb.c,
|
||||||
|
gnome-keyboard-properties-xkbltadd.c: optionally load extras layouts
|
||||||
|
from xk-c (feature of libxklavier 4.0)
|
||||||
|
|
||||||
==================== 2.25.92 ====================
|
==================== 2.25.92 ====================
|
||||||
|
|
||||||
2009-02-27 Jens Granseuer <jensgr@gmx.net>
|
2009-02-27 Jens Granseuer <jensgr@gmx.net>
|
||||||
|
|
|
@ -42,6 +42,7 @@ XklEngine *engine;
|
||||||
XklConfigRegistry *config_registry;
|
XklConfigRegistry *config_registry;
|
||||||
|
|
||||||
GkbdKeyboardConfig initial_config;
|
GkbdKeyboardConfig initial_config;
|
||||||
|
GkbdDesktopConfig desktop_config;
|
||||||
|
|
||||||
GConfClient *xkb_gconf_client;
|
GConfClient *xkb_gconf_client;
|
||||||
|
|
||||||
|
@ -114,6 +115,7 @@ setup_model_entry (GladeXML * dialog)
|
||||||
static void
|
static void
|
||||||
cleanup_xkb_tabs (GladeXML * dialog)
|
cleanup_xkb_tabs (GladeXML * dialog)
|
||||||
{
|
{
|
||||||
|
gkbd_desktop_config_term (&desktop_config);
|
||||||
gkbd_keyboard_config_term (&initial_config);
|
gkbd_keyboard_config_term (&initial_config);
|
||||||
g_object_unref (G_OBJECT (config_registry));
|
g_object_unref (G_OBJECT (config_registry));
|
||||||
config_registry = NULL;
|
config_registry = NULL;
|
||||||
|
@ -155,7 +157,12 @@ setup_xkb_tabs (GladeXML * dialog, GConfChangeSet * changeset)
|
||||||
|
|
||||||
engine = xkl_engine_get_instance (GDK_DISPLAY ());
|
engine = xkl_engine_get_instance (GDK_DISPLAY ());
|
||||||
config_registry = xkl_config_registry_get_instance (engine);
|
config_registry = xkl_config_registry_get_instance (engine);
|
||||||
xkl_config_registry_load (config_registry);
|
|
||||||
|
gkbd_desktop_config_init (&desktop_config, xkb_gconf_client, engine);
|
||||||
|
gkbd_desktop_config_load_from_gconf (&desktop_config);
|
||||||
|
|
||||||
|
xkl_config_registry_load (config_registry,
|
||||||
|
desktop_config.load_extra_items);
|
||||||
|
|
||||||
gkbd_keyboard_config_init (&initial_config, xkb_gconf_client,
|
gkbd_keyboard_config_init (&initial_config, xkb_gconf_client,
|
||||||
engine);
|
engine);
|
||||||
|
|
|
@ -40,7 +40,8 @@
|
||||||
#define DEFAULT_VARIANT_ID "__default__"
|
#define DEFAULT_VARIANT_ID "__default__"
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
COMBO_BOX_MODEL_COL_DESCRIPTION,
|
COMBO_BOX_MODEL_COL_SORT,
|
||||||
|
COMBO_BOX_MODEL_COL_VISIBLE,
|
||||||
COMBO_BOX_MODEL_COL_XKB_ID,
|
COMBO_BOX_MODEL_COL_XKB_ID,
|
||||||
COMBO_BOX_MODEL_COL_REAL_ID
|
COMBO_BOX_MODEL_COL_REAL_ID
|
||||||
};
|
};
|
||||||
|
@ -54,24 +55,44 @@ typedef struct {
|
||||||
} AddVariantData;
|
} AddVariantData;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xkb_layout_chooser_available_layouts_fill (GladeXML * chooser_dialog,
|
|
||||||
const gchar cblid[],
|
|
||||||
const gchar cbvid[],
|
|
||||||
LayoutIterFunc layout_iterator,
|
|
||||||
ConfigItemProcessFunc
|
|
||||||
layout_handler,
|
|
||||||
GCallback
|
|
||||||
combo_changed_notify);
|
xkb_layout_chooser_available_layouts_fill (GladeXML * chooser_dialog,
|
||||||
|
const gchar cblid[],
|
||||||
|
const gchar cbvid[],
|
||||||
|
LayoutIterFunc layout_iterator,
|
||||||
|
ConfigItemProcessFunc
|
||||||
|
layout_handler,
|
||||||
|
GCallback combo_changed_notify);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xkb_layout_chooser_available_language_variants_fill (GladeXML *
|
|
||||||
chooser_dialog);
|
|
||||||
|
|
||||||
static void
|
|
||||||
xkb_layout_chooser_available_country_variants_fill (GladeXML *
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
xkb_layout_chooser_available_language_variants_fill (GladeXML *
|
||||||
chooser_dialog);
|
chooser_dialog);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
xkb_layout_chooser_available_country_variants_fill (GladeXML *
|
||||||
|
chooser_dialog);
|
||||||
|
|
||||||
|
static void
|
||||||
xkb_layout_chooser_add_variant_to_available_country_variants
|
xkb_layout_chooser_add_variant_to_available_country_variants
|
||||||
(XklConfigRegistry * config_registry,
|
(XklConfigRegistry * config_registry,
|
||||||
XklConfigItem * parent_config_item, XklConfigItem * config_item,
|
XklConfigItem * parent_config_item, XklConfigItem * config_item,
|
||||||
|
@ -85,15 +106,31 @@ static void
|
||||||
const gchar *xkb_id =
|
const gchar *xkb_id =
|
||||||
config_item ?
|
config_item ?
|
||||||
gkbd_keyboard_config_merge_items (parent_config_item->name,
|
gkbd_keyboard_config_merge_items (parent_config_item->name,
|
||||||
config_item->
|
config_item->name) :
|
||||||
name) : parent_config_item->
|
parent_config_item->name;
|
||||||
name;
|
|
||||||
|
|
||||||
gtk_list_store_insert_with_values (data->list_store, &iter, -1,
|
if (config_item && g_object_get_data
|
||||||
COMBO_BOX_MODEL_COL_DESCRIPTION,
|
(G_OBJECT (config_item), XCI_PROP_EXTRA_ITEM)) {
|
||||||
utf_variant_name,
|
gchar *buf =
|
||||||
COMBO_BOX_MODEL_COL_XKB_ID,
|
g_strdup_printf ("<i>%s</i>", utf_variant_name);
|
||||||
xkb_id, -1);
|
gtk_list_store_insert_with_values (data->list_store, &iter,
|
||||||
|
-1,
|
||||||
|
COMBO_BOX_MODEL_COL_SORT,
|
||||||
|
utf_variant_name,
|
||||||
|
COMBO_BOX_MODEL_COL_VISIBLE,
|
||||||
|
buf,
|
||||||
|
COMBO_BOX_MODEL_COL_XKB_ID,
|
||||||
|
xkb_id, -1);
|
||||||
|
g_free (buf);
|
||||||
|
} else
|
||||||
|
gtk_list_store_insert_with_values (data->list_store, &iter,
|
||||||
|
-1,
|
||||||
|
COMBO_BOX_MODEL_COL_SORT,
|
||||||
|
utf_variant_name,
|
||||||
|
COMBO_BOX_MODEL_COL_VISIBLE,
|
||||||
|
utf_variant_name,
|
||||||
|
COMBO_BOX_MODEL_COL_XKB_ID,
|
||||||
|
xkb_id, -1);
|
||||||
g_free (utf_variant_name);
|
g_free (utf_variant_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,7 +152,9 @@ xkb_layout_chooser_add_language_to_available_languages (XklConfigRegistry *
|
||||||
list_store)
|
list_store)
|
||||||
{
|
{
|
||||||
gtk_list_store_insert_with_values (list_store, NULL, -1,
|
gtk_list_store_insert_with_values (list_store, NULL, -1,
|
||||||
COMBO_BOX_MODEL_COL_DESCRIPTION,
|
COMBO_BOX_MODEL_COL_SORT,
|
||||||
|
config_item->description,
|
||||||
|
COMBO_BOX_MODEL_COL_VISIBLE,
|
||||||
config_item->description,
|
config_item->description,
|
||||||
COMBO_BOX_MODEL_COL_REAL_ID,
|
COMBO_BOX_MODEL_COL_REAL_ID,
|
||||||
config_item->name, -1);
|
config_item->name, -1);
|
||||||
|
@ -130,7 +169,9 @@ xkb_layout_chooser_add_country_to_available_countries (XklConfigRegistry *
|
||||||
list_store)
|
list_store)
|
||||||
{
|
{
|
||||||
gtk_list_store_insert_with_values (list_store, NULL, -1,
|
gtk_list_store_insert_with_values (list_store, NULL, -1,
|
||||||
COMBO_BOX_MODEL_COL_DESCRIPTION,
|
COMBO_BOX_MODEL_COL_SORT,
|
||||||
|
config_item->description,
|
||||||
|
COMBO_BOX_MODEL_COL_VISIBLE,
|
||||||
config_item->description,
|
config_item->description,
|
||||||
COMBO_BOX_MODEL_COL_REAL_ID,
|
COMBO_BOX_MODEL_COL_REAL_ID,
|
||||||
config_item->name, -1);
|
config_item->name, -1);
|
||||||
|
@ -196,7 +237,8 @@ xkb_layout_chooser_available_language_variants_fill (GladeXML *
|
||||||
GtkTreeIter liter;
|
GtkTreeIter liter;
|
||||||
|
|
||||||
list_store = gtk_list_store_new
|
list_store = gtk_list_store_new
|
||||||
(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
|
(4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
|
||||||
|
G_TYPE_STRING);
|
||||||
|
|
||||||
if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (cbl), &liter)) {
|
if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (cbl), &liter)) {
|
||||||
GtkTreeModel *lm =
|
GtkTreeModel *lm =
|
||||||
|
@ -220,7 +262,7 @@ xkb_layout_chooser_available_language_variants_fill (GladeXML *
|
||||||
/* Turn on sorting after filling the store, since that's faster */
|
/* Turn on sorting after filling the store, since that's faster */
|
||||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE
|
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE
|
||||||
(list_store),
|
(list_store),
|
||||||
COMBO_BOX_MODEL_COL_DESCRIPTION,
|
COMBO_BOX_MODEL_COL_SORT,
|
||||||
GTK_SORT_ASCENDING);
|
GTK_SORT_ASCENDING);
|
||||||
|
|
||||||
gtk_combo_box_set_model (GTK_COMBO_BOX (cbv),
|
gtk_combo_box_set_model (GTK_COMBO_BOX (cbv),
|
||||||
|
@ -238,7 +280,8 @@ xkb_layout_chooser_available_country_variants_fill (GladeXML *
|
||||||
GtkTreeIter liter;
|
GtkTreeIter liter;
|
||||||
|
|
||||||
list_store = gtk_list_store_new
|
list_store = gtk_list_store_new
|
||||||
(3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
|
(4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
|
||||||
|
G_TYPE_STRING);
|
||||||
|
|
||||||
if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (cbl), &liter)) {
|
if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (cbl), &liter)) {
|
||||||
GtkTreeModel *lm =
|
GtkTreeModel *lm =
|
||||||
|
@ -261,7 +304,7 @@ xkb_layout_chooser_available_country_variants_fill (GladeXML *
|
||||||
/* Turn on sorting after filling the store, since that's faster */
|
/* Turn on sorting after filling the store, since that's faster */
|
||||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE
|
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE
|
||||||
(list_store),
|
(list_store),
|
||||||
COMBO_BOX_MODEL_COL_DESCRIPTION,
|
COMBO_BOX_MODEL_COL_SORT,
|
||||||
GTK_SORT_ASCENDING);
|
GTK_SORT_ASCENDING);
|
||||||
|
|
||||||
gtk_combo_box_set_model (GTK_COMBO_BOX (cbv),
|
gtk_combo_box_set_model (GTK_COMBO_BOX (cbv),
|
||||||
|
@ -282,9 +325,11 @@ xkb_layout_chooser_available_layouts_fill (GladeXML *
|
||||||
GtkWidget *cbl = CWID (cblid);
|
GtkWidget *cbl = CWID (cblid);
|
||||||
GtkWidget *cbev = CWID (cbvid);
|
GtkWidget *cbev = CWID (cbvid);
|
||||||
GtkCellRenderer *renderer;
|
GtkCellRenderer *renderer;
|
||||||
GtkListStore *list_store =
|
GtkListStore *list_store;
|
||||||
gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING,
|
|
||||||
G_TYPE_STRING);
|
list_store = gtk_list_store_new
|
||||||
|
(4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
|
||||||
|
G_TYPE_STRING);
|
||||||
|
|
||||||
gtk_combo_box_set_model (GTK_COMBO_BOX (cbl),
|
gtk_combo_box_set_model (GTK_COMBO_BOX (cbl),
|
||||||
GTK_TREE_MODEL (list_store));
|
GTK_TREE_MODEL (list_store));
|
||||||
|
@ -293,15 +338,14 @@ xkb_layout_chooser_available_layouts_fill (GladeXML *
|
||||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cbl), renderer, TRUE);
|
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cbl), renderer, TRUE);
|
||||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (cbl),
|
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (cbl),
|
||||||
renderer, "markup",
|
renderer, "markup",
|
||||||
COMBO_BOX_MODEL_COL_DESCRIPTION,
|
COMBO_BOX_MODEL_COL_VISIBLE, NULL);
|
||||||
NULL);
|
|
||||||
|
|
||||||
layout_iterator (config_registry, layout_handler, list_store);
|
layout_iterator (config_registry, layout_handler, list_store);
|
||||||
|
|
||||||
/* Turn on sorting after filling the model since that's faster */
|
/* Turn on sorting after filling the model since that's faster */
|
||||||
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE
|
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE
|
||||||
(list_store),
|
(list_store),
|
||||||
COMBO_BOX_MODEL_COL_DESCRIPTION,
|
COMBO_BOX_MODEL_COL_SORT,
|
||||||
GTK_SORT_ASCENDING);
|
GTK_SORT_ASCENDING);
|
||||||
|
|
||||||
g_signal_connect_swapped (G_OBJECT (cbl), "changed",
|
g_signal_connect_swapped (G_OBJECT (cbl), "changed",
|
||||||
|
@ -313,8 +357,7 @@ xkb_layout_chooser_available_layouts_fill (GladeXML *
|
||||||
renderer, TRUE);
|
renderer, TRUE);
|
||||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (cbev),
|
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (cbev),
|
||||||
renderer, "markup",
|
renderer, "markup",
|
||||||
COMBO_BOX_MODEL_COL_DESCRIPTION,
|
COMBO_BOX_MODEL_COL_VISIBLE, NULL);
|
||||||
NULL);
|
|
||||||
|
|
||||||
g_signal_connect_swapped (G_OBJECT (cbev), "changed",
|
g_signal_connect_swapped (G_OBJECT (cbev), "changed",
|
||||||
G_CALLBACK
|
G_CALLBACK
|
||||||
|
@ -460,12 +503,17 @@ xkb_layout_choose (GladeXML * dialog)
|
||||||
(xkb_layout_chooser_page_changed),
|
(xkb_layout_chooser_page_changed),
|
||||||
chooser_dialog);
|
chooser_dialog);
|
||||||
|
|
||||||
gtk_combo_box_set_active (CWID ("xkb_countries_available"), 0);
|
gtk_combo_box_set_active (GTK_COMBO_BOX
|
||||||
|
(CWID ("xkb_countries_available")),
|
||||||
|
FALSE);
|
||||||
|
|
||||||
if (gtk_tree_model_iter_n_children
|
if (gtk_tree_model_iter_n_children
|
||||||
(gtk_combo_box_get_model (GTK_COMBO_BOX (lang_chooser)),
|
(gtk_combo_box_get_model (GTK_COMBO_BOX (lang_chooser)),
|
||||||
NULL)) {
|
NULL)) {
|
||||||
gtk_combo_box_set_active (CWID ("xkb_languages_available"), 0);
|
gtk_combo_box_set_active (GTK_COMBO_BOX
|
||||||
|
(CWID
|
||||||
|
("xkb_languages_available")),
|
||||||
|
FALSE);
|
||||||
} else {
|
} else {
|
||||||
/* If language info is not available - remove the corresponding tab,
|
/* If language info is not available - remove the corresponding tab,
|
||||||
pretend there is no notebook at all */
|
pretend there is no notebook at all */
|
||||||
|
@ -512,7 +560,7 @@ xkb_layout_choose (GladeXML * dialog)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
xkb_layout_preview_update (chooser_dialog);
|
xkb_layout_preview_update (chooser_dialog);
|
||||||
gtk_dialog_run (GTK_DIALOG (chooser));
|
gtk_dialog_run (GTK_DIALOG (chooser));
|
||||||
gtk_widget_destroy (chooser);
|
gtk_widget_destroy (chooser);
|
||||||
}
|
}
|
||||||
|
|
|
@ -180,7 +180,7 @@ CAPPLET_LIBS="$CAPPLET_LIBS $XCURSOR_LIBS"
|
||||||
dnl ==============
|
dnl ==============
|
||||||
dnl gswitchit
|
dnl gswitchit
|
||||||
dnl ==============
|
dnl ==============
|
||||||
PKG_CHECK_MODULES(LIBGNOMEKBD, [libgnomekbd >= 2.21.4.1 libxklavier >= 3.6])
|
PKG_CHECK_MODULES(LIBGNOMEKBD, [libgnomekbd >= 2.21.4.1 libxklavier >= 4.0])
|
||||||
AC_SUBST(LIBGNOMEKBD_CFLAGS)
|
AC_SUBST(LIBGNOMEKBD_CFLAGS)
|
||||||
AC_SUBST(LIBGNOMEKBD_LIBS)
|
AC_SUBST(LIBGNOMEKBD_LIBS)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue