Ejemplo n.º 1
0
        public override Task<IMarkpadDocument> Publish()
        {
            var save = new ButtonExtras(ButtonType.Yes, "Save", "Saves this modified post to your blog");
            var saveAs = new ButtonExtras(ButtonType.No, "Save As", "Saves this blog post as a local markdown file");
            var publish = new ButtonExtras(ButtonType.Retry, "Publish As", "Publishes this post to another blog, or as another post");

            var service = new DialogMessageService(null)
            {
                Icon = DialogMessageIcon.Question,
                Buttons = DialogMessageButtons.Yes | DialogMessageButtons.No | DialogMessageButtons.Retry | DialogMessageButtons.Cancel,
                Title = "Markpad",
                Text = string.Format("{0} has already been published, what do you want to do?", Title),
                ButtonExtras = new[] { save, saveAs, publish }
            };

            var result = service.Show();
            switch (result)
            {
                case DialogMessageResult.Yes:
                    return Save();
                case DialogMessageResult.No:
                    return SaveAs();
                case DialogMessageResult.Retry:
                    return DocumentFactory.PublishDocument(null, this);
            }

            return TaskEx.FromResult<IMarkpadDocument>(this);
        }
Ejemplo n.º 2
0
        public override Task<IMarkpadDocument> Publish()
        {
            var save = new ButtonExtras(ButtonType.Custom, "Save", "Saves this modified post to your blog");
            var saveAs = new ButtonExtras(ButtonType.Custom, "Save As", "Saves this blog post as a local markdown file");
            var publish = new ButtonExtras(ButtonType.Custom, "Publish As", "Publishes this post to another blog, or as another post");
            dialogService.ShowConfirmationWithCancel("Markpad", "What do you want to do?", "", save, saveAs, publish);

            if (save.WasClicked)
                return base.Publish();
            if (saveAs.WasClicked)
                return SaveAs();
            if (publish.WasClicked)
                return DocumentFactory.PublishDocument(this);

            return TaskEx.FromResult<IMarkpadDocument>(this);
        }
        private DialogMessageResult DoOokiiMsgBox()
        {
            var td = new TaskDialog();

            if ((Buttons & DialogMessageButtons.Ok) != 0)
            {
                td.Buttons.Add(new TaskDialogButton(ButtonType.Ok));
            }
            if ((Buttons & DialogMessageButtons.Cancel) != 0)
            {
                td.Buttons.Add(new TaskDialogButton(ButtonType.Cancel));
            }

            if ((Buttons & DialogMessageButtons.Yes) != 0)
            {
                td.Buttons.Add(new TaskDialogButton(ButtonType.Yes));
            }
            if ((Buttons & DialogMessageButtons.No) != 0)
            {
                td.Buttons.Add(new TaskDialogButton(ButtonType.No));
            }

            if ((Buttons & DialogMessageButtons.Close) != 0)
            {
                td.Buttons.Add(new TaskDialogButton(ButtonType.Close));
            }
            if ((Buttons & DialogMessageButtons.Retry) != 0)
            {
                td.Buttons.Add(new TaskDialogButton(ButtonType.Retry));
            }

            switch (Icon)
            {
            case DialogMessageIcon.Error:
                td.MainIcon = TaskDialogIcon.Error;
                break;

            case DialogMessageIcon.Question:
                td.MainIcon = TaskDialogIcon.Warning;
                break;

            case DialogMessageIcon.Warning:
                td.MainIcon = TaskDialogIcon.Warning;
                break;

            case DialogMessageIcon.Information:
                td.MainIcon = TaskDialogIcon.Information;
                break;

            case DialogMessageIcon.Shield:
                td.MainIcon = TaskDialogIcon.Shield;
                break;
            }

            td.WindowTitle     = Title;
            td.MainInstruction = Text;
            td.Content         = Extra;

            var translation = new Dictionary <TaskDialogButton, ButtonType>();

            if (ButtonExtras != null && ButtonExtras.Any())
            {
                td.ButtonStyle = TaskDialogButtonStyle.CommandLinks;

                var buttonSet = td.Buttons.ToArray();
                td.Buttons.Clear();

                foreach (var extra in ButtonExtras)
                {
                    foreach (var button in buttonSet.Where(b => b.ButtonType == extra.ButtonType))
                    {
                        button.ButtonType      = ButtonType.Custom;
                        button.Text            = extra.Text;
                        button.CommandLinkNote = extra.Note;

                        translation.Add(button, extra.ButtonType);
                        td.Buttons.Add(button);
                    }
                }

                foreach (var button in buttonSet.Where(b => b.ButtonType != ButtonType.Custom))
                {
                    td.Buttons.Add(button);
                }
            }

            TaskDialogButton result = null;

            if (owner == null)
            {
                result = td.ShowDialog();
            }
            else
            {
                var dispatcher = owner.Dispatcher;

                result = (TaskDialogButton)dispatcher.Invoke(
                    new Func <TaskDialogButton>(() => td.ShowDialog(owner)),
                    System.Windows.Threading.DispatcherPriority.Normal);
            }

            var resultButtonType = result.ButtonType;

            if (resultButtonType == ButtonType.Custom)
            {
                if (ButtonExtras != null)
                {
                    var button = ButtonExtras.SingleOrDefault(b => b.ButtonType == ButtonType.Custom && b.Text == result.Text);
                    if (button != null)
                    {
                        button.WasClicked = true;
                    }
                }
                resultButtonType = translation[result];
            }

            switch (resultButtonType)
            {
            case ButtonType.Cancel:
                return(DialogMessageResult.Cancel);

            case ButtonType.Close:
                return(DialogMessageResult.Close);

            case ButtonType.No:
                return(DialogMessageResult.No);

            case ButtonType.Ok:
                return(DialogMessageResult.OK);

            case ButtonType.Retry:
                return(DialogMessageResult.Retry);

            case ButtonType.Yes:
                return(DialogMessageResult.Yes);
            }

            return(DialogMessageResult.None);
        }