From 4e15773d3ddbf84a1f3e2f4e3f9642b5bca1daf3 Mon Sep 17 00:00:00 2001 From: sergiotarxz Date: Sat, 9 Mar 2024 17:05:35 +0100 Subject: [PATCH] Change species + dropdown + functional search. --- lib/GEmeTool/Save/Pokemon.pm | 7 +++++-- lib/GEmeTool/View/MainWindow.pm | 4 ---- lib/GEmeTool/View/PokemonPCWindow.pm | 22 +++++++++++++++++++++- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/lib/GEmeTool/Save/Pokemon.pm b/lib/GEmeTool/Save/Pokemon.pm index bc014f1..90fe72e 100644 --- a/lib/GEmeTool/Save/Pokemon.pm +++ b/lib/GEmeTool/Save/Pokemon.pm @@ -14,9 +14,12 @@ has _pokemon => ( is => 'rw', ); sub species { my $self = shift; + my $arg = shift; my $pokemon = $self->_pokemon; - my $substruct_0 = - Rsaves::find_pokemon_substruct( $pokemon->{substructures}, 0 ); + my $substruct_0 = $pokemon->{substructures}[0]; + if (defined $arg) { + $substruct_0->{species} = $arg; + } return $substruct_0->{species}; } diff --git a/lib/GEmeTool/View/MainWindow.pm b/lib/GEmeTool/View/MainWindow.pm index be4f44b..8a3a2b8 100644 --- a/lib/GEmeTool/View/MainWindow.pm +++ b/lib/GEmeTool/View/MainWindow.pm @@ -64,10 +64,6 @@ sub start { sub activate { my $self = shift; my $display = Gdk::Display::get_default(); - my $icon_theme = Gtk4::IconTheme::get_for_display($display); - $icon_theme->set_search_path( - path(__FILE__)->parent->parent->child('resources/icons')->absolute ); - Gtk4::Window::set_default_icon_name('gemetool'); my $menu = Glib::IO::Menu->new; my $about = Glib::IO::SimpleAction->new( 'about', undef ); diff --git a/lib/GEmeTool/View/PokemonPCWindow.pm b/lib/GEmeTool/View/PokemonPCWindow.pm index 580a7da..16bea79 100644 --- a/lib/GEmeTool/View/PokemonPCWindow.pm +++ b/lib/GEmeTool/View/PokemonPCWindow.pm @@ -8,6 +8,7 @@ use utf8; use Cairo::GObject; use Glib; +use Glib::Object::Introspection; use Glib::IO; use Path::Tiny; use Math::Trig; @@ -15,6 +16,8 @@ use Rsaves; use Moo; +use GEmeTool::View::PokemonEditorWindow; + Glib::Object::Introspection->setup( basename => 'Gtk', version => '4.0', @@ -64,7 +67,14 @@ sub start { my $box = $pc->get_box(0); my $headerbar = Gtk4::HeaderBar->new; $headerbar->set_decoration_layout(''); - $headerbar->set_title_widget(Gtk4::Label->new('Pokémon Storage System')); + my $title_grid = Gtk4::Grid->new; + $title_grid->attach(Gtk4::Label->new('Pokémon Storage System'), 0, 0, 12, 1); + my $save_button = Gtk4::Button->new_with_label('Save'); + $save_button->signal_connect(clicked => sub { + $self->_save->get_pc_system->save; + }); + $title_grid->attach($save_button, 0, 1, 2, 1); + $headerbar->set_title_widget($title_grid); $gtk_window->set_titlebar($headerbar); $controller_gesture->set_button(1); $self->_current_box($box); @@ -141,6 +151,16 @@ sub _on_primary_click { my ( $gesture, $n_press, $x, $y ) = @_; return if $self->_check_click_next_prev_box( $gesture, $n_press, $x, $y ); return if $self->_check_click_close_box($gesture, $n_press, $x, $y); + return if $self->_check_selected_pokemon; +} + +sub _check_selected_pokemon { + my $self = shift; + if (defined $self->get_selected_pokemon) { + my $editor = GEmeTool::View::PokemonEditorWindow->new(pokemon => $self->get_selected_pokemon); + $editor->start; + } + return 1; } sub _check_click_close_box {