summaryrefslogtreecommitdiffstats
path: root/PerlQt/examples/aclock/AnalogClock.pm
diff options
context:
space:
mode:
Diffstat (limited to 'PerlQt/examples/aclock/AnalogClock.pm')
-rw-r--r--PerlQt/examples/aclock/AnalogClock.pm137
1 files changed, 0 insertions, 137 deletions
diff --git a/PerlQt/examples/aclock/AnalogClock.pm b/PerlQt/examples/aclock/AnalogClock.pm
deleted file mode 100644
index 0a52c44..0000000
--- a/PerlQt/examples/aclock/AnalogClock.pm
+++ /dev/null
@@ -1,137 +0,0 @@
-package AnalogClock;
-use TQt;
-use TQt::isa qw(TQt::Widget);
-use TQt::slots
- setTime => ['const TQTime&'],
- drawClock => ['TQPainter*'],
- timeout => [];
-use TQt::attributes qw(
- clickPos
- _time
-);
-
-#
-# Constructs an analog clock widget that uses an internal TQTimer
-#
-
-sub NEW {
- shift->SUPER::NEW(@_);
- _time = TQt::Time::currentTime(); # get current time
- my $internalTimer = TQt::Timer(this); # create internal timer
- this->connect($internalTimer, TQT_SIGNAL('timeout()'), TQT_SLOT('timeout()'));
- $internalTimer->start(5000); # emit signal every 5 seconds
-}
-
-sub mousePressEvent {
- my $e = shift;
- if(isTopLevel()) {
- # Lack of operators is really noticable here
- my $topLeft = TQt::Point(
- geometry()->topLeft->x - frameGeometry()->topLeft->x,
- geometry()->topLeft->y - frameGeometry()->topLeft->y
- );
- clickPos = TQt::Point($e->pos->x + $topLeft->x,
- $e->pos->y + $topLeft->y);
- }
-}
-
-sub mouseMoveEvent {
- my $e = shift;
- if(isTopLevel()) {
- move(TQt::Point($e->globalPos->x - clickPos->x,
- $e->globalPos->y - clickPos->y));
- }
-}
-
-sub setTime {
- my $t = shift;
- timeout();
-}
-
-#
-# The TQTimer::timeout() signal is received by this slot.
-#
-
-sub timeout {
- my $new_time = TQt::Time::currentTime(); # get the current time
- _time = _time->addSecs(5);
- if($new_time->minute != _time->minute) { # minute has changed
- if(autoMask()) {
- updateMask();
- } else {
- update();
- }
- }
-}
-
-sub paintEvent {
- return if autoMask();
- my $paint = TQt::Painter(this);
- $paint->setBrush(colorGroup()->foreground);
- drawClock($paint);
-}
-
-# If clock is transparent, we use updateMask()
-# instead of paintEvent()
-
-sub updateMask { # paint clock mask
- my $bm = TQt::Bitmap(size());
- $bm->fill(&color0); # transparent
-
- my $paint = TQt::Painter;
- $paint->begin($bm, this);
- $paint->setBrush(&color1); # use non-transparent color
- $paint->setPen(&color1);
-
- drawClock($paint);
-
- $paint->end;
- setMask($bm);
-}
-
-#
-# The clock is painted using a 1000x1000 square coordinate system, in
-# the centered square, as big as possible. The painter's pen and
-# brush colors are used.
-#
-sub drawClock {
- my $paint = shift;
- $paint->save;
-
- $paint->setWindow(-500,-500, 1000,1000);
-
- my $v = $paint->viewport;
- my $d = min($v->width, $v->height);
- $paint->setViewport($v->left + ($v->width-$d)/2,
- $v->top - ($v->height-$d)/2, $d, $d);
-
- # _time = TQt::Time::currentTime();
- my $pts = TQt::PointArray();
-
- $paint->save;
- $paint->rotate(30*(_time->hour%12-3) + _time->minute/2);
- $pts->setPoints([-20,0, 0,-20, 300,0, 0,20]);
- $paint->drawConvexPolygon($pts);
- $paint->restore;
-
- $paint->save;
- $paint->rotate((_time->minute-15)*6);
- $pts->setPoints([-10,0, 0,-10, 400,0, 0,10]);
- $paint->drawConvexPolygon($pts);
- $paint->restore;
-
- for(1 .. 12) {
- $paint->drawLine(440,0, 460,0);
- $paint->rotate(30);
- }
-
- $paint->restore;
-}
-
-sub setAutoMask {
- my $b = shift;
- setBackgroundMode($b ? &PaletteForeground : &PaletteBackground);
- TQt::Widget::setAutoMask($b);
-}
-
-1;