From b0bced67a7484b36458a5a166de585980e0822d1 Mon Sep 17 00:00:00 2001 From: Brett Hewitson Date: Wed, 1 Dec 2021 21:14:38 +1000 Subject: [PATCH] Data directory changes (#10) * Data Directory Changes 1. Have implemented a new data directory selection window. 2. Have removed the data directory move button from global settings. * Added restart message --- src/ARKServerManager/ARKServerManager.csproj | 7 + src/ARKServerManager/App.config | 3 + src/ARKServerManager/App.xaml.cs | 68 +------ src/ARKServerManager/Config.Designer.cs | 9 + src/ARKServerManager/Config.settings | 3 + .../Globalization/en-US/en-US.xaml | 19 ++ .../Windows/DataDirectoryWindow.xaml | 95 ++++++++++ .../Windows/DataDirectoryWindow.xaml.cs | 169 +++++++++++++++++ .../Windows/GlobalSettingsControl.xaml | 2 +- src/ConanServerManager/App.config | 3 + src/ConanServerManager/App.xaml.cs | 66 +------ .../ConanServerManager.csproj | 7 + src/ConanServerManager/Config.Designer.cs | 9 + src/ConanServerManager/Config.settings | 3 + .../Globalization/en-US/en-US.xaml | 19 ++ .../Windows/DataDirectoryWindow.xaml | 95 ++++++++++ .../Windows/DataDirectoryWindow.xaml.cs | 170 ++++++++++++++++++ .../Windows/GlobalSettingsControl.xaml | 2 +- 18 files changed, 626 insertions(+), 123 deletions(-) create mode 100644 src/ARKServerManager/Windows/DataDirectoryWindow.xaml create mode 100644 src/ARKServerManager/Windows/DataDirectoryWindow.xaml.cs create mode 100644 src/ConanServerManager/Windows/DataDirectoryWindow.xaml create mode 100644 src/ConanServerManager/Windows/DataDirectoryWindow.xaml.cs diff --git a/src/ARKServerManager/ARKServerManager.csproj b/src/ARKServerManager/ARKServerManager.csproj index 8d30e72a..c7410cc7 100644 --- a/src/ARKServerManager/ARKServerManager.csproj +++ b/src/ARKServerManager/ARKServerManager.csproj @@ -208,6 +208,9 @@ AddUserWindow.xaml + + DataDirectoryWindow.xaml + PlayerListWindow.xaml @@ -391,6 +394,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile diff --git a/src/ARKServerManager/App.config b/src/ARKServerManager/App.config index 5c237c8e..605e2a65 100644 --- a/src/ARKServerManager/App.config +++ b/src/ARKServerManager/App.config @@ -344,6 +344,9 @@ version.txt + + asmdata + diff --git a/src/ARKServerManager/App.xaml.cs b/src/ARKServerManager/App.xaml.cs index 80da3fb6..6df4b3e8 100644 --- a/src/ARKServerManager/App.xaml.cs +++ b/src/ARKServerManager/App.xaml.cs @@ -410,69 +410,15 @@ namespace ServerManagerTool ApplicationStarted = true; - // Initial configuration setting - if (String.IsNullOrWhiteSpace(Config.Default.DataDir)) - { - MessageBox.Show(_globalizer.GetResourceString("Application_DataDirectoryLabel"), _globalizer.GetResourceString("Application_DataDirectoryTitle"), MessageBoxButton.OK, MessageBoxImage.Information); + if (string.IsNullOrWhiteSpace(Config.Default.DataDir)) + { + var dataDirectoryWindow = new DataDirectoryWindow(); + dataDirectoryWindow.WindowStartupLocation = WindowStartupLocation.CenterScreen; + var result = dataDirectoryWindow.ShowDialog(); - var installationFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); - if (!installationFolder.EndsWith(@"\")) - installationFolder += @"\"; - - var desktopFolder1 = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); - var desktopFolder2 = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory); - - while (String.IsNullOrWhiteSpace(Config.Default.DataDir)) + if (!result.HasValue || !result.Value) { - var dialog = new CommonOpenFileDialog - { - EnsureFileExists = true, - IsFolderPicker = true, - Multiselect = false, - Title = _globalizer.GetResourceString("Application_DataDirectory_DialogTitle"), - InitialDirectory = Path.GetPathRoot(installationFolder) - }; - - if (dialog.ShowDialog() != CommonFileDialogResult.Ok) - { - Environment.Exit(0); - } - - MessageBoxResult confirm = MessageBoxResult.Cancel; - - // check if the folder is under the installation folder - var newDataFolder = dialog.FileName; - if (!newDataFolder.EndsWith(@"\")) - newDataFolder += @"\"; - - if (newDataFolder.StartsWith(installationFolder)) - { - confirm = MessageBoxResult.No; - MessageBox.Show(_globalizer.GetResourceString("Application_DataDirectory_DataDirectoryWithinInstallFolderErrorLabel"), _globalizer.GetResourceString("Application_DataDirectory_DataDirectoryFolderErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); - } - else if (newDataFolder.StartsWith(desktopFolder1) || newDataFolder.StartsWith(desktopFolder2)) - { - confirm = MessageBoxResult.No; - MessageBox.Show(_globalizer.GetResourceString("Application_DataDirectory_DataDirectoryWithinDesktopFolderErrorLabel"), _globalizer.GetResourceString("Application_DataDirectory_DataDirectoryFolderErrorTitle"), MessageBoxButton.OK, MessageBoxImage.Error); - } - else - { - confirm = MessageBox.Show(String.Format(_globalizer.GetResourceString("Application_DataDirectory_ConfirmLabel"), Path.Combine(newDataFolder, Config.Default.ProfilesDir), Path.Combine(newDataFolder, Config.Default.SteamCmdDir)), _globalizer.GetResourceString("Application_DataDirectory_ConfirmTitle"), MessageBoxButton.YesNoCancel, MessageBoxImage.Question); - } - - if (confirm == MessageBoxResult.Cancel) - { - Environment.Exit(0); - } - else if (confirm == MessageBoxResult.Yes) - { - if (newDataFolder.EndsWith(@"\")) - newDataFolder = newDataFolder.Substring(0, newDataFolder.Length -1); - - Config.Default.DataDir = newDataFolder; - ReconfigureLogging(); - break; - } + Environment.Exit(0); } } diff --git a/src/ARKServerManager/Config.Designer.cs b/src/ARKServerManager/Config.Designer.cs index e4c1ef54..dbac3d1f 100644 --- a/src/ARKServerManager/Config.Designer.cs +++ b/src/ARKServerManager/Config.Designer.cs @@ -2803,5 +2803,14 @@ namespace ServerManagerTool { this["MainWindow_Top"] = value; } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("asmdata")] + public string DefaultDataDirectoryName { + get { + return ((string)(this["DefaultDataDirectoryName"])); + } + } } } diff --git a/src/ARKServerManager/Config.settings b/src/ARKServerManager/Config.settings index ea5d849e..72345566 100644 --- a/src/ARKServerManager/Config.settings +++ b/src/ARKServerManager/Config.settings @@ -776,5 +776,8 @@ 50 + + asmdata + \ No newline at end of file diff --git a/src/ARKServerManager/Globalization/en-US/en-US.xaml b/src/ARKServerManager/Globalization/en-US/en-US.xaml index c8c83020..49ab73d1 100644 --- a/src/ARKServerManager/Globalization/en-US/en-US.xaml +++ b/src/ARKServerManager/Globalization/en-US/en-US.xaml @@ -165,6 +165,25 @@ Processor + + Data Folder Selection + It appears you do not have a data directory set. The data directory is where your profiles and SteamCMD will be stored. It is not the same as the server installation directory, which you can choose for each profile. + Select the drive where the data folder should be located. + Data Folder Name: + The name of the server manager data folder. + Local Disk + {0} free of {1} + + Ok + Cancel + Refresh + + Data Directory Selection Error + The data folder name you have entered is not valid. + Server Manager Restart Required + The data folder has been set, you must now restart the server manager to use the new settings. + + Close diff --git a/src/ARKServerManager/Windows/DataDirectoryWindow.xaml b/src/ARKServerManager/Windows/DataDirectoryWindow.xaml new file mode 100644 index 00000000..6a7e6bf3 --- /dev/null +++ b/src/ARKServerManager/Windows/DataDirectoryWindow.xaml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +