public InternalAssetEditor(Asset asset, ArchiveEditorFunctions archive, bool hideHelp) { InitializeComponent(); TopMost = true; this.asset = asset; this.archive = archive; DynamicTypeDescriptor dt = new DynamicTypeDescriptor(asset.GetType()); asset.SetDynamicProperties(dt); propertyGridAsset.SelectedObject = dt.FromComponent(asset); labelAssetName.Text = $"[{asset.AHDR.assetType.ToString()}] {asset.ToString()}"; propertyGridAsset.HelpVisible = !hideHelp; if (asset is AssetCAM cam) { SetupForCam(cam); } else if (asset is AssetCSN csn) { SetupForCsn(csn); } else if (asset is AssetGRUP grup) { SetupForGrup(grup); } else if (asset is AssetRenderWareModel arwm) { SetupForModel(arwm); } else if (asset is AssetSHRP shrp) { SetupForShrp(shrp); } else if (asset is AssetWIRE wire) { SetupForWire(wire); } Button buttonHelp = new Button() { Dock = DockStyle.Fill, Text = "Open Wiki Page", AutoSize = true }; buttonHelp.Click += (object sender, EventArgs e) => System.Diagnostics.Process.Start(AboutBox.WikiLink + asset.AHDR.assetType.ToString()); tableLayoutPanel1.Controls.Add(buttonHelp, 0, tableLayoutPanel1.RowCount - 1); Button buttonFindCallers = new Button() { Dock = DockStyle.Fill, Text = "Find Who Targets Me", AutoSize = true }; buttonFindCallers.Click += (object sender, EventArgs e) => Program.MainForm.FindWhoTargets(GetAssetID()); tableLayoutPanel1.Controls.Add(buttonFindCallers, 1, tableLayoutPanel1.RowCount - 1); }
private void ApplyDynamicTypeDescriptorToPropertyView() { if (m_CurrentObject == null) { return; } var designerType = m_CurrentObject.GetType(); var isDesignerDefault = designerType == typeof(DefaultCommandProperties); var command = isDesignerDefault ? ((CommandProperties)m_CurrentObject).Command : null; DynamicTypeDescriptor dt = isDesignerDefault ? new DynamicTypeDescriptor(command.GetType()) : new DynamicTypeDescriptor(m_CurrentObject.GetType()); m_CurrentObject.HideProperties(ref dt); m_CurrentObject.OnPropertiesModified(); propertyGrid.SelectedObject = isDesignerDefault ? dt.FromComponent(command) : dt.FromComponent(m_CurrentObject); }
private void UpdateInterfaceFromRandomizer() { if (InvokeRequired) { Invoke(new Action(UpdateInterfaceFromRandomizer)); return; } programIsChangingStuff = true; comboBoxGame.SelectedIndex = randomizer.game; if (string.IsNullOrEmpty(backupDir)) { labelBackupDir.Text = "Backup Directory: None"; } else { labelBackupDir.Text = "Backup Directory: " + backupDir; } if (!string.IsNullOrEmpty(randomizer.rootDir)) { if (randomizer.isDir) { labelRootDir.Text = "Game Directory: " + randomizer.rootDir; buttonPerform.Enabled = true; } else { labelRootDir.Text = "File: " + randomizer.rootDir; buttonPerform.Enabled = true; } } else { buttonPerform.Enabled = false; } textBoxSeed.Text = randomizer.seedText; labelSeed.Text = "Seed: " + randomizer.seed.ToString(); DynamicTypeDescriptor dt = new DynamicTypeDescriptor(randomizer.settings.GetType()); randomizer.settings.SetDynamicProperties(dt, comboBoxGame.SelectedIndex); propertyGridSettings.SelectedObject = dt.FromComponent(randomizer.settings); programIsChangingStuff = false; }
private void propertyGrid_PropertyValueChanged(object sender, PropertyValueChangedEventArgs e) { DynamicTypeDescriptor dt = new DynamicTypeDescriptor(m_CurrentObjectType); m_CurrentObject.HideProperties(ref dt); if (sender != null) // If it was modified from UI, call the callback. In other cases we don't want to do that. { m_CurrentObject.OnPropertiesModified(); } propertyGrid.BeginInvokeIfCreated(new MethodInvoker(() => { propertyGrid.SelectedObject = dt.FromComponent(m_CurrentObject); })); }
public InternalMultiAssetEditor(Asset[] assets, ArchiveEditorFunctions archive) { InitializeComponent(); TopMost = true; assetIDs = (from Asset a in assets select a.assetID).ToArray(); this.archive = archive; var typeDescriptors = new List <DynamicTypeDescriptor>(); labelAssetName.Text = ""; foreach (var asset in assets) { DynamicTypeDescriptor dt = new DynamicTypeDescriptor(asset.GetType()); asset.SetDynamicProperties(dt); typeDescriptors.Add(dt.FromComponent(asset)); } propertyGridAsset.SelectedObjects = typeDescriptors.ToArray(); labelAssetName.Text = string.Join(" | ", from Asset asset in assets select asset.assetName); }