Exemple #1
0
int
clip_GTK_TREESTOREREORDER(ClipMachine * ClipMachineMemory)
{
   C_object *cstree = _fetch_co_arg(ClipMachineMemory);

   C_object *citer = _fetch_cobject(ClipMachineMemory, _clip_spar(ClipMachineMemory, 2));

   ClipArrVar *arr = (ClipArrVar *) _clip_vptr(_clip_spar(ClipMachineMemory, 3));

   gint      n;

   CHECKARG2(1, MAP_type_of_ClipVarType, NUMERIC_type_of_ClipVarType);
   CHECKCOBJ(cstree, GTK_IS_TREE_STORE(cstree->object));
   CHECKCOBJ(citer, GTK_IS_TREE_ITER(citer->object));
   CHECKARG(3, ARRAY_type_of_ClipVarType);

   n = arr->count_of_ClipArrVar;
   if (arr)
    {
       gint     *order, i;

       order = malloc(n * sizeof(gint));
       for (i = 0; i < n; i++)
	  order[i] = arr->ClipVar_items_of_ClipArrVar[i].ClipNumVar_n_of_ClipVar.double_of_ClipNumVar;
       gtk_tree_store_reorder(GTK_TREE_STORE(cstree->object), GTK_TREE_ITER(citer->object), order);

       free(order);
    }
   return 0;
 err:
   return 1;
}
Exemple #2
0
static VALUE
tstore_reorder(VALUE self, VALUE parent, VALUE new_order)
{
    gint i;
    gint len = RARRAY_LEN(new_order);
    gint* gnew_order = g_new(gint, len);

    for (i = 0; i < len; i++){
        gnew_order[i] = NUM2INT(RARRAY_PTR(new_order)[i]);
    }

    gtk_tree_store_reorder(_SELF(self), RVAL2GTKTREEITER(parent), gnew_order);
    g_free(gnew_order);
    return self;
}
static VALUE
rg_reorder(VALUE self, VALUE rbparent, VALUE rbnew_order)
{
    GtkTreeStore *store = _SELF(self);
    GtkTreeIter *parent = RVAL2GTKTREEITER(rbparent);
    gint columns = gtk_tree_model_get_n_columns(GTK_TREE_MODEL(store));
    long n;
    gint *new_order = RVAL2GINTS(rbnew_order, n);

    if (n != columns) {
        g_free(new_order);

        rb_raise(rb_eArgError,
                 "new order array must contain same number of elements as the number of columns in the store: %ld != %d",
                 n, columns);
    }

    gtk_tree_store_reorder(store, parent, new_order);

    g_free(new_order);

    return self;
}