summaryrefslogtreecommitdiffstats
path: root/ksirc/puke/ppopmenu.pm
diff options
context:
space:
mode:
Diffstat (limited to 'ksirc/puke/ppopmenu.pm')
-rw-r--r--ksirc/puke/ppopmenu.pm65
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;