/// <summary>The view is asking for variable names.</summary> public static List <ContextItem> ExamineModelForNames(IModel relativeTo, string objectName, bool properties, bool methods, bool events) { if (objectName == string.Empty) { objectName = "."; } object o = null; IModel replacementModel = Apsim.Get(relativeTo, ".Simulations.Replacements") as IModel; if (replacementModel != null) { o = Apsim.Get(replacementModel, objectName) as IModel; } if (o == null) { o = Apsim.Get(relativeTo, objectName); } if (o == null && relativeTo.Parent is Replacements) { // Model 'relativeTo' could be under replacements. Look for the first simulation and try that. IModel simulation = Apsim.Find(relativeTo.Parent.Parent, typeof(Simulation)); o = Apsim.Get(simulation, objectName) as IModel; } if (o != null) { return(NeedContextItemsArgs.ExamineObjectForContextItems(o, properties, methods, events)); } return(new List <ContextItem>()); }
/// <summary> /// Generates a list of context items for given model. /// Uses <see cref="GetNodeFromPath(Model, string)"/> to get the model reference. /// </summary> /// <param name="relativeTo">Model that the string is relative to.</param> /// <param name="objectName">Name of the model that we want context items for.</param> /// <returns></returns> public static List <ContextItem> ExamineModelForContextItemsV2(Model relativeTo, string objectName, bool properties, bool methods, bool events) { List <ContextItem> contextItems = new List <ContextItem>(); object node = GetNodeFromPath(relativeTo, objectName); if (node != null) { contextItems = NeedContextItemsArgs.ExamineObjectForContextItems(node, properties, methods, events); } return(contextItems); }