[gnumeric] ssconvert: add %o for ssconvert template expansion to object name.



commit e9761eadf1f894fc24489be7a4ac932e51bd7681
Author: Morten Welinder <terra gnome org>
Date:   Mon Apr 20 14:18:37 2020 -0400

    ssconvert: add %o for ssconvert template expansion to object name.

 ChangeLog       |  5 +++++
 doc/ssconvert.1 |  5 +++--
 src/ssconvert.c | 17 ++++++++++++++---
 3 files changed, 22 insertions(+), 5 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 821e1c8d1..261fa1b32 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2020-04-20  Morten Welinder  <terra gnome org>
+
+       * src/ssconvert.c (resolve_template): Expand %o to sheet object
+       name, if present, or the empty string.
+
 2020-04-19  Morten Welinder  <terra gnome org>
 
        * src/ssconvert.c (list_image_formats): New function, handling new
diff --git a/doc/ssconvert.1 b/doc/ssconvert.1
index 575b59084..431489fe7 100644
--- a/doc/ssconvert.1
+++ b/doc/ssconvert.1
@@ -88,8 +88,9 @@ workbook.  The merge will be aborted if there are name conflicts.
 .B \-S, \-\-export\-file\-per\-sheet
 Export a file for each sheet if the exporter only supports one sheet at a
 time.  The output filename is treated as a template in which sheet number
-is substituted for %n and/or sheet name is substituted for %s.  If there
-are no substitutions, a default of ".%s" is added.
+is substituted for %n, sheet name is substituted for %s, and sheet object
+name is substituted for %o in case of graph export.  If there are no
+substitutions, a default of ".%n" is added.
 
 .SS "Help options"
 .TP
diff --git a/src/ssconvert.c b/src/ssconvert.c
index c2cf5db5a..2b506cc62 100644
--- a/src/ssconvert.c
+++ b/src/ssconvert.c
@@ -631,7 +631,8 @@ merge (Workbook *wb, char const *inputs[],
 }
 
 static char *
-resolve_template (const char *template, Sheet *sheet, unsigned n)
+resolve_template (const char *template,
+                 Sheet *sheet, SheetObject *so, unsigned n)
 {
        GString *s = g_string_new (NULL);
        while (1) {
@@ -653,6 +654,16 @@ resolve_template (const char *template, Sheet *sheet, unsigned n)
                        case 's':
                                g_string_append (s, sheet->name_unquoted);
                                break;
+                       case 'o': {
+                               char *name = NULL;
+                               if (so)
+                                       g_object_get (so, "name", &name, NULL);
+                               if (name) {
+                                       g_string_append (s, name);
+                                       g_free (name);
+                               }
+                               break;
+                       }
                        case '%':
                                g_string_append_c (s, '%');
                                break;
@@ -914,7 +925,7 @@ do_split_save (GOFileSaver *fs, WorkbookView *wbv,
                                                  ssconvert_object_export_type))
                                        continue;
 
-                               tmpfile = resolve_template (template, sheet, file_idx++);
+                               tmpfile = resolve_template (template, sheet, so, file_idx++);
                                sheet_object_save_as_image (so, ssconvert_image_format, resolution,
                                                            tmpfile, &err);
 
@@ -928,7 +939,7 @@ do_split_save (GOFileSaver *fs, WorkbookView *wbv,
                        }
                        g_slist_free (objs);
                } else {
-                       char *tmpfile = resolve_template (template, sheet, file_idx++);
+                       char *tmpfile = resolve_template (template, sheet, NULL, file_idx++);
                        res = !workbook_view_save_as (wbv, fs, tmpfile, cc);
                        g_free (tmpfile);
                }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]