--- nono/wx/wxlogmonitor.h 2026/04/29 17:05:08 1.1.1.7 +++ nono/wx/wxlogmonitor.h 2026/04/29 17:05:48 1.1.1.12 @@ -12,60 +12,43 @@ #include "wxsubwindow.h" #include "wxscrollbar.h" -#include "wxtextscreen.h" +#include "wxmonitor.h" class Logger; class WXLogMonitor; // モニター部分 -class LogMonitor : public Object +class LogMonitorPanel : public WXMonitorPanel { - using inherited = Object; + using inherited = WXMonitorPanel; public: - LogMonitor(); - ~LogMonitor() override; + LogMonitorPanel(WXLogMonitor *parent_, Monitor *monitor_); + ~LogMonitorPanel() override; - void Init(WXLogMonitor *parent_); - - DECLARE_MONITOR_CALLBACK(MonitorUpdate); - - // バックログに追加 - void Append(const char *); - - // 1行追加された時の下請け処理 - void IncLines(); + void DoRefresh() override; private: WXLogMonitor *parent {}; - - Logger *logger {}; - - // ログ全体の行数(上限) - const int backlog = 10000; - - // ログバッファ - TextScreen logbuf {}; - - // 今から書き込む行の logbuf でのY座標 - int cursor {}; - - // UTF-8 -> CP932 変換 - wxCSConv conv { "CP932" }; }; // ログウィンドウ -class WXLogMonitor : public WXVResizeSubWindow +class WXLogMonitor : public WXSubWindow { - using inherited = WXVResizeSubWindow; + using inherited = WXSubWindow; friend class LogMonitor; public: - WXLogMonitor(wxWindow *); - virtual ~WXLogMonitor() override; + explicit WXLogMonitor(wxWindow *); + ~WXLogMonitor() override; + + void FontChanged() override; + bool Layout() override; + + // スクロールバー再設定 + void SetScroll(); private: - // サイズ変更イベント - void OnSize(wxSizeEvent&); + bool GetMySizeHints(wxSize *, wxSize *, wxSize *, wxSize *) override; // マウスホイールイベント void OnMouseWheel(wxMouseEvent&); @@ -73,30 +56,13 @@ class WXLogMonitor : public WXVResizeSub // スクロールイベント void OnScroll(wxScrollEvent&); - // スクロールバー再設定 - void SetScroll(); - // スクロール処理 void DoScroll(int pos); + LogMonitorPanel *screen {}; + // スクロールバー WXScrollBar *vscroll {}; - int col {}; - int row {}; - - // 表示開始位置 - // パネル最下行に表示する行を、最新行からのオフセットで表す。 - // 0 ならパネル最下行は最新行、1 なら一つ手前の行…となる。 - int vpos {}; - - // 現在のログ行数 - int lines {}; - - // モニター - Monitor monitor {}; - LogMonitor log {}; - - // イベントテーブル - wxDECLARE_EVENT_TABLE(); + Logger *logger {}; };