Esempio n. 1
0
    public static void ShowBriefly(
        Window aoWindow
        , string asMessageText
        , string asMessageCaption
        , tvMessageBoxIcons aeTvMessageBoxIcon
        , int aiCloseAfterMS
        )
    {
        tvMessageBox loMsgBox = new tvMessageBox();

        loMsgBox.MessageText.Text = asMessageText;

        // Use some parent window attributes, if available.
        if (null != aoWindow)
        {
            // Use the parent window's icon.
            loMsgBox.Icon = aoWindow.Icon;

            // Use the given asMessageCaption as the MsgBox title, if not null.
            // Otherwise use the parent window title with an added question mark.
            loMsgBox.Title = null != asMessageCaption
                                    ? asMessageCaption : aoWindow.Title + "?";
        }

        // Display the MsgBox header / title (ie. the caption), if provided.
        if (null != asMessageCaption)
        {
            loMsgBox.MessageTitle.Content    = asMessageCaption;
            loMsgBox.MessageTitle.Visibility = Visibility.Visible;
        }

        loMsgBox.SelectButtons(tvMessageBoxButtons.OK);
        loMsgBox.SelectIcon(aeTvMessageBoxIcon);
        loMsgBox.Show();

        if (aiCloseAfterMS > 0)
        {
            DateTime ldtCloseTime = DateTime.Now.AddMilliseconds(aiCloseAfterMS);

            while (DateTime.Now < ldtCloseTime)
            {
                System.Windows.Forms.Application.DoEvents();
                System.Threading.Thread.Sleep(200);

                if (loMsgBox.bDialogAccepted)
                {
                    break;
                }
            }

            loMsgBox.Close();
        }
    }
    public static void ShowBriefly(
        Window aoWindow
        , string asMessageText
        , string asMessageCaption
        , tvMessageBoxIcons aeTvMessageBoxIcon
        , int aiCloseAfterMS
        )
    {
        tvMessageBox    loMsgBox = new tvMessageBox();
                        loMsgBox.MessageText.Text = asMessageText;

                        // Use some parent window attributes, if available.
                        if ( null != aoWindow )
                        {
                            // Use the parent window's icon.
                            loMsgBox.Icon = aoWindow.Icon;

                            // Use the given asMessageCaption as the MsgBox title, if not null.
                            // Otherwise use the parent window title with an added question mark.
                            loMsgBox.Title = null != asMessageCaption
                                    ? asMessageCaption : aoWindow.Title + "?";
                        }

                        // Display the MsgBox header / title (ie. the caption), if provided.
                        if ( null != asMessageCaption )
                        {
                            loMsgBox.MessageTitle.Content = asMessageCaption;
                            loMsgBox.MessageTitle.Visibility = Visibility.Visible;
                        }

                        loMsgBox.SelectButtons(tvMessageBoxButtons.OK);
                        loMsgBox.SelectIcon(aeTvMessageBoxIcon);
                        loMsgBox.Show();

        if ( aiCloseAfterMS > 0 )
        {
            DateTime ldtCloseTime = DateTime.Now.AddMilliseconds(aiCloseAfterMS);

            while ( DateTime.Now < ldtCloseTime )
            {
                System.Windows.Forms.Application.DoEvents();
                System.Threading.Thread.Sleep(200);

                if ( loMsgBox.bDialogAccepted )
                    break;
            }

            loMsgBox.Close();
        }
    }
    public static tvMessageBoxResults Show(
        Window aoWindow
        , string asMessageText
        , string asMessageCaption
        , tvMessageBoxButtons aeTvMessageBoxButtons
        , tvMessageBoxIcons aeTvMessageBoxIcon
        , bool abShowModeless
        , tvMessageBoxCheckBoxTypes aeTvMessageBoxCheckBoxType
        , tvProfile aoProfile
        , string asProfilePromptKey
        , tvMessageBoxResults aeTvMessageBoxResultsOverride
        )
    {
        tvMessageBoxResults liTvMessageBoxResult = tvMessageBoxResults.None;

        string  lsPromptAnswerKey = null;
        bool    lbUseCheckBox = tvMessageBoxCheckBoxTypes.None != aeTvMessageBoxCheckBoxType;
                if ( lbUseCheckBox )
                {
                    // Insert the prompt key prefix if it's not already there. A common prefix
                    // is necessary to allow for the removal of all prompt keys as needed.
                    if ( !asProfilePromptKey.StartsWith(msProfilePromptKeyPrefix) )
                    {
                        // Strip leading hyphen.
                        if ( asProfilePromptKey.StartsWith("-") )
                            asProfilePromptKey = asProfilePromptKey.Substring(1, asProfilePromptKey.Length - 1);

                        // Insert prefix.
                        asProfilePromptKey = msProfilePromptKeyPrefix + asProfilePromptKey;
                    }

                    // Make the answer key from the prompt key and the prompt key suffix.
                    lsPromptAnswerKey = asProfilePromptKey + msProfilePromptKeySuffix;

                    // Only the first display of a modeless dialog can contain a checkbox.
                    // Why? Because the first prompt is not modeless. That's the only way
                    // to capture the checkbox value. BTW, "lbUseCheckBox" is reset here
                    // for use outside of this block to avoid the default setting next.
                    if ( abShowModeless )
                        lbUseCheckBox = !aoProfile.ContainsKey(asProfilePromptKey);

                    if (      !aoProfile.bValue(asProfilePromptKey, false)
                            && aoProfile.ContainsKey(lsPromptAnswerKey) )
                    {
                        // Do not prompt. Return the previous stored answer instead.
                        return (tvMessageBoxResults)aoProfile.iValue(
                                lsPromptAnswerKey, (int)tvMessageBoxResults.None);
                    }
                }

        if ( null == asMessageCaption )
        {
            // No caption provided. Let's try to get one another way.

            if ( null != aoWindow )             // Try window title first.
                asMessageCaption = aoWindow.Title;
            else
            if ( null != Application.Current )  // Next try for application name.
                asMessageCaption = Application.Current.MainWindow.Name;
        }

        if ( null != aoWindow )
            aoWindow.Cursor = null;             // Turn off wait cursor in parent window.

        tvMessageBox    loMsgBox = new tvMessageBox();
                        loMsgBox.MessageText.Text = asMessageText;

                        // Use some parent window attributes, if available.
                        if ( null != aoWindow )
                        {
                            // Use the parent window's icon.
                            loMsgBox.Icon = aoWindow.Icon;

                            // Use the given asMessageCaption as the MsgBox title, if not null.
                            // Otherwise use the parent window title with an added question mark.
                            loMsgBox.Title = null != asMessageCaption
                                    ? asMessageCaption : aoWindow.Title + "?";
                        }

                        // Display the MsgBox header / title (ie. the caption), if provided.
                        if ( null != asMessageCaption )
                        {
                            loMsgBox.MessageTitle.Content = asMessageCaption;
                            loMsgBox.MessageTitle.Visibility = Visibility.Visible;
                        }

                        loMsgBox.SelectButtons(aeTvMessageBoxButtons);
                        loMsgBox.SelectIcon(aeTvMessageBoxIcon);

                        if ( lbUseCheckBox )
                        {
                            switch (aeTvMessageBoxCheckBoxType)
                            {
                                case tvMessageBoxCheckBoxTypes.DontAsk:
                                    loMsgBox.chkDontAsk.Visibility = Visibility.Visible;
                                    break;
                                case tvMessageBoxCheckBoxTypes.SkipThis:
                                    loMsgBox.chkSkipThis.Visibility = Visibility.Visible;
                                    break;
                            }
                        }

                        if ( !abShowModeless )
                        {
                            loMsgBox.ShowDialog();
                        }
                        else
                        {
                            // It can only be modeless after the checkbox has been stored.
                            if ( lbUseCheckBox )
                                loMsgBox.ShowDialog();
                            else
                                loMsgBox.Show();
                        }

                        if ( lbUseCheckBox )
                        {
                            bool lbCheckBoxValue = false;

                            switch (aeTvMessageBoxCheckBoxType)
                            {
                                case tvMessageBoxCheckBoxTypes.DontAsk:
                                    lbCheckBoxValue = (bool)loMsgBox.chkDontAsk.IsChecked;
                                    break;
                                case tvMessageBoxCheckBoxTypes.SkipThis:
                                    lbCheckBoxValue = (bool)loMsgBox.chkSkipThis.IsChecked;
                                    break;
                            }

                            // Use the answer override whenever not "none". This value is
                            // necessary for certain stored answers that don't make sense
                            // in a given context (eg. both "skip this" and "cancel" selected).
                            if ( tvMessageBoxResults.None == aeTvMessageBoxResultsOverride )
                                aeTvMessageBoxResultsOverride = loMsgBox.eTvMessageBoxResult;

                            // Reverse the boolean. "Don't ask" or "Skip this" means "Don't prompt".
                            aoProfile[asProfilePromptKey] = !lbCheckBoxValue;
                            aoProfile[lsPromptAnswerKey] = (int)aeTvMessageBoxResultsOverride;
                            aoProfile.Save();
                        }

        liTvMessageBoxResult = loMsgBox.eTvMessageBoxResult;

        return liTvMessageBoxResult;
    }
