1 | #include "window.h" |
---|
2 | |
---|
3 | using namespace morpheo::tools::viewer::parser; |
---|
4 | using namespace morpheo::tools::viewer::bdd; |
---|
5 | using namespace morpheo::tools::viewer::graphics; |
---|
6 | |
---|
7 | void Window::paintEvent( QPaintEvent * ) |
---|
8 | { |
---|
9 | /*draw window size*/ |
---|
10 | setMinimumSize(600,600); |
---|
11 | |
---|
12 | int schema; |
---|
13 | QString t; |
---|
14 | |
---|
15 | |
---|
16 | if(paint){ |
---|
17 | /*draw the main component*/ |
---|
18 | painter.begin(this); |
---|
19 | painter.setPen(Qt::blue); |
---|
20 | painter.drawRect(MARGEX,MARGEY,MARGEX+450,MARGEY+450); |
---|
21 | |
---|
22 | Entity *e = p.getEntity(); |
---|
23 | string s; |
---|
24 | s.append(e->getName()); |
---|
25 | s.append(" : "); |
---|
26 | s.append(e->getType()); |
---|
27 | painter.setPen(Qt::black); |
---|
28 | painter.drawText(50,10,500,60,Qt::AlignCenter,QString::fromStdString(s)); |
---|
29 | painter.setPen(Qt::blue); |
---|
30 | |
---|
31 | /*draw the ports of the main component*/ |
---|
32 | for(QList<Port>::iterator it=port_east.begin(); it!=port_east.end(); ++it){ |
---|
33 | portX = it->get_x(); |
---|
34 | portY = it->get_y(); |
---|
35 | drawPort(portX + MARGEX,portY + MARGEY ,EAST,it->getDirection()); |
---|
36 | |
---|
37 | } |
---|
38 | |
---|
39 | for(QList<Port>::iterator it=port_west.begin(); it!=port_west.end(); ++it){ |
---|
40 | portX = it->get_x() ; |
---|
41 | portY = it->get_y() ; |
---|
42 | drawPort(portX + MARGEX,portY + MARGEY, WEST, it->getDirection()); |
---|
43 | |
---|
44 | } |
---|
45 | |
---|
46 | for(QList<Port>::iterator it=port_north.begin(); it!=port_north.end(); ++it){ |
---|
47 | portX = it->get_x() ; |
---|
48 | portY = it->get_y() ; |
---|
49 | drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it->getDirection()); |
---|
50 | |
---|
51 | } |
---|
52 | |
---|
53 | for(QList<Port>::iterator it=port_south.begin(); it!=port_south.end(); ++it){ |
---|
54 | portX = it->get_x() ; |
---|
55 | portY = it->get_y() ; |
---|
56 | drawPort(portX + MARGEX,portY+ MARGEY + 20 ,SOUTH,it->getDirection()); |
---|
57 | |
---|
58 | } |
---|
59 | |
---|
60 | /*draw the components inside the main component*/ |
---|
61 | if(p.getArchitecture()!=NULL){ |
---|
62 | compo = p.getComponent(); |
---|
63 | for(QList<Component>::iterator it=compo->begin();it!=compo->end();++it){ |
---|
64 | Coord *co = it->get_Position(); |
---|
65 | posX = co->get_hg_x()+MARGEX; |
---|
66 | posY = co->get_hg_y()+MARGEY; |
---|
67 | tailleX = co->get_size_x(); |
---|
68 | tailleY = co->get_size_y(); |
---|
69 | |
---|
70 | t=QString::fromStdString(it->getName()); |
---|
71 | //t=QString::fromStdString(it->getType()).toLower(); |
---|
72 | BaseP tp = base->get_BasePos(t.toStdString()); |
---|
73 | if(&tp != NULL){ |
---|
74 | schema=tp.getSchema(); |
---|
75 | switch(schema){ |
---|
76 | case 0://a basic element |
---|
77 | painter.drawRect(posX,posY,tailleX,tailleY); |
---|
78 | break; |
---|
79 | case 1://a combinatoire element |
---|
80 | painter.drawEllipse(posX,posY,tailleX,tailleY); |
---|
81 | break; |
---|
82 | case 2://a FIFO |
---|
83 | painter.drawRect(posX,posY,tailleX,tailleY); |
---|
84 | painter.drawLine(posX+tailleX/4,posY+tailleY,posX+tailleX/4,posY); |
---|
85 | painter.drawLine(posX+tailleX/2,posY+tailleY,posX+tailleX/2,posY); |
---|
86 | painter.drawLine(posX+3*tailleX/4,posY+tailleY,posX+3*tailleX/4,posY); |
---|
87 | break; |
---|
88 | case 3://a register |
---|
89 | painter.drawRect(posX,posY,tailleX,tailleY); |
---|
90 | painter.drawLine(posX,posY+tailleY,posX+tailleX/2,posY+tailleY/2); |
---|
91 | painter.drawLine(posX+tailleX,posY+tailleY,posX+tailleX/2,posY+tailleY/2); |
---|
92 | break; |
---|
93 | } |
---|
94 | } |
---|
95 | |
---|
96 | if (componentName){ |
---|
97 | QString compo_name = QString::fromStdString(it->getName()); |
---|
98 | painter.drawText(posX - compo_name.size()/2 , posY + tailleY/2,compo_name); |
---|
99 | } |
---|
100 | |
---|
101 | /*draw the ports of the inside components*/ |
---|
102 | Coord *co2=new Coord( co->get_hg_x() + tailleX/2, co->get_hg_y() + tailleY/2,tailleX/2,tailleY/2); |
---|
103 | |
---|
104 | QList<Port> ports2=(it->getPortEast(co2)); |
---|
105 | for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2) |
---|
106 | { |
---|
107 | |
---|
108 | portX =it2->get_x(); |
---|
109 | portY =it2->get_y(); |
---|
110 | drawPort(portX + MARGEX,portY+MARGEY , EAST,it2->getDirection()); |
---|
111 | } |
---|
112 | ports2=(it->getPortWest(co)); |
---|
113 | for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2) |
---|
114 | { |
---|
115 | |
---|
116 | portX =it2->get_x(); |
---|
117 | portY =it2->get_y(); |
---|
118 | drawPort(portX + MARGEX ,portY+MARGEY ,WEST,it2->getDirection()); |
---|
119 | } |
---|
120 | ports2=(it->getPortNorth(co)); |
---|
121 | for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2) |
---|
122 | { |
---|
123 | |
---|
124 | portX =it2->get_x(); |
---|
125 | portY =it2->get_y(); |
---|
126 | drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it2->getDirection()); |
---|
127 | |
---|
128 | } |
---|
129 | ports2=(it->getPortSouth(co)); |
---|
130 | for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2) |
---|
131 | { |
---|
132 | |
---|
133 | portX =it2->get_x(); |
---|
134 | portY =it2->get_y(); |
---|
135 | drawPort(portX + MARGEX ,portY+MARGEY,SOUTH,it2->getDirection()); |
---|
136 | |
---|
137 | } |
---|
138 | painter.setPen(Qt::red); |
---|
139 | QList<PortMap> *pm=it->getPortMap(); |
---|
140 | |
---|
141 | /*draw the signals*/ |
---|
142 | for (QList<PortMap>::iterator it3=pm->begin();it3!=pm->end();++it3) |
---|
143 | { |
---|
144 | Signal *s=base->getSignal(&p,it->getName(),new PortMap(*it3)); |
---|
145 | painter.drawLine(s->get_src_x()+MARGEX,s->get_src_y()+MARGEY,s->get_dest_x()+MARGEX,s->get_dest_y()+MARGEY); |
---|
146 | |
---|
147 | if(signalName){ |
---|
148 | QString signal_name = QString::fromStdString(it3->getName()); |
---|
149 | if(s->get_src_x() > s->get_dest_x()) |
---|
150 | painter.drawText(s->get_dest_x() + MARGEX - 40 ,s->get_dest_y() + MARGEY-10, signal_name); |
---|
151 | if(s->get_src_x() < s->get_dest_x()) |
---|
152 | painter.drawText(s->get_dest_x() + MARGEX - 40 ,s->get_dest_y() + MARGEY-10, signal_name); |
---|
153 | } |
---|
154 | |
---|
155 | } |
---|
156 | if(charg_open){ |
---|
157 | charg_open = false; |
---|
158 | mess_charg->close(); |
---|
159 | } |
---|
160 | painter.setPen(Qt::blue); |
---|
161 | } |
---|
162 | } |
---|
163 | painter.end(); |
---|
164 | } |
---|
165 | if(mess_open){ |
---|
166 | mess_open = false; |
---|
167 | mess->close(); |
---|
168 | } |
---|
169 | } |
---|
170 | |
---|
171 | void Window::repaint(){ |
---|
172 | } |
---|
173 | |
---|