Foros del Web » Programación para mayores de 30 ;) » Programación General »

Ayuda en Perl

Estas en el tema de Ayuda en Perl en el foro de Programación General en Foros del Web. Hola a todos, soy nuevita aquí y este es mi primer post, ojala me respondan ^^. Verán, estoy haciendo un programa en Perl/Tk y necesito ...
  #1 (permalink)  
Antiguo 25/07/2007, 12:24
Avatar de asuka_asakura  
Fecha de Ingreso: julio-2007
Mensajes: 3
Antigüedad: 17 años, 4 meses
Puntos: 0
Ayuda en Perl

Hola a todos, soy nuevita aquí y este es mi primer post, ojala me respondan ^^.

Verán, estoy haciendo un programa en Perl/Tk y necesito bolquear, anular u ocultar el botón de cerrar de la ventana de mi programa, ya que si la ventana se cierra, el programa no cumple su funcion XD ; a todo esto, la funcion de mi programa es filtrar extenciones al momento de subirlas a cierto programa. El problema es que si se cierra la ventana esta funcion no se cumple y no filtra las extenciones que no deberian subirse, por eso necesito eliminar el boton de cerrar la ventana o desactivarlo.

Aqui va mi codigo::

Código:
#C:\Perl\bin\perl5.8.8.exe D:\Harvest\UDPs\FiltraExtensionesVentana.pl ["file"]

use Tk; 
use strict;

my @files=@ARGV[0 .. $#ARGV];

my @errores = Valida(@files);


if ($errores[0]==1){
my $vu_win = MainWindow->new();
$vu_win->configure(-title => "ERROR");
$vu_win->Label(-text => "Error: Los siguientes archivos no pueden ser ingresados. \n Por favor eliminelos del Checkin y realice la operacion nuevamente \n ")->pack(-side => 'top');

my $frame = $vu_win->Frame(-background =>'white')->pack(-side =>'top');
my $scroll = $frame->Scrollbar();
$scroll->pack(-side => 'right', -fill => 'y');
my $display = $frame->Text(-background => 'grey', -height => '15', -width => '60', -yscrollcommand => ['set', $scroll])->pack(-expand => '1', -fill => 'both');
$display->insert('end', "$errores[1]");
$scroll->configure(-command => ['yview', $display]);

#aqui va mi super intento, si no funciona, ya no es mi culpa, la lore me dijo que lo hiciera jajajajaja

#ese fue el aporte *o*

my $bottom=$vu_win->Frame(-background =>'white')->pack(-side =>'bottom');
my $button = $bottom->Button(-text => 'Aceptar', -command => sub{exit 1;}); 
$button->pack(-side => 'left');

MainLoop;

}else{
  exit
}


sub Valida{
  my @file= @_;
  my @nopermitidos="";
  my $ex;my $arc;my $Sta;my $error;
  
  $error=2;
  foreach $arc (@file)
  {
    $ex = $arc;
    $Sta = index($ex,"\\") + 2;
    $ex = substr($arc,$Sta);
    $ex =~ tr/A-Z/a-z/;
    if (( $ex !~ /\.doc/ ) & ( $ex !~ /\.txt/ ))
    {
      $error=1;
      @nopermitidos="@nopermitidos $ex \n";
    }
  }
  
      
return $error, @nopermitidos;
}

Ojala puedan darme una solucion, de ante mano, muchas gracias.

Atte.
Asukita

Última edición por asuka_asakura; 25/07/2007 a las 12:27 Razón: mala ortografia XD
  #2 (permalink)  
Antiguo 22/09/2007, 17:52
 
Fecha de Ingreso: septiembre-2007
Mensajes: 52
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Ayuda en Perl

No creo que la solución esté en intervenir el gestor de ventanas, tratando de bloquear el ícono que cierra la ventana, sino en atrapar el evento desde tu código y desde allí hacer lo que deseas.

Parece que lo que necesitas es asegurarte de que el programa devuelva un valor 1 al sistema operativo cuando detecta un error, y en ese caso mi sugerencia es que agregues una línea como la siguiente, justo antes del llamado a MainLoop:

Código:
$vu_win->bind('<Destroy>', sub { exit(1) });
No estoy muy seguro de qué tan portable sea, pero esperaría que Tk maneje ese evento <Destroy> uniformemente. Si el problema persiste, cuéntanos para ver qué otras alternativas podemos usar.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:03.