- use Gtk::Dialog to set the new values of edge and node maps
authorladanyi
Fri, 26 Aug 2005 07:35:23 +0000
changeset 1648dd8672338691
parent 1647 d5dc956393b2
child 1649 95c8cd25a456
- use Gtk::Dialog to set the new values of edge and node maps
- update all edges/nodes when editing a map so that edge widths and node
sizes change properly
- coordinate maps are no longer selectable in the maps window
gui/graph_displayer_canvas-event.cc
gui/graph_displayer_canvas.cc
gui/graph_displayer_canvas.h
gui/map_win.cc
     1.1 --- a/gui/graph_displayer_canvas-event.cc	Tue Aug 23 16:27:59 2005 +0000
     1.2 +++ b/gui/graph_displayer_canvas-event.cc	Fri Aug 26 07:35:23 2005 +0000
     1.3 @@ -32,11 +32,6 @@
     1.4  	  //has to do the same thing as in the case of NODE_MAP_EDIT
     1.5  	case NODE_MAP_EDIT:
     1.6  	  {
     1.7 -	    GdkEvent * generated=new GdkEvent();
     1.8 -	    generated->type=GDK_KEY_PRESS;
     1.9 -	    ((GdkEventKey*)generated)->keyval=GDK_KP_Enter;
    1.10 -	    entryWidgetChangeHandler(generated);
    1.11 -	    entrywidget.hide();
    1.12  	    break;
    1.13  	  }
    1.14  	default:
    1.15 @@ -548,316 +543,189 @@
    1.16  bool GraphDisplayerCanvas::edgeMapEditEventHandler(GdkEvent* e)
    1.17  {
    1.18    if(actual_tool==EDGE_MAP_EDIT)
    1.19 +  {
    1.20 +    switch(e->type)
    1.21      {
    1.22 -      switch(e->type)
    1.23 -	{
    1.24 -	case GDK_KEY_PRESS:
    1.25 -	  //for Escape or Enter hide the displayed widget
    1.26 -	  {
    1.27 -	    nodeMapEditEventHandler(e);
    1.28 -	    break;
    1.29 -	  }
    1.30 -	case GDK_BUTTON_PRESS:
    1.31 -	  //If the click happened on an edge we place the entrywidget there and fill in the value of the activated map at that edge.
    1.32 -	  {
    1.33 -	    //for determine, whether it was an edge
    1.34 -	    Edge clicked_edge=INVALID;
    1.35 +      case GDK_BUTTON_PRESS:
    1.36 +        {
    1.37 +          //for determine, whether it was an edge
    1.38 +          Edge clicked_edge=INVALID;
    1.39  
    1.40 -	    //find the activated item between texts
    1.41 -            window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
    1.42 -            active_item=(get_item_at(clicked_x, clicked_y));
    1.43 -	    for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i)
    1.44 -	      {
    1.45 -		if(edgetextmap[i]==active_item)
    1.46 -		  {
    1.47 -		    clicked_edge=i;
    1.48 -		  }
    1.49 -	      }
    1.50 +          window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
    1.51 +          active_item=(get_item_at(clicked_x, clicked_y));
    1.52  
    1.53 -	    //if it was not between texts, search for it between edges
    1.54 -	    if(clicked_edge==INVALID)
    1.55 -	      {
    1.56 -		for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i)
    1.57 -		  {
    1.58 -		    //at the same time only one can be active
    1.59 -		    if((edgesmap[i]==active_item)||(edgetextmap[i]==active_item))
    1.60 -		      {
    1.61 -			clicked_edge=i;
    1.62 -		      }
    1.63 -		  }
    1.64 -	      }
    1.65 -	    //if it was really an edge...
    1.66 -	    if(clicked_edge!=INVALID)
    1.67 -	      {
    1.68 -                // the id map is not editable
    1.69 -                if (edgemap_to_edit == "id") return 0;
    1.70 +          //find the activated item between texts
    1.71 +          for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i)
    1.72 +          {
    1.73 +            //at the same time only one can be active
    1.74 +            if(edgetextmap[i]==active_item)
    1.75 +            {
    1.76 +              clicked_edge=i;
    1.77 +            }
    1.78 +          }
    1.79  
    1.80 -		//If there is already edited edge, it has to be saved first
    1.81 -		if(entrywidget.is_visible())
    1.82 -		  {
    1.83 -		    GdkEvent * generated=new GdkEvent();
    1.84 -		    generated->type=GDK_KEY_PRESS;
    1.85 -		    ((GdkEventKey*)generated)->keyval=GDK_KP_Enter;
    1.86 -		    entryWidgetChangeHandler(generated);
    1.87 -		  }
    1.88 -		//If the previous value could be saved, we can go further, otherwise not
    1.89 -		if(!entrywidget.is_visible())
    1.90 -		  {
    1.91 -		    //and there is activated map
    1.92 -		    if(edgetextmap[clicked_edge]->property_text().get_value()!="")
    1.93 -		      {
    1.94 -			//activate the general variable for it
    1.95 -			active_edge=clicked_edge;
    1.96 -			//delete visible widget if there is
    1.97 -			if(canvasentrywidget)
    1.98 -			  {
    1.99 -			    delete(canvasentrywidget);
   1.100 -			  }
   1.101 +          //if it was not between texts, search for it between edges
   1.102 +          if(clicked_edge==INVALID)
   1.103 +          {
   1.104 +            for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i)
   1.105 +            {
   1.106 +              //at the same time only one can be active
   1.107 +              if((edgesmap[i]==active_item)||(edgetextmap[i]==active_item))
   1.108 +              {
   1.109 +                clicked_edge=i;
   1.110 +              }
   1.111 +            }
   1.112 +          }
   1.113 + 
   1.114 +          //if it was really an edge...
   1.115 +          if(clicked_edge!=INVALID)
   1.116 +          {
   1.117 +            // the id map is not editable
   1.118 +            if (edgemap_to_edit == "id") return 0;
   1.119  
   1.120 -			//initialize the entry
   1.121 -			entrywidget.show();
   1.122 +            //and there is activated map
   1.123 +            if(edgetextmap[clicked_edge]->property_text().get_value()!="")
   1.124 +            {
   1.125 +              //activate the general variable for it
   1.126 +              active_edge=clicked_edge;
   1.127  
   1.128 -			//fill in the correct value
   1.129 -			entrywidget.set_text(edgetextmap[active_edge]->property_text().get_value());
   1.130 -
   1.131 -			//replace and resize the entry to the activated edge and put it in a Canvas::Widget to be able to display it on gdc
   1.132 -			xy<double> entry_coos;
   1.133 -			entry_coos.x=(edgetextmap[active_edge])->property_x().get_value();
   1.134 -			entry_coos.x-=edgetextmap[active_edge]->property_text_width().get_value()/2;
   1.135 -			entry_coos.y=(edgetextmap[active_edge])->property_y().get_value();
   1.136 -			entry_coos.y-=edgetextmap[active_edge]->property_text_height().get_value()*1.5/2;
   1.137 -			canvasentrywidget=new Gnome::Canvas::Widget(displayed_graph, entry_coos.x, entry_coos.y, entrywidget);
   1.138 -			canvasentrywidget->property_width().set_value(edgetextmap[active_edge]->property_text_width().get_value()*4);
   1.139 -			canvasentrywidget->property_height().set_value(edgetextmap[active_edge]->property_text_height().get_value()*1.5);
   1.140 -
   1.141 -			//setting the focus to newly created widget
   1.142 -			parentwin->set_focus(entrywidget);
   1.143 -			parentwin->activate_focus();
   1.144 -		      }
   1.145 -		  }
   1.146 -	      }
   1.147 -	    //if it was not an edge...
   1.148 -	    else
   1.149 -	      {
   1.150 -		//In this case the click did not happen on an edge
   1.151 -		//if there is visible entry we save the value in it
   1.152 -		//we pretend like an Enter was presse din the Entry widget
   1.153 -		GdkEvent * generated=new GdkEvent();
   1.154 -		generated->type=GDK_KEY_PRESS;
   1.155 -		((GdkEventKey*)generated)->keyval=GDK_KP_Enter;
   1.156 -		entryWidgetChangeHandler(generated);
   1.157 -	      }
   1.158 -	    break;
   1.159 -	  }
   1.160 -	default:
   1.161 -	  break;
   1.162 -	}
   1.163 +              //create a dialog
   1.164 +              Gtk::Dialog dialog("Edit value", *parentwin, true);
   1.165 +              dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
   1.166 +              dialog.add_button(Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT);
   1.167 +              Gtk::VBox* vbox = dialog.get_vbox();
   1.168 +              Gtk::Adjustment adj(
   1.169 +                  (*mapstorage.edgemap_storage[edgemap_to_edit])[active_edge],
   1.170 +                  -1000000.0,
   1.171 +                  1000000.0,
   1.172 +                  1.0, 5.0, 0.0);
   1.173 +              //TODO: find out why doesn't it work with
   1.174 +              //numeric_limits<double>::min/max
   1.175 +              Gtk::SpinButton spin(adj);
   1.176 +              spin.set_numeric(true);
   1.177 +              spin.set_digits(4);
   1.178 +              vbox->add(spin);
   1.179 +              spin.show();
   1.180 +              switch (dialog.run())
   1.181 +              {
   1.182 +                case Gtk::RESPONSE_NONE:
   1.183 +                case Gtk::RESPONSE_CANCEL:
   1.184 +                  break;
   1.185 +                case Gtk::RESPONSE_ACCEPT:
   1.186 +                  double new_value = spin.get_value();
   1.187 +                  (*mapstorage.edgemap_storage[edgemap_to_edit])[active_edge] =
   1.188 +                    new_value;
   1.189 +                  std::ostringstream ostr;
   1.190 +                  ostr << new_value;
   1.191 +                  edgetextmap[active_edge]->property_text().set_value(
   1.192 +                      ostr.str());
   1.193 +                  //mapwin.updateEdge(active_edge);
   1.194 +                  mapwin.updateEdge(Edge(INVALID));
   1.195 +              }
   1.196 +            }
   1.197 +          }
   1.198 +          break;
   1.199 +        }
   1.200 +      default:
   1.201 +        break;
   1.202      }
   1.203 +  }
   1.204    return false;  
   1.205  }
   1.206  
   1.207  bool GraphDisplayerCanvas::nodeMapEditEventHandler(GdkEvent* e)
   1.208  {
   1.209    if(actual_tool==NODE_MAP_EDIT)
   1.210 +  {
   1.211 +    switch(e->type)
   1.212      {
   1.213 -      switch(e->type)
   1.214 -	{
   1.215 -	case GDK_KEY_PRESS:
   1.216 -	  //for Escape or Enter hide the displayed widget
   1.217 -	  {
   1.218 -	    switch(((GdkEventKey*)e)->keyval)
   1.219 -	      {
   1.220 -	      case GDK_Escape:
   1.221 -		entrywidget.hide();
   1.222 -		break;
   1.223 -	      case GDK_Return:
   1.224 -	      case GDK_KP_Enter:
   1.225 -		entrywidget.hide();
   1.226 -		break;
   1.227 -	      default:
   1.228 -		break;
   1.229 -	      }
   1.230 -  
   1.231 -	    break;
   1.232 -	  }
   1.233 -	case GDK_BUTTON_PRESS:
   1.234 -	  //If the click happened on an edge we place the entrywidget there and fill in the value of the activated map at that edge.
   1.235 -	  {
   1.236 -	    //for determine, whether it was a node
   1.237 -	    Node clicked_node=INVALID;
   1.238 +      case GDK_BUTTON_PRESS:
   1.239 +        {
   1.240 +          //for determine, whether it was a node
   1.241 +          Node clicked_node=INVALID;
   1.242  
   1.243 -	    //find the activated item between texts
   1.244 -	    active_item=(get_item_at(e->button.x, e->button.y));
   1.245 -	    for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
   1.246 -	      {
   1.247 -		//at the same time only one can be active
   1.248 -		if(nodetextmap[i]==active_item)
   1.249 -		  {
   1.250 -		    clicked_node=i;
   1.251 -		  }
   1.252 -	      }
   1.253 +          window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
   1.254 +          active_item=(get_item_at(clicked_x, clicked_y));
   1.255  
   1.256 -	    //if there was not, search for it between nodes
   1.257 -	    if(clicked_node==INVALID)
   1.258 -	      {
   1.259 -		window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
   1.260 -		active_item=(get_item_at(clicked_x, clicked_y));
   1.261 +          //find the activated item between texts
   1.262 +          for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
   1.263 +          {
   1.264 +            //at the same time only one can be active
   1.265 +            if(nodetextmap[i]==active_item)
   1.266 +            {
   1.267 +              clicked_node=i;
   1.268 +            }
   1.269 +          }
   1.270  
   1.271 -		for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
   1.272 -		  {
   1.273 -		    //at the same time only one can be active
   1.274 -		    if(nodesmap[i]==active_item)
   1.275 -		      {
   1.276 -			clicked_node=i;
   1.277 -		      }
   1.278 -		  }
   1.279 -	      }
   1.280 -	    //if it was really an edge...
   1.281 -	    if(clicked_node!=INVALID)
   1.282 -	      {
   1.283 -                // the id map is not editable
   1.284 -                if (nodemap_to_edit == "id") return 0;
   1.285 -		//If there is already edited edge, it has to be saved first
   1.286 -		if(entrywidget.is_visible())
   1.287 -		  {
   1.288 -		    GdkEvent * generated=new GdkEvent();
   1.289 -		    generated->type=GDK_KEY_PRESS;
   1.290 -		    ((GdkEventKey*)generated)->keyval=GDK_KP_Enter;
   1.291 -		    entryWidgetChangeHandler(generated);
   1.292 -		  }
   1.293 -		//If the previous value could be saved, we can go further, otherwise not
   1.294 -		if(!entrywidget.is_visible())
   1.295 -		  {
   1.296 -		    //and there is activated map
   1.297 -		    if(nodetextmap[clicked_node]->property_text().get_value()!="")
   1.298 -		      {
   1.299 -			//activate the general variable for it
   1.300 -			active_node=clicked_node;
   1.301 -			//delete visible widget if there is
   1.302 -			if(canvasentrywidget)
   1.303 -			  {
   1.304 -			    delete(canvasentrywidget);
   1.305 -			  }
   1.306 +          //if there was not, search for it between nodes
   1.307 +          if(clicked_node==INVALID)
   1.308 +          {
   1.309 +            for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
   1.310 +            {
   1.311 +              //at the same time only one can be active
   1.312 +              if(nodesmap[i]==active_item)
   1.313 +              {
   1.314 +                clicked_node=i;
   1.315 +              }
   1.316 +            }
   1.317 +          }
   1.318  
   1.319 -			//initialize the entry
   1.320 -			entrywidget.show();
   1.321 +          //if it was really a node...
   1.322 +          if(clicked_node!=INVALID)
   1.323 +          {
   1.324 +            // the id map is not editable
   1.325 +            if (nodemap_to_edit == "id") return 0;
   1.326  
   1.327 -			//fill in the correct value
   1.328 -			entrywidget.set_text(nodetextmap[active_node]->property_text().get_value());
   1.329 +            //and there is activated map
   1.330 +            if(nodetextmap[clicked_node]->property_text().get_value()!="")
   1.331 +            {
   1.332 +              //activate the general variable for it
   1.333 +              active_node=clicked_node;
   1.334  
   1.335 -			//replace and resize the entry to the activated node and put it in a Canvas::Widget to be able to display it on gdc
   1.336 -			xy<double> entry_coos;
   1.337 -			entry_coos.x=(nodetextmap[active_node])->property_x().get_value();
   1.338 -			entry_coos.x-=nodetextmap[active_node]->property_text_width().get_value()/2;
   1.339 -			entry_coos.y=(nodetextmap[active_node])->property_y().get_value();
   1.340 -			entry_coos.y-=nodetextmap[active_node]->property_text_height().get_value()*1.5/2;
   1.341 -			canvasentrywidget=new Gnome::Canvas::Widget(displayed_graph, entry_coos.x, entry_coos.y, entrywidget);
   1.342 -			canvasentrywidget->property_width().set_value(nodetextmap[active_node]->property_text_width().get_value()*4);
   1.343 -			canvasentrywidget->property_height().set_value(nodetextmap[active_node]->property_text_height().get_value()*1.5);
   1.344 -		      }
   1.345 -		  }
   1.346 -	      }
   1.347 -	    //if it was not an edge...
   1.348 -	    else
   1.349 -	      {
   1.350 -		//In this case the click did not happen on an edge
   1.351 -		//if there is visible entry we save the value in it
   1.352 -		//we pretend like an Enter was presse din the Entry widget
   1.353 -		GdkEvent * generated=new GdkEvent();
   1.354 -		generated->type=GDK_KEY_PRESS;
   1.355 -		((GdkEventKey*)generated)->keyval=GDK_KP_Enter;
   1.356 -		entryWidgetChangeHandler(generated);
   1.357 -	      }
   1.358 -	    break;
   1.359 -	  }
   1.360 -	default:
   1.361 -	  break;
   1.362 -	}
   1.363 +              //create a dialog
   1.364 +              Gtk::Dialog dialog("Edit value", *parentwin, true);
   1.365 +              dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
   1.366 +              dialog.add_button(Gtk::Stock::OK, Gtk::RESPONSE_ACCEPT);
   1.367 +              Gtk::VBox* vbox = dialog.get_vbox();
   1.368 +              Gtk::Adjustment adj(
   1.369 +                  (*mapstorage.nodemap_storage[nodemap_to_edit])[active_node],
   1.370 +                  -1000000.0,
   1.371 +                  1000000.0,
   1.372 +                  1.0, 5.0, 0.0);
   1.373 +              //TODO: find out why doesn't it work with
   1.374 +              //numeric_limits<double>::min/max
   1.375 +              Gtk::SpinButton spin(adj);
   1.376 +              spin.set_numeric(true);
   1.377 +              spin.set_digits(4);
   1.378 +              vbox->add(spin);
   1.379 +              spin.show();
   1.380 +              switch (dialog.run())
   1.381 +              {
   1.382 +                case Gtk::RESPONSE_NONE:
   1.383 +                case Gtk::RESPONSE_CANCEL:
   1.384 +                  break;
   1.385 +                case Gtk::RESPONSE_ACCEPT:
   1.386 +                  double new_value = spin.get_value();
   1.387 +                  (*mapstorage.nodemap_storage[nodemap_to_edit])[active_node] =
   1.388 +                    new_value;
   1.389 +                  std::ostringstream ostr;
   1.390 +                  ostr << new_value;
   1.391 +                  nodetextmap[active_node]->property_text().set_value(
   1.392 +                      ostr.str());
   1.393 +                  //mapwin.updateNode(active_node);
   1.394 +                  mapwin.updateNode(Node(INVALID));
   1.395 +              }
   1.396 +            }
   1.397 +          }
   1.398 +          break;
   1.399 +        }
   1.400 +      default:
   1.401 +        break;
   1.402      }
   1.403 +  }
   1.404    return false;  
   1.405  }
   1.406  
   1.407 -bool GraphDisplayerCanvas::entryWidgetChangeHandler(GdkEvent* e)
   1.408 -{
   1.409 -  if(entrywidget.is_visible())
   1.410 -    {
   1.411 -      if(e->type==GDK_KEY_PRESS)
   1.412 -	{
   1.413 -	  switch(((GdkEventKey*)e)->keyval)
   1.414 -	    {
   1.415 -	    case GDK_Escape:
   1.416 -	      entrywidget.hide();
   1.417 -	      break;
   1.418 -	    case GDK_KP_Enter:
   1.419 -	    case GDK_Return:
   1.420 -	      {
   1.421 -		//these variables check whether the text in the entry is valid
   1.422 -		bool valid_double=true;
   1.423 -		int point_num=0;
   1.424 -
   1.425 -		//getting the value from the entry and converting it to double
   1.426 -		Glib::ustring mapvalue_str = entrywidget.get_text();
   1.427 -
   1.428 -		char * mapvalue_ch=new char [mapvalue_str.length()];
   1.429 -		for(int i=0;i<(int)(mapvalue_str.length());i++)
   1.430 -		  {
   1.431 -		    if(((mapvalue_str[i]<'0')||(mapvalue_str[i]>'9'))&&(mapvalue_str[i]!='.'))
   1.432 -		      {
   1.433 -			valid_double=false;
   1.434 -		      }
   1.435 -		    else
   1.436 -		      {
   1.437 -			if(mapvalue_str[i]=='.')
   1.438 -			  {
   1.439 -			    point_num++;
   1.440 -			  }
   1.441 -		      }
   1.442 -		    mapvalue_ch[i]=mapvalue_str[i];
   1.443 -		  }
   1.444 -  	      
   1.445 -		//if the text in the entry was correct
   1.446 -		if((point_num<=1)&&(valid_double))
   1.447 -		  {
   1.448 -		    double mapvalue_d=atof(mapvalue_ch);
   1.449 -
   1.450 -		    //reconvert the double to string for the correct format
   1.451 -		    std::ostringstream ostr;
   1.452 -		    ostr << mapvalue_d;
   1.453 -
   1.454 -		    //save the value to the correct place
   1.455 -		    switch(actual_tool)
   1.456 -		      {
   1.457 -		      case EDGE_MAP_EDIT:
   1.458 -			edgetextmap[active_edge]->property_text().set_value(ostr.str());
   1.459 -			(*(mapstorage.edgemap_storage)[edgemap_to_edit])[active_edge]=mapvalue_d;
   1.460 -			mapwin.updateEdge(active_edge);
   1.461 -			break;
   1.462 -		      case NODE_MAP_EDIT:
   1.463 -			nodetextmap[active_node]->property_text().set_value(ostr.str());
   1.464 -			(*(mapstorage.nodemap_storage)[nodemap_to_edit])[active_node]=mapvalue_d;
   1.465 -			mapwin.updateNode(active_node);
   1.466 -			break;
   1.467 -		      default:
   1.468 -			break;
   1.469 -		      }
   1.470 -		    entrywidget.hide();
   1.471 -		  }
   1.472 -		//the text in the entry was not correct for a double
   1.473 -		else
   1.474 -		  {
   1.475 -		    std::cerr << "ERROR: only handling of double values is implemented yet!" << std::endl;
   1.476 -		  }
   1.477 -
   1.478 -		break;
   1.479 -	      }
   1.480 -	    default:
   1.481 -	      break;
   1.482 -	    }
   1.483 -	}
   1.484 -    }
   1.485 -  return false;
   1.486 -}
   1.487 -
   1.488  void GraphDisplayerCanvas::deleteItem(Node node_to_delete)
   1.489  {
   1.490    delete(nodetextmap[node_to_delete]);
     2.1 --- a/gui/graph_displayer_canvas.cc	Tue Aug 23 16:27:59 2005 +0000
     2.2 +++ b/gui/graph_displayer_canvas.cc	Fri Aug 26 07:35:23 2005 +0000
     2.3 @@ -4,9 +4,9 @@
     2.4  
     2.5  GraphDisplayerCanvas::GraphDisplayerCanvas(MapStorage & ms, MapWin & mw, Gtk::Window * mainwin) :
     2.6    nodesmap(ms.graph), edgesmap(ms.graph), edgetextmap(ms.graph),
     2.7 -  nodetextmap(ms.graph), displayed_graph(*(root()), 0, 0),
     2.8 -  canvasentrywidget(NULL), mapstorage(ms), isbutton(0), active_item(NULL),
     2.9 -  target_item(NULL), nodemap_to_edit(""), edgemap_to_edit(""), mapwin(mw)
    2.10 +  nodetextmap(ms.graph), displayed_graph(*(root()), 0, 0), mapstorage(ms),
    2.11 +  isbutton(0), active_item(NULL), target_item(NULL), nodemap_to_edit(""),
    2.12 +  edgemap_to_edit(""), mapwin(mw)
    2.13  {
    2.14    parentwin=mainwin;
    2.15  
    2.16 @@ -14,9 +14,6 @@
    2.17    actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
    2.18    actual_tool=MOVE;
    2.19  
    2.20 -  //setting event handler for the editor widget
    2.21 -  entrywidget.signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::entryWidgetChangeHandler), false);
    2.22 -
    2.23    active_node=INVALID;
    2.24    active_edge=INVALID;
    2.25    forming_edge=INVALID;
    2.26 @@ -35,11 +32,6 @@
    2.27      delete edgesmap[e];
    2.28      delete edgetextmap[e];
    2.29    }
    2.30 -
    2.31 -  if(canvasentrywidget)
    2.32 -  {
    2.33 -    delete(canvasentrywidget);
    2.34 -  }
    2.35  }
    2.36  
    2.37  void GraphDisplayerCanvas::drawGraph()
     3.1 --- a/gui/graph_displayer_canvas.h	Tue Aug 23 16:27:59 2005 +0000
     3.2 +++ b/gui/graph_displayer_canvas.h	Fri Aug 26 07:35:23 2005 +0000
     3.3 @@ -90,9 +90,6 @@
     3.4    ///event handler for the case when node map editor tool is active
     3.5    bool nodeMapEditEventHandler(GdkEvent*);
     3.6  
     3.7 -  ///event handler for the case when the entry widget is changed
     3.8 -  bool entryWidgetChangeHandler(GdkEvent*);
     3.9 -
    3.10  public:
    3.11    ///Moves the text to new place
    3.12    void textReposition(xy<double>);
    3.13 @@ -140,12 +137,6 @@
    3.14    ///Group of graphical elements of displayed_graph
    3.15    Gnome::Canvas::Group displayed_graph;
    3.16  
    3.17 -  ///Map editor entry
    3.18 -  Gtk::Entry entrywidget;
    3.19 -
    3.20 -  ///GnomeCanvas holder for entry
    3.21 -  Gnome::Canvas::Widget * canvasentrywidget;
    3.22 -
    3.23    ///Here we store the maps that can be displayed through properties.
    3.24    MapStorage & mapstorage;
    3.25  
    3.26 @@ -175,8 +166,7 @@
    3.27    ///We need to store mapwin, to be able to ask the appropriate values for properties of new items.
    3.28    MapWin & mapwin;
    3.29  
    3.30 -  ///We need to store the parent window to be able to set the focus on a given widget
    3.31 -  ///We will use this variable to activate the set focus on entry widget in the case of editing map values.
    3.32 +  ///pointer to the parent window
    3.33    Gtk::Window * parentwin;
    3.34  
    3.35  };
     4.1 --- a/gui/map_win.cc	Tue Aug 23 16:27:59 2005 +0000
     4.2 +++ b/gui/map_win.cc	Fri Aug 26 07:35:23 2005 +0000
     4.3 @@ -81,7 +81,10 @@
     4.4  
     4.5      for(;emsi!=ms.endOfNodeMaps();emsi++)
     4.6      {
     4.7 -      listStrings.push_back(emsi->first);
     4.8 +      if ((emsi->first != "coordinates_x") && (emsi->first != "coordinates_y"))
     4.9 +      {
    4.10 +        listStrings.push_back(emsi->first);
    4.11 +      }
    4.12      }
    4.13  
    4.14      n_combo_array[i].set_popdown_strings(listStrings);
    4.15 @@ -148,7 +151,10 @@
    4.16  
    4.17      for(;emsi!=ms.endOfNodeMaps();emsi++)
    4.18      {
    4.19 -      listStrings.push_back(emsi->first);
    4.20 +      if ((emsi->first != "coordinates_x") && (emsi->first != "coordinates_y"))
    4.21 +      {
    4.22 +        listStrings.push_back(emsi->first);
    4.23 +      }
    4.24      }
    4.25  
    4.26      n_combo_array[i].set_popdown_strings(listStrings);