The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

FLTK::Cookbook::TabGroup::Simple - Very simple demonstation of FLTK::TabGroup

Description

It really doesn't get much simpler than this.

The Code

    use strict;
    use warnings;
    use FLTK qw[run];

    my $win = FLTK::Window->new(500, 200);
    $win->begin;
    {
        my $tabs = FLTK::TabGroup->new(10, 10, 500 - 20, 200 - 20);
        $tabs->begin;
        $tabs->callback(
            sub {
                my $self = shift;
                printf <<'END',
Tab change!
Current tab index: %d
Current tab label: %s
END
                    $self->value, # zero based index
                    $self->selected_child->label; # selected_child() is a Widget
            }
        );
        {   # Aaa tab
            my $aaa = FLTK::Group->new(10, 20, 500 - 20, 200 - 45, "Aaa");
            $aaa->begin;
            {   my $b1 = FLTK::Button->new(10, 20, 90, 25, "Button A1");
                my $b2 = FLTK::Button->new(10, 50, 90, 25, "Button A2");
                my $b3 = FLTK::Button->new(10, 80, 90, 25, "Button A3");
            }
            $aaa->end();

            # Bbb tab
            my $bbb = FLTK::Group->new(10, 35, 500 - 10, 200 - 35, "Bbb");
            $bbb->begin;
            {   my $b1 = FLTK::Button->new(10,  20, 90, 25, "Button B1");
                my $b2 = FLTK::Button->new(110, 20, 90, 25, "Button B2");
                my $b3 = FLTK::Button->new(210, 20, 90, 25, "Button B3");
                my $b4 = FLTK::Button->new(10,  50, 90, 25, "Button B4");
                my $b5 = FLTK::Button->new(110, 50, 90, 25, "Button B5");
                my $b6 = FLTK::Button->new(210, 50, 90, 25, "Button B6");
                my $b7 = FLTK::Button->new(310, 35, 90, 25, "Goto first tab");
                $b7->callback(
                    sub {
                        $tabs->value(0)   # does not trigger TabGroup callback
                    }
                );
            }
            $bbb->end();
        }
        $tabs->end();
    }
    $win->end();
    $win->show();
    exit run();

Awknowlegements

Code based on the work of Greg Ercolano

Author

Sanko Robinson <sanko@cpan.org> - http://sankorobinson.com/

License and Legal

Copyright (C) 2008-2010 by Sanko Robinson <sanko@cpan.org>

This program is free software; you can redistribute it and/or modify it under the terms of The Artistic License 2.0. See the LICENSE file included with this distribution or http://www.perlfoundation.org/artistic_license_2_0. For clarification, see http://www.perlfoundation.org/artistic_2_0_notes.

When separated from the distribution, all original POD documentation is covered by the Creative Commons Attribution-Share Alike 3.0 License. See http://creativecommons.org/licenses/by-sa/3.0/us/legalcode. For clarification, see http://creativecommons.org/licenses/by-sa/3.0/us/.