--- nono/wx/wxmonitor.h 2026/04/29 17:04:28 1.1 +++ nono/wx/wxmonitor.h 2026/04/29 17:05:57 1.1.1.13 @@ -1,40 +1,88 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt +// + +// +// モニターウィンドウ // #pragma once -#include "object.h" #include "wxsubwindow.h" +#include "wxtextscreen.h" +#include "wxscrollbar.h" -// -// モニターウィンドウ -// +// モニタパネル +class WXMonitorPanel : public WXTextScreen +{ + using inherited = WXTextScreen; + public: + WXMonitorPanel(wxWindow *parent, Monitor *monitor_); + ~WXMonitorPanel() override; + + void FontChanged() override; + + // 画面を更新して再描画する。 + virtual void DoRefresh(); + + // 更新頻度設定 + void SetRate(int hz); + + Monitor *GetMonitor() const { return monitor; } + + private: + void OnTimer(wxTimerEvent&); + + Monitor *monitor {}; + wxTimer timer {}; + + wxDECLARE_EVENT_TABLE(); +}; + +// モニタウィンドウ (サイズ固定) class WXMonitorWindow : public WXSubWindow { - typedef WXSubWindow inherited; + using inherited = WXSubWindow; public: - WXMonitorWindow(wxWindow *parent, wxWindowID id, const wxString& name, - Object *obj); - virtual ~WXMonitorWindow(); + WXMonitorWindow(wxWindow *parent, const wxString& name, + Monitor *monitor_); + ~WXMonitorWindow() override; + + protected: + // モニタパネル + WXMonitorPanel *monpanel {}; +}; - // フォントサイズ変更 - virtual void SetFontSize(fontsize_t fontsize); +// 縦スクロールバー付きモニタウィンドウ +class WXScrollMonitorWindow : public WXSubWindow +{ + using inherited = WXSubWindow; + public: + WXScrollMonitorWindow(wxWindow *parent, const wxString& name, + Monitor *monitor_); + ~WXScrollMonitorWindow() override; + + void FontChanged() override; + bool Layout() override; + + protected: + // モニタパネル + WXMonitorPanel *monpanel {}; private: - // タイマーイベント - void OnTimer(wxTimerEvent& event); + bool GetMySizeHints(wxSize *, wxSize *, wxSize *, wxSize *) override; - // モニター - Object *object = NULL; + // マウスホイールイベント + void OnMouseWheel(wxMouseEvent&); - // テキストスクリーン - WXTextScreen *screen = NULL; + // スクロールイベント + void OnScroll(wxScrollEvent& event); - // タイマー - wxTimer timer; + // スクロール処理 + void DoScroll(int pos); - // イベントテーブル - wxDECLARE_EVENT_TABLE(); + // スクロールバー + WXScrollBar *vscroll {}; };