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

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.9   root       18: class WXMainFrame : public wxFrame
1.1       root       19: {
1.1.1.9   root       20:        using inherited = wxFrame;
1.1       root       21:  public:
                     22:        WXMainFrame(wxWindow *);
1.1.1.7   root       23:        virtual ~WXMainFrame() override;
1.1       root       24: 
1.1.1.11  root       25:        // (設定反映などの) 初期化
                     26:        bool Init();
                     27: 
1.1.1.12! root       28:        bool Layout() override;
        !            29: 
1.1       root       30:        // ウィンドウをリストから削除する。
                     31:        // ウィンドウをクローズする際に呼び出すこと。
1.1.1.9   root       32:        void DeleteWindow(wxWindow *);
1.1       root       33: 
1.1.1.9   root       34:        // 起動時にオープンするサブウィンドウの一覧
                     35:        static std::array<bool, ID_SUBWIN_MAX> subwindow_start;
1.1       root       36: 
1.1.1.5   root       37:        // モニタウィンドウの更新頻度取得
                     38:        int GetMonitorRate() const { return monitor_rate; }
                     39: 
1.1.1.10  root       40:        // SCSI リムーバブルデバイス用のメニューを作成して返す
                     41:        wxMenu *CreateSCSIRemovableMenu(uint id) const;
                     42: 
                     43:        // CD を挿入する
                     44:        void InsertCD(int id, const std::string& path);
                     45:        // CD をイジェクトする
                     46:        void EjectCD(int id, bool force);
                     47: 
1.1       root       48:  private:
1.1.1.10  root       49:        void OnIdle(wxIdleEvent& event);
1.1.1.3   root       50:        void OnClose(wxCloseEvent& event);
1.1.1.4   root       51:        void OnActivate(wxActivateEvent& event);
1.1       root       52: 
1.1.1.8   root       53:        void OnRestartVM(wxCommandEvent& event);
1.1       root       54:        void OnExit(wxCommandEvent&);
                     55: 
1.1.1.11  root       56:        void OnFullSpeed(wxCommandEvent& event);
                     57:        void OnFullSpeedUI(wxUpdateUIEvent& event);
                     58:        void OnMenuInput(wxCommandEvent& event);
                     59:        void OnMenuInputUI(wxUpdateUIEvent& event);
                     60: 
1.1       root       61:        void OnMenuScale(wxCommandEvent& event);
                     62:        void OnMenuScaleUI(wxUpdateUIEvent& event);
                     63:        void OnMenuFontSize(wxCommandEvent& event);
                     64:        void OnMenuFontSizeUI(wxUpdateUIEvent& event);
1.1.1.5   root       65:        void OnMenuMonRate(wxCommandEvent& event);
                     66:        void OnMenuMonRateUI(wxUpdateUIEvent& event);
1.1.1.8   root       67:        void OnShowStatusPanel(wxCommandEvent& event);
                     68:        void OnShowStatusPanelUI(wxUpdateUIEvent& event);
1.1       root       69: 
1.1.1.10  root       70:        void OnCDInsert(wxCommandEvent& event);
                     71:        void OnCDInsertUI(wxUpdateUIEvent& event);
                     72:        void OnCDEject(wxCommandEvent& event);
                     73:        void OnCDEjectUI(wxUpdateUIEvent& event);
                     74:        void OnCDForce(wxCommandEvent& event);
                     75:        void OnCDForceUI(wxUpdateUIEvent& event);
1.1.1.2   root       76:        void OnMouseMode(wxCommandEvent& event);
                     77:        void OnMouseModeUI(wxUpdateUIEvent& event);
1.1.1.8   root       78:        void OnResetButton(wxCommandEvent& event);
1.1.1.12! root       79:        void OnNMIButton(wxCommandEvent& event);
        !            80:        void OnKeyboardConnect(wxCommandEvent& event);
        !            81:        void OnKeyboardConnectUI(wxUpdateUIEvent& event);
1.1.1.2   root       82: 
1.1       root       83:        void OnWindow(wxCommandEvent&);
                     84:        void DoWindow(int id, bool enable);
                     85:        void OnWindowUI(wxUpdateUIEvent&);
                     86: 
1.1.1.4   root       87:        void OnAbout(wxCommandEvent&);
                     88: 
1.1.1.10  root       89:        // リムーバブルデバイス用のメニューを作成して追加する
                     90:        void CreateRemovableMenu(wxMenu *);
                     91: 
1.1       root       92:        // ウィンドウをリストに追加する。
                     93:        void AddWindow(int id, wxWindow *);
                     94: 
                     95:        // 指定 ID のサブウィンドウがリストにあれば true を返す
                     96:        bool IsExistWindow(int id);
                     97: 
                     98:        // サブウィンドウリスト
1.1.1.9   root       99:        std::unique_ptr<wxWindow> windows[ID_SUBWIN_MAX] {};
1.1.1.4   root      100: 
1.1.1.5   root      101:        // モニタの更新頻度(これが実行中の一次情報)
1.1.1.6   root      102:        int monitor_rate {};
1.1.1.5   root      103:        // モニタ更新頻度 ID -> 数値変換
                    104:        static const int IDtoMonRate[];
                    105: 
1.1.1.10  root      106:        // メニュー操作用の SCSI デバイス
                    107:        // (ホストアダプタが増えた時のことは考えていない)
                    108:        std::array<SCSITarget *, 8> scsidev {};
                    109: 
                    110:        // ファイルダイアログを表示する際のカレントディレクトリ
                    111:        std::string current_dir {};
                    112: 
1.1.1.4   root      113:        // ダブルバスフォールト・イベント
                    114:        void OnHaltNotify(wxCommandEvent& event);
1.1.1.10  root      115:        // メディア挿入失敗通知
                    116:        void OnInsertCDFailed(wxCommandEvent& event);
1.1       root      117: 
                    118:        wxDECLARE_EVENT_TABLE();
                    119: };
                    120: 
                    121: 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.