From 769c8351814676954445bc02ac1698d215ee60d4 Mon Sep 17 00:00:00 2001 From: yablacky Date: Tue, 11 Oct 2016 21:16:02 +0200 Subject: [PATCH 1/3] Allow to group extended PTZ commands in sub menues. An example of how to define groups is in PTZ2.xml at camera . --- AddCamera.cs | 15 ++++++++++++++- MainForm_Configuration.cs | 22 +++++++++++++++++++--- XML/PTZ2.xml | 6 ++++++ 3 files changed, 39 insertions(+), 4 deletions(-) diff --git a/AddCamera.cs b/AddCamera.cs index add1269b..0dc37752 100644 --- a/AddCamera.cs +++ b/AddCamera.cs @@ -1513,9 +1513,22 @@ private void DdlPtzSelectedIndexChanged(object sender, EventArgs e) CameraControl.PTZ.PTZSettings = ptz; if (ptz.ExtendedCommands?.Command != null) { + string subMenu = ""; foreach (var extcmd in ptz.ExtendedCommands.Command) { - lbExtended.Items.Add(new ListItem(extcmd.Name, extcmd.Value)); + if ((extcmd.Value ?? "") != "") + { + lbExtended.Items.Add(new ListItem(subMenu + extcmd.Name, extcmd.Value)); + } + else if ((extcmd.Name ?? MainForm.PTZ_SUBMENU_END) != MainForm.PTZ_SUBMENU_END) + { + lbExtended.Items.Add(new ListItem(subMenu + extcmd.Name, extcmd.Value)); + subMenu = subMenu + "\t"; // PTZ_SUBMENU_START; + } + else + { + subMenu = subMenu.Substring(1); + } } } if (_loaded) diff --git a/MainForm_Configuration.cs b/MainForm_Configuration.cs index dee03d99..b51d0f75 100644 --- a/MainForm_Configuration.cs +++ b/MainForm_Configuration.cs @@ -42,6 +42,8 @@ public partial class MainForm private static List _remotecommands; private static List _cameras; + public static string PTZ_SUBMENU_END = ".."; + public static void ReloadColors() { _backColor = @@ -3515,16 +3517,30 @@ private void CameraControlMouseDown(object sender, MouseEventArgs e) PTZSettings2Camera ptz = PTZs.SingleOrDefault(p => p.id == cameraControl.Camobject.ptz); if (ptz?.ExtendedCommands?.Command != null) { + var subMenus = new List() { + pTZToolStripMenuItem.DropDownItems + }; + foreach (var extcmd in ptz.ExtendedCommands.Command) { - ToolStripItem tsi = new ToolStripMenuItem + ToolStripMenuItem tsi = new ToolStripMenuItem { Text = extcmd.Name, Tag = cameraControl.Camobject.id + "|" + extcmd.Value }; - tsi.Click += TsiClick; - pTZToolStripMenuItem.DropDownItems.Add(tsi); + if ((extcmd.Value ?? "") != "") + { + tsi.Click += TsiClick; + subMenus[0].Add(tsi); + } + else if ((extcmd.Name ?? PTZ_SUBMENU_END) != PTZ_SUBMENU_END) + { + subMenus[0].Add(tsi); + subMenus.Insert(0, tsi.DropDownItems); // PTZ_SUBMENU_START + } + else if (subMenus.Count > 1) + subMenus.RemoveAt(0); } } } diff --git a/XML/PTZ2.xml b/XML/PTZ2.xml index e270e2a8..d06c3ee9 100644 --- a/XML/PTZ2.xml +++ b/XML/PTZ2.xml @@ -767,6 +767,7 @@ command=16 + command=31 command=33 command=35 @@ -775,6 +776,8 @@ command=41 command=43 command=45 + + command=30 command=32 command=34 @@ -783,9 +786,12 @@ command=40 command=42 command=44 + + command=1 command=20 command=21 + command=94 command=95 From 4c03b90ccf61c9a5943e908d976cba9cc5f24465 Mon Sep 17 00:00:00 2001 From: yablacky Date: Thu, 13 Oct 2016 12:42:08 +0200 Subject: [PATCH 2/3] Fix more places where to care for PTZ submenues --- AddCamera.cs | 8 ++++---- Controls/CameraWindow.cs | 7 +++++-- Controls/PTZScheduler.cs | 15 ++++++++++++++- Controls/PTZTracking.cs | 19 ++++++++++++++++--- MainForm_Configuration.cs | 1 + 5 files changed, 40 insertions(+), 10 deletions(-) diff --git a/AddCamera.cs b/AddCamera.cs index 0dc37752..b29942e8 100644 --- a/AddCamera.cs +++ b/AddCamera.cs @@ -1513,7 +1513,7 @@ private void DdlPtzSelectedIndexChanged(object sender, EventArgs e) CameraControl.PTZ.PTZSettings = ptz; if (ptz.ExtendedCommands?.Command != null) { - string subMenu = ""; + string subMenu = "", PTZ_SUBMENU_START = " "; foreach (var extcmd in ptz.ExtendedCommands.Command) { if ((extcmd.Value ?? "") != "") @@ -1522,12 +1522,12 @@ private void DdlPtzSelectedIndexChanged(object sender, EventArgs e) } else if ((extcmd.Name ?? MainForm.PTZ_SUBMENU_END) != MainForm.PTZ_SUBMENU_END) { - lbExtended.Items.Add(new ListItem(subMenu + extcmd.Name, extcmd.Value)); - subMenu = subMenu + "\t"; // PTZ_SUBMENU_START; + lbExtended.Items.Add(new ListItem(subMenu + extcmd.Name + MainForm.PTZ_SUBMENU_NAME_SUFFIX, extcmd.Value)); + subMenu = subMenu + PTZ_SUBMENU_START; } else { - subMenu = subMenu.Substring(1); + subMenu = subMenu.Substring(Math.Min(PTZ_SUBMENU_START.Length, subMenu.Length)); } } } diff --git a/Controls/CameraWindow.cs b/Controls/CameraWindow.cs index 15adba72..44582061 100644 --- a/Controls/CameraWindow.cs +++ b/Controls/CameraWindow.cs @@ -1798,8 +1798,11 @@ private void CheckPTZSchedule() ptz.ExtendedCommands?.Command?.FirstOrDefault(p => p.Name == entry1.command); if (extcmd != null) { - Calibrating = true; - PTZ.SendPTZCommand(extcmd.Value); + if ((extcmd.Value ?? "") != "") + { + Calibrating = true; + PTZ.SendPTZCommand(extcmd.Value); + } } } } diff --git a/Controls/PTZScheduler.cs b/Controls/PTZScheduler.cs index c3ce80a5..d549046a 100644 --- a/Controls/PTZScheduler.cs +++ b/Controls/PTZScheduler.cs @@ -118,9 +118,22 @@ private void PTZScheduler_Load(object sender, EventArgs e) CameraControl.PTZ.PTZSettings = ptz; if (ptz.ExtendedCommands != null && ptz.ExtendedCommands.Command != null) { + string subMenu = "", PTZ_SUBMENU_START = " "; foreach (var extcmd in ptz.ExtendedCommands.Command) { - ddlScheduleCommand.Items.Add(new MainForm.ListItem3(extcmd.Name, extcmd.Value)); + if ((extcmd.Value ?? "") != "") + { + ddlScheduleCommand.Items.Add(new MainForm.ListItem3(subMenu + extcmd.Name, extcmd.Value)); + } + else if ((extcmd.Name ?? MainForm.PTZ_SUBMENU_END) != MainForm.PTZ_SUBMENU_END) + { + ddlScheduleCommand.Items.Add(new MainForm.ListItem3(subMenu + extcmd.Name + MainForm.PTZ_SUBMENU_NAME_SUFFIX, extcmd.Value)); + subMenu = subMenu + PTZ_SUBMENU_START; + } + else + { + subMenu = subMenu.Substring(Math.Min(PTZ_SUBMENU_START.Length, subMenu.Length)); + } } } } diff --git a/Controls/PTZTracking.cs b/Controls/PTZTracking.cs index 0c26b756..94ba7383 100644 --- a/Controls/PTZTracking.cs +++ b/Controls/PTZTracking.cs @@ -49,12 +49,25 @@ private void PTZTracking_Load(object sender, EventArgs e) CameraControl.PTZ.PTZSettings = ptz; if (ptz.ExtendedCommands != null && ptz.ExtendedCommands.Command != null) { + string subMenu = "", PTZ_SUBMENU_START = " "; foreach (var extcmd in ptz.ExtendedCommands.Command) { - ddlHomeCommand.Items.Add(new MainForm.ListItem3(extcmd.Name, extcmd.Value)); - if (CameraControl.Camobject.settings.ptzautohomecommand == extcmd.Value) + if ((extcmd.Value ?? "") != "") { - ddlHomeCommand.SelectedIndex = ddlHomeCommand.Items.Count - 1; + ddlHomeCommand.Items.Add(new MainForm.ListItem3(subMenu + extcmd.Name, extcmd.Value)); + if (CameraControl.Camobject.settings.ptzautohomecommand == extcmd.Value) + { + ddlHomeCommand.SelectedIndex = ddlHomeCommand.Items.Count - 1; + } + } + else if ((extcmd.Name ?? MainForm.PTZ_SUBMENU_END) != MainForm.PTZ_SUBMENU_END) + { + ddlHomeCommand.Items.Add(new MainForm.ListItem3(subMenu + extcmd.Name + MainForm.PTZ_SUBMENU_NAME_SUFFIX, extcmd.Value)); + subMenu = subMenu + PTZ_SUBMENU_START; + } + else + { + subMenu = subMenu.Substring(Math.Min(PTZ_SUBMENU_START.Length, subMenu.Length)); } } } diff --git a/MainForm_Configuration.cs b/MainForm_Configuration.cs index b51d0f75..7b594a38 100644 --- a/MainForm_Configuration.cs +++ b/MainForm_Configuration.cs @@ -43,6 +43,7 @@ public partial class MainForm private static List _cameras; public static string PTZ_SUBMENU_END = ".."; + public static string PTZ_SUBMENU_NAME_SUFFIX = " >>"; public static void ReloadColors() { From 79e8a492c2e0fcbf90d76d48b0bf9f37f9eda1d7 Mon Sep 17 00:00:00 2001 From: yablacky Date: Fri, 21 Oct 2016 13:52:21 +0200 Subject: [PATCH 3/3] impl. sub menues for PTZ Tool --- PTZTool.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/PTZTool.cs b/PTZTool.cs index 3067985c..b0c8689a 100644 --- a/PTZTool.cs +++ b/PTZTool.cs @@ -31,9 +31,22 @@ public CameraWindow CameraControl PTZSettings2Camera ptz = MainForm.PTZs.Single(p => p.id == CameraControl.Camobject.ptz); if (ptz.ExtendedCommands != null && ptz.ExtendedCommands.Command!=null) { + string subMenu = "", PTZ_SUBMENU_START = " "; foreach (var extcmd in ptz.ExtendedCommands.Command) { - ddlExtended.Items.Add(new ListItem(extcmd.Name, extcmd.Value)); + if ((extcmd.Value ?? "") != "") + { + ddlExtended.Items.Add(new ListItem(subMenu + extcmd.Name, extcmd.Value)); + } + else if ((extcmd.Name ?? MainForm.PTZ_SUBMENU_END) != MainForm.PTZ_SUBMENU_END) + { + ddlExtended.Items.Add(new ListItem(subMenu + extcmd.Name + MainForm.PTZ_SUBMENU_NAME_SUFFIX, extcmd.Value)); + subMenu = subMenu + PTZ_SUBMENU_START; + } + else + { + subMenu = subMenu.Substring(Math.Min(PTZ_SUBMENU_START.Length, subMenu.Length)); + } } } pnlController.Enabled = true;