/** * stf_preview_free * @renderdata : a renderdata struct * * This will free the @renderdata * * returns : nothing **/ void stf_preview_free (RenderData_t *renderdata) { g_return_if_fail (renderdata != NULL); stf_preview_colformats_clear (renderdata); g_ptr_array_free (renderdata->colformats, TRUE); stf_preview_set_lines (renderdata, NULL, NULL); g_object_unref (renderdata->tree_view); g_free (renderdata); }
/** * format_page_update_preview * @pagedata: mother struct * * Will simply utilize the preview rendering functions to update * the preview * * returns : nothing **/ static void format_page_update_preview (StfDialogData *pagedata) { RenderData_t *renderdata = pagedata->format.renderdata; unsigned int ui; int i; int col_import_array_len_old, old_part; GStringChunk *lines_chunk; char *msg = NULL; stf_preview_colformats_clear (renderdata); for (ui = 0; ui < pagedata->format.formats->len; ui++) { GOFormat *sf = g_ptr_array_index (pagedata->format.formats, ui); stf_preview_colformats_add (renderdata, sf); } lines_chunk = g_string_chunk_new (100 * 1024); stf_preview_set_lines (renderdata, lines_chunk, stf_parse_general (pagedata->parseoptions, lines_chunk, pagedata->cur, pagedata->cur_end)); col_import_array_len_old = pagedata->format.col_import_array_len; pagedata->format.col_import_array_len = renderdata->colcount; pagedata->format.col_autofit_array = g_renew(gboolean, pagedata->format.col_autofit_array, pagedata->format.col_import_array_len); pagedata->format.col_import_array = g_renew(gboolean, pagedata->format.col_import_array, pagedata->format.col_import_array_len); old_part = (col_import_array_len_old < pagedata->format.col_import_array_len) ? col_import_array_len_old : pagedata->format.col_import_array_len; pagedata->format.col_import_count = 0; for (i = 0; i < old_part; i++) if (pagedata->format.col_import_array[i]) pagedata->format.col_import_count++; for (i = old_part; i < pagedata->format.col_import_array_len; i++) { if (pagedata->format.col_import_count < GNM_MAX_COLS) { pagedata->format.col_import_array[i] = TRUE; pagedata->format.col_import_count++; } else { pagedata->format.col_import_array[i] = FALSE; } pagedata->format.col_autofit_array[i] = TRUE; } format_page_update_column_selection (pagedata); if (old_part < renderdata->colcount) msg = g_strdup_printf (_("A maximum of %d columns can be imported."), GNM_MAX_COLS); for (i = old_part; i < renderdata->colcount; i++) { GtkTreeViewColumn *column = stf_preview_get_column (renderdata, i); GtkWidget *button = gtk_tree_view_column_get_button (column); if (NULL == g_object_get_data (G_OBJECT (column), "checkbox")) { GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5); GtkWidget *check, *check_autofit = gtk_check_button_new_with_label (_("Auto fit")); char * label_text = g_strdup_printf (pagedata->format.col_header, i+1); GOFormat const *gf = go_format_general (); GtkWidget *format_label = gtk_button_new_with_label (go_format_sel_format_classification (gf)); GtkWidget *format_icon = gtk_image_new_from_stock (GTK_STOCK_INFO, GTK_ICON_SIZE_BUTTON); check = gtk_check_button_new_with_label (label_text); g_free (label_text); gtk_button_set_image (GTK_BUTTON (format_label), format_icon); g_object_set (G_OBJECT (stf_preview_get_cell_renderer (pagedata->format.renderdata, i)), "strikethrough", !pagedata->format.col_import_array[i], NULL); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(check), pagedata-> format.col_import_array[i]); label_text = g_strdup_printf (_("If this checkbox is selected, " "column %i will be imported into " "Gnumeric."), i+1); gtk_widget_set_tooltip_text (check, label_text); gtk_widget_set_tooltip_text (check_autofit, _("If this checkbox is selected, " "the width of the column will be adjusted " "to the longest entry.")); g_free (label_text); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(check_autofit), pagedata-> format.col_autofit_array[i]); g_object_set_data (G_OBJECT (check), "pagedata", pagedata); g_object_set_data (G_OBJECT (check_autofit), "pagedata", pagedata); g_object_set_data (G_OBJECT (format_label), "pagedata", pagedata); gtk_box_pack_start (GTK_BOX(vbox), check, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(vbox), format_label, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX(vbox), check_autofit, TRUE, TRUE, 0); gtk_widget_show_all (vbox); gtk_tree_view_column_set_widget (column, vbox); g_object_set_data (G_OBJECT (column), "pagedata", pagedata); g_object_set_data (G_OBJECT (column), "checkbox", check); g_object_set_data (G_OBJECT (column), "checkbox-autofit", check_autofit); g_object_set_data (G_OBJECT (column), "formatlabel", format_label); g_object_set_data (G_OBJECT (button), "pagedata", pagedata); g_object_set_data (G_OBJECT (button), "checkbox", check); g_object_set_data (G_OBJECT (button), "formatlabel", format_label); g_object_set (G_OBJECT (column), "clickable", TRUE, NULL); g_signal_connect (G_OBJECT (check), "toggled", G_CALLBACK (cb_col_check_clicked), GINT_TO_POINTER (i)); g_signal_connect (G_OBJECT (check_autofit), "toggled", G_CALLBACK (cb_col_check_autofit_clicked), GINT_TO_POINTER (i)); g_signal_connect (G_OBJECT (format_label), "clicked", G_CALLBACK (cb_format_clicked), GINT_TO_POINTER (i)); g_signal_connect (G_OBJECT (button), "event", G_CALLBACK (cb_col_event), GINT_TO_POINTER (i)); } } g_free (msg); }