Re: Suggestions
- From: Dermot Musgrove <dermot glade perl connectfree co uk>
- To: budman <budman intergrafix net>, "gtk-perl-list gnome org" <gtk-perl-list gnome org>
- Subject: Re: Suggestions
- Date: Mon, 09 Oct 2000 01:35:13 +0100
Hi Budman,
budman wrote:
[...]
how to create signals from the main module (like using
a tree or ctree widget filling up with folder names) for widgets on the
forms. How do you know when to use the $form or the name of the package?
When I use a dynamically updated CTree I add a 'button_press_event'
handler to the ctree and store all the relevant data for the tree node in
a global hash $ctreenodes (keyed by the widget). eg:
$leafnode = $ctree->insert_node(
$rootnode, undef,
[
$proto->{'href'},
$proto->{'type'},
$proto->{'detail'},
$proto->{'path'},
'', ''],
0, undef, undef, undef, undef, '0', '1');
$ctreenodes->{$leafnode} = {
'ctreenode' => $leafnode,
'type' => $proto->{'type'},
'path' => $proto->{'path'},
'detail' => $proto->{'detail'},
'link_text' => $proto->{'link_text'},
'parent' => $parent,
};
I then have a handler like:
sub on_ctree1_button_press_event {
my ($class, $mydata, $object, $instance, $e) = @_;
return 0 unless $class->selection;
my ($row, $col);
my $form = $__PACKAGE__::all_forms->{$instance};
my $ctree = $form->{$object};
($row, $col) = $ctree->get_selection_info($e->{'x'}, $e->{'y'});
$ctree->select_row($row, 0);
# Get back the global data for this ctreenode
my $d = $ctreenodes->{$ctree->selection};
if ($e->{'button'} == 1) {
$form->load_html($form, $d->{'path'})
if ! $d->{'type'} and $d->{'path'};
} elsif ($e->{'button'} == 3) {
$ctree_right_menu ||= new ctree_right_menu;
...
...
CountZero <countzero cyberdeck org> originally suggested this way.
Although there is probably a 'more proper' way to do it - it works.
HTH, Dermot
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]