private void InitializeAction(MessageBoxAction action)
        {
            switch (action)
            {
            case MessageBoxAction.Ok:
                CancelButton.Visibility = Visibility.Collapsed;
                OkButton.Visibility     = Visibility.Visible;
                OkButton.Focus();
                YesButton.Visibility = Visibility.Collapsed;
                NoButton.Visibility  = Visibility.Collapsed;
                break;

            case MessageBoxAction.OkCancel:
                CancelButton.Visibility = Visibility.Visible;
                CancelButton.Focus();
                OkButton.Visibility  = Visibility.Visible;
                YesButton.Visibility = Visibility.Collapsed;
                NoButton.Visibility  = Visibility.Collapsed;
                break;

            case MessageBoxAction.YesNo:
                CancelButton.Visibility = Visibility.Collapsed;
                OkButton.Visibility     = Visibility.Collapsed;
                YesButton.Visibility    = Visibility.Visible;
                NoButton.Visibility     = Visibility.Visible;
                NoButton.Focus();
                break;
            }
        }
        public CommunicationResult ShowMessage(string message, string title, MessageBoxAction action, MessageBoxIcon icon, Guid requestId)
        {
            try
            {
                var response = Send(new MessageBoxRequestMessage(action, icon, message, requestId, title));
                var success  = IsAcknowledged(response);

                if (success)
                {
                    Logger.Debug("Client acknowledged message box request.");
                }
                else
                {
                    Logger.Error($"Client did not acknowledge message box request! Received: {ToString(response)}.");
                }

                return(new CommunicationResult(success));
            }
            catch (Exception e)
            {
                Logger.Error($"Failed to perform '{nameof(ShowMessage)}'", e);

                return(new CommunicationResult(false));
            }
        }
Beispiel #3
0
        //@@hack: workaround for main view code behind
        /// <summary>
        /// Determines whether this instance can close. This is meant to be called by the view
        /// code behind when testing if a document can close (OnDocumentClosing).
        /// </summary>
        /// <returns>true if can close</returns>
        public bool CanClose()
        {
            if (!IsDirty())
            {
                return(true);
            }

            MessageBoxAction prompt = new MessageBoxAction
            {
                Caption = App.APP_NAME,
                Text    = LocalizedStrings.Format(StringResources.DiscardDocumentChangesPrompt,
                                                  DisplayName),
                Button = MessageBoxButton.YesNo,
                Image  = MessageBoxImage.Question
            };

            bool bResult = true;

            prompt.Completed += (sender, e) =>
            {
                bResult = prompt.Result == MessageBoxResult.Yes;
            };
            prompt.Execute(null);
            return(bResult);
        }
Beispiel #4
0
        /// <summary>
        /// Called to check whether or not this instance can close.
        /// </summary>
        /// <param name="callback">The implementor calls this action with the result
        /// of the close check.</param>
        public override void CanClose(Action <bool> callback)
        {
            // if forcing (@@hack) or not dirty it's OK to close
            if ((_bIsForcedClosing) || (!IsDirty()))
            {
                callback(true);
                return;
            } //eif

            // else prompt user
            MessageBoxAction prompt = new MessageBoxAction
            {
                Caption = App.APP_NAME,
                Text    = LocalizedStrings.Format(StringResources.DiscardDocumentChangesPrompt,
                                                  DisplayName),
                Button = MessageBoxButton.YesNo,
                Image  = MessageBoxImage.Question
            };

            prompt.Completed += (sender, e) =>
            {
                callback(prompt.Result == MessageBoxResult.Yes);
            };
            prompt.Execute(null);
        }
 public MessageBoxRequestMessage(MessageBoxAction action, MessageBoxIcon icon, string message, Guid requestId, string title)
 {
     Action    = action;
     Icon      = icon;
     Message   = message;
     RequestId = requestId;
     Title     = title;
 }
Beispiel #6
0
        private MessageBoxButton ToButton(MessageBoxAction action)
        {
            switch (action)
            {
            case MessageBoxAction.YesNo:
                return(MessageBoxButton.YesNo);

            default:
                return(MessageBoxButton.OK);
            }
        }
