こんにちは、くろがきです。
以前に、「外部エディタから簡単にIgor Proのプロシージャファイルを編集する方法」についての記事をあげました。
お気に入りのエディタからIgor Proのプロシージャファイルを編集できるのはいいのですが、一つモヤモヤした点がありました。
それは
コンパイルをするためにIgor Pro側のCompileボタンを押す必要がある
という点でした。
Igor Proの内部エディタを使用する際は、内部エディタの下部にCompileボタンが付いているので、そんなに手間には感じませんでした。
ですが、外部エディタで編集する際には、わざわざ一度内部エディタに戻ってCompileボタンを押すか、メニューからCompileボタンを押す必要があります。
これがひと手間増えて、結構面倒に感じていました。
そこで、なんとかIgor側に戻らず、Compileボタンを押す方法がないかと模索した結果、いくつかの解決策を見つけたので、まとめておきたいと思います。
1.Keyboard Maestroでマクロを作成する(メニューバーアイテム)
Mac限定の手段にはなりますが、Keyboard Maestroというアプリでマクロを作成することで、コマンド操作やショートカットでCompileボタンにアクセスできるようになります。
①メニューバーアイテムを選択する
Keyboard Maestroでは特定のアプリのメニューバーを選択したり、ウィンドウ内のボタンを押したりするマクロを作成できます。
今回はその機能を利用することにします。
使用するアクションは「Select or Show a Menu Item」です。
「Select or Show a Menu Item」をアクションに追加すると下記のように表示されます。
右中央あたりにある「Menu」をクリックすると下記のように立ち上がっているアプリが表示されます。
「Igor64」にカーソルを合わせるとメニューバーの項目が表示されるので「Compile」を選びます。
プロシージャファイルを編集して、Compileボタンが出現した状態であれば、「Compile」を選択できるはずです。
そうすると、Igro Proが選択され、「Menu Title」と「Menu Item」の値が自動で入力されます。
これでマクロを実行すれば、Compileしてくれるはずです。
②条件分岐させる
ですが、ここで少し問題が生じます。
それは、メニューバーのCompileボタンは、プロシージャが編集されたときだけ出現するのです。
Compileが必要ないときにはIgor内のマクロ名が並んでいて、Keyboard Maestroで作成したマクロがエラーを吐きます。
これが気になる方は、条件分岐を設定しましょう。
条件分岐のためのアクションは「If Then Else」です。
「If Then Else」の設定項目は下記のようになっています。
まずは、「Add Condition」で「Menu Condition」を選択します。
そのあとは下記の通りに記載します。
- with path(プルダウンから選択)
- 「Macros > Compile」(テキスト入力)
- exists(プルダウンから選択)
そして「execute the following actions」に①で作成したコンパイルボタンを押すマクロをおきます。
パスの書き方はいくつかあるようです。
Keyboard Maestro Wikiに書き方があるので、ご参照ください。
そして、マクロがきちんと動作しているかを確認できるようにポップアップも出るように設定しておきます。(お好みでどうぞ)
ここまでの全体像は下記のような感じになりました。
なお、「ポップアップが出ないんだけど…」という方は、「システム設定」→「通知」で下記の2つに通知を許可してください。
- Keyboard Maestro
- Keyboard Maestro Engine
これで「Display Text」の内容が、画面に右上に出てくるはずです。
③エラーを回避する
これで完成!と思いきや、もうひと工程必要です。
実はこのままマクロを実行しても、エラーを吐くケースがあります。
いろいろとトライ&エラーをしていると原因がわかりました。
どうも、プロシージャファイルを編集したあと、メニューバーからコンパイルしようとした際、「Macros」をクリックするまでは内部的にCompileボタンが存在していないような感じでした。
そのため、「Complieボタンが存在するとき」という条件がうまく処理できていないようでした。
ですが、一度「Macros」をクリックするとCompileボタンが出てくるので、その処理を追加してみます。
もう一度「Select or Show a Menu Item」を利用します。
このアクションで、今度は「Menu」→「Igor64」→「Macros」と選びます。
メニューアイテムまでは選ばなくてOKです。
すると下記のようになると思います。
このアクションをマクロ全体の先頭に追加します。
すると一度メニューバーの「Macros」がクリックされた状態となり、エラーなくマクロ全体が機能するようになります。
「Macros」を選びっぱなしも気持ち悪いので、「Type a Keystroke」で「Escape」しておきます。
ここまでのマクロ全体の示します。
④マクロのトリガーを設定
最後にマクロの呼び出し方法を設定しておきましょう。
手軽にホットキーを設定してもいいですし、Keyboard Maestro内のマクロ「Trigger Macro by Name」を呼び出して、マクロ名で検索してもOKです。
AppleScriptでKeyboard Maestroのマクロを呼び出す事もできるので、AppleScript経由でAlfredから実行するのもいいでしょう。
ということで、ここではいったん「F6」をホットキーとしてトリガーに設定しました。
2.Keyboard Maestroでマクロを作成する(ボタンクリック)
1では確実性を重視してメニューバーからコンパイルを試みましたが、もっと単純に内部エディタのCompileボタンを押すやり方もあります。
Igor Proでマクロ作成しているときは、おそらく何かしらのプロシージャウィンドウを開いていると思います。
この際、保存済みの自作マクロであればipfファイルになっていると思います。
その場合、プロシージャウィンドウの名前にも「ipf」が含まれているので、これを利用します。
①任意のipfファイルを最前面に移動する
まず「Bring a Window to the Front」アクションを追加します。
すると下記のような画面が出てくると思います。
ここで下記のように設定します。
- Bring to front
- windows with title containing 「ipf」
- Igro64
これでipfファイルがあれば、アクティブになるはずです。
②Compileボタンを押す
「Press a Button」アクションを追加し、Press button namedに「Title:Compile」と入力します。
これで内部エディタのCompileボタンを押すマクロが完成です。
最初はこの方法でコンパイルすることを考えていたのですが、
- 必ずしもプロシージャウィンドウがあるとは限らない
- 新規プロシージャウィンドウには「ipf」が含まれない
などの理由から、状況次第では機能しないマクロになると思ったので、より確実なメニューバーからのコンパイルを選択しました。
とはいえ、どちらの方法も割とゴリ押し感はありますね。
まとめ
この記事では、Keyboard Maestroを使ってIgor Proのコンパイルをコマンド操作やホットキーから行う方法についてご紹介しました。
プログラミングをしていると、マウスやトラックパッドを使わないとコンパイルできないのは結構手間だったりします。
Igor Pro側にはコンパイルするためのショートカットはなさそうな感じだったで、できるだけ楽にコンパイルしようと思うと今回のような力技にならざるを得ない気がします。
とはいえ、今回始めてKeyboard Maestroに触ってみたのですが、かなりいろいろなことができそうなアプリでした。
特にアプリのボタンやメニューバーアイテムにアクセスすることができるので、いろいろな操作を自動化できそうな気がします。
Keyboard Maestroも、もう少しいろいろ触っていたいと思います。
かなりマイナーな話題でしたが、皆さんの参考になると幸いです。