rcmdnk's blog

settings_keys

AutoHotkeyで作ってるvim_ahkの設定画面をタブ化しました。

vim_ahk

vim_ahkはAutoHotkeyのスクリプトで、Windows上のどこでも H/J/K/L で移動したりY/PでコピペしたりするVimチックな動きを 再現するためのスクリプトです。

exeファイルを直接使えばAutoHotkeyがインストールされてない環境でも動きます。

設定画面のタブ化

settings_keys settings_applications settings_status settings_configuration

こんな感じで設定画面をタブ化しました。

設定が多くなってくると設定画面が長くなってしまい、 あまり長いとそのままだとウィンドウをはみ出るようになるので なんとか整理しないとと思ってましたがタブ化で見た目もより設定画面ぽくなって良いのでは、と。

設定画面に余裕が出来たので、 最後のConfigurationタブにあるように、新たに設定ファイルのImport/Export機能も追加してみました。

タブ化の方法

AutoHotkeyではGUIのコントロール部品が用意されていて比較的簡単にGUIを作ることができます 1

この中に TabというGUIのコントロール部品があるので 思ったより簡単に出来ました。 Tab/Tab2/Tab3と3種類ありますが、基本的にはTab3がTab/Tab2であった問題を解決して進化したバージョンになってるので Tab3を使っておけばOK。

1
Tab := MyObj.Add("Tab3", "X+0 Y+0 W480 H360", ["First", "Second", "Third"])

の様な感じで、Tab3コンポーネントを、位置(この場合はX+0 Y+0で前のコンポーネントの右下位置からそのまま開始)と幅と高さ(W480 H360)を指定して、 最後に各タブの名前をリストで指定するだけでタブが作れます。

各タブの中身を作るには

1
2
3
4
5
Tab.UseTab(1)
MyObj.AddText("X+0 Y+0 Section", "")

MyObj.AddText("XS+10 Y+20", "This is the first tab.")
...

のようにUseTab(N)でタブを指定して後は通常通りコンポーネントを追加していきます。 Nは1から始まるのでちょっと注意。(上の場合は1: First, 2: Second, 3: Thirdのタブになります。)

タブの中だとX10などで指定した際、ウィンドウの左端からの距離になってタブの枠分位値の調整が難しくなるので、 タブを開始した直後に幅高さゼロのSection用の疑似テキストをアンカーとして置いて、 XSYSを使うことでタブの左上の位置からの距離を使えるようにしておくと便利です。

この後にTab.UseTab(2)とすればそこからSecondタブの中身を追加していくことができます。

X+0の様な前のコンポーネントとの相対位置の開始位置はUseTabを使うとタブのそのタブの左上の位置にリセットされます。

また、タブ終了はUseTab()と数字無しで指定するとタブ外に行きますが、 その後タブの下にさらにコンポーネントを追加するには

1
2
3
4
5
6
Tab.UseTab()

Tab.GetPos(&tabX, &tabY, &tabW, &tabH)
underTab := tabY + tabH + 10

MyObj.AddText("X15 Y" underTab, "Text under the tab.")

みたいに、GetPosでタブの位置とサイズを取得して、 タブの下限位置を取得してその下に良しなにコンポーネントを追加していく感じにすると いい感じにタブの下にコンポーネントを追加できます。

Sponsored Links
  1. 表示を作るのは簡単ですが、動作を結びつける方法がちょっと最初はわかりにくいかもしれません。

Sponsored Links

« Oura Ring 4購入

}