Swift

Swift:NSToolbarソースコード2

実際の使用に合わせて修正しました。表題はNSToolbarになっていますが、実態はNSOpenPanelに関わる修正です。

ソースコードはここにあります。主な修正点は次のとおりです。

  • いずれ、ファイル名とフォルダまでのpathに分けて表示する必要があるので、その処理をするメソッドをクラスの外側に切り出しました。
  • NSOpenPanelの処理もクラスの外側に切り出しました。NSWindowをパラメタ渡しにしてみたのですが、うまくいかないので、キャンセルはメイン側で判別・処理することにしました。
  • 処理対象のファイル数をひとつにするか、複数にするか迷いがあるのですが、単純化してひとつにする方針がよいかなあ、とぼんやり考えています。そのため、サンプルプログラムもひとつにしました。

次のような勘違いがありました。これにはすっかり混乱させられました。まだまだ修行が足りません。

  • NSOpenPanelでキャンセルのときxbWindow.close()を使い、次にアプリが再開されたときにxbWindow.display()を使うのかと思っていたのですが、全くそうではありませんでした。
  • xbWindow.close()で開いているwindowを閉じるというのは適切です。このあと、applicationShouldTerminateAfterLastWindowClosedでfalseの処理になります。
  • そのあと再開するとき、Dockのアプリアイコンを叩くとapplicationShouldHandleReopenがキックされ、そのあと自動的にwindowが開きます。
  • メニュのOpen fileを叩いたときも、このIBActionが動くようにしておけばいいのかなあと思っています。
  • 重要なことを忘れていました。awakeFromNibの中でアプリの初期処理としてのNSOpenPanelの処理ExecSetPicturePath()を実行するとなぜかうまく行きません。applicationDidFinishLaunchingの中に移したらOKになりました。

Categories: Swift, 技術