The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#include "include/FLTK_pm.h"

MODULE = FLTK::Widget               PACKAGE = FLTK::Widget

#ifndef DISABLE_WIDGET

#include <fltk/Widget.h>

#include <fltk/LabelType.h>

#include "include/RectangleSubclass.h"

fltk::Widget *
fltk::Widget::new( int x, int y, int w, int h, const char * label = 0 )
    CODE:
        RETVAL = new RectangleSubclass<fltk::Widget>(CLASS,x,y,w,h,label);
    OUTPUT:
        RETVAL

void
fltk::Widget::destroy( )
    CODE:
        delete THIS;
        sv_setsv(ST(0), &PL_sv_undef);

fltk::Group *
fltk::Widget::parent ( fltk::Group * group = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->parent( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            THIS->parent( group );

fltk::Window *
fltk::Widget::window ( )


int
RESERVED_TYPE ( )
    CODE:
        switch( ix ) {
            case 0: RETVAL = fltk::Widget::RESERVED_TYPE; break;
            case 1: RETVAL = fltk::Widget::TOGGLE;        break;
            case 2: RETVAL = fltk::Widget::RADIO;         break;
            case 3: RETVAL = fltk::Widget::GROUP_TYPE;    break;
            case 4: RETVAL = fltk::Widget::WINDOW_TYPE;   break;
        }
    OUTPUT:
        RETVAL
    ALIAS:
             TOGGLE = 1
              RADIO = 2
         GROUP_TYPE = 3
        WINDOW_TYPE = 4

uchar
fltk::Widget::type( uchar value = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->type( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            THIS->type( value );

bool
fltk::Widget::is_group( )
    CODE:
        switch( ix ) {
            case 0: RETVAL = THIS->is_group( );  break;
            case 1: RETVAL = THIS->is_window( ); break;
            case 2: RETVAL = THIS->horizontal( ); break;
            case 3: RETVAL = THIS->vertical( );   break;
        }
    OUTPUT:
        RETVAL
    ALIAS:
         is_window = 1
        horizontal = 2
          vertical = 3

bool
fltk::Widget::resize ( int x = NO_INIT, int y = NO_INIT, int w, int h )
    CASE: items == 3
        CODE:
            RETVAL = THIS->resize( x, y, w, h );
    CASE: items == 5
        CODE:
            RETVAL = THIS->resize( w, h );
    OUTPUT:
        RETVAL

bool
fltk::Widget::position ( int x, int y )

void
fltk::Widget::get_absolute_rect( fltk::Rectangle * rect )

const char *
fltk::Widget::label ( char * string = NO_INIT )
    CASE: items == 1
        CODE:
            switch( ix ) {
                case 0: RETVAL = THIS->label( );   break;
                case 1: RETVAL = THIS->tooltip( ); break;
            }
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            switch( ix ) {
                case 0: THIS->label( string );   break;
                case 1: THIS->tooltip( string ); break;
            }
    ALIAS:
        tooltip = 1

void
fltk::Widget::copy_label( char * string )

#include <fltk/Image.h>

const fltk::Symbol *
fltk::Widget::image ( fltk::Image * image = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->image( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            THIS->image( image );

unsigned
fltk::Widget::shortcut ( unsigned KEY = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->shortcut( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            THIS->shortcut( KEY );

bool
fltk::Widget::add_shortcut ( unsigned key )
    CODE:
        switch( ix ) {
            case 0:    RETVAL = THIS->add_shortcut( key ); break;
            case 1: RETVAL = THIS->remove_shortcut( key ); break;
        }
    OUTPUT:
        RETVAL
    ALIAS:
        remove_shortcut = 1

unsigned
fltk::Widget::label_shortcut ( )

bool
fltk::Widget::test_label_shortcut ( )

bool
fltk::Widget::test_shortcut ( bool test_label = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->test_shortcut( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            RETVAL = THIS->test_shortcut( test_label );
        OUTPUT:
            RETVAL

fltk::Callback *
fltk::Widget::callback( callback = NO_INIT, SV * args = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->callback( );
        OUTPUT:
            RETVAL
    CASE: (SvROK( ST( 1 ) ) ) && ( SvTYPE(SvRV(ST(1))) == SVt_PVCV )
        CV * callback
        CODE:
            HV   * stash = SvSTASH( SvRV( ST( 0 ) ) );
            char * CLASS = HvNAME( stash );
            HV   * cb    = newHV( );
            hv_store( cb, "coderef",  7, newSVsv( ST( 1 ) ),                0 );
            hv_store( cb, "class",    5, newSVpv( CLASS, strlen( CLASS ) ), 0 );
            if ( items == 3 )
                hv_store( cb, "args", 4, newSVsv( args ),                   0 );
            THIS->callback(_cb_w, (void *) cb);
    CASE:
        fltk::Callback * callback
        CODE:
            THIS->callback( callback );

SV *
fltk::Widget::user_data ( SV * args = NO_INIT )
    CASE: items == 1
        CODE:
            AV * arr = (AV*)THIS->user_data( ); // XXX - check if arr == NULL
            RETVAL = av_len(arr) == 2 ? *av_fetch(arr, 2, 0) : &PL_sv_undef;
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            AV * arr = newAV( );
            av_push(arr, av_shift((AV*)THIS->user_data()));
            SV * widget = newSVsv((SV*)ST(0));
#ifdef SvWEAKREF // XXX - Do I need to check this here? See FLTK::cb_w()
            //sv_rvweaken(widget);
#else // ifdef SvWEAKREF
            croak("weak references are not implemented in this release of perl");
            XSRETURN_EMPTY;
#endif // ifdef SvWEAKREF
            av_push(arr, widget); // widget
            for (int i = 1; i < items; i++) {
                av_push(arr, newSVsv((SV*)ST(i)));
            }
            THIS->user_data(arr);
    ALIAS:
        argument    = 1


uchar
fltk::Widget::when ( uchar flag = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->when( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            THIS->when( flag );

void
fltk::Widget::default_callback( fltk::Widget * w, SV * args = NO_INIT)
    CODE:
        SV * _widget = newSVsv((SV*)ST(1));
#ifdef SvWEAKREF // XXX - Do I need to check this here? See FLTK::cb_w()
        //sv_rvweaken(_widget);
#else // ifdef SvWEAKREF
        croak("weak references are not implemented in this release of perl");
        XSRETURN_EMPTY;
#endif // ifdef SvWEAKREF
        AV  * arr     = newAV( );
        if (THIS->user_data() == NULL) // if THIS has no cb, do nothing
            return;
        SV ** coderef = av_fetch((AV*)THIS->user_data(), 0, 0);
        av_push(arr, newSVsv(*coderef));
        av_push(arr, _widget);
        if ( items == 3 )
            av_push(arr, newSVsv(args));
        THIS->default_callback(w, (void *) arr);

void
fltk::Widget::do_callback( fltk::Widget * widget = NO_INIT, SV * args = NO_INIT )
    CASE: items == 1
        CODE:
            THIS->do_callback( );
    CASE:
        CODE:
            SV * _widget = newSVsv((SV*)ST(1));
#ifdef SvWEAKREF // XXX - Do I need to check this here? See FLTK::cb_w()
            //sv_rvweaken(_widget);
#else // ifdef SvWEAKREF
        croak("weak references are not implemented in this release of perl");
        XSRETURN_EMPTY;
#endif // ifdef SvWEAKREF
            AV  * arr     = newAV( );
            if (THIS->user_data() == NULL) // if THIS has no cb, do nothing
                return;
            SV ** coderef = av_fetch((AV*)THIS->user_data(), 0, 0);
            av_push(arr, newSVsv(*coderef));
            av_push(arr, _widget);
            if ( items == 3 )
                av_push(arr, newSVsv(args));
            THIS->do_callback(widget, (void *) arr);


bool
fltk::Widget::contains ( fltk::Widget * child )
    CODE:
        switch( ix ) {
            case 0: RETVAL = THIS->contains(child); break;
            case 1: RETVAL = THIS->inside(child);   break;
        }
    OUTPUT:
        RETVAL
    ALIAS:
        inside = 1

bool
fltk::Widget::active( )
    CODE:
        switch ( ix ) {
            case  0: RETVAL = THIS->active( );         break;
            case  1: RETVAL = THIS->active_r( );       break;
            case  2: RETVAL = THIS->output( );         break;
            case  3: RETVAL = THIS->visible( );        break;
            case  4: RETVAL = THIS->visible_r( );      break;
            case  5: RETVAL = THIS->takesevents( );    break;
            case  6: RETVAL = THIS->click_to_focus( ); break;
            case  7: RETVAL = THIS->tab_to_focus( );   break;
            case  8: RETVAL = THIS->changed( );        break;
          //case  9: RETVAL = THIS->value( );          break;
            case 10: RETVAL = THIS->selected( );       break;
            case 11: RETVAL = THIS->pushed( );         break;
            case 12: RETVAL = THIS->focused( );        break;
            case 13: RETVAL = THIS->belowmouse( );     break;
            case 15: RETVAL = THIS->clear( );          break;
            case 16: RETVAL = THIS->take_focus( );     break;
        }
    OUTPUT:
        RETVAL
    ALIAS:
              active_r =  1
                output =  2
               visible =  3
             visible_r =  4
           takesevents =  5
        click_to_focus =  6
          tab_to_focus =  7
               changed =  8
                 value =  9
              selected = 10
                pushed = 11
               focused = 12
            belowmouse = 13
                 clear = 15
            take_focus = 16


fltk::Flags
fltk::Widget::flags( fltk::Flags f = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->flags( );
            OUTPUT:
                RETVAL
    CASE:
        CODE:
            THIS->flags( f );

void
fltk::Widget::set_flag( unsigned f, bool b = NO_INIT )
    CASE: items == 2
        CODE:
            THIS->set_flag( f );
    CASE:
        CODE:
            THIS->set_flag( f, b );

void
fltk::Widget::clear_flag( unsigned f )

void
fltk::Widget::invert_flag( unsigned f )

bool
fltk::Widget::flag( unsigned f )
    ALIAS:
        any_of = 1
        all_of = 2
    CODE:
        switch( ix ) {
            case 0: RETVAL = THIS->flag( f ); break;
            case 1: RETVAL = THIS->any_of( f ); break;
            case 2: RETVAL = THIS->all_of( f ); break;
        }
    OUTPUT:
        RETVAL

bool
fltk::Widget::state( bool value = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->state( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            THIS->state( value );

fltk::Flags
fltk::Widget::align( unsigned flags = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->align( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            THIS->align( flags );

void
fltk::Widget::activate( int b = NO_INIT )
    CASE: items == 1
        CODE:
            THIS->activate( );
    CASE:
        CODE:
            THIS->activate( b );

void
fltk::Widget::set_output( )
    CODE:
        switch( ix ) {
            case  0:           THIS->set_output( ); break;
            case  1:         THIS->clear_output( ); break;
            case  2:          THIS->set_changed( ); break;
            case  3:        THIS->clear_changed( ); break;
            case  4:         THIS->set_selected( ); break;
            case  5:       THIS->clear_selected( ); break;
            case  6:   THIS->set_click_to_focus( ); break;
            case  7: THIS->clear_click_to_focus( ); break;
            case  8:     THIS->set_tab_to_focus( ); break;
            case  9:   THIS->clear_tab_to_focus( ); break;
            case 10:         THIS->set_vertical( ); break;
            case 11:       THIS->set_horizontal( ); break;
            case 12:          THIS->throw_focus( ); break;
            case 13:     THIS->remove_shortcuts( ); break;
            case 14:         THIS->make_current( ); break;
            case 15:      THIS->draw_background( ); break;
            case 16:           THIS->draw_frame( ); break;
        }
    ALIAS:
                clear_output =  1
                 set_changed =  2
               clear_changed =  3
                set_selected =  4
              clear_selected =  5
          set_click_to_focus =  6
        clear_click_to_focus =  7
            set_tab_to_focus =  8
          clear_tab_to_focus =  9
                set_vertical = 10
              set_horizontal = 11
                 throw_focus = 12
            remove_shortcuts = 13
                make_current = 14
             draw_background = 15
                  draw_frame = 16

void
fltk::Widget::redraw( args = NO_INIT )
    CASE: items == 1
        CODE:
            THIS->redraw( );
    CASE: sv_isobject(ST(0))
        fltk::Rectangle * args
        CODE:
            THIS->redraw( * args );
    CASE:
        uchar args
        CODE:
            THIS->redraw( args );

void
fltk::Widget::redraw_label( )
    CODE:
        switch ( ix ) {
            case 0: THIS->redraw_label( );     break;
            case 1: THIS->redraw_highlight( ); break;
        }
    ALIAS:
        redraw_highlight = 1


void
fltk::Widget::draw_box ( fltk::Rectangle * rect = NO_INIT )
    CASE: items == 1
        CODE:
            THIS->draw_box( );
    CASE:
        CODE:
            THIS->draw_box( *rect );

void
fltk::Widget::draw_label ( fltk::Rectangle * ir = NO_INIT, fltk::Flags flags = NO_INIT )
    CASE: items == 1
        CODE:
            THIS->draw_label( );
    CASE: items == 3
        CODE:
            THIS->draw_label( *ir, flags );

void
fltk::Widget::draw_glyph ( int which, fltk::Rectangle * rect )
    C_ARGS: which, * rect

void
fltk::Widget::measure_label( OUTLIST int w, OUTLIST int h )
    C_ARGS: w, h

fltk::Box *
fltk::Widget::box( fltk::Box * box = NO_INIT )
    CASE: items == 1
        CODE:
            switch ( ix ) {
                case 0: RETVAL =       THIS->box( ); break;
                case 1: RETVAL = THIS->buttonbox( ); break;
            }
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            switch( ix ) {
                case 0:       THIS->box( box ); break;
                case 1: THIS->buttonbox( box ); break;
            }
    ALIAS:
        buttonbox = 1

fltk::Symbol *
fltk::Widget::glyph( fltk::Symbol * symbol = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->glyph( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            THIS->glyph( symbol );

fltk::Font *
fltk::Widget::labelfont ( fltk::Font * font = NO_INIT )
    CASE: items == 1
        CODE:
            switch ( ix ) {
                case 0: RETVAL = THIS->labelfont( ); break;
                case 1: RETVAL =  THIS->textfont( ); break;
            }
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            switch ( ix ) {
                case 0: THIS->labelfont( font ); break;
                case 1:  THIS->textfont( font ); break;
            }
    ALIAS:
        textfont = 1

fltk::LabelType *
fltk::Widget::labeltype( fltk::LabelType * type = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->labeltype( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            THIS->labeltype( type );

fltk::Color
fltk::Widget::color ( fltk::Color color = NO_INIT )
    CASE: items == 1
        CODE:
            switch( ix ) {
                case 0:               RETVAL = THIS->color( ); break;
                case 1:           RETVAL = THIS->textcolor( ); break;
                case 2:     RETVAL = THIS->selection_color( ); break;
                case 3: RETVAL = THIS->selection_textcolor( ); break;
                case 4:         RETVAL = THIS->buttoncolor( ); break;
                case 5:          RETVAL = THIS->labelcolor( ); break;
                case 6:     RETVAL = THIS->highlight_color( ); break;
                case 7: RETVAL = THIS->highlight_textcolor( ); break;
            }
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            switch( ix ) {
                case 0:               THIS->color( color ); break;
                case 1:           THIS->textcolor( color ); break;
                case 2:     THIS->selection_color( color ); break;
                case 3: THIS->selection_textcolor( color ); break;
                case 4:         THIS->buttoncolor( color ); break;
                case 5:          THIS->labelcolor( color ); break;
                case 6:     THIS->highlight_color( color ); break;
                case 7: THIS->highlight_textcolor( color ); break;
            }
    ALIAS:
                  textcolor = 1
            selection_color = 2
        selection_textcolor = 3
                buttoncolor = 4
                 labelcolor = 5
            highlight_color = 6
        highlight_textcolor = 7

float
fltk::Widget::labelsize( float size = NO_INIT )
    CASE: items == 1
        CODE:
            switch ( ix ) {
                case 0: RETVAL = THIS->labelsize( ); break;
                case 1:  RETVAL = THIS->textsize( ); break;
                case 2:   RETVAL = THIS->leading( ); break;
            }
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            switch ( ix ) {
                case 0: THIS->labelsize( size ); break;
                case 1:  THIS->textsize( size ); break;
                case 2:   THIS->leading( size ); break;
             }
    ALIAS:
        textsize = 1
         leading = 2

unsigned char
fltk::Widget::scrollbar_align ( unsigned char value = NO_INIT )
    CASE: items == 1
        CODE:
            switch ( ix ) {
                case 0: RETVAL = THIS->scrollbar_align( ); break;
                case 1: RETVAL = THIS->scrollbar_width( ); break;
            }
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            switch ( ix ) {
                case 0: THIS->scrollbar_align( value ); break;
                case 1: THIS->scrollbar_width( value ); break;
            }
    ALIAS:
        scrollbar_width = 1

#ifndef DISABLE_ASSOCIATIONFUNCTOR

#include <fltk/WidgetAssociation.h>

void
fltk::Widget::add ( fltk::AssociationType ATYPE, SV * DATA = NO_INIT )
    CODE:
        THIS->add( ATYPE, (void *) DATA );

#endif // ifndef DISABLE_ASSOCIATIONFUNCTOR

#ifndef DISABLE_ASSOCIATIONFUNCTOR

bool
fltk::Widget::set ( fltk::AssociationType ATYPE = NO_INIT , SV * DATA = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->set( );
        OUTPUT:
            RETVAL
    CASE: items
            CODE:
                THIS->set( ATYPE, (void *) DATA )

#else  // ifndef DISABLE_ASSOCIATIONFUNCTOR

bool
fltk::Widget::set ( )
    OUTPUT:
        RETVAL

#endif // ifndef DISABLE_ASSOCIATIONFUNCTOR

#ifndef DISABLE_ASSOCIATIONFUNCTOR

SV *
fltk::Widget::get( fltk::AssociationType ATYPE )
    CODE:
        RETVAL = THIS->get( ATYPE );
    OUTPUT:
        RETVAL

SV *
fltk::Widget::foreach( fltk::AssociationType at, fltk::AssociationFunctor fkt )

bool
fltk::Widget::remove( fltk::AssociationType at, SV * data )
    CODE:
        switch( ix ) {
            case 0: RETVAL = THIS->remove(at, (void *) data); break;
            case 1:   RETVAL = THIS->find(at, (void *) data); break;
        }
    OUTPUT:
        RETVAL
    ALIAS:
        find = 1

#endif // ifndef DISABLE_ASSOCIATIONFUNCTOR

    # Leave the documentation in FLTK/Widget.pod but...

BOOT:
    register_constant("WHEN_CHANGED", newSViv( fltk::WHEN_CHANGED ));
    export_tag( "WHEN_CHANGED", "when" );
    register_constant("WHEN_RELEASE", newSViv( fltk::WHEN_RELEASE ));
    export_tag( "WHEN_RELEASE", "when" );
    register_constant("WHEN_RELEASE_ALWAYS", newSViv( fltk::WHEN_RELEASE_ALWAYS ));
    export_tag( "WHEN_RELEASE_ALWAYS", "when" );
    register_constant("WHEN_ENTER_KEY", newSViv( fltk::WHEN_ENTER_KEY ));
    export_tag( "WHEN_ENTER_KEY", "when" );
    register_constant("WHEN_ENTER_KEY_ALWAYS", newSViv( fltk::WHEN_ENTER_KEY_ALWAYS ));
    export_tag( "WHEN_ENTER_KEY_ALWAYS", "when" );
    register_constant("WHEN_ENTER_KEY_CHANGED", newSViv( fltk::WHEN_ENTER_KEY_CHANGED ));
    export_tag( "WHEN_ENTER_KEY_CHANGED", "when" );
    register_constant("WHEN_NOT_CHANGED", newSViv( fltk::WHEN_NOT_CHANGED ));
    export_tag( "WHEN_NOT_CHANGED", "when" );














































void
fltk::Widget::relayout( uchar flags = NO_INIT )
    CASE: items == 1
        CODE:
            THIS->relayout( );
    CASE:
        C_ARGS: flags

uchar
fltk::Widget::layout_damage ( uchar flag = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->layout_damage( );
        OUTPUT:
            RETVAL
    CASE:
        CODE:
            THIS->layout_damage( flag );

#include <fltk/damage.h>

BOOT:
    register_constant("DAMAGE_CHILD", newSViv( fltk::DAMAGE_CHILD ));
    export_tag( "DAMAGE_CHILD", "damage" );
    register_constant("DAMAGE_CHILD_LABEL", newSViv( fltk::DAMAGE_CHILD_LABEL ));
    export_tag( "DAMAGE_CHILD_LABEL", "damage" );
    register_constant("DAMAGE_EXPOSE", newSViv( fltk::DAMAGE_EXPOSE ));
    export_tag( "DAMAGE_EXPOSE", "damage" );
    register_constant("DAMAGE_ALL", newSViv( fltk::DAMAGE_ALL ));
    export_tag( "DAMAGE_ALL", "damage" );
    register_constant("DAMAGE_VALUE", newSViv( fltk::DAMAGE_VALUE ));
    export_tag( "DAMAGE_VALUE", "damage" );
    register_constant("DAMAGE_SCROLL", newSViv( fltk::DAMAGE_SCROLL ));
    export_tag( "DAMAGE_SCROLL", "damage" );
    register_constant("DAMAGE_OVERLAY", newSViv( fltk::DAMAGE_OVERLAY ));
    export_tag( "DAMAGE_OVERLAY", "damage" );
    register_constant("DAMAGE_HIGHLIGHT", newSViv( fltk::DAMAGE_HIGHLIGHT ));
    export_tag( "DAMAGE_HIGHLIGHT", "damage" );
    register_constant("DAMAGE_HIGHLIGHT", newSViv( fltk::DAMAGE_HIGHLIGHT ));
    export_tag( "DAMAGE_HIGHLIGHT", "damage" );
    register_constant("DAMAGE_CONTENTS", newSViv( fltk::DAMAGE_CONTENTS ));
    export_tag( "DAMAGE_CONTENTS", "damage" );

uchar
fltk::Widget::damage( )
    OUTPUT:
        RETVAL

void
fltk::Widget::set_damage( uchar c )

int
fltk::Widget::send( int event )

void
fltk::Widget::add_timeout( float time )
    CODE:
        switch ( ix ) {
            case 0: THIS->add_timeout( time );    break;
            case 1: THIS->repeat_timeout( time ); break;
        }
    ALIAS:
        repeat_timeout = 1

void
fltk::Widget::remove_timeout( )
    CODE:
        switch( ix ) {
            case 0: THIS->remove_timeout( ); break;
            case 2: THIS->deactivate( );      break;
            case 3: THIS->show( );            break;
            case 4: THIS->hide( );            break;
            case 5: THIS->setonly( );         break;
            case 6: THIS->set_visible( );     break;
            case 7: THIS->clear_visible( );   break;
        }
    ALIAS:
           deactivate = 2
                 show = 3
                 hide = 4
              setonly = 5
          set_visible = 6
        clear_visible = 7

bool
fltk::Widget::copy_style( fltk::Style * s )

fltk::NamedStyle *
fltk::Widget::default_style( fltk::NamedStyle * style = NO_INIT )
    CASE: items == 1
        CODE:
            RETVAL = THIS->default_style;
        OUTPUT:
            RETVAL
    CASE: items == 2
        CODE:
            THIS->default_style = style;

#INCLUDE: ccCellBox.xsi

#INCLUDE: ccHueBox.xsi

#INCLUDE: ccValueBox.xsi

#INCLUDE: ClockOutput.xsi

#INCLUDE: Group.xsi

#INCLUDE: ProgressBar.xsi

#INCLUDE: Valuator.xsi

#endif // ifndef DISABLE_WIDGET

BOOT:
    isa( "FLTK::Widget", "FLTK::Rectangle" );