dependency on libxklavier 4.0, optional load/display of extra layouts

This commit is contained in:
Sergey V. Udaltsov 2009-06-29 01:04:10 +01:00
parent 1c4a3a3b0e
commit 1e58245df0
5 changed files with 105 additions and 40 deletions

View file

@ -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>
* font-viewer/font-thumbnailer.c (main): Timeout value was supposed

View file

@ -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 ====================
2009-02-27 Jens Granseuer <jensgr@gmx.net>

View file

@ -42,6 +42,7 @@ XklEngine *engine;
XklConfigRegistry *config_registry;
GkbdKeyboardConfig initial_config;
GkbdDesktopConfig desktop_config;
GConfClient *xkb_gconf_client;
@ -114,6 +115,7 @@ setup_model_entry (GladeXML * dialog)
static void
cleanup_xkb_tabs (GladeXML * dialog)
{
gkbd_desktop_config_term (&desktop_config);
gkbd_keyboard_config_term (&initial_config);
g_object_unref (G_OBJECT (config_registry));
config_registry = NULL;
@ -155,7 +157,12 @@ setup_xkb_tabs (GladeXML * dialog, GConfChangeSet * changeset)
engine = xkl_engine_get_instance (GDK_DISPLAY ());
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,
engine);

View file

@ -40,7 +40,8 @@
#define DEFAULT_VARIANT_ID "__default__"
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_REAL_ID
};
@ -54,20 +55,40 @@ typedef struct {
} AddVariantData;
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);
GCallback combo_changed_notify);
static void
xkb_layout_chooser_available_language_variants_fill (GladeXML *
chooser_dialog);
static void
xkb_layout_chooser_available_country_variants_fill (GladeXML *
chooser_dialog);
@ -85,12 +106,28 @@ static void
const gchar *xkb_id =
config_item ?
gkbd_keyboard_config_merge_items (parent_config_item->name,
config_item->
name) : parent_config_item->
name;
config_item->name) :
parent_config_item->name;
gtk_list_store_insert_with_values (data->list_store, &iter, -1,
COMBO_BOX_MODEL_COL_DESCRIPTION,
if (config_item && g_object_get_data
(G_OBJECT (config_item), XCI_PROP_EXTRA_ITEM)) {
gchar *buf =
g_strdup_printf ("<i>%s</i>", utf_variant_name);
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);
@ -115,7 +152,9 @@ xkb_layout_chooser_add_language_to_available_languages (XklConfigRegistry *
list_store)
{
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,
COMBO_BOX_MODEL_COL_REAL_ID,
config_item->name, -1);
@ -130,7 +169,9 @@ xkb_layout_chooser_add_country_to_available_countries (XklConfigRegistry *
list_store)
{
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,
COMBO_BOX_MODEL_COL_REAL_ID,
config_item->name, -1);
@ -196,7 +237,8 @@ xkb_layout_chooser_available_language_variants_fill (GladeXML *
GtkTreeIter liter;
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)) {
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 */
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE
(list_store),
COMBO_BOX_MODEL_COL_DESCRIPTION,
COMBO_BOX_MODEL_COL_SORT,
GTK_SORT_ASCENDING);
gtk_combo_box_set_model (GTK_COMBO_BOX (cbv),
@ -238,7 +280,8 @@ xkb_layout_chooser_available_country_variants_fill (GladeXML *
GtkTreeIter liter;
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)) {
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 */
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE
(list_store),
COMBO_BOX_MODEL_COL_DESCRIPTION,
COMBO_BOX_MODEL_COL_SORT,
GTK_SORT_ASCENDING);
gtk_combo_box_set_model (GTK_COMBO_BOX (cbv),
@ -282,8 +325,10 @@ xkb_layout_chooser_available_layouts_fill (GladeXML *
GtkWidget *cbl = CWID (cblid);
GtkWidget *cbev = CWID (cbvid);
GtkCellRenderer *renderer;
GtkListStore *list_store =
gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING,
GtkListStore *list_store;
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),
@ -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_set_attributes (GTK_CELL_LAYOUT (cbl),
renderer, "markup",
COMBO_BOX_MODEL_COL_DESCRIPTION,
NULL);
COMBO_BOX_MODEL_COL_VISIBLE, NULL);
layout_iterator (config_registry, layout_handler, list_store);
/* Turn on sorting after filling the model since that's faster */
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE
(list_store),
COMBO_BOX_MODEL_COL_DESCRIPTION,
COMBO_BOX_MODEL_COL_SORT,
GTK_SORT_ASCENDING);
g_signal_connect_swapped (G_OBJECT (cbl), "changed",
@ -313,8 +357,7 @@ xkb_layout_chooser_available_layouts_fill (GladeXML *
renderer, TRUE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (cbev),
renderer, "markup",
COMBO_BOX_MODEL_COL_DESCRIPTION,
NULL);
COMBO_BOX_MODEL_COL_VISIBLE, NULL);
g_signal_connect_swapped (G_OBJECT (cbev), "changed",
G_CALLBACK
@ -460,12 +503,17 @@ xkb_layout_choose (GladeXML * dialog)
(xkb_layout_chooser_page_changed),
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
(gtk_combo_box_get_model (GTK_COMBO_BOX (lang_chooser)),
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 {
/* If language info is not available - remove the corresponding tab,
pretend there is no notebook at all */

View file

@ -180,7 +180,7 @@ CAPPLET_LIBS="$CAPPLET_LIBS $XCURSOR_LIBS"
dnl ==============
dnl gswitchit
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_LIBS)