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