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

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

unix.superglobalmegacorp.com

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