Salome HOME
Merge branch 'Dev_1.1.0' of newgeom:newgeom into Dev_1.1.0
[modules/shaper.git] / src / XGUI / XGUI_ModuleConnector.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
2
3 // File:        XGUI_ModuleConnector.cpp
4 // Created:     3 June 2014
5 // Author:      Vitaly Smetannikov
6
7 #include "XGUI_ModuleConnector.h"
8 #include "XGUI_Workshop.h"
9 #include "XGUI_ViewerProxy.h"
10 #include "XGUI_SelectionMgr.h"
11 #include "XGUI_Selection.h"
12 #include "XGUI_OperationMgr.h"
13 #include "XGUI_Displayer.h"
14 #include "XGUI_PropertyPanel.h"
15
16 #include <AIS_Shape.hxx>
17
18
19 XGUI_ModuleConnector::XGUI_ModuleConnector(XGUI_Workshop* theWorkshop)
20     : ModuleBase_IWorkshop(theWorkshop),
21       myWorkshop(theWorkshop)
22 {
23   XGUI_SelectionMgr* aSelector = myWorkshop->selector();
24   connect(aSelector, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
25   
26   XGUI_OperationMgr* anOperationMgr = myWorkshop->operationMgr();
27
28   //myDocumentShapeFilter = new ModuleBase_ShapeDocumentFilter(this);
29 }
30
31 XGUI_ModuleConnector::~XGUI_ModuleConnector()
32 {
33   //myDocumentShapeFilter.Nullify();
34 }
35
36 ModuleBase_ISelection* XGUI_ModuleConnector::selection() const
37 {
38   return myWorkshop->selector()->selection();
39 }
40
41 ModuleBase_IModule* XGUI_ModuleConnector::module() const
42 {
43   return myWorkshop->module();
44 }
45
46 ModuleBase_IViewer* XGUI_ModuleConnector::viewer() const
47 {
48   return myWorkshop->viewer();
49 }
50
51 ModuleBase_IPropertyPanel* XGUI_ModuleConnector::propertyPanel() const
52 {
53   return myWorkshop->propertyPanel();
54 }
55
56 ModuleBase_Operation* XGUI_ModuleConnector::currentOperation() const
57 {
58   return myWorkshop->operationMgr()->currentOperation();
59 }
60
61
62 void XGUI_ModuleConnector::activateSubShapesSelection(const QIntList& theTypes)
63 {
64   XGUI_Displayer* aDisp = myWorkshop->displayer();
65   // Close context if it was opened in order to clear stsndard selection modes
66   //aDisp->closeLocalContexts(false);
67   //aDisp->openLocalContext();
68   // Convert shape types to selection types
69   QIntList aModes;
70   foreach(int aType, theTypes) {
71     if (aType > TopAbs_SHAPE) 
72       aModes.append(aType);
73     else
74       aModes.append(AIS_Shape::SelectionMode((TopAbs_ShapeEnum)aType));
75   }
76   aDisp->activateObjects(aModes);
77   //TODO: We have to open Local context because at neutral point filters don't work (bug 25340)
78   //aDisp->addSelectionFilter(myDocumentShapeFilter);
79 }
80
81 void XGUI_ModuleConnector::deactivateSubShapesSelection()
82 {
83   XGUI_Displayer* aDisp = myWorkshop->displayer();
84   // Clear selection modes
85   QIntList aModes;
86   aDisp->activateObjects(aModes);
87   // The document limitation selection has to be only during operation
88   //aDisp->removeSelectionFilter(myDocumentShapeFilter);
89   //aDisp->closeLocalContexts(false);
90 }
91
92 AISObjectPtr XGUI_ModuleConnector::findPresentation(const ObjectPtr& theObject) const
93 {
94   XGUI_Displayer* aDisp = myWorkshop->displayer();
95   return aDisp->getAISObject(theObject);
96 }
97
98 ObjectPtr XGUI_ModuleConnector::findPresentedObject(const AISObjectPtr& theAIS) const
99 {
100   XGUI_Displayer* aDisp = myWorkshop->displayer();
101   return aDisp->getObject(theAIS);
102 }
103
104 void XGUI_ModuleConnector::setSelected(const QObjectPtrList& theFeatures)
105 {
106   XGUI_Displayer* aDisp = myWorkshop->displayer();
107   aDisp->setSelected(theFeatures);
108 }
109
110 bool XGUI_ModuleConnector::canStartOperation(QString theId)
111 {
112   return myWorkshop->operationMgr()->canStartOperation(theId);
113 }
114