From 37d1b6b39200d8727e88356f21f58c48b39ceae5 Mon Sep 17 00:00:00 2001 From: DasSkelett Date: Thu, 10 Jan 2019 23:09:22 +0100 Subject: [PATCH] Invoke controls accesses in UpdateModList --- GUI/MainModList.cs | 43 +++++++++++++++++++++++++------------------ GUI/MainWait.cs | 5 ++--- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/GUI/MainModList.cs b/GUI/MainModList.cs index abe5abe0fe..a3627fd19f 100644 --- a/GUI/MainModList.cs +++ b/GUI/MainModList.cs @@ -230,25 +230,32 @@ private void _UpdateModsList(bool repo_updated, IEnumerable mc) mainModList.full_list_of_mod_rows.Values.Select(row => row.Tag as GUIMod).ToList()); AddLogMessage("Updating filters..."); - //TODO Consider using smart enumeration pattern so stuff like this is easier - FilterToolButton.DropDownItems[0].Text = String.Format("Compatible ({0})", - mainModList.CountModsByFilter(GUIModFilter.Compatible)); - FilterToolButton.DropDownItems[1].Text = String.Format("Installed ({0})", - mainModList.CountModsByFilter(GUIModFilter.Installed)); - FilterToolButton.DropDownItems[2].Text = String.Format("Upgradeable ({0})", - mainModList.CountModsByFilter(GUIModFilter.InstalledUpdateAvailable)); - FilterToolButton.DropDownItems[3].Text = String.Format("Cached ({0})", - mainModList.CountModsByFilter(GUIModFilter.Cached)); - FilterToolButton.DropDownItems[4].Text = String.Format("Newly compatible ({0})", - mainModList.CountModsByFilter(GUIModFilter.NewInRepository)); - FilterToolButton.DropDownItems[5].Text = String.Format("Not installed ({0})", - mainModList.CountModsByFilter(GUIModFilter.NotInstalled)); - FilterToolButton.DropDownItems[6].Text = String.Format("Incompatible ({0})", - mainModList.CountModsByFilter(GUIModFilter.Incompatible)); - FilterToolButton.DropDownItems[7].Text = String.Format("All ({0})", - mainModList.CountModsByFilter(GUIModFilter.All)); + var has_any_updates = gui_mods.Any(mod => mod.HasUpdate); - UpdateAllToolButton.Enabled = has_any_updates; + + //TODO Consider using smart enumeration pattern so stuff like this is easier + Util.Invoke(menuStrip2, () => + { + FilterToolButton.DropDownItems[0].Text = String.Format("Compatible ({0})", + mainModList.CountModsByFilter(GUIModFilter.Compatible)); + FilterToolButton.DropDownItems[1].Text = String.Format("Installed ({0})", + mainModList.CountModsByFilter(GUIModFilter.Installed)); + FilterToolButton.DropDownItems[2].Text = String.Format("Upgradeable ({0})", + mainModList.CountModsByFilter(GUIModFilter.InstalledUpdateAvailable)); + FilterToolButton.DropDownItems[3].Text = String.Format("Cached ({0})", + mainModList.CountModsByFilter(GUIModFilter.Cached)); + FilterToolButton.DropDownItems[4].Text = String.Format("Newly compatible ({0})", + mainModList.CountModsByFilter(GUIModFilter.NewInRepository)); + FilterToolButton.DropDownItems[5].Text = String.Format("Not installed ({0})", + mainModList.CountModsByFilter(GUIModFilter.NotInstalled)); + FilterToolButton.DropDownItems[6].Text = String.Format("Incompatible ({0})", + mainModList.CountModsByFilter(GUIModFilter.Incompatible)); + FilterToolButton.DropDownItems[7].Text = String.Format("All ({0})", + mainModList.CountModsByFilter(GUIModFilter.All)); + + UpdateAllToolButton.Enabled = has_any_updates; + }); + UpdateFilters(this); AddLogMessage("Updating tray..."); diff --git a/GUI/MainWait.cs b/GUI/MainWait.cs index eb95d6ca86..2a44d5f452 100644 --- a/GUI/MainWait.cs +++ b/GUI/MainWait.cs @@ -17,13 +17,10 @@ public void ShowWaitDialog(bool cancelable = true) { tabController.ShowTab("WaitTabPage", 2); - CancelCurrentActionButton.Enabled = cancelable; - DialogProgressBar.Value = 0; DialogProgressBar.Minimum = 0; DialogProgressBar.Maximum = 100; DialogProgressBar.Style = ProgressBarStyle.Marquee; - MessageTextBox.Text = "Please wait"; }); Util.Invoke(statusStrip1, () => { @@ -31,6 +28,8 @@ public void ShowWaitDialog(bool cancelable = true) StatusProgress.Style = ProgressBarStyle.Marquee; StatusProgress.Visible = true; }); + Util.Invoke(CancelCurrentActionButton, () => CancelCurrentActionButton.Enabled = cancelable); + Util.Invoke(MessageTextBox, () => MessageTextBox.Text = "Please wait"); } public void HideWaitDialog(bool success)