Adding initial support for cairo.

This commit is contained in:
sergiotarxz 2024-03-05 21:10:24 +01:00
parent 77945ee127
commit 3ab70cefe5
2 changed files with 28 additions and 0 deletions

View File

@ -16,6 +16,7 @@ my $build = Module::Build->new(
'DBI' => 0,
'Moo' => 0,
'namespace::clean' => 0,
'Cairo::GObject' => 0,
'UUID::URandom' => 0,
},
);

View File

@ -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;