Esempio n. 1
0
        void PerformConversion(string translatedTitle, MSBuildBasedProject sourceProject, string targetProjectDirectory)
        {
            IProject targetProject;

            using (AsynchronousWaitDialog monitor = AsynchronousWaitDialog.ShowWaitDialog(translatedTitle, "Converting", true)) {
                Directory.CreateDirectory(targetProjectDirectory);
                targetProject = CreateProject(targetProjectDirectory, sourceProject);
                CopyProperties(sourceProject, targetProject);
                conversionLog.AppendLine();
                CopyItems(sourceProject, targetProject, monitor);
                monitor.CancellationToken.ThrowIfCancellationRequested();
                conversionLog.AppendLine();
                AfterConversion(targetProject);
                conversionLog.AppendLine(ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.Convert.ConversionComplete"));
                targetProject.Save();
                targetProject.Dispose();
            }

            TreeNode node = ProjectBrowserPad.Instance.SelectedNode;

            if (node == null)
            {
                node = ProjectBrowserPad.Instance.SolutionNode;
            }
            while (node != null)
            {
                if (node is ISolutionFolderNode)
                {
                    AddExistingProjectToSolution.AddProject((ISolutionFolderNode)node, targetProject.FileName);
                    ProjectService.SaveSolution();
                    break;
                }
                node = node.Parent;
            }
            IViewContent newFileWindow;

            newFileWindow = FileService.NewFile(ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.Convert.ConversionResults"), conversionLog.ToString());
            if (newFileWindow != null)
            {
                newFileWindow.PrimaryFile.IsDirty = false;
            }
        }
        void CreateProject()
        {
            if (categoryTreeView.SelectedNode != null)
            {
                PropertyService.Set("Dialogs.NewProjectDialog.LastSelectedCategory", TreeViewHelper.GetPath(categoryTreeView.SelectedNode));
                PropertyService.Set("Dialogs.NewProjectDialog.CategoryTreeState", TreeViewHelper.GetViewStateString(categoryTreeView));
                PropertyService.Set("Dialogs.NewProjectDialog.LargeImages", largeIconsRadioButton.Checked);
            }

            string solution         = solutionNameTextBox.Text.Trim();
            string name             = nameTextBox.Text.Trim();
            string location         = locationTextBox.Text.Trim();
            string projectNameError = CheckProjectName(solution, name, location);

            if (projectNameError != null)
            {
                MessageService.ShowError(projectNameError);
                return;
            }

            if (templateListView.SelectedItems.Count == 1 && locationTextBox.Text.Length > 0 && solutionNameTextBox.Text.Length > 0)
            {
                TemplateItem item = (TemplateItem)templateListView.SelectedItems[0];
                try {
                    System.IO.Directory.CreateDirectory(NewProjectDirectory);
                } catch (Exception) {
                    MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.NewProjectDialog.CantCreateDirectoryError}");
                    return;
                }

                ProjectCreateInformation cinfo = new ProjectCreateInformation();
                if (!createNewSolution)
                {
                    cinfo.Solution     = ProjectService.OpenSolution;
                    cinfo.SolutionPath = Path.GetDirectoryName(cinfo.Solution.FileName);
                    cinfo.SolutionName = cinfo.Solution.Name;
                }
                else
                {
                    cinfo.SolutionPath = NewSolutionDirectory;
                }

                if (item.Template.HasSupportedTargetFrameworks)
                {
                    cinfo.TargetFramework = (TargetFramework)targetFrameworkComboBox.SelectedItem;
                    PropertyService.Set("Dialogs.NewProjectDialog.TargetFramework", cinfo.TargetFramework.Name);
                }

                cinfo.ProjectBasePath = NewProjectDirectory;
                cinfo.SolutionName    = solution;
                cinfo.ProjectName     = name;

                NewSolutionLocation = item.Template.CreateProject(cinfo);
                if (NewSolutionLocation == null || NewSolutionLocation.Length == 0)
                {
                    return;
                }

                NewProjectLocation = cinfo.createdProjects.Count > 0 ? cinfo.createdProjects[0].FileName : "";
                if (createNewSolution)
                {
                    ProjectService.LoadSolution(NewSolutionLocation);
                }
                else
                {
                    AddExistingProjectToSolution.AddProject(SolutionFolderNode, NewProjectLocation);
                    ProjectService.SaveSolution();
                }
                item.Template.RunOpenActions(cinfo);

                DialogResult = DialogResult.OK;
            }
        }