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

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

unix.superglobalmegacorp.com

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