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; } }