3.8.1 Managing Project

Version Info

Minimum Origin Version Required: Origin 8 SR1

Customize Project Explorer

This example is used to customize the structure of Project Explorer.

void project_explorer()
{
	Project pro;
	if(!pro.Open())  // create a new project
	{
		out_str("Failed to create a new project!\n");
		return;
	}
	
	Folder fldRoot = pro.RootFolder;  // get root folder
	foreach(Folder subfld in fldRoot.Subfolders)  // if subfolder exists, delete it
	{
		fldRoot.RemoveSubFolder(subfld.GetName());
	}
	
	Folder fldSubL1_1 = fldRoot.AddSubfolder("Test Subjects");  // level 1 first subfolder
	Folder fldSubL2_11 = fldSubL1_1.AddSubfolder("Trials");  // level 2 subfolder, in level 1 first subfolder
	Folder fldSubL2_12 = fldSubL1_1.AddSubfolder("Results");  // level 2 subfolder, in level 1 first subfolder
	
	Folder fldSubL1_2 = fldRoot.AddSubfolder("Control Subjects");  // level 1 second subfolder 
	Folder fldSubL2_21 = fldSubL1_2.AddSubfolder("Trials");  // level 2 subfolder, in level 1 second subfolder
	Folder fldSubL2_22 = fldSubL1_2.AddSubfolder("Results");  // level 2 subfolder, in level 1 second subfolder
	
	Folder fldSubL1_3 = fldRoot.AddSubfolder("Comparison");  // level 1 third subfolder 
}

Project Operation

The following example is capable of managing project, including creating a new project, appending an existing project to another project, saving a active folder as project, saving a worksheet as template, and saving the project with a new name.

void managing_project()
{
	Project pro;
	if(!pro.Open())  // create a new project
	{
		out_str("Failed to create a new project!\n");
		return;
	}
	
	// append the existing project to the new project
	string strAppendPath = GetAppPath(true) + "Samples\\Graphing\\OffsetY.opj";
	if(!pro.Open(strAppendPath, OPJ_OPEN_APPEND_NEW_FOLDER))
	{
		out_str("Failed to append project!\n");
		return;
	}
	
	// save folder as project, worksheet as template with data and storage
	string strFolder = "/Folder1/OffsetY";  // folder path
	Folder fld(strFolder);
	if(fld.IsValid())  // if the folder exists
	{
		if(!fld.Activate())  // activate the folder
		{
			out_str("Failed to activate the folder!\n");
			return;
		}
		
		// path of the folder project to be saved
		string strSaveFolderPath = GetAppPath(false) + "OffsetYFolder.opj";
		
		// save the folder as project with subfolders and attached files
		if(fld.SaveAsProject(strSaveFolderPath, SFC_INCLUDE_SUBFOLDERS | SFC_INCLUDE_ATTACHED_FILES))
			out_str("Save the folder as project successfully!\n");
		
		// loop pages in the folder and save worksheet as template
		for(int iPage; iPage<fld.Pages.Count(); iPage++)
		{
			PageBase pg = fld.Pages(iPage);
            if(EXIST_WKS != pg.GetType())  // if the page is workbook
                continue;
            WorksheetPage wp = pg;
            Worksheet wks = wp.Layers(0);  // get first worksheet in the workbook
			if(wks)
			{
				// save the worksheet as template with data and storage
				if(wks.SaveAs(GetAppPath(false) + wks.GetName(), OOSAS_DATA | OOSAS_STORAGE))
					out_str("Save as worksheet template successfully!\n");

			}
			else
				out_str("Not a valid worksheet page!\n");
		}

	}
	
	// path of the new project
	string strNewPath = GetAppPath(false) + "MyNewProject.opj";
	if(pro.Save(strNewPath))  // save the project as a new project
		out_str("Succeed to save the new project!\n");
}