26 #include <SUIT_MessageBox.h>
27 #include <SUIT_ResourceMgr.h>
28 #include <SUIT_Desktop.h>
29 #include <SUIT_ViewManager.h>
30 #include <SUIT_ViewWindow.h>
31 #include <SalomeApp_Application.h>
32 #include <SalomeApp_Engine_i.h>
33 #include <QxScene_ViewManager.h>
34 #include <QxScene_ViewModel.h>
35 #include <QxScene_ViewWindow.h>
37 #include <SalomeApp_DataObject.h>
38 #include <SalomeApp_Study.h>
39 #include <SalomeApp_Module.h>
40 #include <SUIT_DataBrowser.h>
41 #include <QtxTreeView.h>
42 #include <SUIT_DataObject.h>
44 #include <SALOME_LifeCycleCORBA.hxx>
46 #include <QInputDialog>
74 disconnect( getApp(), SIGNAL(studyClosed()),
this, SLOT (
onCleanOnExit()));
83 SalomeApp_Module::initialize(
app );
85 QWidget* aParent = application()->desktop();
86 DEBTRACE(
app <<
" " << application() <<
" " << application()->desktop() <<
" " << aParent);
88 SUIT_ResourceMgr* aResourceMgr =
app->resourceMgr();
94 if (
app &&
app->desktop() )
96 connect(
app->desktop(), SIGNAL( windowActivated( SUIT_ViewWindow* ) ),
100 SIGNAL(objectDoubleClicked( SUIT_DataObject* )),
105 SIGNAL(studyClosed()),
117 SalomeApp_Study* aStudy =
dynamic_cast<SalomeApp_Study*
>(
app->activeStudy() );
119 bool aLocked = (_PTR(AttributeStudyProperties)(aStudy->studyDS()->GetProperties()))->IsLocked();
121 SUIT_MessageBox::warning (
app->desktop(), QObject::tr(
"WRN_WARNING"), QObject::tr(
"WRN_STUDY_LOCKED") );
129 QStringList appModules;
130 app->modules(appModules,
false);
131 for ( QStringList::const_iterator it = appModules.begin(); it != appModules.end(); ++it )
134 QString modName =
app->moduleName( aModule );
135 if ( modName.isEmpty() ) modName = aModule;
136 QString rootDir = QString(
"%1_ROOT_DIR" ).arg( modName );
137 QString modDir = getenv( rootDir.toLatin1().constData() );
138 if ( !modDir.isEmpty() )
140 QStringList cataLst = QStringList() << modDir <<
"share" <<
"salome" <<
"resources" << modName.toLower() << modName+
"SchemaCatalog.xml";
141 QString cataFile = cataLst.join( QDir::separator() );
142 if ( QFile::exists( cataFile ) )
151 list.append( QxScene_Viewer::Type() );
156 DEBTRACE(
"Yacsgui::activateModule");
157 bool bOk = SalomeApp_Module::activateModule( theStudy );
160 if(Resource::dockWidgetPriority)
162 parent->setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
163 parent->setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
164 parent->setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
165 parent->setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
167 setMenuShown(
true );
168 setToolShown(
true );
172 PyGILState_STATE gstate = PyGILState_Ensure();
173 PyObject* pluginsmanager=PyImport_ImportModule((
char*)
"salome_pluginsmanager");
174 if(pluginsmanager==NULL)
179 PyObject* result=PyObject_CallMethod( pluginsmanager, (
char*)
"initialize", (
char*)
"isss",1,
"yacs",
"YACS",tr(
"YACS_PLUGINS").toStdString().c_str(),
l);
184 Py_XDECREF(pluginsmanager);
186 PyGILState_Release(gstate);
197 DEBTRACE(
"Yacsgui::deactivateModule");
200 parent->setCorner(Qt::TopLeftCorner, Qt::TopDockWidgetArea);
201 parent->setCorner(Qt::BottomLeftCorner, Qt::BottomDockWidgetArea);
202 parent->setCorner(Qt::TopRightCorner, Qt::TopDockWidgetArea);
203 parent->setCorner(Qt::BottomRightCorner, Qt::BottomDockWidgetArea);
205 setMenuShown(
false );
206 setToolShown(
false );
210 DEBTRACE(
"_studyContext " << theStudy <<
" " << context);
211 return SalomeApp_Module::deactivateModule( theStudy );
220 theMap.insert( SalomeApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea );
221 theMap.insert( SalomeApp_Application::WT_PyConsole, Qt::BottomDockWidgetArea );
227 QString anEngineIOR = SalomeApp_Engine_i::EngineIORForComponent(
"YACS",
true ).c_str();
234 DataObjectList dol =getApp()->objectBrowser()->getSelected();
235 if (dol.isEmpty())
return;
237 SalomeApp_DataObject* item =
dynamic_cast<SalomeApp_DataObject*
>(dol[0]);
240 DEBTRACE(item->name().toStdString());
243 DEBTRACE(item->entry().toStdString());
246 if (!viewWindow)
return;
247 DEBTRACE(
"--- " << viewWindow <<
" " << item->entry().toStdString());
248 if (getApp()->activeModule()->moduleName().compare(
"YACS") != 0)
249 getApp()->activateModule(
"YACS");
252 viewWindow->setFocus();
258 DEBTRACE(
"Yacsgui::onWindowActivated");
259 QxScene_ViewWindow* viewWindow =
dynamic_cast<QxScene_ViewWindow*
>(svw);
266 DEBTRACE(
"viewWindow " << viewWindow);
267 DEBTRACE(
"activeModule()->moduleName() " << (getApp()->activeModule() ? getApp()->activeModule()->moduleName().toStdString() :
"") );
268 if (!getApp()->activeModule() || getApp()->activeModule()->moduleName() !=
"YACS")
271 disconnect(viewWindow, SIGNAL( tryClose(
bool&, QxScene_ViewWindow* ) ),
272 this, SLOT(
onTryClose(
bool&, QxScene_ViewWindow* )) );
273 disconnect(viewWindow->getViewManager(), SIGNAL( deleteView( SUIT_ViewWindow* ) ),
275 connect(viewWindow, SIGNAL( tryClose(
bool&, QxScene_ViewWindow* ) ),
276 this, SLOT(
onTryClose(
bool&, QxScene_ViewWindow* )) );
277 connect(viewWindow->getViewManager(), SIGNAL( deleteView( SUIT_ViewWindow* ) ),
292 DEBTRACE(
"Yacsgui::onWindowClosed");
311 DEBTRACE(
"Yacsgui::createSComponent");
312 _PTR(Study) aStudy = (( SalomeApp_Study* )(getApp()->activeStudy()))->studyDS();
313 _PTR(StudyBuilder) aBuilder (aStudy->NewBuilder());
314 _PTR(GenericAttribute) anAttr;
315 _PTR(AttributeName) aName;
319 _PTR(SComponent) aComponent = aStudy->FindComponent(
"YACS");
322 aComponent = aBuilder->NewComponent(
"YACS");
323 anAttr = aBuilder->FindOrCreateAttribute(aComponent,
"AttributeName");
324 aName = _PTR(AttributeName) (anAttr);
325 aName->SetValue(getApp()->moduleTitle(
"YACS").toStdString());
327 anAttr = aBuilder->FindOrCreateAttribute(aComponent,
"AttributePixMap");
328 _PTR(AttributePixMap) aPixmap(anAttr);
329 aPixmap->SetPixMap(
"ModuleYacs.png");
331 aBuilder->DefineComponentInstance(aComponent,
engineIOR().toLatin1().constData());
347 DEBTRACE(
"Yacsgui::createPreferences");
353 DEBTRACE(
"Yacsgui::preferencesChanged");
355 if(name==
"userCatalog")
#define YASSERT(val)
YASSERT macro is always defined, used like assert, but throw a YACS::Exception instead of abort.
YACS_EXPORT CAM_Module * createModule()
virtual void setSelected(QWidget *viewWindow)
QWidget * getViewWindow(std::string entry)
void switchContext(QWidget *view, bool onExit=false)
bool closeContext(QWidget *view, bool onExit=false)
virtual void loadSchema(const std::string &filename, bool edit=true, bool arrangeLocalNodes=false)
CatalogWidget * getCatalogWidget()
void showDockWidgets(bool isVisible)
viewer QGraphicsScene: deriver SUIT_ViewModel comme QxGraph_Viewer
virtual void preferencesChanged(const QString §, const QString &name)
virtual void createPreferences(Yacsgui *swm)
virtual void createPreferences()
friend class Yacsgui_Resource
void onWindowClosed(SUIT_ViewWindow *svw)
void initialize(CAM_Application *app)
void windows(QMap< int, int > &theMap) const
Yacsgui_Resource * _myresource
virtual CAM_DataModel * createDataModel()
bool deactivateModule(SUIT_Study *theStudy)
virtual void loadSchema(const std::string &filename, bool edit=true, bool arrangeLocalNodes=false)
void onDblClick(SUIT_DataObject *object)
void onWindowActivated(SUIT_ViewWindow *svw)
YACS::HMI::SuitWrapper * _wrapper
YACS::HMI::QtGuiContext * _studyContext
virtual void viewManagers(QStringList &list) const
virtual void setResource(SUIT_ResourceMgr *r)
void onTryClose(bool &isClosed, QxScene_ViewWindow *window)
virtual QString engineIOR() const
SUIT_ViewWindow * _currentSVW
YACS::HMI::GenericGui * _genericGui
bool activateModule(SUIT_Study *theStudy)
virtual void preferencesChanged(const QString §, const QString &name)