diff --git a/lib/MangaReader/GObject.pm b/lib/MangaReader/GObject.pm new file mode 100644 index 0000000..c377db9 --- /dev/null +++ b/lib/MangaReader/GObject.pm @@ -0,0 +1,32 @@ +package MangaReader::GObject; + +use v5.30.0; +use strict; +use warnings; + +use Glib::Object::Introspection; +use Cairo::GObject; + + 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" + ); +1 diff --git a/lib/MangaReader/View/Generator.pm b/lib/MangaReader/View/Generator.pm new file mode 100644 index 0000000..8079876 --- /dev/null +++ b/lib/MangaReader/View/Generator.pm @@ -0,0 +1,23 @@ +package MangaReader::View::Generator; + +use v5.30.0; + +use strict; +use warnings; + +sub new { + my $class = shift; + die "$class is abstract" if $class eq __PACKAGE__; + my $self = bless {}, $class; + my $definition = $self->Definition; + my $builder = + Gtk4::Builder->new_from_string( $definition, length $definition ); + $self->{builder} = $builder; + return $self; +} + +sub Builder { + my $self = shift; + return $self->{builder}; +} +1; diff --git a/lib/MangaReader/View/Generator/MainMenuGenerator.pm b/lib/MangaReader/View/Generator/MainMenuGenerator.pm new file mode 100644 index 0000000..903a078 --- /dev/null +++ b/lib/MangaReader/View/Generator/MainMenuGenerator.pm @@ -0,0 +1,43 @@ +package MangaReader::View::Generator::MainMenuGenerator; + +use v5.30.0; + +use parent 'MangaReader::View::Generator'; + +use strict; +use warnings; + +use Mojo::Template; + +sub Definition { + my $mojo_template = Mojo::Template->new; + $mojo_template->auto_escape(1); + return $mojo_template->render(<< 'EOF'); + + + true + + + <%= 'mangafox.fun' %> + true + + 0 + 0 + + + + + + true + Download + + 0 + 1 + + + + + +EOF +} +1