--- nono/wx/wxlogmonitor.h 2026/04/29 17:05:44 1.1.1.11 +++ nono/wx/wxlogmonitor.h 2026/04/29 17:05:48 1.1.1.12 @@ -18,39 +18,17 @@ 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" }; }; // ログウィンドウ @@ -66,11 +44,11 @@ class WXLogMonitor : public WXSubWindow void FontChanged() override; bool Layout() override; - private: - void Fit() override; + // スクロールバー再設定 + void SetScroll(); - // 最大/最小サイズ設定 - wxSize DoSizeHints(); + private: + bool GetMySizeHints(wxSize *, wxSize *, wxSize *, wxSize *) override; // マウスホイールイベント void OnMouseWheel(wxMouseEvent&); @@ -78,35 +56,13 @@ class WXLogMonitor : public WXSubWindow // スクロールイベント void OnScroll(wxScrollEvent&); - // スクロールバー再設定 - void SetScroll(); - // スクロール処理 void DoScroll(int pos); - WXMonitorPanel *screen {}; + LogMonitorPanel *screen {}; // スクロールバー WXScrollBar *vscroll {}; - int col {}; - int row {}; - - // 表示開始位置 - // パネル最下行に表示する行を、最新行からのオフセットで表す。 - // 0 ならパネル最下行は最新行、1 なら一つ手前の行…となる。 - int vpos {}; - - // 現在のログ行数 - int lines {}; - - // モニター - std::unique_ptr monitor /*{}*/; - LogMonitor log {}; - - // 前回のウィンドウマージン (クライアント領域の外側) - wxSize oldmargin {}; - - // 謎のリサイズ対策 - bool layout_pass2 {}; + Logger *logger {}; };