X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ViewerProxy.cpp;h=fbff53c41f2180237f277379746c294925d51237;hb=1035d41ad342fb22f5ea2552a8fc135aed95f3b8;hp=753a07d9870d4d9235e4d7890d9308ab6db427db;hpb=98d2ada2266f6f33a153beb8230b98435066d9b8;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ViewerProxy.cpp b/src/XGUI/XGUI_ViewerProxy.cpp index 753a07d98..fbff53c41 100644 --- a/src/XGUI/XGUI_ViewerProxy.cpp +++ b/src/XGUI/XGUI_ViewerProxy.cpp @@ -48,7 +48,7 @@ XGUI_ViewerProxy::XGUI_ViewerProxy(XGUI_Workshop* theParent) : ModuleBase_IViewer(theParent), - myWorkshop(theParent), myShowHighlight(false) + myWorkshop(theParent) { } @@ -299,18 +299,34 @@ void XGUI_ViewerProxy::onMouseMove(AppElements_ViewWindow* theWnd, QMouseEvent* if (myIs2dMode) { bool aHighlight2d = ModuleBase_Preferences::resourceMgr()->booleanValue("Viewer", "highlighting-2d", true); - if (aHighlight2d || myShowHighlight) - updateHighlight(); - else - eraseHighlight(); + if (aHighlight2d) { + if (myShowHighlight) + eraseHighlight(); + else + updateHighlight(); + } + else { + if (myShowHighlight) + updateHighlight(); + else + eraseHighlight(); + } } else { bool aHighlight3d = ModuleBase_Preferences::resourceMgr()->booleanValue("Viewer", "highlighting-3d", false); - if (aHighlight3d || myShowHighlight) - updateHighlight(); - else - eraseHighlight(); + if (aHighlight3d) { + if (myShowHighlight) + eraseHighlight(); + else + updateHighlight(); + } + else { + if (myShowHighlight) + updateHighlight(); + else + eraseHighlight(); + } } emit mouseMove(theWnd, theEvent); } @@ -470,16 +486,18 @@ void XGUI_ViewerProxy::displayHighlight(FeaturePtr theFeature, const TopoDS_Shap } } -void XGUI_ViewerProxy::eraseHighlight() +bool XGUI_ViewerProxy::eraseHighlight() { Handle(AIS_InteractiveContext) aContext = AISContext(); Handle(AIS_InteractiveObject) anAISIO; AIS_ListIteratorOfListOfInteractive aLIt; + bool isErased = myHighlights.Extent() > 0; for (aLIt.Initialize(myHighlights); aLIt.More(); aLIt.Next()) { anAISIO = aLIt.Value(); aContext->Remove(anAISIO, false); } myHighlights.Clear(); + return isErased; } void XGUI_ViewerProxy::updateHighlight() @@ -509,14 +527,15 @@ void XGUI_ViewerProxy::updateHighlight() else { myResult = ResultPtr(); } - aContext->UpdateCurrentViewer(); + update(); } isDisplayed = aRes.get(); } } if (!isDisplayed) { - eraseHighlight(); - aContext->UpdateCurrentViewer(); + if (eraseHighlight()) { + update(); + } myResult = ResultPtr(); } } @@ -528,18 +547,34 @@ void XGUI_ViewerProxy::onMouseMove(ModuleBase_IViewWindow* theWnd, QMouseEvent* if (myIs2dMode) { bool aHighlight2d = ModuleBase_Preferences::resourceMgr()->booleanValue("Viewer", "highlighting-2d", true); - if (aHighlight2d || myShowHighlight) - updateHighlight(); - else - eraseHighlight(); + if (aHighlight2d) { + if (myShowHighlight) + eraseHighlight(); + else + updateHighlight(); + } + else { + if (myShowHighlight) + updateHighlight(); + else + eraseHighlight(); + } } else { bool aHighlight3d = ModuleBase_Preferences::resourceMgr()->booleanValue("Viewer", "highlighting-3d", false); - if (aHighlight3d || myShowHighlight) - updateHighlight(); - else - eraseHighlight(); + if (aHighlight3d) { + if (myShowHighlight) + eraseHighlight(); + else + updateHighlight(); + } + else { + if (myShowHighlight) + updateHighlight(); + else + eraseHighlight(); + } } emit mouseMove(theWnd, theEvent); } @@ -580,10 +615,10 @@ void XGUI_ViewerProxy::setColorScaleShown(bool on) void XGUI_ViewerProxy::setColorScalePosition(double theX, double theY) { - QWidget* aWindow = activeViewPort(); #ifdef HAVE_SALOME - myWorkshop->salomeConnector()->viewer()->setColorScaleShown(on); + myWorkshop->salomeConnector()->viewer()->setColorScalePosition(theX, theY); #else + QWidget* aWindow = activeViewPort(); Handle(AIS_ColorScale) aColorScale = myWorkshop->mainWindow()->viewer()->colorScale(); aColorScale->SetPosition(aWindow->width() * theX, aWindow->height() * theY); #endif @@ -591,10 +626,10 @@ void XGUI_ViewerProxy::setColorScalePosition(double theX, double theY) void XGUI_ViewerProxy::setColorScaleSize(double theW, double theH) { - QWidget* aWindow = activeViewPort(); #ifdef HAVE_SALOME - myWorkshop->salomeConnector()->viewer()->setColorScaleShown(on); + myWorkshop->salomeConnector()->viewer()->setColorScaleSize(theW, theH); #else + QWidget* aWindow = activeViewPort(); Handle(AIS_ColorScale) aColorScale = myWorkshop->mainWindow()->viewer()->colorScale(); aColorScale->SetSize(aWindow->width() * theW, aWindow->height() * theH); #endif @@ -603,7 +638,7 @@ void XGUI_ViewerProxy::setColorScaleSize(double theW, double theH) void XGUI_ViewerProxy::setColorScaleRange(double theMin, double theMax) { #ifdef HAVE_SALOME - myWorkshop->salomeConnector()->viewer()->setColorScaleShown(on); + myWorkshop->salomeConnector()->viewer()->setColorScaleRange(theMin, theMax); #else Handle(AIS_ColorScale) aColorScale = myWorkshop->mainWindow()->viewer()->colorScale(); aColorScale->SetRange(theMin, theMax); @@ -613,17 +648,29 @@ void XGUI_ViewerProxy::setColorScaleRange(double theMin, double theMax) void XGUI_ViewerProxy::setColorScaleIntervals(int theNb) { #ifdef HAVE_SALOME - myWorkshop->salomeConnector()->viewer()->setColorScaleShown(on); + myWorkshop->salomeConnector()->viewer()->setColorScaleIntervals(theNb); #else Handle(AIS_ColorScale) aColorScale = myWorkshop->mainWindow()->viewer()->colorScale(); aColorScale->SetNumberOfIntervals(theNb); #endif } +void XGUI_ViewerProxy::setColorScaleTextColor(const QColor& theColor) +{ +#ifdef HAVE_SALOME + myWorkshop->salomeConnector()->viewer()->setColorScaleTextColor(theColor); +#else + Handle(AIS_ColorScale) aColorScale = myWorkshop->mainWindow()->viewer()->colorScale(); + Quantity_Color aColor(theColor.redF(), theColor.greenF(), theColor.blueF(), Quantity_TOC_RGB); + aColorScale->SetColor(aColor); +#endif +} + + void XGUI_ViewerProxy::setColorScaleTextHeigth(int theH) { #ifdef HAVE_SALOME - myWorkshop->salomeConnector()->viewer()->setColorScaleShown(on); + myWorkshop->salomeConnector()->viewer()->setColorScaleTextHeigth(theH); #else Handle(AIS_ColorScale) aColorScale = myWorkshop->mainWindow()->viewer()->colorScale(); aColorScale->SetTextHeight(theH); @@ -633,7 +680,7 @@ void XGUI_ViewerProxy::setColorScaleTextHeigth(int theH) void XGUI_ViewerProxy::setColorScaleTitle(const QString& theText) { #ifdef HAVE_SALOME - myWorkshop->salomeConnector()->viewer()->setColorScaleShown(on); + myWorkshop->salomeConnector()->viewer()->setColorScaleTitle(theText); #else Handle(AIS_ColorScale) aColorScale = myWorkshop->mainWindow()->viewer()->colorScale(); aColorScale->SetTitle(theText.toStdString().c_str()); @@ -644,11 +691,23 @@ void XGUI_ViewerProxy::setColorScaleTitle(const QString& theText) //****************************************************** void XGUI_ViewerProxy::setupColorScale() { - setColorScalePosition(0.03, 0.35); - setColorScaleSize(0.2, 0.5); - setColorScaleTextHeigth(14); - setColorScaleIntervals(20); - Handle(AIS_ColorScale) aColorScale = myWorkshop->mainWindow()->viewer()->colorScale(); + SUIT_ResourceMgr* aResMgr = ModuleBase_Preferences::resourceMgr(); + double aX = aResMgr->doubleValue("Viewer", "scalar_bar_x_position", 0.03); + double aY = aResMgr->doubleValue("Viewer", "scalar_bar_y_position", 0.35); + setColorScalePosition(aX, aY); + + double aW = aResMgr->doubleValue("Viewer", "scalar_bar_width", 0.2); + double aH = aResMgr->doubleValue("Viewer", "scalar_bar_height", 0.5); + setColorScaleSize(aW, aH); + + QColor aColor = aResMgr->colorValue("Viewer", "scalar_bar_text_color", Qt::black); + setColorScaleTextColor(aColor); + + int aT = aResMgr->integerValue("Viewer", "scalar_bar_text_height", 14); + setColorScaleTextHeigth(aT); + + int aN = aResMgr->integerValue("Viewer", "scalar_bar_nb_intervals", 20); + setColorScaleIntervals(aN); } @@ -667,4 +726,27 @@ void XGUI_ViewerProxy::setupColorScale() // aView3d->DepthFitAll(); // } //#endif -//} \ No newline at end of file +//} + + +#ifdef HAVE_SALOME +void XGUI_ViewerProxy::setFitter(OCCViewer_Fitter* theFitter) +{ + myWorkshop->salomeConnector()->viewer()->setFitter(theFitter); +} + +OCCViewer_Fitter* XGUI_ViewerProxy::fitter() const +{ + return myWorkshop->salomeConnector()->viewer()->fitter(); +} +#else +void XGUI_ViewerProxy::setFitter(AppElements_Fitter* theFitter) +{ + myWorkshop->mainWindow()->viewer()->setFitter(theFitter); +} + +AppElements_Fitter* XGUI_ViewerProxy::fitter() const +{ + return myWorkshop->mainWindow()->viewer()->fitter(); +} +#endif