haloアイコン

http://d.hatena.ne.jp/propella/20070110/p1 に感化されて、Squeak 3.9のhaloアイコンを変えてみたメモ。アイコンはパクリなので配布できませんが(一部自作)...

Preferencesブラウザで alternateHandlesLook をfalse(チェックをはずす)にする

次のSmalltalkで用意したアイコン画像(icon.png)をキー名(#k-Halo)に登録する。

ScriptingSystem saveForm: (Form fromFileNamed: 'icon.png') atKey: #'k-Halo'

PreferencesブラウザでhaloThemeとして、customをチェックして、'edit custom halos'を選ぶ。出てきたSystem BrowserでPreferences>>customHaloSpecsを編集する。色指定をtransparentにして、上記のkey名を編集する。

編集例:

	customHaloSpecs
	^ #(
	"  	selector				horiz		vert			color info						icon key
		---------				------		-----------		-------------------------------		---------------"
	(addCollapseHandle:		left			topCenter		(transparent)							'k-Halo-Collapse')
	(addPoohHandle:			right		center			(white)							'Halo-Pooh')
	(addDebugHandle:		right		topCenter		(transparent)		'k-Halo-Debug')
	(addDismissHandle:		left			top				(transparent)			'k-Halo-Dismiss')
	(addRotateHandle:		left			bottom			(transparent)							'k-Halo-Rot')
	(addMenuHandle:		leftCenter	top				(transparent)							'k-Halo-Menu')
	(addTileHandle:			left			bottomCenter	(transparent)					'k-Halo-Tile')
	(addViewHandle:			left			center			(transparent)							'k-Halo-View')
	(addGrabHandle:			center		top				(transparent)							'k-Halo-Grab')
	(addDragHandle:			rightCenter	top				(transparent)							'k-Halo-Drag')
	(addDupHandle:			right		top				(transparent)							'k-Halo-Dup')	
	(addMakeSiblingHandle:	right		top				(transparent)				'k-Halo-Dup')	
	(addHelpHandle:			center		bottom			(lightBlue)						'Halo-Help')
	(addGrowHandle:		right		bottom			(transparent)						'k-Halo-Scale')
	(addScaleHandle:		right		bottom			(transparent)					'k-Halo-Scale')
	(addScriptHandle:		rightCenter	bottom			(green muchLighter)			'Halo-Script')
	(addPaintBgdHandle:		right		center			(transparent)						'k-Halo-Paint')
	(addViewingHandle:		leftCenter	bottom			(transparent)				'k-Halo-View')
	(addRepaintHandle:		right		center			(transparent)						'k-Halo-Paint')
	(addFontSizeHandle:		leftCenter	bottom			(lightGreen)						'Halo-FontSize')
	(addFontStyleHandle:		center		bottom			(lightRed)						'Halo-FontStyle')
	(addFontEmphHandle:	rightCenter	bottom			(lightBrown darker)				'Halo-FontEmph')
	(addRecolorHandle:		right		bottomCenter	(transparent)				'k-Halo-Recolor')
	(addChooseGraphicHandle:	right	bottomCenter	(green muchLighter)			'Halo-ChooseGraphic')
		) 

HaloMorph>>createHandleAt: を次のように修正する。

HaloMorph>>createHandleAt: aPoint color: aColor iconName: iconName 
	| bou handle |
	bou := Rectangle center: aPoint extent: self handleSize asPoint.
	Preferences alternateHandlesLook
		ifTrue: [
			handle := RectangleMorph newBounds: bou color: aColor.
			handle borderWidth: 1.
			handle useRoundedCorners.
			self setColor: aColor toHandle: handle]
		ifFalse: [handle := EllipseMorph newBounds: bou color: aColor.handle borderWidth: 0.].
HaloMorph>>handleSize
	^ Preferences biggerHandles
		ifTrue: [32]
		ifFalse: [16]