Newsgroup: it.comp.lang.perl
Titolo: creare GUI

qual è il sistema più facile per creare una finistra
per eseguiere i miei script (WHS o perl...). Per esempio:
schiaccio un tasto ed eseguie prova()... ecc...


Ciao ;)
Visto che sei su Win32, la maniera più semplice per fare GUI è 
utilizzare il modulo Win32::GUI
Per installarlo, da prompt di dos (e connesso ad internet) basta che tu 
scriva:
ppm install win32-gui
Per la documentazione, puoi trovarla su 
http://dada.perl.it/#gui
(dove c'è il modulo nella versione più aggiornata rispetto a quello che 
trovi con ppm e altro ancora)
A questo punto uno script di esempio lo trovi qui di seguito:
use strict;
use Win32::GUI;
my $win = new Win32::GUI::Window(
     -name   => "Window",
     -text   => "Esegui comando",
     -width  => 350,
     -height => 300,
);
my $Button=$win->AddButton (
   -name => "Button",
   -text => " Esegui ",
   -left => 140,
   -top => 110,
   -width => 70,
   -height => 22,
);
$win->Show();
Win32::GUI::Dialog();
sub Button_Click {
	Win32::GUI::MessageBox($win,"Comando eseguito","Notifica",64);
}
sub Window_Terminate {
	return -1
}

caspita è bellissimo!
e mi sembra nemmeno molto difficile capire il linguaggio.
Grazie!!!
E' possibile fare in modo che la finestra di dos si chiuda dopo aver avviato
l'interfaccia?
E' possibile, immagino creare dei pacchetti per una installazione in un
compiuter con relativo interprete perl?
immagino di sì e anche che dovro leggermi la documentazione... ma ancora un
aiutino per incorraggairmi    -.... grazie!

 compiuter con relativo interprete perl?
Intendi degli exe senza bisogno di installare il Perl ActiveState?
Certo, leggiti questo thread:
http://groups.google.com/groups?dq=&hl=it&lr=&ie=UTF-8&threadm=oRuca.14432%24Lr4.432379%40twister2.libero.it&prev=/groups%3Fhl%3Dit%26lr%3D%26ie%3DUTF-8%26group%3Dit.comp.lang.perl
 
Io personalmente impacchetto con perl2exe (quando uso Win32::GUI) e poi 
infarcisco il tutto con un bel setup creato con innosetup:
http://www.jrsoftware.org/isinfo.php
(con perl2exe e perlapp non ti serve alcun sistema per far sparire la 
console ma ti basta usare le opzioni -gui e --gui rispettivamente)

come devo fare per esempio per compilare il tuo esempio con perlcc? Ho
provato ma l'eseguibile apre e chiude una console di dos senza proporre la
tua finestra...

 come devo fare per esempio per compilare il tuo esempio con perlcc?
Mi spiace, ma come ho scritto nel thread di cui ho postato il link, 
perlcc non l'ho mai usato.
Se non vuoi spendere con perl2exe o perlapp io ti consiglio PAR (ma non 
sono riuscito a far sparire la console, almeno con la 0.65). E' semplice 
da installare: lo scarichi da CPAN 
(
http://search.cpan.org/author/AUTRIJUS/PAR/
) e dopo il solito
perl Makefile.PL
cercherà di installarlo automaticamente (rimani connesso ad internet. 
Per le domande che ti saranno poste, dai sempre invio ;) ).
C'è anche l'ottimo App::Packer di cui trovi già un ppd + pacchetto su:
http://wwwstud.dsi.unive.it/~mbarbon/p2e/
dunque:
PPM> set repository = 
http://wwwstud.dsi.unive.it/~mbarbon/p2e/
PPM> install app-packer

PAR l'ho installato ma non riesco a compilare ... ho letto l'help... ma non
capisco. Ho scaricato il tuo perl2exe e con questo tutto funziona alla
grande ora lo crac.. compro.
Facciamo un esempio. Se voglio creare una interfaccia grafica allo stesso
perl2exe per fare in modo che mi permetta di esplorare il mio filesystem per
cercare il "
file.pl
" da compilare, magari possa scegliere l'opzione -gui ...
e poi eseguire...
Come si farebbe?
forse ti chiedo troppo?


