// // UnrealPackageImportPropertiesDialog.cs - provides a UWT-based CustomDialog for editing the properties of an import in an Unreal Engine package // // Author: // Michael Becker // // Copyright (c) 2019-2020 Mike Becker's Software // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . using System; using MBS.Framework.UserInterface; using MBS.Framework.UserInterface.Controls; using MBS.Framework.UserInterface.Dialogs; using UniversalEditor.ObjectModels.UnrealEngine; namespace UniversalEditor.Plugins.UnrealEngine.UserInterface.Dialogs.Unreal.Package { /// /// Provides a UWT-based for editing the properties of an import in an Unreal Engine package. /// [ContainerLayout("~/Editors/Unreal/Package/Dialogs/UnrealPackageEntryPropertiesDialog.glade")] public class UnrealPackageEntryPropertiesDialog : CustomDialog { private TextBox txtObjectName; private ComboBox cboClassName; private ComboBox cboPackageName; private Label lblSourceData; private TextBox txtSourceData; private Button cmdOK; private Button cmdSourceDataBrowse; private GroupBox fraFlags; private CheckBox chkFlagTransactional, chkFlagUnreachable, chkFlagPublic, chkFlagSourceModified, chkFlagGarbageCollect; private CheckBox chkFlagImporting, chkFlagExporting, chkFlagRequireLoad, chkFlagHighlightNameEliminateObject, chkFlagRemappedNameSingularFunction, chkFlagSuppressedStateChanged; public ImportTableEntry ImportTableEntry { get; set; } = null; public ExportTableEntry ExportTableEntry { get; set; } = null; protected override void OnCreated(EventArgs e) { base.OnCreated(e); DefaultButton = cmdOK; if (ImportTableEntry != null) { txtObjectName.Text = ImportTableEntry.ObjectName?.Name; cboClassName.Text = ImportTableEntry.ClassName?.Name; cboPackageName.Text = ImportTableEntry.PackageName?.Name; lblSourceData.Visible = false; txtSourceData.Visible = false; cmdSourceDataBrowse.Visible = false; fraFlags.Visible = false; Text = "Import Table Entry Properties"; } else if (ExportTableEntry != null) { txtObjectName.Text = ExportTableEntry.Name?.Name; cboClassName.Text = ExportTableEntry.ObjectClass?.Name?.Name; cboPackageName.Text = ExportTableEntry.ObjectParent?.Name?.Name; lblSourceData.Visible = true; txtSourceData.Visible = true; cmdSourceDataBrowse.Visible = true; txtSourceData.Text = String.Format("({0})", UniversalEditor.UserInterface.Common.FileInfo.FormatSize(ExportTableEntry.GetDataLength())); fraFlags.Visible = true; chkFlagTransactional.Checked = ((ExportTableEntry.Flags & ObjectFlags.Transactional) == ObjectFlags.Transactional); chkFlagUnreachable.Checked = ((ExportTableEntry.Flags & ObjectFlags.Unreachable) == ObjectFlags.Unreachable); chkFlagPublic.Checked = ((ExportTableEntry.Flags & ObjectFlags.Public) == ObjectFlags.Public); chkFlagSourceModified.Checked = ((ExportTableEntry.Flags & ObjectFlags.SourceModified) == ObjectFlags.SourceModified); chkFlagGarbageCollect.Checked = ((ExportTableEntry.Flags & ObjectFlags.GarbageCollect) == ObjectFlags.GarbageCollect); chkFlagImporting.Checked = ((ExportTableEntry.Flags & ObjectFlags.Importing) == ObjectFlags.Importing); chkFlagExporting.Checked = ((ExportTableEntry.Flags & ObjectFlags.Exporting) == ObjectFlags.Exporting); chkFlagRequireLoad.Checked = ((ExportTableEntry.Flags & ObjectFlags.RequireLoad) == ObjectFlags.RequireLoad); chkFlagHighlightNameEliminateObject.Checked = ((ExportTableEntry.Flags & ObjectFlags.HighlightedName) == ObjectFlags.HighlightedName); chkFlagRemappedNameSingularFunction.Checked = ((ExportTableEntry.Flags & ObjectFlags.RemappedName) == ObjectFlags.RemappedName); chkFlagSuppressedStateChanged.Checked = ((ExportTableEntry.Flags & ObjectFlags.Suppressed) == ObjectFlags.Suppressed); Text = "Export Table Entry Properties"; } } [EventHandler(nameof(cmdSourceDataBrowse), nameof(Control.Click))] private void cmdSourceDataBrowse_Click(object sender, EventArgs e) { FileDialog dlg = new FileDialog(); if (dlg.ShowDialog() == DialogResult.OK) { ExportTableEntry.SetData(System.IO.File.ReadAllBytes(dlg.SelectedFileName)); } } [EventHandler(nameof(cmdOK), nameof(Control.Click))] private void cmdOK_Click(object sender, EventArgs e) { if (ImportTableEntry != null) { ImportTableEntry.ObjectName = new NameTableEntry(); ImportTableEntry.ObjectName.Name = txtObjectName.Text; ImportTableEntry.ClassName = new NameTableEntry(); ImportTableEntry.ClassName.Name = cboClassName.Text; ImportTableEntry.PackageName = new NameTableEntry(); ImportTableEntry.PackageName.Name = cboPackageName.Text; } else if (ExportTableEntry != null) { ExportTableEntry.Name = new NameTableEntry(); ExportTableEntry.Name.Name = txtObjectName.Text; /* ExportTableEntry.ObjectClass = new ObjectReference(); cboClassName.Text = ExportTableEntry.ObjectClass?.Name?.Name; cboPackageName.Text = ExportTableEntry.ObjectParent?.Name?.Name; */ if (chkFlagTransactional.Checked) ExportTableEntry.Flags |= ObjectFlags.Transactional; if (chkFlagUnreachable.Checked) ExportTableEntry.Flags |= ObjectFlags.Unreachable; if (chkFlagPublic.Checked) ExportTableEntry.Flags |= ObjectFlags.Public; if (chkFlagSourceModified.Checked) ExportTableEntry.Flags |= ObjectFlags.SourceModified; if (chkFlagGarbageCollect.Checked) ExportTableEntry.Flags |= ObjectFlags.GarbageCollect; if (chkFlagImporting.Checked) ExportTableEntry.Flags |= ObjectFlags.Importing; if (chkFlagExporting.Checked) ExportTableEntry.Flags |= ObjectFlags.Exporting; if (chkFlagRequireLoad.Checked) ExportTableEntry.Flags |= ObjectFlags.RequireLoad; if (chkFlagHighlightNameEliminateObject.Checked) ExportTableEntry.Flags |= ObjectFlags.HighlightedName; if (chkFlagRemappedNameSingularFunction.Checked) ExportTableEntry.Flags |= ObjectFlags.RemappedName; if (chkFlagSuppressedStateChanged.Checked) ExportTableEntry.Flags |= ObjectFlags.Suppressed; } DialogResult = DialogResult.OK; Close(); } } }