Esempio n. 4
0
    public static tvMessageBoxResults Show(
        Window aoWindow
        , string asMessageText
        , string asMessageCaption
        , tvMessageBoxButtons aeTvMessageBoxButtons
        , tvMessageBoxIcons aeTvMessageBoxIcon
        , bool abShowModeless
        , tvMessageBoxCheckBoxTypes aeTvMessageBoxCheckBoxType
        , tvProfile aoProfile
        , string asProfilePromptKey
        , tvMessageBoxResults aeTvMessageBoxResultsOverride
        )
    {
        tvMessageBoxResults liTvMessageBoxResult = tvMessageBoxResults.None;

        string lsPromptAnswerKey = null;
        bool   lbUseCheckBox     = tvMessageBoxCheckBoxTypes.None != aeTvMessageBoxCheckBoxType;

        if (lbUseCheckBox)
        {
            // Insert the prompt key prefix if it's not already there. A common prefix
            // is necessary to allow for the removal of all prompt keys as needed.
            if (!asProfilePromptKey.StartsWith(msProfilePromptKeyPrefix))
            {
                // Strip leading hyphen.
                if (asProfilePromptKey.StartsWith("-"))
                {
                    asProfilePromptKey = asProfilePromptKey.Substring(1, asProfilePromptKey.Length - 1);
                }

                // Insert prefix.
                asProfilePromptKey = msProfilePromptKeyPrefix + asProfilePromptKey;
            }

            // Make the answer key from the prompt key and the prompt key suffix.
            lsPromptAnswerKey = asProfilePromptKey + msProfilePromptKeySuffix;

            // Only the first display of a modeless dialog can contain a checkbox.
            // Why? Because the first prompt is not modeless. That's the only way
            // to capture the checkbox value. BTW, "lbUseCheckBox" is reset here
            // for use outside of this block to avoid the default setting next.
            if (abShowModeless)
            {
                lbUseCheckBox = !aoProfile.ContainsKey(asProfilePromptKey);
            }

            if (!aoProfile.bValue(asProfilePromptKey, false) &&
                aoProfile.ContainsKey(lsPromptAnswerKey))
            {
                // Do not prompt. Return the previous stored answer instead.
                return((tvMessageBoxResults)aoProfile.iValue(
                           lsPromptAnswerKey, (int)tvMessageBoxResults.None));
            }
        }

        if (null == asMessageCaption)
        {
            // No caption provided. Let's try to get one another way.

            if (null != aoWindow)               // Try window title first.
            {
                asMessageCaption = aoWindow.Title;
            }
            else
            if (null != Application.Current && null != Application.Current.MainWindow)    // Next try for application name.
            {
                asMessageCaption = Application.Current.MainWindow.Name;
            }
            else
            {
                asMessageCaption = System.IO.Path.GetFileNameWithoutExtension(Application.ResourceAssembly.Location);
            }
        }

        if (null != aoWindow)
        {
            aoWindow.Cursor = null;             // Turn off wait cursor in parent window.
        }
        tvMessageBox loMsgBox = new tvMessageBox();

        loMsgBox.MessageText.Text = asMessageText;

        // Use some parent window attributes, if available.
        if (null != aoWindow)
        {
            // Use the parent window's icon.
            loMsgBox.Icon = aoWindow.Icon;

            // Use the given asMessageCaption as the MsgBox title, if not null.
            // Otherwise use the parent window title with an added question mark.
            loMsgBox.Title = null != asMessageCaption
                                    ? asMessageCaption : aoWindow.Title + "?";
        }

        // Display the MsgBox header / title (ie. the caption), if provided.
        if (null != asMessageCaption)
        {
            loMsgBox.MessageTitle.Content    = asMessageCaption;
            loMsgBox.MessageTitle.Visibility = Visibility.Visible;
        }

        loMsgBox.SelectButtons(aeTvMessageBoxButtons);
        loMsgBox.SelectIcon(aeTvMessageBoxIcon);

        if (lbUseCheckBox)
        {
            switch (aeTvMessageBoxCheckBoxType)
            {
            case tvMessageBoxCheckBoxTypes.DontAsk:
                loMsgBox.chkDontAsk.Visibility = Visibility.Visible;
                break;

            case tvMessageBoxCheckBoxTypes.SkipThis:
                loMsgBox.chkSkipThis.Visibility = Visibility.Visible;
                break;
            }
        }

        if (!abShowModeless)
        {
            loMsgBox.ShowDialog();
        }
        else
        {
            // It can only be modeless after the checkbox has been stored.
            if (lbUseCheckBox)
            {
                loMsgBox.ShowDialog();
            }
            else
            {
                loMsgBox.Show();
            }
        }

        if (lbUseCheckBox)
        {
            bool lbCheckBoxValue = false;

            switch (aeTvMessageBoxCheckBoxType)
            {
            case tvMessageBoxCheckBoxTypes.DontAsk:
                lbCheckBoxValue = (bool)loMsgBox.chkDontAsk.IsChecked;
                break;

            case tvMessageBoxCheckBoxTypes.SkipThis:
                lbCheckBoxValue = (bool)loMsgBox.chkSkipThis.IsChecked;
                break;
            }

            // Use the answer override whenever not "none". This value is
            // necessary for certain stored answers that don't make sense
            // in a given context (eg. both "skip this" and "cancel" selected).
            if (tvMessageBoxResults.None == aeTvMessageBoxResultsOverride)
            {
                aeTvMessageBoxResultsOverride = loMsgBox.eTvMessageBoxResult;
            }

            // Reverse the boolean. "Don't ask" or "Skip this" means "Don't prompt".
            aoProfile[asProfilePromptKey] = !lbCheckBoxValue;
            aoProfile[lsPromptAnswerKey]  = (int)aeTvMessageBoxResultsOverride;
            aoProfile.Save();
        }

        liTvMessageBoxResult = loMsgBox.eTvMessageBoxResult;

        return(liTvMessageBoxResult);
    }
