package LDFM::MainController; use utf8; use warnings; use strict; use base 'Gtk2::GladeXML::Simple'; use Gtk2::Ex::Simple::List; use Readonly; use Path::Class; our $VERSION = '0.01'; sub new { my ($class,%params)=@_; my $self=$class->SUPER::new($params{glade_file}); # cambio le liste con qualcosa di piĆ¹ comodo $self->simplify_list('left'); $self->simplify_list('right'); # imposto i path $self->update_list_with_path('left',$ENV{HOME}); $self->update_list_with_path('right','/'); return $self; } sub simplify_list { my ($self,$side)=@_; my $list_name="${side}_list"; $self->{$list_name}=Gtk2::Ex::Simple::List->new_from_treeview( $self->{$list_name}, 'File' => 'text', 'Type' => 'text', 'Size' => 'int', ); $self->{"${side}_data"}=$self->{$list_name}->{data}; return; } sub update_list_with_path { my ($self,$side,$path)=@_; my $curpath=dir($path)->absolute; $self->{"cur_${side}_path"}=$curpath; $self->{"${side}_path"}->set_text($curpath->stringify); my @dir_list=(); for my $item ($curpath->children(all=>1)) { my @row=($item->relative($curpath)->stringify); if ($item->isa('Class::Path::Dir')) { push @row,'DIR',0; } else { push @row,'FILE',-s $item; } push @dir_list,[@row]; } @{$self->{"${side}_data"}}=@dir_list; } sub quit { Gtk2->main_quit; } 1;