Exemplo n.º 1
0
        public void RespondOnClosingWithCancel()
        {
            // If Respond if called on a CloseRequest, but the close is canceled, the respose call is ignored

            using (var win = new Dialog()) {
                bool closeCanceled = false, closeResult1 = false, closeResult2 = false;
                win.Buttons.Add(new DialogButton(Command.Ok));
                win.CloseRequested += HandleCloseRequested;
                Application.TimeoutInvoke(10, delegate {
                    closeResult1 = win.Close();
                    Application.TimeoutInvoke(10, delegate {
                        win.CloseRequested -= HandleCloseRequested;
                        closeCanceled       = true;
                        closeResult2        = win.Close();
                        return(false);
                    });
                    return(false);
                });
                var cmd = win.Run();
                Assert.IsTrue(closeCanceled, "Close not canceled");
                Assert.IsFalse(closeResult1, "First close should return false");
                Assert.IsTrue(closeResult2, "Second close should return true");
                Assert.IsNull(cmd);
            }
        }
Exemplo n.º 2
0
        public void TwoResponds()
        {
            // When Respond is called twice before leaving an event handler, the last call is the good one

            using (var win = new Dialog()) {
                Application.TimeoutInvoke(10, delegate {
                    win.Respond(Command.Ok);
                    win.Respond(Command.Apply);
                    return(false);
                });
                var cmd = win.Run();
                Assert.AreEqual(Command.Apply, cmd);
            }
        }
Exemplo n.º 3
0
        public void RespondOnClosing()
        {
            // Respond can be used in a CloseRequest handler to provide a result for the Run method

            using (var win = new Dialog()) {
                bool closeResult = false;
                win.Buttons.Add(new DialogButton(Command.Ok));
                win.CloseRequested += delegate(object sender, CloseRequestedEventArgs args) {
                    win.Respond(Command.Apply);
                };
                Application.TimeoutInvoke(10, delegate {
                    closeResult = win.Close();
                    return(false);
                });
                var cmd = win.Run();
                Assert.AreEqual(Command.Apply, cmd);
                Assert.IsTrue(closeResult);
            }
        }
Exemplo n.º 4
0
        public void RespondDoesNotFireClose()
        {
            // The close event is not fired after running a dialog

            bool closed = false, closing = false;

            using (var win = new Dialog()) {
                win.Buttons.Add(new DialogButton(Command.Ok));
                win.CloseRequested += (sender, e) => closing = true;
                win.Closed         += (sender, e) => closed = true;
                Application.TimeoutInvoke(10, delegate {
                    win.Respond(Command.Apply);
                    return(false);
                });
                var cmd = win.Run();
                Assert.IsFalse(closing, "CloseRequested event should not be fired");
                Assert.IsFalse(closed, "Close event should not be fired");
                Assert.AreEqual(Command.Apply, cmd);
            }
            Assert.IsFalse(closing, "CloseRequested event should not be fired when disposing");
            Assert.IsFalse(closed, "Close event should not be fired when disposing");
        }
Exemplo n.º 5
0
        public void Close()
        {
            // The Close method can be used to stop running a dialog

            bool closing = false, closed = false, closeResult = false;

            using (var win = new Dialog()) {
                win.Buttons.Add(new DialogButton(Command.Ok));
                win.CloseRequested += delegate(object sender, CloseRequestedEventArgs args) {
                    Assert.IsTrue(args.AllowClose);
                    closing = true;
                };
                win.Closed += (sender, e) => closed = true;
                Application.TimeoutInvoke(10, delegate {
                    closeResult = win.Close();
                    return(false);
                });
                var cmd = win.Run();
                Assert.IsNull(cmd);
                Assert.IsTrue(closing, "CloseRequested event not fired");
                Assert.IsTrue(closed, "Window not closed");
                Assert.IsTrue(closeResult, "Window not closed");
            }
        }
Exemplo n.º 6
0
 internal static IDisposable Add(int v, Func <bool> p)
 {
     return(Application.TimeoutInvoke(v, p));
 }