#ifndef WHERIGO_DIALOG_H #define WHERIGO_DIALOG_H #include #include #include #include #include namespace wherigo { struct DialogEntry { std::string text; std::string mediaName; std::vector buttons; }; class WherigoMessageDialog : public wxDialog { public: WherigoMessageDialog(wxWindow *parent, const wxString &text, const wxString &title = "Wherigo", const std::vector &buttons = {}, const wxString &mediaName = ""); int getSelectedButton() const { return m_selectedButton; } private: void onButton(wxCommandEvent &event); int m_selectedButton = -1; }; class WherigoDialogRunner { public: static WherigoDialogRunner& getInstance(); void showMessageBox(const wxString &text, const wxString &title = "Wherigo", std::function callback = nullptr); void showDialog(const std::vector &entries, std::function callback = nullptr); private: WherigoDialogRunner() = default; }; } // namespace wherigo #endif // WHERIGO_DIALOG_H