Enlightenment CVS committal Author : leviathan Project : e17 Module : proto
Dir : e17/proto/etk-perl Modified Files: Etk.xs EtkSignals.c test.pl Log Message: - fixed tree creation issues, now you can call FieldsSet() and pass along anything, and the module will do the right thing for you, also FieldsGet() will return the appropriate data types. =================================================================== RCS file: /cvs/e/e17/proto/etk-perl/Etk.xs,v retrieving revision 1.42 retrieving revision 1.43 diff -u -3 -r1.42 -r1.43 --- Etk.xs 16 Aug 2006 20:21:56 -0000 1.42 +++ Etk.xs 18 Aug 2006 20:22:59 -0000 1.43 @@ -17,6 +17,14 @@ #include "EtkTypes.h" #include "EtkSignals.h" +#define mINT 1 +#define mDOUBLE 2 +#define mICONTEXT 3 +#define mIMAGE 4 +#define mCHECKBOX 5 +#define mPROGRESSBAR 6 +#define mTEXT 7 + static void notification_callback(Etk_Object * object, const char * property_name, void * data) { @@ -3884,20 +3892,34 @@ ALIAS: UnselectAll=1 -Etk_Tree_Col * +SV * etk_tree_col_new(tree, title, model, width) Etk_Tree * tree char * title - Etk_Tree_Model * model + SV * model int width ALIAS: ColNew=1 + CODE: + Etk_Tree_Model * modeldata; + Etk_Tree_Col * col; + SV ** model_type; + + modeldata = (Etk_Tree_Model *) SvObj(model, "Etk::Tree::Model"); + + col = etk_tree_col_new(tree, title, modeldata, width); + RETVAL = newSVEtkTreeColPtr(col); + + model_type = hv_fetch( (HV*)SvRV(model), "_model", 6, 0); + if (model_type) { + int type = SvIV(*model_type); + hv_store( (HV*)SvRV(RETVAL), "_model", 6, newSViv(type), 0); + } + OUTPUT: + RETVAL + -MODULE = Etk::Tree::Model::Double PACKAGE = Etk::Tree::Model::Double PREFIX = etk_tree_model_double_ - - - MODULE = Etk::Tree::Col PACKAGE = Etk::Tree::Col PREFIX = etk_tree_col_ Etk_Bool @@ -4076,7 +4098,7 @@ SV * ret; model = etk_tree_model_checkbox_new(tree); ret = newSVEtkTreeModelPtr(model); - hv_store( (HV*)SvRV(ret), "_model", 6, newSVpv("checkbox", 0), 0); + hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mCHECKBOX), 0); XPUSHs(sv_2mortal(ret)); @@ -4091,7 +4113,7 @@ SV * ret; model = etk_tree_model_double_new(tree); ret = newSVEtkTreeModelPtr(model); - hv_store( (HV*)SvRV(ret), "_model", 6, newSVpv("double", 0), 0); + hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mDOUBLE), 0); XPUSHs(sv_2mortal(ret)); @@ -4120,7 +4142,7 @@ SV * ret; model = etk_tree_model_icon_text_new(tree, type); ret = newSVEtkTreeModelPtr(model); - hv_store( (HV*)SvRV(ret), "_model", 6, newSVpv("icontext", 0), 0); + hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mICONTEXT), 0); XPUSHs(sv_2mortal(ret)); @@ -4136,7 +4158,7 @@ SV * ret; model = etk_tree_model_image_new(tree, type); ret = newSVEtkTreeModelPtr(model); - hv_store( (HV*)SvRV(ret), "_model", 6, newSVpv("image", 0), 0); + hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mIMAGE), 0); XPUSHs(sv_2mortal(ret)); MODULE = Etk::Tree::Model::Int PACKAGE = Etk::Tree::Model::Int PREFIX = etk_tree_model_int_ @@ -4150,7 +4172,7 @@ SV * ret; model = etk_tree_model_int_new(tree); ret = newSVEtkTreeModelPtr(model); - hv_store( (HV*)SvRV(ret), "_model", 6, newSVpv("int", 0), 0); + hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mINT), 0); XPUSHs(sv_2mortal(ret)); @@ -4166,7 +4188,7 @@ SV * ret; model = etk_tree_model_progress_bar_new(tree); ret = newSVEtkTreeModelPtr(model); - hv_store( (HV*)SvRV(ret), "_model", 6, newSVpv("progressbar", 0), 0); + hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mPROGRESSBAR), 0); XPUSHs(sv_2mortal(ret)); @@ -4181,7 +4203,7 @@ SV * ret; model = etk_tree_model_text_new(tree); ret = newSVEtkTreeModelPtr(model); - hv_store( (HV*)SvRV(ret), "_model", 6, newSVpv("text", 0), 0); + hv_store( (HV*)SvRV(ret), "_model", 6, newSViv(mTEXT), 0); XPUSHs(sv_2mortal(ret)); @@ -4226,191 +4248,105 @@ void -field_set(row, col, ...) +fields_set(row, col, ...) Etk_Tree_Row * row - Etk_Tree_Col * col + SV * col ALIAS: - FieldSet=1 - CODE: - int i1, i2, i3; - double n1, n2, n3; - void * data1, * data2, * data3; - SV * d1, * d2, *d3; - - d1 = ST(2); - if (SvIOK(d1)) { - i1 = SvIV(d1); - data1 = &i1; - } else if (SvNOK(d1)) { - n1 = SvNV(d1); - data1 = &n1; - } else if (SvPOK(d1)) - data1 = SvPV_nolen(d1); - - if (items == 3) { - etk_tree_row_fields_set(row, col, data1, NULL); - } else { - d2 = ST(3); - if (SvIOK(d2)) { - i2 = SvIV(d2); - data2 = &i2; - } else if (SvNOK(d2)) { - n2 = SvNV(d2); - data2 = &n2; - } else if (SvPOK(d2)) - data2 = SvPV_nolen(d2); - - if (items == 4) { - etk_tree_row_fields_set(row, col, data1, data2, NULL); - } else { - d3 = ST(4); - if (SvIOK(d3)) { - i3 = SvIV(d3); - data3 = &i3; - } else if (SvNOK(d3)) { - n3 = SvNV(d3); - data3 = &n3; - } else if (SvPOK(d3)) - data3 = SvPV_nolen(d3); - etk_tree_row_fields_set(row, col, data1, data2, data3, NULL); + FieldsSet=1 + PREINIT: + Etk_Tree_Col * column; + SV ** model; + CODE: + + column = (Etk_Tree_Col *) SvObj(col, "Etk::Tree::Col"); + + model = hv_fetch( (HV*)SvRV(col), "_model", 6, 0); + if (model) { + int type = SvIV(*model); + switch(type) { + case mINT: + case mCHECKBOX: + etk_tree_row_fields_set(row, column, SvIV(ST(2)), NULL); + break; + case mDOUBLE: + etk_tree_row_fields_set(row, column, SvNV(ST(2)), NULL); + break; + case mICONTEXT: + if (items == 3) + etk_tree_row_fields_set(row, column, SvPV_nolen(ST(2)), NULL); + else if (items == 4) + etk_tree_row_fields_set(row, column, SvPV_nolen(ST(2)), SvPV_nolen(ST(3)), NULL); + else + etk_tree_row_fields_set(row, column, SvPV_nolen(ST(2)), SvPV_nolen(ST(3)), SvPV_nolen(ST(4)), NULL); + break; + case mIMAGE: + if (items == 3) + etk_tree_row_fields_set(row, column, SvPV_nolen(ST(2)), NULL); + else + etk_tree_row_fields_set(row, column, SvPV_nolen(ST(2)), SvPV_nolen(ST(3)), NULL); + break; + case mPROGRESSBAR: + etk_tree_row_fields_set(row, column, SvNV(ST(2)), SvPV_nolen(ST(3)), NULL); + break; + case mTEXT: + etk_tree_row_fields_set(row, column, SvPV_nolen(ST(2)), NULL); + break; } } -int -etk_tree_row_field_int_get(row, col) - Etk_Tree_Row * row - Etk_Tree_Col * col - ALIAS: - FieldIntGet=1 - CODE: - int i; - etk_tree_row_fields_get(row, col, &i, NULL); - RETVAL = i; - OUTPUT: - RETVAL - -char * -etk_tree_row_field_text_get(row, col) - Etk_Tree_Row * row - Etk_Tree_Col * col - ALIAS: - FieldTextGet=1 - CODE: - char *t; - etk_tree_row_fields_get(row, col, &t, NULL); - RETVAL = t; - OUTPUT: - RETVAL - -double -etk_tree_row_field_double_get(row, col) - Etk_Tree_Row * row - Etk_Tree_Col * col - ALIAS: - FieldDoubleGet=1 - CODE: - double d; - etk_tree_row_fields_get(row, col, &d, NULL); - RETVAL = d; - OUTPUT: - RETVAL - -char * -etk_tree_row_field_image_file_get(row, col) - Etk_Tree_Row * row - Etk_Tree_Col * col - ALIAS: - FieldImageFileGet=1 - CODE: - char *image; - etk_tree_row_fields_get(row, col, &image, NULL); - RETVAL = image; - OUTPUT: - RETVAL - -void -etk_tree_row_field_image_edje_get(row, col) - Etk_Tree_Row * row - Etk_Tree_Col * col - ALIAS: - FieldImageEdjeGet=1 - PPCODE: - char *edje; - char *group; - - etk_tree_row_fields_get(row, col, &edje, &group, NULL); - EXTEND(SP, 2); - PUSHs(sv_2mortal(newSVpvn(edje, strlen(edje)))); - PUSHs(sv_2mortal(newSVpvn(group, strlen(group)))); void -etk_tree_row_field_icon_file_text_get(row, col) - Etk_Tree_Row * row - Etk_Tree_Col * col +fields_get(row, col) + Etk_Tree_Row * row + SV * col ALIAS: - FieldIconFileTextGet=1 - PPCODE: - char *icon; - char *t; - etk_tree_row_fields_set(row, col, &icon, &t, NULL); - EXTEND(SP, 2); - PUSHs(sv_2mortal(newSVpvn(icon, strlen(icon)))); - PUSHs(sv_2mortal(newSVpvn(t, strlen(t)))); + FieldsGet=1 + PREINIT: + Etk_Tree_Col * column; + SV ** model; + int i; + double d; + char *c1, *c2, *c3; + PPCODE: -void -etk_tree_row_field_icon_edje_text_get(row, col) - Etk_Tree_Row * row - Etk_Tree_Col * col - ALIAS: - FieldIconEdjeTextGet=1 - PPCODE: - char *icon; - char *group; - char *t; - etk_tree_row_fields_get(row, col, &icon, &group, &t, NULL); - EXTEND(SP, 3); - PUSHs(sv_2mortal(newSVpvn(icon, strlen(icon)))); - PUSHs(sv_2mortal(newSVpvn(group, strlen(group)))); - PUSHs(sv_2mortal(newSVpvn(t, strlen(t)))); - -int -etk_tree_row_field_checkbox_get(row, col) - Etk_Tree_Row * row - Etk_Tree_Col * col - ALIAS: - FieldCheckboxGet=1 - CODE: - int checked; - etk_tree_row_fields_get(row, col, &checked, NULL); - RETVAL = checked; - OUTPUT: - RETVAL - -void -etk_tree_row_field_progress_bar_get(row, col) - Etk_Tree_Row * row - Etk_Tree_Col * col - ALIAS: - FieldProgressBarGet=1 - CODE: - double fraction; - char *t; - etk_tree_row_fields_get(row, col, &fraction, &t, NULL); - EXTEND(SP, 2); - PUSHs(sv_2mortal(newSViv(fraction))); - PUSHs(sv_2mortal(newSVpvn(t, strlen(t)))); + column = (Etk_Tree_Col *) SvObj(col, "Etk::Tree::Col"); -void -etk_tree_row_fields_get(row, ...) - Etk_Tree_Row * row - ALIAS: - FieldsGet=1 + model = hv_fetch( (HV*)SvRV(col), "_model", 6, 0); + if (model) { + int type = SvIV(*model); + switch(type) { + case mINT: + case mCHECKBOX: + 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 mICONTEXT: + etk_tree_row_fields_get(row, column, &c1, &c2, &c3, NULL); + XPUSHs(sv_2mortal(newSVpv(c1, strlen(c1)))); + if (c2) XPUSHs(sv_2mortal(newSVpv(c2, strlen(c2)))); + if (c3) XPUSHs(sv_2mortal(newSVpv(c3, strlen(c3)))); + 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; + } + } -void -etk_tree_row_fields_set(row, ...) - Etk_Tree_Row * row - ALIAS: - FieldsSet=1 Etk_Tree_Row * etk_tree_row_first_child_get(row) =================================================================== RCS file: /cvs/e/e17/proto/etk-perl/EtkSignals.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- EtkSignals.c 16 Aug 2006 20:21:56 -0000 1.1 +++ EtkSignals.c 18 Aug 2006 20:22:59 -0000 1.2 @@ -30,7 +30,7 @@ } else { - event_rv = newRV_noinc(sv_2mortal((SV*)newHV())); + event_rv = &PL_sv_undef; } =================================================================== RCS file: /cvs/e/e17/proto/etk-perl/test.pl,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- test.pl 16 Aug 2006 20:21:56 -0000 1.7 +++ test.pl 18 Aug 2006 20:22:59 -0000 1.8 @@ -24,12 +24,12 @@ $tree->Build(); my $row = $tree->Append(); -$row->FieldTextSet($col1, "Wee!!!!"); -$row->FieldProgressBarSet($col2, 0.5, " Loading ... "); +$row->FieldsSet($col1, "Wee!!!!"); +$row->FieldsSet($col2, 0.5, " Loading ... "); $row = $tree->Append(); -$row->field_text_set($col1, "Second Line"); -$row->FieldProgressBarSet($col2, 0.2, " Reading ... "); +$row->FieldsSet($col1, "Second Line"); +$row->FieldsSet($col2, 0.2, " Reading ... "); $vbox->Append($tree, BoxStart, BoxNone, 0); ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs