/****************************************************************************** Copyright (C) 2013 by Hugh Bailey This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ******************************************************************************/ #include #include #include #include "wx-wrappers.hpp" #include using namespace std; #ifdef __linux__ #include #include #endif #include using namespace std; gs_window WxToGSWindow(const wxWindow *wxwin) { gs_window window; #ifdef __APPLE__ window.view = (id)wxwin->GetHandle(); #elif _WIN32 window.hwnd = wxwin->GetHandle(); #else window.id = gdk_x11_drawable_get_xid(gtk_widget_get_window(wxwin->GetHandle())); #endif return window; } void OBSErrorBox(wxWindow *parent, const char *message, ...) { va_list args; char output[4096]; va_start(args, message); vsnprintf(output, 4095, message, args); va_end(args); wxMessageBox(message, "Error", wxOK|wxCENTRE, parent); blog(LOG_ERROR, "%s", output); } class MenuWrapper : public wxEvtHandler { public: int retId; inline MenuWrapper() : retId(-1) {} void GetItem(wxCommandEvent &event) { retId = event.GetId(); } }; int WXDoPopupMenu(wxWindow *parent, wxMenu *menu) { unique_ptr wrapper(new MenuWrapper); menu->Connect(wxEVT_MENU, wxCommandEventHandler(MenuWrapper::GetItem), NULL, wrapper.get()); bool success = parent->PopupMenu(menu); menu->Disconnect(wxEVT_MENU, wxCommandEventHandler(MenuWrapper::GetItem), NULL, wrapper.get()); return (success) ? wrapper->retId : -1; }