public override void Unload() { MashupsXml = Mashups.Serialize(); base.Unload(); Panel.Dispose(); Panel = null; }
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); } })); }
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); } }
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(); }
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); } })); }
public override IObservable <object> Visualize(IObservable <IObservable <object> > source, IServiceProvider provider) { return(Observable.Merge(Mashups.Select(mashup => mashup.Visualizer.Visualize(mashup.Source, provider)))); }
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)))); }