Etk-Perl

 view release on metacpan or  search on metacpan

etk_test/etk_test.pl  view on Meta::CPAN

    
    misc => { 
	label => "Misc", 
	widget => undef,
	table => undef,
	examples => 0
    }
);

# buttons used to launch the examples
my %buttons = (
    
    button => {
	label => "Button", 
	frame => "basic", 
	cb => \&button_window_show
    },
    
    entry => {
	label => "Entry",
	frame => "basic", 
	cb => \&entry_window_show
    },    
    
    image => {
	label => "Image", 
	frame => "basic", 
	cb => \&image_window_show
    },
    
    slider => {
	label => "Slider", 
	frame => "basic", 
	cb => \&slider_window_show
    },
    
    progbar => {
	label => "Progress Bar",
	frame => "basic", 
	cb => \&progbar_window_show
    },
    
    canvas => {
	label => "Canvas",
	frame => "adv", 
	cb => \&canvas_window_show
    },
    
    tree => {
	label => "Tree",
	frame => "adv", 
	cb => \&tree_window_show
    },
    
    menu => {
	label => "Menu",
	frame => "adv", 
	cb => \&menu_window_show
    },
    
    combobox => {
	label => "Combobox",
	frame => "adv", 
	cb => \&combobox_window_show
    },
    
    iconbox => {
	label => "Iconbox",
	frame => "adv", 
	cb => \&iconbox_window_show
    },
    
    textview => {
	label => "Text View",
	frame => "adv", 
	cb => \&textview_window_show
    },
    
    table => {
	label => "Table",
	frame => "cont", 
	cb => \&table_window_show
    },
    
    paned => {
	label => "Paned",
	frame => "cont", 
	cb => \&paned_window_show
    },
    
    scrolledview => {
	label => "Scrolled View",
	frame => "cont", 
	cb => \&scrolledview_window_show
    },
    
    notebook => {
	label => "Notebook",
	frame => "cont", 
	cb => \&notebook_window_show
    },
    
    colorpicker => {
	label => "Colorpicker",
	frame => "dia",
	cb => \&colorpicker_window_show
    },
    
    filechooser => {
	label => "File Chooser",
	frame => "dia", 
	cb => \&filechooser_window_show
    },    
    
    dnd => {
	label => "X Drag / Drop",
	frame => "misc", 
	cb => \&dnd_window_show
    }
);

