PyObjCでメニューバーアプリ〜Color Pickerを作る4〜
投稿日:2008/03/28 01:43:22
過去の記事は移行時の問題により、画像が表示されなかったり、レイアウトが崩れたりしている可能性があります。
Tweet
今回の課題は、「メニューバーのメニューにカラーサンプルと16進数値を表示する」です。
こんな感じで、
別に簡単そうな話なんですが、ちょっと技が必要でした。
単純にメニューの一番上にメニュー項目を追加していくだけであれば、
[python]
newitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
colorDict.keys()[0], objc.nil, '')
self.statusMenu.insertItem_atIndex_(newitem, 0)[/python]
こんな感じで、NSMenuItemのインスタンスをNSMenu(ここではself.statusMenu)に突っ込むだけですが、
左側にサラーサンプルを表示したい場合ちょっとやっかいです。
実は、左に表示するのが、画像ファイルなら簡単にできるんです。
[python]# newitemImageはあらかじめ作ったNSImageのインスタンス
newitem.setImage_(newitemImage)[/python]
という風にNSMenuに突っ込む前に、setImage_で画像を指定します。
今回は、画像ではなくて、その色で塗りつぶされた四角形を表示したいです。
画像が指定できるんであれば、四角形を画像っぽいものにしたらいいというわけで、
ここで使えるのが、NSCustomImageRepというクラス。
[python]
customRep = NSCustomImageRep.alloc().initWithDrawSelector_delegate_(self.drawImage, self)
newitemImage = NSImage.alloc().initWithSize_((16.0, 16.0)) # サイズだけ指定してNSImageをつくる
newitemImage.addRepresentation_(customRep)
newitem.setImage_(newitemImage)
def drawImage(self, sender):
"""
CumtomImageRepが使用する描画メソッド
"""
### 塗る色を指定(self.colorはNSColorクラスのインスタンス)
self.color.setFill()
### 上で指定した色で塗る
NSBezierPath.fillRect_(((0.0, 0.0), (16.0, 16.0)))
[/python]
NSBezierPathを使って塗りつぶされた四角形を作ってそれを画像として使います。
これでNSMenuに突っ込めるようになりました。
Cocoaはほんと便利です。
次回に続く。多分次はクリップボードにコピーするあたり。
別に簡単そうな話なんですが、ちょっと技が必要でした。
単純にメニューの一番上にメニュー項目を追加していくだけであれば、
[python]
newitem = NSMenuItem.alloc().initWithTitle_action_keyEquivalent_(
colorDict.keys()[0], objc.nil, '')
self.statusMenu.insertItem_atIndex_(newitem, 0)[/python]
こんな感じで、NSMenuItemのインスタンスをNSMenu(ここではself.statusMenu)に突っ込むだけですが、
左側にサラーサンプルを表示したい場合ちょっとやっかいです。
実は、左に表示するのが、画像ファイルなら簡単にできるんです。
[python]# newitemImageはあらかじめ作ったNSImageのインスタンス
newitem.setImage_(newitemImage)[/python]
という風にNSMenuに突っ込む前に、setImage_で画像を指定します。
今回は、画像ではなくて、その色で塗りつぶされた四角形を表示したいです。
画像が指定できるんであれば、四角形を画像っぽいものにしたらいいというわけで、
ここで使えるのが、NSCustomImageRepというクラス。
[python]
customRep = NSCustomImageRep.alloc().initWithDrawSelector_delegate_(self.drawImage, self)
newitemImage = NSImage.alloc().initWithSize_((16.0, 16.0)) # サイズだけ指定してNSImageをつくる
newitemImage.addRepresentation_(customRep)
newitem.setImage_(newitemImage)
def drawImage(self, sender):
"""
CumtomImageRepが使用する描画メソッド
"""
### 塗る色を指定(self.colorはNSColorクラスのインスタンス)
self.color.setFill()
### 上で指定した色で塗る
NSBezierPath.fillRect_(((0.0, 0.0), (16.0, 16.0)))
[/python]
NSBezierPathを使って塗りつぶされた四角形を作ってそれを画像として使います。
これでNSMenuに突っ込めるようになりました。
Cocoaはほんと便利です。
次回に続く。多分次はクリップボードにコピーするあたり。
- Posted at:
- 2008/03/28 01:43:22
- 0 Comments
- 0 TrackBacks
- Tags:
- Trackback:
- http://blog.monospace.jp/2008/03/28/pyobjc_color_picker04/trackback/
TrackBacks
まだ登録されていません。
Comments
まだ登録されていません。