[Catalyst-commits] r6330 - in trunk/Catalyst-Engine-Wx: . lib lib/Catalyst lib/Catalyst/Engine lib/Catalyst/Engine/Wx lib/Catalyst/View t tools

eriam at dev.catalyst.perl.org eriam at dev.catalyst.perl.org
Sat Apr 28 16:22:59 GMT 2007


Author: eriam
Date: 2007-04-28 16:22:58 +0100 (Sat, 28 Apr 2007)
New Revision: 6330

Added:
   trunk/Catalyst-Engine-Wx/Changes
   trunk/Catalyst-Engine-Wx/MANIFEST
   trunk/Catalyst-Engine-Wx/Makefile.PL
   trunk/Catalyst-Engine-Wx/README
   trunk/Catalyst-Engine-Wx/lib/
   trunk/Catalyst-Engine-Wx/lib/Catalyst/
   trunk/Catalyst-Engine-Wx/lib/Catalyst/Engine/
   trunk/Catalyst-Engine-Wx/lib/Catalyst/Engine/Wx.pm
   trunk/Catalyst-Engine-Wx/lib/Catalyst/Engine/Wx/
   trunk/Catalyst-Engine-Wx/lib/Catalyst/Engine/Wx/Event.pm
   trunk/Catalyst-Engine-Wx/lib/Catalyst/View/
   trunk/Catalyst-Engine-Wx/lib/Catalyst/View/Wx.pm
   trunk/Catalyst-Engine-Wx/t/
   trunk/Catalyst-Engine-Wx/t/1_load.t
   trunk/Catalyst-Engine-Wx/t/2_pod.t
   trunk/Catalyst-Engine-Wx/t/4_test_kwalitee.t
   trunk/Catalyst-Engine-Wx/tools/
   trunk/Catalyst-Engine-Wx/tools/svn-log.perl
Log:
Initial import

Added: trunk/Catalyst-Engine-Wx/Changes
===================================================================
--- trunk/Catalyst-Engine-Wx/Changes	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/Changes	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,97 @@
+========================
+2007-03-06 09:17:46 1.20
+========================
+
+  2007-03-06 09:14:40 (r19) by bingos
+  lib/POE/Component/Server/SimpleHTTP.pm M; Changes M
+
+    Bumped the version number
+
+  2007-03-06 03:56:13 (r18) by avinash240
+  t/5_run.t M; lib/POE/Component/Server/SimpleHTTP.pm M
+
+    Server no longer dies if it cannot find a handler for a path, now it
+    returns a response with a 404 code along with the content '404 Not
+    Found' per RFC description.
+
+  2007-03-05 00:02:24 (r17) by avinash240
+  lib/POE/Component/Server/SimpleHTTP.pm M
+
+    Server will now croak if it has a handler registered for the
+    directory but has a problem posting to it.
+
+========================
+2007-02-15 17:23:44 1.19
+========================
+
+  2007-02-15 17:22:33 (r14) by bingos
+  t/5_run.t A; lib/POE/Component/Server/SimpleHTTP.pm M; MANIFEST M
+
+    Added avinash240's test from branch/push 
+
+  2007-02-15 17:12:36 (r12) by bingos
+  lib/POE/Component/Server/SimpleHTTP.pm M; Changes M
+
+    Hacked to make the HEAP an object and added some methods
+
+========================
+2007-02-15 14:47:56 1.17
+========================
+
+  2007-02-15 14:46:02 (r10) by bingos; t/4_test_kwalitee.t A
+
+    Added kwalitee test. 
+
+  2007-02-15 14:45:34 (r9) by bingos
+  tools A; Changes.old A; lib/POE/Component/Server/SimpleHTTP.pm M;
+  META.yml D; MANIFEST M; tools/svn-log.perl A; Changes R
+
+    Added LOGHANDLER directive for general logging duties. Deprecated the
+    Changes to Changes.old, added svn logging for the future Changes
+    file. 
+
+  2007-02-05 21:36:44 (r8) by eriam
+  lib/POE/Component/Server/SimpleHTTP/Response.pm M
+
+    ! is_streaming
+
+  2007-02-03 19:02:35 (r7) by eriam
+  lib/POE/Component/Server/SimpleHTTP.pm M
+
+    + is_streaming needs a 1 to be initialized
+
+  2007-02-03 19:01:03 (r6) by eriam
+  lib/POE/Component/Server/SimpleHTTP/Response.pm M
+
+    ! is_streaming can now be used to test if a response is actually in
+    streaming mode
+
+========================
+2007-01-29 15:13:13 1.16
+========================
+
+  2007-01-29 15:07:26 (r4) by bingos
+  lib/POE/Component/Server/SimpleHTTP.pm M; MANIFEST M; Changes M; inc D
+
+    Kwalitee fixes
+
+  2007-01-19 16:10:20 (r1) by svn
+  README A; inc/Module A; /trunk A; lib/POE/Component/Server A;
+  inc/Module/Install/WriteAll.pm A; t A;
+  lib/POE/Component/Server/SimpleHTTP/Response.pm A; t/1_load.t A;
+  lib/POE/Component/Server/SimpleHTTP.pm A; t/2_pod.t A; inc A;
+  lib/POE/Component/Server/SimpleHTTP/PreFork.pm A; examples A;
+  inc/Module/Install.pm A; /branches A;
+  lib/POE/Component/Server/SimpleHTTP A; lib/POE/Component A;
+  inc/Module/Install/Makefile.pm A; examples/server.pl A;
+  inc/Module/Install/Metadata.pm A;
+  lib/POE/Component/Server/SimpleHTTP/Connection.pm A; inc/Module/Install
+  A; lib A; MANIFEST A; Changes A; inc/Module/Install/Fetch.pm A;
+  inc/Module/Install/Can.pm A; inc/Module/Install/Win32.pm A; META.yml A;
+  Makefile.PL A; lib/POE A; inc/Module/Install/Base.pm A; /tags A
+
+    Initial repository layout
+
+==============
+End of Excerpt
+==============

