Salome HOME
salome_pluginsmanager less verbose
[modules/gui.git] / src / LightApp / LightApp_Application.cxx
index f50576ea8d68e4be8a404d2945d9a90dcf2dbc87..b105560ba3304faa33aa51548da99897a29bae77 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -35,8 +35,9 @@
 #endif
 
 #ifndef DISABLE_PYCONSOLE
-  #include "LightApp_PyInterp.h" // WARNING! This include must be the first!
-  #include <PyConsole_Console.h>
+  #include "PyConsole_Interp.h"
+  #include "LightApp_PyEditor.h"
+  #include "PyConsole_Console.h"
 #endif
 
 #include "LightApp_Application.h"
 
 #include <SALOME_Event.h>
 
+#ifdef USE_SALOME_STYLE
 #include <Style_Salome.h>
 #include <Style_PrefDlg.h>
+#endif // USE_SALOME_STYLE
 
 #include <CAM_Module.h>
 #include <CAM_DataModel.h>
@@ -82,6 +85,7 @@
 #include <SUIT_ViewWindow.h>
 
 #include <Qtx.h>
+#include <QtxFontEdit.h>
 #include <QtxToolBar.h>
 #include <QtxTreeView.h>
 #include <QtxMRUAction.h>
@@ -242,21 +246,23 @@ int LightApp_Application::lastStudyId = 0;
 //since the 'toolbar marker' is not unique, find index of first occurrence of the
 //'toolbar marker' in the array and check that next string is name of the toolbar
 
