use Tk; use Tk::NoteBook; use Tk::ROText; use IPC::Run ();
package Tk; use File::UserConfig ();
my $cfgdir = File::UserConfig->configdir(); print $cfgdir; package main;
sub StartInstallation;
my $mw = MainWindow->new(); $mw->geometry( "800x600" ); eval { # eval, in case fonts already exist $mw->fontCreate(qw/C_normal -family courier -size 10/); $mw->fontCreate(qw/C_bold -family courier -size 10 -weight bold/); }; my $nb = $mw->NoteBook()->pack( -fill=>'both', -expand=>1 );
my @tabs; push @tabs, $nb->add( "welcome", -label => "Welcome" ); push @tabs, $nb->add( "install", -label => "Install" ); push @tabs, $nb->add( "config", -label => "COnfiguration" );
$tabs[0]->Label( -text=>"Welcome to PAR-Install-PPD-GUI!" )->pack( );
# init install tab my $urientry; my $ppduri = 'http://'; my $resulttext; my $should_wrap = 0; my $verbose = 0; { my $fr = $tabs[1]->Frame()->pack(qw/-side top -fill both/);
my $urifr = $fr->Frame()->pack(qw/-side top -fill x/); $urifr->Label(qw/-text/, "PPD URI: ")->pack(qw/-side left -ipady 10/); $urientry = $urifr->Entry( qw/-width 80 -textvariable/, \$ppduri )->pack(qw/-side left -ipadx 10/); $urifr->Button( qw/-width 20 -text Install -command/, \&StartInstallation )->pack(qw/-side left/); my $resultfr = $fr->Frame()->pack(qw/-side top -fill both/); my $tframe = $resultfr->Frame()->pack(qw/-side top -fill x/); $tframe->Label(qw/-text/, "Results:")->pack(qw/-side left/); $tframe->Checkbutton( qw/-text/, "Wrap Lines", qw/-variable/, \$should_wrap, qw/-command/, \&WrapToggle )->pack(qw/-side left -padx 3/); $tframe->Checkbutton( qw/-text/, "Verbose Output", qw/-variable/, \$verbose, )->pack(qw/-side left -padx 3/); $resulttext = $resultfr->Scrolled( qw/ROText -scrollbars osoe -background white/ )->pack(qw/-side top -fill both -padx 5/); $resulttext->tag(qw/configure output -foreground black -font C_normal/); $resulttext->tag(qw/configure error -foreground red -font C_bold/); WrapOff(); }
# Init Config tab my $parinstallppd = 'parinstallppd'; { my $fr = $tabs[2]->Frame()->pack(qw/-side top -fill both/);
}
MainLoop;
sub StartInstallation { my $uri = $ppduri; my @call = ($parinstallppd, '--uri', $ppduri); push @call, '--verbose' if $verbose; $resulttext->Contents(''); $resulttext->insert('0.0', ''); my $update_out = sub{ $resulttext->insert('insert', join("",@_), 'output'); }; my $update_err = sub{ $resulttext->insert('insert', join("",@_), 'error'); }; IPC::Run::run(\@call, \undef, $update_out, $update_err); }
sub WrapOn { $resulttext->configure( qw/-wrap word/ ); } sub WrapOff { $resulttext->configure( qw/-wrap none/ ); }
sub WrapToggle { if ($should_wrap) { WrapOn() } else { WrapOff() } }
To install PAR::Dist::InstallPPD::GUI, copy and paste the appropriate command in to your terminal.
cpanm
cpanm PAR::Dist::InstallPPD::GUI
CPAN shell
perl -MCPAN -e shell install PAR::Dist::InstallPPD::GUI
For more information on module installation, please visit the detailed CPAN module installation guide.