Beispiel #7
0
        private MessageBoxResult ResultFor(MessageBoxAction action)
        {
            switch (action)
            {
            case MessageBoxAction.Confirm:
                return(DialogResult == true ? MessageBoxResult.Ok : MessageBoxResult.None);

            case MessageBoxAction.YesNo:
                return(DialogResult == true ? MessageBoxResult.Yes : MessageBoxResult.No);

            default:
                return(MessageBoxResult.None);
            }
        }
        public MessageBoxResult Show(string message, string title, MessageBoxAction action = MessageBoxAction.Confirm, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
        {
            var result = default(MessageBoxResult);

            if (parent is Window window)
            {
                result = window.Dispatcher.Invoke(() => new MessageBoxDialog(text).Show(message, title, action, icon, window));
            }
            else
            {
                result = new MessageBoxDialog(text).Show(message, title, action, icon);
            }

            return(result);
        }
        public MessageBoxResult Show(string message, string title, MessageBoxAction action = MessageBoxAction.Ok, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
        {
            var result = default(System.Windows.MessageBoxResult);

            if (parent is Window window)
            {
                result = window.Dispatcher.Invoke(() => MessageBox.Show(window, message, title, ToButton(action), ToImage(icon)));
            }
            else
            {
                result = MessageBox.Show(message, title, ToButton(action), ToImage(icon));
            }

            return(ToResult(result));
        }
Beispiel #10
0
        public MessageBoxResult Show(string message, string title, MessageBoxAction action, MessageBoxIcon icon, Window parent = null)
        {
            Message.Text = message;
            Title        = title;

            if (parent is Window)
            {
                Owner = parent as Window;
            }

            InitializeBounds();
            InitializeAction(action);
            InitializeIcon(icon);

            ShowDialog();

            return(ResultFor(action));
        }
        private MessageBoxResult ShowMessageBoxViaClient(string message, string title, MessageBoxAction action, MessageBoxIcon icon)
        {
            var requestId            = Guid.NewGuid();
            var result               = MessageBoxResult.None;
            var response             = default(MessageBoxReplyEventArgs);
            var responseEvent        = new AutoResetEvent(false);
            var responseEventHandler = new CommunicationEventHandler <MessageBoxReplyEventArgs>((args) =>
            {
                if (args.RequestId == requestId)
                {
                    response = args;
                    responseEvent.Set();
                }
            });

            runtimeHost.MessageBoxReplyReceived += responseEventHandler;

            var communication = sessionContext.ClientProxy.ShowMessage(message, title, (int)action, (int)icon, requestId);

            if (communication.Success)
            {
                responseEvent.WaitOne();
                result = (MessageBoxResult)response.Result;
            }

            runtimeHost.MessageBoxReplyReceived -= responseEventHandler;

            return(result);
        }
 public MessageBoxResult Show(TextKey message, TextKey title, MessageBoxAction action = MessageBoxAction.Confirm, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
 {
     return(Show(text.Get(message), text.Get(title), action, icon, parent));
 }
 public override bool Convert(MessageBoxButtons value, MessageBoxEvent parameter)
 {
     return(MessageBoxAction.HasEvent(value, parameter));
 }
Beispiel #14
0
        public static ProjectFile ToProjectFile(ProjectModel project)
        {
            ProjectFile file = new ProjectFile();

            file.Stub.Type     = project.Stub.Type;
            file.Stub.IconPath = ConvertAbsoluteToRelativePath(project.Stub.IconPath.ToNullIfEmpty());
            file.Stub.Padding  = project.Stub.Padding;

            file.Startup.Melt = project.Startup.Melt;

            file.VersionInfo.FileDescription  = project.VersionInfo.FileDescription.ToNullIfEmptyOrWhiteSpace();
            file.VersionInfo.ProductName      = project.VersionInfo.ProductName.ToNullIfEmptyOrWhiteSpace();
            file.VersionInfo.FileVersion      = project.VersionInfo.FileVersion1 != 0 || project.VersionInfo.FileVersion2 != 0 || project.VersionInfo.FileVersion3 != 0 || project.VersionInfo.FileVersion4 != 0 ? project.VersionInfo.FileVersion1 + "." + project.VersionInfo.FileVersion2 + "." + project.VersionInfo.FileVersion3 + "." + project.VersionInfo.FileVersion4 : null;
            file.VersionInfo.ProductVersion   = project.VersionInfo.ProductVersion.ToNullIfEmptyOrWhiteSpace();
            file.VersionInfo.Copyright        = project.VersionInfo.Copyright.ToNullIfEmptyOrWhiteSpace();
            file.VersionInfo.OriginalFilename = project.VersionInfo.OriginalFilename.ToNullIfEmptyOrWhiteSpace();

            if (project.Manifest.UseTemplate)
            {
                file.Manifest.Template = project.Manifest.Template;
            }
            else if (project.Manifest.UseFile)
            {
                file.Manifest.Path = ConvertAbsoluteToRelativePath(project.Manifest.Path.ToNullIfEmpty());
            }

            foreach (ProjectItemModel item in project.Items)
            {
                ProjectSource source;

                if (item is ProjectMessageBoxItemModel)
                {
                    source = null;
                }
                else
                {
                    switch (item.Source)
                    {
                    case ProjectItemSource.Embedded:
                        file.AddSource(source = new EmbeddedSource
                        {
                            Path     = ConvertAbsoluteToRelativePath(item.SourceEmbeddedPath.ToNullIfEmpty()),
                            Compress = item.SourceEmbeddedCompress,
                            EofData  = item.SourceEmbeddedEofData
                        });
                        break;

                    case ProjectItemSource.Download:
                        file.AddSource(source = new DownloadSource
                        {
                            Url = item.SourceDownloadUrl
                        });
                        break;

                    default:
                        throw new InvalidEnumArgumentException();
                    }

                    source.Id = item.SourceId;
                }

                if (item is ProjectRunPEItemModel)
                {
                    file.AddAction(new RunPEAction
                    {
                        Source = source
                    });
                }
                else if (item is ProjectInvokeItemModel)
                {
                    file.AddAction(new InvokeAction
                    {
                        Source = source
                    });
                }
                else if (item is ProjectDropItemModel dropItem)
                {
                    file.AddAction(new DropAction
                    {
                        Source              = source,
                        Location            = dropItem.Location,
                        FileName            = dropItem.FileName,
                        FileAttributeHidden = dropItem.FileAttributeHidden,
                        FileAttributeSystem = dropItem.FileAttributeSystem,
                        ExecuteVerb         = dropItem.ExecuteVerb
                    });
                }
                else if (item is ProjectMessageBoxItemModel messageBoxItem)
                {
                    file.AddAction(new MessageBoxAction
                    {
                        Title    = messageBoxItem.Title,
                        Text     = messageBoxItem.Text,
                        Icon     = messageBoxItem.Icon,
                        Buttons  = messageBoxItem.Buttons,
                        OnOk     = MessageBoxAction.HasEvent(messageBoxItem.Buttons, MessageBoxEvent.Ok) ? messageBoxItem.OnOk : ActionEvent.None,
                        OnCancel = MessageBoxAction.HasEvent(messageBoxItem.Buttons, MessageBoxEvent.Cancel) ? messageBoxItem.OnCancel : ActionEvent.None,
                        OnYes    = MessageBoxAction.HasEvent(messageBoxItem.Buttons, MessageBoxEvent.Yes) ? messageBoxItem.OnYes : ActionEvent.None,
                        OnNo     = MessageBoxAction.HasEvent(messageBoxItem.Buttons, MessageBoxEvent.No) ? messageBoxItem.OnNo : ActionEvent.None,
                        OnAbort  = MessageBoxAction.HasEvent(messageBoxItem.Buttons, MessageBoxEvent.Abort) ? messageBoxItem.OnAbort : ActionEvent.None,
                        OnRetry  = MessageBoxAction.HasEvent(messageBoxItem.Buttons, MessageBoxEvent.Retry) ? messageBoxItem.OnRetry : ActionEvent.None,
                        OnIgnore = MessageBoxAction.HasEvent(messageBoxItem.Buttons, MessageBoxEvent.Ignore) ? messageBoxItem.OnIgnore : ActionEvent.None
                    });
                }
                else
                {
                    throw new InvalidOperationException();
                }
            }

            return(file);

            string ConvertAbsoluteToRelativePath(string absolutePath)
            {
                return(project.ProjectPath == null ? absolutePath : RelativePath.AbsoluteToRelativePath(Path.GetDirectoryName(project.ProjectPath), absolutePath));
            }
        }