--- nono/wx/wxlogmonitor.h 2026/04/29 17:04:28 1.1 +++ nono/wx/wxlogmonitor.h 2026/04/29 17:05:48 1.1.1.12 @@ -1,49 +1,68 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt +// + +// +// ログモニター // #pragma once #include "wxsubwindow.h" -#include "wxtextscreen.h" +#include "wxscrollbar.h" +#include "wxmonitor.h" -class WXLogMonitor : public WXSubWindow -{ - typedef WXSubWindow inherited; +class Logger; +class WXLogMonitor; +// モニター部分 +class LogMonitorPanel : public WXMonitorPanel +{ + using inherited = WXMonitorPanel; public: - WXLogMonitor(wxWindow *, wxWindowID); - virtual ~WXLogMonitor(); + LogMonitorPanel(WXLogMonitor *parent_, Monitor *monitor_); + ~LogMonitorPanel() override; - virtual void SetFontSize(fontsize_t fontsize); + void DoRefresh() override; private: - void OnTimer(wxTimerEvent& event); + WXLogMonitor *parent {}; +}; - void Append(const char *); +// ログウィンドウ +class WXLogMonitor : public WXSubWindow +{ + using inherited = WXSubWindow; + friend class LogMonitor; + + public: + explicit WXLogMonitor(wxWindow *); + ~WXLogMonitor() override; + + void FontChanged() override; + bool Layout() override; - // テキストスクリーンコントロール - WXTextScreen *screen = NULL; + // スクロールバー再設定 + void SetScroll(); - // テキストスクリーン - TextScreen text; + private: + bool GetMySizeHints(wxSize *, wxSize *, wxSize *, wxSize *) override; - int col = 0; - int row = 0; + // マウスホイールイベント + void OnMouseWheel(wxMouseEvent&); - // ログバッファ - // ここは属性フィールドを持たないテキストによる循環バッファ - uint8 *logbuf = NULL; + // スクロールイベント + void OnScroll(wxScrollEvent&); - // 書き込み位置 - int target = 0; + // スクロール処理 + void DoScroll(int pos); - // UTF-8 -> CP932 変換 - wxCSConv conv { "CP932" }; + LogMonitorPanel *screen {}; - wxTimer timer; + // スクロールバー + WXScrollBar *vscroll {}; - // イベントテーブル - wxDECLARE_EVENT_TABLE(); + Logger *logger {}; };