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

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: 
                      7: #pragma once
                      8: 
1.1.1.4 ! root        9: #include "wxheader.h"
        !            10: #include "vm.h"
1.1       root       11: #include <array>
                     12: 
                     13: enum {
                     14:        // ID は 0 から (wxID_LOWEST = 5000 未満まで) 使えるっぽい。
                     15:        // メニュー ID はメニュー ID 内で一意という制約があるだけ。
                     16:        // メニュー ID のうちウィンドウのオープン状態を維持する必要がある
                     17:        // ものはリスト(なり配列なり)で管理したいが、ID が 0 から使えるのなら
                     18:        // 0 から割り当てて配列で管理してしまうのが手っ取り早い。
                     19:        // ウィンドウに割り当てるウィンドウ ID とメニューイベントで飛んでくる
                     20:        // メニュー ID は互いに干渉しないはずなので、同じ値を使ってメニューと
                     21:        // ウィンドウの紐付けをする。
                     22: 
                     23:        // ウィンドウ ID (メニュー ID としても使う)
1.1.1.4 ! root       24:        // wxmainframe.cpp 末尾の monitor_info[] と一致させること
1.1       root       25:        WinID_Start = 0,
                     26:        WinID_MONITOR_LOG = WinID_Start,
                     27:        WinID_MONITOR_SCHEDULER,
                     28:        WinID_MONITOR_MPUREG,
                     29:        WinID_MONITOR_MPUATC,
1.1.1.4 ! root       30:        WinID_MONITOR_BRHIST68K,
        !            31:        WinID_MONITOR_BRHIST88K,
        !            32:        WinID_MONITOR_CMMU7,
        !            33:        WinID_MONITOR_CMMU6,
        !            34:        WinID_MONITOR_ATC7,
        !            35:        WinID_MONITOR_ATC6,
        !            36:        WinID_MONITOR_CACHE7,
        !            37:        WinID_MONITOR_CACHE6,
1.1       root       38:        WinID_MONITOR_MEMDUMP,
                     39:        WinID_MONITOR_SPC,
                     40:        WinID_MONITOR_RTC,
1.1.1.3   root       41:        WinID_MONITOR_DMAC,
                     42:        WinID_MONITOR_MFP,
                     43:        WinID_MONITOR_SCC,
1.1       root       44:        WinID_MONITOR_SIO,
1.1.1.4 ! root       45:        WinID_MONITOR_PIO0,
1.1.1.2   root       46:        WinID_MONITOR_LUNAKEYBOARD,
1.1       root       47:        WinID_MONITOR_LCD,
                     48:        WinID_MONITOR_LANCE,
1.1.1.4 ! root       49:        WinID_MONITOR_SYSCTLR,
1.1       root       50:        WinID_MONITOR_BITMAP,
                     51:        WinID_MONITOR_BITMAP0,
                     52:        WinID_MONITOR_NETDRIVER,
                     53:        WinID_SOFTKEY,
                     54: 
                     55:        // ウィンドウ ID ここまで。
                     56:        WinID_MAX,
                     57: 
                     58:        // ここからそれ以外の ID
                     59:        ID_FULL_SPEED = WinID_MAX,
                     60:        ID_SCALE_START,
                     61:        ID_SCALE_1_00,
                     62:        ID_SCALE_0_75,
                     63:        ID_SCALE_0_50,
                     64:        ID_SCALE_END,
                     65: 
                     66:        ID_FONTSIZE_START, // START 以降は fontsize_t と同じ順に並べること
                     67:        ID_FONTSIZE_12,
                     68:        ID_FONTSIZE_16,
                     69:        ID_FONTSIZE_END,
1.1.1.2   root       70: 
                     71:        ID_MOUSEMODE,
1.1       root       72: };
                     73: 
                     74: class WXMainFrame
                     75:        : public wxFrame
                     76: {
1.1.1.4 ! root       77:        using inherited = wxFrame;
        !            78: 
        !            79:  public:
        !            80:        // モニタウィンドウ識別名情報
        !            81:        struct monitor_info {
        !            82:                const char * const name;        // モニタ名
        !            83:                vmf_t feature;                          // 機種
        !            84:        };
        !            85: 
1.1       root       86:  public:
                     87:        WXMainFrame(wxWindow *);
                     88:        virtual ~WXMainFrame();
                     89: 
                     90:        // ウィンドウをリストから削除する。
                     91:        // ウィンドウをクローズする際に呼び出すこと。
                     92:        void DeleteWindow(wxWindowID id);
                     93: 
                     94:        // VM からの電源オフコールバック
                     95:        void PowerOffCallback();
                     96: 
1.1.1.4 ! root       97:        // VM からのダブルバスフォールト・コールバック
        !            98:        void HaltCallback();
        !            99: 
1.1       root      100:        // モニタウィンドウ識別名一覧
                    101:        // (引数 -M で指定されるやつ)
1.1.1.4 ! root      102:        static struct monitor_info monitor_info[WinID_MAX];
1.1       root      103: 
                    104:        // 起動時にオープンするモニタウィンドウの一覧
                    105:        static std::array<bool, WinID_MAX> monitor_start;
                    106: 
                    107:  private:
                    108:        void OnCreate(wxCommandEvent& event);
1.1.1.3   root      109:        void OnClose(wxCloseEvent& event);
1.1.1.4 ! root      110:        void OnActivate(wxActivateEvent& event);
1.1       root      111: 
                    112:        void OnFullSpeed(wxCommandEvent& event);
                    113:        void OnFullSpeedUI(wxUpdateUIEvent& event);
                    114: 
                    115:        void OnExit(wxCommandEvent&);
                    116: 
                    117:        void OnMenuScale(wxCommandEvent& event);
                    118:        void OnMenuScaleUI(wxUpdateUIEvent& event);
                    119:        void OnMenuFontSize(wxCommandEvent& event);
                    120:        void OnMenuFontSizeUI(wxUpdateUIEvent& event);
                    121: 
1.1.1.2   root      122:        void OnMouseMode(wxCommandEvent& event);
                    123:        void OnMouseModeUI(wxUpdateUIEvent& event);
                    124: 
1.1       root      125:        void OnWindow(wxCommandEvent&);
                    126:        void DoWindow(int id, bool enable);
                    127:        void OnWindowUI(wxUpdateUIEvent&);
                    128: 
1.1.1.4 ! root      129:        void OnAbout(wxCommandEvent&);
        !           130: 
1.1       root      131:        // ウィンドウをリストに追加する。
                    132:        void AddWindow(int id, wxWindow *);
                    133: 
                    134:        // 指定 ID のサブウィンドウがリストにあれば true を返す
                    135:        bool IsExistWindow(int id);
                    136: 
                    137:        // サブウィンドウリスト
1.1.1.4 ! root      138:        std::unique_ptr<wxWindow> windows[WinID_MAX] {};
        !           139: 
        !           140:        // ダブルバスフォールト・イベント
        !           141:        void OnHaltNotify(wxCommandEvent& event);
1.1       root      142: 
                    143:        wxDECLARE_EVENT_TABLE();
                    144: };
                    145: 
                    146: 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.