diff options
author | Sergey Udaltsov <svu@gnome.org> | 2008-04-23 21:28:38 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2008-04-23 21:28:38 +0000 |
commit | 13ad8874626adb384737bacd5cae6193aa284fdd (patch) | |
tree | c739d949aba05ba753c0dd81d953ecd9dced0103 /libxklavier/xklavier_config_iso.c | |
parent | 1fda0d3b54c3e5c4518c0b2335060509eed6985c (diff) | |
download | libxklavier-13ad8874626adb384737bacd5cae6193aa284fdd.tar.gz |
finished ISO browsing functionality
Diffstat (limited to 'libxklavier/xklavier_config_iso.c')
-rw-r--r-- | libxklavier/xklavier_config_iso.c | 93 |
1 files changed, 66 insertions, 27 deletions
diff --git a/libxklavier/xklavier_config_iso.c b/libxklavier/xklavier_config_iso.c index 10a520a..b6efb26 100644 --- a/libxklavier/xklavier_config_iso.c +++ b/libxklavier/xklavier_config_iso.c @@ -300,42 +300,32 @@ xkl_config_registry_foreach_language(XklConfigRegistry * } void -xkl_config_registry_foreach_country_variant(XklConfigRegistry * - config, - const gchar * - country_code, - TwoConfigItemsProcessFunc - func, gpointer data) +xkl_config_registry_foreach_iso_variant(XklConfigRegistry * + config, + const gchar * + iso_code, + TwoConfigItemsProcessFunc + func, gpointer data, + const gchar * layout_xpath_exprs[], + const gchar * + variant_xpath_exprs[], + const gboolean + should_layout_id_be_lowered[]) { - const gchar *layout_xpath_exprs[] = { - XKBCR_LAYOUT_PATH "[configItem/name = '%s']", - XKBCR_LAYOUT_PATH - "[configItem/countryList/iso3166Id = '%s']", - NULL - }; - const gboolean are_low_ids[] = { TRUE, FALSE }; - - const gchar *variant_xpath_exprs[] = { - XKBCR_VARIANT_PATH - "[configItem/countryList/iso3166Id = '%s']", - NULL - }; - - xmlXPathObjectPtr xpath_obj; const gchar **xpath_expr; - const gboolean *is_low_id = are_low_ids; + const gboolean *is_low_id = should_layout_id_be_lowered; if (!xkl_config_registry_is_initialized(config)) return; for (xpath_expr = layout_xpath_exprs; *xpath_expr; xpath_expr++, is_low_id++) { - gchar *acc = *is_low_id ? g_ascii_strdown(country_code, + gchar *aic = *is_low_id ? g_ascii_strdown(iso_code, -1) : - g_strdup(country_code); - gchar *xpe = g_strdup_printf(*xpath_expr, acc); - g_free(acc); + g_strdup(iso_code); + gchar *xpe = g_strdup_printf(*xpath_expr, aic); + g_free(aic); xpath_obj = xmlXPathEval((unsigned char *) xpe, xkl_config_registry_priv(config, @@ -361,7 +351,7 @@ xkl_config_registry_foreach_country_variant(XklConfigRegistry * } for (xpath_expr = variant_xpath_exprs; *xpath_expr; xpath_expr++) { - gchar *xpe = g_strdup_printf(*xpath_expr, country_code); + gchar *xpe = g_strdup_printf(*xpath_expr, iso_code); xpath_obj = xmlXPathEval((unsigned char *) xpe, xkl_config_registry_priv(config, @@ -393,6 +383,36 @@ xkl_config_registry_foreach_country_variant(XklConfigRegistry * } void +xkl_config_registry_foreach_country_variant(XklConfigRegistry * + config, + const gchar * + country_code, + TwoConfigItemsProcessFunc + func, gpointer data) +{ + const gchar *layout_xpath_exprs[] = { + XKBCR_LAYOUT_PATH "[configItem/name = '%s']", + XKBCR_LAYOUT_PATH + "[configItem/countryList/iso3166Id = '%s']", + NULL + }; + const gboolean should_layout_id_be_lowered[] = { TRUE, FALSE }; + + const gchar *variant_xpath_exprs[] = { + XKBCR_VARIANT_PATH + "[configItem/countryList/iso3166Id = '%s']", + NULL + }; + + xkl_config_registry_foreach_iso_variant(config, + country_code, + func, data, + layout_xpath_exprs, + variant_xpath_exprs, + should_layout_id_be_lowered); +} + +void xkl_config_registry_foreach_language_variant(XklConfigRegistry * config, const gchar * @@ -400,4 +420,23 @@ xkl_config_registry_foreach_language_variant(XklConfigRegistry * TwoConfigItemsProcessFunc func, gpointer data) { + const gchar *layout_xpath_exprs[] = { + XKBCR_LAYOUT_PATH + "[configItem/languageList/iso639Id = '%s']", + NULL + }; + const gboolean should_layout_id_be_lowered[] = { FALSE }; + + const gchar *variant_xpath_exprs[] = { + XKBCR_VARIANT_PATH + "[configItem/languageList/iso639Id = '%s']", + NULL + }; + + xkl_config_registry_foreach_iso_variant(config, + language_code, + func, data, + layout_xpath_exprs, + variant_xpath_exprs, + should_layout_id_be_lowered); } |