Etk-Perl
view release on metacpan or search on metacpan
etk_test/etk_test.pl view on Meta::CPAN
label => "Dialogs",
widget => undef,
table => undef,
examples => 0
},
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",
etk_test/etk_test.pl view on Meta::CPAN
for ($row = $tree->FirstRowGet(); $row; $row = $row->WalkNext(1)) {
if ($row->IsSelected()) {
$row->Delete();
}
}
return 0;
}
});
$tree->Build();
$tree->Freeze();
for(my $i = 0; $i < 1000; $i++)
{
my $row = $tree->RowAppend();
$row->ModelFieldsSet(0, $mod1, Etk::Theme::IconPathGet(),
Etk::Stock::KeyGet(PlacesUserHome, SizeSmall));
$row->ModelFieldsSet(0, $mod2, "Row " . (($i*3)+1));
$row->FieldsSet(0, $col2, 10.0);
$row->FieldsSet(0, $col3, "images/1star.png");
$row->FieldsSet(0, $col4, 0);
my $row2 = $tree->RowAppend($row);
$row2->ModelFieldsSet(0, $mod1, Etk::Theme::IconPathGet(),
Etk::Stock::KeyGet(PlacesUserHome, SizeSmall));
$row2->ModelFieldsSet(0, $mod2, "Row " . (($i*3)+2));
$row2->FieldsSet(0, $col2, 20.0);
$row2->FieldsSet(0, $col3, "images/2stars.png");
$row2->FieldsSet(0, $col4, 1);
my $row3 = $tree->RowAppend($row2);
$row3->ModelFieldsSet(0, $mod1, Etk::Theme::IconPathGet(),
Etk::Stock::KeyGet(PlacesUserHome, SizeSmall));
$row3->ModelFieldsSet(0, $mod2, "Row " . (($i*3)+3));
$row3->FieldsSet(0, $col2, 30.0);
$row3->FieldsSet(0, $col3, "images/3stars.png");
$row3->FieldsSet(0, $col4, 1);
}
$tree->Thaw();
$col1->SortSet( sub {
my ($col, $row1, $row2) = @_;
my $a = $row1->ModelFieldsGet($mod2);
my $b = $row2->ModelFieldsGet($mod2);
return $a cmp $b;
}, undef);
$win->ShowAll();
}
sub menu_window_show
{
my $win = Etk::Window->new();
$win->TitleSet("Etk-Perl Menu Test");
$win->SizeRequestSet(325, 240);
my $box = Etk::VBox->new(0, 0);
my $menubar = Etk::Menu::Bar->new();
$box->Append($menubar);
my $toolbar = Etk::Toolbar->new();
$box->Append($toolbar);
$toolbar->Append(Etk::Button->new(EditCopy));
$toolbar->Append(Etk::Button->new(EditCut));
$toolbar->Append(Etk::Button->new(EditPaste));
$toolbar->Append(Etk::VSeparator->new());
$toolbar->Append(Etk::Button->new(EditUndo));
$toolbar->Append(Etk::Button->new(EditRedo));
$toolbar->Append(Etk::VSeparator->new());
$toolbar->Append(Etk::Button->new(EditFind));
my $label = Etk::Label->new("Click me :)");
$label->AlignmentSet(0.5, 0.5);
$label->PassMouseEventsSet(1);
$box->Append($label, BoxStart, BoxExpandFill);
my $statusbar = Etk::StatusBar->new();
$box->Append($statusbar, BoxEnd);
my $menu_item = _menu_test_item_new("File", $menubar, $statusbar);
my $menu = Etk::Menu->new();
$menu_item->SubmenuSet($menu);
_menu_test_stock_item_new("Open", DocumentOpen, $menu, $statusbar);
_menu_test_stock_item_new("Save", DocumentSave, $menu, $statusbar);
$menu_item = _menu_test_item_new("Edit", $menubar, $statusbar);
$menu = Etk::Menu->new();
$menu_item->SubmenuSet($menu);
_menu_test_stock_item_new("Cut", EditCut, $menu, $statusbar);
_menu_test_stock_item_new("Copy", EditCopy, $menu, $statusbar);
_menu_test_stock_item_new("Paste", EditPaste, $menu, $statusbar);
$menu_item = _menu_test_item_new("Help", $menubar, $statusbar);
$menu = Etk::Menu->new();
$menu_item->SubmenuSet($menu);
_menu_test_item_new("About", $menu, $statusbar);
$menu = Etk::Menu->new();
$win->SignalConnect("mouse-down", sub { $menu->Popup() });
_menu_test_stock_item_new("Open", DocumentOpen, $menu, $statusbar);
_menu_test_stock_item_new("Save", DocumentSave, $menu, $statusbar);
_menu_seperator_new($menu);
_menu_test_stock_item_new("Cut", EditCut, $menu, $statusbar);
_menu_test_stock_item_new("Copy", EditCopy, $menu, $statusbar);
_menu_test_stock_item_new("Paste", EditPaste, $menu, $statusbar);
_menu_seperator_new($menu);
$menu_item = _menu_test_item_new("Menu Item Test", $menu, $statusbar);
# Sub menu 1
my $submenu1 = Etk::Menu->new();
$menu_item->SubmenuSet($submenu1);
_menu_test_stock_item_new("Item with image", DocumentSave,
$submenu1, $statusbar);
$menu_item = _menu_test_stock_item_new("Item with child",
DocumentOpen, $submenu1, $statusbar);
_menu_seperator_new($submenu1);
_menu_test_check_item_new("Item with check 1", $submenu1, $statusbar);
_menu_test_check_item_new("Item with check 2", $submenu1, $statusbar);
_menu_seperator_new($submenu1);
my $radio = _menu_test_radio_item_new("Radio 1", undef, $submenu1, $statusbar);
_menu_test_radio_item_new("Radio 2", $radio, $submenu1, $statusbar);
_menu_test_radio_item_new("Radio 3", $radio, $submenu1, $statusbar);
# Sub menu 2
my $submenu2 = Etk::Menu->new();
$menu_item->SubmenuSet($submenu2);
_menu_test_item_new("Child Menu Test", $submenu2, $statusbar);
$win->Add($box);
$win->ShowAll();
}
sub _menu_test_item_new
{
my ($label, $menubar, $statusbar) = @_;
my $menu_item = Etk::Menu::Item->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_stock_item_new
{
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);
( run in 1.750 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )