[gnome-commander/gcmd-1-10] Part III: Migrate the execute popup entry from GnomeUIInfo to GtkUIManager
- From: Uwe Scholz <uwescholz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-commander/gcmd-1-10] Part III: Migrate the execute popup entry from GnomeUIInfo to GtkUIManager
- Date: Thu, 14 May 2020 20:50:17 +0000 (UTC)
commit 52a64623d56de376f66a6a8570fcf49cb167e53d
Author: Uwe Scholz <u scholz83 gmx de>
Date: Thu May 14 22:47:08 2020 +0200
Part III: Migrate the execute popup entry from GnomeUIInfo to GtkUIManager
src/gnome-cmd-file-popmenu.cc | 43 +++++++++++++++++++++++++++----------------
src/gnome-cmd-file-popmenu.h | 3 ++-
2 files changed, 29 insertions(+), 17 deletions(-)
---
diff --git a/src/gnome-cmd-file-popmenu.cc b/src/gnome-cmd-file-popmenu.cc
index 1c8d1ecd..531e0819 100644
--- a/src/gnome-cmd-file-popmenu.cc
+++ b/src/gnome-cmd-file-popmenu.cc
@@ -601,32 +601,19 @@ GtkWidget *gnome_cmd_file_popmenu_new (GnomeCmdFileList *gnomeCmdFileList)
{
gint pos, match_count;
- static GnomeUIInfo exec_uiinfo[] =
- {
- GNOMEUIINFO_ITEM_NONE(N_("E_xecute"), nullptr, on_execute),
- GNOMEUIINFO_END
- };
-
g_return_val_if_fail (GNOME_CMD_IS_FILE_LIST (gnomeCmdFileList), nullptr);
auto files = gnomeCmdFileList->get_selected_files();
if (!files) return nullptr;
- auto gnomeCmdFile = static_cast<GnomeCmdFile*> (files->data);
-
GtkUIManager *ui_manager = get_file_popup_ui_manager(gnomeCmdFileList);
add_open_with_entries(ui_manager, gnomeCmdFileList);
+ add_execute_entry(ui_manager, gnomeCmdFileList);
GtkWidget *menu = gtk_ui_manager_get_widget (ui_manager, "/FilePopup");
- exec_uiinfo[0].user_data = files;
-
// Fill the menu
pos = 0;
pos += 3;
- if (gnomeCmdFile->is_executable() && g_list_length (files) == 1)
- gnome_app_fill_menu (GTK_MENU_SHELL (menu), exec_uiinfo, nullptr, FALSE, pos++);
-
- //gnome_app_fill_menu (GTK_MENU_SHELL (menu), sep_uiinfo, nullptr, FALSE, pos++);
// Add favorite applications
match_count = 0;
@@ -784,6 +771,7 @@ GtkType gnome_cmd_file_popmenu_get_type ()
{ "Rename", GTK_STOCK_EDIT, _("Rename"), nullptr, nullptr,
(GCallback) on_rename },
{ "Send", GTK_STOCK_EXECUTE, _("Send files"), nullptr, nullptr,
(GCallback) file_sendto },
{ "Properties", GTK_STOCK_PROPERTIES, _("_Properties…"), nullptr, nullptr,
(GCallback) on_properties },
+ { "Execute", GTK_STOCK_EXECUTE, _("E_xecute"), nullptr, nullptr,
(GCallback) on_execute },
{ "Terminal", "gnome-commander-terminal", _("Open _terminal here"), nullptr, nullptr,
(GCallback) command_open_terminal__internal },
{ "CopyFileNames", "gnome-commander-copy-file-names", _("Copy file names"), nullptr, nullptr,
(GCallback) edit_copy_fnames },
};
@@ -839,8 +827,7 @@ void add_open_with_entries(GtkUIManager *ui_manager, GnomeCmdFileList *gnomeCmdF
static guint mergeIdOpenWith = 0;
static GtkActionGroup *dynamicActionGroup = nullptr;
auto files = gnomeCmdFileList->get_selected_files();
- GnomeCmdFile *gnomeCmdFile = nullptr;
- gnomeCmdFile = static_cast<GnomeCmdFile*> (files->data);;
+ auto gnomeCmdFile = static_cast<GnomeCmdFile*> (files->data);
if (mergeIdOpenWith != 0)
{
@@ -933,4 +920,28 @@ void add_open_with_entries(GtkUIManager *ui_manager, GnomeCmdFileList *gnomeCmdF
g_free(openWithDefaultAppName);
gnome_vfs_mime_application_list_free (tmp_list);
+}
+
+void add_execute_entry(GtkUIManager *ui_manager, GnomeCmdFileList *gnomeCmdFileList)
+{
+ static guint mergeIdExecute = 0;
+ static GtkActionGroup *dynamicActionGroup = nullptr;
+ auto files = gnomeCmdFileList->get_selected_files();
+ auto gnomeCmdFile = static_cast<GnomeCmdFile*> (files->data);
+
+ if (mergeIdExecute != 0)
+ {
+ gtk_ui_manager_remove_ui (ui_manager, mergeIdExecute);
+ mergeIdExecute = 0;
+ }
+
+ if (gnomeCmdFile->is_executable() && g_list_length (files) == 1)
+ {
+ mergeIdExecute = gtk_ui_manager_new_merge_id (ui_manager);
+ dynamicActionGroup = gtk_action_group_new ("executeActionGroup");
+ gtk_ui_manager_insert_action_group (ui_manager, dynamicActionGroup, 0);
+
+ gtk_ui_manager_add_ui (ui_manager, mergeIdExecute, "/FilePopup/Cut", "Execute", "Execute",
+ GTK_UI_MANAGER_AUTO, true);
+ }
}
\ No newline at end of file
diff --git a/src/gnome-cmd-file-popmenu.h b/src/gnome-cmd-file-popmenu.h
index 1338d4fd..c77e8ec2 100644
--- a/src/gnome-cmd-file-popmenu.h
+++ b/src/gnome-cmd-file-popmenu.h
@@ -53,4 +53,5 @@ GtkWidget *gnome_cmd_file_popmenu_new (GnomeCmdFileList *fl);
GtkType gnome_cmd_file_popmenu_get_type ();
GtkUIManager *get_file_popup_ui_manager (GnomeCmdFileList *gnomeCmdFileList);
-void add_open_with_entries (GtkUIManager *ui_manager, GnomeCmdFileList *gnomeCmdFileList);
\ No newline at end of file
+void add_open_with_entries (GtkUIManager *ui_manager, GnomeCmdFileList *gnomeCmdFileList);
+void add_execute_entry(GtkUIManager *ui_manager, GnomeCmdFileList *gnomeCmdFileList);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]