#!/usr/bin/perl -w

package ShellWidget;

use Qt;
use QBrush;
use QButtonGroup;
use QCheckBox;
use QColor;
use QComboBox;
use QCursor;
use QEvent;
use QFileDialog;
use QFont;
use QFrame;
use QLCDNumber;
use QLabel;
use QLayout;
use QListBox;
use QMenuBar;
use QMultiLineEdit;
use QPen;
use QPopupMenu;
use QProgressBar;
use QProgressDialog;
use QPushButton;
use QRadioButton;
use QScrollBar;
use QSlider;
use QSocketNotifier;
use QTabDialog;
use QTimer;
use QWindow;

use QLineEdit;
use QMessageBox;
use slots 'foobar()';

@ISA = qw(QLineEdit);

sub new {
    my $self = shift->SUPER::new(@_);
#    my $self = shift->SUPER::new(undef, undef);
    my $chars = 80;
    my $met = $self->fontMetrics;
    $self->resize($met->maxWidth * $chars + 10, $met->height + 10);
    $self->connect($self, 'returnPressed()', 'foobar()');
    return $self;
}

sub foobar {
    my $self = shift;
    my $text = $self->text;
    $self->setText("");

    my $warning = "";
    local($SIG{__WARN__}) = sub { $warning .= $_[0] };
    eval $text;
    if($warning) {
	QMessageBox::message("PerlQt eval warnings", $warning);
    }
    if($@) {
	QMessageBox::message("PerlQt shell error report", $@);
    }
}

package main;

use Qt;

$lineEdit = new ShellWidget;
$qApp->setMainWidget($lineEdit);
$lineEdit->show;
$qApp->exec;
print "\n\n\n\n\n\nOH SHIT!!!!!!!!!!!!\n";
