|
|
1.1 root 1: //
2: // nono
1.1.1.4 ! root 3: // Copyright (C) 2020 nono project
! 4: // Licensed under nono-license.txt
1.1 root 5: //
6:
7: #pragma once
8:
1.1.1.4 ! root 9: #include "wxheader.h"
! 10: #include "vm.h"
1.1 root 11: #include <array>
12:
13: enum {
14: // ID は 0 から (wxID_LOWEST = 5000 未満まで) 使えるっぽい。
15: // メニュー ID はメニュー ID 内で一意という制約があるだけ。
16: // メニュー ID のうちウィンドウのオープン状態を維持する必要がある
17: // ものはリスト(なり配列なり)で管理したいが、ID が 0 から使えるのなら
18: // 0 から割り当てて配列で管理してしまうのが手っ取り早い。
19: // ウィンドウに割り当てるウィンドウ ID とメニューイベントで飛んでくる
20: // メニュー ID は互いに干渉しないはずなので、同じ値を使ってメニューと
21: // ウィンドウの紐付けをする。
22:
23: // ウィンドウ ID (メニュー ID としても使う)
1.1.1.4 ! root 24: // wxmainframe.cpp 末尾の monitor_info[] と一致させること
1.1 root 25: WinID_Start = 0,
26: WinID_MONITOR_LOG = WinID_Start,
27: WinID_MONITOR_SCHEDULER,
28: WinID_MONITOR_MPUREG,
29: WinID_MONITOR_MPUATC,
1.1.1.4 ! root 30: WinID_MONITOR_BRHIST68K,
! 31: WinID_MONITOR_BRHIST88K,
! 32: WinID_MONITOR_CMMU7,
! 33: WinID_MONITOR_CMMU6,
! 34: WinID_MONITOR_ATC7,
! 35: WinID_MONITOR_ATC6,
! 36: WinID_MONITOR_CACHE7,
! 37: WinID_MONITOR_CACHE6,
1.1 root 38: WinID_MONITOR_MEMDUMP,
39: WinID_MONITOR_SPC,
40: WinID_MONITOR_RTC,
1.1.1.3 root 41: WinID_MONITOR_DMAC,
42: WinID_MONITOR_MFP,
43: WinID_MONITOR_SCC,
1.1 root 44: WinID_MONITOR_SIO,
1.1.1.4 ! root 45: WinID_MONITOR_PIO0,
1.1.1.2 root 46: WinID_MONITOR_LUNAKEYBOARD,
1.1 root 47: WinID_MONITOR_LCD,
48: WinID_MONITOR_LANCE,
1.1.1.4 ! root 49: WinID_MONITOR_SYSCTLR,
1.1 root 50: WinID_MONITOR_BITMAP,
51: WinID_MONITOR_BITMAP0,
52: WinID_MONITOR_NETDRIVER,
53: WinID_SOFTKEY,
54:
55: // ウィンドウ ID ここまで。
56: WinID_MAX,
57:
58: // ここからそれ以外の ID
59: ID_FULL_SPEED = WinID_MAX,
60: ID_SCALE_START,
61: ID_SCALE_1_00,
62: ID_SCALE_0_75,
63: ID_SCALE_0_50,
64: ID_SCALE_END,
65:
66: ID_FONTSIZE_START, // START 以降は fontsize_t と同じ順に並べること
67: ID_FONTSIZE_12,
68: ID_FONTSIZE_16,
69: ID_FONTSIZE_END,
1.1.1.2 root 70:
71: ID_MOUSEMODE,
1.1 root 72: };
73:
74: class WXMainFrame
75: : public wxFrame
76: {
1.1.1.4 ! root 77: using inherited = wxFrame;
! 78:
! 79: public:
! 80: // モニタウィンドウ識別名情報
! 81: struct monitor_info {
! 82: const char * const name; // モニタ名
! 83: vmf_t feature; // 機種
! 84: };
! 85:
1.1 root 86: public:
87: WXMainFrame(wxWindow *);
88: virtual ~WXMainFrame();
89:
90: // ウィンドウをリストから削除する。
91: // ウィンドウをクローズする際に呼び出すこと。
92: void DeleteWindow(wxWindowID id);
93:
94: // VM からの電源オフコールバック
95: void PowerOffCallback();
96:
1.1.1.4 ! root 97: // VM からのダブルバスフォールト・コールバック
! 98: void HaltCallback();
! 99:
1.1 root 100: // モニタウィンドウ識別名一覧
101: // (引数 -M で指定されるやつ)
1.1.1.4 ! root 102: static struct monitor_info monitor_info[WinID_MAX];
1.1 root 103:
104: // 起動時にオープンするモニタウィンドウの一覧
105: static std::array<bool, WinID_MAX> monitor_start;
106:
107: private:
108: void OnCreate(wxCommandEvent& event);
1.1.1.3 root 109: void OnClose(wxCloseEvent& event);
1.1.1.4 ! root 110: void OnActivate(wxActivateEvent& event);
1.1 root 111:
112: void OnFullSpeed(wxCommandEvent& event);
113: void OnFullSpeedUI(wxUpdateUIEvent& event);
114:
115: void OnExit(wxCommandEvent&);
116:
117: void OnMenuScale(wxCommandEvent& event);
118: void OnMenuScaleUI(wxUpdateUIEvent& event);
119: void OnMenuFontSize(wxCommandEvent& event);
120: void OnMenuFontSizeUI(wxUpdateUIEvent& event);
121:
1.1.1.2 root 122: void OnMouseMode(wxCommandEvent& event);
123: void OnMouseModeUI(wxUpdateUIEvent& event);
124:
1.1 root 125: void OnWindow(wxCommandEvent&);
126: void DoWindow(int id, bool enable);
127: void OnWindowUI(wxUpdateUIEvent&);
128:
1.1.1.4 ! root 129: void OnAbout(wxCommandEvent&);
! 130:
1.1 root 131: // ウィンドウをリストに追加する。
132: void AddWindow(int id, wxWindow *);
133:
134: // 指定 ID のサブウィンドウがリストにあれば true を返す
135: bool IsExistWindow(int id);
136:
137: // サブウィンドウリスト
1.1.1.4 ! root 138: std::unique_ptr<wxWindow> windows[WinID_MAX] {};
! 139:
! 140: // ダブルバスフォールト・イベント
! 141: void OnHaltNotify(wxCommandEvent& event);
1.1 root 142:
143: wxDECLARE_EVENT_TABLE();
144: };
145:
146: extern WXMainFrame *gMainFrame;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.