--- nono/wx/wxmainview.h 2026/04/29 17:04:42 1.1.1.6 +++ nono/wx/wxmainview.h 2026/04/29 17:05:12 1.1.1.12 @@ -4,20 +4,24 @@ // Licensed under nono-license.txt // +// +// メイン画面パネル +// + #pragma once -#include "wxheader.h" -#include +#include "wxnono.h" -class WXMainView - : public wxPanel +class WXMainView : public wxPanel { using inherited = wxPanel; public: WXMainView(wxWindow *); - virtual ~WXMainView(); + virtual ~WXMainView() override; + + bool Init(); - void DoRefresh(); + void Close(); void DoResize(double scale); // 現在のスケールを返す @@ -25,6 +29,10 @@ class WXMainView // 現在のスケール (wxapp が初期値を指定するため static 変数にしてある) static double screen_scale; + // 文字入力モードを取得・設定 + bool GetCharInputMode() const { return is_charinput; } + void SetCharInputMode(bool enable); + // マウスモードを設定 void SetMouseMode(bool enable); // マウスモードを取得 (キャプチャされているなら true) @@ -32,16 +40,17 @@ class WXMainView // アクティベートイベント void OnActivate(wxActivateEvent& event); + // キー入力イベント (WXSoftKeyPanel からも呼ばれる) + void OnKeyDown(wxKeyEvent& event); + void OnKeyUp(wxKeyEvent& event); + void OnChar(wxKeyEvent& event); + private: void OnTimer(wxTimerEvent& event); void OnPaint(wxPaintEvent& event); - void OnKeyDown(wxKeyEvent& event); - void OnKeyUp(wxKeyEvent& event); void OnMouse(wxMouseEvent& event); - - // 裏バッファ。 - // VM がレンダリングするバッファ。 - std::unique_ptr ImageBuf {}; + void OnMouseCaptureLost(wxMouseCaptureLostEvent& event); + void OnRender(wxCommandEvent& event); // 仮想画面サイズ (ピクセル) int rendwidth {}; @@ -54,11 +63,10 @@ class WXMainView // 共通キーコードを取得する int GetKeyCode(wxKeyEvent& event); -#if defined(__WXGTK__) - static const int keycode_table[0xd4]; -#elif defined(__WXOSX__) - static const int keycode_table[0x80]; -#endif + static const int keycode_table[0x190]; + + // 文字入力モードなら true + bool is_charinput {}; // マウスモード (キャプチャしていれば true) bool mousemode {}; @@ -73,10 +81,6 @@ class WXMainView // マウスカーソルを移動させる void MyWarpPointer(wxSize pos); - // 再描画を律速する - wxTimer timer {}; - std::atomic paint_request {}; - wxDECLARE_EVENT_TABLE(); };