#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "GtkDefs.h"
/* Still missing: argument, vector &c functions */
void foreach_container_handler (GtkWidget *widget, gpointer data)
{
AV * perlargs = (AV*)data;
SV * perlhandler = *av_fetch(perlargs, 1, 0);
SV * sv_object = newSVGtkObjectRef(GTK_OBJECT(widget), 0);
int i;
dSP;
PUSHMARK(SP);
XPUSHs(sv_2mortal(sv_object));
for(i=2;i<=av_len(perlargs);i++)
XPUSHs(sv_2mortal(newSVsv(*av_fetch(perlargs, i, 0))));
XPUSHs(sv_2mortal(newSVsv(*av_fetch(perlargs, 0, 0))));
PUTBACK ;
perl_call_sv(perlhandler, G_DISCARD);
}
MODULE = Gtk::Container PACKAGE = Gtk::Container PREFIX = gtk_container_
#ifdef GTK_CONTAINER
void
set_border_width(container, width)
Gtk::Container container
int width
ALIAS:
Gtk::Container::set_border_width = 0
Gtk::Container::border_width = 1
CODE:
#if GTK_HVER < 0x010106
/* DEPRECATED */
gtk_container_border_width(container, width);
#else
gtk_container_set_border_width(container, width);
#endif
#OUTPUT: Gtk::Widget
SV *
add(container, widget)
Gtk::Container container
Gtk::Widget widget
CODE:
gtk_container_add(container, widget);
RETVAL = newSVsv(ST(1));
OUTPUT:
RETVAL
Gtk::Widget
remove(container, widget)
Gtk::Container container
Gtk::Widget widget
CODE:
gtk_container_remove(container, widget);
RETVAL = widget;
OUTPUT:
RETVAL
#ARG: $handler subroutine (a subroutine that will get each children of the container)
#ARG: ... list (additional arguments for $handler)
void
foreach(container, handler, ...)
Gtk::Container container
SV * handler
ALIAS:
Gtk::Container::foreach = 0
Gtk::Container::forall = 1
PPCODE:
{
AV * args;
SV * arg;
int i;
int type;
args = newAV();
av_push(args, newRV_inc(SvRV(ST(0))));
PackCallbackST(args, 1);
if (ix == 0)
gtk_container_foreach(container, foreach_container_handler, args);
else
gtk_container_forall(container, foreach_container_handler, args);
SvREFCNT_dec(args);
}
void
children(container)
Gtk::Container container
PPCODE:
{
GList * c = gtk_container_children(container);
GList * start = c;
while(c) {
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSVGtkObjectRef(GTK_OBJECT((GtkWidget*)c->data), 0)));
c = c->next;
}
if (start)
g_list_free(start);
}
int
gtk_container_focus(container, direction)
Gtk::Container container
Gtk::DirectionType direction
#ifdef GTK_HAVE_CONTAINER_FOCUS_ADJUSTMENTS
void
gtk_container_set_focus_vadjustment(container, adjustment)
Gtk::Container container
Gtk::Adjustment adjustment
void
gtk_container_set_focus_hadjustment(container, adjustment)
Gtk::Container container
Gtk::Adjustment adjustment
#endif
void
gtk_container_register_toplevel (container)
Gtk::Container container
void
gtk_container_unregister_toplevel (container)
Gtk::Container container
#if GTK_HVER < 0x010105
void
gtk_container_disable_resize(container)
Gtk::Container container
void
gtk_container_enable_resize(container)
Gtk::Container container
void
gtk_container_block_resize(container)
Gtk::Container container
void
gtk_container_unblock_resize(container)
Gtk::Container container
bool
gtk_container_need_resize(container)
Gtk::Container container
#endif
#if GTK_HVER >= 0x010100
void
gtk_container_resize_children(container)
Gtk::Container container
void
gtk_container_set_focus_child(container, child)
Gtk::Container container
Gtk::Widget child
#endif
#if GTK_HVER >= 0x010200
char*
gtk_container_child_type (container)
Gtk::Container container
CODE:
RETVAL = ptname_for_gtnumber(gtk_container_child_type(container));
OUTPUT:
RETVAL
char *
gtk_container_child_composite_name (container, child)
Gtk::Container container
Gtk::Widget child
void
gtk_container_set_resize_mode(container, resize_mode)
Gtk::Container container
Gtk::ResizeMode resize_mode
void
gtk_container_check_resize(container)
Gtk::Container container
void
gtk_container_dequeue_resize_handler (container)
Gtk::Container container
void
gtk_container_queue_resize (container)
Gtk::Container container
void
gtk_container_clear_resize_widgets (container)
Gtk::Container container
void
gtk_container_get_toplevels (Class)
SV * Class
PPCODE:
{
GList * tmp = gtk_container_get_toplevels ();
while (tmp) {
EXTEND(sp, 1);
PUSHs(sv_2mortal(newSVGtkObjectRef(GTK_OBJECT(tmp->data), 0)));
tmp = tmp->next;
}
}
#endif
#endif