Esempio n. 5
0
        private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
        {
            // This handles the "WM_SHOWME" message so another
            // instance can display this one before exiting.
            if( WM_SHOWME == msg )
            {
                this.ShowMe();

                if ( null != moNotifyWaitMessage )
                {
                    // Wait for the UI to redisplay.
                    while ( Visibility.Visible != this.Visibility )
                    {
                        System.Windows.Forms.Application.DoEvents();
                        System.Threading.Thread.Sleep(moProfile.iValue("-MainLoopSleepMS", 100));
                    }

                    moNotifyWaitMessage.Close();
                    moNotifyWaitMessage = null;
                }
            }

            return IntPtr.Zero;
        }
Esempio n. 6
0
        private void moNotifyIcon_OnShowWindow()
        {
            if ( this.bVisible )
            {
                this.HideMe();
            }
            else
            {
                if ( this.bBackupRunning || mbShowBackupOutputAfterSysTray )
                {
                    if (Visibility.Visible != this.MiddlePanelOutputText.Visibility)
                    {
                        this.HideMiddlePanels();
                        this.DisplayOutputText();
                    }
                }
                else
                {
                    if ( Visibility.Visible != this.MiddlePanelTimer.Visibility )
                    {
                        this.HideMiddlePanels();
                        this.MiddlePanelTimer.Visibility = Visibility.Visible;
                    }
                }

                if ( !this.bBackupRunning )
                {
                    this.ShowMe();
                }
                else
                {
                    if ( null == moNotifyWaitMessage )
                        moNotifyWaitMessage = new tvMessageBox();

                    moNotifyWaitMessage.ShowWait(this, mcsNotifyIconProcText + " - please wait ...", 350);

                    // This kludge is necessary to overcome sometimes severe
                    // delays processing click events to redisplay the main
                    // window during heavy backup or cleanup processing.
                    PostMessage((IntPtr)HWND_BROADCAST, WM_SHOWME, IntPtr.Zero, IntPtr.Zero);
                }
            }
        }