Uh, long comment arrives... Zoom update does not happen after editorial steps. Nodes initial color is light blue, if there is any item under them. Strange node-text relations disappeared. Initial values of new items are given now in a more common way. The wood-cutter way of handling default values of properties is now changed.
1.1 --- a/graph_displayer_canvas-edge.cc Wed Jun 29 15:41:33 2005 +0000
1.2 +++ b/graph_displayer_canvas-edge.cc Wed Jun 29 19:44:30 2005 +0000
1.3 @@ -5,11 +5,21 @@
1.4
1.5 int GraphDisplayerCanvas::changeEdgeWidth (std::string mapname, Graph::Edge edge)
1.6 {
1.7 + Graph::EdgeMap<double> * actual_map;
1.8 + if(mapname=="Default")
1.9 + {
1.10 + actual_map=new Graph::EdgeMap<double>(g,edge_property_defaults[E_WIDTH]);
1.11 + }
1.12 + else
1.13 + {
1.14 + actual_map=(mapstorage.edgemap_storage)[mapname];
1.15 + }
1.16 +
1.17 if(edge==INVALID)
1.18 {
1.19 for (EdgeIt i(g); i!=INVALID; ++i)
1.20 {
1.21 - int w=(int)(*(mapstorage.edgemap_storage)[mapname])[i];
1.22 + int w=(int)(*actual_map)[i];
1.23 if(w>=0)
1.24 {
1.25 edgesmap[i]->property_width_pixels().set_value(w);
1.26 @@ -18,7 +28,7 @@
1.27 }
1.28 else
1.29 {
1.30 - int w=(int)(*(mapstorage.edgemap_storage)[mapname])[edge];
1.31 + int w=(int)(*actual_map)[edge];
1.32 if(w>=0)
1.33 {
1.34 edgesmap[edge]->property_width_pixels().set_value(w);
1.35 @@ -33,16 +43,35 @@
1.36 //function maps the range of the maximum and
1.37 //the minimum of the nodemap to the range of
1.38 //green in RGB
1.39 + Graph::EdgeMap<double> * actual_map;
1.40 + if(mapname=="Default")
1.41 + {
1.42 + actual_map=new Graph::EdgeMap<double>(g,edge_property_defaults[E_COLOR]);
1.43 + }
1.44 + else
1.45 + {
1.46 + actual_map=(mapstorage.edgemap_storage)[mapname];
1.47 + }
1.48 +
1.49 + double max, min;
1.50 +
1.51 + if(mapname!="Default")
1.52 + {
1.53 + max=mapstorage.maxOfEdgeMap(mapname);
1.54 + min=mapstorage.minOfEdgeMap(mapname);
1.55 + }
1.56 + else
1.57 + {
1.58 + max=edge_property_defaults[E_COLOR];
1.59 + min=edge_property_defaults[E_COLOR];
1.60 + }
1.61 +
1.62 if(edge==INVALID)
1.63 {
1.64 -
1.65 for (EdgeIt i(g); i!=INVALID; ++i)
1.66 {
1.67 - double w=(*(mapstorage.edgemap_storage)[mapname])[i];
1.68 - double max=mapstorage.maxOfEdgeMap(mapname);
1.69 - double min=mapstorage.minOfEdgeMap(mapname);
1.70 -
1.71 - //std::cout<<w<<" "<<max<<" "<<min<<" "<<100*(w-min)/(max-min)<<std::endl;
1.72 + double w=(*actual_map)[i];
1.73 +
1.74 Gdk::Color color;
1.75 if(max!=min)
1.76 {
1.77 @@ -52,18 +81,15 @@
1.78 {
1.79 color.set_rgb_p (0, 100, 0);
1.80 }
1.81 -
1.82 edgesmap[i]->property_fill_color_gdk().set_value(color);
1.83 }
1.84 }
1.85 else
1.86 {
1.87 - double w=(*(mapstorage.edgemap_storage)[mapname])[edge];
1.88 - double max=mapstorage.maxOfEdgeMap(mapname);
1.89 - double min=mapstorage.minOfEdgeMap(mapname);
1.90 -
1.91 - //std::cout<<w<<" "<<max<<" "<<min<<" "<<100*(w-min)/(max-min)<<std::endl;
1.92 Gdk::Color color;
1.93 +
1.94 + double w=(*actual_map)[edge];
1.95 +
1.96 if(max!=min)
1.97 {
1.98 color.set_rgb_p (0, 100*(w-min)/(max-min), 0);
1.99 @@ -85,13 +111,12 @@
1.100 //EXCEPT when the name of the map is Text, because
1.101 //in that case empty string will be written, because
1.102 //that is the deleter map
1.103 - //\todo isn't it a bit woodcutter?
1.104
1.105 if(edge==INVALID)
1.106 {
1.107 for (EdgeIt i(g); i!=INVALID; ++i)
1.108 {
1.109 - if(mapname!=edge_property_strings[E_TEXT])
1.110 + if(mapname!="Default")
1.111 {
1.112 double number=(*(mapstorage.edgemap_storage)[mapname])[i];
1.113 int length=1;
1.114 @@ -128,7 +153,7 @@
1.115 }
1.116 else
1.117 {
1.118 - if(mapname!=edge_property_strings[E_TEXT])
1.119 + if(mapname!="Default")
1.120 {
1.121 double number=(*(mapstorage.edgemap_storage)[mapname])[edge];
1.122 int length=1;
2.1 --- a/graph_displayer_canvas-event.cc Wed Jun 29 15:41:33 2005 +0000
2.2 +++ b/graph_displayer_canvas-event.cc Wed Jun 29 19:44:30 2005 +0000
2.3 @@ -28,20 +28,19 @@
2.4 switch(newtool)
2.5 {
2.6 case MOVE:
2.7 - actual_handler=displayed_graph.signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
2.8 + actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
2.9 break;
2.10
2.11 - //it has to assigned to canvas, because all the canvas has to be monitored, not only the elements of the already drawn group
2.12 case CREATE_NODE:
2.13 actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createNodeEventHandler), false);
2.14 break;
2.15
2.16 case CREATE_EDGE:
2.17 - actual_handler=displayed_graph.signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createEdgeEventHandler), false);
2.18 + actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createEdgeEventHandler), false);
2.19 break;
2.20
2.21 case ERASER:
2.22 - actual_handler=displayed_graph.signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::eraserEventHandler), false);
2.23 + actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::eraserEventHandler), false);
2.24 break;
2.25
2.26 default:
2.27 @@ -60,9 +59,9 @@
2.28 {
2.29 case GDK_BUTTON_PRESS:
2.30 //we mark the location of the event to be able to calculate parameters of dragging
2.31 - clicked_x=e->button.x;
2.32 - clicked_y=e->button.y;
2.33 - active_item=(get_item_at(e->button.x, e->button.y));
2.34 + window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
2.35 +
2.36 + active_item=(get_item_at(clicked_x, clicked_y));
2.37 active_node=INVALID;
2.38 for (NodeIt i(g); i!=INVALID; ++i)
2.39 {
2.40 @@ -85,7 +84,6 @@
2.41 isbutton=0;
2.42 active_item=NULL;
2.43 active_node=INVALID;
2.44 - updateScrollRegion();
2.45 break;
2.46 case GDK_MOTION_NOTIFY:
2.47 //we only have to do sg. if the mouse button is pressed AND the click was on a node that was found in the set of nodes
2.48 @@ -96,15 +94,19 @@
2.49 //new coordinate therefore the new movement
2.50 //has to be calculated from here
2.51
2.52 - double dx=e->motion.x-clicked_x;
2.53 - double dy=e->motion.y-clicked_y;
2.54 + double new_x, new_y;
2.55 +
2.56 + window_to_world (e->motion.x, e->motion.y, new_x, new_y);
2.57 +
2.58 + double dx=new_x-clicked_x;
2.59 + double dy=new_y-clicked_y;
2.60
2.61 //repositioning node and its text
2.62 active_item->move(dx, dy);
2.63 nodetextmap[active_node]->move(dx, dy);
2.64
2.65 - clicked_x=e->motion.x;
2.66 - clicked_y=e->motion.y;
2.67 + clicked_x=new_x;
2.68 + clicked_y=new_y;
2.69
2.70 //all the edges connected to the moved point has to be redrawn
2.71 EdgeIt ei;
2.72 @@ -168,7 +170,7 @@
2.73 default: break;
2.74 }
2.75
2.76 - return true;
2.77 + return false;
2.78 }
2.79
2.80 bool GraphDisplayerCanvas::createNodeEventHandler(GdkEvent* e)
2.81 @@ -177,16 +179,21 @@
2.82 {
2.83
2.84 //draw the new node in red at the clicked place
2.85 + case GDK_2BUTTON_PRESS:
2.86 + std::cout << "double click" << std::endl;
2.87 + break;
2.88 case GDK_BUTTON_PRESS:
2.89 isbutton=1;
2.90
2.91 active_node=NodeIt(g,g.addNode());
2.92
2.93 //initiating values corresponding to new node in maps
2.94 -
2.95
2.96 window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
2.97
2.98 + target_item=NULL;
2.99 + target_item=get_item_at(clicked_x, clicked_y);
2.100 +
2.101 nodesmap[active_node]=new Gnome::Canvas::Ellipse(displayed_graph, clicked_x-20, clicked_y-20, clicked_x+20, clicked_y+20);
2.102 active_item=(Gnome::Canvas::Item *)(nodesmap[active_node]);
2.103 *(nodesmap[active_node]) << Gnome::Canvas::Properties::fill_color("red");
2.104 @@ -205,9 +212,8 @@
2.105 {
2.106 double world_motion_x, world_motion_y;
2.107 GdkEvent * generated=new GdkEvent();
2.108 - window_to_world (e->motion.x, e->motion.y, world_motion_x, world_motion_y);
2.109 - generated->motion.x=world_motion_x;
2.110 - generated->motion.y=world_motion_y;
2.111 + generated->motion.x=e->motion.x;
2.112 + generated->motion.y=e->motion.y;
2.113 generated->type=GDK_MOTION_NOTIFY;
2.114 moveEventHandler(generated);
2.115 break;
2.116 @@ -216,10 +222,19 @@
2.117 //finalize the new node
2.118 case GDK_BUTTON_RELEASE:
2.119 isbutton=0;
2.120 - *active_item << Gnome::Canvas::Properties::fill_color("blue");
2.121 + if(!target_item)
2.122 + {
2.123 + //Its appropriate color is given by update.
2.124 + //*active_item << Gnome::Canvas::Properties::fill_color("blue");
2.125 + }
2.126 + else
2.127 + {
2.128 + //In this case the given color has to be overwritten, because the noe covers an other item.
2.129 + *active_item << Gnome::Canvas::Properties::fill_color("lightblue");
2.130 + }
2.131 + target_item=NULL;
2.132 active_item=NULL;
2.133 active_node=INVALID;
2.134 - updateScrollRegion();
2.135 break;
2.136 default:
2.137 break;
2.138 @@ -239,9 +254,10 @@
2.139 if(active_node==INVALID)
2.140 {
2.141 //we mark the location of the event to be able to calculate parameters of dragging
2.142 - clicked_x=e->button.x;
2.143 - clicked_y=e->button.y;
2.144 - active_item=(get_item_at(e->button.x, e->button.y));
2.145 +
2.146 + window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
2.147 +
2.148 + active_item=(get_item_at(clicked_x, clicked_y));
2.149 active_node=INVALID;
2.150 for (NodeIt i(g); i!=INVALID; ++i)
2.151 {
2.152 @@ -269,7 +285,8 @@
2.153 //node
2.154 else
2.155 {
2.156 - target_item=(get_item_at(e->button.x, e->button.y));
2.157 + window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
2.158 + target_item=(get_item_at(clicked_x, clicked_y));
2.159 Graph::NodeIt target_node=INVALID;
2.160 for (NodeIt i(g); i!=INVALID; ++i)
2.161 {
2.162 @@ -366,7 +383,8 @@
2.163 switch(e->type)
2.164 {
2.165 case GDK_BUTTON_PRESS:
2.166 - active_item=(get_item_at(e->button.x, e->button.y));
2.167 + window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
2.168 + active_item=(get_item_at(clicked_x, clicked_y));
2.169 active_node=INVALID;
2.170 active_edge=INVALID;
2.171 for (NodeIt i(g); i!=INVALID; ++i)
2.172 @@ -386,56 +404,61 @@
2.173 }
2.174 }
2.175 }
2.176 - *active_item << Gnome::Canvas::Properties::fill_color("red");
2.177 + if(active_item)
2.178 + {
2.179 + *active_item << Gnome::Canvas::Properties::fill_color("red");
2.180 + }
2.181 break;
2.182
2.183 case GDK_BUTTON_RELEASE:
2.184 - if(active_item==(get_item_at(e->button.x, e->button.y)))
2.185 + window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
2.186 + if(active_item)
2.187 {
2.188 - if(active_node!=INVALID)
2.189 + if( active_item == ( get_item_at (clicked_x, clicked_y) ) )
2.190 {
2.191 + if(active_node!=INVALID)
2.192 + {
2.193
2.194 - //collecting edges to delete
2.195 - EdgeIt e;
2.196 - std::set<Graph::Edge> edges_to_delete;
2.197 + //collecting edges to delete
2.198 + EdgeIt e;
2.199 + std::set<Graph::Edge> edges_to_delete;
2.200
2.201 - g.firstOut(e,active_node);
2.202 - for(;e!=INVALID;g.nextOut(e))
2.203 + g.firstOut(e,active_node);
2.204 + for(;e!=INVALID;g.nextOut(e))
2.205 + {
2.206 + edges_to_delete.insert(e);
2.207 + }
2.208 +
2.209 + g.firstIn(e,active_node);
2.210 + for(;e!=INVALID;g.nextIn(e))
2.211 + {
2.212 + edges_to_delete.insert(e);
2.213 + }
2.214 +
2.215 + //deleting collected edges
2.216 + for(std::set<Graph::Edge>::iterator edge_set_it=edges_to_delete.begin();edge_set_it!=edges_to_delete.end();edge_set_it++)
2.217 + {
2.218 + deleteItem(*edge_set_it);
2.219 + }
2.220 + deleteItem(active_node);
2.221 + }
2.222 + //a simple edge was chosen
2.223 + else
2.224 {
2.225 - edges_to_delete.insert(e);
2.226 + deleteItem(active_edge);
2.227 }
2.228 -
2.229 - g.firstIn(e,active_node);
2.230 - for(;e!=INVALID;g.nextIn(e))
2.231 - {
2.232 - edges_to_delete.insert(e);
2.233 - }
2.234 -
2.235 - //deleting collected edges
2.236 - for(std::set<Graph::Edge>::iterator edge_set_it=edges_to_delete.begin();edge_set_it!=edges_to_delete.end();edge_set_it++)
2.237 - {
2.238 - deleteItem(*edge_set_it);
2.239 - }
2.240 - deleteItem(active_node);
2.241 }
2.242 - //a simple edge was chosen
2.243 + //pointer was moved, deletion is cancelled
2.244 else
2.245 {
2.246 - deleteItem(active_edge);
2.247 - }
2.248 -
2.249 -
2.250 - }
2.251 - //pointer was moved, deletion is cancelled
2.252 - else
2.253 - {
2.254 - if(active_node!=INVALID)
2.255 - {
2.256 - *active_item << Gnome::Canvas::Properties::fill_color("blue");
2.257 - }
2.258 - else
2.259 - {
2.260 - *active_item << Gnome::Canvas::Properties::fill_color("green");
2.261 + if(active_node!=INVALID)
2.262 + {
2.263 + *active_item << Gnome::Canvas::Properties::fill_color("blue");
2.264 + }
2.265 + else
2.266 + {
2.267 + *active_item << Gnome::Canvas::Properties::fill_color("green");
2.268 + }
2.269 }
2.270 }
2.271 //reseting datas
2.272 @@ -450,7 +473,7 @@
2.273 default:
2.274 break;
2.275 }
2.276 - return true;
2.277 + return false;
2.278 }
2.279
2.280 void GraphDisplayerCanvas::deleteItem(NodeIt node_to_delete)
3.1 --- a/graph_displayer_canvas-node.cc Wed Jun 29 15:41:33 2005 +0000
3.2 +++ b/graph_displayer_canvas-node.cc Wed Jun 29 19:44:30 2005 +0000
3.3 @@ -5,15 +5,28 @@
3.4
3.5 int GraphDisplayerCanvas::changeNodeRadius (std::string mapname, Graph::Node node)
3.6 {
3.7 + Graph::NodeMap<double> * actual_map;
3.8 + if(mapname=="Default")
3.9 + {
3.10 + actual_map=new Graph::NodeMap<double>(g,node_property_defaults[N_RADIUS]);
3.11 + }
3.12 + else
3.13 + {
3.14 + actual_map=(mapstorage.nodemap_storage)[mapname];
3.15 + }
3.16 +
3.17 if(node==INVALID)
3.18 {
3.19 for (NodeIt i(g); i!=INVALID; ++i)
3.20 {
3.21 - int w=(int)(*(mapstorage.nodemap_storage)[mapname])[i];
3.22 + int w=(int)(*actual_map)[i];
3.23 if(w>=0)
3.24 {
3.25 double x1, y1, x2, y2;
3.26 - nodesmap[i]->get_bounds(x1, y1, x2, y2);
3.27 + x1=nodesmap[i]->property_x1().get_value();
3.28 + x2=nodesmap[i]->property_x2().get_value();
3.29 + y1=nodesmap[i]->property_y1().get_value();
3.30 + y2=nodesmap[i]->property_y2().get_value();
3.31 nodesmap[i]->property_x1().set_value((x1+x2)/2-w);
3.32 nodesmap[i]->property_x2().set_value((x1+x2)/2+w);
3.33 nodesmap[i]->property_y1().set_value((y1+y2)/2-w);
3.34 @@ -23,11 +36,16 @@
3.35 }
3.36 else
3.37 {
3.38 - int w=(int)(*(mapstorage.nodemap_storage)[mapname])[node];
3.39 + //I think only new nodes use this case
3.40 +// int w=(int)(*actual_map)[node];
3.41 + int w=(int)(node_property_defaults[N_RADIUS]);
3.42 if(w>=0)
3.43 {
3.44 double x1, y1, x2, y2;
3.45 - nodesmap[node]->get_bounds(x1, y1, x2, y2);
3.46 + x1=nodesmap[node]->property_x1().get_value();
3.47 + x2=nodesmap[node]->property_x2().get_value();
3.48 + y1=nodesmap[node]->property_y1().get_value();
3.49 + y2=nodesmap[node]->property_y2().get_value();
3.50 nodesmap[node]->property_x1().set_value((x1+x2)/2-w);
3.51 nodesmap[node]->property_x2().set_value((x1+x2)/2+w);
3.52 nodesmap[node]->property_y1().set_value((y1+y2)/2-w);
3.53 @@ -44,17 +62,39 @@
3.54 //the minimum of the nodemap to the range of
3.55 //green in RGB
3.56
3.57 + Graph::NodeMap<double> * actual_map;
3.58 + if(mapname=="Default")
3.59 + {
3.60 + actual_map=new Graph::NodeMap<double>(g,node_property_defaults[N_COLOR]);
3.61 + }
3.62 + else
3.63 + {
3.64 + actual_map=(mapstorage.nodemap_storage)[mapname];
3.65 + }
3.66 +
3.67 + double max, min;
3.68 +
3.69 + if(mapname!="Default")
3.70 + {
3.71 + max=mapstorage.maxOfNodeMap(mapname);
3.72 + min=mapstorage.minOfNodeMap(mapname);
3.73 + }
3.74 + else
3.75 + {
3.76 + max=node_property_defaults[N_COLOR];
3.77 + min=node_property_defaults[N_COLOR];
3.78 + }
3.79 +
3.80 +
3.81 if(node==INVALID)
3.82 {
3.83
3.84 for (NodeIt i(g); i!=INVALID; ++i)
3.85 {
3.86 - double w=(*(mapstorage.nodemap_storage)[mapname])[i];
3.87 - double max=mapstorage.maxOfNodeMap(mapname);
3.88 - double min=mapstorage.minOfNodeMap(mapname);
3.89 -
3.90 - //std::cout<<w<<" "<<max<<" "<<min<<" "<<100*(w-min)/(max-min)<<std::endl;
3.91 Gdk::Color color;
3.92 +
3.93 + double w=(*actual_map)[i];
3.94 +
3.95 if(max!=min)
3.96 {
3.97 color.set_rgb_p (0, 0, 100*(w-min)/(max-min));
3.98 @@ -69,12 +109,10 @@
3.99 }
3.100 else
3.101 {
3.102 - double w=(*(mapstorage.nodemap_storage)[mapname])[node];
3.103 - double max=mapstorage.maxOfNodeMap(mapname);
3.104 - double min=mapstorage.minOfNodeMap(mapname);
3.105 -
3.106 - //std::cout<<w<<" "<<max<<" "<<min<<" "<<100*(w-min)/(max-min)<<std::endl;
3.107 Gdk::Color color;
3.108 +
3.109 + double w=(*actual_map)[node];
3.110 +
3.111 if(max!=min)
3.112 {
3.113 color.set_rgb_p (0, 0, 100*(w-min)/(max-min));
3.114 @@ -96,15 +134,24 @@
3.115 //EXCEPT when the name of the map is Text, because
3.116 //in that case empty string will be written, because
3.117 //that is the deleter map
3.118 - //\todo isn't it a bit woodcutter?
3.119 +
3.120 + Graph::NodeMap<double> * actual_map;
3.121 + if(mapname=="Default")
3.122 + {
3.123 + actual_map=new Graph::NodeMap<double>(g,node_property_defaults[N_COLOR]);
3.124 + }
3.125 + else
3.126 + {
3.127 + actual_map=(mapstorage.nodemap_storage)[mapname];
3.128 + }
3.129
3.130 if(node==INVALID)
3.131 {
3.132 for (NodeIt i(g); i!=INVALID; ++i)
3.133 {
3.134 - if(mapname!=node_property_strings[N_TEXT])
3.135 + if(mapname!="Default")
3.136 {
3.137 - double number=(*(mapstorage.nodemap_storage)[mapname])[i];
3.138 + double number=(*actual_map)[i];
3.139 int length=1;
3.140 //if number is smaller than one, length would be negative, or invalid
3.141 if(number>=1)
3.142 @@ -138,9 +185,9 @@
3.143 }
3.144 else
3.145 {
3.146 - if(mapname!=node_property_strings[N_TEXT])
3.147 + if(mapname!="Default")
3.148 {
3.149 - double number=(*(mapstorage.nodemap_storage)[mapname])[node];
3.150 + double number=(*actual_map)[node];
3.151 int length=1;
3.152 //if number is smaller than one, length would be negative, or invalid
3.153 if(number>=1)
4.1 --- a/graph_displayer_canvas.cc Wed Jun 29 15:41:33 2005 +0000
4.2 +++ b/graph_displayer_canvas.cc Wed Jun 29 19:44:30 2005 +0000
4.3 @@ -5,7 +5,7 @@
4.4 GraphDisplayerCanvas::GraphDisplayerCanvas(Graph & gr, CoordinatesMap & cm, MapStorage & ms, MapWin * mw):g(gr),nodesmap(g),edgesmap(g),edgetextmap(g),nodetextmap(g),displayed_graph(*(root()), 0, 0),mapstorage(ms),isbutton(0),active_item(NULL),target_item(NULL),mapwin(mw)
4.5 {
4.6
4.7 - actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::createNodeEventHandler), false);
4.8 + actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
4.9 actual_tool=CREATE_NODE;
4.10
4.11 active_node=INVALID;
5.1 --- a/map_win.cc Wed Jun 29 15:41:33 2005 +0000
5.2 +++ b/map_win.cc Wed Jun 29 19:44:30 2005 +0000
5.3 @@ -23,45 +23,15 @@
5.4
5.5 for(int i=0;i<EDGE_PROPERTY_NUM;i++)
5.6 {
5.7 -
5.8 - std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
5.9 - std::set<int> props;
5.10 -
5.11 - int actprop;
5.12 -
5.13 - //here we find out, which map is the default in MapStorage for this property, which are not
5.14 - for(int j=0;j<ms.numOfEdgeMaps();j++)
5.15 - {
5.16 - //this is the default value for this property
5.17 - if(emsi->second==&(ms.default_edgemaps[i]))
5.18 - {
5.19 - actprop=j;
5.20 - }
5.21 - //these are the maps NOT to show for this property
5.22 - for(int k=0;k<EDGE_PROPERTY_NUM;k++)
5.23 - {
5.24 - if(emsi->second==&(ms.default_edgemaps[k]))
5.25 - {
5.26 - props.insert(j);
5.27 - }
5.28 - }
5.29 - emsi++;
5.30 - }
5.31 -
5.32 //filling in combo box with choices
5.33 std::list<Glib::ustring> listStrings;
5.34
5.35 listStrings.push_back("Default");
5.36
5.37 - emsi=ms.beginOfEdgeMaps();
5.38 -
5.39 - for(int j=0;j<ms.numOfEdgeMaps();j++)
5.40 + std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
5.41 + for(;emsi!=ms.endOfEdgeMaps();emsi++)
5.42 {
5.43 - if( ( props.find(j) )==( props.end() ) )
5.44 - {
5.45 listStrings.push_back(emsi->first);
5.46 - }
5.47 - emsi++;
5.48 }
5.49
5.50 e_combo_array[i].set_popdown_strings(listStrings);
5.51 @@ -102,45 +72,16 @@
5.52
5.53 for(int i=0;i<NODE_PROPERTY_NUM;i++)
5.54 {
5.55 -
5.56 - std::map< std::string,Graph::NodeMap<double> * >::iterator emsi=ms.beginOfNodeMaps();
5.57 - std::set<int> props;
5.58 -
5.59 - int actprop;
5.60 -
5.61 - //here we find out, which map is the default in MapStorage for this property, which are not
5.62 - for(int j=0;j<ms.numOfNodeMaps();j++)
5.63 - {
5.64 - //these are the maps NOT to show for this property
5.65 - if(emsi->second==&(ms.default_nodemaps[i]))
5.66 - {
5.67 - actprop=j;
5.68 - }
5.69 - //this is the other maps to show for this property
5.70 - for(int k=0;k<NODE_PROPERTY_NUM;k++)
5.71 - {
5.72 - if(emsi->second==&(ms.default_nodemaps[k]))
5.73 - {
5.74 - props.insert(j);
5.75 - }
5.76 - }
5.77 - emsi++;
5.78 - }
5.79 -
5.80 //filling in combo box with choices
5.81 std::list<Glib::ustring> listStrings;
5.82
5.83 listStrings.push_back("Default");
5.84
5.85 - emsi=ms.beginOfNodeMaps();
5.86 + std::map< std::string,Graph::NodeMap<double> * >::iterator emsi=ms.beginOfNodeMaps();
5.87
5.88 - for(int j=0;j<ms.numOfNodeMaps();j++)
5.89 + for(;emsi!=ms.endOfNodeMaps();emsi++)
5.90 {
5.91 - if( ( props.find(j) )==( props.end() ) )
5.92 - {
5.93 - listStrings.push_back(emsi->first);
5.94 - }
5.95 - emsi++;
5.96 + listStrings.push_back(emsi->first);
5.97 }
5.98
5.99 n_combo_array[i].set_popdown_strings(listStrings);
5.100 @@ -188,12 +129,7 @@
5.101 Glib::ustring mapname = entry->get_text();
5.102 if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
5.103 {
5.104 - if(mapname=="Default")
5.105 - {
5.106 - mapname=edge_property_strings[prop];
5.107 - }
5.108 -
5.109 - if( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() )
5.110 + if( ( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() ) || (mapname=="Default") )
5.111 {
5.112 switch(prop)
5.113 {
5.114 @@ -224,12 +160,7 @@
5.115 Glib::ustring mapname = entry->get_text();
5.116 if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
5.117 {
5.118 - if(mapname=="Default")
5.119 - {
5.120 - mapname=node_property_strings[prop];
5.121 - }
5.122 -
5.123 - if( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() )
5.124 + if( ( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() ) || (mapname=="Default") )
5.125 {
5.126 switch(prop)
5.127 {
5.128 @@ -261,18 +192,12 @@
5.129 Glib::ustring mapname = entry->get_text();
5.130 if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
5.131 {
5.132 - if(mapname=="Default")
5.133 - {
5.134 - mapname=node_property_strings[i];
5.135 - }
5.136 -
5.137 - if( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() )
5.138 + if( ( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() ) || (mapname=="Default") )
5.139 {
5.140 switch(i)
5.141 {
5.142 case N_RADIUS:
5.143 - //gdc.changeNodeRadius(mapname, node);
5.144 - std::cout << "If default map-value problem is solved, uncomment line in MapWin::node_update!" << std::endl;
5.145 + gdc.changeNodeRadius(mapname, node);
5.146 break;
5.147 case N_COLOR:
5.148 gdc.changeNodeColor(mapname, node);
5.149 @@ -301,18 +226,13 @@
5.150 Glib::ustring mapname = entry->get_text();
5.151 if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
5.152 {
5.153 - if(mapname=="Default")
5.154 - {
5.155 - mapname=edge_property_strings[i];
5.156 - }
5.157
5.158 - if( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() )
5.159 + if( ( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() ) || (mapname=="Default") )
5.160 {
5.161 switch(i)
5.162 {
5.163 case E_WIDTH:
5.164 - //gdc.changeEdgeWidth(mapname, edge);
5.165 - std::cout << "If default map-value problem is solved, uncomment line in MapWin::edge_update!" << std::endl;
5.166 + gdc.changeEdgeWidth(mapname, edge);
5.167 break;
5.168 case E_COLOR:
5.169 gdc.changeEdgeColor(mapname, edge);
6.1 --- a/mapstorage.cc Wed Jun 29 15:41:33 2005 +0000
6.2 +++ b/mapstorage.cc Wed Jun 29 19:44:30 2005 +0000
6.3 @@ -2,36 +2,6 @@
6.4
6.5 MapStorage::MapStorage(Graph & graph):g(graph)
6.6 {
6.7 - for(int i=0;i<EDGE_PROPERTY_NUM;i++)
6.8 - {
6.9 - Graph::EdgeMap<double> emd(g,edge_property_defaults[i]);
6.10 - default_edgemaps.push_back(emd);
6.11 - }
6.12 -
6.13 - for(int i=0;i<NODE_PROPERTY_NUM;i++)
6.14 - {
6.15 - Graph::NodeMap<double> nmd(g,node_property_defaults[i]);
6.16 - default_nodemaps.push_back(nmd);
6.17 - }
6.18 -
6.19 - for(int i=0;i<EDGE_PROPERTY_NUM;i++)
6.20 - {
6.21 - for (EdgeIt j(g); j!=INVALID; ++j)
6.22 - {
6.23 - (default_edgemaps[i])[j]=edge_property_defaults[i];
6.24 - }
6.25 - addEdgeMap(edge_property_strings[i],&(default_edgemaps[i]));
6.26 - }
6.27 -
6.28 - for(int i=0;i<NODE_PROPERTY_NUM;i++)
6.29 - {
6.30 - for (NodeIt j(g); j!=INVALID; ++j)
6.31 - {
6.32 - (default_nodemaps[i])[j]=node_property_defaults[i];
6.33 - }
6.34 - addNodeMap(node_property_strings[i],&(default_nodemaps[i]));
6.35 - }
6.36 -
6.37 };
6.38
6.39 int MapStorage::addNodeMap(const std::string & name, Graph::NodeMap<double> *nodemap)
6.40 @@ -102,19 +72,9 @@
6.41
6.42 void MapStorage::initMapsForEdge(Graph::Edge e)
6.43 {
6.44 - e=e;
6.45 -// beragad, aztan csovez
6.46 -// std::map< std::string,Graph::EdgeMap<double> * >::iterator ems_it;
6.47 -// for(ems_it=edgemap_storage.begin();ems_it!=edgemap_storage.end();ems_it++)
6.48 -// {
6.49 -// std::cout << "szevasz\n";
6.50 -// (*((*ems_it).second))[e]=0;
6.51 -// }
6.52 -// std::cout << std::endl;
6.53 -
6.54 -// g_closure_invoke...
6.55 -// for(int i=0;i<EDGE_PROPERTY_NUM;i++)
6.56 -// {
6.57 -// (default_edgemaps[i])[e]=property_defaults[i];
6.58 -// }
6.59 + std::map< std::string,Graph::EdgeMap<double> * >::iterator ems_it;
6.60 + for(ems_it=edgemap_storage.begin();ems_it!=edgemap_storage.end();ems_it++)
6.61 + {
6.62 + (*((*ems_it).second))[e]=5;
6.63 + }
6.64 }
7.1 --- a/mapstorage.h Wed Jun 29 15:41:33 2005 +0000
7.2 +++ b/mapstorage.h Wed Jun 29 19:44:30 2005 +0000
7.3 @@ -81,6 +81,12 @@
7.4 ///To be able to iterate through each maps this function returns an iterator pointing to the first edgemap in the storage.
7.5 std::map< std::string,Graph::EdgeMap<double> * >::iterator beginOfEdgeMaps(){return edgemap_storage.begin();};
7.6
7.7 + ///To be able to iterate through each maps this function returns an iterator pointing to the last nodemap in the storage.
7.8 + std::map< std::string,Graph::NodeMap<double> * >::iterator endOfNodeMaps(){return nodemap_storage.end();};
7.9 +
7.10 + ///To be able to iterate through each maps this function returns an iterator pointing to the last edgemap in the storage.
7.11 + std::map< std::string,Graph::EdgeMap<double> * >::iterator endOfEdgeMaps(){return edgemap_storage.end();};
7.12 +
7.13 ///This function sets a default base value for the newly created node
7.14 void initMapsForNode(NodeIt);
7.15