Salome HOME
Copyrights update 2015.
[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   _subjectToCut = 0;
51   _subjectToCopy = 0;
52   _isEdition = true;
53   _isLoadingPresentation = false;
54   _studyId = 0;
55   _fileName = QString();
56   _mapOfSchemaItem.clear();
57   _mapOfSceneItem.clear();
58   _mapOfEditionItem.clear();
59   _setOfModifiedSubjects.clear();
60   _setOfContext.insert(this);
61 }
62
63 QtGuiContext::~QtGuiContext()
64 {
65   DEBTRACE("QtGuiContext::~QtGuiContext");
66   if (_invoc) delete _invoc;
67   _invoc = 0;
68   if (_subjectProc)
69     {
70       _proc->setEdition(false);
71       _subjectProc->clean();
72       delete _subjectProc;
73       _subjectProc = 0;
74     }
75   _current = 0;
76   _QtCurrent = 0;
77   _setOfContext.erase(this);
78 }
79
80 void QtGuiContext::setProc(YACS::ENGINE::Proc* proc)
81 {
82   _mapOfSchemaItem.clear();
83   _mapOfSceneItem.clear();
84   GuiContext::setProc(proc);
85 }
86
87 YACS::HMI::Subject* QtGuiContext::getSubjectToPaste(bool &isCut)
88 {
89   QClipboard *clipboard = QApplication::clipboard();
90   const QMimeData * data=clipboard->mimeData();
91   const ItemMimeData* myData = dynamic_cast<const ItemMimeData*>(data);
92   Subject * sub=0;
93
94   if(myData)
95     {
96       sub=myData->getSubject();
97       isCut=myData->getControl();
98     }
99
100   return sub;
101 }
102
103 void QtGuiContext::setSubjectToCut(YACS::HMI::Subject* sub)
104 {
105   ItemMimeData *mime = new ItemMimeData;
106   mime->setSubject(sub);
107   mime->setControl(true);
108   QClipboard *clipboard = QApplication::clipboard();
109   clipboard->setMimeData(mime);
110 }
111
112 void QtGuiContext::setSubjectToCopy(YACS::HMI::Subject* sub)
113 {
114   ItemMimeData *mime = new ItemMimeData;
115   mime->setSubject(sub);
116   mime->setControl(false);
117   QClipboard *clipboard = QApplication::clipboard();
118   clipboard->setMimeData(mime);
119 }