2011年2月12日土曜日

Cocoa ObjC Spaces 起動中のアプリケーション一覧

現在起動中のアプリケーションの一覧を、NSViewに表示する。

なんとかここまでできた。

起動中のアプリケーションを得るのは簡単。
-(void)setRunningApp{
 NSWorkspace *ws=[NSWorkspace sharedWorkspace];
 NSArray* ra=[ws runningApplications];
 
 for(NSRunningApplication* app in ra){
  if([app activationPolicy]==NSApplicationActivationPolicyRegular){
   SPApp *sp=[[SPApp alloc] initWithRunningApp:app];
   
   [_spAppArray addObject:sp];
  
  }
 }
 
}


基本的なことは下の2行だけで可能。
NSWorkspace *ws=[NSWorkspace sharedWorkspace];
NSArray* ra=[ws runningApplications];

この辺のことは以前MacRubyでやった経過を書いている。

MacRuby・Snatcher・タスクセレクタ(2)

今回はメニューに表示するわけではなく、Viewの勉強を兼ねて自分でなんとかしてみよう、と努力している。

現在のところ、

1,MyControllerがアプリの一覧を保持
2,アプリ1個分のデータ(名前、アイコン、PID)を受け取ってそれをボタン風に表示するためのView
3,上のViewをsubViewとして受け取って、表示する基本のView

という3つクラスに分けている。xcatsan師匠の「ThinButton」シリーズ(現在師匠のページが重くて表示できず、リンクははれません)を参考にしながら作業してみた。

アプリの一覧のデータをコントローラが持つのがいいのか、基本のViewが持っていてボタン風のViewを生成するのがいいのか、あれこれ悩みながら試行錯誤。せっかくクラスをわけて作るのだから、できるだけ相互依存のない状態にして役割分担をはっきりさせたほうがいいと思うのだけど・・・初心者はその辺の判断に苦しむ。

最初の画像の状態まで表示することはできたけど、コードはあまりにも稚拙で汚い(座標の数値とかもろに数字で書いているし)ので割愛。

でもCocoaプログラミングはおもしろいなー。もっと詳しく知りたいなー、と思う。

0 件のコメント:

コメントを投稿