--- nono/wx/wxmainframe.h 2026/04/29 17:05:23 1.1.1.15 +++ nono/wx/wxmainframe.h 2026/04/29 17:05:53 1.1.1.20 @@ -16,10 +16,13 @@ class FDDDevice; class Keyboard; -class MPUDevice; +class HostCOMDevice; +class HostNetDevice; +class HostSoundDevice; class PowerDevice; class SCSITarget; class Syncer; +class WXBitmapPanel; class WXMainView; class WXStatusPanel; @@ -27,12 +30,13 @@ class WXMainFrame : public wxFrame { using inherited = wxFrame; public: - WXMainFrame(wxWindow *); - virtual ~WXMainFrame() override; + explicit WXMainFrame(wxWindow *); + ~WXMainFrame() override; // (設定反映などの) 初期化 bool Init(); + void Fit() override; bool Layout() override; // ウィンドウをリストから削除する。 @@ -49,6 +53,11 @@ class WXMainFrame : public wxFrame // メンバの取得 WXMainView *GetMainView() { return mainview; } + // ホストドライバ用のメニューを作成して返す + void CreateHostNetMenu(wxMenu *, uint unit); + void CreateHostComMenu(wxMenu *, int n); + void CreateHostSoundMenu(wxMenu *); + // SCSI リムーバブルデバイス、FD 用のメニューを作成して返す wxMenu *CreateSCSIRemovableMenu(uint id) const; wxMenu *CreateFDMenu(int unit) const; @@ -63,6 +72,9 @@ class WXMainFrame : public wxFrame // CD をイジェクトする void EjectCD(int id, bool force); + // ウィンドウタイトルを設定。 + void SetMyTitle(bool mousemode); + private: void OnIdle(wxIdleEvent& event); void OnClose(wxCloseEvent& event); @@ -80,6 +92,16 @@ class WXMainFrame : public wxFrame void OnFullSpeedUI(wxUpdateUIEvent& event); void OnMenuInput(wxCommandEvent& event); void OnMenuInputUI(wxUpdateUIEvent& event); + void OnMenuHostNet(wxCommandEvent& event); + void OnMenuHostNetUI(wxUpdateUIEvent& event); + void OnMenuHostCom(wxCommandEvent& event); + void OnMenuHostComUI(wxUpdateUIEvent& event); + void OnMenuHostSound(wxCommandEvent& event); + void OnMenuHostSoundUI(wxUpdateUIEvent& event); + void OnHostNetFailed(wxCommandEvent& event); + void OnHostComFailed(wxCommandEvent& event); + void OnHostSoundFailed(wxCommandEvent& event); + void HostDriverFailed(const wxString& hostdev, const wxString& errmsg); void OnMenuScale(wxCommandEvent& event); void OnMenuScaleUI(wxUpdateUIEvent& event); @@ -117,7 +139,7 @@ class WXMainFrame : public wxFrame void AppendIf(wxMenu *, int id, const wxString& label); int CreateMainviewScaleTable(); - int CreateMonRateTable(); + void CreateMonRateTable(); // リムーバブルデバイス用のメニューを作成して追加する void CreateRemovableMenu(wxMenu *); @@ -128,8 +150,12 @@ class WXMainFrame : public wxFrame // 指定 ID のサブウィンドウがリストにあれば true を返す bool IsExistWindow(int id); - // MPU 名を返す - wxString MPUName() const; + // UI 表示用テキストを返す。 + wxString GetHostNetLabel(uint n) const; + wxString GetHostComLabel(uint n) const; + + // メイン MPU 名を返す + wxString MPUName() const { return mpuname; } // サブウィンドウリスト std::unique_ptr windows[ID_SUBWIN_MAX] {}; @@ -142,9 +168,15 @@ class WXMainFrame : public wxFrame // (6台構成のことは考えていない) std::array fdd_array {}; + // ウィンドウタイトル + wxString frame_title {}; + // ファイルダイアログを表示する際のカレントディレクトリ std::string current_dir {}; + // MPU 名 + std::string mpuname {}; + // ダブルバスフォールト・イベント void OnHaltNotify(wxCommandEvent& event); // メディア挿入失敗通知 @@ -152,9 +184,14 @@ class WXMainFrame : public wxFrame WXMainView *mainview {}; WXStatusPanel *statuspanel {}; + WXBitmapPanel *spaceL {}; + WXBitmapPanel *spaceR {}; Keyboard *keyboard {}; - MPUDevice *mpu {}; + std::array hostnet {}; + std::array hostcom {}; + HostCOMDevice *hostcom_dbg {}; + HostSoundDevice *hostsound {}; PowerDevice *power {}; Syncer *syncer {};