internal void ReactToScreenChangedValue(string changedMember, object oldValue) { ScreenSave screenSave = EditorLogic.CurrentScreenSave; #region Name if (changedMember == "ClassName") { ReactToChangedClassName(oldValue, screenSave); } #endregion #region BaseScreen else if (changedMember == "BaseScreen") { if (ProjectManager.VerifyInheritanceGraph(screenSave) == ProjectManager.CheckResult.Failed) { screenSave.BaseScreen = (string)oldValue; } else { screenSave.UpdateFromBaseType(); } } #endregion EventResponseSave eventSave = screenSave.GetEvent(changedMember); if (eventSave != null) { //if (!string.IsNullOrEmpty(eventSave.InstanceMethod) && EditorLogic.CurrentElement != null) //{ // InsertMethodCallInElementIfNecessary(EditorLogic.CurrentScreenSave, eventSave.InstanceMethod); //} } }
public static void UpdateAllDerivedElementFromBaseValues(bool regenerateCode) { if (EditorLogic.CurrentEntitySave != null) { List <EntitySave> derivedEntities = ObjectFinder.Self.GetAllEntitiesThatInheritFrom(EditorLogic.CurrentEntitySave.Name); List <NamedObjectSave> nosList = ObjectFinder.Self.GetAllNamedObjectsThatUseEntity(EditorLogic.CurrentEntitySave.Name); for (int i = 0; i < derivedEntities.Count; i++) { EntitySave entitySave = derivedEntities[i]; nosList.AddRange(ObjectFinder.Self.GetAllNamedObjectsThatUseEntity(entitySave.Name)); entitySave.UpdateFromBaseType(); // Update the tree nodes EntityTreeNode treeNode = GlueState.Self.Find.EntityTreeNode(entitySave); treeNode.UpdateReferencedTreeNodes(); if (regenerateCode) { CodeWriter.GenerateCode(entitySave); } } foreach (NamedObjectSave nos in nosList) { nos.UpdateCustomProperties(); IElement element = nos.GetContainer(); if (element != null) { CodeWriter.GenerateCode(element); } } } else if (EditorLogic.CurrentScreenSave != null) { List <ScreenSave> derivedScreens = ObjectFinder.Self.GetAllScreensThatInheritFrom(EditorLogic.CurrentScreenSave.Name); for (int i = 0; i < derivedScreens.Count; i++) { ScreenSave screenSave = derivedScreens[i]; screenSave.UpdateFromBaseType(); ScreenTreeNode treeNode = GlueState.Self.Find.ScreenTreeNode(screenSave); treeNode.UpdateReferencedTreeNodes(); if (regenerateCode) { CodeWriter.GenerateCode(screenSave); } } } else { if (EditorLogic.CurrentNamedObject == null) { // This means the value is being set on the Screen itself throw new NotImplementedException(); } } }