| 
					
				 | 
			
			
				@@ -0,0 +1,69 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "QMacInstallDialog.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "cmSystemTools.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <iostream> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <QFileDialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include "ui_MacInstallDialog.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class QMacInstallDialog::QMacInstallDialogInternals : public Ui::Dialog 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+QMacInstallDialog::QMacInstallDialog(QWidget*w) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  :QDialog(w) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  this->Internals = new QMacInstallDialogInternals; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  this->Internals->setupUi(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  QObject::connect(this->Internals->choosePathButton, SIGNAL(pressed()),  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   this, SLOT(ShowBrowser())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  QObject::connect(this->Internals->skipInstallButton, SIGNAL(pressed()),  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   this, SLOT(SkipInstall())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  QObject::connect(this->Internals->doInstallButton, SIGNAL(pressed()),  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   this, SLOT(DoInstall())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  this->Internals->InstallPrefix->setText("/usr/bin/"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+QMacInstallDialog::~QMacInstallDialog() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  delete this->Internals; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void QMacInstallDialog::DoInstall() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  QDir installDir(this->Internals->InstallPrefix->text()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  std::string installTo = installDir.path().toStdString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  QDir cmExecDir(QApplication::applicationDirPath()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  cmExecDir.cd("../bin"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  QFileInfoList list = cmExecDir.entryInfoList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  for (int i = 0; i < list.size(); ++i)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    QFileInfo fileInfo = list.at(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string filename = fileInfo.fileName().toStdString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string file = fileInfo.absoluteFilePath().toStdString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::string newName = installTo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    newName += "/"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    newName += filename; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::cout << "ln -s [" << file << "] ["; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    std::cout << newName << "]\n"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    cmSystemTools::CreateSymlink(file.c_str(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                 newName.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  this->done(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void QMacInstallDialog::SkipInstall() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  this->done(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void QMacInstallDialog::ShowBrowser() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  QString dir = QFileDialog::getExistingDirectory(this,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tr("Enter Install Prefix"), this->Internals->InstallPrefix->text()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if(!dir.isEmpty()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    this->Internals->InstallPrefix->setText(dir); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |