From 88f6ad8bebb4a6ef583d1e061ae2faa6d5dd93de Mon Sep 17 00:00:00 2001 From: Fordi Date: Thu, 14 Jul 2016 15:41:09 -0400 Subject: [PATCH] Added 'Rename' option to right-click menu for Documents tab --- src/document.c | 7 ++++++- src/document.h | 1 + src/sidebar.c | 18 +++++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/document.c b/src/document.c index e144cc1d10..464898ad28 100644 --- a/src/document.c +++ b/src/document.c @@ -1273,7 +1273,6 @@ void document_show_tab(GeanyDocument *doc) document_get_notebook_page(doc)); } - /* To open a new file, set doc to NULL; filename should be locale encoded. * To reload a file, set the doc for the document to be reloaded; filename should be NULL. * pos is the cursor position, which can be overridden by --line and --column. @@ -1656,6 +1655,12 @@ gboolean document_reload_prompt(GeanyDocument *doc, const gchar *forced_enc) g_free(base_name); return result; } +/* also used for reloading when forced_enc is NULL */ +gboolean document_rename_prompt(GeanyDocument *doc) { + document_show_tab(doc); + dialogs_show_save_as(); + return FALSE; +} static void document_update_timestamp(GeanyDocument *doc, const gchar *locale_filename) diff --git a/src/document.h b/src/document.h index 24c5a4e8a0..b66a9476ef 100644 --- a/src/document.h +++ b/src/document.h @@ -240,6 +240,7 @@ extern GPtrArray *documents_array; GeanyDocument* document_new_file_if_non_open(void); gboolean document_reload_prompt(GeanyDocument *doc, const gchar *forced_enc); +gboolean document_rename_prompt(GeanyDocument *doc); void document_reload_config(GeanyDocument *doc); diff --git a/src/sidebar.c b/src/sidebar.c index 639da56b49..ca563a2843 100644 --- a/src/sidebar.c +++ b/src/sidebar.c @@ -74,7 +74,8 @@ enum { OPENFILES_ACTION_REMOVE = 0, OPENFILES_ACTION_SAVE, - OPENFILES_ACTION_RELOAD + OPENFILES_ACTION_RELOAD, + OPENFILES_ACTION_RENAME }; /* documents tree model columns */ @@ -724,6 +725,16 @@ static void create_openfiles_popup_menu(void) G_CALLBACK(on_openfiles_document_action), GINT_TO_POINTER(OPENFILES_ACTION_RELOAD)); doc_items.reload = item; + item = gtk_image_menu_item_new_with_mnemonic(_("R_ename or Save As...")); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), + gtk_image_new_from_stock(GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU)); + gtk_widget_show(item); + gtk_container_add(GTK_CONTAINER(openfiles_popup_menu), item); + g_signal_connect(item, "activate", + G_CALLBACK(on_openfiles_document_action), GINT_TO_POINTER(OPENFILES_ACTION_RENAME)); + doc_items.reload = item; + + item = gtk_separator_menu_item_new(); gtk_widget_show(item); gtk_container_add(GTK_CONTAINER(openfiles_popup_menu), item); @@ -830,6 +841,11 @@ static void document_action(GeanyDocument *doc, gint action) document_reload_prompt(doc, NULL); break; } + case OPENFILES_ACTION_RENAME: + { + document_rename_prompt(doc); + break; + } } }