Etk-Perl
view release on metacpan or search on metacpan
etk_tree_row_fields_get(row1, col, &r1, NULL);
etk_tree_row_fields_get(row2, col, &r2, NULL);
if (r1 < r2)
ret = -1;
else if (r1 > r2)
ret = 1;
else
ret = 0;
}
PUTBACK;
FREETMPS;
LEAVE;
return ret;
}
int
tree_compare_cb( Etk_Tree_Col * col, Etk_Tree_Row * row1, Etk_Tree_Row *row2, void * data )
{
dSP;
Callback_Tree_Compare_Data *cbd;
int count;
int ret;
ENTER ;
SAVETMPS;
cbd = data;
PUSHMARK(SP);
XPUSHs(sv_2mortal(newSVObj(col, getClass("Etk_Tree_Col"))));
XPUSHs(sv_2mortal(newSVObj(row1, getClass("Etk_Tree_Row"))));
XPUSHs(sv_2mortal(newSVObj(row2, getClass("Etk_Tree_Row"))));
XPUSHs(sv_2mortal(newSVsv(cbd->perl_data)));
PUTBACK;
count = call_sv(cbd->perl_callback, G_SCALAR);
SPAGAIN;
if(count != 1)
croak("Improper return value from compare callback!\n");
ret = POPi;
PUTBACK;
FREETMPS ;
LEAVE ;
return ret;
}
MODULE = Etk::Tree::Model::Checkbox PACKAGE = Etk::Tree::Model::Checkbox PREFIX = etk_tree_model_checkbox_
void
new(class)
SV * class
PPCODE:
Etk_Tree_Model * model;
SV * ret;
model = etk_tree_model_checkbox_new();
ret = newSVObj(model, getClass("Etk_Tree_Model"));
hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mCHECKBOX), 0);
XPUSHs(sv_2mortal(ret));
MODULE = Etk::Tree::Model::Double PACKAGE = Etk::Tree::Model::Double PREFIX = etk_tree_model_double_
void
new(class)
SV * class
PPCODE:
Etk_Tree_Model * model;
SV * ret;
model = etk_tree_model_double_new();
ret = newSVObj(model, getClass("Etk_Tree_Model"));
hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mDOUBLE), 0);
XPUSHs(sv_2mortal(ret));
MODULE = Etk::Tree::Model::Image PACKAGE = Etk::Tree::Model::Image PREFIX = etk_tree_model_image_
void
new(class)
SV * class
PPCODE:
Etk_Tree_Model * model;
SV * ret;
model = etk_tree_model_image_new();
ret = newSVObj(model, getClass("Etk_Tree_Model"));
hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mIMAGE), 0);
XPUSHs(sv_2mortal(ret));
void
etk_tree_model_image_width_set(model, width, alignment)
Etk_Tree_Model * model
int width
float alignment
ALIAS:
WidthSet=1
void
etk_tree_model_image_width_get(model)
Etk_Tree_Model * model
ALIAS:
WidthGet=1
PPCODE:
int width;
float alignment;
etk_tree_model_image_width_get(model, &width, &alignment);
EXTEND(SP, 2);
PUSHs(sv_2mortal(newSViv(width)));
PUSHs(sv_2mortal(newSViv(alignment)));
MODULE = Etk::Tree::Model::Int PACKAGE = Etk::Tree::Model::Int PREFIX = etk_tree_model_int_
void
new(class)
SV * class
PPCODE:
Etk_Tree_Model * model;
SV * ret;
model = etk_tree_model_int_new();
ret = newSVObj(model, getClass("Etk_Tree_Model"));
hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mINT), 0);
XPUSHs(sv_2mortal(ret));
MODULE = Etk::Tree::Model::ProgressBar PACKAGE = Etk::Tree::Model::ProgressBar PREFIX = etk_tree_model_progress_bar_
void
new(class)
SV * class
PPCODE:
Etk_Tree_Model * model;
SV * ret;
model = etk_tree_model_progress_bar_new();
ret = newSVObj(model, getClass("Etk_Tree_Model"));
hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mPROGRESSBAR), 0);
XPUSHs(sv_2mortal(ret));
MODULE = Etk::Tree::Model::Text PACKAGE = Etk::Tree::Model::Text PREFIX = etk_tree_model_text_
void
new(class)
SV * class
PPCODE:
Etk_Tree_Model * model;
SV * ret;
model = etk_tree_model_text_new();
ret = newSVObj(model, getClass("Etk_Tree_Model"));
hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mTEXT), 0);
XPUSHs(sv_2mortal(ret));
MODULE = Etk::Tree::Model PACKAGE = Etk::Tree::Model PREFIX = etk_tree_model_
void
etk_tree_model_free(model)
Etk_Tree_Model * model
ALIAS:
Free=1
MODULE = Etk::Tree::Row PACKAGE = Etk::Tree::Row PREFIX = etk_tree_row_
Etk_Tree_Row *
etk_tree_row_next_get(row)
Etk_Tree_Row * row
ALIAS:
NextGet=1
Etk_Tree_Row *
etk_tree_row_prev_get(row)
Etk_Tree_Row * row
ALIAS:
PrevGet=1
void etk_tree_row_delete(row)
Etk_Tree_Row * row
ALIAS:
Delete=1
void
etk_tree_row_fold(row)
Etk_Tree_Row * row
ALIAS:
Fold=1
void
etk_tree_row_unfold(row)
Etk_Tree_Row * row
ALIAS:
Unfold=1
Etk_Bool
etk_tree_row_is_folded(row)
Etk_Tree_Row * row
ALIAS:
IsFolded=1
SV *
etk_tree_row_data_get(row)
Etk_Tree_Row * row
ALIAS:
DataSet=1
CODE:
etk_tree_row_data_set(row, newSVsv(data));
void
model_fields_set(row, emit_signal, model, ...)
Etk_Tree_Row * row
Etk_Bool emit_signal
SV * model
ALIAS:
ModelFieldsSet=1
PREINIT:
Etk_Tree_Model * etkmodel;
SV ** mod;
CODE:
etkmodel = (Etk_Tree_Model *) SvObj(model, "Etk::Tree::Model");
mod = hv_fetch( (HV*)SvRV(model), "_model", 6, 0);
if (mod) {
int type = SvIV(*mod);
switch(type) {
case mINT:
etk_tree_row_model_fields_set(row, emit_signal, etkmodel, SvIV(ST(3)), NULL);
break;
case mDOUBLE:
etk_tree_row_model_fields_set(row, emit_signal, etkmodel, SvNV(ST(3)), NULL);
break;
case mCHECKBOX:
etk_tree_row_model_fields_set(row, emit_signal, etkmodel, SvIV(ST(3)), NULL);
break;
case mIMAGE:
if (items == 4)
etk_tree_row_model_fields_set(row, emit_signal, etkmodel,
SvPV_nolen(ST(3)), NULL, NULL);
else
etk_tree_row_model_fields_set(row, emit_signal, etkmodel,
SvPV_nolen(ST(3)), SvPV_nolen(ST(4)), NULL);
break;
case mPROGRESSBAR:
break;
case mTEXT:
etk_tree_row_model_fields_set(row, emit_signal, etkmodel, SvPV_nolen(ST(3)), NULL);
break;
}
}
void
model_fields_get(row, model)
Etk_Tree_Row * row
SV * model
ALIAS:
ModelFieldsGet=1
PREINIT:
Etk_Tree_Model * mod;
SV ** models;
int i;
Etk_Bool c;
double d;
char *c1, *c2, *c3;
PPCODE:
mod = (Etk_Tree_Model *) SvObj(model, "Etk::Tree::Model");
models = hv_fetch( (HV*)SvRV(model), "_model", 6, 0);
if (models) {
int type = SvIV(*models);
switch(type) {
case mINT:
etk_tree_row_model_fields_get(row, mod, &i, NULL);
XPUSHs(sv_2mortal(newSViv(i)));
break;
case mDOUBLE:
etk_tree_row_model_fields_get(row, mod, &d, NULL);
XPUSHs(sv_2mortal(newSVnv(d)));
break;
case mCHECKBOX:
etk_tree_row_model_fields_get(row, mod, &c, NULL);
XPUSHs(sv_2mortal(newSViv(c)));
break;
case mIMAGE:
etk_tree_row_model_fields_get(row, mod, &c1, &c2, NULL);
XPUSHs(sv_2mortal(newSVpv(c1, strlen(c1))));
if (c2) XPUSHs(sv_2mortal(newSVpv(c2, strlen(c2))));
break;
case mPROGRESSBAR:
//etk_tree_row_model_fields_get(row, mod, &d, &c1, NULL);
//XPUSHs(sv_2mortal(newSVnv(d)));
//XPUSHs(sv_2mortal(newSVpv(c1, strlen(c1))));
break;
case mTEXT:
etk_tree_row_model_fields_get(row, mod, &c1, NULL);
XPUSHs(sv_2mortal(newSVpv(c1, strlen(c1))));
break;
}
}
void
fields_set(row, emit_signal, col, ...)
Etk_Tree_Row * row
Etk_Bool emit_signal
SV * col
ALIAS:
FieldsSet=1
PREINIT:
Etk_Tree_Col * column;
SV ** models;
SV ** model;
CODE:
column = (Etk_Tree_Col *) SvObj(col, "Etk::Tree::Col");
models = hv_fetch( (HV*)SvRV(col), "_models", 7, 0);
if (models) {
AV * mods = (AV *) SvRV(*models);
int total = (int)av_len(mods);
model = av_fetch(mods, 0, 0);
if (model) {
int type = SvIV(*model);
switch(type) {
case mINT:
etk_tree_row_fields_set(row, emit_signal, column, SvIV(ST(3)), NULL);
break;
case mDOUBLE:
etk_tree_row_fields_set(row, emit_signal, column, SvNV(ST(3)), NULL);
break;
case mCHECKBOX:
etk_tree_row_fields_set(row, emit_signal, column, SvIV(ST(3)), NULL);
break;
case mIMAGE:
if (items == 4)
etk_tree_row_fields_set(row, emit_signal, column,
SvPV_nolen(ST(3)), NULL, NULL);
else
etk_tree_row_fields_set(row, emit_signal, column,
SvPV_nolen(ST(3)), SvPV_nolen(ST(4)), NULL);
break;
case mPROGRESSBAR:
break;
case mTEXT:
etk_tree_row_fields_set(row, emit_signal, column, SvPV_nolen(ST(3)), NULL);
break;
}
}
}
void
fields_get(row, col)
Etk_Tree_Row * row
SV * col
ALIAS:
FieldsGet=1
PREINIT:
Etk_Tree_Col * column;
SV ** models;
SV ** model;
int i;
Etk_Bool c;
double d;
char *c1, *c2, *c3;
PPCODE:
column = (Etk_Tree_Col *) SvObj(col, "Etk::Tree::Col");
models = hv_fetch( (HV*)SvRV(col), "_models", 7, 0);
if (models) {
AV * mods = (AV *) SvRV(*models);
int total = (int)av_len(mods);
model = av_fetch(mods, 0, 0);
if (model) {
int type = SvIV(*model);
switch(type) {
case mINT:
etk_tree_row_fields_get(row, column, &i, NULL);
XPUSHs(sv_2mortal(newSViv(i)));
break;
case mDOUBLE:
etk_tree_row_fields_get(row, column, &d, NULL);
XPUSHs(sv_2mortal(newSVnv(d)));
break;
case mCHECKBOX:
etk_tree_row_fields_get(row, column, &c, NULL);
XPUSHs(sv_2mortal(newSViv(c)));
break;
case mIMAGE:
etk_tree_row_fields_get(row, column, &c1, &c2, NULL);
XPUSHs(sv_2mortal(newSVpv(c1, strlen(c1))));
if (c2) XPUSHs(sv_2mortal(newSVpv(c2, strlen(c2))));
break;
case mPROGRESSBAR:
//etk_tree_row_fields_get(row, column, &d, &c1, NULL);
//XPUSHs(sv_2mortal(newSVnv(d)));
//XPUSHs(sv_2mortal(newSVpv(c1, strlen(c1))));
break;
case mTEXT:
etk_tree_row_fields_get(row, column, &c1, NULL);
XPUSHs(sv_2mortal(newSVpv(c1, strlen(c1))));
break;
}
}
}
Etk_Tree_Row *
etk_tree_row_first_child_get(row)
Etk_Tree_Row * row
ALIAS:
FirstChildGet=1
Etk_Tree_Row *
etk_tree_row_last_child_get(row)
Etk_Tree_Row * row
ALIAS:
LastChildGet=1
void
etk_tree_row_scroll_to(row, center)
Etk_Tree_Row * row
Etk_Bool center
ALIAS:
ScrollTo=1
void
( run in 1.185 second using v1.01-cache-2.11-cpan-5511b514fd6 )