public static bool ShowMessageBox(Cv_MessageBoxParams mBoxParams, out Cv_ButtonType result) { var colorScheme = new SDL.SDL_MessageBoxColorScheme(); var sdlBgColor = new SDL.SDL_MessageBoxColor(); sdlBgColor.r = mBoxParams.bgColor.R; sdlBgColor.g = mBoxParams.bgColor.G; sdlBgColor.b = mBoxParams.bgColor.B; var sdlTextColor = new SDL.SDL_MessageBoxColor(); sdlTextColor.r = mBoxParams.textColor.R; sdlTextColor.g = mBoxParams.textColor.G; sdlTextColor.b = mBoxParams.textColor.B; var sdlBorderColor = new SDL.SDL_MessageBoxColor(); sdlBorderColor.r = mBoxParams.btBorderColor.R; sdlBorderColor.g = mBoxParams.btBorderColor.G; sdlBorderColor.b = mBoxParams.btBorderColor.B; var sdlBtBgColor = new SDL.SDL_MessageBoxColor(); sdlBtBgColor.r = mBoxParams.btBgColor.R; sdlBtBgColor.g = mBoxParams.btBgColor.G; sdlBtBgColor.b = mBoxParams.btBgColor.B; var sdlBtSelectedColor = new SDL.SDL_MessageBoxColor(); sdlBtSelectedColor.r = mBoxParams.btSelectedColor.R; sdlBtSelectedColor.g = mBoxParams.btSelectedColor.G; sdlBtSelectedColor.b = mBoxParams.btSelectedColor.B; colorScheme.colors = new SDL.SDL_MessageBoxColor[] { sdlBgColor, sdlTextColor, sdlBorderColor, sdlBtBgColor, sdlBtSelectedColor }; SDL.SDL_MessageBoxFlags flags; switch (mBoxParams.messageType) { case Cv_MessageType.CV_MESSAGE_ERROR: flags = SDL.SDL_MessageBoxFlags.SDL_MESSAGEBOX_ERROR; break; case Cv_MessageType.CV_MESSAGE_WARNING: flags = SDL.SDL_MessageBoxFlags.SDL_MESSAGEBOX_WARNING; break; default: flags = SDL.SDL_MessageBoxFlags.SDL_MESSAGEBOX_INFORMATION; break; } var btArray = new SDL.SDL_MessageBoxButtonData[mBoxParams.buttons.Length]; for (var i = 0; i < mBoxParams.buttons.Length; i++) { btArray[i] = new SDL.SDL_MessageBoxButtonData(); if (mBoxParams.buttons[i] == mBoxParams.defaultButton) { btArray[i].flags = SDL.SDL_MessageBoxButtonFlags.SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT; } else { btArray[i].flags = 0; } btArray[i].text = GetButtonText(mBoxParams.buttons[i]); btArray[i].buttonid = (int)mBoxParams.buttons[i]; } var messageBoxData = new SDL.SDL_MessageBoxData(); messageBoxData.flags = flags; messageBoxData.window = IntPtr.Zero; messageBoxData.title = mBoxParams.title; messageBoxData.message = mBoxParams.message; messageBoxData.numbuttons = mBoxParams.buttons.Length; messageBoxData.buttons = btArray; messageBoxData.colorScheme = colorScheme; // show the dialog box int sdlResult; if (SDL.SDL_ShowMessageBox(ref messageBoxData, out sdlResult) < 0) { result = Cv_ButtonType.CV_BUTTON_ABORT; return(false); } result = (Cv_ButtonType)sdlResult; return(true); }
private Cv_ErrorDialogResult Error(string message, bool isFatal, string funcName, string sourceFile, int lineNum) { string tag = ((isFatal) ? "FATAL" : "ERROR"); string finalString = GetOutputString(tag, message, funcName, sourceFile, lineNum); lock (m_TagLock) { ushort flags; if (m_Tags.TryGetValue(tag, out flags)) { if ((flags & CV_LOGFLAG_WRITETOFILE) > 0) { WriteToLogFile(finalString); } if ((flags & CV_LOGFLAG_WRITETODEBUGGER) > 0) { OutputToDebug(finalString); } } } var mBoxParams = new Cv_MessageBoxParams(); mBoxParams.buttons = new Cv_ButtonType[] { Cv_ButtonType.CV_BUTTON_ABORT, Cv_ButtonType.CV_BUTTON_RETRY, Cv_ButtonType.CV_BUTTON_IGNORE }; mBoxParams.defaultButton = Cv_ButtonType.CV_BUTTON_RETRY; mBoxParams.bgColor = Color.White; mBoxParams.textColor = Color.Black; mBoxParams.btBorderColor = Color.DarkGray; mBoxParams.btBgColor = Color.LightGray; mBoxParams.btSelectedColor = Color.Gray; mBoxParams.title = tag; mBoxParams.message = finalString; mBoxParams.messageType = Cv_MessageType.CV_MESSAGE_ERROR; Cv_ButtonType result; if (!ShowMessageBox(mBoxParams, out result)) { throw new Exception("Error opening dialog box."); } switch (result) { case Cv_ButtonType.CV_BUTTON_ABORT: Debugger.Break(); return(Cv_ErrorDialogResult.CV_LOGERROR_ABORT); case Cv_ButtonType.CV_BUTTON_IGNORE: return(Cv_ErrorDialogResult.CV_LOGERROR_IGNORE); default: return(Cv_ErrorDialogResult.CV_LOGERROR_RETRY); } }