From d7938dd1d837ecb2bed6314d804345cb4b9a4973 Mon Sep 17 00:00:00 2001 From: PNWParksFan Date: Wed, 21 Feb 2018 00:27:01 -0800 Subject: [PATCH] Added GTA V folder check to main entry point in Program.cs, improved folder selection dialog - Added bool app setting for remember GTA folder (vs. prompt every start) - Added checkbox to folder selection dialog for remember GTA folder - Changed folder selection dialog to fixed dialog window border - Set default Enter/Esc buttons on folder selection dialog --- App.config | 3 +++ ExploreForm.cs | 4 +++- Program.cs | 6 ++++++ Properties/Settings.Designer.cs | 14 +++++++++++++- Properties/Settings.settings | 3 +++ SelectFolderForm.Designer.cs | 19 +++++++++++++++++++ SelectFolderForm.cs | 6 ++++++ Utils/GTAFolder.cs | 2 +- WorldForm.cs | 31 ++----------------------------- 9 files changed, 56 insertions(+), 32 deletions(-) diff --git a/App.config b/App.config index e08b7b2..408ceae 100644 --- a/App.config +++ b/App.config @@ -193,6 +193,9 @@ False + + True + \ No newline at end of file diff --git a/ExploreForm.cs b/ExploreForm.cs index 3ac2c2f..c05dd11 100644 --- a/ExploreForm.cs +++ b/ExploreForm.cs @@ -59,7 +59,9 @@ namespace CodeWalker InitFileTypes(); - /*if (!EnsureGTAFolder())*/ + // This is probably not necessary now that the GTA folder is checked + // in the Program.cs when the game is initiated, but we will leave it + // here for now to make sure if(!GTAFolder.UpdateGTAFolder(true)) { Close(); diff --git a/Program.cs b/Program.cs index 6de659b..1d1b43e 100644 --- a/Program.cs +++ b/Program.cs @@ -14,6 +14,12 @@ namespace CodeWalker [STAThread] static void Main(string[] args) { + // Always check the GTA folder first thing + if(!GTAFolder.UpdateGTAFolder(Properties.Settings.Default.RememberGTAFolder)) + { + MessageBox.Show("Could not load CodeWalker because no GTA 5 folder was selected. CodeWalker will now exit.", "GTA 5 Folder Not Found", MessageBoxButtons.OK, MessageBoxIcon.Stop); + return; + } bool menumode = false; bool explorermode = false; diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs index a9e64f2..76621d0 100644 --- a/Properties/Settings.Designer.cs +++ b/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace CodeWalker.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.1.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -698,5 +698,17 @@ namespace CodeWalker.Properties { this["MouseInvert"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool RememberGTAFolder { + get { + return ((bool)(this["RememberGTAFolder"])); + } + set { + this["RememberGTAFolder"] = value; + } + } } } diff --git a/Properties/Settings.settings b/Properties/Settings.settings index 903cc47..f2aa187 100644 --- a/Properties/Settings.settings +++ b/Properties/Settings.settings @@ -183,5 +183,8 @@ False + + True + \ No newline at end of file diff --git a/SelectFolderForm.Designer.cs b/SelectFolderForm.Designer.cs index a23879e..af38e99 100644 --- a/SelectFolderForm.Designer.cs +++ b/SelectFolderForm.Designer.cs @@ -35,6 +35,7 @@ this.FolderTextBox = new System.Windows.Forms.TextBox(); this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); this.CancelButt = new System.Windows.Forms.Button(); + this.RememberFolderCheckbox = new System.Windows.Forms.CheckBox(); this.SuspendLayout(); // // OkButton @@ -81,6 +82,7 @@ // CancelButt // this.CancelButt.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.CancelButt.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.CancelButt.Location = new System.Drawing.Point(238, 78); this.CancelButt.Name = "CancelButt"; this.CancelButt.Size = new System.Drawing.Size(75, 23); @@ -89,17 +91,33 @@ this.CancelButt.UseVisualStyleBackColor = true; this.CancelButt.Click += new System.EventHandler(this.CancelButton_Click); // + // RememberFolderCheckbox + // + this.RememberFolderCheckbox.AutoSize = true; + this.RememberFolderCheckbox.Location = new System.Drawing.Point(12, 82); + this.RememberFolderCheckbox.Name = "RememberFolderCheckbox"; + this.RememberFolderCheckbox.Size = new System.Drawing.Size(134, 17); + this.RememberFolderCheckbox.TabIndex = 66; + this.RememberFolderCheckbox.Text = "Remember GTA Folder"; + this.RememberFolderCheckbox.UseVisualStyleBackColor = true; + this.RememberFolderCheckbox.CheckedChanged += new System.EventHandler(this.RememberFolderCheckbox_CheckedChanged); + // // SelectFolderForm // + this.AcceptButton = this.OkButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.CancelButt; this.ClientSize = new System.Drawing.Size(406, 113); + this.Controls.Add(this.RememberFolderCheckbox); this.Controls.Add(this.CancelButt); this.Controls.Add(this.OkButton); this.Controls.Add(this.label1); this.Controls.Add(this.FolderBrowseButton); this.Controls.Add(this.FolderTextBox); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; this.MinimumSize = new System.Drawing.Size(422, 152); this.Name = "SelectFolderForm"; this.Text = "Select GTAV folder - CodeWalker by dexyfex"; @@ -117,5 +135,6 @@ private System.Windows.Forms.TextBox FolderTextBox; private System.Windows.Forms.FolderBrowserDialog FolderBrowserDialog; private System.Windows.Forms.Button CancelButt; + private System.Windows.Forms.CheckBox RememberFolderCheckbox; } } \ No newline at end of file diff --git a/SelectFolderForm.cs b/SelectFolderForm.cs index 45c69c2..fe8c0a6 100644 --- a/SelectFolderForm.cs +++ b/SelectFolderForm.cs @@ -26,6 +26,7 @@ namespace CodeWalker private void SelectFolderForm_Load(object sender, EventArgs e) { FolderTextBox.Text = Settings.Default.GTAFolder; + RememberFolderCheckbox.Checked = Settings.Default.RememberGTAFolder; } private void FolderBrowseButton_Click(object sender, EventArgs e) @@ -63,5 +64,10 @@ namespace CodeWalker Result = DialogResult.OK; Close(); } + + private void RememberFolderCheckbox_CheckedChanged(object sender, EventArgs e) + { + Settings.Default.RememberGTAFolder = RememberFolderCheckbox.Checked; + } } } diff --git a/Utils/GTAFolder.cs b/Utils/GTAFolder.cs index abcd3d9..e649310 100644 --- a/Utils/GTAFolder.cs +++ b/Utils/GTAFolder.cs @@ -65,7 +65,7 @@ namespace CodeWalker return true; } else { - var tryAgain = MessageBox.Show($"Folder \"{folder}\" is not a valid GTA folder:\n{failReason}\n\nDo you want to try choosing a different folder?", "Unable to set GTA Folder", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); + var tryAgain = MessageBox.Show($"Folder \"{folder}\" is not a valid GTA folder:\n\n{failReason}\n\nDo you want to try choosing a different folder?", "Unable to set GTA Folder", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); if(tryAgain == DialogResult.Retry) { return UpdateGTAFolder(false); diff --git a/WorldForm.cs b/WorldForm.cs index d2e00b0..fad46d9 100644 --- a/WorldForm.cs +++ b/WorldForm.cs @@ -226,38 +226,11 @@ namespace CodeWalker MouseWheel += WorldForm_MouseWheel; - string fldr = Settings.Default.GTAFolder; - if (string.IsNullOrEmpty(fldr) || !Directory.Exists(fldr)) + if (!GTAFolder.UpdateGTAFolder(true)) { - SelectFolderForm f = new SelectFolderForm(); - f.ShowDialog(); - if (f.Result == DialogResult.OK) - { - fldr = f.SelectedFolder; - } - else - { - //MessageBox.Show("No GTAV folder was chosen. CodeWalker will now exit."); - Close(); - return; - } - } - - if (!Directory.Exists(fldr)) - { - MessageBox.Show("The specified folder does not exist:\n" + fldr); Close(); return; } - if (!File.Exists(fldr + "\\gta5.exe")) - { - MessageBox.Show("GTA5.exe not found in folder:\n" + fldr); - Close(); - return; - } - - Settings.Default.GTAFolder = fldr; //seems ok, save it for later - Widget.Position = new Vector3(1.0f, 10.0f, 100.0f); Widget.Rotation = Quaternion.Identity; @@ -3889,7 +3862,7 @@ namespace CodeWalker try { - GTA5Keys.LoadFromPath(Settings.Default.GTAFolder); //now loads from magic + GTA5Keys.LoadFromPath(GTAFolder.CurrentGTAFolder); //now loads from magic } catch {