示例#1
0
			/// <summary>
			/// Creates a new project and adds it to the current solution
			/// </summary>
			public static Project AddNewProjectToSolution(Solution sln, AbstractLanguageBinding Binding, FileTemplate ProjectType, string Name, string BaseDir)
			{
				var prj = CreateNewProject(Binding, ProjectType, Name, BaseDir);
				if (prj != null)
				{
					prj.Save();
					sln.AddProject(prj);
					sln.Save();
				}

				Instance.UpdateGUI();
				return prj;
			}
示例#2
0
			/// <summary>
			/// Note: The current solution will not be touched
			/// </summary>
			public static Solution CreateNewProjectAndSolution(AbstractLanguageBinding Binding, FileTemplate ProjectType, string Name, string BaseDir, string SolutionName)
			{
				var baseDir = BaseDir.Trim('\\', ' ', '\t');
				var sln = new Solution();
				sln.Name = SolutionName;
				sln.FileName =
					baseDir + "\\" +
					Path.ChangeExtension(Util.PurifyFileName(Name), Solution.SolutionExtension);

				AddNewProjectToSolution(sln, Binding, ProjectType, Name, baseDir);

				return sln;
			}
示例#3
0
		public NewSrcDlg()
		{
			DataContext = this;
			InitializeComponent();

			if (List_Languages.Items.Count > 0)
				List_Languages.SelectedIndex = 0;

			if (List_FileTypes.Items.Count > 0)
			{
				_FileType = List_FileTypes.Items[0] as FileTemplate;
				List_FileTypes.SelectedIndex = 0;
			}
		}
示例#4
0
			/// <summary>
			/// Creates a new project.
			/// Doesn't add it to the current solution.
			/// Doesn't modify the current solution.
			/// </summary>
			public static Project CreateNewProject(AbstractLanguageBinding Binding, FileTemplate ProjectType, string Name, string BaseDir)
			{
				/*
				 * Enforce the creation of a new project directory
				 */
				var baseDir = BaseDir.Trim('\\', ' ', '\t') + "\\" + Util.PurifyDirName(Name);
				if (Directory.Exists(baseDir))
				{
					MessageBox.Show("Project directory "+baseDir+" exists already","Project directory creation error");
					return null;
				}

				Util.CreateDirectoryRecursively(baseDir);

				var prj = Binding.CreateEmptyProject(Name, baseDir + "\\" +
					Path.ChangeExtension(Util.PurifyFileName(Name), ProjectType.Extensions[0]), ProjectType);
				return prj;
			}
示例#5
0
		public NewProjectDlg(DialogMode NewProjectDialogMode)
		{
			DataContext = this;
			InitializeComponent();

			if (List_Languages.Items.Count > 0)
				List_Languages.SelectedIndex = 0;

			if (List_FileTypes.Items.Count > 0)
			{
				_FileType = List_FileTypes.Items[0] as FileTemplate;
				List_FileTypes.SelectedIndex = 0;
			}

			NewProjectDlgMode = NewProjectDialogMode;
		}
示例#6
0
        public override Project CreateEmptyProject(string name, string prjfile,FileTemplate FileType)
        {
            var prj=new DProject();
            prj.Name = name;
            prj.FileName = prjfile;

            switch (_ProjectTypes.IndexOf(FileType))
            {
                case 0: // Console app
                    prj.OutputType = OutputTypes.Executable;

                    var mainFile = prj.BaseDirectory+ "\\main.d";

                    File.WriteAllText(mainFile,	DResources.helloWorldConsoleApp);

                    prj.Add(mainFile);
                    prj.Save();

                    break;
                case 1: // Win32 app
                    prj.OutputType = OutputTypes.CommandWindowLessExecutable;

                    // Create main file
                    var mainFile2 = prj.BaseDirectory + "\\main.d";

                    File.WriteAllText(mainFile2, DResources.winsamp_d);
                    prj.Add(mainFile2);

                    // Add library references
                    prj.LinkedLibraries.AddRange(new[]{"kernel32.lib","gdi32.lib"});

                    // Create Resources-directory
                    var resDir = prj.BaseDirectory + "\\Resources";
                    Util.CreateDirectoryRecursively(resDir);
                    prj.SubDirectories.Add(resDir);

                    // Create manifest & resource file
                    var manifest=resDir+"\\Win32.manifest";

                    File.WriteAllText(manifest,DResources.Win32Manifest);
                    var manifestModule=prj.Add(manifest);

                    // Prevent compilation of the manifest file
                    manifestModule.Action = SourceModule.BuildAction.None;

                    var rc = resDir + "\\Resources.rc";

                    File.WriteAllText(rc, DResources.defResource);
                    prj.Add(rc);

                    // Finally save changes to the project
                    prj.Save();

                    break;
                case 2: // DLL
                    prj.OutputType = OutputTypes.DynamicLibary;

                    // We have explicitly reference to phobos library when linking to a .dll
                    prj.LinkedLibraries.Add("phobos.lib");

                    break;
                case 3:// Lib
                    prj.OutputType = OutputTypes.StaticLibrary;

                    var libmainFile = prj.BaseDirectory + Path.DirectorySeparatorChar + prj.Name.Replace(' ','_')+".d";

                    File.WriteAllText(libmainFile, DResources.libExample);

                    prj.Add(libmainFile);
                    prj.Save();
                    break;
                default:
                    return null;
            }

            return prj;
        }
示例#7
0
 public virtual Project CreateEmptyProject(string Name, string ProjectFile, FileTemplate ProjectType)
 {
     throw new NotImplementedException();
 }
示例#8
0
			/// <summary>
			/// Adds a new project to the current solution
			/// </summary>
			public static Project AddNewProjectToSolution(AbstractLanguageBinding Binding, FileTemplate ProjectType, string Name, string BaseDir)
			{
				return AddNewProjectToSolution(CurrentSolution, Binding, ProjectType, Name, BaseDir);
			}
		public virtual Project CreateEmptyProject(string Name, string ProjectFile,FileTemplate ProjectType) { throw new NotImplementedException(); }