Salome HOME
This commit was generated by cvs2git to create tag 'V1_4_0b1'.
[modules/kernel.git] / src / RegistryDisplay / RegWidget.cxx
index 9d02d2f8cb0fec1f12c7240e1cdfafece9e2d0f0..afc79eac91563ac13c72a7944330fa4cf611f9a4 100644 (file)
@@ -52,11 +52,15 @@ using namespace std;
 
 typedef int PIXELS;
 RegWidget* RegWidget::myRegWidgetPtr = 0;
+QString addSlash( const QString& );
+QString findFile( QString filename );
 
 #define BOLD( text ) ( QString( "<b>" ) + QString( text ) + QString( "</b>" ) )
+
 /*!
   Creates components list
 */
+
 Registry::Components_var MakeRegistry( CORBA::ORB_var &orb )
 {
 
@@ -110,13 +114,14 @@ RegWidget::RegWidget(CORBA::ORB_var &orb, QWidget *parent, const char *name )
        _tabWidget(0), _refresh(0), _interval(0),
        myInfoWindow(0), myHelpWindow(0), myIntervalWindow(0)
 {
-  char* dir = getenv( "CSF_ResourcesDefaults" );
+   QString aFile = findFile("default.png");
+ /* char* dir = getenv( "CSF_ResourcesDefaults" );
   QString path( "" );
   if ( dir ) {
     QDir qDir( dir );
     path = qDir.filePath( "default.png" );
-  }
-  QPixmap pm ( path );
+  }*/
+  QPixmap pm ( aFile );
   if ( !pm.isNull() )
     setIcon( pm );
 
@@ -445,7 +450,7 @@ void RegWidget::slotSelectRefresh()
   myIntervalWindow->installEventFilter( this );
   myIntervalWindow->setValue(myRefreshInterval);
   myIntervalWindow->show();
-  connect( myIntervalWindow->Cancel(), SIGNAL( clicked() ), myIntervalWindow, SLOT( reject() ) );
+  connect( myIntervalWindow->Cancel(), SIGNAL( clicked() ), myIntervalWindow, SLOT( close() ) );
   connect( myIntervalWindow->Ok(), SIGNAL( clicked() ), this, SLOT( slotIntervalOk() ) );
   END_OF("slotSelectRefresh");
 }
@@ -574,3 +579,90 @@ void InfoWindow::setText( const QString& text )
 {
   myTextView->setText( text );
 }
+
+static const char* SEPARATOR    = ":";
+
+QString findFile( QString filename )
+{
+  QString dir;
+  char* cenv;
+  
+  // Try ${HOME}/.salome/resources directory
+  cenv = getenv( "HOME" );
+  if ( cenv ) {
+    dir.sprintf( "%s", cenv );
+    if ( !dir.isEmpty() ) {
+      dir = addSlash(dir) ;
+      dir = dir + ".salome" ;
+      dir = addSlash(dir) ;
+      dir = dir + "resources" ;
+      dir = addSlash(dir) ;
+      QFileInfo fileInfo( dir + filename );
+      if ( fileInfo.isFile() && fileInfo.exists() )
+       return fileInfo.filePath();
+    }
+  }
+  // Try ${SALOME_SITE_DIR}/share/salome/resources directory
+  cenv = getenv( "SALOME_SITE_DIR" );
+  if ( cenv ) {
+    dir.sprintf( "%s", cenv );
+    if ( !dir.isEmpty() ) {
+      dir = addSlash(dir) ;
+      dir = dir + "share" ;
+      dir = addSlash(dir) ;
+      cenv = getenv("SALOME_SITE_NAME");
+      if (cenv)  dir = dir + cenv;
+      else       dir = dir + "salome" ;
+      dir = addSlash(dir) ;
+      dir = dir + "resources" ;
+      dir = addSlash(dir) ;
+      QFileInfo fileInfo( dir + filename );
+      if ( fileInfo.isFile() && fileInfo.exists() )
+       return fileInfo.filePath();
+    }
+  }
+  // Try ${SALOME_ROOT_DIR}/share/salome/resources directory
+  cenv = getenv( "SALOME_ROOT_DIR" );
+  if ( cenv ) {
+    dir.sprintf( "%s", cenv );
+    if ( !dir.isEmpty() ) {
+      dir = addSlash(dir) ;
+      dir = dir + "share" ;
+      dir = addSlash(dir) ;
+      dir = dir + "salome" ;
+      dir = addSlash(dir) ;
+      dir = dir + "resources" ;
+      dir = addSlash(dir) ;
+      QFileInfo fileInfo( dir + filename );
+      if ( fileInfo.isFile() && fileInfo.exists() )
+       return fileInfo.filePath();
+    }
+  }
+  // Try CSF_SaloameResources env.var directory ( or directory list )
+  cenv = getenv( "CSF_SalomeResources" );
+  if ( cenv ) {
+    dir.sprintf( "%s", cenv );
+    if ( !dir.isEmpty() ) {
+      QStringList dirList = QStringList::split( SEPARATOR, dir, false ); // skip empty entries
+      for ( int i = 0; i < dirList.count(); i++ ) {
+       QFileInfo fileInfo( addSlash( dirList[ i ] ) + filename );
+       if ( fileInfo.isFile() && fileInfo.exists() )
+         return fileInfo.filePath();
+      }
+    }
+  }
+  return filename;
+}
+QString addSlash( const QString& path )
+{
+  if (!path.isNull()) {
+#ifdef WNT
+    QChar slash ('\\');
+#else
+    QChar slash ('/');
+#endif
+    if ( path.at(path.length()-1) != slash )
+      return path + slash;
+  }
+  return path;
+}