File:  [Isaki's NoNo m68k/m88k emulator] / nono / wx / wxmonitor.h
Revision 1.1.1.13 (vendor branch): download - view: text, annotated - select for diffs
Wed Apr 29 17:05:57 2026 UTC (2 months, 3 weeks ago) by root
Branches: MAIN, Isaki
CVS tags: v027, HEAD
nono 1.7.0

//
// nono
// Copyright (C) 2020 nono project
// Licensed under nono-license.txt
//

//
// モニターウィンドウ
//

#pragma once

#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
{
	using inherited = WXSubWindow;
 public:
	WXMonitorWindow(wxWindow *parent, const wxString& name,
		Monitor *monitor_);
	~WXMonitorWindow() override;

 protected:
	// モニタパネル
	WXMonitorPanel *monpanel {};
};

// 縦スクロールバー付きモニタウィンドウ
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:
	bool GetMySizeHints(wxSize *, wxSize *, wxSize *, wxSize *) override;

	// マウスホイールイベント
	void OnMouseWheel(wxMouseEvent&);

	// スクロールイベント
	void OnScroll(wxScrollEvent& event);

	// スクロール処理
	void DoScroll(int pos);

	// スクロールバー
	WXScrollBar *vscroll {};
};

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.