Просмотр исходного кода

ENH: add ability to create symlinks for command line on mac from gui

Bill Hoffman 18 лет назад
Родитель
Сommit
5d01572348

+ 15 - 2
Source/QtDialog/CMakeSetupDialog.cxx

@@ -31,6 +31,7 @@
 #include <QMimeData>
 #include <QUrl>
 #include <QShortcut>
+#include <QMacInstallDialog.h>
 
 #include "QCMake.h"
 #include "QCMakeCacheView.h"
@@ -96,17 +97,23 @@ CMakeSetupDialog::CMakeSetupDialog()
   this->GenerateAction = ToolsMenu->addAction(tr("&Generate"));
   QObject::connect(this->GenerateAction, SIGNAL(triggered(bool)), 
                    this, SLOT(doGenerate()));
-  
+#if defined(__APPLE__)
+  this->InstallForCommandLineAction 
+    = ToolsMenu->addAction(tr("&Install For Command Line Use"));
+  QObject::connect(this->InstallForCommandLineAction, SIGNAL(triggered(bool)), 
+                   this, SLOT(doInstallForCommandLine()));
+#endif  
   QMenu* OptionsMenu = this->menuBar()->addMenu(tr("&Options"));
   QAction* supressDevWarningsAction = OptionsMenu->addAction(tr("&Suppress dev Warnings (-Wno-dev)"));
   QObject::connect(supressDevWarningsAction, SIGNAL(triggered(bool)), 
                    this, SLOT(doSuppressDev()));
+
   supressDevWarningsAction->setCheckable(true);
   QAction* debugAction = OptionsMenu->addAction(tr("&Debug Output"));
   debugAction->setCheckable(true);
   QObject::connect(debugAction, SIGNAL(toggled(bool)), 
                    this, SLOT(setDebugOutput(bool)));
-  
+
   QMenu* HelpMenu = this->menuBar()->addMenu(tr("&Help"));
   QAction* a = HelpMenu->addAction(tr("About"));
   QObject::connect(a, SIGNAL(triggered(bool)),
@@ -325,6 +332,12 @@ void CMakeSetupDialog::doSuppressDev()
     SetSuppressDevWarnings(this->SuppressDevWarnings);
 }
 
+void CMakeSetupDialog::doInstallForCommandLine()
+{
+  QMacInstallDialog setupdialog(0);
+  setupdialog.exec();
+}
+
 void CMakeSetupDialog::doGenerate()
 {
   if(this->CurrentState == Generating)

+ 2 - 0
Source/QtDialog/CMakeSetupDialog.h

@@ -45,6 +45,7 @@ protected slots:
   void doConfigure();
   void doGenerate();
   void doSuppressDev();
+  void doInstallForCommandLine();
   void doHelp();
   void doAbout();
   void doInterrupt();
@@ -94,6 +95,7 @@ protected:
   QAction* ConfigureAction;
   QAction* GenerateAction;
   QAction* SuppressDevWarningsAction;
+  QAction* InstallForCommandLineAction;
   State CurrentState;
 
 };

+ 6 - 0
Source/QtDialog/QMacInstallDialog.cxx

@@ -46,6 +46,12 @@ void QMacInstallDialog::DoInstall()
     newName += filename;
     std::cout << "ln -s [" << file << "] [";
     std::cout << newName << "]\n";
+    // Remove the old files
+    if(cmSystemTools::FileExists(newName.c_str()))
+      {
+      std::cout << "rm [" << newName << "]\n";
+      cmSystemTools::RemoveFile(newName.c_str());
+      }
     cmSystemTools::CreateSymlink(file.c_str(),
                                  newName.c_str());
     }