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

1.1     ! root        1: //
        !             2: // nono
        !             3: // Copyright (C) 2018 [email protected]
        !             4: //
        !             5: 
        !             6: #pragma once
        !             7: 
        !             8: #include <array>
        !             9: 
        !            10: enum {
        !            11:        // ID は 0 から (wxID_LOWEST = 5000 未満まで) 使えるっぽい。
        !            12:        // メニュー ID はメニュー ID 内で一意という制約があるだけ。
        !            13:        // メニュー ID のうちウィンドウのオープン状態を維持する必要がある
        !            14:        // ものはリスト(なり配列なり)で管理したいが、ID が 0 から使えるのなら
        !            15:        // 0 から割り当てて配列で管理してしまうのが手っ取り早い。
        !            16:        // ウィンドウに割り当てるウィンドウ ID とメニューイベントで飛んでくる
        !            17:        // メニュー ID は互いに干渉しないはずなので、同じ値を使ってメニューと
        !            18:        // ウィンドウの紐付けをする。
        !            19: 
        !            20:        // ウィンドウ ID (メニュー ID としても使う)
        !            21:        // wxmainframe.cpp 末尾の monitor_names[] と一致させること
        !            22:        WinID_Start = 0,
        !            23:        WinID_MONITOR_LOG = WinID_Start,
        !            24:        WinID_MONITOR_SCHEDULER,
        !            25:        WinID_MONITOR_MPUREG,
        !            26:        WinID_MONITOR_MPUATC,
        !            27:        WinID_MONITOR_MPUBRHIST,
        !            28:        WinID_MONITOR_MEMDUMP,
        !            29:        WinID_MONITOR_MFP,
        !            30:        WinID_MONITOR_SPC,
        !            31:        WinID_MONITOR_RTC,
        !            32:        WinID_MONITOR_SIO,
        !            33:        WinID_MONITOR_LCD,
        !            34:        WinID_MONITOR_LANCE,
        !            35:        WinID_MONITOR_BITMAP,
        !            36:        WinID_MONITOR_BITMAP0,
        !            37:        WinID_MONITOR_NETDRIVER,
        !            38:        WinID_SOFTKEY,
        !            39: 
        !            40:        // ウィンドウ ID ここまで。
        !            41:        WinID_MAX,
        !            42: 
        !            43:        // ここからそれ以外の ID
        !            44:        ID_FULL_SPEED = WinID_MAX,
        !            45:        ID_SCALE_START,
        !            46:        ID_SCALE_1_00,
        !            47:        ID_SCALE_0_75,
        !            48:        ID_SCALE_0_50,
        !            49:        ID_SCALE_END,
        !            50: 
        !            51:        ID_FONTSIZE_START, // START 以降は fontsize_t と同じ順に並べること
        !            52:        ID_FONTSIZE_12,
        !            53:        ID_FONTSIZE_16,
        !            54:        ID_FONTSIZE_24,
        !            55:        ID_FONTSIZE_END,
        !            56: };
        !            57: 
        !            58: class WXMainFrame
        !            59:        : public wxFrame
        !            60: {
        !            61:        typedef wxFrame inherited;
        !            62:  public:
        !            63:        WXMainFrame(wxWindow *);
        !            64:        virtual ~WXMainFrame();
        !            65: 
        !            66:        // ウィンドウをリストから削除する。
        !            67:        // ウィンドウをクローズする際に呼び出すこと。
        !            68:        void DeleteWindow(wxWindowID id);
        !            69: 
        !            70:        // VM からの電源オフコールバック
        !            71:        void PowerOffCallback();
        !            72: 
        !            73:        // モニタウィンドウ識別名一覧
        !            74:        // (引数 -M で指定されるやつ)
        !            75:        static const char *monitor_names[WinID_MAX];
        !            76: 
        !            77:        // 起動時にオープンするモニタウィンドウの一覧
        !            78:        static std::array<bool, WinID_MAX> monitor_start;
        !            79: 
        !            80:  private:
        !            81:        void OnCreate(wxCommandEvent& event);
        !            82: 
        !            83:        void OnFullSpeed(wxCommandEvent& event);
        !            84:        void OnFullSpeedUI(wxUpdateUIEvent& event);
        !            85: 
        !            86:        void OnExit(wxCommandEvent&);
        !            87: 
        !            88:        void OnMenuScale(wxCommandEvent& event);
        !            89:        void OnMenuScaleUI(wxUpdateUIEvent& event);
        !            90:        void OnMenuFontSize(wxCommandEvent& event);
        !            91:        void OnMenuFontSizeUI(wxUpdateUIEvent& event);
        !            92: 
        !            93:        void OnWindow(wxCommandEvent&);
        !            94:        void DoWindow(int id, bool enable);
        !            95:        void OnWindowUI(wxUpdateUIEvent&);
        !            96: 
        !            97:        // ウィンドウをリストに追加する。
        !            98:        void AddWindow(int id, wxWindow *);
        !            99: 
        !           100:        // 指定 ID のサブウィンドウがリストにあれば true を返す
        !           101:        bool IsExistWindow(int id);
        !           102: 
        !           103:        // サブウィンドウリスト
        !           104:        wxWindow *windows[WinID_MAX] {};
        !           105: 
        !           106:        wxDECLARE_EVENT_TABLE();
        !           107: };
        !           108: 
        !           109: 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.