diff --git a/Build.PL b/Build.PL index f5cea5b..c856bc3 100755 --- a/Build.PL +++ b/Build.PL @@ -16,6 +16,7 @@ my $build = Module::Build->new( 'DBI' => 0, 'Moo' => 0, 'namespace::clean' => 0, + 'Cairo::GObject' => 0, 'UUID::URandom' => 0, }, ); diff --git a/lib/GEmeTool/View/MainWindow.pm b/lib/GEmeTool/View/MainWindow.pm index b1e23b1..e7f4aa2 100644 --- a/lib/GEmeTool/View/MainWindow.pm +++ b/lib/GEmeTool/View/MainWindow.pm @@ -14,6 +14,7 @@ use Path::Tiny; use GEmeTool::Options; use GEmeTool::Save; use GEmeTool::View::LogWindow; +use Cairo::GObject; use Moo; @@ -80,12 +81,14 @@ sub activate { my $about = Glib::IO::SimpleAction->new( 'about', undef ); my $open = Glib::IO::SimpleAction->new( 'open', undef ); my $logs = Glib::IO::SimpleAction->new( 'view_logs', undef ); + my $pc = Glib::IO::SimpleAction->new( 'view_pc', undef ); my $save_as = Glib::IO::SimpleAction->new( 'save_as', undef ); $save_as->set_enabled(0); my $app = $self->_app; $app->add_action($about); $app->add_action($open); $app->add_action($logs); + $app->add_action($pc); $app->add_action($save_as); $self->_save_as($save_as); my $save; @@ -101,6 +104,11 @@ sub activate { $self->activate_save; } ); + $pc->signal_connect( + activate => sub { + $self->activate_view_pc; + } + ); $logs->signal_connect( activate => sub { my $win = $self->_win; @@ -113,10 +121,12 @@ sub activate { my $about_menu_item = Glib::IO::MenuItem->new( 'About', 'app.about' ); my $open_menu_item = Glib::IO::MenuItem->new( 'Open', 'app.open' ); my $logs_menu_item = Glib::IO::MenuItem->new( 'View logs', 'app.view_logs' ); + my $pc_menu_item = Glib::IO::MenuItem->new( 'View pc', 'app.view_pc' ); my $submenu_file = Glib::IO::Menu->new; my $submenu_view = Glib::IO::Menu->new; my $submenu_help = Glib::IO::Menu->new; $submenu_help->append_item($about_menu_item); + $submenu_view->append_item($pc_menu_item); $submenu_view->append_item($logs_menu_item); $submenu_file->append_item($open_menu_item); $submenu_file->append_item($save_menu_item); @@ -311,4 +321,21 @@ sub activate_about { # $about->set_titlebar($header_bar); $about->present; } + +sub activate_view_pc { + my $gtk_window = Gtk4::Window->new; + my $canvas = Gtk4::DrawingArea->new; + $canvas->set_draw_func(sub { + my $canvas = shift; + my $cairo = shift; + my $width = shift; + my $height = shift; + print Data::Dumper::Dumper \%Cairo::; + $cairo->rectangle(0, 0, $width, $height); + $cairo->set_source_rgb(255, 0, 0); + $cairo->fill; + }); + $gtk_window->set_child($canvas); + $gtk_window->present; +} 1;