gui/graph_displayer_canvas-event.cc
changeset 1550 4dcbb4ab1d7a
parent 1525 6d94de269ab1
child 1551 2b45f64f6377
equal deleted inserted replaced
3:31371942cb89 4:7adaefa74fc3
    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);
   534 	  std::cout << "ERROR!!!! Invalid edge found!" << std::endl;
   586 	  std::cout << "ERROR!!!! Invalid edge found!" << std::endl;
   535 	}
   587 	}
   536     }
   588     }
   537 
   589 
   538 }
   590 }
       
   591