/usr/local/CPAN/Qt/ControllerWindow.pm
package ControllerWindow;
use strict;
use warnings;
use QtCore4;
use QtGui4;
use PreviewWindow;
# FIXME
use constant {
Window=>0x00000001
};
use constant {
Dialog=>0x00000002 | Window,
SplashScreen=>0x0000000e | Window,
ToolTip=>0x0000000c | Window
};
# [0]
use QtCore4::isa qw( Qt::Widget );
use QtCore4::slots
updatePreview => [];
sub previewWindow() {
return this->{previewWindow};
}
sub typeGroupBox() {
return this->{typeGroupBox};
}
sub hintsGroupBox() {
return this->{hintsGroupBox};
}
sub quitButton() {
return this->{quitButton};
}
sub windowRadioButton() {
return this->{windowRadioButton};
}
sub dialogRadioButton() {
return this->{dialogRadioButton};
}
sub sheetRadioButton() {
return this->{sheetRadioButton};
}
sub drawerRadioButton() {
return this->{drawerRadioButton};
}
sub popupRadioButton() {
return this->{popupRadioButton};
}
sub toolRadioButton() {
return this->{toolRadioButton};
}
sub toolTipRadioButton() {
return this->{toolTipRadioButton};
}
sub splashScreenRadioButton() {
return this->{splashScreenRadioButton};
}
sub msWindowsFixedSizeDialogCheckBox() {
return this->{msWindowsFixedSizeDialogCheckBox};
}
sub x11BypassWindowManagerCheckBox() {
return this->{x11BypassWindowManagerCheckBox};
}
sub framelessWindowCheckBox() {
return this->{framelessWindowCheckBox};
}
sub windowTitleCheckBox() {
return this->{windowTitleCheckBox};
}
sub windowSystemMenuCheckBox() {
return this->{windowSystemMenuCheckBox};
}
sub windowMinimizeButtonCheckBox() {
return this->{windowMinimizeButtonCheckBox};
}
sub windowMaximizeButtonCheckBox() {
return this->{windowMaximizeButtonCheckBox};
}
sub windowCloseButtonCheckBox() {
return this->{windowCloseButtonCheckBox};
}
sub windowContextHelpButtonCheckBox() {
return this->{windowContextHelpButtonCheckBox};
}
sub windowShadeButtonCheckBox() {
return this->{windowShadeButtonCheckBox};
}
sub windowStaysOnTopCheckBox() {
return this->{windowStaysOnTopCheckBox};
}
sub windowStaysOnBottomCheckBox() {
return this->{windowStaysOnBottomCheckBox};
}
sub customizeWindowHintCheckBox() {
return this->{customizeWindowHintCheckBox};
}
# [0]
# [0]
sub NEW {
my ( $class, $parent ) = @_;
$class->SUPER::NEW( $parent );
this->{previewWindow} = PreviewWindow(this);
this->createTypeGroupBox();
this->createHintsGroupBox();
my $quitButton = this->{quitButton} = Qt::PushButton(this->tr('&Quit'));
this->connect($quitButton, SIGNAL 'clicked()', qApp, SLOT 'quit()');
my $bottomLayout = Qt::HBoxLayout();
$bottomLayout->addStretch();
$bottomLayout->addWidget($quitButton);
my $mainLayout = Qt::VBoxLayout();
$mainLayout->addWidget(this->typeGroupBox);
$mainLayout->addWidget(this->hintsGroupBox);
$mainLayout->addLayout($bottomLayout);
this->setLayout($mainLayout);
this->setWindowTitle(this->tr('Window Flags'));
this->updatePreview();
}
# [0]
# [1]
sub updatePreview {
my $flags = 0;
if (this->windowRadioButton->isChecked()) {
$flags = Qt::Window();
} elsif (this->dialogRadioButton->isChecked()) {
$flags = Dialog;
} elsif (this->sheetRadioButton->isChecked()) {
$flags = Qt::Sheet();
} elsif (this->drawerRadioButton->isChecked()) {
$flags = Qt::Drawer();
} elsif (this->popupRadioButton->isChecked()) {
$flags = Qt::Popup();
} elsif (this->toolRadioButton->isChecked()) {
$flags = Qt::Tool();
} elsif (this->toolTipRadioButton->isChecked()) {
$flags = ToolTip;
} elsif (this->splashScreenRadioButton->isChecked()) {
$flags = SplashScreen;
# [1] //! [2]
}
# [2] //! [3]
if (msWindowsFixedSizeDialogCheckBox->isChecked()) {
$flags |= Qt::MSWindowsFixedSizeDialogHint();
}
if (x11BypassWindowManagerCheckBox->isChecked()) {
$flags |= Qt::X11BypassWindowManagerHint();
}
if (framelessWindowCheckBox->isChecked()) {
$flags |= Qt::FramelessWindowHint();
}
if (windowTitleCheckBox->isChecked()) {
$flags |= Qt::WindowTitleHint();
}
if (windowSystemMenuCheckBox->isChecked()) {
$flags |= Qt::WindowSystemMenuHint();
}
if (windowMinimizeButtonCheckBox->isChecked()) {
$flags |= Qt::WindowMinimizeButtonHint();
}
if (windowMaximizeButtonCheckBox->isChecked()) {
$flags |= Qt::WindowMaximizeButtonHint();
}
if (windowCloseButtonCheckBox->isChecked()) {
$flags |= Qt::WindowCloseButtonHint();
}
if (windowContextHelpButtonCheckBox->isChecked()) {
$flags |= Qt::WindowContextHelpButtonHint();
}
if (windowShadeButtonCheckBox->isChecked()) {
$flags |= Qt::WindowShadeButtonHint();
}
if (windowStaysOnTopCheckBox->isChecked()) {
$flags |= Qt::WindowStaysOnTopHint();
}
if (windowStaysOnBottomCheckBox->isChecked()) {
$flags |= Qt::WindowStaysOnBottomHint();
}
if (customizeWindowHintCheckBox->isChecked()) {
$flags |= Qt::CustomizeWindowHint();
}
this->previewWindow->setWindowFlags($flags);
# [3] //! [4]
my $pos = this->previewWindow->pos();
if ($pos->x() < 0) {
$pos->setX(0);
}
if ($pos->y() < 0) {
$pos->setY(0);
}
this->previewWindow->move($pos);
this->previewWindow->show();
}
# [4]
# [5]
sub createTypeGroupBox {
this->{typeGroupBox} = Qt::GroupBox(this->tr('Type'));
this->{windowRadioButton} = createRadioButton(this->tr('Window'));
this->{dialogRadioButton} = createRadioButton(this->tr('Dialog'));
this->{sheetRadioButton} = createRadioButton(this->tr('Sheet'));
this->{drawerRadioButton} = createRadioButton(this->tr('Drawer'));
this->{popupRadioButton} = createRadioButton(this->tr('Popup'));
this->{toolRadioButton} = createRadioButton(this->tr('Tool'));
this->{toolTipRadioButton} = createRadioButton(this->tr('Tooltip'));
this->{splashScreenRadioButton} = createRadioButton(this->tr('Splash screen'));
this->{windowRadioButton}->setChecked(1);
my $layout = Qt::GridLayout();
$layout->addWidget(this->windowRadioButton, 0, 0);
$layout->addWidget(this->dialogRadioButton, 1, 0);
$layout->addWidget(this->sheetRadioButton, 2, 0);
$layout->addWidget(this->drawerRadioButton, 3, 0);
$layout->addWidget(this->popupRadioButton, 0, 1);
$layout->addWidget(this->toolRadioButton, 1, 1);
$layout->addWidget(this->toolTipRadioButton, 2, 1);
$layout->addWidget(this->splashScreenRadioButton, 3, 1);
this->typeGroupBox->setLayout($layout);
}
# [5]
# [6]
sub createHintsGroupBox {
this->{hintsGroupBox} = Qt::GroupBox(this->tr('Hints'));
this->{msWindowsFixedSizeDialogCheckBox} =
this->createCheckBox(this->tr('MS Windows fixed size dialog'));
this->{x11BypassWindowManagerCheckBox} =
this->createCheckBox(this->tr('X11 bypass window manager'));
this->{framelessWindowCheckBox} = this->createCheckBox(this->tr('Frameless window'));
this->{windowTitleCheckBox} = this->createCheckBox(this->tr('Window title'));
this->{windowSystemMenuCheckBox} = this->createCheckBox(this->tr('Window system menu'));
this->{windowMinimizeButtonCheckBox} = this->createCheckBox(this->tr('Window minimize button'));
this->{windowMaximizeButtonCheckBox} = this->createCheckBox(this->tr('Window maximize button'));
this->{windowCloseButtonCheckBox} = this->createCheckBox(this->tr('Window close button'));
this->{windowContextHelpButtonCheckBox} =
this->createCheckBox(this->tr('Window context help button'));
this->{windowShadeButtonCheckBox} = this->createCheckBox(this->tr('Window shade button'));
this->{windowStaysOnTopCheckBox} = this->createCheckBox(this->tr('Window stays on top'));
this->{windowStaysOnBottomCheckBox} = this->createCheckBox(this->tr('Window stays on bottom'));
this->{customizeWindowHintCheckBox} = this->createCheckBox(this->tr('Customize window'));
my $layout = Qt::GridLayout();
$layout->addWidget(this->msWindowsFixedSizeDialogCheckBox, 0, 0);
$layout->addWidget(this->x11BypassWindowManagerCheckBox, 1, 0);
$layout->addWidget(this->framelessWindowCheckBox, 2, 0);
$layout->addWidget(this->windowTitleCheckBox, 3, 0);
$layout->addWidget(this->windowSystemMenuCheckBox, 4, 0);
$layout->addWidget(this->windowMinimizeButtonCheckBox, 0, 1);
$layout->addWidget(this->windowMaximizeButtonCheckBox, 1, 1);
$layout->addWidget(this->windowCloseButtonCheckBox, 2, 1);
$layout->addWidget(this->windowContextHelpButtonCheckBox, 3, 1);
$layout->addWidget(this->windowShadeButtonCheckBox, 4, 1);
$layout->addWidget(this->windowStaysOnTopCheckBox, 5, 1);
$layout->addWidget(this->windowStaysOnBottomCheckBox, 6, 1);
$layout->addWidget(this->customizeWindowHintCheckBox, 5, 0);
this->hintsGroupBox->setLayout($layout);
}
# [6]
# [7]
sub createCheckBox {
my ($text) = @_;
my $checkBox = Qt::CheckBox($text);
this->connect($checkBox, SIGNAL 'clicked()', this, SLOT 'updatePreview()');
return $checkBox;
}
# [7]
# [8]
sub createRadioButton {
my ($text) = @_;
my $button = Qt::RadioButton($text);
this->connect($button, SIGNAL 'clicked()', this, SLOT 'updatePreview()');
return $button;
}
# [8]
1;