[gnumeric] xlsx: export combos and lists.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] xlsx: export combos and lists.
- Date: Wed, 25 Feb 2015 16:05:45 +0000 (UTC)
commit 88c273ae253037d544507aa960212b72e69d7e60
Author: Morten Welinder <terra gnome org>
Date: Wed Feb 25 11:05:26 2015 -0500
xlsx: export combos and lists.
ChangeLog | 7 +++++++
NEWS | 8 ++++----
plugins/excel/ChangeLog | 5 +++++
plugins/excel/xlsx-write-drawing.c | 29 +++++++++++++++++++++++++++++
plugins/excel/xlsx-write.c | 4 +++-
src/sheet-object-widget.c | 7 +++++--
6 files changed, 53 insertions(+), 7 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 50900ca..abe6bec 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-02-25 Morten Welinder <terra gnome org>
+
+ * src/sheet-object-widget.c (sheet_widget_list_base_set_sheet):
+ Also evaluate here.
+ (SOW_MAKE_TYPE): Don't evaluate unless we have a sheet for the
+ contents.
+
2015-02-23 Morten Welinder <terra gnome org>
* src/sheet-object-widget.c (sheet_widget_radio_button_get_value):
diff --git a/NEWS b/NEWS
index b74d6e2..0925f28 100644
--- a/NEWS
+++ b/NEWS
@@ -16,14 +16,14 @@ Andreas:
* Fix ODF style import of secondary plots. [#744930]
Morten:
- * Initial xlsx import of sheet widgets.
- * Initial xlsx export of sheet widgets.
- * xlsx import/export of patterns.
+ * Implement xlsx import of sheet widgets.
+ * Implement xlsx export of sheet widgets.
+ * Fix xlsx import/export of patterns.
* Plug leaks.
* Arrow properties editor. [#158327]
* Fix xlsx export of line style None.
* Fix search-and-replace problem with text format.
- * xlsx import/export of gradients.
+ * Fix xlsx import/export of gradients.
* Fix undo problems with scrollbars.
--------------------------------------------------------------------------
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index 6bed6a1..2e63540 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,3 +1,8 @@
+2015-02-25 Morten Welinder <terra gnome org>
+
+ * xlsx-write.c (xlsx_write_sheet): Also write combos and lists.
+ * xlsx-write-drawing.c (xlsx_write_legacy_object): Ditto.
+
2015-02-24 Morten Welinder <terra gnome org>
* xlsx-read.c (xlsx_parse_rel_by_id): Debug code.
diff --git a/plugins/excel/xlsx-write-drawing.c b/plugins/excel/xlsx-write-drawing.c
index 84b49d1..76f5f8c 100644
--- a/plugins/excel/xlsx-write-drawing.c
+++ b/plugins/excel/xlsx-write-drawing.c
@@ -1466,10 +1466,13 @@ xlsx_write_legacy_object (XLSXWriteState *state, GsfXMLOut *xml, SheetObject *so
{
const char *otype = NULL;
GnmExprTop const *tlink = NULL;
+ GnmExprTop const *trange = NULL;
double res_pts[4] = {0.,0.,0.,0.};
GtkAdjustment *adj = NULL;
int horiz = -1;
int checked = -1;
+ int selected = -1;
+ const char *seltype = NULL;
gboolean has_text_prop =
g_object_class_find_property (G_OBJECT_GET_CLASS (so), "text") != NULL;
char *text = NULL;
@@ -1512,11 +1515,13 @@ xlsx_write_legacy_object (XLSXWriteState *state, GsfXMLOut *xml, SheetObject *so
otype = "Scroll";
tlink = sheet_widget_adjustment_get_link (so);
adj = sheet_widget_adjustment_get_adjustment (so);
+ g_object_ref (adj);
horiz = sheet_widget_adjustment_get_horizontal (so);
} else if (GNM_IS_SOW_SPINBUTTON (so)) {
otype = "Spin";
tlink = sheet_widget_adjustment_get_link (so);
adj = sheet_widget_adjustment_get_adjustment (so);
+ g_object_ref (adj);
} else if (GNM_IS_SOW_BUTTON (so)) {
otype = "Button";
tlink = sheet_widget_button_get_link (so);
@@ -1535,6 +1540,19 @@ xlsx_write_legacy_object (XLSXWriteState *state, GsfXMLOut *xml, SheetObject *so
tlink = sheet_widget_checkbox_get_link (so);
g_object_get (so, "active", &c, NULL);
checked = c;
+ } else if (GNM_IS_SOW_COMBO (so)) {
+ otype = "Drop";
+ tlink = sheet_widget_list_base_get_result_link (so);
+ trange = sheet_widget_list_base_get_content_link (so);
+ adj = sheet_widget_list_base_get_adjustment (so);
+ // selected = ;
+ } else if (GNM_IS_SOW_LIST (so)) {
+ otype = "List";
+ tlink = sheet_widget_list_base_get_result_link (so);
+ trange = sheet_widget_list_base_get_content_link (so);
+ adj = sheet_widget_list_base_get_adjustment (so);
+ // selected = ;
+ seltype = "Single";
} else {
g_assert_not_reached ();
}
@@ -1564,7 +1582,18 @@ xlsx_write_legacy_object (XLSXWriteState *state, GsfXMLOut *xml, SheetObject *so
gtk_adjustment_get_step_increment (adj), -1);
gsf_xml_out_simple_float_element (xml, "x:Page",
gtk_adjustment_get_page_increment (adj), -1);
+ g_object_unref (adj);
}
+ if (trange) {
+ char *s = gnm_expr_top_as_string (trange, &pp0, state->convs);
+ gsf_xml_out_simple_element (xml, "x:FmlaRange", s);
+ g_free (s);
+ gnm_expr_top_unref (trange);
+ }
+ if (selected >= 1)
+ gsf_xml_out_simple_int_element (xml, "x:Sel", selected);
+ if (seltype)
+ gsf_xml_out_simple_element (xml, "x:SelType", seltype);
if (horiz >= 0)
gsf_xml_out_simple_element (xml, "x:Horiz", horiz ? "t" : "f");
diff --git a/plugins/excel/xlsx-write.c b/plugins/excel/xlsx-write.c
index f5f03f1..13734bd 100644
--- a/plugins/excel/xlsx-write.c
+++ b/plugins/excel/xlsx-write.c
@@ -2730,7 +2730,9 @@ xlsx_write_sheet (XLSXWriteState *state, GsfOutfile *dir, GsfOutfile *wb_part, u
GNM_IS_SOW_SPINBUTTON (so) ||
GNM_IS_SOW_BUTTON (so) ||
GNM_IS_SOW_RADIO_BUTTON (so) ||
- GNM_IS_SOW_CHECKBOX (so))
+ GNM_IS_SOW_CHECKBOX (so) ||
+ GNM_IS_SOW_COMBO (so) ||
+ GNM_IS_SOW_LIST (so))
legacy_drawing_objs = g_slist_prepend (legacy_drawing_objs, so);
else if (IS_GNM_FILTER_COMBO (so))
; /* Nothing here */
diff --git a/src/sheet-object-widget.c b/src/sheet-object-widget.c
index 1855a79..f41a2d6 100644
--- a/src/sheet-object-widget.c
+++ b/src/sheet-object-widget.c
@@ -3650,6 +3650,8 @@ sheet_widget_list_base_set_sheet (SheetObject *so, Sheet *sheet)
dependent_set_sheet (&swl->content_dep, sheet);
dependent_set_sheet (&swl->output_dep, sheet);
+ list_content_eval (&swl->content_dep); /* populate the list */
+
return FALSE;
}
@@ -3731,9 +3733,10 @@ sheet_widget_list_base_set_links (SheetObject *so,
if (output && swl->output_dep.sheet)
dependent_link (&swl->output_dep);
dependent_set_expr (&swl->content_dep, content);
- if (content && swl->content_dep.sheet)
+ if (content && swl->content_dep.sheet) {
dependent_link (&swl->content_dep);
- list_content_eval (&swl->content_dep); /* populate the list */
+ list_content_eval (&swl->content_dep); /* populate the list */
+ }
}
GnmExprTop const *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]