Hi Richard,
On 13/05/14 13:13, Richard Faasen wrote:
Here it is. Just search for 'trayicon' to find the interesting parts.
Well I played with it a bit. I couldn't TaskIconBar in Wx::Demo.
Anyhow I took your code and copied it into a piece of working code and
after a bit of messing around it sprang into life.
Firstly, it only appears to work when the App has focus!
Secondly EVT_TASKBAR_CLICK never worked,
EVT_TASKBAR_MOVE worked too much and obscured any results I might have had.
But everything else worked.
Here is my test harness with your embedded code, I had no wrapping
problems with your code.
Code follows.
Regards
Steve
#!/usr/bin/perl -w --
package Player;
use strict;
use warnings;
#use v5.18;
use Wx qw[:everything];
use base qw(Wx::Frame);
use Wx qw( wxBITMAP_TYPE_ICO wxMENU_TEAROFF wxOK wxICON_INFORMATION
wxVERSION_STRING );
use Wx::Event qw(
EVT_COMMAND EVT_TIMER EVT_MENU
EVT_TASKBAR_CLICK
EVT_TASKBAR_LEFT_DOWN EVT_TASKBAR_LEFT_UP
EVT_TASKBAR_RIGHT_DOWN EVT_TASKBAR_RIGHT_UP
EVT_TASKBAR_LEFT_DCLICK EVT_TASKBAR_RIGHT_DCLICK
EVT_TASKBAR_MOVE
);
sub new {
my( $i_main_menu, $parent, $id, $title, $pos, $size, $style, $name
) = @_;
$parent = undef unless defined $parent;
$id = wxID_ANY unless defined $id;
$title = "" unless defined $title;
$pos = wxDefaultPosition unless defined $pos;
$size = wxDefaultSize unless defined $size;
$name = "" unless defined $name;
# Create top level window.
$style = wxNO_BORDER unless defined $style;
$i_main_menu = $i_main_menu->SUPER::new( undef, wxID_ANY, "Frame",
wxDefaultPosition, wxDefaultSize, $style, $name );
my $Main_Szr = Wx::BoxSizer->new( wxVERTICAL);
my $trayicon = Wx::TaskBarIcon->new();
$trayicon->IsOk() || die;
$trayicon->SetIcon(Wx::GetWxPerlIcon(1), "Click me!");
# Set events
EVT_TASKBAR_CLICK($trayicon, sub {
print "EVT_TASKBAR_CLICK triggered\n"; # This never called
});
EVT_TASKBAR_LEFT_DOWN($trayicon, sub {
print "EVT_TASKBAR_LEFT_DOWN triggered\n"; # This called
});
EVT_TASKBAR_LEFT_UP($trayicon, sub {
print "EVT_TASKBAR_LEFT_UP triggered\n"; # This called
});
EVT_TASKBAR_RIGHT_DOWN($trayicon, sub {
print "EVT_TASKBAR_RIGHT_DOWN triggered\n"; # This called
});
EVT_TASKBAR_RIGHT_UP($trayicon, sub {
print "EVT_TASKBAR_RIGHT_UP triggered\n"; # This called
});
EVT_TASKBAR_LEFT_DCLICK($trayicon, sub {
print "EVT_TASKBAR_LEFT_DCLICK triggered\n"; # This called
});
EVT_TASKBAR_RIGHT_DCLICK($trayicon, sub {
print "EVT_TASKBAR_RIGHT_DCLICK triggered\n"; # This called
});
if (0){
EVT_TASKBAR_MOVE($trayicon, sub {
print "EVT_TASKBAR_MOVE triggered\n"; # This called too much
});
}
$i_main_menu->Show(1);
$i_main_menu->SetSizer($Main_Szr);
$i_main_menu->Layout();
return $i_main_menu;
}
package Player_Main_App;
use base qw(Wx::App);
use strict;
sub OnInit {
my( $self ) = shift;
my $Player = Player->new();
$self->SetTopWindow($Player);
$Player->Show(1);
return 1;
}
package main;
unless(caller){
my $player_app = Player_Main_App->new();
$player_app->MainLoop();
}