#!/usr/bin/perl
use strict;
use Gtk2 -init;
use Gtk2::GladeXML;

## Declarando Variables

my($ventana, $ventana_principal, $fondo_path, $boton_salir, $etiqueta_path_images, $path_images, $ventana_noexiste_directorio, $pid_programa, $ventana_parar_demonio_exito, $ventana_parar_demonio_error, $ventana_iniciar_demonio_exito, $etiqueta_numero_de_segundos, $numero_de_segundos, $label_estado, $ventana_acerca_de, $ventana_ya_en_ejecucion, $ventana_no_en_ejecucion, $acerca_de);
my @estado = ("<span foreground=\"blue\">Ejecutndose</span>", "<span foreground=\"red\">Detenido</span>");
my $home_directory = $ENV{HOME};
my $parte_del_path = "/.gbackground";
my $path = $home_directory . $parte_del_path;
my $path_pid = $path . "/gbackground.pid";

#$ventana = Gtk2::GladeXML->new('/usr/share/gbackground/gbackground.glade');
$ventana = Gtk2::GladeXML->new('glade/gbackground.glade');
$ventana_principal = $ventana->get_widget('ventana_principal');
$ventana_iniciar_demonio_exito = $ventana->get_widget('ventana_iniciar_demonio_exito');
$ventana_noexiste_directorio = $ventana->get_widget('directorio_no_existente');
$ventana_parar_demonio_exito = $ventana->get_widget('ventana_parar_demonio_exito');
$ventana_parar_demonio_error = $ventana->get_widget('ventana_parar_demonio_error');
$etiqueta_path_images = $ventana->get_widget('entrada_path_images');
$etiqueta_numero_de_segundos = $ventana->get_widget('etiqueta_numero_de_segundos');
$label_estado = $ventana->get_widget('label_estado');
$ventana_acerca_de = $ventana->get_widget('Acerca_de');
$ventana_ya_en_ejecucion = $ventana->get_widget('ventana_ya_en_ejecucion');
$ventana_no_en_ejecucion = $ventana->get_widget('ventana_no_en_ejecucion');
$acerca_de = $ventana->get_widget('acerca_de');

#Seales
$ventana->signal_autoconnect_from_package('main');

## Verificando el estado del programa

&verificando_estado;

Gtk2->main;


## Funciones ##
sub on_ventana_principal_delete_event {Gtk2->main_quit;}
sub on_boton_salir_clicked {Gtk2->main_quit;}
sub on_quit1_activate {Gtk2->main_quit;}
sub on_boton_ventana_parar_demonio_exito_clicked {$ventana_noexiste_directorio->hide;}
sub on_boton_aceptar_ventana_iniciar_demonio_exito_clicked {$ventana_iniciar_demonio_exito->hide;}
sub on_boton_volver_ventana_parar_demonio_exito_clicked {$ventana_parar_demonio_exito->hide;}
sub on_boton_ventana_parar_demonio_error_clicked {$ventana_parar_demonio_error->hide;}
sub on_salir1_activate {Gtk2->main_quit;}
sub on_boton_ventana_ya_en_ejecucion_clicked {$ventana_ya_en_ejecucion->hide;}
sub on_boton_ventana_no_en_ejecucion_clicked {$ventana_no_en_ejecucion->hide;}
sub on_acerca_de1_activate {$acerca_de->show_all;}

## Para que vuelvan a funcionar las ventanas cuando las cerramos
sub on_acerca_de_delete_event {
	my $w = shift;
	$w->hide;
	1;
}
sub on_ventana_no_en_ejecucion_delete_event {&on_acerca_de_delete_event}
sub on_ventana_ya_en_ejecucion_delete_event {&on_acerca_de_delete_event}
sub on_ventana_iniciar_demonio_exito_delete_event {&on_acerca_de_delete_event}
sub on_ventana_parar_demonio_error_delete_event {&on_acerca_de_delete_event}
sub on_ventana_parar_demonio_exito_delete_event {&on_acerca_de_delete_event}
sub on_directorio_no_existente_delete_event {&on_acerca_de_delete_event}

## 

sub verificando_estado {
	if(-e $path_pid){
	        $label_estado->set_markup("@estado[0]");
	}else{
	        $label_estado->set_markup("@estado[1]");
	}
}

sub on_boton_iniciar_clicked {
	$path_images = $etiqueta_path_images->get_text();
	if(-e "$path_pid"){
		$ventana_ya_en_ejecucion->show_all;
	}
	else{
		if(-e $path_images){
			$numero_de_segundos = $etiqueta_numero_de_segundos->get_text();
			system("perl /usr/share/gbackground/gbackgroundD $path_images $numero_de_segundos \&");
			sleep 1; # Esto es por que muchas veces tarda en crear el gbackground.pid
			$label_estado->set_markup("@estado[0]") if(-e "$path_pid");
			$ventana_iniciar_demonio_exito->show_all;
		}
		else{
			$ventana_noexiste_directorio->show_all;	
		}
	}
}
sub on_boton_parar_clicked {
	if(-e "$path_pid"){
		open(ARCHIVO_PID, "$path_pid");
		while(<ARCHIVO_PID>){
			$pid_programa = $_;
		}
		system("kill -9 $pid_programa");
		system("rm -f $path_pid");
		$ventana_parar_demonio_exito->show_all;
		$ventana_parar_demonio_error->show_all if(-e "$path_pid");
	}else{
		$ventana_no_en_ejecucion->show_all;	
	}
	&verificando_estado;
}
