Re: Re: GtkSheet style
| From: | Ivan Rodriguez | Date: | Thu, 13 Jan 2005 20:59:26 +0000 |
| Subject: | Re: Re: GtkSheet style | ||
| References: | 1 2 3 4 5 6 7 8 9 10 | Groups: | php.gtk.dev |
| Request: | Send a blank email to php-gtk-dev+get-863@lists.php.net to get a copy of this message | ||
Hello
I write this in the extra.defs file:
(struct SheetRange
(in-module Gtk)
(c-name GtkSheetRange)
(field (type-and-name gint row0))
(field (type-and-name gint col0))
(field (type-and-name gint rowi))
(field (type-and-name gint coli))
)
With this code the functions range_set_* compile perfect and generate
the C code in gen_extra.c
PHP_GTK_EXPORT_CE(gtk_sheet_range_ce);
/* struct GtkSheetRange */
zval *PHP_GTK_EXPORT_FUNC(php_gtk_sheet_range_new)(GtkSheetRange *obj)
{
zval *result;
TSRMLS_FETCH();
if (!obj) {
MAKE_STD_ZVAL(result);
ZVAL_NULL(result);
return result;
}
MAKE_STD_ZVAL(result);
object_init_ex(result, gtk_sheet_range_ce);
add_property_long(result, "row0", obj->row0);
add_property_long(result, "col0", obj->col0);
add_property_long(result, "rowi", obj->rowi);
add_property_long(result, "coli", obj->coli);
return result;
}
zend_bool PHP_GTK_EXPORT_FUNC(php_gtk_sheet_range_get)(zval *wrapper,
GtkSheetRange *obj)
{
zval **item;
TSRMLS_FETCH();
if (!php_gtk_check_class(wrapper, gtk_sheet_range_ce))
return 0;
if (zend_hash_find(Z_OBJPROP_P(wrapper), "row0", sizeof("row0"), (void
**)&item) == SUCCESS && Z_TYPE_PP(item) == IS_LONG)
obj->row0 = (gint)Z_LVAL_PP(item);
else
return 0;
if (zend_hash_find(Z_OBJPROP_P(wrapper), "col0", sizeof("col0"), (void
**)&item) == SUCCESS && Z_TYPE_PP(item) == IS_LONG)
obj->col0 = (gint)Z_LVAL_PP(item);
else
return 0;
if (zend_hash_find(Z_OBJPROP_P(wrapper), "rowi", sizeof("rowi"), (void
**)&item) == SUCCESS && Z_TYPE_PP(item) == IS_LONG)
obj->rowi = (gint)Z_LVAL_PP(item);
else
return 0;
if (zend_hash_find(Z_OBJPROP_P(wrapper), "coli", sizeof("coli"), (void
**)&item) == SUCCESS && Z_TYPE_PP(item) == IS_LONG)
obj->coli = (gint)Z_LVAL_PP(item);
else
return 0;
return 1;
}
PHP_FUNCTION(gtksheetrange)
{
long row0, col0, rowi, coli;
NOT_STATIC_METHOD();
if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iiii", &row0, &col0, &rowi,
&coli)) {
php_gtk_invalidate(this_ptr);
return;
}
add_property_long(this_ptr, "row0", row0);
add_property_long(this_ptr, "col0", col0);
add_property_long(this_ptr, "rowi", rowi);
add_property_long(this_ptr, "coli", coli);
}
static function_entry php_gtk_sheet_range_functions[] = {
{"GtkSheetRange", PHP_FN(gtksheetrange), NULL},
{"gtksheet_range", PHP_FN(gtksheetrange), NULL},
{NULL, NULL, NULL}
};
INIT_CLASS_ENTRY(ce, "GtkSheetRange", php_gtk_sheet_range_functions);
gtk_sheet_range_ce = zend_register_internal_class_ex(&ce, NULL, NULL
TSRMLS_CC);
Now if y do this in PHP:
$cmap = gtk::widget_get_default_colormap();
$bgcolor = $cmap->alloc('#eae8e3');
$sheet = new GtkSheet(5, 5, "test");
$sheet->range_set_background(1, $bgcolor);
$sheet->show();
PHP says:
Warning: range_set_background() expects argument 1 to be GtkSheetRange,
integer given in /home/epplestun/sheet.php on line 24
But I don't know how to create a GtkSheetRange in PHP code, I try with
new GtkSheetRange but not work :-(
Any idea?¿
El jue, 13-01-2005 a las 15:38, Ivan Rodriguez escribió:
> Hi
>
> I´m thinking to something like:
>
> (object SheetRange
> (in-module Gtk)
> (parent Widget (Gtk))
> (c-name GtkSheetRange)
> )
>
> (method set_range
> (of-object SheetRange (Gtk))
> (c-name gtk_sheet_range_get_points)
> (return-type GtkSheetRange)
> (parameter (type-and-name gint* *row0))
> (parameter (type-and-name gint* *col0))
> (parameter (type-and-name gint* *rowi))
> (parameter (type-and-name gint* *coli))
> )
>
> The problem is that there is no a function like the written one and I
> don´t know how to assing the values to the object, what can I do?
--
Ivan Rodriguez <epplestun@gmail.com>