diff --git a/CreamInstaller/CreamInstaller.csproj b/CreamInstaller/CreamInstaller.csproj
index 01cde39..75949bb 100644
--- a/CreamInstaller/CreamInstaller.csproj
+++ b/CreamInstaller/CreamInstaller.csproj
@@ -6,7 +6,7 @@
true
ini.ico
true
- 2.0.2.3
+ 2.0.3.0
ini.ico
Automatically generates and installs CreamAPI files for Steam games on the user's computer. It can also generate and install CreamAPI for the Paradox Launcher should the user select a Paradox Interactive game.
diff --git a/CreamInstaller/Forms/SelectForm.Designer.cs b/CreamInstaller/Forms/SelectForm.Designer.cs
index 8602fc2..d0e6859 100644
--- a/CreamInstaller/Forms/SelectForm.Designer.cs
+++ b/CreamInstaller/Forms/SelectForm.Designer.cs
@@ -123,8 +123,6 @@ namespace CreamInstaller
//
this.allCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.allCheckBox.AutoSize = true;
- this.allCheckBox.Checked = true;
- this.allCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
this.allCheckBox.Enabled = false;
this.allCheckBox.Location = new System.Drawing.Point(414, 0);
this.allCheckBox.Name = "allCheckBox";
diff --git a/CreamInstaller/Forms/SelectForm.cs b/CreamInstaller/Forms/SelectForm.cs
index 24ed769..ae180fb 100644
--- a/CreamInstaller/Forms/SelectForm.cs
+++ b/CreamInstaller/Forms/SelectForm.cs
@@ -121,6 +121,7 @@ namespace CreamInstaller
private void GetCreamApiApplicablePrograms(IProgress progress)
{
+ treeView1.AfterCheck -= OnTreeViewNodeCheckedChanged;
int cur = 0;
if (Program.Canceled) return;
List> applicablePrograms = new();
@@ -197,25 +198,28 @@ namespace CreamInstaller
if (Program.Canceled) return;
TreeNode programNode = treeNodes.Find(s => s.Text == name) ?? new();
programNode.Text = name;
- programNode.Checked = true;
+ programNode.Checked = selection.Enabled;
programNode.Remove();
treeView1.Nodes.Add(programNode);
treeNodes.Remove(programNode);
treeNodes.Add(programNode);
- foreach (KeyValuePair dlcApp in dlc.ToList())
+ if (name == "Paradox Launcher")
{
- if (Program.Canceled || programNode is null) return;
- TreeNode dlcNode = treeNodes.Find(s => s.Text == dlcApp.Value) ?? new();
- dlcNode.Text = dlcApp.Value;
- dlcNode.Checked = true;
- dlcNode.Remove();
- programNode.Nodes.Add(dlcNode);
- treeNodes.Remove(dlcNode);
- treeNodes.Add(dlcNode);
- Tuple app = new(dlcApp.Key, dlcApp.Value);
- if (!selection.AllSteamDlc.Contains(app)) selection.AllSteamDlc.Add(app);
- if (!selection.SelectedSteamDlc.Contains(app)) selection.SelectedSteamDlc.Add(app);
+ // maybe add game and/or dlc choice here?
}
+ else foreach (KeyValuePair dlcApp in dlc.ToList())
+ {
+ if (Program.Canceled || programNode is null) return;
+ Tuple app = new(dlcApp.Key, dlcApp.Value);
+ TreeNode dlcNode = treeNodes.Find(s => s.Text == app.Item2) ?? new();
+ dlcNode.Text = app.Item2;
+ dlcNode.Checked = selection.SelectedSteamDlc.Contains(app);
+ dlcNode.Remove();
+ programNode.Nodes.Add(dlcNode);
+ treeNodes.Remove(dlcNode);
+ treeNodes.Add(dlcNode);
+ if (!selection.AllSteamDlc.Contains(app)) selection.AllSteamDlc.Add(app);
+ }
});
});
RunningTasks.Add(task);
@@ -230,6 +234,7 @@ namespace CreamInstaller
task.Wait();
}
progress.Report(RunningTasks.Count);
+ treeView1.AfterCheck += OnTreeViewNodeCheckedChanged;
}
private bool validated = false;
@@ -292,21 +297,11 @@ namespace CreamInstaller
label2.Visible = false;
progressBar1.Visible = false;
- if (ProgramSelection.All.Any())
- {
- allCheckBox.Enabled = true;
- treeView1.Enabled = true;
- treeNodes.ForEach(node => node.Checked = true);
- if (ProgramSelection.AllSafeEnabled.Any())
- {
- acceptButton.Enabled = true;
- }
- }
- else
- {
- noneFoundLabel.Visible = true;
- }
+ treeView1.Enabled = ProgramSelection.All.Any();
+ allCheckBox.Enabled = treeView1.Enabled;
+ noneFoundLabel.Visible = !treeView1.Enabled;
+ acceptButton.Enabled = ProgramSelection.AllSafeEnabled.Any();
cancelButton.Enabled = false;
scanButton.Enabled = true;
@@ -322,23 +317,29 @@ namespace CreamInstaller
ProgramSelection selection = ProgramSelection.FromName(e.Node.Text);
if (selection is null)
{
- selection = ProgramSelection.FromName(e.Node.Parent.Text);
- selection.ToggleDlc(e.Node.Text, e.Node.Checked);
+ ProgramSelection.FromName(e.Node.Parent.Text).ToggleDlc(e.Node.Text, e.Node.Checked);
treeView1.AfterCheck -= OnTreeViewNodeCheckedChanged;
e.Node.Parent.Checked = e.Node.Parent.Nodes.Cast().ToList().Any(treeNode => treeNode.Checked);
treeView1.AfterCheck += OnTreeViewNodeCheckedChanged;
}
else
{
- selection.Enabled = e.Node.Checked;
- treeView1.AfterCheck -= OnTreeViewNodeCheckedChanged;
- e.Node.Nodes.Cast().ToList().ForEach(treeNode => treeNode.Checked = e.Node.Checked);
- treeView1.AfterCheck += OnTreeViewNodeCheckedChanged;
+ if (selection.AllSteamDlc.Any())
+ {
+ selection.ToggleAllDlc(e.Node.Checked);
+ treeView1.AfterCheck -= OnTreeViewNodeCheckedChanged;
+ e.Node.Nodes.Cast().ToList().ForEach(treeNode => treeNode.Checked = e.Node.Checked);
+ treeView1.AfterCheck += OnTreeViewNodeCheckedChanged;
+ }
+ else
+ {
+ selection.Enabled = e.Node.Checked;
+ }
allCheckBox.CheckedChanged -= OnAllCheckBoxChanged;
allCheckBox.Checked = treeNodes.TrueForAll(treeNode => treeNode.Checked);
allCheckBox.CheckedChanged += OnAllCheckBoxChanged;
- acceptButton.Enabled = ProgramSelection.AllSafeEnabled.Any();
}
+ acceptButton.Enabled = ProgramSelection.AllSafeEnabled.Any();
}
private void OnLoad(object sender, EventArgs _)
@@ -370,10 +371,10 @@ namespace CreamInstaller
}
}
- private static bool ParadoxLauncherDlcDialog(Form form)
+ private static void PopulateParadoxLauncherDlc(ProgramSelection paradoxLauncher = null)
{
- ProgramSelection paradoxLauncher = ProgramSelection.FromName("Paradox Launcher");
- if (!(paradoxLauncher is null) && paradoxLauncher.Enabled)
+ paradoxLauncher ??= ProgramSelection.FromName("Paradox Launcher");
+ if (!(paradoxLauncher is null))
{
paradoxLauncher.ExtraSteamAppIdDlc = new();
foreach (ProgramSelection selection in ProgramSelection.AllSafeEnabled)
@@ -391,6 +392,15 @@ namespace CreamInstaller
paradoxLauncher.ExtraSteamAppIdDlc.Add(new(selection.SteamAppId, selection.Name, selection.AllSteamDlc));
}
}
+ }
+ }
+
+ private static bool ParadoxLauncherDlcDialog(Form form)
+ {
+ ProgramSelection paradoxLauncher = ProgramSelection.FromName("Paradox Launcher");
+ if (!(paradoxLauncher is null) && paradoxLauncher.Enabled)
+ {
+ PopulateParadoxLauncherDlc(paradoxLauncher);
if (!paradoxLauncher.ExtraSteamAppIdDlc.Any())
{
if (new DialogForm(form).Show(Program.ApplicationName, SystemIcons.Warning,
@@ -425,8 +435,11 @@ namespace CreamInstaller
{
foreach (TreeNode treeNode in treeNodes)
{
- treeNode.Checked = !treeNode.Checked;
- treeNode.Checked = !treeNode.Checked; // to fire checked event
+ if (!(treeNode.Parent is null))
+ {
+ treeNode.Checked = !treeNode.Checked;
+ treeNode.Checked = !treeNode.Checked; // to fire checked event
+ }
}
int X = installForm.Location.X + installForm.Size.Width / 2 - Size.Width / 2;
int Y = installForm.Location.Y + installForm.Size.Height / 2 - Size.Height / 2;
diff --git a/CreamInstaller/ProgramSelection.cs b/CreamInstaller/ProgramSelection.cs
index 3165063..b82373f 100644
--- a/CreamInstaller/ProgramSelection.cs
+++ b/CreamInstaller/ProgramSelection.cs
@@ -7,7 +7,7 @@ namespace CreamInstaller
{
public class ProgramSelection
{
- public bool Enabled = true;
+ public bool Enabled = false;
public string Name;
public string RootDirectory;
@@ -34,24 +34,33 @@ namespace CreamInstaller
}
}
- public void ToggleDlc(string dlcName, bool Enabled)
+ private void Toggle(Tuple dlcApp, bool enabled)
+ {
+ if (enabled)
+ {
+ if (!SelectedSteamDlc.Contains(dlcApp)) SelectedSteamDlc.Add(dlcApp);
+ }
+ else SelectedSteamDlc.Remove(dlcApp);
+ }
+
+ public void ToggleDlc(string dlcName, bool enabled)
{
foreach (Tuple dlcApp in AllSteamDlc)
{
if (dlcApp.Item2 == dlcName)
{
- if (Enabled)
- {
- if (!SelectedSteamDlc.Contains(dlcApp))
- {
- SelectedSteamDlc.Add(dlcApp);
- }
- }
- else SelectedSteamDlc.Remove(dlcApp);
+ Toggle(dlcApp, enabled);
break;
}
}
- this.Enabled = SelectedSteamDlc.Any();
+ Enabled = SelectedSteamDlc.Any();
+ }
+
+ public void ToggleAllDlc(bool enabled)
+ {
+ if (!enabled) SelectedSteamDlc.Clear();
+ else foreach (Tuple dlcApp in AllSteamDlc) Toggle(dlcApp, enabled);
+ Enabled = SelectedSteamDlc.Any();
}
public ProgramSelection() => All.Add(this);