gtranslator r3690 - in trunk: . plugins/alternate-language
- From: icq svn gnome org
- To: svn-commits-list gnome org
- Subject: gtranslator r3690 - in trunk: . plugins/alternate-language
- Date: Mon, 22 Sep 2008 09:43:09 +0000 (UTC)
Author: icq
Date: Mon Sep 22 09:43:09 2008
New Revision: 3690
URL: http://svn.gnome.org/viewvc/gtranslator?rev=3690&view=rev
Log:
Squashed commit of the following:
commit 5227c05f254649f3334b9217a4bf7b175282e3a3
Author: Ignacio Casal Quinteiro <nacho resa gmail com>
Date: Tue Aug 12 17:02:04 2008 +0200
2008-08-12 Ignacio Casal Quinteiro <nacho resa gmail com>
* plugins/alternate-language/alternate-language-plugin.c
(on_alternate_lang_activated), (free_window_data),
(update_ui_real), (create_alternate_lang_plugin_panel),
(impl_activate), (impl_deactivate), (impl_update_ui),
(gtranslator_alternate_lang_plugin_class_init):
Added menuitem to switch to the Alternate lang tab.
Modified:
trunk/ChangeLog
trunk/plugins/alternate-language/alternate-language-plugin.c
Modified: trunk/plugins/alternate-language/alternate-language-plugin.c
==============================================================================
--- trunk/plugins/alternate-language/alternate-language-plugin.c (original)
+++ trunk/plugins/alternate-language/alternate-language-plugin.c Mon Sep 22 09:43:09 2008
@@ -28,6 +28,8 @@
#include <glib/gi18n-lib.h>
#define WINDOW_DATA_KEY "GtranslatorAlternateLangPluginWindowData"
+#define TAB_DATA_KEY "GtranslatorAlternateLangPluginTabData"
+#define MENU_PATH "/MainMenu/ViewMenu/ViewOps_2"
#define GTR_MESSAGE_TABLE_GET_PRIVATE(object) \
(G_TYPE_INSTANCE_GET_PRIVATE ((object), \
@@ -35,9 +37,58 @@
GtranslatorAlternateLangPluginPrivate))
GTR_PLUGIN_REGISTER_TYPE_WITH_CODE (GtranslatorAlternateLangPlugin, gtranslator_alternate_lang_plugin,
- gtranslator_alternate_lang_panel_register_type (module);
+ gtranslator_alternate_lang_panel_register_type (module);
)
+static void
+on_alternate_lang_activated (GtkAction *action,
+ GtranslatorWindow *window)
+{
+ GtranslatorTab *tab;
+ GtkWidget *alternatelang;
+
+ tab = gtranslator_window_get_active_tab (window);
+ alternatelang = g_object_get_data (G_OBJECT (tab), TAB_DATA_KEY);
+
+ gtranslator_tab_show_lateral_panel_widget (GTR_TAB (tab),
+ alternatelang);
+}
+
+static const GtkActionEntry action_entries[] =
+{
+ { "AlternateLang", NULL, N_("_Alterante Language"), "<control>L",
+ N_("Show the Alternate Language panel"),
+ G_CALLBACK (on_alternate_lang_activated)},
+};
+
+typedef struct
+{
+ GtkActionGroup *action_group;
+ guint ui_id;
+} WindowData;
+
+static void
+free_window_data (WindowData *data)
+{
+ g_return_if_fail (data != NULL);
+
+ g_free (data);
+}
+
+static void
+update_ui_real (GtranslatorWindow *window,
+ WindowData *data)
+{
+ GtranslatorTab *tab;
+ GtkAction *action;
+
+ tab = gtranslator_window_get_active_tab (window);
+
+ action = gtk_action_group_get_action (data->action_group,
+ "AlternateLang");
+ gtk_action_set_sensitive (action,
+ (tab != NULL));
+}
static void
gtranslator_alternate_lang_plugin_init (GtranslatorAlternateLangPlugin *message_table)
@@ -72,8 +123,8 @@
_("Alternate Language"));
g_object_set_data (G_OBJECT (child),
- WINDOW_DATA_KEY,
- alternatelang);
+ TAB_DATA_KEY,
+ alternatelang);
}
static void
@@ -82,6 +133,37 @@
{
GtranslatorNotebook *notebook;
GList *tabs = NULL;
+ GtkUIManager *manager;
+ WindowData *data;
+
+ data = g_new (WindowData, 1);
+
+ manager = gtranslator_window_get_ui_manager (window);
+
+ data->action_group = gtk_action_group_new ("GtranslatorAlternateLangPluginActions");
+ gtk_action_group_set_translation_domain (data->action_group,
+ GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (data->action_group,
+ action_entries,
+ G_N_ELEMENTS (action_entries),
+ window);
+
+ gtk_ui_manager_insert_action_group (manager, data->action_group, -1);
+
+ data->ui_id = gtk_ui_manager_new_merge_id (manager);
+
+ g_object_set_data_full (G_OBJECT (window),
+ WINDOW_DATA_KEY,
+ data,
+ (GDestroyNotify) free_window_data);
+
+ gtk_ui_manager_add_ui (manager,
+ data->ui_id,
+ MENU_PATH,
+ "AlternateLang",
+ "AlternateLang",
+ GTK_UI_MANAGER_MENUITEM,
+ FALSE);
notebook = gtranslator_window_get_notebook(window);
@@ -98,7 +180,6 @@
tabs->data,
0, window);
}while((tabs = g_list_next(tabs)));
-
}
static void
@@ -108,25 +189,49 @@
GtranslatorNotebook *notebook;
GtkWidget *alternatelang;
GList *tabs;
+ GtkUIManager *manager;
+ WindowData *data;
- tabs = gtranslator_window_get_all_tabs(window);
- notebook = gtranslator_window_get_notebook(window);
+ tabs = gtranslator_window_get_all_tabs (window);
+ notebook = gtranslator_window_get_notebook (window);
if (tabs != NULL)
{
do{
- alternatelang = g_object_get_data(G_OBJECT(tabs->data), WINDOW_DATA_KEY);
+ alternatelang = g_object_get_data (G_OBJECT (tabs->data), TAB_DATA_KEY);
gtranslator_tab_remove_widget_from_lateral_panel (GTR_TAB (tabs->data),
alternatelang);
g_object_set_data (G_OBJECT (tabs->data), WINDOW_DATA_KEY, NULL);
-
- }while((tabs = g_list_next(tabs)));
+ }while ((tabs = g_list_next (tabs)));
}
- g_signal_handlers_disconnect_by_func(notebook,
- create_alternate_lang_plugin_panel,
- window);
+ g_signal_handlers_disconnect_by_func (notebook,
+ create_alternate_lang_plugin_panel,
+ window);
+
+ /* Remove menuitem */
+ manager = gtranslator_window_get_ui_manager (window);
+
+ data = (WindowData *) g_object_get_data (G_OBJECT (window), WINDOW_DATA_KEY);
+ g_return_if_fail (data != NULL);
+
+ gtk_ui_manager_remove_ui (manager, data->ui_id);
+ gtk_ui_manager_remove_action_group (manager, data->action_group);
+
+ g_object_set_data (G_OBJECT (window), WINDOW_DATA_KEY, NULL);
+}
+
+static void
+impl_update_ui (GtranslatorPlugin *plugin,
+ GtranslatorWindow *window)
+{
+ WindowData *data;
+
+ data = (WindowData *) g_object_get_data (G_OBJECT (window), WINDOW_DATA_KEY);
+ g_return_if_fail (data != NULL);
+
+ update_ui_real (window, data);
}
static void
@@ -139,4 +244,5 @@
plugin_class->activate = impl_activate;
plugin_class->deactivate = impl_deactivate;
+ plugin_class->update_ui = impl_update_ui;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]