Gtk2-Ex-MenuView
view release on metacpan or search on metacpan
t/MenuView-display.t view on Meta::CPAN
'want-visible "show" leaves item child not visible');
}
{
my $store = Gtk2::ListStore->new ('Glib::String');
$store->set ($store->append, 0 => 'foo');
my $menuview = Gtk2::Ex::MenuView->new (model => $store,
want_visible => 'no');
is ($menuview->get('want-visible'), 'no',
'want-visible set to "no"');
$menuview->signal_connect
(item_create_or_update => sub {
my ($menuview, $item, $model, $path, $iter) = @_;
$item = Gtk2::MenuItem->new;
my $label = Gtk2::Label->new ('foo');
$item->add ($label);
return $item;
});
my $item = $menuview->item_at_indices (0);
my $label = $item->get_child;
ok (! $item->get('visible'),
'want-visible "no" leave item not visible');
ok (! $label->get('visible'),
'want-visible "no" leaves item child not visible');
}
#------------------------------------------------------------------------------
# size_request
{
# TODO:
# local $TODO = 'size_request chaining in newer Glib';
my $store = Gtk2::ListStore->new ('Glib::String');
$store->set ($store->append, 0 => 'foo');
my %created;
my $menuview = Gtk2::Ex::MenuView->new (model => $store);
$menuview->signal_connect
(item_create_or_update => sub {
my ($menuview, $item, $model, $path, $iter) = @_;
diag "size_request create ",$path->to_string;
$created{$path->to_string} = 'done';
$item = Gtk2::MenuItem->new;
my $drawing = Gtk2::DrawingArea->new;
$drawing->set_size_request (200, 200);
$item->add ($drawing);
return $item;
});
my $req = $menuview->size_request;
my $item_count = scalar @{[$menuview->get_children]};
is ($item_count, 1, 'size_request - item count');
is_deeply (\%created, {0=>'done'}, 'size_request - created paths');
cmp_ok ($req->width, '>=', 150, 'size_request - width');
cmp_ok ($req->height, '>=', 150, 'size_request - height');
}
#------------------------------------------------------------------------------
# popup creates items
{
my $store = Gtk2::ListStore->new ('Glib::String');
$store->set ($store->append, 0 => 'foo');
$store->set ($store->append, 0 => 'bar');
my %created;
my $menuview = Gtk2::Ex::MenuView->new (model => $store);
$menuview->signal_connect
(item_create_or_update => sub {
my ($menuview, $item, $model, $path, $iter) = @_;
diag "create ",$path->to_string;
$created{$path->to_string} = 'done';
$item = Gtk2::MenuItem->new_with_label ($model->get($iter,0));
return $item;
});
$menuview->popup (undef, undef, undef, undef, 1, 0);
MyTestHelpers::wait_for_event ($menuview, 'map-event');
my $child_count = scalar @{[$menuview->get_children]};
is ($child_count, 2, 'popup create children - count');
is_deeply (\%created, {0=>'done',1=>'done'},
'popup create children - paths');
}
#------------------------------------------------------------------------------
# no signals left on model
{
my $model = Gtk2::ListStore->new ('Glib::String');
my $menuview = Gtk2::Ex::MenuView->new (model => $model);
ok (MyTestHelpers::any_signal_connections($model));
$menuview->set (model => undef);
ok (! MyTestHelpers::any_signal_connections($model));
}
{
my $model = Gtk2::ListStore->new ('Glib::String');
my $menuview = Gtk2::Ex::MenuView->new (model => $model);
ok (MyTestHelpers::any_signal_connections($model));
my $model2 = Gtk2::ListStore->new ('Glib::String');
$menuview->set (model => $model2);
ok (! MyTestHelpers::any_signal_connections($model));
ok (MyTestHelpers::any_signal_connections($model2));
}
#------------------------------------------------------------------------------
# recursive item-create-or-update
{
my $model = Gtk2::ListStore->new ('Glib::String');
$model->append;
$model->append;
my $menuview = Gtk2::Ex::MenuView->new (model => $model);
my $item0;
$menuview->signal_connect
(item_create_or_update => sub {
my ($menuview, $item, $model, $path, $iter) = @_;
diag "item create ",$path->to_string;
if (($path->get_indices)[0] == 1) {
diag "recurse for item0";
$item0 = $menuview->item_at_indices (0);
}
return ($item || Gtk2::MenuItem->new_with_label ($path->to_string));
});
isa_ok ($menuview->item_at_indices(1), 'Gtk2::MenuItem',
'recurse - item_at_indices(1)');
ok ($item0, 'recurse - item0 set');
isa_ok ($item0, 'Gtk2::MenuItem', 'recurse - item0 type');
is ($item0, $menuview->item_at_indices(0),
'recurse - item0 same as item_at_indices(0)');
}
#------------------------------------------------------------------------------
# bad recursive item-create-or-update
{
my $model = Gtk2::ListStore->new ('Glib::String');
$model->append;
( run in 0.645 second using v1.01-cache-2.11-cpan-364913b4093 )