From dbb570fc748d0c2743c58f601fa7df54515f8ed0 Mon Sep 17 00:00:00 2001 From: yangzhuangzhuang Date: Thu, 1 Sep 2022 17:01:47 +0800 Subject: [PATCH] Right-click to add new text document function Add the text document button and place the text document and new folder in the New button --- po/zh_CN.po | 6 +++ src/nautilus-files-view.c | 47 +++++++++++++++++++ .../ui/nautilus-files-view-context-menus.ui | 23 +++++++-- 3 files changed, 72 insertions(+), 4 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index 7b484cf..7fbb840 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -5887,3 +5887,9 @@ msgstr "显示侧边栏(S)" msgid "Sort" msgstr "排序" + +msgid "_Document" +msgstr "文本文档" + +msgid "_Create" +msgstr "新建" diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index 666fcf3..1b2cf73 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -2413,6 +2413,16 @@ nautilus_files_view_new_file (NautilusFilesView *directory_view, g_free (container_uri); } +static void +action_new_file (GSimpleAction *action, + GVariant *state, + gpointer user_data) +{ + g_assert (NAUTILUS_IS_FILES_VIEW (user_data)); + + nautilus_files_view_new_file (NAUTILUS_FILES_VIEW (user_data), NULL, NULL); +} + static void action_new_folder (GSimpleAction *action, GVariant *state, @@ -6955,6 +6965,7 @@ const GActionEntry view_entries[] = { "paste_accel", action_paste_files_accel }, { "create-link", action_create_links }, { "new-document" }, + { "new-file", action_new_file }, /* Selection menu */ { "scripts" }, { "new-folder-with-selection", action_new_folder_with_selection }, @@ -7353,6 +7364,11 @@ real_update_actions_state (NautilusFilesView *view) gboolean show_star; gboolean show_unstar; gchar *uri; + GAppInfo *default_app; + gboolean can_create_text; + gboolean can_create_document; + gboolean can_create_spreadsheet; + gboolean can_create_presentation; priv = nautilus_files_view_get_instance_private (view); @@ -7448,6 +7464,32 @@ real_update_actions_state (NautilusFilesView *view) "new-folder"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), can_create_files); + action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), + "new-file"); + + default_app = g_app_info_get_default_for_type ("text/plain", FALSE); + can_create_text = default_app != NULL; + g_object_unref (default_app); + + default_app = g_app_info_get_default_for_type ("application/vnd.oasis.opendocument.text", FALSE); + can_create_document = default_app != NULL; + g_object_unref (default_app); + + default_app = g_app_info_get_default_for_type ("application/vnd.oasis.opendocument.spreadsheet", FALSE); + can_create_spreadsheet = default_app != NULL; + g_object_unref (default_app); + + default_app = g_app_info_get_default_for_type ("application/vnd.oasis.opendocument.presentation", FALSE); + can_create_presentation = default_app != NULL; + g_object_unref (default_app); + + g_simple_action_set_enabled (G_SIMPLE_ACTION (action), + can_create_files && ( + can_create_text || + can_create_document || + can_create_spreadsheet || + can_create_presentation)); + item_opens_in_view = selection_count != 0; for (l = selection; l != NULL; l = l->next) @@ -7646,6 +7688,10 @@ real_update_actions_state (NautilusFilesView *view) !selection_contains_starred && priv->templates_present); + action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), + "new-file"); + g_simple_action_set_enabled (G_SIMPLE_ACTION (action), can_create_files); + g_object_ref (view); /* Need to keep the object alive until we get the reply */ gtk_clipboard_request_text (nautilus_clipboard_get (GTK_WIDGET (view)), on_clipboard_contents_received, @@ -9776,6 +9822,7 @@ nautilus_files_view_init (NautilusFilesView *view) nautilus_application_set_accelerator (app, "view.cut", "x"); nautilus_application_set_accelerator (app, "view.copy", "c"); nautilus_application_set_accelerator (app, "view.create-link-in-place", "m"); + nautilus_application_set_accelerator (app, "view.new-file", "f"); nautilus_application_set_accelerator (app, "view.new-folder", "n"); /* Only accesible by shorcuts */ nautilus_application_set_accelerator (app, "view.select-pattern", "s"); diff --git a/src/resources/ui/nautilus-files-view-context-menus.ui b/src/resources/ui/nautilus-files-view-context-menus.ui index 279646d..420b0b5 100644 --- a/src/resources/ui/nautilus-files-view-context-menus.ui +++ b/src/resources/ui/nautilus-files-view-context-menus.ui @@ -1,10 +1,24 @@ - - New _Folder - view.new-folder - +
+ + _Create +
+ + New _Folder + view.new-folder + +
+
+ + _Document + view.new-file + +
+
+
+
templates-submenu New _Document @@ -46,6 +60,7 @@
+
_Paste -- 2.27.0