[gthumb] moved all the list tools to the header bar
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] moved all the list tools to the header bar
- Date: Sat, 9 Nov 2013 20:05:45 +0000 (UTC)
commit d76dec31935b7af756b35cfaa6ca607cc97b8d45
Author: Paolo Bacchilega <paobac src gnome org>
Date: Mon Oct 21 21:55:26 2013 +0200
moved all the list tools to the header bar
extensions/change_date/actions.c | 10 +-
extensions/change_date/actions.h | 6 +-
extensions/change_date/callbacks.c | 69 ++------
extensions/comments/actions.c | 12 +-
extensions/comments/actions.h | 6 +-
extensions/comments/callbacks.c | 63 ++------
extensions/convert_format/actions.c | 11 +-
extensions/convert_format/actions.h | 6 +-
extensions/convert_format/callbacks.c | 73 ++-------
extensions/edit_metadata/callbacks.c | 54 +++----
extensions/image_rotation/callbacks.c | 1 -
extensions/list_tools/actions.c | 8 -
extensions/list_tools/actions.h | 5 +-
extensions/list_tools/callbacks.c | 296 +++++----------------------------
extensions/resize_images/actions.c | 10 +-
extensions/resize_images/actions.h | 6 +-
extensions/resize_images/callbacks.c | 73 ++-------
17 files changed, 166 insertions(+), 543 deletions(-)
---
diff --git a/extensions/change_date/actions.c b/extensions/change_date/actions.c
index 8500c67..429c4a5 100644
--- a/extensions/change_date/actions.c
+++ b/extensions/change_date/actions.c
@@ -27,11 +27,13 @@
void
-gth_browser_activate_action_tool_change_date (GtkAction *action,
- GthBrowser *browser)
+gth_browser_activate_change_date (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
- GList *items;
- GList *file_list;
+ GthBrowser *browser = GTH_BROWSER (user_data);
+ GList *items;
+ GList *file_list;
items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view
(browser)));
file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
diff --git a/extensions/change_date/actions.h b/extensions/change_date/actions.h
index fa22b42..fbc730f 100644
--- a/extensions/change_date/actions.h
+++ b/extensions/change_date/actions.h
@@ -22,10 +22,8 @@
#ifndef ACTIONS_H
#define ACTIONS_H
-#include <gtk/gtk.h>
+#include <gthumb.h>
-#define DEFINE_ACTION(x) void x (GtkAction *action, gpointer data);
-
-DEFINE_ACTION(gth_browser_activate_action_tool_change_date)
+DEF_ACTION_CALLBACK (gth_browser_activate_change_date)
#endif /* ACTIONS_H */
diff --git a/extensions/change_date/callbacks.c b/extensions/change_date/callbacks.c
index 9c2bcf7..b43c622 100644
--- a/extensions/change_date/callbacks.c
+++ b/extensions/change_date/callbacks.c
@@ -24,81 +24,44 @@
#include <glib/gi18n.h>
#include <glib-object.h>
#include <gthumb.h>
+#include <extensions/list_tools/list-tools.h>
#include "actions.h"
#define BROWSER_DATA_KEY "change-date-browser-data"
-static const char *fixed_ui_info =
-"<ui>"
-" <popup name='ListToolsPopup'>"
-" <placeholder name='Tools'>"
-" <menuitem name='ChangeDate' action='Tool_ChangeDate'/>"
-" </placeholder>"
-" </popup>"
-"</ui>";
-
-
-static GtkActionEntry action_entries[] = {
- { "Tool_ChangeDate", NULL,
- N_("Change _Date..."), NULL,
- N_("Change images last modified date"),
- G_CALLBACK (gth_browser_activate_action_tool_change_date) },
+static const GActionEntry actions[] = {
+ { "change-date", gth_browser_activate_change_date }
};
-typedef struct {
- GtkActionGroup *action_group;
-} BrowserData;
-
-
-static void
-browser_data_free (BrowserData *data)
-{
- g_free (data);
-}
+static const GthMenuEntry action_entries[] = {
+ { N_("Change _Date..."), "win.change-date" }
+};
void
cd__gth_browser_construct_cb (GthBrowser *browser)
{
- BrowserData *data;
- GError *error = NULL;
-
g_return_if_fail (GTH_IS_BROWSER (browser));
- data = g_new0 (BrowserData, 1);
- data->action_group = gtk_action_group_new ("Change Date Actions");
- gtk_action_group_set_translation_domain (data->action_group, NULL);
- gtk_action_group_add_actions (data->action_group,
- action_entries,
- G_N_ELEMENTS (action_entries),
- browser);
- gtk_ui_manager_insert_action_group (gth_browser_get_ui_manager (browser), data->action_group, 0);
-
- if (! gtk_ui_manager_add_ui_from_string (gth_browser_get_ui_manager (browser), fixed_ui_info, -1,
&error)) {
- g_message ("building menus failed: %s", error->message);
- g_clear_error (&error);
- }
-
- g_object_set_data_full (G_OBJECT (browser), BROWSER_DATA_KEY, data, (GDestroyNotify)
browser_data_free);
+ g_action_map_add_action_entries (G_ACTION_MAP (browser),
+ actions,
+ G_N_ELEMENTS (actions),
+ browser);
+ gth_menu_manager_append_entries (gth_browser_get_menu_manager (browser,
GTH_BROWSER_MENU_MANAGER_TOOLS2),
+ action_entries,
+ G_N_ELEMENTS (action_entries));
}
void
cd__gth_browser_update_sensitivity_cb (GthBrowser *browser)
{
- BrowserData *data;
- GtkAction *action;
- int n_selected;
- gboolean sensitive;
-
- data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
- g_return_if_fail (data != NULL);
+ int n_selected;
+ gboolean sensitive;
n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view
(browser)));
sensitive = n_selected > 0;
-
- action = gtk_action_group_get_action (data->action_group, "Tool_ChangeDate");
- g_object_set (action, "sensitive", sensitive, NULL);
+ gth_window_enable_action (GTH_WINDOW (browser), "change-date", sensitive);
}
diff --git a/extensions/comments/actions.c b/extensions/comments/actions.c
index ccc7a8d..fafcecf 100644
--- a/extensions/comments/actions.c
+++ b/extensions/comments/actions.c
@@ -26,12 +26,14 @@
void
-gth_browser_activate_action_tool_import_embedded_metadata (GtkAction *action,
- GthBrowser *browser)
+gth_browser_activate_import_embedded_metadata (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
- GList *items;
- GList *file_data_list;
- GthTask *task;
+ GthBrowser *browser = GTH_BROWSER (user_data);
+ GList *items;
+ GList *file_data_list;
+ GthTask *task;
items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view
(browser)));
file_data_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
diff --git a/extensions/comments/actions.h b/extensions/comments/actions.h
index 7451f35..f12509b 100644
--- a/extensions/comments/actions.h
+++ b/extensions/comments/actions.h
@@ -22,10 +22,8 @@
#ifndef ACTIONS_H
#define ACTIONS_H
-#include <gtk/gtk.h>
+#include <gthumb.h>
-#define DEFINE_ACTION(x) void x (GtkAction *action, gpointer data);
-
-DEFINE_ACTION(gth_browser_activate_action_tool_import_embedded_metadata)
+DEF_ACTION_CALLBACK (gth_browser_activate_import_embedded_metadata)
#endif /* ACTIONS_H */
diff --git a/extensions/comments/callbacks.c b/extensions/comments/callbacks.c
index 3e20852..e0893b8 100644
--- a/extensions/comments/callbacks.c
+++ b/extensions/comments/callbacks.c
@@ -25,67 +25,32 @@
#include <glib-object.h>
#include <gdk/gdkkeysyms.h>
#include <gthumb.h>
+#include <extensions/list_tools/list-tools.h>
#include "actions.h"
-#define BROWSER_DATA_KEY "comments-data"
-
-
-static const char *fixed_ui_file_tools_info =
-"<ui>"
-" <popup name='ListToolsPopup'>"
-" <placeholder name='Tools_2'>"
-" <menuitem name='ImportEmbeddedMetadata' action='Tool_ImportEmbeddedMetadata'/>"
-" </placeholder>"
-" </popup>"
-"</ui>";
-
-
-static GthActionEntryExt comments_action_entries[] = {
- { "Tool_ImportEmbeddedMetadata", NULL,
- N_("Import Embedded Metadata"), NULL,
- N_("Import the metadata stored inside files into the gThumb comment system"),
- GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_tool_import_embedded_metadata) }
+static const GActionEntry actions[] = {
+ { "import-embedded-metadata", gth_browser_activate_import_embedded_metadata }
};
-typedef struct {
- GthBrowser *browser;
- GtkActionGroup *actions;
-} BrowserData;
-
-
-static void
-browser_data_free (BrowserData *data)
-{
- g_free (data);
-}
+static const GthMenuEntry action_entries[] = {
+ { N_("Import Embedded Metadata"), "win.import-embedded-metadata" }
+};
void
comments__gth_browser_construct_cb (GthBrowser *browser)
{
- BrowserData *data;
- GError *error = NULL;
-
g_return_if_fail (GTH_IS_BROWSER (browser));
- data = g_new0 (BrowserData, 1);
- data->browser = browser;
-
- data->actions = gtk_action_group_new ("Comments Actions");
- gtk_action_group_set_translation_domain (data->actions, NULL);
- _gtk_action_group_add_actions_with_flags (data->actions,
- comments_action_entries,
- G_N_ELEMENTS (comments_action_entries),
- browser);
- gtk_ui_manager_insert_action_group (gth_browser_get_ui_manager (browser), data->actions, 0);
-
- if (gth_main_extension_is_active ("list_tools") && ! gtk_ui_manager_add_ui_from_string
(gth_browser_get_ui_manager (browser), fixed_ui_file_tools_info, -1, &error)) {
- g_message ("building menus failed: %s", error->message);
- g_error_free (error);
+ if (gth_main_extension_is_active ("list_tools")) {
+ g_action_map_add_action_entries (G_ACTION_MAP (browser),
+ actions,
+ G_N_ELEMENTS (actions),
+ browser);
+ gth_menu_manager_append_entries (gth_browser_get_menu_manager (browser,
GTH_BROWSER_MENU_MANAGER_TOOLS2),
+ action_entries,
+ G_N_ELEMENTS (action_entries));
}
-
- g_object_set_data_full (G_OBJECT (browser), BROWSER_DATA_KEY, data, (GDestroyNotify)
browser_data_free);
}
diff --git a/extensions/convert_format/actions.c b/extensions/convert_format/actions.c
index 7e6e95b..346607b 100644
--- a/extensions/convert_format/actions.c
+++ b/extensions/convert_format/actions.c
@@ -21,17 +21,18 @@
#include <config.h>
-#include <glib/gi18n.h>
#include <gthumb.h>
#include "dlg-convert-format.h"
void
-gth_browser_activate_action_tool_convert_format (GtkAction *action,
- GthBrowser *browser)
+gth_browser_activate_convert_format (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
- GList *items;
- GList *file_list;
+ GthBrowser *browser = GTH_BROWSER (user_data);
+ GList *items;
+ GList *file_list;
items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view
(browser)));
file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
diff --git a/extensions/convert_format/actions.h b/extensions/convert_format/actions.h
index 8e4b6d5..8e997f6 100644
--- a/extensions/convert_format/actions.h
+++ b/extensions/convert_format/actions.h
@@ -22,10 +22,8 @@
#ifndef ACTIONS_H
#define ACTIONS_H
-#include <gtk/gtk.h>
+#include <gthumb.h>
-#define DEFINE_ACTION(x) void x (GtkAction *action, gpointer data);
-
-DEFINE_ACTION(gth_browser_activate_action_tool_convert_format)
+DEF_ACTION_CALLBACK (gth_browser_activate_convert_format)
#endif /* ACTIONS_H */
diff --git a/extensions/convert_format/callbacks.c b/extensions/convert_format/callbacks.c
index 869d79f..5c54fd3 100644
--- a/extensions/convert_format/callbacks.c
+++ b/extensions/convert_format/callbacks.c
@@ -24,83 +24,42 @@
#include <glib/gi18n.h>
#include <glib-object.h>
#include <gthumb.h>
+#include <extensions/list_tools/list-tools.h>
#include "actions.h"
-#define BROWSER_DATA_KEY "convert-format-browser-data"
-
-
-static const char *fixed_ui_info =
-"<ui>"
-" <popup name='ListToolsPopup'>"
-" <placeholder name='Tools'>"
-" <menuitem name='ConvertFormat' action='Tool_ConvertFormat'/>"
-" </placeholder>"
-" </popup>"
-"</ui>";
-
-
-static GtkActionEntry action_entries[] = {
- { "Tool_ConvertFormat", GTK_STOCK_CONVERT,
- N_("Convert Format..."), NULL,
- N_("Convert image format"),
- G_CALLBACK (gth_browser_activate_action_tool_convert_format) },
+static const GActionEntry actions[] = {
+ { "convert-format", gth_browser_activate_convert_format }
};
-typedef struct {
- GtkActionGroup *action_group;
-} BrowserData;
-
-
-static void
-browser_data_free (BrowserData *data)
-{
- g_free (data);
-}
+static const GthMenuEntry action_entries[] = {
+ { N_("Convert Format..."), "win.convert-format" }
+};
void
cf__gth_browser_construct_cb (GthBrowser *browser)
{
- BrowserData *data;
- GError *error = NULL;
-
g_return_if_fail (GTH_IS_BROWSER (browser));
- data = g_new0 (BrowserData, 1);
-
- data->action_group = gtk_action_group_new ("Convert Format Actions");
- gtk_action_group_set_translation_domain (data->action_group, NULL);
- gtk_action_group_add_actions (data->action_group,
- action_entries,
- G_N_ELEMENTS (action_entries),
- browser);
- gtk_ui_manager_insert_action_group (gth_browser_get_ui_manager (browser), data->action_group, 0);
-
- if (! gtk_ui_manager_add_ui_from_string (gth_browser_get_ui_manager (browser), fixed_ui_info, -1,
&error)) {
- g_message ("building menus failed: %s", error->message);
- g_clear_error (&error);
- }
-
- g_object_set_data_full (G_OBJECT (browser), BROWSER_DATA_KEY, data, (GDestroyNotify)
browser_data_free);
+ g_action_map_add_action_entries (G_ACTION_MAP (browser),
+ actions,
+ G_N_ELEMENTS (actions),
+ browser);
+ gth_menu_manager_append_entries (gth_browser_get_menu_manager (browser,
GTH_BROWSER_MENU_MANAGER_TOOLS2),
+ action_entries,
+ G_N_ELEMENTS (action_entries));
}
void
cf__gth_browser_update_sensitivity_cb (GthBrowser *browser)
{
- BrowserData *data;
- GtkAction *action;
- int n_selected;
- gboolean sensitive;
-
- data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
- g_return_if_fail (data != NULL);
+ int n_selected;
+ gboolean sensitive;
n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view
(browser)));
sensitive = n_selected > 0;
-
- action = gtk_action_group_get_action (data->action_group, "Tool_ConvertFormat");
- g_object_set (action, "sensitive", sensitive, NULL);
+ gth_window_enable_action (GTH_WINDOW (browser), "convert-format", sensitive);
}
diff --git a/extensions/edit_metadata/callbacks.c b/extensions/edit_metadata/callbacks.c
index dcc557d..4ba293c 100644
--- a/extensions/edit_metadata/callbacks.c
+++ b/extensions/edit_metadata/callbacks.c
@@ -25,6 +25,7 @@
#include <glib-object.h>
#include <gdk/gdkkeysyms.h>
#include <gthumb.h>
+#include <extensions/list_tools/list-tools.h>
#include "actions.h"
#include "gth-tag-task.h"
@@ -32,6 +33,18 @@
#define BROWSER_DATA_KEY "edit-metadata-data"
+static const GActionEntry actions[] = {
+ { "edit-metadata", gth_browser_activate_edit_metadata },
+ { "edit-tags", gth_browser_activate_edit_tags },
+ { "delete-metadata", gth_browser_activate_delete_metadata },
+};
+
+
+static const GthMenuEntry action_entries[] = {
+ { N_("Delete Metadata"), "win.delete-metadata" }
+};
+
+
static const char *fixed_ui_info =
"<ui>"
" <menubar name='MenuBar'>"
@@ -61,16 +74,6 @@ static const char *fixed_ui_info =
"</ui>";
-static const char *fixed_ui_file_tools_info =
-"<ui>"
-" <popup name='ListToolsPopup'>"
-" <placeholder name='Tools_2'>"
-" <menuitem name='DeleteMetadata' action='Tool_DeleteMetadata'/>"
-" </placeholder>"
-" </popup>"
-"</ui>";
-
-
static GthActionEntryExt edit_metadata_action_entries[] = {
{ "Edit_QuickTag", "tag", N_("T_ags") },
@@ -84,20 +87,7 @@ static GthActionEntryExt edit_metadata_action_entries[] = {
N_("Tags"), NULL,
N_("Set the tags of the selected files"),
GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_edit_tags) },
-
- { "Tool_DeleteMetadata", NULL,
- N_("Delete Metadata"), NULL,
- N_("Delete the comment and the embedded metadata of the selected files"),
- GTH_ACTION_FLAG_NONE,
- G_CALLBACK (gth_browser_activate_action_tool_delete_metadata) }
-};
-
-
-static const GActionEntry actions[] = {
- { "edit-metadata", gth_browser_activate_edit_metadata },
- { "edit-tags", gth_browser_activate_edit_tags },
- { "delete-metadata", gth_browser_activate_delete_metadata },
+ G_CALLBACK (gth_browser_activate_action_edit_tags) }
};
@@ -123,6 +113,16 @@ edit_metadata__gth_browser_construct_cb (GthBrowser *browser)
g_return_if_fail (GTH_IS_BROWSER (browser));
+ if (gth_main_extension_is_active ("list_tools")) {
+ g_action_map_add_action_entries (G_ACTION_MAP (browser),
+ actions,
+ G_N_ELEMENTS (actions),
+ browser);
+ gth_menu_manager_append_entries (gth_browser_get_menu_manager (browser,
GTH_BROWSER_MENU_MANAGER_TOOLS2),
+ action_entries,
+ G_N_ELEMENTS (action_entries));
+ }
+
data = g_new0 (BrowserData, 1);
data->browser = browser;
@@ -139,11 +139,6 @@ edit_metadata__gth_browser_construct_cb (GthBrowser *browser)
g_error_free (error);
}
- if (gth_main_extension_is_active ("list_tools") && ! gtk_ui_manager_add_ui_from_string
(gth_browser_get_ui_manager (browser), fixed_ui_file_tools_info, -1, &error)) {
- g_message ("building menus failed: %s", error->message);
- g_error_free (error);
- }
-
g_object_set_data_full (G_OBJECT (browser), BROWSER_DATA_KEY, data, (GDestroyNotify)
browser_data_free);
g_action_map_add_action_entries (G_ACTION_MAP (browser),
@@ -192,7 +187,6 @@ edit_metadata__gth_browser_update_sensitivity_cb (GthBrowser *browser)
sensitive = (n_selected > 0);
g_object_set (gtk_action_group_get_action (data->actions, "Edit_Metadata"), "sensitive", sensitive,
NULL);
- g_object_set (gtk_action_group_get_action (data->actions, "Tool_DeleteMetadata"), "sensitive",
sensitive, NULL);
g_object_set (g_action_map_lookup_action (G_ACTION_MAP (data->browser), "edit-metadata"), "enabled",
sensitive, NULL);
g_object_set (g_action_map_lookup_action (G_ACTION_MAP (data->browser), "edit-tags"), "enabled",
sensitive, NULL);
diff --git a/extensions/image_rotation/callbacks.c b/extensions/image_rotation/callbacks.c
index e0b36fa..b80f850 100644
--- a/extensions/image_rotation/callbacks.c
+++ b/extensions/image_rotation/callbacks.c
@@ -68,7 +68,6 @@ ir__gth_browser_update_sensitivity_cb (GthBrowser *browser)
n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view
(browser)));
sensitive = n_selected > 0;
-
gth_window_enable_action (GTH_WINDOW (browser), "rotate-right", sensitive);
gth_window_enable_action (GTH_WINDOW (browser), "rotate-left", sensitive);
gth_window_enable_action (GTH_WINDOW (browser), "apply-orientation", sensitive);
diff --git a/extensions/list_tools/actions.c b/extensions/list_tools/actions.c
index 1971127..ceff9dc 100644
--- a/extensions/list_tools/actions.c
+++ b/extensions/list_tools/actions.c
@@ -30,14 +30,6 @@
void
-gth_browser_action_edit_scripts (GtkAction *action,
- GthBrowser *browser)
-{
- dlg_personalize_scripts (browser);
-}
-
-
-void
gth_browser_exec_script (GthBrowser *browser,
GthScript *script)
{
diff --git a/extensions/list_tools/actions.h b/extensions/list_tools/actions.h
index 408d715..34bff0c 100644
--- a/extensions/list_tools/actions.h
+++ b/extensions/list_tools/actions.h
@@ -26,12 +26,9 @@
#include <gthumb.h>
#include "gth-script.h"
-#define DEFINE_ACTION(x) void x (GtkAction *action, gpointer data);
-
-DEFINE_ACTION(gth_browser_action_edit_scripts)
DEF_ACTION_CALLBACK (gth_browser_activate_exec_script)
DEF_ACTION_CALLBACK (gth_browser_activate_personalize_tools)
-void gth_browser_exec_script (GthBrowser *browser, GthScript *script);
+void gth_browser_exec_script (GthBrowser *browser, GthScript *script);
#endif /* ACTIONS_H */
diff --git a/extensions/list_tools/callbacks.c b/extensions/list_tools/callbacks.c
index 68cd546..3e24db3 100644
--- a/extensions/list_tools/callbacks.c
+++ b/extensions/list_tools/callbacks.c
@@ -40,58 +40,11 @@ static const GActionEntry actions[] = {
};
-static const char *fixed_ui_info =
-"<ui>"
-" <toolbar name='ToolBar'>"
-" <placeholder name='Edit_Actions_2'>"
-" <toolitem action='ListTools'/>"
-" </placeholder>"
-" </toolbar>"
-" <toolbar name='ViewerToolBar'>"
-" <placeholder name='Edit_Actions_2'>"
-" <toolitem action='ListTools'/>"
-" </placeholder>"
-" </toolbar>"
-/*
-" <popup name='FileListPopup'>"
-" <placeholder name='Open_Actions'>"
-" <menu name='ExecWith' action='ExecWithMenu'>"
-" <placeholder name='Tools'/>"
-" <placeholder name='Scripts'/>"
-" <separator name='ScriptsListSeparator'/>"
-" <menuitem name='EditScripts' action='ListTools_EditScripts'/>"
-" </menu>"
-" </placeholder>"
-" </popup>"
-*/
-" <popup name='ListToolsPopup'>"
-" <placeholder name='Tools'/>"
-" <separator/>"
-" <placeholder name='Tools_2'/>"
-" <separator name='ToolsSeparator'/>"
-" <placeholder name='Scripts'/>"
-" <separator name='ScriptsListSeparator'/>"
-" <menuitem name='EditScripts' action='ListTools_EditScripts'/>"
-" </popup>"
-"</ui>";
-
-
-static GtkActionEntry action_entries[] = {
- /*{ "ExecWithMenu", GTK_STOCK_EXECUTE, N_("_Tools") },*/
-
- { "ListTools_EditScripts", GTK_STOCK_EDIT,
- N_("Personalize..."), NULL,
- NULL,
- G_CALLBACK (gth_browser_action_edit_scripts) }
-};
-
-
typedef struct {
- GthBrowser *browser;
- GtkActionGroup *action_group;
- gulong scripts_changed_id;
- gboolean menu_initialized;
- guint menu_merge_id;
+ GthBrowser *browser;
+ gulong scripts_changed_id;
+ gboolean menu_initialized;
+ guint menu_merge_id;
} BrowserData;
@@ -104,33 +57,12 @@ 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)
+list_tools__gth_browser_update_sensitivity_cb (GthBrowser *browser)
{
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);
@@ -138,69 +70,16 @@ _update_sensitivity (GthBrowser *browser,
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
-activate_script_menu_item (GtkMenuItem *menuitem,
- gpointer user_data)
-{
- BrowserData *data = user_data;
- GthScript *script;
-
- script = gth_script_file_get_script (gth_script_file_get (), g_object_get_data (G_OBJECT (menuitem),
"script_id"));
- if (script != NULL)
- gth_browser_exec_script (data->browser, script);
+ gth_window_enable_action (GTH_WINDOW (browser), "exec-script", sensitive);
}
static void
-_update_scripts_menu (BrowserData *data,
- const char *prefix)
+update_scripts_menu (BrowserData *data)
{
- GtkWidget *separator1;
- GtkWidget *separator2;
- GtkWidget *menu;
GthMenuManager *menu_manager;
GList *script_list;
GList *scan;
- int pos;
- gboolean script_present = FALSE;
-
- separator1 = get_widget_with_prefix (data, prefix, "/ToolsSeparator");
- separator2 = get_widget_with_prefix (data, prefix, "/Scripts");
- menu = gtk_widget_get_parent (separator1);
- _gtk_container_remove_children (GTK_CONTAINER (menu), separator1, separator2);
menu_manager = gth_browser_get_menu_manager (data->browser, GTH_BROWSER_MENU_MANAGER_TOOLS3);
if (data->menu_merge_id != 0)
@@ -208,29 +87,13 @@ _update_scripts_menu (BrowserData *data,
data->menu_merge_id = gth_menu_manager_new_merge_id (menu_manager);
script_list = gth_script_file_get_scripts (gth_script_file_get ());
- pos = _gtk_container_get_pos (GTK_CONTAINER (menu), separator2);
for (scan = script_list; scan; scan = scan->next) {
GthScript *script = scan->data;
- GtkWidget *menu_item;
char *detailed_action;
if (! gth_script_is_visible (script))
continue;
- menu_item = gtk_image_menu_item_new_with_label (gth_script_get_display_name (script));
- /*gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_item), gtk_image_new_from_stock
(GTK_STOCK_EXECUTE, GTK_ICON_SIZE_MENU));*/
- gtk_widget_show (menu_item);
- gtk_menu_shell_insert (GTK_MENU_SHELL (menu), menu_item, pos++);
-
- g_object_set_data_full (G_OBJECT (menu_item),
- "script_id",
- g_strdup (gth_script_get_id (script)),
- (GDestroyNotify) g_free);
- g_signal_connect (menu_item,
- "activate",
- G_CALLBACK (activate_script_menu_item),
- data);
-
detailed_action = g_strdup_printf ("win.exec-script('%s')", gth_script_get_id (script));
gth_menu_manager_append_entry (menu_manager,
data->menu_merge_id,
@@ -238,17 +101,10 @@ _update_scripts_menu (BrowserData *data,
detailed_action,
NULL,
NULL);
- script_present = TRUE;
g_free (detailed_action);
}
- separator1 = get_widget_with_prefix (data, prefix, "/ScriptsListSeparator");
- if (script_present)
- gtk_widget_show (separator1);
- else
- gtk_widget_hide (separator1);
-
list_tools__gth_browser_update_sensitivity_cb (data->browser);
_g_object_list_unref (script_list);
@@ -256,14 +112,6 @@ _update_scripts_menu (BrowserData *data,
static void
-update_scripts_menu (BrowserData *data)
-{
- _update_scripts_menu (data, "/ListToolsPopup");
- /*_update_scripts_menu (data, "/FileListPopup/Open_Actions/ExecWith");*/
-}
-
-
-static void
scripts_changed_cb (GthScriptFile *script_file,
BrowserData *data)
{
@@ -272,17 +120,16 @@ scripts_changed_cb (GthScriptFile *script_file,
static void
-list_tools_show_menu_func (GtkAction *action,
- gpointer user_data)
+tools_menu_button_toggled_cb (GtkToggleButton *togglebutton,
+ gpointer user_data)
{
BrowserData *data = user_data;
- GtkWidget *menu;
+
+ if (! gtk_toggle_button_get_active (togglebutton))
+ return;
if (! data->menu_initialized) {
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);
data->scripts_changed_id = g_signal_connect (gth_script_file_get (),
@@ -295,103 +142,52 @@ list_tools_show_menu_func (GtkAction *action,
}
-static void
-tools_menu_button_toggled_cb (GtkToggleButton *togglebutton,
- gpointer user_data)
-{
- BrowserData *data = user_data;
-
- if (! gtk_toggle_button_get_active (togglebutton))
- return;
-
- if (! data->menu_initialized) {
- data->menu_initialized = TRUE;
- update_scripts_menu (data);
- }
-}
-
-
void
list_tools__gth_browser_construct_cb (GthBrowser *browser)
{
BrowserData *data;
- GtkAction *action;
- GError *error = NULL;
+ GtkBuilder *builder;
+ GMenuModel *menu;
+ GtkWidget *button;
g_return_if_fail (GTH_IS_BROWSER (browser));
+ data = g_new0 (BrowserData, 1);
+ data->browser = browser;
+ g_object_set_data_full (G_OBJECT (browser), BROWSER_DATA_KEY, data, (GDestroyNotify)
browser_data_free);
+
g_action_map_add_action_entries (G_ACTION_MAP (browser),
actions,
G_N_ELEMENTS (actions),
browser);
- data = g_new0 (BrowserData, 1);
- data->browser = browser;
- data->action_group = gtk_action_group_new ("List Tools Manager Actions");
- gtk_action_group_set_translation_domain (data->action_group, NULL);
- gtk_action_group_add_actions (data->action_group,
- action_entries,
- G_N_ELEMENTS (action_entries),
- browser);
-
- /* tools menu action */
-
- action = g_object_new (GTH_TYPE_TOGGLE_MENU_ACTION,
- "name", "ListTools",
- "stock-id", GTK_STOCK_EXECUTE,
- "label", _("Tools"),
- "tooltip", _("Batch tools for multiple files"),
- "is-important", TRUE,
- NULL);
- gth_toggle_menu_action_set_show_menu_func (GTH_TOGGLE_MENU_ACTION (action),
- list_tools_show_menu_func,
- data,
- NULL);
- gtk_action_group_add_action (data->action_group, action);
- g_object_unref (action);
-
- gtk_ui_manager_insert_action_group (gth_browser_get_ui_manager (browser), data->action_group, 0);
-
- if (! gtk_ui_manager_add_ui_from_string (gth_browser_get_ui_manager (browser), fixed_ui_info, -1,
&error)) {
- g_message ("building menus failed: %s", error->message);
- g_clear_error (&error);
- }
-
- g_object_set_data_full (G_OBJECT (browser), BROWSER_DATA_KEY, data, (GDestroyNotify)
browser_data_free);
-
- {
- GtkWidget *button;
- GtkBuilder *builder;
- GMenuModel *menu;
-
- builder = gtk_builder_new_from_resource
("/org/gnome/gThumb/list_tools/data/ui/tools-menu.ui");
- gth_browser_add_menu_manager_for_menu (browser, GTH_BROWSER_MENU_MANAGER_TOOLS1, G_MENU
(gtk_builder_get_object (builder, "tools1")));
- gth_browser_add_menu_manager_for_menu (browser, GTH_BROWSER_MENU_MANAGER_TOOLS2, G_MENU
(gtk_builder_get_object (builder, "tools2")));
- gth_browser_add_menu_manager_for_menu (browser, GTH_BROWSER_MENU_MANAGER_TOOLS3, G_MENU
(gtk_builder_get_object (builder, "tools3")));
- menu = G_MENU_MODEL (gtk_builder_get_object (builder, "tools-menu"));
-
- /* browser tools */
-
- button = _gtk_menu_button_new_for_header_bar ();
- g_signal_connect (button, "toggled", G_CALLBACK (tools_menu_button_toggled_cb), data);
- gtk_widget_set_tooltip_text (button, _("Tools"));
- gtk_container_add (GTK_CONTAINER (button), gtk_image_new_from_icon_name
("system-run-symbolic", GTK_ICON_SIZE_MENU));
- gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), menu);
- gtk_widget_show_all (button);
- gtk_box_pack_start (GTK_BOX (gth_browser_get_headerbar_section (browser,
GTH_BROWSER_HEADER_SECTION_BROWSER_TOOLS)), button, FALSE, FALSE, 0);
-
- /* viewer tools */
-
- button = _gtk_menu_button_new_for_header_bar ();
- g_signal_connect (button, "toggled", G_CALLBACK (tools_menu_button_toggled_cb), data);
- gtk_widget_set_tooltip_text (button, _("Tools"));
- gtk_container_add (GTK_CONTAINER (button), gtk_image_new_from_icon_name
("system-run-symbolic", GTK_ICON_SIZE_MENU));
- gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), menu);
- gtk_widget_show_all (button);
- gtk_box_pack_start (GTK_BOX (gth_browser_get_headerbar_section (browser,
GTH_BROWSER_HEADER_SECTION_VIEWER_TOOLS)), button, FALSE, FALSE, 0);
-
- g_object_unref (builder);
- }
+ builder = gtk_builder_new_from_resource ("/org/gnome/gThumb/list_tools/data/ui/tools-menu.ui");
+ gth_browser_add_menu_manager_for_menu (browser, GTH_BROWSER_MENU_MANAGER_TOOLS1, G_MENU
(gtk_builder_get_object (builder, "tools1")));
+ gth_browser_add_menu_manager_for_menu (browser, GTH_BROWSER_MENU_MANAGER_TOOLS2, G_MENU
(gtk_builder_get_object (builder, "tools2")));
+ gth_browser_add_menu_manager_for_menu (browser, GTH_BROWSER_MENU_MANAGER_TOOLS3, G_MENU
(gtk_builder_get_object (builder, "tools3")));
+ menu = G_MENU_MODEL (gtk_builder_get_object (builder, "tools-menu"));
+
+ /* browser tools */
+
+ button = _gtk_menu_button_new_for_header_bar ();
+ g_signal_connect (button, "toggled", G_CALLBACK (tools_menu_button_toggled_cb), data);
+ gtk_widget_set_tooltip_text (button, _("Tools"));
+ gtk_container_add (GTK_CONTAINER (button), gtk_image_new_from_icon_name ("system-run-symbolic",
GTK_ICON_SIZE_MENU));
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), menu);
+ gtk_widget_show_all (button);
+ gtk_box_pack_start (GTK_BOX (gth_browser_get_headerbar_section (browser,
GTH_BROWSER_HEADER_SECTION_BROWSER_TOOLS)), button, FALSE, FALSE, 0);
+
+ /* viewer tools */
+
+ button = _gtk_menu_button_new_for_header_bar ();
+ g_signal_connect (button, "toggled", G_CALLBACK (tools_menu_button_toggled_cb), data);
+ gtk_widget_set_tooltip_text (button, _("Tools"));
+ gtk_container_add (GTK_CONTAINER (button), gtk_image_new_from_icon_name ("system-run-symbolic",
GTK_ICON_SIZE_MENU));
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), menu);
+ gtk_widget_show_all (button);
+ gtk_box_pack_start (GTK_BOX (gth_browser_get_headerbar_section (browser,
GTH_BROWSER_HEADER_SECTION_VIEWER_TOOLS)), button, FALSE, FALSE, 0);
+
+ g_object_unref (builder);
}
diff --git a/extensions/resize_images/actions.c b/extensions/resize_images/actions.c
index abd4262..25d7e41 100644
--- a/extensions/resize_images/actions.c
+++ b/extensions/resize_images/actions.c
@@ -27,11 +27,13 @@
void
-gth_browser_activate_action_tool_resize_images (GtkAction *action,
- GthBrowser *browser)
+gth_browser_activate_resize_images (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
{
- GList *items;
- GList *file_list;
+ GthBrowser *browser = GTH_BROWSER (user_data);
+ GList *items;
+ GList *file_list;
items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view
(browser)));
file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
diff --git a/extensions/resize_images/actions.h b/extensions/resize_images/actions.h
index 8f7647b..f2dfd9d 100644
--- a/extensions/resize_images/actions.h
+++ b/extensions/resize_images/actions.h
@@ -22,10 +22,8 @@
#ifndef ACTIONS_H
#define ACTIONS_H
-#include <gtk/gtk.h>
+#include <gthumb.h>
-#define DEFINE_ACTION(x) void x (GtkAction *action, gpointer data);
-
-DEFINE_ACTION(gth_browser_activate_action_tool_resize_images)
+DEF_ACTION_CALLBACK (gth_browser_activate_resize_images)
#endif /* ACTIONS_H */
diff --git a/extensions/resize_images/callbacks.c b/extensions/resize_images/callbacks.c
index d774788..0bd022c 100644
--- a/extensions/resize_images/callbacks.c
+++ b/extensions/resize_images/callbacks.c
@@ -24,83 +24,42 @@
#include <glib/gi18n.h>
#include <glib-object.h>
#include <gthumb.h>
+#include <extensions/list_tools/list-tools.h>
#include "actions.h"
-#define BROWSER_DATA_KEY "resize-images-browser-data"
-
-
-static const char *fixed_ui_info =
-"<ui>"
-" <popup name='ListToolsPopup'>"
-" <placeholder name='Tools'>"
-" <menuitem name='ResizeImages' action='Tool_ResizeImages'/>"
-" </placeholder>"
-" </popup>"
-"</ui>";
-
-
-static GtkActionEntry action_entries[] = {
- { "Tool_ResizeImages", NULL,
- N_("Resize Images..."), NULL,
- N_("Resize the selected images"),
- G_CALLBACK (gth_browser_activate_action_tool_resize_images) },
+static const GActionEntry actions[] = {
+ { "resize-images", gth_browser_activate_resize_images }
};
-typedef struct {
- GtkActionGroup *action_group;
-} BrowserData;
-
-
-static void
-browser_data_free (BrowserData *data)
-{
- g_free (data);
-}
+static const GthMenuEntry action_entries[] = {
+ { N_("Resize Images..."), "win.resize-images" }
+};
void
ri__gth_browser_construct_cb (GthBrowser *browser)
{
- BrowserData *data;
- GError *error = NULL;
-
g_return_if_fail (GTH_IS_BROWSER (browser));
- data = g_new0 (BrowserData, 1);
-
- data->action_group = gtk_action_group_new ("Resize Images Actions");
- gtk_action_group_set_translation_domain (data->action_group, NULL);
- gtk_action_group_add_actions (data->action_group,
- action_entries,
- G_N_ELEMENTS (action_entries),
- browser);
- gtk_ui_manager_insert_action_group (gth_browser_get_ui_manager (browser), data->action_group, 0);
-
- if (! gtk_ui_manager_add_ui_from_string (gth_browser_get_ui_manager (browser), fixed_ui_info, -1,
&error)) {
- g_message ("building menus failed: %s", error->message);
- g_clear_error (&error);
- }
-
- g_object_set_data_full (G_OBJECT (browser), BROWSER_DATA_KEY, data, (GDestroyNotify)
browser_data_free);
+ g_action_map_add_action_entries (G_ACTION_MAP (browser),
+ actions,
+ G_N_ELEMENTS (actions),
+ browser);
+ gth_menu_manager_append_entries (gth_browser_get_menu_manager (browser,
GTH_BROWSER_MENU_MANAGER_TOOLS2),
+ action_entries,
+ G_N_ELEMENTS (action_entries));
}
void
ri__gth_browser_update_sensitivity_cb (GthBrowser *browser)
{
- BrowserData *data;
- GtkAction *action;
- int n_selected;
- gboolean sensitive;
-
- data = g_object_get_data (G_OBJECT (browser), BROWSER_DATA_KEY);
- g_return_if_fail (data != NULL);
+ int n_selected;
+ gboolean sensitive;
n_selected = gth_file_selection_get_n_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view
(browser)));
sensitive = n_selected > 0;
-
- action = gtk_action_group_get_action (data->action_group, "Tool_ResizeImages");
- g_object_set (action, "sensitive", sensitive, NULL);
+ gth_window_enable_action (GTH_WINDOW (browser), "resize-images", sensitive);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]