Annotation of nono/wx/wxmainframe.h, revision 1.1.1.21

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       root       15: #include <array>
                     16: 
1.1.1.13  root       17: class FDDDevice;
1.1.1.14  root       18: class Keyboard;
1.1.1.18  root       19: class HostCOMDevice;
                     20: class HostNetDevice;
1.1.1.20  root       21: class HostSoundDevice;
1.1.1.14  root       22: class PowerDevice;
1.1.1.15  root       23: class SCSITarget;
1.1.1.14  root       24: class Syncer;
1.1.1.18  root       25: class WXBitmapPanel;
1.1.1.14  root       26: class WXMainView;
                     27: class WXStatusPanel;
1.1.1.13  root       28: 
1.1.1.9   root       29: class WXMainFrame : public wxFrame
1.1       root       30: {
1.1.1.9   root       31:        using inherited = wxFrame;
1.1       root       32:  public:
1.1.1.16  root       33:        explicit WXMainFrame(wxWindow *);
1.1.1.19  root       34:        ~WXMainFrame() override;
1.1       root       35: 
1.1.1.11  root       36:        // (設定反映などの) 初期化
                     37:        bool Init();
                     38: 
1.1.1.18  root       39:        void Fit() override;
1.1.1.12  root       40:        bool Layout() override;
                     41: 
1.1       root       42:        // ウィンドウをリストから削除する。
                     43:        // ウィンドウをクローズする際に呼び出すこと。
1.1.1.9   root       44:        void DeleteWindow(wxWindow *);
1.1       root       45: 
1.1.1.9   root       46:        // 起動時にオープンするサブウィンドウの一覧
                     47:        static std::array<bool, ID_SUBWIN_MAX> subwindow_start;
1.1       root       48: 
1.1.1.14  root       49:        // モニタウィンドウの更新頻度取得・設定
                     50:        static int GetMonitorRate() { return monitor_rate; }
                     51:        static void SetMonitorRate(int val) { monitor_rate = val; }
                     52: 
                     53:        // メンバの取得
                     54:        WXMainView *GetMainView() { return mainview; }
1.1.1.5   root       55: 
1.1.1.18  root       56:        // ホストドライバ用のメニューを作成して返す
                     57:        void CreateHostNetMenu(wxMenu *, uint unit);
                     58:        void CreateHostComMenu(wxMenu *, int n);
1.1.1.20  root       59:        void CreateHostSoundMenu(wxMenu *);
1.1.1.18  root       60: 
1.1.1.13  root       61:        // SCSI リムーバブルデバイス、FD 用のメニューを作成して返す
1.1.1.10  root       62:        wxMenu *CreateSCSIRemovableMenu(uint id) const;
1.1.1.13  root       63:        wxMenu *CreateFDMenu(int unit) const;
                     64: 
                     65:        // FD を挿入する
                     66:        void InsertFD(int unit, const std::string& path);
                     67:        // FD をイジェクトする
                     68:        void EjectFD(int unit, bool force);
1.1.1.10  root       69: 
                     70:        // CD を挿入する
                     71:        void InsertCD(int id, const std::string& path);
                     72:        // CD をイジェクトする
                     73:        void EjectCD(int id, bool force);
                     74: 
1.1.1.18  root       75:        // ウィンドウタイトルを設定。
                     76:        void SetMyTitle(bool mousemode);
                     77: 
1.1       root       78:  private:
1.1.1.10  root       79:        void OnIdle(wxIdleEvent& event);
1.1.1.3   root       80:        void OnClose(wxCloseEvent& event);
1.1       root       81: 
1.1.1.15  root       82:        void OnPowerButton(wxCommandEvent& event);
                     83:        void OnPowerButtonUI(wxUpdateUIEvent& event);
                     84:        void OnSoftReset(wxCommandEvent& event);
                     85:        void OnResetButton(wxCommandEvent& event);
                     86:        void OnNMIButton(wxCommandEvent& event);
1.1.1.8   root       87:        void OnRestartVM(wxCommandEvent& event);
1.1       root       88:        void OnExit(wxCommandEvent&);
                     89: 
1.1.1.11  root       90:        void OnFullSpeed(wxCommandEvent& event);
                     91:        void OnFullSpeedUI(wxUpdateUIEvent& event);
                     92:        void OnMenuInput(wxCommandEvent& event);
                     93:        void OnMenuInputUI(wxUpdateUIEvent& event);
1.1.1.18  root       94:        void OnMenuHostNet(wxCommandEvent& event);
                     95:        void OnMenuHostNetUI(wxUpdateUIEvent& event);
                     96:        void OnMenuHostCom(wxCommandEvent& event);
                     97:        void OnMenuHostComUI(wxUpdateUIEvent& event);
1.1.1.20  root       98:        void OnMenuHostSound(wxCommandEvent& event);
                     99:        void OnMenuHostSoundUI(wxUpdateUIEvent& event);
1.1.1.18  root      100:        void OnHostNetFailed(wxCommandEvent& event);
                    101:        void OnHostComFailed(wxCommandEvent& event);
1.1.1.20  root      102:        void OnHostSoundFailed(wxCommandEvent& event);
1.1.1.18  root      103:        void HostDriverFailed(const wxString& hostdev, const wxString& errmsg);
1.1.1.11  root      104: 
1.1       root      105:        void OnMenuScale(wxCommandEvent& event);
                    106:        void OnMenuScaleUI(wxUpdateUIEvent& event);
                    107:        void OnMenuFontSize(wxCommandEvent& event);
                    108:        void OnMenuFontSizeUI(wxUpdateUIEvent& event);
1.1.1.5   root      109:        void OnMenuMonRate(wxCommandEvent& event);
                    110:        void OnMenuMonRateUI(wxUpdateUIEvent& event);
1.1.1.8   root      111:        void OnShowStatusPanel(wxCommandEvent& event);
                    112:        void OnShowStatusPanelUI(wxUpdateUIEvent& event);
1.1       root      113: 
1.1.1.13  root      114:        void OnFDInsert(wxCommandEvent& event);
                    115:        void OnFDInsertUI(wxUpdateUIEvent& event);
                    116:        void OnFDEject(wxCommandEvent& event);
                    117:        void OnFDEjectUI(wxUpdateUIEvent& event);
                    118:        void OnFDForce(wxCommandEvent& event);
                    119:        void OnFDForceUI(wxUpdateUIEvent& event);
1.1.1.10  root      120:        void OnCDInsert(wxCommandEvent& event);
                    121:        void OnCDInsertUI(wxUpdateUIEvent& event);
                    122:        void OnCDEject(wxCommandEvent& event);
                    123:        void OnCDEjectUI(wxUpdateUIEvent& event);
                    124:        void OnCDForce(wxCommandEvent& event);
                    125:        void OnCDForceUI(wxUpdateUIEvent& event);
1.1.1.2   root      126:        void OnMouseMode(wxCommandEvent& event);
                    127:        void OnMouseModeUI(wxUpdateUIEvent& event);
1.1.1.12  root      128:        void OnKeyboardConnect(wxCommandEvent& event);
                    129:        void OnKeyboardConnectUI(wxUpdateUIEvent& event);
1.1.1.2   root      130: 
1.1       root      131:        void OnWindow(wxCommandEvent&);
                    132:        void DoWindow(int id, bool enable);
                    133:        void OnWindowUI(wxUpdateUIEvent&);
                    134: 
1.1.1.4   root      135:        void OnAbout(wxCommandEvent&);
                    136: 
1.1.1.15  root      137:        // 指定のモニタ/サブウィンドウがあればメニューに追加する
                    138:        void AppendIf(wxMenu *, int id, const wxString& label);
                    139: 
1.1.1.14  root      140:        int CreateMainviewScaleTable();
1.1.1.17  root      141:        void CreateMonRateTable();
1.1.1.14  root      142: 
1.1.1.10  root      143:        // リムーバブルデバイス用のメニューを作成して追加する
                    144:        void CreateRemovableMenu(wxMenu *);
                    145: 
1.1       root      146:        // ウィンドウをリストに追加する。
                    147:        void AddWindow(int id, wxWindow *);
                    148: 
                    149:        // 指定 ID のサブウィンドウがリストにあれば true を返す
                    150:        bool IsExistWindow(int id);
                    151: 
1.1.1.18  root      152:        // UI 表示用テキストを返す。
                    153:        wxString GetHostNetLabel(uint n) const;
                    154:        wxString GetHostComLabel(uint n) const;
                    155: 
1.1.1.16  root      156:        // メイン MPU 名を返す
                    157:        wxString MPUName() const { return mpuname; }
1.1.1.14  root      158: 
1.1       root      159:        // サブウィンドウリスト
1.1.1.9   root      160:        std::unique_ptr<wxWindow> windows[ID_SUBWIN_MAX] {};
1.1.1.4   root      161: 
1.1.1.10  root      162:        // メニュー操作用の SCSI デバイス
                    163:        // (ホストアダプタが増えた時のことは考えていない)
                    164:        std::array<SCSITarget *, 8> scsidev {};
                    165: 
1.1.1.13  root      166:        // メニュー操作用の FDD デバイス
                    167:        // (6台構成のことは考えていない)
                    168:        std::array<FDDDevice *, 4> fdd_array {};
                    169: 
1.1.1.16  root      170:        // ウィンドウタイトル
                    171:        wxString frame_title {};
                    172: 
1.1.1.10  root      173:        // ファイルダイアログを表示する際のカレントディレクトリ
                    174:        std::string current_dir {};
                    175: 
1.1.1.16  root      176:        // MPU 名
                    177:        std::string mpuname {};
                    178: 
1.1.1.4   root      179:        // ダブルバスフォールト・イベント
                    180:        void OnHaltNotify(wxCommandEvent& event);
1.1.1.10  root      181:        // メディア挿入失敗通知
1.1.1.13  root      182:        void OnInsertFailed(wxCommandEvent& event);
1.1       root      183: 
1.1.1.14  root      184:        WXMainView *mainview {};
                    185:        WXStatusPanel *statuspanel {};
1.1.1.18  root      186:        WXBitmapPanel *spaceL {};
                    187:        WXBitmapPanel *spaceR {};
1.1.1.14  root      188: 
                    189:        Keyboard *keyboard {};
1.1.1.18  root      190:        std::array<HostNetDevice *, 2> hostnet {};
                    191:        std::array<HostCOMDevice *, 3> hostcom {};
                    192:        HostCOMDevice *hostcom_dbg {};
1.1.1.20  root      193:        HostSoundDevice *hostsound {};
1.1.1.14  root      194:        PowerDevice *power {};
                    195:        Syncer *syncer {};
                    196: 
                    197:        // 表示スケールの選択肢
                    198:        static std::vector<double> view_scales;
                    199: 
                    200:        // モニタの更新頻度(これが実行中の一次情報)
                    201:        static int monitor_rate;
                    202:        // モニタ更新頻度の選択肢
                    203:        static std::vector<int> monrates;
                    204: 
1.1       root      205:        wxDECLARE_EVENT_TABLE();
                    206: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.