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]