my $_iconbox_folder = "";
my %_iconbox_types = (
    jpg => "mimetypes/image-x-generic_48",

etk_test/etk_test.pl  view on Meta::CPAN

{
    my ($label, $stockid, $menubar, $statusbar) = @_;

    my $menu_item = Etk::Menu::Item::Image->new($label);
    my $image = Etk::Image->new($stockid, SizeSmall);
    $menu_item->Set($image);
    $menubar->Append($menu_item);
    $menu_item->SignalConnect("selected", 
    	sub { $statusbar->MessagePush($menu_item->LabelGet(), 0) });
    $menu_item->SignalConnect("unselected", 
    	sub { $statusbar->MessagePop(0) });

    return $menu_item;

}

sub _menu_test_check_item_new
{
    my ($label, $menubar, $statusbar) = @_;

    my $menu_item = Etk::Menu::Item::Check->new($label);
    $menubar->Append($menu_item);
    $menu_item->SignalConnect("selected", 
    	sub { $statusbar->MessagePush($menu_item->LabelGet(), 0) });
    $menu_item->SignalConnect("unselected", 
    	sub { $statusbar->MessagePop(0) });

    return $menu_item;
}

sub _menu_test_radio_item_new
{
    my ($label, $radio, $menubar, $statusbar) = @_;

    my $menu_item;
    if ($radio) 
    {
        $menu_item = Etk::Menu::Item::Radio->new($label, $radio);
    }
    else
    {
        $menu_item = Etk::Menu::Item::Radio->new($label);
    }
    $menubar->Append($menu_item);
    $menu_item->SignalConnect("selected", 
    	sub { $statusbar->MessagePush($menu_item->LabelGet(), 0) });
    $menu_item->SignalConnect("unselected", 
    	sub { $statusbar->MessagePop(0) });

    return $menu_item;
}

sub _menu_seperator_new
{
    my ($menubar) = @_;
    my $menu_item = Etk::Menu::Item::Separator->new();
    $menubar->Append($menu_item);
    return $menu_item;
}

sub __combobox_entry_populate 
{
    my $combo = shift;
    my $dir = shift;

    $combo->Clear();
    $combo->ItemPrepend(
    		Etk::Image::new_from_stock(PlacesFolder, SizeSmall),
		"..");

    while (<$dir/*>) {
	    if (-d) {
		$combo->ItemPrepend(
			Etk::Image::new_from_stock(PlacesFolder, SizeSmall),
			$_);
	    } else {
		$combo->ItemPrepend(
			Etk::Image::new_from_stock(TextXGeneric, SizeSmall),
			$_);
	    }

    }

}

sub combobox_window_show
{
    my $win = Etk::Window->new();
    $win->TitleSet("Etk-Perl Combo Test");
    my $vbox = Etk::VBox->new(0, 3);
    
    my $frame = Etk::Frame->new("Simple combobox");
    $vbox->Append($frame);
    
    my $combobox = Etk::Combobox::new_default();
    $frame->Add($combobox);
    $combobox->ItemAppend("Test 1");
    $combobox->ItemAppend("Test 2");
    $combobox->ItemAppend("Test 3");    

    $frame = Etk::Frame->new("Entry combobox");
    $vbox->Append($frame);

    $combobox = Etk::Combobox::Entry->new();
    $combobox->SignalConnect("active-item-changed", sub {
	    print "TODO\n";
    });
    $combobox->ColumnAdd(EntryImage, 24, EntryNone, 0.0);
    $combobox->ColumnAdd(EntryLabel, 75, EntryExpand, 0.0);
    $combobox->Build();
    $frame->Add($combobox);
    __combobox_entry_populate($combobox, ".");

    $frame = Etk::Frame->new("Some stock icons");
    $vbox->Append($frame);
    
    my $vbox2 = Etk::VBox->new(0, 3);
    $frame->Add($vbox2);
    
    my $image = Etk::Image->new(DocumentNew, SizeBig);
    $vbox2->Append($image);
    
    $combobox = Etk::Combobox->new();
    $combobox->ColumnAdd(ColumnTypeImage, 24, 0, 0.0);
    $combobox->ColumnAdd(ColumnTypeLabel, 75, 1, 0.0);
    $combobox->Build();
    
    $vbox2->Append($combobox);
	
    for( my $i = DocumentNew; 
	$i <= FormatTextUnderline; $i++)
    {
	my $image2 = Etk::Image->new($i, SizeSmall);
	my $item = $combobox->ItemAppend($image2, Etk::Stock::label_get($i));
#	$item->ColSet(1, Etk::Stock::label_get($i));
	$item->DataSet($i);
    }

    $combobox->ActiveItemSet($combobox->ActiveItemGet());
    
    $combobox->SignalConnect("active-item-changed", 
	sub {
	    my $item = $combobox->ActiveItemGet();
	    my $stock_id = $item->DataGet();
	    $image->SetFromStock($stock_id, SizeBig);
	}
    );    
    
    $win->Add($vbox);
    $win->ShowAll();    
}

sub iconbox_window_show
{
    my $win = Etk::Window->new();
    $win->TitleSet("Etk-Perl Iconbox Test");
    $win->SizeRequestSet(100, 100);
    $win->Resize(600, 330);
    
    $_iconbox_folder = "";    
    my $iconbox = Etk::Iconbox->new();
    my $model = Etk::Iconbox::Model->new($iconbox);
    $model->GeometrySet(150, 20, 2, 2);
    $model->IconGeometrySet(20, 0, 130, 16, 0.0, 0.5);
    _iconbox_folder_set($iconbox, "");
    
    $iconbox->SignalConnect("mouse-down", 
	sub {
	    my $self = shift;
	    my $event = shift;
	    return unless $event->{flags} & MouseDoubleClick;
	    my $icon = $iconbox->IconGetAtXy($event->{"canvas.x"},
		$event->{"canvas.y"}, 0, 1, 1);
	    return unless $icon;
	    if (-d $_iconbox_folder."/".$icon->LabelGet())
	    {
		_iconbox_folder_set($iconbox, $icon->LabelGet());
	    }
	}
    );    
        
    $win->Add($iconbox);
    $win->ShowAll();        
}

sub _iconbox_folder_set
{
    my $iconbox = shift;
    my $folder = shift;
    my $file = undef;
    
    $folder = $ENV{HOME} if($folder eq "");
    return if($folder eq "");      
    
    $iconbox->Clear();
    $iconbox->Append(Etk::Theme::IconPathGet(), "actions/go-up_48", "..");
    
    # Add directories
    opendir(DIR, $_iconbox_folder."/".$folder) or 
      die "can't opendir $folder: $!";
    while (defined($file = readdir(DIR))) {
	if (-d "$_iconbox_folder/$folder/$file" && $file  !~ /^\./)
	{



( run in 2.922 seconds using v1.01-cache-2.11-cpan-98e64b0badf )