--- nono/wx/wxlogmonitor.h 2026/04/29 17:04:53 1.1.1.5 +++ nono/wx/wxlogmonitor.h 2026/04/29 17:04:56 1.1.1.6 @@ -9,17 +9,54 @@ #include "wxsubwindow.h" #include "wxtextscreen.h" -class WXLogMonitor : public WXVResizeSubWindow, public IMonitor +class WXLogMonitor; + +// モニター部分 +class LogMonitor : public Object +{ + using inherited = Object; + public: + LogMonitor(); + ~LogMonitor() override; + + void Init(WXLogMonitor *parent_); + + DECLARE_MONITOR_CALLBACK(MonitorUpdate); + + // バックログに追加 + void Append(const char *); + + // 1行追加された時の下請け処理 + void IncLines(); + + private: + WXLogMonitor *parent {}; + + // ログ全体の行数(上限) + const int backlog = 10000; + + // ログバッファ + TextScreen logbuf {}; + + // 今から書き込む行の logbuf でのY座標 + int cursor {}; + + // UTF-8 -> CP932 変換 + wxCSConv conv { "CP932" }; +}; + +// +// ログウィンドウ +// +class WXLogMonitor : public WXVResizeSubWindow { using inherited = WXVResizeSubWindow; + friend class LogMonitor; public: - WXLogMonitor(wxWindow *, wxWindowID); + WXLogMonitor(wxWindow *); virtual ~WXLogMonitor() override; - nnSize GetMonitorSize() override; - void MonitorUpdate(TextScreen& ts) override; - private: // サイズ変更イベント void OnSize(wxSizeEvent&); @@ -39,12 +76,6 @@ class WXLogMonitor : public WXVResizeSub // ウィンドウサイズ再計算 void DoSize() override; - // バックログに追加 - void Append(const char *); - - // 1行追加された時の下請け処理 - void IncLines(); - // スクロールバー wxScrollBar *vscroll {}; @@ -59,17 +90,9 @@ class WXLogMonitor : public WXVResizeSub // 現在のログ行数 int lines {}; - // ログ全体の行数(上限) - const int backlog = 10000; - - // ログバッファ - TextScreen logbuf {}; - - // 今から書き込む行の logbuf でのY座標 - int cursor {}; - - // UTF-8 -> CP932 変換 - wxCSConv conv { "CP932" }; + // モニター + Monitor monitor {}; + LogMonitor log {}; // イベントテーブル wxDECLARE_EVENT_TABLE();