From 3fb2b1c6f8a459a89bd1af34871b9897e51b029e Mon Sep 17 00:00:00 2001 From: Lunaretic Date: Thu, 25 Jul 2024 14:53:10 -0400 Subject: [PATCH 1/4] ver --- FFXIV_TexTools/FFXIV_TexTools.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/FFXIV_TexTools/FFXIV_TexTools.csproj b/FFXIV_TexTools/FFXIV_TexTools.csproj index c2b74b52..0e1663ce 100644 --- a/FFXIV_TexTools/FFXIV_TexTools.csproj +++ b/FFXIV_TexTools/FFXIV_TexTools.csproj @@ -23,9 +23,9 @@ FFXIV_TexTools Copyright © 2024 - 3.0.8.2 - 3.0.8.2 - 3.0.8.2 + 3.0.8.3 + 3.0.8.3 + 3.0.8.3 9.0 true From 225c0e881f2a23353172b3c1dfc9e59a92f69374 Mon Sep 17 00:00:00 2001 From: Lunaretic Date: Fri, 26 Jul 2024 12:27:58 -0400 Subject: [PATCH 2/4] Wrap prompts in dispatchers for safety. --- FFXIV_TexTools/Views/ViewHelpers.cs | 184 ++++++++++++++++------------ 1 file changed, 106 insertions(+), 78 deletions(-) diff --git a/FFXIV_TexTools/Views/ViewHelpers.cs b/FFXIV_TexTools/Views/ViewHelpers.cs index e11dd5d0..fb19e9c8 100644 --- a/FFXIV_TexTools/Views/ViewHelpers.cs +++ b/FFXIV_TexTools/Views/ViewHelpers.cs @@ -119,17 +119,21 @@ public static void ShowError(this Window wind, string title, string message) { try { - WindowWrapper win32Window = null; - if (!IsWindowOpen(wind)) - { - wind = null; - } - else + + Application.Current.Dispatcher.Invoke(() => { - win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); - } - FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OK, MessageBoxIcon.Error, - MessageBoxDefaultButton.Button1); + WindowWrapper win32Window = null; + if (!IsWindowOpen(wind)) + { + wind = null; + } + else + { + win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); + } + FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OK, MessageBoxIcon.Error, + MessageBoxDefaultButton.Button1); + }); } catch (Exception ex) { @@ -141,18 +145,22 @@ public static void ShowError(this UserControl control, string title, string mess { try { - WindowWrapper win32Window = null; - var wind = Window.GetWindow(control); - if (!IsWindowOpen(wind)) - { - wind = null; - } - else + + Application.Current.Dispatcher.Invoke(() => { - win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); - } - FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OK, MessageBoxIcon.Error, - MessageBoxDefaultButton.Button1); + WindowWrapper win32Window = null; + var wind = Window.GetWindow(control); + if (!IsWindowOpen(wind)) + { + wind = null; + } + else + { + win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); + } + FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OK, MessageBoxIcon.Error, + MessageBoxDefaultButton.Button1); + }); } catch(Exception ex) { @@ -164,17 +172,21 @@ public static void ShowWarning(this Window wind, string title, string message) { try { - WindowWrapper win32Window = null; - if (!IsWindowOpen(wind)) - { - wind = null; - } - else + + Application.Current.Dispatcher.Invoke(() => { - win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); - } - FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OK, MessageBoxIcon.Warning, - MessageBoxDefaultButton.Button1); + WindowWrapper win32Window = null; + if (!IsWindowOpen(wind)) + { + wind = null; + } + else + { + win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); + } + FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OK, MessageBoxIcon.Warning, + MessageBoxDefaultButton.Button1); + }); } catch (Exception ex) { @@ -186,18 +198,22 @@ public static void ShowWarning(this UserControl control, string title, string me { try { - WindowWrapper win32Window = null; - var wind = Window.GetWindow(control); - if (!IsWindowOpen(wind)) - { - wind = null; - } - else + + Application.Current.Dispatcher.Invoke(() => { - win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); - } - FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OK, MessageBoxIcon.Warning, - MessageBoxDefaultButton.Button1); + WindowWrapper win32Window = null; + var wind = Window.GetWindow(control); + if (!IsWindowOpen(wind)) + { + wind = null; + } + else + { + win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); + } + FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OK, MessageBoxIcon.Warning, + MessageBoxDefaultButton.Button1); + }); } catch (Exception ex) { @@ -210,21 +226,25 @@ public static void ShowError(string title, string message) { try { - var wind = MainWindow.GetMainWindow(); - if (!IsWindowOpen(wind)) - { - wind = null; - } - if (wind == null) - { - FlexibleMessageBox.Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Error, - MessageBoxDefaultButton.Button1); - } - else + + Application.Current.Dispatcher.Invoke(() => { - FlexibleMessageBox.Show(wind.Win32Window, message, title, MessageBoxButtons.OK, MessageBoxIcon.Error, - MessageBoxDefaultButton.Button1); - } + var wind = MainWindow.GetMainWindow(); + if (!IsWindowOpen(wind)) + { + wind = null; + } + if (wind == null) + { + FlexibleMessageBox.Show(message, title, MessageBoxButtons.OK, MessageBoxIcon.Error, + MessageBoxDefaultButton.Button1); + } + else + { + FlexibleMessageBox.Show(wind.Win32Window, message, title, MessageBoxButtons.OK, MessageBoxIcon.Error, + MessageBoxDefaultButton.Button1); + } + }); } catch(Exception ex) { @@ -235,19 +255,23 @@ public static bool InfoPrompt(this Window wind, string title, string message) { try { - WindowWrapper win32Window = null; - if (!IsWindowOpen(wind)) - { - wind = null; - } - else + + return Application.Current.Dispatcher.Invoke(() => { - win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); - } - var res = FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OKCancel, MessageBoxIcon.Information, - MessageBoxDefaultButton.Button1); + WindowWrapper win32Window = null; + if (!IsWindowOpen(wind)) + { + wind = null; + } + else + { + win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); + } + var res = FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OKCancel, MessageBoxIcon.Information, + MessageBoxDefaultButton.Button1); - return res == DialogResult.OK; + return res == DialogResult.OK; + }); } catch (Exception ex) { @@ -260,19 +284,23 @@ public static bool WarningPrompt(this Window wind, string title, string message) { try { - WindowWrapper win32Window = null; - if (!IsWindowOpen(wind)) - { - wind = null; - } - else + + return Application.Current.Dispatcher.Invoke(() => { - win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); - } - var res = FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, - MessageBoxDefaultButton.Button1); + WindowWrapper win32Window = null; + if (!IsWindowOpen(wind)) + { + wind = null; + } + else + { + win32Window = new WindowWrapper(new WindowInteropHelper(wind).Handle); + } + var res = FlexibleMessageBox.Show(win32Window, message, title, MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, + MessageBoxDefaultButton.Button1); - return res == DialogResult.OK; + return res == DialogResult.OK; + }); } catch (Exception ex) { From 99eeab07feb17ec3ab2a9c566a2d1f87e19554fe Mon Sep 17 00:00:00 2001 From: Lunaretic Date: Fri, 26 Jul 2024 21:55:44 -0400 Subject: [PATCH 3/4] SimpleHeels stuff --- FFXIV_TexTools/App.config | 3 ++ FFXIV_TexTools/FFXIV_TexTools.csproj | 6 ++-- .../Properties/Settings.Designer.cs | 12 ++++++++ FFXIV_TexTools/Properties/Settings.settings | 3 ++ .../ViewModels/ImportModelViewModel.cs | 19 ++++++++++++- .../Views/Item/ItemViewControl.xaml.cs | 9 +++++- .../Views/Models/ImportModelEditView.xaml | 15 ++++++---- .../Views/Models/ImportModelEditView.xaml.cs | 19 +++++++++++++ .../Views/Models/ImportModelView.xaml | 3 +- FFXIV_TexTools/Views/ViewHelpers.cs | 28 +++++++++++++++++++ lib/xivModdingFramework | 2 +- 11 files changed, 106 insertions(+), 13 deletions(-) diff --git a/FFXIV_TexTools/App.config b/FFXIV_TexTools/App.config index 33351f8d..08fd8e6e 100644 --- a/FFXIV_TexTools/App.config +++ b/FFXIV_TexTools/App.config @@ -159,6 +159,9 @@ pmp + + True + diff --git a/FFXIV_TexTools/FFXIV_TexTools.csproj b/FFXIV_TexTools/FFXIV_TexTools.csproj index 0e1663ce..ecbfb486 100644 --- a/FFXIV_TexTools/FFXIV_TexTools.csproj +++ b/FFXIV_TexTools/FFXIV_TexTools.csproj @@ -23,9 +23,9 @@ FFXIV_TexTools Copyright © 2024 - 3.0.8.3 - 3.0.8.3 - 3.0.8.3 + 3.0.8.4 + 3.0.8.4 + 3.0.8.4 9.0 true diff --git a/FFXIV_TexTools/Properties/Settings.Designer.cs b/FFXIV_TexTools/Properties/Settings.Designer.cs index af40c37c..f281e8e3 100644 --- a/FFXIV_TexTools/Properties/Settings.Designer.cs +++ b/FFXIV_TexTools/Properties/Settings.Designer.cs @@ -610,5 +610,17 @@ public string Default_Modpack_Format { this["Default_Modpack_Format"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool UseAutoHeels { + get { + return ((bool)(this["UseAutoHeels"])); + } + set { + this["UseAutoHeels"] = value; + } + } } } diff --git a/FFXIV_TexTools/Properties/Settings.settings b/FFXIV_TexTools/Properties/Settings.settings index 64198a81..c40946be 100644 --- a/FFXIV_TexTools/Properties/Settings.settings +++ b/FFXIV_TexTools/Properties/Settings.settings @@ -149,5 +149,8 @@ pmp + + True + \ No newline at end of file diff --git a/FFXIV_TexTools/ViewModels/ImportModelViewModel.cs b/FFXIV_TexTools/ViewModels/ImportModelViewModel.cs index 8d43292e..d6c6d1d3 100644 --- a/FFXIV_TexTools/ViewModels/ImportModelViewModel.cs +++ b/FFXIV_TexTools/ViewModels/ImportModelViewModel.cs @@ -69,6 +69,21 @@ public string FinishText } } + private bool _AutoHeels = true; + public bool AutoHeels + { + get => _AutoHeels; + set + { + if(_AutoHeels != value) + { + Settings.Default.UseAutoHeels = value; + Settings.Default.Save(); + } + _AutoHeels = value; + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(AutoHeels))); + } + } private ModelImportOptions ImportOptions; @@ -135,6 +150,7 @@ public ImportModelViewModel(ImportModelView view, string internalPath, IItem ref _internalPath = internalPath; _simpleMode = simpleMode; _clearEmpties = clearEmptyMaterials; + _AutoHeels = Settings.Default.UseAutoHeels; ComplexOptionsEnabled = !simpleMode; @@ -218,6 +234,7 @@ public ImportModelViewModel(ImportModelView view, string internalPath, IItem ref } } + _view.CloneUV1Button.Click += CloneUV1Button_Clicked; _view.ShiftUVsButton.Click += ForceUVsButton_Clicked; _view.UseImportedTangentButton.Click += UseExternalTangents_Clicked; @@ -228,7 +245,6 @@ public ImportModelViewModel(ImportModelView view, string internalPath, IItem ref } } - private void CloneUV1Button_Clicked(object sender, RoutedEventArgs e) { Settings.Default.CloneUV1toUV2ForHair = _view.CloneUV1Button.IsChecked == true; @@ -337,6 +353,7 @@ private async Task DoImport(bool showEditor) options.CloneUV2 = _view.CloneUV1Button.IsChecked == true ? true : false; options.AutoScale = _view.AutoScaleButton.IsChecked == true ? true : false; options.UseImportedTangents = _view.UseImportedTangentButton.IsChecked == true ? true : false; + options.AutoAssignHeels = AutoHeels; options.SourceApplication = XivStrings.TexTools; diff --git a/FFXIV_TexTools/Views/Item/ItemViewControl.xaml.cs b/FFXIV_TexTools/Views/Item/ItemViewControl.xaml.cs index 66944c01..d14ad9b6 100644 --- a/FFXIV_TexTools/Views/Item/ItemViewControl.xaml.cs +++ b/FFXIV_TexTools/Views/Item/ItemViewControl.xaml.cs @@ -1071,7 +1071,14 @@ private async Task GetTextures(ModTransaction tx) } else { - textures = await Mtrl.GetTexturePathsFromMtrlPath(mtrl, false, false, tx); + try + { + textures = await Mtrl.GetTexturePathsFromMtrlPath(mtrl, false, false, tx); + } + catch + { + //this.ShowWarning("Unable to read Material") + } } foreach(var tex in textures) diff --git a/FFXIV_TexTools/Views/Models/ImportModelEditView.xaml b/FFXIV_TexTools/Views/Models/ImportModelEditView.xaml index e5248895..3fe9030c 100644 --- a/FFXIV_TexTools/Views/Models/ImportModelEditView.xaml +++ b/FFXIV_TexTools/Views/Models/ImportModelEditView.xaml @@ -242,6 +242,7 @@ + @@ -261,16 +262,18 @@ -