gapMea  1.0-rc1-1.5.3.2
GapMea est un outil visuel écrit en c++ à l'aide de la bibliothèque QT qui sert de base entre autre à l'environnement graphique de KDE.Il permet de dessiner des schémas recueillant et structurant les informations nécessaires à un domaine de gestion. Le schéma obtenu est enregistré dans un fichier texte au format xml.
 All Classes Functions Variables
customgraphicsview.cpp
1 #include "customgraphicsview.h"
2 #include <QGraphicsItem>
3 #include <QMimeData>
4 #include <QDrag>
5 #include <QDebug>
6 #include <QTextDocument>
7 #include <QStandardItemModel>
8 #include <QDropEvent>
9 
10 
11 
12 
13 
14 void customGraphicsView::dragEnterEvent(QDragEnterEvent *event)
15  {
16  qDebug("void :customGraphicsView:dragEnterEvent(QDragEnterEvent *event)");
17  if(event->source()->objectName()=="listWidgetTables")
18  {
19  event->accept();
20  }
21  else
22  {
23 
24  qDebug()<<"mime"<<event->mimeData()->text();
25  qDebug()<<"position"<<event->pos();
26  QPointF lePointMapp=this->mapToScene(event->pos());
27  QPoint lePointMappe=lePointMapp.toPoint();
28  qDebug()<<"Voici le point mappé:"<<lePointMappe;
29  //jointures acceptées entre deux tables
30  qDebug()<<"this.item at event->pos():"<<this->itemAt(lePointMappe)->data(32).toString();
31  qDebug()<<"scene.item at event->pos():"<<this->scene()->itemAt(lePointMappe,QTransform())->data(32).toString();
32 
33  if (this->scene()->itemAt(lePointMappe,QTransform())->data(32).toString()=="Table")
34  {
35  event->accept();
36  qDebug("drag accepté");
37  //setCursor(QCursor(Qt::PointingHandCursor));
38  }
39  else
40  {
41  //si c'est un champ et que l'origine est une valeur de la grille des résultats alors on l'accepte
42  if(this->scene()->itemAt(lePointMappe,QTransform())->data(32).toString()=="Field")
43  {
44  qDebug()<<"dragEnterEvent c'est un champ";
45  event->accept();
46  //setCursor(QCursor(Qt::PointingHandCursor));
47  }
48  else
49  {
50  QGraphicsView::dragEnterEvent(event);
51  qDebug()<<this->scene()->itemAt(lePointMappe,QTransform())->data(32).toString();
52 
53  }
54  }
55  }//fin du sinon
56  }
57 void customGraphicsView::dragMoveEvent(QDragMoveEvent *event)
58  {
59  qDebug()<<"customGraphicsView::dragMoveEvent(QDragMoveEvent *event)";
60  if(event->source()->objectName()=="listWidgetTables")
61  {
62  event->accept();
63  }
64  else
65  {
66 
67  QPointF lePointMapp=this->mapToScene(event->pos());
68  QPoint lePointMappe=lePointMapp.toPoint();
69  if (this->scene()->itemAt(lePointMappe,QTransform())->data(32).toString()=="Table")
70  {
71  event->setDropAction(Qt::MoveAction);
72  event->accept();
73  //setCursor(QCursor(Qt::PointingHandCursor));
74  }
75  else
76  {
77  if(this->scene()->itemAt(lePointMappe,QTransform())->data(32).toString()=="Field")
78  {
79  qDebug()<<"c'est un champ";
80  event->setDropAction(Qt::MoveAction);
81  event->accept();
82  //setCursor(QCursor(Qt::PointingHandCursor));
83  }
84  else
85  {
86  qDebug()<<"glourps";
87  event->ignore();
88  }
89  }
90  }
91  }
92 
93 void customGraphicsView::dropEvent(QDropEvent *event)
94 { QPointF lePointMapp=this->mapToScene(event->pos());
95  QPoint lePointMappe=lePointMapp.toPoint();
96  if(event->source()->objectName()=="listWidgetTables")
97  {
98  //ajout des tables sélectionnées
99  emit ilYADesTablesAAjouter(lePointMappe);
100  }
101  else
102  {
103  qDebug()<<"customGraphicsView::dropEvent(QDropEvent *event)";
104  //si une table est à l'origine du dragndrop
105  if(event->mimeData()->hasFormat("text/Table"))
106  {
107  qDebug()<<"il a le format text/Table";
108  //si la destination est une table
109  if (this->scene()->itemAt(lePointMappe,QTransform())->data(32).toString()=="Table")
110  {
111  Entite* table1=(Entite*)this->scene()->itemAt(lePointMappe,QTransform())->data(34).toLongLong();
112  qDebug()<<"table1:"<<table1;
113  QByteArray qba=event->mimeData()->data("text/Table");
114  QString data(qba);
115  QStringList typeEtNomEtAdresse=data.split(';');
116  Entite * table2=(Entite*) typeEtNomEtAdresse[2].toLongLong();//recup de l'adresse de la table2
117  qDebug()<<"table2:"<<table2;
118  //création du lien entre les deux tables
119  //trouver les deux tables:
120  if(table1!=table2)
121  emit jointureRequise(table1,table2);
122  else
123  {
124  qDebug()<<"jointure réflexive interdite créez un alias";
125  //jointure reflexive
126  emit jointureRequise(table1,table1);
127  }
128 
129  }
130  else
131  {
132 
133  event->ignore();
134  }
135  }
136  else //l'emmetteur du drag n'est ni une table ni une query
137  {
138  event->ignore();
139  }
140  }
141 }
143 {
144  scale(1.2, 1.2);
145 }
147 { scale(1 / 1.2, 1 / 1.2);
148 }
void zoomIn()
zoomIn Zoom In items are biggest
void ilYADesTablesAAjouter(QPoint)
ilYADesTablesAAjouter
void dropEvent(QDropEvent *event)
dropEvent
void dragEnterEvent(QDragEnterEvent *event)
dragEnterEvent
void jointureRequise(Entite *, Entite *)
jointureRequise User wants to link two Objects.
void zoomOut()
zoomOut Zoom out items are smaller
void dragMoveEvent(QDragMoveEvent *event)
dragMoveEvent
The Entite class Entity is an object we have to deal with.
Definition: entite.h:20