-int getToolbarMarkerIndex(QByteArray input, const QStringList& aFlags) {
-  int aResult = -1,tmp = 0;
-  int inputLen = input.length();
-  QDataStream anInputData(&input, QIODevice::ReadOnly);
-  while(tmp < inputLen) {
-      tmp = input.indexOf(QToolBarMarker, tmp + 1);
-      if(tmp < 0 )
+namespace
+{
+  int getToolbarMarkerIndex( QByteArray input, const QStringList& aFlags ) {
+    int aResult = -1,tmp = 0;
+    int inputLen = input.length();
+    QDataStream anInputData( &input, QIODevice::ReadOnly );
+    while ( tmp < inputLen ) {
+      tmp = input.indexOf( QToolBarMarker, tmp + 1 );
+      if ( tmp < 0 )
        break;
-      anInputData.device()->seek(tmp);
+      anInputData.device()->seek( tmp );
       uchar mark;
-      anInputData>>mark;
+      anInputData >> mark;
       int lines;
       anInputData >> lines;
 
-      if(lines == 0 && anInputData.atEnd()){
+      if ( lines == 0 && anInputData.atEnd() ) {
        //Case then array doesn't contain information about toolbars,
        aResult = tmp;
        break;
@@ -267,13 +273,26 @@ int getToolbarMarkerIndex(QByteArray input, const QStringList& aFlags) {
       int cnt;
       anInputData >> cnt;
       QString str;
-      anInputData>>str;
-      if(aFlags.contains(str)) {
+      anInputData >> str;
+      if ( aFlags.contains( str ) ) {
        aResult = tmp;
        break;
       }
     }        
-  return aResult;
+    return aResult;
+  }
+
+  QString langToName( const QString& lang )
+  {
+    // special processing for English language to avoid such result as "American English"
+    // as Qt cannot just say "English"
+    QString result;
+    if ( lang == "en" )
+      result = "English";
+    else
+      result = QLocale( lang ).nativeLanguageName();
+    return result;
+  }
 }
 
 /*!
@@ -417,6 +436,7 @@ LightApp_Application::LightApp_Application()
  */
 LightApp_Application::~LightApp_Application()
 {
+  savePreferences();
   delete mySelMgr;
   delete myScreenHelper;
 }
@@ -439,9 +459,10 @@ void LightApp_Application::start()
 /*!Closeapplication.*/
 void LightApp_Application::closeApplication()
 {
+#ifndef DISABLE_QTXWEBBROWSER
   QProcess::startDetached( "HelpBrowser",
                            QStringList() << QString( "--remove=%1" ).arg( QApplication::instance()->applicationPid() ) );
-
+#endif  
   CAM_Application::closeApplication();
 }
 
@@ -520,6 +541,9 @@ bool LightApp_Application::activateModule( const QString& modName )
       objectBrowser()->setRoot( activeStudy()->root() );
     updateObjectBrowser( true );
   }
+
+  if ( activeModule() ) activeModule()->updateModuleVisibilityState();
+
   return true;
 }
 
@@ -776,8 +800,10 @@ void LightApp_Application::createActions()
   createMenu( MRUId, fileMenu, 100, -1 );
   createMenu( separator(), fileMenu, -1, 100, -1 );
 
+#ifdef USE_SALOME_STYLE
   createAction( StyleId, tr( "TOT_THEME" ), QIcon(), tr( "MEN_DESK_THEME" ), tr( "PRP_THEME" ),
                 0, desk, false, this, SLOT( onStylePreferences() ) );
+#endif // USE_SALOME_STYLE
 
   createAction( FullScreenId, tr( "TOT_FULLSCREEN" ), QIcon(), tr( "MEN_DESK_FULLSCREEN" ), tr( "PRP_FULLSCREEN" ),
                 Qt::Key_F11, desk, false, this, SLOT( onFullScreen() ) );
@@ -785,7 +811,9 @@ void LightApp_Application::createActions()
 
   int viewMenu = createMenu( tr( "MEN_DESK_VIEW" ), -1 );
   createMenu( separator(), viewMenu, -1, 20, -1 );
+#ifdef USE_SALOME_STYLE
   createMenu( StyleId, viewMenu, 20, -1 );
+#endif // USE_SALOME_STYLE
   createMenu( FullScreenId, viewMenu, 20, -1 );
 
   int modTBar = createTool( tr( "INF_TOOLBAR_MODULES" ),    // title (language-dependant)
@@ -979,6 +1007,7 @@ void LightApp_Application::onHelpAbout()
 */
 void LightApp_Application::onSelection()
 {
+  //MESSAGE("onSelection")
   onSelectionChanged();
 
   if ( activeModule() && activeModule()->inherits( "LightApp_Module" ) )
@@ -1123,8 +1152,12 @@ void LightApp_Application::onHelpContentsModule()
   anApp.append( quote );
 #endif
   QString aParams = resMgr->stringValue("ExternalBrowser", "parameters");
+#if DISABLE_QTXWEBBROWSER
+  bool useExtBrowser = true;
+#else  
   bool useExtBrowser = resMgr->booleanValue("ExternalBrowser", "use_external_browser", false );
-
+#endif
+  
   if( useExtBrowser ) {
     if ( !anApp.isEmpty() ) {
       RunBrowser* rs = new RunBrowser( this, anApp, aParams, helpFile );
@@ -1193,7 +1226,11 @@ void LightApp_Application::onHelpContextModule( const QString& theComponentName,
         anApp.append( quote );
 #endif
 
+#if DISABLE_QTXWEBBROWSER
+  bool useExtBrowser = true;
+#else  
   bool useExtBrowser = resMgr->booleanValue("ExternalBrowser", "use_external_browser", false );
+#endif
 
   if(useExtBrowser) {
     QString aParams = resMgr->stringValue("ExternalBrowser", "parameters");
@@ -1425,19 +1462,31 @@ SUIT_ViewManager* LightApp_Application::getViewManager( const QString& vmType, c
 {
   SUIT_ViewManager* aVM = viewManager( vmType );
   SUIT_ViewManager* anActiveVM = CAM_Application::activeViewManager();
-
+  MESSAGE("vmType: " << vmType.toStdString() << " aVM: " << aVM << " anActiveVM: " << anActiveVM );
   if ( anActiveVM && anActiveVM->getType() == vmType )
-    aVM = anActiveVM;
+    {
+      MESSAGE("aVM = anActiveVM");
+      aVM = anActiveVM;
+    }
 
   if ( aVM && create )
   {
     if ( !aVM->getActiveView() )
-      aVM->createView();
+      {
+        MESSAGE("aVM->createView()");
+        aVM->createView();
+      }
     else
-      desktop()->setActiveWindow( aVM->getActiveView() );
+      {
+        MESSAGE("desktop()->setActiveWindow: " << aVM->getActiveView());
+        desktop()->setActiveWindow( aVM->getActiveView() );
+      }
   }
   else if ( create )
-    aVM = createViewManager( vmType );
+    {
+      MESSAGE("aVM = createViewManager( vmType )");
+      aVM = createViewManager( vmType );
+    }
 
   return aVM;
 }
@@ -1800,12 +1849,10 @@ void LightApp_Application::studyCreated( SUIT_Study* s )
 }
 
 /*!Gets file filter.
- *\retval QString "(*.bin)"
+ *\retval QString "(*.hdf)"
  */
-QString LightApp_Application::getFileFilter() const
+QString LightApp_Application::getFileFilter( bool /*open*/) const
 {
-  //return "(*.bin)";
-  // HDF persistence
   return "(*.hdf)";
 }
 
@@ -2012,8 +2059,11 @@ QWidget* LightApp_Application::createWindow( const int flag )
 
     // Create OBSelector
     new LightApp_OBSelector( ob, mySelMgr );
-
+#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
     ob->treeView()->header()->setResizeMode(SUIT_DataObject::VisibilityId, QHeaderView::Fixed);
+#else
+    ob->treeView()->header()->setSectionResizeMode(SUIT_DataObject::VisibilityId, QHeaderView::Fixed);
+#endif
     ob->treeView()->header()->moveSection(SUIT_DataObject::NameId,SUIT_DataObject::VisibilityId);
     ob->treeView()->setColumnWidth(SUIT_DataObject::VisibilityId, VISIBILITY_COLUMN_WIDTH);
     ob->setProperty( "shortcut", QKeySequence( "Alt+Shift+O" ) );
@@ -2023,15 +2073,14 @@ QWidget* LightApp_Application::createWindow( const int flag )
 #ifndef DISABLE_PYCONSOLE
   else  if ( flag == WT_PyConsole )
   {
-    PyConsole_Console* pyCons = new PyConsole_EnhConsole( desktop(), getPyInterp() );
+    PyConsole_Console* pyCons = new PyConsole_Console( desktop(), new LightApp_PyEditor( getPyInterp() ) );
     pyCons->setObjectName( "pythonConsole" );
     pyCons->setWindowTitle( tr( "PYTHON_CONSOLE" ) );
-    pyCons->setFont(resourceMgr()->fontValue( "PyConsole", "font" ));
-    pyCons->setIsShowBanner(resourceMgr()->booleanValue( "PyConsole", "show_banner", true ));
+    pyCons->setFont( resMgr->fontValue( "PyConsole", "font" ) );
+    pyCons->setIsShowBanner( resMgr->booleanValue( "PyConsole", "show_banner", true ) );
+    pyCons->setAutoCompletion( resMgr->booleanValue( "PyConsole", "auto_completion", true ) );
     pyCons->setProperty( "shortcut", QKeySequence( "Alt+Shift+P" ) );
-
     wid = pyCons;
-    pyCons->connectPopupRequest( this, SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) );
   }
 #endif
   else if ( flag == WT_LogWindow )
@@ -2207,10 +2256,15 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
                                           LightApp_Preferences::Selector, "language", "language" );
   QStringList aLangs = SUIT_Session::session()->resourceMgr()->stringValue( "language", "languages", "en" ).split( "," );
   QList<QVariant> aIcons;
+  QList<QVariant> aNumbers;
+  QStringList aTitles;
   foreach ( QString aLang, aLangs ) {
     aIcons << QPixmap( QString( ":/images/%1" ).arg( aLang ) );
+    aNumbers << aLang;
+    aTitles << langToName( aLang );
   }
-  pref->setItemProperty( "strings", aLangs, curLang );
+  pref->setItemProperty( "strings", aTitles, curLang );
+  pref->setItemProperty( "ids",     aNumbers, curLang );
   pref->setItemProperty( "icons",   aIcons, curLang );
   pref->setItemProperty( "restart",  true, curLang );
 
@@ -2238,6 +2292,7 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
   // .... -> ascii save mode
   pref->addPreference( tr( "PREF_ASCII_FILE" ), studyGroup, LightApp_Preferences::Bool, "Study", "ascii_file" );
   // .... -> store windows geometry
+  pref->addPreference( tr( "PREF_LOAD_LIGHT" ), studyGroup, LightApp_Preferences::Bool, "Study", "autoload_light_modules" );
   pref->addPreference( tr( "PREF_STORE_POS" ),  studyGroup, LightApp_Preferences::Bool, "Study", "store_positions" );
   pref->addPreference( "", studyGroup, LightApp_Preferences::Space );
   pref->addPreference( tr( "PREF_STORE_TOOL_POS" ),  studyGroup, LightApp_Preferences::Bool, "Study", "store_tool_positions" );
@@ -2250,7 +2305,12 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
   // ... "Study properties" group <<end>>
 
   // ... "Help browser" group <<start>>
+#ifndef DISABLE_QTXWEBBROWSER
   int extgroup = pref->addPreference( tr( "PREF_GROUP_EXT_BROWSER" ), genTab, LightApp_Preferences::Auto, "ExternalBrowser", "use_external_browser");
+#else
+  int extgroup = pref->addPreference( tr( "PREF_GROUP_EXT_BROWSER" ), genTab );
+#endif
+
 #ifdef WIN32
   QString platform = "winapplication";
 #else
@@ -2265,10 +2325,13 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
 
   // ... "Python console properties" group <<start>>
   int pythonConsoleGroup = pref->addPreference( tr( "PREF_GROUP_PY_CONSOLE" ), genTab );
+  pref->setItemProperty( "columns", 2, pythonConsoleGroup );
   // .... -> font
   pref->addPreference( tr( "PREF_FONT" ), pythonConsoleGroup, LightApp_Preferences::Font, "PyConsole", "font" );
   // .... -> show banner
   pref->addPreference( tr( "PREF_SHOW_BANNER" ), pythonConsoleGroup, LightApp_Preferences::Bool, "PyConsole", "show_banner" );
+  // .... -> auto-completion
+  pref->addPreference( tr( "PREF_AUTO_COMPLETION" ), pythonConsoleGroup, LightApp_Preferences::Bool, "PyConsole", "auto_completion" );
   // ... "Python console properties" group <<end>>
 
   // ... "MRU" preferences group <<start>>
@@ -2515,6 +2578,61 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
   pref->setItemProperty( "step", 0.1, scaleFactor );
   // ... "Clipping" group <<end>>
 
+  // ... "Ray tracing" group <<start>>
+  int occRayTracingGroup = pref->addPreference( tr( "PREF_GROUP_RAY_TRACING" ), occGroup );
+  int rtPref = pref->addPreference( "", occRayTracingGroup, LightApp_Preferences::Frame );
+  pref->setItemProperty( "columns", 2, rtPref );
+  // .... -> depth
+  int rt_depth = pref->addPreference( tr( "PREF_RAY_TRACING_DEPTH" ), rtPref,
+               LightApp_Preferences::IntSpin, "OCCViewer", "rt_depth" );
+  pref->setItemProperty( "min", 1, rt_depth );
+  pref->setItemProperty( "max", 10, rt_depth );
+  pref->setItemProperty( "step", 1, rt_depth );
+  pref->addPreference( "", rtPref, LightApp_Preferences::Frame );
+  // .... -> specular reflections
+  pref->addPreference( tr( "PREF_RAY_TRACING_REFLECTION" ), rtPref,
+               LightApp_Preferences::Bool, "OCCViewer", "rt_reflection" );
+  // .... -> adaptive anti-aliasing
+  pref->addPreference( tr( "PREF_RAY_TRACING_ANTIALIASING" ), rtPref,
+               LightApp_Preferences::Bool, "OCCViewer", "rt_antialiasing" );
+  // .... -> shadows rendering
+  pref->addPreference( tr( "PREF_RAY_TRACING_SHADOW" ), rtPref,
+               LightApp_Preferences::Bool, "OCCViewer", "rt_shadow" );
+  // .... -> transparent shadow
+  pref->addPreference( tr( "PREF_RAY_TRACING_TRANS_SHADOW" ), rtPref,
+               LightApp_Preferences::Bool, "OCCViewer", "rt_trans_shadow" );
+  // ... "Ray tracing" group <<end>>
+
+  // ... "Light source" group <<start>>
+  int occLightGroup = pref->addPreference( tr( "PREF_GROUP_LIGHT" ), occGroup );
+  // .... -> light color
+  pref->addPreference( tr( "PREF_LIGHT_COLOR" ), occLightGroup,
+               LightApp_Preferences::Color, "OCCViewer", "light_color" );
+  int directionPref = pref->addPreference( "", occLightGroup, LightApp_Preferences::Frame );
+  pref->setItemProperty( "columns", 3, directionPref );
+  // .... -> light direction (dx component)
+  int light_dx = pref->addPreference( tr( "Dx" ), directionPref,
+               LightApp_Preferences::DblSpin, "OCCViewer", "light_dx" );
+  pref->setItemProperty( "precision", 2, light_dx );
+  pref->setItemProperty( "min", -1.0E03, light_dx );
+  pref->setItemProperty( "max", 1.0E03, light_dx );
+  pref->setItemProperty( "step", 0.1, light_dx );
+  // .... -> light direction (dy component)
+  int light_dy = pref->addPreference( tr( "Dy" ), directionPref,
+               LightApp_Preferences::DblSpin, "OCCViewer", "light_dy" );
+  pref->setItemProperty( "precision", 2, light_dy );
+  pref->setItemProperty( "min", -1.0E03, light_dy );
+  pref->setItemProperty( "max", 1.0E03, light_dy );
+  pref->setItemProperty( "step", 0.1, light_dy );
+  // .... -> light direction (dz component)
+  int light_dz = pref->addPreference( tr( "Dz" ), directionPref,
+               LightApp_Preferences::DblSpin, "OCCViewer", "light_dz" );
+  pref->setItemProperty( "precision", 2, light_dz );
+  pref->setItemProperty( "min", -1.0E03, light_dz );
+  pref->setItemProperty( "max", 1.0E03, light_dz );
+  pref->setItemProperty( "step", 0.1, light_dz );
+  // ... "Light source" group <<end>>
+
   // ... -> empty frame (for layout) <<start>>
   int occGen = pref->addPreference( "", occGroup, LightApp_Preferences::Frame );
   pref->setItemProperty( "margin",  0, occGen );
@@ -2793,8 +2911,9 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
   int pyeditTab = pref->addPreference( tr( "PREF_TAB_PYEDITOR" ), salomeCat );
   // ... "Font settings" group <<start>>
   int pyFontGroup = pref->addPreference( tr( "PREF_GROUP_PY_FONT" ), pyeditTab );
-  pref->addPreference( tr( "PREF_PY_FONT" ), pyFontGroup,
-    LightApp_Preferences::Font, "PyEditor", "Font" );
+  int pyFont = pref->addPreference( tr( "PREF_PY_FONT" ), pyFontGroup,
+                                    LightApp_Preferences::Font, "PyEditor", "Font" );
+  pref->setItemProperty( "features", QtxFontEdit::Family | QtxFontEdit::Size | QtxFontEdit::UserSize, pyFont );
   // ... "Font settings" group <<end>>
   // ... "Display settings" group <<start>>
   int pyDispGroup = pref->addPreference( tr( "PREF_GROUP_PY_DISPLAY" ), pyeditTab );
@@ -3516,6 +3635,9 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
     else if ( param=="show_banner" ) {
       pythonConsole()->setIsShowBanner( resMgr->booleanValue( "PyConsole", "show_banner", true ) );
     }
+    else if ( param=="auto_completion" ) {
+      pythonConsole()->setAutoCompletion( resMgr->booleanValue( "PyConsole", "auto_completion", true ) );
+    }
   }
 #endif
 
@@ -3578,39 +3700,6 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
     }
   }
 #endif
-
-#ifndef DISABLE_PYVIEWER
-  if ( sec == QString( "PyViewer" ) && ( param == QString( "HighlightCurrentLine" ) ||
-                                         param == QString( "LineNumberArea" ) ||
-                                         param == QString( "TextWrapping" ) ||
-                                         param == QString( "CenterCursorOnScroll" ) ||
-                                         param == QString( "TabSpaceVisible" ) ||
-                                         param == QString( "TabSize" ) ||
-                                         param == QString( "VerticalEdge" ) ||
-                                         param == QString( "NumberColumns" ) ||
-                                         param == QString( "Font" ) ) )
-  {
-    QList<SUIT_ViewManager*> lst;
-    viewManagers( PyViewer_Viewer::Type(), lst );
-    QListIterator<SUIT_ViewManager*> itPy( lst );
-    while ( itPy.hasNext() )
-    {
-      SUIT_ViewManager* viewMgr = itPy.next();
-      SUIT_ViewModel* vm = viewMgr->getViewModel();
-      if ( !vm || !vm->inherits( "PyViewer_Viewer" ) )
-        continue;
-
-      PyViewer_Viewer* pyEditVM = dynamic_cast<PyViewer_Viewer*>( vm );
-
-      viewMgr->setViewModel( vm );
-      PyViewer_ViewWindow* pyView = dynamic_cast<PyViewer_ViewWindow*>( viewMgr->getActiveView() );
-      if( pyView )
-      {
-        pyView->setPreferences();
-      }
-    }
-  }
-#endif
 }
 
 /*!
@@ -3955,7 +4044,7 @@ void LightApp_Application::loadDockWindowsState()
   }
 
   if(dwMap) {
-    QList<QDockWidget*> dwList = qFindChildren<QDockWidget*>( desktop() );
+    QList<QDockWidget*> dwList = desktop()->findChildren<QDockWidget*>();
     for ( QList<QDockWidget*>::iterator dit = dwList.begin(); dit != dwList.end(); ++dit )
       {
        QDockWidget* dw = *dit;
@@ -4008,14 +4097,14 @@ void LightApp_Application::saveDockWindowsState()
   QMap<QString, bool> tbMap, dwMap;
   dockWindowsState( visArr, tbMap, dwMap );
 
-  QList<QToolBar*> tbList = qFindChildren<QToolBar*>( desktop() );
+  QList<QToolBar*> tbList = desktop()->findChildren<QToolBar*>();
   for ( QList<QToolBar*>::iterator it = tbList.begin(); it != tbList.end(); ++it )
   {
     QToolBar* tb = *it;
     tbMap.insert( tb->objectName(), tb->toggleViewAction()->isChecked() );
   }
 
-  QList<QDockWidget*> dwList = qFindChildren<QDockWidget*>( desktop() );
+  QList<QDockWidget*> dwList = desktop()->findChildren<QDockWidget*>();
   for ( QList<QDockWidget*>::iterator it = dwList.begin(); it != dwList.end(); ++it )
   {
     QDockWidget* wid = *it;
@@ -4245,10 +4334,12 @@ void LightApp_Application::onMRUActivated( const QString& name )
 
 void LightApp_Application::onStylePreferences()
 {
+#ifdef USE_SALOME_STYLE
   Style_PrefDlg dlg( desktop() );
   dlg.exec();
 
   resourceMgr()->setValue( "Style", "use_salome_style", Style_Salome::isActive() );
+#endif // USE_SALOME_STYLE
 }
 
 void LightApp_Application::onFullScreen(){
@@ -4378,8 +4469,10 @@ bool LightApp_Application::isLibExists( const QString& moduleTitle ) const
   bool isPythonLightModule = lib.contains("SalomePyQtGUILight");
 
   QStringList paths;
-#ifdef WIN32
+#if defined(WIN32)
   paths = QString(::getenv( "PATH" )).split( ";", QString::SkipEmptyParts );
+#elif defined(__APPLE__)
+  paths = QString(::getenv( "DYLD_LIBRARY_PATH" )).split( ":", QString::SkipEmptyParts );
 #else
   paths = QString(::getenv( "LD_LIBRARY_PATH" )).split( ":", QString::SkipEmptyParts );
 #endif
@@ -4802,7 +4895,7 @@ void LightApp_Application::onDesktopMessage( const QString& message )
 QList<QToolBar*> LightApp_Application::findToolBars( const QStringList& names )
 {
   QList<QToolBar*> aResult;
-  QList<QToolBar*> tbList = qFindChildren<QToolBar*>( desktop() );
+  QList<QToolBar*> tbList = desktop()->findChildren<QToolBar*>();
   for ( QList<QToolBar*>::iterator tit = tbList.begin(); tit != tbList.end(); ++tit ) {
     QToolBar* tb = *tit;    
     QObject* po = Qtx::findParent( tb, "QMainWindow" );
@@ -5066,14 +5159,16 @@ bool LightApp_Application::checkExistingDoc()
 PyConsole_Interp* LightApp_Application::getPyInterp()
 {
   static PyConsole_Interp* myInterp = 0;
-  if ( !myInterp )
+  if ( !myInterp ) {
     myInterp = createPyInterp();
+    myInterp->initialize();
+  }
   return myInterp;
 }
 
 PyConsole_Interp* LightApp_Application::createPyInterp()
 {
-  return new LightApp_PyInterp();
+  return new PyConsole_Interp();
 }
 
 #endif // DISABLE_PYCONSOLE