-// Copyright (C) 2007-2014 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
#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>
#include <SUIT_ViewWindow.h>
#include <Qtx.h>
+#include <QtxFontEdit.h>
#include <QtxToolBar.h>
#include <QtxTreeView.h>
#include <QtxMRUAction.h>
#ifndef DISABLE_OCCVIEWER
#include <OCCViewer_ViewManager.h>
#include <OCCViewer_ViewFrame.h>
+ #include <OCCViewer_ViewPort3d.h>
#ifndef DISABLE_SALOMEOBJECT
#include <SOCC_ViewModel.h>
#else
#include "PVViewer_ViewModel.h"
#endif
+#ifndef DISABLE_PYVIEWER
+ #include <PyViewer_ViewManager.h>
+ #include <PyViewer_ViewModel.h>
+ #include <PyViewer_ViewWindow.h>
+#endif
+
#define VISIBILITY_COLUMN_WIDTH 25
//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;
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;
+ }
}
/*!
myAutoSaveTimer->setSingleShot( true );
connect( myAutoSaveTimer, SIGNAL( timeout() ), this, SLOT( onSaveDoc() ) );
+ //connect( this, SIGNAL( moving() ), this, SLOT( onMoved() ) );
+
SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
QPixmap aLogo = aResMgr->loadPixmap( "LightApp", tr( "APP_DEFAULT_ICO" ), false );
*/
LightApp_Application::~LightApp_Application()
{
+ savePreferences();
delete mySelMgr;
delete myScreenHelper;
}
/*!Closeapplication.*/
void LightApp_Application::closeApplication()
{
+#ifndef DISABLE_QTXWEBBROWSER
QProcess::startDetached( "HelpBrowser",
QStringList() << QString( "--remove=%1" ).arg( QApplication::instance()->applicationPid() ) );
-
+#endif
CAM_Application::closeApplication();
}
updateWindows();
updateViewManagers();
- if ( activeStudy() && activeStudy()->root() && objectBrowser() && objectBrowser()->root() != activeStudy()->root() ) {
- objectBrowser()->setRoot( activeStudy()->root() );
+ if ( activeStudy() && activeStudy()->root() && objectBrowser() ) {
+ if ( objectBrowser()->root() != activeStudy()->root() )
+ objectBrowser()->setRoot( activeStudy()->root() );
updateObjectBrowser( true );
}
+
+ if ( activeModule() ) activeModule()->updateModuleVisibilityState();
+
return true;
}
createActionForViewer( NewQxSceneViewId, newWinMenu, QString::number( 4 ), Qt::ALT+Qt::Key_S );
#endif
#ifndef DISABLE_GRAPHICSVIEW
- createActionForViewer( NewGraphicsViewId, newWinMenu, QString::number( 5 ), Qt::ALT+Qt::Key_R );
+ createActionForViewer( NewGraphicsViewId, newWinMenu, QString::number( 5 ), Qt::ALT+Qt::Key_C );
#endif
#ifndef DISABLE_PVVIEWER
- createActionForViewer( NewPVViewId, newWinMenu, QString::number( 6 ), Qt::ALT+Qt::Key_W );
+ createActionForViewer( NewPVViewId, newWinMenu, QString::number( 6 ), Qt::ALT+Qt::Key_A );
+#endif
+#ifndef DISABLE_PYVIEWER
+ createActionForViewer( NewPyViewerId, newWinMenu, QString::number( 7 ), Qt::ALT+Qt::Key_Y );
#endif
createAction( RenameId, tr( "TOT_RENAME" ), QIcon(), tr( "MEN_DESK_RENAME" ), tr( "PRP_RENAME" ),
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() ) );
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)
case NewPVViewId:
type = PVViewer_Viewer::Type();
break;
+#endif
+#ifndef DISABLE_PYVIEWER
+ case NewPyViewerId:
+ type = PyViewer_Viewer::Type();
+ break;
#endif
}
*/
void LightApp_Application::onSelection()
{
+ //MESSAGE("onSelection")
onSelectionChanged();
if ( activeModule() && activeModule()->inherits( "LightApp_Module" ) )
if( a )
a->setEnabled( activeStudy() );
#endif
+
+#ifndef DISABLE_PYVIEWER
+ a = action( NewPyViewerId );
+ if( a )
+ a->setEnabled( activeStudy() );
+#endif
}
/*!
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 );
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");
action( EditPasteId )->setEnabled(canPaste);
}
+/*!
+ SLOT: Performs some actions when dockable windows are triggered
+*/
+void LightApp_Application::onDockWindowVisibilityChanged( bool )
+{
+}
+
QWidget* LightApp_Application::dockWindow( const int id ) const
{
QWidget* wid = 0;
dock->setObjectName( wid->objectName().isEmpty() ? QString( "window_%1" ).arg( id ) :
QString( "%1Dock" ).arg( wid->objectName() ) );
dock->setWidget( wid );
+ dock->toggleViewAction()->setData( QVariant( wid->objectName() ) );
+ connect( dock->toggleViewAction(), SIGNAL( triggered( bool ) ),
+ this, SLOT( onDockWindowVisibilityChanged( bool ) ) );
QKeySequence accel = wid->property( "shortcut" ).value<QKeySequence>();
if ( !accel.isEmpty() )
{
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
- aVM->getActiveView()->setFocus();
+ {
+ MESSAGE("desktop()->setActiveWindow: " << aVM->getActiveView());
+ desktop()->setActiveWindow( aVM->getActiveView() );
+ }
}
else if ( create )
- aVM = createViewManager( vmType );
+ {
+ MESSAGE("aVM = createViewManager( vmType )");
+ aVM = createViewManager( vmType );
+ }
return aVM;
}
#ifndef DISABLE_PVVIEWER
if( vmType == PVViewer_Viewer::Type() )
{
- viewMgr = new PVViewer_ViewManager( activeStudy(), desktop(), logWindow() );
+ if ( viewMgr = dynamic_cast<PVViewer_ViewManager*>( getViewManager( vmType, false ) ) ) {
+ viewMgr->getActiveView()->setFocus();
+ return 0;
+ } else {
+ viewMgr = new PVViewer_ViewManager( activeStudy(), desktop(), logWindow() );
+ }
+ }
+#endif
+#ifndef DISABLE_PYVIEWER
+ if( vmType == PyViewer_Viewer::Type() )
+ {
+ viewMgr = new PyViewer_ViewManager( activeStudy(), desktop() );
}
#endif
#ifndef DISABLE_OCCVIEWER
vm->setTrihedronSize( resMgr->doubleValue( "3DViewer", "trihedron_size", vm->trihedronSize() ),
resMgr->booleanValue( "3DViewer", "relative_size", vm->trihedronRelative() ));
vm->setInteractionStyle( resMgr->integerValue( "3DViewer", "navigation_mode", vm->interactionStyle() ) );
+ vm->setProjectionType( resMgr->integerValue( "OCCViewer", "projection_mode", vm->projectionType() ) );
+ #if OCC_VERSION_LARGE > 0x06090000
+ vm->setStereoType( resMgr->integerValue( "OCCViewer", "stereo_type", vm->stereoType() ) );
+ vm->setAnaglyphFilter( resMgr->integerValue( "OCCViewer", "anaglyph_filter", vm->anaglyphFilter() ) );
+ vm->setStereographicFocus( resMgr->integerValue( "OCCViewer", "focus_type", vm->stereographicFocusType() ),
+ resMgr->doubleValue( "OCCViewer", "focus_value", vm->stereographicFocusValue() ));
+ vm->setInterocularDistance( resMgr->integerValue( "OCCViewer", "iod_type", vm->interocularDistanceType() ),
+ resMgr->doubleValue( "OCCViewer", "iod_value", vm->interocularDistanceValue() ));
+
+ vm->setReverseStereo( resMgr->booleanValue( "OCCViewer", "reverse_stereo", vm->isReverseStereo() ) );
+ vm->setVSync( resMgr->booleanValue( "OCCViewer", "enable_vsync", vm->isVSync() ) );
+ vm->setQuadBufferSupport( resMgr->booleanValue( "OCCViewer", "enable_quad_buffer_support", vm->isQuadBufferSupport() ) );
+ #endif
vm->setZoomingStyle( resMgr->integerValue( "3DViewer", "zooming_mode", vm->zoomingStyle() ) );
vm->enablePreselection( resMgr->booleanValue( "OCCViewer", "enable_preselection", vm->isPreselectionEnabled() ) );
vm->enableSelection( resMgr->booleanValue( "OCCViewer", "enable_selection", vm->isSelectionEnabled() ) );
+ vm->setClippingColor( resMgr->colorValue( "OCCViewer", "clipping_color", vm->clippingColor() ) );
+ vm->setClippingTextureParams( resMgr->booleanValue( "OCCViewer", "clipping_use_default_texture", vm->isDefaultTextureUsed() ),
+ resMgr->stringValue( "OCCViewer", "clipping_texture", vm->clippingTexture() ),
+ resMgr->booleanValue( "OCCViewer", "clipping_modulate", vm->isTextureModulated() ),
+ resMgr->doubleValue( "OCCViewer", "clipping_scale", vm->clippingTextureScale() ) );
+
viewMgr->setViewModel( vm );// custom view model, which extends SALOME_View interface
new LightApp_OCCSelector( (OCCViewer_Viewer*)viewMgr->getViewModel(), mySelMgr );
if( vm )
{
vm->setProjectionMode( resMgr->integerValue( "VTKViewer", "projection_mode", vm->projectionMode() ) );
+ vm->setStereoType( resMgr->integerValue( "VTKViewer", "stereo_type", vm->stereoType() ) );
+ vm->setAnaglyphFilter( resMgr->integerValue( "VTKViewer", "anaglyph_filter", vm->anaglyphFilter() ) );
+ vm->setQuadBufferSupport( resMgr->booleanValue( "VTKViewer", "enable_quad_buffer_support", vm->isQuadBufferSupport() ) );
vm->setBackground( resMgr->backgroundValue( "VTKViewer", "background", vm->background() ) );
vm->setTrihedronSize( resMgr->doubleValue( "3DViewer", "trihedron_size", vm->trihedronSize() ),
resMgr->booleanValue( "3DViewer", "relative_size", vm->trihedronRelative() ) );
}
/*!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)";
}
updateObjectBrowser( true );
}
+/*!Private SLOT. Update actions after rename object.*/
+void LightApp_Application::onRenamed()
+{
+ activeStudy()->Modified();
+ updateActions();
+}
+
+// IMN 08.07.2015 : issue 002556: Some stereo outputs are affected by window position.
+// To prevent reversion the window should be either aligned during movement and resize.
+/*!Private SLOT. Update actions after rename object.*/
+/*void LightApp_Application::onMoved()
+{
+ OCCViewer_ViewManager* viewMgr = 0;
+ viewMgr = dynamic_cast<OCCViewer_ViewManager*>( getViewManager( OCCViewer_Viewer::Type(), false ) );
+ if (viewMgr) {
+ OCCViewer_ViewWindow* view = 0;
+ view = dynamic_cast<OCCViewer_ViewWindow*>( viewMgr->getActiveView() );
+ if (view) {
+ view->getViewPort()->repaintViewAfterMove();
+ }
+ }
+}
+*/
/*!Private SLOT. Support drag-and-drop operation.*/
void LightApp_Application::onDropped( const QList<SUIT_DataObject*>& objects, SUIT_DataObject* parent, int row, Qt::DropAction action )
{
if ( proxyModel ) {
connect( proxyModel, SIGNAL( dropped( const QList<SUIT_DataObject*>&, SUIT_DataObject*, int, Qt::DropAction ) ),
this, SLOT( onDropped( const QList<SUIT_DataObject*>&, SUIT_DataObject*, int, Qt::DropAction ) ) );
+ connect( proxyModel, SIGNAL( renamed( SUIT_DataObject* ) ),
+ this, SLOT( onRenamed( ) ) );
+
}
// temporary commented
// 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" ) );
#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 )
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 );
int curLocale = pref->addPreference( tr( "PREF_CURRENT_LOCALE" ), langGroup,
LightApp_Preferences::Bool, "language", "locale" );
+ pref->setItemProperty( "restart", true, curLocale );
// ... "Language" group <<end>>
// ... "Look and feel" group <<start>>
// .... -> 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" );
// ... "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
// ... "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>>
pref->setItemProperty( "strings", aValuesList, mruLinkType );
pref->setItemProperty( "indexes", anIndicesList, mruLinkType );
// ... "MRU" preferences group <<end>>
+
+ // ... "Full-screen" group <<start>>
+ int fullScreenGroup = pref->addPreference( tr( "PREF_GROUP_FULL_SCREEN" ), genTab );
+ pref->setItemProperty( "columns", 2, fullScreenGroup );
+ // .... -> automatic hiding toolbars
+ pref->addPreference( tr( "PREF_FULL_SCREEN_AUTO" ), fullScreenGroup,
+ LightApp_Preferences::Bool, "OCCViewer", "automatic_hiding" );
+ // ... "Full-screen" group <<end>>
+
// .. "General" preferences tab <<end>>
// .. "3D viewer" group <<start>>
// .. "OCC viewer" group <<start>>
int occGroup = pref->addPreference( tr( "PREF_GROUP_OCCVIEWER" ), salomeCat );
+ // .... -> Projection mode
+ int occProjMode = pref->addPreference( tr( "PREF_PROJECTION_MODE" ), occGroup,
+ LightApp_Preferences::Selector, "OCCViewer", "projection_mode" );
+ aValuesList.clear();
+ anIndicesList.clear();
+ aValuesList << tr("PREF_ORTHOGRAPHIC") << tr("PREF_PERSPECTIVE");
+ anIndicesList << 0 << 1;
+ pref->setItemProperty( "strings", aValuesList, occProjMode );
+ pref->setItemProperty( "indexes", anIndicesList, occProjMode );
+#if OCC_VERSION_LARGE > 0x06090000
+ // .... -> Stereo group
+ int stereoGroup = pref->addPreference( tr( "PREF_GROUP_STEREO" ), occGroup);
+ pref->setItemProperty( "columns", 2, stereoGroup );
+ // .... -> Stereo type
+ int stereoType = pref->addPreference( tr( "PREF_STEREO_TYPE" ), stereoGroup,
+ LightApp_Preferences::Selector, "OCCViewer", "stereo_type" );
+ aValuesList.clear();
+ anIndicesList.clear();
+ idList.clear();
+ OCCViewer_Viewer::stereoData( aValuesList, idList);
+ foreach( int gid, idList ) anIndicesList << gid;
+ pref->setItemProperty( "strings", aValuesList, stereoType );
+ pref->setItemProperty( "indexes", anIndicesList, stereoType );
+
+ // .... -> Anaglyph filter
+ int anaglyphFilter = pref->addPreference( tr( "PREF_ANAGLYPH_FILTER" ), stereoGroup,
+ LightApp_Preferences::Selector, "OCCViewer", "anaglyph_filter" );
+ aValuesList.clear();
+ anIndicesList.clear();
+ aValuesList << tr("PREF_ANAGLYPH_RED_CYAN") << tr("PREF_ANAGLYPH_YELLOW_BLUE") << tr("PREF_ANAGLYPH_GREEN_MAGENTA");
+ anIndicesList << 0 << 1 << 2;
+
+ pref->setItemProperty( "strings", aValuesList, anaglyphFilter );
+ pref->setItemProperty( "indexes", anIndicesList, anaglyphFilter );
+
+ // .... -> Convergence distance type
+ int occFocusType = pref->addPreference( tr( "PREF_FOCUS_TYPE" ), stereoGroup,
+ LightApp_Preferences::Selector, "OCCViewer", "focus_type" );
+ aValuesList.clear();
+ anIndicesList.clear();
+ aValuesList << tr("PREF_ABSOLUTE") << tr("PREF_RELATIVE");
+ anIndicesList << 0 << 1;
+ pref->setItemProperty( "strings", aValuesList, occFocusType );
+ pref->setItemProperty( "indexes", anIndicesList, occFocusType );
+
+ // .... -> Stereographic focus value
+ int focusValue = pref->addPreference( tr( "PREF_FOCUS_VALUE" ), stereoGroup,
+ LightApp_Preferences::DblSpin, "OCCViewer", "focus_value" );
+ pref->setItemProperty( "precision", 3, focusValue );
+ pref->setItemProperty( "min", 1.0E-03, focusValue );
+ pref->setItemProperty( "max", 1.0E03, focusValue );
+ pref->setItemProperty( "step", 0.05, focusValue );
+
+ // .... -> IOD type
+ int occIODType = pref->addPreference( tr( "PREF_IOD_TYPE" ), stereoGroup,
+ LightApp_Preferences::Selector, "OCCViewer", "iod_type" );
+ aValuesList.clear();
+ anIndicesList.clear();
+ aValuesList << tr("PREF_ABSOLUTE") << tr("PREF_RELATIVE");
+ anIndicesList << 0 << 1;
+ pref->setItemProperty( "strings", aValuesList, occIODType );
+ pref->setItemProperty( "indexes", anIndicesList, occIODType );
+
+ // .... -> Interocular distance (IOD) value
+ int IODValue = pref->addPreference( tr( "PREF_IOD_VALUE" ), stereoGroup,
+ LightApp_Preferences::DblSpin, "OCCViewer", "iod_value" );
+ pref->setItemProperty( "precision", 3, IODValue );
+ pref->setItemProperty( "min", 1.0E-03, IODValue );
+ pref->setItemProperty( "max", 1.0E03, IODValue );
+ pref->setItemProperty( "step", 0.05, IODValue );
+
+ // .... -> Reverse stereo
+ pref->addPreference( tr( "PREF_REVERSE_STEREO" ), stereoGroup,
+ LightApp_Preferences::Bool, "OCCViewer", "reverse_stereo" );
+ // .... -> Enable V-Sync
+ pref->addPreference( tr( "PREF_ENABLE_VSYNC" ), stereoGroup,
+ LightApp_Preferences::Bool, "OCCViewer", "enable_vsync" );
+ // .... -> Enable quad-buffer support
+ pref->addPreference( tr( "PREF_ENABLE_QUAD_BUFFER_SUPPORT" ), stereoGroup,
+ LightApp_Preferences::Bool, "OCCViewer", "enable_quad_buffer_support" );
+#endif
// ... "Background" group <<start>>
int bgGroup = pref->addPreference( tr( "PREF_VIEWER_BACKGROUND" ), occGroup );
// pref->setItemProperty( "columns", 2, bgGroup );
aValuesList.clear();
anIndicesList.clear();
txtList.clear();
+ idList.clear();
formats = OCCViewer_Viewer::backgroundData( aValuesList, idList, txtList );
foreach( int gid, idList ) anIndicesList << gid;
// .... -> 3D viewer background
LightApp_Preferences::Bool, "OCCViewer", "enable_selection" );
// ... "Selection" group <<end>>
+ // ... "Clipping" group <<start>>
+ int occClippingGroup = pref->addPreference( tr( "PREF_GROUP_CLIPPING" ), occGroup );
+ // .... -> clipping color
+ pref->addPreference( tr( "PREF_CLIPPING_COLOR" ), occClippingGroup,
+ LightApp_Preferences::Color, "OCCViewer", "clipping_color" );
+ int texturePref = pref->addPreference( "", occClippingGroup, LightApp_Preferences::Frame );
+ pref->setItemProperty( "columns", 2, texturePref );
+ // .... -> use default texture
+ pref->addPreference( tr( "PREF_CLIPPING_DEFAULT_TEXTURE" ), texturePref,
+ LightApp_Preferences::Bool, "OCCViewer", "clipping_use_default_texture" );
+ // .... -> clipping texture
+ int filePref = pref->addPreference( tr( "PREF_CLIPPING_TEXTURE" ), texturePref,
+ LightApp_Preferences::File, "OCCViewer", "clipping_texture" );
+ pref->setItemProperty( "path_filter", tr( "OCC_TEXTURE_FILES" ), filePref );
+ // .... -> modulate
+ pref->addPreference( tr( "PREF_CLIPPING_MODULATE" ), texturePref,
+ LightApp_Preferences::Bool, "OCCViewer", "clipping_modulate" );
+ // .... -> scale factor
+ int scaleFactor = pref->addPreference( tr( "PREF_CLIPPING_SCALE" ), texturePref,
+ LightApp_Preferences::DblSpin, "OCCViewer", "clipping_scale" );
+ pref->setItemProperty( "precision", 3, scaleFactor );
+ pref->setItemProperty( "min", 1.0E-03, scaleFactor );
+ pref->setItemProperty( "max", 1.0E03, scaleFactor );
+ 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 );
pref->setItemProperty( "columns", 2, occGen );
// ... -> empty frame (for layout) <<end>>
+
// .. "OCC viewer" group <<end>>
#endif
anIndicesList << 0 << 1;
pref->setItemProperty( "strings", aValuesList, vtkProjMode );
pref->setItemProperty( "indexes", anIndicesList, vtkProjMode );
+
+ // .... -> Stereo group
+ int vtkStereoGroup = pref->addPreference( tr( "PREF_GROUP_STEREO" ), vtkGroup);
+ pref->setItemProperty( "columns", 2, vtkStereoGroup );
+ // .... -> Stereo type
+ int vtkStereoType = pref->addPreference( tr( "PREF_STEREO_TYPE" ), vtkStereoGroup,
+ LightApp_Preferences::Selector, "VTKViewer", "stereo_type" );
+ aValuesList.clear();
+ anIndicesList.clear();
+ idList.clear();
+ SVTK_Viewer::stereoData( aValuesList, idList);
+ foreach( int gid, idList ) anIndicesList << gid;
+ pref->setItemProperty( "strings", aValuesList, vtkStereoType );
+ pref->setItemProperty( "indexes", anIndicesList, vtkStereoType );
+ // .... -> Anaglyph filter
+ int vtkAnaglyphFilter = pref->addPreference( tr( "PREF_ANAGLYPH_FILTER" ), vtkStereoGroup,
+ LightApp_Preferences::Selector, "VTKViewer", "anaglyph_filter" );
+ aValuesList.clear();
+ anIndicesList.clear();
+ aValuesList << tr("PREF_ANAGLYPH_RED_CYAN") << tr("PREF_ANAGLYPH_YELLOW_BLUE") << tr("PREF_ANAGLYPH_GREEN_MAGENTA");
+ anIndicesList << 0 << 1 << 2;
+
+ pref->setItemProperty( "strings", aValuesList, vtkAnaglyphFilter );
+ pref->setItemProperty( "indexes", anIndicesList, vtkAnaglyphFilter );
+
+ // .... -> Enable quad-buffer support
+ pref->addPreference( tr( "PREF_ENABLE_QUAD_BUFFER_SUPPORT" ), vtkStereoGroup,
+ LightApp_Preferences::Bool, "VTKViewer", "enable_quad_buffer_support" );
+
// .... -> background
aValuesList.clear();
anIndicesList.clear();
txtList.clear();
+ idList.clear();
#ifndef DISABLE_SALOMEOBJECT
formats = SVTK_Viewer::backgroundData( aValuesList, idList, txtList );
#endif
// .. "Plot2d viewer" group <<end>>
+ // .. "PyViewer" preferences tab <<start>>
+ int pyeditTab = pref->addPreference( tr( "PREF_TAB_PYEDITOR" ), salomeCat );
+ // ... "Font settings" group <<start>>
+ int pyFontGroup = pref->addPreference( tr( "PREF_GROUP_PY_FONT" ), pyeditTab );
+ 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 );
+ pref->setItemProperty( "columns", 2, pyDispGroup );
+ // ... -> current line highlight
+ pref->addPreference( tr( "PREF_PY_CURRLINE_HIGHLIGHT" ), pyDispGroup,
+ LightApp_Preferences::Bool, "PyEditor", "HighlightCurrentLine" );
+ // ... -> text wrapping
+ pref->addPreference( tr( "PREF_PY_TEXT_WRAP" ), pyDispGroup,
+ LightApp_Preferences::Bool, "PyEditor", "TextWrapping" );
+ // ... -> center cursor on scroll
+ pref->addPreference( tr( "PREF_PY_CURSON_ON_SCROLL" ), pyDispGroup,
+ LightApp_Preferences::Bool, "PyEditor", "CenterCursorOnScroll" );
+ // ... -> line numbers area
+ pref->addPreference( tr( "PREF_PY_LINE_NUMBS_AREA" ), pyDispGroup,
+ LightApp_Preferences::Bool, "PyEditor", "LineNumberArea" );
+ // ... "Display settings" group <<end>>
+ // ... "Tab settings" group <<start>>
+ int pyTabGroup = pref->addPreference( tr( "PREF_GROUP_PY_TAB" ), pyeditTab );
+ pref->setItemProperty( "columns", 2, pyTabGroup );
+ // ... -> tab whitespaces
+ pref->addPreference( tr( "PREF_PY_TAB_WHITESPACES" ), pyTabGroup,
+ LightApp_Preferences::Bool, "PyEditor", "TabSpaceVisible" );
+ // ... -> tab size
+ pref->addPreference( tr( "PREF_PY_TAB_SIZE" ), pyTabGroup,
+ LightApp_Preferences::IntSpin, "PyEditor", "TabSize" );
+ // ... "Tab settings" group <<end>>
+ // ... "Vertical edge settings" group <<start>>
+ int pyVertEdgeGroup = pref->addPreference( tr( "PREF_GROUP_VERT_EDGE" ), pyeditTab );
+ pref->setItemProperty( "columns", 2, pyVertEdgeGroup );
+ // ... -> vertical edge
+ pref->addPreference( tr( "PREF_PY_VERT_EDGE" ), pyVertEdgeGroup,
+ LightApp_Preferences::Bool, "PyEditor", "VerticalEdge" );
+ // ... -> number of columns
+ pref->addPreference( tr( "PREF_PY_NUM_COLUMNS" ), pyVertEdgeGroup,
+ LightApp_Preferences::IntSpin, "PyEditor", "NumberColumns" );
+ // ... "Vertical edge settings" group <<end>>
+ // .. "PyEditor" preferences tab <<end>>
+
// .. "Directories" preferences tab <<start>>
int dirTab = pref->addPreference( tr( "PREF_TAB_DIRECTORIES" ), salomeCat );
// ... --> quick directories list
}
#endif
+#ifndef DISABLE_OCCVIEWER
+ if ( sec == QString( "OCCViewer" ) && param == QString( "clipping_color" ) )
+ {
+ QColor aColor = resMgr->colorValue( "OCCViewer", "clipping_color", QColor( 50, 50, 50 ) );
+ QList<SUIT_ViewManager*> lst;
+ viewManagers( OCCViewer_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
+ continue;
+
+ OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
+ occVM->setClippingColor( aColor );
+ }
+ }
+#endif
+
+#ifndef DISABLE_OCCVIEWER
+ if ( sec == QString( "OCCViewer" ) && ( param == QString( "clipping_use_default_texture" ) ||
+ param == QString( "clipping_texture" ) ||
+ param == QString( "clipping_modulate" ) ||
+ param == QString( "clipping_scale" ) ) )
+ {
+ bool isDefaultTextureUsed = resMgr->booleanValue( "OCCViewer", "clipping_use_default_texture" );
+ QString aTexture = resMgr->stringValue( "OCCViewer", "clipping_texture" );
+ bool isModulated = resMgr->booleanValue( "OCCViewer", "clipping_modulate" );
+ double aScale = resMgr->doubleValue( "OCCViewer", "clipping_scale" );
+ QList<SUIT_ViewManager*> lst;
+ viewManagers( OCCViewer_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
+ continue;
+
+ OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
+ occVM->setClippingTextureParams( isDefaultTextureUsed, aTexture, isModulated, aScale );
+ }
+ }
+#endif
+
+#ifndef DISABLE_OCCVIEWER
+ if ( sec == QString( "OCCViewer" ) && param == QString( "projection_mode" ) )
+ {
+ int mode = resMgr->integerValue( "OCCViewer", "projection_mode", 0 );
+ QList<SUIT_ViewManager*> lst;
+ viewManagers( OCCViewer_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
+ continue;
+
+ OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
+ occVM->setProjectionType( mode );
+ }
+ }
+#endif
+#if OCC_VERSION_LARGE > 0x06090000
+#ifndef DISABLE_OCCVIEWER
+ if ( sec == QString( "OCCViewer" ) && param == QString( "stereo_type" ) )
+ {
+ int mode = resMgr->integerValue( "OCCViewer", "stereo_type", 0 );
+ QList<SUIT_ViewManager*> lst;
+ viewManagers( OCCViewer_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
+ continue;
+
+ OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
+ occVM->setStereoType( mode );
+ }
+ }
+#endif
+
+#ifndef DISABLE_OCCVIEWER
+ if ( sec == QString( "OCCViewer" ) && param == QString( "anaglyph_filter" ) )
+ {
+ int mode = resMgr->integerValue( "OCCViewer", "anaglyph_filter", 0 );
+ QList<SUIT_ViewManager*> lst;
+ viewManagers( OCCViewer_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
+ continue;
+
+ OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
+ occVM->setAnaglyphFilter( mode );
+ }
+ }
+#endif
+
+#ifndef DISABLE_OCCVIEWER
+ if ( sec == QString( "OCCViewer" ) && ( param == QString( "focus_type" ) ||
+ param == QString( "focus_value" ) ) )
+ {
+ int aType = resMgr->integerValue( "OCCViewer", "focus_type" );
+ double aValue = resMgr->doubleValue( "OCCViewer", "focus_value" );
+ QList<SUIT_ViewManager*> lst;
+ viewManagers( OCCViewer_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
+ continue;
+
+ OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
+ occVM->setStereographicFocus( aType, aValue );
+ }
+ }
+#endif
+
+#ifndef DISABLE_OCCVIEWER
+ if ( sec == QString( "OCCViewer" ) && ( param == QString( "iod_type" ) ||
+ param == QString( "iod_value" ) ) )
+ {
+ int aType = resMgr->integerValue( "OCCViewer", "iod_type" );
+ double aValue = resMgr->doubleValue( "OCCViewer", "iod_value" );
+ QList<SUIT_ViewManager*> lst;
+ viewManagers( OCCViewer_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
+ continue;
+
+ OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
+ occVM->setInterocularDistance( aType, aValue );
+ }
+ }
+#endif
+
+#ifndef DISABLE_OCCVIEWER
+ if ( sec == QString( "OCCViewer" ) && param == QString( "reverse_stereo" ) )
+ {
+ bool reverse = resMgr->booleanValue( "OCCViewer", "reverse_stereo", false );
+ QList<SUIT_ViewManager*> lst;
+ viewManagers( OCCViewer_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
+ continue;
+
+ OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
+ occVM->setReverseStereo( reverse );
+ }
+ }
+#endif
+
+#ifndef DISABLE_OCCVIEWER
+ if ( sec == QString( "OCCViewer" ) && param == QString( "enable_vsync" ) )
+ {
+ bool enable = resMgr->booleanValue( "OCCViewer", "enable_vsync", true );
+ QList<SUIT_ViewManager*> lst;
+ viewManagers( OCCViewer_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
+ continue;
+
+ OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
+ occVM->setVSync( enable );
+ }
+ }
+#endif
+
+#ifndef DISABLE_OCCVIEWER
+ if ( sec == QString( "OCCViewer" ) && param == QString( "enable_quad_buffer_support" ) )
+ {
+ bool enable = resMgr->booleanValue( "OCCViewer", "enable_quad_buffer_support", false );
+ QList<SUIT_ViewManager*> lst;
+ viewManagers( OCCViewer_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
+ continue;
+
+ OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
+ occVM->setQuadBufferSupport( enable );
+ }
+ }
+#endif
+#endif
if ( sec == QString( "3DViewer" ) && param == QString( "zooming_mode" ) )
{
int mode = resMgr->integerValue( "3DViewer", "zooming_mode", 0 );
}
#endif
+#ifndef DISABLE_VTKVIEWER
+ if ( sec == QString( "VTKViewer" ) && param == QString( "stereo_type" ) )
+ {
+ int mode = resMgr->integerValue( "VTKViewer", "stereo_type", 0 );
+ QList<SUIT_ViewManager*> lst;
+#ifndef DISABLE_SALOMEOBJECT
+ viewManagers( SVTK_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "SVTK_Viewer" ) )
+ continue;
+
+ SVTK_Viewer* vtkVM = dynamic_cast<SVTK_Viewer*>( vm );
+ if( vtkVM ) vtkVM->setStereoType( mode );
+ }
+#endif
+ }
+#endif
+
+#ifndef DISABLE_VTKVIEWER
+ if ( sec == QString( "VTKViewer" ) && param == QString( "anaglyph_filter" ) )
+ {
+ int mode = resMgr->integerValue( "VTKViewer", "anaglyph_filter", 0 );
+ QList<SUIT_ViewManager*> lst;
+#ifndef DISABLE_SALOMEOBJECT
+ viewManagers( SVTK_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "SVTK_Viewer" ) )
+ continue;
+
+ SVTK_Viewer* vtkVM = dynamic_cast<SVTK_Viewer*>( vm );
+ if( vtkVM ) vtkVM->setAnaglyphFilter( mode );
+ }
+#endif
+ }
+#endif
+
+#ifndef DISABLE_VTKVIEWER
+ if ( sec == QString( "VTKViewer" ) && param == QString( "enable_quad_buffer_support" ) )
+ {
+ int enable = resMgr->booleanValue( "VTKViewer", "enable_quad_buffer_support", false );
+ QList<SUIT_ViewManager*> lst;
+#ifndef DISABLE_SALOMEOBJECT
+ viewManagers( SVTK_Viewer::Type(), lst );
+ QListIterator<SUIT_ViewManager*> it( lst );
+ while ( it.hasNext() )
+ {
+ SUIT_ViewModel* vm = it.next()->getViewModel();
+ if ( !vm || !vm->inherits( "SVTK_Viewer" ) )
+ continue;
+
+ SVTK_Viewer* vtkVM = dynamic_cast<SVTK_Viewer*>( vm );
+ if( vtkVM ) vtkVM->setQuadBufferSupport( enable );
+ }
+#endif
+ }
+#endif
+
#ifndef DISABLE_VTKVIEWER
if ( sec == QString( "VTKViewer" ) && param == QString( "preselection" ) )
{
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
}
if ( sec == "language" && param == "language" )
{
- SUIT_MessageBox::information( desktop(), tr( "WRN_WARNING" ), tr( "LANG_CHANGED" ) );
+ // VSR 18.06.2015 : commented out : single warning dialog box is now shown by the LightApp_PreferencesDlg
+ //SUIT_MessageBox::information( desktop(), tr( "WRN_WARNING" ), tr( "LANG_CHANGED" ) );
}
if ( sec == "language" && param == "locale")
{
- SUIT_MessageBox::information( desktop(), tr( "WRN_WARNING" ), tr( "LOCALE_CHANGED" ) );
+ // VSR 18.06.2015: commented out : single warning dialog box is now shown by the LightApp_PreferencesDlg
+ //SUIT_MessageBox::information( desktop(), tr( "WRN_WARNING" ), tr( "LOCALE_CHANGED" ) );
}
if ( sec == "desktop" && param == "opaque_resize" ) {
bool opaqueResize = resMgr->booleanValue( "desktop", "opaque_resize", false );
}
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;
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;
this, SLOT( onDesktopMessage( const QString& ) ), Qt::UniqueConnection );
connect( desk, SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ), Qt::UniqueConnection );
+ /* connect( desk, SIGNAL( windowMoved( SUIT_ViewWindow* ) ),
+ this, SLOT( onWindowMoved( SUIT_ViewWindow* ) ), Qt::UniqueConnection ); */
}
}
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(){
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
#ifndef DISABLE_PVVIEWER
aTypesList<<PVViewer_Viewer::Type();
#endif
+#ifndef DISABLE_PYVIEWER
+ aTypesList<<PyViewer_Viewer::Type();
+#endif
#ifndef DISABLE_OCCVIEWER
aTypesList<<OCCViewer_Viewer::Type();
#endif
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" );
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