Widgets and Books for Squeak
Bob Arning
arning at charm.net
Fri Mar 24 15:44:46 UTC 2000
On Fri, 24 Mar 2000 09:00:14 -0500 John_Gardner at dmr.ca wrote:
>1. I am not dissing Morphic.
>It is truly incredible and extensible. It is an excellent UI. However, it is BIG
>and somewhat slower than MVC. While the speed issue may be resolved through
>tuning, size is still an issue. Perhaps the bytecode compiler could be extended
>to provide information to a "discard..." method which would remove all
>unnecessary classes. This would be an option, of course, and it would only work
>at the system category (application) level. The context here is creating
>applications for end users.
John,
If you are interested in exploring size reductions in Morphic for particular applications, I have enclosed a changeset that will help. It reports the size of Morphic divided into two groups - classes to keep and classes to delete. You can play with the exclusion criteria to manually adjust the keep group to what your app would need and see how much space would be saved. The output could easily be input to a method to remove the unwanted parts of Morphic as part of a shrink prior to deployment.
Cheers,
Bob
========================
'From Squeak2.8alpha of 13 January 2000 [latest update: #1919] on 24 March 2000 at 10:36:25 am'!
"Change Set: morphicSpace
Date: 24 March 2000
Author: Bob Arning
Evaluate
Smalltalk computeMorphicSizePartitioned
to get a report that shows the size of code of Morphic-related classes broken down into two groups: those one might keep for a Morphic Lite application and those one might omit. The grouping is determined by a list in the method and is rather subjective. I removed a number of the larger classes that would still leave a rather healthy (MVC++) UI capability. More could obviously be pruned and some of the pruned ones might be of interest in a particular application. As it stands, it shows the keep category at 400K and the remove at 340K. I'm sure this could be reduced quite a bit more, depending on the type of application"!
!SystemDictionary methodsFor: 'shrinking' stamp: 'RAA 3/24/2000 10:28'!
computeMorphicSizePartitioned "Smalltalk computeMorphicSizePartitioned"
| allClasses possibleDeletes a1 a2 |
allClasses _ Morph withAllSubclasses.
#('User Objects' 'Experimental-*' 'Balloon-*' 'Morphic-*' 'TrueType-*'
'Graphics-Transformations' 'Alice2.0-*' 'MM-Flash-*') do: [ :partialCat |
(SystemOrganization categories select: [:c | partialCat match: c]) do: [ :cat |
(SystemOrganization listAtCategoryNamed: cat) do: [ :classSymbol |
allClasses add: (Smalltalk at: classSymbol)
].
]
].
possibleDeletes _ #(
PlayingCard FlashFileReader PostscriptCanvas StandardScriptingSystem FlashMorphReader
FlashFileStream FlashCodec
TrashCanMorph BookMorph ScriptEditorMorph SketchEditorMorph PaintBoxMorph
FlapTab HaloMorph EnvelopeEditorMorph TileMorph WaveEditor PianoRollScoreMorph
FlashPlayerMorph ScorePlayerMorph TabbedPalette EventRecorderMorph
CategoryViewer FreeCell FatBitsPaint PlayingCardDeck WonderlandWrapperMorph
PhraseTileMorph MidiInputMorph WonderlandCameraMorph ColorPickerMorph
SpectrumAnalyzerMorph WonderlandMorph FlashCharacterMorph FreeCellBoard
LipsMorph SameGameBoard KeyboardMorphForInput FlashButtonMorph
SameGame IRCMorph FlashMorph ReferenceMorph FlashSpriteMorph PinMorph
MoviePlayerMorph GraphicalDictionaryMenu BlobMorph HeadMorph
GraphMorph StandardViewer MovieMorph TilePadMorph CompoundTileMorph
JoystickMorph ScreeningMorph RecordingControlsMorph IndexTabs
BookPageThumbnailMorph PartsWindow MagnifierMorph WiWPasteUpMorph
BooklikeMorph PianoRollNoteMorph BouncingAtomsMorph FaceMorph
KlattFrameMorph TetrisBoard FlashSorterMorph FishEyeMorph Tetris
MultiuserTinyPaint ViewerEntry RemoteHandMorph PlayingCardMorph
SoundLoopMorph FlashPlayerWindow WonderlandActorData SpeakerMorph
Viewer TabSorterMorph FunctionComponent GraphicalMenu MIDIControllerMorph
BookPageSorterMorph HeadingMorph SoundDemoMorph LedDigitMorph EyeMorph
MIDIPianoKeyboardMorph PaintBoxColorPicker WonderlandCameraControls ColorTileMorph
).
a1 _ self reportSizeOfClasses: (allClasses reject: [ :each | possibleDeletes includes: each name]).
a2 _ self reportSizeOfClasses: (allClasses select: [ :each | possibleDeletes includes: each name]).
StringHolder new
contents: 'Keep these
',a1,'
And remove these
',a2;
openLabel: 'Possible Morphic Lite Configuration'.
! !
!SystemDictionary methodsFor: 'shrinking' stamp: 'RAA 3/24/2000 10:22'!
reportSizeOfClasses: someClasses
"
Morph spaceUsedWithSubclasses
"
| data answer total |
data _ someClasses asArray collect: [ :each | {each name. each spaceUsed}].
data _ data asSortedCollection: [ :a :b | a second >= b second].
answer _ String streamContents: [ :strm |
total _ 0.
data do: [ :each |
strm nextPutAll: (each second printString padded: #left to: 8 with: $ ),' - ',
each first; cr.
total _ total + each second.
].
strm cr; nextPutAll: (total printString padded: #left to: 8 with: $ ),' - TOTAL'; cr; cr.
].
^answer
! !
More information about the Squeak-dev
mailing list
|