Newsgroup: it.comp.lang.perl
Titolo: Curses::UI

ho provato ad usare i moduli Curses e Curses::UI per interfacciare script 
perl con le librerie ncurses su una slack8.0
La cosa strana e' che nonostante tutta l'installazione (test compresi) 
funzioni a meraviglia, al momento di usare le librerie ricevo questo mess:
\\
Can't locate object method "ontop" via package "Curses::UI" (perhaps you 
forgot to load "Curses::UI"?) at 
ftp_monitor.pl
 line 65.
//
Lo stesso errore mi viene se per esempio uso la parola chiave "returnkey" 
con Curses::UI::Window, ho pensato che l'utente che uso non avesse i 
permessi per accedere alla dir dei moduli, ma anche con root nulla. Ho 
provato a prendere uno degli examples e quello funzionava, solo che li' 
"ontop" e "returnkey" non li usa, eppure io ho solo provato a compilare il 
codice del tutorial compreso in Curses(3), non me li sono mica inventati :)
Io continuo a cercare (nonostante l'ora) ma la soluzione mi sembra lontana..
qualche indicazione (un bel man sarebbe gradito :) )
Grazie
Giulio
-- 
PGP Key fingerprint = 1A94 043F 1946 7AA9 CB2E  D5ED F83D 2083 25B4 2E27

 qualche indicazione (un bel man sarebbe gradito :) )
Beh, per i "manpage" dei moduli Perl, da shell puoi dare un
perldoc nomemodulo
Qui ad esempio dovrebbe andare
perldoc Curses::UI
perldoc Curses
in genere per info su perldoc:
perldoc perldoc
-- 
$_=q,6;-16;-1;-8;0;7;-13;-12;-9;-3;13#4A75737420616E6F74686572,,($_,$b)=
split?#?;@b=split?;?;map{$c.=$_,$d.=chr$b[$e++]+ord}split??,pack'H24',$b
;chop$d,print$c.chr(32).$d

 
ecco qua il codice (al quale ho tolto molte cose opzionali, che rimettero' 
solo quando l'errore sara' risolto):
---------
#!/usr/bin/perl -w
use strict;
use Curses::UI;
my $cui = new Curses::UI;
my $win1 = $cui->add(
        'win1','Window',
        -border => 1,
        -title => 'Menu',
        -pad => 2
);
---------
fatto questo ho aggiunto un bottone a win1
e poi ho usato questo comando (sia chiaro, e' tutto scopiazzato dal man di 
Curses::UI)
---------
$win1->returnkeys("\cN", "\cQ");
---------
qui mi da' l'errore che ho postato prima.
La cosa strana e' che mi dice che forse non ho loadato Curses::UI::Window, 
ma io ho direttamente loadato Curses::UI, il quale carica anche 
Curses::UI::Window...o forse non ho capito niente del perl?
Giulio
PS il codice continua con un loop che chiude tutto non appena viene 
clikkato il bottone in win1, ma non credo l'errore sia li'.


 qui mi da' l'errore che ho postato prima.
Sembra proprio che ci sia un problema nella documentazione del modulo!
Il metodo "returnkeys" NON c'č proprio nel package!!!
Se guardi nella cartella examples, trovi un altro metodo per
"bindare" la pressione di tasti, ad esempio:
$cui->set_binding(\&exit_window, "\cQ", "\cC");
Per cui un esempio funzionante č:
#!/usr/bin/perl
use strict;
use Curses::UI;
my $cui = new Curses::UI;
my $win1 = $cui->add(
        'win1', 'Window',
        -border => 1,
        -title => 'Finestra Curses::UI',
        -pad => 2,
);
my $but1 = $win1->add(
        'buttons', 'Buttonbox',
        -x => 2,
        -y => 4,
        -buttons => [
                { -label => '< Premimi >',
                   -value => 'premimi',
                   -onpress => sub {$cui->dialog("Ciao!")}
                },
                { -label => '< Esci >',
                -value => 'esci',
                -onpress => \&exit_window
                },
	     ],
        );
$cui->set_binding(\&exit_window, "\cQ", "\cC");
$cui->mainloop;
sub exit_window {
        exit;


 
Grazie,
Giulio


 
mi ha risposto, a quanto pare nel README era segnato che la documentazione 
non era molto aggiornata (appunto), ma che presto uscira' la 0.8 in ogni 
caso...
