mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-29 10:50:35 +05:00
IMP 0019918: Re-open popup for imported shapes. Enable for multiple selection.
This commit is contained in:
parent
64d087cbe6
commit
e2fd9a3715
@ -1433,26 +1433,37 @@ LightApp_Selection* GeometryGUI::createSelection() const
|
||||
void GeometryGUI::contextMenuPopup( const QString& client, QMenu* menu, QString& title )
|
||||
{
|
||||
SalomeApp_Module::contextMenuPopup(client, menu, title);
|
||||
|
||||
SALOME_ListIO lst;
|
||||
getApp()->selectionMgr()->selectedObjects(lst);
|
||||
if (lst.Extent() < 1)
|
||||
return;
|
||||
|
||||
if (lst.Extent() == 1) {
|
||||
Handle(SALOME_InteractiveObject) io = lst.First();
|
||||
SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(application()->activeStudy());
|
||||
_PTR(Study) study = appStudy->studyDS();
|
||||
|
||||
bool isImported = true;
|
||||
SALOME_ListIteratorOfListIO anIt (lst);
|
||||
for (; anIt.More() && isImported; anIt.Next()) {
|
||||
Handle(SALOME_InteractiveObject) io = anIt.Value();
|
||||
_PTR(SObject) aSObj = study->FindObjectID(io->getEntry());
|
||||
if (aSObj) {
|
||||
if (lst.Extent() == 1) {
|
||||
// Set context menu title
|
||||
if (client == "OCCViewer" || client == "VTKViewer")
|
||||
title = QString(aSObj->GetName().c_str());
|
||||
}
|
||||
|
||||
// Reload imported shape
|
||||
CORBA::Object_var anObj = GeometryGUI::ClientSObjectToObject(aSObj);
|
||||
GEOM::GEOM_Object_var aGeomObj = GEOM::GEOM_Object::_narrow(anObj);
|
||||
if (!CORBA::is_nil(aGeomObj) && aGeomObj->GetType() == GEOM_IMPORT)
|
||||
menu->addAction(action(5029));
|
||||
if (CORBA::is_nil(aGeomObj) || aGeomObj->GetType() != GEOM_IMPORT)
|
||||
isImported = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (isImported) {
|
||||
menu->addAction(action(5029)); // Reload imported shape
|
||||
}
|
||||
}
|
||||
|
||||
void GeometryGUI::createPreferences()
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include <LightApp_SelectionMgr.h>
|
||||
#include <SalomeApp_Application.h>
|
||||
#include <SalomeApp_Study.h>
|
||||
#include <SALOME_ListIteratorOfListIO.hxx>
|
||||
|
||||
#include "TransformationGUI_MultiTranslationDlg.h" // Method MULTI TRANSLATION
|
||||
#include "TransformationGUI_MultiRotationDlg.h" // Method MULTI ROTATION
|
||||
@ -102,58 +103,47 @@ bool TransformationGUI::OnGUIEvent( int theCommandID, SUIT_Desktop* parent )
|
||||
break;
|
||||
case 5029: // RELOAD IMPORTED SHAPE
|
||||
{
|
||||
SalomeApp_Study* anAppStudy = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
|
||||
|
||||
GEOM::GEOM_ITransformOperations_var anOp =
|
||||
GeometryGUI::GetGeomGen()->GetITransformOperations(anAppStudy->id());
|
||||
if (anOp->_is_nil()) return false;
|
||||
|
||||
GEOM_Displayer aDisp (anAppStudy);
|
||||
SUIT_Desktop* desk = app->desktop();
|
||||
QList<SUIT_ViewWindow*> wnds = desk->windows();
|
||||
|
||||
LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
|
||||
SALOME_ListIO aSelList;
|
||||
aSelMgr->selectedObjects(aSelList);
|
||||
if (aSelList.Extent() == 1) {
|
||||
|
||||
SALOME_ListIteratorOfListIO aSelIt (aSelList);
|
||||
for (; aSelIt.More(); aSelIt.Next()) {
|
||||
Handle(SALOME_InteractiveObject) io = aSelIt.Value();
|
||||
Standard_Boolean testResult = Standard_False;
|
||||
GEOM::GEOM_Object_var aGeomObj =
|
||||
GEOMBase::ConvertIOinGEOMObject(aSelList.First(), testResult);
|
||||
GEOM::GEOM_Object_var aGeomObj = GEOMBase::ConvertIOinGEOMObject(io, testResult);
|
||||
if (testResult) {
|
||||
SalomeApp_Study* anAppStudy = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
|
||||
GEOM::GEOM_ITransformOperations_var anOp =
|
||||
GeometryGUI::GetGeomGen()->GetITransformOperations(anAppStudy->id());
|
||||
if (!anOp->_is_nil()) {
|
||||
anOp->RecomputeObject(aGeomObj);
|
||||
GEOM_Displayer aDisp (anAppStudy);
|
||||
//aDisp.Redisplay(aSelList.First());
|
||||
//aDisp.Display(aSelList.First());
|
||||
Handle(SALOME_InteractiveObject) theIO = aSelList.First();
|
||||
SUIT_Desktop* desk = app->desktop();
|
||||
QList<SUIT_ViewWindow*> wnds = desk->windows();
|
||||
|
||||
SUIT_ViewWindow* wnd;
|
||||
QListIterator<SUIT_ViewWindow*> it (wnds);
|
||||
while (it.hasNext() && (wnd = it.next()))
|
||||
{
|
||||
SUIT_ViewManager* vman = wnd->getViewManager();
|
||||
if ( vman )
|
||||
{
|
||||
SUIT_ViewModel* vmodel = vman->getViewModel();
|
||||
if ( vmodel )
|
||||
{
|
||||
SALOME_View* view = dynamic_cast<SALOME_View*>(vmodel);
|
||||
if ( view )
|
||||
{
|
||||
//if (view->isVisible(theIO) || view == GetActiveView())
|
||||
if (view->isVisible(theIO))
|
||||
{
|
||||
//SALOME_Prs* prs = view->CreatePrs( theIO->getEntry() );
|
||||
//if ( prs ) {
|
||||
// prs->Update(&aDisp);
|
||||
// view->Repaint();
|
||||
//}
|
||||
aDisp.Erase(theIO, false, false, view);
|
||||
aDisp.Display(theIO, true, view);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (SUIT_ViewManager* vman = wnd->getViewManager()) {
|
||||
if (SUIT_ViewModel* vmodel = vman->getViewModel()) {
|
||||
if (SALOME_View* view = dynamic_cast<SALOME_View*>(vmodel)) {
|
||||
if (view->isVisible(io)) {
|
||||
aDisp.Erase(io, false, false, view);
|
||||
aDisp.Display(io, true, view);
|
||||
}
|
||||
// ? Redisplay subshapes ?
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} // for (; aSelIt.More(); aSelIt.Next())
|
||||
}
|
||||
break;
|
||||
default:
|
||||
app->putInfo( tr( "GEOM_PRP_COMMAND" ).arg( theCommandID ) );
|
||||
|
Loading…
Reference in New Issue
Block a user