Salome HOME
Copyright update
[tools/install.git] / src / main.cxx
index 63cfd193db20d3bb4df6020c685743591e55ea62..81ccd143aa0050d5b1694d0832ceb0d5863618cf 100644 (file)
@@ -1,9 +1,9 @@
 //  File      : main.cxx 
 //  Created   : Thu Dec 18 12:01:00 2002
-//  Author    : Vadim SANDLER
+//  Author    : Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)
 //  Project   : SALOME
 //  Module    : Installation Wizard
-//  Copyright : 2004-2005 CEA
+//  Copyright : 2002-2009 CEA
 
 #include "globals.h"
 
  *  Qt's messages handler funcion
  */
 // ================================================================
-void MessageOutput( QtMsgType type, const char *msg )
+void MessageOutput( QtMsgType type, 
+#ifdef QT_DEBUG
+                   const char* msg
+#else
+                   const char*
+#endif
+                   )
 {
   switch ( type ) {
   case QtDebugMsg:
@@ -42,26 +48,96 @@ void MessageOutput( QtMsgType type, const char *msg )
 int main( int argc, char **argv )
 {
   qInstallMsgHandler( MessageOutput );
-  QApplication a( argc, argv );
-  a.setFont( QFont("Helvetica", 9 ) );
-  QString xmlFileName( argc == 2 ? argv[1] : "config.xml" );
-  
-  int result = -1;
-  QFile xmlfile(xmlFileName);
-  if ( xmlfile.exists() ) {
-    SALOME_InstallWizard wizard(xmlFileName);
-    a.setMainWidget( &wizard );
-    wizard.show();
-    result = a.exec();
+
+  QString xmlFileName;
+  QString targetDirPath;
+  QString tmpDirPath;
+  bool has_xml    = false;
+  bool has_target = false;
+  bool has_tmp    = false;
+  bool force_src  = false;
+  bool single_dir = false;
+  for( int i = 1; i < argc; i++ ) {
+    QString a = QString( argv[i] );
+    if ( a == "--version" || a == "-v" ) {
+      printf("SALOME Installation Wizard version %d.%d.%d (Qt version %d.%d.%d)\n",
+            ( __IW_VERSION__ / 10000 ),
+            ( __IW_VERSION__ / 100 % 100 ),
+            ( __IW_VERSION__ % 100 ) ,
+            ( QT_VERSION >> 16 ) & 0xFF,
+            ( QT_VERSION >> 8  ) & 0xFF,
+            ( QT_VERSION       ) & 0xFF );
+      printf("Copyright (C) 2002-2009 CEA\n");
+      return 0;
+    }
+    else if ( a == "--target" || a == "-d" ) {
+      has_target = true;
+      if ( i < argc-1 && !QString( argv[i+1] ).startsWith("-") ) {
+       targetDirPath = argv[i+1]; 
+       i++;
+      }
+      else {
+       targetDirPath = QString::null;
+      }
+    }
+    else if ( a == "--tmp" || a == "-t" ) {
+      has_tmp = true;
+      if ( i < argc-1 && !QString( argv[i+1] ).startsWith("-") ) {
+       tmpDirPath = argv[i+1]; 
+       i++;
+      }
+      else {
+       tmpDirPath = QString::null;
+      }
+    }
+    else if ( a == "--file" || a == "-f" ) {
+      has_xml = true;
+      if ( i < argc-1 && !QString( argv[i+1] ).startsWith("-") ) {
+       xmlFileName = argv[i+1]; 
+       i++;
+      }
+      else {
+       xmlFileName = QString::null;
+      }
+    }
+    else if ( a == "--all-from-sources" || a == "-a" ) {
+      force_src = true;
+    }
+    else if ( a == "--single-directory" || a == "-s" ) {
+      single_dir = true;
+    }
+  }
+  if ( has_xml && xmlFileName.isEmpty() ) {
+    printf("Please specify the configuration XML file!\n");
+    return 1;
+  }
+  if ( has_target && targetDirPath.isEmpty() ) {
+    printf("Please specify the target directory path!\n");
+    return 1;
   }
-  else {
-    QMessageBox::critical( 0, 
-                          QObject::tr( "Error" ), 
-                          QObject::tr( "Can't open config file:\n%1\n\nQuitting...").arg( xmlFileName ), 
-                          QMessageBox::Ok,
-                          QMessageBox::NoButton, 
-                          QMessageBox::NoButton );
+  if ( has_tmp && tmpDirPath.isEmpty() ) {
+    printf("Please specify the temprary directory path!\n");
+    return 1;
+  }
+
+  QApplication a( argc, argv );
+  a.setFont( QFont( "Sans", 12 ) );
+
+  if ( has_xml ) {
+    QFile xmlfile(xmlFileName);
+    if ( !xmlfile.exists() ) {
+      QMessageBox::critical( 0, 
+                            QObject::tr( "Error" ), 
+                            QObject::tr( "Can't open config file:\n%1\n\nQuitting...").arg( xmlFileName ), 
+                            QMessageBox::Ok,
+                            QMessageBox::NoButton, 
+                            QMessageBox::NoButton );
+      return -1;
+    }
   }
-  return result;
+  SALOME_InstallWizard wizard(xmlFileName, targetDirPath, tmpDirPath, force_src, single_dir);
+  a.setMainWidget( &wizard );
+  wizard.show();
+  return a.exec();
 }