[gnumeric] Stf: use a GtkListStore, not lazy-list.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Stf: use a GtkListStore, not lazy-list.
- Date: Fri, 18 May 2018 17:25:23 +0000 (UTC)
commit b3fc03dac5f23dc0953bc56f19fb60e760582e88
Author: Morten Welinder <terra gnome org>
Date: Fri May 18 13:24:57 2018 -0400
Stf: use a GtkListStore, not lazy-list.
src/dialogs/dialog-stf-preview.c | 94 ++++++++++++++++++++++++-------------
1 files changed, 61 insertions(+), 33 deletions(-)
---
diff --git a/src/dialogs/dialog-stf-preview.c b/src/dialogs/dialog-stf-preview.c
index 0a85e4d..d27c4f4 100644
--- a/src/dialogs/dialog-stf-preview.c
+++ b/src/dialogs/dialog-stf-preview.c
@@ -29,28 +29,36 @@
#include <number-match.h>
#include <value.h>
#include <style.h>
-#include <widgets/gnumeric-lazy-list.h>
#include <string.h>
/******************************************************************************************************************
* ADVANCED DRAWING FUNCTIONS
******************************************************************************************************************/
+enum { ITEM_LINENO };
+
static void
-render_get_value (gint row, gint column, gpointer _rd, GValue *value)
+line_renderer_func (GtkTreeViewColumn *tvc,
+ GtkCellRenderer *cr,
+ GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gpointer user_data)
{
- RenderData_t *rd = (RenderData_t *)_rd;
- GnumericLazyList *ll = GNM_LAZY_LIST (gtk_tree_view_get_model (rd->tree_view));
- GPtrArray *lines = rd->lines;
- GPtrArray *line = (row < (int)lines->len)
- ? g_ptr_array_index (lines, row)
+ RenderData_t *renderdata = user_data;
+ unsigned row, col;
+ GPtrArray *line;
+ const char *text;
+
+ gtk_tree_model_get (model, iter, ITEM_LINENO, &row, -1);
+ col = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (tvc), "col-no"));
+
+ line = (renderdata->lines && row < renderdata->lines->len)
+ ? g_ptr_array_index (renderdata->lines, row)
: NULL;
- const char *text = (line && column < (int)line->len)
- ? g_ptr_array_index (line, column)
+ text = (line && col < line->len)
+ ? g_ptr_array_index (line, col)
: NULL;
- g_value_init (value, ll->column_headers[column]);
-
if (text) {
char *copy = NULL;
char *tab = strchr (text, '\t');
@@ -76,12 +84,30 @@ render_get_value (gint row, gint column, gpointer _rd, GValue *value)
text = copy = cut;
}
- g_value_set_string (value, text);
+ g_object_set (cr, "text", text, NULL);
g_free (copy);
+ } else
+ g_object_set (cr, "text", "", NULL);
+}
+
+static GtkTreeModel *
+make_model (GPtrArray *lines)
+{
+ GtkListStore *list_store = gtk_list_store_new (1, G_TYPE_UINT);
+ unsigned ui;
+ unsigned count = lines ? MIN (lines->len, STF_LINE_DISPLAY_LIMIT) : 0;
+
+ for (ui = 0; ui < count; ui++) {
+ GtkTreeIter iter;
+ gtk_list_store_append (list_store, &iter);
+ gtk_list_store_set (list_store, &iter, ITEM_LINENO, ui, -1);
}
+
+ return GTK_TREE_MODEL (list_store);
}
+
/******************************************************************************************************************
* STRUCTURE MANIPULATION FUNCTIONS
******************************************************************************************************************/
@@ -97,7 +123,7 @@ stf_preview_new (GtkWidget *data_container,
GODateConventions const *date_conv)
{
RenderData_t* renderdata;
- GnumericLazyList *ll;
+ GtkTreeModel *model;
g_return_val_if_fail (data_container != NULL, NULL);
@@ -112,13 +138,13 @@ stf_preview_new (GtkWidget *data_container,
renderdata->date_conv = date_conv;
- ll = gnumeric_lazy_list_new (render_get_value, renderdata, 0, 1, G_TYPE_STRING);
+ model = make_model (NULL);
renderdata->tree_view =
- GTK_TREE_VIEW (gtk_tree_view_new_with_model (GTK_TREE_MODEL (ll)));
+ GTK_TREE_VIEW (gtk_tree_view_new_with_model (model));
gtk_tree_view_set_grid_lines (renderdata->tree_view,
GTK_TREE_VIEW_GRID_LINES_VERTICAL);
g_object_ref (renderdata->tree_view);
- g_object_unref (ll);
+ g_object_unref (model);
renderdata->colcount = 0;
@@ -181,7 +207,7 @@ stf_preview_set_lines (RenderData_t *renderdata,
{
unsigned int i;
int colcount = 1;
- GnumericLazyList *ll;
+ GtkTreeModel *model;
gboolean hidden;
g_return_if_fail (renderdata != NULL);
@@ -228,26 +254,28 @@ stf_preview_set_lines (RenderData_t *renderdata,
while (renderdata->colcount < colcount) {
char *text = g_strdup_printf (_(COLUMN_CAPTION),
renderdata->colcount + 1);
- GtkCellRenderer *cell = gtk_cell_renderer_text_new ();
- GtkTreeViewColumn *column =
- gtk_tree_view_column_new_with_attributes
- (text, cell,
- "text", renderdata->colcount,
- NULL);
- g_object_set (cell,
- "single_paragraph_mode", TRUE,
- NULL);
- gtk_tree_view_append_column (renderdata->tree_view, column);
+ GtkCellRenderer *cr = gtk_cell_renderer_text_new ();
+ GtkTreeViewColumn *tvc = gtk_tree_view_column_new ();
+
+ g_object_set (cr, "single_paragraph_mode", TRUE, NULL);
+
+ gtk_tree_view_column_set_title (tvc, text);
+ gtk_tree_view_column_set_cell_data_func
+ (tvc, cr,
+ line_renderer_func,
+ renderdata, NULL);
+ gtk_tree_view_column_pack_start (tvc, cr, TRUE);
+
+ g_object_set_data (G_OBJECT (tvc), "col-no",
+ GUINT_TO_POINTER (renderdata->colcount));
+ gtk_tree_view_append_column (renderdata->tree_view, tvc);
g_free (text);
renderdata->colcount++;
}
- ll = gnumeric_lazy_list_new (render_get_value, renderdata,
- MIN (lines->len, STF_LINE_DISPLAY_LIMIT),
- 0);
- gnumeric_lazy_list_add_column (ll, colcount, G_TYPE_STRING);
- gtk_tree_view_set_model (renderdata->tree_view, GTK_TREE_MODEL (ll));
- g_object_unref (ll);
+ model = make_model (lines);
+ gtk_tree_view_set_model (renderdata->tree_view, model);
+ g_object_unref (model);
if (hidden)
gtk_widget_show (GTK_WIDGET (renderdata->tree_view));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]