diff --git a/src/AITool.Setup/Script.iss b/src/AITool.Setup/Script.iss index 6479b78..0727a2b 100644 --- a/src/AITool.Setup/Script.iss +++ b/src/AITool.Setup/Script.iss @@ -14,7 +14,7 @@ ; This Is Full App Version Major.Minor.Build.Revision ; Store First 3 Parts of Version in ShortAppVersion to be used for SBS Assembly Installation Major.Minor.Build #dim Version[4] -#expr ParseVersion("..\UI\bin\Debug\net6.0-windows\AITOOL.exe", Version[0], Version[1], Version[2], Version[3]) +#expr ParseVersion("..\UI\bin\Debug\net6.0-windows10.0.19041.0\AITOOL.exe", Version[0], Version[1], Version[2], Version[3]) #define AppVersion Str(Version[0]) + "." + Str(Version[1]) + "." + Str(Version[2]) + "." + Str(Version[3]) #define ShortAppVersion Str(Version[0]) + "." + Str(Version[1]) + "." + Str(Version[2]) #define ShorterAppVersion Str(Version[0]) + "." + Str(Version[1]) @@ -54,7 +54,7 @@ Filename: "{app}\AITOOL.exe"; Flags: nowait postinstall skipifsilent [Files] //Source: "Script.iss"; DestDir: "{app}" -Source: "..\UI\bin\Debug\net6.0-windows\*"; DestDir: "{app}";Flags: recursesubdirs ignoreversion;Excludes: "AIToolSetup*,_Settings" +Source: "..\UI\bin\Debug\net6.0-windows10.0.19041.0\*"; DestDir: "{app}";Flags: recursesubdirs ignoreversion;Excludes: "AIToolSetup*,_Settings" [Icons] Name: "{group}\AITOOL"; Filename: "{app}\AITOOL.exe" ; Components: full; Tasks: startmenu Name: "{userdesktop}\AITOOL"; Filename: "{app}\AITOOL.exe" ; Components: full; Tasks: desktopicon diff --git a/src/UI/AITOOL.cs b/src/UI/AITOOL.cs index 7fea8a0..071ddd3 100644 --- a/src/UI/AITOOL.cs +++ b/src/UI/AITOOL.cs @@ -852,6 +852,9 @@ public static void UpdateAIURLList(bool Force = false) } AppSettings.Settings.AIURLList = newlist; + //sort AIURLList so that all items enabled are at the top. Use OrderbyDescending so that the order is preserved + AppSettings.Settings.AIURLList = AppSettings.Settings.AIURLList.OrderByDescending(x => x.Enabled.ReadFullFence()).ToList(); + //Check to see if we need to get updated URL list - In theory this should only happen once bool hasold = !string.IsNullOrEmpty(AppSettings.Settings.deepstack_url); if (((AppSettings.Settings.AIURLList.Count == 0 || Force) && hasold) || hasold) @@ -938,6 +941,7 @@ public static void UpdateAIURLList(bool Force = false) } + //add a default DeepStack server if none found //if (AppSettings.Settings.AIURLList.Count == 0) //{ @@ -3711,7 +3715,7 @@ public static async Task DetectObjects(ClsImageQueueItem Cu else { //could not access the file for 30 seconds?? Or unexpected error - ret.Error = $"Error: {CurImg.LastError}. ({CurImg.FileLockMS}ms, with {CurImg.FileLockErrRetryCnt} retries)"; + ret.Error = $"Error: Last Image message: '{CurImg.LastError}'. ({CurImg.FileLockMS}ms, with {CurImg.FileLockErrRetryCnt} retries)"; CurImg.ErrCount.AtomicIncrementAndGet(); CurImg.ResultMessage = ret.Error; Log(ret.Error, AISRV, cam, CurImg); diff --git a/src/UI/AssemblyInfo1.cs b/src/UI/AssemblyInfo1.cs index 5446a82..276af1b 100644 --- a/src/UI/AssemblyInfo1.cs +++ b/src/UI/AssemblyInfo1.cs @@ -29,5 +29,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("2.5.25.8556")] -[assembly: AssemblyFileVersion("2.5.25.8556")] +[assembly: AssemblyVersion("2.5.44.8558")] +[assembly: AssemblyFileVersion("2.5.44.8558")] diff --git a/src/UI/Camera.cs b/src/UI/Camera.cs index e57e0ad..8e0d935 100644 --- a/src/UI/Camera.cs +++ b/src/UI/Camera.cs @@ -100,9 +100,9 @@ public class Camera : IEquatable public string Prefix { get; set; } = ""; public string BICamName { get; set; } = ""; public string MaskFileName { get; set; } = ""; - public string triggering_objects_as_string { get; set; } = "person, people, face, bear, elephant, car, truck, pickup truck, SUV, van, bicycle, motorcycle, motorbike, bus, dog, horse, boat, train, airplane, zebra, giraffe, cow, sheep, cat, bird"; + public string triggering_objects_as_string { get; set; } = ""; //"person, people, face, bear, elephant, car, truck, pickup truck, SUV, van, bicycle, motorcycle, motorbike, bus, dog, horse, boat, train, airplane, zebra, giraffe, cow, sheep, cat, bird"; - public string additional_triggering_objects_as_string { get; set; } = "SUV, VAN, Pickup Truck, Meat Popsicle"; + public string additional_triggering_objects_as_string { get; set; } = ""; //"SUV, VAN, Pickup Truck, Meat Popsicle"; public ClsRelevantObjectManager DefaultTriggeringObjects { get; set; } = null; public ClsRelevantObjectManager TelegramTriggeringObjects { get; set; } = null; public ClsRelevantObjectManager PushoverTriggeringObjects { get; set; } = null; diff --git a/src/UI/ClsImageAdjust.cs b/src/UI/ClsImageAdjust.cs index c1455f0..5274f30 100644 --- a/src/UI/ClsImageAdjust.cs +++ b/src/UI/ClsImageAdjust.cs @@ -1,4 +1,5 @@ using Newtonsoft.Json; + using System; using System.Collections.Generic; using System.Linq; @@ -29,7 +30,7 @@ public ClsImageAdjust(string name) } public ClsImageAdjust(string name, string jpegqualitypercent, string imagesizepercent, string imagewidth, string imageheight, string brightness, string contrast) { - this.Update(name, jpegqualitypercent, imagesizepercent, imagewidth, imageheight, brightness, contrast); + this.Update(name.Trim(), jpegqualitypercent.Trim(), imagesizepercent.Trim(), imagewidth.Trim(), imageheight.Trim(), brightness.Trim(), contrast.Trim()); } public void Update(string name, string jpegqualitypercent, string imagesizepercent, string imagewidth, string imageheight, string brightness, string contrast) diff --git a/src/UI/ClsPrediction.cs b/src/UI/ClsPrediction.cs index 3648276..ee9cbf4 100644 --- a/src/UI/ClsPrediction.cs +++ b/src/UI/ClsPrediction.cs @@ -1110,7 +1110,7 @@ private void GetObjectType() return; } - if (tmp.Equals("person")) + if (tmp.Equals("person") || tmp.Equals("people")) this.ObjType = ObjectType.Person; else if (tmp.Equals("face") || this.Detail.IndexOf("face", StringComparison.OrdinalIgnoreCase) >= 0) this.ObjType = ObjectType.Face; diff --git a/src/UI/ClsRelevantObjectManager.cs b/src/UI/ClsRelevantObjectManager.cs index 5475427..cd1bff0 100644 --- a/src/UI/ClsRelevantObjectManager.cs +++ b/src/UI/ClsRelevantObjectManager.cs @@ -82,10 +82,14 @@ public void Update(double MinLowerThreshold = 0, double MaxUpperThreshold = 0, b } public override string ToString() { - if (this.Trigger) - return this.Name; - else - return "-" + this.Name; + string ret = this.Name; + if (!this.Trigger) + ret = "-" + ret; + + if (!this.Enabled) + ret = "(" + ret + ")"; + + return ret; } public override bool Equals(object obj) @@ -246,6 +250,9 @@ public void Update(bool ResetIfNeeded = true) bool restrict = !this.cam.IsNull() && !this.cam.DefaultTriggeringObjects.IsNull() && this.cam.DefaultTriggeringObjects.TypeName != this.TypeName; + //sort ObjectList so that enabled objects are first, then by priority + this.ObjectList = this.ObjectList.OrderByDescending(ro => ro.Enabled).ToList(); + //make sure no priority is in order and the minimum is not less than the main cameras list for (int i = 0; i < this.ObjectList.Count; i++) { @@ -266,6 +273,7 @@ public void Update(bool ResetIfNeeded = true) } + ExcludeObjects(); } diff --git a/src/UI/ClsURLItem.cs b/src/UI/ClsURLItem.cs index b1c1227..1da73d6 100644 --- a/src/UI/ClsURLItem.cs +++ b/src/UI/ClsURLItem.cs @@ -34,24 +34,30 @@ public enum URLTypeEnum } public class ClsURLItem : IEquatable { - private bool isValid = false; - public string Name { get; set; } = ""; public URLTypeEnum Type { get; set; } = URLTypeEnum.Unknown; - public ThreadSafe.Boolean Enabled { get; set; } = new ThreadSafe.Boolean(true); - public bool IsValid + public string Name { get; set; } = ""; + [JsonIgnore] + public bool IsValid { get; set; } = false; + public string LastResultMessage { get; set; } = ""; + public int Order { get; set; } = 0; + public long LastTimeMS { get; set; } = 0; + public long AvgTimeMS { - get { return isValid; } - set { isValid = value; } + get { return Convert.ToInt64(this.AITimeCalcs.Avg); } } - public int Order { get; set; } = 0; + public string url { get; set; } = ""; - [JsonIgnore] + public ThreadSafe.Boolean Enabled { get; set; } = new ThreadSafe.Boolean(true); public ThreadSafe.Boolean InUse { get; set; } = new ThreadSafe.Boolean(false); - public string ActiveTimeRange { get; set; } = "00:00:00-23:59:59"; + [JsonIgnore] + public ThreadSafe.Integer CurErrCount { get; set; } = new ThreadSafe.Integer(0); + public ThreadSafe.Boolean ErrDisabled { get; set; } = new ThreadSafe.Boolean(false); + public ThreadSafe.Integer ErrCount { get; set; } = new ThreadSafe.Integer(0); + public ThreadSafe.Integer ErrsInRowCount { get; set; } = new ThreadSafe.Integer(0); + public string Cameras { get; set; } = ""; public int MaxImagesPerMonth { get; set; } = 0; - public string ImageAdjustProfile { get; set; } = "Default"; public int Threshold_Lower { get; set; } = 0; //override the cameras threshold since different AI servers may need to be tuned to different values public int Threshold_Upper { get; set; } = 100; public bool UseAsRefinementServer { get; set; } = false; @@ -61,21 +67,16 @@ public bool IsValid public bool UseOnlyAsLinkedServer { get; set; } = false; public bool LinkServerResults { get; set; } = false; public string LinkedResultsServerList { get; set; } = ""; + public string ActiveTimeRange { get; set; } = "00:00:00-23:59:59"; + public string ImageAdjustProfile { get; set; } = "Default"; [JsonIgnore] public int CurOrder { get; set; } = 0; [JsonIgnore] - public ThreadSafe.Integer CurErrCount { get; set; } = new ThreadSafe.Integer(0); - [JsonIgnore] - public ThreadSafe.Boolean ErrDisabled { get; set; } = new ThreadSafe.Boolean(false); - public ThreadSafe.Integer ErrCount { get; set; } = new ThreadSafe.Integer(0); - public ThreadSafe.Integer ErrsInRowCount { get; set; } = new ThreadSafe.Integer(0); public bool IsLocalHost { get; set; } = false; public bool IsLocalNetwork { get; set; } = false; public string HelpURL { get; set; } = ""; public DateTime LastUsedTime { get; set; } = DateTime.MinValue; public bool LastResultSuccess { get; set; } = false; - public string LastResultMessage { get; set; } = ""; - public long LastTimeMS { get; set; } = 0; public MovingCalcs AITimeCalcs { get; set; } = new MovingCalcs(250, "Images", true); //store deepstack time calc in the url public string CurSrv { get; set; } = ""; public int Port { get; set; } = 0; @@ -167,7 +168,7 @@ public bool Update(bool Init) - bool ShouldInit = Init || !this.isValid || string.IsNullOrWhiteSpace(this.url) || (!this.url.Contains("/") && !this.url.Contains("_")) || this.Type == URLTypeEnum.Unknown; + bool ShouldInit = Init || !this.IsValid || string.IsNullOrWhiteSpace(this.url) || (!this.url.Contains("/") && !this.url.Contains("_")) || this.Type == URLTypeEnum.Unknown; if (ShouldInit) { @@ -537,7 +538,7 @@ public bool Update(bool Init) AITOOL.Log($"Error: '{this.Type.ToString()}' URL is not known/valid: '{this.url}'"); } - if (!IsAWS && this.isValid && this.HttpClient == null) + if (!IsAWS && this.IsValid && this.HttpClient == null) { this.HttpClient = new HttpClient(); this.HttpClient.Timeout = this.GetTimeout(); @@ -569,7 +570,7 @@ public override bool Equals(object obj) public bool Equals(ClsURLItem other) { - return other != null && this.url.EqualsIgnoreCase(other.url); + return other != null && this.url.EqualsIgnoreCase(other.url) && this.Name.EqualsIgnoreCase(other.Name) && this.Type == other.Type; } } diff --git a/src/UI/Extensions/DoubleExtensions.cs b/src/UI/Extensions/DoubleExtensions.cs index cdebfd0..fc89f02 100644 --- a/src/UI/Extensions/DoubleExtensions.cs +++ b/src/UI/Extensions/DoubleExtensions.cs @@ -40,6 +40,17 @@ public static float ToFloat(this double val, bool Abs = false) return 0; } + public static decimal Round(this decimal val, int Places = 1) + { + try + { + if (!val.IsNull()) + return Math.Round(val, Places); + } + catch { } + + return 0; + } public static double Round(this double val, int Places = 1) { try diff --git a/src/UI/Frm_AIServerDeepstackEdit.Designer.cs b/src/UI/Frm_AIServerDeepstackEdit.Designer.cs index 346a555..28504f7 100644 --- a/src/UI/Frm_AIServerDeepstackEdit.Designer.cs +++ b/src/UI/Frm_AIServerDeepstackEdit.Designer.cs @@ -41,6 +41,7 @@ private void InitializeComponent() tb_ApplyToCams = new System.Windows.Forms.TextBox(); chk_Enabled = new System.Windows.Forms.CheckBox(); groupBox1 = new System.Windows.Forms.GroupBox(); + tb_Name = new System.Windows.Forms.TextBox(); label14 = new System.Windows.Forms.Label(); cb_OnlyLinked = new System.Windows.Forms.CheckBox(); cb_TimeoutError = new System.Windows.Forms.CheckBox(); @@ -62,6 +63,7 @@ private void InitializeComponent() tb_ImagesPerMonth = new System.Windows.Forms.TextBox(); btn_ImageAdjustEdit = new System.Windows.Forms.Button(); cb_ImageAdjustProfile = new System.Windows.Forms.ComboBox(); + label15 = new System.Windows.Forms.Label(); label9 = new System.Windows.Forms.Label(); label8 = new System.Windows.Forms.Label(); labelTimeout = new System.Windows.Forms.Label(); @@ -71,8 +73,6 @@ private void InitializeComponent() linkHelpURL = new System.Windows.Forms.LinkLabel(); btTest = new System.Windows.Forms.Button(); bt_clear = new System.Windows.Forms.Button(); - label15 = new System.Windows.Forms.Label(); - tb_Name = new System.Windows.Forms.TextBox(); groupBox1.SuspendLayout(); groupBoxLinked.SuspendLayout(); groupBoxRefine.SuspendLayout(); @@ -112,7 +112,7 @@ private void InitializeComponent() tb_URL.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); tb_URL.Location = new System.Drawing.Point(121, 60); tb_URL.Name = "tb_URL"; - tb_URL.Size = new System.Drawing.Size(484, 20); + tb_URL.Size = new System.Drawing.Size(512, 20); tb_URL.TabIndex = 1; tb_URL.TextChanged += tb_URL_TextChanged; // @@ -120,7 +120,7 @@ private void InitializeComponent() // bt_Save.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; bt_Save.DialogResult = System.Windows.Forms.DialogResult.OK; - bt_Save.Location = new System.Drawing.Point(555, 405); + bt_Save.Location = new System.Drawing.Point(575, 405); bt_Save.Name = "bt_Save"; bt_Save.Size = new System.Drawing.Size(70, 30); bt_Save.TabIndex = 17; @@ -161,7 +161,7 @@ private void InitializeComponent() tb_ApplyToCams.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); tb_ApplyToCams.Location = new System.Drawing.Point(121, 86); tb_ApplyToCams.Name = "tb_ApplyToCams"; - tb_ApplyToCams.Size = new System.Drawing.Size(484, 20); + tb_ApplyToCams.Size = new System.Drawing.Size(512, 20); tb_ApplyToCams.TabIndex = 2; toolTip1.SetToolTip(tb_ApplyToCams, "A comma separated list of cameras that this AI server will work with.\r\n\r\nLeave empty for ALL."); // @@ -212,10 +212,18 @@ private void InitializeComponent() groupBox1.Controls.Add(label5); groupBox1.Location = new System.Drawing.Point(5, 6); groupBox1.Name = "groupBox1"; - groupBox1.Size = new System.Drawing.Size(612, 393); + groupBox1.Size = new System.Drawing.Size(640, 393); groupBox1.TabIndex = 7; groupBox1.TabStop = false; // + // tb_Name + // + tb_Name.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + tb_Name.Location = new System.Drawing.Point(121, 33); + tb_Name.Name = "tb_Name"; + tb_Name.Size = new System.Drawing.Size(512, 22); + tb_Name.TabIndex = 21; + // // label14 // label14.AutoSize = true; @@ -278,7 +286,7 @@ private void InitializeComponent() groupBoxLinked.Controls.Add(checkedComboBoxLinked); groupBoxLinked.Location = new System.Drawing.Point(8, 288); groupBoxLinked.Name = "groupBoxLinked"; - groupBoxLinked.Size = new System.Drawing.Size(595, 63); + groupBoxLinked.Size = new System.Drawing.Size(623, 63); groupBoxLinked.TabIndex = 17; groupBoxLinked.TabStop = false; // @@ -314,7 +322,7 @@ private void InitializeComponent() checkedComboBoxLinked.IntegralHeight = false; checkedComboBoxLinked.Location = new System.Drawing.Point(6, 36); checkedComboBoxLinked.Name = "checkedComboBoxLinked"; - checkedComboBoxLinked.Size = new System.Drawing.Size(583, 21); + checkedComboBoxLinked.Size = new System.Drawing.Size(611, 21); checkedComboBoxLinked.TabIndex = 12; checkedComboBoxLinked.Text = "Click dropdown to select"; checkedComboBoxLinked.ValueSeparator = ", "; @@ -327,7 +335,7 @@ private void InitializeComponent() groupBoxRefine.Controls.Add(tb_RefinementObjects); groupBoxRefine.Location = new System.Drawing.Point(8, 196); groupBoxRefine.Name = "groupBoxRefine"; - groupBoxRefine.Size = new System.Drawing.Size(595, 63); + groupBoxRefine.Size = new System.Drawing.Size(623, 63); groupBoxRefine.TabIndex = 16; groupBoxRefine.TabStop = false; // @@ -358,7 +366,7 @@ private void InitializeComponent() tb_RefinementObjects.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); tb_RefinementObjects.Location = new System.Drawing.Point(8, 36); tb_RefinementObjects.Name = "tb_RefinementObjects"; - tb_RefinementObjects.Size = new System.Drawing.Size(581, 20); + tb_RefinementObjects.Size = new System.Drawing.Size(609, 20); tb_RefinementObjects.TabIndex = 9; // // tb_Upper @@ -405,7 +413,7 @@ private void InitializeComponent() tb_timeout.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); tb_timeout.Location = new System.Drawing.Point(525, 137); tb_timeout.Name = "tb_timeout"; - tb_timeout.Size = new System.Drawing.Size(80, 20); + tb_timeout.Size = new System.Drawing.Size(108, 20); tb_timeout.TabIndex = 5; tb_timeout.Text = "0"; toolTip1.SetToolTip(tb_timeout, "If you set this to any value other than 0 it will override the default timeout"); @@ -416,7 +424,7 @@ private void InitializeComponent() tb_ImagesPerMonth.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); tb_ImagesPerMonth.Location = new System.Drawing.Point(525, 112); tb_ImagesPerMonth.Name = "tb_ImagesPerMonth"; - tb_ImagesPerMonth.Size = new System.Drawing.Size(80, 20); + tb_ImagesPerMonth.Size = new System.Drawing.Size(108, 20); tb_ImagesPerMonth.TabIndex = 4; tb_ImagesPerMonth.Text = "0"; toolTip1.SetToolTip(tb_ImagesPerMonth, "Max images per month - 0 for unlimited. Amazon has 5000 free images a month"); @@ -443,6 +451,16 @@ private void InitializeComponent() cb_ImageAdjustProfile.TabIndex = 5; cb_ImageAdjustProfile.TabStop = false; // + // label15 + // + label15.AllowDrop = true; + label15.AutoSize = true; + label15.Location = new System.Drawing.Point(78, 36); + label15.Name = "label15"; + label15.Size = new System.Drawing.Size(39, 13); + label15.TabIndex = 0; + label15.Text = "Name:"; + // // label9 // label9.AutoSize = true; @@ -504,7 +522,7 @@ private void InitializeComponent() // btTest // btTest.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; - btTest.Location = new System.Drawing.Point(479, 405); + btTest.Location = new System.Drawing.Point(499, 405); btTest.Name = "btTest"; btTest.Size = new System.Drawing.Size(70, 30); btTest.TabIndex = 16; @@ -515,7 +533,7 @@ private void InitializeComponent() // bt_clear // bt_clear.Anchor = System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right; - bt_clear.Location = new System.Drawing.Point(403, 405); + bt_clear.Location = new System.Drawing.Point(423, 405); bt_clear.Name = "bt_clear"; bt_clear.Size = new System.Drawing.Size(70, 30); bt_clear.TabIndex = 15; @@ -523,28 +541,11 @@ private void InitializeComponent() bt_clear.UseVisualStyleBackColor = true; bt_clear.Click += bt_clear_Click; // - // label15 - // - label15.AllowDrop = true; - label15.AutoSize = true; - label15.Location = new System.Drawing.Point(78, 36); - label15.Name = "label15"; - label15.Size = new System.Drawing.Size(39, 13); - label15.TabIndex = 0; - label15.Text = "Name:"; - // - // tb_Name - // - tb_Name.Location = new System.Drawing.Point(121, 33); - tb_Name.Name = "tb_Name"; - tb_Name.Size = new System.Drawing.Size(482, 22); - tb_Name.TabIndex = 21; - // // Frm_AIServerDeepstackEdit // AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; AutoScroll = true; - ClientSize = new System.Drawing.Size(628, 442); + ClientSize = new System.Drawing.Size(648, 442); Controls.Add(bt_Save); Controls.Add(bt_clear); Controls.Add(btTest); diff --git a/src/UI/Frm_AIServerDeepstackEdit.cs b/src/UI/Frm_AIServerDeepstackEdit.cs index 6e759aa..02dcf2d 100644 --- a/src/UI/Frm_AIServerDeepstackEdit.cs +++ b/src/UI/Frm_AIServerDeepstackEdit.cs @@ -244,7 +244,7 @@ private async void btTest_Click(object sender, EventArgs e) { Frm_ObjectDetail frm = new Frm_ObjectDetail(); - frm.PredictionObjectDetails = result.OutPredictions; + frm.PredictionObjectDetailsList = result.OutPredictions; frm.ImageFileName = tpth; frm.Show(); diff --git a/src/UI/Frm_AIServerDeepstackEdit.resx b/src/UI/Frm_AIServerDeepstackEdit.resx index ce2c2d5..946f457 100644 --- a/src/UI/Frm_AIServerDeepstackEdit.resx +++ b/src/UI/Frm_AIServerDeepstackEdit.resx @@ -120,7 +120,4 @@ 17, 17 - - 17, 17 - \ No newline at end of file diff --git a/src/UI/Frm_AIServers.Designer.cs b/src/UI/Frm_AIServers.Designer.cs index c69609f..90a6b4a 100644 --- a/src/UI/Frm_AIServers.Designer.cs +++ b/src/UI/Frm_AIServers.Designer.cs @@ -67,6 +67,7 @@ private void InitializeComponent() // FOLV_AIServers // FOLV_AIServers.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + FOLV_AIServers.CheckBoxes = true; FOLV_AIServers.Location = new System.Drawing.Point(0, 34); FOLV_AIServers.Name = "FOLV_AIServers"; FOLV_AIServers.ShowGroups = false; diff --git a/src/UI/Frm_AIServers.cs b/src/UI/Frm_AIServers.cs index eaf3db8..22e55b7 100644 --- a/src/UI/Frm_AIServers.cs +++ b/src/UI/Frm_AIServers.cs @@ -25,6 +25,20 @@ private void Frm_AddAIServers_Load(object sender, EventArgs e) { Global_GUI.RestoreWindowState(this); Global_GUI.ConfigureFOLV(FOLV_AIServers, typeof(ClsURLItem), null, this.imageList1); + + this.FOLV_AIServers.BooleanCheckStateGetter = delegate (Object rowObject) + { + return !rowObject.IsNull() && ((ClsURLItem)rowObject).Enabled.ReadFullFence(); + }; + + this.FOLV_AIServers.BooleanCheckStatePutter = delegate (Object rowObject, bool newValue) + { + if (rowObject.IsNull()) + return false; + ((ClsURLItem)rowObject).Enabled.WriteFullFence(newValue); + return newValue; + }; + Global_GUI.UpdateFOLV(FOLV_AIServers, AppSettings.Settings.AIURLList); } diff --git a/src/UI/Frm_AIServers.resx b/src/UI/Frm_AIServers.resx index 724bce5..7baba8a 100644 --- a/src/UI/Frm_AIServers.resx +++ b/src/UI/Frm_AIServers.resx @@ -1920,62 +1920,62 @@ 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 @@ -2009,32 +2009,32 @@ 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 @@ -2077,7 +2077,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAPgsAAAJNU0Z0AUkBTAIBAQUB - AAGwAQABsAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEgAwABAQEAAQgG + AAG4AQABuAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEgAwABAQEAAQgG AAEIGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEAAfABygGmAQABMwUAATMB AAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEAAYABfAH/AQACUAH/AQAB kwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFmAwABmQMAAcwCAAEzAwAC diff --git a/src/UI/Frm_ObjectDetail.Designer.cs b/src/UI/Frm_ObjectDetail.Designer.cs index b0c99d4..1f10661 100644 --- a/src/UI/Frm_ObjectDetail.Designer.cs +++ b/src/UI/Frm_ObjectDetail.Designer.cs @@ -28,148 +28,144 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - this.folv_ObjectDetail = new BrightIdeasSoftware.FastObjectListView(); - this.contextMenuStripMask = new System.Windows.Forms.ContextMenuStrip(this.components); - this.createStaticMasksToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.splitContainer1 = new System.Windows.Forms.SplitContainer(); - this.splitContainer2 = new System.Windows.Forms.SplitContainer(); - this.pictureBox2 = new System.Windows.Forms.PictureBox(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); - ((System.ComponentModel.ISupportInitialize)(this.folv_ObjectDetail)).BeginInit(); - this.contextMenuStripMask.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); - this.splitContainer1.Panel1.SuspendLayout(); - this.splitContainer1.Panel2.SuspendLayout(); - this.splitContainer1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); - this.splitContainer2.Panel1.SuspendLayout(); - this.splitContainer2.Panel2.SuspendLayout(); - this.splitContainer2.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); - this.SuspendLayout(); + components = new System.ComponentModel.Container(); + folv_ObjectDetail = new BrightIdeasSoftware.FastObjectListView(); + contextMenuStripMask = new System.Windows.Forms.ContextMenuStrip(components); + createStaticMasksToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + splitContainer1 = new System.Windows.Forms.SplitContainer(); + splitContainer2 = new System.Windows.Forms.SplitContainer(); + pictureBox2 = new System.Windows.Forms.PictureBox(); + pictureBox1 = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)folv_ObjectDetail).BeginInit(); + contextMenuStripMask.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit(); + splitContainer1.Panel1.SuspendLayout(); + splitContainer1.Panel2.SuspendLayout(); + splitContainer1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)splitContainer2).BeginInit(); + splitContainer2.Panel1.SuspendLayout(); + splitContainer2.Panel2.SuspendLayout(); + splitContainer2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pictureBox2).BeginInit(); + ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit(); + SuspendLayout(); // // folv_ObjectDetail // - this.folv_ObjectDetail.ContextMenuStrip = this.contextMenuStripMask; - this.folv_ObjectDetail.Dock = System.Windows.Forms.DockStyle.Fill; - this.folv_ObjectDetail.HideSelection = false; - this.folv_ObjectDetail.Location = new System.Drawing.Point(0, 0); - this.folv_ObjectDetail.Name = "folv_ObjectDetail"; - this.folv_ObjectDetail.ShowGroups = false; - this.folv_ObjectDetail.Size = new System.Drawing.Size(316, 232); - this.folv_ObjectDetail.TabIndex = 5; - this.folv_ObjectDetail.UseCompatibleStateImageBehavior = false; - this.folv_ObjectDetail.View = System.Windows.Forms.View.Details; - this.folv_ObjectDetail.VirtualMode = true; - this.folv_ObjectDetail.FormatRow += new System.EventHandler(this.folv_ObjectDetail_FormatRow); - this.folv_ObjectDetail.SelectionChanged += new System.EventHandler(this.folv_ObjectDetail_SelectionChanged); + folv_ObjectDetail.ContextMenuStrip = contextMenuStripMask; + folv_ObjectDetail.Dock = System.Windows.Forms.DockStyle.Fill; + folv_ObjectDetail.Location = new System.Drawing.Point(0, 0); + folv_ObjectDetail.Name = "folv_ObjectDetail"; + folv_ObjectDetail.ShowGroups = false; + folv_ObjectDetail.Size = new System.Drawing.Size(316, 232); + folv_ObjectDetail.TabIndex = 5; + folv_ObjectDetail.UseCompatibleStateImageBehavior = false; + folv_ObjectDetail.View = System.Windows.Forms.View.Details; + folv_ObjectDetail.VirtualMode = true; + folv_ObjectDetail.FormatRow += folv_ObjectDetail_FormatRow; + folv_ObjectDetail.SelectionChanged += folv_ObjectDetail_SelectionChanged; + folv_ObjectDetail.SelectedIndexChanged += folv_ObjectDetail_SelectedIndexChanged; // // contextMenuStripMask // - this.contextMenuStripMask.ImageScalingSize = new System.Drawing.Size(24, 24); - this.contextMenuStripMask.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.createStaticMasksToolStripMenuItem}); - this.contextMenuStripMask.Name = "contextMenuStripMask"; - this.contextMenuStripMask.Size = new System.Drawing.Size(185, 26); + contextMenuStripMask.ImageScalingSize = new System.Drawing.Size(24, 24); + contextMenuStripMask.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { createStaticMasksToolStripMenuItem }); + contextMenuStripMask.Name = "contextMenuStripMask"; + contextMenuStripMask.Size = new System.Drawing.Size(185, 26); // // createStaticMasksToolStripMenuItem // - this.createStaticMasksToolStripMenuItem.Name = "createStaticMasksToolStripMenuItem"; - this.createStaticMasksToolStripMenuItem.Size = new System.Drawing.Size(184, 22); - this.createStaticMasksToolStripMenuItem.Text = "Create Static Mask(s)"; - this.createStaticMasksToolStripMenuItem.Click += new System.EventHandler(this.createStaticMasksToolStripMenuItem_Click); + createStaticMasksToolStripMenuItem.Name = "createStaticMasksToolStripMenuItem"; + createStaticMasksToolStripMenuItem.Size = new System.Drawing.Size(184, 22); + createStaticMasksToolStripMenuItem.Text = "Create Static Mask(s)"; + createStaticMasksToolStripMenuItem.Click += createStaticMasksToolStripMenuItem_Click; // // splitContainer1 // - this.splitContainer1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer1.Location = new System.Drawing.Point(0, 0); - this.splitContainer1.Name = "splitContainer1"; + splitContainer1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + splitContainer1.Location = new System.Drawing.Point(0, 0); + splitContainer1.Name = "splitContainer1"; // // splitContainer1.Panel1 // - this.splitContainer1.Panel1.Controls.Add(this.splitContainer2); + splitContainer1.Panel1.Controls.Add(splitContainer2); // // splitContainer1.Panel2 // - this.splitContainer1.Panel2.AutoScroll = true; - this.splitContainer1.Panel2.Controls.Add(this.pictureBox1); - this.splitContainer1.Size = new System.Drawing.Size(962, 512); - this.splitContainer1.SplitterDistance = 320; - this.splitContainer1.TabIndex = 6; + splitContainer1.Panel2.AutoScroll = true; + splitContainer1.Panel2.Controls.Add(pictureBox1); + splitContainer1.Size = new System.Drawing.Size(962, 512); + splitContainer1.SplitterDistance = 320; + splitContainer1.TabIndex = 6; // // splitContainer2 // - this.splitContainer2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; - this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer2.Location = new System.Drawing.Point(0, 0); - this.splitContainer2.Name = "splitContainer2"; - this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal; + splitContainer2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; + splitContainer2.Location = new System.Drawing.Point(0, 0); + splitContainer2.Name = "splitContainer2"; + splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal; // // splitContainer2.Panel1 // - this.splitContainer2.Panel1.Controls.Add(this.folv_ObjectDetail); + splitContainer2.Panel1.Controls.Add(folv_ObjectDetail); // // splitContainer2.Panel2 // - this.splitContainer2.Panel2.Controls.Add(this.pictureBox2); - this.splitContainer2.Size = new System.Drawing.Size(320, 512); - this.splitContainer2.SplitterDistance = 236; - this.splitContainer2.TabIndex = 6; + splitContainer2.Panel2.Controls.Add(pictureBox2); + splitContainer2.Size = new System.Drawing.Size(320, 512); + splitContainer2.SplitterDistance = 236; + splitContainer2.TabIndex = 6; // // pictureBox2 // - this.pictureBox2.Dock = System.Windows.Forms.DockStyle.Fill; - this.pictureBox2.Location = new System.Drawing.Point(0, 0); - this.pictureBox2.Name = "pictureBox2"; - this.pictureBox2.Size = new System.Drawing.Size(316, 268); - this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pictureBox2.TabIndex = 0; - this.pictureBox2.TabStop = false; + pictureBox2.Dock = System.Windows.Forms.DockStyle.Fill; + pictureBox2.Location = new System.Drawing.Point(0, 0); + pictureBox2.Name = "pictureBox2"; + pictureBox2.Size = new System.Drawing.Size(316, 268); + pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + pictureBox2.TabIndex = 0; + pictureBox2.TabStop = false; // // pictureBox1 // - this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureBox1.Location = new System.Drawing.Point(0, 0); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(634, 508); - this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; - this.pictureBox1.TabIndex = 0; - this.pictureBox1.TabStop = false; - this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); - this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint); + pictureBox1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; + pictureBox1.Location = new System.Drawing.Point(0, 0); + pictureBox1.Name = "pictureBox1"; + pictureBox1.Size = new System.Drawing.Size(634, 508); + pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + pictureBox1.TabIndex = 0; + pictureBox1.TabStop = false; + pictureBox1.Click += pictureBox1_Click; + pictureBox1.Paint += pictureBox1_Paint; // // Frm_ObjectDetail // - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; - this.ClientSize = new System.Drawing.Size(962, 512); - this.Controls.Add(this.splitContainer1); - this.Font = new System.Drawing.Font("Segoe UI", 8.25F); - this.Name = "Frm_ObjectDetail"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Tag = "SAVE"; - this.Text = "Prediction Object Detail"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Frm_ObjectDetail_FormClosing); - this.Load += new System.EventHandler(this.Frm_ObjectDetail_Load); - ((System.ComponentModel.ISupportInitialize)(this.folv_ObjectDetail)).EndInit(); - this.contextMenuStripMask.ResumeLayout(false); - this.splitContainer1.Panel1.ResumeLayout(false); - this.splitContainer1.Panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); - this.splitContainer1.ResumeLayout(false); - this.splitContainer2.Panel1.ResumeLayout(false); - this.splitContainer2.Panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); - this.splitContainer2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); - this.ResumeLayout(false); - + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; + ClientSize = new System.Drawing.Size(962, 512); + Controls.Add(splitContainer1); + Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + Name = "Frm_ObjectDetail"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Tag = "SAVE"; + Text = "Prediction Object Detail"; + FormClosing += Frm_ObjectDetail_FormClosing; + Load += Frm_ObjectDetail_Load; + ((System.ComponentModel.ISupportInitialize)folv_ObjectDetail).EndInit(); + contextMenuStripMask.ResumeLayout(false); + splitContainer1.Panel1.ResumeLayout(false); + splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)splitContainer1).EndInit(); + splitContainer1.ResumeLayout(false); + splitContainer2.Panel1.ResumeLayout(false); + splitContainer2.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)splitContainer2).EndInit(); + splitContainer2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)pictureBox2).EndInit(); + ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit(); + ResumeLayout(false); } #endregion diff --git a/src/UI/Frm_ObjectDetail.cs b/src/UI/Frm_ObjectDetail.cs index a5b9f18..7574de8 100644 --- a/src/UI/Frm_ObjectDetail.cs +++ b/src/UI/Frm_ObjectDetail.cs @@ -13,7 +13,8 @@ namespace AITool { public partial class Frm_ObjectDetail : Form { - public List PredictionObjectDetails = null; + public List PredictionObjectDetailsList = null; + public ClsPrediction CurPred = null; public string ImageFileName = ""; // this tracks the transformation applied to the PictureBox's Graphics private Matrix transform = new Matrix(); @@ -42,14 +43,12 @@ private void Frm_ObjectDetail_Load(object sender, EventArgs e) { Global_GUI.ConfigureFOLV(this.folv_ObjectDetail, typeof(ClsPrediction), null, null); - Global_GUI.UpdateFOLV(this.folv_ObjectDetail, this.PredictionObjectDetails); + Global_GUI.UpdateFOLV(this.folv_ObjectDetail, this.PredictionObjectDetailsList); - if (!String.IsNullOrEmpty(this.ImageFileName) && this.ImageFileName.Contains("\\") && File.Exists(this.ImageFileName)) - { - OriginalBMP = new ClsImageQueueItem(this.ImageFileName, 0); - this.pictureBox1.Image = Image.FromStream(OriginalBMP.ToStream()); //load actual image as background, so that an overlay can be added as the image - } + if (this.PredictionObjectDetailsList.Count > 0) + CurPred = this.PredictionObjectDetailsList[0]; + UpdateImage(); } catch (Exception) { @@ -59,6 +58,21 @@ private void Frm_ObjectDetail_Load(object sender, EventArgs e) } + private string _lastimage = ""; + private void UpdateImage() + { + if (this.ImageFileName == _lastimage) + return; + + if (!String.IsNullOrEmpty(this.ImageFileName) && this.ImageFileName.Contains("\\") && File.Exists(this.ImageFileName)) + { + OriginalBMP = new ClsImageQueueItem(this.ImageFileName, 0); + this.pictureBox1.Image = Image.FromStream(OriginalBMP.ToStream()); //load actual image as background, so that an overlay can be added as the image + _lastimage = this.ImageFileName; + } + + } + private void Frm_ObjectDetail_FormClosing(object sender, FormClosingEventArgs e) { Global_GUI.SaveWindowState(this); @@ -345,6 +359,12 @@ private void pictureBox1_Paint(object sender, PaintEventArgs e) private void folv_ObjectDetail_SelectionChanged(object sender, EventArgs e) { + if (folv_ObjectDetail.SelectedObject != null) + { + CurPred = folv_ObjectDetail.SelectedObject as ClsPrediction; + this.ImageFileName = CurPred.Filename; + UpdateImage(); + } this.pictureBox1.Refresh(); } //protected override void OnMouseWheel(MouseEventArgs mea) @@ -391,6 +411,11 @@ private void pictureBox1_Click(object sender, EventArgs e) } + private void folv_ObjectDetail_SelectedIndexChanged(object sender, EventArgs e) + { + + } + //FUNCTION FOR MOUSE SCROL ZOOM-IN //private void ZoomScroll(Point location, bool zoomIn) //{ diff --git a/src/UI/Frm_ObjectDetail.resx b/src/UI/Frm_ObjectDetail.resx index 655d4ec..c7aa5fd 100644 --- a/src/UI/Frm_ObjectDetail.resx +++ b/src/UI/Frm_ObjectDetail.resx @@ -1,24 +1,24 @@  - diff --git a/src/UI/Frm_PredSizeLimits.Designer.cs b/src/UI/Frm_PredSizeLimits.Designer.cs index ce274d9..b8c5f73 100644 --- a/src/UI/Frm_PredSizeLimits.Designer.cs +++ b/src/UI/Frm_PredSizeLimits.Designer.cs @@ -29,304 +29,302 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.label1 = new System.Windows.Forms.Label(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.label3 = new System.Windows.Forms.Label(); - this.tb_maxpercent = new System.Windows.Forms.TextBox(); - this.label2 = new System.Windows.Forms.Label(); - this.tb_MinPercent = new System.Windows.Forms.TextBox(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.label7 = new System.Windows.Forms.Label(); - this.label5 = new System.Windows.Forms.Label(); - this.label6 = new System.Windows.Forms.Label(); - this.tb_maxheight = new System.Windows.Forms.TextBox(); - this.label4 = new System.Windows.Forms.Label(); - this.tb_maxwidth = new System.Windows.Forms.TextBox(); - this.tb_minheight = new System.Windows.Forms.TextBox(); - this.tb_minwidth = new System.Windows.Forms.TextBox(); - this.BtnSave = new System.Windows.Forms.Button(); - this.label8 = new System.Windows.Forms.Label(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.label10 = new System.Windows.Forms.Label(); - this.label9 = new System.Windows.Forms.Label(); - this.tb_ConfidenceUpper = new System.Windows.Forms.TextBox(); - this.tb_ConfidenceLower = new System.Windows.Forms.TextBox(); - this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.label11 = new System.Windows.Forms.Label(); - this.tb_duplicatepercent = new System.Windows.Forms.TextBox(); - this.groupBox1.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox3.SuspendLayout(); - this.groupBox4.SuspendLayout(); - this.SuspendLayout(); + label1 = new System.Windows.Forms.Label(); + groupBox1 = new System.Windows.Forms.GroupBox(); + label3 = new System.Windows.Forms.Label(); + tb_maxpercent = new System.Windows.Forms.TextBox(); + label2 = new System.Windows.Forms.Label(); + tb_MinPercent = new System.Windows.Forms.TextBox(); + groupBox2 = new System.Windows.Forms.GroupBox(); + label7 = new System.Windows.Forms.Label(); + label5 = new System.Windows.Forms.Label(); + label6 = new System.Windows.Forms.Label(); + tb_maxheight = new System.Windows.Forms.TextBox(); + label4 = new System.Windows.Forms.Label(); + tb_maxwidth = new System.Windows.Forms.TextBox(); + tb_minheight = new System.Windows.Forms.TextBox(); + tb_minwidth = new System.Windows.Forms.TextBox(); + BtnSave = new System.Windows.Forms.Button(); + label8 = new System.Windows.Forms.Label(); + groupBox3 = new System.Windows.Forms.GroupBox(); + label10 = new System.Windows.Forms.Label(); + label9 = new System.Windows.Forms.Label(); + tb_ConfidenceUpper = new System.Windows.Forms.TextBox(); + tb_ConfidenceLower = new System.Windows.Forms.TextBox(); + groupBox4 = new System.Windows.Forms.GroupBox(); + label11 = new System.Windows.Forms.Label(); + tb_duplicatepercent = new System.Windows.Forms.TextBox(); + groupBox1.SuspendLayout(); + groupBox2.SuspendLayout(); + groupBox3.SuspendLayout(); + groupBox4.SuspendLayout(); + SuspendLayout(); // // label1 // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(42, 44); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(62, 23); - this.label1.TabIndex = 0; - this.label1.Text = "Min %:"; + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(42, 44); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(42, 13); + label1.TabIndex = 0; + label1.Text = "Min %:"; // // groupBox1 // - this.groupBox1.Controls.Add(this.label3); - this.groupBox1.Controls.Add(this.tb_maxpercent); - this.groupBox1.Controls.Add(this.label2); - this.groupBox1.Controls.Add(this.tb_MinPercent); - this.groupBox1.Controls.Add(this.label1); - this.groupBox1.Location = new System.Drawing.Point(14, 59); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(263, 70); - this.groupBox1.TabIndex = 1; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Limit Size Percentage"; + groupBox1.Controls.Add(label3); + groupBox1.Controls.Add(tb_maxpercent); + groupBox1.Controls.Add(label2); + groupBox1.Controls.Add(tb_MinPercent); + groupBox1.Controls.Add(label1); + groupBox1.Location = new System.Drawing.Point(14, 59); + groupBox1.Name = "groupBox1"; + groupBox1.Size = new System.Drawing.Size(263, 70); + groupBox1.TabIndex = 1; + groupBox1.TabStop = false; + groupBox1.Text = "Limit Size Percentage"; // // label3 // - this.label3.AutoSize = true; - this.label3.ForeColor = System.Drawing.Color.DimGray; - this.label3.Location = new System.Drawing.Point(9, 20); - this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(302, 23); - this.label3.TabIndex = 2; - this.label3.Text = "Percentage of prediction size vs image"; + label3.AutoSize = true; + label3.ForeColor = System.Drawing.Color.DimGray; + label3.Location = new System.Drawing.Point(9, 20); + label3.Name = "label3"; + label3.Size = new System.Drawing.Size(203, 13); + label3.TabIndex = 2; + label3.Text = "Percentage of prediction size vs image"; // // tb_maxpercent // - this.tb_maxpercent.Location = new System.Drawing.Point(199, 41); - this.tb_maxpercent.Name = "tb_maxpercent"; - this.tb_maxpercent.Size = new System.Drawing.Size(33, 29); - this.tb_maxpercent.TabIndex = 3; - this.tb_maxpercent.Text = "100"; + tb_maxpercent.Location = new System.Drawing.Point(199, 41); + tb_maxpercent.Name = "tb_maxpercent"; + tb_maxpercent.Size = new System.Drawing.Size(33, 22); + tb_maxpercent.TabIndex = 3; + tb_maxpercent.Text = "100"; // // label2 // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(157, 44); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(65, 23); - this.label2.TabIndex = 0; - this.label2.Text = "Max %:"; + label2.AutoSize = true; + label2.Location = new System.Drawing.Point(157, 44); + label2.Name = "label2"; + label2.Size = new System.Drawing.Size(43, 13); + label2.TabIndex = 0; + label2.Text = "Max %:"; // // tb_MinPercent // - this.tb_MinPercent.Location = new System.Drawing.Point(86, 41); - this.tb_MinPercent.Name = "tb_MinPercent"; - this.tb_MinPercent.Size = new System.Drawing.Size(33, 29); - this.tb_MinPercent.TabIndex = 2; - this.tb_MinPercent.Text = "100"; + tb_MinPercent.Location = new System.Drawing.Point(86, 41); + tb_MinPercent.Name = "tb_MinPercent"; + tb_MinPercent.Size = new System.Drawing.Size(33, 22); + tb_MinPercent.TabIndex = 2; + tb_MinPercent.Text = "100"; // // groupBox2 // - this.groupBox2.Controls.Add(this.label7); - this.groupBox2.Controls.Add(this.label5); - this.groupBox2.Controls.Add(this.label6); - this.groupBox2.Controls.Add(this.tb_maxheight); - this.groupBox2.Controls.Add(this.label4); - this.groupBox2.Controls.Add(this.tb_maxwidth); - this.groupBox2.Controls.Add(this.tb_minheight); - this.groupBox2.Controls.Add(this.tb_minwidth); - this.groupBox2.Location = new System.Drawing.Point(12, 151); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(264, 77); - this.groupBox2.TabIndex = 2; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Limit Size in Pixels (0 disables)"; + groupBox2.Controls.Add(label7); + groupBox2.Controls.Add(label5); + groupBox2.Controls.Add(label6); + groupBox2.Controls.Add(tb_maxheight); + groupBox2.Controls.Add(label4); + groupBox2.Controls.Add(tb_maxwidth); + groupBox2.Controls.Add(tb_minheight); + groupBox2.Controls.Add(tb_minwidth); + groupBox2.Location = new System.Drawing.Point(12, 151); + groupBox2.Name = "groupBox2"; + groupBox2.Size = new System.Drawing.Size(264, 77); + groupBox2.TabIndex = 2; + groupBox2.TabStop = false; + groupBox2.Text = "Limit Size in Pixels (0 disables)"; // // label7 // - this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(134, 50); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(102, 23); - this.label7.TabIndex = 0; - this.label7.Text = "Max Height:"; + label7.AutoSize = true; + label7.Location = new System.Drawing.Point(134, 50); + label7.Name = "label7"; + label7.Size = new System.Drawing.Size(69, 13); + label7.TabIndex = 0; + label7.Text = "Max Height:"; // // label5 // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(19, 50); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(99, 23); - this.label5.TabIndex = 0; - this.label5.Text = "Min Height:"; + label5.AutoSize = true; + label5.Location = new System.Drawing.Point(19, 50); + label5.Name = "label5"; + label5.Size = new System.Drawing.Size(68, 13); + label5.TabIndex = 0; + label5.Text = "Min Height:"; // // label6 // - this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(137, 26); - this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(97, 23); - this.label6.TabIndex = 0; - this.label6.Text = "Max Width:"; + label6.AutoSize = true; + label6.Location = new System.Drawing.Point(137, 26); + label6.Name = "label6"; + label6.Size = new System.Drawing.Size(66, 13); + label6.TabIndex = 0; + label6.Text = "Max Width:"; // // tb_maxheight // - this.tb_maxheight.Location = new System.Drawing.Point(201, 47); - this.tb_maxheight.Name = "tb_maxheight"; - this.tb_maxheight.Size = new System.Drawing.Size(33, 29); - this.tb_maxheight.TabIndex = 7; - this.tb_maxheight.Text = "100"; + tb_maxheight.Location = new System.Drawing.Point(201, 47); + tb_maxheight.Name = "tb_maxheight"; + tb_maxheight.Size = new System.Drawing.Size(33, 22); + tb_maxheight.TabIndex = 7; + tb_maxheight.Text = "100"; // // label4 // - this.label4.AutoSize = true; - this.label4.Location = new System.Drawing.Point(22, 26); - this.label4.Name = "label4"; - this.label4.Size = new System.Drawing.Size(94, 23); - this.label4.TabIndex = 0; - this.label4.Text = "Min Width:"; + label4.AutoSize = true; + label4.Location = new System.Drawing.Point(22, 26); + label4.Name = "label4"; + label4.Size = new System.Drawing.Size(65, 13); + label4.TabIndex = 0; + label4.Text = "Min Width:"; // // tb_maxwidth // - this.tb_maxwidth.Location = new System.Drawing.Point(201, 23); - this.tb_maxwidth.Name = "tb_maxwidth"; - this.tb_maxwidth.Size = new System.Drawing.Size(33, 29); - this.tb_maxwidth.TabIndex = 5; - this.tb_maxwidth.Text = "100"; + tb_maxwidth.Location = new System.Drawing.Point(201, 23); + tb_maxwidth.Name = "tb_maxwidth"; + tb_maxwidth.Size = new System.Drawing.Size(33, 22); + tb_maxwidth.TabIndex = 5; + tb_maxwidth.Text = "100"; // // tb_minheight // - this.tb_minheight.Location = new System.Drawing.Point(86, 47); - this.tb_minheight.Name = "tb_minheight"; - this.tb_minheight.Size = new System.Drawing.Size(33, 29); - this.tb_minheight.TabIndex = 6; - this.tb_minheight.Text = "100"; + tb_minheight.Location = new System.Drawing.Point(86, 47); + tb_minheight.Name = "tb_minheight"; + tb_minheight.Size = new System.Drawing.Size(33, 22); + tb_minheight.TabIndex = 6; + tb_minheight.Text = "100"; // // tb_minwidth // - this.tb_minwidth.Location = new System.Drawing.Point(86, 23); - this.tb_minwidth.Name = "tb_minwidth"; - this.tb_minwidth.Size = new System.Drawing.Size(33, 29); - this.tb_minwidth.TabIndex = 4; - this.tb_minwidth.Text = "100"; + tb_minwidth.Location = new System.Drawing.Point(86, 23); + tb_minwidth.Name = "tb_minwidth"; + tb_minwidth.Size = new System.Drawing.Size(33, 22); + tb_minwidth.TabIndex = 4; + tb_minwidth.Text = "100"; // // BtnSave // - this.BtnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.BtnSave.Location = new System.Drawing.Point(317, 264); - this.BtnSave.Name = "BtnSave"; - this.BtnSave.Size = new System.Drawing.Size(70, 30); - this.BtnSave.TabIndex = 9; - this.BtnSave.Text = "Save"; - this.BtnSave.UseVisualStyleBackColor = true; - this.BtnSave.Click += new System.EventHandler(this.BtnSave_Click); + BtnSave.Location = new System.Drawing.Point(211, 292); + BtnSave.Name = "BtnSave"; + BtnSave.Size = new System.Drawing.Size(70, 30); + BtnSave.TabIndex = 9; + BtnSave.Text = "Save"; + BtnSave.UseVisualStyleBackColor = true; + BtnSave.Click += BtnSave_Click; // // label8 // - this.label8.AutoSize = true; - this.label8.ForeColor = System.Drawing.Color.DimGray; - this.label8.Location = new System.Drawing.Point(12, 132); - this.label8.Name = "label8"; - this.label8.Size = new System.Drawing.Size(387, 23); - this.label8.TabIndex = 2; - this.label8.Text = "(See History tab > Prediction Details, for size info)"; + label8.AutoSize = true; + label8.ForeColor = System.Drawing.Color.DimGray; + label8.Location = new System.Drawing.Point(12, 132); + label8.Name = "label8"; + label8.Size = new System.Drawing.Size(261, 13); + label8.TabIndex = 2; + label8.Text = "(See History tab > Prediction Details, for size info)"; // // groupBox3 // - this.groupBox3.Controls.Add(this.label10); - this.groupBox3.Controls.Add(this.label9); - this.groupBox3.Controls.Add(this.tb_ConfidenceUpper); - this.groupBox3.Controls.Add(this.tb_ConfidenceLower); - this.groupBox3.Location = new System.Drawing.Point(14, 12); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Size = new System.Drawing.Size(263, 43); - this.groupBox3.TabIndex = 4; - this.groupBox3.TabStop = false; - this.groupBox3.Text = "Object Confidence limits"; + groupBox3.Controls.Add(label10); + groupBox3.Controls.Add(label9); + groupBox3.Controls.Add(tb_ConfidenceUpper); + groupBox3.Controls.Add(tb_ConfidenceLower); + groupBox3.Location = new System.Drawing.Point(14, 12); + groupBox3.Name = "groupBox3"; + groupBox3.Size = new System.Drawing.Size(263, 43); + groupBox3.TabIndex = 4; + groupBox3.TabStop = false; + groupBox3.Text = "Object Confidence limits"; // // label10 // - this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(157, 19); - this.label10.Name = "label10"; - this.label10.Size = new System.Drawing.Size(61, 23); - this.label10.TabIndex = 0; - this.label10.Text = "Upper:"; + label10.AutoSize = true; + label10.Location = new System.Drawing.Point(157, 19); + label10.Name = "label10"; + label10.Size = new System.Drawing.Size(42, 13); + label10.TabIndex = 0; + label10.Text = "Upper:"; // // label9 // - this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(41, 19); - this.label9.Name = "label9"; - this.label9.Size = new System.Drawing.Size(59, 23); - this.label9.TabIndex = 0; - this.label9.Text = "Lower:"; + label9.AutoSize = true; + label9.Location = new System.Drawing.Point(41, 19); + label9.Name = "label9"; + label9.Size = new System.Drawing.Size(41, 13); + label9.TabIndex = 0; + label9.Text = "Lower:"; // // tb_ConfidenceUpper // - this.tb_ConfidenceUpper.Location = new System.Drawing.Point(199, 16); - this.tb_ConfidenceUpper.Name = "tb_ConfidenceUpper"; - this.tb_ConfidenceUpper.Size = new System.Drawing.Size(33, 29); - this.tb_ConfidenceUpper.TabIndex = 1; - this.tb_ConfidenceUpper.Text = "100"; + tb_ConfidenceUpper.Location = new System.Drawing.Point(199, 16); + tb_ConfidenceUpper.Name = "tb_ConfidenceUpper"; + tb_ConfidenceUpper.Size = new System.Drawing.Size(33, 22); + tb_ConfidenceUpper.TabIndex = 1; + tb_ConfidenceUpper.Text = "100"; // // tb_ConfidenceLower // - this.tb_ConfidenceLower.Location = new System.Drawing.Point(86, 16); - this.tb_ConfidenceLower.Name = "tb_ConfidenceLower"; - this.tb_ConfidenceLower.Size = new System.Drawing.Size(33, 29); - this.tb_ConfidenceLower.TabIndex = 0; - this.tb_ConfidenceLower.Text = "100"; + tb_ConfidenceLower.Location = new System.Drawing.Point(86, 16); + tb_ConfidenceLower.Name = "tb_ConfidenceLower"; + tb_ConfidenceLower.Size = new System.Drawing.Size(33, 22); + tb_ConfidenceLower.TabIndex = 0; + tb_ConfidenceLower.Text = "100"; // // groupBox4 // - this.groupBox4.Controls.Add(this.label11); - this.groupBox4.Controls.Add(this.tb_duplicatepercent); - this.groupBox4.Location = new System.Drawing.Point(12, 234); - this.groupBox4.Name = "groupBox4"; - this.groupBox4.Size = new System.Drawing.Size(265, 49); - this.groupBox4.TabIndex = 5; - this.groupBox4.TabStop = false; - this.groupBox4.Text = "Duplicate object detection"; + groupBox4.Controls.Add(label11); + groupBox4.Controls.Add(tb_duplicatepercent); + groupBox4.Location = new System.Drawing.Point(12, 234); + groupBox4.Name = "groupBox4"; + groupBox4.Size = new System.Drawing.Size(265, 49); + groupBox4.TabIndex = 5; + groupBox4.TabStop = false; + groupBox4.Text = "Duplicate object detection"; // // label11 // - this.label11.AutoSize = true; - this.label11.Location = new System.Drawing.Point(6, 22); - this.label11.Name = "label11"; - this.label11.Size = new System.Drawing.Size(116, 23); - this.label11.TabIndex = 2; - this.label11.Text = "Match Size %:"; + label11.AutoSize = true; + label11.Location = new System.Drawing.Point(6, 22); + label11.Name = "label11"; + label11.Size = new System.Drawing.Size(77, 13); + label11.TabIndex = 2; + label11.Text = "Match Size %:"; // // tb_duplicatepercent // - this.tb_duplicatepercent.Location = new System.Drawing.Point(86, 19); - this.tb_duplicatepercent.Name = "tb_duplicatepercent"; - this.tb_duplicatepercent.Size = new System.Drawing.Size(33, 29); - this.tb_duplicatepercent.TabIndex = 8; - this.tb_duplicatepercent.Text = "100"; + tb_duplicatepercent.Location = new System.Drawing.Point(86, 19); + tb_duplicatepercent.Name = "tb_duplicatepercent"; + tb_duplicatepercent.Size = new System.Drawing.Size(33, 22); + tb_duplicatepercent.TabIndex = 8; + tb_duplicatepercent.Text = "100"; // // Frm_PredSizeLimits // - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; - this.AutoScroll = true; - this.ClientSize = new System.Drawing.Size(289, 332); - this.Controls.Add(this.groupBox4); - this.Controls.Add(this.groupBox3); - this.Controls.Add(this.label8); - this.Controls.Add(this.BtnSave); - this.Controls.Add(this.groupBox2); - this.Controls.Add(this.groupBox1); - this.Font = new System.Drawing.Font("Segoe UI", 8.25F); - this.Name = "Frm_PredSizeLimits"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Prediction Tolerances"; - this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Frm_PredSizeLimits_FormClosed); - this.Load += new System.EventHandler(this.Frm_PredSizeLimits_Load); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); - this.groupBox2.ResumeLayout(false); - this.groupBox2.PerformLayout(); - this.groupBox3.ResumeLayout(false); - this.groupBox3.PerformLayout(); - this.groupBox4.ResumeLayout(false); - this.groupBox4.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; + AutoScroll = true; + ClientSize = new System.Drawing.Size(288, 329); + Controls.Add(groupBox4); + Controls.Add(groupBox3); + Controls.Add(label8); + Controls.Add(BtnSave); + Controls.Add(groupBox2); + Controls.Add(groupBox1); + Font = new System.Drawing.Font("Segoe UI", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); + Name = "Frm_PredSizeLimits"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "Prediction Tolerances"; + FormClosed += Frm_PredSizeLimits_FormClosed; + Load += Frm_PredSizeLimits_Load; + groupBox1.ResumeLayout(false); + groupBox1.PerformLayout(); + groupBox2.ResumeLayout(false); + groupBox2.PerformLayout(); + groupBox3.ResumeLayout(false); + groupBox3.PerformLayout(); + groupBox4.ResumeLayout(false); + groupBox4.PerformLayout(); + ResumeLayout(false); + PerformLayout(); } #endregion diff --git a/src/UI/Frm_PredSizeLimits.resx b/src/UI/Frm_PredSizeLimits.resx index 1af7de1..a395bff 100644 --- a/src/UI/Frm_PredSizeLimits.resx +++ b/src/UI/Frm_PredSizeLimits.resx @@ -1,24 +1,24 @@  - diff --git a/src/UI/Global.cs b/src/UI/Global.cs index 7f77cea..e179737 100644 --- a/src/UI/Global.cs +++ b/src/UI/Global.cs @@ -1174,7 +1174,17 @@ public static async Task IsLocalHostAsync(string HostNameOrIPAddress) bool ret = false; if (CurrentIP.IsEmpty()) - CurrentIP = GetAllLocalIPs(NetworkInterfaceType.Ethernet)[0].ToString(); + { + List ips = GetAllLocalIPs(NetworkInterfaceType.Ethernet); + //was getting index out of bounds on one machine that has never had AITOOL installed + if (ips.Count > 0) + CurrentIP = ips[0].ToString(); + else + { + CurrentIP = "127.0.0.1"; //this should not happen - antivirus/firewall blocking? + } + } + if (CurrentHost.IsEmpty()) CurrentHost = Dns.GetHostName(); @@ -1433,6 +1443,9 @@ public static List GetAllLocalIPs(NetworkInterfaceType _type) } + if (ipAddrList.Count == 0) + Log($"Error: No IP addresses found for NetworkInterfaceType '{_type}' with Operational status = UP????"); + } catch (Exception ex) { diff --git a/src/UI/History.cs b/src/UI/History.cs index 7637c08..9df5ce8 100644 --- a/src/UI/History.cs +++ b/src/UI/History.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; + using static AITool.AITOOL; namespace AITool @@ -168,16 +169,27 @@ private void GetObjects() //hair dryer, toothbrush. - this.IsPerson = tmp.Contains("person") || tmp.Contains("face"); + this.IsPerson = tmp.Contains("person") || tmp.Contains("people"); + + this.IsFace = tmp.Contains("face"); + + //Ambulance, person, people, bear, fox, elephant, car, truck, pickup truck, SUV, van, bicycle, motorcycle, + //motorbike, bus, license plate, dog, horse, boat, train, zebra, giraffe, cow, pig, skunk, raccoon, sheep, rabbit, cat this.IsVehicle = tmp.Contains("car") || tmp.Contains("truck") || tmp.Contains("bus") || tmp.Contains("bicycle") || tmp.Contains("motorcycle") || - tmp.Contains("horse") || + tmp.Contains("motorbike") || + tmp.Contains("boat") || + tmp.Contains("suv") || + tmp.Contains("van") || + tmp.Contains("bus") || + tmp.Contains("train") || tmp.Contains("boat") || - tmp.Contains("airplane"); + tmp.Contains("airplane") || + tmp.Contains("ambulance"); this.IsAnimal = tmp.Contains("dog") || tmp.Contains("cat") || @@ -188,6 +200,11 @@ private void GetObjects() tmp.Contains("horse") || tmp.Contains("elephant") || tmp.Contains("zebra") || + tmp.Contains("pig") || + tmp.Contains("skunk") || + tmp.Contains("raccoon") || + tmp.Contains("rabbit") || + tmp.Contains("fox") || tmp.Contains("giraffe"); this.WasMasked = tmp.Contains("mask"); diff --git a/src/UI/Installer/AIToolSetup.2.5.25.exe b/src/UI/Installer/AIToolSetup.2.5.44.exe similarity index 63% rename from src/UI/Installer/AIToolSetup.2.5.25.exe rename to src/UI/Installer/AIToolSetup.2.5.44.exe index 041b265..99645fd 100644 Binary files a/src/UI/Installer/AIToolSetup.2.5.25.exe and b/src/UI/Installer/AIToolSetup.2.5.44.exe differ diff --git a/src/UI/Settings.cs b/src/UI/Settings.cs index a3d436b..4cfa899 100644 --- a/src/UI/Settings.cs +++ b/src/UI/Settings.cs @@ -798,7 +798,7 @@ public static async Task LoadAsync() //make sure we have the updated default object list if (!Settings.ObjectPriority.Has("suv") || !Settings.ObjectPriority.Has("van") || !Settings.ObjectPriority.Has("people") || !Settings.ObjectPriority.Has("fox") || !Settings.ObjectPriority.Has("raccoon") | !Settings.ObjectPriority.Has("license plate")) - Settings.ObjectPriority = "Ambulance, person, people, bear, fox, elephant, car, truck, pickup truck, SUV, van, bicycle, motorcycle, motorbike, bus, license plate, dog, horse, boat, train, zebra, giraffe, cow, pig, skunk, raccoon, sheep, rabbit, cat, bird, squirrel"; ; + Settings.ObjectPriority = "Ambulance, person, people, bear, fox, elephant, car, truck, pickup truck, SUV, van, bicycle, motorcycle, motorbike, bus, license plate, dog, horse, boat, train, zebra, giraffe, cow, pig, skunk, raccoon, sheep, rabbit, cat, bird, squirrel"; //convert comma delimited list of objects stored in Settings.ObjectsExcluded to a dictionary List splt = Settings.ObjectsExcluded.SplitStr(",", true); diff --git a/src/UI/Shell.cs b/src/UI/Shell.cs index ad9d483..6e678a0 100644 --- a/src/UI/Shell.cs +++ b/src/UI/Shell.cs @@ -4352,7 +4352,7 @@ private void ViewPredictionDetails() } Frm_ObjectDetail frm = new Frm_ObjectDetail(); - frm.PredictionObjectDetails = allpredictions; + frm.PredictionObjectDetailsList = allpredictions; frm.ImageFileName = filename; frm.Show(); @@ -5479,6 +5479,9 @@ private void FOLV_Cameras_FormatRow(object sender, FormatRowEventArgs e) private void BtnRelevantObjects_Click(object sender, EventArgs e) { + if (this.FOLV_Cameras.SelectedObjects.Count == 0) + return; + using (Frm_RelevantObjects frm = new Frm_RelevantObjects()) { Camera cam = AITOOL.GetCamera(((Camera)this.FOLV_Cameras.SelectedObjects[0]).Name); diff --git a/src/UI/UI.NET6.csproj b/src/UI/UI.NET6.csproj index 4f875fd..919a9c9 100644 --- a/src/UI/UI.NET6.csproj +++ b/src/UI/UI.NET6.csproj @@ -1,6 +1,5 @@  - net6.0-windows WinExe AITool AITool @@ -213,5 +212,6 @@ CALL "$(SolutionDir)UI\CleanOldInstalls.bat" + net6.0-windows10.0.19041.0 \ No newline at end of file