Export all projects from a specified Layer
We want to take the projects backup on different layers. This is a good way to backup your projects and/or their definitions.
static void mahiExportProjects(Args _args)
{
#AotExport
TreeNodeIterator tni;
ProjectNode projectNode;
int exportFlag;
Dialog dialog = new Dialog();
DialogField folderName;
DialogField projectDefinitionOnly;
DialogField exportFromLayer;
DialogField projectType;
UtilEntryLevel layer;
dialog.addText("Export all projects from selected Layer");
projectType = dialog.addFieldValue(enumStr(ProjectSharedPrivate), ProjectSharedPrivate::ProjPrivate);
projectDefinitionOnly = dialog.addField(extendedTypeStr(NoYesId), 'Definition Only','It will import only def of the projects');
folderName = dialog.addField(extendedTypeStr(FilePath));
exportFromLayer = dialog.addField(enumStr(UtilEntryLevel), 'Layer');
dialog.run();
if (dialog.closedOk())
{
if (!folderName.value())
throw error("Folder must be select");
exportFlag = #export;
if (projectDefinitionOnly.value())
exportFlag += #expProjectOnly;
layer = exportFromLayer.value();
switch (projectType.value())
{
case ProjectSharedPrivate::ProjPrivate:
tni = SysTreeNode::getPrivateProject().AOTiterator();
break;
case ProjectSharedPrivate::ProjShared:
tni = SysTreeNode::getSharedProject().AOTiterator();
break;
}
projectNode = tni.next() as ProjectNode;
while (projectNode)
{
if (projectNode.AOTLayer() == layer)
{
projectNode.treeNodeExport(folderName.value() + '\\' + projectNode.name() + '.xpo', exportFlag);
}
projectNode = tni.next() as ProjectNode;
}
}
else
warning("Cancelled by User");
}