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});
$self->simplify_list('left');
$self->simplify_list('right');
$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;