Version: 8.3.0
QtGuiContext.cxx
Go to the documentation of this file.
1 // Copyright (C) 2006-2016 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 
62 {
63  DEBTRACE("QtGuiContext::~QtGuiContext");
64  if (_invoc) delete _invoc;
65  _invoc = 0;
66  if (_subjectProc)
67  {
68  _proc->setEdition(false);
70  delete _subjectProc;
71  _subjectProc = 0;
72  }
73  _current = 0;
74  _QtCurrent = 0;
75  _setOfContext.erase(this);
76  // Avoid any possible copy from the destroyed schema.
77  QClipboard *clipboard = QApplication::clipboard();
78  clipboard->setMimeData(NULL);
79 }
80 
82 {
83  _mapOfSchemaItem.clear();
84  _mapOfSceneItem.clear();
85  GuiContext::setProc(proc);
86 }
87 
89 {
90  QClipboard *clipboard = QApplication::clipboard();
91  const QMimeData * data=clipboard->mimeData();
92  const ItemMimeData* myData = dynamic_cast<const ItemMimeData*>(data);
93  Subject * sub=0;
94 
95  if(myData)
96  {
97  sub=myData->getSubject();
98  isCut=myData->getControl();
99  }
100 
101  return sub;
102 }
103 
105 {
106  ItemMimeData *mime = new ItemMimeData;
107  mime->setSubject(sub);
108  mime->setControl(true);
109  QClipboard *clipboard = QApplication::clipboard();
110  clipboard->setMimeData(mime);
111 }
112 
114 {
115  ItemMimeData *mime = new ItemMimeData;
116  mime->setSubject(sub);
117  mime->setControl(false);
118  QClipboard *clipboard = QApplication::clipboard();
119  clipboard->setMimeData(mime);
120 }