diff options
author | dakkar <dakkar@thenautilus.net> | 2009-05-23 16:32:24 +0200 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2009-05-23 16:32:24 +0200 |
commit | 89b5f5a7166e19a80b1e04c6b0bd7947316239b4 (patch) | |
tree | 2338d4e0b37f32198ab31559bad57efe6872e629 | |
parent | centro (diff) | |
download | GtkPerlFileManager-89b5f5a7166e19a80b1e04c6b0bd7947316239b4.tar.gz GtkPerlFileManager-89b5f5a7166e19a80b1e04c6b0bd7947316239b4.tar.bz2 GtkPerlFileManager-89b5f5a7166e19a80b1e04c6b0bd7947316239b4.zip |
dialog
-rw-r--r-- | lib/LDFM/DialogController.pm | 43 | ||||
-rw-r--r-- | lib/LDFM/MainController.pm | 35 | ||||
-rw-r--r-- | resources/ldfm-dialog.glade | 123 |
3 files changed, 199 insertions, 2 deletions
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 @@ +<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*--> +<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd"> + +<glade-interface> + +<widget class="GtkDialog" id="dialog"> + <property name="visible">True</property> + <property name="title" translatable="yes">Domanda</property> + <property name="type">GTK_WINDOW_TOPLEVEL</property> + <property name="window_position">GTK_WIN_POS_NONE</property> + <property name="modal">True</property> + <property name="resizable">True</property> + <property name="destroy_with_parent">False</property> + <property name="decorated">True</property> + <property name="skip_taskbar_hint">False</property> + <property name="skip_pager_hint">False</property> + <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property> + <property name="gravity">GDK_GRAVITY_NORTH_WEST</property> + <property name="has_separator">True</property> + + <child internal-child="vbox"> + <widget class="GtkVBox" id="dialog-box"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child internal-child="action_area"> + <widget class="GtkHButtonBox" id="dialog-action_area1"> + <property name="visible">True</property> + <property name="layout_style">GTK_BUTTONBOX_END</property> + + <child> + <widget class="GtkButton" id="cancelbutton"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-cancel</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-6</property> + </widget> + </child> + + <child> + <widget class="GtkButton" id="okbutton"> + <property name="visible">True</property> + <property name="can_default">True</property> + <property name="can_focus">True</property> + <property name="label">gtk-ok</property> + <property name="use_stock">True</property> + <property name="relief">GTK_RELIEF_NORMAL</property> + <property name="focus_on_click">True</property> + <property name="response_id">-5</property> + </widget> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">GTK_PACK_END</property> + </packing> + </child> + + <child> + <widget class="GtkVBox" id="box"> + <property name="visible">True</property> + <property name="homogeneous">False</property> + <property name="spacing">0</property> + + <child> + <widget class="GtkLabel" id="domanda"> + <property name="visible">True</property> + <property name="label" translatable="yes">domanda</property> + <property name="use_underline">False</property> + <property name="use_markup">False</property> + <property name="justify">GTK_JUSTIFY_LEFT</property> + <property name="wrap">False</property> + <property name="selectable">False</property> + <property name="xalign">0</property> + <property name="yalign">0.5</property> + <property name="xpad">2</property> + <property name="ypad">2</property> + <property name="mnemonic_widget">risposta</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + + <child> + <widget class="GtkEntry" id="risposta"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="editable">True</property> + <property name="visibility">True</property> + <property name="max_length">0</property> + <property name="text" translatable="yes"></property> + <property name="has_frame">True</property> + <property name="invisible_char">*</property> + <property name="activates_default">True</property> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + <packing> + <property name="padding">0</property> + <property name="expand">False</property> + <property name="fill">False</property> + </packing> + </child> + </widget> + </child> +</widget> + +</glade-interface> |