/** * stf_dialog_result_attach_formats_to_cr * @dialogresult: a dialogresult struct * @cr: a cell region * * Attach the formats of the dialogresult to the given cell region. * * returns: nothing **/ void stf_dialog_result_attach_formats_to_cr (DialogStfResult_t *dialogresult, GnmCellRegion *cr) { unsigned int col, targetcol; g_return_if_fail (dialogresult != NULL); g_return_if_fail (cr != NULL); targetcol = 0; for (col = 0; col < dialogresult->parseoptions->formats->len; col++) { if (dialogresult->parseoptions->col_import_array[col]) { GOFormat *sf = g_ptr_array_index (dialogresult->parseoptions->formats, col); GnmStyleRegion *sr = g_new (GnmStyleRegion, 1); sr->range.start.col = targetcol; sr->range.start.row = 0; sr->range.end.col = targetcol; sr->range.end.row = dialogresult->rowcount - 1; sr->style = gnm_style_new_default (); gnm_style_set_format (sr->style, sf); targetcol++; cr->styles = g_slist_prepend (cr->styles, sr); } } }
static void gnm_preview_grid_init (GnmPreviewGrid *pg) { pg->sheet = g_object_new (GNM_SHEET_TYPE, "rows", 256, "columns", 256, NULL); pg->gridlines = FALSE; pg->defaults.col_width = 64; pg->defaults.row_height = 17; pg->defaults.style = gnm_style_new_default (); pg->defaults.value = value_new_empty (); }
static void add_worksheet(Workbook *wb, psiconv_sheet_worksheet psi_worksheet,int nr, psiconv_formula_list psi_formulas) { Sheet *sheet; char *sheet_name; GnmStyle *default_style; psiconv_sheet_grid_section grid; sheet_name = g_strdup_printf (_("Sheet%d"),nr); sheet = sheet_new (wb, sheet_name, 256, 65536); g_free (sheet_name); if (!sheet) return; /* Default layout */ default_style = gnm_style_new_default(); if (!default_style) { g_object_unref (sheet); return; } set_layout(default_style,psi_worksheet->default_layout); /* TODO: Add show_zeros */ grid = psi_worksheet->grid; if (grid) { sheet_row_set_default_size_pts (sheet, cm2pts (grid->default_row_height)); sheet_col_set_default_size_pts (sheet, cm2pts (grid->default_column_width)); if (grid->row_heights) set_row_heights (sheet, grid->row_heights); if (grid->column_heights) set_col_widths (sheet, grid->column_heights); } add_cells(sheet,psi_worksheet->cells,psi_formulas,default_style); /* TODO: What about the NULL? */ sheet_flag_recompute_spans(sheet); workbook_sheet_attach (wb, sheet); gnm_style_unref (default_style); }
static void html_read_row (htmlNodePtr cur, htmlDocPtr doc, GnmHtmlTableCtxt *tc) { htmlNodePtr ptr; int col = -1; for (ptr = cur->children; ptr != NULL ; ptr = ptr->next) { if (xmlStrEqual (ptr->name, CC2XML ("td")) || xmlStrEqual (ptr->name, CC2XML ("th"))) { GString *buf; xmlBufferPtr a_buf; xmlAttrPtr props; int colspan = 1; int rowspan = 1; GnmCellPos pos; GnmStyle *mstyle; GSList *hrefs = NULL; GnmHLink *lnk = NULL; /* Check whether we need to skip merges from above */ pos.row = tc->row; pos.col = col + 1; while (gnm_sheet_merge_contains_pos (tc->sheet, &pos)) { col++; pos.col++; } /* Do we span across multiple rows or cols? */ props = ptr->properties; while (props) { if (xmlStrEqual (props->name, CC2XML ("colspan")) && props->children) colspan = atoi (CXML2C (props->children->content)); if (xmlStrEqual (props->name, CC2XML ("rowspan")) && props->children) rowspan = atoi (CXML2C (props->children->content)); props = props->next; } if (colspan < 1) colspan = 1; if (rowspan < 1) rowspan = 1; /* Let's figure out the content of the cell */ buf = g_string_new (NULL); a_buf = xmlBufferCreate (); mstyle = gnm_style_new_default (); if (xmlStrEqual (ptr->name, CC2XML ("th"))) gnm_style_set_font_bold (mstyle, TRUE); html_read_content (ptr, buf, mstyle, a_buf, &hrefs, TRUE, doc, tc); if (g_slist_length (hrefs) >= 1 && buf->len > 0) { /* One hyperlink, and text to make it * visible */ char *url; xmlBufferPtr h_buf = xmlBufferCreate (); hrefs = g_slist_reverse (hrefs); htmlNodeDump ( h_buf, doc, (htmlNodePtr)hrefs->data); url = g_strndup ( CXML2C (h_buf->content), h_buf->use); if (strncmp (url, "mailto:", strlen ("mailto:")) == 0) lnk = gnm_hlink_new ( gnm_hlink_email_get_type (), tc->sheet); else lnk = gnm_hlink_new ( gnm_hlink_url_get_type (), tc->sheet); gnm_hlink_set_target (lnk, url); gnm_style_set_hlink (mstyle, lnk); gnm_style_set_font_uline (mstyle, UNDERLINE_SINGLE); gnm_style_set_font_color (mstyle, gnm_color_new_go (GO_COLOR_BLUE)); g_free (url); xmlBufferFree (h_buf); } if (g_slist_length (hrefs) > 1 || buf->len <= 0) { /* Multiple links, * or no text to give hyperlink style, * so put them in a comment */ GSList *l; for (l = hrefs; l != NULL; l = l->next) { htmlNodeDump (a_buf, doc, (htmlNodePtr)l->data); xmlBufferAdd (a_buf, CC2XML ("\n"), -1); } } g_slist_free (hrefs); if (buf->len > 0) { GnmCell *cell = sheet_cell_fetch (tc->sheet, col + 1, tc->row); sheet_style_set_pos (tc->sheet, col + 1, tc->row, mstyle); gnm_cell_set_text (cell, buf->str); } else gnm_style_unref (mstyle); if (a_buf->use > 0) { char *name; name = g_strndup (CXML2C (a_buf->content), a_buf->use); cell_set_comment (tc->sheet, &pos, NULL, name, NULL); g_free (name); } g_string_free (buf, TRUE); xmlBufferFree (a_buf); /* If necessary create the merge */ if (colspan > 1 || rowspan > 1) { GnmRange range; GnmRange *r = ⦥ range_init (r, col + 1, tc->row, col + colspan, tc->row + rowspan - 1); gnm_sheet_merge_add (tc->sheet, r, FALSE, NULL); } col += colspan; } } }
/** * format_template_filter_style: * @ft: * @mstyle: * @fill_defaults: If set fill in the gaps with the "default" mstyle. * * Filter an mstyle and strip and replace certain elements * based on what the user wants to apply. * Basically you should pass FALSE as @fill_defaults, unless you want to have * a completely filled style to be returned. If you set @fill_default to TRUE * the returned mstyle might have some of its elements 'not set' * * Return value: The same mstyle as @mstyle with most likely some modifications **/ static GnmStyle * format_template_filter_style (GnmFT *ft, GnmStyle *mstyle, gboolean fill_defaults) { g_return_val_if_fail (ft != NULL, NULL); g_return_val_if_fail (mstyle != NULL, NULL); /* * Don't fill with defaults, this is perfect for when the * mstyles are going to be 'merged' with other mstyles which * have all their elements set */ if (!fill_defaults) { if (!ft->number) { gnm_style_unset_element (mstyle, MSTYLE_FORMAT); } if (!ft->border) { gnm_style_unset_element (mstyle, MSTYLE_BORDER_TOP); gnm_style_unset_element (mstyle, MSTYLE_BORDER_BOTTOM); gnm_style_unset_element (mstyle, MSTYLE_BORDER_LEFT); gnm_style_unset_element (mstyle, MSTYLE_BORDER_RIGHT); gnm_style_unset_element (mstyle, MSTYLE_BORDER_DIAGONAL); gnm_style_unset_element (mstyle, MSTYLE_BORDER_REV_DIAGONAL); } if (!ft->font) { gnm_style_unset_element (mstyle, MSTYLE_FONT_NAME); gnm_style_unset_element (mstyle, MSTYLE_FONT_BOLD); gnm_style_unset_element (mstyle, MSTYLE_FONT_ITALIC); gnm_style_unset_element (mstyle, MSTYLE_FONT_UNDERLINE); gnm_style_unset_element (mstyle, MSTYLE_FONT_STRIKETHROUGH); gnm_style_unset_element (mstyle, MSTYLE_FONT_SIZE); gnm_style_unset_element (mstyle, MSTYLE_FONT_COLOR); } if (!ft->patterns) { gnm_style_unset_element (mstyle, MSTYLE_COLOR_BACK); gnm_style_unset_element (mstyle, MSTYLE_COLOR_PATTERN); gnm_style_unset_element (mstyle, MSTYLE_PATTERN); } if (!ft->alignment) { gnm_style_unset_element (mstyle, MSTYLE_ALIGN_V); gnm_style_unset_element (mstyle, MSTYLE_ALIGN_H); } } else { GnmStyle *gnm_style_default = gnm_style_new_default (); /* * We fill in the gaps with the default mstyle */ if (!ft->number) { gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_FORMAT); } if (!ft->border) { gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_BORDER_TOP); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_BORDER_BOTTOM); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_BORDER_LEFT); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_BORDER_RIGHT); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_BORDER_DIAGONAL); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_BORDER_REV_DIAGONAL); } if (!ft->font) { gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_FONT_NAME); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_FONT_BOLD); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_FONT_ITALIC); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_FONT_UNDERLINE); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_FONT_STRIKETHROUGH); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_FONT_SIZE); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_FONT_COLOR); } if (!ft->patterns) { gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_COLOR_BACK); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_COLOR_PATTERN); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_PATTERN); } if (!ft->alignment) { gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_ALIGN_V); gnm_style_merge_element (mstyle, gnm_style_default, MSTYLE_ALIGN_H); } gnm_style_unref (gnm_style_default); } return mstyle; }