diff --git a/Source/QtDialog/CMakeSetup.cxx b/Source/QtDialog/CMakeSetup.cxx index 42bff4deb..1f6b340f3 100644 --- a/Source/QtDialog/CMakeSetup.cxx +++ b/Source/QtDialog/CMakeSetup.cxx @@ -16,6 +16,8 @@ =========================================================================*/ #include "QCMake.h" // include to disable MS warnings #include +#include +#include #include "CMakeSetupDialog.h" @@ -26,11 +28,26 @@ int main(int argc, char** argv) app.setOrganizationName("Kitware"); app.setWindowIcon(QIcon(":/Icons/CMakeSetup.png")); - // TODO handle CMake args - CMakeSetupDialog dialog; dialog.setWindowTitle("CMakeSetup"); dialog.show(); + + // for now: args support specifying build and/or source directory + QStringList args = app.arguments(); + if(args.count() == 2) + { + QFileInfo buildFileInfo(args[1], "CMakeCache.txt"); + QFileInfo srcFileInfo(args[1], "CMakeLists.txt"); + if(buildFileInfo.exists()) + { + dialog.setBinaryDirectory(buildFileInfo.absolutePath()); + } + else if(srcFileInfo.exists()) + { + dialog.setSourceDirectory(srcFileInfo.absolutePath()); + dialog.setBinaryDirectory(QDir::currentPath()); + } + } return app.exec(); } diff --git a/Source/QtDialog/CMakeSetupDialog.cxx b/Source/QtDialog/CMakeSetupDialog.cxx index fe30896b3..afa315701 100644 --- a/Source/QtDialog/CMakeSetupDialog.cxx +++ b/Source/QtDialog/CMakeSetupDialog.cxx @@ -113,6 +113,10 @@ CMakeSetupDialog::CMakeSetupDialog() this, SLOT(doHelp())); this->setAcceptDrops(true); + + // get the saved binary directories + QStringList buildPaths = this->loadBuildPaths(); + this->BinaryDirectory->addItems(buildPaths); // start the cmake worker thread this->CMakeThread = new QCMakeThread(this); @@ -191,11 +195,6 @@ void CMakeSetupDialog::initialize() QObject::connect(this->AddEntry, SIGNAL(clicked(bool)), this, SLOT(addCacheEntry())); - // get the saved binary directories - QStringList buildPaths = this->loadBuildPaths(); - this->BinaryDirectory->blockSignals(true); - this->BinaryDirectory->addItems(buildPaths); - this->BinaryDirectory->blockSignals(false); if(!this->SourceDirectory->text().isEmpty() || !this->BinaryDirectory->lineEdit()->text().isEmpty())