Esempio n. 1
0
        // Open
        internal DXProject(string path) : this()
        {
            this.FileName = path;
            this.CanOpen  = false;

            rendererInfos = new Dictionary <Guid, RendererSurface>();
            binderInfos   = new Dictionary <Guid, PBinder>();

            // 패키지 파일 불러옴
            if (!LoadPackages())
            {
                MessageBox.Show("파일을 불러올 수 없습니다.", "DeXign", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }

            // 매니페스트 불러옴
            if (!LoadManifest())
            {
                MessageBox.Show("프로젝트 구성파일을 찾을 수 없습니다.", "DeXign", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }

            // Screen, Renderer, Component 구성 요소 불러옴
            if (!LoadScreens() ||
                !LoadScreenRenderers() ||
                !LoadComponents())
            {
                if (this.Manifest != null)
                {
                    string[] manifestReferences = this.Manifest.ReferencedModules.Items.ToArray();
                    string[] loadedReferences   = SDKManager.GetReferencedModules().ToArray();

                    string[] exceptedModules = manifestReferences.Except(loadedReferences).ToArray();

                    if (exceptedModules.Length > 0)
                    {
                        var sb = new StringBuilder();
                        sb.AppendLine("이 프로젝트를 열기위한 모듈을 찾을 수 없습니다.");
                        sb.AppendLine();

                        foreach (string module in exceptedModules)
                        {
                            sb.AppendLine(module.Split(',')[0]);
                        }

                        MessageBox.Show(sb.ToString(), "DeXign", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    }
                }
                else
                {
                    MessageBox.Show("알 수 없는 오류", "DeXign", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                }

                return;
            }

            this.CanOpen = true;
        }