private void OnDisplayEvent(DisplayEvent displayEvent,
                                    ZeroMQMessage request,
                                    IJupyterMessageSender jupyterMessageSender)
        {
            if (displayEvent is ReturnValueProduced && displayEvent.Value is DisplayedValue)
            {
                return;
            }

            var transient = CreateTransient(displayEvent.ValueId);

            var formattedValues = displayEvent
                                  .FormattedValues
                                  .ToDictionary(k => k.MimeType, v => PreserveJson(v.MimeType, v.Value));

            var           value = displayEvent.Value;
            PubSubMessage dataMessage;

            switch (displayEvent)
            {
            case DisplayedValueProduced _:
                dataMessage = new DisplayData(
                    transient: transient,
                    data: formattedValues);
                break;

            case DisplayedValueUpdated _:
                dataMessage = new UpdateDisplayData(
                    transient: transient,
                    data: formattedValues);
                break;

            case ReturnValueProduced _:
                dataMessage = new ExecuteResult(
                    _executionCount,
                    transient: transient,
                    data: formattedValues);
                break;

            case StandardOutputValueProduced _:
                dataMessage = Stream.StdOut(GetPlainTextValueOrDefault(formattedValues, value?.ToString() ?? string.Empty));
                break;

            case StandardErrorValueProduced _:
            case ErrorProduced _:
                dataMessage = Stream.StdErr(GetPlainTextValueOrDefault(formattedValues, value?.ToString() ?? string.Empty));
                break;

            default:
                throw new ArgumentException("Unsupported event type", nameof(displayEvent));
            }

            var isSilent = ((ExecuteRequest)request.Content).Silent;

            if (!isSilent)
            {
                // send on io
                jupyterMessageSender.Send(dataMessage);
            }
        }
示例#2
0
        public async Task NavigateAsync_ShouldWaitForAnimationEnd()
        {
            await Test(async (wpfnav, _) =>
            {
                var vm = new VM();
                wpfnav.Should().NotBeNull();

                _NavigationBuilder.Register <VM>(GetRelativePath(TestContext.AnimatedNavigation));

                wpfnav.UseINavigable = true;

                DateTime?opened   = null;
                DisplayEvent de   = null;
                wpfnav.OnDisplay += (o, e) => { opened = DateTime.Now; de = e; };

                await wpfnav.NavigateAsync(vm);
                var nav = DateTime.Now;

                await Task.Delay(3000);

                de.Should().NotBeNull();
                de.DisplayedViewModel.Should().Be(vm);
                opened.HasValue.Should().BeTrue();
                opened.Value.Subtract(nav).Should().BeCloseTo(TimeSpan.FromSeconds(2), 100);
            });
        }
示例#3
0
        public static FormattedValue GetPlainText(this DisplayEvent displayEvent)
        {
            var formattedValue =
                displayEvent.FormattedValues.SingleOrDefault(d => d.MimeType == PlainTextFormatter.MimeType);

            return(formattedValue);
        }
        public void Basic_Option_Simple()
        {
            Test((c, w) =>
            {
                var mre = new ManualResetEvent(false);

                DisplayEvent de = null;
                EventHandler <DisplayEvent> ea = null;
                ea           = (o, e) => { de = e; c.OnDisplay -= ea; };
                c.OnDisplay += ea;
                var dc       = new Person();

                w.RunOnUIThread(() =>
                {
                    c.Mode               = JavascriptBindingMode.OneWay;
                    string relp          = "javascript\\navigation_1.html";
                    c.Uri                = new Uri(string.Format("{0}\\{1}", Assembly.GetAssembly(typeof(Test_HTMLViewControl)).GetPath(), relp));
                    w.Window.DataContext = dc;
                    mre.Set();
                });

                mre.WaitOne();

                Thread.Sleep(2500);
                de.Should().NotBeNull();
                de.DisplayedViewModel.Should().Be(dc);
            });
        }
