On 2014-05-13 10:29:35 +0000, Steve Cookson said:
The main one for cocoa seems to be (on my machine
~/Alien-wxWidgets/wxWidgets-3.0.0/src/cocoa/taskbar.mm.
Got it! I need some time to figure out how this works.
Anyhow post your code and people can look at it.
Here it is. Just search for 'trayicon' to find the interesting parts.
Regards,
Richard
#!/usr/bin/env perl
package MyApp;
use warnings;
use strict;
use Wx;
use base 'Wx::App';
sub OnInit {
my($this) = @_;
my($frame) = MyFrame->new( "Minimal wxPerl app",Wx::Point->new( 50,
50 ),Wx::Size->new( 450, 350 ));
$this->SetTopWindow($frame);
$frame->Show(1);
return 1;
}
###
package MyFrame;
use strict;
use warnings;
use base '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($class) = shift;
my($this) = $class->SUPER::new (undef, -1, $_[0], $_[1], $_[2]);
$this->SetIcon (Wx::GetWxPerlIcon());
# Setup menubar
my($mfile) = Wx::Menu->new (undef, wxMENU_TEAROFF);
my( $ID_ABOUT, $ID_EXIT ) = ( 1, 2 );
$mfile->Append( $ID_EXIT, "E&xit\tAlt-X", "Quit this program" );
my($mbar) = Wx::MenuBar->new();
$mbar->Append( $mfile, "&File" );
$this->SetMenuBar($mbar);
EVT_MENU( $this, $ID_EXIT, \&OnQuit );
# Setup trayicon
my $trayicon = MyTaskBarIcon->new();
$trayicon->IsOk() || die;
$trayicon->SetIcon(Wx::GetWxPerlIcon(1), "Click me!");
# Set events - Not being called on OS X
EVT_TASKBAR_CLICK($trayicon, \&OnTaskbarClick);
EVT_TASKBAR_LEFT_DOWN($trayicon, \&OnTaskbarClick);
EVT_TASKBAR_LEFT_UP($trayicon, \&OnTaskbarClick);
EVT_TASKBAR_RIGHT_DOWN($trayicon, \&OnTaskbarClick);
EVT_TASKBAR_RIGHT_UP($trayicon, \&OnTaskbarClick);
EVT_TASKBAR_LEFT_DCLICK($trayicon, \&OnTaskbarClick);
EVT_TASKBAR_RIGHT_DCLICK($trayicon, \&OnTaskbarClick);
EVT_TASKBAR_MOVE($trayicon, \&OnTaskbarClick);
return $this;
}
sub OnTaskbarClick {
my ($this, $event) = @_;
print "OnTaskbarClick called\n"; # This never called
return;
}
sub OnQuit {
my ($this, $event) = @_;
$this->Close(1);
return;
}
### trayicon
package MyTaskBarIcon;
use base 'Wx::TaskBarIcon';
sub CreatePopupMenu {
my ($this) = @_;
print "CreatePopupMenu called\n"; # This never gets called
my $menu = Wx::Menu->new();
$menu->Append(-1, "menu 1");
$menu->Append(-1, "menu 2");
return $menu;
}
###
package main;
my $app = MyApp->new();
$app->MainLoop();