Salome HOME
107c8fe995bd0b9eb1a71e702807e6f4cf996aac
[modules/yacs.git] / src / genericgui / QtGuiContext.cxx
1 // Copyright (C) 2006-2015  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #include "QtGuiContext.hxx"
21 #include <QClipboard>
22 #include "ItemMimeData.hxx"
23
24 //#define _DEVDEBUG_
25 #include "YacsTrace.hxx"
26 #include "chrono.hxx"
27
28 using namespace std;
29 using namespace YACS::ENGINE;
30 using namespace YACS::HMI;
31
32 QtGuiContext * QtGuiContext::_QtCurrent = 0;
33 counters *QtGuiContext::_counters = 0;
34 bool QtGuiContext::_delayCalc = false;
35 std::set<QtGuiContext*> QtGuiContext::_setOfContext;
36
37 QtGuiContext::QtGuiContext(GenericGui *gmain) : GuiContext()
38 {
39   _gmain = gmain;
40   _schemaModel = 0;
41   _editTree = 0;
42   _selectionModel = 0;
43   _scene = 0;
44   _view = 0;
45   _rootEdit = 0;
46   _window = 0;
47   _stackedWidget = 0;
48   _guiExecutor = 0;
49   _selectedSubject = 0;
50   _isEdition = true;
51   _isLoadingPresentation = false;
52   _studyId = 0;
53   _fileName = QString();
54   _mapOfSchemaItem.clear();
55   _mapOfSceneItem.clear();
56   _mapOfEditionItem.clear();
57   _setOfModifiedSubjects.clear();
58   _setOfContext.insert(this);
59 }
60
61 QtGuiContext::~QtGuiContext()
62 {
63   DEBTRACE("QtGuiContext::~QtGuiContext");
64   if (_invoc) delete _invoc;
65   _invoc = 0;
66   if (_subjectProc)
67     {
68       _proc->setEdition(false);
69       _subjectProc->clean();
70       delete _subjectProc;
71       _subjectProc = 0;
72     }
73   _current = 0;
74   _QtCurrent = 0;
75   _setOfContext.erase(this);
76 }
77
78 void QtGuiContext::setProc(YACS::ENGINE::Proc* proc)
79 {
80   _mapOfSchemaItem.clear();
81   _mapOfSceneItem.clear();
82   GuiContext::setProc(proc);
83 }
84
85 YACS::HMI::Subject* QtGuiContext::getSubjectToPaste(bool &isCut)
86 {
87   QClipboard *clipboard = QApplication::clipboard();
88   const QMimeData * data=clipboard->mimeData();
89   const ItemMimeData* myData = dynamic_cast<const ItemMimeData*>(data);
90   Subject * sub=0;
91
92   if(myData)
93     {
94       sub=myData->getSubject();
95       isCut=myData->getControl();
96     }
97
98   return sub;
99 }
100
101 void QtGuiContext::setSubjectToCut(YACS::HMI::Subject* sub)
102 {
103   ItemMimeData *mime = new ItemMimeData;
104   mime->setSubject(sub);
105   mime->setControl(true);
106   QClipboard *clipboard = QApplication::clipboard();
107   clipboard->setMimeData(mime);
108 }
109
110 void QtGuiContext::setSubjectToCopy(YACS::HMI::Subject* sub)
111 {
112   ItemMimeData *mime = new ItemMimeData;
113   mime->setSubject(sub);
114   mime->setControl(false);
115   QClipboard *clipboard = QApplication::clipboard();
116   clipboard->setMimeData(mime);
117 }