private void AssignVariables(StringTemplate Template)
        {
            //datetime
            Template.Assign("datetime", DateTime.Now);

            //variables
            foreach (Variable var in CurrentProject.Variables)
            {
                //value
                Template.Assign(String.Format("variables[{0}].value", var.Key), var.Value);
            }

            //folders
            foreach (ProjectFolder folder in CurrentProject.Folders)
            {
                //folder directory
                Template.Assign(String.Format("folders[{0}].path", folder.Name), folder.DirectoryName);
            }
        }
        /// <summary>
        /// Opens the file with the editor specified in the project.
        /// </summary>
        /// <param name="FileName">The file to open.</param>
        private void OpenFile(string FileName)
        {
            if (SelectedFolder != null)
            {
                //get file info
                FileInfo fi = new FileInfo(FileName);

                //find the editor
                ProjectFolderEditor editor = SelectedFolder.FindEditor(fi.Extension);

                //get template
                StringTemplate template = new StringTemplate();

                //asign values
                AssignVariables(template);
                template.Assign("file_name", FileName);
                template.Assign("current_folder.path", SelectedFolder.DirectoryName);
                template.Assign("current_folder.name", SelectedFolder.Name);

                //start the process
                Process.Start(template.GetOutput(editor.Program), template.GetOutput(editor.CommandLineArguments));

            }
        }
 public Builder(ProjectBuildGroup BuildGroup)
 {
     this.BuildGroup = BuildGroup;
     Template = new StringTemplate();
     Processes = new List<Process>();
 }