Added: trunk/Catalyst-Engine-Wx/MANIFEST
===================================================================
--- trunk/Catalyst-Engine-Wx/MANIFEST	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/MANIFEST	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,24 @@
+Changes
+examples/server.pl
+inc/Module/Install.pm
+inc/Module/Install/Base.pm
+inc/Module/Install/Can.pm
+inc/Module/Install/Fetch.pm
+inc/Module/Install/Makefile.pm
+inc/Module/Install/Metadata.pm
+inc/Module/Install/Win32.pm
+inc/Module/Install/WriteAll.pm
+lib/POE/Component/Server/SimpleHTTP.pm
+lib/POE/Component/Server/SimpleHTTP/Connection.pm
+lib/POE/Component/Server/SimpleHTTP/PreFork.pm
+lib/POE/Component/Server/SimpleHTTP/Response.pm
+Makefile.PL
+MANIFEST			This list of files
+META.yml
+README
+t/1_load.t
+t/2_pod.t
+t/3_pod_coverage.t
+t/4_test_kwalitee.t
+t/5_run.t
+tools/svn-log.perl

Added: trunk/Catalyst-Engine-Wx/Makefile.PL
===================================================================
--- trunk/Catalyst-Engine-Wx/Makefile.PL	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/Makefile.PL	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,35 @@
+#use ExtUtils::MakeMaker;
+use inc::Module::Install;
+
+name 'POE-Component-Server-SimpleHTTP';
+author 'Apocalypse <APOCAL at cpan.org>';
+license 'perl';
+version_from 'lib/POE/Component/Server/SimpleHTTP.pm';
+abstract_from 'lib/POE/Component/Server/SimpleHTTP.pm';
+
+# Build the prerequisite list
+requires 	'HTTP::Date' 			=> 	0;
+requires	'Carp'				=>	0;
+requires	'Sys::Hostname'			=>	0;
+requires	'POE'				=>	'0.38';
+requires	'Storable'			=>	0;
+requires	'Socket'			=>	0;
+requires	'HTTP::Request'			=>	0;
+requires	'HTTP::Response'		=>	0;
+
+# Ask users if they want SSL support
+my $value = prompt( 'Do you want SSL support ( requires POE::Component::SSLify ) [Y/n]?', 'N' );
+
+# Add to the prereqs PoCo::SSLify?
+if ( $value =~ /^Y$/i ) {
+	requires 'POE::Component::SSLify' => '0.04';
+}
+
+# Ask users if they want PreFork support
+$value = prompt( 'Do you want PreFork support ( requires IPC::Shareable ) [Y/n]?', 'N' );
+
+# Add to the prereqs IPC::Shareable?
+if ( $value =~ /^Y$/i ) {
+	requires 'IPC::Shareable' => '0';
+}
+WriteAll();

Added: trunk/Catalyst-Engine-Wx/README
===================================================================
--- trunk/Catalyst-Engine-Wx/README	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/README	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,16 @@
+POE/Component/Server/SimpleHTTP
+===============================
+
+INSTALLATION
+
+To install this module type the following:
+
+   perl Makefile.PL
+   make
+   make test
+   make install
+
+MORE INFO
+
+	# After installing:
+	perldoc POE::Component::Server::SimpleHTTP

