mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-02-15 21:53:07 +05:00
Check if Erase comes from Redisplay, in this case, Annotation Manager should not erase displayed annotations.
Problem case: Click on tree widget item do not visualizes it, icon stays gray.
This commit is contained in:
parent
fafd844ade
commit
8fca8ce02e
@ -208,10 +208,11 @@ void GEOMGUI_AnnotationMgr::DisplayVisibleAnnotations( const QString& theEntry,
|
|||||||
|
|
||||||
void GEOMGUI_AnnotationMgr::EraseVisibleAnnotations( const QString& theEntry, SALOME_View* theView )
|
void GEOMGUI_AnnotationMgr::EraseVisibleAnnotations( const QString& theEntry, SALOME_View* theView )
|
||||||
{
|
{
|
||||||
if ( !myVisualized.contains( theView ) )
|
SALOME_View* aView = viewOrActiveView( theView );
|
||||||
|
if ( !myVisualized.contains( aView ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
EntryToAnnotations anEntryToAnnotation = myVisualized[theView];
|
EntryToAnnotations anEntryToAnnotation = myVisualized[aView];
|
||||||
if ( !anEntryToAnnotation.contains( theEntry ) )
|
if ( !anEntryToAnnotation.contains( theEntry ) )
|
||||||
return;
|
return;
|
||||||
AnnotationToPrs anAnnotationToPrs = anEntryToAnnotation[theEntry];
|
AnnotationToPrs anAnnotationToPrs = anEntryToAnnotation[theEntry];
|
||||||
@ -228,11 +229,11 @@ void GEOMGUI_AnnotationMgr::EraseVisibleAnnotations( const QString& theEntry, SA
|
|||||||
|
|
||||||
// erase presentation from the viewer
|
// erase presentation from the viewer
|
||||||
SALOME_Prs* aPrs = anAnnotationToPrs[anIndex];
|
SALOME_Prs* aPrs = anAnnotationToPrs[anIndex];
|
||||||
theView->Erase( getDisplayer(), aPrs );
|
aView->Erase( getDisplayer(), aPrs );
|
||||||
}
|
}
|
||||||
getDisplayer()->UpdateViewer();
|
getDisplayer()->UpdateViewer();
|
||||||
anEntryToAnnotation.remove( theEntry );
|
anEntryToAnnotation.remove( theEntry );
|
||||||
myVisualized[theView] = anEntryToAnnotation;
|
myVisualized[aView] = anEntryToAnnotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GEOMGUI_AnnotationMgr::RemoveView( SALOME_View* theView )
|
void GEOMGUI_AnnotationMgr::RemoveView( SALOME_View* theView )
|
||||||
@ -282,11 +283,14 @@ GEOM_Displayer* GEOMGUI_AnnotationMgr::getDisplayer() const
|
|||||||
|
|
||||||
SALOME_View* GEOMGUI_AnnotationMgr::viewOrActiveView(SALOME_View* theView) const
|
SALOME_View* GEOMGUI_AnnotationMgr::viewOrActiveView(SALOME_View* theView) const
|
||||||
{
|
{
|
||||||
if ( !theView ) {
|
SALOME_View* aView = theView;
|
||||||
|
if ( !aView ) {
|
||||||
SalomeApp_Application* anApp = getApplication();
|
SalomeApp_Application* anApp = getApplication();
|
||||||
SUIT_ViewWindow* anActiveWindow = anApp->desktop()->activeWindow();
|
SUIT_ViewWindow* anActiveWindow = anApp->desktop()->activeWindow();
|
||||||
theView = dynamic_cast<SALOME_View*>(anActiveWindow->getViewManager()->getViewModel());
|
if (anActiveWindow)
|
||||||
|
aView = dynamic_cast<SALOME_View*>(anActiveWindow->getViewManager()->getViewModel());
|
||||||
}
|
}
|
||||||
|
return aView;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GEOMGUI_AnnotationMgr::getObject( const QString& theEntry, const int theIndex,
|
void GEOMGUI_AnnotationMgr::getObject( const QString& theEntry, const int theIndex,
|
||||||
|
@ -207,7 +207,8 @@ GEOMGUI_TextTreeWdg::GEOMGUI_TextTreeWdg( SalomeApp_Application* app )
|
|||||||
this, SLOT( updateAnnotationBranch( const QString& ) ) );
|
this, SLOT( updateAnnotationBranch( const QString& ) ) );
|
||||||
connect( this, SIGNAL( itemClicked( QTreeWidgetItem*, int) ),
|
connect( this, SIGNAL( itemClicked( QTreeWidgetItem*, int) ),
|
||||||
this, SLOT( onItemClicked( QTreeWidgetItem*, int ) ) );
|
this, SLOT( onItemClicked( QTreeWidgetItem*, int ) ) );
|
||||||
|
connect( myStudy, SIGNAL( objVisibilityChanged( QString, Qtx::VisibilityState ) ),
|
||||||
|
this, SLOT( onUpdateVisibilityColumn( QString, Qtx::VisibilityState ) ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
@ -405,15 +406,16 @@ void GEOMGUI_TextTreeWdg::onItemClicked( QTreeWidgetItem* theItem, int theColumn
|
|||||||
|
|
||||||
QSharedPointer<VisualProperty> aProp = getVisualProperty( aBranchType, myStudy, anEntry );
|
QSharedPointer<VisualProperty> aProp = getVisualProperty( aBranchType, myStudy, anEntry );
|
||||||
|
|
||||||
|
CAM_Application* anApp = dynamic_cast<CAM_Application*>(myStudy->application());
|
||||||
|
GeometryGUI* aModule = dynamic_cast<GeometryGUI*>(anApp->activeModule());
|
||||||
if ( aProp->GetIsVisible( aDimIndex ) ) {
|
if ( aProp->GetIsVisible( aDimIndex ) ) {
|
||||||
aProp->SetIsVisible( aDimIndex, false );
|
aModule->GetAnnotationMgr()->Erase(anEntry.c_str(), aDimIndex);
|
||||||
theItem->setIcon( 1, myInvisibleIcon );
|
theItem->setIcon( 1, myInvisibleIcon );
|
||||||
} else {
|
} else {
|
||||||
aProp->SetIsVisible( aDimIndex, true );
|
aModule->GetAnnotationMgr()->Display(anEntry.c_str(), aDimIndex);
|
||||||
|
|
||||||
theItem->setIcon( 1, myVisibleIcon );
|
theItem->setIcon( 1, myVisibleIcon );
|
||||||
}
|
}
|
||||||
aProp->Save();
|
|
||||||
|
|
||||||
redisplay( anEntry.c_str() );
|
redisplay( anEntry.c_str() );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -460,7 +462,7 @@ QTreeWidgetItem* GEOMGUI_TextTreeWdg::itemFromEntry( const BranchType& theBranch
|
|||||||
// function : onUpdateVisibilityColumn
|
// function : onUpdateVisibilityColumn
|
||||||
// purpose : Update visible state of icons of entry items.
|
// purpose : Update visible state of icons of entry items.
|
||||||
//=================================================================================
|
//=================================================================================
|
||||||
void GEOMGUI_TextTreeWdg::updateVisibilityColumn( QString theEntry, Qtx::VisibilityState theState )
|
void GEOMGUI_TextTreeWdg::onUpdateVisibilityColumn( QString theEntry, Qtx::VisibilityState theState )
|
||||||
{
|
{
|
||||||
// dimension property branch
|
// dimension property branch
|
||||||
updateVisibilityColumn( DimensionShape, theEntry, theState );
|
updateVisibilityColumn( DimensionShape, theEntry, theState );
|
||||||
|
@ -67,7 +67,6 @@ public:
|
|||||||
QTreeWidgetItem* theWidgetItem,
|
QTreeWidgetItem* theWidgetItem,
|
||||||
const bool theVisibility );
|
const bool theVisibility );
|
||||||
void updateVisibility( SALOME_View* theView );
|
void updateVisibility( SALOME_View* theView );
|
||||||
void updateVisibilityColumn( QString theEntry, Qtx::VisibilityState theState );
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void createActions();
|
void createActions();
|
||||||
@ -80,6 +79,7 @@ public slots:
|
|||||||
void updateAnnotationBranch( const QString& theEntry );
|
void updateAnnotationBranch( const QString& theEntry );
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void onUpdateVisibilityColumn( QString theEntry, Qtx::VisibilityState theState );
|
||||||
void onItemClicked(QTreeWidgetItem*, int );
|
void onItemClicked(QTreeWidgetItem*, int );
|
||||||
void setVisibility( QTreeWidgetItem* theItem, bool visibility );
|
void setVisibility( QTreeWidgetItem* theItem, bool visibility );
|
||||||
void showContextMenu( const QPoint& pos );
|
void showContextMenu( const QPoint& pos );
|
||||||
|
@ -464,6 +464,7 @@ static std::string getName( GEOM::GEOM_BaseObject_ptr object )
|
|||||||
*/
|
*/
|
||||||
//=================================================================
|
//=================================================================
|
||||||
GEOM_Displayer::GEOM_Displayer( SalomeApp_Study* st )
|
GEOM_Displayer::GEOM_Displayer( SalomeApp_Study* st )
|
||||||
|
: myIsRedisplayed( false )
|
||||||
{
|
{
|
||||||
if( st )
|
if( st )
|
||||||
myApp = dynamic_cast<SalomeApp_Application*>( st->application() );
|
myApp = dynamic_cast<SalomeApp_Application*>( st->application() );
|
||||||
@ -640,6 +641,8 @@ void GEOM_Displayer::Redisplay( const Handle(SALOME_InteractiveObject)& theIO,
|
|||||||
const bool updateViewer,
|
const bool updateViewer,
|
||||||
const bool checkActiveViewer )
|
const bool checkActiveViewer )
|
||||||
{
|
{
|
||||||
|
bool aRedisplayed = myIsRedisplayed;
|
||||||
|
myIsRedisplayed = true;
|
||||||
// Remove the object permanently (<forced> == true)
|
// Remove the object permanently (<forced> == true)
|
||||||
SUIT_Session* ses = SUIT_Session::session();
|
SUIT_Session* ses = SUIT_Session::session();
|
||||||
SUIT_Application* app = ses->activeApplication();
|
SUIT_Application* app = ses->activeApplication();
|
||||||
@ -669,6 +672,7 @@ void GEOM_Displayer::Redisplay( const Handle(SALOME_InteractiveObject)& theIO,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
myIsRedisplayed = aRedisplayed;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================
|
//=================================================================
|
||||||
@ -688,8 +692,19 @@ void GEOM_Displayer::Redisplay( const Handle(SALOME_InteractiveObject)& theIO,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool aRedisplayed = myIsRedisplayed;
|
||||||
|
myIsRedisplayed = true;
|
||||||
Erase( theIO, true, false, theViewFrame );
|
Erase( theIO, true, false, theViewFrame );
|
||||||
Display( theIO, theUpdateViewer, theViewFrame );
|
Display( theIO, theUpdateViewer, theViewFrame );
|
||||||
|
myIsRedisplayed = aRedisplayed;
|
||||||
|
if ( !theViewFrame->isVisible( theIO ) ) {
|
||||||
|
// hide annotations for erased presentation
|
||||||
|
SUIT_Session* session = SUIT_Session::session();
|
||||||
|
SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( session->activeApplication() );
|
||||||
|
GeometryGUI* aModule = dynamic_cast<GeometryGUI*>( anApp->activeModule() );
|
||||||
|
if ( aModule )
|
||||||
|
aModule->GetAnnotationMgr()->EraseVisibleAnnotations(QString(theIO->getEntry()), theViewFrame);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================
|
//=================================================================
|
||||||
@ -2159,6 +2174,14 @@ void GEOM_Displayer::BeforeDisplay( SALOME_View* v, const SALOME_OCCPrs* )
|
|||||||
void GEOM_Displayer::AfterDisplay( SALOME_View* v, const SALOME_OCCPrs* p )
|
void GEOM_Displayer::AfterDisplay( SALOME_View* v, const SALOME_OCCPrs* p )
|
||||||
{
|
{
|
||||||
UpdateColorScale(false,false);
|
UpdateColorScale(false,false);
|
||||||
|
if ( !myIsRedisplayed ) {
|
||||||
|
// visualize annotations for displayed presentation
|
||||||
|
SUIT_Session* session = SUIT_Session::session();
|
||||||
|
SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( session->activeApplication() );
|
||||||
|
GeometryGUI* aModule = dynamic_cast<GeometryGUI*>( anApp->activeModule() );
|
||||||
|
if ( aModule )
|
||||||
|
aModule->GetAnnotationMgr()->DisplayVisibleAnnotations(QString(p->GetEntry()), v);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GEOM_Displayer::BeforeErase( SALOME_View* v, const SALOME_OCCPrs* p )
|
void GEOM_Displayer::BeforeErase( SALOME_View* v, const SALOME_OCCPrs* p )
|
||||||
@ -2171,6 +2194,15 @@ void GEOM_Displayer::AfterErase( SALOME_View* v, const SALOME_OCCPrs* p )
|
|||||||
{
|
{
|
||||||
LightApp_Displayer::AfterErase( v, p );
|
LightApp_Displayer::AfterErase( v, p );
|
||||||
UpdateColorScale(false,false);
|
UpdateColorScale(false,false);
|
||||||
|
|
||||||
|
if ( !myIsRedisplayed ) {
|
||||||
|
// hide annotations for erased presentation
|
||||||
|
SUIT_Session* session = SUIT_Session::session();
|
||||||
|
SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>( session->activeApplication() );
|
||||||
|
GeometryGUI* aModule = dynamic_cast<GeometryGUI*>( anApp->activeModule() );
|
||||||
|
if ( aModule )
|
||||||
|
aModule->GetAnnotationMgr()->EraseVisibleAnnotations(QString(p->GetEntry()), v);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//=================================================================
|
//=================================================================
|
||||||
|
@ -318,6 +318,7 @@ protected:
|
|||||||
Aspect_TypeOfMarker myTypeOfMarker;
|
Aspect_TypeOfMarker myTypeOfMarker;
|
||||||
double myScaleOfMarker;
|
double myScaleOfMarker;
|
||||||
double myTransparency;
|
double myTransparency;
|
||||||
|
bool myIsRedisplayed;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SalomeApp_Application* myApp;
|
SalomeApp_Application* myApp;
|
||||||
|
@ -1828,11 +1828,6 @@ bool GeometryGUI::activateModule( SUIT_Study* study )
|
|||||||
|
|
||||||
connect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
|
connect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
|
||||||
this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
|
this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
|
||||||
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( application()->activeStudy() );
|
|
||||||
if ( appStudy )
|
|
||||||
connect( appStudy, SIGNAL( objVisibilityChanged( QString, Qtx::VisibilityState ) ),
|
|
||||||
this, SLOT( onUpdateVisibilityColumn( QString, Qtx::VisibilityState ) ) );
|
|
||||||
|
|
||||||
|
|
||||||
// Reset actions accelerator keys
|
// Reset actions accelerator keys
|
||||||
action(GEOMOp::OpDelete)->setEnabled( true ); // Delete: Key_Delete
|
action(GEOMOp::OpDelete)->setEnabled( true ); // Delete: Key_Delete
|
||||||
@ -1885,6 +1880,7 @@ bool GeometryGUI::activateModule( SUIT_Study* study )
|
|||||||
// 0020836 (Basic vectors and origin)
|
// 0020836 (Basic vectors and origin)
|
||||||
SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
|
SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
|
||||||
if ( aResourceMgr->booleanValue( "Geometry", "auto_create_base_objects", false ) ) {
|
if ( aResourceMgr->booleanValue( "Geometry", "auto_create_base_objects", false ) ) {
|
||||||
|
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( application()->activeStudy() );
|
||||||
if ( appStudy ) {
|
if ( appStudy ) {
|
||||||
_PTR(Study) studyDS = appStudy->studyDS();
|
_PTR(Study) studyDS = appStudy->studyDS();
|
||||||
if ( studyDS ) {
|
if ( studyDS ) {
|
||||||
@ -1914,10 +1910,6 @@ bool GeometryGUI::deactivateModule( SUIT_Study* study )
|
|||||||
|
|
||||||
disconnect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
|
disconnect( application()->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
|
||||||
this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
|
this, SLOT( onWindowActivated( SUIT_ViewWindow* ) ) );
|
||||||
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( application()->activeStudy() );
|
|
||||||
if ( appStudy )
|
|
||||||
disconnect( appStudy, SIGNAL( objVisibilityChanged( QString, Qtx::VisibilityState ) ),
|
|
||||||
this, SLOT( onUpdateVisibilityColumn( QString, Qtx::VisibilityState ) ) );
|
|
||||||
|
|
||||||
LightApp_SelectionMgr* selMrg = getApp()->selectionMgr();
|
LightApp_SelectionMgr* selMrg = getApp()->selectionMgr();
|
||||||
|
|
||||||
@ -1988,18 +1980,6 @@ void GeometryGUI::onWindowActivated( SUIT_ViewWindow* win )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeometryGUI::onUpdateVisibilityColumn( QString theEntry,
|
|
||||||
Qtx::VisibilityState theState )
|
|
||||||
{
|
|
||||||
if ( myTextTreeWdg )
|
|
||||||
myTextTreeWdg->updateVisibilityColumn( theEntry, theState );
|
|
||||||
|
|
||||||
if ( theState == Qtx::ShownState )
|
|
||||||
GetAnnotationMgr()->DisplayVisibleAnnotations( theEntry );
|
|
||||||
else
|
|
||||||
GetAnnotationMgr()->EraseVisibleAnnotations( theEntry );
|
|
||||||
}
|
|
||||||
|
|
||||||
void GeometryGUI::windows( QMap<int, int>& mappa ) const
|
void GeometryGUI::windows( QMap<int, int>& mappa ) const
|
||||||
{
|
{
|
||||||
mappa.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea );
|
mappa.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea );
|
||||||
|
@ -171,9 +171,6 @@ protected slots:
|
|||||||
private slots:
|
private slots:
|
||||||
void OnGUIEvent();
|
void OnGUIEvent();
|
||||||
void onWindowActivated( SUIT_ViewWindow* );
|
void onWindowActivated( SUIT_ViewWindow* );
|
||||||
void onUpdateVisibilityColumn( QString theEntry,
|
|
||||||
Qtx::VisibilityState theState );
|
|
||||||
|
|
||||||
void onViewAboutToShow();
|
void onViewAboutToShow();
|
||||||
void OnSetMaterial( const QString& );
|
void OnSetMaterial( const QString& );
|
||||||
void updateMaterials();
|
void updateMaterials();
|
||||||
|
Loading…
Reference in New Issue
Block a user