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:
Diffstat (limited to 'UVtools.GUI/Forms/FrmInstallPEProfiles.cs')
-rw-r--r--UVtools.GUI/Forms/FrmInstallPEProfiles.cs170
1 files changed, 170 insertions, 0 deletions
diff --git a/UVtools.GUI/Forms/FrmInstallPEProfiles.cs b/UVtools.GUI/Forms/FrmInstallPEProfiles.cs
new file mode 100644
index 0000000..5548cfb
--- /dev/null
+++ b/UVtools.GUI/Forms/FrmInstallPEProfiles.cs
@@ -0,0 +1,170 @@
+/*
+ * GNU AFFERO GENERAL PUBLIC LICENSE
+ * Version 3, 19 November 2007
+ * Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ * Everyone is permitted to copy and distribute verbatim copies
+ * of this license document, but changing it is not allowed.
+ */
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.IO;
+using System.Text;
+using System.Windows.Forms;
+using SixLabors.ImageSharp.Formats.Tga;
+
+namespace UVtools.GUI.Forms
+{
+ public partial class FrmInstallPEProfiles : Form
+ {
+ private PEProfileFolder[] Profiles { get; }
+ public FrmInstallPEProfiles()
+ {
+ InitializeComponent();
+
+ Profiles = new[]
+ {
+ new PEProfileFolder(PEProfileFolder.FolderType.Print, lvPrintProfiles, lbPrintProfilesCount),
+ new PEProfileFolder(PEProfileFolder.FolderType.Printer, lvPrinterProfiles, lbPrinterProfilesCount)
+ };
+
+ Init();
+ }
+
+ private void Init()
+ {
+ foreach (var profile in Profiles)
+ {
+ DirectoryInfo di = new DirectoryInfo(profile.SourcePath);
+ var files = di.GetFiles("*.ini");
+
+ byte installedCount = 0;
+ byte updateCount = 0;
+
+ profile.ListView.BeginUpdate();
+ profile.ListView.Items.Clear();
+ foreach (var fileInfo in files)
+ {
+ ListViewItem item = new ListViewItem
+ {
+ Text = Path.GetFileNameWithoutExtension(fileInfo.Name),
+ Tag = fileInfo
+ };
+
+ var targetFile = $"{profile.TargetPath}{Path.DirectorySeparatorChar}{fileInfo.Name}";
+ FileInfo targetFileInfo = new FileInfo(targetFile);
+ if (targetFileInfo.Exists)
+ {
+ installedCount++;
+ if (targetFileInfo.Length != fileInfo.Length || targetFileInfo.LastWriteTime != fileInfo.LastWriteTime)
+ {
+ item.ForeColor = Color.Red;
+ item.Checked = true;
+ updateCount++;
+ }
+ else
+ {
+ item.ForeColor = Color.Green;
+ }
+ }
+ else if (ReferenceEquals(profile.ListView, lvPrintProfiles))
+ {
+ item.Checked = true;
+ }
+
+ profile.ListView.Items.Add(item);
+ }
+ profile.ListView.EndUpdate();
+ profile.LabelCount.Text = $"{updateCount} Update(s) | {installedCount} Installed | {profile.ListView.Items.Count} Profiles";
+ }
+ }
+
+ #region Events
+ private void EventClick(object sender, EventArgs e)
+ {
+
+ if (ReferenceEquals(sender, btnRefreshProfiles))
+ {
+ Init();
+ return;
+ }
+
+ if (ReferenceEquals(sender, btnPrintProfilesSelectAll) ||
+ ReferenceEquals(sender, btnPrintProfilesUnselectAll) ||
+ ReferenceEquals(sender, btnPrinterProfilesSelectAll) ||
+ ReferenceEquals(sender, btnPrinterProfilesUnselectAll))
+ {
+ bool isChecked = ReferenceEquals(sender, btnPrintProfilesSelectAll) ||
+ ReferenceEquals(sender, btnPrinterProfilesSelectAll);
+
+ ListView lv = ReferenceEquals(sender, btnPrintProfilesSelectAll) || ReferenceEquals(sender,
+ btnPrintProfilesUnselectAll) ? lvPrintProfiles : lvPrinterProfiles;
+
+ lv.BeginUpdate();
+ foreach (ListViewItem item in lv.Items)
+ {
+ item.Checked = isChecked;
+ }
+ lv.EndUpdate();
+
+ return;
+ }
+
+
+ if (ReferenceEquals(sender, btnInstall))
+ {
+
+ var result = MessageBox.Show(
+ "This action will install and override the following profiles into PrusaSlicer:\n" +
+ "---------- PRINT PROFILES ----------\n" +
+ Profiles[0].SelectedFiles +
+ "--------- PRINTER PROFILES ---------\n" +
+ Profiles[1].SelectedFiles +
+ "---------------\n" +
+ "Click 'Yes' to continue\n" +
+ "Click 'No' to cancel this operation",
+ "Install printers into PrusaSlicer", MessageBoxButtons.YesNo,
+ MessageBoxIcon.Question);
+
+
+ if (result != DialogResult.Yes)
+ {
+ return;
+ }
+
+ ushort count = 0;
+
+ try
+ {
+ foreach (var profile in Profiles)
+ {
+ foreach (ListViewItem item in profile.ListView.Items)
+ {
+ if (!item.Checked) continue;
+ var fi = item.Tag as FileInfo;
+ fi.CopyTo($"{profile.TargetPath}{Path.DirectorySeparatorChar}{fi.Name}", true);
+ count++;
+ }
+ }
+ }
+ catch (Exception exception)
+ {
+ MessageBox.Show(exception.Message, "Unable to install the profiles", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ DialogResult = DialogResult.Abort;
+
+ return;
+ }
+
+
+ DialogResult = DialogResult.OK;
+
+ MessageBox.Show(
+ $"Profiles ({count}) were installed.\nRestart PrusaSlicer and check if profiles are present.",
+ "Operation Completed", MessageBoxButtons.OK, MessageBoxIcon.Information);
+
+ return;
+ }
+ }
+ #endregion
+ }
+}