|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2018 [email protected] ! 4: // ! 5: ! 6: #pragma once ! 7: ! 8: #include <array> ! 9: ! 10: enum { ! 11: // ID は 0 から (wxID_LOWEST = 5000 未満まで) 使えるっぽい。 ! 12: // メニュー ID はメニュー ID 内で一意という制約があるだけ。 ! 13: // メニュー ID のうちウィンドウのオープン状態を維持する必要がある ! 14: // ものはリスト(なり配列なり)で管理したいが、ID が 0 から使えるのなら ! 15: // 0 から割り当てて配列で管理してしまうのが手っ取り早い。 ! 16: // ウィンドウに割り当てるウィンドウ ID とメニューイベントで飛んでくる ! 17: // メニュー ID は互いに干渉しないはずなので、同じ値を使ってメニューと ! 18: // ウィンドウの紐付けをする。 ! 19: ! 20: // ウィンドウ ID (メニュー ID としても使う) ! 21: // wxmainframe.cpp 末尾の monitor_names[] と一致させること ! 22: WinID_Start = 0, ! 23: WinID_MONITOR_LOG = WinID_Start, ! 24: WinID_MONITOR_SCHEDULER, ! 25: WinID_MONITOR_MPUREG, ! 26: WinID_MONITOR_MPUATC, ! 27: WinID_MONITOR_MPUBRHIST, ! 28: WinID_MONITOR_MEMDUMP, ! 29: WinID_MONITOR_MFP, ! 30: WinID_MONITOR_SPC, ! 31: WinID_MONITOR_RTC, ! 32: WinID_MONITOR_SIO, ! 33: WinID_MONITOR_LCD, ! 34: WinID_MONITOR_LANCE, ! 35: WinID_MONITOR_BITMAP, ! 36: WinID_MONITOR_BITMAP0, ! 37: WinID_MONITOR_NETDRIVER, ! 38: WinID_SOFTKEY, ! 39: ! 40: // ウィンドウ ID ここまで。 ! 41: WinID_MAX, ! 42: ! 43: // ここからそれ以外の ID ! 44: ID_FULL_SPEED = WinID_MAX, ! 45: ID_SCALE_START, ! 46: ID_SCALE_1_00, ! 47: ID_SCALE_0_75, ! 48: ID_SCALE_0_50, ! 49: ID_SCALE_END, ! 50: ! 51: ID_FONTSIZE_START, // START 以降は fontsize_t と同じ順に並べること ! 52: ID_FONTSIZE_12, ! 53: ID_FONTSIZE_16, ! 54: ID_FONTSIZE_24, ! 55: ID_FONTSIZE_END, ! 56: }; ! 57: ! 58: class WXMainFrame ! 59: : public wxFrame ! 60: { ! 61: typedef wxFrame inherited; ! 62: public: ! 63: WXMainFrame(wxWindow *); ! 64: virtual ~WXMainFrame(); ! 65: ! 66: // ウィンドウをリストから削除する。 ! 67: // ウィンドウをクローズする際に呼び出すこと。 ! 68: void DeleteWindow(wxWindowID id); ! 69: ! 70: // VM からの電源オフコールバック ! 71: void PowerOffCallback(); ! 72: ! 73: // モニタウィンドウ識別名一覧 ! 74: // (引数 -M で指定されるやつ) ! 75: static const char *monitor_names[WinID_MAX]; ! 76: ! 77: // 起動時にオープンするモニタウィンドウの一覧 ! 78: static std::array<bool, WinID_MAX> monitor_start; ! 79: ! 80: private: ! 81: void OnCreate(wxCommandEvent& event); ! 82: ! 83: void OnFullSpeed(wxCommandEvent& event); ! 84: void OnFullSpeedUI(wxUpdateUIEvent& event); ! 85: ! 86: void OnExit(wxCommandEvent&); ! 87: ! 88: void OnMenuScale(wxCommandEvent& event); ! 89: void OnMenuScaleUI(wxUpdateUIEvent& event); ! 90: void OnMenuFontSize(wxCommandEvent& event); ! 91: void OnMenuFontSizeUI(wxUpdateUIEvent& event); ! 92: ! 93: void OnWindow(wxCommandEvent&); ! 94: void DoWindow(int id, bool enable); ! 95: void OnWindowUI(wxUpdateUIEvent&); ! 96: ! 97: // ウィンドウをリストに追加する。 ! 98: void AddWindow(int id, wxWindow *); ! 99: ! 100: // 指定 ID のサブウィンドウがリストにあれば true を返す ! 101: bool IsExistWindow(int id); ! 102: ! 103: // サブウィンドウリスト ! 104: wxWindow *windows[WinID_MAX] {}; ! 105: ! 106: wxDECLARE_EVENT_TABLE(); ! 107: }; ! 108: ! 109: extern WXMainFrame *gMainFrame;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.