public bool AssembleAlgorithmInstance(Dictionary <string, string> modelInfo)
        {
            string oldDirectory = Directory.GetCurrentDirectory();

            try
            {
                Directory.SetCurrentDirectory(modelInfo["workingDirectory"]);
                AssemblySupport.LoadAssembly(modelInfo["workingDirectory"], modelInfo["assemblyPath"]);
                object obj = AssemblySupport.GetNewInstance(modelInfo["algorithm"]);
                if (obj is IAlgorithm)
                {
                    _algorithm = (IAlgorithm)obj;
                }
                else
                {
                    throw new Exception("Error occur while adding algorithm");
                }
                return(true);
            }
            catch (Exception e)
            {
                ExceptionUtil.SendErrorEventAndLog(GetType().ToString(), e.Message);
                throw e;
            }
            finally
            {
                Directory.SetCurrentDirectory(oldDirectory);
            }
        }
        // Finds the node associated with this member
        internal static MemberTreeNode FindMember(MemberInfo member)
        {
            Type     type = member.DeclaringType;
            Assembly assy = type.Assembly;

            AssemblyTreeNode assyNode =
                AssemblySupport.FindAssemblyNode(assy);

            if (assyNode == null)
            {
                return(null);
            }

            NamespaceTreeNode nameNode =
                assyNode.FindNamespace(type.Namespace);

            if (nameNode == null)
            {
                return(null);
            }

            TypeTreeNode typeNode =
                nameNode.FindType(type);

            if (typeNode == null)
            {
                return(null);
            }

            return(typeNode.FindMemberNode(member, !TypeTreeNode.FIND_NESTED));
        }
        public override void GetDetailText()
        {
            base.GetDetailText();

            if (_typeLib != null)
            {
                _typeLib.GetDetailText(!TypeLibrary.SHOW_ASSY);
            }

            AssemblySupport.GetDetailText(_assembly);
        }
Exemple #4
0
        private void Reload()
        {
            FileInfo oprFile = _oprFile;

            AssemblySupport.ReleaseAll();

            progressBar1.Value = 0;
            progressBar1.Invalidate();
            UpdateTitleText(null);

            Initialise(oprFile.FullName);
        }
Exemple #5
0
        public ComponentInspectorView()
        {
            instance = this;

            SetLocalizedTitle("${res:ComponentInspector.ToolsMenu.ShowComponentInspectorMenuItem}");

            // HACK: Due to various static members in the ComponentInspector
            // the ObjectBrowser does not like being re-used after being disposed.
            // Workaround this by keeping a reference to the ObjectBrowser.
            if (objectBrowser == null)
            {
                objectBrowser = new ObjectBrowser(showStatusPanel, tabbedLayout);
            }
            AssemblySupport.AddCurrentAssemblies();
            ComSupport.RestoreComEnvironment();
            AssemblySupport.RestoreAssemblies();
            Application.Idle += IdleHandler;
        }
        public static bool ValidateAlgorithmClassWithFullDLLPath(string workingDirectory, string assemblyPath, string classname)
        {
            string oldDirectory = Directory.GetCurrentDirectory();

            try
            {
                Directory.SetCurrentDirectory(workingDirectory);
                AssemblySupport.LoadAssembly(workingDirectory, assemblyPath);
                object obj = AssemblySupport.GetNewInstance(classname);
                return(obj is IAlgorithm);
            }
            catch (Exception e)
            {
                return(false);
            }
            finally
            {
                Directory.SetCurrentDirectory(oldDirectory);
            }
        }
 public override void RemoveLogicalNode()
 {
     AssemblySupport.CloseAssembly(this);
     ControlTree.RemoveAssy(_assembly);
     base.RemoveLogicalNode();
 }
        // When a link is clicked to this, the linkModifier is the
        // type or the assembly
        public void ShowTarget(Object linkModifier)
        {
            if (linkModifier == null)
            {
                return;
            }

            Assembly   assy;
            Type       type       = null;
            MemberInfo memberInfo = null;

            if (linkModifier is Assembly)
            {
                assy = (Assembly)linkModifier;
            }
            else if (linkModifier is Type)
            {
                type = (Type)linkModifier;
                assy = type.Assembly;
            }
            else             // MemberInfo
            {
                memberInfo = (MemberInfo)linkModifier;
                type       = memberInfo.DeclaringType;
                assy       = type.Assembly;
            }

            AssemblySupport.SelectAssyTab();

            AssemblyTreeNode node =
                AssemblySupport.FindAssemblyTreeNode(assy);

            if (node == null)
            {
                throw new Exception("Bug: assembly not found for type: " + type);
            }

            if (type != null)
            {
                TypeTreeNode typeNode = node.GetTypeNode(type);
                if (typeNode == null)
                {
                    throw new Exception("Bug: typeNode not found for type: "
                                        + type);
                }

                if (memberInfo != null)
                {
                    MemberTreeNode memberNode =
                        typeNode.FindMemberNode(memberInfo,
                                                !TypeTreeNode.FIND_NESTED);
                    if (memberNode != null)
                    {
                        memberNode.PointToNode();
                    }
                    else
                    {
                        throw new Exception("Bug: member not found for type: "
                                            + type + " mem: " + memberInfo);
                    }
                }
                else
                {
                    typeNode.PointToNode();
                }
            }
            else
            {
                node.PointToNode();
            }
        }