You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.2 KiB
66 lines
1.2 KiB
|
|
&::PukeSendMessage($PUKE_WIDGET_LOAD,
|
|
$PUKE_CONTROLLER,
|
|
$PWIDGET_POPMENU,
|
|
"ppopmenu.so",
|
|
sub { my %ARG = %{shift()};
|
|
if($ARG{'iArg'} == 1){
|
|
print "*E* PPopMenu Load failed!\n";
|
|
}
|
|
}
|
|
);
|
|
|
|
package PPopupMenu;
|
|
@ISA = qw(PTableView PMenuData);
|
|
use strict;
|
|
|
|
sub new {
|
|
my $class = shift;
|
|
my $self = $class->SUPER::new($class, @_);
|
|
|
|
$self->{widgetType} = $::PWIDGET_POPMENU;
|
|
|
|
if($class eq 'PPopupMenu'){
|
|
$self->create();
|
|
}
|
|
|
|
$self->installHandler($::PUKE_POPUPMENU_ACTIVATED_ACK,
|
|
sub {$self->activated(@_)});
|
|
|
|
return $self;
|
|
|
|
}
|
|
|
|
sub activated {
|
|
my $self = shift;
|
|
|
|
my %ARG = %{shift()};
|
|
|
|
if($self->{'menu_id'}{$ARG{'iArg'}}){
|
|
&{$self->{'menu_id'}{$ARG{'iArg'}}}(%ARG);
|
|
}
|
|
else {
|
|
# There's not handler, don't make noise, since if we used fetchWidget()
|
|
# We don't handlers for everything
|
|
# &::tell("*E* No handler for id: $ARG{iArg}\n");
|
|
}
|
|
}
|
|
|
|
sub installMenu {
|
|
my $self = shift;
|
|
|
|
my $id = shift;
|
|
my $func = shift;
|
|
$self->{'menu_id'}{$id} = $func;
|
|
}
|
|
|
|
sub popupAtCurrent {
|
|
my $self = shift;
|
|
|
|
$self->sendMessage('iCommand' => $::PUKE_POPUPMENU_POPUP_CURRENT,
|
|
'CallBack' => sub {});
|
|
}
|
|
|
|
|
|
package main;
|