public void TakeSnapshot(UserPresetItemView item, StreamViewerControl imageSource) { timer.Stop(); Target = item; StreamViewer = imageSource; timer.Start(); }
/// <summary> /// Configures a StreamViewerControl, just the way we like it (tm) /// </summary> /// <param name="control">SVC to configure</param> /// <param name="settings">settings to apply to the SVCs</param> private void ConfigureViewer(StreamViewerControl control, MediaApplicationSettings settings) { control.RecordingsPath = settings.Recordings; control.SnapshotPath = settings.Snapshots; control.SnapshotSoundFileName = @"app_data\sounds\snap.wav"; control.PropertyChanged += new PropertyChangedEventHandler(Stream_PropertyChanged); control.StartControl += new EventHandler <SourceControlTypeEventArgs>(StreamViewer_StartControl); control.StopControl += new EventHandler <SourceControlTypeEventArgs>(StreamViewer_StopControl); control.FullScreenClicked += new EventHandler(Stream_FullScreenClicked); control.SingleViewClicked += new EventHandler(Stream_ViewLayoutChanged); }
/// <summary> /// This method handles changing between 4-way and Single /// </summary> private void Stream_ViewLayoutChanged(object sender, EventArgs e) { StreamViewerControl svc = (StreamViewerControl)sender; panel4Way.SuspendLayout(); svc.SingleView = !svc.SingleView; for (int x = 0; x < Streams.Length; x++) { for (int y = 0; y < Streams[x].Length; y++) { if (!svc.SingleView) { Streams[x][y].Parent.Visible = true; panel4Way.ColumnStyles[x].Width = 50.0f; panel4Way.RowStyles[y].Height = 50.0f; } else { Streams[x][y].Parent.Visible = Streams[x][y].SingleView; if (Streams[x][y].SingleView) { panel4Way.ColumnStyles[x].Width = 100.0f; panel4Way.RowStyles[y].Height = 100.0f; } else { Streams[x][y].Stop(); if (panel4Way.ColumnStyles[x].Width < 100.0f) { panel4Way.ColumnStyles[x].Width = 0.0f; } if (panel4Way.RowStyles[y].Height < 100.0f) { panel4Way.RowStyles[y].Height = 0.0f; } } } } } panel4Way.ResumeLayout(); svc.Active = true; }
private void presets_AddPreset(object sender, EventArgs e) { try { MicrowaveTuningPreset item = client.SavePreset() as MicrowaveTuningPreset; if (item != null) { UserPresetItemView view = new UserPresetItemView(); view.Preset = item; view.Image = StreamViewerControl.GetSnapshot(); presets.Add(view); } } catch (Exception ex) { FCMessageBox.Show(@"Can't add preset!", "There was an error fetching the preset from the server.", this); ErrorLogger.DumpToDebug(ex); } }
private StreamViewerControl FindViewerMatching(StreamSourceInfo streamSourceInfo) { StreamViewerControl result = null; List <StreamViewerControl> list = new List <StreamViewerControl>(); list.Add(StreamA); list.Add(StreamB); list.Add(StreamC); list.Add(StreamD); foreach (StreamViewerControl streamViewerControl in list) { if ((streamViewerControl.SourceInfo != null) && (streamViewerControl.SourceInfo.SinkAddress != null)) { if (streamViewerControl.SourceInfo.SinkAddress == streamSourceInfo.SinkAddress) { result = streamViewerControl; break; } } } return(result); }
private void StreamViewer_StartControl(object sender, SourceControlTypeEventArgs e) { StreamViewerControl svc = sender as StreamViewerControl; if (svc == null) { return; } IControlPalette p = null; switch (e.ControlType) { case SourceControlTypes.PTZ: p = new PTZPalette(); break; case SourceControlTypes.Microwave: p = new MicrowavePalette(); break; default: return; } svc.Active = true; p.StreamViewerControl = svc; if (!PaletteWorker.IsBusy) { PaletteWorker.RunWorkerAsync(p); } else { FCMessageBox.Show("Please wait", "Another peripheral control is in the process of starting." + Environment.NewLine + "Please wait for it to finish.", this); svc.ControlState[e.ControlType] = SourceControlTypeState.Inactive; } }
public SVDMain(string[] args) { InitializeComponent(); DragDropManager.Register(this); //assign positions to the streams Streams = new StreamViewerControl[2][]; Streams[0] = new StreamViewerControl[2]; Streams[1] = new StreamViewerControl[2]; Streams[0][0] = StreamA; Streams[1][0] = StreamB; Streams[0][1] = StreamC; Streams[1][1] = StreamD; this.HasControlBox = FutureConcepts.Settings.SystemInfo.DoCheck(); if (args.Length >= 2) { int.TryParse(args[0], out myLeft); int.TryParse(args[1], out myTop); } }
/// <summary> /// Called when the Favorites control needs a favorite added to it /// </summary> private void ptzFavoritesControl_AddFavorite(object sender, EventArgs e) { try { if (client != null) { UserPresetItem preset = client.SavePreset(); if (preset != null) { UserPresetItemView view = new UserPresetItemView(); view.Image = StreamViewerControl.GetSnapshot(); view.Preset = preset; ptzFavoritesControl.Add(view); } } } catch (Exception ex) { ErrorLogger.DumpToDebug(ex); Stop(); } }
/// <summary> /// Handles the resizing of a StreamViewer.StreamViewer to fill the entire SVD window /// </summary> /// <param name="sender">the StreamViewerControl to change state</param> /// <param name="e">don't care</param> private void Stream_FullScreenClicked(object sender, EventArgs e) { StreamViewerControl sViewer = sender as StreamViewerControl; if (sViewer == null) { return; } if (sViewer.FullScreen) { //restore to original placement //suspend layout panel6.Parent.SuspendLayout(); _originalParent.SuspendLayout(); //DO layout sViewer.Dock = _originalDock; panel6.Dock = DockStyle.Fill; sViewer.Parent = _originalParent; sViewer.Location = _originalLocation; sViewer.Size = _originalSize; sViewer.FullScreen = false; //resume layout _originalParent.ResumeLayout(); panel6.Parent.ResumeLayout(); } else { //expand to fill form //save original data _originalLocation = sViewer.Location; _originalSize = sViewer.Size; _originalDock = sViewer.Dock; _originalParent = sViewer.Parent; //suspend layout panel6.Parent.SuspendLayout(); _originalParent.SuspendLayout(); //DO layout panel6.Dock = DockStyle.Top; panel6.Height = 0; sViewer.Parent = panel6.Parent; sViewer.Location = new Point(0, 0); sViewer.Dock = DockStyle.Fill; sViewer.FullScreen = true; //resume layout panel6.Parent.ResumeLayout(); _originalParent.ResumeLayout(); //this is neccesary so we know what stream is full-screen sViewer.Active = true; } }
private void Stream_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (this.InvokeRequired) { this.BeginInvoke(new PropertyChangedEventHandler(Stream_PropertyChanged), new object[] { sender, e }); return; } StreamViewerControl sv = sender as StreamViewerControl; if (e.PropertyName == "Active") { if (sv.Active) { ActiveStreamViewer = sv; } else if (sv.FullScreen) { Stream_FullScreenClicked(sv, new EventArgs()); } return; } if (e.PropertyName == "PendingConnection") { ConnectionChainDescriptor goingTo = sv.PendingConnection; if (goingTo != null) { StreamViewerControl existingViewer = this.FindViewerMatching(goingTo.Source); if (existingViewer != null) { StringBuilder message = new StringBuilder("You are already watching that camera."); if (existingViewer.State == StreamState.Recording) { message.AppendLine("Also, it's also being recorded."); } message.AppendLine(""); message.AppendLine("Moving that camera to this viewer will stop the"); message.AppendLine("existing viewer (and recording if applicable)"); message.AppendLine(""); message.AppendLine("Are you sure you want to move the camera to this viewer?"); if (DialogResult.Yes == FCYesNoMsgBox.ShowDialog("Move camera here", message.ToString(), this)) { existingViewer.Stop(); } else { throw new OperationCanceledException(); } } } } if (sv == ActiveStreamViewer) { switch (e.PropertyName) { case "State": profileGroupSelector.Visible = false; switch (sv.State) { case StreamState.Connecting: case StreamState.Buffering: case StreamState.Stopping: if (CurrentPalette != null) { CurrentPalette = null; } break; case StreamState.Playing: // if (sv.ProfileGroupSelectorEnabled) if (true) { profileGroupSelector.Enabled = true; profileGroupSelector.Visible = true; } profileGroupSelector.StreamViewer = ActiveStreamViewer; break; } break; } } }