Skip to content

Commit

Permalink
Copy required and recommended packages to new projects.
Browse files Browse the repository at this point in the history
  • Loading branch information
crabmusket committed Jan 1, 2015
1 parent 50a9cad commit faf312f
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 24 deletions.
3 changes: 2 additions & 1 deletion source/NewProjectPage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,8 @@ void NewProjectPage::on_newProjectCreateButton_clicked()
{
QString templatePath = QDir::toNativeSeparators(entry->mRootPath);
QString newProjectPath = QDir::toNativeSeparators(DirectoryTextEdit->text() + "/" + NameTextEdit->text());
mFrontloader->createNewProject(templatePath, newProjectPath, mCurrentInstance);
QStringList packagePaths = entry->mRecommendedPackages + entry->mRequiredPackages;
mFrontloader->createNewProject(templatePath, packagePaths, newProjectPath, mCurrentInstance);
}
}
}
Expand Down
25 changes: 17 additions & 8 deletions source/copyDir.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,31 @@ void CopyDir::run()
{
mPause = false;
mExitNow = false;
bool success = copyDirAndFiles(mSrcDir, mDstDir, &mNameExcludeFilter, &mNameIncludeFilter);
bool success = true;

mutex.lock();
if(mPause)
QStringList::const_iterator it;
for(it = mSrcDirs.cbegin(); it != mSrcDirs.cend(); ++it)
{
pauseThreads.wait(&mutex);
QString srcDir = *it;
mRootDir = srcDir;
success &= copyDirAndFiles(srcDir, mDstDir, &mNameExcludeFilter, &mNameIncludeFilter);

if(!success) break;

mutex.lock();
if(mPause)
{
pauseThreads.wait(&mutex);
}
mutex.unlock();
}
mutex.unlock();

emit fileCopyDone(success, mExitNow);
}

