Tk-Mirror
view release on metacpan or search on metacpan
lib/Tk/Mirror.pm view on Meta::CPAN
# create-soft@tiscali.de
# All rights reserved!
#-------------------------------------------------
package Tk::Mirror;
#-------------------------------------------------
use strict;
use Tk::Frame;
use Net::UploadMirror 0.13;
use Net::DownloadMirror 0.10;
use Storable;
#-------------------------------------------------
@Tk::Mirror::ISA = qw(Tk::Frame);
$Tk::Mirror::VERSION = '0.06';
#-------------------------------------------------
Construct Tk::Widget 'Mirror';
#-------------------------------------------------
sub Populate
{
require Tk::Label;
require Tk::Entry;
require Tk::BrowseEntry;
require Tk::Tree;
require Tk::Button;
require Tk::Dialog;
my ($m, $args) = @_;
#-------------------------------------------------
if(-f 'para')
{
$m->{para} = retrieve('para');
}
else
{
$m->{para} = {};
}
for(qw/ -localdir
-remotedir
-ftpserver
-user
-pass
-debug
-timeout
-delete
-connection
-exclusions
-subset
-filename
/)
{
$m->{para}{substr($_, 1)} = delete($args->{$_}) if(defined($args->{$_}));
}
$m->{upload} = Net::UploadMirror->new(%{$m->{para}});
$m->{download} = Net::DownloadMirror->new(%{$m->{para}});
$m->{overwrite} = defined($args->{-overwrite}) ? delete($args->{-overwrite}) : 'none';
$m->SUPER::Populate($args);
#-------------------------------------------------
my $label_user = $m->Label(
-text => 'Username ->',
)->grid(
-row => 0,
-column => 0,
-columnspan => 3,
-sticky => 'nswe',
);
#-------------------------------------------------
$m->{bentry_user} = $m->BrowseEntry(
-variable => \$m->{para}{user},
-browsecmd => [\&UpdateAccess, $m, 'user'],
)->grid(
-row => 0,
-column => 3,
-columnspan => 3,
-sticky => 'nswe',
);
#-------------------------------------------------
my $label_ftpserver = $m->Label(
-text => 'FTP-Server ->',
)->grid(
-row => 1,
-column => 0,
-columnspan => 3,
-sticky => 'nswe',
);
#-------------------------------------------------
$m->{bentry_ftpserver} = $m->BrowseEntry(
-variable => \$m->{para}{ftpserver},
-browsecmd => [\&UpdateAccess, $m, 'ftpserver'],
)->grid(
-row => 1,
-column => 3,
-columnspan => 3,
-sticky => 'nsew',
);
#-------------------------------------------------
my $label_pass = $m->Label(
-text => 'Password ->',
)->grid(
-row => 2,
-column => 0,
-columnspan => 3,
-sticky => 'nsew',
);
#-------------------------------------------------
$m->{entry_pass} = $m->Entry(
-textvariable => \$m->{para}{pass},
-show => '*',
)->grid(
-row => 2,
-column => 3,
-columnspan => 3,
-sticky => 'nsew',
);
#-------------------------------------------------
my $label_local_dir = $m->Label(
-text => 'Localdirectory',
)->grid(
-row => 3,
-column => 0,
-columnspan => 3,
-sticky => 'nswe',
);
#-------------------------------------------------
my $label_remote_dir = $m->Label(
-text => 'Remotedirectory',
)->grid(
-row => 3,
-column => 3,
-columnspan => 3,
-sticky => 'nswe',
);
#-------------------------------------------------
$m->{bentry_local_dir} = $m->BrowseEntry(
-variable => \$m->{para}{localdir},
-browsecmd => [\&UpdateAccess, $m, 'localdir'],
)->grid(
-row => 4,
-column => 0,
-columnspan => 3,
-sticky => 'nswe',
);
#-------------------------------------------------
$m->{bentry_remote_dir} = $m->BrowseEntry(
-variable => \$m->{para}{remotedir},
-browsecmd => [\&UpdateAccess, $m, 'remotedir'],
)->grid(
-row => 4,
-column => 3,
-columnspan => 3,
-sticky => 'nswe',
);
#-------------------------------------------------
$m->{tree_local_dir} = $m->Scrolled(
"Tree",
-separator => '/',
-itemtype => 'text',
-selectmode => 'single',
)->grid(
-row => 5,
-column => 0,
-columnspan => 3,
-sticky => 'nswe',
);
#-------------------------------------------------
$m->{tree_remote_dir} = $m->Scrolled(
"Tree",
-separator => '/',
-itemtype => 'text',
-selectmode => 'single'
)->grid(
-row => 5,
-column => 3,
-columnspan => 3,
-sticky => 'nswe'
);
#-------------------------------------------------
$m->{label_overwrite} = $m->Label(
-text => 'overwrite'
)->grid(
-row => 6,
-column => 0,
-columnspan => 2,
-sticky => 'nswe'
);
#------------------------------------------------
$m->{rbutton_none} = $m->Radiobutton(
-text => 'none',
-variable => \$m->{overwrite},
-value => 'none'
)->grid(
-row => 6,
-column => 2,
-sticky => 'nswe'
);
#-------------------------------------------------
$m->{rbutton_all} = $m->Radiobutton(
-text => 'all',
-variable => \$m->{overwrite},
-value => 'all',
)->grid(
-row => 6,
-column => 3,
-sticky => 'nwes'
);
#-------------------------------------------------
$m->{rbutton_older} = $m->Radiobutton(
-text => 'older',
-variable => \$m->{overwrite},
-value => 'older'
)->grid(
-row => 6,
-column => 4,
-sticky => 'nswe'
);
#-------------------------------------------------
$m->{button_upload} = $m->Button(
-text => 'Upload ->',
-command => [\&Upload, $m],
-state => 'disabled'
)->grid(
-row => 7,
-column => 0,
-columnspan => 2,
-sticky => 'nswe',
);
#-------------------------------------------------
$m->{button_compare} = $m->Button(
-text => 'Compare',
-command => [\&CompareDirectories, $m],
)->grid(
-row => 7,
-column => 2,
-columnspan => 2,
-sticky => 'nsew',
);
#-------------------------------------------------
$m->{button_download} = $m->Button(
-text => '<- Download',
-command => [\&Download, $m],
-state => 'disabled',
)->grid(
-row => 7,
-column => 4,
-columnspan => 2,
-sticky => 'nswe',
);
#-------------------------------------------------
$m->{childs} = {
'LabelUser' => $label_user,
'bEntryUser' => $m->{bentry_user},
'LabelFtpServer' => $label_ftpserver,
'bEntryFtpServer' => $m->{bentry_ftpserver},
'LabelPass' => $label_pass,
'EntryPass' => $m->{entry_pass},
'LabelLocalDir' => $label_local_dir,
'LabelRemoteDir' => $label_remote_dir,
'bEntryLocalDir' => $m->{bentry_local_dir},
'bEntryRemoteDir' => $m->{bentry_remote_dir},
'TreeLocalDir' => $m->{tree_local_dir},
'TreeRemoteDir' => $m->{tree_remote_dir},
'LabelOverwrite' => $m->{label_overwrite},
'rButtonNone' => $m->{rbutton_none},
'rButtonAll' => $m->{rbutton_all},
'rButtonOlder' => $m->{rbutton_older},
'ButtonUpload' => $m->{button_upload},
'ButtonCompare' => $m->{button_compare},
'ButtonDownload' => $m->{button_download},
};
$m->Advertise($_ => $m->{childs}{$_}) for(keys(%{$m->{childs}}));
$m->Delegates(
DEFAULT => $m->{tree_local_dir},
);
$m->InsertStoredValues();
}
#-------------------------------------------------
sub DESTROY
{
my ($self) = @_;
print($self || ref($self) . "object destroyed\n") if($self->{_debug});
}
#-------------------------------------------------
sub GetChilds
{
return $_[0]->{childs};
}
#-------------------------------------------------
sub SetParams
{
my ($self) = @_;
unless(-d $self->{para}{localdir})
{
$self->Dialog(
-text => "Localdirectory $self->{para}{localdir} not found",
-title => 'INPUT-ERROR'
)->Show();
return;
}
for(qw/user ftpserver pass remotedir/)
{
unless($self->{para}{$_})
{
$self->Dialog(
-text => "parameter: $_ undefined",
-title => 'INPUT-ERROR'
( run in 0.477 second using v1.01-cache-2.11-cpan-39bf76dae61 )