|
|
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,
1.1.1.3 ! root 29: // 共通デバイス
1.1 root 30: WinID_MONITOR_SPC,
31: WinID_MONITOR_RTC,
1.1.1.3 ! root 32: // X68030 デバイス
! 33: WinID_MONITOR_DMAC,
! 34: WinID_MONITOR_MFP,
! 35: WinID_MONITOR_SCC,
! 36: // LUNA デバイス
1.1 root 37: WinID_MONITOR_SIO,
1.1.1.2 root 38: WinID_MONITOR_LUNAKEYBOARD,
1.1 root 39: WinID_MONITOR_LCD,
40: WinID_MONITOR_LANCE,
41: WinID_MONITOR_BITMAP,
42: WinID_MONITOR_BITMAP0,
1.1.1.3 ! root 43: // ホストデバイス
1.1 root 44: WinID_MONITOR_NETDRIVER,
45: WinID_SOFTKEY,
46:
47: // ウィンドウ ID ここまで。
48: WinID_MAX,
49:
50: // ここからそれ以外の ID
51: ID_FULL_SPEED = WinID_MAX,
52: ID_SCALE_START,
53: ID_SCALE_1_00,
54: ID_SCALE_0_75,
55: ID_SCALE_0_50,
56: ID_SCALE_END,
57:
58: ID_FONTSIZE_START, // START 以降は fontsize_t と同じ順に並べること
59: ID_FONTSIZE_12,
60: ID_FONTSIZE_16,
61: ID_FONTSIZE_24,
62: ID_FONTSIZE_END,
1.1.1.2 root 63:
64: ID_MOUSEMODE,
1.1 root 65: };
66:
67: class WXMainFrame
68: : public wxFrame
69: {
70: typedef wxFrame inherited;
71: public:
72: WXMainFrame(wxWindow *);
73: virtual ~WXMainFrame();
74:
75: // ウィンドウをリストから削除する。
76: // ウィンドウをクローズする際に呼び出すこと。
77: void DeleteWindow(wxWindowID id);
78:
79: // VM からの電源オフコールバック
80: void PowerOffCallback();
81:
82: // モニタウィンドウ識別名一覧
83: // (引数 -M で指定されるやつ)
84: static const char *monitor_names[WinID_MAX];
85:
86: // 起動時にオープンするモニタウィンドウの一覧
87: static std::array<bool, WinID_MAX> monitor_start;
88:
89: private:
90: void OnCreate(wxCommandEvent& event);
1.1.1.3 ! root 91: void OnClose(wxCloseEvent& event);
1.1 root 92:
93: void OnFullSpeed(wxCommandEvent& event);
94: void OnFullSpeedUI(wxUpdateUIEvent& event);
95:
96: void OnExit(wxCommandEvent&);
97:
98: void OnMenuScale(wxCommandEvent& event);
99: void OnMenuScaleUI(wxUpdateUIEvent& event);
100: void OnMenuFontSize(wxCommandEvent& event);
101: void OnMenuFontSizeUI(wxUpdateUIEvent& event);
102:
1.1.1.2 root 103: void OnMouseMode(wxCommandEvent& event);
104: void OnMouseModeUI(wxUpdateUIEvent& event);
105:
1.1 root 106: void OnWindow(wxCommandEvent&);
107: void DoWindow(int id, bool enable);
108: void OnWindowUI(wxUpdateUIEvent&);
109:
110: // ウィンドウをリストに追加する。
111: void AddWindow(int id, wxWindow *);
112:
113: // 指定 ID のサブウィンドウがリストにあれば true を返す
114: bool IsExistWindow(int id);
115:
116: // サブウィンドウリスト
117: wxWindow *windows[WinID_MAX] {};
118:
119: wxDECLARE_EVENT_TABLE();
120: };
121:
122: extern WXMainFrame *gMainFrame;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.