[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Help-smalltalk] [PATCH 13/15] gtktools: Move the Clock/Tetris to the GT
From: |
Holger Hans Peter Freyther |
Subject: |
[Help-smalltalk] [PATCH 13/15] gtktools: Move the Clock/Tetris to the GTKTools |
Date: |
Mon, 8 Apr 2013 11:30:29 +0200 |
One can now use gst-run --start GTKTools-Example-Tetris to start
the tetris game.
---
.gitignore | 2 +
configure.ac | 2 +
packages/gtktools/Examples/Clock/GtkClock.st | 165 +++++++++
packages/gtktools/Examples/Clock/Makefile.frag | 5 +
packages/gtktools/Examples/Clock/package.xml | 9 +
packages/gtktools/Examples/Tetris/BlockWidget.st | 44 +++
packages/gtktools/Examples/Tetris/HighScores.st | 36 ++
packages/gtktools/Examples/Tetris/Makefile.frag | 5 +
packages/gtktools/Examples/Tetris/Score.st | 24 ++
packages/gtktools/Examples/Tetris/Tetris.st | 390 +++++++++++++++++++
packages/gtktools/Examples/Tetris/TetrisField.st | 179 +++++++++
.../gtktools/Examples/Tetris/TetrisFieldWidget.st | 57 +++
packages/gtktools/Examples/Tetris/TetrisPiece.st | 174 +++++++++
packages/gtktools/Examples/Tetris/TetrisPieceI.st | 61 +++
packages/gtktools/Examples/Tetris/TetrisPieceJ.st | 61 +++
packages/gtktools/Examples/Tetris/TetrisPieceL.st | 61 +++
packages/gtktools/Examples/Tetris/TetrisPieceO.st | 61 +++
packages/gtktools/Examples/Tetris/TetrisPieceS.st | 61 +++
packages/gtktools/Examples/Tetris/TetrisPieceT.st | 60 +++
.../gtktools/Examples/Tetris/TetrisPieceWidget.st | 57 +++
packages/gtktools/Examples/Tetris/TetrisPieceZ.st | 61 +++
packages/gtktools/Examples/Tetris/package.xml | 23 ++
packages/visualgst/Clock/GtkClock.st | 165 ---------
packages/visualgst/Makefile.frag | 2 +-
packages/visualgst/Tetris/BlockWidget.st | 44 ---
packages/visualgst/Tetris/HighScores.st | 37 --
packages/visualgst/Tetris/Score.st | 25 --
packages/visualgst/Tetris/Tetris.st | 391 --------------------
packages/visualgst/Tetris/TetrisField.st | 180 ---------
packages/visualgst/Tetris/TetrisFieldWidget.st | 57 ---
packages/visualgst/Tetris/TetrisPiece.st | 175 ---------
packages/visualgst/Tetris/TetrisPieceI.st | 62 ----
packages/visualgst/Tetris/TetrisPieceJ.st | 62 ----
packages/visualgst/Tetris/TetrisPieceL.st | 62 ----
packages/visualgst/Tetris/TetrisPieceO.st | 62 ----
packages/visualgst/Tetris/TetrisPieceS.st | 62 ----
packages/visualgst/Tetris/TetrisPieceT.st | 60 ---
packages/visualgst/Tetris/TetrisPieceWidget.st | 57 ---
packages/visualgst/Tetris/TetrisPieceZ.st | 62 ----
packages/visualgst/package.xml | 30 --
40 files changed, 1599 insertions(+), 1594 deletions(-)
create mode 100644 packages/gtktools/Examples/Clock/GtkClock.st
create mode 100644 packages/gtktools/Examples/Clock/Makefile.frag
create mode 100644 packages/gtktools/Examples/Clock/package.xml
create mode 100644 packages/gtktools/Examples/Tetris/BlockWidget.st
create mode 100644 packages/gtktools/Examples/Tetris/HighScores.st
create mode 100644 packages/gtktools/Examples/Tetris/Makefile.frag
create mode 100644 packages/gtktools/Examples/Tetris/Score.st
create mode 100644 packages/gtktools/Examples/Tetris/Tetris.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisField.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisFieldWidget.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisPiece.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisPieceI.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisPieceJ.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisPieceL.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisPieceO.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisPieceS.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisPieceT.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisPieceWidget.st
create mode 100644 packages/gtktools/Examples/Tetris/TetrisPieceZ.st
create mode 100644 packages/gtktools/Examples/Tetris/package.xml
delete mode 100644 packages/visualgst/Clock/GtkClock.st
delete mode 100644 packages/visualgst/Tetris/BlockWidget.st
delete mode 100644 packages/visualgst/Tetris/HighScores.st
delete mode 100644 packages/visualgst/Tetris/Score.st
delete mode 100644 packages/visualgst/Tetris/Tetris.st
delete mode 100644 packages/visualgst/Tetris/TetrisField.st
delete mode 100644 packages/visualgst/Tetris/TetrisFieldWidget.st
delete mode 100644 packages/visualgst/Tetris/TetrisPiece.st
delete mode 100644 packages/visualgst/Tetris/TetrisPieceI.st
delete mode 100644 packages/visualgst/Tetris/TetrisPieceJ.st
delete mode 100644 packages/visualgst/Tetris/TetrisPieceL.st
delete mode 100644 packages/visualgst/Tetris/TetrisPieceO.st
delete mode 100644 packages/visualgst/Tetris/TetrisPieceS.st
delete mode 100644 packages/visualgst/Tetris/TetrisPieceT.st
delete mode 100644 packages/visualgst/Tetris/TetrisPieceWidget.st
delete mode 100644 packages/visualgst/Tetris/TetrisPieceZ.st
diff --git a/.gitignore b/.gitignore
index 8e8fe08..d7a3ac0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -63,6 +63,8 @@ packages/gtk/sizeof
packages/gtk/sizeof.c
packages/gtk/structs
packages/gtktools/stamp-classes
+packages/gtktools/Examples/Clock/stamp-classes
+packages/gtktools/Examples/Tetris/stamp-classes
packages/i18n/ref-add.sed
packages/i18n/ref-del.sed
packages/net/gnutls-wrapper
diff --git a/configure.ac b/configure.ac
index 5305622..c447b1c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -588,6 +588,8 @@ GST_PACKAGE_ENABLE([Swazoo], [swazoo-httpd])
GST_PACKAGE_ENABLE([Sockets], [sockets], [], [gst_cv_sockets])
GST_PACKAGE_ENABLE([VFSAddOns], [vfs], [], [], [Makefile])
GST_PACKAGE_ENABLE([GTKTools], [gtktools])
+GST_PACKAGE_ENABLE([GTKTools-Example-Clock], [gtktools/Examples/Clock])
+GST_PACKAGE_ENABLE([GTKTools-Example-Tetris], [gtktools/Examples/Tetris])
GST_PACKAGE_ENABLE([VisualGST], [visualgst])
GST_PACKAGE_ENABLE([XML-XMLNodeBuilder], [xml/builder])
GST_PACKAGE_ENABLE([XML-DOM], [xml/dom])
diff --git a/packages/gtktools/Examples/Clock/GtkClock.st
b/packages/gtktools/Examples/Clock/GtkClock.st
new file mode 100644
index 0000000..42e0624
--- /dev/null
+++ b/packages/gtktools/Examples/Clock/GtkClock.st
@@ -0,0 +1,165 @@
+Smalltalk.Object subclass: GtkClock [
+ | canvas hour minute process radius second window x y |
+
+ GtkClock class >> open [
+ <category: 'user interface'>
+
+ ^ (self new)
+ initialize;
+ showAll;
+ yourself
+ ]
+
+ GtkClock class >> openSized: aPoint [
+ <category: 'user interface'>
+
+ ^ (self new)
+ initialize;
+ resize: aPoint;
+ showAll;
+ yourself
+ ]
+
+ quit [
+ <category: 'events'>
+
+ process terminate.
+ window hide
+ ]
+
+ time [
+ <category: 'time'>
+
+ | now |
+ now := DateTime now.
+ hour := now hour.
+ minute := now minute.
+ second := now second.
+ ]
+
+ clearArea: aGtkAllocation [
+ <category: 'drawing'>
+
+ | res |
+ res := aGtkAllocation castTo: (CIntType arrayType: 4).
+
+ canvas saveWhile: [
+ canvas
+ rectangle: ((address@hidden) extent: ((res at: 2) @ (res at:
3)));
+ operator: #clear;
+ fill ]
+ ]
+
+ drawClockCircle: context [
+ <category: 'drawing'>
+
+ context
+ lineWidth: 6;
+ stroke: [ context arc: address@hidden radius: radius from: 0 to:
Float pi * 2 ]
+ ]
+
+ drawHourMarker: context [
+ <category: 'drawing'>
+
+ 1 to: 12 do: [ :i |
+ context
+ lineWidth: 4;
+ stroke: [ | inset |
+ inset := 0.1 * radius.
+ context
+ moveTo: (x + ((radius - inset) * (i * Float pi / 6.0)
cos)) @ (y + ((radius - inset) * (i * Float pi / 6.0) sin));
+ lineTo: (x + (radius * (i * Float pi / 6.0) cos)) @ (y
+ (radius * (i * Float pi / 6.0) sin)) ] ]
+ ]
+
+ drawClockLine: context angle: anAngFloat [
+ <category: 'drawing'>
+
+ context
+ lineWidth: 4;
+ paint: [
+ context stroke: [
+ context
+ sourceRed: 1 green: 0.2 blue: 0.2 alpha: 1.0;
+ moveTo: address@hidden;
+ lineTo: (x + (radius * anAngFloat cos)) @ (y +
(radius * anAngFloat sin)) ] ]
+ withAlpha: 0.64
+ ]
+
+ drawHourLine: context [
+ <category: 'drawing'>
+
+ self drawClockLine: context angle: (hour \\ 12 * (Float pi / 6.0)) -
(Float pi / 2.0).
+ ]
+
+ drawMinuteLine: context [
+ <category: 'drawing'>
+
+ self drawClockLine: context angle: (minute * (Float pi / 30.0)) -
(Float pi / 2.0)
+ ]
+
+ drawSecondLine: context [
+ <category: 'drawing'>
+
+ self drawClockLine: context angle: (second * (Float pi / 30.0)) -
(Float pi / 2.0)
+ ]
+
+ drawClock: context [
+ <category: 'drawing'>
+
+ self
+ drawClockCircle: context;
+ drawHourMarker: context;
+ drawHourLine: context;
+ drawMinuteLine: context;
+ drawSecondLine: context
+ ]
+
+ expose: aGtkWidget event: aGdkEventExpose [
+
+ aGtkWidget getWindow withContextDo: [ :cr |
+ canvas := cr.
+
+ x := 128.
+ y := 128.
+
+ self
+ clearArea: aGtkWidget getAllocation;
+ time;
+ drawClock: cr ].
+
+ ^ true
+ ]
+
+ initialize [
+ <category: 'intialization'>
+
+ window := (GTK.GtkWindow new: GTK.Gtk gtkWindowToplevel).
+ window
+ setColormap: window getScreen getRgbaColormap;
+ connectSignal: 'expose_event' to: self selector: #'expose:event:';
+ connectSignal: 'delete-event' to: self selector: #'delete:event:';
+ setDecorated: false.
+ radius := 100
+ ]
+
+ delete: aGtkWidget event: aGdkEvent [
+ <category: 'windows event'>
+
+ self quit.
+ ^ true
+ ]
+
+ resize: aPoint [
+ <category: 'user interface'>
+
+ window resize: aPoint x height: aPoint y
+ ]
+
+ showAll [
+ | delay |
+
+ delay := Delay forSeconds: 1.
+ window showAll.
+ process := [ [ true ] whileTrue: [ window queueDraw. delay wait ] ] fork
+ ]
+]
diff --git a/packages/gtktools/Examples/Clock/Makefile.frag
b/packages/gtktools/Examples/Clock/Makefile.frag
new file mode 100644
index 0000000..44a1b4b
--- /dev/null
+++ b/packages/gtktools/Examples/Clock/Makefile.frag
@@ -0,0 +1,5 @@
+GTKTools-Example-Clock_FILES = \
+packages/gtktools/Examples/Clock/GtkClock.st
+$(GTKTools-Example-Clock_FILES):
+$(srcdir)/packages/gtktools/Examples/Clock/stamp-classes:
$(GTKTools-Example-Clock_FILES)
+ touch $(srcdir)/packages/gtktools/Examples/Clock/stamp-classes
diff --git a/packages/gtktools/Examples/Clock/package.xml
b/packages/gtktools/Examples/Clock/package.xml
new file mode 100644
index 0000000..dbde9cc
--- /dev/null
+++ b/packages/gtktools/Examples/Clock/package.xml
@@ -0,0 +1,9 @@
+<package>
+ <name>GTKTools-Example-Clock</name>
+ <namespace>Clock</namespace>
+ <prereq>GTKTools</prereq>
+
+ <filein>GtkClock.st</filein>
+ <start>Clock.GtkClock open.
+ GTK.Gtk main</start>
+</package>
diff --git a/packages/gtktools/Examples/Tetris/BlockWidget.st
b/packages/gtktools/Examples/Tetris/BlockWidget.st
new file mode 100644
index 0000000..d5ff04c
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/BlockWidget.st
@@ -0,0 +1,44 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+TetrisPieceWidget subclass: BlockWidget [
+
+ drawOn: aCanvas [
+ <category: 'drawing'>
+
+ | linear |
+ linear := Cairo.LinearGradient from: position to: (position x + size@
position y + size).
+ linear addStopAt: 0 color: color.
+ linear addStopAt: 1 color: Cairo.Color black.
+
+ aCanvas
+ fill: [ aCanvas rectangle: (position extent: address@hidden) ]
+ with: linear
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/HighScores.st
b/packages/gtktools/Examples/Tetris/HighScores.st
new file mode 100644
index 0000000..6c21313
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/HighScores.st
@@ -0,0 +1,36 @@
+Object subclass: HighScores [
+
+ | highScores maxScores |
+
+ HighScores class >> newSized: anInteger [
+ <category: 'instance creation'>
+
+ ^ self new
+ maxScores: anInteger;
+ yourself
+ ]
+
+ highScores [
+ <category: 'accessing'>
+
+ ^ highScores ifNil: [ highScores := OrderedCollection new ]
+ ]
+
+ maxScores: anInteger [
+ <category: 'accessing'>
+
+ maxScores := anInteger
+ ]
+
+ addScore: aScore [
+ <category: 'updating'>
+
+ | pos |
+ pos := 0.
+ self highScores doWithIndex: [ :each :index |
+ each < index ifTrue: [ pos := index ] ].
+ pos = 0 ifTrue: [ ^ self ].
+ self highScores add: aScore after: pos.
+ self highScores size > self maxScores ifTrue: [ self highScores
removeLast ]
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/Makefile.frag
b/packages/gtktools/Examples/Tetris/Makefile.frag
new file mode 100644
index 0000000..a186062
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/Makefile.frag
@@ -0,0 +1,5 @@
+GTKTools-Example-Tetris_FILES = \
+packages/gtktools/Examples/Tetris/HighScores.st
packages/gtktools/Examples/Tetris/Score.st
packages/gtktools/Examples/Tetris/TetrisPieceWidget.st
packages/gtktools/Examples/Tetris/BlockWidget.st
packages/gtktools/Examples/Tetris/TetrisField.st
packages/gtktools/Examples/Tetris/TetrisPiece.st
packages/gtktools/Examples/Tetris/TetrisPieceI.st
packages/gtktools/Examples/Tetris/TetrisPieceJ.st
packages/gtktools/Examples/Tetris/TetrisPieceL.st
packages/gtktools/Examples/Tetris/TetrisPieceO.st
packages/gtktools/Examples/Tetris/TetrisPieceS.st
packages/gtktools/Examples/Tetris/TetrisPieceT.st
packages/gtktools/Examples/Tetris/TetrisPieceZ.st
packages/gtktools/Examples/Tetris/Tetris.st
+$(GTKTools-Example-Tetris_FILES):
+$(srcdir)/packages/gtktools/Examples/Tetris/stamp-classes:
$(GTKTools-Example-Tetris_FILES)
+ touch $(srcdir)/packages/gtktools/Examples/Tetris/stamp-classes
diff --git a/packages/gtktools/Examples/Tetris/Score.st
b/packages/gtktools/Examples/Tetris/Score.st
new file mode 100644
index 0000000..967e7df
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/Score.st
@@ -0,0 +1,24 @@
+Object subclass: Score [
+
+ Score class >> score: anInteger [
+ <category: 'instance creation'>
+
+ ^ self new
+ score: anInteger;
+ yourself
+ ]
+
+ | score |
+
+ score: anInteger [
+ <category: 'accessing'>
+
+ score := anInteger
+ ]
+
+ score [
+ <category: 'acccessing'>
+
+ ^ score
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/Tetris.st
b/packages/gtktools/Examples/Tetris/Tetris.st
new file mode 100644
index 0000000..358047e
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/Tetris.st
@@ -0,0 +1,390 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Paolo Bonzini, Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+GTKTools.GtkMainWindow subclass: Tetris [
+ | canvasWidget canvas process pause delay grid movingBlocks level score
level lines |
+
+ <category: 'Graphics-Tetris'>
+ <comment: nil>
+
+ Tetris class [ | highScores | ]
+
+ Tetris class >> highScores [
+ <category: 'accessing'>
+
+ ^ highScores ifNil: [ highScores := HighScores newSized: 10 ]
+ ]
+
+ Tetris class >> open [
+ <category: 'user interface'>
+
+ TetrisPiece initialize.
+
+ ^ super open
+ play;
+ yourself
+ ]
+
+ initialize [
+ <category: 'initialization'>
+
+ movingBlocks := false.
+ super initialize.
+ ]
+
+ windowTitle [
+ <category: 'initialization'>
+
+ ^'Tetris'
+ ]
+
+ postInitialize [
+ <category: 'initialization'>
+
+ super postInitialize.
+ canvasWidget grabFocus.
+ window
+ connectSignal: 'key-press-event' to: self selector:
#'keyPressedOn:keyEvent:'
+ ]
+
+ onDelete [
+ <category: 'windows event'>
+
+ self quit.
+ ^ true
+ ]
+
+ createHelpMenus [
+ <category: 'user interface'>
+
+ ^{GTK.GtkMenuItem menuItem: 'About Tetris' connectTo: self selector:
#aboutLauncher.
+ GTK.GtkMenuItem menuItem: 'About GNU Smalltalk' connectTo: self
selector: #aboutGst}
+ ]
+
+ createMenus [
+ <category: 'user interface'>
+
+ self createMainMenu: #(#('Help' #createHelpMenus))
+ ]
+
+ buildCentralWidget [
+ <category: 'user interface'>
+
+ ^ canvasWidget := GTK.GtkDrawingArea new
+ setSizeRequest: 400 height: 700;
+ connectSignal: 'expose_event' to: self selector: #'expose:event:';
+ yourself
+ ]
+
+ clearArea: aGtkAllocation [
+ <category: 'drawing'>
+
+ | res |
+ res := aGtkAllocation castTo: (CIntType arrayType: 4).
+
+ canvas saveWhile: [
+ canvas
+ rectangle: ((address@hidden) extent: ((res at: 2) @ (res at:
3)));
+ operator: #clear;
+ fill ]
+ ]
+
+ drawArea [
+ <category: 'drawing'>
+
+ 1 to: 22 do: [ :i |
+ BlockWidget new
+ position: 50@(50 + ((i - 1) * 15));
+ size: 15;
+ color: Cairo.Color white;
+ drawOn: canvas.
+
+ BlockWidget new
+ position: (50 + (11 * 15))@(50 + ((i - 1) * 15));
+ size: 15;
+ color: Cairo.Color white;
+ drawOn: canvas ].
+
+ 1 to: 12 do: [ :i |
+ BlockWidget new
+ position: (50 + ((i - 1) * 15))@50;
+ size: 15;
+ color: Cairo.Color white;
+ drawOn: canvas.
+
+ BlockWidget new
+ position: (50 + ((i - 1) * 15))@(50 + (22 * 15));
+ size: 15;
+ color: Cairo.Color white;
+ drawOn: canvas ]
+ ]
+
+ drawGrid [
+ <category: 'drawing'>
+
+ grid ifNil: [ ^ self ].
+ grid drawOn: canvas
+ ]
+
+ drawScore [
+ <category: 'drawing'>
+
+ canvas
+ moveTo: address@hidden;
+ sourceRed: 1 green: 1 blue: 1;
+ showText: 'Score : ', (self score displayString);
+ moveTo: address@hidden;
+ showText: 'Level : ', (self level displayString);
+ stroke.
+ ]
+
+ expose: aGtkWidget event: aGdkEventExpose [
+ <category: 'drawing event'>
+
+ aGtkWidget getWindow withContextDo: [ :cr |
+ canvas := cr.
+ self
+ clearArea: aGtkWidget getAllocation;
+ drawArea;
+ drawGrid;
+ drawScore ].
+
+ ^ true
+ ]
+
+ keyPressedOn: aGtkWidget keyEvent: aGdkEventKey [
+ <category: 'key event'>
+
+ | event |
+ movingBlocks ifFalse: [ ^ false ].
+
+ event := aGdkEventKey castTo: GTK.GdkEventKey type.
+
+ event keyval value = 65361 ifTrue: [ self movePieceLeft. ^ true ].
+ event keyval value = 65363 ifTrue: [ self movePieceRight. ^ true ].
+ event keyval value = 65362 ifTrue: [ self rotatePiece. ^ true ].
+ event keyval value = 65364 ifTrue: [ self dropPiece. ^ true ].
+
+ ^ false
+ ]
+
+ refresh [
+ <category: 'drawing'>
+
+ canvasWidget queueDraw
+ ]
+
+ cycle [
+ <category: 'game'>
+
+ | result filledLines |
+ grid := TetrisField new.
+ [ movingBlocks := true.
+ result := grid currentPiece: TetrisPiece random.
+ result ifTrue: [ self
+ refresh;
+ delay ].
+ result ] whileTrue: [
+ [ result := self slidePiece.
+ self refresh.
+ result ] whileTrue: [ self delay ].
+ filledLines := self
+ resetMovingBlocks;
+ cementPiece;
+ removeLines.
+ self updateScore: filledLines.
+ Processor yield ].
+
+ ^ self gameOver
+ ]
+
+ initializeGame [
+ <category: 'game'>
+
+ self
+ level: 1;
+ lines: 0;
+ score: 0.
+ movingBlocks := true
+ ]
+
+ play [
+ <category: 'game'>
+
+ process := [ self
+ initializeGame;
+ cycle ] fork.
+ ]
+
+ quit [
+ <category: 'game'>
+
+ process terminate.
+ window hideAll
+ ]
+
+ gameOver [
+ <category: 'game'>
+
+ self highScores addScore: (Score score: self score)
+ ]
+
+ resetMovingBlocks [
+ <category: 'game'>
+
+ movingBlocks := false
+ ]
+
+ delay [
+ "I like this method a lot!"
+
+ <category: 'private'>
+ delay wait.
+
+ "Especially this semaphore!!
+ pause wait.
+ pause signal"
+ ]
+
+ highScores [
+ <category: 'accessing'>
+
+ ^ self class highScores
+ ]
+
+ level [
+ <category: 'accessing'>
+
+ ^ level
+ ]
+
+ level: nextLevel [
+ <category: 'private'>
+
+ level := nextLevel min: 10.
+ delay := Delay forMilliseconds: 825 - (75 * level).
+ ]
+
+ lines [
+ <category: 'private'>
+
+ ^ lines
+ ]
+
+ lines: newLines [
+ <category: 'private'>
+
+ lines := newLines
+ ]
+
+ score [
+ <category: 'private'>
+
+ ^ score
+ ]
+
+ score: newScore [
+ <category: 'private'>
+
+ score := newScore
+ ]
+
+ updateScore: filledLines [
+ <category: 'private'>
+
+ self lines: self lines + filledLines.
+ (self lines - 1) // 10 > (self level - 1) ifTrue: [ self advanceLevel
].
+ self score: 2 * self level squared + (#(0 50 150 400 900) at:
filledLines + 1) + self score
+ ]
+
+ advanceLevel [
+ <category: 'events'>
+
+ self level: self level + 1
+ ]
+
+ movePieceLeft [
+ <category: 'events'>
+
+ grid movePieceLeft.
+ self refresh
+ ]
+
+ movePieceRight [
+ <category: 'events'>
+
+ grid movePieceRight.
+ self refresh
+ ]
+
+ pause [
+ <category: 'events'>
+
+ "I like this semaphore a lot!"
+ pause wait
+ ]
+
+ restart [
+ <category: 'events'>
+
+ "I like this semaphore a lot!"
+ pause signal
+ ]
+
+ rotatePiece [
+ <category: 'events'>
+
+ grid rotatePiece.
+ self refresh
+ ]
+
+ slidePiece [
+ <category: 'events'>
+
+ ^ grid slidePiece
+ ]
+
+ cementPiece [
+ <category: 'events'>
+
+ ^ grid cementPiece
+ ]
+
+ removeLines [
+ <category: 'game'>
+
+ ^ grid removeLines
+ ]
+
+ dropPiece [
+ <category: 'events'>
+
+ ^ grid dropPiece
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisField.st
b/packages/gtktools/Examples/Tetris/TetrisField.st
new file mode 100644
index 0000000..1f2fadd
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisField.st
@@ -0,0 +1,179 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Paolo Bonzini, Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+
+Object subclass: TetrisField [
+ | rows currentPiece |
+
+ <category: 'Graphics-Tetris'>
+ <comment: nil>
+
+ TetrisField class >> new [
+ <category: 'instance creation'>
+
+ ^ self basicNew initialize
+ ]
+
+ at: point [
+ <category: 'accessing'>
+
+ ^ (rows at: point y) at: point x
+ ]
+
+ at: point put: value [
+ <category: 'accessing'>
+
+ ^ (rows at: point y) at: point x put: value
+ ]
+
+ initialize [
+ <category: 'initializing'>
+
+ rows := (1 to: 22) collect: [:each | ByteArray new: 10].
+ rows do: [:each | self initializeLine: each].
+ (rows at: 22) atAll: (1 to: 10) put: 1
+ ]
+
+ initializeLine: line [
+ <category: 'initializing'>
+
+ line
+ atAll: (1 to: 10) put: 0
+ ]
+
+ checkLine: y [
+ <category: 'removing filled lines'>
+
+ ^ (rows at: y) allSatisfy: [:each | each ~~ 0]
+ ]
+
+ removeLines [
+ <category: 'removing filled lines'>
+
+ | removed lastLine firstLine |
+ removed := 0.
+ firstLine := self currentPiece y.
+ lastLine := 21 min: firstLine + 3.
+ lastLine - firstLine + 1 timesRepeat:
+ [(self checkLine: lastLine)
+ ifTrue:
+ [removed := removed + 1.
+ self removeLine: lastLine]
+ ifFalse: [lastLine := lastLine - 1]].
+ ^ removed
+ ]
+
+ removeLine: filledY [
+ <category: 'removing filled lines'>
+
+ | saved y shift line |
+ saved := rows at: filledY.
+ filledY to: 2
+ by: -1
+ do: [:each | rows at: each put: (rows at: each - 1)].
+ self initializeLine: saved.
+ rows at: 1 put: saved
+ ]
+
+ cementPiece [
+ <category: 'piece'>
+
+ self currentPiece cementOn: self
+ ]
+
+ dropPiece [
+ <category: 'moving pieces'>
+
+ [ self slidePiece ] whileTrue: []
+ ]
+
+ movePieceLeft [
+ <category: 'moving pieces'>
+
+ self currentPiece x: self currentPiece x - 1.
+ ^ self currentPiece moveInto: self
+ ifFail: [self currentPiece x: self currentPiece x + 1]
+ ]
+
+ movePieceRight [
+ <category: 'moving pieces'>
+
+ self currentPiece x: self currentPiece x + 1.
+ ^ self currentPiece moveInto: self
+ ifFail: [ self currentPiece x: self currentPiece x - 1 ]
+ ]
+
+ rotatePiece [
+ <category: 'moving pieces'>
+
+ self currentPiece rotate: 1.
+ ^ self currentPiece moveInto: self ifFail: [ self currentPiece rotate:
3 ]
+ ]
+
+ slidePiece [
+ <category: 'moving pieces'>
+
+ self currentPiece y: self currentPiece y + 1.
+ ^ self currentPiece moveInto: self
+ ifFail: [self currentPiece y: self currentPiece y - 1]
+ ]
+
+ currentPiece [
+ <category: 'accessing piece variables'>
+
+ ^ currentPiece
+ ]
+
+ currentPiece: piece [
+ <category: 'accessing piece variables'>
+
+ currentPiece := piece.
+ (self currentPiece)
+ x: 4;
+ y: 1.
+
+ self currentPiece moveInto: self
+ ifFail: [ ^ false ].
+ ^ true
+ ]
+
+ drawOn: aCanvas [
+ <category: 'drawing'>
+
+ 1 to: 21 do: [ :y |
+ 1 to: 10 do: [ :x |
+ ((rows at: y) at: x) ~= 0 ifTrue: [
+ BlockWidget new
+ position: (50 + (x * 15))@(50 + (y * 15));
+ size: 15;
+ color: Cairo.Color white;
+ drawOn: aCanvas ] ] ].
+ self currentPiece drawOn: aCanvas
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisFieldWidget.st
b/packages/gtktools/Examples/Tetris/TetrisFieldWidget.st
new file mode 100644
index 0000000..59efbad
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisFieldWidget.st
@@ -0,0 +1,57 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+Object subclass: TetrisFieldWidget [
+
+ | position size color |
+
+ position: aPoint [
+ <category: 'accessing'>
+
+ position := aPoint
+ ]
+
+ size: anInteger [
+ <category: 'accessing'>
+
+ size := anInteger
+ ]
+
+ color: aColor [
+ <category: 'accessing'>
+
+ color := aColor
+ ]
+
+ drawOn: aCanvas [
+ <category: 'drawing'>
+
+ self subclassResponsibility
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisPiece.st
b/packages/gtktools/Examples/Tetris/TetrisPiece.st
new file mode 100644
index 0000000..4b1c489
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisPiece.st
@@ -0,0 +1,174 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Paolo Bonzini, Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+Object subclass: TetrisPiece [
+ | rotation origin |
+
+ <category: 'Graphics-Tetris'>
+ <comment: nil>
+
+ Pieces := nil.
+
+ TetrisPiece class >> pieces [
+ <category: 'accessing'>
+
+ ^ Pieces ifNil: [ Pieces := self subclasses asOrderedCollection ]
+ ]
+
+ TetrisPiece class >> random [
+ <category: 'pieces'>
+
+ | piece |
+ piece := Random between: 1 and: 7.
+ ^ (self pieces at: piece) new
+ initialize;
+ yourself
+ ]
+
+ initialize [
+ <category: 'initialization'>
+
+ rotation := 1.
+ origin := Point new
+ ]
+
+ piece [
+ <category: 'accessing'>
+
+ ^ self class piece
+ ]
+
+ color [
+ <category: 'drawing'>
+
+ ^ self class color
+ ]
+
+ cementOn: field [
+ <category: 'blocks'>
+
+ | point x y |
+ point := Point new.
+ y := 0.
+ (self piece at: rotation) do: [ :line |
+ x := 0.
+ line do: [ :elem |
+ elem = 1 ifTrue: [
+ point
+ x: self origin x + x;
+ y: self origin y + y.
+ (field at: point) = 0 ifTrue: [ field at: point
put: elem ] ].
+ x := x + 1 ].
+ y := y + 1].
+ ]
+
+ canMoveInto: field [
+ <category: 'moving'>
+
+ | point x y |
+ point := Point new.
+ y := 0.
+ (self piece at: rotation) do: [ :line |
+ x := 0.
+ line do: [ :elem |
+ elem = 1 ifTrue: [
+ point
+ x: self origin x + x;
+ y: self origin y + y.
+ (field at: point) > 0 ifTrue: [ ^ false ] ].
+ x := x + 1 ].
+ y := y + 1 ].
+ ^ true
+ ]
+
+ moveInto: field ifFail: aBlock [
+ <category: 'moving'>
+
+ (self canMoveInto: field) ifFalse: [ aBlock value.
+ ^ false ].
+ ^ true
+ ]
+
+ rotate: howMany [
+ "Three lines are necessary because rotation is in the 1..4 range,
+ while \\ likes a 0..3 range"
+
+ <category: 'moving'>
+ rotation := rotation - 1.
+ rotation := (rotation + howMany) \\ 4.
+ rotation := rotation + 1
+ ]
+
+ origin [
+ <category: 'accessing'>
+
+ ^ origin
+ ]
+
+ x [
+ <category: 'accessing'>
+
+ ^ self origin x
+ ]
+
+ x: x [
+ <category: 'accessing'>
+
+ self origin x: x
+ ]
+
+ y [
+ <category: 'accessing'>
+
+ ^ self origin y
+ ]
+
+ y: y [
+ <category: 'accessing'>
+
+ self origin y: y
+ ]
+
+ drawOn: aCanvas [
+ <category: 'drawing'>
+
+ | y |
+ y := 0.
+ (self piece at: rotation) do: [ :line |
+ y := y + 1.
+ 1 to: 4 do: [ :x |
+ (line at: x) ~= 0 ifTrue: [
+ BlockWidget new
+ position: (50 + ((self x + x - 1) * 15))@(50 + ((self
y + y - 1) * 15));
+ size: 15;
+ color: self color;
+ drawOn: aCanvas ] ] ]
+ ]
+
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisPieceI.st
b/packages/gtktools/Examples/Tetris/TetrisPieceI.st
new file mode 100644
index 0000000..772e607
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisPieceI.st
@@ -0,0 +1,61 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Paolo Bonzini, Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+TetrisPiece subclass: TetrisPieceI [
+
+ <category: 'Graphics-Tetris'>
+ <comment: nil>
+
+ TetrisPieceI class >> piece [
+ <category: 'pieces'>
+
+ ^#( #( #(1 0 0 0)
+ #(1 0 0 0)
+ #(1 0 0 0)
+ #(1 0 0 0))
+ #( #(0 0 0 0)
+ #(0 0 0 0)
+ #(0 0 0 0)
+ #(1 1 1 1))
+ #( #(1 0 0 0)
+ #(1 0 0 0)
+ #(1 0 0 0)
+ #(1 0 0 0))
+ #( #(0 0 0 0)
+ #(0 0 0 0)
+ #(0 0 0 0)
+ #(1 1 1 1)))
+ ]
+
+ TetrisPieceI class >> color [
+ <category: 'pieces'>
+
+ ^ Cairo.Color red
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisPieceJ.st
b/packages/gtktools/Examples/Tetris/TetrisPieceJ.st
new file mode 100644
index 0000000..aa26777
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisPieceJ.st
@@ -0,0 +1,61 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Paolo Bonzini, Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+TetrisPiece subclass: TetrisPieceJ [
+
+ <category: 'Graphics-Tetris'>
+ <comment: nil>
+
+ TetrisPieceJ class >> piece [
+ <category: 'pieces'>
+
+ ^#( #( #(0 1 0 0)
+ #(0 1 0 0)
+ #(1 1 0 0)
+ #(0 0 0 0))
+ #( #(1 0 0 0)
+ #(1 1 1 0)
+ #(0 0 0 0)
+ #(0 0 0 0))
+ #( #(1 1 0 0)
+ #(1 0 0 0)
+ #(1 0 0 0)
+ #(0 0 0 0))
+ #( #(1 1 1 0)
+ #(0 0 1 0)
+ #(0 0 0 0)
+ #(0 0 0 0)))
+ ]
+
+ TetrisPieceJ class >> color [
+ <category: 'pieces'>
+
+ ^ Cairo.Color magenta
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisPieceL.st
b/packages/gtktools/Examples/Tetris/TetrisPieceL.st
new file mode 100644
index 0000000..5a0748f
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisPieceL.st
@@ -0,0 +1,61 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Paolo Bonzini, Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+TetrisPiece subclass: TetrisPieceL [
+
+ <category: 'Graphics-Tetris'>
+ <comment: nil>
+
+ TetrisPieceL class >> piece [
+ <category: 'pieces'>
+
+ ^#( #( #(1 0 0 0)
+ #(1 0 0 0)
+ #(1 1 0 0)
+ #(0 0 0 0))
+ #( #(1 1 1 0)
+ #(1 0 0 0)
+ #(0 0 0 0)
+ #(0 0 0 0))
+ #( #(1 1 0 0)
+ #(0 1 0 0)
+ #(0 1 0 0)
+ #(0 0 0 0))
+ #( #(0 0 1 0)
+ #(1 1 1 0)
+ #(0 0 0 0)
+ #(0 0 0 0)))
+ ]
+
+ TetrisPieceL class >> color [
+ <category: 'pieces'>
+
+ ^ Cairo.Color r: 0.74 g: 0.71 b: 0.42 "DarkKhaki"
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisPieceO.st
b/packages/gtktools/Examples/Tetris/TetrisPieceO.st
new file mode 100644
index 0000000..417502f
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisPieceO.st
@@ -0,0 +1,61 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Paolo Bonzini, Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+TetrisPiece subclass: TetrisPieceO [
+
+ <category: 'Graphics-Tetris'>
+ <comment: nil>
+
+ TetrisPieceO class >> piece [
+ <category: 'pieces'>
+
+ ^#( #( #(1 1 0 0)
+ #(1 1 0 0)
+ #(0 0 0 0)
+ #(0 0 0 0))
+ #( #(1 1 0 0)
+ #(1 1 0 0)
+ #(0 0 0 0)
+ #(0 0 0 0))
+ #( #(1 1 0 0)
+ #(1 1 0 0)
+ #(0 0 0 0)
+ #(0 0 0 0))
+ #( #(1 1 0 0)
+ #(1 1 0 0)
+ #(0 0 0 0)
+ #(0 0 0 0)))
+ ]
+
+ TetrisPieceO class >> color [
+ <category: 'piece'>
+
+ ^ Cairo.Color r: 0.54 g: 0.17 b: 0.88 "BlueViolet"
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisPieceS.st
b/packages/gtktools/Examples/Tetris/TetrisPieceS.st
new file mode 100644
index 0000000..b3b242b
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisPieceS.st
@@ -0,0 +1,61 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Paolo Bonzini, Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+TetrisPiece subclass: TetrisPieceS [
+
+ <category: 'Graphics-Tetris'>
+ <comment: nil>
+
+ TetrisPieceS class >> piece [
+ <category: 'pieces'>
+
+ ^#( #( #(0 1 0 0)
+ #(1 1 0 0)
+ #(1 0 0 0)
+ #(0 0 0 0))
+ #( #(1 1 0 0)
+ #(0 1 1 0)
+ #(0 0 0 0)
+ #(0 0 0 0))
+ #( #(0 1 0 0)
+ #(1 1 0 0)
+ #(1 0 0 0)
+ #(0 0 0 0))
+ #( #(1 1 0 0)
+ #(0 1 1 0)
+ #(0 0 0 0)
+ #(0 0 0 0)))
+ ]
+
+ TetrisPieceS class >> color [
+ <category: 'pieces'>
+
+ ^ Cairo.Color cyan
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisPieceT.st
b/packages/gtktools/Examples/Tetris/TetrisPieceT.st
new file mode 100644
index 0000000..f1f963b
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisPieceT.st
@@ -0,0 +1,60 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Paolo Bonzini, Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+TetrisPiece subclass: TetrisPieceT [
+
+ <category: 'Graphics-Tetris'>
+ <comment: nil>
+
+ TetrisPieceT class >> piece [
+ <category: 'pieces'>
+ ^#( #( #(0 1 0 0)
+ #(1 1 1 0)
+ #(0 0 0 0)
+ #(0 0 0 0))
+ #( #(1 0 0 0)
+ #(1 1 0 0)
+ #(1 0 0 0)
+ #(0 0 0 0))
+ #( #(1 1 1 0)
+ #(0 1 0 0)
+ #(0 0 0 0)
+ #(0 0 0 0))
+ #( #(0 1 0 0)
+ #(1 1 0 0)
+ #(0 1 0 0)
+ #(0 0 0 0)))
+ ]
+
+ TetrisPieceT class >> color [
+ <category: 'pieces'>
+
+ ^ Cairo.Color r: 0.13 g: 0.54 b: 0.13 "ForestGreen"
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisPieceWidget.st
b/packages/gtktools/Examples/Tetris/TetrisPieceWidget.st
new file mode 100644
index 0000000..f56a8ba
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisPieceWidget.st
@@ -0,0 +1,57 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+Object subclass: TetrisPieceWidget [
+
+ | position size color |
+
+ position: aPoint [
+ <category: 'accessing'>
+
+ position := aPoint
+ ]
+
+ size: anInteger [
+ <category: 'accessing'>
+
+ size := anInteger
+ ]
+
+ color: aColor [
+ <category: 'accessing'>
+
+ color := aColor
+ ]
+
+ drawOn: aCanvas [
+ <category: 'drawing'>
+
+ self subclassResponsibility
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/TetrisPieceZ.st
b/packages/gtktools/Examples/Tetris/TetrisPieceZ.st
new file mode 100644
index 0000000..b893aca
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/TetrisPieceZ.st
@@ -0,0 +1,61 @@
+"======================================================================
+|
+| GTK Tetris... why not?
+|
+|
+ ======================================================================"
+
+"======================================================================
+|
+| Copyright 1999 Free Software Foundation, Inc.
+| Written by Paolo Bonzini, Gwenael Casaccio.
+|
+| This file is part of GNU Smalltalk.
+|
+| GNU Smalltalk is free software; you can redistribute it and/or modify it
+| under the terms of the GNU General Public License as published by the Free
+| Software Foundation; either version 2, or (at your option) any later version.
+|
+| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
+| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+| details.
+|
+| You should have received a copy of the GNU General Public License along with
+| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
+| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+|
+ ======================================================================"
+
+TetrisPiece subclass: TetrisPieceZ [
+
+ <category: 'Graphics-Tetris'>
+ <comment: nil>
+
+ TetrisPieceZ class >> piece [
+ <category: 'pieces'>
+
+ ^#( #( #(1 0 0 0)
+ #(1 1 0 0)
+ #(0 1 0 0)
+ #(0 0 0 0))
+ #( #(0 1 1 0)
+ #(1 1 0 0)
+ #(0 0 0 0)
+ #(0 0 0 0))
+ #( #(1 0 0 0)
+ #(1 1 0 0)
+ #(0 1 0 0)
+ #(0 0 0 0))
+ #( #(0 1 1 0)
+ #(1 1 0 0)
+ #(0 0 0 0)
+ #(0 0 0 0)))
+ ]
+
+ TetrisPieceZ class >> color [
+ <category: 'pieces'>
+
+ ^ Cairo.Color r: 0.99 g: 0.55 b: 0 "DarkOrange"
+ ]
+]
diff --git a/packages/gtktools/Examples/Tetris/package.xml
b/packages/gtktools/Examples/Tetris/package.xml
new file mode 100644
index 0000000..83978ae
--- /dev/null
+++ b/packages/gtktools/Examples/Tetris/package.xml
@@ -0,0 +1,23 @@
+<package>
+ <name>GTKTools-Example-Tetris</name>
+ <namespace>Tetris</namespace>
+ <prereq>GTKTools</prereq>
+
+ <filein>HighScores.st</filein>
+ <filein>Score.st</filein>
+ <filein>TetrisPieceWidget.st</filein>
+ <filein>BlockWidget.st</filein>
+ <filein>TetrisField.st</filein>
+ <filein>TetrisPiece.st</filein>
+ <filein>TetrisPieceI.st</filein>
+ <filein>TetrisPieceJ.st</filein>
+ <filein>TetrisPieceL.st</filein>
+ <filein>TetrisPieceO.st</filein>
+ <filein>TetrisPieceS.st</filein>
+ <filein>TetrisPieceT.st</filein>
+ <filein>TetrisPieceZ.st</filein>
+ <filein>Tetris.st</filein>
+
+ <start>Tetris.Tetris open.
+ GTK.Gtk main</start>
+</package>
diff --git a/packages/visualgst/Clock/GtkClock.st
b/packages/visualgst/Clock/GtkClock.st
deleted file mode 100644
index a566c33..0000000
--- a/packages/visualgst/Clock/GtkClock.st
+++ /dev/null
@@ -1,165 +0,0 @@
-Smalltalk.Object subclass: GtkClock [
- | canvas hour minute process radius second window x y |
-
- GtkClock class >> open [
- <category: 'user interface'>
-
- ^ (self new)
- initialize;
- showAll;
- yourself
- ]
-
- GtkClock class >> openSized: aPoint [
- <category: 'user interface'>
-
- ^ (self new)
- initialize;
- resize: aPoint;
- showAll;
- yourself
- ]
-
- quit [
- <category: 'events'>
-
- process terminate.
- window hide
- ]
-
- time [
- <category: 'time'>
-
- | now |
- now := DateTime now.
- hour := now hour.
- minute := now minute.
- second := now second.
- ]
-
- clearArea: aGtkAllocation [
- <category: 'drawing'>
-
- | res |
- res := aGtkAllocation castTo: (CIntType arrayType: 4).
-
- canvas saveWhile: [
- canvas
- rectangle: ((address@hidden) extent: ((res at: 2) @ (res at:
3)));
- operator: #clear;
- fill ]
- ]
-
- drawClockCircle: context [
- <category: 'drawing'>
-
- context
- lineWidth: 6;
- stroke: [ context arc: address@hidden radius: radius from: 0 to:
Float pi * 2 ]
- ]
-
- drawHourMarker: context [
- <category: 'drawing'>
-
- 1 to: 12 do: [ :i |
- context
- lineWidth: 4;
- stroke: [ | inset |
- inset := 0.1 * radius.
- context
- moveTo: (x + ((radius - inset) * (i * Float pi / 6.0)
cos)) @ (y + ((radius - inset) * (i * Float pi / 6.0) sin));
- lineTo: (x + (radius * (i * Float pi / 6.0) cos)) @ (y
+ (radius * (i * Float pi / 6.0) sin)) ] ]
- ]
-
- drawClockLine: context angle: anAngFloat [
- <category: 'drawing'>
-
- context
- lineWidth: 4;
- paint: [
- context stroke: [
- context
- sourceRed: 1 green: 0.2 blue: 0.2 alpha: 1.0;
- moveTo: address@hidden;
- lineTo: (x + (radius * anAngFloat cos)) @ (y +
(radius * anAngFloat sin)) ] ]
- withAlpha: 0.64
- ]
-
- drawHourLine: context [
- <category: 'drawing'>
-
- self drawClockLine: context angle: (hour \\ 12 * (Float pi / 6.0)) -
(Float pi / 2.0).
- ]
-
- drawMinuteLine: context [
- <category: 'drawing'>
-
- self drawClockLine: context angle: (minute * (Float pi / 30.0)) -
(Float pi / 2.0)
- ]
-
- drawSecondLine: context [
- <category: 'drawing'>
-
- self drawClockLine: context angle: (second * (Float pi / 30.0)) -
(Float pi / 2.0)
- ]
-
- drawClock: context [
- <category: 'drawing'>
-
- self
- drawClockCircle: context;
- drawHourMarker: context;
- drawHourLine: context;
- drawMinuteLine: context;
- drawSecondLine: context
- ]
-
- expose: aGtkWidget event: aGdkEventExpose [
-
- aGtkWidget getWindow withContextDo: [ :cr |
- canvas := cr.
-
- x := 128.
- y := 128.
-
- self
- clearArea: aGtkWidget getAllocation;
- time;
- drawClock: cr ].
-
- ^ true
- ]
-
- initialize [
- <category: 'intialization'>
-
- window := (GTK.GtkWindow new: GTK.Gtk gtkWindowToplevel).
- window
- setColormap: window getScreen getRgbaColormap;
- connectSignal: 'expose_event' to: self selector: #'expose:event:';
- connectSignal: 'delete-event' to: self selector: #'delete:event:';
- setDecorated: false.
- radius := 100
- ]
-
- delete: aGtkWidget event: aGdkEvent [
- <category: 'windows event'>
-
- self quit.
- ^ true
- ]
-
- resize: aPoint [
- <category: 'user interface'>
-
- window resize: aPoint x height: aPoint y
- ]
-
- showAll [
- | delay |
-
- delay := Delay forSeconds: 1.
- window showAll.
- process := [ [ true ] whileTrue: [ window queueDraw. delay wait ] ] fork
- ]
-]
diff --git a/packages/visualgst/Makefile.frag b/packages/visualgst/Makefile.frag
index 5058822..f34ecaa 100644
--- a/packages/visualgst/Makefile.frag
+++ b/packages/visualgst/Makefile.frag
@@ -1,5 +1,5 @@
VisualGST_FILES = \
-packages/visualgst/Notification/AbstractEvent.st
packages/visualgst/Notification/AddedEvent.st
packages/visualgst/Notification/CommentedEvent.st
packages/visualgst/Notification/DoItEvent.st
packages/visualgst/Notification/SystemEventManager.st
packages/visualgst/Notification/EventMultiplexer.st
packages/visualgst/Notification/EventDispatcher.st
packages/visualgst/Notification/ModifiedEvent.st
packages/visualgst/Notification/ModifiedClassDefinitionEvent.st
packages/visualgst/Notification/RecategorizedEvent.st
packages/visualgst/Notification/RemovedEvent.st
packages/visualgst/Notification/RenamedEvent.st
packages/visualgst/Notification/ReorganizedEvent.st
packages/visualgst/Notification/SystemChangeNotifier.st
packages/visualgst/GtkAnnouncer.st
packages/visualgst/GtkNamespaceSelectionChanged.st
packages/visualgst/GtkClassSelectionChanged.st
packages/visualgst/Commands/Command.st
packages/visualgst/Commands/SmalltalkMenus/DoItCommand.st
packages/visualgst/Commands/SmalltalkMenus/DebugI
tCommand.st packages/visualgst/Commands/SmalltalkMenus/PrintItCommand.st
packages/visualgst/Commands/SmalltalkMenus/InspectItCommand.st
packages/visualgst/Commands/SmalltalkMenus/AcceptItCommand.st
packages/visualgst/Commands/SmalltalkMenus/CancelCommand.st
packages/visualgst/Commands/HistoryCommands/HistoryBackCommand.st
packages/visualgst/Commands/HistoryCommands/HistoryDisplayCommand.st
packages/visualgst/Commands/HistoryCommands/HistoryForwardCommand.st
packages/visualgst/Commands/TabsMenus/CloseTabCommand.st
packages/visualgst/Commands/TabsMenus/NextTabCommand.st
packages/visualgst/Commands/TabsMenus/PreviousTabCommand.st
packages/visualgst/Commands/NamespaceMenus/NamespaceCommand.st
packages/visualgst/Commands/NamespaceMenus/InspectNamespaceCommand.st
packages/visualgst/Commands/NamespaceMenus/FileoutNamespaceCommand.st
packages/visualgst/Commands/NamespaceMenus/AddNamespaceCommand.st
packages/visualgst/Commands/NamespaceMenus/DeleteNamespaceCommand.st
packages/visualgst/Comma
nds/NamespaceMenus/RenameNamespaceCommand.st
packages/visualgst/Commands/ClassMenus/ClassCommand.st
packages/visualgst/Commands/ClassMenus/InspectClassCommand.st
packages/visualgst/Commands/ClassMenus/FileoutClassCommand.st
packages/visualgst/Commands/ClassMenus/AddClassCommand.st
packages/visualgst/Commands/ClassMenus/DeleteClassCommand.st
packages/visualgst/Commands/ClassMenus/RenameClassCommand.st
packages/visualgst/Commands/CategoryMenus/CategoryCommand.st
packages/visualgst/Commands/CategoryMenus/FileoutCategoryCommand.st
packages/visualgst/Commands/CategoryMenus/AddCategoryCommand.st
packages/visualgst/Commands/CategoryMenus/RenameCategoryCommand.st
packages/visualgst/Commands/MethodMenus/MethodCommand.st
packages/visualgst/Commands/MethodMenus/FileoutMethodCommand.st
packages/visualgst/Commands/MethodMenus/InspectMethodCommand.st
packages/visualgst/Commands/MethodMenus/DeleteMethodCommand.st
packages/visualgst/Commands/MethodMenus/DebugTestCommand.st
packages/visualgst/Comman
ds/ToolsMenus/OpenAssistantCommand.st
packages/visualgst/Commands/ToolsMenus/OpenWebBrowserCommand.st
packages/visualgst/Commands/EditMenus/CancelEditCommand.st
packages/visualgst/Commands/EditMenus/UndoEditCommand.st
packages/visualgst/Commands/EditMenus/RedoEditCommand.st
packages/visualgst/Commands/EditMenus/CutEditCommand.st
packages/visualgst/Commands/EditMenus/CopyEditCommand.st
packages/visualgst/Commands/EditMenus/PasteEditCommand.st
packages/visualgst/Commands/EditMenus/SelectAllEditCommand.st
packages/visualgst/Commands/EditMenus/FindEditCommand.st
packages/visualgst/Commands/EditMenus/ReplaceEditCommand.st
packages/visualgst/Commands/DebugMenus/DebugCommand.st
packages/visualgst/Commands/DebugMenus/ContinueDebugCommand.st
packages/visualgst/Commands/DebugMenus/StepIntoDebugCommand.st
packages/visualgst/Commands/DebugMenus/StepToDebugCommand.st
packages/visualgst/Menus/MenuBuilder.st
packages/visualgst/Menus/MenuSeparator.st
packages/visualgst/Menus/ToolbarSeparator.st pac
kages/visualgst/Menus/LauncherToolbar.st
packages/visualgst/Menus/DebuggerToolbar.st
packages/visualgst/Menus/NamespaceMenus.st
packages/visualgst/Menus/ClassMenus.st
packages/visualgst/Menus/CategoryMenus.st
packages/visualgst/Menus/ContextMenus.st
packages/visualgst/Menus/MethodMenus.st packages/visualgst/Menus/EditMenus.st
packages/visualgst/Menus/SmalltalkMenus.st
packages/visualgst/Menus/ToolsMenus.st packages/visualgst/Menus/HistoryMenus.st
packages/visualgst/Menus/TabsMenus.st
packages/visualgst/Menus/InspectorMenus.st
packages/visualgst/Menus/TextMenus.st
packages/visualgst/Menus/WorkspaceVariableMenus.st
packages/visualgst/Menus/SimpleWorkspaceMenus.st
packages/visualgst/Menus/WorkspaceMenus.st packages/visualgst/FakeNamespace.st
packages/visualgst/Category/ClassCategory.st
packages/visualgst/Category/AbstractNamespace.st
packages/visualgst/Category/Class.st packages/visualgst/GtkEntryWidget.st
packages/visualgst/GtkTreeModel.st packages/visualgst/Text/GtkTextWidget.st pack
ages/visualgst/GtkPackageBuilderWidget.st
packages/visualgst/GtkVisualGSTTool.st packages/visualgst/GtkBrowsingTool.st
packages/visualgst/GtkLauncher.st
packages/visualgst/Text/GtkTextPluginWidget.st
packages/visualgst/Text/GtkFindWidget.st
packages/visualgst/Text/GtkReplaceWidget.st
packages/visualgst/Text/GtkSaveTextWidget.st
packages/visualgst/GtkNotebookWidget.st
packages/visualgst/Image/GtkImageModel.st
packages/visualgst/Image/GtkImageWidget.st
packages/visualgst/Debugger/GtkContextWidget.st
packages/visualgst/Debugger/GtkDebugger.st
packages/visualgst/State/BrowserState.st
packages/visualgst/State/NamespaceState.st
packages/visualgst/State/ClassState.st
packages/visualgst/State/CategoryState.st
packages/visualgst/State/MethodState.st
packages/visualgst/GtkWorkspaceWidget.st
packages/visualgst/GtkTranscriptWidget.st
packages/visualgst/StBrowser/GtkCategorizedNamespaceWidget.st
packages/visualgst/StBrowser/GtkCategorizedClassWidget.st
packages/visualgst/StBrowser/GtkCategoryWid
get.st packages/visualgst/StBrowser/GtkMethodWidget.st
packages/visualgst/Text/GtkSourceCodeWidget.st
packages/visualgst/StBrowser/GtkClassHierarchyWidget.st
packages/visualgst/GtkHistoryWidget.st
packages/visualgst/Inspector/GtkInspector.st
packages/visualgst/StBrowser/GtkClassBrowserWidget.st
packages/visualgst/HistoryStack.st packages/visualgst/Undo/UndoStack.st
packages/visualgst/Undo/UndoCommand.st
packages/visualgst/Undo/AddNamespaceUndoCommand.st
packages/visualgst/Undo/RenameNamespaceUndoCommand.st
packages/visualgst/Undo/DeleteNamespaceUndoCommand.st
packages/visualgst/Source/SourceFormatter.st
packages/visualgst/Source/NamespaceHeaderSource.st
packages/visualgst/Source/NamespaceSource.st
packages/visualgst/Source/ClassHeaderSource.st
packages/visualgst/Source/ClassSource.st
packages/visualgst/Source/CategorySource.st
packages/visualgst/Source/MethodSource.st
packages/visualgst/Source/PackageSource.st
packages/visualgst/Source/BrowserMethodSource.st packages/visualgst/Undo/
AddClassUndoCommand.st packages/visualgst/Undo/RenameClassUndoCommand.st
packages/visualgst/Undo/DeleteClassUndoCommand.st
packages/visualgst/AbstractFinder.st packages/visualgst/NamespaceFinder.st
packages/visualgst/ClassFinder.st packages/visualgst/MethodFinder.st
packages/visualgst/GtkWebBrowser.st packages/visualgst/GtkWebView.st
packages/visualgst/Extensions.st packages/visualgst/GtkAssistant.st
packages/visualgst/Undo/RenameCategoryUndoCommand.st
packages/visualgst/Undo/AddMethodUndoCommand.st
packages/visualgst/Undo/DeleteMethodUndoCommand.st
packages/visualgst/WorkspaceVariableTracker.st
packages/visualgst/GtkVariableTrackerWidget.st
packages/visualgst/SyntaxHighlighter.st
packages/visualgst/Undo/Text/InsertTextCommand.st
packages/visualgst/Undo/Text/DeleteTextCommand.st
packages/visualgst/Undo/Text/ReplaceTextCommand.st
packages/visualgst/Clock/GtkClock.st
packages/visualgst/Inspector/GtkInspectorSourceWidget.st
packages/visualgst/Inspector/GtkInspectorBrowserWidget.st pack
ages/visualgst/Inspector/GtkInspectorWidget.st
packages/visualgst/Inspector/GtkObjectInspectorView.st
packages/visualgst/Inspector/GtkCompiledMethodInspectorView.st
packages/visualgst/Inspector/GtkCompiledBlockInspectorView.st
packages/visualgst/Inspector/GtkSequenceableCollectionInspectorView.st
packages/visualgst/Inspector/GtkSetInspectorView.st
packages/visualgst/Inspector/GtkDictionaryInspectorView.st
packages/visualgst/Inspector/GtkCharacterInspectorView.st
packages/visualgst/Inspector/GtkIntegerInspectorView.st
packages/visualgst/Inspector/GtkFloatInspectorView.st
packages/visualgst/Implementors/GtkImageResultsWidget.st
packages/visualgst/Implementors/GtkImplementorResultsWidget.st
packages/visualgst/Implementors/GtkSenderResultsWidget.st
packages/visualgst/Notification/Kernel/AbstractNamespace.st
packages/visualgst/Notification/Kernel/Metaclass.st
packages/visualgst/Notification/Kernel/Class.st
packages/visualgst/Notification/Kernel/MethodDictionary.st
packages/visualgst/Debu
gger/GtkStackInspectorView.st packages/visualgst/Debugger/GtkStackInspector.st
packages/visualgst/Tetris/HighScores.st packages/visualgst/Tetris/Score.st
packages/visualgst/Tetris/TetrisPieceWidget.st
packages/visualgst/Tetris/BlockWidget.st
packages/visualgst/Tetris/TetrisField.st
packages/visualgst/Tetris/TetrisPiece.st
packages/visualgst/Tetris/TetrisPieceI.st
packages/visualgst/Tetris/TetrisPieceJ.st
packages/visualgst/Tetris/TetrisPieceL.st
packages/visualgst/Tetris/TetrisPieceO.st
packages/visualgst/Tetris/TetrisPieceS.st
packages/visualgst/Tetris/TetrisPieceT.st
packages/visualgst/Tetris/TetrisPieceZ.st packages/visualgst/Tetris/Tetris.st
packages/visualgst/SUnit/TestBacktraceLog.st
packages/visualgst/SUnit/GtkSUnitResultWidget.st
packages/visualgst/GtkClassSUnitWidget.st
packages/visualgst/GtkMethodSUnitWidget.st packages/visualgst/SUnit/GtkSUnit.st
packages/visualgst/Commands/OpenBrowserCommand.st
packages/visualgst/Commands/OpenTabbedBrowserCommand.st packages/visualgst/Co
mmands/ToolsMenus/OpenSUnitCommand.st
packages/visualgst/Commands/ToolsMenus/OpenBottomPaneCommand.st
packages/visualgst/Commands/OpenWorkspaceCommand.st
packages/visualgst/Commands/ToolsMenus/OpenImplementorCommand.st
packages/visualgst/Commands/ToolsMenus/OpenSenderCommand.st
packages/visualgst/Commands/ToolsMenus/OpenPackageBuilderCommand.st
packages/visualgst/Commands/SaveImageCommand.st
packages/visualgst/Commands/SaveImageAsCommand.st
packages/visualgst/Commands/InspectorMenus/InspectorBackCommand.st
packages/visualgst/Commands/InspectorMenus/InspectorDiveCommand.st
packages/visualgst/Commands/WorkspaceMenus/DeleteItemCommand.st
packages/visualgst/Commands/WorkspaceMenus/InspectItemCommand.st
packages/visualgst/Commands/WorkspaceMenus/WorkspaceVariableCommand.st
packages/visualgst/Icons/category.gif packages/visualgst/Icons/namespace.gif
packages/visualgst/Icons/go-bottom.png packages/visualgst/Icons/go-down.png
packages/visualgst/Icons/go-first.png packages/visualgst/Icons/go
-home.png packages/visualgst/Icons/go-jump.png
packages/visualgst/Icons/go-last.png packages/visualgst/Icons/go-next.png
packages/visualgst/Icons/go-previous.png packages/visualgst/Icons/go-run.png
packages/visualgst/Icons/go-top.png packages/visualgst/Icons/go-up.png
packages/visualgst/Icons/NUnit.Failed.png
packages/visualgst/Icons/NUnit.Loading.png
packages/visualgst/Icons/NUnit.None.png
packages/visualgst/Icons/NUnit.NotRun.png
packages/visualgst/Icons/NUnit.Running.png
packages/visualgst/Icons/NUnit.SuccessAndFailed.png
packages/visualgst/Icons/NUnit.Success.png
packages/visualgst/Icons/extension.png packages/visualgst/Icons/overridden.png
packages/visualgst/Icons/override.png packages/visualgst/Icons/visualgst.png
packages/visualgst/Tests/AddNamespaceUndoCommandTest.st
packages/visualgst/Tests/GtkMethodWidgetTest.st
packages/visualgst/Tests/CompiledMethodTest.st
packages/visualgst/Tests/ExtractLiteralsTest.st
packages/visualgst/Tests/CategoryTest.st packages/visualgst/Tests/Me
nuBuilderTest.st packages/visualgst/Tests/GtkAssistantTest.st
packages/visualgst/Tests/EmptyTest.st
packages/visualgst/Tests/AddClassUndoCommandTest.st
packages/visualgst/Tests/GtkCategoryWidgetTest.st
packages/visualgst/Tests/StateTest.st packages/visualgst/Tests/FinderTest.st
packages/visualgst/Tests/PragmaTest.st
packages/visualgst/Tests/GtkCategorizedNamespaceWidgetTest.st
packages/visualgst/Tests/GtkCategorizedClassWidgetTest.st
+packages/visualgst/Notification/AbstractEvent.st
packages/visualgst/Notification/AddedEvent.st
packages/visualgst/Notification/CommentedEvent.st
packages/visualgst/Notification/DoItEvent.st
packages/visualgst/Notification/SystemEventManager.st
packages/visualgst/Notification/EventMultiplexer.st
packages/visualgst/Notification/EventDispatcher.st
packages/visualgst/Notification/ModifiedEvent.st
packages/visualgst/Notification/ModifiedClassDefinitionEvent.st
packages/visualgst/Notification/RecategorizedEvent.st
packages/visualgst/Notification/RemovedEvent.st
packages/visualgst/Notification/RenamedEvent.st
packages/visualgst/Notification/ReorganizedEvent.st
packages/visualgst/Notification/SystemChangeNotifier.st
packages/visualgst/GtkAnnouncer.st
packages/visualgst/GtkNamespaceSelectionChanged.st
packages/visualgst/GtkClassSelectionChanged.st
packages/visualgst/Commands/Command.st
packages/visualgst/Commands/SmalltalkMenus/DoItCommand.st
packages/visualgst/Commands/SmalltalkMenus/DebugI
tCommand.st packages/visualgst/Commands/SmalltalkMenus/PrintItCommand.st
packages/visualgst/Commands/SmalltalkMenus/InspectItCommand.st
packages/visualgst/Commands/SmalltalkMenus/AcceptItCommand.st
packages/visualgst/Commands/SmalltalkMenus/CancelCommand.st
packages/visualgst/Commands/HistoryCommands/HistoryBackCommand.st
packages/visualgst/Commands/HistoryCommands/HistoryDisplayCommand.st
packages/visualgst/Commands/HistoryCommands/HistoryForwardCommand.st
packages/visualgst/Commands/TabsMenus/CloseTabCommand.st
packages/visualgst/Commands/TabsMenus/NextTabCommand.st
packages/visualgst/Commands/TabsMenus/PreviousTabCommand.st
packages/visualgst/Commands/NamespaceMenus/NamespaceCommand.st
packages/visualgst/Commands/NamespaceMenus/InspectNamespaceCommand.st
packages/visualgst/Commands/NamespaceMenus/FileoutNamespaceCommand.st
packages/visualgst/Commands/NamespaceMenus/AddNamespaceCommand.st
packages/visualgst/Commands/NamespaceMenus/DeleteNamespaceCommand.st
packages/visualgst/Comma
nds/NamespaceMenus/RenameNamespaceCommand.st
packages/visualgst/Commands/ClassMenus/ClassCommand.st
packages/visualgst/Commands/ClassMenus/InspectClassCommand.st
packages/visualgst/Commands/ClassMenus/FileoutClassCommand.st
packages/visualgst/Commands/ClassMenus/AddClassCommand.st
packages/visualgst/Commands/ClassMenus/DeleteClassCommand.st
packages/visualgst/Commands/ClassMenus/RenameClassCommand.st
packages/visualgst/Commands/CategoryMenus/CategoryCommand.st
packages/visualgst/Commands/CategoryMenus/FileoutCategoryCommand.st
packages/visualgst/Commands/CategoryMenus/AddCategoryCommand.st
packages/visualgst/Commands/CategoryMenus/RenameCategoryCommand.st
packages/visualgst/Commands/MethodMenus/MethodCommand.st
packages/visualgst/Commands/MethodMenus/FileoutMethodCommand.st
packages/visualgst/Commands/MethodMenus/InspectMethodCommand.st
packages/visualgst/Commands/MethodMenus/DeleteMethodCommand.st
packages/visualgst/Commands/MethodMenus/DebugTestCommand.st
packages/visualgst/Comman
ds/ToolsMenus/OpenAssistantCommand.st
packages/visualgst/Commands/ToolsMenus/OpenWebBrowserCommand.st
packages/visualgst/Commands/EditMenus/CancelEditCommand.st
packages/visualgst/Commands/EditMenus/UndoEditCommand.st
packages/visualgst/Commands/EditMenus/RedoEditCommand.st
packages/visualgst/Commands/EditMenus/CutEditCommand.st
packages/visualgst/Commands/EditMenus/CopyEditCommand.st
packages/visualgst/Commands/EditMenus/PasteEditCommand.st
packages/visualgst/Commands/EditMenus/SelectAllEditCommand.st
packages/visualgst/Commands/EditMenus/FindEditCommand.st
packages/visualgst/Commands/EditMenus/ReplaceEditCommand.st
packages/visualgst/Commands/DebugMenus/DebugCommand.st
packages/visualgst/Commands/DebugMenus/ContinueDebugCommand.st
packages/visualgst/Commands/DebugMenus/StepIntoDebugCommand.st
packages/visualgst/Commands/DebugMenus/StepToDebugCommand.st
packages/visualgst/Menus/MenuBuilder.st
packages/visualgst/Menus/MenuSeparator.st
packages/visualgst/Menus/ToolbarSeparator.st pac
kages/visualgst/Menus/LauncherToolbar.st
packages/visualgst/Menus/DebuggerToolbar.st
packages/visualgst/Menus/NamespaceMenus.st
packages/visualgst/Menus/ClassMenus.st
packages/visualgst/Menus/CategoryMenus.st
packages/visualgst/Menus/ContextMenus.st
packages/visualgst/Menus/MethodMenus.st packages/visualgst/Menus/EditMenus.st
packages/visualgst/Menus/SmalltalkMenus.st
packages/visualgst/Menus/ToolsMenus.st packages/visualgst/Menus/HistoryMenus.st
packages/visualgst/Menus/TabsMenus.st
packages/visualgst/Menus/InspectorMenus.st
packages/visualgst/Menus/TextMenus.st
packages/visualgst/Menus/WorkspaceVariableMenus.st
packages/visualgst/Menus/SimpleWorkspaceMenus.st
packages/visualgst/Menus/WorkspaceMenus.st packages/visualgst/FakeNamespace.st
packages/visualgst/Category/ClassCategory.st
packages/visualgst/Category/AbstractNamespace.st
packages/visualgst/Category/Class.st packages/visualgst/GtkEntryWidget.st
packages/visualgst/GtkTreeModel.st packages/visualgst/Text/GtkTextWidget.st pack
ages/visualgst/GtkPackageBuilderWidget.st
packages/visualgst/GtkVisualGSTTool.st packages/visualgst/GtkBrowsingTool.st
packages/visualgst/GtkLauncher.st
packages/visualgst/Text/GtkTextPluginWidget.st
packages/visualgst/Text/GtkFindWidget.st
packages/visualgst/Text/GtkReplaceWidget.st
packages/visualgst/Text/GtkSaveTextWidget.st
packages/visualgst/GtkNotebookWidget.st
packages/visualgst/Image/GtkImageModel.st
packages/visualgst/Image/GtkImageWidget.st
packages/visualgst/Debugger/GtkContextWidget.st
packages/visualgst/Debugger/GtkDebugger.st
packages/visualgst/State/BrowserState.st
packages/visualgst/State/NamespaceState.st
packages/visualgst/State/ClassState.st
packages/visualgst/State/CategoryState.st
packages/visualgst/State/MethodState.st
packages/visualgst/GtkWorkspaceWidget.st
packages/visualgst/GtkTranscriptWidget.st
packages/visualgst/StBrowser/GtkCategorizedNamespaceWidget.st
packages/visualgst/StBrowser/GtkCategorizedClassWidget.st
packages/visualgst/StBrowser/GtkCategoryWid
get.st packages/visualgst/StBrowser/GtkMethodWidget.st
packages/visualgst/Text/GtkSourceCodeWidget.st
packages/visualgst/StBrowser/GtkClassHierarchyWidget.st
packages/visualgst/GtkHistoryWidget.st
packages/visualgst/Inspector/GtkInspector.st
packages/visualgst/StBrowser/GtkClassBrowserWidget.st
packages/visualgst/HistoryStack.st packages/visualgst/Undo/UndoStack.st
packages/visualgst/Undo/UndoCommand.st
packages/visualgst/Undo/AddNamespaceUndoCommand.st
packages/visualgst/Undo/RenameNamespaceUndoCommand.st
packages/visualgst/Undo/DeleteNamespaceUndoCommand.st
packages/visualgst/Source/SourceFormatter.st
packages/visualgst/Source/NamespaceHeaderSource.st
packages/visualgst/Source/NamespaceSource.st
packages/visualgst/Source/ClassHeaderSource.st
packages/visualgst/Source/ClassSource.st
packages/visualgst/Source/CategorySource.st
packages/visualgst/Source/MethodSource.st
packages/visualgst/Source/PackageSource.st
packages/visualgst/Source/BrowserMethodSource.st packages/visualgst/Undo/
AddClassUndoCommand.st packages/visualgst/Undo/RenameClassUndoCommand.st
packages/visualgst/Undo/DeleteClassUndoCommand.st
packages/visualgst/AbstractFinder.st packages/visualgst/NamespaceFinder.st
packages/visualgst/ClassFinder.st packages/visualgst/MethodFinder.st
packages/visualgst/GtkWebBrowser.st packages/visualgst/GtkWebView.st
packages/visualgst/Extensions.st packages/visualgst/GtkAssistant.st
packages/visualgst/Undo/RenameCategoryUndoCommand.st
packages/visualgst/Undo/AddMethodUndoCommand.st
packages/visualgst/Undo/DeleteMethodUndoCommand.st
packages/visualgst/WorkspaceVariableTracker.st
packages/visualgst/GtkVariableTrackerWidget.st
packages/visualgst/SyntaxHighlighter.st
packages/visualgst/Undo/Text/InsertTextCommand.st
packages/visualgst/Undo/Text/DeleteTextCommand.st
packages/visualgst/Undo/Text/ReplaceTextCommand.st
packages/visualgst/Inspector/GtkInspectorSourceWidget.st
packages/visualgst/Inspector/GtkInspectorBrowserWidget.st
packages/visualgst/Inspector/GtkInspector
Widget.st packages/visualgst/Inspector/GtkObjectInspectorView.st
packages/visualgst/Inspector/GtkCompiledMethodInspectorView.st
packages/visualgst/Inspector/GtkCompiledBlockInspectorView.st
packages/visualgst/Inspector/GtkSequenceableCollectionInspectorView.st
packages/visualgst/Inspector/GtkSetInspectorView.st
packages/visualgst/Inspector/GtkDictionaryInspectorView.st
packages/visualgst/Inspector/GtkCharacterInspectorView.st
packages/visualgst/Inspector/GtkIntegerInspectorView.st
packages/visualgst/Inspector/GtkFloatInspectorView.st
packages/visualgst/Implementors/GtkImageResultsWidget.st
packages/visualgst/Implementors/GtkImplementorResultsWidget.st
packages/visualgst/Implementors/GtkSenderResultsWidget.st
packages/visualgst/Notification/Kernel/AbstractNamespace.st
packages/visualgst/Notification/Kernel/Metaclass.st
packages/visualgst/Notification/Kernel/Class.st
packages/visualgst/Notification/Kernel/MethodDictionary.st
packages/visualgst/Debugger/GtkStackInspectorView.st package
s/visualgst/Debugger/GtkStackInspector.st
packages/visualgst/SUnit/TestBacktraceLog.st
packages/visualgst/SUnit/GtkSUnitResultWidget.st
packages/visualgst/GtkClassSUnitWidget.st
packages/visualgst/GtkMethodSUnitWidget.st packages/visualgst/SUnit/GtkSUnit.st
packages/visualgst/Commands/OpenBrowserCommand.st
packages/visualgst/Commands/OpenTabbedBrowserCommand.st
packages/visualgst/Commands/ToolsMenus/OpenSUnitCommand.st
packages/visualgst/Commands/ToolsMenus/OpenBottomPaneCommand.st
packages/visualgst/Commands/OpenWorkspaceCommand.st
packages/visualgst/Commands/ToolsMenus/OpenImplementorCommand.st
packages/visualgst/Commands/ToolsMenus/OpenSenderCommand.st
packages/visualgst/Commands/ToolsMenus/OpenPackageBuilderCommand.st
packages/visualgst/Commands/SaveImageCommand.st
packages/visualgst/Commands/SaveImageAsCommand.st
packages/visualgst/Commands/InspectorMenus/InspectorBackCommand.st
packages/visualgst/Commands/InspectorMenus/InspectorDiveCommand.st
packages/visualgst/Commands/Works
paceMenus/DeleteItemCommand.st
packages/visualgst/Commands/WorkspaceMenus/InspectItemCommand.st
packages/visualgst/Commands/WorkspaceMenus/WorkspaceVariableCommand.st
packages/visualgst/Icons/category.gif packages/visualgst/Icons/namespace.gif
packages/visualgst/Icons/go-bottom.png packages/visualgst/Icons/go-down.png
packages/visualgst/Icons/go-first.png packages/visualgst/Icons/go-home.png
packages/visualgst/Icons/go-jump.png packages/visualgst/Icons/go-last.png
packages/visualgst/Icons/go-next.png packages/visualgst/Icons/go-previous.png
packages/visualgst/Icons/go-run.png packages/visualgst/Icons/go-top.png
packages/visualgst/Icons/go-up.png packages/visualgst/Icons/NUnit.Failed.png
packages/visualgst/Icons/NUnit.Loading.png
packages/visualgst/Icons/NUnit.None.png
packages/visualgst/Icons/NUnit.NotRun.png
packages/visualgst/Icons/NUnit.Running.png
packages/visualgst/Icons/NUnit.SuccessAndFailed.png
packages/visualgst/Icons/NUnit.Success.png
packages/visualgst/Icons/extension.png
packages/visualgst/Icons/overridden.png packages/visualgst/Icons/override.png
packages/visualgst/Icons/visualgst.png
packages/visualgst/Tests/AddNamespaceUndoCommandTest.st
packages/visualgst/Tests/GtkMethodWidgetTest.st
packages/visualgst/Tests/CompiledMethodTest.st
packages/visualgst/Tests/ExtractLiteralsTest.st
packages/visualgst/Tests/CategoryTest.st
packages/visualgst/Tests/MenuBuilderTest.st
packages/visualgst/Tests/GtkAssistantTest.st
packages/visualgst/Tests/EmptyTest.st
packages/visualgst/Tests/AddClassUndoCommandTest.st
packages/visualgst/Tests/GtkCategoryWidgetTest.st
packages/visualgst/Tests/StateTest.st packages/visualgst/Tests/FinderTest.st
packages/visualgst/Tests/PragmaTest.st
packages/visualgst/Tests/GtkCategorizedNamespaceWidgetTest.st
packages/visualgst/Tests/GtkCategorizedClassWidgetTest.st
$(VisualGST_FILES):
$(srcdir)/packages/visualgst/stamp-classes: $(VisualGST_FILES)
touch $(srcdir)/packages/visualgst/stamp-classes
diff --git a/packages/visualgst/Tetris/BlockWidget.st
b/packages/visualgst/Tetris/BlockWidget.st
deleted file mode 100644
index d5ff04c..0000000
--- a/packages/visualgst/Tetris/BlockWidget.st
+++ /dev/null
@@ -1,44 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-TetrisPieceWidget subclass: BlockWidget [
-
- drawOn: aCanvas [
- <category: 'drawing'>
-
- | linear |
- linear := Cairo.LinearGradient from: position to: (position x + size@
position y + size).
- linear addStopAt: 0 color: color.
- linear addStopAt: 1 color: Cairo.Color black.
-
- aCanvas
- fill: [ aCanvas rectangle: (position extent: address@hidden) ]
- with: linear
- ]
-]
diff --git a/packages/visualgst/Tetris/HighScores.st
b/packages/visualgst/Tetris/HighScores.st
deleted file mode 100644
index 5629941..0000000
--- a/packages/visualgst/Tetris/HighScores.st
+++ /dev/null
@@ -1,37 +0,0 @@
-Object subclass: HighScores [
-
- | highScores maxScores |
-
- HighScores class >> newSized: anInteger [
- <category: 'instance creation'>
-
- ^ self new
- maxScores: anInteger;
- yourself
- ]
-
- highScores [
- <category: 'accessing'>
-
- ^ highScores ifNil: [ highScores := OrderedCollection new ]
- ]
-
- maxScores: anInteger [
- <category: 'accessing'>
-
- maxScores := anInteger
- ]
-
- addScore: aScore [
- <category: 'updating'>
-
- | pos |
- pos := 0.
- self highScores doWithIndex: [ :each :index |
- each < index ifTrue: [ pos := index ] ].
- pos = 0 ifTrue: [ ^ self ].
- self highScores add: aScore after: pos.
- self highScores size > self maxScores ifTrue: [ self highScores
removeLast ]
- ]
-]
-
diff --git a/packages/visualgst/Tetris/Score.st
b/packages/visualgst/Tetris/Score.st
deleted file mode 100644
index 805651b..0000000
--- a/packages/visualgst/Tetris/Score.st
+++ /dev/null
@@ -1,25 +0,0 @@
-Object subclass: Score [
-
- Score class >> score: anInteger [
- <category: 'instance creation'>
-
- ^ self new
- score: anInteger;
- yourself
- ]
-
- | score |
-
- score: anInteger [
- <category: 'accessing'>
-
- score := anInteger
- ]
-
- score [
- <category: 'acccessing'>
-
- ^ score
- ]
-]
-
diff --git a/packages/visualgst/Tetris/Tetris.st
b/packages/visualgst/Tetris/Tetris.st
deleted file mode 100644
index c0c50de..0000000
--- a/packages/visualgst/Tetris/Tetris.st
+++ /dev/null
@@ -1,391 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Paolo Bonzini, Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-GTKTools.GtkMainWindow subclass: Tetris [
- | canvasWidget canvas process pause delay grid movingBlocks level score
level lines |
-
- <category: 'Graphics-Tetris'>
- <comment: nil>
-
- Tetris class [ | highScores | ]
-
- Tetris class >> highScores [
- <category: 'accessing'>
-
- ^ highScores ifNil: [ highScores := HighScores newSized: 10 ]
- ]
-
- Tetris class >> open [
- <category: 'user interface'>
-
- TetrisPiece initialize.
-
- ^ super open
- play;
- yourself
- ]
-
- initialize [
- <category: 'initialization'>
-
- movingBlocks := false.
- super initialize.
- ]
-
- windowTitle [
- <category: 'initialization'>
-
- ^'Tetris'
- ]
-
- postInitialize [
- <category: 'initialization'>
-
- super postInitialize.
- canvasWidget grabFocus.
- window
- connectSignal: 'key-press-event' to: self selector:
#'keyPressedOn:keyEvent:'
- ]
-
- onDelete [
- <category: 'windows event'>
-
- self quit.
- ^ true
- ]
-
- createHelpMenus [
- <category: 'user interface'>
-
- ^{GTK.GtkMenuItem menuItem: 'About Tetris' connectTo: self selector:
#aboutLauncher.
- GTK.GtkMenuItem menuItem: 'About GNU Smalltalk' connectTo: self
selector: #aboutGst}
- ]
-
- createMenus [
- <category: 'user interface'>
-
- self createMainMenu: #(#('Help' #createHelpMenus))
- ]
-
- buildCentralWidget [
- <category: 'user interface'>
-
- ^ canvasWidget := GTK.GtkDrawingArea new
- setSizeRequest: 400 height: 700;
- connectSignal: 'expose_event' to: self selector: #'expose:event:';
- yourself
- ]
-
- clearArea: aGtkAllocation [
- <category: 'drawing'>
-
- | res |
- res := aGtkAllocation castTo: (CIntType arrayType: 4).
-
- canvas saveWhile: [
- canvas
- rectangle: ((address@hidden) extent: ((res at: 2) @ (res at:
3)));
- operator: #clear;
- fill ]
- ]
-
- drawArea [
- <category: 'drawing'>
-
- 1 to: 22 do: [ :i |
- BlockWidget new
- position: 50@(50 + ((i - 1) * 15));
- size: 15;
- color: Cairo.Color white;
- drawOn: canvas.
-
- BlockWidget new
- position: (50 + (11 * 15))@(50 + ((i - 1) * 15));
- size: 15;
- color: Cairo.Color white;
- drawOn: canvas ].
-
- 1 to: 12 do: [ :i |
- BlockWidget new
- position: (50 + ((i - 1) * 15))@50;
- size: 15;
- color: Cairo.Color white;
- drawOn: canvas.
-
- BlockWidget new
- position: (50 + ((i - 1) * 15))@(50 + (22 * 15));
- size: 15;
- color: Cairo.Color white;
- drawOn: canvas ]
- ]
-
- drawGrid [
- <category: 'drawing'>
-
- grid ifNil: [ ^ self ].
- grid drawOn: canvas
- ]
-
- drawScore [
- <category: 'drawing'>
-
- canvas
- moveTo: address@hidden;
- sourceRed: 1 green: 1 blue: 1;
- showText: 'Score : ', (self score displayString);
- moveTo: address@hidden;
- showText: 'Level : ', (self level displayString);
- stroke.
- ]
-
- expose: aGtkWidget event: aGdkEventExpose [
- <category: 'drawing event'>
-
- aGtkWidget getWindow withContextDo: [ :cr |
- canvas := cr.
- self
- clearArea: aGtkWidget getAllocation;
- drawArea;
- drawGrid;
- drawScore ].
-
- ^ true
- ]
-
- keyPressedOn: aGtkWidget keyEvent: aGdkEventKey [
- <category: 'key event'>
-
- | event |
- movingBlocks ifFalse: [ ^ false ].
-
- event := aGdkEventKey castTo: GTK.GdkEventKey type.
-
- event keyval value = 65361 ifTrue: [ self movePieceLeft. ^ true ].
- event keyval value = 65363 ifTrue: [ self movePieceRight. ^ true ].
- event keyval value = 65362 ifTrue: [ self rotatePiece. ^ true ].
- event keyval value = 65364 ifTrue: [ self dropPiece. ^ true ].
-
- ^ false
- ]
-
- refresh [
- <category: 'drawing'>
-
- canvasWidget queueDraw
- ]
-
- cycle [
- <category: 'game'>
-
- | result filledLines |
- grid := TetrisField new.
- [ movingBlocks := true.
- result := grid currentPiece: TetrisPiece random.
- result ifTrue: [ self
- refresh;
- delay ].
- result ] whileTrue: [
- [ result := self slidePiece.
- self refresh.
- result ] whileTrue: [ self delay ].
- filledLines := self
- resetMovingBlocks;
- cementPiece;
- removeLines.
- self updateScore: filledLines.
- Processor yield ].
-
- ^ self gameOver
- ]
-
- initializeGame [
- <category: 'game'>
-
- self
- level: 1;
- lines: 0;
- score: 0.
- movingBlocks := true
- ]
-
- play [
- <category: 'game'>
-
- process := [ self
- initializeGame;
- cycle ] fork.
- ]
-
- quit [
- <category: 'game'>
-
- process terminate.
- window hideAll
- ]
-
- gameOver [
- <category: 'game'>
-
- self highScores addScore: (Score score: self score)
- ]
-
- resetMovingBlocks [
- <category: 'game'>
-
- movingBlocks := false
- ]
-
- delay [
- "I like this method a lot!"
-
- <category: 'private'>
- delay wait.
-
- "Especially this semaphore!!
- pause wait.
- pause signal"
- ]
-
- highScores [
- <category: 'accessing'>
-
- ^ self class highScores
- ]
-
- level [
- <category: 'accessing'>
-
- ^ level
- ]
-
- level: nextLevel [
- <category: 'private'>
-
- level := nextLevel min: 10.
- delay := Delay forMilliseconds: 825 - (75 * level).
- ]
-
- lines [
- <category: 'private'>
-
- ^ lines
- ]
-
- lines: newLines [
- <category: 'private'>
-
- lines := newLines
- ]
-
- score [
- <category: 'private'>
-
- ^ score
- ]
-
- score: newScore [
- <category: 'private'>
-
- score := newScore
- ]
-
- updateScore: filledLines [
- <category: 'private'>
-
- self lines: self lines + filledLines.
- (self lines - 1) // 10 > (self level - 1) ifTrue: [ self advanceLevel
].
- self score: 2 * self level squared + (#(0 50 150 400 900) at:
filledLines + 1) + self score
- ]
-
- advanceLevel [
- <category: 'events'>
-
- self level: self level + 1
- ]
-
- movePieceLeft [
- <category: 'events'>
-
- grid movePieceLeft.
- self refresh
- ]
-
- movePieceRight [
- <category: 'events'>
-
- grid movePieceRight.
- self refresh
- ]
-
- pause [
- <category: 'events'>
-
- "I like this semaphore a lot!"
- pause wait
- ]
-
- restart [
- <category: 'events'>
-
- "I like this semaphore a lot!"
- pause signal
- ]
-
- rotatePiece [
- <category: 'events'>
-
- grid rotatePiece.
- self refresh
- ]
-
- slidePiece [
- <category: 'events'>
-
- ^ grid slidePiece
- ]
-
- cementPiece [
- <category: 'events'>
-
- ^ grid cementPiece
- ]
-
- removeLines [
- <category: 'game'>
-
- ^ grid removeLines
- ]
-
- dropPiece [
- <category: 'events'>
-
- ^ grid dropPiece
- ]
-]
-
diff --git a/packages/visualgst/Tetris/TetrisField.st
b/packages/visualgst/Tetris/TetrisField.st
deleted file mode 100644
index afd0465..0000000
--- a/packages/visualgst/Tetris/TetrisField.st
+++ /dev/null
@@ -1,180 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Paolo Bonzini, Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-
-Object subclass: TetrisField [
- | rows currentPiece |
-
- <category: 'Graphics-Tetris'>
- <comment: nil>
-
- TetrisField class >> new [
- <category: 'instance creation'>
-
- ^ self basicNew initialize
- ]
-
- at: point [
- <category: 'accessing'>
-
- ^ (rows at: point y) at: point x
- ]
-
- at: point put: value [
- <category: 'accessing'>
-
- ^ (rows at: point y) at: point x put: value
- ]
-
- initialize [
- <category: 'initializing'>
-
- rows := (1 to: 22) collect: [:each | ByteArray new: 10].
- rows do: [:each | self initializeLine: each].
- (rows at: 22) atAll: (1 to: 10) put: 1
- ]
-
- initializeLine: line [
- <category: 'initializing'>
-
- line
- atAll: (1 to: 10) put: 0
- ]
-
- checkLine: y [
- <category: 'removing filled lines'>
-
- ^ (rows at: y) allSatisfy: [:each | each ~~ 0]
- ]
-
- removeLines [
- <category: 'removing filled lines'>
-
- | removed lastLine firstLine |
- removed := 0.
- firstLine := self currentPiece y.
- lastLine := 21 min: firstLine + 3.
- lastLine - firstLine + 1 timesRepeat:
- [(self checkLine: lastLine)
- ifTrue:
- [removed := removed + 1.
- self removeLine: lastLine]
- ifFalse: [lastLine := lastLine - 1]].
- ^ removed
- ]
-
- removeLine: filledY [
- <category: 'removing filled lines'>
-
- | saved y shift line |
- saved := rows at: filledY.
- filledY to: 2
- by: -1
- do: [:each | rows at: each put: (rows at: each - 1)].
- self initializeLine: saved.
- rows at: 1 put: saved
- ]
-
- cementPiece [
- <category: 'piece'>
-
- self currentPiece cementOn: self
- ]
-
- dropPiece [
- <category: 'moving pieces'>
-
- [ self slidePiece ] whileTrue: []
- ]
-
- movePieceLeft [
- <category: 'moving pieces'>
-
- self currentPiece x: self currentPiece x - 1.
- ^ self currentPiece moveInto: self
- ifFail: [self currentPiece x: self currentPiece x + 1]
- ]
-
- movePieceRight [
- <category: 'moving pieces'>
-
- self currentPiece x: self currentPiece x + 1.
- ^ self currentPiece moveInto: self
- ifFail: [ self currentPiece x: self currentPiece x - 1 ]
- ]
-
- rotatePiece [
- <category: 'moving pieces'>
-
- self currentPiece rotate: 1.
- ^ self currentPiece moveInto: self ifFail: [ self currentPiece rotate:
3 ]
- ]
-
- slidePiece [
- <category: 'moving pieces'>
-
- self currentPiece y: self currentPiece y + 1.
- ^ self currentPiece moveInto: self
- ifFail: [self currentPiece y: self currentPiece y - 1]
- ]
-
- currentPiece [
- <category: 'accessing piece variables'>
-
- ^ currentPiece
- ]
-
- currentPiece: piece [
- <category: 'accessing piece variables'>
-
- currentPiece := piece.
- (self currentPiece)
- x: 4;
- y: 1.
-
- self currentPiece moveInto: self
- ifFail: [ ^ false ].
- ^ true
- ]
-
- drawOn: aCanvas [
- <category: 'drawing'>
-
- 1 to: 21 do: [ :y |
- 1 to: 10 do: [ :x |
- ((rows at: y) at: x) ~= 0 ifTrue: [
- BlockWidget new
- position: (50 + (x * 15))@(50 + (y * 15));
- size: 15;
- color: Cairo.Color white;
- drawOn: aCanvas ] ] ].
- self currentPiece drawOn: aCanvas
- ]
-]
-
diff --git a/packages/visualgst/Tetris/TetrisFieldWidget.st
b/packages/visualgst/Tetris/TetrisFieldWidget.st
deleted file mode 100644
index 25beaa8..0000000
--- a/packages/visualgst/Tetris/TetrisFieldWidget.st
+++ /dev/null
@@ -1,57 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-Object subclass: TetrisFieldWidget [
-
- | position size color |
-
- position: aPoint [
- <category: 'accessing'>
-
- position := aPoint
- ]
-
- size: anInteger [
- <category: 'accessing'>
-
- size := anInteger
- ]
-
- color: aColor [
- <category: 'accessing'>
-
- color := aColor
- ]
-
- drawOn: aCanvas [
- <category: 'drawing'>
-
- self subclassResponsibility
- ]
-]
diff --git a/packages/visualgst/Tetris/TetrisPiece.st
b/packages/visualgst/Tetris/TetrisPiece.st
deleted file mode 100644
index e4cab58..0000000
--- a/packages/visualgst/Tetris/TetrisPiece.st
+++ /dev/null
@@ -1,175 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Paolo Bonzini, Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-Object subclass: TetrisPiece [
- | rotation origin |
-
- <category: 'Graphics-Tetris'>
- <comment: nil>
-
- Pieces := nil.
-
- TetrisPiece class >> pieces [
- <category: 'accessing'>
-
- ^ Pieces ifNil: [ Pieces := self subclasses asOrderedCollection ]
- ]
-
- TetrisPiece class >> random [
- <category: 'pieces'>
-
- | piece |
- piece := Random between: 1 and: 7.
- ^ (self pieces at: piece) new
- initialize;
- yourself
- ]
-
- initialize [
- <category: 'initialization'>
-
- rotation := 1.
- origin := Point new
- ]
-
- piece [
- <category: 'accessing'>
-
- ^ self class piece
- ]
-
- color [
- <category: 'drawing'>
-
- ^ self class color
- ]
-
- cementOn: field [
- <category: 'blocks'>
-
- | point x y |
- point := Point new.
- y := 0.
- (self piece at: rotation) do: [ :line |
- x := 0.
- line do: [ :elem |
- elem = 1 ifTrue: [
- point
- x: self origin x + x;
- y: self origin y + y.
- (field at: point) = 0 ifTrue: [ field at: point
put: elem ] ].
- x := x + 1 ].
- y := y + 1].
- ]
-
- canMoveInto: field [
- <category: 'moving'>
-
- | point x y |
- point := Point new.
- y := 0.
- (self piece at: rotation) do: [ :line |
- x := 0.
- line do: [ :elem |
- elem = 1 ifTrue: [
- point
- x: self origin x + x;
- y: self origin y + y.
- (field at: point) > 0 ifTrue: [ ^ false ] ].
- x := x + 1 ].
- y := y + 1 ].
- ^ true
- ]
-
- moveInto: field ifFail: aBlock [
- <category: 'moving'>
-
- (self canMoveInto: field) ifFalse: [ aBlock value.
- ^ false ].
- ^ true
- ]
-
- rotate: howMany [
- "Three lines are necessary because rotation is in the 1..4 range,
- while \\ likes a 0..3 range"
-
- <category: 'moving'>
- rotation := rotation - 1.
- rotation := (rotation + howMany) \\ 4.
- rotation := rotation + 1
- ]
-
- origin [
- <category: 'accessing'>
-
- ^ origin
- ]
-
- x [
- <category: 'accessing'>
-
- ^ self origin x
- ]
-
- x: x [
- <category: 'accessing'>
-
- self origin x: x
- ]
-
- y [
- <category: 'accessing'>
-
- ^ self origin y
- ]
-
- y: y [
- <category: 'accessing'>
-
- self origin y: y
- ]
-
- drawOn: aCanvas [
- <category: 'drawing'>
-
- | y |
- y := 0.
- (self piece at: rotation) do: [ :line |
- y := y + 1.
- 1 to: 4 do: [ :x |
- (line at: x) ~= 0 ifTrue: [
- BlockWidget new
- position: (50 + ((self x + x - 1) * 15))@(50 + ((self
y + y - 1) * 15));
- size: 15;
- color: self color;
- drawOn: aCanvas ] ] ]
- ]
-
-]
-
diff --git a/packages/visualgst/Tetris/TetrisPieceI.st
b/packages/visualgst/Tetris/TetrisPieceI.st
deleted file mode 100644
index 05fdd5a..0000000
--- a/packages/visualgst/Tetris/TetrisPieceI.st
+++ /dev/null
@@ -1,62 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Paolo Bonzini, Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-TetrisPiece subclass: TetrisPieceI [
-
- <category: 'Graphics-Tetris'>
- <comment: nil>
-
- TetrisPieceI class >> piece [
- <category: 'pieces'>
-
- ^#( #( #(1 0 0 0)
- #(1 0 0 0)
- #(1 0 0 0)
- #(1 0 0 0))
- #( #(0 0 0 0)
- #(0 0 0 0)
- #(0 0 0 0)
- #(1 1 1 1))
- #( #(1 0 0 0)
- #(1 0 0 0)
- #(1 0 0 0)
- #(1 0 0 0))
- #( #(0 0 0 0)
- #(0 0 0 0)
- #(0 0 0 0)
- #(1 1 1 1)))
- ]
-
- TetrisPieceI class >> color [
- <category: 'pieces'>
-
- ^ Cairo.Color red
- ]
-]
-
diff --git a/packages/visualgst/Tetris/TetrisPieceJ.st
b/packages/visualgst/Tetris/TetrisPieceJ.st
deleted file mode 100644
index 6c4ce92..0000000
--- a/packages/visualgst/Tetris/TetrisPieceJ.st
+++ /dev/null
@@ -1,62 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Paolo Bonzini, Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-TetrisPiece subclass: TetrisPieceJ [
-
- <category: 'Graphics-Tetris'>
- <comment: nil>
-
- TetrisPieceJ class >> piece [
- <category: 'pieces'>
-
- ^#( #( #(0 1 0 0)
- #(0 1 0 0)
- #(1 1 0 0)
- #(0 0 0 0))
- #( #(1 0 0 0)
- #(1 1 1 0)
- #(0 0 0 0)
- #(0 0 0 0))
- #( #(1 1 0 0)
- #(1 0 0 0)
- #(1 0 0 0)
- #(0 0 0 0))
- #( #(1 1 1 0)
- #(0 0 1 0)
- #(0 0 0 0)
- #(0 0 0 0)))
- ]
-
- TetrisPieceJ class >> color [
- <category: 'pieces'>
-
- ^ Cairo.Color magenta
- ]
-]
-
diff --git a/packages/visualgst/Tetris/TetrisPieceL.st
b/packages/visualgst/Tetris/TetrisPieceL.st
deleted file mode 100644
index e544c47..0000000
--- a/packages/visualgst/Tetris/TetrisPieceL.st
+++ /dev/null
@@ -1,62 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Paolo Bonzini, Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-TetrisPiece subclass: TetrisPieceL [
-
- <category: 'Graphics-Tetris'>
- <comment: nil>
-
- TetrisPieceL class >> piece [
- <category: 'pieces'>
-
- ^#( #( #(1 0 0 0)
- #(1 0 0 0)
- #(1 1 0 0)
- #(0 0 0 0))
- #( #(1 1 1 0)
- #(1 0 0 0)
- #(0 0 0 0)
- #(0 0 0 0))
- #( #(1 1 0 0)
- #(0 1 0 0)
- #(0 1 0 0)
- #(0 0 0 0))
- #( #(0 0 1 0)
- #(1 1 1 0)
- #(0 0 0 0)
- #(0 0 0 0)))
- ]
-
- TetrisPieceL class >> color [
- <category: 'pieces'>
-
- ^ Cairo.Color r: 0.74 g: 0.71 b: 0.42 "DarkKhaki"
- ]
-]
-
diff --git a/packages/visualgst/Tetris/TetrisPieceO.st
b/packages/visualgst/Tetris/TetrisPieceO.st
deleted file mode 100644
index 46cf714..0000000
--- a/packages/visualgst/Tetris/TetrisPieceO.st
+++ /dev/null
@@ -1,62 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Paolo Bonzini, Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-TetrisPiece subclass: TetrisPieceO [
-
- <category: 'Graphics-Tetris'>
- <comment: nil>
-
- TetrisPieceO class >> piece [
- <category: 'pieces'>
-
- ^#( #( #(1 1 0 0)
- #(1 1 0 0)
- #(0 0 0 0)
- #(0 0 0 0))
- #( #(1 1 0 0)
- #(1 1 0 0)
- #(0 0 0 0)
- #(0 0 0 0))
- #( #(1 1 0 0)
- #(1 1 0 0)
- #(0 0 0 0)
- #(0 0 0 0))
- #( #(1 1 0 0)
- #(1 1 0 0)
- #(0 0 0 0)
- #(0 0 0 0)))
- ]
-
- TetrisPieceO class >> color [
- <category: 'piece'>
-
- ^ Cairo.Color r: 0.54 g: 0.17 b: 0.88 "BlueViolet"
- ]
-]
-
diff --git a/packages/visualgst/Tetris/TetrisPieceS.st
b/packages/visualgst/Tetris/TetrisPieceS.st
deleted file mode 100644
index 19b3ee1..0000000
--- a/packages/visualgst/Tetris/TetrisPieceS.st
+++ /dev/null
@@ -1,62 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Paolo Bonzini, Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-TetrisPiece subclass: TetrisPieceS [
-
- <category: 'Graphics-Tetris'>
- <comment: nil>
-
- TetrisPieceS class >> piece [
- <category: 'pieces'>
-
- ^#( #( #(0 1 0 0)
- #(1 1 0 0)
- #(1 0 0 0)
- #(0 0 0 0))
- #( #(1 1 0 0)
- #(0 1 1 0)
- #(0 0 0 0)
- #(0 0 0 0))
- #( #(0 1 0 0)
- #(1 1 0 0)
- #(1 0 0 0)
- #(0 0 0 0))
- #( #(1 1 0 0)
- #(0 1 1 0)
- #(0 0 0 0)
- #(0 0 0 0)))
- ]
-
- TetrisPieceS class >> color [
- <category: 'pieces'>
-
- ^ Cairo.Color cyan
- ]
-]
-
diff --git a/packages/visualgst/Tetris/TetrisPieceT.st
b/packages/visualgst/Tetris/TetrisPieceT.st
deleted file mode 100644
index b7c6af0..0000000
--- a/packages/visualgst/Tetris/TetrisPieceT.st
+++ /dev/null
@@ -1,60 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Paolo Bonzini, Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-TetrisPiece subclass: TetrisPieceT [
-
- <category: 'Graphics-Tetris'>
- <comment: nil>
-
- TetrisPieceT class >> piece [
- <category: 'pieces'>
- ^#( #( #(0 1 0 0)
- #(1 1 1 0)
- #(0 0 0 0)
- #(0 0 0 0))
- #( #(1 0 0 0)
- #(1 1 0 0)
- #(1 0 0 0)
- #(0 0 0 0))
- #( #(1 1 1 0)
- #(0 1 0 0)
- #(0 0 0 0)
- #(0 0 0 0))
- #( #(0 1 0 0)
- #(1 1 0 0)
- #(0 1 0 0)
- #(0 0 0 0)))
- ]
-
- TetrisPieceT class >> color [
- <category: 'pieces'>
-
- ^ Cairo.Color r: 0.13 g: 0.54 b: 0.13 "ForestGreen"
- ]
-]
diff --git a/packages/visualgst/Tetris/TetrisPieceWidget.st
b/packages/visualgst/Tetris/TetrisPieceWidget.st
deleted file mode 100644
index 1795612..0000000
--- a/packages/visualgst/Tetris/TetrisPieceWidget.st
+++ /dev/null
@@ -1,57 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-Object subclass: TetrisPieceWidget [
-
- | position size color |
-
- position: aPoint [
- <category: 'accessing'>
-
- position := aPoint
- ]
-
- size: anInteger [
- <category: 'accessing'>
-
- size := anInteger
- ]
-
- color: aColor [
- <category: 'accessing'>
-
- color := aColor
- ]
-
- drawOn: aCanvas [
- <category: 'drawing'>
-
- self subclassResponsibility
- ]
-]
diff --git a/packages/visualgst/Tetris/TetrisPieceZ.st
b/packages/visualgst/Tetris/TetrisPieceZ.st
deleted file mode 100644
index e49cf3c..0000000
--- a/packages/visualgst/Tetris/TetrisPieceZ.st
+++ /dev/null
@@ -1,62 +0,0 @@
-"======================================================================
-|
-| GTK Tetris... why not?
-|
-|
- ======================================================================"
-
-"======================================================================
-|
-| Copyright 1999 Free Software Foundation, Inc.
-| Written by Paolo Bonzini, Gwenael Casaccio.
-|
-| This file is part of GNU Smalltalk.
-|
-| GNU Smalltalk is free software; you can redistribute it and/or modify it
-| under the terms of the GNU General Public License as published by the Free
-| Software Foundation; either version 2, or (at your option) any later version.
-|
-| GNU Smalltalk is distributed in the hope that it will be useful, but WITHOUT
-| ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-| FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-| details.
-|
-| You should have received a copy of the GNU General Public License along with
-| GNU Smalltalk; see the file LICENSE. If not, write to the Free Software
-| Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-|
- ======================================================================"
-
-TetrisPiece subclass: TetrisPieceZ [
-
- <category: 'Graphics-Tetris'>
- <comment: nil>
-
- TetrisPieceZ class >> piece [
- <category: 'pieces'>
-
- ^#( #( #(1 0 0 0)
- #(1 1 0 0)
- #(0 1 0 0)
- #(0 0 0 0))
- #( #(0 1 1 0)
- #(1 1 0 0)
- #(0 0 0 0)
- #(0 0 0 0))
- #( #(1 0 0 0)
- #(1 1 0 0)
- #(0 1 0 0)
- #(0 0 0 0))
- #( #(0 1 1 0)
- #(1 1 0 0)
- #(0 0 0 0)
- #(0 0 0 0)))
- ]
-
- TetrisPieceZ class >> color [
- <category: 'pieces'>
-
- ^ Cairo.Color r: 0.99 g: 0.55 b: 0 "DarkOrange"
- ]
-]
-
diff --git a/packages/visualgst/package.xml b/packages/visualgst/package.xml
index 3ab496d..d826135 100644
--- a/packages/visualgst/package.xml
+++ b/packages/visualgst/package.xml
@@ -217,7 +217,6 @@
<filein>Undo/Text/InsertTextCommand.st</filein>
<filein>Undo/Text/DeleteTextCommand.st</filein>
<filein>Undo/Text/ReplaceTextCommand.st</filein>
- <filein>Clock/GtkClock.st</filein>
<filein>Inspector/GtkInspectorSourceWidget.st</filein>
<filein>Inspector/GtkInspectorBrowserWidget.st</filein>
<filein>Inspector/GtkInspectorWidget.st</filein>
@@ -239,20 +238,6 @@
<filein>Notification/Kernel/MethodDictionary.st</filein>
<filein>Debugger/GtkStackInspectorView.st</filein>
<filein>Debugger/GtkStackInspector.st</filein>
- <filein>Tetris/HighScores.st</filein>
- <filein>Tetris/Score.st</filein>
- <filein>Tetris/TetrisPieceWidget.st</filein>
- <filein>Tetris/BlockWidget.st</filein>
- <filein>Tetris/TetrisField.st</filein>
- <filein>Tetris/TetrisPiece.st</filein>
- <filein>Tetris/TetrisPieceI.st</filein>
- <filein>Tetris/TetrisPieceJ.st</filein>
- <filein>Tetris/TetrisPieceL.st</filein>
- <filein>Tetris/TetrisPieceO.st</filein>
- <filein>Tetris/TetrisPieceS.st</filein>
- <filein>Tetris/TetrisPieceT.st</filein>
- <filein>Tetris/TetrisPieceZ.st</filein>
- <filein>Tetris/Tetris.st</filein>
<filein>SUnit/TestBacktraceLog.st</filein>
<filein>SUnit/GtkSUnitResultWidget.st</filein>
<filein>GtkClassSUnitWidget.st</filein>
@@ -430,7 +415,6 @@
<file>Undo/Text/InsertTextCommand.st</file>
<file>Undo/Text/DeleteTextCommand.st</file>
<file>Undo/Text/ReplaceTextCommand.st</file>
- <file>Clock/GtkClock.st</file>
<file>Inspector/GtkInspectorSourceWidget.st</file>
<file>Inspector/GtkInspectorBrowserWidget.st</file>
<file>Inspector/GtkInspectorWidget.st</file>
@@ -452,20 +436,6 @@
<file>Notification/Kernel/MethodDictionary.st</file>
<file>Debugger/GtkStackInspectorView.st</file>
<file>Debugger/GtkStackInspector.st</file>
- <file>Tetris/HighScores.st</file>
- <file>Tetris/Score.st</file>
- <file>Tetris/TetrisPieceWidget.st</file>
- <file>Tetris/BlockWidget.st</file>
- <file>Tetris/TetrisField.st</file>
- <file>Tetris/TetrisPiece.st</file>
- <file>Tetris/TetrisPieceI.st</file>
- <file>Tetris/TetrisPieceJ.st</file>
- <file>Tetris/TetrisPieceL.st</file>
- <file>Tetris/TetrisPieceO.st</file>
- <file>Tetris/TetrisPieceS.st</file>
- <file>Tetris/TetrisPieceT.st</file>
- <file>Tetris/TetrisPieceZ.st</file>
- <file>Tetris/Tetris.st</file>
<file>SUnit/TestBacktraceLog.st</file>
<file>SUnit/GtkSUnitResultWidget.st</file>
<file>GtkClassSUnitWidget.st</file>
--
1.7.10.4
- Re: [Help-smalltalk] [PATCH 09/15] gtktools: Introduce a GTKTools package with helper classes, (continued)
- [Help-smalltalk] [PATCH 15/15] tooling: Introduce a helper for a Monticello export, Holger Hans Peter Freyther, 2013/04/08
- [Help-smalltalk] [PATCH 11/15] gtktools: Move the GtkSideBarWidget from VisualGST to GTKTools, Holger Hans Peter Freyther, 2013/04/08
- [Help-smalltalk] [PATCH 14/15] tooling: Introduce a new package for tooling helpers, Holger Hans Peter Freyther, 2013/04/08
- [Help-smalltalk] [PATCH 12/15] gtktools: Move model classes from VisualGST to GTKTools, Holger Hans Peter Freyther, 2013/04/08
- [Help-smalltalk] [PATCH 13/15] gtktools: Move the Clock/Tetris to the GTKTools,
Holger Hans Peter Freyther <=
- Re: [Help-smalltalk] [PATCH 01/15] opcode: Remove the copy of the binutils code from the repository, Paolo Bonzini, 2013/04/14