--- a/MenuEditor.st Fri Aug 01 14:22:44 1997 +0200
+++ b/MenuEditor.st Fri Aug 01 16:39:37 1997 +0200
@@ -28,9 +28,8 @@
!
SelectionInTreeView subclass:#Painter
- instanceVariableNames:'imageMenuLink imageSeparator'
- classVariableNames:'CopyBuffer ImageMenuLink ImageSeparator ImageItem ImageMenu
- ImageMenuOpen'
+ instanceVariableNames:'images'
+ classVariableNames:'CopyBuffer Images'
poolDictionaries:''
privateIn:MenuEditor
!
@@ -2082,86 +2081,51 @@
!MenuEditor::Painter class methodsFor:'constants'!
-imageClosed
- ^ self imageMenu
-
- "Created: 28.7.1997 / 10:31:37 / cg"
-!
-
imageItem
- ImageItem isNil ifTrue:[
- ImageItem := Image fromFile:('ui_menuitem.xpm').
- ].
- ^ ImageItem
-
- "
- ImageItem := nil
- "
-
- "Created: 28.7.1997 / 09:51:00 / cg"
- "Modified: 28.7.1997 / 09:51:14 / cg"
+ ^ self images at:#item
!
imageMenu
- ImageMenu isNil ifTrue:[
- ImageMenu := Image fromFile:('ui_submenu.xpm').
- ].
- ^ ImageMenu
-
- "
- ImageMenu := nil
- "
-
- "Created: 28.7.1997 / 10:01:21 / cg"
- "Modified: 28.7.1997 / 10:29:14 / cg"
+ ^ self images at:#menuOpen
!
imageMenuLink
- ImageMenuLink isNil ifTrue:[
-"/ ImageMenuLink := Image fromFile:('xpmBitmaps/document_images/tiny_yellow_dir_link.xpm').
- ImageMenuLink := Image fromFile:('ui_submenulink.xpm').
- ].
- ^ ImageMenuLink
-
- "
- ImageMenuLink := nil
- "
-
- "Modified: 28.7.1997 / 10:29:18 / cg"
-!
-
-imageMenuOpen
- ImageMenuOpen isNil ifTrue:[
- ImageMenuOpen := Image fromFile:('ui_submenu_open.xpm').
- ].
- ^ ImageMenuOpen
-
- "
- ImageMenuOpen := nil
- "
-
- "Created: 28.7.1997 / 10:21:31 / cg"
- "Modified: 28.7.1997 / 10:29:20 / cg"
-!
-
-imageOpened
- ^ self imageMenuOpen
-
- "Created: 28.7.1997 / 10:31:46 / cg"
+ ^ self images at:#menuLink
+
!
imageSeparator
- ImageSeparator isNil ifTrue:[
-"/ ImageSeparator := Image fromFile:('xpmBitmaps/document_images/tiny_file_exec.xpm').
- ImageSeparator := Image fromFile:('ui_menusep.xpm').
+ ^ self images at:#separator
+
+!
+
+images
+ "returns an IdentityDictionary containing a list of images and keys used
+ "
+ |icons image|
+
+ Images notNil ifTrue:[
+ ^ Images
].
- ^ ImageSeparator
-
- "
- ImageSeparator := nil
- "
-
- "Modified: 28.7.1997 / 09:42:07 / cg"
+
+ Images := IdentityDictionary new.
+
+ #(
+ (#item 'ui_menuitem.xpm')
+ (#menuClosed 'ui_submenu.xpm')
+ (#menuOpen 'ui_submenu_open.xpm')
+ (#menuLink 'ui_submenulink.xpm')
+ (#separator 'ui_menusep.xpm')
+
+ ) do:[:el |
+ image := Image fromFile:( el last ).
+ Images at:(el first) put:image.
+ ].
+
+ ^ Images
+
+
+
! !
!MenuEditor::Painter class methodsFor:'defaults'!
@@ -2346,48 +2310,52 @@
item := aNode contents.
item submenuChannel notNil ifTrue:[
- imageMenuLink isNil ifTrue:[
- imageMenuLink := (self class imageMenuLink) onDevice:device.
- ].
- ^ imageMenuLink
+ ^ images at:#menuLink
].
item isSeparator ifTrue:[
- imageSeparator isNil ifTrue:[
- imageSeparator := (self class imageSeparator) onDevice:device.
- ].
- ^ imageSeparator
+ ^ images at:#separator
].
- imageItem isNil ifTrue:[
- imageItem := (self class imageItem) onDevice:device.
- ].
- ^ imageItem
+ ^ images at:#item
].
aNode isExpandable ifTrue:[
- imageClosed isNil ifTrue:[
- imageClosed := (self class imageMenu) onDevice:device.
- ].
- ^ imageClosed
+ ^ images at:#menuClosed
].
- imageOpened isNil ifTrue:[
- imageOpened := (self class imageMenuOpen) onDevice:device.
- ].
- ^ imageOpened
-
- "Modified: 28.7.1997 / 10:27:52 / cg"
+ ^ images at:#menuOpen
! !
!MenuEditor::Painter methodsFor:'initialization'!
+fetchImageResources
+ "initialize heavily used device resources - to avoid rendering
+ images again and again later; returns maximum extent of the images used.
+ "
+ |y x t|
+
+ t := super fetchImageResources.
+ y := t y.
+ x := t x.
+
+ images do:[:anIcon|
+ (t := anIcon heightOn:self) > y ifTrue:[y := t].
+ (t := anIcon widthOn:self) > x ifTrue:[x := t].
+ ].
+ ^ x @ y
+
+!
+
initialize
super initialize.
- imageOpened := nil.
- imageClosed := nil.
+
+ images := IdentityDictionary new.
+
+ self class images associationsDo:[:el|
+ images at:(el key) put:(el value onDevice:device)
+ ].
+
self multipleSelectOk:true.
self model:(SelectionInTree new).
-
- "Modified: 28.7.1997 / 10:28:48 / cg"
! !
!MenuEditor::Painter methodsFor:'menus'!