Gtk-Perl
view release on metacpan or search on metacpan
Gtk/xs/GtkObject.xs view on Meta::CPAN
fprintf(stderr, "Class is not registered\n");
return;
}
#ifdef DEBUG_TYPES
printf("Within generic class init\n");
#endif
#ifdef GTK_1_1
klass->set_arg = (GtkArgGetFunc)generic_perl_gtk_arg_set_func;
klass->get_arg = (GtkArgSetFunc)generic_perl_gtk_arg_get_func;
#endif
PUSHMARK(SP);
XPUSHs(sv_2mortal(newSVpv(perlClass, 0)));
PUTBACK;
perl_call_method("GTK_CLASS_INIT", G_DISCARD);
}
static void generic_perl_gtk_object_init(GtkObject * object, GtkObjectClass *klass)
{
SV * s;
dSP;
char * func;
CV *cv;
s = newSVGtkObjectRef(object, ptname_for_gtnumber(klass->type));
if (!s) {
fprintf(stderr, "Object is not of registered type\n");
return;
}
PUSHMARK(SP);
/*XPUSHs(sv_2mortal(newSVpv(ptname_for_gtnumber(object->klass->type), 0)));*/
XPUSHs(sv_2mortal(s));
PUTBACK;
func = g_strdup_printf("%s::GTK_OBJECT_INIT", ptname_for_gtnumber(object->klass->type));
/*perl_call_method("GTK_OBJECT_INIT", G_DISCARD);*/
#ifdef DEBUG_TYPES
printf("Within generic object init (obj: %s, class: %s): %s\n", ptname_for_gtnumber(object->klass->type), ptname_for_gtnumber(klass->type), func);
#endif
if ((cv=perl_get_cv(func, 0)))
perl_call_sv((SV*)cv, G_DISCARD);
g_free(func);
}
void destroy_data(gpointer data)
{
SvREFCNT_dec((SV*)data);
}
MODULE = Gtk::Object PACKAGE = Gtk::Object PREFIX = gtk_object_
#ifdef GTK_OBJECT
# FIXME: See if we need signal_connect_while_alive
int
signal_connect(object, event, handler, ...)
Gtk::Object object
char * event
SV * handler
ALIAS:
Gtk::Object::signal_connect = 0
Gtk::Object::signal_connect_after = 1
CODE:
{
AV * args;
SV * arg;
SV ** fixup;
int i,j;
int type;
/*char num[20];
void * fixupfunc = 0;*/
args = newAV();
type = gtk_signal_lookup(event, object->klass->type);
if (!ix)
i = gtk_signal_connect (GTK_OBJECT (object), event,
NULL, (void*)args);
else
i = gtk_signal_connect_after (GTK_OBJECT (object), event,
NULL, (void*)args);
av_push(args, newRV_inc(SvRV(ST(0))));
av_push(args, newSVsv(ST(1)));
av_push(args, newSViv(type));
PackCallbackST(args, 2);
RETVAL = i;
}
OUTPUT:
RETVAL
void
signal_disconnect(object, id)
Gtk::Object object
int id
CODE:
gtk_signal_disconnect(object, id);
void
signal_handlers_destroy(object)
Gtk::Object object
CODE:
gtk_signal_handlers_destroy(object);
char *
type_name(object)
Gtk::Object object
CODE:
RETVAL = gtk_type_name(GTK_OBJECT_TYPE(object));
OUTPUT:
( run in 2.924 seconds using v1.01-cache-2.11-cpan-437f7b0c052 )