예제 #1
0
        /// <summary>
        /// Returns the "ArchivePath" from the given backup set profile.
        /// </summary>
        public string sArchivePath(tvProfile aoBackupSetProfile)
        {
            string lsArchivePath = moProfile.sValue("-ArchivePath", 
                    Path.Combine(Path.GetPathRoot(Environment.GetFolderPath(
                            Environment.SpecialFolder.System)), "Archive"));

            // Don't create a default "-ArchivePath" in the backup set (that's
            // what "ContainsKey" prevents). That way the global "-ArchivePath" 
            // will stay in force unless specifically overridden.
            if ( null != aoBackupSetProfile && aoBackupSetProfile.ContainsKey("-ArchivePath") )
                lsArchivePath = aoBackupSetProfile["-ArchivePath"].ToString();

            return lsArchivePath;
        }
예제 #2
0
        /// <summary>
        /// Returns the "BackupFileSpec" from the given backup set profile.
        /// </summary>
        public string sBackupFileSpec(tvProfile aoBackupSetProfile)
        {
            string lsBackupFileSpec = moProfile.sValue("-BackupFileSpec", "*");

            // Don't create a default "-BackupFileSpec" in the backup set (that's
            // what "ContainsKey" prevents). That way the global "-BackupFileSpec"
            // will stay in force unless specifically overridden.
            if ( null != aoBackupSetProfile && aoBackupSetProfile.ContainsKey("-BackupFileSpec") )
                lsBackupFileSpec = aoBackupSetProfile["-BackupFileSpec"].ToString();

            return lsBackupFileSpec;
        }
예제 #3
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 )  // 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;
    }