Commit 3b6c52bf authored by Morten Welinder's avatar Morten Welinder

ssconvert: enable --export-file-per-sheet for html and latex.

Also fix scope of latex savers -- one sheet only.
parent d726b63e
......@@ -5,6 +5,7 @@ Morten:
* Introspection fixes.
* Work around gtk+ breakage re. link colors.
* Fix problems with ssconvert --export-file-per-sheet. [#694408]
* Enable --export-file-per-sheet for html and latex.
--------------------------------------------------------------------------
Gnumeric 1.12.41
......
......@@ -48,6 +48,8 @@
#include <gsf/gsf-output.h>
#include <string.h>
#define SHEET_SELECTION_KEY "sheet-selection"
/*
* html_version_t:
*
......@@ -694,9 +696,10 @@ static void
html_file_save (GOFileSaver const *fs, GOIOContext *io_context,
WorkbookView const *wb_view, GsfOutput *output, html_version_t version)
{
GSList *sheets, *ptr;
Workbook *wb = wb_view_get_workbook (wb_view);
GOFileSaveScope save_scope;
GPtrArray *sel;
unsigned ui, count;
g_return_if_fail (fs != NULL);
g_return_if_fail (wb != NULL);
......@@ -775,12 +778,17 @@ html_file_save (GOFileSaver const *fs, GOIOContext *io_context,
break;
}
sheets = workbook_sheets (wb);
save_scope = go_file_saver_get_save_scope (fs);
for (ptr = sheets ; ptr != NULL ; ptr = ptr->next) {
write_sheet (output, (Sheet *) ptr->data, version, save_scope);
sel = g_object_get_data (G_OBJECT (wb), SHEET_SELECTION_KEY);
count = sel ? sel->len : workbook_sheet_count (wb);
for (ui = 0; ui < count; ui++) {
Sheet *sheet = sel
? g_ptr_array_index (sel, ui)
: workbook_sheet_by_index (wb, ui);
write_sheet (output, sheet, version, save_scope);
}
g_slist_free (sheets);
if (version == HTML32 || version == HTML40 || version == XHTML)
gsf_output_puts (output, "</body>\n</html>\n");
}
......
......@@ -63,6 +63,8 @@
#include <gsf/gsf-output.h>
#include <string.h>
#define SHEET_SELECTION_KEY "sheet-selection"
typedef enum {
LATEX_NO_BORDER = 0,
LATEX_SINGLE_BORDER = 1,
......@@ -1290,6 +1292,7 @@ void
latex_file_save (G_GNUC_UNUSED GOFileSaver const *fs, G_GNUC_UNUSED GOIOContext *io_context,
WorkbookView const *wb_view, GsfOutput *output)
{
Workbook *wb = wb_view_get_workbook (wb_view);
GnmCell *cell;
Sheet *current_sheet;
GnmRange total_range;
......@@ -1299,9 +1302,13 @@ latex_file_save (G_GNUC_UNUSED GOFileSaver const *fs, G_GNUC_UNUSED GOIOContext
GnmStyleBorderType *clines, *this_clines;
GnmStyleBorderType *prev_vert = NULL, *next_vert = NULL, *this_vert;
gboolean needs_hline;
GPtrArray *sel;
/* Get the topmost sheet and its range from the plugin function argument. */
current_sheet = wb_view_cur_sheet(wb_view);
/* Get the sheet and its range from the plugin function argument. */
sel = g_object_get_data (G_OBJECT (wb), SHEET_SELECTION_KEY);
current_sheet = sel && sel->len
? g_ptr_array_index (sel, 0)
: wb_view_cur_sheet(wb_view);
total_range = file_saver_sheet_get_extent (current_sheet);
/* This is the preamble of the LaTeX2e file. */
......@@ -1551,7 +1558,7 @@ latex2e_table_write_file_header(GsfOutput *output)
}
/**
* latex_table_file_save : The LaTeX2e exporter plugin function.
* latex_table_file_save_impl : The LaTeX2e exporter plugin function.
*
* @WorkbookView: this provides the way to access the sheet being exported.
* @outpu: where we'll write.
......@@ -1563,16 +1570,21 @@ latex2e_table_write_file_header(GsfOutput *output)
static void
latex_table_file_save_impl (WorkbookView const *wb_view, GsfOutput *output, gboolean all)
{
Workbook *wb = wb_view_get_workbook (wb_view);
GnmCell *cell;
Sheet *current_sheet;
GnmRange total_range;
int row, col;
GPtrArray *sel;
/* This is the preamble of the LaTeX2e file. */
latex2e_table_write_file_header(output);
/* Get the topmost sheet and its range from the plugin function argument. */
current_sheet = wb_view_cur_sheet(wb_view);
/* Get the sheet and its range from the plugin function argument. */
sel = g_object_get_data (G_OBJECT (wb), SHEET_SELECTION_KEY);
current_sheet = sel && sel->len
? g_ptr_array_index (sel, 0)
: wb_view_cur_sheet(wb_view);
total_range = file_saver_sheet_get_extent (current_sheet);
/* Step through the sheet, writing cells as appropriate. */
......@@ -1609,8 +1621,8 @@ latex_table_file_save_impl (WorkbookView const *wb_view, GsfOutput *output, gboo
* @WorkbookView: this provides the way to access the sheet being exported.
* @output: where we'll write.
*
* This writes the top sheet of a Gnumeric workbook as the content of a latex table environment.
* We try to avoid all formatting.
* This writes the selected sheet of a Gnumeric workbook as the content of a
* latex table environment. We try to avoid all formatting.
*/
void
latex_table_file_save (G_GNUC_UNUSED GOFileSaver const *fs,
......@@ -1628,13 +1640,13 @@ latex_table_file_save (G_GNUC_UNUSED GOFileSaver const *fs,
* @WorkbookView: this provides the way to access the sheet being exported.
* @output: where we'll write.
*
* This writes the top sheet of a Gnumeric workbook as the content of a latex table environment.
* We try to avoid all formatting.
* This writes the selected sheet of a Gnumeric workbook as the content of a
* latex table environment. We try to avoid all formatting.
*/
void
latex_table_visible_file_save (G_GNUC_UNUSED GOFileSaver const *fs,
G_GNUC_UNUSED GOIOContext *io_context,
WorkbookView const *wb_view, GsfOutput *output)
G_GNUC_UNUSED GOIOContext *io_context,
WorkbookView const *wb_view, GsfOutput *output)
{
latex_table_file_save_impl (wb_view, output, FALSE);
}
......@@ -17,22 +17,26 @@
<suffix>htm</suffix>
</suffixes>
</service>
<service type="file_saver" id="html32" file_extension="html" format_level="write_only">
<service type="file_saver" id="html32" file_extension="html"
format_level="write_only" sheet_selection="true">
<information>
<_description>HTML 3.2 (*.html)</_description>
</information>
</service>
<service type="file_saver" id="html40" file_extension="html" format_level="write_only">
<service type="file_saver" id="html40" file_extension="html"
format_level="write_only" sheet_selection="true">
<information>
<_description>HTML 4.0 (*.html)</_description>
</information>
</service>
<service type="file_saver" id="html40frag" file_extension="html" format_level="write_only">
<service type="file_saver" id="html40frag" file_extension="html"
format_level="write_only" sheet_selection="true">
<information>
<_description>HTML (*.html) fragment</_description>
</information>
</service>
<service type="file_saver" id="xhtml" file_extension="html" format_level="write_only">
<service type="file_saver" id="xhtml" file_extension="html"
format_level="write_only" sheet_selection="true">
<information>
<_description>XHTML (*.html)</_description>
</information>
......@@ -44,17 +48,20 @@
<_description>XHTML range - for export to clipboard</_description>
</information>
</service>
<service type="file_saver" id="latex" file_extension="tex" format_level="write_only">
<service type="file_saver" id="latex" file_extension="tex"
save_scope="sheet" format_level="write_only" sheet_selection="true">
<information>
<_description>LaTeX 2e (*.tex)</_description>
</information>
</service>
<service type="file_saver" id="latex_table" file_extension="tex" format_level="write_only">
<service type="file_saver" id="latex_table" file_extension="tex"
save_scope="sheet" format_level="write_only" sheet_selection="true">
<information>
<_description>LaTeX 2e (*.tex) table fragment</_description>
</information>
</service>
<service type="file_saver" id="latex_table_visible" file_extension="tex" format_level="write_only">
<service type="file_saver" id="latex_table_visible" file_extension="tex"
save_scope="sheet" format_level="write_only" sheet_selection="true">
<information>
<_description>LaTeX 2e (*.tex) table fragment of visible rows</_description>
</information>
......
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