diff options
Diffstat (limited to 'ksirc/puke/ppopmenu.pm')
-rw-r--r-- | ksirc/puke/ppopmenu.pm | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/ksirc/puke/ppopmenu.pm b/ksirc/puke/ppopmenu.pm new file mode 100644 index 00000000..c1c011fa --- /dev/null +++ b/ksirc/puke/ppopmenu.pm @@ -0,0 +1,65 @@ + +&::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; |