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); }
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); }