From 89b5f5a7166e19a80b1e04c6b0bd7947316239b4 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 23 May 2009 16:32:24 +0200 Subject: dialog --- lib/LDFM/DialogController.pm | 43 +++++++++++++++ lib/LDFM/MainController.pm | 35 +++++++++++- resources/ldfm-dialog.glade | 123 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 199 insertions(+), 2 deletions(-) create mode 100644 lib/LDFM/DialogController.pm create mode 100644 resources/ldfm-dialog.glade diff --git a/lib/LDFM/DialogController.pm b/lib/LDFM/DialogController.pm new file mode 100644 index 0000000..7cd7807 --- /dev/null +++ b/lib/LDFM/DialogController.pm @@ -0,0 +1,43 @@ +package LDFM::DialogController; +use utf8; +use warnings; +use strict; +use base 'Gtk2::GladeXML::Simple'; +use Path::Class; + +our $VERSION = '0.01'; + +sub new { + my ($class,%params)=@_; + + my $glade_file=dir($params{glade_dir})->file('ldfm-dialog.glade'); + my $self=$class->SUPER::new($glade_file); + + $self->{domanda}->set_text($params{domanda}); + + $self->{risposta}->set_text($params{risposta}||''); + + return $self; +} + +sub run { + my ($self)=@_; + + $self->{dialog}->set_default_response('ok'); + + my $response=$self->{dialog}->run(); + + if ($response eq 'ok') { + my $data=$self->{risposta}->get_text(); + $self->{dialog}->destroy(); + + return $data; + } + else { + $self->{dialog}->destroy(); + + return; + } +} + +1; diff --git a/lib/LDFM/MainController.pm b/lib/LDFM/MainController.pm index 9f7a16c..19f7cbe 100644 --- a/lib/LDFM/MainController.pm +++ b/lib/LDFM/MainController.pm @@ -4,6 +4,7 @@ use warnings; use strict; use base 'Gtk2::GladeXML::Simple'; use Gtk2::Ex::Simple::List; +use LDFM::DialogController; use Readonly; use Path::Class; @@ -15,6 +16,8 @@ sub new { my $glade_file=dir($params{glade_dir})->file('ldfm-main.glade'); my $self=$class->SUPER::new($glade_file); + $self->{glade_dir}=$params{glade_dir}; + # cambio le liste con qualcosa di piĆ¹ comodo $self->simplify_list('left'); $self->simplify_list('right'); @@ -153,7 +156,15 @@ sub mkdir { my $side=$self->get_selected_side(); my $path=$self->{"cur_${side}_path"}; - warn "Creerei una dir in $path\n"; + my $dialog=LDFM::DialogController->new( + glade_dir => $self->{glade_dir}, + domanda => "Nuova directory in $path:", + ); + my $response=$dialog->run(); + + if ($response) { + warn "Creerei la dir $response in $path\n"; + } return; } @@ -162,6 +173,18 @@ sub delete { my ($self)=@_; my @files=$self->get_selected_files(); + my $num_files=scalar @files; + + my $dialog=Gtk2::MessageDialog->new( + $self->{main_window}, + 'modal', + 'warning', + 'yes-no', + "Cancellare veramente i $num_files file?", + ); + my $response=$dialog->run(); + $dialog->destroy(); + return unless $response eq 'yes'; for my $file (@files) { if (-d $file) { @@ -181,7 +204,15 @@ sub rename { my @files=$self->get_selected_files(); if (@files==1) { - warn "Rinominerei $files[0]\n"; + my $dialog=LDFM::DialogController->new( + glade_dir => $self->{glade_dir}, + domanda => "Rinomino $files[0] in:", + ); + my $response=$dialog->run(); + + if ($response) { + warn "Rinominerei $files[0] in $response\n"; + } } else { warn "Troppa roba selezionata\n"; diff --git a/resources/ldfm-dialog.glade b/resources/ldfm-dialog.glade new file mode 100644 index 0000000..96b98b7 --- /dev/null +++ b/resources/ldfm-dialog.glade @@ -0,0 +1,123 @@ + + + + + + + True + Domanda + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + True + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_DIALOG + GDK_GRAVITY_NORTH_WEST + True + + + + True + False + 0 + + + + True + GTK_BUTTONBOX_END + + + + True + True + True + gtk-cancel + True + GTK_RELIEF_NORMAL + True + -6 + + + + + + True + True + True + gtk-ok + True + GTK_RELIEF_NORMAL + True + -5 + + + + + 0 + False + True + GTK_PACK_END + + + + + + True + False + 0 + + + + True + domanda + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 2 + 2 + risposta + + + 0 + False + False + + + + + + True + True + True + True + 0 + + True + * + True + + + 0 + False + False + + + + + 0 + False + False + + + + + + + -- cgit v1.2.3