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

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.1.4   root       81:        void OnActivate(wxActivateEvent& event);
1.1       root       82: 
1.1.1.15  root       83:        void OnPowerButton(wxCommandEvent& event);
                     84:        void OnPowerButtonUI(wxUpdateUIEvent& event);
                     85:        void OnSoftReset(wxCommandEvent& event);
                     86:        void OnResetButton(wxCommandEvent& event);
                     87:        void OnNMIButton(wxCommandEvent& event);
1.1.1.8   root       88:        void OnRestartVM(wxCommandEvent& event);
1.1       root       89:        void OnExit(wxCommandEvent&);
                     90: 
1.1.1.11  root       91:        void OnFullSpeed(wxCommandEvent& event);
                     92:        void OnFullSpeedUI(wxUpdateUIEvent& event);
                     93:        void OnMenuInput(wxCommandEvent& event);
                     94:        void OnMenuInputUI(wxUpdateUIEvent& event);
1.1.1.18  root       95:        void OnMenuHostNet(wxCommandEvent& event);
                     96:        void OnMenuHostNetUI(wxUpdateUIEvent& event);
                     97:        void OnMenuHostCom(wxCommandEvent& event);
                     98:        void OnMenuHostComUI(wxUpdateUIEvent& event);
1.1.1.20! root       99:        void OnMenuHostSound(wxCommandEvent& event);
        !           100:        void OnMenuHostSoundUI(wxUpdateUIEvent& event);
1.1.1.18  root      101:        void OnHostNetFailed(wxCommandEvent& event);
                    102:        void OnHostComFailed(wxCommandEvent& event);
1.1.1.20! root      103:        void OnHostSoundFailed(wxCommandEvent& event);
1.1.1.18  root      104:        void HostDriverFailed(const wxString& hostdev, const wxString& errmsg);
1.1.1.11  root      105: 
1.1       root      106:        void OnMenuScale(wxCommandEvent& event);
                    107:        void OnMenuScaleUI(wxUpdateUIEvent& event);
                    108:        void OnMenuFontSize(wxCommandEvent& event);
                    109:        void OnMenuFontSizeUI(wxUpdateUIEvent& event);
1.1.1.5   root      110:        void OnMenuMonRate(wxCommandEvent& event);
                    111:        void OnMenuMonRateUI(wxUpdateUIEvent& event);
1.1.1.8   root      112:        void OnShowStatusPanel(wxCommandEvent& event);
                    113:        void OnShowStatusPanelUI(wxUpdateUIEvent& event);
1.1       root      114: 
1.1.1.13  root      115:        void OnFDInsert(wxCommandEvent& event);
                    116:        void OnFDInsertUI(wxUpdateUIEvent& event);
                    117:        void OnFDEject(wxCommandEvent& event);
                    118:        void OnFDEjectUI(wxUpdateUIEvent& event);
                    119:        void OnFDForce(wxCommandEvent& event);
                    120:        void OnFDForceUI(wxUpdateUIEvent& event);
1.1.1.10  root      121:        void OnCDInsert(wxCommandEvent& event);
                    122:        void OnCDInsertUI(wxUpdateUIEvent& event);
                    123:        void OnCDEject(wxCommandEvent& event);
                    124:        void OnCDEjectUI(wxUpdateUIEvent& event);
                    125:        void OnCDForce(wxCommandEvent& event);
                    126:        void OnCDForceUI(wxUpdateUIEvent& event);
1.1.1.2   root      127:        void OnMouseMode(wxCommandEvent& event);
                    128:        void OnMouseModeUI(wxUpdateUIEvent& event);
1.1.1.12  root      129:        void OnKeyboardConnect(wxCommandEvent& event);
                    130:        void OnKeyboardConnectUI(wxUpdateUIEvent& event);
1.1.1.2   root      131: 
1.1       root      132:        void OnWindow(wxCommandEvent&);
                    133:        void DoWindow(int id, bool enable);
                    134:        void OnWindowUI(wxUpdateUIEvent&);
                    135: 
