|
|
1.1 root 1: //
2: // nono
1.1.1.2 root 3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
1.1 root 5: //
6:
7: #pragma once
8:
9: #include "wxsubwindow.h"
1.1.1.5 ! root 10: #include "monitor.h"
1.1 root 11:
12: //
13: // メモリダンプウィンドウ
14: //
1.1.1.5 ! root 15: class WXMemdumpWindow : public WXVResizeSubWindow
1.1 root 16: {
1.1.1.3 root 17: using inherited = WXVResizeSubWindow;
1.1 root 18: public:
1.1.1.5 ! root 19: WXMemdumpWindow(wxWindow *parent, int idx_);
1.1.1.3 root 20: virtual ~WXMemdumpWindow() override;
21:
1.1.1.5 ! root 22: // ウィンドウID(モニタID) に対応する sticky address を取得する
! 23: static uint32 GetStickyAddr(int id);
! 24: // ウィンドウID(モニタID) に対応する sitcky address を設定する
! 25: static void SetStickyAddr(int id, uint32 addr);
1.1 root 26:
27: private:
1.1.1.3 root 28: // ウィンドウサイズ再計算
29: void DoSize() override;
30:
1.1 root 31: // テキスト入力イベント
32: void OnTextEnter(wxCommandEvent& event);
33:
34: // ページアップダウンイベント
35: void OnPrev(wxCommandEvent& event);
36: void OnNext(wxCommandEvent& event);
37:
1.1.1.5 ! root 38: // アドレス欄を更新
! 39: void UpdateAddr();
1.1 root 40:
1.1.1.5 ! root 41: // コントロール
! 42: wxTextCtrl *addrctrl {};
1.1.1.4 root 43: wxButton *prev_btn {};
44: wxButton *next_btn {};
1.1 root 45:
1.1.1.3 root 46: // コントロールパネルを格納する sizer
47: wxBoxSizer *ctrlbox {};
48:
1.1.1.5 ! root 49: // 識別子、または sticky_addr[] の添字。
! 50: // メモリダンプウィンドウは複数枚あるので自分がそのうちの何番目か。
! 51: int idx {};
1.1 root 52:
53: // イベントテーブル
54: wxDECLARE_EVENT_TABLE();
1.1.1.5 ! root 55:
! 56: // 開始番地の二次記憶域。
! 57: // サブウィンドウは今のところ開いてる時だけオブジェクトが存在している
! 58: // タイプだが、メモリダンプウィンドウを閉じてまた開くとさっきのアドレスが
! 59: // 見えていてほしいので、ここでその状況を真似する。
! 60: // こっちはあくまで補助用の領域で、現在表示中のアドレスの一次情報は
! 61: // screen.userdata のほう。
! 62: static std::array<uint32, MAX_MEMDUMP_MONITOR> sticky_addr;
1.1 root 63: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.