|
|
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:
1.1.1.12! root 7: //
! 8: // メインウィンドウ
! 9: //
! 10:
1.1 root 11: #pragma once
12:
1.1.1.9 root 13: #include "wxnono.h"
14: #include "monitor.h"
1.1.1.4 root 15: #include "vm.h"
1.1 root 16: #include <array>
17:
1.1.1.9 root 18: class WXMainFrame : public wxFrame
1.1 root 19: {
1.1.1.9 root 20: using inherited = wxFrame;
1.1 root 21: public:
22: WXMainFrame(wxWindow *);
1.1.1.7 root 23: virtual ~WXMainFrame() override;
1.1 root 24:
1.1.1.11 root 25: // (設定反映などの) 初期化
26: bool Init();
27:
1.1.1.12! root 28: bool Layout() override;
! 29:
1.1 root 30: // ウィンドウをリストから削除する。
31: // ウィンドウをクローズする際に呼び出すこと。
1.1.1.9 root 32: void DeleteWindow(wxWindow *);
1.1 root 33:
1.1.1.9 root 34: // 起動時にオープンするサブウィンドウの一覧
35: static std::array<bool, ID_SUBWIN_MAX> subwindow_start;
1.1 root 36:
1.1.1.5 root 37: // モニタウィンドウの更新頻度取得
38: int GetMonitorRate() const { return monitor_rate; }
39:
1.1.1.10 root 40: // SCSI リムーバブルデバイス用のメニューを作成して返す
41: wxMenu *CreateSCSIRemovableMenu(uint id) const;
42:
43: // CD を挿入する
44: void InsertCD(int id, const std::string& path);
45: // CD をイジェクトする
46: void EjectCD(int id, bool force);
47:
1.1 root 48: private:
1.1.1.10 root 49: void OnIdle(wxIdleEvent& event);
1.1.1.3 root 50: void OnClose(wxCloseEvent& event);
1.1.1.4 root 51: void OnActivate(wxActivateEvent& event);
1.1 root 52:
1.1.1.8 root 53: void OnRestartVM(wxCommandEvent& event);
1.1 root 54: void OnExit(wxCommandEvent&);
55:
1.1.1.11 root 56: void OnFullSpeed(wxCommandEvent& event);
57: void OnFullSpeedUI(wxUpdateUIEvent& event);
58: void OnMenuInput(wxCommandEvent& event);
59: void OnMenuInputUI(wxUpdateUIEvent& event);
60:
1.1 root 61: void OnMenuScale(wxCommandEvent& event);
62: void OnMenuScaleUI(wxUpdateUIEvent& event);
63: void OnMenuFontSize(wxCommandEvent& event);
64: void OnMenuFontSizeUI(wxUpdateUIEvent& event);
1.1.1.5 root 65: void OnMenuMonRate(wxCommandEvent& event);
66: void OnMenuMonRateUI(wxUpdateUIEvent& event);
1.1.1.8 root 67: void OnShowStatusPanel(wxCommandEvent& event);
68: void OnShowStatusPanelUI(wxUpdateUIEvent& event);
1.1 root 69:
1.1.1.10 root 70: void OnCDInsert(wxCommandEvent& event);
71: void OnCDInsertUI(wxUpdateUIEvent& event);
72: void OnCDEject(wxCommandEvent& event);
73: void OnCDEjectUI(wxUpdateUIEvent& event);
74: void OnCDForce(wxCommandEvent& event);
75: void OnCDForceUI(wxUpdateUIEvent& event);
1.1.1.2 root 76: void OnMouseMode(wxCommandEvent& event);
77: void OnMouseModeUI(wxUpdateUIEvent& event);
1.1.1.8 root 78: void OnResetButton(wxCommandEvent& event);
1.1.1.12! root 79: void OnNMIButton(wxCommandEvent& event);
! 80: void OnKeyboardConnect(wxCommandEvent& event);
! 81: void OnKeyboardConnectUI(wxUpdateUIEvent& event);
1.1.1.2 root 82:
1.1 root 83: void OnWindow(wxCommandEvent&);
84: void DoWindow(int id, bool enable);
85: void OnWindowUI(wxUpdateUIEvent&);
86:
1.1.1.4 root 87: void OnAbout(wxCommandEvent&);
88:
1.1.1.10 root 89: // リムーバブルデバイス用のメニューを作成して追加する
90: void CreateRemovableMenu(wxMenu *);
91:
1.1 root 92: // ウィンドウをリストに追加する。
93: void AddWindow(int id, wxWindow *);
94:
95: // 指定 ID のサブウィンドウがリストにあれば true を返す
96: bool IsExistWindow(int id);
97:
98: // サブウィンドウリスト
1.1.1.9 root 99: std::unique_ptr<wxWindow> windows[ID_SUBWIN_MAX] {};
1.1.1.4 root 100:
1.1.1.5 root 101: // モニタの更新頻度(これが実行中の一次情報)
1.1.1.6 root 102: int monitor_rate {};
1.1.1.5 root 103: // モニタ更新頻度 ID -> 数値変換
104: static const int IDtoMonRate[];
105:
1.1.1.10 root 106: // メニュー操作用の SCSI デバイス
107: // (ホストアダプタが増えた時のことは考えていない)
108: std::array<SCSITarget *, 8> scsidev {};
109:
110: // ファイルダイアログを表示する際のカレントディレクトリ
111: std::string current_dir {};
112:
1.1.1.4 root 113: // ダブルバスフォールト・イベント
114: void OnHaltNotify(wxCommandEvent& event);
1.1.1.10 root 115: // メディア挿入失敗通知
116: void OnInsertCDFailed(wxCommandEvent& event);
1.1 root 117:
118: wxDECLARE_EVENT_TABLE();
119: };
120:
121: extern WXMainFrame *gMainFrame;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.