Example #1
0
void list_clear_digests(void)
{
	GtkTreeIter iter;

	if (!gtk_tree_model_get_iter_first(gui.treemodel, &iter))
		return;

	int cols_n = 0;

	for (int i = 0; i < HASH_FUNCS_N; i++)
		if (hash.funcs[i].supported)
			cols_n++;

	gint cols[cols_n];
	GValue vals[HASH_FUNCS_N] = { G_VALUE_INIT };

	for (int i = 0; i < cols_n; i++) {
		cols[i] = COL_DIGESTS + i;
		g_value_init(&vals[i], G_TYPE_STRING);
	}

	do {
		gtk_list_store_set_valuesv(gui.liststore, &iter, cols, vals, cols_n);
	} while (gtk_tree_model_iter_next(gui.treemodel, &iter));
}
Example #2
0
static VALUE
lstore_set_valuesv(VALUE self, VALUE iter, VALUE values)
{
    GValue *g_values;
    GtkListStore *store;
    GtkTreeModel *model;
    gint *g_columns;
    gint i, length;

    length = NUM2INT(rb_funcall(values, id_size, 0));
    if (length == 0)
        return self;

    g_columns = ALLOCA_N(gint, length);
    g_values = ALLOCA_N(GValue, length);
    MEMZERO(g_values, GValue, length);

    G_CHILD_ADD(self, iter);

    store = _SELF(self);
    model = GTK_TREE_MODEL(store);
    if (RVAL2CBOOL(rb_obj_is_kind_of(values, rb_cHash))) {
	hash_to_values(values, iter, model, g_columns, g_values, length);
    }
    else if (RVAL2CBOOL(rb_obj_is_kind_of(values, rb_cArray))) {
	array_to_values(values, iter, model, g_columns, g_values, length);
    }
    else {
	rb_raise(rb_eArgError, "must be array or hash of values");
    }

    gtk_list_store_set_valuesv(store, RVAL2GTKTREEITER(iter),
			       g_columns, g_values, length);

    for (i = 0; i < length; i++)
        g_value_unset(&g_values[i]);

    return self;
}