/// <summary> /// Configure the VLC Control(s) and overlay(s) that handle mouse events /// </summary> private void SetupVlc() { NumberOfViews = GetNumberOfViews(); myVlcControl = new VlcControl[NumberOfViews]; vlcOverlay = new VlcOverlay[NumberOfViews]; string[] vlcMediaOptions = Regex.Split(getIniValue("VlcOptions"), "\\s*,\\s*"); // Split by comma and trim whitespace BgPtzWorker = new BackgroundWorker[NumberOfViews]; for (int i = 0; i < NumberOfViews; i++) { BgPtzWorker[i] = new BackgroundWorker(); BgPtzWorker[i].WorkerReportsProgress = true; BgPtzWorker[i].WorkerSupportsCancellation = true; BgPtzWorker[i].DoWork += BgPtzWorker_DoWork; myVlcControl[i] = new VlcControl(); vlcOverlay[i] = new VlcOverlay() { Name = "VLC Overlay " + i, BackColor = Color.Transparent, TabIndex = i }; //, Parent = myVlcControl[i], Dock = DockStyle.Fill, TabIndex = i }; vlcOverlay[i].GotoPtzPreset += Viewer_GotoPtzPreset; vlcOverlay[i].ToggleMute += Viewer_ToggleMute; // Add panel to VlcControl container to capture mouse events Panel MouseEventPanel = new Panel() { Parent = myVlcControl[i], BackColor = Color.Transparent, Dock = DockStyle.Fill, TabIndex = i, }; MouseEventPanel.MouseEnter += VlcOverlay_MouseEnter; MouseEventPanel.MouseLeave += VlcOverlay_MouseLeave; MouseEventPanel.MouseDoubleClick += VlcOverlay_MouseDoubleClick; MouseEventPanel.MouseMove += VlcOverlay_MouseMove; MouseEventPanel.MouseDown += VlcOverlay_MouseDown; MouseEventPanel.MouseUp += VlcOverlay_MouseUp; MouseEventPanel.MouseWheel += VlcOverlay_MouseWheel; ((System.ComponentModel.ISupportInitialize)(myVlcControl[i])).BeginInit(); myVlcControl[i].VlcLibDirectory = VlcViewer.GetVlcLibLocation(); // Tried to call once outside loop, but it causes in exception on program close myVlcControl[i].VlcMediaplayerOptions = vlcMediaOptions; // new string[] { "--network-caching=150", "--video-filter=deinterlace" }; myVlcControl[i].Location = new Point(0, 0); myVlcControl[i].Name = string.Format("VLC Viewer {0}", i); myVlcControl[i].Rate = (float)0.0; myVlcControl[i].BackColor = Color.Gray; myVlcControl[i].TabIndex = i; //myVlcControl[i].MouseDoubleClick += VlcOverlay_MouseDoubleClick; // Events myVlcControl[i].Playing += OnVlcPlaying; myVlcControl[i].EncounteredError += MyVlcControl_EncounteredError; myVlcControl[i].Buffering += Form1_Buffering; //myVlcControl[i].Controls.Add(vlcOverlay[i]); // Had to add this line to make work ((System.ComponentModel.ISupportInitialize)(myVlcControl[i])).EndInit(); } setSizes(); }
private void Form1_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyData) { case Keys.F5: Cursor.Current = Cursors.WaitCursor; VlcViewer.DisconnectAll(myVlcControl); InitializeForm(); Cursor.Current = Cursors.Default; break; case Keys.F11: if (WindowState != FormWindowState.Maximized) { // Change border style first or else the ClientSize will be larger than the screen dimensions FormBorderStyle = FormBorderStyle.None; WindowState = FormWindowState.Maximized; } else { WindowState = FormWindowState.Normal; FormBorderStyle = FormBorderStyle.Sizable; } break; case Keys.Control | Keys.D: foreach (Control c in this.Controls) { if (c.Tag?.ToString() == "Debug") { c.Visible = !c.Visible; c.BringToFront(); } } break; } // Call preset if number key pressed if (char.IsDigit((char)e.KeyCode) && vlcOverlay[ActiveViewer].PtzController != null) { int preset = (int)e.KeyValue - (int)Keys.D0; if (preset > 0) { vlcOverlay[ActiveViewer].ShowNotification(string.Format("Preset {0}", preset), 2000); try { vlcOverlay[ActiveViewer].PtzController.ShowPreset(preset); } catch (IndexOutOfRangeException) { vlcOverlay[ActiveViewer].ShowNotification(string.Format("Preset #{0} undefined", preset), 3000); } } } }
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Cursor.Current = Cursors.WaitCursor; VlcViewer.DisconnectAll(myVlcControl); // Call disconnect (if tagClient is not null) //tagClient?.Disconnect(); Cursor.Current = Cursors.Default; log.Info("Application Form closing"); }
private void VlcOverlay_MouseUp(object sender, MouseEventArgs e) { Panel p = (Panel)sender; VlcOverlay overlay = vlcOverlay[p.TabIndex]; // (VlcOverlay)sender; log.Debug(string.Format("Mouse up on view {0}", overlay.Name)); // Set the viewer status cbxViewSelect.SelectedIndex = p.TabIndex; SetViewerStatus(p.TabIndex); txtUri.Text = MyIni.Read("lastURI", "Viewer_" + p.TabIndex); if (e.Button == MouseButtons.Right) { VlcViewer.TogglePause(myVlcControl[p.TabIndex]); } // Attempt to prevent unstopping PTZ (stop sent before PTZ?) BgPtzWorker[overlay.TabIndex].CancelAsync(); PtzStop(overlay); }
private void PauseBtn_Click(object sender, EventArgs e) { int viewerNum = cbxViewSelect.SelectedIndex; VlcViewer.TogglePause(myVlcControl[viewerNum]); }
private void BtnLoadLast_Click(object sender, EventArgs e) { VlcViewer.loadLastStream(myVlcControl, MyIni); }