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