示例#5
0
        public void Test_WPFBrowserNavigator_Simple()
        {
            var vm = new VM();

            TestNavigation((wpfnav, WindowTest)
                           =>
            {
                wpfnav.Should().NotBeNull();
                _INavigationBuilder.Register <VM>("Navigation data\\index.html");
                wpfnav.UseINavigable = true;

                var mre         = new ManualResetEvent(false);
                DateTime?nav    = null;
                DateTime?Opened = null;
                DisplayEvent de = null;

                wpfnav.OnDisplay += (o, e) => { Opened = DateTime.Now; de = e; };

                WindowTest.RunOnUIThread(
                    () =>
                {
                    wpfnav.NavigateAsync(vm).ContinueWith
                    (
                        t =>
                    {
                        vm.Navigation.Should().Be(wpfnav);
                        nav = DateTime.Now;
                        mre.Set();
                    });
                });

                mre.WaitOne();
                mre = new ManualResetEvent(false);
                Thread.Sleep(4500);

                de.Should().NotBeNull();
                de.DisplayedViewModel.Should().Be(vm);
                Opened.HasValue.Should().BeTrue();
                Opened.Value.Subtract(nav.Value).Should().BeGreaterThan(TimeSpan.FromSeconds(2)).
                And.BeLessOrEqualTo(TimeSpan.FromSeconds(3));

                WindowTest.RunOnUIThread(
                    () =>
                {
                    wpfnav.NavigateAsync(vm).ContinueWith
                    (
                        t =>
                    {
                        mre.Set();
                    });
                });

                mre.WaitOne();
                Thread.Sleep(500);
                vm.Navigation.Should().Be(wpfnav);
            });
        }
示例#6
0
    private void Start()
    {
        if (displayEvent == null)
        {
            displayEvent = new DisplayEvent();
        }

        displayEvent.AddListener(PuzzleDisplay.instance.FetchPattern);
    }
        /// <summary>
        /// Draw the image buffer into a System.Drawing.Bitmap. If the hotpixels
        /// shall be displayed, red circles are drawn around them.
        /// Then the Display Event is called for displayin in  the Picturebox.
        /// </summary>
        /// <param name="imgBuffer">IFrame containing the handled image.</param>
        private void DisplayBufferInPictureBox(IFrameQueueBuffer imgBuffer)
        {
            Bitmap DisplayImage = new Bitmap(imgBuffer.FrameType.Width, imgBuffer.FrameType.Height);

            using (Graphics graphics = Graphics.FromImage(DisplayImage))
            {
                graphics.DrawImage(imgBuffer.CreateBitmapWrap(), 0, 0);
                Pen pen = Pens.Red;
                if (radioBtn_ShowHotpixel.Checked == true)
                {
                    foreach (var p in listOfCoordinates)
                    {
                        graphics.DrawEllipse(pen, p.X - 5, p.Y - 5, 10, 10);
                    }
                }
            }

            DisplayEvent?.BeginInvoke(this, new BitmapEventArgs(DisplayImage), null, null);
        }
示例#8
0
 /// <summary>
 /// Handler for display event. This is raised from GSDisplay.cs whenever a bitmap
 /// is ready to be presented. The event handler has two variables. Bitmap - which
 /// is used for presentation and no. of copies of the image -(this is not used)
 /// </summary>
 /// <param name="obj">Object of the sender</param>
 /// <param name="e">Contains two variables, bitmap and no. of copies</param>
 private void GsInteractive_displayEvent(object obj, DisplayEvent e)
 {
     if (e.bmp != null)
     {
         if (bDevelop)
         {
             _pageCount++;
             _pageBitmapList[_pageCount] = e.bmp;
             _totalPages    = _pageCount;
             slPage.Maximum = _pageCount;
             slPage.Minimum = 1;
             slPage.Value   = _pageCount;
             SetImage(GetBitmapImage(_pageCount));
         }
         else
         {
             _pageBitmapList[_pageBitmapList.Count + 1] = e.bmp;
         }
     }
 }
