Пример #1
0
 public override void Unload()
 {
     MashupsXml = Mashups.Serialize();
     base.Unload();
     Panel.Dispose();
     Panel = null;
 }
Пример #2
0
        public override IObservable <object> Visualize(IObservable <IObservable <object> > source, IServiceProvider provider)
        {
            IObservable <IList <object> > dataSource;
            var mergedSource = source.SelectMany(xs => xs.Do(
                                                     ys => { },
                                                     () => visualizerCanvas.BeginInvoke((Action)SequenceCompleted)));

            if (Mashups.Count > 0)
            {
                var mergedMashups = Mashups.Select(xs => xs.Visualizer.Visualize(xs.Source, provider).Publish().RefCount()).ToArray();
                dataSource = Observable
                             .CombineLatest(EnumerableMashup(mergedSource, mergedMashups))
                             .Window(mergedMashups.Last())
                             .SelectMany(window => window.TakeLast(1));
            }
            else
            {
                dataSource = mergedSource.Select(xs => new[] { xs });
            }

            return(dataSource.Do(xs =>
            {
                if (Interlocked.Exchange(ref activeValues, xs) == null)
                {
                    UpdateCanvas(xs);
                }
            }));
        }
Пример #3
0
 protected virtual void ShowMashup(IList <object> values)
 {
     shownValues = values;
     foreach (var pair in values.Zip(
                  Mashups.Select(xs => (DialogTypeVisualizer)xs.Visualizer).Prepend(this),
                  (value, visualizer) => Tuple.Create(value, visualizer)))
     {
         pair.Item2.Show(pair.Item1);
     }
 }
Пример #4
0
        protected virtual void ShowMashup(IList <object> values)
        {
            drawnValues = values;
            foreach (var mashupValue in values.Zip(EnumerableMashup(this, Mashups.Select(xs => (DialogTypeVisualizer)xs.Visualizer)), (value, visualizer) => new { value, visualizer }))
            {
                mashupValue.visualizer.Show(mashupValue.value);
            }

            visualizerCanvas.MakeCurrent();
            if (visualizerImage != null)
            {
                imageTexture.Update(visualizerImage);
            }
            visualizerCanvas.Canvas.Invalidate();
        }
Пример #5
0
        public override void Load(IServiceProvider provider)
        {
            Mashups.Deserialize(MashupsXml);
            Panel      = new TableLayoutPanel();
            Panel.Dock = DockStyle.Fill;
            Panel.Size = new Size(320, 240);

            var visualizerService = (IDialogTypeVisualizerService)provider.GetService(typeof(IDialogTypeVisualizerService));

            if (visualizerService != null)
            {
                visualizerService.AddControl(Panel);
            }

            base.Load(provider);
        }
        protected IObservable <object> Visualize <T>(IObservable <IObservable <object> > source, IServiceProvider provider)
        {
            IObservable <object>          mergedSource;
            IObservable <IList <object> > dataSource;
            var visualizerContext = (ITypeVisualizerContext)provider.GetService(typeof(ITypeVisualizerContext));

            if (visualizerContext != null && typeof(IObservable <T>).IsAssignableFrom(visualizerContext.Source.ObservableType))
            {
                mergedSource = source.SelectMany(xs => xs.Select(ws => ws as IObservable <T>)
                                                 .Where(ws => ws != null)
                                                 .SelectMany(ws => ws.Select(vs => (object)vs).Do(ys => { }, () => visualizerCanvas.BeginInvoke((Action)SequenceCompleted))));
            }
            else
            {
                mergedSource = source.SelectMany(xs => xs.Do(ys => { }, () => visualizerCanvas.BeginInvoke((Action)SequenceCompleted)));
            }

            if (Mashups.Count > 0)
            {
                var mergedMashups = Mashups.Select(xs => xs.Visualizer.Visualize(xs.Source, provider).Publish().RefCount()).ToArray();
                dataSource = Observable
                             .CombineLatest(EnumerableMashup(mergedSource, mergedMashups))
                             .Window(mergedMashups.Last())
                             .SelectMany(window => window.TakeLast(1));
            }
            else
            {
                dataSource = mergedSource.Select(xs => new[] { xs });
            }

            return(dataSource.Do(xs =>
            {
                if (Interlocked.Exchange(ref activeValues, xs) == null)
                {
                    UpdateCanvas(xs);
                }
            }));
        }
Пример #7
0
 public override IObservable <object> Visualize(IObservable <IObservable <object> > source, IServiceProvider provider)
 {
     return(Observable.Merge(Mashups.Select(mashup => mashup.Visualizer.Visualize(mashup.Source, provider))));
 }
Пример #8
0
 public override IObservable <object> Visualize(IObservable <IObservable <object> > source, IServiceProvider provider)
 {
     return(Observable.Merge(Mashups.Select(mashup => mashup.Visualizer.Visualize(((ITypeVisualizerContext)mashup).Source.Output, provider))));
 }