Gtk2-Ex-MenuView
view release on metacpan or search on metacpan
devel/run.pl view on Meta::CPAN
$treestore->insert_with_values ($parent, 0, 0 => rand());
});
$left_vbox->pack_start ($button, 0,0,0);
}
{
my $button = Gtk2::Button->new_with_label ('Delete');
$button->signal_connect
(clicked => sub {
my $iter = $treestore->get_iter (Gtk2::TreePath->new(2));
if ($iter) { $treestore->remove ($iter); }
});
$left_vbox->pack_start ($button, 0,0,0);
}
{
my $button = Gtk2::Button->new_with_label ('Reorder Up');
$button->signal_connect
(clicked => sub {
my $len = $treestore->iter_n_children (undef);
my $end = $len - 1;
$treestore->reorder (1 .. $end, 0);
});
$left_vbox->pack_start ($button, 0,0,0);
}
{
my $button = Gtk2::Button->new_with_label ('Reorder Down');
$button->signal_connect
(clicked => sub {
my $len = $treestore->iter_n_children (undef);
my $end = $len - 1;
$treestore->reorder ($end, 0 .. $end-1);
});
$left_vbox->pack_start ($button, 0,0,0);
}
{
my $button = Gtk2::Button->new_with_label ('New Model');
$button->signal_connect
(clicked => sub {
print "$progname: new model in 3 seconds\n";
Glib::Timeout->add
(3_000, # 3 seconds
sub {
print "$progname: new model now\n";
$treestore = treestore_copy_model($treestore);
$menuview->set (model => $treestore);
$treeview->set (model => $treestore);
return Glib::SOURCE_REMOVE;
});
});
$left_vbox->pack_start ($button, 0,0,0);
}
{
my $combobox = Gtk2::ComboBox->new_with_model ($treestore);
$combobox->set (add_tearoffs => 1);
$left_vbox->pack_start ($combobox, 0,0,0);
my $renderer = Gtk2::CellRendererText->new;
$renderer->set (xalign => 1); # right align
$combobox->pack_start ($renderer, 1);
$combobox->add_attribute ($renderer, text => 0);
}
$menuview->popup (undef, undef, undef, undef, 0, 0);
print "$progname: children ",$menuview->get_children,"\n";
$toplevel->show_all;
Gtk2->main;
exit 0;
#------------------------------------------------------------------------------
# return a new Gtk2::TreeStore which is a copy of the $model contents
sub treestore_copy_model {
my ($model) = @_;
require Gtk2::Ex::TreeModelBits;
my $treestore = Gtk2::TreeStore->new
(Gtk2::Ex::TreeModelBits::all_column_types ($model));
my @columns = (0 .. $model->get_n_columns - 1);
$model->foreach
(sub {
my ($model, $path, $iter) = @_;
my $treepath = $path->copy;
$treepath->up;
my $treeiter;
if ($treepath->get_depth) {
$treeiter = $treestore->get_iter($treepath);
}
print "$progname: copy ",$path->to_string," to append ",$treepath->to_string//'top',"\n";
$treestore->insert_with_values ($treeiter, -1,
map { ($_, $model->get($iter,$_)) }
@columns);
return 0; # keep traversing
});
return $treestore;
}
( run in 1.077 second using v1.01-cache-2.11-cpan-364913b4093 )