Mitaka Plusでは、 スクリプトによって自由にメニューやツールバーの内容を編集することができます。 実際、初期状態のMitaka Plusのメニューやツールバーもすべてスクリプトファイル scripts/gui_jp.lua によって生成されています。スクリプトによってメニューやツールバーがどのように定義されているかは、このスクリプトファイルを参考にすると良いでしょう。
メニューやツールバーで実行する内容は、アクション(MenuActionオブジェクト)として定義します。アクションにはタイトルやアイコンが設定でき、メニューやツールバーに項目としてアクションを登録すると、そのタイトルのメニューやツールボタンが表示されます。アクションにはスクリプトを設定することができ、メニューやツールボタンが選択されるとこのスクリプトが実行されます。また、アクションには天体の表示・非表示など2つの状態を設定することができ、あらかじめ設定したスクリプトによる条件判断でこの状態をメニューやツールボタン上に表現することができます。このようにアクションはメニューとツールバーの両方に使えることから、同じ機能をメニューとツールバーの両方に共有させることができます。
次の例では、menuの子階層に"恒星の表示(&S)"というタイトルのメニュー(アクション)を作成し、これをstarToggleActionという変数に代入しています。 2つめの引数のスクリプトが恒星の表示切り替えスクリプト、3つめの引数がアクションの状態を判断する条件スクリプトです。
starToggleAction = menu:addAction("恒星の表示", "Stars:toggle();", "Stars.visible;");
次の例では、このアクションにアイコンファイルicons/star.pngとショートカットキー"S"を設定しています。
starToggleAction:setIcon("icons/star.png");
starToggleAction:setShortcut("S");
以上をまとめて下記のように一行で書くこともできます。
starToggleAction = menu:addAction("恒星の表示", "Stars:toggle();", "Stars.visible;"):setIcon("icons/star.png"):setShortcut("S");
次の例では、アクションをツールバーに追加して、同じ機能を持つツールボタンにしています。
toolBar:addAction(starToggleAction);
メニューオブジェクト(MenuItemオブジェクト)は、メインウィンドウのメニューバーに並ぶメニューや、そのサブメニューを表すオブジェクトです。メニューオブジェクトには子階層としてメニューオブジェクト、アクション、区切り線のいずれかを追加できます。メニューの最上位階層はGUIオブジェクトになります。
次の例では、メインウィンドウに[編集]メニューを追加し、その下に[状態の保存]と[状態の復帰]アクション(メニュー)を追加しています。なお、アクションやメニューオブジェクトのタイトル文字列内では、&記号に続く文字は下線表記され、親メニュー選択時のショートカットキーとして設定されます。
menuEdit = GUI:addMenu("編集(&E)");
menuEdit:addAction("状態の保存(&C)", "State:store();");
menuEdit:addAction("状態の復帰(&V)", "State:restore();");
ツールバーオブジェクト(ToolBarオブジェクト) は、メインウィンドウのツールバーに並ぶ移動可能な一つのツールバーを表すオブジェクトです。ツールバーオブジェクトには子階層としてアクション、区切り線のいずれかを追加できます。ツールバーオブジェクトはGUIオブジェクトに追加することで作成します。
次の例では、メインウィンドウに[状態]ツールバーを追加し、その中に[状態の保存]と[状態の復帰]のアクション(ツールボタン)を追加しています。
toolBarState = GUI:addToolBar("状態");
toolBarState:addAction("状態の保存(&C)", "State:store();");
toolBarState:addAction("状態の復帰(&V)", "State:restore();");