Commit ceb83b06 authored by Andreas J. Guelzow 's avatar Andreas J. Guelzow

Add hyperlink and comment removal menu items.

2010-07-07  Andreas J. Guelzow <aguelzow@pyrshep.ca>

	* src/GNOME_Gnumeric-gtk.xml.in: add and move hyperlink and
	  comment items
	* src/HILDON_Gnumeric-gtk.xml.in: ditto
	* component/Gnumeric-embed.xml.in: ditto
	* src/sheet-view.c (sv_update): also check the comment and hyperlink
	  items
	* src/wbc-gtk-actions.c (cb_edit_delete_links): new
	(permanent_actions): new Modify submenu of the Edit menu
	(actions): add and move hyperlink and comment actions
	* src/wbc-gtk.c (wbcg_menu_state_update): handle hyperlink and comment
	  items
	* src/workbook-control.h: new MS_* flags
parent bbd5647e
2010-07-07 Andreas J. Guelzow <aguelzow@pyrshep.ca>
* src/GNOME_Gnumeric-gtk.xml.in: add and move hyperlink and
comment items
* src/HILDON_Gnumeric-gtk.xml.in: ditto
* component/Gnumeric-embed.xml.in: ditto
* src/sheet-view.c (sv_update): also check the comment and hyperlink
items
* src/wbc-gtk-actions.c (cb_edit_delete_links): new
(permanent_actions): new Modify submenu of the Edit menu
(actions): add and move hyperlink and comment actions
* src/wbc-gtk.c (wbcg_menu_state_update): handle hyperlink and comment
items
* src/workbook-control.h: new MS_* flags
2010-07-07 Andreas J. Guelzow <aguelzow@pyrshep.ca>
* src/func.c (copy_hash_table_to_ptr_array): also exclude py_* functions
......
......@@ -18,6 +18,7 @@ Andreas:
documentation. [#623455]
* Fix HDATE and friends. [#623764]
* New functions DATE2HDATE, DATE2HDATE_HEB and DATE2JULIAN.
* Add hyperlink and comment removal menu items.
Jean:
* Fix strong/weak cursor display. [#623241]
......
......@@ -40,14 +40,20 @@
<menu name="Clear" action="MenuEditClear">
<menuitem action="EditClearAll"/>
<menuitem action="EditClearFormats"/>
<menuitem action="EditClearComments"/>
<menuitem action="EditClearContent"/>
</menu>
<menu name="Delete" action="MenuEditDelete">
<menuitem action="EditDeleteColumns"/>
<menuitem action="EditDeleteRows"/>
<menuitem action="EditDeleteCells"/>
<menuitem action="EditClearComments"/>
<menuitem action="EditClearHyperlinks"/>
</menu>
<menu name="EditItems" action="MenuEditItems">
<menuitem action="EditComment"/>
<menuitem action="EditHyperlink"/>
<menuitem action="EditNames"/>
</menu>
<separator name="edit-sep3"/>
<menuitem action="EditFind"/>
<menuitem action="EditReplace"/>
......@@ -111,10 +117,7 @@
-->
<menuitem action="InsertImage"/>
<menuitem action="InsertFormula"/>
<menu name="Names" action="MenuInsertNames">
<menuitem action="EditNames"/>
<menuitem action="PasteNames"/>
</menu>
<menuitem action="InsertNames"/>
<menuitem action="InsertComment"/>
<menuitem action="InsertHyperlink"/>
<menu name="Special" action="MenuInsertSpecial">
......
......@@ -41,14 +41,20 @@
<menu name="Clear" action="MenuEditClear">
<menuitem action="EditClearAll"/>
<menuitem action="EditClearFormats"/>
<menuitem action="EditClearComments"/>
<menuitem action="EditClearContent"/>
</menu>
<menu name="Delete" action="MenuEditDelete">
<menuitem action="EditDeleteColumns"/>
<menuitem action="EditDeleteRows"/>
<menuitem action="EditDeleteCells"/>
<menuitem action="EditClearComments"/>
<menuitem action="EditClearHyperlinks"/>
</menu>
<menu name="EditItems" action="MenuEditItems">
<menuitem action="EditComment"/>
<menuitem action="EditHyperlink"/>
<menuitem action="EditNames"/>
</menu>
<separator name="edit-sep3"/>
<menuitem action="EditFind"/>
<menuitem action="EditReplace"/>
......@@ -112,10 +118,7 @@
-->
<menuitem action="InsertImage"/>
<menuitem action="InsertFormula"/>
<menu name="Names" action="MenuInsertNames">
<menuitem action="EditNames"/>
<menuitem action="PasteNames"/>
</menu>
<menuitem action="InsertNames"/>
<menuitem action="InsertComment"/>
<menuitem action="InsertHyperlink"/>
<menu name="Special" action="MenuInsertSpecial">
......
......@@ -52,14 +52,20 @@
<menu name="Clear" action="MenuEditClear">
<menuitem action="EditClearAll"/>
<menuitem action="EditClearFormats"/>
<menuitem action="EditClearComments"/>
<menuitem action="EditClearContent"/>
</menu>
<menu name="Delete" action="MenuEditDelete">
<menuitem action="EditDeleteColumns"/>
<menuitem action="EditDeleteRows"/>
<menuitem action="EditDeleteCells"/>
<menuitem action="EditClearComments"/>
<menuitem action="EditClearHyperLinks"/>
</menu>
<menu name="EditItems" action="MenuEditItems">
<menuitem action="EditComment"/>
<menuitem action="EditHyperlink"/>
<menuitem action="EditNames"/>
</menu>
<separator name="edit-sep3"/>
<menuitem action="EditFind"/>
<menuitem action="EditReplace"/>
......@@ -121,10 +127,7 @@
-->
<menuitem action="InsertImage"/>
<menuitem action="InsertFormula"/>
<menu name="Names" action="MenuInsertNames">
<menuitem action="EditNames"/>
<menuitem action="PasteNames"/>
</menu>
<menuitem action="InsertNames"/>
<menuitem action="InsertComment"/>
<menuitem action="InsertHyperlink"/>
<menu name="Special" action="MenuInsertSpecial">
......
......@@ -639,8 +639,12 @@ sv_update (SheetView *sv)
if (sv->edit_pos_changed.location) {
sv->edit_pos_changed.location = FALSE;
if (wb_view_cur_sheet_view (sv->sv_wbv) == sv)
if (wb_view_cur_sheet_view (sv->sv_wbv) == sv) {
wb_view_selection_desc (sv->sv_wbv, TRUE, NULL);
SHEET_VIEW_FOREACH_CONTROL
(sv, sc, wb_control_menu_state_update
(sc_wbc (sc), MS_COMMENT_LINKS););
}
}
if (sv->selection_content_changed) {
......@@ -652,7 +656,8 @@ sv_update (SheetView *sv)
cb_update_auto_expr, (gpointer) sv, NULL);
}
SHEET_VIEW_FOREACH_CONTROL (sv, sc,
wb_control_menu_state_update (sc_wbc (sc), MS_ADD_VS_REMOVE_FILTER););
wb_control_menu_state_update (sc_wbc (sc), MS_ADD_VS_REMOVE_FILTER |
MS_COMMENT_LINKS_RANGE););
}
SHEET_VIEW_FOREACH_CONTROL (sv, sc,
......
......@@ -355,6 +355,31 @@ static GNM_ACTION_DEF (cb_edit_delete_cells)
{
dialog_delete_cells (wbcg);
}
static GNM_ACTION_DEF (cb_edit_delete_links)
{
SheetControlGUI *scg = wbcg_cur_scg (wbcg);
GnmStyle *style = gnm_style_new ();
GSList *l;
int n_links = 0;
gchar const *format;
gchar *name;
WorkbookControl *wbc = WORKBOOK_CONTROL (wbcg);
Sheet *sheet = wb_control_cur_sheet (wbc);;
for (l = scg_view (scg)->selections; l != NULL; l = l->next) {
GnmRange const *r = l->data;
GnmStyleList *styles;
styles = sheet_style_collect_hlinks (sheet, r);
n_links += g_slist_length (styles);
style_list_free (styles);
}
format = ngettext ("Remove %d Link", "Remove %d Links", n_links);
name = g_strdup_printf (format, n_links);
gnm_style_set_hlink (style, NULL);
cmd_selection_format (wbc, style, NULL, name);
g_free (name);
}
static GNM_ACTION_DEF (cb_edit_select_all)
{
......@@ -1741,13 +1766,13 @@ static GtkActionEntry const permanent_actions[] = {
{ "MenuEdit", NULL, N_("_Edit") },
{ "MenuEditClear", GTK_STOCK_CLEAR, N_("C_lear") },
{ "MenuEditDelete", GTK_STOCK_DELETE, N_("_Delete") },
{ "MenuEditItems", NULL, N_("_Modify") },
{ "MenuEditSheet", NULL, N_("S_heet") },
{ "MenuEditSelect", NULL, N_("_Select") },
{ "MenuView", NULL, N_("_View") },
{ "MenuViewWindows", NULL, N_("_Windows") },
{ "MenuViewToolbars", NULL, N_("_Toolbars") },
{ "MenuInsert", NULL, N_("_Insert") },
{ "MenuInsertNames", NULL, N_("_Names") },
{ "MenuInsertSpecial", NULL, N_("S_pecial") },
{ "MenuFormat", NULL, N_("F_ormat") },
{ "MenuFormatColumn", NULL, N_("C_olumn") },
......@@ -1835,8 +1860,8 @@ static GtkActionEntry const permanent_actions[] = {
NULL, N_("Redo the undone action"),
G_CALLBACK (cb_edit_redo_last) },
{ "PasteNames", GTK_STOCK_PASTE, N_("_Paste..."),
"F3", N_("Paste the definition of a name or names"),
{ "InsertNames", GTK_STOCK_PASTE, N_("_Name..."),
"F3", N_("Insert a defined name"),
G_CALLBACK (cb_paste_names) },
{ "HelpDocs", GTK_STOCK_HELP, N_("_Contents"),
......@@ -1887,16 +1912,13 @@ static GtkActionEntry const actions[] = {
G_CALLBACK (cb_file_print_area_show)},
/* Edit -> Clear */
{ "EditClearAll", NULL, N_("_All"),
{ "EditClearAll", GTK_STOCK_CLEAR, N_("_All"),
NULL, N_("Clear the selected cells' formats, comments, and contents"),
G_CALLBACK (cb_edit_clear_all) },
{ "EditClearFormats", NULL, N_("_Formats"),
NULL, N_("Clear the selected cells' formats"),
G_CALLBACK (cb_edit_clear_formats) },
{ "EditClearComments", NULL, N_("Co_mments"),
NULL, N_("Clear the selected cells' comments"),
G_CALLBACK (cb_edit_clear_comments) },
{ "EditClearContent", NULL, N_("_Contents"),
{ "EditClearContent", GTK_STOCK_CLEAR, N_("_Contents"),
NULL, N_("Clear the selected cells' contents"),
G_CALLBACK (cb_edit_clear_content) },
......@@ -1910,6 +1932,12 @@ static GtkActionEntry const actions[] = {
{ "EditDeleteCells", NULL, N_("C_ells..."),
"<control>minus", N_("Delete the selected cells, shifting others into their place"),
G_CALLBACK (cb_edit_delete_cells) },
{ "EditClearComments", "Gnumeric_CommentDelete", N_("Co_mments"),
NULL, N_("Delete the selected cells' comments"),
G_CALLBACK (cb_edit_clear_comments) },
{ "EditClearHyperlinks", "Gnumeric_Link_Delete", N_("_Hyperlinks"),
NULL, N_("Delete the selected cells' hyperlinks"),
G_CALLBACK (cb_edit_delete_links) },
/* A duplicate that should not go into the menus, used only for the accelerator */
{ "EditDeleteCellsXL", NULL, N_("C_ells..."),
"<control>KP_Subtract", N_("Delete the selected cells, shifting others into their place"),
......@@ -2001,9 +2029,17 @@ static GtkActionEntry const actions[] = {
"<shift><control>V", N_("Paste with optional filters and transformations"),
G_CALLBACK (cb_edit_paste_special) },
{ "InsertComment", "Gnumeric_CommentEdit", N_("Co_mment..."),
{ "EditComment", "Gnumeric_CommentEdit", N_("Co_mment..."),
NULL, N_("Edit the selected cell's comment"),
G_CALLBACK (cb_insert_comment) },
{ "EditHyperlink", "Gnumeric_Link_Edit", N_("Hyper_link..."),
"<control>K", N_("Edit the selected cell's hyperlink"),
G_CALLBACK (cb_insert_hyperlink) },
#if 0
{ "EditGenerateName", NULL, N_("_Auto generate names..."),
NULL, N_("Use the current selection to create names"),
G_CALLBACK (cb_auto_generate__named_expr) },
#endif
{ "EditFind", GTK_STOCK_FIND, N_("S_earch..."),
"<control>F", N_("Search for something"),
......@@ -2059,6 +2095,9 @@ static GtkActionEntry const actions[] = {
NULL, N_("Insert an image"),
G_CALLBACK (cb_insert_image) },
{ "InsertComment", "Gnumeric_CommentAdd", N_("Co_mment..."),
NULL, N_("Insert a comment"),
G_CALLBACK (cb_insert_comment) },
{ "InsertHyperlink", "Gnumeric_Link_Add", N_("Hyper_link..."),
"<control>K", N_("Insert a Hyperlink"),
G_CALLBACK (cb_insert_hyperlink) },
......@@ -2076,14 +2115,9 @@ static GtkActionEntry const actions[] = {
G_CALLBACK (cb_insert_current_date_time) },
/* Insert -> Name */
{ "EditNames", NULL, N_("_Define..."),
"<control>F3", N_("Edit sheet and workbook names"),
{ "EditNames", NULL, N_("_Names..."),
"<control>F3", N_("Edit defined names for expressions"),
G_CALLBACK (cb_define_name) },
#if 0
{ "EditGenerateName", NULL, N_("_Auto generate names..."),
NULL, N_("Use the current selection to create names"),
G_CALLBACK (cb_auto_generate__named_expr) },
#endif
/* Format */
{ "FormatCells", NULL, N_("_Cells..."),
......
......@@ -59,6 +59,7 @@
#include "ranges.h"
#include "dead-kittens.h"
#include "tools/analysis-auto-expression.h"
#include "sheet-object-cell-comment.h"
#include <goffice/goffice.h>
#include <gsf/gsf-impl-utils.h>
......@@ -1541,7 +1542,7 @@ wbcg_menu_state_update (WorkbookControl *wbc, int flags)
wbc_gtk_set_action_sensitivity (wbcg, "EditReplace", !has_guru);
if (MS_DEFINE_NAME & flags) {
wbc_gtk_set_action_sensitivity (wbcg, "EditNames", !has_guru);
wbc_gtk_set_action_sensitivity (wbcg, "PasteNames", !has_guru);
wbc_gtk_set_action_sensitivity (wbcg, "InsertNames", !has_guru);
}
if (MS_CONSOLIDATE & flags)
wbc_gtk_set_action_sensitivity (wbcg, "DataConsolidate", !has_guru);
......@@ -1615,7 +1616,48 @@ wbcg_menu_state_update (WorkbookControl *wbc, int flags)
wbc_gtk_set_action_sensitivity (wbcg, "DataAutoFilter", active);
}
if (MS_COMMENT_LINKS & flags) {
gboolean has_comment
= (sheet_get_comment (sheet, &sv->edit_pos) != NULL);
gboolean has_link;
GnmRange rge;
range_init_cellpos (&rge, &sv->edit_pos);
has_link = (NULL !=
sheet_style_region_contains_link (sheet, &rge));
wbc_gtk_set_action_sensitivity
(wbcg, "EditComment", has_comment);
wbc_gtk_set_action_sensitivity
(wbcg, "EditHyperlink", has_link);
}
if (MS_COMMENT_LINKS_RANGE & flags) {
GSList *l;
gboolean has_links = FALSE, has_comments = FALSE;
for (l = scg_view (scg)->selections;
l != NULL; l = l->next) {
GnmRange const *r = l->data;
GSList *objs;
GnmStyleList *styles;
if (!has_links) {
styles = sheet_style_collect_hlinks
(sheet, r);
has_links = (styles != NULL);
style_list_free (styles);
}
if (!has_comments) {
objs = sheet_objects_get
(sheet, r, CELL_COMMENT_TYPE);
has_comments = (objs != NULL);
g_slist_free (objs);
}
if(has_comments && has_links)
break;
}
wbc_gtk_set_action_sensitivity
(wbcg, "EditClearHyperlinks", has_links);
wbc_gtk_set_action_sensitivity
(wbcg, "EditClearComments", has_comments);
}
{
gboolean const has_slicer = (NULL != sv_editpos_in_slicer (sv));
char const* label = has_slicer
......
......@@ -56,7 +56,9 @@ enum {
MS_ADD_VS_REMOVE_FILTER = 1 << 10,
MS_SHOW_PRINTAREA = 1 << 11,
MS_SELECT_OBJECT = 1 << 12,
MS_FILTER_STATE_CHANGED = 1 << 13
MS_FILTER_STATE_CHANGED = 1 << 13,
MS_COMMENT_LINKS_RANGE = 1 << 14,
MS_COMMENT_LINKS = 1 << 15
};
#define MS_ALL \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment