[gnumeric] enable/disable Repeat Export menu item as appropriate
- From: Andreas J. Guelzow <guelzow src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] enable/disable Repeat Export menu item as appropriate
- Date: Wed, 8 Aug 2012 04:37:28 +0000 (UTC)
commit a3e33b35b212f02f06d187c1e5169dacd6932629
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date: Tue Aug 7 22:36:18 2012 -0600
enable/disable Repeat Export menu item as appropriate
2012-08-07 Andreas J. Guelzow <aguelzow pyrshep ca>
* src/gui-file.c (gui_file_save_as): use workbook_get_last_export_uri
and workbook_get_file_exporter
(gui_file_export_repeat): ditto
* src/wbc-gtk.c (wbcg_menu_state_update): handle MS_FILE_EXPORT_IMPORT
* src/workbook-control.h (MS_FILE_EXPORT_IMPORT): new
* src/workbook-view.c (wb_view_save_as): use workbook_set_last_export_uri
* src/workbook.c (workbook_set_file_exporter): new
(workbook_set_last_export_uri): new
(cb_exporter_finalize): use workbook_set_file_exporter
(workbook_dispose): use workbook_set_last_export_uri
* src/workbook.h (workbook_set_file_exporter): new
(workbook_set_last_export_uri): new
ChangeLog | 15 +++++++++++++++
src/gui-file.c | 15 ++++++++-------
src/wbc-gtk.c | 17 +++++++++++++++++
src/workbook-control.h | 5 +++--
src/workbook-view.c | 13 +++++--------
src/workbook.c | 27 +++++++++++++++++++++------
src/workbook.h | 4 +++-
7 files changed, 72 insertions(+), 24 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 604358a..9ab80fe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
2012-08-07 Andreas J. Guelzow <aguelzow pyrshep ca>
+ * src/gui-file.c (gui_file_save_as): use workbook_get_last_export_uri
+ and workbook_get_file_exporter
+ (gui_file_export_repeat): ditto
+ * src/wbc-gtk.c (wbcg_menu_state_update): handle MS_FILE_EXPORT_IMPORT
+ * src/workbook-control.h (MS_FILE_EXPORT_IMPORT): new
+ * src/workbook-view.c (wb_view_save_as): use workbook_set_last_export_uri
+ * src/workbook.c (workbook_set_file_exporter): new
+ (workbook_set_last_export_uri): new
+ (cb_exporter_finalize): use workbook_set_file_exporter
+ (workbook_dispose): use workbook_set_last_export_uri
+ * src/workbook.h (workbook_set_file_exporter): new
+ (workbook_set_last_export_uri): new
+
+2012-08-07 Andreas J. Guelzow <aguelzow pyrshep ca>
+
* src/stf.c (stf_read_workbook_auto_csvtab): use the csv exporter in the
saveinfo if appropriate
diff --git a/src/gui-file.c b/src/gui-file.c
index 11c7086..3c527fd 100644
--- a/src/gui-file.c
+++ b/src/gui-file.c
@@ -592,10 +592,10 @@ gui_file_save_as (WBCGtk *wbcg, WorkbookView *wb_view, file_save_as_t type,
gtk_combo_box_set_active (format_combo, g_list_index (savers, fs));
/* Set default file name */
- if (wb->last_export_uri && (type == FILE_SAVE_AS_EXPORT) && fs == wb->file_exporter)
- wb_uri = wb->last_export_uri;
- else
+ if (!(wb_uri = workbook_get_last_export_uri (wb)) || (type != FILE_SAVE_AS_EXPORT)
+ || (fs != workbook_get_file_exporter (wb)))
wb_uri = go_doc_get_uri (GO_DOC (wb));
+
if (wb_uri != NULL) {
char *basename = go_basename_from_uri (wb_uri);
char *dot = basename ? strrchr (basename, '.') : NULL;
@@ -709,9 +709,10 @@ gui_file_export_repeat (WBCGtk *wbcg)
{
WorkbookView *wb_view = wb_control_view (WORKBOOK_CONTROL (wbcg));
Workbook *wb = wb_view_get_workbook (wb_view);
- GOFileSaver *fs = wb->file_exporter;
+ GOFileSaver *fs = workbook_get_file_exporter (wb);
+ gchar const *last_uri = workbook_get_last_export_uri (wb);
- if (fs != NULL && wb->last_export_uri != NULL) {
+ if (fs != NULL && last_uri != NULL) {
char const *msg;
GtkWidget *dialog;
@@ -729,14 +730,14 @@ gui_file_export_repeat (WBCGtk *wbcg)
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
- msg, wb->last_export_uri,
+ msg, last_uri,
go_file_saver_get_description (fs));
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
if (GTK_RESPONSE_YES ==
go_gtk_dialog_run (GTK_DIALOG (dialog), wbcg_toplevel (wbcg))) {
/* We need to copy wb->last_export_uri since it will be reset during saving */
- gchar *uri = g_strdup (wb->last_export_uri);
+ gchar *uri = g_strdup (last_uri);
if(wb_view_save_as (wb_view, fs, uri, GO_CMD_CONTEXT (wbcg))) {
workbook_update_history (wb, FILE_SAVE_AS_EXPORT);
g_free (uri);
diff --git a/src/wbc-gtk.c b/src/wbc-gtk.c
index 277c3d5..73dbd1d 100644
--- a/src/wbc-gtk.c
+++ b/src/wbc-gtk.c
@@ -1627,6 +1627,23 @@ wbcg_menu_state_update (WorkbookControl *wbc, int flags)
wbc_gtk_set_action_sensitivity
(wbcg, "InsertSortIncreasing", sel_is_vector);
}
+ if (MS_FILE_EXPORT_IMPORT & flags) {
+ Workbook *wb = wb_control_get_workbook (wbc);
+ gboolean has_export_info = workbook_get_file_exporter (wb) &&
+ workbook_get_last_export_uri (wb);
+ wbc_gtk_set_action_sensitivity (wbcg, "DataExportRepeat", has_export_info);
+ if (has_export_info) {
+ gchar *base = go_basename_from_uri (workbook_get_last_export_uri (wb));
+ gchar *new_label = g_strdup_printf (_("Repeat Export to %s"),
+ base);
+ g_free (base);
+ wbc_gtk_set_action_label (wbcg, "DataExportRepeat", NULL,
+ new_label, N_("Repeat the last data export"));
+ g_free (new_label);
+ } else
+ wbc_gtk_set_action_label (wbcg, "DataExportRepeat", NULL,
+ N_("Repeat Export"), N_("Repeat the last data export"));
+ }
{
gboolean const has_slicer = (NULL != sv_editpos_in_slicer (sv));
char const* label = has_slicer
diff --git a/src/workbook-control.h b/src/workbook-control.h
index b904b1d..013480d 100644
--- a/src/workbook-control.h
+++ b/src/workbook-control.h
@@ -59,7 +59,8 @@ enum {
MS_SELECT_OBJECT = 1 << 13,
MS_FILTER_STATE_CHANGED = 1 << 14,
MS_COMMENT_LINKS_RANGE = 1 << 15,
- MS_COMMENT_LINKS = 1 << 16
+ MS_COMMENT_LINKS = 1 << 16,
+ MS_FILE_EXPORT_IMPORT = 1 << 17
};
#define MS_ALL \
@@ -67,7 +68,7 @@ enum {
MS_SHOWHIDE_DETAIL | MS_PASTE_SPECIAL | \
MS_PRINT_SETUP | MS_SEARCH_REPLACE | MS_DEFINE_NAME | MS_CONSOLIDATE | \
MS_FREEZE_VS_THAW | MS_ADD_VS_REMOVE_FILTER | MS_SHOW_PRINTAREA | \
- MS_PAGE_BREAKS | MS_SELECT_OBJECT | MS_FILTER_STATE_CHANGED)
+ MS_PAGE_BREAKS | MS_SELECT_OBJECT | MS_FILTER_STATE_CHANGED | MS_FILE_EXPORT_IMPORT)
#define MS_GURU_MENU_ITEMS \
(MS_PRINT_SETUP | MS_SEARCH_REPLACE | MS_DEFINE_NAME | MS_CONSOLIDATE)
diff --git a/src/workbook-view.c b/src/workbook-view.c
index d1c843f..c81c2be 100644
--- a/src/workbook-view.c
+++ b/src/workbook-view.c
@@ -1120,10 +1120,8 @@ wb_view_save_as (WorkbookView *wbv, GOFileSaver *fs, char const *uri,
/* See 634792. */
go_doc_set_pristine (GO_DOC (wb), FALSE);
}
- } else {
- g_free (wb->last_export_uri);
- wb->last_export_uri = g_strdup (uri);
- }
+ } else
+ workbook_set_last_export_uri (wb, g_strdup (uri));
}
if (has_error || has_warning)
go_io_error_display (io_context);
@@ -1262,10 +1260,9 @@ wb_view_new_from_input (GsfInput *input,
workbook_optimize_style (new_wb);
workbook_recalc (new_wb);
go_doc_set_dirty (GO_DOC (new_wb), FALSE);
- if (new_wb->file_exporter && optional_uri) {
- g_free (new_wb->last_export_uri);
- new_wb->last_export_uri = g_strdup (optional_uri);
- }
+ if (optional_uri && workbook_get_file_exporter (new_wb))
+ workbook_set_last_export_uri
+ (new_wb, g_strdup (optional_uri));
}
} else
go_cmd_context_error_import (GO_CMD_CONTEXT (io_context),
diff --git a/src/workbook.c b/src/workbook.c
index 9d7b7d1..54e4296 100644
--- a/src/workbook.c
+++ b/src/workbook.c
@@ -75,7 +75,7 @@ cb_exporter_finalize (Workbook *wb, GOFileSaver *saver)
g_return_if_fail (GO_IS_FILE_SAVER (saver));
g_return_if_fail (IS_WORKBOOK (wb));
g_return_if_fail (wb->file_exporter == saver);
- wb->file_exporter = NULL;
+ workbook_set_file_exporter (wb, NULL);
}
void
@@ -117,9 +117,7 @@ workbook_dispose (GObject *wb_object)
workbook_set_saveinfo (wb, GO_FILE_FL_AUTO, NULL);
if (wb->file_exporter)
workbook_set_saveinfo (wb, GO_FILE_FL_WRITE_ONLY, NULL);
-
- g_free (wb->last_export_uri);
- wb->last_export_uri = NULL;
+ workbook_set_last_export_uri (wb, NULL);
/* Remove all the sheet controls to avoid displaying while we exit */
WORKBOOK_FOREACH_CONTROL (wb, view, control,
@@ -425,8 +423,7 @@ workbook_set_saveinfo (Workbook *wb, GOFileFormatLevel level, GOFileSaver *fs)
if (wb->file_exporter != NULL)
g_object_weak_unref (G_OBJECT (wb->file_exporter),
(GWeakNotify) cb_exporter_finalize, wb);
-
- wb->file_exporter = fs;
+ workbook_set_file_exporter (wb, fs);
if (fs != NULL)
g_object_weak_ref (G_OBJECT (fs),
(GWeakNotify) cb_exporter_finalize, wb);
@@ -473,6 +470,24 @@ workbook_get_last_export_uri (Workbook *wb)
return wb->last_export_uri;
}
+void
+workbook_set_file_exporter (Workbook *wb, GOFileSaver *fs)
+{
+ wb->file_exporter = fs;
+ WORKBOOK_FOREACH_CONTROL (wb, wbv, wbc,
+ wb_control_menu_state_update (wbc, MS_FILE_EXPORT_IMPORT););
+}
+
+void
+workbook_set_last_export_uri (Workbook *wb, gchar *uri)
+{
+ g_free (wb->last_export_uri);
+ wb->last_export_uri = uri;
+ WORKBOOK_FOREACH_CONTROL (wb, wbv, wbc,
+ wb_control_menu_state_update (wbc, MS_FILE_EXPORT_IMPORT););
+}
+
+
/**
* workbook_foreach_cell_in_range:
*
diff --git a/src/workbook.h b/src/workbook.h
index 9a3d8b3..b781a7f 100644
--- a/src/workbook.h
+++ b/src/workbook.h
@@ -51,7 +51,9 @@ gboolean workbook_set_saveinfo (Workbook *wb, GOFileFormatLevel lev,
void workbook_update_history (Workbook *wb, file_save_as_t type);
GOFileSaver *workbook_get_file_saver (Workbook *wb);
GOFileSaver *workbook_get_file_exporter (Workbook *wb);
-gchar const *workbook_get_last_export_uri (Workbook *wb);
+gchar const *workbook_get_last_export_uri (Workbook *wb);
+void workbook_set_file_exporter (Workbook *wb, GOFileSaver *fs);
+void workbook_set_last_export_uri (Workbook *wb, gchar *uri);
/* See also sheet_cell_foreach_range */
GnmValue *workbook_foreach_cell_in_range (GnmEvalPos const *pos,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]