// Author : Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)
// Project : SALOME
// Module : Installation Wizard
-// Copyright : 2002-2007 CEA
+// Copyright : 2002-2009 CEA
#ifndef __SALOME_InstallWizard
#define __SALOME_InstallWizard
// This enum describes the possible types of the SALOME installation
enum InstallationType { Binaries, Sources, Compile };
+// This enum describes the possible states of a tristate parameter
+enum BoolTristate { False, True, NotDefined };
/*!
Class Dependancies : Products info
const QString& vers = QString::null,
const QString& descr = QString::null,
const QString& tp = QString::null,
- bool pickup = false )
+ bool pickup = false,
+ BoolTristate woGui = NotDefined )
: smbName( name ),
dependsOn( depend ),
sizeBinaryTotal( Binsize ),
version( vers ),
description( descr ),
type( tp ),
- pickupEnv( pickup ) {}
+ pickupEnv( pickup ),
+ woGuiMode( woGui ) {}
// gets symbolic name
QString getName() const { return smbName; }
QString getType() const { return type; }
// returns true if this product needs to pick-up environment
bool pickUpEnvironment() { return pickupEnv; }
+ // returns true if this product supports installation without GUI mode
+ BoolTristate supportWoGuiMode() { return woGuiMode; }
private:
QString smbName; // symbolic name
QString description; // product's description
QString type; // product's type (salome sources, binaries or prerequisite)
bool pickupEnv; // "Pick-up environment" flag
+ BoolTristate woGuiMode; // support of installation without GUI flag
};
/*!
typedef QMap<QCheckListItem*, Dependancies> MapProducts;
typedef QValueList<Button> ButtonList;
typedef QMap<QString, QString> MapXmlFiles;
+typedef QMap<QString, BoolTristate> MapAttrStates;
/*!
Class SALOME_InstallWizard : Installation Wizard's main window
// constructor
SALOME_InstallWizard( const QString& aXmlFileName = QString::null,
const QString& aTargetDir = QString::null,
- const QString& aTmpDir = QString::null );
+ const QString& aTmpDir = QString::null,
+ const bool aForceSrc = false,
+ const bool aSingleDir = false );
// destructor
virtual ~SALOME_InstallWizard( );
// get base platform to install binaries package
QString getBasePlatform();
// get current platform
- QString currentPlatform();
+ static QStringList currentPlatform();
+ // get application root dir
+ static QString rootDirPath();
// get binaries path
- QString getBinPath() { return binPath; }
+ QString getBinPath() const { return binPath; }
// get sources path
- QString getSrcPath() { return srcPath; }
+ QString getSrcPath() const { return srcPath; }
+ // get platform binaries path
+ QString getPlatformBinPath( const QString& ) const;
// get map of supported platforms and corresponding XML files
MapXmlFiles getXmlMap( const QString& aXmlFileName = QString::null );
// set dependancies
void setDependancies( QCheckListItem* item, Dependancies dep);
+ // executes some actions after finish of installation process (successful or not)
+ void doPostActions( const QString& btnText,
+ const QString& btnAboutInfo );
+
// add button for the <Finish> page
void addFinishButton( const QString& label,
const QString& tooltip,
void setCopyright( const QString& copyright ) { myCopyright = copyright; }
// set license
void setLicense( const QString& license ) { myLicense = license; }
+ // set list of optional libraries
+ void setOptionalLibs( const QString& optlibs ) { myOptLibs = QStringList::split( ",", optlibs ); }
// get version
QString getVersion() { return myVersion; }
QString getCopyright() { return myCopyright; }
// get license
QString getLicense() { return myLicense; }
+ // get list of optional libraries
+ QStringList getOptionalLibs() { return myOptLibs; }
// get platform
- QString getPlatform() { return refPlatform ? refPlatform : curPlatform; }
+ QString getPlatform() { return !refPlatform.isEmpty() ? refPlatform : curPlatform; }
+ // get corresponding XML file
+ QString getXmlFile( const QString& platform ) {
+ return (platformsMap.find( platform ) != platformsMap.end() ) ?
+ platformsMap[ platform ] :
+ QString("");
+ }
// get InstallWizard's name
QString getIWName() { return myIWName; }
void clean(bool rmDir = false);
// Update GUI and check installation errors
void completeInstallation();
+ // Run the modification of SALOME *.la files
+ void runModifyLaFiles();
+ // Run the Fortran libraries checking
+ void runCheckFLib();
protected slots:
// reject slot
void onMoreBtn();
// Slot to update 'Available disk space' field
void updateAvailableSpace();
+ // Slot to take result of modification SALOME *.la files
+ void checkModifyLaResult();
// Slot to take result of Fortran libraries checking
void checkFLibResult();
// Slot to update 'Size' column for modules and prerequisites
void readFromStdout();
// -->something was written to stderr
void readFromStderr();
+ // -->stop installation process if there is an error in stderr
+ void manageInstProc();
private:
QString myIWName; // Installation Wizard's name
QString myLicense; // license info
QString myTargetPath; // target directory path
QString myTmpPath; // temporary directory path
+ QStringList myOptLibs; // list of optional libraries
HelpWindow* helpWindow; // help window
QProcess* shellProcess; // shell process (install script)
QProcess* diskSpaceProc; // shell process (to get available disk space script)
- QProcess* checkFLibProc; // shell process (to get available disk space script)
+ QProcess* modifyLaProc; // shell process (to modify SALOME *.la files script)
+ QProcess* checkFLibProc; // shell process (to check Fortran libraries script)
MapProducts productsMap; // products info (name, dependancies, disk space )
MapXmlFiles extraProducts; // additional products to be installed
QStringList toInstall; // list of products being installed
QStringList notInstall; // list of products being not installed
QStringList prodSequence; // specified list of products being installed
+ MapAttrStates woGuiModules; // map of SALOME modules names, that can support installation without GUI mode
InstallationType installType; // type of the installation
QString curPlatform; // current operating system
QString refPlatform; // referenced operating system (selected by user). It is defined,
QString xmlFileName; // xml file
QString binPath; // binaries path
QString srcPath; // sources path
+ QString oneProdDirName; // name of the single directory for binaries of prerequisites
QString commonPlatform; // platform with universal binaries
- QStringList singleBinPlts; // list of platforms for that the special binary packages are exist
bool moreMode; // advanced mode flag
QWidget* previousPage; // previous page
QString tmpCreated; // created temporary directory
QRadioButton* srcBtn; // install sources button
QRadioButton* srcCompileBtn; // install sources and compile button
QCheckBox* removeSrcBtn; // <Remove sources & tmp files> checkbox
+ bool forceSrc; // Force all products to be compiled from sources
// --> installation platform page
QWidget* platformsPage; // page itself
QButtonGroup* platBtnGrp; // group of platforms for selection
QLabel* requiredSize; // <Total disk space required> label
QLabel* requiredTemp; // <Space required for temporary files> label
QLabel* availableSize; // <Available disk space> label
+ bool singleDir; // Force all SALOME modules to be installed into single directory
// --> prestart page
QWidget* prestartPage; // page itself
QTextEdit* choices; // choice text view
QLineEdit* passedParams; // user can pass data to running script
QTextEdit* installProgress;// contains information about progress of installing selected products
ProgressView* progressView; // displays information about progress of installing selected products
+ QCheckBox* ignoreErrCBox; // checkbox to ignore installation errors
QLabel* statusLab; // displays currently performed action
// --> finish page
QWidget* readmePage; // page itself