private void RefreshEventsForElement(ElementSave selectedElement) { EventsViewModel viewModel = new EventsViewModel(); viewModel.InstanceSave = null; viewModel.ElementSave = selectedElement; mEventsDataGrid.Instance = viewModel; mEventsDataGrid.MembersToIgnore.Add("InstanceSave"); mEventsDataGrid.MembersToIgnore.Add("ElementSave"); mEventsDataGrid.Categories[0].Name = "Events on this"; MemberCategory exposed = new MemberCategory(); exposed.Name = "Exposed"; var exposedEvents = SelectedState.Self.SelectedElement.Events.Where(item => !string.IsNullOrEmpty(item.ExposedAsName)); foreach (var eventSave in exposedEvents) { EventInstanceMember instanceMember = new EventInstanceMember( SelectedState.Self.SelectedElement, SelectedState.Self.SelectedInstance, eventSave); var local = eventSave; instanceMember.ContextMenuEvents.Add( "Rename", delegate { TextInputWindow tiw = new TextInputWindow(); tiw.Message = "Enter new name"; tiw.Result = local.ExposedAsName; if (tiw.ShowDialog() == System.Windows.Forms.DialogResult.OK) { bool isValid = true; // todo: //string whyNotValid = null; //isValid = NameVerifier.Self.IsEventNameValid(tiw.Result, out whyNotValid); if (isValid) { string oldName = local.ExposedAsName; local.ExposedAsName = tiw.Result; RenameManager.Self.HandleRename(selectedElement, local, oldName); GumCommands.Self.FileCommands.TryAutoSaveCurrentElement(); GumCommands.Self.GuiCommands.RefreshPropertyGrid(); } } }); exposed.Members.Add(instanceMember); } mEventsDataGrid.Categories.Add(exposed); }
private void RefreshEventsForInstance(InstanceSave selectedInstance, ElementSave selectedElement) { var instanceElement = ObjectFinder.Self.GetElementSave(SelectedState.Self.SelectedInstance.BaseType); if (instanceElement != null) { foreach (var eventSaveInBase in instanceElement.Events.Where(item => item.Enabled && (string.IsNullOrEmpty(item.GetSourceObject()) || !string.IsNullOrEmpty(item.ExposedAsName)) )) { var eventSave = selectedElement.Events.FirstOrDefault(item => item.Name == selectedInstance.Name + "." + eventSaveInBase.GetExposedOrRootName()); if (eventSave == null) { eventSave = new EventSave(); eventSave.Name = selectedInstance.Name + "." + eventSaveInBase.GetExposedOrRootName(); // I don't think we want to add this here yet do we? // We should add it only if the user checks it //selectedElement.Events.Add(eventSave); } EventInstanceMember instanceMember = new EventInstanceMember( selectedElement, selectedInstance, eventSave); if (!string.IsNullOrEmpty(eventSave.ExposedAsName)) { instanceMember.DisplayName = eventSave.GetRootName() + " (exposed as " + eventSave.ExposedAsName + ")"; } mEventsDataGrid.Categories[0].Members.Add(instanceMember); } } // Now loop through all objects and give them an Expose right click option foreach (var category in mEventsDataGrid.Categories) { foreach (var member in category.Members) { string rawName = member.Name; if(member.DisplayName.Contains(" (exposed")) { rawName = member.DisplayName.Substring(0, member.DisplayName.IndexOf(" (exposed")); } var eventSave = selectedElement.Events.FirstOrDefault(item => item.Name == selectedInstance.Name + "." + rawName); bool isAlreadyExposed = eventSave != null && !string.IsNullOrEmpty(eventSave.ExposedAsName); if (isAlreadyExposed) { member.ContextMenuEvents.Add("Un-expose Event", delegate { eventSave.ExposedAsName = null; if (SelectedState.Self.SelectedElement != null) { GumCommands.Self.FileCommands.TryAutoSaveCurrentElement(); GumCommands.Self.GuiCommands.RefreshPropertyGrid(true); } } ); } else { member.ContextMenuEvents.Add("Expose Event", HandleExposeEventClick); } } } }