Come? Una GUI che ti permetta di esplorare i file .pl e di convertirli 
grazie a perl2exe in un eseguibile?
Comunque, questo script:
use strict;
use Win32::GUI;
my $file = GUI::GetOpenFileName(
     -title  => "Seleziona",
     -filter => [
        	"File Perl (*.pl)" => "*.pl",
        	"Tutti i file", "*.*",
   		],
);
# hint: system("perl2exe -gui $file");
print $file,$/;
lo salvi in un file che chiami 
gui.pl
da dos scrivi:
pp 
gui.pl
ti ritroverai a.exe, eseguibile fatto con par.
Ci clicchi sopra e funziona.
Con perl2exe fai:
perl2exe -gui 
gui.pl
ottieni gui.exe che fa la stessa cosa di quello fatto con PAR.

con perl2exe funziona e ho imparato anche ad aggiungere una icona
bellissimo, ma se compilo con pp di PAR, come dice ottengo il file a.exe che
però lancaindolo si apre e si chiude la finestra dos senza ottenre un bel
niente. Dove sbaglio?

ancora un problema:
lo script 
gui.pl
 esegue la prima parte, cioč l'apertura di un esplora
risorse per scegliere lo script perl, ma poi non esegue la compilazione. Ho
provato a togliere il cancelletto, che credo sia un commento... niente lo
stesso...

 stesso...
devi mettere il path assoluto di perl2exe:
c:/windows/desktop/tuopath/perl2exe ecc ecc
ma scusa... non sai nemmeno che in perl per i commenti si usa il # ??

confesso che sto andando un po' alla cieca, per me il perl
č quasi sconosciuto. Conosco un po' di javascript.
ora ho corretto lo script cosě:
use strict;
use Win32::GUI;
my $file = GUI::GetOpenFileName(
     -title  => "Seleziona",
     -filter => [
        "File Perl (*.pl)" => "*.pl",
        "Tutti i file", "*.*",
   ],
);
hint: system("c:\perl2exe\perl2exe -gui $file");
print $file,$/;
ma non funziona lo stesso (cioč la generazione di "<miofile>.exe")

 ma non funziona lo stesso (cioè la generazione di "<miofile>.exe")
prova:
system("c:\\perl2exe\\perl2exe -gui $file");
senza hint e con le \\ (oppure le / come ho scritto io)

se davvero molto paziente a insistere con un ignorante come me
... ma ancora non funziona.
ti ringrazio comunque.
Ora mi metto sotto a studiare il perl... poi magari ci arrivo da solo.
Comunque non credo che sia una cosa stupida creare una
interfaccia grafia per perl2exe... č strano che chi ha creato il
programma (che costa pure piů di 100 dollari) non ci abbia
pensato!
ciao

 ... ma ancora non funziona.
scusa tu, l'istruzione da dare è:


questa volta funziona!!
ma... il file eseguibile che ottengo non si comporta nel modo giusto. il
file in questione era il tuo vecchio.. quello che apriva una finestra...
se proprio vuoi arrivare fino in fondo...
attualmente lo script è così:
use strict;
use Win32::GUI;
my $file = GUI::GetOpenFileName(
     -title  => "Seleziona",
     -filter => [
        "File Perl (*.pl)" => "*.pl",
        "Tutti i file", "*.*",
   ],
);
system("c:\\perl2exe\\perl2exe -gui \"$file\"");
print $file,$/;
sicuramente l'errore sarà nell'ultima linea...

 sicuramente l'errore sarà nell'ultima linea...
perché non provi? :)
L'ultima riga era solo un esempio per farti capire il funzionamento :)
Stampa semplicemente il nome del file a video, seguito da un \n
In effetti però ho notato che non va... prova questo:
use strict;
use Win32::GUI;
my $file = GUI::GetOpenFileName(
     -title  => "Seleziona",
     -filter => [
        	"File Perl (*.pl)" => "*.pl",
        	"Tutti i file", "*.*",
   		],
);
system("c:\\perl2exe\\perl2exe -gui \"$file\"");
exit;

se continiuamo cosě si fa l'alba e domani devo andare a lovorare. purtroppo
non funziona ancora (l'eseguibile che ottengo non fa la stessa cosa del suo
script.pl
).
Se anche mi rispondi io non ci sarň piů.. saro a nanna.
Ti risponderň domani...
buona notte...
un'ultima cosa.
spiegami questo: come richiamo un altro script all'interno, uno script per
esempio javascript ... esterno?
A domani, Andrea