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

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,
1.1.1.3 ! root       29:        // 共通デバイス
1.1       root       30:        WinID_MONITOR_SPC,
                     31:        WinID_MONITOR_RTC,
1.1.1.3 ! root       32:        // X68030 デバイス
        !            33:        WinID_MONITOR_DMAC,
        !            34:        WinID_MONITOR_MFP,
        !            35:        WinID_MONITOR_SCC,
        !            36:        // LUNA デバイス
1.1       root       37:        WinID_MONITOR_SIO,
1.1.1.2   root       38:        WinID_MONITOR_LUNAKEYBOARD,
1.1       root       39:        WinID_MONITOR_LCD,
                     40:        WinID_MONITOR_LANCE,
                     41:        WinID_MONITOR_BITMAP,
                     42:        WinID_MONITOR_BITMAP0,
1.1.1.3 ! root       43:        // ホストデバイス
1.1       root       44:        WinID_MONITOR_NETDRIVER,
                     45:        WinID_SOFTKEY,
                     46: 
                     47:        // ウィンドウ ID ここまで。
                     48:        WinID_MAX,
                     49: 
                     50:        // ここからそれ以外の ID
                     51:        ID_FULL_SPEED = WinID_MAX,
                     52:        ID_SCALE_START,
                     53:        ID_SCALE_1_00,
                     54:        ID_SCALE_0_75,
                     55:        ID_SCALE_0_50,
                     56:        ID_SCALE_END,
                     57: 
                     58:        ID_FONTSIZE_START, // START 以降は fontsize_t と同じ順に並べること
                     59:        ID_FONTSIZE_12,
                     60:        ID_FONTSIZE_16,
                     61:        ID_FONTSIZE_24,
                     62:        ID_FONTSIZE_END,
1.1.1.2   root       63: 
                     64:        ID_MOUSEMODE,
1.1       root       65: };
                     66: 
                     67: class WXMainFrame
                     68:        : public wxFrame
                     69: {
                     70:        typedef wxFrame inherited;
                     71:  public:
                     72:        WXMainFrame(wxWindow *);
                     73:        virtual ~WXMainFrame();
                     74: 
                     75:        // ウィンドウをリストから削除する。
                     76:        // ウィンドウをクローズする際に呼び出すこと。
                     77:        void DeleteWindow(wxWindowID id);
                     78: 
                     79:        // VM からの電源オフコールバック
                     80:        void PowerOffCallback();
                     81: 
                     82:        // モニタウィンドウ識別名一覧
                     83:        // (引数 -M で指定されるやつ)
                     84:        static const char *monitor_names[WinID_MAX];
                     85: 
                     86:        // 起動時にオープンするモニタウィンドウの一覧
                     87:        static std::array<bool, WinID_MAX> monitor_start;
                     88: 
                     89:  private:
                     90:        void OnCreate(wxCommandEvent& event);
1.1.1.3 ! root       91:        void OnClose(wxCloseEvent& event);
1.1       root       92: 
                     93:        void OnFullSpeed(wxCommandEvent& event);
                     94:        void OnFullSpeedUI(wxUpdateUIEvent& event);
                     95: 
                     96:        void OnExit(wxCommandEvent&);
                     97: 
                     98:        void OnMenuScale(wxCommandEvent& event);
                     99:        void OnMenuScaleUI(wxUpdateUIEvent& event);
                    100:        void OnMenuFontSize(wxCommandEvent& event);
                    101:        void OnMenuFontSizeUI(wxUpdateUIEvent& event);
                    102: 
1.1.1.2   root      103:        void OnMouseMode(wxCommandEvent& event);
                    104:        void OnMouseModeUI(wxUpdateUIEvent& event);
                    105: 
1.1       root      106:        void OnWindow(wxCommandEvent&);
                    107:        void DoWindow(int id, bool enable);
                    108:        void OnWindowUI(wxUpdateUIEvent&);
                    109: 
                    110:        // ウィンドウをリストに追加する。
                    111:        void AddWindow(int id, wxWindow *);
                    112: 
                    113:        // 指定 ID のサブウィンドウがリストにあれば true を返す
                    114:        bool IsExistWindow(int id);
                    115: 
                    116:        // サブウィンドウリスト
                    117:        wxWindow *windows[WinID_MAX] {};
                    118: 
                    119:        wxDECLARE_EVENT_TABLE();
                    120: };
                    121: 
                    122: 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.