#!/usr/bin/perl -w

use Qt;
use QColor;
use QFrame;
use QGroupBox;
use QLabel;
use QLayout;
use QPushButton;

$f = new QGroupBox;
$f->setFrameStyle($Frame{Panel} | $Frame{Sunken});

$gm = new QBoxLayout($f, $Direction{TopToBottom}, 5);

$b1 = new QBoxLayout($Direction{LeftToRight});
$gm->addLayout($b1, 10);

for my $i (0..3) {
    if($i != 2) {
	my $lab = new QLabel($f)->immortal;
	$lab->setText('Testing');
	$lab->adjustSize();
	$lab->setMinimumSize($lab->size());
	$lab->setFrameStyle($Frame{Panel} | $Frame{Plain});
	$lab->setAlignment($Align{Top} | $Align{Center});
	$lab->setBackgroundColor($yellow);
	$lab->setMaximumSize(150, 200);
	$b1->addWidget($lab, 20);
    } else {
	my $grid = new QGridLayout(2, 2)->immortal;
	$b1->addLayout($grid);
	for my $j (0..1) {
	    for my $k (0..1) {
		my $lab = new QLabel($f)->immortal;
		$lab->setText("Grid $j,$k");
		$lab->adjustSize();
		$lab->setMinimumSize($lab->size());
		$lab->setFrameStyle($Frame{Panel} | $Frame{Plain});
		$lab->setAlignment($Align{Center});
		$lab->setBackgroundColor($cyan);
		$grid->addWidget($lab, $j, $k);
	    }
	}
    }
}    

$qb = new QPushButton('Quit', $f);
$qApp->connect($qb, 'clicked()', 'quit()');
$qb->setFixedSize($qb->size());
$b1->addWidget($qb, 0, $Align{Top});

$large = new QLabel($f);
$large->setText("This is supposed to be a large window\n you know.");
$large->adjustSize();
$large->setMinimumSize($large->size());
$large->setFrameStyle($Frame{Panel} | $Frame{Plain});
$large->setAlignment($Align{Center});
$large->setBackgroundColor($white);

$b2 = new QBoxLayout($Direction{LeftToRight});
$gm->addLayout($b2, 50);

$b2->addWidget($large, 100);

{
    my $s = new QLabel($f)->immortal;
    $s->setMaximumSize(150, 150);
    $s->setText("This\n is\n supposed\n to be\n centered\n relatively.");
    $s->adjustSize();
    $s->setMinimumSize($s->size());
    $s->setFrameStyle($Frame{Panel} | $Frame{Plain});
    $s->setAlignment($Align{Center});
    $s->setBackgroundColor($cyan);
    $b2->addWidget($s, 10, $Align{Center});
}

{
    my $s = new QLabel($f)->immortal;
    $s->setMaximumSize($QLayout::unlimited, 50);
    $s->setText("This is a widget inside the outermost box");
    $s->adjustSize();
    $s->setMinimumSize($s->width(), $s->height());
    $s->setFrameStyle($Frame{Panel} | $Frame{Plain});
    $s->setAlignment($Align{Center});
    $s->setBackgroundColor($red);
    $gm->addWidget($s, 1);
}

$gm->activate();
$f->show();

$qApp->setMainWidget($f);
$qApp->exec();
