source: trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_mouseEvent.cpp @ 26

Last change on this file since 26 was 26, checked in by chou, 17 years ago

Release 3 du viewer:
Etape 1 et 2 du projet complet et à jour.

  • Property svn:executable set to *
File size: 6.9 KB
Line 
1#include "window.h"
2
3using namespace std;
4using namespace morpheo::tools::viewer::parser;
5using namespace morpheo::tools::viewer::bdd;
6using namespace morpheo::tools::viewer::graphics;
7
8void Window::mousePressEvent (QMouseEvent *e){
9 
10  if(paint && (p.getArchitecture() != NULL)){
11
12    compo = p.getComponent();
13   
14   
15    QMouseEvent *mouseEvent = (QMouseEvent *) e;
16   
17    mouseX = mouseEvent->x();
18    mouseY = mouseEvent->y();
19   
20    bool bc = false;
21    int cx,cy,tx,ty;
22    string cc,nc;
23    bool found = false;
24
25    for(QList<Component>::iterator it=compo->begin();it!=compo->end();++it){
26      Coord *co = it->get_Position();
27      int px = co->get_hg_x();
28      int py = co->get_hg_y();
29      int taillex = co->get_size_x();
30      int tailley = co->get_size_y();
31      QString t=QString::fromStdString(it->getType()).toLower();
32      if(e->type() == QMouseEvent::MouseButtonDblClick && e->button() == Qt::LeftButton){
33       
34        if(mouseX >= px + MARGEX  && mouseY >= py +MARGEY && mouseX <= px+taillex + MARGEX  && mouseY <= py+tailley + MARGEY) {
35         
36          bc = false;
37          paint = false;
38          repaint();
39          found=true;
40          this->setDisabled(true);
41        }
42      }
43      if(found){ 
44        mess = new QWidget();
45        mess->setFixedSize(200,50);
46        mess->move(200,50);
47        QBoxLayout *b = new QBoxLayout(QBoxLayout::TopToBottom,0);
48        QLabel *l = new QLabel();
49        l->setText("please wait while charging");
50        b->addWidget(l);
51        mess->setLayout(b);
52        mess->show();
53        mess_open = true;
54
55        p=base->get_BasePos(t.toStdString());
56        entity = p.getEntity();
57        c = new Coord(250,250,250,250);
58        port_east = entity->getPortEast(c);
59        port_west = entity->getPortWest(c);
60        port_north = entity->getPortNorth(c);
61        port_south = entity->getPortSouth(c);
62        if(cpt_level!=0)
63          tab[cpt_level]=father;
64        father = current;
65        current = QString::fromStdString(t.toStdString());
66        cpt_level++;
67        tab[cpt_level] = father;
68        paint = true;
69        this->releaseMouse();
70        repaint();
71        write_name("");
72        write_comment("");
73        erase_position();
74        erase_size();
75        found = false;
76        this->setDisabled(false);
77      }
78     
79      if(e->type() == QMouseEvent::MouseButtonPress && e->button() == Qt::LeftButton){
80        if(mouseX >= px + MARGEX  && mouseY >= py +MARGEY && mouseX <= px+taillex + MARGEX  && mouseY <= py+tailley + MARGEY) {
81          bc = true;
82          nc = it->getName();
83          cx = px;
84          cy = py;
85          tx = taillex;
86          ty = tailley;
87          BaseP tp = base->get_BasePos(t.toStdString());
88          if(&tp != NULL)
89                cc=tp.getComment();
90          component_clicked = true;
91        }
92      }
93    }
94    if(bc){
95      write_name(nc);
96      write_position(cx,cy);
97      write_size(tx,ty);
98      write_comment(cc);
99    }
100  }
101}
102
103
104void Window::mouseMoveEvent(QMouseEvent *e){
105
106   if(paint && (p.getArchitecture() != NULL) && !component_clicked){
107
108    compo = p.getComponent();
109   
110    QMouseEvent *mouseEvent = (QMouseEvent *) e;
111
112    mouseX = mouseEvent->x();
113    mouseY = mouseEvent->y();
114   
115    bool b  = false;
116    bool b2 = false;
117    int px,py,taillex,tailley,sx,sy,ppx,ppy;
118    string s,c;
119   
120    for(QList<Component>::iterator it=compo->begin();it!=compo->end();++it){
121      Coord *co = it->get_Position();
122      px = co->get_hg_x();
123      py = co->get_hg_y();
124      taillex = co->get_size_x();
125      tailley = co->get_size_y();
126     
127      if(e->type() == QMouseEvent::MouseMove){
128        if(mouseX >= px + MARGEX  && mouseY >= py +MARGEY && mouseX <= px+taillex + MARGEX  && mouseY <= py+tailley + MARGEY) {
129          b = true;
130          s = it->getName();
131          BaseP tp=base->get_BasePos(it->getName());
132          if(&tp!=NULL)
133            c=tp.getComment();
134          ppx = px;
135          ppy = py;
136        }
137      }
138   
139   
140
141      // QList<PortMap> *pm=it->getPortMap();
142//       for (QList<PortMap>::iterator it3=pm->begin();it3!=pm->end();++it3) {
143//      Signal *sig=base->getSignal(it->getType(),new PortMap(*it3));
144//      if(e->type() == QMouseEvent::MouseMove){
145//        if(mouseX >= sig->get_dest_x() - 5  + MARGEX  && mouseY >= sig->get_dest_x() - 5 +MARGEY && mouseX <= sig->get_dest_x() + 5  + MARGEX  && mouseY <= sig->get_dest_x() + 5 +MARGEY) {
146//          b2 = true;
147//          s = it3->getName();
148//          sx = portX;
149//          sy = portY;
150//        }
151//      }
152//       }
153    }
154   
155    if(b){
156      write_name(s);
157      write_position(ppx,ppy);
158      write_size(taillex,tailley);
159      write_comment(c);
160    }
161    else{
162      write_name("");
163      erase_position();
164      erase_size();
165      write_comment("");
166    }
167   
168   
169    // if(b2){
170//       write_name(s);
171//       write_position(sx,sy);
172//     }
173//     else{
174//       write_name("");
175//       erase_position();
176//     }
177    //  }
178 
179//    bool b3;
180//    int sx2,sy2;
181//    string s2;
182   
183//    for(QList<Port>::iterator it=port_east.begin(); it!=port_east.end(); ++it){
184//       portX = it->get_x();
185//       portY = it->get_y();
186//       if(mouseX >= portX - 10 && mouseY >= portY - 10 && mouseX <= portX + 10 && mouseY <= portY + 10){
187//      b3 = true;
188//      s2 = it->getName();
189//      sx2 = portX;
190//      sy2 = portY;
191//       }
192//     }
193   
194//     for(QList<Port>::iterator it=port_west.begin(); it!=port_west.end(); ++it){
195//       portX = it->get_x() ;
196//       portY = it->get_y() ;
197//       if(mouseX >= portX - 5 && mouseY >= portY - 5 && mouseX <= portX + 5 && mouseY <= portY + 5){
198//      b3 = true;
199//      s2 = it->getName();
200//      sx2 = portX;
201//      sy2 = portY;
202//       }
203//     }
204   
205//     for(QList<Port>::iterator it=port_north.begin(); it!=port_north.end(); ++it){
206//       portX = it->get_x() ;
207//       portY = it->get_y() ;
208//       if(mouseX >= portX - 5 && mouseY >= portY - 5 && mouseX <= portX + 5 && mouseY <= portY + 5){
209//      b3 = true;
210//      s2 = it->getName();
211//      sx2 = portX;
212//      sy2 = portY;
213//       }
214//     }
215   
216//     for(QList<Port>::iterator it=port_south.begin(); it!=port_south.end(); ++it){
217//       portX = it->get_x() ;
218//       portY = it->get_y() ;
219//       if(mouseX >= portX - 5 && mouseY >= portY - 5 && mouseX <= portX + 5 && mouseY <= portY + 5){
220//      b3 = true;
221//      s2 = it->getName();
222//      sx2 = portX;
223//      sy2 = portY;
224//       }
225//     }
226   }
227}
228   
229 
230void Window::_back(){
231  if(cpt_level==0){
232    QMessageBox *m = new QMessageBox(this);
233    m->setText("can't go up, you're on the top level !");
234    m->addButton("ok",QMessageBox::YesRole);
235    m->show(); 
236  }
237 
238  else{
239    this->setDisabled(true);
240    paint = false;
241    repaint();
242    cpt_level--;
243    mess_charg = new QWidget();
244    mess_charg->setFixedSize(200,50);
245    mess_charg->move(200,50);
246    charg_open = true;
247    QBoxLayout *b = new QBoxLayout(QBoxLayout::TopToBottom,0);
248    QLabel *l = new QLabel();
249    l->setText("please wait while charging");
250    b->addWidget(l);
251    mess_charg->setLayout(b);
252    mess_charg->show();
253   
254    p = base->get_BasePos(father.toStdString());
255    entity = p.getEntity();
256    c = new Coord(250,250,250,250);
257    port_east = entity->getPortEast(c);
258    port_west = entity->getPortWest(c);
259    port_north = entity->getPortNorth(c);
260    port_south = entity->getPortSouth(c);
261    father = tab[cpt_level];
262    current = QString::fromStdString(entity->getName());
263    paint = true;
264    repaint();
265    this->setDisabled(false);
266  }
267}
268
Note: See TracBrowser for help on using the repository browser.