Added: trunk/Catalyst-Engine-Wx/lib/Catalyst/Engine/Wx/Event.pm
===================================================================
--- trunk/Catalyst-Engine-Wx/lib/Catalyst/Engine/Wx/Event.pm	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/lib/Catalyst/Engine/Wx/Event.pm	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,4274 @@
+package Catalyst::Engine::Wx::Event;
+
+use strict;
+use vars qw(@ISA @EXPORT_OK);
+
+use Exporter;
+
+ at ISA = qw(Exporter);
+
+push @EXPORT_OK, qw(EVT_BUTTON EVT_CLOSE);
+
+#$EXPORT_TAGS{'everything'} = \@EXPORT_OK;
+
+# !parser: sub { $_[0] =~ m/sub (EVT_\w+)/ }
+# !package: Wx::Event
+
+#
+# ActivateEvent
+#
+
+sub EVT_ACTIVATE($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_ACTIVATE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_BUTTON_CLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_ACTIVATE_APP($$) {  
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_ACTIVATE_APP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_BUTTON_CLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# CommandEvent
+#
+sub EVT_COMMAND_RANGE($$$$$) { $_[0]->Connect( $_[1], $_[2], $_[3], $_[4] ) } # FIX ME !!
+sub EVT_BUTTON($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_BUTTON_CLICKED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_BUTTON_CLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_CHECKBOX($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_CHECKBOX_CLICKED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_CHECKBOX_CLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_CHOICE($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_CHOICE_SELECTED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_CHOICE_SELECTED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_LISTBOX($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LISTBOX_SELECTED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LISTBOX_SELECTED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LISTBOX_DCLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_TEXT($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_UPDATED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_UPDATED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+# ------------------------------------------------------------------------------------------------------
+sub EVT_TEXT_ENTER($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_ENTER, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_ENTER, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_TEXT_MAXLEN($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_MAXLEN, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_MAXLEN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_TEXT_URL($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_URL, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_URL, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_MENU($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_MENU_SELECTED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_MENU_SELECTED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+# NEEDS FIX !!
+sub EVT_MENU_RANGE($$$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_MENU_SELECTED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_MENU_SELECTED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_SLIDER($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SLIDER_UPDATED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SLIDER_UPDATED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_RADIOBOX($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_RADIOBOX_SELECTED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_RADIOBOX_SELECTED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_RADIOBUTTON($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_RADIOBUTTON_SELECTED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_RADIOBUTTON_SELECTED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_SCROLLBAR($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SCROLLBAR_UPDATED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SCROLLBAR_UPDATED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_COMBOBOX($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_COMBOBOX_SELECTED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_COMBOBOX_SELECTED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_TOOL($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOL_CLICKED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOL_CLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+# NEEDS FIX !!
+sub EVT_TOOL_RANGE($$$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOL_CLICKED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOL_CLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_TOOL_RCLICKED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOL_RCLICKED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOL_RCLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+# NEEDS FIX !!
+sub EVT_TOOL_RCLICKED_RANGE($$$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOL_RCLICKED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOL_RCLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_TOOL_ENTER($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOL_ENTER, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOL_ENTER, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_COMMAND_LEFT_CLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LEFT_CLICK, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LEFT_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_COMMAND_LEFT_DCLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LEFT_DCLICK, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LEFT_DCLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_COMMAND_RIGHT_CLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_RIGHT_CLICK, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_RIGHT_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_COMMAND_SET_FOCUS($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SET_FOCUS, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SET_FOCUS, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_COMMAND_KILL_FOCUS($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_KILL_FOCUS, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_KILL_FOCUS, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_COMMAND_ENTER($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_ENTER, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_ENTER, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_TOGGLEBUTTON($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_CHECKLISTBOX($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   } 
+}
+sub EVT_TEXT_CUT($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_CUT, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_CUT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_TEXT_COPY($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_COPY, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_COPY, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+sub EVT_TEXT_PASTE($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_PASTE, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TEXT_PASTE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      }); 
+   }
+}
+
+#
+# CloseEvent
+#
+sub EVT_CLOSE($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_CLOSE_WINDOW, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_CLOSE_WINDOW, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });  
+   }
+}
+sub EVT_END_SESSION($$) {
+   if (ref $_[1] eq 'CODE') { 
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_END_SESSION, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_END_SESSION, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });  
+   }
+}
+sub EVT_QUERY_END_SESSION($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_QUERY_END_SESSION, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_QUERY_END_SESSION, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });  
+   }
+}
+
+#
+# DropFilesEvent
+#
+
+sub EVT_DROP_FILES($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_DROP_FILES, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_DROP_FILES, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });  
+   }
+}
+
+#
+# EraseEvent
+#
+sub EVT_ERASE_BACKGROUND($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_ERASE_BACKGROUND, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_ERASE_BACKGROUND, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });  
+   }
+}
+
+#
+# FindDialogEvent
+#
+sub EVT_FIND($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_FIND, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_FIND, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_FIND_NEXT($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_FIND_NEXT, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_FIND_NEXT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_FIND_REPLACE($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_FIND_REPLACE, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_FIND_REPLACE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_FIND_REPLACE_ALL($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_FIND_REPLACE_ALL, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_FIND_REPLACE_ALL, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_FIND_CLOSE($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_FIND_CLOSE, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_FIND_CLOSE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# FocusEvent
+#
+sub EVT_SET_FOCUS($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SET_FOCUS, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SET_FOCUS, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_KILL_FOCUS($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_KILL_FOCUS, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_KILL_FOCUS, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# KeyEvent
+#
+
+sub EVT_CHAR($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_CHAR, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_CHAR, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_CHAR_HOOK($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_CHAR_HOOK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_CHAR_HOOK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_KEY_DOWN($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_KEY_DOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_KEY_DOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_KEY_UP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_KEY_UP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_KEY_UP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# Grid*Event
+#
+
+sub EVT_GRID_CELL_LEFT_CLICK($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_CELL_LEFT_CLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_CELL_LEFT_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_CELL_RIGHT_CLICK($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_CELL_RIGHT_CLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_CELL_RIGHT_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_CELL_LEFT_DCLICK($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_CELL_LEFT_DCLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_CELL_LEFT_DCLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_CELL_RIGHT_DCLICK($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_CELL_RIGHT_DCLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_CELL_RIGHT_DCLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_LABEL_LEFT_CLICK($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_LABEL_LEFT_CLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_LABEL_LEFT_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_LABEL_RIGHT_CLICK($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_LABEL_RIGHT_CLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_LABEL_RIGHT_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_LABEL_LEFT_DCLICK($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_LABEL_LEFT_DCLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_LABEL_LEFT_DCLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_LABEL_RIGHT_DCLICK($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_LABEL_RIGHT_DCLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_LABEL_RIGHT_DCLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_ROW_SIZE($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_ROW_SIZE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_ROW_SIZE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_COL_SIZE($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_COL_SIZE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_COL_SIZE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_RANGE_SELECT($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_RANGE_SELECT, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_RANGE_SELECT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_CELL_CHANGE($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_CELL_CHANGE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_CELL_CHANGE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_SELECT_CELL($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_SELECT_CELL, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_SELECT_CELL, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_EDITOR_SHOWN($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_EDITOR_SHOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_EDITOR_SHOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_EDITOR_HIDDEN($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_EDITOR_HIDDEN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_EDITOR_HIDDEN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_GRID_EDITOR_CREATED($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_EDITOR_CREATED, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_GRID_EDITOR_CREATED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# HelpEvent
+#
+
+sub EVT_HELP($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_HELP, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_HELP_RANGE($$$$) { $_[0]->Connect( $_[1], $_[2], &Wx::wxEVT_HELP, $_[3] ) } # FIX ME !!!!
+sub EVT_DETAILED_HELP($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_DETAILED_HELP, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_DETAILED_HELP_RANGE($$$$) { $_[0]->Connect( $_[1], $_[2], &Wx::wxEVT_DETAILED_HELP, $_[3] ) } # FIX ME !!!!
+
+#
+# IconizeEvent
+#
+
+sub EVT_ICONIZE($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_ICONIZE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_ICONIZE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# IdleEvent
+#
+
+sub EVT_IDLE($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_IDLE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_IDLE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# InitDialogEvent
+#
+
+sub EVT_INIT_DIALOG($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_INIT_DIALOG, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_INIT_DIALOG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# JoystickEvent
+#
+
+sub EVT_JOY_BUTTON_DOWN($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_JOY_BUTTON_DOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_JOY_BUTTON_DOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_JOY_BUTTON_UP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_JOY_BUTTON_UP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_JOY_BUTTON_UP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_JOY_MOVE($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_JOY_MOVE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_JOY_MOVE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_JOY_ZMOVE($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_JOY_ZMOVE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller  = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_JOY_ZMOVE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# ListbookEvent
+#
+
+sub EVT_LISTBOOK_PAGE_CHANGING($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LISTBOOK_PAGE_CHANGED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# ChoicebookEvent
+#
+
+sub EVT_CHOICEBOOK_PAGE_CHANGING($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_CHOICEBOOK_PAGE_CHANGED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_CHOICEBOOK_PAGE_CHANGED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# ToolbookEvent
+#
+
+sub EVT_TOOLBOOK_PAGE_CHANGING($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGING, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TOOLBOOK_PAGE_CHANGED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# TreebookEvent
+#
+sub EVT_TREEBOOK_PAGE_CHANGING($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREEBOOK_PAGE_CHANGING, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREEBOOK_PAGE_CHANGING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREEBOOK_PAGE_CHANGED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREEBOOK_PAGE_CHANGED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREEBOOK_PAGE_CHANGED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREEBOOK_NODE_COLLAPSED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREEBOOK_NODE_COLLAPSED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREEBOOK_NODE_COLLAPSED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREEBOOK_NODE_EXPANDED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREEBOOK_NODE_EXPANDED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREEBOOK_NODE_EXPANDED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# ListEvent
+#
+sub EVT_LIST_BEGIN_DRAG($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_BEGIN_DRAG, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_BEGIN_RDRAG($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_BEGIN_RDRAG, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_BEGIN_RDRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_BEGIN_LABEL_EDIT($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_CACHE_HINT($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_CACHE_HINT, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_CACHE_HINT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_END_LABEL_EDIT($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_END_LABEL_EDIT, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_END_LABEL_EDIT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_DELETE_ITEM($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_DELETE_ITEM, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_DELETE_ITEM, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_DELETE_ALL_ITEMS($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_GET_INFO($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_GET_INFO, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_GET_INFO, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_SET_INFO($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_SET_INFO, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_SET_INFO, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_ITEM_SELECTED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_ITEM_SELECTED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_ITEM_SELECTED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_ITEM_DESELECTED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_ITEM_DESELECTED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_ITEM_DESELECTED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_KEY_DOWN($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_KEY_DOWN, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_KEY_DOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_INSERT_ITEM($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_INSERT_ITEM, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_INSERT_ITEM, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_COL_CLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_COL_CLICK, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_COL_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_RIGHT_CLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_RIGHT_CLICK, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_RIGHT_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_MIDDLE_CLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_MIDDLE_CLICK, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_MIDDLE_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_ITEM_ACTIVATED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_ITEM_ACTIVATED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_ITEM_ACTIVATED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_COL_RIGHT_CLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_COL_RIGHT_CLICK, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_COL_RIGHT_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_COL_BEGIN_DRAG($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_COL_DRAGGING($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_COL_DRAGGING, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_COL_DRAGGING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_COL_END_DRAG($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_COL_END_DRAG, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_COL_END_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_ITEM_FOCUSED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_ITEM_FOCUSED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_ITEM_FOCUSED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LIST_ITEM_RIGHT_CLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# MenuEvent
+#
+
+sub EVT_MENU_CHAR($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MENU_CHAR, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MENU_CHAR, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MENU_INIT($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MENU_INIT, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MENU_INIT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MENU_HIGHLIGHT($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_MENU_HIGHLIGHT, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_MENU_HIGHLIGHT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_POPUP_MENU($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_POPUP_MENU, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_POPUP_MENU, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_CONTEXT_MENU($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_CONTEXT_MENU, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_CONTEXT_MENU, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MENU_OPEN($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MENU_OPEN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MENU_OPEN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MENU_CLOSE($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MENU_CLOSE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MENU_CLOSE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# MouseEvent
+#
+sub EVT_LEFT_DOWN($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_LEFT_DOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_LEFT_DOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LEFT_UP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_LEFT_UP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_LEFT_UP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LEFT_DCLICK($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_LEFT_DCLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_LEFT_DCLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MIDDLE_DOWN($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MIDDLE_DOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MIDDLE_DOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MIDDLE_UP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MIDDLE_UP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MIDDLE_UP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MIDDLE_DCLICK($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MIDDLE_DCLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MIDDLE_DCLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_RIGHT_DOWN($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_RIGHT_DOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_RIGHT_DOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_RIGHT_UP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_RIGHT_UP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_RIGHT_UP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_RIGHT_DCLICK($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_RIGHT_DCLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_RIGHT_DCLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MOTION($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MOTION, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MOTION, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_ENTER_WINDOW($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_ENTER_WINDOW, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_ENTER_WINDOW, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_LEAVE_WINDOW($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_LEAVE_WINDOW, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_LEAVE_WINDOW, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MOUSEWHEEL($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MOUSEWHEEL, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MOUSEWHEEL, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MOUSE_EVENTS($$) {
+  my( $x, $y ) = @_;
+  EVT_LEFT_DOWN( $x, $y );
+  EVT_LEFT_UP( $x, $y );
+  EVT_LEFT_DCLICK( $x, $y );
+  EVT_MIDDLE_DOWN( $x, $y );
+  EVT_MIDDLE_UP( $x, $y );
+  EVT_MIDDLE_DCLICK( $x, $y );
+  EVT_RIGHT_DOWN( $x, $y );
+  EVT_RIGHT_UP( $x, $y );
+  EVT_RIGHT_DCLICK( $x, $y );
+  EVT_MOTION( $x, $y );
+  EVT_ENTER_WINDOW( $x, $y );
+  EVT_LEAVE_WINDOW( $x, $y );
+  EVT_MOUSEWHEEL( $x, $y );
+}
+
+#
+# MoveEvent
+#
+
+sub EVT_MOVE($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MOVE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MOVE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_MOVING($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MOVING, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_MOVING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# NotebookEvent
+#
+
+sub EVT_NOTEBOOK_PAGE_CHANGING($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_NOTEBOOK_PAGE_CHANGED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# PaintEvent
+#
+
+sub EVT_PAINT($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_PAINT, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_PAINT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# ProcessEvent
+#
+
+sub EVT_END_PROCESS($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_END_PROCESS, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_END_PROCESS, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# SashEvent
+#
+sub EVT_SASH_DRAGGED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SASH_DRAGGED, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SASH_DRAGGED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SASH_DRAGGED_RANGE($$$$) { $_[0]->Connect( $_[1], $_[2], &Wx::wxEVT_SASH_DRAGGED, $_[3] ) }
+
+#
+# SizeEvent
+#
+
+sub EVT_SIZE($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SIZE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SIZING($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SIZING, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# ScrollEvent
+#
+
+sub EVT_SCROLL_TOP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLL_BOTTOM($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_BOTTOM, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLL_LINEUP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_LINEUP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLL_LINEDOWN($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_LINEDOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLL_PAGEUP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_PAGEUP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLL_PAGEDOWN($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_PAGEDOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLL_THUMBTRACK($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_THUMBTRACK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLL_THUMBRELEASE($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_THUMBRELEASE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+sub EVT_COMMAND_SCROLL_TOP($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_TOP, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_TOP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_COMMAND_SCROLL_BOTTOM($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_BOTTOM, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_BOTTOM, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_COMMAND_SCROLL_LINEUP($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_COMMAND_SCROLL_LINEDOWN($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEDOWN, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEDOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   } 
+}
+sub EVT_COMMAND_SCROLL_PAGEUP($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_PAGEUP, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_PAGEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_COMMAND_SCROLL_PAGEDOWN($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_PAGEDOWN, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_PAGEDOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_COMMAND_SCROLL_THUMBTRACK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_THUMBTRACK, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_THUMBTRACK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_COMMAND_SCROLL_THUMBRELEASE($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_THUMBRELEASE, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_THUMBRELEASE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# ScrollWinEvent
+#
+sub EVT_SCROLLWIN_TOP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLLWIN_TOP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLLWIN_BOTTOM($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLLWIN_BOTTOM, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLLWIN_LINEUP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLLWIN_LINEUP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLLWIN_LINEDOWN($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLLWIN_LINEDOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLLWIN_PAGEUP($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLLWIN_PAGEUP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLLWIN_PAGEDOWN($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLLWIN_PAGEDOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLLWIN_THUMBTRACK($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLLWIN_THUMBTRACK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SCROLLWIN_THUMBRELEASE($$) {
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLLWIN_THUMBRELEASE, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# SpinEvent
+#
+
+sub EVT_SPIN_UP($$$) { 
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEUP, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SPIN_DOWN($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEDOWN, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_LINEDOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SPIN($$$) { 
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SCROLL_THUMBTRACK, $_[2] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_SCROLL_THUMBTRACK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SPINCTRL($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_SPINCTRL_UPDATED, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SPINCTRL_UPDATED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# SplitterEvent
+#
+sub EVT_SPLITTER_SASH_POS_CHANGING($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SPLITTER_SASH_POS_CHANGED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_SPLITTER_UNSPLIT($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_SPLITTER_UNSPLIT, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SPLITTER_UNSPLIT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   } 
+}
+sub EVT_SPLITTER_DOUBLECLICKED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_SPLITTER_DOUBLECLICKED, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_SPLITTER_DOUBLECLICKED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# SysColourChangedEvent
+#
+
+sub EVT_SYS_COLOUR_CHANGED($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_SYS_COLOUR_CHANGED, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# Taskbar
+#
+
+sub EVT_TASKBAR_MOVE($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_TASKBAR_MOVE, $_[1] ); 
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TASKBAR_LEFT_DOWN($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_TASKBAR_LEFT_DOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TASKBAR_LEFT_UP($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_TASKBAR_LEFT_UP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TASKBAR_RIGHT_DOWN($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_TASKBAR_RIGHT_DOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TASKBAR_RIGHT_UP($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_TASKBAR_RIGHT_UP, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TASKBAR_LEFT_DCLICK($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_TASKBAR_LEFT_DCLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TASKBAR_RIGHT_DCLICK($$) { 
+   if (ref $_[1] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_TASKBAR_RIGHT_DCLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $controller = $_[1];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# TreeEvent
+#
+
+sub EVT_TREE_BEGIN_DRAG($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_DRAG, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_BEGIN_RDRAG($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_RDRAG, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_RDRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_END_DRAG($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_END_DRAG, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_END_DRAG, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_BEGIN_LABEL_EDIT($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_END_LABEL_EDIT($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_END_LABEL_EDIT, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_END_LABEL_EDIT, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_GET_INFO($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_GET_INFO, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_GET_INFO, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_SET_INFO($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_CLOSE_WINDOW, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_SET_INFO, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_ITEM_EXPANDED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_ITEM_EXPANDED, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_ITEM_EXPANDED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_ITEM_EXPANDING($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_ITEM_EXPANDING, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_ITEM_EXPANDING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_ITEM_COLLAPSED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_ITEM_COLLAPSED, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_ITEM_COLLAPSED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_ITEM_COLLAPSING($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_ITEM_COLLAPSING, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_ITEM_COLLAPSING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_SEL_CHANGED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_SEL_CHANGED, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_SEL_CHANGED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_SEL_CHANGING($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_SEL_CHANGING, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_SEL_CHANGING, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_KEY_DOWN($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_KEY_DOWN, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_KEY_DOWN, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_DELETE_ITEM($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_DELETE_ITEM, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_DELETE_ITEM, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_ITEM_ACTIVATED($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_ITEM_ACTIVATED, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_ITEM_ACTIVATED, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_ITEM_RIGHT_CLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_ITEM_MIDDLE_CLICK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_TREE_ITEM_MENU($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::wxEVT_COMMAND_TREE_ITEM_MENU, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_COMMAND_TREE_ITEM_MENU, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# UpdateUIEvent
+#
+sub EVT_UPDATE_UI($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::EVT_UPDATE_UI, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_UPDATE_UI, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+sub EVT_UPDATE_UI_RANGE($$$$) { # FIX ME !!
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( $_[1], $_[2], &Wx::EVT_UPDATE_UI_RANGE, $_[3] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::EVT_UPDATE_UI_RANGE, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# HyperlinkEvent
+#
+sub EVT_HYPERLINK($$$) {
+   if (ref $_[2] eq 'CODE') {
+      $_[0]->Connect( -1, -1, &Wx::EVT_HYPERLINK, $_[1] );
+   }
+   else {
+      my $parent     = $_[0];
+      my $control    = $_[1];
+      my $controller = $_[2];
+      
+      $_[0]->Connect( $_[1], -1, &Wx::wxEVT_HYPERLINK, sub {
+         my( $this, $event ) = @_;
+   
+         POE::Kernel->post('_WAXALYST', 'EVENT_REQUEST', {
+            controller  => $controller,
+            parent      => $parent,
+            control     => $control,
+            event       => $event,
+         });
+      });
+   }
+}
+
+#
+# Socket
+#
+
+sub EVT_SOCKET($$$) { goto &Wx::Socket::Event::EVT_SOCKET }
+sub EVT_SOCKET_ALL($$$) { goto &Wx::Socket::Event::EVT_SOCKET_ALL }
+sub EVT_SOCKET_INPUT($$$) { goto &Wx::Socket::Event::EVT_SOCKET_INPUT }
+sub EVT_SOCKET_OUTPUT($$$) { goto &Wx::Socket::Event::EVT_SOCKET_OUTPUT }
+sub EVT_SOCKET_CONNECTION($$$) { goto &Wx::Socket::Event::EVT_SOCKET_CONNECTION }
+sub EVT_SOCKET_LOST($$$) { goto &Wx::Socket::Event::EVT_SOCKET_LOST }
+
+#
+# Prototypes
+#
+sub EVT_CALENDAR($$$);
+sub EVT_CALENDAR_SEL_CHANGED($$$);
+sub EVT_CALENDAR_DAY($$$);
+sub EVT_CALENDAR_MONTH($$$);
+sub EVT_CALENDAR_YEAR($$$);
+sub EVT_CALENDAR_WEEKDAY_CLICKED($$$);
+
+sub EVT_STC_CHANGE($$$);
+sub EVT_STC_STYLENEEDED($$$);
+sub EVT_STC_CHARADDED($$$);
+sub EVT_STC_SAVEPOINTREACHED($$$);
+sub EVT_STC_SAVEPOINTLEFT($$$);
+sub EVT_STC_ROMODIFYATTEMPT($$$);
+sub EVT_STC_KEY($$$);
+sub EVT_STC_DOUBLECLICK($$$);
+sub EVT_STC_UPDATEUI($$$);
+sub EVT_STC_MODIFIED($$$);
+sub EVT_STC_MACRORECORD($$$);
+sub EVT_STC_MARGINCLICK($$$);
+sub EVT_STC_NEEDSHOWN($$$);
+sub EVT_STC_POSCHANGED($$$);
+sub EVT_STC_PAINTED($$$);
+sub EVT_STC_USERLISTSELECTION($$$);
+sub EVT_STC_URIDROPPED($$$);
+sub EVT_STC_DWELLSTART($$$);
+sub EVT_STC_DWELLEND($$$);
+sub EVT_STC_START_DRAG($$$);
+sub EVT_STC_DRAG_OVER($$$);
+sub EVT_STC_DO_DROP($$$);
+sub EVT_STC_ZOOM($$$);
+sub EVT_STC_HOTSPOT_CLICK($$$);
+sub EVT_STC_HOTSPOT_DCLICK($$$);
+sub EVT_STC_CALLTIP_CLICK($$$);
+
+1;
+
+__END__
+
+# local variables:
+# mode: cperl
+# end:

Added: trunk/Catalyst-Engine-Wx/lib/Catalyst/Engine/Wx.pm
===================================================================
--- trunk/Catalyst-Engine-Wx/lib/Catalyst/Engine/Wx.pm	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/lib/Catalyst/Engine/Wx.pm	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,122 @@
+package Catalyst::Engine::Wx;
+
+use strict;
+use warnings;
+
+use POE;
+use POE::Loop::Wx;
+use POE::Session;
+
+use Data::Dumper;
+use IO::String;
+use URI;
+
+my $uri_proto = URI->new();
+my $app;
+   
+use base 'Catalyst::Engine';
+use Errno 'EWOULDBLOCK';
+
+sub DEBUG () { $ENV{CATALYST_POE_DEBUG} || 0 }
+sub BENCH () { $ENV{CATALYST_POE_BENCH} || 0 }
+
+=head1 NAME
+
+Catalyst::Engine::Wx - Catalyst wxPerl Engine with POE loop
+
+=head1 SYNOPSIS
+
+A script using the Catalyst::Engine::Wx module might look like:
+
+    #!/usr/bin/perl -w
+
+    BEGIN {  $ENV{CATALYST_ENGINE} = 'Wx' }
+
+    use strict;
+    use lib '/path/to/MyApp/lib';
+    use MyApp;
+
+    MyApp->run;
+
+=head1 DESCRIPTION
+
+This is the Catalyst engine specialized for building non-blocking desktop
+applications out of the Catalyst framework.
+
+=head1 METHODS
+
+=cut
+
+sub run {
+   my ( $self, $class, $port, $host, $options ) = @_;
+   
+   $options ||= {};
+   
+   POE::Session->create(
+      object_states => [
+         $self => [ 
+         'EVENT_REQUEST',
+         '_PULSE',
+         ],
+      ],
+      inline_states => {
+         _start => sub {    
+               my ($kernel, $heap, $session) = @_[KERNEL, HEAP, SESSION];
+               
+               $heap->{'class'} = $class;
+               
+               $kernel->alias_set('_WAXALYST');
+                        
+               POE::Kernel->post('_WAXALYST', '_KEEPALIVE');
+               POE::Kernel->post('_WAXALYST', '_PULSE');
+            },
+         _KEEPALIVE => sub { $_[KERNEL]->delay('_KEEPALIVE', 20); },
+      }
+   );
+
+   my $app = Wx::SimpleApp->new;
+    
+   POE::Kernel->run();
+   
+   exit;
+}
+
+sub _PULSE {
+   my ($kernel, $heap, $session, $request) = @_[KERNEL, HEAP, SESSION, ARG0];
+   $heap->{'class'}->handle_request;
+}
+            
+sub EVENT_REQUEST {
+   my ($kernel, $heap, $session, $request) = @_[KERNEL, HEAP, SESSION, ARG0];
+   $heap->{'class'}->handle_request($request);
+}
+
+sub prepare {
+   my ( $self, $c, $request ) = @_;
+   
+   my $controller = $request->{'controller'} || '/';
+
+   my $path = $controller;
+   $path =~ s{^/+}{};
+
+   my $uri = $uri_proto->clone;
+   $uri->path($path);
+   $c->request->uri($uri);
+   
+   my (@paths,undef) = split(/\//, $controller);
+   my $base_path = join('/', @paths);
+   
+   $base_path ||= '/';
+   
+   my $base = $uri->clone;
+   $base->path_query($base_path);
+   $c->request->base($base);
+   
+   $c->parent($request->{'parent'});
+}
+
+=head1 AUTHORS
+
+=cut
+
+1;

Added: trunk/Catalyst-Engine-Wx/lib/Catalyst/View/Wx.pm
===================================================================
--- trunk/Catalyst-Engine-Wx/lib/Catalyst/View/Wx.pm	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/lib/Catalyst/View/Wx.pm	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,70 @@
+package Catalyst::View::Wx;
+
+use strict;
+
+use base qw/Catalyst::View/;
+use NEXT;
+
+our $VERSION = '0.1';
+
+
+use Data::Dumper;
+=head1 NAME
+
+Catalyst::View::Wx - Wx View Class
+
+=head1 SYNOPSIS
+
+=cut
+sub new {
+   my ( $class, $c, $arguments ) = @_;
+   my $self = bless {}, $class;
+   
+   my $config = {
+      %{ $class->config },
+      %{$arguments},
+   };
+   
+   $self->config($config);
+   
+   return $self;
+}
+
+sub process {
+   my ($self, $c) = @_;
+   
+   my $module = $c->action;
+   $module =~ s/\//::/g;
+   
+   eval "use ".$self->config->{NAMESPACE}."::".$module.";";
+   
+   my $view;
+   eval '$view = '.$self->config->{NAMESPACE}."::".$module."->new();";
+   
+   if (defined $view) {
+      $view->display($c);
+   }
+
+   $c->stash->{_displayed} = 1;
+   return 1; 
+}
+
+sub DESTROY {
+   my ($self) = shift;
+ 
+}
+
+=head2 HELPERS
+
+=head1 SEE ALSO
+
+=head1 AUTHORS
+
+=head1 COPYRIGHT
+
+This program is free software, you can redistribute it and/or modify it 
+under the same terms as Perl itself.
+
+=cut
+
+1;

Added: trunk/Catalyst-Engine-Wx/t/1_load.t
===================================================================
--- trunk/Catalyst-Engine-Wx/t/1_load.t	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/t/1_load.t	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,5 @@
+use Test::More tests => 3;
+
+use_ok( 'POE::Component::Server::SimpleHTTP::Connection' );
+use_ok( 'POE::Component::Server::SimpleHTTP::Response' );
+use_ok( 'POE::Component::Server::SimpleHTTP' );

Added: trunk/Catalyst-Engine-Wx/t/2_pod.t
===================================================================
--- trunk/Catalyst-Engine-Wx/t/2_pod.t	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/t/2_pod.t	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,4 @@
+use Test::More;
+eval "use Test::Pod 1.00";
+plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;
+all_pod_files_ok();

Added: trunk/Catalyst-Engine-Wx/t/4_test_kwalitee.t
===================================================================
--- trunk/Catalyst-Engine-Wx/t/4_test_kwalitee.t	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/t/4_test_kwalitee.t	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,3 @@
+use Test::More;
+eval { require Test::Kwalitee; Test::Kwalitee->import() };
+plan( skip_all => 'Test::Kwalitee not installed; skipping' ) if $@;

Added: trunk/Catalyst-Engine-Wx/tools/svn-log.perl
===================================================================
--- trunk/Catalyst-Engine-Wx/tools/svn-log.perl	                        (rev 0)
+++ trunk/Catalyst-Engine-Wx/tools/svn-log.perl	2007-04-28 15:22:58 UTC (rev 6330)
@@ -0,0 +1,299 @@
+#!/usr/bin/env perl
+# $Id: svn-log.perl 21 2005-06-23 01:51:27Z rcaputo $
+
+# This program is Copyright 2005 by Rocco Caputo.  All rights are
+# reserved.  This program is free software.  It may be modified, used,
+# and redistributed under the same terms as Perl itself.
+
+# Generate a nice looking change log from the subversion logs for a
+# Perl project.  The log is also easy for machines to parse.
+
+use warnings;
+use strict;
+
+use Getopt::Long;
+use Text::Wrap qw(wrap fill $columns $huge);
+use POSIX qw(strftime);
+use XML::Parser;
+use Data::Dumper;
+
+my %month = qw(
+	Jan 01 Feb 02 Mar 03 Apr 04 May 05 Jun 06
+	Jul 07 Aug 08 Sep 09 Oct 10 Nov 11 Dec 12
+);
+
+$Text::Wrap::huge     = "wrap";
+$Text::Wrap::columns  = 74;
+
+my $days_back  = 780;   # Go back a year by default.
+my $send_help  = 0;     # Display help and exit.
+my $svn_repo;           # Where to log from.
+
+use constant LOG_REV        => 0;
+use constant LOG_DATE       => 1;
+use constant LOG_WHO        => 2;
+use constant LOG_MESSAGE    => 3;
+use constant LOG_PATHS      => 4;
+
+use constant PATH_PATH      => 0;
+use constant PATH_ACTION    => 1;
+use constant PATH_CPF_PATH  => 2;
+use constant PATH_CPF_REV   => 3;
+
+use constant TAG_REV        => 0;
+use constant TAG_TAG        => 1;
+use constant TAG_LOG        => 2;
+
+use constant MAX_TIMESTAMP  => "9999-99-99 99:99:99";
+
+GetOptions(
+  "age=s"      => \$days_back,
+  "repo=s"     => \$svn_repo,
+	"help"       => \$send_help,
+) or exit;
+
+# Find the trunk for the current repository if one isn't specified.
+unless (defined $svn_repo) {
+	$svn_repo = `svn info . | grep '^URL: '`;
+	if (length $svn_repo) {
+		chomp $svn_repo;
+		$svn_repo =~ s{^URL\:\s+(.+?)/trunk/?.*$}{$1};
+	}
+	else {
+		$send_help = 1;
+	}
+}
+
+die(
+	"$0 usage:\n",
+	"  --repo REPOSITORY\n",
+	"  [--age DAYS]\n",
+	"\n",
+	"REPOSITORY must have a trunk subdirectory and a tags directory where\n",
+	"release tags are kept.\n",
+) if $send_help;
+
+my $earliest_date = strftime "%F", gmtime(time() - $days_back * 86400);
+
+### 1. Gather a list of tags for the repository, their revisions and
+### dates.
+
+my %tag;
+
+open(TAG, "svn -v list $svn_repo/tags|") or die $!;
+while (<TAG>) {
+	# The date is unused, however.
+	next unless (
+		my ($rev, $date, $tag) = m{
+			(\d+).*?(\S\S\S\s+\d\d\s+(?:\d\d\d\d|\d\d:\d\d))\s+([0-9_.]+)
+		}x
+	);
+
+	my @tag_log = gather_log("$svn_repo/tags/$tag", "--stop-on-copy");
+	#die "Tag $tag has changes after tagging!\n" if @tag_log > 1;
+	next if @tag_log > 1;
+
+	my $timestamp = $tag_log[0][LOG_DATE];
+	$tag{$timestamp} = [
+		$rev,     # TAG_REV
+		$tag,     # TAG_TAG
+		[ ],      # TAG_LOG
+	];
+}
+close TAG;
+
+# Fictitious "HEAD" tag for revisions that came after the last tag.
+
+$tag{+MAX_TIMESTAMP} = [
+	"HEAD",         # TAG_REV
+	"(untagged)",   # TAG_TAG
+	undef,          # TAG_LOG
+];
+
+### 2. Gather the log for the trunk.  Place log entries under their
+### proper tags.
+
+my @tag_dates = sort keys %tag;
+while (my $date = pop(@tag_dates)) {
+
+	# We're done if this date's before our earliest date.
+	if ($date lt $earliest_date) {
+		delete $tag{$date};
+		next;
+	}
+
+	my $tag = $tag{$date}[TAG_TAG];
+	#warn "Gathering information for tag $tag...\n";
+
+	my $this_rev = $tag{$date}[TAG_REV];
+	my $prev_rev;
+	if (@tag_dates) {
+		$prev_rev = $tag{$tag_dates[-1]}[TAG_REV];
+	}
+	else {
+		$prev_rev = 0;
+	}
+
+	my @log = gather_log("$svn_repo/trunk", "-r", "$this_rev:$prev_rev");
+
+	$tag{$date}[TAG_LOG] = \@log;
+}
+
+### 3. PROFIT!  No, wait... generate the nice log file.
+
+foreach my $timestamp (sort { $b cmp $a } keys %tag) {
+	my $tag_rec = $tag{$timestamp};
+
+	# Skip this tag if there are no log entries.
+	next unless @{$tag_rec->[TAG_LOG]};
+
+	my $tag_line = "$timestamp $tag_rec->[TAG_TAG]";
+	my $tag_bar  = "=" x length($tag_line);
+	print $tag_bar, "\n", $tag_line, "\n", $tag_bar, "\n\n";
+
+	foreach my $log_rec (@{$tag_rec->[TAG_LOG]}) {
+
+		my @paths = @{$log_rec->[LOG_PATHS]};
+		if (@paths > 1) {
+			@paths = grep {
+				$_->[PATH_PATH] ne "/trunk" or $_->[PATH_ACTION] ne "M"
+			} @paths;
+		}
+
+		my $time_line = wrap(
+			"  ", "  ",
+			join(
+				"; ",
+				"$log_rec->[LOG_DATE] (r$log_rec->[LOG_REV]) by $log_rec->[LOG_WHO]",
+				map { "$_->[PATH_PATH] $_->[PATH_ACTION]" } @paths
+			)
+		);
+
+		if ($time_line =~ /\n/) {
+			$time_line = wrap(
+				"  ", "  ",
+				"$log_rec->[LOG_DATE] (r$log_rec->[LOG_REV]) by $log_rec->[LOG_WHO]\n"
+			) .
+			wrap(
+				"  ", "  ",
+				join(
+					"; ",
+					map { "$_->[PATH_PATH] $_->[PATH_ACTION]" } @paths
+				)
+			);
+		}
+
+		print $time_line, "\n\n";
+
+		# Blank lines should have the indent level of whitespace.  This
+		# makes it easier for other utilities to parse them.
+
+		my @paragraphs = split /\n\s*\n/, $log_rec->[LOG_MESSAGE];
+		foreach my $paragraph (@paragraphs) {
+
+			# Trim off identical leading space from every line.
+			my ($whitespace) = $paragraph =~ /^(\s*)/;
+			if (length $whitespace) {
+				$paragraph =~ s/^$whitespace//mg;
+			}
+
+			# Re-flow the paragraph if it isn't indented from the norm.
+			# This should preserve indented quoted text, wiki-style.
+			unless ($paragraph =~ /^\s/) {
+				$paragraph = fill("    ", "    ", $paragraph);
+			}
+		}
+
+		print join("\n    \n", @paragraphs), "\n\n";
+	}
+}
+
+print(
+	"==============\n",
+	"End of Excerpt\n",
+	"==============\n",
+);
+
+### Z. Helper functions.
+
+sub gather_log {
+	my ($url, @flags) = @_;
+
+	my (@log, @stack);
+
+	my $parser = XML::Parser->new(
+		Handlers => {
+			Start => sub {
+				my ($self, $tag, %att) = @_;
+				push @stack, [ $tag, \%att ];
+				if ($tag eq "logentry") {
+					push @log, [ ];
+					$log[-1][LOG_WHO] = "(nobody)";
+				}
+			},
+			Char  => sub {
+				my ($self, $text) = @_;
+				$stack[-1][1]{0} .= $text;
+			},
+			End => sub {
+				my ($self, $tag) = @_;
+				die "close $tag w/out open" unless @stack;
+				my ($pop_tag, $att) = @{pop @stack};
+
+				die "$tag ne $pop_tag" if $tag ne $pop_tag;
+
+				if ($tag eq "date") {
+					my $timestamp = $att->{0};
+					my ($date, $time) = split /[T.]/, $timestamp;
+					$log[-1][LOG_DATE] = "$date $time";
+					return;
+				}
+
+				if ($tag eq "logentry") {
+					$log[-1][LOG_REV] = $att->{revision};
+					return;
+				}
+
+				if ($tag eq "msg") {
+					$log[-1][LOG_MESSAGE] = $att->{0};
+					return;
+				}
+
+				if ($tag eq "author") {
+					$log[-1][LOG_WHO] = $att->{0};
+					return;
+				}
+
+				if ($tag eq "path") {
+					my $path = $att->{0};
+					$path =~ s{^/trunk/}{};
+					push(
+						@{$log[-1][LOG_PATHS]}, [
+							$path,            # PATH_PATH
+							$att->{action},   # PATH_ACTION
+						]
+					);
+
+					$log[-1][LOG_PATHS][-1][PATH_CPF_PATH] = $att->{"copyfrom-path"} if (
+						exists $att->{"copyfrom-path"}
+					);
+
+					$log[-1][LOG_PATHS][-1][PATH_CPF_REV] = $att->{"copyfrom-rev"} if (
+						exists $att->{"copyfrom-rev"}
+					);
+					return;
+				}
+
+			}
+		}
+	);
+
+	my $cmd = "svn -v --xml @flags log $url";
+	#warn "Command: $cmd\n";
+
+	open(LOG, "$cmd|") or die $!;
+	$parser->parse(*LOG);
+	close LOG;
+
+	return @log;
+}




More information about the Catalyst-commits mailing list