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 => \¬ebook_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 )