--- a/ColorMenu.st Wed Aug 05 17:16:02 1998 +0200
+++ b/ColorMenu.st Thu Aug 06 16:20:51 1998 +0200
@@ -19,6 +19,13 @@
category:'Interface-UIPainter'
!
+SimpleDialog subclass:#DefineColor
+ instanceVariableNames:'red green blue'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:ColorMenu
+!
+
!ColorMenu class methodsFor:'documentation'!
copyright
@@ -117,11 +124,6 @@
#( lightened 100 87 67 50 33)
)
- #( orange
- #orange:
- #( lightened 100 87 67 50 33)
- )
-
)
!
@@ -180,7 +182,7 @@
|item holder color|
- (item := super accept:anItem) notNil
+ ((item := super accept:anItem) notNil and: [item label ~= '?'])
ifTrue:
[
(holder := self colorHolder) == item ifTrue:
@@ -188,7 +190,7 @@
enabledChannel value ifTrue:[color := self color]
]
ifFalse:
- [
+ [
color := item argument.
holder label:(Text string:' ' emphasis:(#backgroundColor->color)).
].
@@ -219,11 +221,12 @@
ifTrue:
[
self disabledRedrawDo:
- [
+ [
holder := self colorHolder.
label := Text string: ' ' emphasis:(#backgroundColor->aColor).
enabledChannel value:true.
- holder label:label
+ holder label:label.
+ model value: aColor
]
]
!
@@ -314,7 +317,15 @@
menu := self class colorMenu:labelsAreColored value:nil.
menu itemsDo:[:el| el isButton:true].
- menu addItem:(MenuItem labeled:' ') beforeIndex:8.
+ menu addItem:((MenuItem labeled:'?') value:
+ [
+ |defineColor|
+ defineColor := DefineColor new color: self color.
+ defineColor open.
+ defineColor accept value ifTrue: [self color: defineColor color]
+
+ ]; isButton: true) beforeIndex:8.
+ menu addItem:(MenuItem labeled:'') beforeIndex:8.
menu addItem:(MenuItem labeled:' ') beforeIndex:5.
menu addItem:(MenuItem labeled:' ') beforeIndex:2.
menu addItem:(MenuItem labeled:' ') beforeIndex:1.
@@ -331,7 +342,8 @@
anItem enabled:enabledChannel.
] ifFalse:[
anItem value == #selection ifTrue:[anItem indication:enabledChannel]
- ifFalse:[anItem enabled:false]
+ ifFalse:[anItem enabled:false].
+ anItem label = '?' ifTrue:[anItem enabled:enabledChannel]
]
]
! !
@@ -344,8 +356,264 @@
^ self itemAt:#selection
! !
+!ColorMenu::DefineColor class methodsFor:'interface specs'!
+
+windowSpec
+ "This resource specification was automatically generated
+ by the UIPainter of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIPainter may not be able to read the specification."
+
+ "
+ UIPainter new openOnClass:ColorMenu::DefineColor andSelector:#windowSpec
+ ColorMenu::DefineColor new openInterface:#windowSpec
+ ColorMenu::DefineColor open
+ "
+
+ <resource: #canvas>
+
+ ^
+
+ #(#FullSpec
+ #window:
+ #(#WindowSpec
+ #name: 'Define Color'
+ #layout: #(#LayoutFrame 154 0 369 0 493 0 488 0)
+ #label: 'Define Color'
+ #min: #(#Point 340 110)
+ #max: #(#Point 1152 900)
+ #bounds: #(#Rectangle 154 369 494 489)
+ #usePreferredExtent: false
+ )
+ #component:
+ #(#SpecCollection
+ #collection:
+ #(
+ #(#VerticalPanelViewSpec
+ #name: 'VerticalPanel1'
+ #layout: #(#LayoutFrame 0 0.0 0 0.0 60 0 -32 1.0)
+ #component:
+ #(#SpecCollection
+ #collection:
+ #(
+ #(#LabelSpec
+ #name: 'RedLabel'
+ #label: 'Red:'
+ #translateLabel: true
+ #adjust: #right
+ #extent: #(#Point 60 27)
+ )
+ #(#LabelSpec
+ #name: 'GreenLabel'
+ #label: 'Green:'
+ #translateLabel: true
+ #adjust: #right
+ #extent: #(#Point 60 28)
+ )
+ #(#LabelSpec
+ #name: 'BlueLabel'
+ #label: 'Blue:'
+ #translateLabel: true
+ #adjust: #right
+ #extent: #(#Point 60 27)
+ )
+ )
+ )
+ #horizontalLayout: #fit
+ #verticalLayout: #fit
+ #horizontalSpace: 3
+ #verticalSpace: 3
+ )
+ #(#VerticalPanelViewSpec
+ #name: 'VerticalPanel2'
+ #layout: #(#LayoutFrame 60 0 0 0.0 -160 1.0 -32 1.0)
+ #component:
+ #(#SpecCollection
+ #collection:
+ #(
+ #(#SliderSpec
+ #name: 'RedSlider'
+ #model: #red
+ #orientation: #horizontal
+ #stop: 255
+ #step: 1
+ #backgroundColor: #(#Color 100.0 0.0 0.0)
+ #extent: #(#Point 120 27)
+ )
+ #(#SliderSpec
+ #name: 'GreenSlider'
+ #model: #green
+ #orientation: #horizontal
+ #stop: 255
+ #step: 1
+ #backgroundColor: #(#Color 0.0 100.0 0.0)
+ #extent: #(#Point 120 28)
+ )
+ #(#SliderSpec
+ #name: 'BlueSlider'
+ #model: #blue
+ #orientation: #horizontal
+ #stop: 255
+ #step: 1
+ #backgroundColor: #(#Color 0.0 0.0 100.0)
+ #extent: #(#Point 120 27)
+ )
+ )
+ )
+ #horizontalLayout: #fit
+ #verticalLayout: #fit
+ #horizontalSpace: 3
+ #verticalSpace: 3
+ )
+ #(#VerticalPanelViewSpec
+ #name: 'VerticalPanel3'
+ #layout: #(#LayoutFrame -160 1 0 0.0 -120 1 -32 1.0)
+ #component:
+ #(#SpecCollection
+ #collection:
+ #(
+ #(#InputFieldSpec
+ #name: 'RedField'
+ #model: #red
+ #type: #numberInRange
+ #numChars: 3
+ #minValue: 0
+ #maxValue: 255
+ #extent: #(#Point 40 27)
+ )
+ #(#InputFieldSpec
+ #name: 'GreenField'
+ #model: #green
+ #type: #numberInRange
+ #numChars: 3
+ #minValue: 0
+ #maxValue: 255
+ #extent: #(#Point 40 28)
+ )
+ #(#InputFieldSpec
+ #name: 'BlueField'
+ #model: #blue
+ #type: #numberInRange
+ #numChars: 3
+ #minValue: 0
+ #maxValue: 255
+ #extent: #(#Point 40 27)
+ )
+ )
+ )
+ #horizontalLayout: #fit
+ #verticalLayout: #fit
+ #horizontalSpace: 3
+ #verticalSpace: 3
+ )
+ #(#LabelSpec
+ #name: 'PreviewBox'
+ #layout: #(#LayoutFrame -118 1 0 0.0 -2 1.0 -32 1.0)
+ #label: 'Preview'
+ #translateLabel: true
+ #level: -1
+ )
+ #(#HorizontalPanelViewSpec
+ #name: 'HorizontalPanel1'
+ #layout: #(#LayoutFrame 0 0.0 -32 1 0 1.0 0 1.0)
+ #component:
+ #(#SpecCollection
+ #collection:
+ #(
+ #(#ActionButtonSpec
+ #name: 'CancelButton'
+ #label: 'Cancel'
+ #translateLabel: true
+ #model: #cancel
+ #extent: #(#Point 165 26)
+ )
+ #(#ActionButtonSpec
+ #name: 'OKButton'
+ #label: 'OK'
+ #translateLabel: true
+ #model: #accept
+ #extent: #(#Point 166 26)
+ )
+ )
+ )
+ #horizontalLayout: #fitSpace
+ #verticalLayout: #fitSpace
+ #horizontalSpace: 3
+ #verticalSpace: 3
+ )
+ )
+ )
+ )
+! !
+
+!ColorMenu::DefineColor methodsFor:'accessing'!
+
+color
+
+ ^Color redByte: red value greenByte: green value blueByte: blue value
+
+!
+
+color: aColor
+
+ aColor notNil
+ ifTrue:
+ [
+ self red value: aColor redByte.
+ self green value: aColor greenByte.
+ self blue value: aColor blueByte.
+ ]
+
+! !
+
+!ColorMenu::DefineColor methodsFor:'aspects'!
+
+blue
+
+ blue isNil ifTrue:[
+ blue := 0 asValue
+ ].
+ ^blue
+!
+
+green
+
+ green isNil ifTrue:[
+ green := 0 asValue
+ ].
+ ^green
+!
+
+red
+
+ red isNil ifTrue:[
+ red := 0 asValue
+ ].
+ ^red
+! !
+
+!ColorMenu::DefineColor methodsFor:'startup / release'!
+
+postBuildWith:aBuilder
+
+ |updateBlock|
+
+ super postBuildWith:aBuilder.
+
+ updateBlock := [(builder componentAt: #PreviewBox) backgroundColor: self color].
+
+ red onChangeSend: #value to: updateBlock.
+ green onChangeSend: #value to: updateBlock.
+ blue onChangeSend: #value to: updateBlock.
+
+ updateBlock value
+
+
+! !
+
!ColorMenu class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg2/ColorMenu.st,v 1.14 1998-05-21 01:07:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg2/ColorMenu.st,v 1.15 1998-08-06 14:20:51 tz Exp $'
! !