[gthumb] list_tools: update the menu items sensitivity just before showing the menu
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] list_tools: update the menu items sensitivity just before showing the menu
- Date: Tue, 25 Oct 2011 14:56:45 +0000 (UTC)
commit c19171a19d1362c752a49e64ca78d1f08ac6d4bd
Author: Paolo Bacchilega <paobac src gnome org>
Date: Tue Oct 25 15:21:56 2011 +0200
list_tools: update the menu items sensitivity just before showing the menu
extensions/list_tools/callbacks.c | 155 +++++++++++++++++++------------------
extensions/list_tools/callbacks.h | 1 -
extensions/list_tools/main.c | 1 -
3 files changed, 78 insertions(+), 79 deletions(-)
---
diff --git a/extensions/list_tools/callbacks.c b/extensions/list_tools/callbacks.c
index 368ac79..942baa8 100644
--- a/extensions/list_tools/callbacks.c
+++ b/extensions/list_tools/callbacks.c
@@ -94,6 +94,73 @@ browser_data_free (BrowserData *data)
}
+static GtkWidget *
+get_widget_with_prefix (BrowserData *data,
+ const char *prefix,
+ const char *path)
+{
+ char *full_path;
+ GtkWidget *widget;
+
+ full_path = g_strconcat (prefix, path, NULL);
+ widget = gtk_ui_manager_get_widget (gth_browser_get_ui_manager (data->browser), full_path);
+
+ g_free (full_path);
+
+ return widget;
+}
+
+
+static void
+_update_sensitivity (GthBrowser *browser,
+ const char *prefix)
+{
+ BrowserData *data;
+ int n_selected;
+ gboolean sensitive;
+ GtkWidget *separator1;
+ GtkWidget *separator2;
+ GtkWidget *menu;
+
+ data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
+ g_return_if_fail (data != NULL);
+
+ n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
+ sensitive = (n_selected > 0);
+
+ separator1 = get_widget_with_prefix (data, prefix, "/ToolsSeparator");
+ separator2 = get_widget_with_prefix (data, prefix, "/Scripts");
+ menu = gtk_widget_get_parent (separator1);
+ {
+ GList *children;
+ GList *scan;
+
+ children = gtk_container_get_children (GTK_CONTAINER (menu));
+
+ if (separator1 != NULL) {
+ for (scan = children; scan; scan = scan->next)
+ if (scan->data == separator1) {
+ scan = scan->next;
+ break;
+ }
+ }
+ else
+ scan = children;
+
+ for (/* void */; scan && (scan->data != separator2); scan = scan->next)
+ gtk_widget_set_sensitive (scan->data, sensitive);
+ }
+}
+
+
+static void
+list_tools__gth_browser_update_sensitivity_cb (GthBrowser *browser)
+{
+ _update_sensitivity (browser, "/ListToolsPopup");
+ /*_update_sensitivity (browser, "/FileListPopup/Open_Actions/ExecWith");*/
+}
+
+
static void
exec_script (GthBrowser *browser,
GthScript *script)
@@ -130,23 +197,6 @@ activate_script_menu_item (GtkMenuItem *menuitem,
}
-static GtkWidget *
-get_widget_with_prefix (BrowserData *data,
- const char *prefix,
- const char *path)
-{
- char *full_path;
- GtkWidget *widget;
-
- full_path = g_strconcat (prefix, path, NULL);
- widget = gtk_ui_manager_get_widget (gth_browser_get_ui_manager (data->browser), full_path);
-
- g_free (full_path);
-
- return widget;
-}
-
-
static void
_update_scripts_menu (BrowserData *data,
const char *prefix)
@@ -225,19 +275,20 @@ list_tools_show_menu_func (GtkAction *action,
BrowserData *data = user_data;
GtkWidget *menu;
- if (data->menu_initialized)
- return;
+ if (! data->menu_initialized) {
+ data->menu_initialized = TRUE;
- data->menu_initialized = TRUE;
+ menu = gtk_ui_manager_get_widget (gth_browser_get_ui_manager (data->browser), "/ListToolsPopup");
+ g_object_set (action, "menu", menu, NULL);
+ update_scripts_menu (data);
- menu = gtk_ui_manager_get_widget (gth_browser_get_ui_manager (data->browser), "/ListToolsPopup");
- g_object_set (action, "menu", menu, NULL);
- update_scripts_menu (data);
+ data->scripts_changed_id = g_signal_connect (gth_script_file_get (),
+ "changed",
+ G_CALLBACK (scripts_changed_cb),
+ data);
+ }
- data->scripts_changed_id = g_signal_connect (gth_script_file_get (),
- "changed",
- G_CALLBACK (scripts_changed_cb),
- data);
+ list_tools__gth_browser_update_sensitivity_cb (data->browser);
}
@@ -286,56 +337,6 @@ list_tools__gth_browser_construct_cb (GthBrowser *browser)
}
-static void
-_update_sensitivity (GthBrowser *browser,
- const char *prefix)
-{
- BrowserData *data;
- int n_selected;
- gboolean sensitive;
- GtkWidget *separator1;
- GtkWidget *separator2;
- GtkWidget *menu;
-
- data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
- g_return_if_fail (data != NULL);
-
- n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
- sensitive = (n_selected > 0);
-
- separator1 = get_widget_with_prefix (data, prefix, "/ToolsSeparator");
- separator2 = get_widget_with_prefix (data, prefix, "/Scripts");
- menu = gtk_widget_get_parent (separator1);
- {
- GList *children;
- GList *scan;
-
- children = gtk_container_get_children (GTK_CONTAINER (menu));
-
- if (separator1 != NULL) {
- for (scan = children; scan; scan = scan->next)
- if (scan->data == separator1) {
- scan = scan->next;
- break;
- }
- }
- else
- scan = children;
-
- for (/* void */; scan && (scan->data != separator2); scan = scan->next)
- gtk_widget_set_sensitive (scan->data, sensitive);
- }
-}
-
-
-void
-list_tools__gth_browser_update_sensitivity_cb (GthBrowser *browser)
-{
- _update_sensitivity (browser, "/ListToolsPopup");
- /*_update_sensitivity (browser, "/FileListPopup/Open_Actions/ExecWith");*/
-}
-
-
gpointer
list_tools__gth_browser_file_list_key_press_cb (GthBrowser *browser,
GdkEventKey *event)
diff --git a/extensions/list_tools/callbacks.h b/extensions/list_tools/callbacks.h
index 1a297f5..897d8ab 100644
--- a/extensions/list_tools/callbacks.h
+++ b/extensions/list_tools/callbacks.h
@@ -25,7 +25,6 @@
#include <gthumb.h>
void list_tools__gth_browser_construct_cb (GthBrowser *browser);
-void list_tools__gth_browser_update_sensitivity_cb (GthBrowser *browser);
gpointer list_tools__gth_browser_file_list_key_press_cb (GthBrowser *browser,
GdkEventKey *event);
diff --git a/extensions/list_tools/main.c b/extensions/list_tools/main.c
index 3c3195f..1c5011d 100644
--- a/extensions/list_tools/main.c
+++ b/extensions/list_tools/main.c
@@ -30,7 +30,6 @@ G_MODULE_EXPORT void
gthumb_extension_activate (void)
{
gth_hook_add_callback ("gth-browser-construct", 5, G_CALLBACK (list_tools__gth_browser_construct_cb), NULL);
- gth_hook_add_callback ("gth-browser-update-sensitivity", 10, G_CALLBACK (list_tools__gth_browser_update_sensitivity_cb), NULL);
gth_hook_add_callback ("gth-browser-file-list-key-press", 10, G_CALLBACK (list_tools__gth_browser_file_list_key_press_cb), NULL);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]