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

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;

unix.superglobalmegacorp.com

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