#!/usr/bin/perl use strict; use warnings; use inc::testplan(1, 8); use test_inc::loginit; # TODO migrate this to the dtRdrTestUtil::GUI framework? # a little hack to let this be a quick way to test the editor box my $testing = scalar(@ARGV); BEGIN { use_ok('dtRdr::GUI::Wx::NoteEditor') }; use Wx; use Wx::Event qw( EVT_IDLE ); my $package = eval { require("./client/app.pl") }; ok((not $@), "require ok") or BAIL_OUT("error: " . join('\n', split(/\n+/, $@))); ok($package, $package || 'got a package') or BAIL_OUT("app.pl failed to load...STOP"); # NOTE: crash will typically happen here. If it does, we're dead in # the water (probably a syntax error.) my $app = eval {$package->new(); }; ok((not $@), "$package constructor") or BAIL_OUT("error: " . join('\n', split(/\n+/, $@))); ok($app, 'application'); my $editor; { my $main_frame = $package->_main_frame; $editor = dtRdr::GUI::Wx::NoteEditor->new($main_frame); $editor->set_saver(sub {$app->ExitMainLoop}); $editor->set_reverter(sub {$app->ExitMainLoop}); # TODO set a callback and find a way to fire it # EVT_BUTTON( $this, $button, sub { $var = 1 } ); # my $event = Wx::CommandEvent->new( # &Wx::wxEVT_COMMAND_BUTTON_CLICKED, # $button->GetId() # ); # $button->GetEventHandler->ProcessEvent( $event ); # TODO check focus # TODO check the 3 ways of closing? $editor->Show(1); } my $idle_ok = 0; EVT_IDLE($app, sub { my ($foo, $event) = @_; $idle_ok++; #warn "idle $idle_ok\n"; if($idle_ok >= 1) { if($idle_ok == 1) { $editor->Raise(); # not really needed... err? } $testing or $app->ExitMainLoop; } else { } $event->Skip; 1; }); eval { $app->MainLoop(); }; ok((not $@), "MainLoop done") or BAIL_OUT("error: " . join('\n', split(/\n+/, $@))); ok(1, 'MainLoop'); ok($idle_ok, 'exit'); done; # vim:ts=2:sw=2:et:sta