Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sn4k3/UVtools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Conceição <Tiago_caza@hotmail.com>2022-09-18 18:32:11 +0300
committerTiago Conceição <Tiago_caza@hotmail.com>2022-09-18 18:32:11 +0300
commit4ff621a080e28e971180b91789acb8ae6ce4937f (patch)
treec3d5d1aa9aa35bdcc4d1c8eb8c299b383b99fb02
parent6ff9fee77c9ecbd808fa8e615c1e55437cb26ac1 (diff)
v3.6.5v3.6.5
- **UI:** - (Add) Groups to convert menu - (Improvement) Re-arrange convert menu order - (Fix) Settings: Open file dialog filter dropdown width - **PrusaSlicer:** - (Add) AnyCubic Photon D2 - (Add) Creality Halot Ray CL925 - (Add) Elegoo Saturn 8K - (Add) Uniformation GKtwo - (Add) Nova3D Whale3 Pro - (Add) Phrozen Sonic Mighty 8K - (Add) AnyCubic Photon D2 (.dl2p) compatibility to AnyCubic file format - (Fix) Hide "Debug tools" from "Help" menu
-rw-r--r--CHANGELOG.md16
-rw-r--r--PrusaSlicer/printer/AnyCubic Photon D2.ini42
-rw-r--r--PrusaSlicer/printer/Creality Halot Ray CL925.ini42
-rw-r--r--PrusaSlicer/printer/Elegoo Saturn 8K.ini42
-rw-r--r--PrusaSlicer/printer/Nova3D Whale3 Pro.ini42
-rw-r--r--PrusaSlicer/printer/Phrozen Sonic Mighty 8K.ini42
-rw-r--r--PrusaSlicer/printer/Uniformation GKtwo.ini42
-rw-r--r--README.md1
-rw-r--r--RELEASE_NOTES.md25
-rw-r--r--UVtools.Core/FileFormats/CTBEncryptedFile.cs2
-rw-r--r--UVtools.Core/FileFormats/CWSFile.cs2
-rw-r--r--UVtools.Core/FileFormats/CXDLPFile.cs6
-rw-r--r--UVtools.Core/FileFormats/ChituboxFile.cs2
-rw-r--r--UVtools.Core/FileFormats/ChituboxZipFile.cs4
-rw-r--r--UVtools.Core/FileFormats/FDGFile.cs2
-rw-r--r--UVtools.Core/FileFormats/FileFormat.cs23
-rw-r--r--UVtools.Core/FileFormats/GenericZIPFile.cs2
-rw-r--r--UVtools.Core/FileFormats/LGSFile.cs2
-rw-r--r--UVtools.Core/FileFormats/PHZFile.cs2
-rw-r--r--UVtools.Core/FileFormats/PhotonSFile.cs2
-rw-r--r--UVtools.Core/FileFormats/PhotonWorkshopFile.cs14
-rw-r--r--UVtools.Core/FileFormats/SL1File.cs2
-rw-r--r--UVtools.Core/FileFormats/VDAFile.cs2
-rw-r--r--UVtools.Core/FileFormats/VDTFile.cs2
-rw-r--r--UVtools.Core/Printer/Machine.cs8
-rw-r--r--UVtools.Core/SystemOS/SystemAware.cs10
-rw-r--r--UVtools.Core/UVtools.Core.csproj2
-rw-r--r--UVtools.Installer/Code/HeatGeneratedFileList.wxs100
-rw-r--r--UVtools.Installer/Code/Product.wxs2
-rw-r--r--UVtools.WPF/MainWindow.axaml1
-rw-r--r--UVtools.WPF/MainWindow.axaml.cs68
-rw-r--r--UVtools.WPF/UVtools.WPF.csproj2
-rw-r--r--UVtools.WPF/Windows/SettingsWindow.axaml.cs2
-rw-r--r--documentation/UVtools.Core.xml5
34 files changed, 427 insertions, 136 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95198a0..9f9cd31 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,21 @@
# Changelog
+## 18/09/2022 - v3.6.5
+
+- **UI:**
+ - (Add) Groups to convert menu
+ - (Improvement) Re-arrange convert menu order
+ - (Fix) Settings: Open file dialog filter dropdown width
+- **PrusaSlicer:**
+ - (Add) AnyCubic Photon D2
+ - (Add) Creality Halot Ray CL925
+ - (Add) Elegoo Saturn 8K
+ - (Add) Uniformation GKtwo
+ - (Add) Nova3D Whale3 Pro
+ - (Add) Phrozen Sonic Mighty 8K
+- (Add) AnyCubic Photon D2 (.dl2p) compatibility to AnyCubic file format
+- (Fix) Hide "Debug tools" from "Help" menu
+
## 15/09/2022 - v3.6.4
- **Windows MSI installer:**
diff --git a/PrusaSlicer/printer/AnyCubic Photon D2.ini b/PrusaSlicer/printer/AnyCubic Photon D2.ini
new file mode 100644
index 0000000..f7b4355
--- /dev/null
+++ b/PrusaSlicer/printer/AnyCubic Photon D2.ini
@@ -0,0 +1,42 @@
+# generated by PrusaSlicer 2.5.0+win64 on 2022-09-15 at 21:20:12 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,130.56x0,130.56x73.44,0x73.44
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 73.44
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 2560
+display_pixels_y = 1440
+display_width = 130.56
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+high_viscosity_tilt_time = 10
+host_type = octoprint
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 165
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_PHOTON_D2\nFILEFORMAT_DL2P\n\nSTART_CUSTOM_VALUES\nWaitTimeBeforeCure_2.5\nBottomLiftHeight_8\nLiftHeight_8\nBottomLiftSpeed_150\nLiftSpeed_150\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+relative_correction_x = 1
+relative_correction_y = 1
+relative_correction_z = 1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/PrusaSlicer/printer/Creality Halot Ray CL925.ini b/PrusaSlicer/printer/Creality Halot Ray CL925.ini
new file mode 100644
index 0000000..e05342c
--- /dev/null
+++ b/PrusaSlicer/printer/Creality Halot Ray CL925.ini
@@ -0,0 +1,42 @@
+# generated by PrusaSlicer 2.5.0+win64 on 2022-09-15 at 21:05:07 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,198.14x0,198.14x123.84,0x123.84
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 123.84
+display_mirror_x = 0
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 5760
+display_pixels_y = 3600
+display_width = 198.14
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+high_viscosity_tilt_time = 10
+host_type = octoprint
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 210
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_CREALITY\nPRINTER_MODEL_HALOT-RAY_CL925\nFILEFORMAT_CXDLP\n\nSTART_CUSTOM_VALUES\nWaitTimeBeforeCure_2\nBottomLiftHeight_7\nLiftHeight_6\nBottomLiftSpeed_80\nLiftSpeed_80\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+relative_correction_x = 1
+relative_correction_y = 1
+relative_correction_z = 1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/PrusaSlicer/printer/Elegoo Saturn 8K.ini b/PrusaSlicer/printer/Elegoo Saturn 8K.ini
new file mode 100644
index 0000000..c710d16
--- /dev/null
+++ b/PrusaSlicer/printer/Elegoo Saturn 8K.ini
@@ -0,0 +1,42 @@
+# generated by PrusaSlicer 2.5.0+win64 on 2022-09-15 at 21:34:05 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,218.88x0,218.88x123.12,0x123.12
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 123.12
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 7680
+display_pixels_y = 4320
+display_width = 218.88
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+high_viscosity_tilt_time = 10
+host_type = octoprint
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 210
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_ELEGOO\nPRINTER_MODEL_SATURN_8K\nFILEFORMAT_ENCRYPTED.CTB\n\nSTART_CUSTOM_VALUES\nLightOffDelay_0\nBottomLightOffDelay_0\nBottomLiftHeight_7\nLiftHeight_7\nBottomLiftSpeed_70\nLiftSpeed_70\nRetractSpeed_210\nBottomLightPWM_255\nLightPWM_255\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+relative_correction_x = 1
+relative_correction_y = 1
+relative_correction_z = 1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/PrusaSlicer/printer/Nova3D Whale3 Pro.ini b/PrusaSlicer/printer/Nova3D Whale3 Pro.ini
new file mode 100644
index 0000000..9893892
--- /dev/null
+++ b/PrusaSlicer/printer/Nova3D Whale3 Pro.ini
@@ -0,0 +1,42 @@
+# generated by PrusaSlicer 2.5.0+win64 on 2022-09-15 at 21:34:18 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,228.1x0,228.1x128.304,0x128.304
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 128.304
+display_mirror_x = 0
+display_mirror_y = 1
+display_orientation = landscape
+display_pixels_x = 7680
+display_pixels_y = 4320
+display_width = 228.096
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+high_viscosity_tilt_time = 10
+host_type = octoprint
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 260
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_NOVA3D\nPRINTER_MODEL_WHALE3_PRO\nFILEFORMAT_ENCRYPTED.CTB\n\nSTART_CUSTOM_VALUES\nBottomWaitTimeBeforeCure_3\nWaitTimeBeforeCure_2.5\nBottomWaitTimeAfterCure_3\nWaitTimeAfterCure_1\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_120\nLiftSpeed_120\nBottomWaitTimeAfterLift_0\nWaitTimeAfterLift_0\nRetractSpeed_120\nBottomLightPWM_255\nLightPWM_255\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+relative_correction_x = 1
+relative_correction_y = 1
+relative_correction_z = 1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/PrusaSlicer/printer/Phrozen Sonic Mighty 8K.ini b/PrusaSlicer/printer/Phrozen Sonic Mighty 8K.ini
new file mode 100644
index 0000000..b3c8735
--- /dev/null
+++ b/PrusaSlicer/printer/Phrozen Sonic Mighty 8K.ini
@@ -0,0 +1,42 @@
+# generated by PrusaSlicer 2.5.0+win64 on 2022-09-15 at 21:43:32 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,218.88x0,218.88x123.12,0x123.12
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 123.12
+display_mirror_x = 1
+display_mirror_y = 0
+display_orientation = landscape
+display_pixels_x = 7680
+display_pixels_y = 4320
+display_width = 218.88
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+high_viscosity_tilt_time = 10
+host_type = octoprint
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 235
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_PHROZEN\nPRINTER_MODEL_SONIC_MIGHTY_8K\nFILEFORMAT_ENCRYPTED.CTB\n\nSTART_CUSTOM_VALUES\nBottomWaitTimeBeforeCure_3\nWaitTimeBeforeCure_2.5\nBottomWaitTimeAfterCure_3\nWaitTimeAfterCure_1\nBottomLiftHeight_7\nLiftHeight_5\nBottomLiftSpeed_80\nLiftSpeed_80\nBottomWaitTimeAfterLift_0\nWaitTimeAfterLift_0\nRetractSpeed_150\nBottomLightPWM_255\nLightPWM_255\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+relative_correction_x = 1
+relative_correction_y = 1
+relative_correction_z = 1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/PrusaSlicer/printer/Uniformation GKtwo.ini b/PrusaSlicer/printer/Uniformation GKtwo.ini
new file mode 100644
index 0000000..0094afa
--- /dev/null
+++ b/PrusaSlicer/printer/Uniformation GKtwo.ini
@@ -0,0 +1,42 @@
+# generated by PrusaSlicer 2.5.0+win64 on 2022-09-15 at 21:34:29 UTC
+absolute_correction = 0
+area_fill = 50
+bed_custom_model =
+bed_custom_texture =
+bed_shape = 0x0,228.09x0,228.09x128.3,0x128.3
+default_sla_material_profile = Prusa Orange Tough 0.05
+default_sla_print_profile = 0.05 Normal
+display_height = 128.3
+display_mirror_x = 0
+display_mirror_y = 1
+display_orientation = landscape
+display_pixels_x = 7680
+display_pixels_y = 4320
+display_width = 228.089
+elefant_foot_compensation = 0.2
+elefant_foot_min_width = 0.2
+fast_tilt_time = 5
+gamma_correction = 1
+high_viscosity_tilt_time = 10
+host_type = octoprint
+inherits = Original Prusa SL1
+max_exposure_time = 120
+max_initial_exposure_time = 300
+max_print_height = 200
+min_exposure_time = 1
+min_initial_exposure_time = 1
+print_host =
+printer_model = SL1
+printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.\nPRINTER_VENDOR_PRUSA3D\nPRINTER_MODEL_SL1\nPRINTER_VENDOR_UNIFORMATION\nPRINTER_MODEL_GKTWO\nFILEFORMAT_ENCRYPTED.CTB\n\nSTART_CUSTOM_VALUES\nBottomWaitTimeBeforeCure_8\nWaitTimeBeforeCure_1.5\nBottomWaitTimeAfterCure_3\nWaitTimeAfterCure_1\nBottomLiftHeight_5\nLiftHeight_5\nBottomLiftSpeed_80\nLiftSpeed_150\nBottomWaitTimeAfterLift_0\nWaitTimeAfterLift_0\nRetractSpeed_150\nEND_CUSTOM_VALUES
+printer_settings_id =
+printer_technology = SLA
+printer_variant = default
+printer_vendor =
+printhost_apikey =
+printhost_cafile =
+relative_correction = 1,1
+relative_correction_x = 1
+relative_correction_y = 1
+relative_correction_z = 1
+slow_tilt_time = 8
+thumbnails = 400x400,800x480
diff --git a/README.md b/README.md
index c537974..95551fa 100644
--- a/README.md
+++ b/README.md
@@ -82,6 +82,7 @@ But also, i need victims for test subject. Proceed at your own risk!
- PW0 (Photon Workshop)
- PWX (Photon Workshop)
- DLP (Photon Workshop)
+- DL2P (Photon Workshop)
- PWMO (Photon Workshop)
- PWMA (Photon Workshop)
- PWMS (Photon Workshop)
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index fbedafa..e62d09d 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,13 +1,14 @@
-- **Windows MSI installer:**
- - (Add) UVtools folder to start menu with:
- - UVtools
- - UVtoolsCmd
- - Uninstall UVtools
- - (Add) Prompt for add open in UVtools when right-click on supported files
- - (Add) Prompt for create desktop shortcut
- - (Add) Prompt for launch UVtools after the installation
- - (Improvement) Cleanup and simplify the install project
-- (Add) PrusaSlicer printer: Peopoly Phenom Forge
-- (Upgrade) .NET from 6.0.8 to 6.0.9
-- (Fix) Corruption in file after attempt to save to a locked file (#551)
+- **UI:**
+ - (Add) Groups to convert menu
+ - (Improvement) Re-arrange convert menu order
+ - (Fix) Settings: Open file dialog filter dropdown width
+- **PrusaSlicer:**
+ - (Add) AnyCubic Photon D2
+ - (Add) Creality Halot Ray CL925
+ - (Add) Elegoo Saturn 8K
+ - (Add) Uniformation GKtwo
+ - (Add) Nova3D Whale3 Pro
+ - (Add) Phrozen Sonic Mighty 8K
+- (Add) AnyCubic Photon D2 (.dl2p) compatibility to AnyCubic file format
+- (Fix) Hide "Debug tools" from "Help" menu
diff --git a/UVtools.Core/FileFormats/CTBEncryptedFile.cs b/UVtools.Core/FileFormats/CTBEncryptedFile.cs
index 7d14bf2..1c7b462 100644
--- a/UVtools.Core/FileFormats/CTBEncryptedFile.cs
+++ b/UVtools.Core/FileFormats/CTBEncryptedFile.cs
@@ -580,6 +580,8 @@ public class CTBEncryptedFile : FileFormat
#region Properties
public override FileFormatType FileType => FileFormatType.Binary;
+ public override string ConvertMenuGroup => "Chitubox";
+
public override FileExtension[] FileExtensions { get; } = {
new(typeof(CTBEncryptedFile), "ctb", "Chitubox CTB (Encrypted)"),
new(typeof(CTBEncryptedFile), "encrypted.ctb", "Chitubox CTB (Encrypted)", false, false),
diff --git a/UVtools.Core/FileFormats/CWSFile.cs b/UVtools.Core/FileFormats/CWSFile.cs
index 1cf7fc7..0414165 100644
--- a/UVtools.Core/FileFormats/CWSFile.cs
+++ b/UVtools.Core/FileFormats/CWSFile.cs
@@ -311,6 +311,8 @@ public class CWSFile : FileFormat
public PrinterType Printer { get; set; } = PrinterType.Unknown;
+ public override string ConvertMenuGroup => "CWS";
+
public override FileExtension[] FileExtensions { get; } = {
new (typeof(CWSFile), "cws", "NovaMaker CWS"),
new (typeof(CWSFile), "rgb.cws", "NovaMaker Bene4 Mono / Elfin2 Mono SE (CWS)"),
diff --git a/UVtools.Core/FileFormats/CXDLPFile.cs b/UVtools.Core/FileFormats/CXDLPFile.cs
index a8d18ed..a9cf2d5 100644
--- a/UVtools.Core/FileFormats/CXDLPFile.cs
+++ b/UVtools.Core/FileFormats/CXDLPFile.cs
@@ -492,7 +492,7 @@ public class CXDLPFile : FileFormat
get => float.Parse(Encoding.ASCII.GetString(SlicerInfoSettings.DisplayWidthBytes.Where(b => b != 0).ToArray()));
set
{
- string str = Math.Round(value, 2).ToString(CultureInfo.InvariantCulture);
+ var str = Math.Round(value, 2).ToString(CultureInfo.InvariantCulture);
//string str = Math.Round(value, 2).ToString("0.000000");
SlicerInfoSettings.DisplayWidthDataSize = (uint)(str.Length * 2);
var data = new byte[SlicerInfoSettings.DisplayWidthDataSize];
@@ -675,12 +675,12 @@ public class CXDLPFile : FileFormat
{
using var outputFile = new FileStream(TemporaryOutputFileFullPath, FileMode.Create, FileAccess.ReadWrite);
- if (string.IsNullOrWhiteSpace(MachineName) || (!MachineName.StartsWith("CL-") && !MachineName.StartsWith("CT")))
+ if (string.IsNullOrWhiteSpace(MachineName) || (!MachineName.StartsWith("CL") && !MachineName.StartsWith("CT")))
{
bool found = false;
foreach (var machine in Machine.Machines
.Where(machine => machine.Brand == PrinterBrand.Creality
- && (machine.Model.StartsWith("CL-") || machine.Model.StartsWith("CT"))
+ && (machine.Model.StartsWith("CL") || machine.Model.StartsWith("CT"))
))
{
if (ResolutionX == machine.ResolutionX && ResolutionY == machine.ResolutionY)
diff --git a/UVtools.Core/FileFormats/ChituboxFile.cs b/UVtools.Core/FileFormats/ChituboxFile.cs
index bfcfeee..2b0b86c 100644
--- a/UVtools.Core/FileFormats/ChituboxFile.cs
+++ b/UVtools.Core/FileFormats/ChituboxFile.cs
@@ -1067,6 +1067,8 @@ public class ChituboxFile : FileFormat
public override FileFormatType FileType => FileFormatType.Binary;
+ public override string ConvertMenuGroup => "Chitubox";
+
public override FileExtension[] FileExtensions { get; } = {
new(typeof(ChituboxFile), "photon", "Chitubox Photon"),
new(typeof(ChituboxFile), "cbddlp", "Chitubox CBDDLP"),
diff --git a/UVtools.Core/FileFormats/ChituboxZipFile.cs b/UVtools.Core/FileFormats/ChituboxZipFile.cs
index ec53230..847f2ec 100644
--- a/UVtools.Core/FileFormats/ChituboxZipFile.cs
+++ b/UVtools.Core/FileFormats/ChituboxZipFile.cs
@@ -73,10 +73,12 @@ public class ChituboxZipFile : FileFormat
#endregion
#region Properties
- public Header HeaderSettings { get; } = new Header();
+ public Header HeaderSettings { get; } = new();
public override FileFormatType FileType => FileFormatType.Archive;
+ public override string ConvertMenuGroup => "Chitubox";
+
public override FileExtension[] FileExtensions { get; } = {
new(typeof(ChituboxZipFile), "zip", "Chitubox Zip")
};
diff --git a/UVtools.Core/FileFormats/FDGFile.cs b/UVtools.Core/FileFormats/FDGFile.cs
index 0668848..5bc0203 100644
--- a/UVtools.Core/FileFormats/FDGFile.cs
+++ b/UVtools.Core/FileFormats/FDGFile.cs
@@ -628,6 +628,8 @@ public class FDGFile : FileFormat
public override FileFormatType FileType => FileFormatType.Binary;
+ public override string ConvertMenuGroup => "Chitubox";
+
public override FileExtension[] FileExtensions { get; } = {
new(typeof(FDGFile), "fdg", "Voxelab FDG"),
};
diff --git a/UVtools.Core/FileFormats/FileFormat.cs b/UVtools.Core/FileFormats/FileFormat.cs
index bf4fdca..35ce5c8 100644
--- a/UVtools.Core/FileFormats/FileFormat.cs
+++ b/UVtools.Core/FileFormats/FileFormat.cs
@@ -372,24 +372,24 @@ public abstract class FileFormat : BindableBase, IDisposable, IEquatable<FileFor
new CTBEncryptedFile(), // encrypted ctb
new PhotonSFile(), // photons
new PHZFile(), // phz
- new FDGFile(), // fdg
new PhotonWorkshopFile(), // PSW
new CWSFile(), // CWS
- new OSLAFile(), // OSLA
- new JXSFile(), // jxs
+ new LGSFile(), // LGS, LGS30
+ new VDAFile(), // VDA
+ new VDTFile(), // VDT
+ //new CXDLPv1File(), // Creality Box v1
+ new CXDLPFile(), // Creality Box
+ new FDGFile(), // fdg
new ZCodeFile(), // zcode
+ new JXSFile(), // jxs
new ZCodexFile(), // zcodex
new MDLPFile(), // MKS v1
new GR1File(), // GR1 Workshop
- //new CXDLPv1File(), // Creality Box v1
- new CXDLPFile(), // Creality Box
- new LGSFile(), // LGS, LGS30
new FlashForgeSVGXFile(), // SVGX
- new GenericZIPFile(), // Generic zip files
- new VDAFile(), // VDA
- new VDTFile(), // VDT
+ new OSLAFile(), // OSLA
new OSFFile(), // OSF
new UVJFile(), // UVJ
+ new GenericZIPFile(), // Generic zip files
new ImageFile(), // images
};
@@ -1049,6 +1049,11 @@ public abstract class FileFormat : BindableBase, IDisposable, IEquatable<FileFor
public virtual FileImageType LayerImageType => FileType == FileFormatType.Archive ? FileImageType.Png8 : FileImageType.Custom;
/// <summary>
+ /// Gets the group name under convert menu to group all extensions, set to null to not group items
+ /// </summary>
+ public virtual string? ConvertMenuGroup => null;
+
+ /// <summary>
/// Gets the valid file extensions for this <see cref="FileFormat"/>
/// </summary>
public abstract FileExtension[] FileExtensions { get; }
diff --git a/UVtools.Core/FileFormats/GenericZIPFile.cs b/UVtools.Core/FileFormats/GenericZIPFile.cs
index 0c9a956..06dad20 100644
--- a/UVtools.Core/FileFormats/GenericZIPFile.cs
+++ b/UVtools.Core/FileFormats/GenericZIPFile.cs
@@ -67,7 +67,7 @@ public class GenericZIPFile : FileFormat
public override FileFormatType FileType => FileFormatType.Archive;
public override FileExtension[] FileExtensions { get; } = {
- new(typeof(GenericZIPFile), "zip", "Generic / Phrozen Zip")
+ new(typeof(GenericZIPFile), "zip", "Generic Zip / Phrozen Zip")
};
public override uint ResolutionX
diff --git a/UVtools.Core/FileFormats/LGSFile.cs b/UVtools.Core/FileFormats/LGSFile.cs
index cd21fda..9503f85 100644
--- a/UVtools.Core/FileFormats/LGSFile.cs
+++ b/UVtools.Core/FileFormats/LGSFile.cs
@@ -262,6 +262,8 @@ public class LGSFile : FileFormat
public Header HeaderSettings { get; protected internal set; } = new();
public override FileFormatType FileType => FileFormatType.Binary;
+ public override string ConvertMenuGroup => "Longer3D";
+
public override FileExtension[] FileExtensions { get; } = {
new (typeof(LGSFile), "lgs", "Longer Orange 10 (LGS)"),
new (typeof(LGSFile), "lgs30", "Longer Orange 30 (LGS30)"),
diff --git a/UVtools.Core/FileFormats/PHZFile.cs b/UVtools.Core/FileFormats/PHZFile.cs
index 6162604..7058188 100644
--- a/UVtools.Core/FileFormats/PHZFile.cs
+++ b/UVtools.Core/FileFormats/PHZFile.cs
@@ -642,6 +642,8 @@ public class PHZFile : FileFormat
public override FileFormatType FileType => FileFormatType.Binary;
+ public override string ConvertMenuGroup => "Chitubox";
+
public override FileExtension[] FileExtensions { get; } = {
new (typeof(PHZFile), "phz", "Chitubox PHZ"),
};
diff --git a/UVtools.Core/FileFormats/PhotonSFile.cs b/UVtools.Core/FileFormats/PhotonSFile.cs
index 1dbbeab..58491c3 100644
--- a/UVtools.Core/FileFormats/PhotonSFile.cs
+++ b/UVtools.Core/FileFormats/PhotonSFile.cs
@@ -254,6 +254,8 @@ public class PhotonSFile : FileFormat
public LayerHeader LayerSettings { get; protected internal set; } = new();
public override FileFormatType FileType => FileFormatType.Binary;
+ public override string ConvertMenuGroup => "Chitubox";
+
public override FileExtension[] FileExtensions { get; } = {
new(typeof(PhotonSFile), "photons", "Chitubox PhotonS"),
};
diff --git a/UVtools.Core/FileFormats/PhotonWorkshopFile.cs b/UVtools.Core/FileFormats/PhotonWorkshopFile.cs
index 3de216d..688795d 100644
--- a/UVtools.Core/FileFormats/PhotonWorkshopFile.cs
+++ b/UVtools.Core/FileFormats/PhotonWorkshopFile.cs
@@ -86,6 +86,7 @@ public class PhotonWorkshopFile : FileFormat
AnyCubicPhotonZero,
AnyCubicPhotonX,
AnyCubicPhotonUltra,
+ AnyCubicPhotonD2,
AnyCubicPhotonMono,
AnyCubicPhotonMonoSE,
AnyCubicPhotonMono4K,
@@ -1091,12 +1092,15 @@ public class PhotonWorkshopFile : FileFormat
public override FileFormatType FileType => FileFormatType.Binary;
+ public override string ConvertMenuGroup => "Anycubic Photon Workshop";
+
public override FileExtension[] FileExtensions { get; } = {
new(typeof(PhotonWorkshopFile), "pws", "Photon / Photon S (PWS)"),
new(typeof(PhotonWorkshopFile), "pw0", "Photon Zero (PW0)"),
new(typeof(PhotonWorkshopFile), "pwx", "Photon X (PWX)"),
new(typeof(PhotonWorkshopFile), "dlp", "Photon Ultra (DLP)"),
+ new(typeof(PhotonWorkshopFile), "dl2p", "Photon Photon D2 (DL2P)"),
new(typeof(PhotonWorkshopFile), "pwmx", "Photon Mono X (PWMX)"),
new(typeof(PhotonWorkshopFile), "pwmb", "Photon Mono X 6K / Photon M3 Plus (PWMB)"),
new(typeof(PhotonWorkshopFile), "pwmo", "Photon Mono (PWMO)"),
@@ -1217,6 +1221,7 @@ public class PhotonWorkshopFile : FileFormat
AnyCubicMachine.AnyCubicPhotonZero => 55.44f,
AnyCubicMachine.AnyCubicPhotonX => 192,
AnyCubicMachine.AnyCubicPhotonUltra => 102.40f,
+ AnyCubicMachine.AnyCubicPhotonD2 => 130.56f,
AnyCubicMachine.AnyCubicPhotonMono => 82.62f,
AnyCubicMachine.AnyCubicPhotonMonoSE => 82.62f,
AnyCubicMachine.AnyCubicPhotonMono4K => 134.40f,
@@ -1245,6 +1250,7 @@ public class PhotonWorkshopFile : FileFormat
AnyCubicMachine.AnyCubicPhotonZero => 98.637f,
AnyCubicMachine.AnyCubicPhotonX => 120,
AnyCubicMachine.AnyCubicPhotonUltra => 57.60f,
+ AnyCubicMachine.AnyCubicPhotonD2 => 73.44f,
AnyCubicMachine.AnyCubicPhotonMono => 130.56f,
AnyCubicMachine.AnyCubicPhotonMonoSE => 130.56f,
AnyCubicMachine.AnyCubicPhotonMono4K => 84,
@@ -1274,6 +1280,7 @@ public class PhotonWorkshopFile : FileFormat
AnyCubicMachine.AnyCubicPhotonZero => 150,
AnyCubicMachine.AnyCubicPhotonX => 245,
AnyCubicMachine.AnyCubicPhotonUltra => 165,
+ AnyCubicMachine.AnyCubicPhotonD2 => 165,
AnyCubicMachine.AnyCubicPhotonMono => 165,
AnyCubicMachine.AnyCubicPhotonMonoSE => 160,
AnyCubicMachine.AnyCubicPhotonMono4K => 165,
@@ -1570,6 +1577,7 @@ public class PhotonWorkshopFile : FileFormat
AnyCubicMachine.AnyCubicPhotonZero => "Photon Zero",
AnyCubicMachine.AnyCubicPhotonX => "Photon X",
AnyCubicMachine.AnyCubicPhotonUltra => "Photon Ultra",
+ AnyCubicMachine.AnyCubicPhotonD2 => "Photon D2",
AnyCubicMachine.AnyCubicPhotonMono => "Photon Mono",
AnyCubicMachine.AnyCubicPhotonMonoSE => "Photon Mono SE",
AnyCubicMachine.AnyCubicPhotonMono4K => "Photon Mono 4K",
@@ -1616,6 +1624,11 @@ public class PhotonWorkshopFile : FileFormat
return AnyCubicMachine.AnyCubicPhotonUltra;
}
+ if (FileEndsWith(".dl2p"))
+ {
+ return AnyCubicMachine.AnyCubicPhotonD2;
+ }
+
if (FileEndsWith(".pwmo"))
{
return AnyCubicMachine.AnyCubicPhotonMono;
@@ -2058,6 +2071,7 @@ public class PhotonWorkshopFile : FileFormat
AnyCubicMachine.AnyCubicPhotonZero => VERSION_1,
AnyCubicMachine.AnyCubicPhotonX => VERSION_1,
AnyCubicMachine.AnyCubicPhotonUltra => VERSION_515,
+ AnyCubicMachine.AnyCubicPhotonD2 => VERSION_516,
AnyCubicMachine.AnyCubicPhotonMono => VERSION_515,
AnyCubicMachine.AnyCubicPhotonMonoSE => VERSION_515,
AnyCubicMachine.AnyCubicPhotonMono4K => VERSION_516,
diff --git a/UVtools.Core/FileFormats/SL1File.cs b/UVtools.Core/FileFormats/SL1File.cs
index e3e6390..04fe5c2 100644
--- a/UVtools.Core/FileFormats/SL1File.cs
+++ b/UVtools.Core/FileFormats/SL1File.cs
@@ -339,6 +339,8 @@ public class SL1File : FileFormat
public override FileFormatType FileType => FileFormatType.Archive;
+ public override string ConvertMenuGroup => "Prusa";
+
public override FileExtension[] FileExtensions { get; } = {
new(typeof(SL1File), "sl1", "PrusaSlicer SL1"),
new(typeof(SL1File), "sl1s", "PrusaSlicer SL1S Speed")
diff --git a/UVtools.Core/FileFormats/VDAFile.cs b/UVtools.Core/FileFormats/VDAFile.cs
index 3f8e81a..9ef424d 100644
--- a/UVtools.Core/FileFormats/VDAFile.cs
+++ b/UVtools.Core/FileFormats/VDAFile.cs
@@ -153,6 +153,8 @@ public class VDAFile : FileFormat
public override FileFormatType FileType => FileFormatType.Archive;
+ public override string ConvertMenuGroup => "Voxeldance";
+
public override FileExtension[] FileExtensions { get; } = {
new(typeof(VDAFile), "zip", "Voxeldance Additive Zip")
};
diff --git a/UVtools.Core/FileFormats/VDTFile.cs b/UVtools.Core/FileFormats/VDTFile.cs
index f63a821..8f7a4e9 100644
--- a/UVtools.Core/FileFormats/VDTFile.cs
+++ b/UVtools.Core/FileFormats/VDTFile.cs
@@ -197,6 +197,8 @@ public class VDTFile : FileFormat
public override FileFormatType FileType => FileFormatType.Archive;
+ public override string ConvertMenuGroup => "Voxeldance";
+
public override FileExtension[] FileExtensions { get; } = {
new(typeof(VDTFile), "vdt", "Voxeldance Tango (VDT)")
};
diff --git a/UVtools.Core/Printer/Machine.cs b/UVtools.Core/Printer/Machine.cs
index de5a890..e1c191b 100644
--- a/UVtools.Core/Printer/Machine.cs
+++ b/UVtools.Core/Printer/Machine.cs
@@ -194,6 +194,7 @@ namespace UVtools.Core.Printer
new(PrinterBrand.AnyCubic, "AnyCubic Photon Mono", "Photon Mono", 1620, 2560, 82.62f, 130.56f, 165f, FlipDirection.Horizontally),
new(PrinterBrand.AnyCubic, "AnyCubic Photon S", "Photon S", 1440, 2560, 68.04f, 120.96f, 165f, FlipDirection.Horizontally),
new(PrinterBrand.AnyCubic, "AnyCubic Photon Ultra", "Photon Ultra", 1280, 720, 102.4f, 57.6f, 165f, FlipDirection.Horizontally),
+ new(PrinterBrand.AnyCubic, "AnyCubic Photon D2", "Photon D2", 2560, 1440, 130.56f, 73.44f, 165f, FlipDirection.Horizontally),
new(PrinterBrand.AnyCubic, "AnyCubic Photon X", "Photon X", 2560, 1600, 192f, 120f, 245f, FlipDirection.Horizontally),
new(PrinterBrand.AnyCubic, "AnyCubic Photon Zero", "Photon Zero", 480, 854, 55.4f, 98.63f, 150f, FlipDirection.Horizontally),
new(PrinterBrand.AnyCubic, "AnyCubic Photon", "Photon", 1440, 2560, 68.04f, 120.96f, 155f, FlipDirection.Horizontally),
@@ -205,8 +206,9 @@ namespace UVtools.Core.Printer
new(PrinterBrand.Creality, "Creality Halot One CL-60", "CL-60", 1620, 2560, 81f, 128f, 160f, FlipDirection.None),
new(PrinterBrand.Creality, "Creality Halot One Plus CL-79", "CL-79", 4320, 2560, 172.8f, 102.4f, 160f, FlipDirection.None),
new(PrinterBrand.Creality, "Creality Halot One Pro CL-70", "CL-70", 2560, 2400, 130.56f, 122.4f, 160f, FlipDirection.None),
- new(PrinterBrand.Creality, "Creality Halot Sky CL-89", "", 3840, 2400, 192f, 120f, 200f, FlipDirection.None),
+ new(PrinterBrand.Creality, "Creality Halot Sky CL-89", "CL-89", 3840, 2400, 192f, 120f, 200f, FlipDirection.None),
new(PrinterBrand.Creality, "Creality Halot Sky Plus CL-92", "CL-92", 5760, 3600, 198.14f, 123.84f, 210f, FlipDirection.None),
+ new(PrinterBrand.Creality, "Creality Halot Ray CL925", "CL925", 5760, 3600, 198.14f, 123.84f, 210f, FlipDirection.None),
new(PrinterBrand.Creality, "Creality LD-002H", "LD-002H", 1620, 2560, 82.62f, 130.56f, 160f, FlipDirection.Horizontally),
new(PrinterBrand.Creality, "Creality LD-002R", "LD-002R", 1440, 2560, 68.04f, 120.96f, 160f, FlipDirection.Horizontally),
new(PrinterBrand.Creality, "Creality LD-006", "LD-006", 3840, 2400, 192f, 120f, 245f, FlipDirection.Horizontally),
@@ -218,6 +220,7 @@ namespace UVtools.Core.Printer
new(PrinterBrand.Elegoo, "Elegoo Mars C", "Mars C", 1440, 2560, 68.04f, 120.96f, 150f, FlipDirection.Horizontally),
new(PrinterBrand.Elegoo, "Elegoo Mars", "Mars", 1440, 2560, 68.04f, 120.96f, 150f, FlipDirection.Horizontally),
new(PrinterBrand.Elegoo, "Elegoo Saturn", "Saturn", 3840, 2400, 192f, 120f, 200f, FlipDirection.Horizontally),
+ new(PrinterBrand.Elegoo, "Elegoo Saturn 8K", "Saturn 8K", 7680, 4320, 218.88f, 123.12f, 210f, FlipDirection.Horizontally),
new(PrinterBrand.EPAX, "EPAX DX1 PRO", "DX1 PRO", 4098, 2560, 143.43f, 89.6f, 155f, FlipDirection.Horizontally),
new(PrinterBrand.EPAX, "EPAX DX10 Pro 5K", "DX10 Pro 5K", 4920, 2880, 221.4f, 129.6f, 120f, FlipDirection.Horizontally),
@@ -261,6 +264,7 @@ namespace UVtools.Core.Printer
new(PrinterBrand.Nova3D, "Nova3D Elfin3 Mini", "Elfin3 Mini", 1079, 1904, 68f, 120f, 150f, FlipDirection.Vertically),
new(PrinterBrand.Nova3D, "Nova3D Whale", "Whale", 3840, 2400, 192f, 120f, 250f, FlipDirection.Vertically),
new(PrinterBrand.Nova3D, "Nova3D Whale2", "Whale2", 3840, 2400, 192f, 120f, 250f, FlipDirection.Vertically),
+ new(PrinterBrand.Nova3D, "Nova3D Whale3 Pro", "Whale3 Pro", 7680, 4320, 228.096f, 128.304f, 260f, FlipDirection.Vertically),
new(PrinterBrand.Peopoly, "Peopoly Phenom L", "Phenom L", 3840, 2160, 345.6f, 194.4f, 400f, FlipDirection.Horizontally),
new(PrinterBrand.Peopoly, "Peopoly Phenom Noir", "Phenom Noir", 3840, 2160, 293.76f, 165.24f, 400f, FlipDirection.Horizontally),
@@ -277,6 +281,7 @@ namespace UVtools.Core.Printer
new(PrinterBrand.Phrozen, "Phrozen Sonic 4K", "Sonic 4K", 3840, 2160, 134.4f, 75.6f, 200f, FlipDirection.Horizontally),
new(PrinterBrand.Phrozen, "Phrozen Sonic Mega 8K", "Sonic Mega 8K", 7680, 4320, 330.24f, 185.76f, 400f, FlipDirection.Horizontally),
new(PrinterBrand.Phrozen, "Phrozen Sonic Mighty 4K", "Sonic Mighty 4K", 3840, 2400, 199.68f, 124.8f, 220f, FlipDirection.Horizontally),
+ new(PrinterBrand.Phrozen, "Phrozen Sonic Mighty 8K", "Sonic Mighty 8K", 7680, 4320, 218.88f, 123.12f, 235f, FlipDirection.Horizontally),
new(PrinterBrand.Phrozen, "Phrozen Sonic Mini 4K", "Sonic Mini 4K", 3840, 2160, 134.4f, 75.6f, 130f, FlipDirection.Horizontally),
new(PrinterBrand.Phrozen, "Phrozen Sonic Mini 8K", "Sonic Mini 8K", 7500, 3240, 165f, 71.28f, 180f, FlipDirection.Horizontally),
new(PrinterBrand.Phrozen, "Phrozen Sonic Mini", "Sonic Mini", 1080, 1920, 68.04f, 120.96f, 130f, FlipDirection.None),
@@ -289,6 +294,7 @@ namespace UVtools.Core.Printer
new(PrinterBrand.QIDI, "QIDI Shadow6.0 Pro", "Shadow6.0 Pro", 1440, 2560, 74.52f, 132.48f, 150f, FlipDirection.Horizontally),
new(PrinterBrand.Uniformation, "Uniformation GKone", "GKone", 4920, 2880, 221.4f, 129.6f, 245f, FlipDirection.Vertically),
+ new(PrinterBrand.Uniformation, "Uniformation GKtwo", "GKtwo", 7680, 4320, 228.089f, 128.3f, 200f, FlipDirection.Vertically),
new(PrinterBrand.Uniz, "Uniz IBEE", "IBEE", 3840, 2400, 192f, 120f, 220f, FlipDirection.Vertically),
diff --git a/UVtools.Core/SystemOS/SystemAware.cs b/UVtools.Core/SystemOS/SystemAware.cs
index 39f5089..561b8fe 100644
--- a/UVtools.Core/SystemOS/SystemAware.cs
+++ b/UVtools.Core/SystemOS/SystemAware.cs
@@ -165,6 +165,11 @@ public static class SystemAware
return key?.GetValue("ProcessorNameString")?.ToString();
}
+ if (OperatingSystem.IsMacOS())
+ {
+ return GetProcessOutput("sysctl", "-n machdep.cpu.brand_string")?.TrimEnd('\r', '\n');
+ }
+
if (OperatingSystem.IsLinux())
{
if (!File.Exists("/proc/cpuinfo")) return null;
@@ -178,11 +183,6 @@ public static class SystemAware
return match.Groups[1].ToString();
}
-
- if (OperatingSystem.IsMacOS())
- {
- return GetProcessOutput("sysctl", "-n machdep.cpu.brand_string")?.TrimEnd('\r', '\n');
- }
}
catch (Exception e)
{
diff --git a/UVtools.Core/UVtools.Core.csproj b/UVtools.Core/UVtools.Core.csproj
index 9723ae4..bc8270f 100644
--- a/UVtools.Core/UVtools.Core.csproj
+++ b/UVtools.Core/UVtools.Core.csproj
@@ -10,7 +10,7 @@
<RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
<PackageProjectUrl>https://github.com/sn4k3/UVtools</PackageProjectUrl>
<Description>MSLA/DLP, file analysis, calibration, repair, conversion and manipulation</Description>
- <Version>3.6.4</Version>
+ <Version>3.6.5</Version>
<Copyright>Copyright © 2020 PTRTECH</Copyright>
<PackageIcon>UVtools.png</PackageIcon>
<Platforms>AnyCPU;x64</Platforms>
diff --git a/UVtools.Installer/Code/HeatGeneratedFileList.wxs b/UVtools.Installer/Code/HeatGeneratedFileList.wxs
index a1c0dcc..388e753 100644
--- a/UVtools.Installer/Code/HeatGeneratedFileList.wxs
+++ b/UVtools.Installer/Code/HeatGeneratedFileList.wxs
@@ -395,9 +395,6 @@
<Component Id="cmp4CA8A8377EC5F30AF1C8BF2ABE2B916B" Guid="*">
<File Id="filF574BF00EFD9442D9E5911559F8D7CB3" KeyPath="yes" Source="$(var.HarvestPath)\System.Collections.Specialized.dll" />
</Component>
- <Component Id="cmp3B9C9B9385920A10BBA478F4EB3B7ACD" Guid="*">
- <File Id="fil88E781372CFBEE069440964A1F323BF4" KeyPath="yes" Source="$(var.HarvestPath)\System.CommandLine.dll" />
- </Component>
<Component Id="cmp86FA15ED6758AB64222C7B872722AE2A" Guid="*">
<File Id="fil4462620259C842921061439D47904D07" KeyPath="yes" Source="$(var.HarvestPath)\System.ComponentModel.Annotations.dll" />
</Component>
@@ -899,21 +896,6 @@
<Component Id="cmp10FE7896CFCD38A6CD8142CE0A08210B" Guid="*">
<File Id="filE27A63E22148F18A6C0CC29BC2B31930" KeyPath="yes" Source="$(var.HarvestPath)\UVtools.sh" />
</Component>
- <Component Id="cmpA5EF28FE13D2F5A6BF7F313B516C07FF" Guid="*">
- <File Id="fil93951F99F1262E05D49777984D888E67" KeyPath="yes" Source="$(var.HarvestPath)\UVtoolsCmd.deps.json" />
- </Component>
- <Component Id="cmp0689D02B3B151F4009E983276282DEB8" Guid="*">
- <File Id="filA84B1BA77A184C68087EC604EB5B9C1C" KeyPath="yes" Source="$(var.HarvestPath)\UVtoolsCmd.dll" />
- </Component>
- <Component Id="cmp599EF0BF15905A04DD89A2D533A560CE" Guid="*">
- <File Id="fil230DE403941FD431769F78376288092D" KeyPath="yes" Source="$(var.HarvestPath)\UVtoolsCmd.exe" />
- </Component>
- <Component Id="cmp3E7487FC5691D74F45793AEDB7DA0615" Guid="*">
- <File Id="filC909C604D80638D8DF2CD3DFD6ED880F" KeyPath="yes" Source="$(var.HarvestPath)\UVtoolsCmd.pdb" />
- </Component>
- <Component Id="cmp0FE8807B1234A038F2E65D7F13679252" Guid="*">
- <File Id="filF4D8BF038F9BF7DFF32BFC101F0D8C64" KeyPath="yes" Source="$(var.HarvestPath)\UVtoolsCmd.runtimeconfig.json" />
- </Component>
<Component Id="cmp6A53CEABB3F189BA4137E2F343C2BDED" Guid="*">
<File Id="filEB1D097EE95ECA4245C95B68206CCF6B" KeyPath="yes" Source="$(var.HarvestPath)\UVtools_demo_file.sl1" />
</Component>
@@ -929,6 +911,9 @@
<Directory Id="dirA23B699A6BC60FD64219767AB7139367" Name="Assets">
<Directory Id="dir43DDBAA35643E7765C3B672B61DE6533" Name="PrusaSlicer">
<Directory Id="dirF64D7531D7D6E37F3FB175E2D0EC59B6" Name="printer">
+ <Component Id="cmp9BB163BD33703B0B5CEA60CACA3729F9" Guid="*">
+ <File Id="fil1F358DEA4B7CBE3806ECFC6323BB54D1" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\AnyCubic Photon D2.ini" />
+ </Component>
<Component Id="cmpC17977030FCAFB4FE4F86A5DBEE7A2AE" Guid="*">
<File Id="filD36DAAA245BD1AA11673FDFE333325C9" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\AnyCubic Photon M3 Max.ini" />
</Component>
@@ -992,6 +977,9 @@
<Component Id="cmp84D1080FF373B45CCAC5A000B01278F1" Guid="*">
<File Id="filE7F6BB35850D9FDB775AF13A8600FFBC" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Creality Halot One Pro CL-70.ini" />
</Component>
+ <Component Id="cmp3305F6F0F55B8732A28E2DBEEBEA6E03" Guid="*">
+ <File Id="filC8715A03D31675D688FA898667455F11" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Creality Halot Ray CL925.ini" />
+ </Component>
<Component Id="cmp63A7A3ED9C85CA0BBF2C3A1731138562" Guid="*">
<File Id="filDF11619265F98597D00E639CEA5E29A5" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Creality Halot Sky CL-89.ini" />
</Component>
@@ -1025,6 +1013,9 @@
<Component Id="cmp1CE96BD7A34ADC76D869FAA33C43C8F9" Guid="*">
<File Id="filD0BB879B6F8796B97D3B477215BF400B" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Elegoo Mars.ini" />
</Component>
+ <Component Id="cmp281D1362804305C566F0105E67045599" Guid="*">
+ <File Id="filCA714ED8F162F059A65F918B95900278" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Elegoo Saturn 8K.ini" />
+ </Component>
<Component Id="cmpB744B8818C71233B0217F96C9F4BD247" Guid="*">
<File Id="filAB8EDD954B82365CA3E0956E8DF6CFDA" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Elegoo Saturn.ini" />
</Component>
@@ -1142,6 +1133,9 @@
<Component Id="cmpA7D8D77725CFC4CD0D232CF2B7893808" Guid="*">
<File Id="filB6807C46EEB8600F42A7FE170EAF7FED" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Nova3D Whale2.ini" />
</Component>
+ <Component Id="cmp5A4F06809A9DF76B8786F9594B76B503" Guid="*">
+ <File Id="filC988847BE437517A16BEA71913F0ABF6" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Nova3D Whale3 Pro.ini" />
+ </Component>
<Component Id="cmp485BD2BED7E5E10D4C55D78433B00FD5" Guid="*">
<File Id="filB4071F4EC7AD3960060AF39B0CFDD155" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Peopoly Phenom Forge.ini" />
</Component>
@@ -1184,6 +1178,9 @@
<Component Id="cmp62765F6B08AB694E3AAC8AA7848336F7" Guid="*">
<File Id="fil155CA28019DCD9EEA5473354E9CF9F14" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Phrozen Sonic Mighty 4K.ini" />
</Component>
+ <Component Id="cmpC430F22FD307DD331FFD2C6C90B81984" Guid="*">
+ <File Id="filEDDFF216A847E79F7BABE6F3892E3EB1" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Phrozen Sonic Mighty 8K.ini" />
+ </Component>
<Component Id="cmp6E19DD74BE07EC801F6911CFD0EE2DB4" Guid="*">
<File Id="fil20C9DC446A301CF3FDF946EE77BE3639" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Phrozen Sonic Mini 4K.ini" />
</Component>
@@ -1214,6 +1211,9 @@
<Component Id="cmp611309E8DB084F22DABEC724A1D09579" Guid="*">
<File Id="fil3EB35616F56D9D096F49556019B2A109" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Uniformation GKone.ini" />
</Component>
+ <Component Id="cmp349785BA16BE1BC96FC0531A753E8896" Guid="*">
+ <File Id="fil527DACB7C01D8842E81DE8453192A8ED" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Uniformation GKtwo.ini" />
+ </Component>
<Component Id="cmp9F6872E41F10EFB360C028C3E540E02F" Guid="*">
<File Id="fil1B5EBFEF6E7FB1A3AA3FE683B0D343AE" KeyPath="yes" Source="$(var.HarvestPath)\Assets\PrusaSlicer\printer\Uniz IBEE.ini" />
</Component>
@@ -1348,9 +1348,6 @@
<Component Id="cmp37322184723F32E87C32C6657838819B" Guid="*">
<File Id="fil4D20B50559B84222B72C88ECD59231E8" KeyPath="yes" Source="$(var.HarvestPath)\cs\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmpB9BB68262D6F364DB61C2FD54DBEC5C6" Guid="*">
- <File Id="filEE0D5F74D4CD51B10AEEE02C2F12161A" KeyPath="yes" Source="$(var.HarvestPath)\cs\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dir242DC17B8DFC53C13CAF172FC08B730A" Name="de">
<Component Id="cmp85D8AE1A380C35C1F931FDA83B69C206" Guid="*">
@@ -1365,9 +1362,6 @@
<Component Id="cmpF8FBE43A8EA39C78103156EADA7945B6" Guid="*">
<File Id="fil7B754F5D8B3AF0FF84798ECEB66F230E" KeyPath="yes" Source="$(var.HarvestPath)\de\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmp9C9F9A8C48E144F01800F7BE0B23E099" Guid="*">
- <File Id="filD5311452B32D096826D32259CC06C429" KeyPath="yes" Source="$(var.HarvestPath)\de\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dir9AE38F4F5CB5E565E774521E138F44FD" Name="es">
<Component Id="cmpA138D05BA7C9460CAD63D20A63C165EE" Guid="*">
@@ -1382,9 +1376,6 @@
<Component Id="cmp3B1E5DA2C5015F32B4CAC36177A0AD6C" Guid="*">
<File Id="fil82066FEF1F56A4BE328F9A51416BB8CF" KeyPath="yes" Source="$(var.HarvestPath)\es\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmpE16B65E6AF1BF0C046FEF89E6D8AA2D0" Guid="*">
- <File Id="fil45C8D9ACD13BF45C1E1214CE86BB3AF4" KeyPath="yes" Source="$(var.HarvestPath)\es\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dirB55DFDA91FEE7CCCBC65CA7493B75748" Name="fr">
<Component Id="cmp02F007F6E349BF1E45B754BBDA475E79" Guid="*">
@@ -1399,9 +1390,6 @@
<Component Id="cmp0B5CBD1C9582ED64279F4795FCF6FD94" Guid="*">
<File Id="filF1C818BF553CE0B1EC73EDB71B6C4A44" KeyPath="yes" Source="$(var.HarvestPath)\fr\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmpD46F44A1C6353143CAEEA32D23C705D2" Guid="*">
- <File Id="fil7CC5CACB4A01C88FB3527EFFFC7B01C0" KeyPath="yes" Source="$(var.HarvestPath)\fr\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dir45DE18DD71F3E8DD6BE4A0E2B48778C8" Name="it">
<Component Id="cmp102B5DCE898C00C320BA06B659830D47" Guid="*">
@@ -1416,9 +1404,6 @@
<Component Id="cmp3687991C08BE7AEF0C4FA46A5908C16C" Guid="*">
<File Id="fil38D4054D95423E588065E5F96ADDF13E" KeyPath="yes" Source="$(var.HarvestPath)\it\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmp05678FE6EC643214A6A8D23DFA7AE822" Guid="*">
- <File Id="fil46DDA9E5EDB260BE4E8E7CA5CF3A8B0F" KeyPath="yes" Source="$(var.HarvestPath)\it\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dir997B58958EFAE06BB705E870622AB899" Name="ja">
<Component Id="cmp30BCC02AA5E2FFB6E2A18CE70A2036D7" Guid="*">
@@ -1433,9 +1418,6 @@
<Component Id="cmp8F0AFDC4BB2EF3A1B85A68C7C34278A2" Guid="*">
<File Id="fil84C91A88F7718550B6C87B85346ED7CC" KeyPath="yes" Source="$(var.HarvestPath)\ja\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmpC8398AF47E20A91750FDB27E2EA845AC" Guid="*">
- <File Id="fil9615928A77FBA265BD5D69D1D9DB4022" KeyPath="yes" Source="$(var.HarvestPath)\ja\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dirF152986C1E6339E5EF84FD1370841521" Name="ko">
<Component Id="cmpE8F42607C46BFC0A18FABF940AD6FA25" Guid="*">
@@ -1450,9 +1432,6 @@
<Component Id="cmp5E4B200F1A4C5FDBA941BAF5A85D0253" Guid="*">
<File Id="fil55C442AE2ED96907CCC78BA2BDCA17BA" KeyPath="yes" Source="$(var.HarvestPath)\ko\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmpEC42E1B66622887B11916A3BC8B33433" Guid="*">
- <File Id="filCD3BD6B25561E25694B08D153B29EFBE" KeyPath="yes" Source="$(var.HarvestPath)\ko\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dirB6C57608593BDEA87B90E388CF59E0E8" Name="pl">
<Component Id="cmp453447E5E1D259CC610930DA5FCA889C" Guid="*">
@@ -1467,9 +1446,6 @@
<Component Id="cmp094C979D272BA58FE5C8614401B2D2A2" Guid="*">
<File Id="fil6CA57BE7F80EFE1450E7B9C52ABA6D4A" KeyPath="yes" Source="$(var.HarvestPath)\pl\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmp8BBB7575523A411E8D4A3305EA653BDC" Guid="*">
- <File Id="filA670FDDC078C32CB187D51BB0A60BF2B" KeyPath="yes" Source="$(var.HarvestPath)\pl\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dir339F53F3A11C56B053FD1FEC9B438810" Name="pt-BR">
<Component Id="cmpDD32D43AD2385F827B9330031F55CD10" Guid="*">
@@ -1484,9 +1460,6 @@
<Component Id="cmp132B1ECF6D51D06422F1B26490EBC9A1" Guid="*">
<File Id="fil68EA4B6BF7BDB77D2A744F52DDC9381C" KeyPath="yes" Source="$(var.HarvestPath)\pt-BR\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmp4A7E19170CD7F50BA4AECCF1C62DC983" Guid="*">
- <File Id="fil5C04C0B35A0A57FDB5643C5615D3B4EB" KeyPath="yes" Source="$(var.HarvestPath)\pt-BR\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dirE9205C68F964857267FD3312DBFF9A91" Name="ru">
<Component Id="cmpDEC9D2448E75375534A64A2FFFB8ECA4" Guid="*">
@@ -1501,9 +1474,6 @@
<Component Id="cmpABF8AB076AB25BF4F6F5883694AD5666" Guid="*">
<File Id="fil20DBAB512840A8C954468CD79D885C1F" KeyPath="yes" Source="$(var.HarvestPath)\ru\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmp564C80D36F172E4317802E9007BA888A" Guid="*">
- <File Id="filB92D9079553F7B3842DD6DC9CADCE294" KeyPath="yes" Source="$(var.HarvestPath)\ru\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dirE562A4656FE03253EA39D17E8127BA05" Name="tr">
<Component Id="cmpD055CD4BE37AC69A6C3179A8EF50014E" Guid="*">
@@ -1518,9 +1488,6 @@
<Component Id="cmp8149269E4085AD11DCE2CEB24D0B5146" Guid="*">
<File Id="fil3DF355F8336F9F39F805899775DE103D" KeyPath="yes" Source="$(var.HarvestPath)\tr\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmp751198041C5687C4EC51BBF3F1DFD15B" Guid="*">
- <File Id="fil5CAAF4FE2EB27D38B0562D3D9C41C3EA" KeyPath="yes" Source="$(var.HarvestPath)\tr\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dir4A8DD77DBC79775EC39CACBC8AA06107" Name="zh-Hans">
<Component Id="cmpE74E1BFCBF5DAF24230ADED9F41CA273" Guid="*">
@@ -1535,9 +1502,6 @@
<Component Id="cmp8A90A0DA436254684AFD659A0EC91C6F" Guid="*">
<File Id="fil34568C9B0A854E7A3F600616A38EBE44" KeyPath="yes" Source="$(var.HarvestPath)\zh-Hans\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmpCA421AD9C018D39263D035C87777C6DD" Guid="*">
- <File Id="fil1CEBED6A1CA0BF9A3062BC30EF913619" KeyPath="yes" Source="$(var.HarvestPath)\zh-Hans\System.CommandLine.resources.dll" />
- </Component>
</Directory>
<Directory Id="dir083BC4C92455CD933FA93376E7459C85" Name="zh-Hant">
<Component Id="cmp572927903A3BC09BE84571AB3FCED87B" Guid="*">
@@ -1552,9 +1516,6 @@
<Component Id="cmp8007C403B2B0EE0CC6585944312D705B" Guid="*">
<File Id="filB8835712DC63B7023A140F1026EE7FAE" KeyPath="yes" Source="$(var.HarvestPath)\zh-Hant\Microsoft.CodeAnalysis.Scripting.resources.dll" />
</Component>
- <Component Id="cmp7D94C646F68C1D38D6249B8EF959C559" Guid="*">
- <File Id="fil6A5ACD3A20F080FD657B7596B83D8F5C" KeyPath="yes" Source="$(var.HarvestPath)\zh-Hant\System.CommandLine.resources.dll" />
- </Component>
</Directory>
</DirectoryRef>
</Fragment>
@@ -1691,7 +1652,6 @@
<ComponentRef Id="cmp969F6EDF2594F3809D7A716387BF8894" />
<ComponentRef Id="cmp1340CAF41213E899D78462CF580BF2AD" />
<ComponentRef Id="cmp4CA8A8377EC5F30AF1C8BF2ABE2B916B" />
- <ComponentRef Id="cmp3B9C9B9385920A10BBA478F4EB3B7ACD" />
<ComponentRef Id="cmp86FA15ED6758AB64222C7B872722AE2A" />
<ComponentRef Id="cmp9556FA278AFE7EC69B499286701C47DD" />
<ComponentRef Id="cmp912EE5CA7F0C138422055A3D0C240C38" />
@@ -1859,15 +1819,11 @@
<ComponentRef Id="cmpAB7F561FED8AF0E04BD19C1A49D60088" />
<ComponentRef Id="cmp4A9972573F3D42E417332BD1AB8B12DF" />
<ComponentRef Id="cmp10FE7896CFCD38A6CD8142CE0A08210B" />
- <ComponentRef Id="cmpA5EF28FE13D2F5A6BF7F313B516C07FF" />
- <ComponentRef Id="cmp0689D02B3B151F4009E983276282DEB8" />
- <ComponentRef Id="cmp599EF0BF15905A04DD89A2D533A560CE" />
- <ComponentRef Id="cmp3E7487FC5691D74F45793AEDB7DA0615" />
- <ComponentRef Id="cmp0FE8807B1234A038F2E65D7F13679252" />
<ComponentRef Id="cmp6A53CEABB3F189BA4137E2F343C2BDED" />
<ComponentRef Id="cmpF4BDAE8A068B7352141D703E6D5E677B" />
<ComponentRef Id="cmpC45B25996E14AF1484591C266BD5D670" />
<ComponentRef Id="cmpDAA3391D8641EF11234B08CC2E598C87" />
+ <ComponentRef Id="cmp9BB163BD33703B0B5CEA60CACA3729F9" />
<ComponentRef Id="cmpC17977030FCAFB4FE4F86A5DBEE7A2AE" />
<ComponentRef Id="cmp8925749970AA313A0C710071B3BAB333" />
<ComponentRef Id="cmp2984D4E333B3A49F2364113C5D15A2B3" />
@@ -1889,6 +1845,7 @@
<ComponentRef Id="cmp5E470345B4C9EC1E994A2C9398AC4EEF" />
<ComponentRef Id="cmpD825B7459576302AEC4CA4379B4CCFD3" />
<ComponentRef Id="cmp84D1080FF373B45CCAC5A000B01278F1" />
+ <ComponentRef Id="cmp3305F6F0F55B8732A28E2DBEEBEA6E03" />
<ComponentRef Id="cmp63A7A3ED9C85CA0BBF2C3A1731138562" />
<ComponentRef Id="cmp34689EFAEA16716861B3091EFCEFC159" />
<ComponentRef Id="cmp6CB3E9FC5C9E9EC0DEE2ECF52747134D" />
@@ -1900,6 +1857,7 @@
<ComponentRef Id="cmp334FC6F96727E76A445CF33F79C5B924" />
<ComponentRef Id="cmp6E755F014B53DE8D1393C0EFF3903CEB" />
<ComponentRef Id="cmp1CE96BD7A34ADC76D869FAA33C43C8F9" />
+ <ComponentRef Id="cmp281D1362804305C566F0105E67045599" />
<ComponentRef Id="cmpB744B8818C71233B0217F96C9F4BD247" />
<ComponentRef Id="cmp3DBFA7C93945FC1D4172C4DFE5EB0F72" />
<ComponentRef Id="cmpD7DAD18A9BD811DEEE642E3858BE3B4F" />
@@ -1939,6 +1897,7 @@
<ComponentRef Id="cmpB98CEE9A048421D2EB463A32274D4EA9" />
<ComponentRef Id="cmp757BD9F9BB8D5F637DECF5025C80F946" />
<ComponentRef Id="cmpA7D8D77725CFC4CD0D232CF2B7893808" />
+ <ComponentRef Id="cmp5A4F06809A9DF76B8786F9594B76B503" />
<ComponentRef Id="cmp485BD2BED7E5E10D4C55D78433B00FD5" />
<ComponentRef Id="cmp34F3A0B8AF8C7B72D078224E10CE220C" />
<ComponentRef Id="cmpD8729DA2ED13E7BB47C049FE62A3FAA8" />
@@ -1953,6 +1912,7 @@
<ComponentRef Id="cmpAB3EDC6C0E082873C1B2DF21AE5B1519" />
<ComponentRef Id="cmp64D5F60404F575DF11486B21D611A869" />
<ComponentRef Id="cmp62765F6B08AB694E3AAC8AA7848336F7" />
+ <ComponentRef Id="cmpC430F22FD307DD331FFD2C6C90B81984" />
<ComponentRef Id="cmp6E19DD74BE07EC801F6911CFD0EE2DB4" />
<ComponentRef Id="cmpA7B6308F63086711FCDBBD75A0FD2583" />
<ComponentRef Id="cmp05F1E74AEE172AADBE89FD3A45EE45D1" />
@@ -1963,6 +1923,7 @@
<ComponentRef Id="cmp5E7F87B7AC98D09CB9045D5993BB28D3" />
<ComponentRef Id="cmp7778D227374EB7F600A97332D1D6A45B" />
<ComponentRef Id="cmp611309E8DB084F22DABEC724A1D09579" />
+ <ComponentRef Id="cmp349785BA16BE1BC96FC0531A753E8896" />
<ComponentRef Id="cmp9F6872E41F10EFB360C028C3E540E02F" />
<ComponentRef Id="cmp6ABBC7705A2469FF9059CF75A7EC20B7" />
<ComponentRef Id="cmp4E6FE2176F0460D349008DACFB98DA6A" />
@@ -2005,67 +1966,54 @@
<ComponentRef Id="cmpDC3B50B369901B069599D5A9DCFC4737" />
<ComponentRef Id="cmp567E1D848FA3F3C2D261218B840CB447" />
<ComponentRef Id="cmp37322184723F32E87C32C6657838819B" />
- <ComponentRef Id="cmpB9BB68262D6F364DB61C2FD54DBEC5C6" />
<ComponentRef Id="cmp85D8AE1A380C35C1F931FDA83B69C206" />
<ComponentRef Id="cmp7EE71344283EBFAF4E0B746B0C65460D" />
<ComponentRef Id="cmp9D0FF61921F53533FB2FB9D10155662D" />
<ComponentRef Id="cmpF8FBE43A8EA39C78103156EADA7945B6" />
- <ComponentRef Id="cmp9C9F9A8C48E144F01800F7BE0B23E099" />
<ComponentRef Id="cmpA138D05BA7C9460CAD63D20A63C165EE" />
<ComponentRef Id="cmp6CD45E7EFE2DC965DC04D55F2262EDD9" />
<ComponentRef Id="cmp64EADCD00A83038F25D1F27C60A7FF51" />
<ComponentRef Id="cmp3B1E5DA2C5015F32B4CAC36177A0AD6C" />
- <ComponentRef Id="cmpE16B65E6AF1BF0C046FEF89E6D8AA2D0" />
<ComponentRef Id="cmp02F007F6E349BF1E45B754BBDA475E79" />
<ComponentRef Id="cmp5203EBBB6981B5C92881E467FD5FD638" />
<ComponentRef Id="cmp3E836866A5CFF75D04105DFA16D35F67" />
<ComponentRef Id="cmp0B5CBD1C9582ED64279F4795FCF6FD94" />
- <ComponentRef Id="cmpD46F44A1C6353143CAEEA32D23C705D2" />
<ComponentRef Id="cmp102B5DCE898C00C320BA06B659830D47" />
<ComponentRef Id="cmp26778E79E71D7454DDDF91E4904BCE79" />
<ComponentRef Id="cmp6780D332346713440CC057DAEC4B0FD3" />
<ComponentRef Id="cmp3687991C08BE7AEF0C4FA46A5908C16C" />
- <ComponentRef Id="cmp05678FE6EC643214A6A8D23DFA7AE822" />
<ComponentRef Id="cmp30BCC02AA5E2FFB6E2A18CE70A2036D7" />
<ComponentRef Id="cmpF90137E538BE414F02361C37D4F14E49" />
<ComponentRef Id="cmp2B73574A3CA3F07C3746A122ED4F122C" />
<ComponentRef Id="cmp8F0AFDC4BB2EF3A1B85A68C7C34278A2" />
- <ComponentRef Id="cmpC8398AF47E20A91750FDB27E2EA845AC" />
<ComponentRef Id="cmpE8F42607C46BFC0A18FABF940AD6FA25" />
<ComponentRef Id="cmp07496961364F2B1E6C5512132AEB868D" />
<ComponentRef Id="cmp61FFF7DB5F7D94DDB645987CAD6018D7" />
<ComponentRef Id="cmp5E4B200F1A4C5FDBA941BAF5A85D0253" />
- <ComponentRef Id="cmpEC42E1B66622887B11916A3BC8B33433" />
<ComponentRef Id="cmp453447E5E1D259CC610930DA5FCA889C" />
<ComponentRef Id="cmp62A7E69BEE769697BB17AB809D093C8A" />
<ComponentRef Id="cmpBD442C3313944AF0F84FA2455FFE0F72" />
<ComponentRef Id="cmp094C979D272BA58FE5C8614401B2D2A2" />
- <ComponentRef Id="cmp8BBB7575523A411E8D4A3305EA653BDC" />
<ComponentRef Id="cmpDD32D43AD2385F827B9330031F55CD10" />
<ComponentRef Id="cmp10102F81CF5631F7A3EBBCA8F8DA3A8C" />
<ComponentRef Id="cmpF7DB1AFA92F263C99DF8FCE16B9DAA60" />
<ComponentRef Id="cmp132B1ECF6D51D06422F1B26490EBC9A1" />
- <ComponentRef Id="cmp4A7E19170CD7F50BA4AECCF1C62DC983" />
<ComponentRef Id="cmpDEC9D2448E75375534A64A2FFFB8ECA4" />
<ComponentRef Id="cmpFBF3162909E9534BDBD81F0FD83517DF" />
<ComponentRef Id="cmp5845F1E73436266617221056BBF0D320" />
<ComponentRef Id="cmpABF8AB076AB25BF4F6F5883694AD5666" />
- <ComponentRef Id="cmp564C80D36F172E4317802E9007BA888A" />
<ComponentRef Id="cmpD055CD4BE37AC69A6C3179A8EF50014E" />
<ComponentRef Id="cmpA3FC5EE89233A8B0F40E39C5D1C7DEAF" />
<ComponentRef Id="cmp893EB9C0C959C8AACD7BC975D074C94C" />
<ComponentRef Id="cmp8149269E4085AD11DCE2CEB24D0B5146" />
- <ComponentRef Id="cmp751198041C5687C4EC51BBF3F1DFD15B" />
<ComponentRef Id="cmpE74E1BFCBF5DAF24230ADED9F41CA273" />
<ComponentRef Id="cmp4B689609F084DFD0F056DEBB8870BFDD" />
<ComponentRef Id="cmp337184108B965333B018985B74BF5CF7" />
<ComponentRef Id="cmp8A90A0DA436254684AFD659A0EC91C6F" />
- <ComponentRef Id="cmpCA421AD9C018D39263D035C87777C6DD" />
<ComponentRef Id="cmp572927903A3BC09BE84571AB3FCED87B" />
<ComponentRef Id="cmp7148BCB5F758CEDE2ACBB0DE4FCAE477" />
<ComponentRef Id="cmp1D928052D0F5AFF2C2D503668E55EDC3" />
<ComponentRef Id="cmp8007C403B2B0EE0CC6585944312D705B" />
- <ComponentRef Id="cmp7D94C646F68C1D38D6249B8EF959C559" />
</ComponentGroup>
</Fragment>
</Wix> \ No newline at end of file
diff --git a/UVtools.Installer/Code/Product.wxs b/UVtools.Installer/Code/Product.wxs
index d15bf32..a96aae2 100644
--- a/UVtools.Installer/Code/Product.wxs
+++ b/UVtools.Installer/Code/Product.wxs
@@ -120,7 +120,7 @@
<RegistryValue Value="Open with [ProductName]" Type="string" />
<RegistryValue Name="Icon" Value="[INSTALLFOLDER][ProductName].exe" Type="string" />
<RegistryValue Name="Position" Value="Top" Type="string" />
- <RegistryValue Name="AppliesTo" Value="System.FileName:&quot;*.sl1&quot; OR System.FileName:&quot;*.sl1s&quot; OR System.FileName:&quot;*.zip&quot; OR System.FileName:&quot;*.photon&quot; OR System.FileName:&quot;*.cbddlp&quot; OR System.FileName:&quot;*.ctb&quot; OR System.FileName:&quot;*.photons&quot; OR System.FileName:&quot;*.phz&quot; OR System.FileName:&quot;*.fdg&quot; OR System.FileName:&quot;*.pws&quot; OR System.FileName:&quot;*.pw0&quot; OR System.FileName:&quot;*.pwx&quot; OR System.FileName:&quot;*.dlp&quot; OR System.FileName:&quot;*.pwmx&quot; OR System.FileName:&quot;*.pwmb&quot; OR System.FileName:&quot;*.pwmo&quot; OR System.FileName:&quot;*.pwms&quot; OR System.FileName:&quot;*.pwma&quot; OR System.FileName:&quot;*.pmsq&quot; OR System.FileName:&quot;*.pm3&quot; OR System.FileName:&quot;*.pm3m&quot; OR System.FileName:&quot;*.cws&quot; OR System.FileName:&quot;*.osla&quot; OR System.FileName:&quot;*.jxs&quot; OR System.FileName:&quot;*.zcode&quot; OR System.FileName:&quot;*.zcodex&quot; OR System.FileName:&quot;*.mdlp&quot; OR System.FileName:&quot;*.gr1&quot; OR System.FileName:&quot;*.cxdlp&quot; OR System.FileName:&quot;*.lgs&quot; OR System.FileName:&quot;*.lgs30&quot; OR System.FileName:&quot;*.lgs120&quot; OR System.FileName:&quot;*.lgs4k&quot; OR System.FileName:&quot;*.svgx&quot; OR System.FileName:&quot;*.vdt&quot; OR System.FileName:&quot;*.osf&quot; OR System.FileName:&quot;*.uvj&quot; OR System.FileName:&quot;*.png&quot; OR System.FileName:&quot;*.jpg&quot; OR System.FileName:&quot;*.jpeg&quot; OR System.FileName:&quot;*.jp2&quot; OR System.FileName:&quot;*.tif&quot; OR System.FileName:&quot;*.tiff&quot; OR System.FileName:&quot;*.bmp&quot; OR System.FileName:&quot;*.pbm&quot; OR System.FileName:&quot;*.pgm&quot; OR System.FileName:&quot;*.sr&quot; OR System.FileName:&quot;*.ras&quot;" Type="string" />
+ <RegistryValue Name="AppliesTo" Value="System.FileName:&quot;*.sl1&quot; OR System.FileName:&quot;*.sl1s&quot; OR System.FileName:&quot;*.zip&quot; OR System.FileName:&quot;*.photon&quot; OR System.FileName:&quot;*.cbddlp&quot; OR System.FileName:&quot;*.ctb&quot; OR System.FileName:&quot;*.photons&quot; OR System.FileName:&quot;*.phz&quot; OR System.FileName:&quot;*.pws&quot; OR System.FileName:&quot;*.pw0&quot; OR System.FileName:&quot;*.pwx&quot; OR System.FileName:&quot;*.dlp&quot; OR System.FileName:&quot;*.dl2p&quot; OR System.FileName:&quot;*.pwmx&quot; OR System.FileName:&quot;*.pwmb&quot; OR System.FileName:&quot;*.pwmo&quot; OR System.FileName:&quot;*.pwms&quot; OR System.FileName:&quot;*.pwma&quot; OR System.FileName:&quot;*.pmsq&quot; OR System.FileName:&quot;*.pm3&quot; OR System.FileName:&quot;*.pm3m&quot; OR System.FileName:&quot;*.cws&quot; OR System.FileName:&quot;*.lgs&quot; OR System.FileName:&quot;*.lgs30&quot; OR System.FileName:&quot;*.lgs120&quot; OR System.FileName:&quot;*.lgs4k&quot; OR System.FileName:&quot;*.vdt&quot; OR System.FileName:&quot;*.cxdlp&quot; OR System.FileName:&quot;*.fdg&quot; OR System.FileName:&quot;*.zcode&quot; OR System.FileName:&quot;*.jxs&quot; OR System.FileName:&quot;*.zcodex&quot; OR System.FileName:&quot;*.mdlp&quot; OR System.FileName:&quot;*.gr1&quot; OR System.FileName:&quot;*.svgx&quot; OR System.FileName:&quot;*.osla&quot; OR System.FileName:&quot;*.osf&quot; OR System.FileName:&quot;*.uvj&quot; OR System.FileName:&quot;*.png&quot; OR System.FileName:&quot;*.jpg&quot; OR System.FileName:&quot;*.jpeg&quot; OR System.FileName:&quot;*.jp2&quot; OR System.FileName:&quot;*.tif&quot; OR System.FileName:&quot;*.tiff&quot; OR System.FileName:&quot;*.bmp&quot; OR System.FileName:&quot;*.pbm&quot; OR System.FileName:&quot;*.pgm&quot; OR System.FileName:&quot;*.sr&quot; OR System.FileName:&quot;*.ras&quot;" Type="string" />
<RegistryKey Key="command" ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes">
<RegistryValue Value="&quot;[INSTALLFOLDER][ProductName].exe&quot; &quot;%1&quot;" Type="string" />
diff --git a/UVtools.WPF/MainWindow.axaml b/UVtools.WPF/MainWindow.axaml
index 9d8ef54..8a08362 100644
--- a/UVtools.WPF/MainWindow.axaml
+++ b/UVtools.WPF/MainWindow.axaml
@@ -233,6 +233,7 @@
<Separator IsVisible="{Binding IsDebug}"/>
<MenuItem Header="_Debug tools"
+ IsVisible="{Binding IsDebug}"
i:MenuItem.Icon="fa-solid fa-bug-slash">
<MenuItem Header="Throw exception"
diff --git a/UVtools.WPF/MainWindow.axaml.cs b/UVtools.WPF/MainWindow.axaml.cs
index 9c6588e..50daf79 100644
--- a/UVtools.WPF/MainWindow.axaml.cs
+++ b/UVtools.WPF/MainWindow.axaml.cs
@@ -128,9 +128,9 @@ public partial class MainWindow : WindowEx
private uint _savesCount;
private bool _canSave;
private readonly MenuItem _menuFileSendTo;
- private MenuItem[] _menuFileOpenRecentItems;
- private MenuItem[] _menuFileSendToItems;
- private MenuItem[] _menuFileConvertItems;
+ private IEnumerable<MenuItem> _menuFileOpenRecentItems;
+ private IEnumerable<MenuItem> _menuFileSendToItems;
+ private IEnumerable<MenuItem> _menuFileConvertItems;
private PointerEventArgs _globalPointerEventArgs;
private PointerPoint _globalPointerPoint;
@@ -229,19 +229,19 @@ public partial class MainWindow : WindowEx
set => RaiseAndSetIfChanged(ref _canSave, value);
}
- public MenuItem[] MenuFileOpenRecentItems
+ public IEnumerable<MenuItem> MenuFileOpenRecentItems
{
get => _menuFileOpenRecentItems;
set => RaiseAndSetIfChanged(ref _menuFileOpenRecentItems, value);
}
- public MenuItem[] MenuFileSendToItems
+ public IEnumerable<MenuItem> MenuFileSendToItems
{
get => _menuFileSendToItems;
set => RaiseAndSetIfChanged(ref _menuFileSendToItems, value);
}
- public MenuItem[] MenuFileConvertItems
+ public IEnumerable<MenuItem> MenuFileConvertItems
{
get => _menuFileConvertItems;
set => RaiseAndSetIfChanged(ref _menuFileConvertItems, value);
@@ -454,7 +454,7 @@ public partial class MainWindow : WindowEx
}
- MenuFileSendToItems = menuItems.ToArray();
+ MenuFileSendToItems = menuItems;
_menuFileSendTo.IsVisible = _menuFileSendTo.IsEnabled = menuItems.Count > 0;
};
}
@@ -1061,9 +1061,9 @@ public partial class MainWindow : WindowEx
ClearROIAndMask();
if(!Settings.Tools.LastUsedSettingsKeepOnCloseFile) OperationSessionManager.Instance.Clear();
- if(_menuFileOpenRecentItems.Length > 0)
+ if(_menuFileOpenRecentItems.Any())
{
- _menuFileOpenRecentItems[0].IsEnabled = true; // Re-enable last file
+ _menuFileOpenRecentItems.First().IsEnabled = true; // Re-enable last file
}
ResetDataContext();
@@ -1560,9 +1560,36 @@ public partial class MainWindow : WindowEx
if (SlicerFile is not ImageFile && SlicerFile.DecodeType == FileFormat.FileDecodeType.Full)
{
List<MenuItem> menuItems = new();
+
+ var convertMenu = new Dictionary<string, List<MenuItem>>();
+
foreach (var fileFormat in FileFormat.AvailableFormats)
{
if(fileFormat is ImageFile) continue;
+
+ List<MenuItem> parentMenu;
+ if (string.IsNullOrWhiteSpace(fileFormat.ConvertMenuGroup))
+ {
+ parentMenu = menuItems;
+ }
+ else
+ {
+ if (!convertMenu.TryGetValue(fileFormat.ConvertMenuGroup, out parentMenu))
+ {
+ parentMenu = new List<MenuItem>();
+
+ var subMenuItem = new MenuItem
+ {
+ Header = fileFormat.ConvertMenuGroup,
+ Tag = fileFormat.ConvertMenuGroup,
+ };
+ menuItems.Add(subMenuItem);
+
+ convertMenu.TryAdd(fileFormat.ConvertMenuGroup, parentMenu);
+ }
+ }
+
+
foreach (var fileExtension in fileFormat.FileExtensions)
{
if(!fileExtension.IsVisibleOnConvertMenu) continue;
@@ -1575,24 +1602,17 @@ public partial class MainWindow : WindowEx
menuItem.Tapped += ConvertToOnTapped;
- menuItems.Add(menuItem);
+ parentMenu.Add(menuItem);
}
- /*string extensions = fileFormat.FileExtensions.Length > 0
- ? $" ({fileFormat.GetFileExtensions()})"
- : string.Empty;
-
- var menuItem = new MenuItem
- {
- Header = fileFormat.GetType().Name.Replace("File", extensions),
- Tag = fileFormat
- };
-
- menuItem.Tapped += ConvertToOnTapped;
+ }
- menuItems.Add(menuItem);*/
+ foreach (var menuItem in menuItems)
+ {
+ if (menuItem.Tag is not string group) continue;
+ menuItem.Items = convertMenu[group];
}
- MenuFileConvertItems = menuItems.ToArray();
+ MenuFileConvertItems = menuItems;
}
foreach (var menuItem in new[] { MenuTools, MenuCalibration, LayerActionsMenu })
@@ -2215,7 +2235,7 @@ public partial class MainWindow : WindowEx
item.Click += MenuFileOpenRecentItemOnClick;
}
- MenuFileOpenRecentItems = items.ToArray();
+ MenuFileOpenRecentItems = items;
}
private void RemoveRecentFile(string file)
diff --git a/UVtools.WPF/UVtools.WPF.csproj b/UVtools.WPF/UVtools.WPF.csproj
index b01e5f0..0f48620 100644
--- a/UVtools.WPF/UVtools.WPF.csproj
+++ b/UVtools.WPF/UVtools.WPF.csproj
@@ -12,7 +12,7 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<RepositoryUrl>https://github.com/sn4k3/UVtools</RepositoryUrl>
<RepositoryType>Git</RepositoryType>
- <Version>3.6.4</Version>
+ <Version>3.6.5</Version>
<Platforms>AnyCPU;x64</Platforms>
<PackageIcon>UVtools.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
diff --git a/UVtools.WPF/Windows/SettingsWindow.axaml.cs b/UVtools.WPF/Windows/SettingsWindow.axaml.cs
index 7aadc2f..e39e938 100644
--- a/UVtools.WPF/Windows/SettingsWindow.axaml.cs
+++ b/UVtools.WPF/Windows/SettingsWindow.axaml.cs
@@ -67,7 +67,7 @@ public class SettingsWindow : WindowEx
var fileFormats = new List<string>
{
- FileFormat.AllSlicerFiles.Replace("*", string.Empty)
+ "All slicer files"
};
fileFormats.AddRange(from format in FileFormat.AvailableFormats from extension in format.FileExtensions where extension.IsVisibleOnFileFilters select $"{extension.Description} (.{extension.Extension})");
FileOpenDialogFilters = fileFormats.ToArray();
diff --git a/documentation/UVtools.Core.xml b/documentation/UVtools.Core.xml
index c9e5725..fe8181e 100644
--- a/documentation/UVtools.Core.xml
+++ b/documentation/UVtools.Core.xml
@@ -2147,6 +2147,11 @@
Gets the layer image data type used on this file format
</summary>
</member>
+ <member name="P:UVtools.Core.FileFormats.FileFormat.ConvertMenuGroup">
+ <summary>
+ Gets the group name under convert menu to group all extensions, set to null to not group items
+ </summary>
+ </member>
<member name="P:UVtools.Core.FileFormats.FileFormat.FileExtensions">
<summary>
Gets the valid file extensions for this <see cref="T:UVtools.Core.FileFormats.FileFormat"/>