summaryrefslogtreecommitdiff
path: root/capplet
diff options
context:
space:
mode:
authorSergey V. Udaltsov <svu@src.gnome.org>2007-10-08 17:13:57 +0000
committerSergey V. Udaltsov <svu@src.gnome.org>2007-10-08 17:13:57 +0000
commitf3ee9cecd6541123c9b2c65055cae9500559abfb (patch)
tree84b96ac97f4bdc157532485bd037f883c7424889 /capplet
parenta5f5722918b2ae845f312bbb74de4a5fe2909eb4 (diff)
downloadlibgnomekbd-f3ee9cecd6541123c9b2c65055cae9500559abfb.tar.gz
getting rid of stupid dbus client-server
svn path=/trunk/; revision=178
Diffstat (limited to 'capplet')
-rw-r--r--capplet/.indent.pro2
-rw-r--r--capplet/gkbd-indicator-plugins-capplet.c608
-rw-r--r--capplet/gkbd-indicator-plugins-capplet.h22
3 files changed, 353 insertions, 279 deletions
diff --git a/capplet/.indent.pro b/capplet/.indent.pro
new file mode 100644
index 0000000..bdff074
--- /dev/null
+++ b/capplet/.indent.pro
@@ -0,0 +1,2 @@
+-kr -i8 -pcs -lps -psl
+
diff --git a/capplet/gkbd-indicator-plugins-capplet.c b/capplet/gkbd-indicator-plugins-capplet.c
index d2e0f82..e05ca67 100644
--- a/capplet/gkbd-indicator-plugins-capplet.c
+++ b/capplet/gkbd-indicator-plugins-capplet.c
@@ -36,61 +36,63 @@ static GMainLoop *loop;
extern void
CappletFillActivePluginList (GkbdIndicatorPluginsCapplet * gipc)
{
- GtkWidget *activePlugins = CappletGetGladeWidget (gipc, "activePlugins");
- GtkListStore *activePluginsModel =
- GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (activePlugins)));
- GSList *pluginPathNode = gipc->applet_cfg.enabled_plugins;
- GHashTable *allPluginRecs = gipc->plugin_manager.all_plugin_recs;
-
- gtk_list_store_clear (activePluginsModel);
- if (allPluginRecs == NULL)
- return;
-
- while (pluginPathNode != NULL)
- {
- GtkTreeIter iter;
- const char *fullPath = (const char *) pluginPathNode->data;
- const GkbdIndicatorPlugin *plugin =
- gkbd_indicator_plugin_manager_get_plugin (&gipc->plugin_manager,
- fullPath);
- if (plugin != NULL)
- {
- gtk_list_store_append (activePluginsModel, &iter);
- gtk_list_store_set (activePluginsModel, &iter,
- NAME_COLUMN, plugin->name,
- FULLPATH_COLUMN, fullPath, -1);
+ GtkWidget *activePlugins =
+ CappletGetGladeWidget (gipc, "activePlugins");
+ GtkListStore *activePluginsModel =
+ GTK_LIST_STORE (gtk_tree_view_get_model
+ (GTK_TREE_VIEW (activePlugins)));
+ GSList *pluginPathNode = gipc->applet_cfg.enabled_plugins;
+ GHashTable *allPluginRecs = gipc->plugin_manager.all_plugin_recs;
+
+ gtk_list_store_clear (activePluginsModel);
+ if (allPluginRecs == NULL)
+ return;
+
+ while (pluginPathNode != NULL) {
+ GtkTreeIter iter;
+ const char *fullPath = (const char *) pluginPathNode->data;
+ const GkbdIndicatorPlugin *plugin =
+ gkbd_indicator_plugin_manager_get_plugin (&gipc->
+ plugin_manager,
+ fullPath);
+ if (plugin != NULL) {
+ gtk_list_store_append (activePluginsModel, &iter);
+ gtk_list_store_set (activePluginsModel, &iter,
+ NAME_COLUMN, plugin->name,
+ FULLPATH_COLUMN, fullPath, -1);
+ }
+
+ pluginPathNode = g_slist_next (pluginPathNode);
}
-
- pluginPathNode = g_slist_next (pluginPathNode);
- }
}
static char *
CappletGetSelectedActivePluginPath (GkbdIndicatorPluginsCapplet * gipc)
{
- GtkTreeView *pluginsList =
- GTK_TREE_VIEW (CappletGetGladeWidget (gipc, "activePlugins"));
- return CappletGetSelectedPluginPath (pluginsList, gipc);
+ GtkTreeView *pluginsList =
+ GTK_TREE_VIEW (CappletGetGladeWidget (gipc, "activePlugins"));
+ return CappletGetSelectedPluginPath (pluginsList, gipc);
}
char *
CappletGetSelectedPluginPath (GtkTreeView * pluginsList,
GkbdIndicatorPluginsCapplet * gipc)
{
- GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (pluginsList));
- GtkTreeSelection *selection =
- gtk_tree_view_get_selection (GTK_TREE_VIEW (pluginsList));
- GtkTreeIter selectedIter;
-
- if (gtk_tree_selection_get_selected (selection, NULL, &selectedIter))
- {
- char *fullPath = NULL;
-
- gtk_tree_model_get (model, &selectedIter,
- FULLPATH_COLUMN, &fullPath, -1);
- return fullPath;
- }
- return NULL;
+ GtkTreeModel *model =
+ gtk_tree_view_get_model (GTK_TREE_VIEW (pluginsList));
+ GtkTreeSelection *selection =
+ gtk_tree_view_get_selection (GTK_TREE_VIEW (pluginsList));
+ GtkTreeIter selectedIter;
+
+ if (gtk_tree_selection_get_selected
+ (selection, NULL, &selectedIter)) {
+ char *fullPath = NULL;
+
+ gtk_tree_model_get (model, &selectedIter,
+ FULLPATH_COLUMN, &fullPath, -1);
+ return fullPath;
+ }
+ return NULL;
}
static void
@@ -98,286 +100,356 @@ CappletActivePluginsSelectionChanged (GtkTreeSelection *
selection,
GkbdIndicatorPluginsCapplet * gipc)
{
- GtkWidget *activePlugins = CappletGetGladeWidget (gipc, "activePlugins");
- GtkTreeModel *model =
- gtk_tree_view_get_model (GTK_TREE_VIEW (activePlugins));
- GtkTreeIter selectedIter;
- gboolean isAnythingSelected = FALSE;
- gboolean isFirstSelected = FALSE;
- gboolean isLastSelected = FALSE;
- gboolean hasConfigurationUi = FALSE;
- GtkWidget *btnRemove = CappletGetGladeWidget (gipc, "btnRemove");
- GtkWidget *btnUp = CappletGetGladeWidget (gipc, "btnUp");
- GtkWidget *btnDown = CappletGetGladeWidget (gipc, "btnDown");
- GtkWidget *btnProperties = CappletGetGladeWidget (gipc, "btnProperties");
- GtkWidget *lblDescription = CappletGetGladeWidget (gipc, "lblDescription");
-
- gtk_label_set_text (GTK_LABEL (lblDescription),
- g_strconcat ("<small><i>",
- _("No description."),
- "</i></small>", NULL));
- gtk_label_set_use_markup (GTK_LABEL (lblDescription), TRUE);
-
- if (gtk_tree_selection_get_selected (selection, NULL, &selectedIter))
- {
- int counter = gtk_tree_model_iter_n_children (model, NULL);
- GtkTreePath *treePath = gtk_tree_model_get_path (model, &selectedIter);
- gint *indices = gtk_tree_path_get_indices (treePath);
- char *fullPath = CappletGetSelectedActivePluginPath (gipc);
- const GkbdIndicatorPlugin *plugin =
- gkbd_indicator_plugin_manager_get_plugin (&gipc->plugin_manager,
- fullPath);
-
- isAnythingSelected = TRUE;
-
- isFirstSelected = indices[0] == 0;
- isLastSelected = indices[0] == counter - 1;
-
- if (plugin != NULL)
- {
- hasConfigurationUi =
- (plugin->configure_properties_callback != NULL);
- gtk_label_set_text (GTK_LABEL (lblDescription),
- g_strconcat ("<small><i>",
- plugin->
- description,
- "</i></small>", NULL));
- gtk_label_set_use_markup (GTK_LABEL (lblDescription), TRUE);
+ GtkWidget *activePlugins =
+ CappletGetGladeWidget (gipc, "activePlugins");
+ GtkTreeModel *model =
+ gtk_tree_view_get_model (GTK_TREE_VIEW (activePlugins));
+ GtkTreeIter selectedIter;
+ gboolean isAnythingSelected = FALSE;
+ gboolean isFirstSelected = FALSE;
+ gboolean isLastSelected = FALSE;
+ gboolean hasConfigurationUi = FALSE;
+ GtkWidget *btnRemove = CappletGetGladeWidget (gipc, "btnRemove");
+ GtkWidget *btnUp = CappletGetGladeWidget (gipc, "btnUp");
+ GtkWidget *btnDown = CappletGetGladeWidget (gipc, "btnDown");
+ GtkWidget *btnProperties =
+ CappletGetGladeWidget (gipc, "btnProperties");
+ GtkWidget *lblDescription =
+ CappletGetGladeWidget (gipc, "lblDescription");
+
+ gtk_label_set_text (GTK_LABEL (lblDescription),
+ g_strconcat ("<small><i>",
+ _("No description."),
+ "</i></small>", NULL));
+ gtk_label_set_use_markup (GTK_LABEL (lblDescription), TRUE);
+
+ if (gtk_tree_selection_get_selected
+ (selection, NULL, &selectedIter)) {
+ int counter = gtk_tree_model_iter_n_children (model, NULL);
+ GtkTreePath *treePath =
+ gtk_tree_model_get_path (model, &selectedIter);
+ gint *indices = gtk_tree_path_get_indices (treePath);
+ char *fullPath = CappletGetSelectedActivePluginPath (gipc);
+ const GkbdIndicatorPlugin *plugin =
+ gkbd_indicator_plugin_manager_get_plugin (&gipc->
+ plugin_manager,
+ fullPath);
+
+ isAnythingSelected = TRUE;
+
+ isFirstSelected = indices[0] == 0;
+ isLastSelected = indices[0] == counter - 1;
+
+ if (plugin != NULL) {
+ hasConfigurationUi =
+ (plugin->configure_properties_callback !=
+ NULL);
+ gtk_label_set_text (GTK_LABEL (lblDescription),
+ g_strconcat ("<small><i>",
+ plugin->
+ description,
+ "</i></small>",
+ NULL));
+ gtk_label_set_use_markup (GTK_LABEL
+ (lblDescription), TRUE);
+ }
+ g_free (fullPath);
+
+ gtk_tree_path_free (treePath);
}
- g_free (fullPath);
-
- gtk_tree_path_free (treePath);
- }
- gtk_widget_set_sensitive (btnRemove, isAnythingSelected);
- gtk_widget_set_sensitive (btnUp, isAnythingSelected && !isFirstSelected);
- gtk_widget_set_sensitive (btnDown, isAnythingSelected && !isLastSelected);
- gtk_widget_set_sensitive (btnProperties, isAnythingSelected
- && hasConfigurationUi);
+ gtk_widget_set_sensitive (btnRemove, isAnythingSelected);
+ gtk_widget_set_sensitive (btnUp, isAnythingSelected
+ && !isFirstSelected);
+ gtk_widget_set_sensitive (btnDown, isAnythingSelected
+ && !isLastSelected);
+ gtk_widget_set_sensitive (btnProperties, isAnythingSelected
+ && hasConfigurationUi);
}
static void
-CappletPromotePlugin (GtkWidget * btnUp, GkbdIndicatorPluginsCapplet * gipc)
+CappletPromotePlugin (GtkWidget * btnUp,
+ GkbdIndicatorPluginsCapplet * gipc)
{
- char *fullPath = CappletGetSelectedActivePluginPath (gipc);
- if (fullPath != NULL)
- {
- gkbd_indicator_plugin_manager_promote_plugin (&gipc->
- plugin_manager,
- gipc->applet_cfg.
- enabled_plugins,
- fullPath);
- g_free (fullPath);
- CappletFillActivePluginList (gipc);
- gkbd_indicator_config_save_to_gconf (&gipc->applet_cfg);
- }
+ char *fullPath = CappletGetSelectedActivePluginPath (gipc);
+ if (fullPath != NULL) {
+ gkbd_indicator_plugin_manager_promote_plugin (&gipc->
+ plugin_manager,
+ gipc->
+ applet_cfg.
+ enabled_plugins,
+ fullPath);
+ g_free (fullPath);
+ CappletFillActivePluginList (gipc);
+ gkbd_indicator_config_save_to_gconf (&gipc->applet_cfg);
+ }
}
static void
CappletDemotePlugin (GtkWidget * btnUp, GkbdIndicatorPluginsCapplet * gipc)
{
- char *fullPath = CappletGetSelectedActivePluginPath (gipc);
- if (fullPath != NULL)
- {
- gkbd_indicator_plugin_manager_demote_plugin (&gipc->
- plugin_manager,
- gipc->applet_cfg.
- enabled_plugins, fullPath);
- g_free (fullPath);
- CappletFillActivePluginList (gipc);
- gkbd_indicator_config_save_to_gconf (&gipc->applet_cfg);
- }
+ char *fullPath = CappletGetSelectedActivePluginPath (gipc);
+ if (fullPath != NULL) {
+ gkbd_indicator_plugin_manager_demote_plugin (&gipc->
+ plugin_manager,
+ gipc->
+ applet_cfg.
+ enabled_plugins,
+ fullPath);
+ g_free (fullPath);
+ CappletFillActivePluginList (gipc);
+ gkbd_indicator_config_save_to_gconf (&gipc->applet_cfg);
+ }
}
static void
CappletDisablePlugin (GtkWidget * btnRemove,
GkbdIndicatorPluginsCapplet * gipc)
{
- char *fullPath = CappletGetSelectedActivePluginPath (gipc);
- if (fullPath != NULL)
- {
- gkbd_indicator_plugin_manager_disable_plugin (&gipc->
- plugin_manager,
- &gipc->
- applet_cfg.
- enabled_plugins,
- fullPath);
- g_free (fullPath);
- CappletFillActivePluginList (gipc);
- gkbd_indicator_config_save_to_gconf (&gipc->applet_cfg);
- }
+ char *fullPath = CappletGetSelectedActivePluginPath (gipc);
+ if (fullPath != NULL) {
+ gkbd_indicator_plugin_manager_disable_plugin (&gipc->
+ plugin_manager,
+ &gipc->
+ applet_cfg.
+ enabled_plugins,
+ fullPath);
+ g_free (fullPath);
+ CappletFillActivePluginList (gipc);
+ gkbd_indicator_config_save_to_gconf (&gipc->applet_cfg);
+ }
}
static void
CappletConfigurePlugin (GtkWidget * btnRemove,
GkbdIndicatorPluginsCapplet * gipc)
{
- char *fullPath = CappletGetSelectedActivePluginPath (gipc);
- if (fullPath != NULL)
- {
- gkbd_indicator_plugin_manager_configure_plugin (&gipc->
- plugin_manager,
- &gipc->
- plugin_container,
- fullPath,
- GTK_WINDOW
- (gipc->capplet));
- g_free (fullPath);
- }
+ char *fullPath = CappletGetSelectedActivePluginPath (gipc);
+ if (fullPath != NULL) {
+ gkbd_indicator_plugin_manager_configure_plugin (&gipc->
+ plugin_manager,
+ &gipc->
+ plugin_container,
+ fullPath,
+ GTK_WINDOW
+ (gipc->
+ capplet));
+ g_free (fullPath);
+ }
}
static void
CappletResponse (GtkDialog * dialog, gint response)
{
- if (response == GTK_RESPONSE_HELP)
- {
- GError *error = NULL;
- gnome_help_display_on_screen ("gkbd", "gkb-indicator-applet-plugins",
- gtk_widget_get_screen (GTK_WIDGET
- (dialog)), &error);
- return;
- }
-
- g_main_loop_quit (loop);
+ if (response == GTK_RESPONSE_HELP) {
+ GError *error = NULL;
+ gnome_help_display_on_screen ("gkbd",
+ "gkb-indicator-applet-plugins",
+ gtk_widget_get_screen
+ (GTK_WIDGET (dialog)),
+ &error);
+ return;
+ }
+
+ g_main_loop_quit (loop);
}
static void
CappletSetup (GkbdIndicatorPluginsCapplet * gipc)
{
- GladeXML *data;
- GtkWidget *capplet;
- GtkWidget *activePlugins;
- GtkTreeModel *activePluginsModel;
- GtkCellRenderer *renderer =
- GTK_CELL_RENDERER (gtk_cell_renderer_text_new ());
- GtkTreeViewColumn *column =
- gtk_tree_view_column_new_with_attributes (NULL, renderer,
- "text", 0,
- NULL);
- GtkTreeSelection *selection;
- glade_gnome_init ();
-
- gtk_window_set_default_icon_name ("gkbd-indicator-plugins-capplet");
-
- /* default domain! */
- data =
- glade_xml_new (GLADEDIR "/gkbd-indicator-plugins.glade",
- "gkbd_indicator_plugins", NULL);
- gipc->capplet = capplet =
- glade_xml_get_widget (data, "gkbd_indicator_plugins");
-
- gtk_object_set_data (GTK_OBJECT (capplet), "gladeData", data);
- g_signal_connect_swapped (GTK_OBJECT (capplet),
- "destroy", G_CALLBACK (g_object_unref), data);
- g_signal_connect_swapped (G_OBJECT (capplet), "unrealize",
- G_CALLBACK (g_main_loop_quit), loop);
-
- g_signal_connect (GTK_OBJECT (capplet),
- "response", G_CALLBACK (CappletResponse), NULL);
-
- glade_xml_signal_connect_data (data, "on_btnUp_clicked",
- GTK_SIGNAL_FUNC
- (CappletPromotePlugin), gipc);
- glade_xml_signal_connect_data (data,
- "on_btnDown_clicked",
- GTK_SIGNAL_FUNC (CappletDemotePlugin), gipc);
- glade_xml_signal_connect_data (data,
- "on_btnAdd_clicked",
- GTK_SIGNAL_FUNC (CappletEnablePlugin), gipc);
- glade_xml_signal_connect_data (data,
- "on_btnRemove_clicked",
- GTK_SIGNAL_FUNC
- (CappletDisablePlugin), gipc);
- glade_xml_signal_connect_data (data,
- "on_btnProperties_clicked",
- GTK_SIGNAL_FUNC
- (CappletConfigurePlugin), gipc);
-
- activePlugins = CappletGetGladeWidget (gipc, "activePlugins");
- activePluginsModel =
- GTK_TREE_MODEL (gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING));
- gtk_tree_view_set_model (GTK_TREE_VIEW (activePlugins), activePluginsModel);
- gtk_tree_view_append_column (GTK_TREE_VIEW (activePlugins), column);
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (activePlugins));
- gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
- g_signal_connect (G_OBJECT (selection), "changed",
- G_CALLBACK (CappletActivePluginsSelectionChanged), gipc);
- CappletFillActivePluginList (gipc);
- CappletActivePluginsSelectionChanged (selection, gipc);
- gtk_widget_show_all (capplet);
+ GladeXML *data;
+ GtkWidget *capplet;
+ GtkWidget *activePlugins;
+ GtkTreeModel *activePluginsModel;
+ GtkCellRenderer *renderer =
+ GTK_CELL_RENDERER (gtk_cell_renderer_text_new ());
+ GtkTreeViewColumn *column =
+ gtk_tree_view_column_new_with_attributes (NULL, renderer,
+ "text", 0,
+ NULL);
+ GtkTreeSelection *selection;
+ glade_gnome_init ();
+
+ gtk_window_set_default_icon_name
+ ("gkbd-indicator-plugins-capplet");
+
+ /* default domain! */
+ data =
+ glade_xml_new (GLADEDIR "/gkbd-indicator-plugins.glade",
+ "gkbd_indicator_plugins", NULL);
+ gipc->capplet = capplet =
+ glade_xml_get_widget (data, "gkbd_indicator_plugins");
+
+ gtk_object_set_data (GTK_OBJECT (capplet), "gladeData", data);
+ g_signal_connect_swapped (GTK_OBJECT (capplet),
+ "destroy", G_CALLBACK (g_object_unref),
+ data);
+ g_signal_connect_swapped (G_OBJECT (capplet), "unrealize",
+ G_CALLBACK (g_main_loop_quit), loop);
+
+ g_signal_connect (GTK_OBJECT (capplet),
+ "response", G_CALLBACK (CappletResponse), NULL);
+
+ glade_xml_signal_connect_data (data, "on_btnUp_clicked",
+ GTK_SIGNAL_FUNC
+ (CappletPromotePlugin), gipc);
+ glade_xml_signal_connect_data (data,
+ "on_btnDown_clicked",
+ GTK_SIGNAL_FUNC
+ (CappletDemotePlugin), gipc);
+ glade_xml_signal_connect_data (data, "on_btnAdd_clicked",
+ GTK_SIGNAL_FUNC
+ (CappletEnablePlugin), gipc);
+ glade_xml_signal_connect_data (data, "on_btnRemove_clicked",
+ GTK_SIGNAL_FUNC
+ (CappletDisablePlugin), gipc);
+ glade_xml_signal_connect_data (data, "on_btnProperties_clicked",
+ GTK_SIGNAL_FUNC
+ (CappletConfigurePlugin), gipc);
+
+ activePlugins = CappletGetGladeWidget (gipc, "activePlugins");
+ activePluginsModel =
+ GTK_TREE_MODEL (gtk_list_store_new
+ (2, G_TYPE_STRING, G_TYPE_STRING));
+ gtk_tree_view_set_model (GTK_TREE_VIEW (activePlugins),
+ activePluginsModel);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (activePlugins),
+ column);
+ selection =
+ gtk_tree_view_get_selection (GTK_TREE_VIEW (activePlugins));
+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+ g_signal_connect (G_OBJECT (selection), "changed",
+ G_CALLBACK
+ (CappletActivePluginsSelectionChanged), gipc);
+ CappletFillActivePluginList (gipc);
+ CappletActivePluginsSelectionChanged (selection, gipc);
+ gtk_widget_show_all (capplet);
}
int
main (int argc, char **argv)
{
- GkbdIndicatorPluginsCapplet gipc;
-
- GError *gconf_error = NULL;
- GConfClient *confClient;
-
- bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
- textdomain (GETTEXT_PACKAGE);
- memset (&gipc, 0, sizeof (gipc));
- gnome_program_init ("gkbd", VERSION,
- LIBGNOMEUI_MODULE, argc, argv,
- GNOME_PROGRAM_STANDARD_PROPERTIES, NULL);
- if (!gconf_init (argc, argv, &gconf_error))
- {
- g_warning (_("Failed to init GConf: %s\n"), gconf_error->message);
- g_error_free (gconf_error);
- return 1;
- }
- gconf_error = NULL;
- /*GkbdIndicatorInstallGlibLogAppender( ); */
- gipc.engine = xkl_engine_get_instance (GDK_DISPLAY ());
- gipc.config_registry = xkl_config_registry_get_instance (gipc.engine);
+ GkbdIndicatorPluginsCapplet gipc;
+
+ GError *gconf_error = NULL;
+ GConfClient *confClient;
+
+ bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+ textdomain (GETTEXT_PACKAGE);
+ memset (&gipc, 0, sizeof (gipc));
+ gnome_program_init ("gkbd", VERSION,
+ LIBGNOMEUI_MODULE, argc, argv,
+ GNOME_PROGRAM_STANDARD_PROPERTIES, NULL);
+ if (!gconf_init (argc, argv, &gconf_error)) {
+ g_warning (_("Failed to init GConf: %s\n"),
+ gconf_error->message);
+ g_error_free (gconf_error);
+ return 1;
+ }
+ gconf_error = NULL;
+ /*GkbdIndicatorInstallGlibLogAppender( ); */
+ gipc.engine = xkl_engine_get_instance (GDK_DISPLAY ());
+ gipc.config_registry =
+ xkl_config_registry_get_instance (gipc.engine);
- confClient = gconf_client_get_default ();
- gkbd_indicator_plugin_container_init (&gipc.plugin_container, confClient);
- g_object_unref (confClient);
+ confClient = gconf_client_get_default ();
+ gkbd_indicator_plugin_container_init (&gipc.plugin_container,
+ confClient);
+ g_object_unref (confClient);
- gkbd_keyboard_config_init (&gipc.kbd_cfg, confClient, gipc.engine);
- gkbd_keyboard_config_init (&initialSysKbdConfig, confClient, gipc.engine);
+ gkbd_keyboard_config_init (&gipc.kbd_cfg, confClient, gipc.engine);
+ gkbd_keyboard_config_init (&initialSysKbdConfig, confClient,
+ gipc.engine);
- gkbd_indicator_config_init (&gipc.applet_cfg, confClient, gipc.engine);
+ gkbd_indicator_config_init (&gipc.applet_cfg, confClient,
+ gipc.engine);
- gkbd_indicator_plugin_manager_init (&gipc.plugin_manager);
+ gkbd_indicator_plugin_manager_init (&gipc.plugin_manager);
- gkbd_keyboard_config_load_from_x_initial (&initialSysKbdConfig, NULL);
- gkbd_keyboard_config_load_from_gconf (&gipc.kbd_cfg, &initialSysKbdConfig);
+ gkbd_keyboard_config_load_from_x_initial (&initialSysKbdConfig,
+ NULL);
+ gkbd_keyboard_config_load_from_gconf (&gipc.kbd_cfg,
+ &initialSysKbdConfig);
- gkbd_indicator_config_load_from_gconf (&gipc.applet_cfg);
+ gkbd_indicator_config_load_from_gconf (&gipc.applet_cfg);
- loop = g_main_loop_new (NULL, TRUE);
+ loop = g_main_loop_new (NULL, TRUE);
- CappletSetup (&gipc);
+ CappletSetup (&gipc);
- g_main_loop_run (loop);
+ g_main_loop_run (loop);
- gkbd_indicator_plugin_manager_term (&gipc.plugin_manager);
+ gkbd_indicator_plugin_manager_term (&gipc.plugin_manager);
- gkbd_indicator_config_term (&gipc.applet_cfg);
+ gkbd_indicator_config_term (&gipc.applet_cfg);
- gkbd_keyboard_config_term (&gipc.kbd_cfg);
- gkbd_keyboard_config_term (&initialSysKbdConfig);
+ gkbd_keyboard_config_term (&gipc.kbd_cfg);
+ gkbd_keyboard_config_term (&initialSysKbdConfig);
- gkbd_indicator_plugin_container_term (&gipc.plugin_container);
- g_object_unref (G_OBJECT (gipc.config_registry));
- g_object_unref (G_OBJECT (gipc.engine));
- return 0;
+ gkbd_indicator_plugin_container_term (&gipc.plugin_container);
+ g_object_unref (G_OBJECT (gipc.config_registry));
+ g_object_unref (G_OBJECT (gipc.engine));
+ return 0;
}
/* functions just for plugins - otherwise ldd is not happy */
void
-gkbd_indicator_plugin_container_reinit_ui (GkbdIndicatorPluginContainer * pc)
+gkbd_indicator_plugin_container_reinit_ui (GkbdIndicatorPluginContainer *
+ pc)
{
}
-gchar **
-gkbd_indicator_plugin_load_localized_group_names (GkbdIndicatorPluginContainer
- * pc)
-{
- return
- gkbd_desktop_config_load_group_descriptions_utf8 (&
- (((GkbdIndicatorPluginsCapplet *) pc)->cfg), (((GkbdIndicatorPluginsCapplet *) pc)->config_registry));
+gchar **gkbd_indicator_plugin_load_localized_group_names
+ (GkbdIndicatorPluginContainer * pc) {
+ GkbdDesktopConfig *config =
+ &((GkbdIndicatorPluginsCapplet *) pc)->cfg;
+ XklConfigRegistry *config_registry =
+ ((GkbdIndicatorPluginsCapplet *) pc)->config_registry;
+
+ int i;
+ const gchar **native_names =
+ xkl_engine_get_groups_names (config->engine);
+ guint total_groups = xkl_engine_get_num_groups (config->engine);
+ guint total_layouts;
+ gchar **rv = g_new0 (char *, total_groups + 1);
+ gchar **current_descr = rv;
+
+ if ((xkl_engine_get_features (config->engine) &
+ XKLF_MULTIPLE_LAYOUTS_SUPPORTED)
+ && config->layout_names_as_group_names) {
+ XklConfigRec *xkl_config = xkl_config_rec_new ();
+ if (xkl_config_rec_get_from_server
+ (xkl_config, config->engine)) {
+ gchar **sgn = NULL;
+ gchar **fgn = NULL;
+ gkbd_desktop_config_load_group_descriptions
+ (config, config_registry,
+ (const gchar **) xkl_config->layouts,
+ (const gchar **) xkl_config->variants, &sgn,
+ &fgn);
+ g_strfreev (sgn);
+ rv = fgn;
+ }
+ g_object_unref (G_OBJECT (xkl_config));
+ /* Worst case - multiple layous - but SOME of them are multigrouped :(((
+ * We cannot do much - just add empty descriptions.
+ * The UI is going to be messy.
+ * Canadian layouts are famous for this sh.t. */
+ total_layouts = g_strv_length (rv);
+ if (total_layouts != total_groups) {
+ xkl_debug (0,
+ "The mismatch between "
+ "the number of groups: %d and number of layouts: %d\n",
+ total_groups, total_layouts);
+ current_descr = rv + total_layouts;
+ for (i = total_groups - total_layouts; --i >= 0;)
+ *current_descr++ = g_strdup ("");
+ }
+ }
+ total_layouts = g_strv_length (rv);
+ if (!total_layouts)
+ for (i = total_groups; --i >= 0;)
+ *current_descr++ = g_strdup (*native_names++);
+
+ return rv;
}
diff --git a/capplet/gkbd-indicator-plugins-capplet.h b/capplet/gkbd-indicator-plugins-capplet.h
index 4f622c2..dd37817 100644
--- a/capplet/gkbd-indicator-plugins-capplet.h
+++ b/capplet/gkbd-indicator-plugins-capplet.h
@@ -31,17 +31,16 @@
#include "libgnomekbd/gkbd-indicator-plugin-manager.h"
#include "libgnomekbd/gkbd-util.h"
-typedef struct _GkbdIndicatorPluginsCapplet
-{
- GkbdIndicatorPluginContainer plugin_container;
- GkbdDesktopConfig cfg;
- GkbdIndicatorConfig applet_cfg;
- GkbdKeyboardConfig kbd_cfg;
- GkbdIndicatorPluginManager plugin_manager;
- XklEngine *engine;
- XklConfigRegistry *config_registry;
+typedef struct _GkbdIndicatorPluginsCapplet {
+ GkbdIndicatorPluginContainer plugin_container;
+ GkbdDesktopConfig cfg;
+ GkbdIndicatorConfig applet_cfg;
+ GkbdKeyboardConfig kbd_cfg;
+ GkbdIndicatorPluginManager plugin_manager;
+ XklEngine *engine;
+ XklConfigRegistry *config_registry;
- GtkWidget *capplet;
+ GtkWidget *capplet;
} GkbdIndicatorPluginsCapplet;
#define NAME_COLUMN 0
@@ -53,7 +52,8 @@ typedef struct _GkbdIndicatorPluginsCapplet
"gladeData" ) ), \
name )
-extern void CappletFillActivePluginList (GkbdIndicatorPluginsCapplet * gipc);
+extern void CappletFillActivePluginList (GkbdIndicatorPluginsCapplet *
+ gipc);
extern char *CappletGetSelectedPluginPath (GtkTreeView * plugins_list,
GkbdIndicatorPluginsCapplet *