1.1.1.4   root      136:        void OnAbout(wxCommandEvent&);
                    137: 
1.1.1.15  root      138:        // 指定のモニタ/サブウィンドウがあればメニューに追加する
                    139:        void AppendIf(wxMenu *, int id, const wxString& label);
                    140: 
1.1.1.14  root      141:        int CreateMainviewScaleTable();
1.1.1.17  root      142:        void CreateMonRateTable();
1.1.1.14  root      143: 
1.1.1.10  root      144:        // リムーバブルデバイス用のメニューを作成して追加する
                    145:        void CreateRemovableMenu(wxMenu *);
                    146: 
1.1       root      147:        // ウィンドウをリストに追加する。
                    148:        void AddWindow(int id, wxWindow *);
                    149: 
                    150:        // 指定 ID のサブウィンドウがリストにあれば true を返す
                    151:        bool IsExistWindow(int id);
                    152: 
1.1.1.18  root      153:        // UI 表示用テキストを返す。
                    154:        wxString GetHostNetLabel(uint n) const;
                    155:        wxString GetHostComLabel(uint n) const;
                    156: 
1.1.1.16  root      157:        // メイン MPU 名を返す
                    158:        wxString MPUName() const { return mpuname; }
1.1.1.14  root      159: 
1.1       root      160:        // サブウィンドウリスト
1.1.1.9   root      161:        std::unique_ptr<wxWindow> windows[ID_SUBWIN_MAX] {};
1.1.1.4   root      162: 
1.1.1.10  root      163:        // メニュー操作用の SCSI デバイス
                    164:        // (ホストアダプタが増えた時のことは考えていない)
                    165:        std::array<SCSITarget *, 8> scsidev {};
                    166: 
1.1.1.13  root      167:        // メニュー操作用の FDD デバイス
                    168:        // (6台構成のことは考えていない)
                    169:        std::array<FDDDevice *, 4> fdd_array {};
                    170: 
1.1.1.16  root      171:        // ウィンドウタイトル
                    172:        wxString frame_title {};
                    173: 
1.1.1.10  root      174:        // ファイルダイアログを表示する際のカレントディレクトリ
                    175:        std::string current_dir {};
                    176: 
1.1.1.16  root      177:        // MPU 名
                    178:        std::string mpuname {};
                    179: 
1.1.1.4   root      180:        // ダブルバスフォールト・イベント
                    181:        void OnHaltNotify(wxCommandEvent& event);
1.1.1.10  root      182:        // メディア挿入失敗通知
1.1.1.13  root      183:        void OnInsertFailed(wxCommandEvent& event);
1.1       root      184: 
1.1.1.14  root      185:        WXMainView *mainview {};
                    186:        WXStatusPanel *statuspanel {};
1.1.1.18  root      187:        WXBitmapPanel *spaceL {};
                    188:        WXBitmapPanel *spaceR {};
1.1.1.14  root      189: 
                    190:        Keyboard *keyboard {};
1.1.1.18  root      191:        std::array<HostNetDevice *, 2> hostnet {};
                    192:        std::array<HostCOMDevice *, 3> hostcom {};
                    193:        HostCOMDevice *hostcom_dbg {};
1.1.1.20! root      194:        HostSoundDevice *hostsound {};
1.1.1.14  root      195:        PowerDevice *power {};
                    196:        Syncer *syncer {};
                    197: 
                    198:        // 表示スケールの選択肢
                    199:        static std::vector<double> view_scales;
                    200: 
                    201:        // モニタの更新頻度(これが実行中の一次情報)
                    202:        static int monitor_rate;
                    203:        // モニタ更新頻度の選択肢
                    204:        static std::vector<int> monrates;
                    205: 
1.1       root      206:        wxDECLARE_EVENT_TABLE();
                    207: };

unix.superglobalmegacorp.com

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