OVH Cloud OVH Cloud

interface texte

3 réponses
Avatar
costaclt
Quelle piste dois-je suivre pour créer une interface texte,
cad fonctionnant sur linux no-X ou une fenêtre Dos, l'interface
devant être très simple (genre fenêtres d'installation de debian),
en perl !

Et donc pas avec un outil C, car je suis trop nul sur ce terrain.

costaclt

3 réponses

Avatar
Scetbon Cyril
tu peux utiliser le module Curses:

http://search.cpan.org/~wps/Curses-1.06/gen/make.Curses.pm

costaclt wrote:
Quelle piste dois-je suivre pour créer une interface texte,
cad fonctionnant sur linux no-X ou une fenêtre Dos, l'interface
devant être très simple (genre fenêtres d'installation de debian),
en perl !

Et donc pas avec un outil C, car je suis trop nul sur ce terrain.

costaclt


Avatar
Freddo
costaclt wrote:
Quelle piste dois-je suivre pour créer une interface texte,
cad fonctionnant sur linux no-X ou une fenêtre Dos, l'interface
devant être très simple (genre fenêtres d'installation de debian) ,
en perl !


Tu peux jeter un oeil a Curses::*
http://search.cpan.org/search?query=Curses&mode=all

Ou mieux a wxWindow, je pense qu'il y a un wxCurses quelque part,
avec l'avantage, bien sur que cela ne fonctionnera pas seulement
en mode texte...
http://www.wxwindows.org/

Voila un example avec Curses::UI que j'avais fait rapidement pour
me faciliter la vie quand je navigue dans l'arborescence de mon
disque.

-- 8< -------------------------- start of mcd.pl
#!/usr/bin/perl

use strict;
use Curses::UI;
use Cwd qw/abs_path cwd realpath/;

my $dir = cwd . "/";

my $cui = new Curses::UI (
-clear_on_exit => 0,
-mouse_support => 0
);

my $win = $cui->add(
'win', 'Window',
);

my $listbox = $win->add(
'mylistbox', 'Listbox',
-border => 1,
-ipad => 1,
-title => $dir,
-titlereverse => 0,
-values => &get_dirs,
-wraparound => 1,
-onchange => &chdir,
-vscrollbar => 1,
);


$cui->set_binding( sub{
open F, ">$ENV{HOME}/.mcd";
print F $dir;
close F;

exit;
}, "cC", "cQ", "Q", "X", "q", "x" );

$cui->MainLoop;

sub chdir {
my $listbox = shift;
my @sel = $listbox->get;

( $dir = &abs_path($dir . "/". $sel[0]) . "/" ) =~ s!/+!/!g;
$listbox->title( $dir );
# $win->title( $sel[0] . " --> $dir" );
$listbox->values(&get_dirs);

}

sub get_dirs {
my @dirs = sort { lc $a <=> lc $b }
grep { -d }
glob ( $dir . ".*"), glob( $dir . "*");

shift @dirs;
map s!^$dir!!, @dirs unless $dir eq "/";

return @dirs;
}

-- 8< -------------------------- end of mcd.pl

et je l'utilise avec un: alias mcd='~/bin/mcd.pl;cd `cat ~/.mcd`'

j'espere que ca t'aide,
freddo

Avatar
laurent
costaclt wrote:

Quelle piste dois-je suivre pour créer une interface texte,
cad fonctionnant sur linux no-X ou une fenêtre Dos, l'interface
devant être très simple (genre fenêtres d'installation de debian),
en perl !



Tu peux jeter un oeil a Curses::*
http://search.cpan.org/search?query=Curses&mode=all

Ou mieux a wxWindow, je pense qu'il y a un wxCurses quelque part,
avec l'avantage, bien sur que cela ne fonctionnera pas seulement
en mode texte...
http://www.wxwindows.org/

Voila un example avec Curses::UI que j'avais fait rapidement pour me
faciliter la vie quand je navigue dans l'arborescence de mon disque.

-- 8< -------------------------- start of mcd.pl
#!/usr/bin/perl

use strict;
use Curses::UI;
use Cwd qw/abs_path cwd realpath/;

my $dir = cwd . "/";

my $cui = new Curses::UI (
-clear_on_exit => 0,
-mouse_support => 0
);

my $win = $cui->add(
'win', 'Window',
);

my $listbox = $win->add(
'mylistbox', 'Listbox',
-border => 1,
-ipad => 1,
-title => $dir,
-titlereverse => 0,
-values => &get_dirs,
-wraparound => 1,
-onchange => &chdir,
-vscrollbar => 1,
);


$cui->set_binding( sub{
open F, ">$ENV{HOME}/.mcd";
print F $dir;
close F;

exit;
}, "cC", "cQ", "Q", "X", "q", "x" );

$cui->MainLoop;

sub chdir {
my $listbox = shift;
my @sel = $listbox->get;

( $dir = &abs_path($dir . "/". $sel[0]) . "/" ) =~ s!/+!/!g;
$listbox->title( $dir );
# $win->title( $sel[0] . " --> $dir" );
$listbox->values(&get_dirs);

}

sub get_dirs {
my @dirs = sort { lc $a <=> lc $b }
grep { -d }
glob ( $dir . ".*"), glob( $dir . "*");

shift @dirs;
map s!^$dir!!, @dirs unless $dir eq "/";

return @dirs;
}

-- 8< -------------------------- end of mcd.pl

et je l'utilise avec un: alias mcd='~/bin/mcd.pl;cd `cat ~/.mcd`'

j'espere que ca t'aide,
fredd
o
Existe t'il de la doc en français ?