#!/usr/bin/perl

##############################################################################
#
#	gpg-wrap	-	This program wraps up the standard input up
#			in a nice GPG package and sends it on.
#
#				It produces a TEXT window that contains the
#			data, list of recipients, signing details etc...
#
#	Author		-	Redvers Davies
#
#	$Id: gpg-wrap,v 1.3 1999/12/10 13:05:00 noidd Exp $
#
##############################################################################

use strict 'vars';
use Gtk;
#use PGP::GPG::MessageProcessor;

my @message = <STDIN>;

my $flag;
my $sign;
my $encrypt;
my $sender;
my @recipients;

while ($flag = shift) {
	if ($flag =~ /^-s$/) {
		$sign = 1;
		next;
	}

	if ($flag =~ /^-e$/) {
		$encrypt = 1;
		next;
	}

	if ($flag =~ /^-sender$/) {
		$sender = shift;
		next;
	}

	if ($flag =~ /^-recipients$/) {
		while ($flag = shift) {
			push(@recipients, $flag);
		}
		next;
	}

	die("Bad Flag $flag");

}

init Gtk;

my $main_window = new Gtk::Window(-toplevel);
my $vbox1 = new Gtk::VBox(0,0);
my $hbox1 = new Gtk::HBox(0,0);

my $label1 = new Gtk::Label("Passphrase: ");
$hbox1->pack_start($label1,0,0,0);
$vbox1->pack_start($hbox1,0,0,0);

my $entry = new Gtk::Entry();
$entry->set_visibility(0);
$hbox1->pack_end($entry,1,1,0);

my $scrolled_window = new Gtk::ScrolledWindow();
my $textbox = new Gtk::Text();
$textbox->set_usize(400,300);
$scrolled_window->add($textbox);
$textbox->set_editable(0);

$textbox->insert('','','',join('', @message));
$vbox1->pack_start($scrolled_window,1,1,0);

my $hbox2 = new Gtk::HBox(0,0);
my $enc_button = new_with_label Gtk::ToggleButton("Encrypt");
$hbox2->pack_start($enc_button,0,0,0);

my $sign_button = new_with_label Gtk::ToggleButton("Sign");
$hbox2->pack_start($sign_button,0,0,0);

if ($sign == 1) {
	$sign_button->set_active(1);
}
$sign_button->signal_connect('toggled', \&toggle_sign);

my $enc_button = new_with_label Gtk::ToggleButton("Encrypt");
$hbox2->pack_start($enc_button,0,0,0);

if ($encrypt == 1) {
	$enc_button->set_active(1);
}
$enc_button->signal_connect('toggled', \&toggle_enc);

$vbox1->pack_start($hbox2,0,0,0);

my $go_button = new Gtk::Button("Go");
$hbox2->pack_end($go_button,0,0,0);

$go_button->signal_connect('clicked', \&go_gpg);






$go_button->show;
$enc_button->show;
$sign_button->show;
$hbox2->show;
$textbox->show;
$scrolled_window->show;
$entry->show;
$label1->show;
$hbox1->show;
$vbox1->show;
$main_window->add($vbox1);
$main_window->show;
main Gtk;

sub go_gpg {

	print("E: $encrypt - S: $sign\n");
	$textbox->freeze;
	my $len = $textbox->get_length();
	$textbox->backward_delete($len);
	$textbox->thaw;

	my @encrypted_reply = encrypt(\@message, $entry->get_text);
	print("@encrypted_reply\n");

}

sub toggle_enc {
	print("E: $encrypt\n");
	if ($encrypt) {
		$encrypt = 0;
	} else {
		$encrypt = 1;
	}
	print("E: $encrypt\n");
}

sub toggle_sign {
	print("S: $sign\n");
	if ($sign) {
		$sign = 0;
	} else {
		$sign = 1;
	}
	print("S: $sign\n");
}

sub encrypt {
	my $messageref = shift;
	my $entry = shift;

	print("Passphrase: $entry\n");

	return("Goodbye");

}
