Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }