--- nono/wx/wxmainframe.h 2026/04/29 17:05:04 1.1.1.11 +++ nono/wx/wxmainframe.h 2026/04/29 17:05:08 1.1.1.12 @@ -4,6 +4,10 @@ // Licensed under nono-license.txt // +// +// メインウィンドウ +// + #pragma once #include "wxnono.h" @@ -11,98 +15,6 @@ #include "vm.h" #include -enum { - // ID は 0 から (wxID_LOWEST = 5000 未満まで) 使えるっぽい。 - // メニュー ID はメニュー ID 内で一意という制約があるだけ。 - // メニュー ID のうちウィンドウのオープン状態を維持する必要があるものは - // (ID が 0 から使えるのなら) 0 から割り当てて配列で管理してしまうのが - // 手っ取り早い。 - // ウィンドウに割り当てるウィンドウ ID とメニューイベントで飛んでくる - // メニュー ID は互いに干渉しないはずなので、同じ値を使うことでメニューと - // ウィンドウの紐付けをする。 - // - // ウィンドウ(サブウィンドウ)は細かくは以下のように4つに分類できるが、 - // 処理上区別が必要なのは A. (デバッガの show コマンドとも共用できる - // サブウィンドウ) とそれ以外のサブウィンドウだけ。 - // - // -----------+------------+---- - // モニター | テキスト | A. 単純なテキストモニタウィンドウ - // ウィンドウ | モニター | (SPC, MFP などのデバイスのモニター) - // | ウィンドウ +---- - // | | B. それ以外のテキストモニターウィンドウ - // | | (ログ、メモリのように表示位置があるもの、 - // | | CMMU のように構造があるもの) - // +------------+---- - // | それ以外の | C. ビデオモニターウィンドウなど - // | モニター | (ビットマッププレーン、TVRAM など) - // | ウィンドウ | - // -----------+------------+---- - // それ以外のウィンドウ | D. ソフトウェアキーボードウィンドウなど - // ------------------------+---- - - ID_SUBWIN_END_DUMMY = ID_SUBWIN_END, - - // ここから (ウィンドウでない)メニュー ID - ID_RESTART_VM, - ID_FULL_SPEED, - - ID_INPUT_START, - ID_INPUT_CHAR, - ID_INPUT_JP, - ID_INPUT_END, - - ID_SCALE_START, - ID_SCALE_1_00, - ID_SCALE_0_75, - ID_SCALE_0_50, - ID_SCALE_END, - - ID_FONTSIZE_START, // START 以降は fontsize_t と同じ順に並べること - ID_FONTSIZE_12, - ID_FONTSIZE_16, - ID_FONTSIZE_END, - - ID_MONRATE_START, - ID_MONRATE_20, - ID_MONRATE_5, - ID_MONRATE_1, - ID_MONRATE_END, - - ID_SHOW_STATPANEL, - - // CD/MO (リムーバブルデバイス) - ID_CD_INSERT_0, - ID_CD_INSERT_1, - ID_CD_INSERT_2, - ID_CD_INSERT_3, - ID_CD_INSERT_4, - ID_CD_INSERT_5, - ID_CD_INSERT_6, - ID_CD_INSERT_7, - ID_CD_EJECT_0, - ID_CD_EJECT_1, - ID_CD_EJECT_2, - ID_CD_EJECT_3, - ID_CD_EJECT_4, - ID_CD_EJECT_5, - ID_CD_EJECT_6, - ID_CD_EJECT_7, - ID_CD_FORCE_0, - ID_CD_FORCE_1, - ID_CD_FORCE_2, - ID_CD_FORCE_3, - ID_CD_FORCE_4, - ID_CD_FORCE_5, - ID_CD_FORCE_6, - ID_CD_FORCE_7, - - ID_MOUSEMODE, - ID_RESET_BUTTON, -}; -#define ID_CD_INSERT(id) (ID_CD_INSERT_0 + (id)) -#define ID_CD_EJECT(id) (ID_CD_EJECT_0 + (id)) -#define ID_CD_FORCE(id) (ID_CD_FORCE_0 + (id)) - class WXMainFrame : public wxFrame { using inherited = wxFrame; @@ -113,6 +25,8 @@ class WXMainFrame : public wxFrame // (設定反映などの) 初期化 bool Init(); + bool Layout() override; + // ウィンドウをリストから削除する。 // ウィンドウをクローズする際に呼び出すこと。 void DeleteWindow(wxWindow *); @@ -162,6 +76,9 @@ class WXMainFrame : public wxFrame void OnMouseMode(wxCommandEvent& event); void OnMouseModeUI(wxUpdateUIEvent& event); void OnResetButton(wxCommandEvent& event); + void OnNMIButton(wxCommandEvent& event); + void OnKeyboardConnect(wxCommandEvent& event); + void OnKeyboardConnectUI(wxUpdateUIEvent& event); void OnWindow(wxCommandEvent&); void DoWindow(int id, bool enable);