summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2009-05-23 16:32:24 +0200
committerdakkar <dakkar@thenautilus.net>2009-05-23 16:32:24 +0200
commit89b5f5a7166e19a80b1e04c6b0bd7947316239b4 (patch)
tree2338d4e0b37f32198ab31559bad57efe6872e629
parentcentro (diff)
downloadGtkPerlFileManager-89b5f5a7166e19a80b1e04c6b0bd7947316239b4.tar.gz
GtkPerlFileManager-89b5f5a7166e19a80b1e04c6b0bd7947316239b4.tar.bz2
GtkPerlFileManager-89b5f5a7166e19a80b1e04c6b0bd7947316239b4.zip
dialog
-rw-r--r--lib/LDFM/DialogController.pm43
-rw-r--r--lib/LDFM/MainController.pm35
-rw-r--r--resources/ldfm-dialog.glade123
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>