示例#9
0
        public List<DisplayEvent> GetActiveEvents()
        {
            var activeEvents = _events.Where(e => !e.HasPassed && !e.IsCancelled).ToArray();
            var displayEvents = new List<DisplayEvent>(activeEvents.Length);
            foreach (var @event in activeEvents){
                var displayEvent = new DisplayEvent();
                displayEvent.Description = @event.Description;

                displayEvent.Time = GetPrettyTime(@event.EventDate);
                displayEvent.Date = GetPrettyDate(@event.EventDate);

                var timeUntil = @event.EventDate - DateTime.Now;
                var timeUntilStr = GetPrettyTimeDiff(timeUntil);
                displayEvent.TimeUntil = timeUntilStr;
                displayEvent.EventDateTime = @event.EventDate;

                displayEvents.Add(displayEvent);
            }
            return displayEvents;
        }
        public void Basic_Option_Simple_UsingRelativePath_AfterDataContext()
        {
            Test((c, w) =>
            {
                var mre = new ManualResetEvent(false);

                DisplayEvent de = null;
                EventHandler <DisplayEvent> ea = null;
                ea           = (o, e) => { de = e; c.OnDisplay -= ea; };
                c.OnDisplay += ea;
                var dc       = new Person();

                string relp = "javascript\\navigation_1.html";
                string path = string.Format("{0}\\{1}", typeof(HTMLViewControl).Assembly.GetPath(), relp);
                var jvs     = PrepareFiles();

                //<script src="src\knockout.js" type="text/javascript"></script>
                //<script src="src\Ko_Extension.js" type="text/javascript"></script>
                //<script src="src\Ko_register.js" type="text/javascript"></script>

                w.RunOnUIThread(() =>
                {
                    c.Mode = JavascriptBindingMode.OneWay;
                    w.Window.DataContext = dc;
                    c.RelativeSource     = relp;
                    mre.Set();
                });

                mre.WaitOne();

                Thread.Sleep(2000);
                foreach (string jv in jvs)
                {
                    string p = string.Format("{0}\\javascript\\src\\{1}", typeof(HTMLViewControl).Assembly.GetPath(), jv);
                    File.Delete(p);
                }
                File.Delete(path);
                de.Should().NotBeNull();
                de.DisplayedViewModel.Should().Be(dc);
            });
        }
示例#11
0
 private void OnDisplayFired(object sender, DisplayEvent e)
 {
     OnDisplay?.Invoke(this, e);
 }
        private void OnDisplayEvent(DisplayEvent displayEvent,
                                    ZeroMQMessage request,
                                    IJupyterMessageSender jupyterMessageSender)
        {
            if (displayEvent is ReturnValueProduced && displayEvent.Value is DisplayedValue)
            {
                return;
            }

            var transient = CreateTransient(displayEvent.ValueId);


            // Currently there is at most one formatted value with at most
            // and we return a dictionary for JSON formatting keyed by that mime type
            //
            // In the case of DiagnosticsProduced however there are multiple entries, one
            // for each diagnsotic, all with the same type
            Dictionary <string, object> GetFormattedValuesByMimeType()
            {
                return
                    (displayEvent
                     .FormattedValues
                     .ToDictionary(k => k.MimeType, v => PreserveJson(v.MimeType, v.Value)));
            }

            var           value       = displayEvent.Value;
            PubSubMessage dataMessage = null;

            switch (displayEvent)
            {
            case DisplayedValueProduced _:
                dataMessage = new DisplayData(
                    transient: transient,
                    data: GetFormattedValuesByMimeType());
                break;

            case DisplayedValueUpdated _:
                dataMessage = new UpdateDisplayData(
                    transient: transient,
                    data: GetFormattedValuesByMimeType());
                break;

            case ReturnValueProduced _:
                dataMessage = new ExecuteResult(
                    _executionCount,
                    transient: transient,
                    data: GetFormattedValuesByMimeType());
                break;

            case StandardOutputValueProduced _:
                dataMessage = Stream.StdOut(GetPlainTextValueOrDefault(GetFormattedValuesByMimeType(), value?.ToString() ?? string.Empty));
                break;

            case StandardErrorValueProduced _:
            case ErrorProduced _:
                dataMessage = Stream.StdErr(GetPlainTextValueOrDefault(GetFormattedValuesByMimeType(), value?.ToString() ?? string.Empty));
                break;

            default:
                throw new ArgumentException("Unsupported event type", nameof(displayEvent));
            }

            var isSilent = ((ExecuteRequest)request.Content).Silent;

            if (!isSilent)
            {
                // send on io
                jupyterMessageSender.Send(dataMessage);
            }
        }
