Exemple #1
0
        public static void OpenProject(string file)
        {
            if (isProjectOpened)
            {
                throw new InvalidOperationException("A project has already been opened. ");
            }

            try
            {
                projectFile     = file;
                projectDir      = System.IO.Path.GetDirectoryName(file);
                projectDocument = new ProjectDocumentFile(file);
                components      = new Dictionary <string, object>();
                ResourceManager.SearchPaths.Add(projectDir);
                foreach (var item in projectDocument.Components)
                {
                    if (item.Attributes["ID"] != null)
                    {
                        var dict = new Dictionary <string, object>();
                        foreach (XmlNode property in item.ChildNodes)
                        {
                            if (property.HasChildNodes && property.ChildNodes.Count == 1 && (property.FirstChild is XmlText))
                            {
                                dict.Add(
                                    property.Attributes["Name"].Value,
                                    property.FirstChild.Value
                                    );
                            }
                            else
                            {
                                dict.Add(
                                    property.Attributes["Name"].Value,
                                    property.ChildNodes
                                    );
                            }
                        }

                        try
                        {
                            components.Add(
                                item.Attributes["ID"].Value,
                                NekoKun.Core.ReflectionHelper.CreateInstanceFromTypeName(item.Attributes["Name"].Value, dict)
                                );
                        }
                        catch (TypeLoadException)
                        {
                        }
                    }
                }

                isProjectOpened = true;
            }
            catch (Exception e)
            {
                Clean();
                NekoKun.Core.Application.Logger.Log(NekoKun.Core.ExceptionHelper.ExceptionMessage(e));
                CannotOpenProjectException j = new CannotOpenProjectException(string.Format("Error when opening {0}", file), e);
                throw j;
            }
        }
        public static void OpenProject(string file)
        {
            if (isProjectOpened)
                throw new InvalidOperationException("A project has already been opened. ");

            try
            {
                projectFile = file;
                projectDir = System.IO.Path.GetDirectoryName(file);
                projectDocument = new ProjectDocumentFile(file);
                components = new Dictionary<string, object>();
                ResourceManager.SearchPaths.Add(projectDir);
                foreach (var item in projectDocument.Components)
                {
                    if (item.Attributes["ID"] != null)
                    {
                        var dict = new Dictionary<string, object>();
                        foreach (XmlNode property in item.ChildNodes)
                        {
                            if (property.HasChildNodes && property.ChildNodes.Count == 1 && (property.FirstChild is XmlText))
                                dict.Add(
                                    property.Attributes["Name"].Value,
                                    property.FirstChild.Value
                                );
                            else
                                dict.Add(
                                    property.Attributes["Name"].Value,
                                    property.ChildNodes
                                );

                        }

                        try
                        {
                            components.Add(
                                item.Attributes["ID"].Value,
                                NekoKun.Core.ReflectionHelper.CreateInstanceFromTypeName(item.Attributes["Name"].Value, dict)
                            );
                        }
                        catch (TypeLoadException)
                        {
                        }

                    }
                }

                isProjectOpened = true;
            }
            catch (Exception e)
            {
                Clean();
                NekoKun.Core.Application.Logger.Log(NekoKun.Core.ExceptionHelper.ExceptionMessage(e));
                CannotOpenProjectException j = new CannotOpenProjectException(string.Format("Error when opening {0}", file), e);
                throw j;
            }
        }