#!perl
# remd: Mon editeur alEd avec un menu. (ce programme tourne a merveille)    *
# Il accepte les noms de fichiers en arguments et s'utilise depuis le shell         *
# alain adelmar vers: 1.03  Novembre 2002   (fonctionne trop bien)                *
#***********************************************************
$dt = localtime(time);
$fdt = time();

if ($ARGV[0] ne "") {
  if ($ARGV[0] =~ /^\"|\"$/) {
    s/^\"()\"$/$1/;
    $nbase = $1;
    print $nbase;
  }
  
  $filename = $ARGV[0];
  $argv = 1;
  &ouvrir;
}
else {
  print "\nVous auriez pu entrer un nom de fichier comme argument,\npensez y la prochaine fois.\n";
  $argv = 0;
}

	

# les différantes variables ***************
$x = "x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*\n"; 
$bienvenu = "$x$dt\tx*x\n$x\nBienvenu sur l'éditeur aled\n   editeur alain A_d_e_l_m_a_r\nTaper Ctr-D pour sortir\n\n$x\n\n";
$prompt = "Entrer votre choix: (0)nouveau, (1)ouvrir, (2)sauvegarder\n(q)quitter ou (Enter) pour continuez...\n";
# initialisé à
$choix = 0;
$travail = 0;

print "$prompt";
chomp($choix = <STDIN>);

&choix;

sub choix {
  while($choix ne "q") { 
    chop($choix);
    if($choix eq "0")	{
      &nouveau;
      print "$prompt";
      $choix = <STDIN>;
    }
    if($choix eq "1") {
      if ($travail >= 1) {
	&eb_sauve_alors;
      }
      else {
	&ouvrir;
      }
    }
    elsif($choix eq "2"){
      &sauv;
    }
    else {
      if ($travail >= 1) {
	&eb_sauve_alors;
      }
      else {
	&nouveau;
      }
    }
  }
  die "$x\nTchao !!! s'eut été un plaisir\n$x\n";
}


  
sub nouveau {
  print "$bienvenu";
  $travail++;
  
  @contenu = <STDIN>;
  print "n'oublier pas de sauver votre travail qui par defaut sera sauvegarder sur votre repertoire avec pour nom 'edition_date_du_jour.log'\n";
  
  $filetmp = "trav_" . "$fdt" . "\.log";
  open FTMP, ">$filetmp" or die "Ouverture impossible $!";
  print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
  print FTMP @contenu;
  close FTMP or die "fermeture a l'os gros_caca $!";
}

sub ouvrir {
  if ($argv == 0) {
    &lequel($filename);
  }
  if(-e $filename) {
    print "alEd va ouvrir $filename pour vous\n";
  }
  else {
    print "veuillez enrer un nom de fichier correct, (svp)\n";
    $filename = <STDIN>;
    chomp $filename;
  } 
  open FO, "$filename" or die "Ouverture impossible $!";
  @contenu = <FO>;
  $ajout = "\n#== ajout éffectué par alEd le :$dt ==\>\n\n";
  push @contenu, $ajout;
  close FO or die "fermeture impossible $!";

  # voir si il est possible de directement ecrire print <STDOUT> @contenu
  foreach $ligne(@contenu) {
    print $ligne;
 }
  
  print "\n";
  print $bienvenu;
  @nwcontenu = <STDIN>;
  if ($argv == 1) {
    print "voulez vous sauver l\'ensemble du travail sur le fichier d\'origine $filename :\[Oui-Non]?\n";
    chomp($respond = <STDIN>);
    if($respond =~ /^o|oui/i) {
      push @contenu, @nwcontenu;
      open FO, ">$filename" or die "Ouverture impossible $!";
      print FO @contenu;
      close FO or die "fermeture impossible $!";
      print "$prompt";
      chomp($choix = <STDIN>);
      &choix;
    }
    else {
      print "n'oublier pas de sauver votre travail\nqui par defaut sera sauvegarder\nsur votre repertoire avec pour nom:\n'edition_date_du_jour.log'\n";
      $filetmp = "trav_" . "$fdt" . "\.log";
      
      push @contenu, "@nwcontenu";
      open FTMP, ">$filetmp" or die "Ouverture impossible $!";
      print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
      print FTMP @contenu;
      close FTMP or die "fermeture a l'os gros_caca $!";
      $travail++;
      print "$prompt";
      chomp($choix = <STDIN>);
    }
  }
}

sub sauv {
  system (clear); 
  print "\nentrez le nom de votre travail\n";
  
  print "\n" . @contenu . "\nPour ce travail\nnom du fichier:\t";
  $filename = <STDIN>;
  chomp $filename;
  # controler si un fichier n'a pas le meme nom
  if (-e $filename) {
    ($file, $ext)= split(/./, $filename);
    $new_filename = "$file" . "_$fdt" . "\.$ext";
    print "Votre travail sera sauvegarder sous $new_filename\n";
    open(F, ">$new_filename") or die "Ouverture impossible $!";
    print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
    print F @contenu;
    close F || die "fermeture impossible $!";
    $travail--;
    print "$prompt";
    $choix = <STDIN>;
  }
  else {
    print "Votre travail sera sauvegarder sous $new_filename\n";
    open(F, ">$filename") or die "Ouverture impossible $!";
    print F "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
    print F @contenu;
    close F || die "fermeture impossible $!";
    $travail--;
  }
}

sub lequel($filename) {
  print "Quel fichier desirez vous ouvrir:\n";
  $filename = <STDIN>;
  chomp $filename;
}

sub eb_sauve_alors {
  print "Sauvegarder votre travail d'abord\n";
  &sauv;
}

 # Ce petit programme est une petite merveille 
 # alain Adelmar, 14 Aout 2001, rectifier Nov 2002 a.adelmar@wanadoo.fr 

system (clear); 
 # remet une page blanche au shell.

END;
