COIN-OR::LEMON - Graph Library

Ignore:
Timestamp:
07/29/05 14:01:37 (19 years ago)
Author:
Akos Ladanyi
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2111
Message:

added support for saving files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gui/graph_displayer_canvas-event.cc

    r1599 r1606  
    1 #include <graph_displayer_canvas.h>
    2 #include <broken_edge.h>
     1#include "graph_displayer_canvas.h"
     2#include "broken_edge.h"
    33#include <math.h>
    44
     
    100100      active_item=(get_item_at(clicked_x, clicked_y));
    101101      active_node=INVALID;
    102       for (NodeIt i(g); i!=INVALID; ++i)
     102      for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
    103103        {
    104104          if(nodesmap[i]==active_item)
     
    126126      if(active_node!=INVALID)
    127127      {
     128        mapstorage.modified = true;
     129        mapstorage.coords.set(active_node, xy<double>(clicked_x, clicked_y));
    128130        //new coordinates will be the old values,
    129131        //because the item will be moved to the
     
    148150        EdgeIt ei;
    149151
    150         g.firstOut(ei,active_node);
    151 
    152         for(;ei!=INVALID;g.nextOut(ei))
     152        mapstorage.graph.firstOut(ei,active_node);
     153
     154        for(;ei!=INVALID;mapstorage.graph.nextOut(ei))
    153155        {
    154156            Gnome::Canvas::Points coos;
    155157            double x1, x2, y1, y2;
    156158
    157             nodesmap[g.source(ei)]->get_bounds(x1, y1, x2, y2);
     159            nodesmap[mapstorage.graph.source(ei)]->get_bounds(x1, y1, x2, y2);
    158160            coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2));
    159161
    160             nodesmap[g.target(ei)]->get_bounds(x1, y1, x2, y2);
     162            nodesmap[mapstorage.graph.target(ei)]->get_bounds(x1, y1, x2, y2);
    161163            coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2));
    162164
     
    177179        }
    178180
    179         g.firstIn(ei,active_node);
    180         for(;ei!=INVALID;g.nextIn(ei))
     181        mapstorage.graph.firstIn(ei,active_node);
     182        for(;ei!=INVALID;mapstorage.graph.nextIn(ei))
    181183        {
    182184            Gnome::Canvas::Points coos;
    183185            double x1, x2, y1, y2;
    184186
    185             nodesmap[g.source(ei)]->get_bounds(x1, y1, x2, y2);
     187            nodesmap[mapstorage.graph.source(ei)]->get_bounds(x1, y1, x2, y2);
    186188            coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2));
    187189
    188             nodesmap[g.target(ei)]->get_bounds(x1, y1, x2, y2);
     190            nodesmap[mapstorage.graph.target(ei)]->get_bounds(x1, y1, x2, y2);
    189191            coos.push_back(Gnome::Art::Point((x1+x2)/2,(y1+y2)/2));
    190192
     
    220222      break;
    221223    case GDK_BUTTON_PRESS:
     224      mapstorage.modified = true;
     225
    222226      isbutton=1;
    223227
    224       active_node=NodeIt(g,g.addNode());
     228      active_node=NodeIt(mapstorage.graph,mapstorage.graph.addNode());
    225229
    226230      //initiating values corresponding to new node in maps
     
    228232      window_to_world (e->button.x, e->button.y, clicked_x, clicked_y);
    229233
    230       nodesmap[active_node]=new Gnome::Canvas::Ellipse(displayed_graph, clicked_x-20, clicked_y-20, clicked_x+20, clicked_y+20);
     234      mapstorage.coords.set(active_node, xy<double>(clicked_x, clicked_y));
     235      (*mapstorage.nodemap_storage["id"])[active_node] =
     236        mapstorage.graph.id(active_node);
     237
     238      nodesmap[active_node]=new Gnome::Canvas::Ellipse(displayed_graph,
     239        clicked_x-20, clicked_y-20, clicked_x+20, clicked_y+20);
    231240      active_item=(Gnome::Canvas::Item *)(nodesmap[active_node]);
    232241      *(nodesmap[active_node]) << Gnome::Canvas::Properties::fill_color("red");
     
    234243      (nodesmap[active_node])->show();
    235244
    236       nodetextmap[active_node]=new Gnome::Canvas::Text(displayed_graph, clicked_x+node_property_defaults[N_RADIUS]+5, clicked_y+node_property_defaults[N_RADIUS]+5, "");
     245      nodetextmap[active_node]=new Gnome::Canvas::Text(displayed_graph,
     246        clicked_x+node_property_defaults[N_RADIUS]+5,
     247        clicked_y+node_property_defaults[N_RADIUS]+5, "");
    237248      nodetextmap[active_node]->property_fill_color().set_value("darkblue");
    238249
    239       mapwin->updateNode(active_node);
     250      mapwin.updateNode(active_node);
    240251
    241252      break;
     
    301312              active_item=(get_item_at(clicked_x, clicked_y));
    302313              active_node=INVALID;
    303               for (NodeIt i(g); i!=INVALID; ++i)
     314              for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
    304315                {
    305316                  if(nodesmap[i]==active_item)
     
    330341              target_item=(get_item_at(clicked_x, clicked_y));
    331342              Graph::NodeIt target_node=INVALID;
    332               for (NodeIt i(g); i!=INVALID; ++i)
     343              for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
    333344                {
    334345                  if(nodesmap[i]==target_item)
     
    342353                  if(target_node!=active_node)         
    343354                    {
     355          mapstorage.modified = true;
     356
    344357                      *(nodesmap[target_node]) << Gnome::Canvas::Properties::fill_color("red");
    345358
    346359                      //creating new edge
    347                       active_edge=EdgeIt(g,g.addEdge(active_node, target_node));
     360                      active_edge=EdgeIt(mapstorage.graph,mapstorage.graph.addEdge(active_node, target_node));
    348361
    349362                      //initiating values corresponding to new edge in maps
    350363                      mapstorage.initMapsForEdge(active_edge);
     364                      (*mapstorage.edgemap_storage["id"])[active_edge] = mapstorage.graph.id(active_edge);
    351365         
    352366                      //calculating coordinates of new edge
     
    377391
    378392                      //updating its properties
    379                       mapwin->updateEdge(active_edge);
     393                      mapwin.updateEdge(active_edge);
    380394                    }
    381395                  else
     
    430444      active_node=INVALID;
    431445      active_edge=INVALID;
    432 
    433446      //was it a node?
    434       for (NodeIt i(g); i!=INVALID; ++i)
     447      for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
    435448        {
    436449          if(nodesmap[i]==active_item)
     
    442455      if(active_node==INVALID)
    443456        {
    444           for (EdgeIt i(g); i!=INVALID; ++i)
     457          for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i)
    445458            {
    446459              if(edgesmap[i]==active_item)
     
    468481              if(active_node!=INVALID)
    469482                {
     483                  mapstorage.modified = true;
    470484
    471485                  //collecting edges to delete
     
    473487                  std::set<Graph::Edge> edges_to_delete;
    474488
    475                   g.firstOut(e,active_node);
    476                   for(;e!=INVALID;g.nextOut(e))
     489                  mapstorage.graph.firstOut(e,active_node);
     490                  for(;e!=INVALID;mapstorage.graph.nextOut(e))
    477491                    {
    478492                      edges_to_delete.insert(e);
    479493                    }
    480494
    481                   g.firstIn(e,active_node);
    482                   for(;e!=INVALID;g.nextIn(e))
     495                  mapstorage.graph.firstIn(e,active_node);
     496                  for(;e!=INVALID;mapstorage.graph.nextIn(e))
    483497                    {
    484498                      edges_to_delete.insert(e);
     
    546560            //find the activated item between texts
    547561            active_item=(get_item_at(e->button.x, e->button.y));
    548             for (EdgeIt i(g); i!=INVALID; ++i)
     562            for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i)
    549563              {
    550564                if(edgetextmap[i]==active_item)
     
    560574                active_item=(get_item_at(clicked_x, clicked_y));
    561575
    562                 for (EdgeIt i(g); i!=INVALID; ++i)
     576                for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i)
    563577                  {
    564578                    //at the same time only one can be active
     
    664678            //find the activated item between texts
    665679            active_item=(get_item_at(e->button.x, e->button.y));
    666             for (NodeIt i(g); i!=INVALID; ++i)
     680            for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
    667681              {
    668682                //at the same time only one can be active
     
    679693                active_item=(get_item_at(clicked_x, clicked_y));
    680694
    681                 for (NodeIt i(g); i!=INVALID; ++i)
     695                for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
    682696                  {
    683697                    //at the same time only one can be active
     
    804818                        edgetextmap[active_edge]->property_text().set_value(ostr.str());
    805819                        (*(mapstorage.edgemap_storage)[edgemap_to_edit])[active_edge]=mapvalue_d;
    806                         mapwin->updateEdge(active_edge);
     820                        mapwin.updateEdge(active_edge);
    807821                        break;
    808822                      case NODE_MAP_EDIT:
    809823                        nodetextmap[active_node]->property_text().set_value(ostr.str());
    810824                        (*(mapstorage.nodemap_storage)[nodemap_to_edit])[active_node]=mapvalue_d;
    811                         mapwin->updateNode(active_node);
     825                        mapwin.updateNode(active_node);
    812826                        break;
    813827                      default:
     
    836850  delete(nodetextmap[node_to_delete]);
    837851  delete(nodesmap[node_to_delete]);
    838   g.erase(node_to_delete);
     852  mapstorage.graph.erase(node_to_delete);
    839853}
    840854
     
    843857  delete(edgetextmap[edge_to_delete]);
    844858  delete(edgesmap[edge_to_delete]);
    845   g.erase(edge_to_delete);
     859  mapstorage.graph.erase(edge_to_delete);
    846860}
    847861
     
    850864  delete(edgetextmap[edge_to_delete]);
    851865  delete(edgesmap[edge_to_delete]);
    852   g.erase(edge_to_delete);
     866  mapstorage.graph.erase(edge_to_delete);
    853867}
    854868
     
    870884      else
    871885        {
    872           for (EdgeIt i(g); i!=INVALID; ++i)
     886          for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i)
    873887            {
    874888              if(edgesmap[i]==active_bre)
     
    896910{
    897911  //create the new map
    898   Graph::EdgeMap<double> * emptr=new Graph::EdgeMap<double> (g,default_value);
     912  Graph::EdgeMap<double> * emptr=new Graph::EdgeMap<double> (mapstorage.graph, default_value);
    899913
    900914  //if addition was not successful addEdgeMap returns one.
     
    907921
    908922  //add it to the list of the displayable maps
    909   mapwin->registerNewEdgeMap(mapname);
     923  mapwin.registerNewEdgeMap(mapname);
    910924
    911925  //display it
     
    918932{
    919933  //create the new map
    920   Graph::NodeMap<double> * emptr=new Graph::NodeMap<double> (g,default_value);
     934  Graph::NodeMap<double> * emptr=new Graph::NodeMap<double> (mapstorage.graph,default_value);
    921935
    922936  //if addition was not successful addNodeMap returns one.
     
    928942
    929943  //add it to the list of the displayable maps
    930   mapwin->registerNewNodeMap(mapname);
     944  mapwin.registerNewNodeMap(mapname);
    931945
    932946  //display it
Note: See TracChangeset for help on using the changeset viewer.