示例#13
0
 protected virtual void DisplayMe()
 {
     DisplayEvent?.Invoke(SurnameList);
 }
示例#14
0
        //#region OutputForm
        /// <summary>
        /// Where all the output triggering events from the controller end up.
        /// </summary>
        /// <param name="e"></param>
        ///
        public Error Update(DisplayEvent e)
        {
            #region uxPanDepositWithdrawl
            //funds
            uxTBFundsAmount.Text = _mainModel.Account.Funds.ToString("N2");

            double accTotalValue = _mainModel.Account.CalculateValue(_mainModel.Stocks);
            double accPosValue   = accTotalValue - _mainModel.Account.Funds;
            if (!(accTotalValue == 0))
            {
                //cash percent
                uxTBCashPercent.Text = String.Format("{0:0.00}", (_mainModel.Account.Funds / accTotalValue) * 100) + "%";
                //positions percent
                uxTBPositonsPercent.Text = String.Format("{0:0.00}", (accPosValue / accTotalValue) * 100) + "%";
            }
            //positions amount
            uxTBPositionsAmount.Text = "$" + String.Format("{0:0.00}", accPosValue);

            //total value
            uxTBTotalValue.Text = "$" + String.Format("{0:0.00}", accTotalValue);

            #endregion DepositWithdrawPanel

            #region uxPanAccHeldStocks
            List <BuyOrSell_M> allHeldBOS = new List <BuyOrSell_M>();

            foreach (Portfolio_M curPortfolio in _mainModel.Account.Portfolios)
            {
                allHeldBOS.AddRange(curPortfolio.CurrentlyHeld());
            }

            List <string> formatedHeldStocks = new List <string>();
            foreach (BuyOrSell_M curBOS in allHeldBOS)
            {
                formatedHeldStocks.Add(curBOS.StockName + " #:" + curBOS.Quantity);
            }
            uxLBStocksHeld.DataSource = formatedHeldStocks;
            #endregion uxPanAccHeldStocks

            #region uxPanGainLossAcc
            uxTBGainLoss.Text = String.Format("{0:0.00}", _mainModel.Account.CalculateGainLoss(_mainModel.Stocks));
            #endregion uxPanGainLossAcc

            #region uxPanPortfoliosCreateDelete
            List <string> portfolioNames = new List <string>();
            foreach (Portfolio_M portfolio in _mainModel.Account.Portfolios)
            {
                portfolioNames.Add(portfolio.Name);
            }
            uxLBPortfolios.DataSource = portfolioNames;

            if (uxLBPortfolios.Items.Count == 0)
            {
                uxNewDelete.Enabled = false;
            }
            else
            {
                uxNewDelete.Enabled = true;
            }
            #endregion uxPanPortfoliosCreateDelete

            #region uxPanAllStocks

            List <string> allStockStrings = new List <string>();
            foreach (Stock_M stock in _mainModel.Stocks)
            {
                allStockStrings.Add(stock.Tag + " " + stock.Price);
            }
            uxLBAllStock.DataSource = allStockStrings;
            #endregion uxPanAllStocks

            return(Error.None);
        }