#!/usr/bin/perl

# SIMPRE 1.1
# By Alfonso E.M. alfonso@el-magnifico.org
# Para seleccionar la impresora predeterminada
# 
# CAMBIOS:
# 1.1 Ventana de error si no hay impresoras
#     Solo busca las impresoras al principio de lnea

$LIST="/etc/cups/printers.conf";

use UI::Dialog::Backend::XDialog;
$dialog = new UI::Dialog::Backend::XDialog ( 
	backtitle => 'Seleccin de Impresora',
	title => 'Impresora Preferente',
	literal => 0,
	height => 20, width=>45,
	cancellabel => 'Cancelar',
	oklabel => 'Continuar' );

if ($< != 0) { 
	 $dialog->msgbox( text => "Solo el administrador puede usar este programa ");
	exit;
}

# Leemos las impresoras de cups
open (LIST,$LIST) or die "ERROR: No existe el archivo $LIST";
while (<LIST>) {
	s/_/ /g;
	if (/^<Printer\s+(.*)>/i) { push @printers,$1; }
	if (/^<DefaultPrinter\s+(.*)>/i) { push @printers,$1; }
}

close lIST;

if ($#printers > 0 ) {
	$text_intro="Elija la impresora que ms utiliza.\n\nLos programas utilizarn preferentemente\n esta impresora de forma automtica:";

# Mostramos la pantalla para seleccionar la impresora
	my $printer = $dialog->combobox( text => $text_intro,
                            list => \@printers );
	if ($printer eq "0") {exit};

# Seleccionamos esta impresora como predeterminada con lpadmin
	$printername=$printer;
	$printername=~s/ /_/g;
	system("lpadmin -d $printername");

	$dialog->msgbox(text => "Ahora '$printer'\n es su impresora preferente");
} else {
	$dialog->msgbox(text => "No hay impresoras configuradas");
}