# Tk I/O for DCT, by Shiar

# not usable
# 1.12.0 200410312115 - test

use strict;
use warnings;

use Tk;
use Term::ReadKey;

my $main;

push @{$hook{init}}, sub {
	$main = new MainWindow;
	$main->Label(-text=>"test")->pack;
	ReadMode 3;  # cbreak mode

	END {
		ReadMode 0;
	} # restore terminal on quit

#	$set{height} = $LINES-2 if $LINES>=3;
#	$set{width} = $COLS if $COLS;
}; # init

=cut
push @{$hook{showerror}}, sub {
	attron(A_REVERSE);
	addstr(0, 0, shift);
	attroff(A_REVERSE);
	clrtoeol;
	refresh;

	ReadKey; # wait for confirm
	1 while defined ReadKey(-1); # clear key buffer
}; # showerror
=cut

push @{$hook{showstack}}, sub {
	my $box = $main->Listbox(
		-relief => 'sunken', 
		-width => -1,  # shrink to fit
		-height => 5,
		-setgrid => 'yes',
	);
print Dumper \@stack;
	for (0..@stack-1) {
		$box->insert('end', "$_: ".showval($stack[$_], $set{base}));
print $_;
	}
	$box->pack(-side => 'left', -fill => 'both', -expand => 'yes');
#	for (0..@stack-1) {
#		addstr($set{height}-$_, 1, "$_: ".showval($stack[$_], $set{base}));
#		clrtoeol;
#	} # show stack
#	clrtoeol($set{height}-@stack, 1);
}; # showstack

push @{$hook{showall}}, sub {
#	clear;
#	addstr($set{height}+1, 0, "> ");  # prompt
	$main->Label(-text=>"> ")->pack;
}; # showall

push @{$hook{showentry}}, sub {
	$main->Label(-text=>$_[0])->pack;
#	addstr($set{height}+1, 2, $_[0]);
#	clrtoeol;
#	refresh;
}; # showentry

$hook{main} = sub {
	my $in = $main->Entry(-width=>10);
	$in->pack;
	$main->Button(
		-text=>'test', 
		-command => sub {
			onkey($_) for split //, $in->get;
			onkey("enter");
		}
	)->pack;

	MainLoop;
#	while (1) {
#		draw();
#
#		my $key = ReadKey;  # wait for user input
#		if ($key eq chr 27) {
#			$key .= $_ while defined ($_ = ReadKey(-1));  # read additional keys
#		} # escape sequence
#
#		onkey($key);
#	} # input loop
}; # main

return {
	author  => "Shiar",
	title   => "tk output",
	version => "1.12",
};

