add project
This commit is contained in:
324
Pilz.Administration.GUI/PackageCreationDialog.cs
Normal file
324
Pilz.Administration.GUI/PackageCreationDialog.cs
Normal file
@@ -0,0 +1,324 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using global::System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using global::DevComponents.AdvTree;
|
||||
using global::DevComponents.DotNetBar;
|
||||
using global::DevComponents.Editors;
|
||||
using Microsoft.VisualBasic.CompilerServices;
|
||||
using global::Microsoft.WindowsAPICodePack.Dialogs;
|
||||
using Z.Collections.Extensions;
|
||||
using SM64_ROM_Manager.Updating.Administration.Packaging;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace SM64_ROM_Manager.Updating.Administration.GUI
|
||||
{
|
||||
public partial class PackageCreationDialog
|
||||
{
|
||||
|
||||
// C o n s t a n t s
|
||||
|
||||
private const string FILTER_PACKAGE_TEMPLATE = "Update-Paket-Vorlagen (*.udpt)|*.udpt";
|
||||
private const string FILTER_PACKAGE_ZIP_PACKAGE = "ZIP-Paket (*.zip)|*.zip";
|
||||
private const string FILTER_PACKAGE_ADDON = "Anwendungserweiterung (*.dll)|*.dll";
|
||||
|
||||
// F i e l d s
|
||||
|
||||
private readonly bool isUploadingPackage;
|
||||
|
||||
// P r o p e r t i e s
|
||||
|
||||
public string TempPackageFilePath { get; private set; } = string.Empty;
|
||||
|
||||
// C o n s t r u c t o r s
|
||||
|
||||
public PackageCreationDialog() : this(false)
|
||||
{
|
||||
}
|
||||
|
||||
public PackageCreationDialog(bool isUploadingPackage = false)
|
||||
{
|
||||
this.isUploadingPackage = isUploadingPackage;
|
||||
Shown += EditorWindow_Shown;
|
||||
InitializeComponent();
|
||||
UpdateAmbientColors();
|
||||
ButtonItem_UploadPackage.Visible = isUploadingPackage;
|
||||
}
|
||||
|
||||
// G e n e r a l F e a t u r e s
|
||||
|
||||
private void UpdateView()
|
||||
{
|
||||
var curTab = SuperTabControl1.SelectedTab;
|
||||
if (curTab == SuperTabItem_Pkg_Files)
|
||||
{
|
||||
RibbonBar_Pkg_Dateien.Visible = true;
|
||||
RibbonBar_Pkg_Erweiterungen.Visible = false;
|
||||
}
|
||||
else if (curTab == SuperTabItem_Pkg_Extensions)
|
||||
{
|
||||
RibbonBar_Pkg_Erweiterungen.Visible = true;
|
||||
RibbonBar_Pkg_Dateien.Visible = false;
|
||||
}
|
||||
|
||||
RibbonControl_Main.RecalcLayout();
|
||||
}
|
||||
|
||||
private void ProgressControls(bool enabled)
|
||||
{
|
||||
if (enabled)
|
||||
circularProgress1.Start();
|
||||
else
|
||||
circularProgress1.Stop();
|
||||
Enabled = !enabled;
|
||||
}
|
||||
|
||||
// G e n e r a l G u i
|
||||
|
||||
private void SuperTabControl1_SelectedTabChanged(object sender, SuperTabStripSelectedTabChangedEventArgs e)
|
||||
{
|
||||
UpdateView();
|
||||
}
|
||||
|
||||
private void EditorWindow_Shown(object sender, EventArgs e)
|
||||
{
|
||||
UpdateView();
|
||||
}
|
||||
|
||||
// F i e l d s
|
||||
|
||||
private readonly UpdatePackageManager packageManager = new UpdatePackageManager();
|
||||
private string curPackageTemplatePath = string.Empty;
|
||||
|
||||
// F e a t u r e s
|
||||
|
||||
private void ShowAllPackageTemplateConfig()
|
||||
{
|
||||
ShowPackageFiles();
|
||||
ShowPackageExtensions();
|
||||
}
|
||||
|
||||
private void ShowPackageFiles()
|
||||
{
|
||||
AdvTree1.BeginUpdate();
|
||||
AdvTree1.Nodes.Clear();
|
||||
if (!string.IsNullOrEmpty(packageManager.FilesToCopyPath))
|
||||
{
|
||||
Action<NodeCollection, string> nodeCreation = null;
|
||||
nodeCreation = (parentCollection, p) =>
|
||||
{
|
||||
bool isDir = (File.GetAttributes(p) & FileAttributes.Directory) == FileAttributes.Directory;
|
||||
var n = new Node()
|
||||
{
|
||||
Tag = p,
|
||||
Text = AdvTree1.Nodes == parentCollection ? p : Path.GetFileName(p),
|
||||
ImageIndex = isDir ? 0 : 1
|
||||
};
|
||||
parentCollection.Add(n);
|
||||
if (isDir)
|
||||
{
|
||||
var dirInfo = new DirectoryInfo(p);
|
||||
dirInfo.EnumerateDirectories().ForEach(di => nodeCreation(n.Nodes, di.FullName));
|
||||
dirInfo.EnumerateFiles().ForEach(fi => nodeCreation(n.Nodes, fi.FullName));
|
||||
}
|
||||
};
|
||||
nodeCreation(AdvTree1.Nodes, packageManager.FilesToCopyPath);
|
||||
}
|
||||
|
||||
AdvTree1.EndUpdate();
|
||||
}
|
||||
|
||||
private void ShowPackageExtensions()
|
||||
{
|
||||
advTree_Extensions.BeginUpdate();
|
||||
advTree_Extensions.Nodes.Clear();
|
||||
|
||||
foreach (string fAddOn in packageManager.GetAllUpdateInstallerÁddOn())
|
||||
{
|
||||
var item = new Node(Path.GetFileName(fAddOn)) { Tag = fAddOn };
|
||||
item.Cells.Add(new Cell(Path.GetDirectoryName(fAddOn)));
|
||||
advTree_Extensions.Nodes.Add(item);
|
||||
}
|
||||
|
||||
advTree_Extensions.EndUpdate();
|
||||
}
|
||||
|
||||
private IEnumerable<string> GetSelectedUpdateInstallAddOns()
|
||||
{
|
||||
var list = new List<string>();
|
||||
foreach (Node item in advTree_Extensions.SelectedNodes)
|
||||
list.Add(Conversions.ToString(item.Tag));
|
||||
return list;
|
||||
}
|
||||
|
||||
private void NewPackageTemplate()
|
||||
{
|
||||
packageManager.NewTemplate();
|
||||
curPackageTemplatePath = string.Empty;
|
||||
ShowAllPackageTemplateConfig();
|
||||
}
|
||||
|
||||
private void OpenPackageTemplate()
|
||||
{
|
||||
var ofd_UpdateAdmin_LoadTemplate = new OpenFileDialog() { Filter = FILTER_PACKAGE_TEMPLATE };
|
||||
if (ofd_UpdateAdmin_LoadTemplate.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
packageManager.LoadTemplate(ofd_UpdateAdmin_LoadTemplate.FileName);
|
||||
curPackageTemplatePath = ofd_UpdateAdmin_LoadTemplate.FileName;
|
||||
ShowAllPackageTemplateConfig();
|
||||
}
|
||||
}
|
||||
|
||||
private void SavePackageTemplate()
|
||||
{
|
||||
if (string.IsNullOrEmpty(curPackageTemplatePath))
|
||||
{
|
||||
SavePackageTemplateAs();
|
||||
}
|
||||
else
|
||||
{
|
||||
packageManager.SaveTemplate(curPackageTemplatePath);
|
||||
}
|
||||
}
|
||||
|
||||
private void SavePackageTemplateAs()
|
||||
{
|
||||
var sfd_UpdateAdmin_SaveTemplate = new SaveFileDialog() { Filter = FILTER_PACKAGE_TEMPLATE };
|
||||
if (sfd_UpdateAdmin_SaveTemplate.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
packageManager.SaveTemplate(sfd_UpdateAdmin_SaveTemplate.FileName);
|
||||
curPackageTemplatePath = sfd_UpdateAdmin_SaveTemplate.FileName;
|
||||
}
|
||||
}
|
||||
|
||||
private void SelectPackageFileFolder()
|
||||
{
|
||||
var ofd_UpdateAdmin_PkgFileFolder = new CommonOpenFileDialog() { IsFolderPicker = true };
|
||||
if (ofd_UpdateAdmin_PkgFileFolder.ShowDialog() == CommonFileDialogResult.Ok)
|
||||
{
|
||||
packageManager.FilesToCopyPath = ofd_UpdateAdmin_PkgFileFolder.FileName;
|
||||
ShowPackageFiles();
|
||||
}
|
||||
}
|
||||
|
||||
private void RemovePackageFileFolder()
|
||||
{
|
||||
packageManager.FilesToCopyPath = string.Empty;
|
||||
ShowPackageFiles();
|
||||
}
|
||||
|
||||
private async Task<bool> ExportUpdatePackage(string filePath)
|
||||
{
|
||||
bool success = false;
|
||||
ProgressControls(true);
|
||||
|
||||
try
|
||||
{
|
||||
await Task.Run(() => packageManager.ExportPackage(filePath));
|
||||
success = true;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
success = false;
|
||||
}
|
||||
|
||||
ProgressControls(false);
|
||||
return success;
|
||||
}
|
||||
|
||||
private async Task<bool> ExportTempUpdatePackage()
|
||||
{
|
||||
var filePath = Path.GetTempFileName();
|
||||
bool res = await ExportUpdatePackage(filePath);
|
||||
if (res) TempPackageFilePath = filePath;
|
||||
return res;
|
||||
}
|
||||
|
||||
private void AddUpdateInstallerExtension()
|
||||
{
|
||||
var ofd_UpdateAdmin_AddExtension = new OpenFileDialog()
|
||||
{
|
||||
Multiselect = true,
|
||||
Filter = FILTER_PACKAGE_ADDON
|
||||
};
|
||||
if (ofd_UpdateAdmin_AddExtension.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
foreach (string f in ofd_UpdateAdmin_AddExtension.FileNames)
|
||||
{
|
||||
if (!packageManager.AddUpdateInstallerAddOn(f))
|
||||
{
|
||||
MessageBoxEx.Show(My.Resources.UpdatingAdministrationLangRes.MsgBox_ErrorAddingInstallerAddOn, My.Resources.UpdatingAdministrationLangRes.MsgBox_Error_Titel, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void RemoveUpdateInstallerExtension()
|
||||
{
|
||||
foreach (string fAddOn in GetSelectedUpdateInstallAddOns())
|
||||
packageManager.RemoveUpdateInstallerAddOn(fAddOn);
|
||||
}
|
||||
|
||||
// G u i
|
||||
|
||||
private void ButtonItem_Pkg_NewTemplate_Click(object sender, EventArgs e)
|
||||
{
|
||||
NewPackageTemplate();
|
||||
}
|
||||
|
||||
private void ButtonItem_Pkg_OpenTemplate_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenPackageTemplate();
|
||||
}
|
||||
|
||||
private void ButtonItem_Pkg_SaveTemplate_Click(object sender, EventArgs e)
|
||||
{
|
||||
SavePackageTemplate();
|
||||
}
|
||||
|
||||
private void ButtonItem_Pkg_SaveTemplateAs_Click(object sender, EventArgs e)
|
||||
{
|
||||
SavePackageTemplateAs();
|
||||
}
|
||||
|
||||
private void ButtonItem_Pkg_SelectFileFolder_Click(object sender, EventArgs e)
|
||||
{
|
||||
SelectPackageFileFolder();
|
||||
}
|
||||
|
||||
private void ButtonItem_Pkg_RemoveFileFolder_Click(object sender, EventArgs e)
|
||||
{
|
||||
RemovePackageFileFolder();
|
||||
}
|
||||
|
||||
private async void ButtonItem_Pkg_Export_Click(object sender, EventArgs e)
|
||||
{
|
||||
var sfd_UpdateAdmin_ExportPkg = new SaveFileDialog() { Filter = FILTER_PACKAGE_ZIP_PACKAGE };
|
||||
|
||||
if (sfd_UpdateAdmin_ExportPkg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if (await ExportUpdatePackage(sfd_UpdateAdmin_ExportPkg.FileName))
|
||||
MessageBoxEx.Show(this, My.Resources.UpdatingAdministrationLangRes.MsgBox_PkgExportSuccess, My.Resources.UpdatingAdministrationLangRes.MsgBox_PkgExportSuccess_Titel, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void ButtonItem_Pkg_AddExtension_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddUpdateInstallerExtension();
|
||||
}
|
||||
|
||||
private void ButtonItem_Pkg_RemoveExtension_Click(object sender, EventArgs e)
|
||||
{
|
||||
RemoveUpdateInstallerExtension();
|
||||
}
|
||||
|
||||
private async void ButtonItem_UploadPackage_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (await ExportTempUpdatePackage())
|
||||
DialogResult = DialogResult.OK;
|
||||
else
|
||||
MessageBoxEx.Show(this, My.Resources.UpdatingAdministrationLangRes.MsgBox_PkgExportSuccess, My.Resources.UpdatingAdministrationLangRes.MsgBox_PkgExportSuccess_Titel, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user