39 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createEdgeEventHandler), false); |
39 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createEdgeEventHandler), false); |
40 break; |
40 break; |
41 |
41 |
42 case ERASER: |
42 case ERASER: |
43 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::eraserEventHandler), false); |
43 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::eraserEventHandler), false); |
|
44 break; |
|
45 |
|
46 case EDGE_MAP_EDIT: |
|
47 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::edgeMapEditEventHandler), false); |
|
48 break; |
|
49 |
|
50 case NODE_MAP_EDIT: |
|
51 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::nodeMapEditEventHandler), false); |
44 break; |
52 break; |
45 |
53 |
46 default: |
54 default: |
47 break; |
55 break; |
48 } |
56 } |
208 break; |
216 break; |
209 |
217 |
210 //move the new node |
218 //move the new node |
211 case GDK_MOTION_NOTIFY: |
219 case GDK_MOTION_NOTIFY: |
212 { |
220 { |
213 double world_motion_x, world_motion_y; |
|
214 GdkEvent * generated=new GdkEvent(); |
221 GdkEvent * generated=new GdkEvent(); |
215 generated->motion.x=e->motion.x; |
222 generated->motion.x=e->motion.x; |
216 generated->motion.y=e->motion.y; |
223 generated->motion.y=e->motion.y; |
217 generated->type=GDK_MOTION_NOTIFY; |
224 generated->type=GDK_MOTION_NOTIFY; |
218 moveEventHandler(generated); |
225 moveEventHandler(generated); |
474 break; |
481 break; |
475 } |
482 } |
476 return false; |
483 return false; |
477 } |
484 } |
478 |
485 |
|
486 bool GraphDisplayerCanvas::edgeMapEditEventHandler(GdkEvent* e) |
|
487 { |
|
488 switch(e->type) |
|
489 { |
|
490 case GDK_BUTTON_PRESS: |
|
491 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y); |
|
492 active_item=(get_item_at(clicked_x, clicked_y)); |
|
493 active_edge=INVALID; |
|
494 for (EdgeIt i(g); i!=INVALID; ++i) |
|
495 { |
|
496 if(edgesmap[i]==active_item) |
|
497 { |
|
498 active_edge=i; |
|
499 } |
|
500 } |
|
501 if(active_edge!=INVALID) |
|
502 { |
|
503 if(canvasentrywidget) |
|
504 { |
|
505 delete(canvasentrywidget); |
|
506 } |
|
507 entrywidget.show(); |
|
508 entrywidget.set_text("Hello!"); |
|
509 // canvasentrywidget=new Gnome::Canvas::Widget(displayed_graph, clicked_x, clicked_y,entrywidget); |
|
510 canvasentrywidget=new Gnome::Canvas::Widget(displayed_graph, e->button.x, e->button.y, entrywidget); |
|
511 canvasentrywidget->property_width().set_value(70); |
|
512 canvasentrywidget->property_height().set_value(50); |
|
513 canvasentrywidget->show(); |
|
514 *(edgesmap[active_edge]) << Gnome::Canvas::Properties::fill_color("red"); |
|
515 } |
|
516 active_item=NULL; // !!!!!!!!!!!!!!!!!!!!!!!!!!! |
|
517 active_edge=INVALID; // !!!!!!!!!!!!!!!!!!!!!!!!!!! |
|
518 break; |
|
519 default: |
|
520 break; |
|
521 } |
|
522 return false; |
|
523 } |
|
524 |
|
525 bool GraphDisplayerCanvas::nodeMapEditEventHandler(GdkEvent* e) |
|
526 { |
|
527 e=e; |
|
528 return false; |
|
529 } |
|
530 |
479 void GraphDisplayerCanvas::deleteItem(NodeIt node_to_delete) |
531 void GraphDisplayerCanvas::deleteItem(NodeIt node_to_delete) |
480 { |
532 { |
481 delete(nodetextmap[node_to_delete]); |
533 delete(nodetextmap[node_to_delete]); |
482 delete(nodesmap[node_to_delete]); |
534 delete(nodesmap[node_to_delete]); |
483 g.erase(node_to_delete); |
535 g.erase(node_to_delete); |