[squeak-dev] The Trunk: Morphic-cmm.622.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Aug 16 20:03:26 UTC 2012
Chris Muller uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-cmm.622.mcz
==================== Summary ====================
Name: Morphic-cmm.622
Author: cmm
Time: 9 August 2012, 8:14:27.696 pm
UUID: 2c07775c-face-4d3f-bcb0-2c230163bb41
Ancestors: Morphic-bf.621
Reduce, by one, the number of keystrokes required to exit Squeak without saving the image. The N key will now work.
=============== Diff against Morphic-bf.621 ===============
Item was changed:
AlignmentMorph subclass: #UserDialogBoxMorph
+ instanceVariableNames: 'titleMorph labelMorph buttonRow value selectedButton cancelButton timeout savedLabel keyMap'
- instanceVariableNames: 'titleMorph labelMorph buttonRow value selectedButton cancelButton timeout savedLabel'
classVariableNames: ''
poolDictionaries: ''
category: 'Morphic-Windows'!
!UserDialogBoxMorph commentStamp: 'ar 12/11/2009 22:33' prior: 0!
A DialogBoxMorph is Morph used in simple yes/no/confirm dialogs. Strongly modal.!
Item was changed:
----- Method: UserDialogBoxMorph>>addButton:value:selected:performActionOnEscape: (in category 'constructing') -----
+ addButton: buttonLabel value: buttonValue selected: isSelected performActionOnEscape: performActionOnEscape
- addButton: buttonLabel value: buttonValue selected: isSelected performActionOnEscape: performActionOnEscape
"Adds a button with the given label and value.
The value is returned if the user presses the button."
| button |
+ button := PluggableButtonMorphPlus new
+ label: buttonLabel ;
+ action: [ self closeDialog: buttonValue ] ;
+ color: self buttonColor twiceLighter.
- button := PluggableButtonMorphPlus new.
- button label: buttonLabel.
- button action:[self closeDialog: buttonValue].
- button color: self buttonColor twiceLighter.
isSelected ifTrue: [ self selectButton: button ].
+ performActionOnEscape ifTrue: [ self performActionOnEscapeOf: button ].
+ self registerKeyFor: button.
+ buttonRow addMorphBack: button!
- performActionOnEscape ifTrue: [ self performActionOnEscapeOf: button ].
- buttonRow addMorphBack: button.
- !
Item was added:
+ ----- Method: UserDialogBoxMorph>>checkAgainstKeymap: (in category 'events') -----
+ checkAgainstKeymap: aCharacter
+ keyMap
+ at: aCharacter asLowercase
+ ifPresent: [ : foundButton | foundButton performAction ]
+ ifAbsent: [ "do nothing" ]!
Item was changed:
----- Method: UserDialogBoxMorph>>initialize (in category 'initialization') -----
initialize
| titleRow titleFill cc |
super initialize.
self color: Color white.
self listDirection: #topToBottom; wrapCentering: #center;
hResizing: #shrinkWrap; vResizing: #shrinkWrap.
self layoutInset: 0 at 0; cellInset: 5 at 5.
self borderStyle: BorderStyle thinGray.
self useRoundedCorners;
addDropShadow;
shadowColor: (TranslucentColor r: 0.0 g: 0.0 b: 0.0 alpha: 0.666);
shadowOffset: 1 @ 1.
cc := Color gray: 0.8.
titleRow := AlignmentMorph newRow.
titleRow hResizing: #spaceFill; vResizing: #shrinkWrap.
titleRow layoutInset: 2 at 5.
titleRow color: cc.
titleFill := GradientFillStyle ramp: {0.0 -> Color white. 1 ->cc}.
titleFill radial: false; origin: titleRow topLeft; direction: 0 @ TextStyle defaultFont height.
titleRow fillStyle: titleFill.
titleRow fillStyle: self titleGradient.
titleMorph := StringMorph new.
titleMorph emphasis: 1.
titleRow addMorph: titleMorph.
labelMorph := TextMorph new.
labelMorph margins: 5 at 5.
labelMorph lock.
buttonRow := AlignmentMorph newRow vResizing: #shrinkWrap.
buttonRow hResizing: #shrinkWrap; layoutInset: 5 at 5; cellInset: 5 at 5.
buttonRow color: Color transparent.
+ self
+ addMorphBack: titleRow ;
+ addMorphBack: labelMorph ;
+ addMorphBack: buttonRow ;
+ addDropShadow.
+ keyMap := Dictionary new!
- self addMorphBack: titleRow.
- self addMorphBack: labelMorph.
- self addMorphBack: buttonRow.
- self addDropShadow.!
Item was changed:
----- Method: UserDialogBoxMorph>>keyStroke: (in category 'events') -----
keyStroke: evt
| evtCharacter |
self stopAutoTrigger.
evtCharacter := evt keyCharacter.
evtCharacter = Character escape ifTrue: [
^cancelButton ifNotNil: [ cancelButton performAction ] ].
evtCharacter = Character cr ifTrue: [
^selectedButton ifNotNil: [ selectedButton performAction ] ].
(evtCharacter = Character arrowLeft or: [
evt shiftPressed and: [ evtCharacter = Character tab ] ]) ifTrue: [
^self selectPreviousButton ].
(evtCharacter = Character arrowRight or: [
evtCharacter = Character tab ]) ifTrue: [
+ ^self selectNextButton ].
+ self checkAgainstKeymap: evtCharacter!
- ^self selectNextButton ].!
Item was added:
+ ----- Method: UserDialogBoxMorph>>registerKeyFor: (in category 'constructing') -----
+ registerKeyFor: button
+ button label do:
+ [ : eachChar | eachChar isAlphaNumeric ifTrue:
+ [ keyMap
+ at: eachChar asLowercase
+ ifPresent: [ : found | "It's already taken, don't use it." ]
+ ifAbsent:
+ [ ^ keyMap
+ at: eachChar asLowercase
+ put: button ] ] ]!
More information about the Squeak-dev
mailing list
|