[SML 7993] Re: 第40回Smalltalk勉強会@京都

hirowadenden hirowadenden @ hera.eonet.ne.jp
2012年 2月 3日 (金) 18:56:29 JST


ハンドル名で失礼します、hirowadendenと申します。
yellow button menuからsource dataを切り替える部分を勉強会とは異なる
方法でやってみたので投稿します。

妹尾さん執筆の勉強会ログの5ページの真ん中あたりの
FourierPaneController>>yellowButtonMenu
	^nil
を追加するところまでは同じです。
(勉強会ログでは、yellowButtonPressedEventとなっていますが、 
yellowButtonMenuですよね?)

そのあとは、以下のFourierPaneModel>>yellowButtonMenuと
Fourier1dModel>>yellowButtonMenuを追加します。
(GUIビルダは使いません)

FourierPaneModel>>yellowButtonMenu
	^self application ifNotNil: [:anApplication | anApplication 
yellowButtonMenu] ifNil: [super yellowButtonMenu]


Fourier1dModel>>yellowButtonMenu
	| labels values |
	labels := OrderedCollection new.
	values := OrderedCollection new.
	(self defaultFourierTransformClass class organization 
listAtCategoryNamed: #data) do:
			[:aSelector |
			| aStream aString |
			aStream := String new writeStream.
			aSelector asString do:
					[:aCharacter |
					aCharacter isLowercase
						ifTrue: [aStream nextPut: aCharacter]
						ifFalse:
							[aStream
								space;
								nextPut: aCharacter]].
			aString := aStream contents.
			aStream close.
			aString := aString copyFrom: (aString findFirst: [:aCharacter | 
aCharacter = Character space]) + 1
						to: aString size.
			labels add: aString.
			values add: [self setSourceData: (self defaultFourierTransformClass 
perform: aSelector)]].
	^Menu labelArray: labels asArray values: values asArray


以上です。

-- hirowadenden


SML メーリングリストの案内