Version: 9.15.0
SceneCtrlInPortItem.cxx
Go to the documentation of this file.
1
// Copyright (C) 2006-2025 CEA, EDF
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 "
SceneCtrlInPortItem.hxx
"
21
#include "
SceneNodeItem.hxx
"
22
#include "
ItemMimeData.hxx
"
23
24
#include "
QtGuiContext.hxx
"
25
#include "
Menus.hxx
"
26
#include "
Message.hxx
"
27
28
#include <QGraphicsSceneDragDropEvent>
29
30
31
//#define _DEVDEBUG_
32
#include "
YacsTrace.hxx
"
33
34
using namespace
std;
35
using namespace
YACS::ENGINE
;
36
using namespace
YACS::HMI
;
37
38
SceneCtrlInPortItem::SceneCtrlInPortItem(
QGraphicsScene
*scene,
SceneItem
*parent,
39
QString label)
40
:
SceneCtrlPortItem
(scene, parent, label)
41
{
42
_dragOver
=
false
;
43
setAcceptDrops(
true
);
44
}
45
46
SceneCtrlInPortItem::~SceneCtrlInPortItem
()
47
{
48
}
49
50
void
SceneCtrlInPortItem::popupMenu
(
QWidget
*caller,
const
QPoint &globalPos)
51
{
52
CtrlInPortMenu
m
;
53
m
.popupMenu(caller, globalPos);
54
}
55
56
void
SceneCtrlInPortItem::dragEnterEvent
(QGraphicsSceneDragDropEvent *event)
57
{
58
bool
accepted =
false
;
59
const
ItemMimeData
*myData =
dynamic_cast<
const
ItemMimeData
*
>
(
event
->mimeData());
60
if
(myData && myData->hasFormat(
"yacs/subjectOutGate"
))
61
{
62
Subject
*sub = myData->
getSubject
();
63
if
(sub &&
dynamic_cast<
SubjectNode
*
>
(sub))
64
{
65
event
->setAccepted(
true
);
66
_dragOver
=
true
;
67
QGraphicsItem::update();
68
return
;
69
}
70
}
71
event
->setAccepted(accepted);
72
}
73
74
void
SceneCtrlInPortItem::dragLeaveEvent
(QGraphicsSceneDragDropEvent *event)
75
{
76
Q_UNUSED(event);
77
_dragOver
=
false
;
78
QGraphicsItem::update();
79
}
80
81
void
SceneCtrlInPortItem::dropEvent
(QGraphicsSceneDragDropEvent *event)
82
{
83
Q_UNUSED(event);
84
_dragOver
=
false
;
85
QGraphicsItem::update();
86
87
const
ItemMimeData
*myData =
dynamic_cast<
const
ItemMimeData
*
>
(
event
->mimeData());
88
if
(!myData)
return
;
89
if
(!myData->hasFormat(
"yacs/subjectOutGate"
))
return
;
90
Subject
*sub = myData->
getSubject
();
91
if
(!sub)
return
;
92
SceneItem
*item =
QtGuiContext::getQtCurrent
()->
_mapOfSceneItem
[sub];
93
if
(!item)
return
;
94
SceneNodeItem
* outItem =
dynamic_cast<
SceneNodeItem
*
>
(item);
95
if
(!outItem)
return
;
96
97
Subject
*subFrom = outItem->
getSubject
();
98
if
(!this->
getParentNode
())
return
;
99
Subject
*subTo = this->
getParentNode
()->
getSubject
();
100
SubjectNode
* from =
dynamic_cast<
SubjectNode
*
>
(subFrom);
101
SubjectNode
* to =
dynamic_cast<
SubjectNode
*
>
(subTo);
102
if
(from && to)
103
{
104
if
(!
SubjectNode::tryCreateLink
(from, to))
105
Message
mess;
106
}
107
}
ItemMimeData.hxx
Menus.hxx
Message.hxx
QtGuiContext.hxx
SceneCtrlInPortItem.hxx
SceneNodeItem.hxx
YacsTrace.hxx
QGraphicsScene
QWidget
YACS::HMI::CtrlInPortMenu
Definition:
Menus.hxx:142
YACS::HMI::ItemMimeData
Definition:
ItemMimeData.hxx:42
YACS::HMI::ItemMimeData::getSubject
virtual Subject * getSubject(int i=0) const
Definition:
ItemMimeData.cxx:78
YACS::HMI::Message
Definition:
Message.hxx:30
YACS::HMI::QtGuiContext::getQtCurrent
static QtGuiContext * getQtCurrent()
Definition:
QtGuiContext.hxx:92
YACS::HMI::QtGuiContext::_mapOfSceneItem
std::map< YACS::HMI::Subject *, YACS::HMI::SceneItem * > _mapOfSceneItem
Definition:
QtGuiContext.hxx:96
YACS::HMI::SceneCtrlInPortItem::dragLeaveEvent
void dragLeaveEvent(QGraphicsSceneDragDropEvent *event)
Definition:
SceneCtrlInPortItem.cxx:74
YACS::HMI::SceneCtrlInPortItem::dragEnterEvent
void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
Definition:
SceneCtrlInPortItem.cxx:56
YACS::HMI::SceneCtrlInPortItem::popupMenu
virtual void popupMenu(QWidget *caller, const QPoint &globalPos)
Definition:
SceneCtrlInPortItem.cxx:50
YACS::HMI::SceneCtrlInPortItem::dropEvent
void dropEvent(QGraphicsSceneDragDropEvent *event)
Definition:
SceneCtrlInPortItem.cxx:81
YACS::HMI::SceneCtrlInPortItem::~SceneCtrlInPortItem
virtual ~SceneCtrlInPortItem()
Definition:
SceneCtrlInPortItem.cxx:46
YACS::HMI::SceneCtrlInPortItem::_dragOver
bool _dragOver
Definition:
SceneCtrlInPortItem.hxx:40
YACS::HMI::SceneCtrlPortItem
Definition:
SceneCtrlPortItem.hxx:34
YACS::HMI::SceneCtrlPortItem::getParentNode
virtual SceneNodeItem * getParentNode()
Definition:
SceneCtrlPortItem.cxx:91
YACS::HMI::SceneItem
Definition:
SceneItem.hxx:121
YACS::HMI::SceneNodeItem
Definition:
SceneNodeItem.hxx:45
YACS::HMI::SceneObserverItem::getSubject
virtual Subject * getSubject()
Definition:
SceneObserverItem.cxx:196
YACS::HMI::SubjectNode
Definition:
guiObservers.hxx:286
YACS::HMI::SubjectNode::tryCreateLink
static bool tryCreateLink(SubjectNode *subOutNode, SubjectNode *subInNode)
Definition:
guiObservers.cxx:1221
YACS::HMI::Subject
Definition:
guiObservers.hxx:118
YACS::ENGINE
Definition:
AbstractPoint.hxx:37
YACS::HMI
Definition:
commands.hxx:37
gui.GraphViewer.m
m
Definition:
GraphViewer.py:413
src
genericgui
SceneCtrlInPortItem.cxx
Copyright © 2006-2024 CEA, EDF