Pruebas GTK+4
This commit is contained in:
parent
02d78550cf
commit
ae481473f9
73
gtk_prueba.pl
Normal file
73
gtk_prueba.pl
Normal file
@ -0,0 +1,73 @@
|
||||
use 5.30.0;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Glib::Object::Introspection;
|
||||
use Cairo::GObject;
|
||||
use Data::Dumper;
|
||||
|
||||
Glib::Object::Introspection->setup(
|
||||
basename => 'Gtk',
|
||||
version => '4.0',
|
||||
package => 'Gtk4',
|
||||
);
|
||||
|
||||
Glib::Object::Introspection->setup(
|
||||
basename => 'Gio',
|
||||
version => '2.0',
|
||||
package => 'G',
|
||||
);
|
||||
|
||||
Glib::Object::Introspection->setup(
|
||||
basename => 'Gdk',
|
||||
version => '4.0',
|
||||
package => 'Gtk4::Gdk',
|
||||
);
|
||||
|
||||
Glib::Object::Introspection->_register_boxed_synonym(
|
||||
"cairo", "RectangleInt",
|
||||
"gdk_rectangle_get_type"
|
||||
);
|
||||
|
||||
my $application =
|
||||
Gtk4::Application->new( 'me.sergiotarxz.manga', 'G_APPLICATION_FLAGS_NONE' );
|
||||
$application->signal_connect(
|
||||
activate => sub {
|
||||
my $window = Gtk4::ApplicationWindow->new($application);
|
||||
my $grid = Gtk4::Grid->new;
|
||||
$window->set_title('Sergiotarxz\'s Manga Reader');
|
||||
my $scroll = Gtk4::ScrolledWindow->new;
|
||||
$window->set_child($scroll);
|
||||
my $scroll_image = Gtk4::Viewport->new();
|
||||
$scroll->set_child($grid);
|
||||
my $image = Gtk4::Picture->new_for_file(
|
||||
G::File::new_for_path(
|
||||
'/home/sergio/2020-05-06-235314_636x1023_scrot.png')
|
||||
);
|
||||
$image->set_can_shrink(0);
|
||||
$image->set_keep_aspect_ratio(1);
|
||||
$scroll_image->set_child($image);
|
||||
|
||||
$grid->attach( $scroll_image, 1, 1, 1, 1 );
|
||||
$window->signal_connect(
|
||||
'state-flags-changed' => sub {
|
||||
my $allocation = $window->get_allocation;
|
||||
my $paintable = $image->get_paintable;
|
||||
return if grep { !$_ } $allocation->@{ 'width', 'height' };
|
||||
my $new_width = $allocation->{width};
|
||||
my ($old_width, $old_height) = $image->get_allocation->@{ 'width', 'height' };
|
||||
my $new_height = $new_width / $old_width * $old_height;
|
||||
$scroll_image->set_size_request($new_width, $new_height);
|
||||
$grid->set_size_request($new_width, $new_height);
|
||||
$image->set_size_request($new_width, $new_height);
|
||||
print Data::Dumper::Dumper $paintable->compute_concrete_size(
|
||||
$new_width, $new_height, $new_width, $new_height
|
||||
);
|
||||
$window->show;
|
||||
}
|
||||
);
|
||||
$window->show;
|
||||
}
|
||||
);
|
||||
$application->run( \@ARGV );
|
Loading…
Reference in New Issue
Block a user