Hi, it seems my commit notifications are being marked as spam :S
But anyway, I'm glad to know you took the time to clean the Skeleton project. It's one step closer to inclusion :) I tried to fix the layout problem that Karl mentioned before and this is my first shot. I think the result is nice, although I had to create a new morph subclass (which I don't really like much).
Cheers, Richo
On Tue, Oct 18, 2011 at 12:50 PM, commits@source.squeak.org wrote:
Spam detection software, running on the system "europa.mgmt.inetu.net", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details.
Content preview: Ricardo Moran uploaded a new version of Skeleton to project Etoys Inbox: http://source.squeak.org/etoysinbox/Skeleton-Richo.5.mcz==================== Summary ==================== Name: Skeleton-Richo.5 Author: Richo Time: 18 October 2011, 12:50:19 pm UUID: 2d68a228-e98a-b64c-af4f-48ae0cb56a9c Ancestors: Skeleton-kfr.4 [...]
Content analysis details: (6.5 points, 5.0 required)
pts rule name description
3.5 BAYES_99 BODY: Bayesian spam probability is 99 to 100% [score: 1.0000] 0.0 MISSING_MID Missing Message-Id: header 1.2 INVALID_DATE Invalid Date: header (not RFC 2822) 1.0 DATE_IN_PAST_12_24 Date: is 12 to 24 hours before Received: date 1.7 TVD_FUZZY_SYMBOL BODY: TVD_FUZZY_SYMBOL 3.8 TVD_STOCK1 BODY: TVD_STOCK1 0.1 RDNS_NONE Delivered to trusted network by a host with no rDNS -4.8 AWL AWL: From: address is in the auto white-list
---------- Forwarded message ---------- From: commits@source.squeak.org To: etoys-dev@squeakland.org Date: Tue, 18 Oct 2011 15:50:20.809 0000 Subject: Etoys Inbox: Skeleton-Richo.5.mcz Ricardo Moran uploaded a new version of Skeleton to project Etoys Inbox: http://source.squeak.org/etoysinbox/Skeleton-Richo.5.mcz
==================== Summary ====================
Name: Skeleton-Richo.5 Author: Richo Time: 18 October 2011, 12:50:19 pm UUID: 2d68a228-e98a-b64c-af4f-48ae0cb56a9c Ancestors: Skeleton-kfr.4
Trying to fix the layout problem with the tick morph and the sheet's name. I renamed SkSheetMorph to SkBasicSheetMorph and I removed all the code that adds page controls and draws its name. So now it is a simple spreadsheet. I then created a new SkSheetMorph that decorates a SkBasicSheetMorph with the page controls and a title.
I also removed the reference to Connectors in Morph>>#showPointArrowFrom:to:label: because it gave a DNU that I didn't knew how to fix it, and because it doesn't seem to be really important behavior.
=============== Diff against Skeleton-kfr.4 ===============
Item was changed: ----- Method: Morph>>showPointArrowFrom:to:label: (in category '*skeleton-base-arrow') ----- showPointArrowFrom: morph1 to: morph2 label: aString "Morph new showPointArrowFrom: (Morph new position: 0@0) to: (Morph new position: 200@200) label: 'test'" | p1 p2 arrow label connector | p1 := morph1 center. p2 := morph2 center. arrow := PolygonMorph arrowPrototype. arrow borderColor: (TranslucentColor r: 1.0 g: 0.3 b: 0.0 alpha: 0.6). arrow setVertices: (Array with: p1 with: p2). arrow dashedBorder: {30. 30. Color transparent. 0. -10}; startStepping.
(Smalltalk
at: #NCAAConnectorMorph
ifAbsent: [])
ifNotNil: [connector := NCAAConnectorMorph fromMorph:
morph1 toMorph: morph2.
connector line: arrow.
connector lock.
label := NCLabelMorph new string: aString.
label input: morph1.
label color: Color red.
label openInWorld.
arrow := connector]. arrow openInWorld.
arrow addAlarm: #delete after: 500!
arrow addAlarm: #delete after: 500.
label ifNotNil: [label addAlarm: #delete after: 500]
- !
Item was changed: ----- Method: Player>>setTotalColumns: (in category '*skeleton-spreadsheet') ----- setTotalColumns: aNumber
^ self sheetMorph area: (0@0 corner: (aNumber max: 2) @ self
getTotalRows)!
^ self sheetMorph area: (0@0 corner: aNumber @ self getTotalRows)!
Item was changed:
----- Method: Player>>setTotalRows: (in category '*skeleton-spreadsheet')
setTotalRows: aNumber
^ self sheetMorph area: (0@0 corner: self getTotalColumns @
(aNumber max: 2))!
^ self sheetMorph area: (0@0 corner: self getTotalColumns @
aNumber)!
Item was added:
- SkGridMorph subclass: #SkBasicSheetMorph
instanceVariableNames: 'history model selectionMorph dropZone
showFormula'
classVariableNames: ''
poolDictionaries: ''
category: 'Skeleton-Base'!
- !SkBasicSheetMorph commentStamp: 'tak 12/11/2003 19:10' prior: 0!
- I am a presentation compornent for showing as 2-D grid.
- The contents what I show is depended on a model.
- I never access to a cell directly except through model because
- a cell doesn't know where he locates. Basically, Position information is
- only in model.
- cellArea Rectangle -- the area of cells for drawing. Actual
size of table is cellArea extent.
- model SkSheet --
- !
Item was added:
- ----- Method: SkBasicSheetMorph class>>additionsToViewerCategories (in
category 'viewer categories') -----
- additionsToViewerCategories
- ^ #(
- (#spreadsheet (
- #(command clearTable 'Deletes the contents of all cells')
- #(command clearRow 'Deletes the contents of the current row cells' )
- #(command clearColumn 'Deletes the contents of the current columns cells'
)
- #(slot totalRows 'Lets you change the amount of rows in the spreadsheet'
Number readWrite Player getTotalRows Player setTotalRows: )
- #(slot totalColumns 'Lets you change the amount of columns in the
spreadsheet' Number readWrite Player getTotalColumns Player setTotalColumns: )
- #(slot rowIndex 'Sets the current row' Number readWrite Player
getRowIndex Player setRowIndex: )
- #(slot columnIndex 'Sets the current column' Number readWrite Player
getColumnIndex Player setColumnIndex: )
- #(slot currentCharacters 'Lets you read and modify the characters of the
current cell' String readWrite Player getCurrentCharacters Player setCurrentCharacters: )
- #(slot currentNumericValue 'Lets you read and modify the numeric value of
the current cell' Number readWrite Player getCurrentNumericValue Player setCurrentNumericValue: )
- ))
- (#'data i/o' (
- #(slot writeMode 'Lets you choose a write mode (overwrite or append)'
WriteMode readWrite Player getWriteMode Player setWriteMode: )
- #(slot csvSeparator 'Lets you choose a character to act as a separator
between cells' String readWrite Player getCsvSeparator Player setCsvSeparator: )
- #(slot csvFileName 'Sets the name of the file to import/export data'
String readWrite Player getCsvFileName Player setCsvFileName: )
- #(command importDataFromFile 'Reads the data from the file and loads it
in the spreadsheet')
- #(command exportDataToFile 'Writes the data from the spreadsheet into the
file')
- ))
- )!
Item was added:
- ----- Method: SkBasicSheetMorph class>>initialize (in category 'class
initialization') -----
- initialize
"
self initialize.
"
Vocabulary addStandardVocabulary: (SymbolListType new
vocabularyName: #WriteMode;
symbols: #(#overwrite #append)).!
Item was added:
- ----- Method: SkBasicSheetMorph class>>model: (in category 'instance
creation') -----
- model: aSkObject
^ super new model: aSkObject!
Item was added:
- ----- Method: SkBasicSheetMorph>>acceptDroppingMorph:event: (in category
'drag and drop') -----
- acceptDroppingMorph: aMorph event: evt
| cellPos successed |
cellPos _ self screenToCell: aMorph topLeft.
(cellPos x < 1
or: [cellPos y < 1])
ifTrue: [self beep: 'arrow'.
^ aMorph rejectDropMorphEvent: evt].
successed _ false.
successed _ (aMorph isKindOf: SkGridPartsMorph)
ifTrue: [self acceptRuleMorph: aMorph
event: evt]
ifFalse: [aMorph class = PhraseTileMorph
ifTrue: [self
acceptPhraseTileMorph: aMorph event: evt]
ifFalse: [aMorph class =
TileMorph
ifTrue:
[self acceptTileMorph: aMorph event: evt]]].
successed
ifTrue: [self beep: 'cassete']
ifFalse: [self beep: 'arrow'.
aMorph rejectDropMorphEvent: evt]!
Item was added:
- ----- Method: SkBasicSheetMorph>>acceptPhraseTileMorph:event: (in
category 'drag and drop') -----
- acceptPhraseTileMorph: aMorph event: evt
| setter getter |
getter _ aMorph operatorTile operatorOrExpression.
setter _ ('set'
, (getter allButFirst: 3) , ':') asSymbol.
self model
modelAt: (self screenToCell: aMorph topLeft)
for: aMorph actualObject
getter: getter
setter: setter.
^ true!
Item was added:
- ----- Method: SkBasicSheetMorph>>acceptRuleMorph:event: (in category
'drag and drop') -----
- acceptRuleMorph: aMorph event: evt
| cellPos card |
model parent adopt: aMorph model rule.
cellPos _ (self screenToCell: aMorph topLeft)
+ (aMorph cellOrigin - aMorph area
topLeft).
self model textAt: cellPos put: '=' , aMorph model codeString.
card _ self
cardMorphAt: cellPos
ifAbsent: [^ false].
card model rule = aMorph model rule
ifFalse: ["maybe successed"
^ false].
aMorph halo
ifNotNilDo: [:halo | halo setTarget: card].
^ true!
Item was added:
- ----- Method: SkBasicSheetMorph>>acceptTileMorph:event: (in category
'drag and drop') -----
- acceptTileMorph: aMorph event: evt
| object |
object _ aMorph actualObject.
self model
at: (self screenToCell: aMorph topLeft)
put: object.
^ true!
Item was added:
- ----- Method: SkBasicSheetMorph>>areaChanged (in category 'layout') -----
- areaChanged
super areaChanged.
self
submorphsDo: [:m | (m isKindOf: SkGridMorph)
ifTrue: [m areaChanged]]!
Item was added:
- ----- Method: SkBasicSheetMorph>>cardMorphAt:ifAbsent: (in category
'accessing') -----
- cardMorphAt: aPoint ifAbsent: aBlock
^ self submorphs
detect: [:m | m class = SkCardMorph
and: [m cellOrigin = aPoint]]
ifNone: aBlock!
Item was added:
- ----- Method: SkBasicSheetMorph>>cellExtentAt: (in category 'layout')
- cellExtentAt: aPoint
| cellExtent x y |
^ (model notNil
and: [(cellExtent _ model findName: self
cellExtentName) class == SkSheet ])
ifTrue: [x _ (cellExtent
at: aPoint x @ 1
ifAbsent: [SkGridMorph
standardCellExtent]) x.
y _ (cellExtent
at: 1 @ aPoint y
ifAbsent: [SkGridMorph
standardCellExtent]) y.
x @ y]
ifFalse: [SkGridMorph standardCellExtent]!
Item was added:
- ----- Method: SkBasicSheetMorph>>cellExtentName (in category 'layout')
- cellExtentName
^ 'CellExtent'!
Item was added:
- ----- Method: SkBasicSheetMorph>>copySelection (in category 'action')
- copySelection
| text |
text _ Text
streamContents: [:aStream | self selection
top
to: self selection bottom -
1
do: [:y |
(self selection
left to: self selection right - 1)
do: [:x |
aStream
- nextPutAll: (model textAt: x @ y)]
separatedBy: [aStream nextPut: Character tab].
aStream nextPut:
Character cr]].
Clipboard clipboardText: text!
Item was added:
- ----- Method: SkBasicSheetMorph>>cut (in category 'action') -----
- cut
self copySelection.
self selection top
to: self selection bottom - 1
do: [:y | self selection left
to: self selection right - 1
do: [:x | model textAt: x @ y put: '']]!
Item was added:
- ----- Method: SkBasicSheetMorph>>drawCell:at: (in category 'drawing')
- drawCell: aCanvas at: aPoint
(aPoint x isZero
or: [aPoint y isZero])
ifTrue: [^ self
drawLabel: aCanvas
string: (self labelAt: aPoint)
at: aPoint].
self flag: #TODO.
self
drawContents: ((showFormula notNil
and: [showFormula])
ifTrue: [model textAt: aPoint]
ifFalse: [ showFormula _ false.model at:
aPoint.])
on: aCanvas
at: aPoint!
Item was added:
- ----- Method: SkBasicSheetMorph>>drawOn: (in category 'drawing') -----
- drawOn: aCanvas
super drawOn: aCanvas.
dropZone
ifNotNil: [aCanvas
fillRectangle: (self
cellAreaToScreen: (dropZone
intersect: area))
fillStyle: (SkColorSet labelFor: model)
borderStyle: self borderStyle].
self drawDependMap: aCanvas.
self drawBorder: aCanvas.
self drawContents: aCanvas!
Item was added:
- ----- Method: SkBasicSheetMorph>>editContents (in category 'accessing')
- editContents
- self selection ifNil: [^''].
^ model
ifNil: ['']
ifNotNil: [model textAt: self selection origin]!
Item was added:
- ----- Method: SkBasicSheetMorph>>editContents: (in category 'accessing')
- editContents: aText
"Accept text"
self selection ifNil: [^self].
model
ifNotNil: [model textAt: self selection origin put: aText].
selectionMorph deleteEditor!
Item was added:
- ----- Method: SkBasicSheetMorph>>fillStyle (in category 'visual
properties') -----
- fillStyle
^ SkColorSet baseFor: model rule!
Item was added:
- ----- Method: SkBasicSheetMorph>>goto: (in category 'navigation') -----
- goto: aSkObject
| grid |
self beep: 'rice'.
grid _ aSkObject grid.
self replace: grid.
grid history: self.
^ grid!
Item was added:
- ----- Method: SkBasicSheetMorph>>handlesKeyboard: (in category 'event
handling') -----
- handlesKeyboard: evt
^ true!
Item was added:
- ----- Method: SkBasicSheetMorph>>handlesMouseDown: (in category 'event
handling') -----
- handlesMouseDown: evt
^ true!
Item was added:
- ----- Method: SkBasicSheetMorph>>handlesMouseOver: (in category 'event
handling') -----
- handlesMouseOver: evt
^ true
- !
Item was added:
- ----- Method: SkBasicSheetMorph>>handlesMouseOverDragging: (in category
'event handling') -----
- handlesMouseOverDragging: evt
^ true
- !
Item was added:
- ----- Method: SkBasicSheetMorph>>height: (in category 'accessing') -----
- height: aNumber
^ self setExtentFromHalo: self width @ aNumber!
Item was added:
- ----- Method: SkBasicSheetMorph>>history: (in category 'navigation')
- history: aSkSheetMorph
history
ifNil: [history _ aSkSheetMorph]!
Item was added:
- ----- Method: SkBasicSheetMorph>>initialize (in category
'initialization') -----
- initialize
super initialize.
selectionMorph _ SkGridSelectionMorph new holder: self.
self
area: (1 @ 1 extent: 4 @ 4).
self
borderStyle: (RaisedBorder color: Color black width: 1).
self
fillStyle: (SolidFillStyle
color: (Color
r: 1.0
g: 0.935
b: 0.839)).
self cornerStyle: #rounded.
self selection: nil.
showFormula _ false!
Item was added:
- ----- Method: SkBasicSheetMorph>>initializeToStandAlone (in category
'parts bin') -----
- initializeToStandAlone
super initializeToStandAlone.
self model: SkSheet new attachProject.
self
area: (0 @ 0 extent: 3 @ 3)!
Item was added:
- ----- Method: SkBasicSheetMorph>>isModelStepping (in category 'stepping
and presenter') -----
- isModelStepping
^ model isStepping!
Item was added:
- ----- Method: SkBasicSheetMorph>>isMorphicModel (in category
'classification') -----
- isMorphicModel
^true!
Item was added:
- ----- Method: SkBasicSheetMorph>>keyStroke: (in category 'event
handling') -----
- keyStroke: evt
selectionMorph keyStroke: evt!
Item was added:
- ----- Method: SkBasicSheetMorph>>model (in category 'accessing') -----
- model
^ model!
Item was added:
- ----- Method: SkBasicSheetMorph>>model: (in category 'accessing') -----
- model: anObject
model
ifNotNil: [model removeDependent: self].
anObject
ifNotNil: [anObject addDependent: self].
model _ anObject.
self update: #all.
- !
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseDown: (in category 'event
handling') -----
- mouseDown: event
self
selectSelection: (self screenToCell: event position).
event yellowButtonPressed
ifTrue: [^ selectionMorph invokeMenu: event].
"For easy doublecilck to selection"
event hand waitForClicksOrDrag: selectionMorph event: event.
event hand mouseFocus: selectionMorph!
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseEnter: (in category 'event
handling') -----
- mouseEnter: evt
| hand tile |
hand _ evt hand.
hand submorphs size = 1
ifFalse: [^ self].
tile _ hand firstSubmorph renderedMorph.
(self wantsDroppedMorph: tile event: evt)
ifFalse: [^ self].
self
startStepping: #trackDropZones
at: Time millisecondClockValue
arguments: nil
stepTime: 20!
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseEnterDragging: (in category 'event
handling') -----
- mouseEnterDragging: evt
"Test button state elsewhere if at all"
^ self mouseEnter: evt!
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseLeave: (in category 'event
handling') -----
- mouseLeave: evt
dropZone _ nil.
self stopSteppingSelector: #trackDropZones!
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseLeaveDragging: (in category 'event
handling') -----
- mouseLeaveDragging: evt
^ self mouseLeave: evt!
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseUpTick:onItem: (in category 'event
handling') -----
- mouseUpTick: evt onItem: aMorph
aMorph isTicking
ifTrue: [model stopStepping.
aMorph isTicking: false]
ifFalse: [model startStepping.
aMorph isTicking: true]!
Item was added:
- ----- Method: SkBasicSheetMorph>>openLibrary (in category 'action') -----
- openLibrary
(SkObject root at: 'Library') grid openInHand!
Item was added:
- ----- Method: SkBasicSheetMorph>>paste (in category 'action') -----
- paste
| pos selection isJustACell |
selection _ self selection.
isJustACell _ selection extent = (1 @ 1).
pos _ selection origin.
Clipboard clipboardText
split: Character cr
do: [:line |
line
split: Character tab
do: [:field |
(isJustACell
or: [selection
containsPoint: pos])
ifTrue: [model textAt: pos
put: field].
pos _ pos + (1 @ 0)].
pos _ selection left @ (pos y + 1)]!
Item was added:
- ----- Method: SkBasicSheetMorph>>previousPage (in category 'navigation')
- previousPage
self beep: 'rice'.
^ history
ifNotNil: [self replace: history]!
Item was added:
- ----- Method: SkBasicSheetMorph>>privateRemoveMorph: (in category
'private') -----
- privateRemoveMorph: aMorph
aMorph class = SkCardMorph
ifTrue: [self beep: 'cork'.
self model textAt: aMorph cellOrigin put: ''].
super privateRemoveMorph: aMorph!
Item was added:
- ----- Method: SkBasicSheetMorph>>replace: (in category 'navigation')
- replace: aSkSheetMorph
aSkSheetMorph area: self area.
aSkSheetMorph position: self position.
self owner replaceSubmorph: self by: aSkSheetMorph.
^ aSkSheetMorph!
Item was added:
- ----- Method: SkBasicSheetMorph>>selectSelection: (in category 'action')
- selectSelection: aPoint
"Select at event position"
aPoint
ifNil: [^ self].
self
selection: (aPoint extent: 1 @ 1).
self changed!
Item was added:
- ----- Method: SkBasicSheetMorph>>selection (in category 'accessing')
- selection
^ selectionMorph area!
Item was added:
- ----- Method: SkBasicSheetMorph>>selection: (in category 'accessing')
- selection: aRectangle
(submorphs indexOf: selectionMorph) = 1
ifFalse: [self addMorphFront: selectionMorph].
selectionMorph area: aRectangle!
Item was added:
- ----- Method: SkBasicSheetMorph>>selectionMorph (in category 'accessing')
- selectionMorph
^ selectionMorph!
Item was added:
- ----- Method: SkBasicSheetMorph>>setCellExtentFromHalo: (in category
'layout') -----
- setCellExtentFromHalo: newExtent
| eachExtent cellExtent |
model
ifNil: [^ self].
cellExtent _ model
at: self cellExtentName
ifAbsent: [model
at: self cellExtentName
put: (SkSheet new parent:
model)].
eachExtent _ newExtent // self selection extent max: 10 @ 10.
self selection left
to: self selection right - 1
do: [:x | cellExtent at: x @ 1 put: eachExtent].
self selection top
to: self selection bottom - 1
do: [:y | cellExtent at: 1 @ y put: eachExtent].
self areaChanged.
self changed!
Item was added:
- ----- Method: SkBasicSheetMorph>>setExtentFromHalo: (in category
'layout') -----
- setExtentFromHalo: newExtent
| card cardMorph direction size |
super setExtentFromHalo: newExtent.
direction := nil.
area height = 1
ifTrue:
[direction := #right.
size := area width - 1]
ifFalse:
[area width = 1
ifTrue:
[direction := #down.
size := area height - 1]].
direction ifNotNil:
[card := model new.
card direction: direction.
card size: size.
cardMorph := SkCardMorph model: card.
cardMorph position: self position.
self owner addMorph: cardMorph.
self halo ifNotNilDo: [:helo | helo setTarget:
cardMorph].
self delete]!
Item was added:
- ----- Method: SkBasicSheetMorph>>showFormula (in category 'accessing')
- showFormula
^ showFormula!
Item was added:
- ----- Method: SkBasicSheetMorph>>spawn (in category 'action') -----
- spawn
model inspectAt: self selection topLeft!
Item was added:
- ----- Method: SkBasicSheetMorph>>spawn: (in category 'action') -----
- spawn: anObject
self spawn!
Item was added:
- ----- Method: SkBasicSheetMorph>>startStepping (in category 'stepping and
presenter') -----
- startStepping
model
ifNotNil: [model startStepping].
super startStepping.
- !
Item was added:
- ----- Method: SkBasicSheetMorph>>step (in category 'stepping and
presenter') -----
- step
self changed!
Item was added:
- ----- Method: SkBasicSheetMorph>>toggleFormula (in category 'accessing')
- toggleFormula
showFormula _ showFormula not!
Item was added:
- ----- Method: SkBasicSheetMorph>>trackDropZones (in category 'event
handling') -----
- trackDropZones
| hand target |
hand _ self primaryHand.
((self hasOwner: hand) not
and: [hand submorphCount > 0])
ifTrue: [target _ hand submorphs first.
dropZone _ (self screenToCell: target topLeft)
extent: ((target
respondsTo: #area)
ifTrue:
[target area extent]
ifFalse: [1
@ 1]).
(dropZone topLeft x < 1
or: [dropZone topLeft y < 1])
ifTrue: [dropZone _ nil].
self changed]
ifFalse: [dropZone _ nil.
self stopSteppingSelector: #trackDropZones]!
Item was added:
- ----- Method: SkBasicSheetMorph>>tryToRenameTo: (in category 'accessing')
- tryToRenameTo: aName
^ model
ifNotNilDo: [:m | m name: aName]!
Item was added:
- ----- Method: SkBasicSheetMorph>>upPage (in category 'navigation') -----
- upPage
self beep: 'rice'.
^ self goto: model up!
Item was added:
- ----- Method: SkBasicSheetMorph>>update: (in category 'updating') -----
- update: anObject
anObject = #cardList
ifTrue: [self updateCardList].
anObject = #all
ifTrue: [self updateCardList].
self changed!
Item was added:
- ----- Method: SkBasicSheetMorph>>updateCardList (in category 'updating')
- updateCardList
| cardList morph |
cardList _ model cardList: self visibleArea.
self
removeAllMorphsIn: (self submorphs
select: [:m | m class == SkCardMorph]).
cardList
do: [:cardInfo |
morph _ SkCardMorph model: cardInfo value.
morph holder: self.
self addMorph: morph.
morph cellOrigin: cardInfo key].
selectionMorph hide!
Item was added:
- ----- Method: SkBasicSheetMorph>>veryDeepInner: (in category 'copying')
- veryDeepInner: deepCopier
"history is not copied"
model _ model veryDeepCopyWith: deepCopier.
selectionMorph _ (selectionMorph veryDeepCopyWith: deepCopier)
holder: self.
dropZone _ dropZone veryDeepCopyWith: deepCopier.
showFormula _ showFormula veryDeepCopyWith: deepCopier.
super veryDeepInner: deepCopier!
Item was added:
- ----- Method: SkBasicSheetMorph>>wantsDroppedMorph:event: (in category
'drag and drop') -----
- wantsDroppedMorph: aMorph event: anEvent
^ aMorph class = PhraseTileMorph
or: [aMorph class = TileMorph
or: [aMorph isKindOf: SkGridPartsMorph]]!
Item was added:
- ----- Method: SkBasicSheetMorph>>width: (in category 'accessing') -----
- width: aNumber
^ self setExtentFromHalo: aNumber @ self height!
Item was changed:
----- Method: SkCardMorph>>doubleClick: (in category 'event handling')
doubleClick: evt | sheet | (holder notNil and: [owner = holder]) ifTrue: [^ holder goto: model]. self owner = World ifTrue: [self delete].
sheet _ SkBasicSheetMorph allInstances
sheet _ SkSheetMorph allInstances detect: [:each | each world = World and: [each model = model]] ifNone: [model grid]. sheet position: self position; openInWorld!
Item was changed: ----- Method: SkCardMorph>>replaceToSheet: (in category 'layout') ----- replaceToSheet: newCellExtent "Create new spreadsheet for the model. And I will be deleted" | sheetMorph | (newCellExtent y > 1 and: [newCellExtent x > 1])
ifTrue: [sheetMorph _ SkBasicSheetMorph new model: model.
ifTrue: [sheetMorph _ SkSheetMorph new model: model. sheetMorph area: (0 @ 0 extent: newCellExtent). sheetMorph position: self position. self owner addMorph: sheetMorph. self halo ifNotNilDo: [:helo | helo setTarget:
sheetMorph]. ^ self delete]!
Item was changed: ----- Method: SkObject class>>grid (in category 'instance creation') ----- grid | case grid |
grid _ SkBasicSheetMorph new model: (case _ self new).
grid _ SkSheetMorph new model: (case _ self new). grid area: case defaultArea. ^ grid!
Item was changed: ----- Method: SkObject>>grid (in category 'initialization') ----- grid | grid |
grid _ SkBasicSheetMorph new model: self.
grid _ SkSheetMorph new model: self. grid area: self defaultArea. ^ grid!
Item was changed:
- Morph subclass: #SkSheetMorph
instanceVariableNames: 'sheet'
- SkGridMorph subclass: #SkSheetMorph
instanceVariableNames: 'history model selectionMorph dropZone
showFormula' classVariableNames: '' poolDictionaries: '' category: 'Skeleton-Base'!
- !SkSheetMorph commentStamp: 'tak 12/11/2003 19:10' prior: 0!
- I am a presentation compornent for showing as 2-D grid.
- The contents what I show is depended on a model.
- I never access to a cell directly except through model because
- a cell doesn't know where he locates. Basically, Position information is
- only in model.
- cellArea Rectangle -- the area of cells for drawing. Actual
size of table is cellArea extent.
- model SkSheet --
- !
Item was changed:
- ----- Method: SkSheetMorph class>>additionsToViewerCategories (in
category 'as yet unclassified') -----
- ----- Method: SkSheetMorph class>>additionsToViewerCategories (in
category 'viewer categories') ----- additionsToViewerCategories
^(Smalltalk at: #SkRawSheetMorph ifAbsent: [^ #()])
additionsToViewerCategories!
- ^ #(
- (#spreadsheet (
- #(command clearTable 'Deletes the contents of all cells')
- #(command clearRow 'Deletes the contents of the current row cells' )
- #(command clearColumn 'Deletes the contents of the current columns cells'
)
- #(slot totalRows 'Lets you change the amount of rows in the spreadsheet'
Number readWrite Player getTotalRows Player setTotalRows: )
- #(slot totalColumns 'Lets you change the amount of columns in the
spreadsheet' Number readWrite Player getTotalColumns Player setTotalColumns: )
- #(slot rowIndex 'Sets the current row' Number readWrite Player
getRowIndex Player setRowIndex: )
- #(slot columnIndex 'Sets the current column' Number readWrite Player
getColumnIndex Player setColumnIndex: )
- #(slot currentCharacters 'Lets you read and modify the characters of the
current cell' String readWrite Player getCurrentCharacters Player setCurrentCharacters: )
- #(slot currentNumericValue 'Lets you read and modify the numeric value of
the current cell' Number readWrite Player getCurrentNumericValue Player setCurrentNumericValue: )
- ))
- (#'data i/o' (
- #(slot writeMode 'Lets you choose a write mode (overwrite or append)'
WriteMode readWrite Player getWriteMode Player setWriteMode: )
- #(slot csvSeparator 'Lets you choose a character to act as a separator
between cells' String readWrite Player getCsvSeparator Player setCsvSeparator: )
- #(slot csvFileName 'Sets the name of the file to import/export data'
String readWrite Player getCsvFileName Player setCsvFileName: )
- #(command importDataFromFile 'Reads the data from the file and loads it
in the spreadsheet')
- #(command exportDataToFile 'Writes the data from the spreadsheet into the
file')
- ))
- )!
Item was changed:
- ----- Method: SkSheetMorph class>>descriptionForPartsBin (in category 'as
yet unclassified') -----
- ----- Method: SkSheetMorph class>>descriptionForPartsBin (in category
'parts bin') ----- descriptionForPartsBin
^ self partName: 'Spreadsheet' translated
categories: {'Skeleton' translated}
documentation: 'A spreadsheet' translated!
^ self partName: 'Spread Sheet'
categories: #('Skeleton')
documentation: 'A spread sheet'!
Item was removed:
- ----- Method: SkSheetMorph class>>formPreviousPage (in category
'constants') -----
- formPreviousPage
- ^((ColorForm
extent: 5@9
depth: 1
fromArray: #( 4026531840 3758096384 3489660928 2952790016
1879048192 2952790016 3489660928 3758096384 4026531840)
offset: 0@0)
colorsFromArray: #(#(0.0 0.0 0.0) #( ) ))
- " form storeString "!
Item was removed:
- ----- Method: SkSheetMorph class>>formUpPage (in category 'constants')
- formUpPage
- ^((ColorForm
extent: 9@5
depth: 2
fromArray: #( 2859106304 2845474816 2795929600 2326298624
1431650304)
offset: 0@0)
colorsFromArray: #(#(0.004 0.004 0.008) #(0.0 0.0 0.004) #( ) #(0.0
0.0 0.0) ))
- " form storeString "!
Item was removed:
- ----- Method: SkSheetMorph class>>initialize (in category 'class
initialization') -----
- initialize
"
self initialize.
"
Vocabulary addStandardVocabulary: (SymbolListType new
vocabularyName: #WriteMode;
symbols: #(#overwrite #append)).!
Item was removed:
- ----- Method: SkSheetMorph class>>model: (in category 'instance
creation') -----
- model: aSkObject
^ super new model: aSkObject!
Item was removed:
- ----- Method: SkSheetMorph>>acceptDroppingMorph:event: (in category 'drag
and drop') -----
- acceptDroppingMorph: aMorph event: evt
| cellPos successed |
cellPos _ self screenToCell: aMorph topLeft.
(cellPos x < 1
or: [cellPos y < 1])
ifTrue: [self beep: 'arrow'.
^ aMorph rejectDropMorphEvent: evt].
successed _ false.
successed _ (aMorph isKindOf: SkGridPartsMorph)
ifTrue: [self acceptRuleMorph: aMorph
event: evt]
ifFalse: [aMorph class = PhraseTileMorph
ifTrue: [self
acceptPhraseTileMorph: aMorph event: evt]
ifFalse: [aMorph class =
TileMorph
ifTrue:
[self acceptTileMorph: aMorph event: evt]]].
successed
ifTrue: [self beep: 'cassete']
ifFalse: [self beep: 'arrow'.
aMorph rejectDropMorphEvent: evt]!
Item was removed:
- ----- Method: SkSheetMorph>>acceptPhraseTileMorph:event: (in category
'drag and drop') -----
- acceptPhraseTileMorph: aMorph event: evt
| setter getter |
getter _ aMorph operatorTile operatorOrExpression.
setter _ ('set'
, (getter allButFirst: 3) , ':') asSymbol.
self model
modelAt: (self screenToCell: aMorph topLeft)
for: aMorph actualObject
getter: getter
setter: setter.
^ true!
Item was removed:
- ----- Method: SkSheetMorph>>acceptRuleMorph:event: (in category 'drag and
drop') -----
- acceptRuleMorph: aMorph event: evt
| cellPos card |
model parent adopt: aMorph model rule.
cellPos _ (self screenToCell: aMorph topLeft)
+ (aMorph cellOrigin - aMorph area
topLeft).
self model textAt: cellPos put: '=' , aMorph model codeString.
card _ self
cardMorphAt: cellPos
ifAbsent: [^ false].
card model rule = aMorph model rule
ifFalse: ["maybe successed"
^ false].
aMorph halo
ifNotNilDo: [:halo | halo setTarget: card].
^ true!
Item was removed:
- ----- Method: SkSheetMorph>>acceptTileMorph:event: (in category 'drag and
drop') -----
- acceptTileMorph: aMorph event: evt
| object |
object _ aMorph actualObject.
self model
at: (self screenToCell: aMorph topLeft)
put: object.
^ true!
Item was added:
- ----- Method: SkSheetMorph>>addPageControls (in category
'initialization') -----
- addPageControls
| panel prev up title |
panel := AlignmentMorph newRow
color: Color transparent;
cellInset: 3;
hResizing: #shrinkWrap;
vResizing: #shrinkWrap.
panel addMorphBack: self tickMorph.
prev := SketchMorph withForm: self prevButtonForm.
prev
on: #mouseDown
send: #previousPage
to: sheet.
prev position: 32 @ 3.
prev setBalloonText: 'View the previous sheet.' translated.
panel addMorphBack: prev.
up := SketchMorph withForm: self upButtonForm.
up
on: #mouseDown
send: #upPage
to: sheet.
up position: 44 @ 4.
up setBalloonText: 'View the definision or the parent rule.'
translated.
panel addMorphBack: up.
title := UpdatingStringMorph new useStringFormat
target: self;
putSelector: #setNameTo:;
getSelector: #externalName.
panel addMorphBack: title.
self addMorph: panel!
Item was added:
- ----- Method: SkSheetMorph>>addSheet: (in category 'initialization')
- addSheet: aSheet
self addMorph: (sheet := aSheet).
self renameTo: sheet externalName!
Item was added:
- ----- Method: SkSheetMorph>>area: (in category 'sheet delegation') -----
- area: aRectangle
^ sheet area: aRectangle
!
Item was removed:
- ----- Method: SkSheetMorph>>areaChanged (in category 'layout') -----
- areaChanged
super areaChanged.
self
submorphsDo: [:m | (m isKindOf: SkGridMorph)
ifTrue: [m areaChanged]]!
Item was removed:
- ----- Method: SkSheetMorph>>cardMorphAt:ifAbsent: (in category
'accessing') -----
- cardMorphAt: aPoint ifAbsent: aBlock
^ self submorphs
detect: [:m | m class = SkCardMorph
and: [m cellOrigin = aPoint]]
ifNone: aBlock!
Item was removed:
- ----- Method: SkSheetMorph>>cellExtentAt: (in category 'layout') -----
- cellExtentAt: aPoint
| cellExtent x y |
^ (model notNil
and: [(cellExtent _ model findName: self
cellExtentName) class == SkSheet ])
ifTrue: [x _ (cellExtent
at: aPoint x @ 1
ifAbsent: [SkGridMorph
standardCellExtent]) x.
y _ (cellExtent
at: 1 @ aPoint y
ifAbsent: [SkGridMorph
standardCellExtent]) y.
x @ y]
ifFalse: [SkGridMorph standardCellExtent]!
Item was removed:
- ----- Method: SkSheetMorph>>cellExtentName (in category 'layout') -----
- cellExtentName
^ 'CellExtent'!
Item was removed:
- ----- Method: SkSheetMorph>>copySelection (in category 'action') -----
- copySelection
| text |
text _ Text
streamContents: [:aStream | self selection
top
to: self selection bottom -
1
do: [:y |
(self selection
left to: self selection right - 1)
do: [:x |
aStream
- nextPutAll: (model textAt: x @ y)]
separatedBy: [aStream nextPut: Character tab].
aStream nextPut:
Character cr]].
Clipboard clipboardText: text!
Item was removed:
- ----- Method: SkSheetMorph>>cut (in category 'action') -----
- cut
self copySelection.
self selection top
to: self selection bottom - 1
do: [:y | self selection left
to: self selection right - 1
do: [:x | model textAt: x @ y put: '']]!
Item was added:
- ----- Method: SkSheetMorph>>doesNotUnderstand: (in category 'dnu') -----
- doesNotUnderstand: aMessage
"Quick hack to automagically generate missing methods"
self flag: #Richo.
(sheet respondsTo: aMessage selector)
ifTrue: [ | str |
str := aMessage createStubMethod allButLast: 24.
self class compile: str, '^ sheet ', str
classified: #'autogenerated'.
^aMessage sentTo: self.
]
ifFalse: [^super doesNotUnderstand: aMessage]!
Item was removed:
- ----- Method: SkSheetMorph>>drawCell:at: (in category 'drawing') -----
- drawCell: aCanvas at: aPoint
(aPoint x isZero
or: [aPoint y isZero])
ifTrue: [^ self
drawLabel: aCanvas
string: (self labelAt: aPoint)
at: aPoint].
self flag: #TODO.
self
drawContents: ((showFormula notNil
and: [showFormula])
ifTrue: [model textAt: aPoint]
ifFalse: [ showFormula _ false.model at:
aPoint.])
on: aCanvas
at: aPoint!
Item was removed:
- ----- Method: SkSheetMorph>>drawName: (in category 'drawing') -----
- drawName: aCanvas
| name |
name := model ruleName asString.
model isInstance
ifTrue: [name := name , '*'].
aCanvas
clipBy: self bounds
during: [:canvas | canvas
drawString: name
at: self topLeft + (28 @ 6)
font: self class titleStyle
color: Color gray]!
Item was removed:
- ----- Method: SkSheetMorph>>drawOn: (in category 'drawing') -----
- drawOn: aCanvas
super drawOn: aCanvas.
self drawGrabAreaOn: aCanvas.
dropZone
ifNotNil: [aCanvas
fillRectangle: (self
cellAreaToScreen: (dropZone
intersect: area))
fillStyle: (SkColorSet labelFor: model)
borderStyle: self borderStyle].
self drawDependMap: aCanvas.
self drawName: aCanvas.
self drawBorder: aCanvas.
self drawContents: aCanvas!
Item was removed:
- ----- Method: SkSheetMorph>>editContents (in category 'accessing') -----
- editContents
- self selection ifNil: [^''].
^ model
ifNil: ['']
ifNotNil: [model textAt: self selection origin]!
Item was removed:
- ----- Method: SkSheetMorph>>editContents: (in category 'accessing') -----
- editContents: aText
"Accept text"
self selection ifNil: [^self].
model
ifNotNil: [model textAt: self selection origin put: aText].
selectionMorph deleteEditor!
Item was added:
- ----- Method: SkSheetMorph>>extent: (in category 'accessing') -----
- extent: newExtent
sheet setExtentFromHalo: (newExtent max: (165@77)) -
(self
layoutInset + self cellInset + (0 @ self pageControls height))!
Item was removed:
- ----- Method: SkSheetMorph>>fillStyle (in category 'visual properties')
- fillStyle
^ SkColorSet baseFor: model rule!
Item was removed:
- ----- Method: SkSheetMorph>>goto: (in category 'navigation') -----
- goto: aSkObject
| grid |
self beep: 'rice'.
grid _ aSkObject grid.
self replace: grid.
grid history: self.
^ grid!
Item was removed:
- ----- Method: SkSheetMorph>>handlesKeyboard: (in category 'event
handling') -----
- handlesKeyboard: evt
^ true!
Item was removed:
- ----- Method: SkSheetMorph>>handlesMouseDown: (in category 'event
handling') -----
- handlesMouseDown: evt
^ (self grabArea containsPoint: evt position) not!
Item was removed:
- ----- Method: SkSheetMorph>>handlesMouseOver: (in category 'event
handling') -----
- handlesMouseOver: evt
^ true
- !
Item was removed:
- ----- Method: SkSheetMorph>>handlesMouseOverDragging: (in category 'event
handling') -----
- handlesMouseOverDragging: evt
^ true
- !
Item was removed:
- ----- Method: SkSheetMorph>>height: (in category 'accessing') -----
- height: aNumber
^ self setExtentFromHalo: self width @ aNumber!
Item was removed:
- ----- Method: SkSheetMorph>>history: (in category 'navigation') -----
- history: aSkSheetMorph
history
ifNil: [history _ aSkSheetMorph]!
Item was changed:
----- Method: SkSheetMorph>>initialize (in category 'initialization')
initialize super initialize.
self layoutPolicy: TableLayout new;
cellPositioning: #leftCenter;
cornerStyle: #rounded;
color: (Color r: 0.645 g: 0.645 b: 1.0);
borderWidth: 1;
borderColor: (Color r: 0.516 g: 0.516 b: 1.0);
listDirection: #topToBottom;
hResizing: #shrinkWrap;
vResizing: #shrinkWrap.
self addSheet: SkBasicSheetMorph newStandAlone;
addPageControls!
self showPageControls.
selectionMorph _ SkGridSelectionMorph new holder: self.
self
area: (1 @ 1 extent: 4 @ 4).
self
borderStyle: (RaisedBorder color: Color black width: 1).
self
fillStyle: (SolidFillStyle
color: (Color
r: 1.0
g: 0.935
b: 0.839)).
self cornerStyle: #rounded.
self selection: nil.
showFormula _ false!
Item was removed:
- ----- Method: SkSheetMorph>>initializeToStandAlone (in category 'parts
bin') -----
- initializeToStandAlone
super initializeToStandAlone.
self model: SkSheet new attachProject.
self
area: (0 @ 0 extent: 3 @ 3)!
Item was removed:
- ----- Method: SkSheetMorph>>isModelStepping (in category 'stepping and
presenter') -----
- isModelStepping
^ model isStepping!
Item was removed:
- ----- Method: SkSheetMorph>>isMorphicModel (in category 'classification')
- isMorphicModel
^true!
Item was removed:
- ----- Method: SkSheetMorph>>keyStroke: (in category 'event handling')
- keyStroke: evt
selectionMorph keyStroke: evt!
Item was changed:
- ----- Method: SkSheetMorph>>model (in category 'sheet delegation') -----
- ----- Method: SkSheetMorph>>model (in category 'accessing') -----
model
^ sheet model!
^ model!
Item was removed:
- ----- Method: SkSheetMorph>>model: (in category 'accessing') -----
- model: anObject
model
ifNotNil: [model removeDependent: self].
anObject
ifNotNil: [anObject addDependent: self].
model _ anObject.
self update: #all.
- !
Item was removed:
- ----- Method: SkSheetMorph>>mouseDown: (in category 'event handling')
- mouseDown: event
self
selectSelection: (self screenToCell: event position).
event yellowButtonPressed
ifTrue: [^ selectionMorph invokeMenu: event].
"For easy doublecilck to selection"
event hand waitForClicksOrDrag: selectionMorph event: event.
event hand mouseFocus: selectionMorph!
Item was removed:
- ----- Method: SkSheetMorph>>mouseEnter: (in category 'event handling')
- mouseEnter: evt
| hand tile |
hand _ evt hand.
hand submorphs size = 1
ifFalse: [^ self].
tile _ hand firstSubmorph renderedMorph.
(self wantsDroppedMorph: tile event: evt)
ifFalse: [^ self].
self
startStepping: #trackDropZones
at: Time millisecondClockValue
arguments: nil
stepTime: 20!
Item was removed:
- ----- Method: SkSheetMorph>>mouseEnterDragging: (in category 'event
handling') -----
- mouseEnterDragging: evt
"Test button state elsewhere if at all"
^ self mouseEnter: evt!
Item was removed:
- ----- Method: SkSheetMorph>>mouseLeave: (in category 'event handling')
- mouseLeave: evt
dropZone _ nil.
self stopSteppingSelector: #trackDropZones!
Item was removed:
- ----- Method: SkSheetMorph>>mouseLeaveDragging: (in category 'event
handling') -----
- mouseLeaveDragging: evt
^ self mouseLeave: evt!
Item was removed:
- ----- Method: SkSheetMorph>>mouseUpTick:onItem: (in category 'event
handling') -----
- mouseUpTick: evt onItem: aMorph
aMorph isTicking
ifTrue: [model stopStepping.
aMorph isTicking: false]
ifFalse: [model startStepping.
aMorph isTicking: true]!
Item was removed:
- ----- Method: SkSheetMorph>>openLibrary (in category 'action') -----
- openLibrary
(SkObject root at: 'Library') grid openInHand!
Item was added:
- ----- Method: SkSheetMorph>>pageControls (in category 'accessing') -----
- pageControls
^ self submorphs detect: [:each | each ~~ sheet]!
Item was removed:
- ----- Method: SkSheetMorph>>paste (in category 'action') -----
- paste
| pos selection isJustACell |
selection _ self selection.
isJustACell _ selection extent = (1 @ 1).
pos _ selection origin.
Clipboard clipboardText
split: Character cr
do: [:line |
line
split: Character tab
do: [:field |
(isJustACell
or: [selection
containsPoint: pos])
ifTrue: [model textAt: pos
put: field].
pos _ pos + (1 @ 0)].
pos _ selection left @ (pos y + 1)]!
Item was added:
- ----- Method: SkSheetMorph>>prevButtonForm (in category 'accessing')
- prevButtonForm
^(Form
extent: 9@16
depth: 16
fromArray: #( 0 0 0 0 0 0 0 0 0 831258624 0 0 0 12684 831258624 0 0
0 831279775 831258624 0 0 12684 1386173087 831258624 0 0 831279775 1386173087 831258624 0 12684 1386173087 1386173087 831258624 0 831279775 1386173087 1386173087 831258624 12684 1386173087 1386173087 1386173087 831258624 0 831279775 1386173087 1386173087 831258624 0 12684 1386173087 1386173087 831258624 0 0 831279775 1386173087 831258624 0 0 12684 1386173087 831258624 0 0 0 831279775 831258624 0 0 0 12684 831258624 0 0 0 0 831258624)
offset: 522@183)!
Item was removed:
- ----- Method: SkSheetMorph>>previousPage (in category 'navigation') -----
- previousPage
self beep: 'rice'.
^ history
ifNotNil: [self replace: history]!
Item was removed:
- ----- Method: SkSheetMorph>>privateRemoveMorph: (in category 'private')
- privateRemoveMorph: aMorph
aMorph class = SkCardMorph
ifTrue: [self beep: 'cork'.
self model textAt: aMorph cellOrigin put: ''].
super privateRemoveMorph: aMorph!
Item was removed:
- ----- Method: SkSheetMorph>>replace: (in category 'navigation') -----
- replace: aSkSheetMorph
aSkSheetMorph area: self area.
aSkSheetMorph position: self position.
self delete.
aSkSheetMorph openInWorld.
^ aSkSheetMorph!
Item was added:
- ----- Method: SkSheetMorph>>replaceSubmorph:by: (in category
'submorphs-add/remove') -----
- replaceSubmorph: oldMorph by: newMorph
"Update page controls if the sheet gets replaced."
^ oldMorph == sheet
ifTrue: [self submorphsDo: [:each | each delete];
addSheet: newMorph;
addPageControls]
ifFalse: [super replaceSubmorph: oldMorph by: newMorph]!
Item was changed:
- ----- Method: SkSheetMorph>>selectSelection: (in category 'sheet
delegation') -----
- ----- Method: SkSheetMorph>>selectSelection: (in category 'action') -----
selectSelection: aPoint
^ sheet selectSelection: aPoint
!
"Select at event position"
aPoint
ifNil: [^ self].
self
selection: (aPoint extent: 1 @ 1).
self changed!
Item was changed:
- ----- Method: SkSheetMorph>>selection (in category 'sheet delegation')
- ----- Method: SkSheetMorph>>selection (in category 'accessing') -----
selection
^ sheet selection
!
^ selectionMorph area!
Item was removed:
- ----- Method: SkSheetMorph>>selection: (in category 'accessing') -----
- selection: aRectangle
submorphs first == selectionMorph
ifFalse: [self addMorphFront: selectionMorph].
selectionMorph area: aRectangle!
Item was removed:
- ----- Method: SkSheetMorph>>selectionMorph (in category 'accessing')
- selectionMorph
^ selectionMorph!
Item was removed:
- ----- Method: SkSheetMorph>>setCellExtentFromHalo: (in category 'layout')
- setCellExtentFromHalo: newExtent
| eachExtent cellExtent |
model
ifNil: [^ self].
cellExtent _ model
at: self cellExtentName
ifAbsent: [model
at: self cellExtentName
put: (SkSheet new parent:
model)].
eachExtent _ newExtent // self selection extent max: 10 @ 10.
self selection left
to: self selection right - 1
do: [:x | cellExtent at: x @ 1 put: eachExtent].
self selection top
to: self selection bottom - 1
do: [:y | cellExtent at: 1 @ y put: eachExtent].
self areaChanged.
self changed!
Item was removed:
- ----- Method: SkSheetMorph>>setExtentFromHalo: (in category 'layout')
- setExtentFromHalo: newExtent
| card cardMorph direction size |
super setExtentFromHalo: newExtent.
direction := nil.
area height = 1
ifTrue:
[direction := #right.
size := area width - 1]
ifFalse:
[area width = 1
ifTrue:
[direction := #down.
size := area height - 1]].
direction ifNotNil:
[card := model new.
card direction: direction.
card size: size.
cardMorph := SkCardMorph model: card.
cardMorph position: self position.
self owner addMorph: cardMorph.
self halo ifNotNilDo: [:helo | helo setTarget:
cardMorph].
self delete]!
Item was added:
- ----- Method: SkSheetMorph>>setNameTo: (in category 'renaming') -----
- setNameTo: aName
sheet tryToRenameTo: aName.
super setNameTo: aName!
Item was removed:
- ----- Method: SkSheetMorph>>showFormula (in category 'accessing') -----
- showFormula
^ showFormula!
Item was removed:
- ----- Method: SkSheetMorph>>showPageControls (in category
'initialization') -----
- showPageControls
| panel prev up |
panel _ Morph new extent: 80@20; color: Color transparent.
panel
on: #mouseDown
send: #yourself
to: self.
panel addMorph: self tickMorph.
prev _ (PolygonMorph new setVertices: {0 @ 7. 7 @ 0. 7 @ 14})
borderWidth: 1;
- borderColor: Color darkGray;
color: Color transparent.
prev
on: #mouseDown
send: #previousPage
to: self.
prev position: 24 @ 3.
prev setBalloonText: 'View the previous sheet.' translated.
panel addMorph: prev.
up _ prev copy heading: 90.
up
on: #mouseDown
send: #upPage
to: self.
up position: 36 @ 4.
up setBalloonText: 'View the definision or the parent rule.'
translated.
panel addMorph: up.
self addMorph: panel!
Item was removed:
- ----- Method: SkSheetMorph>>spawn (in category 'action') -----
- spawn
model inspectAt: self selection topLeft!
Item was removed:
- ----- Method: SkSheetMorph>>spawn: (in category 'action') -----
- spawn: anObject
self spawn!
Item was removed:
- ----- Method: SkSheetMorph>>startStepping (in category 'stepping and
presenter') -----
- startStepping
model
ifNotNil: [model startStepping].
super startStepping.
- !
Item was changed:
- ----- Method: SkSheetMorph>>step (in category 'stepping') -----
- ----- Method: SkSheetMorph>>step (in category 'stepping and presenter')
step
sheet step!
self changed!
Item was changed:
- ----- Method: SkSheetMorph>>tickMorph (in category 'accessing') -----
- ----- Method: SkSheetMorph>>tickMorph (in category 'initialization')
tickMorph | tick | tick _ SkPluggableTickMorph new.
tick on: sheet isTickingSel: #isModelStepping.
tick position: self position + 1.
tick on: self isTickingSel: #isModelStepping. tick on: #mouseUp send: #mouseUpTick:onItem:
to: sheet.
to: self. tick stepTime: 500. tick startStepping. tick setBalloonText: 'Press to toggle ticking state.' translated. ^ tick!
Item was removed:
- ----- Method: SkSheetMorph>>toggleFormula (in category 'accessing') -----
- toggleFormula
showFormula _ showFormula not!
Item was removed:
- ----- Method: SkSheetMorph>>trackDropZones (in category 'event handling')
- trackDropZones
| hand target |
hand _ self primaryHand.
((self hasOwner: hand) not
and: [hand submorphCount > 0])
ifTrue: [target _ hand submorphs first.
dropZone _ (self screenToCell: target topLeft)
extent: ((target
respondsTo: #area)
ifTrue:
[target area extent]
ifFalse: [1
@ 1]).
(dropZone topLeft x < 1
or: [dropZone topLeft y < 1])
ifTrue: [dropZone _ nil].
self changed]
ifFalse: [dropZone _ nil.
self stopSteppingSelector: #trackDropZones]!
Item was removed:
- ----- Method: SkSheetMorph>>tryToRenameTo: (in category 'accessing')
- tryToRenameTo: aName
^ model
ifNotNilDo: [:m | m name: aName]!
Item was added:
- ----- Method: SkSheetMorph>>upButtonForm (in category 'accessing') -----
- upButtonForm
^ self prevButtonForm copy rotateBy: 90!
Item was removed:
- ----- Method: SkSheetMorph>>upPage (in category 'navigation') -----
- upPage
self beep: 'rice'.
^ self goto: model up!
Item was removed:
- ----- Method: SkSheetMorph>>update: (in category 'updating') -----
- update: anObject
anObject = #cardList
ifTrue: [self updateCardList].
anObject = #all
ifTrue: [self updateCardList].
self changed!
Item was removed:
- ----- Method: SkSheetMorph>>updateCardList (in category 'updating') -----
- updateCardList
| cardList morph |
cardList _ model cardList: self visibleArea.
self
removeAllMorphsIn: (self submorphs
select: [:m | m class == SkCardMorph]).
cardList
do: [:cardInfo |
morph _ SkCardMorph model: cardInfo value.
morph holder: self.
self addMorph: morph.
morph cellOrigin: cardInfo key].
selectionMorph hide!
Item was removed:
- ----- Method: SkSheetMorph>>veryDeepInner: (in category 'copying') -----
- veryDeepInner: deepCopier
"history is not copied"
model _ model veryDeepCopyWith: deepCopier.
selectionMorph _ (selectionMorph veryDeepCopyWith: deepCopier)
holder: self.
dropZone _ dropZone veryDeepCopyWith: deepCopier.
showFormula _ showFormula veryDeepCopyWith: deepCopier.
super veryDeepInner: deepCopier!
Item was added:
- ----- Method: SkSheetMorph>>visibleArea (in category 'sheet delegation')
- visibleArea
^ sheet visibleArea
!
Item was removed:
- ----- Method: SkSheetMorph>>wantsDroppedMorph:event: (in category 'drag
and drop') -----
- wantsDroppedMorph: aMorph event: anEvent
^ aMorph class = PhraseTileMorph
or: [aMorph class = TileMorph
or: [aMorph isKindOf: SkGridPartsMorph]]!
Item was removed:
- ----- Method: SkSheetMorph>>width: (in category 'accessing') -----
- width: aNumber
^ self setExtentFromHalo: aNumber @ self height!
Item was changed: ----- Method: SkValueCell>>slotName (in category 'accessing') ----- slotName "See Player>>tearOffFancyWatcherFor:" | info watcherWording anInterface | info _ model slotInfoForGetter: getter. info ifNil: [anInterface _ Vocabulary eToyVocabulary methodInterfaceAt: getter ifAbsent: [].
watcherWording _ anInterface wording]
watcherWording _ anInterface elementWording] ifNotNil: [watcherWording _ Utilities
inherentSelectorForGetter: getter]. ^ model tileReferringToSelf bePossessive labelMorph contents , ' ' , watcherWording!
etoys-dev mailing list etoys-dev@squeakland.org http://lists.squeakland.org/mailman/listinfo/etoys-dev
On Tue, Oct 18, 2011 at 5:59 PM, Ricardo Moran richi.moran@gmail.com wrote:
Hi, it seems my commit notifications are being marked as spam :S But anyway, I'm glad to know you took the time to clean the Skeleton project. It's one step closer to inclusion :) I tried to fix the layout problem that Karl mentioned before and this is my first shot. I think the result is nice, although I had to create a new morph subclass (which I don't really like much). Cheers, Richo
Layout is much nicer :-)
Karl
On Tue, Oct 18, 2011 at 12:50 PM, commits@source.squeak.org wrote:
Spam detection software, running on the system "europa.mgmt.inetu.net", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details.
Content preview: Ricardo Moran uploaded a new version of Skeleton to project Etoys Inbox: http://source.squeak.org/etoysinbox/Skeleton-Richo.5.mcz ==================== Summary ==================== Name: Skeleton-Richo.5 Author: Richo Time: 18 October 2011, 12:50:19 pm UUID: 2d68a228-e98a-b64c-af4f-48ae0cb56a9c Ancestors: Skeleton-kfr.4 [...]
Content analysis details: (6.5 points, 5.0 required)
pts rule name description
3.5 BAYES_99 BODY: Bayesian spam probability is 99 to 100% [score: 1.0000] 0.0 MISSING_MID Missing Message-Id: header 1.2 INVALID_DATE Invalid Date: header (not RFC 2822) 1.0 DATE_IN_PAST_12_24 Date: is 12 to 24 hours before Received: date 1.7 TVD_FUZZY_SYMBOL BODY: TVD_FUZZY_SYMBOL 3.8 TVD_STOCK1 BODY: TVD_STOCK1 0.1 RDNS_NONE Delivered to trusted network by a host with no rDNS -4.8 AWL AWL: From: address is in the auto white-list
---------- Forwarded message ---------- From: commits@source.squeak.org To: etoys-dev@squeakland.org Date: Tue, 18 Oct 2011 15:50:20.809 0000 Subject: Etoys Inbox: Skeleton-Richo.5.mcz Ricardo Moran uploaded a new version of Skeleton to project Etoys Inbox: http://source.squeak.org/etoysinbox/Skeleton-Richo.5.mcz
==================== Summary ====================
Name: Skeleton-Richo.5 Author: Richo Time: 18 October 2011, 12:50:19 pm UUID: 2d68a228-e98a-b64c-af4f-48ae0cb56a9c Ancestors: Skeleton-kfr.4
Trying to fix the layout problem with the tick morph and the sheet's name. I renamed SkSheetMorph to SkBasicSheetMorph and I removed all the code that adds page controls and draws its name. So now it is a simple spreadsheet. I then created a new SkSheetMorph that decorates a SkBasicSheetMorph with the page controls and a title.
I also removed the reference to Connectors in Morph>>#showPointArrowFrom:to:label: because it gave a DNU that I didn't knew how to fix it, and because it doesn't seem to be really important behavior.
=============== Diff against Skeleton-kfr.4 ===============
Item was changed: ----- Method: Morph>>showPointArrowFrom:to:label: (in category '*skeleton-base-arrow') ----- showPointArrowFrom: morph1 to: morph2 label: aString "Morph new showPointArrowFrom: (Morph new position: 0@0) to: (Morph new position: 200@200) label: 'test'" | p1 p2 arrow label connector | p1 := morph1 center. p2 := morph2 center. arrow := PolygonMorph arrowPrototype. arrow borderColor: (TranslucentColor r: 1.0 g: 0.3 b: 0.0 alpha: 0.6). arrow setVertices: (Array with: p1 with: p2). arrow dashedBorder: {30. 30. Color transparent. 0. -10}; startStepping.
- (Smalltalk
- at: #NCAAConnectorMorph
- ifAbsent: [])
- ifNotNil: [connector := NCAAConnectorMorph fromMorph:
morph1 toMorph: morph2.
- connector line: arrow.
- connector lock.
- label := NCLabelMorph new string: aString.
- label input: morph1.
- label color: Color red.
- label openInWorld.
- arrow := connector].
arrow openInWorld.
- arrow addAlarm: #delete after: 500!
- arrow addAlarm: #delete after: 500.
- label ifNotNil: [label addAlarm: #delete after: 500]
- !
Item was changed: ----- Method: Player>>setTotalColumns: (in category '*skeleton-spreadsheet') ----- setTotalColumns: aNumber
- ^ self sheetMorph area: (0@0 corner: (aNumber max: 2) @ self
getTotalRows)!
- ^ self sheetMorph area: (0@0 corner: aNumber @ self getTotalRows)!
Item was changed: ----- Method: Player>>setTotalRows: (in category '*skeleton-spreadsheet')
setTotalRows: aNumber
- ^ self sheetMorph area: (0@0 corner: self getTotalColumns @
(aNumber max: 2))!
- ^ self sheetMorph area: (0@0 corner: self getTotalColumns @
aNumber)!
Item was added:
- SkGridMorph subclass: #SkBasicSheetMorph
- instanceVariableNames: 'history model selectionMorph dropZone
showFormula'
- classVariableNames: ''
- poolDictionaries: ''
- category: 'Skeleton-Base'!
- !SkBasicSheetMorph commentStamp: 'tak 12/11/2003 19:10' prior: 0!
- I am a presentation compornent for showing as 2-D grid.
- The contents what I show is depended on a model.
- I never access to a cell directly except through model because
- a cell doesn't know where he locates. Basically, Position information is
- only in model.
- cellArea Rectangle -- the area of cells for drawing. Actual
size of table is cellArea extent.
- model SkSheet --
- !
Item was added:
- ----- Method: SkBasicSheetMorph class>>additionsToViewerCategories (in
category 'viewer categories') -----
- additionsToViewerCategories
- ^ #(
- (#spreadsheet (
- #(command clearTable 'Deletes the contents of all cells')
- #(command clearRow 'Deletes the contents of the current row cells' )
- #(command clearColumn 'Deletes the contents of the current columns
cells' )
- #(slot totalRows 'Lets you change the amount of rows in the spreadsheet'
Number readWrite Player getTotalRows Player setTotalRows: )
- #(slot totalColumns 'Lets you change the amount of columns in the
spreadsheet' Number readWrite Player getTotalColumns Player setTotalColumns: )
- #(slot rowIndex 'Sets the current row' Number readWrite Player
getRowIndex Player setRowIndex: )
- #(slot columnIndex 'Sets the current column' Number readWrite Player
getColumnIndex Player setColumnIndex: )
- #(slot currentCharacters 'Lets you read and modify the characters of the
current cell' String readWrite Player getCurrentCharacters Player setCurrentCharacters: )
- #(slot currentNumericValue 'Lets you read and modify the numeric value
of the current cell' Number readWrite Player getCurrentNumericValue Player setCurrentNumericValue: )
- ))
- (#'data i/o' (
- #(slot writeMode 'Lets you choose a write mode (overwrite or append)'
WriteMode readWrite Player getWriteMode Player setWriteMode: )
- #(slot csvSeparator 'Lets you choose a character to act as a separator
between cells' String readWrite Player getCsvSeparator Player setCsvSeparator: )
- #(slot csvFileName 'Sets the name of the file to import/export data'
String readWrite Player getCsvFileName Player setCsvFileName: )
- #(command importDataFromFile 'Reads the data from the file and loads it
in the spreadsheet')
- #(command exportDataToFile 'Writes the data from the spreadsheet into
the file')
- ))
- )!
Item was added:
- ----- Method: SkBasicSheetMorph class>>initialize (in category 'class
initialization') -----
- initialize
- "
- self initialize.
- "
- Vocabulary addStandardVocabulary: (SymbolListType new
vocabularyName: #WriteMode;
- symbols: #(#overwrite #append)).!
Item was added:
- ----- Method: SkBasicSheetMorph class>>model: (in category 'instance
creation') -----
- model: aSkObject
- ^ super new model: aSkObject!
Item was added:
- ----- Method: SkBasicSheetMorph>>acceptDroppingMorph:event: (in category
'drag and drop') -----
- acceptDroppingMorph: aMorph event: evt
- | cellPos successed |
- cellPos _ self screenToCell: aMorph topLeft.
- (cellPos x < 1
- or: [cellPos y < 1])
- ifTrue: [self beep: 'arrow'.
- ^ aMorph rejectDropMorphEvent: evt].
- successed _ false.
- successed _ (aMorph isKindOf: SkGridPartsMorph)
- ifTrue: [self acceptRuleMorph: aMorph
event: evt]
- ifFalse: [aMorph class = PhraseTileMorph
- ifTrue: [self
acceptPhraseTileMorph: aMorph event: evt]
- ifFalse: [aMorph class =
TileMorph
- ifTrue:
[self acceptTileMorph: aMorph event: evt]]].
- successed
- ifTrue: [self beep: 'cassete']
- ifFalse: [self beep: 'arrow'.
- aMorph rejectDropMorphEvent: evt]!
Item was added:
- ----- Method: SkBasicSheetMorph>>acceptPhraseTileMorph:event: (in
category 'drag and drop') -----
- acceptPhraseTileMorph: aMorph event: evt
- | setter getter |
- getter _ aMorph operatorTile operatorOrExpression.
- setter _ ('set'
- , (getter allButFirst: 3) , ':') asSymbol.
- self model
- modelAt: (self screenToCell: aMorph topLeft)
- for: aMorph actualObject
- getter: getter
- setter: setter.
- ^ true!
Item was added:
- ----- Method: SkBasicSheetMorph>>acceptRuleMorph:event: (in category
'drag and drop') -----
- acceptRuleMorph: aMorph event: evt
- | cellPos card |
- model parent adopt: aMorph model rule.
- cellPos _ (self screenToCell: aMorph topLeft)
- + (aMorph cellOrigin - aMorph area
topLeft).
- self model textAt: cellPos put: '=' , aMorph model codeString.
- card _ self
- cardMorphAt: cellPos
- ifAbsent: [^ false].
- card model rule = aMorph model rule
- ifFalse: ["maybe successed"
- ^ false].
- aMorph halo
- ifNotNilDo: [:halo | halo setTarget: card].
- ^ true!
Item was added:
- ----- Method: SkBasicSheetMorph>>acceptTileMorph:event: (in category
'drag and drop') -----
- acceptTileMorph: aMorph event: evt
- | object |
- object _ aMorph actualObject.
- self model
- at: (self screenToCell: aMorph topLeft)
- put: object.
- ^ true!
Item was added:
- ----- Method: SkBasicSheetMorph>>areaChanged (in category 'layout')
- areaChanged
- super areaChanged.
- self
- submorphsDo: [:m | (m isKindOf: SkGridMorph)
- ifTrue: [m areaChanged]]!
Item was added:
- ----- Method: SkBasicSheetMorph>>cardMorphAt:ifAbsent: (in category
'accessing') -----
- cardMorphAt: aPoint ifAbsent: aBlock
- ^ self submorphs
- detect: [:m | m class = SkCardMorph
- and: [m cellOrigin = aPoint]]
- ifNone: aBlock!
Item was added:
- ----- Method: SkBasicSheetMorph>>cellExtentAt: (in category 'layout')
- cellExtentAt: aPoint
- | cellExtent x y |
- ^ (model notNil
- and: [(cellExtent _ model findName: self
cellExtentName) class == SkSheet ])
- ifTrue: [x _ (cellExtent
- at: aPoint x @ 1
- ifAbsent: [SkGridMorph
standardCellExtent]) x.
- y _ (cellExtent
- at: 1 @ aPoint y
- ifAbsent: [SkGridMorph
standardCellExtent]) y.
- x @ y]
- ifFalse: [SkGridMorph standardCellExtent]!
Item was added:
- ----- Method: SkBasicSheetMorph>>cellExtentName (in category 'layout')
- cellExtentName
- ^ 'CellExtent'!
Item was added:
- ----- Method: SkBasicSheetMorph>>copySelection (in category 'action')
- copySelection
- | text |
- text _ Text
- streamContents: [:aStream | self selection
top
- to: self selection bottom
- 1
- do: [:y |
- (self selection
left to: self selection right - 1)
- do: [:x |
aStream
nextPutAll: (model textAt: x @ y)]
separatedBy: [aStream nextPut: Character tab].
- aStream nextPut:
Character cr]].
- Clipboard clipboardText: text!
Item was added:
- ----- Method: SkBasicSheetMorph>>cut (in category 'action') -----
- cut
- self copySelection.
- self selection top
- to: self selection bottom - 1
- do: [:y | self selection left
- to: self selection right - 1
- do: [:x | model textAt: x @ y put: '']]!
Item was added:
- ----- Method: SkBasicSheetMorph>>drawCell:at: (in category 'drawing')
- drawCell: aCanvas at: aPoint
- (aPoint x isZero
- or: [aPoint y isZero])
- ifTrue: [^ self
- drawLabel: aCanvas
- string: (self labelAt: aPoint)
- at: aPoint].
- self flag: #TODO.
- self
- drawContents: ((showFormula notNil
- and: [showFormula])
- ifTrue: [model textAt: aPoint]
- ifFalse: [ showFormula _ false.model at:
aPoint.])
- on: aCanvas
- at: aPoint!
Item was added:
- ----- Method: SkBasicSheetMorph>>drawOn: (in category 'drawing') -----
- drawOn: aCanvas
- super drawOn: aCanvas.
- dropZone
- ifNotNil: [aCanvas
- fillRectangle: (self
- cellAreaToScreen:
(dropZone intersect: area))
- fillStyle: (SkColorSet labelFor: model)
- borderStyle: self borderStyle].
- self drawDependMap: aCanvas.
- self drawBorder: aCanvas.
- self drawContents: aCanvas!
Item was added:
- ----- Method: SkBasicSheetMorph>>editContents (in category 'accessing')
- editContents
- self selection ifNil: [^''].
- ^ model
- ifNil: ['']
- ifNotNil: [model textAt: self selection origin]!
Item was added:
- ----- Method: SkBasicSheetMorph>>editContents: (in category 'accessing')
- editContents: aText
- "Accept text"
- self selection ifNil: [^self].
- model
- ifNotNil: [model textAt: self selection origin put:
aText].
- selectionMorph deleteEditor!
Item was added:
- ----- Method: SkBasicSheetMorph>>fillStyle (in category 'visual
properties') -----
- fillStyle
- ^ SkColorSet baseFor: model rule!
Item was added:
- ----- Method: SkBasicSheetMorph>>goto: (in category 'navigation') -----
- goto: aSkObject
- | grid |
- self beep: 'rice'.
- grid _ aSkObject grid.
- self replace: grid.
- grid history: self.
- ^ grid!
Item was added:
- ----- Method: SkBasicSheetMorph>>handlesKeyboard: (in category 'event
handling') -----
- handlesKeyboard: evt
- ^ true!
Item was added:
- ----- Method: SkBasicSheetMorph>>handlesMouseDown: (in category 'event
handling') -----
- handlesMouseDown: evt
- ^ true!
Item was added:
- ----- Method: SkBasicSheetMorph>>handlesMouseOver: (in category 'event
handling') -----
- handlesMouseOver: evt
- ^ true
- !
Item was added:
- ----- Method: SkBasicSheetMorph>>handlesMouseOverDragging: (in category
'event handling') -----
- handlesMouseOverDragging: evt
- ^ true
- !
Item was added:
- ----- Method: SkBasicSheetMorph>>height: (in category 'accessing') -----
- height: aNumber
- ^ self setExtentFromHalo: self width @ aNumber!
Item was added:
- ----- Method: SkBasicSheetMorph>>history: (in category 'navigation')
- history: aSkSheetMorph
- history
- ifNil: [history _ aSkSheetMorph]!
Item was added:
- ----- Method: SkBasicSheetMorph>>initialize (in category
'initialization') -----
- initialize
- super initialize.
- selectionMorph _ SkGridSelectionMorph new holder: self.
- self
- area: (1 @ 1 extent: 4 @ 4).
- self
- borderStyle: (RaisedBorder color: Color black width: 1).
- self
- fillStyle: (SolidFillStyle
- color: (Color
- r: 1.0
- g: 0.935
- b: 0.839)).
- self cornerStyle: #rounded.
- self selection: nil.
- showFormula _ false!
Item was added:
- ----- Method: SkBasicSheetMorph>>initializeToStandAlone (in category
'parts bin') -----
- initializeToStandAlone
- super initializeToStandAlone.
- self model: SkSheet new attachProject.
- self
- area: (0 @ 0 extent: 3 @ 3)!
Item was added:
- ----- Method: SkBasicSheetMorph>>isModelStepping (in category 'stepping
and presenter') -----
- isModelStepping
- ^ model isStepping!
Item was added:
- ----- Method: SkBasicSheetMorph>>isMorphicModel (in category
'classification') -----
- isMorphicModel
- ^true!
Item was added:
- ----- Method: SkBasicSheetMorph>>keyStroke: (in category 'event
handling') -----
- keyStroke: evt
- selectionMorph keyStroke: evt!
Item was added:
- ----- Method: SkBasicSheetMorph>>model (in category 'accessing') -----
- model
- ^ model!
Item was added:
- ----- Method: SkBasicSheetMorph>>model: (in category 'accessing') -----
- model: anObject
- model
- ifNotNil: [model removeDependent: self].
- anObject
- ifNotNil: [anObject addDependent: self].
- model _ anObject.
- self update: #all.
- !
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseDown: (in category 'event
handling') -----
- mouseDown: event
- self
- selectSelection: (self screenToCell: event position).
- event yellowButtonPressed
- ifTrue: [^ selectionMorph invokeMenu: event].
- "For easy doublecilck to selection"
- event hand waitForClicksOrDrag: selectionMorph event: event.
- event hand mouseFocus: selectionMorph!
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseEnter: (in category 'event
handling') -----
- mouseEnter: evt
- | hand tile |
- hand _ evt hand.
- hand submorphs size = 1
- ifFalse: [^ self].
- tile _ hand firstSubmorph renderedMorph.
- (self wantsDroppedMorph: tile event: evt)
- ifFalse: [^ self].
- self
- startStepping: #trackDropZones
- at: Time millisecondClockValue
- arguments: nil
- stepTime: 20!
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseEnterDragging: (in category 'event
handling') -----
- mouseEnterDragging: evt
- "Test button state elsewhere if at all"
- ^ self mouseEnter: evt!
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseLeave: (in category 'event
handling') -----
- mouseLeave: evt
- dropZone _ nil.
- self stopSteppingSelector: #trackDropZones!
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseLeaveDragging: (in category 'event
handling') -----
- mouseLeaveDragging: evt
- ^ self mouseLeave: evt!
Item was added:
- ----- Method: SkBasicSheetMorph>>mouseUpTick:onItem: (in category 'event
handling') -----
- mouseUpTick: evt onItem: aMorph
- aMorph isTicking
- ifTrue: [model stopStepping.
- aMorph isTicking: false]
- ifFalse: [model startStepping.
- aMorph isTicking: true]!
Item was added:
- ----- Method: SkBasicSheetMorph>>openLibrary (in category 'action')
- openLibrary
- (SkObject root at: 'Library') grid openInHand!
Item was added:
- ----- Method: SkBasicSheetMorph>>paste (in category 'action') -----
- paste
- | pos selection isJustACell |
- selection _ self selection.
- isJustACell _ selection extent = (1 @ 1).
- pos _ selection origin.
- Clipboard clipboardText
- split: Character cr
- do: [:line |
- line
- split: Character tab
- do: [:field |
- (isJustACell
- or: [selection
containsPoint: pos])
- ifTrue: [model textAt: pos
put: field].
- pos _ pos + (1 @ 0)].
- pos _ selection left @ (pos y + 1)]!
Item was added:
- ----- Method: SkBasicSheetMorph>>previousPage (in category 'navigation')
- previousPage
- self beep: 'rice'.
- ^ history
- ifNotNil: [self replace: history]!
Item was added:
- ----- Method: SkBasicSheetMorph>>privateRemoveMorph: (in category
'private') -----
- privateRemoveMorph: aMorph
- aMorph class = SkCardMorph
- ifTrue: [self beep: 'cork'.
- self model textAt: aMorph cellOrigin put: ''].
- super privateRemoveMorph: aMorph!
Item was added:
- ----- Method: SkBasicSheetMorph>>replace: (in category 'navigation')
- replace: aSkSheetMorph
- aSkSheetMorph area: self area.
- aSkSheetMorph position: self position.
- self owner replaceSubmorph: self by: aSkSheetMorph.
- ^ aSkSheetMorph!
Item was added:
- ----- Method: SkBasicSheetMorph>>selectSelection: (in category 'action')
- selectSelection: aPoint
- "Select at event position"
- aPoint
- ifNil: [^ self].
- self
- selection: (aPoint extent: 1 @ 1).
- self changed!
Item was added:
- ----- Method: SkBasicSheetMorph>>selection (in category 'accessing')
- selection
- ^ selectionMorph area!
Item was added:
- ----- Method: SkBasicSheetMorph>>selection: (in category 'accessing')
- selection: aRectangle
- (submorphs indexOf: selectionMorph) = 1
- ifFalse: [self addMorphFront: selectionMorph].
- selectionMorph area: aRectangle!
Item was added:
- ----- Method: SkBasicSheetMorph>>selectionMorph (in category
'accessing') -----
- selectionMorph
- ^ selectionMorph!
Item was added:
- ----- Method: SkBasicSheetMorph>>setCellExtentFromHalo: (in category
'layout') -----
- setCellExtentFromHalo: newExtent
- | eachExtent cellExtent |
- model
- ifNil: [^ self].
- cellExtent _ model
- at: self cellExtentName
- ifAbsent: [model
- at: self cellExtentName
- put: (SkSheet new parent:
model)].
- eachExtent _ newExtent // self selection extent max: 10 @ 10.
- self selection left
- to: self selection right - 1
- do: [:x | cellExtent at: x @ 1 put: eachExtent].
- self selection top
- to: self selection bottom - 1
- do: [:y | cellExtent at: 1 @ y put: eachExtent].
- self areaChanged.
- self changed!
Item was added:
- ----- Method: SkBasicSheetMorph>>setExtentFromHalo: (in category
'layout') -----
- setExtentFromHalo: newExtent
- | card cardMorph direction size |
- super setExtentFromHalo: newExtent.
- direction := nil.
- area height = 1
- ifTrue:
- [direction := #right.
- size := area width - 1]
- ifFalse:
- [area width = 1
- ifTrue:
- [direction := #down.
- size := area height - 1]].
- direction ifNotNil:
- [card := model new.
- card direction: direction.
- card size: size.
- cardMorph := SkCardMorph model: card.
- cardMorph position: self position.
- self owner addMorph: cardMorph.
- self halo ifNotNilDo: [:helo | helo setTarget:
cardMorph].
- self delete]!
Item was added:
- ----- Method: SkBasicSheetMorph>>showFormula (in category 'accessing')
- showFormula
- ^ showFormula!
Item was added:
- ----- Method: SkBasicSheetMorph>>spawn (in category 'action') -----
- spawn
- model inspectAt: self selection topLeft!
Item was added:
- ----- Method: SkBasicSheetMorph>>spawn: (in category 'action') -----
- spawn: anObject
- self spawn!
Item was added:
- ----- Method: SkBasicSheetMorph>>startStepping (in category 'stepping
and presenter') -----
- startStepping
- model
- ifNotNil: [model startStepping].
- super startStepping.
- !
Item was added:
- ----- Method: SkBasicSheetMorph>>step (in category 'stepping and
presenter') -----
- step
- self changed!
Item was added:
- ----- Method: SkBasicSheetMorph>>toggleFormula (in category 'accessing')
- toggleFormula
- showFormula _ showFormula not!
Item was added:
- ----- Method: SkBasicSheetMorph>>trackDropZones (in category 'event
handling') -----
- trackDropZones
- | hand target |
- hand _ self primaryHand.
- ((self hasOwner: hand) not
- and: [hand submorphCount > 0])
- ifTrue: [target _ hand submorphs first.
- dropZone _ (self screenToCell: target topLeft)
- extent: ((target
respondsTo: #area)
- ifTrue:
[target area extent]
- ifFalse:
[1 @ 1]).
- (dropZone topLeft x < 1
- or: [dropZone topLeft y < 1])
- ifTrue: [dropZone _ nil].
- self changed]
- ifFalse: [dropZone _ nil.
- self stopSteppingSelector: #trackDropZones]!
Item was added:
- ----- Method: SkBasicSheetMorph>>tryToRenameTo: (in category
'accessing') -----
- tryToRenameTo: aName
- ^ model
- ifNotNilDo: [:m | m name: aName]!
Item was added:
- ----- Method: SkBasicSheetMorph>>upPage (in category 'navigation') -----
- upPage
- self beep: 'rice'.
- ^ self goto: model up!
Item was added:
- ----- Method: SkBasicSheetMorph>>update: (in category 'updating') -----
- update: anObject
- anObject = #cardList
- ifTrue: [self updateCardList].
- anObject = #all
- ifTrue: [self updateCardList].
- self changed!
Item was added:
- ----- Method: SkBasicSheetMorph>>updateCardList (in category 'updating')
- updateCardList
- | cardList morph |
- cardList _ model cardList: self visibleArea.
- self
- removeAllMorphsIn: (self submorphs
- select: [:m | m class == SkCardMorph]).
- cardList
- do: [:cardInfo |
- morph _ SkCardMorph model: cardInfo value.
- morph holder: self.
- self addMorph: morph.
- morph cellOrigin: cardInfo key].
- selectionMorph hide!
Item was added:
- ----- Method: SkBasicSheetMorph>>veryDeepInner: (in category 'copying')
- veryDeepInner: deepCopier
- "history is not copied"
- model _ model veryDeepCopyWith: deepCopier.
- selectionMorph _ (selectionMorph veryDeepCopyWith: deepCopier)
holder: self.
- dropZone _ dropZone veryDeepCopyWith: deepCopier.
- showFormula _ showFormula veryDeepCopyWith: deepCopier.
- super veryDeepInner: deepCopier!
Item was added:
- ----- Method: SkBasicSheetMorph>>wantsDroppedMorph:event: (in category
'drag and drop') -----
- wantsDroppedMorph: aMorph event: anEvent
- ^ aMorph class = PhraseTileMorph
- or: [aMorph class = TileMorph
- or: [aMorph isKindOf: SkGridPartsMorph]]!
Item was added:
- ----- Method: SkBasicSheetMorph>>width: (in category 'accessing') -----
- width: aNumber
- ^ self setExtentFromHalo: aNumber @ self height!
Item was changed: ----- Method: SkCardMorph>>doubleClick: (in category 'event handling')
doubleClick: evt | sheet | (holder notNil and: [owner = holder]) ifTrue: [^ holder goto: model]. self owner = World ifTrue: [self delete].
- sheet _ SkBasicSheetMorph allInstances
- sheet _ SkSheetMorph allInstances
detect: [:each | each world = World and: [each model = model]] ifNone: [model grid]. sheet position: self position; openInWorld!
Item was changed: ----- Method: SkCardMorph>>replaceToSheet: (in category 'layout') ----- replaceToSheet: newCellExtent "Create new spreadsheet for the model. And I will be deleted" | sheetMorph | (newCellExtent y > 1 and: [newCellExtent x > 1])
- ifTrue: [sheetMorph _ SkBasicSheetMorph new model: model.
- ifTrue: [sheetMorph _ SkSheetMorph new model: model.
sheetMorph area: (0 @ 0 extent: newCellExtent). sheetMorph position: self position. self owner addMorph: sheetMorph. self halo ifNotNilDo: [:helo | helo setTarget: sheetMorph]. ^ self delete]!
Item was changed: ----- Method: SkObject class>>grid (in category 'instance creation')
grid | case grid |
- grid _ SkBasicSheetMorph new model: (case _ self new).
- grid _ SkSheetMorph new model: (case _ self new).
grid area: case defaultArea. ^ grid!
Item was changed: ----- Method: SkObject>>grid (in category 'initialization') ----- grid | grid |
- grid _ SkBasicSheetMorph new model: self.
- grid _ SkSheetMorph new model: self.
grid area: self defaultArea. ^ grid!
Item was changed:
- Morph subclass: #SkSheetMorph
- instanceVariableNames: 'sheet'
- SkGridMorph subclass: #SkSheetMorph
- instanceVariableNames: 'history model selectionMorph dropZone
showFormula' classVariableNames: '' poolDictionaries: '' category: 'Skeleton-Base'!
- !SkSheetMorph commentStamp: 'tak 12/11/2003 19:10' prior: 0!
- I am a presentation compornent for showing as 2-D grid.
- The contents what I show is depended on a model.
- I never access to a cell directly except through model because
- a cell doesn't know where he locates. Basically, Position information is
- only in model.
- cellArea Rectangle -- the area of cells for drawing. Actual
size of table is cellArea extent.
- model SkSheet --
- !
Item was changed:
- ----- Method: SkSheetMorph class>>additionsToViewerCategories (in
category 'as yet unclassified') -----
- ----- Method: SkSheetMorph class>>additionsToViewerCategories (in
category 'viewer categories') ----- additionsToViewerCategories
- ^(Smalltalk at: #SkRawSheetMorph ifAbsent: [^ #()])
- additionsToViewerCategories!
- ^ #(
- (#spreadsheet (
- #(command clearTable 'Deletes the contents of all cells')
- #(command clearRow 'Deletes the contents of the current row cells' )
- #(command clearColumn 'Deletes the contents of the current columns
cells' )
- #(slot totalRows 'Lets you change the amount of rows in the spreadsheet'
Number readWrite Player getTotalRows Player setTotalRows: )
- #(slot totalColumns 'Lets you change the amount of columns in the
spreadsheet' Number readWrite Player getTotalColumns Player setTotalColumns: )
- #(slot rowIndex 'Sets the current row' Number readWrite Player
getRowIndex Player setRowIndex: )
- #(slot columnIndex 'Sets the current column' Number readWrite Player
getColumnIndex Player setColumnIndex: )
- #(slot currentCharacters 'Lets you read and modify the characters of the
current cell' String readWrite Player getCurrentCharacters Player setCurrentCharacters: )
- #(slot currentNumericValue 'Lets you read and modify the numeric value
of the current cell' Number readWrite Player getCurrentNumericValue Player setCurrentNumericValue: )
- ))
- (#'data i/o' (
- #(slot writeMode 'Lets you choose a write mode (overwrite or append)'
WriteMode readWrite Player getWriteMode Player setWriteMode: )
- #(slot csvSeparator 'Lets you choose a character to act as a separator
between cells' String readWrite Player getCsvSeparator Player setCsvSeparator: )
- #(slot csvFileName 'Sets the name of the file to import/export data'
String readWrite Player getCsvFileName Player setCsvFileName: )
- #(command importDataFromFile 'Reads the data from the file and loads it
in the spreadsheet')
- #(command exportDataToFile 'Writes the data from the spreadsheet into
the file')
- ))
- )!
Item was changed:
- ----- Method: SkSheetMorph class>>descriptionForPartsBin (in category
'as yet unclassified') -----
- ----- Method: SkSheetMorph class>>descriptionForPartsBin (in category
'parts bin') ----- descriptionForPartsBin
- ^ self partName: 'Spreadsheet' translated
- categories: {'Skeleton' translated}
- documentation: 'A spreadsheet' translated!
- ^ self partName: 'Spread Sheet'
- categories: #('Skeleton')
- documentation: 'A spread sheet'!
Item was removed:
- ----- Method: SkSheetMorph class>>formPreviousPage (in category
'constants') -----
- formPreviousPage
- ^((ColorForm
- extent: 5@9
- depth: 1
- fromArray: #( 4026531840 3758096384 3489660928 2952790016
1879048192 2952790016 3489660928 3758096384 4026531840)
- offset: 0@0)
- colorsFromArray: #(#(0.0 0.0 0.0) #( ) ))
- " form storeString "!
Item was removed:
- ----- Method: SkSheetMorph class>>formUpPage (in category 'constants')
- formUpPage
- ^((ColorForm
- extent: 9@5
- depth: 2
- fromArray: #( 2859106304 2845474816 2795929600 2326298624
1431650304)
- offset: 0@0)
- colorsFromArray: #(#(0.004 0.004 0.008) #(0.0 0.0 0.004) #( )
#(0.0 0.0 0.0) ))
- " form storeString "!
Item was removed:
- ----- Method: SkSheetMorph class>>initialize (in category 'class
initialization') -----
- initialize
- "
- self initialize.
- "
- Vocabulary addStandardVocabulary: (SymbolListType new
vocabularyName: #WriteMode;
- symbols: #(#overwrite #append)).!
Item was removed:
- ----- Method: SkSheetMorph class>>model: (in category 'instance
creation') -----
- model: aSkObject
- ^ super new model: aSkObject!
Item was removed:
- ----- Method: SkSheetMorph>>acceptDroppingMorph:event: (in category
'drag and drop') -----
- acceptDroppingMorph: aMorph event: evt
- | cellPos successed |
- cellPos _ self screenToCell: aMorph topLeft.
- (cellPos x < 1
- or: [cellPos y < 1])
- ifTrue: [self beep: 'arrow'.
- ^ aMorph rejectDropMorphEvent: evt].
- successed _ false.
- successed _ (aMorph isKindOf: SkGridPartsMorph)
- ifTrue: [self acceptRuleMorph: aMorph
event: evt]
- ifFalse: [aMorph class = PhraseTileMorph
- ifTrue: [self
acceptPhraseTileMorph: aMorph event: evt]
- ifFalse: [aMorph class =
TileMorph
- ifTrue:
[self acceptTileMorph: aMorph event: evt]]].
- successed
- ifTrue: [self beep: 'cassete']
- ifFalse: [self beep: 'arrow'.
- aMorph rejectDropMorphEvent: evt]!
Item was removed:
- ----- Method: SkSheetMorph>>acceptPhraseTileMorph:event: (in category
'drag and drop') -----
- acceptPhraseTileMorph: aMorph event: evt
- | setter getter |
- getter _ aMorph operatorTile operatorOrExpression.
- setter _ ('set'
- , (getter allButFirst: 3) , ':') asSymbol.
- self model
- modelAt: (self screenToCell: aMorph topLeft)
- for: aMorph actualObject
- getter: getter
- setter: setter.
- ^ true!
Item was removed:
- ----- Method: SkSheetMorph>>acceptRuleMorph:event: (in category 'drag
and drop') -----
- acceptRuleMorph: aMorph event: evt
- | cellPos card |
- model parent adopt: aMorph model rule.
- cellPos _ (self screenToCell: aMorph topLeft)
- + (aMorph cellOrigin - aMorph area
topLeft).
- self model textAt: cellPos put: '=' , aMorph model codeString.
- card _ self
- cardMorphAt: cellPos
- ifAbsent: [^ false].
- card model rule = aMorph model rule
- ifFalse: ["maybe successed"
- ^ false].
- aMorph halo
- ifNotNilDo: [:halo | halo setTarget: card].
- ^ true!
Item was removed:
- ----- Method: SkSheetMorph>>acceptTileMorph:event: (in category 'drag
and drop') -----
- acceptTileMorph: aMorph event: evt
- | object |
- object _ aMorph actualObject.
- self model
- at: (self screenToCell: aMorph topLeft)
- put: object.
- ^ true!
Item was added:
- ----- Method: SkSheetMorph>>addPageControls (in category
'initialization') -----
- addPageControls
- | panel prev up title |
- panel := AlignmentMorph newRow
- color: Color transparent;
- cellInset: 3;
- hResizing: #shrinkWrap;
- vResizing: #shrinkWrap.
- panel addMorphBack: self tickMorph.
- prev := SketchMorph withForm: self prevButtonForm.
- prev
- on: #mouseDown
- send: #previousPage
- to: sheet.
- prev position: 32 @ 3.
- prev setBalloonText: 'View the previous sheet.' translated.
- panel addMorphBack: prev.
- up := SketchMorph withForm: self upButtonForm.
- up
- on: #mouseDown
- send: #upPage
- to: sheet.
- up position: 44 @ 4.
- up setBalloonText: 'View the definision or the parent rule.'
translated.
- panel addMorphBack: up.
- title := UpdatingStringMorph new useStringFormat
- target: self;
- putSelector: #setNameTo:;
- getSelector: #externalName.
- panel addMorphBack: title.
- self addMorph: panel!
Item was added:
- ----- Method: SkSheetMorph>>addSheet: (in category 'initialization')
- addSheet: aSheet
- self addMorph: (sheet := aSheet).
- self renameTo: sheet externalName!
Item was added:
- ----- Method: SkSheetMorph>>area: (in category 'sheet delegation') -----
- area: aRectangle
- ^ sheet area: aRectangle
- !
Item was removed:
- ----- Method: SkSheetMorph>>areaChanged (in category 'layout') -----
- areaChanged
- super areaChanged.
- self
- submorphsDo: [:m | (m isKindOf: SkGridMorph)
- ifTrue: [m areaChanged]]!
Item was removed:
- ----- Method: SkSheetMorph>>cardMorphAt:ifAbsent: (in category
'accessing') -----
- cardMorphAt: aPoint ifAbsent: aBlock
- ^ self submorphs
- detect: [:m | m class = SkCardMorph
- and: [m cellOrigin = aPoint]]
- ifNone: aBlock!
Item was removed:
- ----- Method: SkSheetMorph>>cellExtentAt: (in category 'layout') -----
- cellExtentAt: aPoint
- | cellExtent x y |
- ^ (model notNil
- and: [(cellExtent _ model findName: self
cellExtentName) class == SkSheet ])
- ifTrue: [x _ (cellExtent
- at: aPoint x @ 1
- ifAbsent: [SkGridMorph
standardCellExtent]) x.
- y _ (cellExtent
- at: 1 @ aPoint y
- ifAbsent: [SkGridMorph
standardCellExtent]) y.
- x @ y]
- ifFalse: [SkGridMorph standardCellExtent]!
Item was removed:
- ----- Method: SkSheetMorph>>cellExtentName (in category 'layout') -----
- cellExtentName
- ^ 'CellExtent'!
Item was removed:
- ----- Method: SkSheetMorph>>copySelection (in category 'action') -----
- copySelection
- | text |
- text _ Text
- streamContents: [:aStream | self selection
top
- to: self selection bottom
- 1
- do: [:y |
- (self selection
left to: self selection right - 1)
- do: [:x |
aStream
nextPutAll: (model textAt: x @ y)]
separatedBy: [aStream nextPut: Character tab].
- aStream nextPut:
Character cr]].
- Clipboard clipboardText: text!
Item was removed:
- ----- Method: SkSheetMorph>>cut (in category 'action') -----
- cut
- self copySelection.
- self selection top
- to: self selection bottom - 1
- do: [:y | self selection left
- to: self selection right - 1
- do: [:x | model textAt: x @ y put: '']]!
Item was added:
- ----- Method: SkSheetMorph>>doesNotUnderstand: (in category 'dnu') -----
- doesNotUnderstand: aMessage
- "Quick hack to automagically generate missing methods"
- self flag: #Richo.
- (sheet respondsTo: aMessage selector)
- ifTrue: [ | str |
- str := aMessage createStubMethod allButLast: 24.
- self class compile: str, '^ sheet ', str
classified: #'autogenerated'.
- ^aMessage sentTo: self.
- ]
- ifFalse: [^super doesNotUnderstand: aMessage]!
Item was removed:
- ----- Method: SkSheetMorph>>drawCell:at: (in category 'drawing') -----
- drawCell: aCanvas at: aPoint
- (aPoint x isZero
- or: [aPoint y isZero])
- ifTrue: [^ self
- drawLabel: aCanvas
- string: (self labelAt: aPoint)
- at: aPoint].
- self flag: #TODO.
- self
- drawContents: ((showFormula notNil
- and: [showFormula])
- ifTrue: [model textAt: aPoint]
- ifFalse: [ showFormula _ false.model at:
aPoint.])
- on: aCanvas
- at: aPoint!
Item was removed:
- ----- Method: SkSheetMorph>>drawName: (in category 'drawing') -----
- drawName: aCanvas
- | name |
- name := model ruleName asString.
- model isInstance
- ifTrue: [name := name , '*'].
- aCanvas
- clipBy: self bounds
- during: [:canvas | canvas
- drawString: name
- at: self topLeft + (28 @ 6)
- font: self class titleStyle
- color: Color gray]!
Item was removed:
- ----- Method: SkSheetMorph>>drawOn: (in category 'drawing') -----
- drawOn: aCanvas
- super drawOn: aCanvas.
- self drawGrabAreaOn: aCanvas.
- dropZone
- ifNotNil: [aCanvas
- fillRectangle: (self
- cellAreaToScreen:
(dropZone intersect: area))
- fillStyle: (SkColorSet labelFor: model)
- borderStyle: self borderStyle].
- self drawDependMap: aCanvas.
- self drawName: aCanvas.
- self drawBorder: aCanvas.
- self drawContents: aCanvas!
Item was removed:
- ----- Method: SkSheetMorph>>editContents (in category 'accessing') -----
- editContents
- self selection ifNil: [^''].
- ^ model
- ifNil: ['']
- ifNotNil: [model textAt: self selection origin]!
Item was removed:
- ----- Method: SkSheetMorph>>editContents: (in category 'accessing')
- editContents: aText
- "Accept text"
- self selection ifNil: [^self].
- model
- ifNotNil: [model textAt: self selection origin put:
aText].
- selectionMorph deleteEditor!
Item was added:
- ----- Method: SkSheetMorph>>extent: (in category 'accessing') -----
- extent: newExtent
- sheet setExtentFromHalo: (newExtent max: (165@77)) -
- (self
layoutInset + self cellInset + (0 @ self pageControls height))!
Item was removed:
- ----- Method: SkSheetMorph>>fillStyle (in category 'visual properties')
- fillStyle
- ^ SkColorSet baseFor: model rule!
Item was removed:
- ----- Method: SkSheetMorph>>goto: (in category 'navigation') -----
- goto: aSkObject
- | grid |
- self beep: 'rice'.
- grid _ aSkObject grid.
- self replace: grid.
- grid history: self.
- ^ grid!
Item was removed:
- ----- Method: SkSheetMorph>>handlesKeyboard: (in category 'event
handling') -----
- handlesKeyboard: evt
- ^ true!
Item was removed:
- ----- Method: SkSheetMorph>>handlesMouseDown: (in category 'event
handling') -----
- handlesMouseDown: evt
- ^ (self grabArea containsPoint: evt position) not!
Item was removed:
- ----- Method: SkSheetMorph>>handlesMouseOver: (in category 'event
handling') -----
- handlesMouseOver: evt
- ^ true
- !
Item was removed:
- ----- Method: SkSheetMorph>>handlesMouseOverDragging: (in category
'event handling') -----
- handlesMouseOverDragging: evt
- ^ true
- !
Item was removed:
- ----- Method: SkSheetMorph>>height: (in category 'accessing') -----
- height: aNumber
- ^ self setExtentFromHalo: self width @ aNumber!
Item was removed:
- ----- Method: SkSheetMorph>>history: (in category 'navigation') -----
- history: aSkSheetMorph
- history
- ifNil: [history _ aSkSheetMorph]!
Item was changed: ----- Method: SkSheetMorph>>initialize (in category 'initialization')
initialize super initialize.
- self layoutPolicy: TableLayout new;
- cellPositioning: #leftCenter;
- cornerStyle: #rounded;
- color: (Color r: 0.645 g: 0.645 b: 1.0);
- borderWidth: 1;
- borderColor: (Color r: 0.516 g: 0.516 b: 1.0);
- listDirection: #topToBottom;
- hResizing: #shrinkWrap;
- vResizing: #shrinkWrap.
- self addSheet: SkBasicSheetMorph newStandAlone;
- addPageControls!
- self showPageControls.
- selectionMorph _ SkGridSelectionMorph new holder: self.
- self
- area: (1 @ 1 extent: 4 @ 4).
- self
- borderStyle: (RaisedBorder color: Color black width: 1).
- self
- fillStyle: (SolidFillStyle
- color: (Color
- r: 1.0
- g: 0.935
- b: 0.839)).
- self cornerStyle: #rounded.
- self selection: nil.
- showFormula _ false!
Item was removed:
- ----- Method: SkSheetMorph>>initializeToStandAlone (in category 'parts
bin') -----
- initializeToStandAlone
- super initializeToStandAlone.
- self model: SkSheet new attachProject.
- self
- area: (0 @ 0 extent: 3 @ 3)!
Item was removed:
- ----- Method: SkSheetMorph>>isModelStepping (in category 'stepping and
presenter') -----
- isModelStepping
- ^ model isStepping!
Item was removed:
- ----- Method: SkSheetMorph>>isMorphicModel (in category
'classification') -----
- isMorphicModel
- ^true!
Item was removed:
- ----- Method: SkSheetMorph>>keyStroke: (in category 'event handling')
- keyStroke: evt
- selectionMorph keyStroke: evt!
Item was changed:
- ----- Method: SkSheetMorph>>model (in category 'sheet delegation') -----
- ----- Method: SkSheetMorph>>model (in category 'accessing') -----
model
- ^ sheet model!
- ^ model!
Item was removed:
- ----- Method: SkSheetMorph>>model: (in category 'accessing') -----
- model: anObject
- model
- ifNotNil: [model removeDependent: self].
- anObject
- ifNotNil: [anObject addDependent: self].
- model _ anObject.
- self update: #all.
- !
Item was removed:
- ----- Method: SkSheetMorph>>mouseDown: (in category 'event handling')
- mouseDown: event
- self
- selectSelection: (self screenToCell: event position).
- event yellowButtonPressed
- ifTrue: [^ selectionMorph invokeMenu: event].
- "For easy doublecilck to selection"
- event hand waitForClicksOrDrag: selectionMorph event: event.
- event hand mouseFocus: selectionMorph!
Item was removed:
- ----- Method: SkSheetMorph>>mouseEnter: (in category 'event handling')
- mouseEnter: evt
- | hand tile |
- hand _ evt hand.
- hand submorphs size = 1
- ifFalse: [^ self].
- tile _ hand firstSubmorph renderedMorph.
- (self wantsDroppedMorph: tile event: evt)
- ifFalse: [^ self].
- self
- startStepping: #trackDropZones
- at: Time millisecondClockValue
- arguments: nil
- stepTime: 20!
Item was removed:
- ----- Method: SkSheetMorph>>mouseEnterDragging: (in category 'event
handling') -----
- mouseEnterDragging: evt
- "Test button state elsewhere if at all"
- ^ self mouseEnter: evt!
Item was removed:
- ----- Method: SkSheetMorph>>mouseLeave: (in category 'event handling')
- mouseLeave: evt
- dropZone _ nil.
- self stopSteppingSelector: #trackDropZones!
Item was removed:
- ----- Method: SkSheetMorph>>mouseLeaveDragging: (in category 'event
handling') -----
- mouseLeaveDragging: evt
- ^ self mouseLeave: evt!
Item was removed:
- ----- Method: SkSheetMorph>>mouseUpTick:onItem: (in category 'event
handling') -----
- mouseUpTick: evt onItem: aMorph
- aMorph isTicking
- ifTrue: [model stopStepping.
- aMorph isTicking: false]
- ifFalse: [model startStepping.
- aMorph isTicking: true]!
Item was removed:
- ----- Method: SkSheetMorph>>openLibrary (in category 'action') -----
- openLibrary
- (SkObject root at: 'Library') grid openInHand!
Item was added:
- ----- Method: SkSheetMorph>>pageControls (in category 'accessing') -----
- pageControls
- ^ self submorphs detect: [:each | each ~~ sheet]!
Item was removed:
- ----- Method: SkSheetMorph>>paste (in category 'action') -----
- paste
- | pos selection isJustACell |
- selection _ self selection.
- isJustACell _ selection extent = (1 @ 1).
- pos _ selection origin.
- Clipboard clipboardText
- split: Character cr
- do: [:line |
- line
- split: Character tab
- do: [:field |
- (isJustACell
- or: [selection
containsPoint: pos])
- ifTrue: [model textAt: pos
put: field].
- pos _ pos + (1 @ 0)].
- pos _ selection left @ (pos y + 1)]!
Item was added:
- ----- Method: SkSheetMorph>>prevButtonForm (in category 'accessing')
- prevButtonForm
- ^(Form
- extent: 9@16
- depth: 16
- fromArray: #( 0 0 0 0 0 0 0 0 0 831258624 0 0 0 12684 831258624 0
0 0 831279775 831258624 0 0 12684 1386173087 831258624 0 0 831279775 1386173087 831258624 0 12684 1386173087 1386173087 831258624 0 831279775 1386173087 1386173087 831258624 12684 1386173087 1386173087 1386173087 831258624 0 831279775 1386173087 1386173087 831258624 0 12684 1386173087 1386173087 831258624 0 0 831279775 1386173087 831258624 0 0 12684 1386173087 831258624 0 0 0 831279775 831258624 0 0 0 12684 831258624 0 0 0 0 831258624)
- offset: 522@183)!
Item was removed:
- ----- Method: SkSheetMorph>>previousPage (in category 'navigation')
- previousPage
- self beep: 'rice'.
- ^ history
- ifNotNil: [self replace: history]!
Item was removed:
- ----- Method: SkSheetMorph>>privateRemoveMorph: (in category 'private')
- privateRemoveMorph: aMorph
- aMorph class = SkCardMorph
- ifTrue: [self beep: 'cork'.
- self model textAt: aMorph cellOrigin put: ''].
- super privateRemoveMorph: aMorph!
Item was removed:
- ----- Method: SkSheetMorph>>replace: (in category 'navigation') -----
- replace: aSkSheetMorph
- aSkSheetMorph area: self area.
- aSkSheetMorph position: self position.
- self delete.
- aSkSheetMorph openInWorld.
- ^ aSkSheetMorph!
Item was added:
- ----- Method: SkSheetMorph>>replaceSubmorph:by: (in category
'submorphs-add/remove') -----
- replaceSubmorph: oldMorph by: newMorph
- "Update page controls if the sheet gets replaced."
- ^ oldMorph == sheet
- ifTrue: [self submorphsDo: [:each | each delete];
- addSheet: newMorph;
- addPageControls]
- ifFalse: [super replaceSubmorph: oldMorph by: newMorph]!
Item was changed:
- ----- Method: SkSheetMorph>>selectSelection: (in category 'sheet
delegation') -----
- ----- Method: SkSheetMorph>>selectSelection: (in category 'action')
selectSelection: aPoint
- ^ sheet selectSelection: aPoint
- !
- "Select at event position"
- aPoint
- ifNil: [^ self].
- self
- selection: (aPoint extent: 1 @ 1).
- self changed!
Item was changed:
- ----- Method: SkSheetMorph>>selection (in category 'sheet delegation')
- ----- Method: SkSheetMorph>>selection (in category 'accessing') -----
selection
- ^ sheet selection
- !
- ^ selectionMorph area!
Item was removed:
- ----- Method: SkSheetMorph>>selection: (in category 'accessing') -----
- selection: aRectangle
- submorphs first == selectionMorph
- ifFalse: [self addMorphFront: selectionMorph].
- selectionMorph area: aRectangle!
Item was removed:
- ----- Method: SkSheetMorph>>selectionMorph (in category 'accessing')
- selectionMorph
- ^ selectionMorph!
Item was removed:
- ----- Method: SkSheetMorph>>setCellExtentFromHalo: (in category
'layout') -----
- setCellExtentFromHalo: newExtent
- | eachExtent cellExtent |
- model
- ifNil: [^ self].
- cellExtent _ model
- at: self cellExtentName
- ifAbsent: [model
- at: self cellExtentName
- put: (SkSheet new parent:
model)].
- eachExtent _ newExtent // self selection extent max: 10 @ 10.
- self selection left
- to: self selection right - 1
- do: [:x | cellExtent at: x @ 1 put: eachExtent].
- self selection top
- to: self selection bottom - 1
- do: [:y | cellExtent at: 1 @ y put: eachExtent].
- self areaChanged.
- self changed!
Item was removed:
- ----- Method: SkSheetMorph>>setExtentFromHalo: (in category 'layout')
- setExtentFromHalo: newExtent
- | card cardMorph direction size |
- super setExtentFromHalo: newExtent.
- direction := nil.
- area height = 1
- ifTrue:
- [direction := #right.
- size := area width - 1]
- ifFalse:
- [area width = 1
- ifTrue:
- [direction := #down.
- size := area height - 1]].
- direction ifNotNil:
- [card := model new.
- card direction: direction.
- card size: size.
- cardMorph := SkCardMorph model: card.
- cardMorph position: self position.
- self owner addMorph: cardMorph.
- self halo ifNotNilDo: [:helo | helo setTarget:
cardMorph].
- self delete]!
Item was added:
- ----- Method: SkSheetMorph>>setNameTo: (in category 'renaming') -----
- setNameTo: aName
- sheet tryToRenameTo: aName.
- super setNameTo: aName!
Item was removed:
- ----- Method: SkSheetMorph>>showFormula (in category 'accessing') -----
- showFormula
- ^ showFormula!
Item was removed:
- ----- Method: SkSheetMorph>>showPageControls (in category
'initialization') -----
- showPageControls
- | panel prev up |
- panel _ Morph new extent: 80@20; color: Color transparent.
- panel
- on: #mouseDown
- send: #yourself
- to: self.
- panel addMorph: self tickMorph.
- prev _ (PolygonMorph new setVertices: {0 @ 7. 7 @ 0. 7 @ 14})
borderWidth: 1;
- borderColor: Color darkGray;
- color: Color transparent.
- prev
- on: #mouseDown
- send: #previousPage
- to: self.
- prev position: 24 @ 3.
- prev setBalloonText: 'View the previous sheet.' translated.
- panel addMorph: prev.
- up _ prev copy heading: 90.
- up
- on: #mouseDown
- send: #upPage
- to: self.
- up position: 36 @ 4.
- up setBalloonText: 'View the definision or the parent rule.'
translated.
- panel addMorph: up.
- self addMorph: panel!
Item was removed:
- ----- Method: SkSheetMorph>>spawn (in category 'action') -----
- spawn
- model inspectAt: self selection topLeft!
Item was removed:
- ----- Method: SkSheetMorph>>spawn: (in category 'action') -----
- spawn: anObject
- self spawn!
Item was removed:
- ----- Method: SkSheetMorph>>startStepping (in category 'stepping and
presenter') -----
- startStepping
- model
- ifNotNil: [model startStepping].
- super startStepping.
- !
Item was changed:
- ----- Method: SkSheetMorph>>step (in category 'stepping') -----
- ----- Method: SkSheetMorph>>step (in category 'stepping and presenter')
step
- sheet step!
- self changed!
Item was changed:
- ----- Method: SkSheetMorph>>tickMorph (in category 'accessing') -----
- ----- Method: SkSheetMorph>>tickMorph (in category 'initialization')
tickMorph | tick | tick _ SkPluggableTickMorph new.
- tick on: sheet isTickingSel: #isModelStepping.
- tick position: self position + 1.
- tick on: self isTickingSel: #isModelStepping.
tick on: #mouseUp send: #mouseUpTick:onItem:
- to: sheet.
- to: self.
tick stepTime: 500. tick startStepping. tick setBalloonText: 'Press to toggle ticking state.' translated. ^ tick!
Item was removed:
- ----- Method: SkSheetMorph>>toggleFormula (in category 'accessing')
- toggleFormula
- showFormula _ showFormula not!
Item was removed:
- ----- Method: SkSheetMorph>>trackDropZones (in category 'event
handling') -----
- trackDropZones
- | hand target |
- hand _ self primaryHand.
- ((self hasOwner: hand) not
- and: [hand submorphCount > 0])
- ifTrue: [target _ hand submorphs first.
- dropZone _ (self screenToCell: target topLeft)
- extent: ((target
respondsTo: #area)
- ifTrue:
[target area extent]
- ifFalse:
[1 @ 1]).
- (dropZone topLeft x < 1
- or: [dropZone topLeft y < 1])
- ifTrue: [dropZone _ nil].
- self changed]
- ifFalse: [dropZone _ nil.
- self stopSteppingSelector: #trackDropZones]!
Item was removed:
- ----- Method: SkSheetMorph>>tryToRenameTo: (in category 'accessing')
- tryToRenameTo: aName
- ^ model
- ifNotNilDo: [:m | m name: aName]!
Item was added:
- ----- Method: SkSheetMorph>>upButtonForm (in category 'accessing') -----
- upButtonForm
- ^ self prevButtonForm copy rotateBy: 90!
Item was removed:
- ----- Method: SkSheetMorph>>upPage (in category 'navigation') -----
- upPage
- self beep: 'rice'.
- ^ self goto: model up!
Item was removed:
- ----- Method: SkSheetMorph>>update: (in category 'updating') -----
- update: anObject
- anObject = #cardList
- ifTrue: [self updateCardList].
- anObject = #all
- ifTrue: [self updateCardList].
- self changed!
Item was removed:
- ----- Method: SkSheetMorph>>updateCardList (in category 'updating')
- updateCardList
- | cardList morph |
- cardList _ model cardList: self visibleArea.
- self
- removeAllMorphsIn: (self submorphs
- select: [:m | m class == SkCardMorph]).
- cardList
- do: [:cardInfo |
- morph _ SkCardMorph model: cardInfo value.
- morph holder: self.
- self addMorph: morph.
- morph cellOrigin: cardInfo key].
- selectionMorph hide!
Item was removed:
- ----- Method: SkSheetMorph>>veryDeepInner: (in category 'copying') -----
- veryDeepInner: deepCopier
- "history is not copied"
- model _ model veryDeepCopyWith: deepCopier.
- selectionMorph _ (selectionMorph veryDeepCopyWith: deepCopier)
holder: self.
- dropZone _ dropZone veryDeepCopyWith: deepCopier.
- showFormula _ showFormula veryDeepCopyWith: deepCopier.
- super veryDeepInner: deepCopier!
Item was added:
- ----- Method: SkSheetMorph>>visibleArea (in category 'sheet delegation')
- visibleArea
- ^ sheet visibleArea
- !
Item was removed:
- ----- Method: SkSheetMorph>>wantsDroppedMorph:event: (in category 'drag
and drop') -----
- wantsDroppedMorph: aMorph event: anEvent
- ^ aMorph class = PhraseTileMorph
- or: [aMorph class = TileMorph
- or: [aMorph isKindOf: SkGridPartsMorph]]!
Item was removed:
- ----- Method: SkSheetMorph>>width: (in category 'accessing') -----
- width: aNumber
- ^ self setExtentFromHalo: aNumber @ self height!
Item was changed: ----- Method: SkValueCell>>slotName (in category 'accessing') ----- slotName "See Player>>tearOffFancyWatcherFor:" | info watcherWording anInterface | info _ model slotInfoForGetter: getter. info ifNil: [anInterface _ Vocabulary eToyVocabulary methodInterfaceAt: getter ifAbsent: [].
- watcherWording _ anInterface wording]
- watcherWording _ anInterface elementWording]
ifNotNil: [watcherWording _ Utilities inherentSelectorForGetter: getter]. ^ model tileReferringToSelf bePossessive labelMorph contents , ' ' , watcherWording!
etoys-dev mailing list etoys-dev@squeakland.org http://lists.squeakland.org/mailman/listinfo/etoys-dev
etoys-dev mailing list etoys-dev@squeakland.org http://lists.squeakland.org/mailman/listinfo/etoys-dev
etoys-dev@lists.squeakfoundation.org