Gtk-Perl

 view release on metacpan or  search on metacpan

Bonobo/xs/BonoboEmbeddable.xs  view on Meta::CPAN

	SV * result;
	BonoboCanvasComponent * comp = NULL;
	dSP;

	ENTER;
	SAVETMPS;
	PUSHMARK(SP);
	XPUSHs(sv_2mortal(newSVGtkObjectRef(GTK_OBJECT(embeddable), 0)));
	XPUSHs(sv_2mortal(newSVGtkObjectRef(GTK_OBJECT(canvas), 0)));
	for (i=1;i<=av_len(args);i++)
		XPUSHs(sv_2mortal(newSVsv(*av_fetch(args, i, 0))));
	PUTBACK;
	i = perl_call_sv(handler, G_SCALAR);
	SPAGAIN;
	if (i!=1)
		croak("handler failed");
	result = POPs;
	comp = BONOBO_CANVAS_COMPONENT(SvGtkObjectRef(result, 0));
	PUTBACK;
	FREETMPS;
	LEAVE;

	return comp;
}

static void
generic_foreach_view (BonoboView *view, void *data) {
	AV * args = (AV*)data;
	SV * handler = *av_fetch(args, 0, 0);
	int i;
	dSP;

	PUSHMARK(SP);
	XPUSHs(sv_2mortal(newSVGtkObjectRef(GTK_OBJECT(view), 0)));
	for (i=1;i<=av_len(args);i++)
		XPUSHs(sv_2mortal(newSVsv(*av_fetch(args, i, 0))));
	PUTBACK;
	perl_call_sv(handler, G_DISCARD);
	return;
}

static void
generic_foreach_item (BonoboCanvasComponent *comp, void *data) {
	AV * args = (AV*)data;
	SV * handler = *av_fetch(args, 0, 0);
	int i;
	dSP;

	PUSHMARK(SP);
	XPUSHs(sv_2mortal(newSVGtkObjectRef(GTK_OBJECT(comp), 0)));
	for (i=1;i<=av_len(args);i++)
		XPUSHs(sv_2mortal(newSVsv(*av_fetch(args, i, 0))));
	PUTBACK;
	perl_call_sv(handler, G_DISCARD);
	return;
}


MODULE = Gnome::BonoboEmbeddable		PACKAGE = Gnome::BonoboEmbeddable		PREFIX = bonobo_embeddable_

#ifdef BONOBO_EMBEDDABLE

Gnome::BonoboEmbeddable
bonobo_embeddable_new (Class, factory, ...)
	SV *	Class
	SV *	factory
	CODE:
	{
		AV *args = newAV();
		PackCallbackST(args, 1);
		RETVAL = bonobo_embeddable_new(generic_view_factory, args);
	}
	OUTPUT:
	RETVAL

Gnome::BonoboEmbeddable
bonobo_embeddable_new_canvas_item (Class, item_factory, ...)
	SV *	Class
	SV *	item_factory
	CODE:
	{
		AV *args = newAV();
		PackCallbackST(args, 1);
		RETVAL = bonobo_embeddable_new_canvas_item(generic_item_factory, args);
	}
	OUTPUT:
	RETVAL

Gnome::BonoboEmbeddable
bonobo_embeddable_construct (embeddable, factory, ...)
	Gnome::BonoboEmbeddable	embeddable
	SV *	factory
	CODE:
	{
		AV *args = newAV();
		PackCallbackST(args, 1);
		RETVAL = bonobo_embeddable_construct (embeddable, generic_view_factory, args);
	}
	OUTPUT:
	RETVAL

void
bonobo_embeddable_set_view_factory (embeddable, factory, ...)
	Gnome::BonoboEmbeddable	embeddable
	SV *	factory
	CODE:
	{
		AV *args = newAV();
		PackCallbackST(args, 1);
		bonobo_embeddable_set_view_factory (embeddable, generic_view_factory, args);
	}

char *
bonobo_embeddable_get_uri (embeddable)
	Gnome::BonoboEmbeddable	embeddable

void
bonobo_embeddable_set_uri (embeddable, uri)
	Gnome::BonoboEmbeddable	embeddable
	char *	uri



( run in 1.911 second using v1.01-cache-2.11-cpan-71847e10f99 )