void CopyDir::setValues(QString srcDir, QString dstDir, QStringList nameExcludeFilter, QStringList nameIncludeFilter)
void CopyDir::setValues(QStringList srcDirs, QString dstDir, QStringList nameExcludeFilter, QStringList nameIncludeFilter)
{
mRootDir = srcDir;
mSrcDir = srcDir;
mSrcDirs = srcDirs;
mDstDir = dstDir;
mNameExcludeFilter = nameExcludeFilter;
mNameIncludeFilter = nameIncludeFilter;
Expand Down
4 changes: 2 additions & 2 deletions source/copyDir.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class CopyDir : public QThread

public:
void run();
void setValues(QString srcDir, QString dstDir, QStringList nameExcludeFilter = QStringList(), QStringList nameIncludeFilter = QStringList());
void setValues(QStringList srcDirs, QString dstDir, QStringList nameExcludeFilter = QStringList(), QStringList nameIncludeFilter = QStringList());
bool copyDirAndFiles(QString srcDir, QString dstDir, QStringList *nameExcludeFilter, QStringList *nameIncludeFilter, QStringList *srcFileList = NULL, QStringList *dstFileList = NULL);

signals:
Expand All @@ -28,7 +28,7 @@ public slots:

private:
QString mRootDir;
QString mSrcDir;
QStringList mSrcDirs;
QString mDstDir;
QStringList mNameExcludeFilter;
QStringList mNameIncludeFilter;
Expand Down
14 changes: 6 additions & 8 deletions source/projectList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ void ProjectList::buildList()
QDomDocument doc("projects");

QString baseAppPath = getAppPath();
//QString projectsPath = baseAppPath + "/Engine/bin/tools/projects.xml";
QString projectsPath = baseAppPath + "projects.xml";
QFile file(projectsPath);

Expand Down Expand Up @@ -244,15 +243,14 @@ void ProjectList::buildList()
void TemplateEntry::findPackages()
{
static const QString templateFileName = "template.xml";
static const QString packageDirName = "Packages";

// Load in the xml file, parse it, and build out the controls
QDomDocument doc("template");

QString basePath = mRootPath;
//QString projectsPath = baseAppPath + "/Engine/bin/tools/projects.xml";
QString templatePath = basePath + "/" + templateFileName;
QString templatePath = basePath + QDir::separator() + templateFileName;
QFile file(templatePath);
std::string debug = templatePath.toStdString();

if (!file.open(QIODevice::ReadOnly))
{
Expand All @@ -267,27 +265,27 @@ void TemplateEntry::findPackages()

file.close();

// Process
QDomElement docElem = doc.documentElement();
QDomNode n = docElem.firstChild();
while(!n.isNull())
{
QDomElement e = n.toElement();
if(!e.isNull() && e.tagName() == "package")
{
// projectDirectory
if(e.hasAttribute("path") && e.hasAttribute("inclusion"))
{
QString title = e.attribute("path");
QString inclusion = e.attribute("inclusion");
QDir packageDir(packageDirName + QDir::separator() + title);
QString path = packageDir.absolutePath();

if(inclusion == "required")
{
mRequiredPackages.append(title);
mRequiredPackages.append(path);
}
else if(inclusion == "recommended")
{
mRecommendedPackages.append(title);
mRecommendedPackages.append(path);
}
}
}
Expand Down
13 changes: 9 additions & 4 deletions source/torque3dfrontloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -668,7 +668,9 @@ void Torque3DFrontloader::packageProjectStaging()
connect(&mCopyDir, SIGNAL(fileCopyDone(bool, bool)), this, SLOT(updateStagingFileDone(bool, bool)));
connect(&mCopyDir, SIGNAL(fileCopyDone(bool, bool)), &mCopyDir, SLOT(quit()));

mCopyDir.setValues(rootProjectPath.path(), outputDir.path(), nameExcludeFilter, nameIncludeFilter);
QStringList dirs;
dirs.push_front(rootProjectPath.path());
mCopyDir.setValues(dirs, outputDir.path(), nameExcludeFilter, nameIncludeFilter);
mCopyDir.start();
}
}
Expand Down Expand Up @@ -715,7 +717,7 @@ void Torque3DFrontloader::createProjectCheck()
setSelectedProjectByUniqueName(uniqueName, false);
}

void Torque3DFrontloader::createNewProject(const QString &templatePath, const QString &newProjectPath, ModuleListInstance* moduleInst)
void Torque3DFrontloader::createNewProject(const QString &templatePath, const QStringList &packagePaths, const QString &newProjectPath, ModuleListInstance* moduleInst)
{
// init values
mCreateTemplateCopyDone = false;
Expand All @@ -730,6 +732,7 @@ void Torque3DFrontloader::createNewProject(const QString &templatePath, const QS

mTemplateDir.setPath(templatePath);
mNewProjectDir.setPath(newProjectPath);
mPackagePaths = packagePaths;

mNewProjectModuleList = moduleInst;

Expand Down Expand Up @@ -881,17 +884,19 @@ void Torque3DFrontloader::createTemplateCopy()
mNewProjectDir.mkdir(mNewProjectDir.path());

// our new project path exists, time to copy everything we want over to it
mTemplateDir.setFilter(QDir::AllDirs | QDir::Files | QDir::Hidden);
QStringList nameExcludeFilter;
nameExcludeFilter << "*.obj" << "*.exp" << "*.ilk" << "*.pch" << "*.sbr" << "*.pdb" << "*.sln" << "*.suo";
nameExcludeFilter << "*/buildFiles/Xcode/*";
nameExcludeFilter << "*/template.xml";
QStringList nameIncludeFilter;

connect(&mCopyDir, SIGNAL(updateFileCount(int)), this, SLOT(updateCreateProjectCount(int)));
connect(&mCopyDir, SIGNAL(updateFileProgress(int, QString)), this, SLOT(updateCreateProjectProgress(int, QString)));
connect(&mCopyDir, SIGNAL(fileCopyDone(bool, bool)), this, SLOT(updateCreateProjectDone(bool, bool)));
connect(&mCopyDir, SIGNAL(fileCopyDone(bool, bool)), &mCopyDir, SLOT(quit()));
mCopyDir.setValues(mTemplateDir.path(), mNewProjectDir.path(), nameExcludeFilter, nameIncludeFilter);
QStringList dirs = mPackagePaths;
dirs.push_front(mTemplateDir.path());
mCopyDir.setValues(dirs, mNewProjectDir.path(), nameExcludeFilter, nameIncludeFilter);
mCopyDir.start();
}

Expand Down
3 changes: 2 additions & 1 deletion source/torque3dfrontloader.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ class Torque3DFrontloader : public QMainWindow
void createProjectGeneration();

void replaceTextInFile(QString file, QString srcText, QString dstText);
void createNewProject(const QString &templatePath, const QString &newProjectPath, ModuleListInstance* moduleInst);
void createNewProject(const QString &templatePath, const QStringList &packagePaths, const QString &newProjectPath, ModuleListInstance* moduleInst);

QPixmap *getProjectPixmap(DirEntry *entry);

Expand Down Expand Up @@ -256,6 +256,7 @@ class Torque3DFrontloader : public QMainWindow

QDir mTemplateDir;
QDir mNewProjectDir;
QStringList mPackagePaths;
ModuleListInstance* mNewProjectModuleList;
ModuleListInstance* mChangeProjectModulesList;

Expand Down

0 comments on commit faf312f

Please sign in to comment.