#include <OSD_Function.hxx>
#include <TCollection_AsciiString.hxx>
+static const char* SEPARATOR = ":";
+
extern "C"
{
# include <string.h>
/* find component icon */
QString iconfile = strdup(list_composants[ind].moduleicone) ;
QString modulename = strdup(list_composants[ind].modulename) ;
+ QString moduleusername = strdup(list_composants[ind].moduleusername) ;
+
+ // MESSAGE ( " MODULE = " << modulename )
+ // MESSAGE ( " MODULE icon = " << iconfile )
+ // MESSAGE ( " MODULE username = " << moduleusername )
+
+ if ( mapComponentName.contains( moduleusername ) ) {
+ QMessageBox::warning( this, tr("WRN_WARNING"), QString( moduleusername + " is already associated with " + mapComponentName[moduleusername] + ".\nPlease, change the component username of " + modulename) , tr ("BUT_OK") );
+ continue;
+ }
+ mapComponentName.insert( moduleusername, modulename );
+
resDir = resMgr->findFile(iconfile,modulename) ;
if (resDir)
{
+ MESSAGE ( "resDir" << resDir )
//resDir = QAD_Tools::addSlash(resDir) ;
//QPixmap Icone(resDir+iconfile) ;
QPixmap Icone( QAD_Tools::addSlash( resDir ) + iconfile );
QToolButton * toolb =
- new QToolButton( QIconSet( Icone ), modulename, QString::null, this,
+ new QToolButton( QIconSet( Icone ), moduleusername, QString::null, this,
SLOT( onButtonActiveComponent () ),tbComponent );
toolb->setToggleButton( true );
myComponentButton.append(toolb);
}
if ( !QString(list_composants[ind].modulename).isEmpty() )
- myCombo->insertItem( strdup(list_composants[ind].modulename) );
+ myCombo->insertItem( strdup(list_composants[ind].moduleusername) );
}
return eng._retn();
}
+QString QAD_Desktop::getComponentName(const char *componentUserName)
+{
+ if ( mapComponentName.contains(componentUserName) )
+ return mapComponentName[ componentUserName ] ;
+ else
+ return "";
+}
+
+QString QAD_Desktop::getComponentUserName(const char *componentName)
+{
+ QMap<QString,QString>::Iterator it;
+ for( it = mapComponentName.begin(); it != mapComponentName.end(); ++it )
+ if (it.data() == componentName )
+ return it.key();
+ return "";
+}
+
/*!
gets application Help Window (and creates if necessary)
*/
{
if (!myHelpWindow) {
myHelpWindow = new QAD_HelpWindow();
+
+ QMap<QString,QString>::Iterator it;
+ for( it = mapComponentName.begin(); it != mapComponentName.end(); ++it ) {
+ QCString dir;
+ QString root;
+
+ // look for index.html and set homeDir
+ // 1. $(MODULE_ROOT_DIR)/doc/index.html
+ // 2. $(MODULE_ROOT_DIR)/doc/html/index.html
+ // 3. $(MODULE_ROOT_DIR)/doc/html/html/index.html
+
+ if (dir = getenv( QString( it.data() + "_ROOT_DIR")) ) {
+ root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share") + QAD_Tools::addSlash("salome") + "doc" );
+ if ( QFileInfo( root + "index.html" ).exists() ) {
+ helpContext( root + "index.html", "" );
+ }
+ else {
+ root = QAD_Tools::addSlash( root + "html" );
+ if ( QFileInfo( root + "index.html" ).exists() ) {
+ helpContext( root + "index.html", "" );
+ }
+ else {
+ root = QAD_Tools::addSlash( root + "html" );
+ if ( QFileInfo( root + "index.html" ).exists() ) {
+ helpContext( root + "index.html", "" );
+ }
+ }
+ }
+ }
+ }
+
connect(myHelpWindow, SIGNAL(helpWindowClosed()), this, SLOT(onHelpWindowClosed()));
}
return myHelpWindow;
tr("BUT_OK") );
} else if (myActiveComp != "") {
QApplication::setOverrideCursor( Qt::waitCursor );
- loadComponentData(myActiveComp);
+ loadComponentData(mapComponentName[myActiveComp]);
openStudy->updateObjBrowser(true);
QApplication::restoreOverrideCursor();
}
bool QAD_Desktop::loadComponentData( const QString& compName )
{
// Open component's data in active study if any
- MESSAGE("loadComponentData(): Opening component data")
+ MESSAGE("loadComponentData(): Opening " << compName << " component data ")
if (!myActiveStudy) {
MESSAGE("loadComponentData(): No active study exists")
return false;
}
Engines::Component_var comp ;
- if ( compName.compare("Supervision") == 0 ) {
+ if ( compName.compare("SUPERV") == 0 ) {
comp = getEngine( "SuperVisionContainer", compName) ;
}
else {
}
SALOMEDS::Study_var aStudy = myActiveStudy->getStudyDocument();
- SALOMEDS::SComponent_var SCO = SALOMEDS::SComponent::_narrow(aStudy->FindObject(compName));
+ SALOMEDS::SComponent_var SCO = SALOMEDS::SComponent::_narrow(aStudy->FindObject( getComponentUserName(compName) ));
if (!SCO->_is_nil()) {
if (!CORBA::is_nil(comp)) {
if (SCO->FindAttribute(anAttr, "AttributeName")) {
aName = SALOMEDS::AttributeName::_narrow(anAttr);
name = aName->Value();
- SALOME_ModuleCatalog::Acomponent_var Comp = myCatalogue->GetComponent( name );
+ SALOME_ModuleCatalog::Acomponent_var Comp = myCatalogue->GetComponent( mapComponentName[name] );
if ( !Comp->_is_nil() ) {
SALOME_ModuleCatalog::ListOfComponents_var list_type_composants =
}
typedef bool OneDim1(QAD_Desktop*);
+typedef bool OneDim2(QAD_Desktop*, char*);
/*!
Called to define settings of component.
{
if (!myActiveComp.isEmpty()) {
OSD_Function osdF = mySharedLibrary.DlSymb("SetSettings");
- if ( osdF != NULL ) {
- OneDim1 (*f1) = (bool (*) (QAD_Desktop*)) osdF;
- (*f1)(this);
- }
+ if ( osdF != NULL )
+ if (_islibso)
+ {
+ OneDim1 (*f1) = (bool (*) (QAD_Desktop*)) osdF;
+ (*f1)(this);
+ }
+ else
+ {
+ QString Component =mapComponentName[myActiveComp];
+ OneDim2 (*f1) = (bool (*) (QAD_Desktop*, char*)) osdF;
+ (*f1)(this, (char*)Component.latin1());
+ }
}
}
QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager();
if ( resMgr ) {
QString msg;
- if (!resMgr->loadResources( Component + "GUI", msg ))
+ if (!resMgr->loadResources( Component, msg ))
{
//NRI QCString errMsg;
// errMsg.sprintf( "Do not load all resources for module %sGUI.\n" ,
/* Parse xml file */
myXmlHandler = new QAD_XmlHandler();
myXmlHandler->setMainWindow(this);
- if (!myXmlHandler->setComponent(resMgr->resources(Component + "GUI"))) return false;
+ if (!myXmlHandler->setComponent(resMgr->resources( Component ))) return false;
- QString language = resMgr->language( Component + "GUI" );
+ QString language = resMgr->language( Component );
QString ComponentXml = Component + "_" + language + ".xml";
//ComponentXml = resMgr->resources(Component + "GUI") ;
//ComponentXml = QAD_Tools::addSlash(ComponentXml) ;
- ComponentXml = QAD_Tools::addSlash( resMgr->findFile( ComponentXml, Component + "GUI" ) ) + ComponentXml;
+ ComponentXml = QAD_Tools::addSlash( resMgr->findFile( ComponentXml, Component ) ) + ComponentXml;
QFile file( ComponentXml );
if ( !file.exists() || !file.open( IO_ReadOnly ) ) {
nbToolbars = myActiveMenus->getToolBarList().count();
/* Open Shared Library */
mySharedLibrary = OSD_SharedLibrary();
+ _islibso = false;
QString ComponentLib;
- QCString dir;
+ QCString libs;
QFileInfo fileInfo ;
- bool found = false;
- if ( dir = getenv("SALOME_SITE_DIR")) {
- dir = QAD_Tools::addSlash(dir) ;
- dir = dir + "lib" ;
- dir = QAD_Tools::addSlash(dir) ;
+ QString fileString ;
+ QString dir;
+
+ if ( libs = getenv("LD_LIBRARY_PATH")) {
+ // MESSAGE ( " LD_LIBRARY_PATH : " << libs );
+ QStringList dirList = QStringList::split( SEPARATOR, libs, false ); // skip empty entries
+ for ( int i = dirList.count()-1; i >= 0; i-- ) {
+ dir = dirList[ i ];
#ifdef WNT
- dir = dir + "lib" + Component.latin1() + "GUI.dll" ;
+ fileString = QAD_Tools::addSlash( dir ) + "lib" + Component + "GUI.dll" ;
#else
- dir = dir + "lib" + Component.latin1() + "GUI.so" ;
+ fileString = QAD_Tools::addSlash( dir ) + "lib" + Component + "GUI.so" ;
#endif
- MESSAGE ( " GUI library = " << dir )
- fileInfo.setFile(dir) ;
- if (fileInfo.exists()) {
- ComponentLib = fileInfo.fileName() ;
- found = true;
+
+ fileInfo.setFile(fileString) ;
+ if (fileInfo.exists()) {
+ // MESSAGE ( " GUI library = " << fileString );
+ ComponentLib = fileInfo.fileName() ;
+ _islibso = true;
+ break;
+ }
}
}
-
- if ( (dir = getenv("SALOME_ROOT_DIR")) && !found ) {
- dir = QAD_Tools::addSlash(dir) ;
- dir = dir + "lib" ;
- dir = QAD_Tools::addSlash(dir) ;
+
+ if (!_islibso) // component GUI could be in PyQt, use generic library
+ {
+ MESSAGE("GUI library not found, trying generic library for PyQt GUI");
+ bool found = false;
+ if (dir = getenv("KERNEL_ROOT_DIR"))
+ {
+ dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + "lib" ;
+ dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + "salome" ;
+ dir = QAD_Tools::addSlash(dir) ;
#ifdef WNT
- dir = dir + "lib" + Component.latin1() + "GUI.dll" ;
+ dir = dir + "libSalomePyQtcmodule.dll" ;
#else
- dir = dir + "lib" + Component.latin1() + "GUI.so" ;
+ dir = dir + "libSalomePyQtcmodule.so" ;
#endif
- MESSAGE ( " GUI library = " << dir )
- fileInfo.setFile(dir) ;
- if (fileInfo.exists()) {
- ComponentLib = fileInfo.fileName() ;
- found = true;
+ MESSAGE ( " GUI library = " << dir );
+ fileInfo.setFile(dir) ;
+ if (fileInfo.exists())
+ {
+ ComponentLib = fileInfo.fileName() ;
+ found = true;
+ }
+ }
+ if ( !found )
+ {
+ QMessageBox::critical( this,
+ tr("ERR_ERROR"),
+ tr("ERR_LIBGUI" ).arg(Component) );
+ return false;
+ }
}
- }
mySharedLibrary.SetName(TCollection_AsciiString((char*)ComponentLib.latin1()).ToCString());
ok = mySharedLibrary.DlOpen(OSD_RTLD_LAZY);
/* SETTINGS */
OSD_Function osdF = mySharedLibrary.DlSymb("SetSettings");
- if ( osdF != NULL ) {
- OneDim1 (*f1) = (bool (*) (QAD_Desktop*)) osdF;
- (*f1)(this);
- }
+ if ( osdF != NULL )
+ if (_islibso)
+ {
+ OneDim1 (*f1) = (bool (*) (QAD_Desktop*)) osdF;
+ (*f1)(this);
+ }
+ else
+ {
+ OneDim2 (*f1) = (bool (*) (QAD_Desktop*, char*)) osdF;
+ (*f1)(this, (char*)Component.latin1());
+ }
+
+
/* COMPONENT INTERFACE */
SALOME_ModuleCatalog::Acomponent_ptr aComponent =
}
myActiveStudy->setMessage(QString("Component : ") +
- aComponent->componentname() + " created " );
+ aComponent->componentusername() + " created " );
myActiveStudy->setMessage(QString("Type : ") +
QString::number(aComponent->component_type()));
myActiveStudy->setMessage(QString("Constraint : ") +
dir = QAD_Tools::addSlash(dir) ;
dir = dir + "lib" ;
dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + "salome" ;
+ dir = QAD_Tools::addSlash(dir) ;
#ifdef WNT
dir = dir + "libToolsGUI.dll" ;
#else
dir = QAD_Tools::addSlash(dir) ;
dir = dir + "lib" ;
dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + "salome" ;
+ dir = QAD_Tools::addSlash(dir) ;
+#ifdef WNT
+ dir = dir + "libToolsGUI.dll" ;
+#else
+ dir = dir + "libToolsGUI.so" ;
+#endif
+ MESSAGE ( " GUI library = " << dir );
+ fileInfo.setFile(dir) ;
+ if (fileInfo.exists()) {
+ ToolsLib = fileInfo.fileName() ;
+ found = true;
+ }
+ }
+
+ if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
+ dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + "lib" ;
+ dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + "salome" ;
+ dir = QAD_Tools::addSlash(dir) ;
#ifdef WNT
dir = dir + "libToolsGUI.dll" ;
#else
dir = QAD_Tools::addSlash(dir) ;
dir = dir + "lib" ;
dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + "salome" ;
+ dir = QAD_Tools::addSlash(dir) ;
dir = dir + QAD_XmlHandler::_bibmap[ id ].latin1() ;
MESSAGE ( " GUI library = " << dir );
fileInfo.setFile(dir) ;
dir = QAD_Tools::addSlash(dir) ;
dir = dir + "lib" ;
dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + "salome" ;
+ dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + QAD_XmlHandler::_bibmap[ id ].latin1() ;
+ MESSAGE ( " GUI library = " << dir );
+ fileInfo.setFile(dir) ;
+ if (fileInfo.exists()) {
+ ToolsLib = fileInfo.fileName() ;
+ found = true;
+ }
+ }
+
+ if ( (dir = getenv("KERNEL_ROOT_DIR")) && !found ) {
+ dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + "lib" ;
+ dir = QAD_Tools::addSlash(dir) ;
+ dir = dir + "salome" ;
+ dir = QAD_Tools::addSlash(dir) ;
dir = dir + QAD_XmlHandler::_bibmap[ id ].latin1() ;
MESSAGE ( " GUI library = " << dir );
fileInfo.setFile(dir) ;
if (!myXmlHandler->myIdList.IsEmpty()) clearMenus();
if ( myCombo->currentText() != component )
myCombo->setCurrentText( component );
- if (component.compare(QString("Salome"))!= 0) {
+ //NRI if (component.compare(QString("Salome"))!= 0) {
+ if (component.compare( getComponentUserName( "KERNEL" ) )!= 0) {
// QApplication::setOverrideCursor( Qt::waitCursor );
myActiveComp = component;
}
myActiveStudy->Selection( component );
- if ( !loadComponent(component) ) {
+ if ( !loadComponent(mapComponentName[component]) ) {
myCombo->setCurrentItem (0);
for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) {
aButton->setOn(false);
}
// Open new component's data in active study if any
- if(isLoadData) loadComponentData(component);
+ if(isLoadData) loadComponentData(mapComponentName[component]);
oldSel->Clear();
myActiveStudy->updateObjBrowser(true);
} else { // component == "Salome"
myActiveComp = "";
- myActiveStudy->Selection( "Salome" );
+ //NRI myActiveStudy->Selection( "Salome" );
+ myActiveStudy->Selection( getComponentUserName( "KERNEL" ) );
SALOME_Selection* Sel = SALOME_Selection::Selection( myActiveStudy->getSelection() );
Sel->ClearIObjects();
for ( QToolButton* aButton=myComponentButton.first(); aButton; aButton=myComponentButton.next() ) {
/* Help Contents */
void QAD_Desktop::helpContents()
{
- getHelpWindow()->contents();
+ if (myActiveComp == "")
+ myActiveComp = getComponentUserName( "KERNEL" ); //NRI "Salome";
+
+ QCString dir;
+ QString root;
+ if (dir = getenv( getComponentName( myActiveComp ) + "_ROOT_DIR")) {
+ root = QAD_Tools::addSlash( QAD_Tools::addSlash(dir) + QAD_Tools::addSlash("share") + QAD_Tools::addSlash("salome") + "doc" );
+ if ( QFileInfo( root + "index.html" ).exists() ) {
+ helpContext( root + "index.html", "" );
+ }
+ else {
+ root = QAD_Tools::addSlash( root + "html" );
+ if ( QFileInfo( root + "index.html" ).exists() ) {
+ helpContext( root + "index.html", "" );
+ }
+ else {
+ root = QAD_Tools::addSlash( root + "html" );
+ if ( QFileInfo( root + "index.html" ).exists() ) {
+ helpContext( root + "index.html", "" );
+ }
+ }
+ }
+ }
+
+ //NRI getHelpWindow()->contents();
getHelpWindow()->show();
getHelpWindow()->raise();
getHelpWindow()->setActiveWindow();