[etoys-dev] Etoys Inbox: Skeleton-Richo.5.mcz

karl ramberg karlramberg at gmail.com
Tue Oct 18 12:19:02 EDT 2011


On Tue, Oct 18, 2011 at 5:59 PM, Ricardo Moran <richi.moran at 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 at 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 at source.squeak.org
>> To: etoys-dev at 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 at 0) to: (Morph
>>        new position: 200 at 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 at 0 corner: (aNumber max: 2) @ self
>> getTotalRows)!
>> -       ^ self sheetMorph area: (0 at 0 corner: aNumber @ self getTotalRows)!
>>
>> Item was changed:
>>  ----- Method: Player>>setTotalRows: (in category '*skeleton-spreadsheet')
>> -----
>>  setTotalRows: aNumber
>> +       ^ self sheetMorph area: (0 at 0 corner: self getTotalColumns @
>> (aNumber max: 2))!
>> -       ^ self sheetMorph area: (0 at 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 at 9
>> -       depth: 1
>> -       fromArray: #( 4026531840 3758096384 3489660928 2952790016
>> 1879048192 2952790016 3489660928 3758096384 4026531840)
>> -       offset: 0 at 0)
>> -       colorsFromArray: #(#(0.0 0.0 0.0) #( )  ))
>> - " form storeString "!
>>
>> Item was removed:
>> - ----- Method: SkSheetMorph class>>formUpPage (in category 'constants')
>> -----
>> - formUpPage
>> -  ^((ColorForm
>> -       extent: 9 at 5
>> -       depth: 2
>> -       fromArray: #( 2859106304 2845474816 2795929600 2326298624
>> 1431650304)
>> -       offset: 0 at 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 at 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 at 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 at 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 at 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 at squeakland.org
>> http://lists.squeakland.org/mailman/listinfo/etoys-dev
>>
>
>
> _______________________________________________
> etoys-dev mailing list
> etoys-dev at squeakland.org
> http://lists.squeakland.org/mailman/listinfo/etoys-dev
>
>


More information about the etoys-dev mailing list