diff options
Diffstat (limited to 'PerlQt/tutorials')
32 files changed, 0 insertions, 2129 deletions
diff --git a/PerlQt/tutorials/runall.pl b/PerlQt/tutorials/runall.pl deleted file mode 100644 index d0363f1..0000000 --- a/PerlQt/tutorials/runall.pl +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/perl -w -# Use the tutorials as a test suite -@tutorials = (sort(glob("t?")), sort(glob("t??"))); -for $tutorial (@tutorials) { - chdir($tutorial) || next; - system("$^X -w $tutorial.pl"); - chdir(".."); -} diff --git a/PerlQt/tutorials/t1/t1.pl b/PerlQt/tutorials/t1/t1.pl deleted file mode 100644 index 96c7153..0000000 --- a/PerlQt/tutorials/t1/t1.pl +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; -use TQt; - -my $a = TQt::Application(\@ARGV); - -my $hello = TQt::PushButton("Hello World!", undef); -$hello->resize(100, 30); - -$a->setMainWidget($hello); -$hello->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t10/CannonField.pm b/PerlQt/tutorials/t10/CannonField.pm deleted file mode 100644 index 08b2e10..0000000 --- a/PerlQt/tutorials/t10/CannonField.pm +++ /dev/null @@ -1,76 +0,0 @@ -package CannonField; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::signals - angleChanged => ['int'], - forceChanged => ['int']; -use TQt::slots - setAngle => ['int'], - setForce => ['int']; -use TQt::attributes qw( - ang - f -); -use POSIX qw(atan); - -sub angle () { ang } -sub force () { f } - -sub NEW { - shift->SUPER::NEW(@_); - - ang = 45; - f = 0; - setPalette(TQt::Palette(TQt::Color(250, 250, 200))); -} - -sub setAngle { - my $degrees = shift; - $degrees = 5 if $degrees < 5; - $degrees = 70 if $degrees > 70; - return if ang == $degrees; - ang = $degrees; - repaint(cannonRect(), 0); - emit angleChanged(ang); -} - -sub setForce { - my $newton = shift; - $newton = 0 if $newton < 0; - return if f == $newton; - f = $newton; - emit forceChanged(f); -} - -sub paintEvent { - my $e = shift; - return unless $e->rect->intersects(cannonRect()); - my $cr = cannonRect(); - my $pix = TQt::Pixmap($cr->size); - $pix->fill(this, $cr->topLeft); - - my $p = TQt::Painter($pix); - $p->setBrush(&blue); - $p->setPen(&NoPen); - $p->translate(0, $pix->height - 1); - $p->drawPie(TQt::Rect(-35, -35, 70, 70), 0, 90*16); - $p->rotate(- ang); - $p->drawRect(TQt::Rect(33, -4, 15, 8)); - $p->end; - - $p->begin(this); - $p->drawPixmap($cr->topLeft, $pix); -} - -sub cannonRect { - my $r = TQt::Rect(0, 0, 50, 50); - $r->moveBottomLeft(rect()->bottomLeft); - return $r; -} - -sub sizePolicy { - TQt::SizePolicy(&TQt::SizePolicy::Expanding, &TQt::SizePolicy::Expanding); -} - -1; diff --git a/PerlQt/tutorials/t10/LCDRange.pm b/PerlQt/tutorials/t10/LCDRange.pm deleted file mode 100644 index ab63af0..0000000 --- a/PerlQt/tutorials/t10/LCDRange.pm +++ /dev/null @@ -1,43 +0,0 @@ -package LCDRange; -use strict; -use TQt; -use TQt::isa qw(TQt::VBox); -use TQt::slots - setValue => ['int'], - setRange => ['int', 'int']; -use TQt::signals - valueChanged => ['int']; -use TQt::attributes qw( - slider -); - -sub NEW { - shift->SUPER::NEW(@_); - - my $lcd = TQt::LCDNumber(2, this, "lcd"); - - slider = TQt::Slider(&Horizontal, this, "slider"); - slider->setRange(0, 99); - slider->setValue(0); - $lcd->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); - this->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SIGNAL('valueChanged(int)')); - - setFocusProxy(slider); -} - -sub value { slider->value } - -sub setValue { slider->setValue(shift) } - -sub setRange { - my($minVal, $maxVal) = @_; - if($minVal < 0 || $maxVal > 99 || $minVal > $maxVal) { - warn "LCDRange::setRange($minVal,$maxVal)\n" . - "\tRange must be 0..99\n" . - "\tand minVal must not be greater than maxVal\n"; - return; - } - slider->setRange($minVal, $maxVal); -} - -1; diff --git a/PerlQt/tutorials/t10/t10.pl b/PerlQt/tutorials/t10/t10.pl deleted file mode 100644 index 7056680..0000000 --- a/PerlQt/tutorials/t10/t10.pl +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; - -package MyWidget; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); - -use LCDRange; -use CannonField; - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("&Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $angle = LCDRange(this, "angle"); - $angle->setRange(5, 70); - - my $force = LCDRange(this, "force"); - $force->setRange(10, 50); - - my $cannonField = CannonField(this, "cannonField"); - - $cannonField->connect($angle, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setAngle(int)')); - $angle->connect($cannonField, TQT_SIGNAL('angleChanged(int)'), TQT_SLOT('setValue(int)')); - - $cannonField->connect($force, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setForce(int)')); - $force->connect($cannonField, TQT_SIGNAL('forceChanged(int)'), TQT_SLOT('setValue(int)')); - - my $grid = TQt::GridLayout(this, 2, 2, 10); - $grid->addWidget($quit, 0, 0); - $grid->addWidget($cannonField, 1, 1); - $grid->setColStretch(1, 10); - - my $leftBox = TQt::VBoxLayout; - $grid->addLayout($leftBox, 1, 0); - $leftBox->addWidget($angle); - $leftBox->addWidget($force); - - $angle->setValue(60); - $force->setValue(25); - $angle->setFocus(); -} - -package main; -use TQt; -use MyWidget; - -TQt::Application::setColorSpec(&TQt::Application::CustomColor); -my $a = TQt::Application(\@ARGV); - -my $w = MyWidget; -$w->setGeometry(100, 100, 500, 355); -$a->setMainWidget($w); -$w->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t11/CannonField.pm b/PerlQt/tutorials/t11/CannonField.pm deleted file mode 100644 index 0806f66..0000000 --- a/PerlQt/tutorials/t11/CannonField.pm +++ /dev/null @@ -1,146 +0,0 @@ -package CannonField; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::signals - angleChanged => ['int'], - forceChanged => ['int']; -use TQt::slots - setAngle => ['int'], - setForce => ['int'], - shoot => [], - moveShot => []; -use TQt::attributes qw( - ang - f - - timerCount - autoShootTimer - shoot_ang - shoot_f -); -use POSIX qw(atan); - -sub angle () { ang } -sub force () { f } - -sub NEW { - shift->SUPER::NEW(@_); - - ang = 45; - f = 0; - timerCount = 0; - autoShootTimer = TQt::Timer(this, "movement handler"); - this->connect(autoShootTimer, TQT_SIGNAL('timeout()'), TQT_SLOT('moveShot()')); - shoot_ang = 0; - shoot_f = 0; - setPalette(TQt::Palette(TQt::Color(250, 250, 200))); -} - -sub setAngle { - my $degrees = shift; - $degrees = 5 if $degrees < 5; - $degrees = 70 if $degrees > 70; - return if ang == $degrees; - ang = $degrees; - repaint(cannonRect(), 0); - emit angleChanged(ang); -} - -sub setForce { - my $newton = shift; - $newton = 0 if $newton < 0; - return if f == $newton; - f = $newton; - emit forceChanged(f); -} - -sub shoot { - return if autoShootTimer->isActive; - timerCount = 0; - shoot_ang = ang; - shoot_f = f; - autoShootTimer->start(50); -} - -sub moveShot { - my $r = TQt::Region(shotRect()); - timerCount++; - - my $shotR = shotRect(); - - if($shotR->x > width() || $shotR->y > height()) { - autoShootTimer->stop; - } else { - $r = $r->unite(TQt::Region($shotR)); - } - repaint($r); -} - -sub paintEvent { - my $e = shift; - my $updateR = $e->rect; - my $p = TQt::Painter(this); - - paintCannon($p) if $updateR->intersects(cannonRect()); - paintShot($p) if autoShootTimer->isActive and $updateR->intersects(shotRect()); -} - -sub paintShot { - my $p = shift; - $p->setBrush(&black); - $p->setPen(&NoPen); - $p->drawRect(shotRect()); -} - -my $barrelRect = TQt::Rect(33, -4, 15, 8); - -sub paintCannon { - my $p = shift; - my $cr = cannonRect(); - my $pix = TQt::Pixmap($cr->size); - $pix->fill(this, $cr->topLeft); - - my $tmp = TQt::Painter($pix); - $tmp->setBrush(&blue); - $tmp->setPen(&NoPen); - - $tmp->translate(0, $pix->height - 1); - $tmp->drawPie(TQt::Rect(-35, -35, 70, 70), 0, 90*16); - $tmp->rotate(- ang); - $tmp->drawRect($barrelRect); - $tmp->end; - - $p->drawPixmap($cr->topLeft, $pix); -} - -sub cannonRect { - my $r = TQt::Rect(0, 0, 50, 50); - $r->moveBottomLeft(rect()->bottomLeft); - return $r; -} - -sub shotRect { - my $gravity = 4; - - my $time = timerCount / 4.0; - my $velocity = shoot_f; - my $radians = shoot_ang*3.14159265/180; - - my $velx = $velocity*cos($radians); - my $vely = $velocity*sin($radians); - my $x0 = ($barrelRect->right + 5)*cos($radians); - my $y0 = ($barrelRect->right + 5)*sin($radians); - my $x = $x0 + $velx*$time; - my $y = $y0 + $vely*$time - 0.5*$gravity*$time**2; - - my $r = TQt::Rect(0, 0, 6, 6); - $r->moveCenter(TQt::Point(int($x), height() - 1 - int($y))); - return $r; -} - -sub sizePolicy { - TQt::SizePolicy(&TQt::SizePolicy::Expanding, &TQt::SizePolicy::Expanding); -} - -1; diff --git a/PerlQt/tutorials/t11/LCDRange.pm b/PerlQt/tutorials/t11/LCDRange.pm deleted file mode 100644 index ab63af0..0000000 --- a/PerlQt/tutorials/t11/LCDRange.pm +++ /dev/null @@ -1,43 +0,0 @@ -package LCDRange; -use strict; -use TQt; -use TQt::isa qw(TQt::VBox); -use TQt::slots - setValue => ['int'], - setRange => ['int', 'int']; -use TQt::signals - valueChanged => ['int']; -use TQt::attributes qw( - slider -); - -sub NEW { - shift->SUPER::NEW(@_); - - my $lcd = TQt::LCDNumber(2, this, "lcd"); - - slider = TQt::Slider(&Horizontal, this, "slider"); - slider->setRange(0, 99); - slider->setValue(0); - $lcd->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); - this->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SIGNAL('valueChanged(int)')); - - setFocusProxy(slider); -} - -sub value { slider->value } - -sub setValue { slider->setValue(shift) } - -sub setRange { - my($minVal, $maxVal) = @_; - if($minVal < 0 || $maxVal > 99 || $minVal > $maxVal) { - warn "LCDRange::setRange($minVal,$maxVal)\n" . - "\tRange must be 0..99\n" . - "\tand minVal must not be greater than maxVal\n"; - return; - } - slider->setRange($minVal, $maxVal); -} - -1; diff --git a/PerlQt/tutorials/t11/t11.pl b/PerlQt/tutorials/t11/t11.pl deleted file mode 100644 index d493b1e..0000000 --- a/PerlQt/tutorials/t11/t11.pl +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; - -package MyWidget; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); - -use LCDRange; -use CannonField; - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("&Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $angle = LCDRange(this, "angle"); - $angle->setRange(5, 70); - - my $force = LCDRange(this, "force"); - $force->setRange(10, 50); - - my $cannonField = CannonField(this, "cannonField"); - - $cannonField->connect($angle, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setAngle(int)')); - $angle->connect($cannonField, TQT_SIGNAL('angleChanged(int)'), TQT_SLOT('setValue(int)')); - - $cannonField->connect($force, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setForce(int)')); - $force->connect($cannonField, TQT_SIGNAL('forceChanged(int)'), TQT_SLOT('setValue(int)')); - - my $shoot = TQt::PushButton('&Shoot', this, "shoot"); - $shoot->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - $cannonField->connect($shoot, TQT_SIGNAL('clicked()'), TQT_SLOT('shoot()')); - - my $grid = TQt::GridLayout(this, 2, 2, 10); - $grid->addWidget($quit, 0, 0); - $grid->addWidget($cannonField, 1, 1); - $grid->setColStretch(1, 10); - - my $leftBox = TQt::VBoxLayout; - $grid->addLayout($leftBox, 1, 0); - $leftBox->addWidget($angle); - $leftBox->addWidget($force); - - my $topBox = TQt::HBoxLayout; - $grid->addLayout($topBox, 0, 1); - $topBox->addWidget($shoot); - $topBox->addStretch(1); - - $angle->setValue(60); - $force->setValue(25); - $angle->setFocus(); -} - -package main; -use TQt; -use MyWidget; - -TQt::Application::setColorSpec(&TQt::Application::CustomColor); -my $a = TQt::Application(\@ARGV); - -my $w = MyWidget; -$w->setGeometry(100, 100, 500, 355); -$a->setMainWidget($w); -$w->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t12/CannonField.pm b/PerlQt/tutorials/t12/CannonField.pm deleted file mode 100644 index 6cc1529..0000000 --- a/PerlQt/tutorials/t12/CannonField.pm +++ /dev/null @@ -1,177 +0,0 @@ -package CannonField; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::signals - hit => [], - missed => [], - angleChanged => ['int'], - forceChanged => ['int']; -use TQt::slots - setAngle => ['int'], - setForce => ['int'], - shoot => [], - moveShot => []; -use TQt::attributes qw( - ang - f - - timerCount - autoShootTimer - shoot_ang - shoot_f - - target -); -use POSIX qw(atan); - -sub angle () { ang } -sub force () { f } - -sub NEW { - shift->SUPER::NEW(@_); - - ang = 45; - f = 0; - timerCount = 0; - autoShootTimer = TQt::Timer(this, "movement handler"); - this->connect(autoShootTimer, TQT_SIGNAL('timeout()'), TQT_SLOT('moveShot()')); - shoot_ang = 0; - shoot_f = 0; - target = TQt::Point(0, 0); - setPalette(TQt::Palette(TQt::Color(250, 250, 200))); - newTarget(); -} - -sub setAngle { - my $degrees = shift; - $degrees = 5 if $degrees < 5; - $degrees = 70 if $degrees > 70; - return if ang == $degrees; - ang = $degrees; - repaint(cannonRect(), 0); - emit angleChanged(ang); -} - -sub setForce { - my $newton = shift; - $newton = 0 if $newton < 0; - return if f == $newton; - f = $newton; - emit forceChanged(f); -} - -sub shoot { - return if autoShootTimer->isActive; - timerCount = 0; - shoot_ang = ang; - shoot_f = f; - autoShootTimer->start(50); -} - -sub newTarget { - my $r = TQt::Region(targetRect()); - target = TQt::Point(200 + int(rand(190)), - 10 + int(rand(255))); - repaint($r->unite(TQt::Region(targetRect()))); -} - -sub moveShot { - my $r = TQt::Region(shotRect()); - timerCount++; - - my $shotR = shotRect(); - - if($shotR->intersects(targetRect())) { - autoShootTimer->stop; - emit hit(); - } elsif($shotR->x > width() || $shotR->y > height()) { - autoShootTimer->stop; - emit missed(); - } else { - $r = $r->unite(TQt::Region($shotR)); - } - repaint($r); -} - -sub paintEvent { - my $e = shift; - my $updateR = $e->rect; - my $p = TQt::Painter(this); - - paintCannon($p) if $updateR->intersects(cannonRect()); - paintShot($p) if autoShootTimer->isActive and $updateR->intersects(shotRect()); - paintTarget($p) if $updateR->intersects(targetRect()); -} - -sub paintShot { - my $p = shift; - $p->setBrush(&black); - $p->setPen(&NoPen); - $p->drawRect(shotRect()); -} - -sub paintTarget { - my $p = shift; - $p->setBrush(&red); - $p->setPen(&black); - $p->drawRect(targetRect()); -} - -my $barrelRect = TQt::Rect(33, -4, 15, 8); - -sub paintCannon { - my $p = shift; - my $cr = cannonRect(); - my $pix = TQt::Pixmap($cr->size); - $pix->fill(this, $cr->topLeft); - - my $tmp = TQt::Painter($pix); - $tmp->setBrush(&blue); - $tmp->setPen(&NoPen); - - $tmp->translate(0, $pix->height - 1); - $tmp->drawPie(TQt::Rect(-35, -35, 70, 70), 0, 90*16); - $tmp->rotate(- ang); - $tmp->drawRect($barrelRect); - $tmp->end; - - $p->drawPixmap($cr->topLeft, $pix); -} - -sub cannonRect { - my $r = TQt::Rect(0, 0, 50, 50); - $r->moveBottomLeft(rect()->bottomLeft); - return $r; -} - -sub shotRect { - my $gravity = 4; - - my $time = timerCount / 4.0; - my $velocity = shoot_f; - my $radians = shoot_ang*3.14159265/180; - - my $velx = $velocity*cos($radians); - my $vely = $velocity*sin($radians); - my $x0 = ($barrelRect->right + 5)*cos($radians); - my $y0 = ($barrelRect->right + 5)*sin($radians); - my $x = $x0 + $velx*$time; - my $y = $y0 + $vely*$time - 0.5*$gravity*$time**2; - - my $r = TQt::Rect(0, 0, 6, 6); - $r->moveCenter(TQt::Point(int($x), height() - 1 - int($y))); - return $r; -} - -sub targetRect { - my $r = TQt::Rect(0, 0, 20, 10); - $r->moveCenter(TQt::Point(target->x, height() - 1 - target->y)); - return $r; -} - -sub sizePolicy { - TQt::SizePolicy(&TQt::SizePolicy::Expanding, &TQt::SizePolicy::Expanding); -} - -1; diff --git a/PerlQt/tutorials/t12/LCDRange.pm b/PerlQt/tutorials/t12/LCDRange.pm deleted file mode 100644 index d3a5166..0000000 --- a/PerlQt/tutorials/t12/LCDRange.pm +++ /dev/null @@ -1,62 +0,0 @@ -package LCDRange; -use strict; -use TQt; -use TQt::isa qw(TQt::VBox); -use TQt::slots - setValue => ['int'], - setRange => ['int', 'int'], - setText => ['const char*']; -use TQt::signals - valueChanged => ['int']; -use TQt::attributes qw( - slider - label -); - -sub NEW { - my $class = shift; - my $s; - $s = shift if $_[0] and not ref $_[0]; - $class->SUPER::NEW(@_); - - init(); - setText($s) if $s; -} - - -sub init { - my $lcd = TQt::LCDNumber(2, this, "lcd"); - - slider = TQt::Slider(&Horizontal, this, "slider"); - slider->setRange(0, 99); - slider->setValue(0); - - label = TQt::Label(" ", this, "label"); - label->setAlignment(&AlignCenter); - - $lcd->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); - this->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SIGNAL('valueChanged(int)')); - - setFocusProxy(slider); -} - -sub value { slider->value } - -sub text { label->text } - -sub setValue { slider->setValue(shift) } - -sub setRange { - my($minVal, $maxVal) = @_; - if($minVal < 0 || $maxVal > 99 || $minVal > $maxVal) { - warn "LCDRange::setRange($minVal,$maxVal)\n" . - "\tRange must be 0..99\n" . - "\tand minVal must not be greater than maxVal\n"; - return; - } - slider->setRange($minVal, $maxVal); -} - -sub setText { label->setText(shift) } - -1; diff --git a/PerlQt/tutorials/t12/t12.pl b/PerlQt/tutorials/t12/t12.pl deleted file mode 100644 index e8072ef..0000000 --- a/PerlQt/tutorials/t12/t12.pl +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; - -package MyWidget; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); - -use LCDRange; -use CannonField; - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("&Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $angle = LCDRange("ANGLE", this, "angle"); - $angle->setRange(5, 70); - - my $force = LCDRange("FORCE", this, "force"); - $force->setRange(10, 50); - - my $cannonField = CannonField(this, "cannonField"); - - $cannonField->connect($angle, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setAngle(int)')); - $angle->connect($cannonField, TQT_SIGNAL('angleChanged(int)'), TQT_SLOT('setValue(int)')); - - $cannonField->connect($force, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setForce(int)')); - $force->connect($cannonField, TQT_SIGNAL('forceChanged(int)'), TQT_SLOT('setValue(int)')); - - my $shoot = TQt::PushButton('&Shoot', this, "shoot"); - $shoot->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - $cannonField->connect($shoot, TQT_SIGNAL('clicked()'), TQT_SLOT('shoot()')); - - my $grid = TQt::GridLayout(this, 2, 2, 10); - $grid->addWidget($quit, 0, 0); - $grid->addWidget($cannonField, 1, 1); - $grid->setColStretch(1, 10); - - my $leftBox = TQt::VBoxLayout; - $grid->addLayout($leftBox, 1, 0); - $leftBox->addWidget($angle); - $leftBox->addWidget($force); - - my $topBox = TQt::HBoxLayout; - $grid->addLayout($topBox, 0, 1); - $topBox->addWidget($shoot); - $topBox->addStretch(1); - - $angle->setValue(60); - $force->setValue(25); - $angle->setFocus(); -} - -package main; -use TQt; -use MyWidget; - -TQt::Application::setColorSpec(&TQt::Application::CustomColor); -my $a = TQt::Application(\@ARGV); - -my $w = MyWidget; -$w->setGeometry(100, 100, 500, 355); -$a->setMainWidget($w); -$w->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t13/CannonField.pm b/PerlQt/tutorials/t13/CannonField.pm deleted file mode 100644 index ec220bc..0000000 --- a/PerlQt/tutorials/t13/CannonField.pm +++ /dev/null @@ -1,207 +0,0 @@ -package CannonField; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::signals - hit => [], - missed => [], - angleChanged => ['int'], - forceChanged => ['int'], - canShoot => ['bool']; -use TQt::slots - setAngle => ['int'], - setForce => ['int'], - shoot => [], - moveShot => [], - newTarget => []; -use TQt::attributes qw( - ang - f - - timerCount - autoShootTimer - shoot_ang - shoot_f - - target - - gameEnded -); -use POSIX qw(atan); - -sub angle () { ang } -sub force () { f } -sub gameOver () { gameEnded } - -sub NEW { - shift->SUPER::NEW(@_); - - ang = 45; - f = 0; - timerCount = 0; - autoShootTimer = TQt::Timer(this, "movement handler"); - this->connect(autoShootTimer, TQT_SIGNAL('timeout()'), TQT_SLOT('moveShot()')); - shoot_ang = 0; - shoot_f = 0; - target = TQt::Point(0, 0); - gameEnded = 0; - setPalette(TQt::Palette(TQt::Color(250, 250, 200))); - newTarget(); -} - -sub setAngle { - my $degrees = shift; - $degrees = 5 if $degrees < 5; - $degrees = 70 if $degrees > 70; - return if ang == $degrees; - ang = $degrees; - repaint(cannonRect(), 0); - emit angleChanged(ang); -} - -sub setForce { - my $newton = shift; - $newton = 0 if $newton < 0; - return if f == $newton; - f = $newton; - emit forceChanged(f); -} - -sub shoot { - return if isShooting(); - timerCount = 0; - shoot_ang = ang; - shoot_f = f; - autoShootTimer->start(50); - emit canShoot(0); -} - -sub newTarget { - my $r = TQt::Region(targetRect()); - target = TQt::Point(200 + int(rand(190)), - 10 + int(rand(255))); - repaint($r->unite(TQt::Region(targetRect()))); -} - -sub setGameOver { - return if gameEnded; - autoShootTimer->stop if isShooting(); - gameEnded = 1; - repaint(); -} - -sub restartGame { - autoShootTimer->stop if isShooting(); - gameEnded = 0; - repaint(); - emit canShoot(1); -} - -sub moveShot { - my $r = TQt::Region(shotRect()); - timerCount++; - - my $shotR = shotRect(); - - if($shotR->intersects(targetRect())) { - autoShootTimer->stop; - emit hit(); - emit canShoot(1); - } elsif($shotR->x > width() || $shotR->y > height()) { - autoShootTimer->stop; - emit missed(); - emit canShoot(1); - } else { - $r = $r->unite(TQt::Region($shotR)); - } - repaint($r); -} - -sub paintEvent { - my $e = shift; - my $updateR = $e->rect; - my $p = TQt::Painter(this); - - if(gameEnded) { - $p->setPen(&black); - $p->setFont(TQt::Font("Courier", 48, &TQt::Font::Bold)); - $p->drawText(rect(), &AlignCenter, "Game Over"); - } - paintCannon($p) if $updateR->intersects(cannonRect()); - paintShot($p) if isShooting() and $updateR->intersects(shotRect()); - paintTarget($p) if !gameEnded and $updateR->intersects(targetRect()); -} - -sub paintShot { - my $p = shift; - $p->setBrush(&black); - $p->setPen(&NoPen); - $p->drawRect(shotRect()); -} - -sub paintTarget { - my $p = shift; - $p->setBrush(&red); - $p->setPen(&black); - $p->drawRect(targetRect()); -} - -my $barrelRect = TQt::Rect(33, -4, 15, 8); - -sub paintCannon { - my $p = shift; - my $cr = cannonRect(); - my $pix = TQt::Pixmap($cr->size); - $pix->fill(this, $cr->topLeft); - - my $tmp = TQt::Painter($pix); - $tmp->setBrush(&blue); - $tmp->setPen(&NoPen); - - $tmp->translate(0, $pix->height - 1); - $tmp->drawPie(TQt::Rect(-35, -35, 70, 70), 0, 90*16); - $tmp->rotate(- ang); - $tmp->drawRect($barrelRect); - $tmp->end; - - $p->drawPixmap($cr->topLeft, $pix); -} - -sub cannonRect { - my $r = TQt::Rect(0, 0, 50, 50); - $r->moveBottomLeft(rect()->bottomLeft); - return $r; -} - -sub shotRect { - my $gravity = 4; - - my $time = timerCount / 4.0; - my $velocity = shoot_f; - my $radians = shoot_ang*3.14159265/180; - - my $velx = $velocity*cos($radians); - my $vely = $velocity*sin($radians); - my $x0 = ($barrelRect->right + 5)*cos($radians); - my $y0 = ($barrelRect->right + 5)*sin($radians); - my $x = $x0 + $velx*$time; - my $y = $y0 + $vely*$time - 0.5*$gravity*$time**2; - - my $r = TQt::Rect(0, 0, 6, 6); - $r->moveCenter(TQt::Point(int($x), height() - 1 - int($y))); - return $r; -} - -sub targetRect { - my $r = TQt::Rect(0, 0, 20, 10); - $r->moveCenter(TQt::Point(target->x, height() - 1 - target->y)); - return $r; -} - -sub isShooting { autoShootTimer->isActive } - -sub sizePolicy { - TQt::SizePolicy(&TQt::SizePolicy::Expanding, &TQt::SizePolicy::Expanding); -} - -1; diff --git a/PerlQt/tutorials/t13/GameBoard.pm b/PerlQt/tutorials/t13/GameBoard.pm deleted file mode 100644 index 52f5e9b..0000000 --- a/PerlQt/tutorials/t13/GameBoard.pm +++ /dev/null @@ -1,114 +0,0 @@ -package GameBoard; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::slots - fire => [], - hit => [], - missed => [], - newGame => []; -use TQt::attributes qw( - hits - shotsLeft - cannonField -); - -use LCDRange; -use CannonField; - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("&Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $angle = LCDRange("ANGLE", this, "angle"); - $angle->setRange(5, 70); - - my $force = LCDRange("FORCE", this, "force"); - $force->setRange(10, 50); - - cannonField = CannonField(this, "cannonField"); - - cannonField->connect($angle, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setAngle(int)')); - $angle->connect(cannonField, TQT_SIGNAL('angleChanged(int)'), TQT_SLOT('setValue(int)')); - - cannonField->connect($force, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setForce(int)')); - $force->connect(cannonField, TQT_SIGNAL('forceChanged(int)'), TQT_SLOT('setValue(int)')); - - this->connect(cannonField, TQT_SIGNAL('hit()'), TQT_SLOT('hit()')); - this->connect(cannonField, TQT_SIGNAL('missed()'), TQT_SLOT('missed()')); - - my $shoot = TQt::PushButton('&Shoot', this, "shoot"); - $shoot->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - this->connect($shoot, TQT_SIGNAL('clicked()'), TQT_SLOT('fire()')); - - $shoot->connect(cannonField, TQT_SIGNAL('canShoot(bool)'), TQT_SLOT('setEnabled(bool)')); - - my $restart = TQt::PushButton('&New Game', this, "newgame"); - $restart->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - this->connect($restart, TQT_SIGNAL('clicked()'), TQT_SLOT('newGame()')); - - hits = TQt::LCDNumber(2, this, "hits"); - shotsLeft = TQt::LCDNumber(2, this, "shotsleft"); - my $hitsL = TQt::Label("HITS", this, "hitsLabel"); - my $shotsLeftL = TQt::Label("SHOTS LEFT", this, "shotsLeftLabel"); - - my $grid = TQt::GridLayout(this, 2, 2, 10); - $grid->addWidget($quit, 0, 0); - $grid->addWidget(cannonField, 1, 1); - $grid->setColStretch(1, 10); - - my $leftBox = TQt::VBoxLayout; - $grid->addLayout($leftBox, 1, 0); - $leftBox->addWidget($angle); - $leftBox->addWidget($force); - - my $topBox = TQt::HBoxLayout; - $grid->addLayout($topBox, 0, 1); - $topBox->addWidget($shoot); - $topBox->addWidget(hits); - $topBox->addWidget($hitsL); - $topBox->addWidget(shotsLeft); - $topBox->addWidget($shotsLeftL); - $topBox->addStretch(1); - $topBox->addWidget($restart); - - $angle->setValue(60); - $force->setValue(25); - $angle->setFocus(); - - newGame(); -} - -sub fire { - return if cannonField->gameOver or cannonField->isShooting; - shotsLeft->display(int(shotsLeft->intValue - 1)); - cannonField->shoot; -} - -sub hit { - hits->display(int(hits->intValue + 1)); - if(shotsLeft->intValue == 0) { - cannonField->setGameOver; - } else { - cannonField->newTarget; - } -} - -sub missed { - cannonField->setGameOver if shotsLeft->intValue == 0; -} - -sub newGame { - shotsLeft->display(int(15)); - hits->display(0); - cannonField->restartGame; - cannonField->newTarget; -} - -1; diff --git a/PerlQt/tutorials/t13/LCDRange.pm b/PerlQt/tutorials/t13/LCDRange.pm deleted file mode 100644 index 1647e85..0000000 --- a/PerlQt/tutorials/t13/LCDRange.pm +++ /dev/null @@ -1,67 +0,0 @@ -package LCDRange; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::slots - setValue => ['int'], - setRange => ['int', 'int'], - setText => ['const char*']; -use TQt::signals - valueChanged => ['int']; -use TQt::attributes qw( - slider - label -); - -sub NEW { - my $class = shift; - my $s; - $s = shift if $_[0] and not ref $_[0]; - $class->SUPER::NEW(@_); - - init(); - setText($s) if $s; -} - - -sub init { - my $lcd = TQt::LCDNumber(2, this, "lcd"); - - slider = TQt::Slider(&Horizontal, this, "slider"); - slider->setRange(0, 99); - slider->setValue(0); - - label = TQt::Label(" ", this, "label"); - label->setAlignment(&AlignCenter); - - $lcd->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); - this->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SIGNAL('valueChanged(int)')); - - setFocusProxy(slider); - - my $l = TQt::VBoxLayout(this); - $l->addWidget($lcd, 1); - $l->addWidget(slider); - $l->addWidget(label); -} - -sub value { slider->value } - -sub text { label->text } - -sub setValue { slider->setValue(shift) } - -sub setRange { - my($minVal, $maxVal) = @_; - if($minVal < 0 || $maxVal > 99 || $minVal > $maxVal) { - warn "LCDRange::setRange($minVal,$maxVal)\n" . - "\tRange must be 0..99\n" . - "\tand minVal must not be greater than maxVal\n"; - return; - } - slider->setRange($minVal, $maxVal); -} - -sub setText { label->setText(shift) } - -1; diff --git a/PerlQt/tutorials/t13/t13.pl b/PerlQt/tutorials/t13/t13.pl deleted file mode 100644 index ef412ab..0000000 --- a/PerlQt/tutorials/t13/t13.pl +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; -use TQt; -use GameBoard; - -TQt::Application::setColorSpec(&TQt::Application::CustomColor); -my $a = TQt::Application(\@ARGV); - -my $gb = GameBoard; -$gb->setGeometry(100, 100, 500, 355); -$a->setMainWidget($gb); -$gb->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t14/CannonField.pm b/PerlQt/tutorials/t14/CannonField.pm deleted file mode 100644 index cbf675d..0000000 --- a/PerlQt/tutorials/t14/CannonField.pm +++ /dev/null @@ -1,256 +0,0 @@ -package CannonField; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::signals - hit => [], - missed => [], - angleChanged => ['int'], - forceChanged => ['int'], - canShoot => ['bool']; -use TQt::slots - setAngle => ['int'], - setForce => ['int'], - shoot => [], - moveShot => [], - newTarget => [], - setGameOver => [], - restartGame => []; -use TQt::attributes qw( - ang - f - - timerCount - autoShootTimer - shoot_ang - shoot_f - - target - - gameEnded - barrelPressed -); -use POSIX qw(atan); - -sub angle () { ang } -sub force () { f } -sub gameOver () { gameEnded } - -sub NEW { - shift->SUPER::NEW(@_); - - ang = 45; - f = 0; - timerCount = 0; - autoShootTimer = TQt::Timer(this, "movement handler"); - this->connect(autoShootTimer, TQT_SIGNAL('timeout()'), TQT_SLOT('moveShot()')); - shoot_ang = 0; - shoot_f = 0; - target = TQt::Point(0, 0); - gameEnded = 0; - barrelPressed = 0; - setPalette(TQt::Palette(TQt::Color(250, 250, 200))); - newTarget(); -} - -sub setAngle { - my $degrees = shift; - $degrees = 5 if $degrees < 5; - $degrees = 70 if $degrees > 70; - return if ang == $degrees; - ang = $degrees; - repaint(cannonRect(), 0); - emit angleChanged(ang); -} - -sub setForce { - my $newton = shift; - $newton = 0 if $newton < 0; - return if f == $newton; - f = $newton; - emit forceChanged(f); -} - -sub shoot { - return if isShooting(); - timerCount = 0; - shoot_ang = ang; - shoot_f = f; - autoShootTimer->start(50); - emit canShoot(0); -} - -sub newTarget { - my $r = TQt::Region(targetRect()); - target = TQt::Point(200 + int(rand(190)), - 10 + int(rand(255))); - repaint($r->unite(TQt::Region(targetRect()))); -} - -sub setGameOver { - return if gameEnded; - autoShootTimer->stop if isShooting(); - gameEnded = 1; - repaint(); -} - -sub restartGame { - autoShootTimer->stop if isShooting(); - gameEnded = 0; - repaint(); - emit canShoot(1); -} - -sub moveShot { - my $r = TQt::Region(shotRect()); - timerCount++; - - my $shotR = shotRect(); - - if($shotR->intersects(targetRect())) { - autoShootTimer->stop; - emit hit(); - emit canShoot(1); - } elsif($shotR->x > width() || $shotR->y > height() || - $shotR->intersects(barrierRect())) { - autoShootTimer->stop; - emit missed(); - emit canShoot(1); - } else { - $r = $r->unite(TQt::Region($shotR)); - } - repaint($r); -} - -sub mousePressEvent { - my $e = shift; - return if $e->button != &LeftButton; - barrelPressed = 1 if barrelHit($e->pos); -} - -sub mouseMoveEvent { - my $e = shift; - return unless barrelPressed; - my $pnt = $e->pos; - $pnt->setX(1) if $pnt->x <= 0; - $pnt->setY(height() - 1) if $pnt->y >= height(); - my $rad = atan((rect()->bottom - $pnt->y) / $pnt->x); - setAngle(int($rad*180/3.14159265)); -} - -sub mouseReleaseEvent { - my $e = shift; - barrelPressed = 0 if $e->button == &LeftButton; -} - -sub paintEvent { - my $e = shift; - my $updateR = $e->rect; - my $p = TQt::Painter(this); - - if(gameEnded) { - $p->setPen(&black); - $p->setFont(TQt::Font("Courier", 48, &TQt::Font::Bold)); - $p->drawText(rect(), &AlignCenter, "Game Over"); - } - paintCannon($p) if $updateR->intersects(cannonRect()); - paintBarrier($p) if $updateR->intersects(barrierRect()); - paintShot($p) if isShooting() and $updateR->intersects(shotRect()); - paintTarget($p) if !gameEnded and $updateR->intersects(targetRect()); -} - -sub paintShot { - my $p = shift; - $p->setBrush(&black); - $p->setPen(&NoPen); - $p->drawRect(shotRect()); -} - -sub paintTarget { - my $p = shift; - $p->setBrush(&red); - $p->setPen(&black); - $p->drawRect(targetRect()); -} - -sub paintBarrier { - my $p = shift; - $p->setBrush(&yellow); - $p->setPen(&black); - $p->drawRect(barrierRect()); -} - -my $barrelRect = TQt::Rect(33, -4, 15, 8); - -sub paintCannon { - my $p = shift; - my $cr = cannonRect(); - my $pix = TQt::Pixmap($cr->size); - $pix->fill(this, $cr->topLeft); - - my $tmp = TQt::Painter($pix); - $tmp->setBrush(&blue); - $tmp->setPen(&NoPen); - - $tmp->translate(0, $pix->height - 1); - $tmp->drawPie(TQt::Rect(-35, -35, 70, 70), 0, 90*16); - $tmp->rotate(- ang); - $tmp->drawRect($barrelRect); - $tmp->end; - - $p->drawPixmap($cr->topLeft, $pix); -} - -sub cannonRect { - my $r = TQt::Rect(0, 0, 50, 50); - $r->moveBottomLeft(rect()->bottomLeft); - return $r; -} - -sub shotRect { - my $gravity = 4; - - my $time = timerCount / 4.0; - my $velocity = shoot_f; - my $radians = shoot_ang*3.14159265/180; - - my $velx = $velocity*cos($radians); - my $vely = $velocity*sin($radians); - my $x0 = ($barrelRect->right + 5)*cos($radians); - my $y0 = ($barrelRect->right + 5)*sin($radians); - my $x = $x0 + $velx*$time; - my $y = $y0 + $vely*$time - 0.5*$gravity*$time**2; - - my $r = TQt::Rect(0, 0, 6, 6); - $r->moveCenter(TQt::Point(int($x), height() - 1 - int($y))); - return $r; -} - -sub targetRect { - my $r = TQt::Rect(0, 0, 20, 10); - $r->moveCenter(TQt::Point(target->x, height() - 1 - target->y)); - return $r; -} - -sub barrierRect { - return TQt::Rect(145, height() - 100, 15, 100); -} - -sub barrelHit { - my $p = shift; - my $mtx = TQt::WMatrix; - $mtx->translate(0, height() - 1); - $mtx->rotate(- ang); - $mtx = $mtx->invert; - return $barrelRect->contains($mtx->map($p)); -} - -sub isShooting { autoShootTimer->isActive } - -sub sizeHint { TQt::Size(400, 300) } - -sub sizePolicy { - TQt::SizePolicy(&TQt::SizePolicy::Expanding, &TQt::SizePolicy::Expanding); -} - -1; diff --git a/PerlQt/tutorials/t14/GameBoard.pm b/PerlQt/tutorials/t14/GameBoard.pm deleted file mode 100644 index a81deef..0000000 --- a/PerlQt/tutorials/t14/GameBoard.pm +++ /dev/null @@ -1,125 +0,0 @@ -package GameBoard; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::slots - fire => [], - hit => [], - missed => [], - newGame => []; -use TQt::attributes qw( - hits - shotsLeft - cannonField -); - -use LCDRange; -use CannonField; - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("&Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $angle = LCDRange("ANGLE", this, "angle"); - $angle->setRange(5, 70); - - my $force = LCDRange("FORCE", this, "force"); - $force->setRange(10, 50); - - my $box = TQt::VBox(this, "cannonFrame"); - $box->setFrameStyle($box->WinPanel | $box->Sunken); - - cannonField = CannonField($box, "cannonField"); - - cannonField->connect($angle, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setAngle(int)')); - $angle->connect(cannonField, TQT_SIGNAL('angleChanged(int)'), TQT_SLOT('setValue(int)')); - - cannonField->connect($force, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setForce(int)')); - $force->connect(cannonField, TQT_SIGNAL('forceChanged(int)'), TQT_SLOT('setValue(int)')); - - this->connect(cannonField, TQT_SIGNAL('hit()'), TQT_SLOT('hit()')); - this->connect(cannonField, TQT_SIGNAL('missed()'), TQT_SLOT('missed()')); - - my $shoot = TQt::PushButton('&Shoot', this, "shoot"); - $shoot->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - this->connect($shoot, TQT_SIGNAL('clicked()'), TQT_SLOT('fire()')); - - $shoot->connect(cannonField, TQT_SIGNAL('canShoot(bool)'), TQT_SLOT('setEnabled(bool)')); - - my $restart = TQt::PushButton('&New Game', this, "newgame"); - $restart->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - this->connect($restart, TQT_SIGNAL('clicked()'), TQT_SLOT('newGame()')); - - hits = TQt::LCDNumber(2, this, "hits"); - shotsLeft = TQt::LCDNumber(2, this, "shotsleft"); - my $hitsL = TQt::Label("HITS", this, "hitsLabel"); - my $shotsLeftL = TQt::Label("SHOTS LEFT", this, "shotsLeftLabel"); - - my $accel = TQt::Accel(this); - $accel->connectItem($accel->insertItem(TQt::KeySequence(int &Key_Enter)), - this, TQT_SLOT('fire()')); - $accel->connectItem($accel->insertItem(TQt::KeySequence(int &Key_Return)), - this, TQT_SLOT('fire()')); - $accel->connectItem($accel->insertItem(TQt::KeySequence(int &CTRL+&Key_Q)), - TQt::app, TQT_SLOT('quit()')); - - my $grid = TQt::GridLayout(this, 2, 2, 10); - $grid->addWidget($quit, 0, 0); - $grid->addWidget($box, 1, 1); - $grid->setColStretch(1, 10); - - my $leftBox = TQt::VBoxLayout; - $grid->addLayout($leftBox, 1, 0); - $leftBox->addWidget($angle); - $leftBox->addWidget($force); - - my $topBox = TQt::HBoxLayout; - $grid->addLayout($topBox, 0, 1); - $topBox->addWidget($shoot); - $topBox->addWidget(hits); - $topBox->addWidget($hitsL); - $topBox->addWidget(shotsLeft); - $topBox->addWidget($shotsLeftL); - $topBox->addStretch(1); - $topBox->addWidget($restart); - - $angle->setValue(60); - $force->setValue(25); - $angle->setFocus(); - - newGame(); -} - -sub fire { - return if cannonField->gameOver or cannonField->isShooting; - shotsLeft->display(int(shotsLeft->intValue - 1)); - cannonField->shoot; -} - -sub hit { - hits->display(int(hits->intValue + 1)); - if(shotsLeft->intValue == 0) { - cannonField->setGameOver; - } else { - cannonField->newTarget; - } -} - -sub missed { - cannonField->setGameOver if shotsLeft->intValue == 0; -} - -sub newGame { - shotsLeft->display(int(15)); - hits->display(0); - cannonField->restartGame; - cannonField->newTarget; -} - -1; diff --git a/PerlQt/tutorials/t14/LCDRange.pm b/PerlQt/tutorials/t14/LCDRange.pm deleted file mode 100644 index 1647e85..0000000 --- a/PerlQt/tutorials/t14/LCDRange.pm +++ /dev/null @@ -1,67 +0,0 @@ -package LCDRange; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::slots - setValue => ['int'], - setRange => ['int', 'int'], - setText => ['const char*']; -use TQt::signals - valueChanged => ['int']; -use TQt::attributes qw( - slider - label -); - -sub NEW { - my $class = shift; - my $s; - $s = shift if $_[0] and not ref $_[0]; - $class->SUPER::NEW(@_); - - init(); - setText($s) if $s; -} - - -sub init { - my $lcd = TQt::LCDNumber(2, this, "lcd"); - - slider = TQt::Slider(&Horizontal, this, "slider"); - slider->setRange(0, 99); - slider->setValue(0); - - label = TQt::Label(" ", this, "label"); - label->setAlignment(&AlignCenter); - - $lcd->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); - this->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SIGNAL('valueChanged(int)')); - - setFocusProxy(slider); - - my $l = TQt::VBoxLayout(this); - $l->addWidget($lcd, 1); - $l->addWidget(slider); - $l->addWidget(label); -} - -sub value { slider->value } - -sub text { label->text } - -sub setValue { slider->setValue(shift) } - -sub setRange { - my($minVal, $maxVal) = @_; - if($minVal < 0 || $maxVal > 99 || $minVal > $maxVal) { - warn "LCDRange::setRange($minVal,$maxVal)\n" . - "\tRange must be 0..99\n" . - "\tand minVal must not be greater than maxVal\n"; - return; - } - slider->setRange($minVal, $maxVal); -} - -sub setText { label->setText(shift) } - -1; diff --git a/PerlQt/tutorials/t14/t14.pl b/PerlQt/tutorials/t14/t14.pl deleted file mode 100644 index ef412ab..0000000 --- a/PerlQt/tutorials/t14/t14.pl +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; -use TQt; -use GameBoard; - -TQt::Application::setColorSpec(&TQt::Application::CustomColor); -my $a = TQt::Application(\@ARGV); - -my $gb = GameBoard; -$gb->setGeometry(100, 100, 500, 355); -$a->setMainWidget($gb); -$gb->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t2/t2.pl b/PerlQt/tutorials/t2/t2.pl deleted file mode 100644 index c7b76e4..0000000 --- a/PerlQt/tutorials/t2/t2.pl +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; -use TQt; - -my $a = TQt::Application(\@ARGV); - -my $quit = TQt::PushButton("Quit", undef); -$quit->resize(75, 30); -$quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - -$a->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - -$a->setMainWidget($quit); -$quit->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t3/t3.pl b/PerlQt/tutorials/t3/t3.pl deleted file mode 100644 index 24fcdf0..0000000 --- a/PerlQt/tutorials/t3/t3.pl +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; -use TQt; - -my $a = TQt::Application(\@ARGV); - -my $box = TQt::VBox; -$box->resize(200, 120); - -my $quit = TQt::PushButton("Quit", $box); -$quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - -$a->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - -$a->setMainWidget($box); -$box->show; - -exit $a->exec; diff --git a/PerlQt/tutorials/t4/t4.pl b/PerlQt/tutorials/t4/t4.pl deleted file mode 100644 index b4b0b1e..0000000 --- a/PerlQt/tutorials/t4/t4.pl +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; - -package MyWidget; -use TQt; -use TQt::isa qw(TQt::Widget); - -sub NEW { - shift->SUPER::NEW(@_); - - setMinimumSize(200, 120); - setMaximumSize(200, 120); - - my $quit = TQt::PushButton("Quit", this, "quit"); - $quit->setGeometry(62, 40, 75, 30); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); -} - -package main; -use MyWidget; - -my $a = TQt::Application(\@ARGV); - -my $w = MyWidget; -$w->setGeometry(100, 100, 200, 120); -$a->setMainWidget($w); -$w->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t5/t5.pl b/PerlQt/tutorials/t5/t5.pl deleted file mode 100644 index 9990c3e..0000000 --- a/PerlQt/tutorials/t5/t5.pl +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; - -package MyWidget; -use TQt; -use TQt::isa qw(TQt::VBox); - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $lcd = TQt::LCDNumber(2, this, "lcd"); - - my $slider = TQt::Slider(&Horizontal, this, "slider"); - $slider->setRange(0, 99); - $slider->setValue(0); - - $lcd->connect($slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); -} - -package main; -use MyWidget; - -my $a = TQt::Application(\@ARGV); - -my $w = MyWidget; -$a->setMainWidget($w); -$w->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t6/t6.pl b/PerlQt/tutorials/t6/t6.pl deleted file mode 100644 index b50c415..0000000 --- a/PerlQt/tutorials/t6/t6.pl +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; - -package LCDRange; -use TQt; -use TQt::isa qw(TQt::VBox); - -sub NEW { - shift->SUPER::NEW(@_); - - my $lcd = TQt::LCDNumber(2, this, "lcd"); - my $slider = TQt::Slider(&Horizontal, this, "slider"); - $slider->setRange(0, 99); - $slider->setValue(0); - $lcd->connect($slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); -} - -package MyWidget; -use TQt; -use TQt::isa qw(TQt::VBox); -use LCDRange; - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $grid = TQt::Grid(4, this); - - for(0..3) { - for(0..3) { - LCDRange($grid); - } - } -} - -package main; -use MyWidget; - -my $a = TQt::Application(\@ARGV); - -my $w = MyWidget; -$a->setMainWidget($w); -$w->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t7/LCDRange.pm b/PerlQt/tutorials/t7/LCDRange.pm deleted file mode 100644 index 9bc48cb..0000000 --- a/PerlQt/tutorials/t7/LCDRange.pm +++ /dev/null @@ -1,29 +0,0 @@ -package LCDRange; -use strict; -use TQt; -use TQt::isa qw(TQt::VBox); -use TQt::slots setValue => ['int']; -use TQt::signals valueChanged => ['int']; -use TQt::attributes qw(slider); - -sub NEW { - shift->SUPER::NEW(@_); - - my $lcd = TQt::LCDNumber(2, this, "lcd"); - - my $slider = TQt::Slider(&Horizontal, this, "slider"); - slider = $slider; - slider->setRange(0, 99); - slider->setValue(0); - $lcd->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); - this->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SIGNAL('valueChanged(int)')); -} - -sub value { slider->value } - -sub setValue { - my $value = shift; - slider->setValue($value); -} - -1; diff --git a/PerlQt/tutorials/t7/t7.pl b/PerlQt/tutorials/t7/t7.pl deleted file mode 100644 index 0d0d0d2..0000000 --- a/PerlQt/tutorials/t7/t7.pl +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; - -package MyWidget; -use TQt; -use TQt::isa qw(TQt::VBox); - -use LCDRange; - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $grid = TQt::Grid(4, this); - - my $previous; - for my $r (0..3) { - for my $c (0..3) { - my $lr = LCDRange($grid); - $previous->connect( - $lr, TQT_SIGNAL('valueChanged(int)'), - TQT_SLOT('setValue(int)')) if $previous; - $previous = $lr; - } - } -} - -package main; -use MyWidget; - -my $a = TQt::Application(\@ARGV); -my $w = MyWidget; -$a->setMainWidget($w); -$w->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t8/CannonField.pm b/PerlQt/tutorials/t8/CannonField.pm deleted file mode 100644 index 1c23244..0000000 --- a/PerlQt/tutorials/t8/CannonField.pm +++ /dev/null @@ -1,43 +0,0 @@ -package CannonField; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::signals - angleChanged => ['int']; -use TQt::slots - setAngle => ['int']; -use TQt::attributes qw( - ang -); -use POSIX qw(atan); - -sub angle () { ang } - -sub NEW { - shift->SUPER::NEW(@_); - - ang = 45; - setPalette(TQt::Palette(TQt::Color(250, 250, 200))); -} - -sub setAngle { - my $degrees = shift; - $degrees = 5 if $degrees < 5; - $degrees = 70 if $degrees > 70; - return if ang == $degrees; - ang = $degrees; - repaint(); - emit angleChanged(ang); -} - -sub paintEvent { - my $s = "Angle = " . ang; - my $p = TQt::Painter(this); - $p->drawText(200, 200, $s); -} - -sub sizePolicy { - TQt::SizePolicy(&TQt::SizePolicy::Expanding, &TQt::SizePolicy::Expanding); -} - -1; diff --git a/PerlQt/tutorials/t8/LCDRange.pm b/PerlQt/tutorials/t8/LCDRange.pm deleted file mode 100644 index ab63af0..0000000 --- a/PerlQt/tutorials/t8/LCDRange.pm +++ /dev/null @@ -1,43 +0,0 @@ -package LCDRange; -use strict; -use TQt; -use TQt::isa qw(TQt::VBox); -use TQt::slots - setValue => ['int'], - setRange => ['int', 'int']; -use TQt::signals - valueChanged => ['int']; -use TQt::attributes qw( - slider -); - -sub NEW { - shift->SUPER::NEW(@_); - - my $lcd = TQt::LCDNumber(2, this, "lcd"); - - slider = TQt::Slider(&Horizontal, this, "slider"); - slider->setRange(0, 99); - slider->setValue(0); - $lcd->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); - this->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SIGNAL('valueChanged(int)')); - - setFocusProxy(slider); -} - -sub value { slider->value } - -sub setValue { slider->setValue(shift) } - -sub setRange { - my($minVal, $maxVal) = @_; - if($minVal < 0 || $maxVal > 99 || $minVal > $maxVal) { - warn "LCDRange::setRange($minVal,$maxVal)\n" . - "\tRange must be 0..99\n" . - "\tand minVal must not be greater than maxVal\n"; - return; - } - slider->setRange($minVal, $maxVal); -} - -1; diff --git a/PerlQt/tutorials/t8/t8.pl b/PerlQt/tutorials/t8/t8.pl deleted file mode 100644 index 620f912..0000000 --- a/PerlQt/tutorials/t8/t8.pl +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; - -package MyWidget; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); - -use LCDRange; -use CannonField; - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $angle = LCDRange(this, "angle"); - $angle->setRange(5, 70); - - my $cannonField = CannonField(this, "cannonField"); - - $cannonField->connect($angle, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setAngle(int)')); - $angle->connect($cannonField, TQT_SIGNAL('angleChanged(int)'), TQT_SLOT('setValue(int)')); - - my $grid = TQt::GridLayout(this, 2, 2, 10); - $grid->addWidget($quit, 0, 0); - $grid->addWidget($angle, 1, 0, &AlignTop); - $grid->addWidget($cannonField, 1, 1); - $grid->setColStretch(1, 10); - - $angle->setValue(60); - $angle->setFocus(); -} - -package main; -use TQt; -use MyWidget; - -my $a = TQt::Application(\@ARGV); - -my $w = MyWidget; -$w->setGeometry(100, 100, 500, 355); -$a->setMainWidget($w); -$w->show; -exit $a->exec; diff --git a/PerlQt/tutorials/t9/CannonField.pm b/PerlQt/tutorials/t9/CannonField.pm deleted file mode 100644 index 1500480..0000000 --- a/PerlQt/tutorials/t9/CannonField.pm +++ /dev/null @@ -1,48 +0,0 @@ -package CannonField; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); -use TQt::signals - angleChanged => ['int']; -use TQt::slots - setAngle => ['int']; -use TQt::attributes qw( - ang -); -use POSIX qw(atan); - -sub angle () { ang } - -sub NEW { - shift->SUPER::NEW(@_); - - ang = 45; - setPalette(TQt::Palette(TQt::Color(250, 250, 200))); -} - -sub setAngle { - my $degrees = shift; - $degrees = 5 if $degrees < 5; - $degrees = 70 if $degrees > 70; - return if ang == $degrees; - ang = $degrees; - repaint(); - emit angleChanged(ang); -} - -sub paintEvent { - my $p = TQt::Painter(this); - $p->setBrush(&blue); - $p->setPen(&NoPen); - - $p->translate(0, rect()->bottom); - $p->drawPie(TQt::Rect(-35, -35, 70, 70), 0, 90*16); - $p->rotate(- ang); - $p->drawRect(TQt::Rect(33, -4, 15, 8)); -} - -sub sizePolicy { - TQt::SizePolicy(&TQt::SizePolicy::Expanding, &TQt::SizePolicy::Expanding); -} - -1; diff --git a/PerlQt/tutorials/t9/LCDRange.pm b/PerlQt/tutorials/t9/LCDRange.pm deleted file mode 100644 index ab63af0..0000000 --- a/PerlQt/tutorials/t9/LCDRange.pm +++ /dev/null @@ -1,43 +0,0 @@ -package LCDRange; -use strict; -use TQt; -use TQt::isa qw(TQt::VBox); -use TQt::slots - setValue => ['int'], - setRange => ['int', 'int']; -use TQt::signals - valueChanged => ['int']; -use TQt::attributes qw( - slider -); - -sub NEW { - shift->SUPER::NEW(@_); - - my $lcd = TQt::LCDNumber(2, this, "lcd"); - - slider = TQt::Slider(&Horizontal, this, "slider"); - slider->setRange(0, 99); - slider->setValue(0); - $lcd->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('display(int)')); - this->connect(slider, TQT_SIGNAL('valueChanged(int)'), TQT_SIGNAL('valueChanged(int)')); - - setFocusProxy(slider); -} - -sub value { slider->value } - -sub setValue { slider->setValue(shift) } - -sub setRange { - my($minVal, $maxVal) = @_; - if($minVal < 0 || $maxVal > 99 || $minVal > $maxVal) { - warn "LCDRange::setRange($minVal,$maxVal)\n" . - "\tRange must be 0..99\n" . - "\tand minVal must not be greater than maxVal\n"; - return; - } - slider->setRange($minVal, $maxVal); -} - -1; diff --git a/PerlQt/tutorials/t9/t9.pl b/PerlQt/tutorials/t9/t9.pl deleted file mode 100644 index 779d859..0000000 --- a/PerlQt/tutorials/t9/t9.pl +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/perl -w -use strict; -use blib; - -package MyWidget; -use strict; -use TQt; -use TQt::isa qw(TQt::Widget); - -use LCDRange; -use CannonField; - -sub NEW { - shift->SUPER::NEW(@_); - - my $quit = TQt::PushButton("&Quit", this, "quit"); - $quit->setFont(TQt::Font("Times", 18, &TQt::Font::Bold)); - - TQt::app->connect($quit, TQT_SIGNAL('clicked()'), TQT_SLOT('quit()')); - - my $angle = LCDRange(this, "angle"); - $angle->setRange(5, 70); - - my $cannonField = CannonField(this, "cannonField"); - - $cannonField->connect($angle, TQT_SIGNAL('valueChanged(int)'), TQT_SLOT('setAngle(int)')); - $angle->connect($cannonField, TQT_SIGNAL('angleChanged(int)'), TQT_SLOT('setValue(int)')); - - my $grid = TQt::GridLayout(this, 2, 2, 10); - $grid->addWidget($quit, 0, 0); - $grid->addWidget($angle, 1, 0, &AlignTop); - $grid->addWidget($cannonField, 1, 1); - $grid->setColStretch(1, 10); - - $angle->setValue(60); - $angle->setFocus(); -} - -package main; -use TQt; -use MyWidget; - -TQt::Application::setColorSpec(&TQt::Application::CustomColor); -my $a = TQt::Application(\@ARGV); - -my $w = MyWidget; -$w->setGeometry(100, 100, 500, 355); -$a->setMainWidget($w); -$w->show; -exit $a->exec; |