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