COIN-OR::LEMON - Graph Library

Changeset 94:adfdc2f70548 in glemon-0.x for graph_displayer_canvas.cc


Ignore:
Timestamp:
11/29/05 20:31:58 (14 years ago)
Author:
Hegyi Péter
Branch:
gui
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk/gui@2389
Message:

Structure of GUI is now more clear-cut than before.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • graph_displayer_canvas.cc

    r89 r94  
    22#include <cmath>
    33
    4 GraphDisplayerCanvas::GraphDisplayerCanvas(MapStorage & ms, MapWin & mw, Gtk::Window * mainwin) :
    5   nodesmap(ms.graph), edgesmap(ms.graph), edgetextmap(ms.graph),
    6   nodetextmap(ms.graph), displayed_graph(*(root()), 0, 0), mapstorage(ms),
     4GraphDisplayerCanvas::GraphDisplayerCanvas(MainWin & mainw) :
     5  nodesmap(mainw.mapstorage.graph), edgesmap(mainw.mapstorage.graph), edgetextmap(mainw.mapstorage.graph),
     6  nodetextmap(mainw.mapstorage.graph), displayed_graph(*(root()), 0, 0),
    77  isbutton(0), active_item(NULL), target_item(NULL), nodemap_to_edit(""),
    8   edgemap_to_edit(""), mapwin(mw)
    9 {
    10   parentwin=mainwin;
    11 
     8  edgemap_to_edit(""), mainwin(mainw)
     9{
    1210  //base event handler is move tool
    1311  actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
     
    2119GraphDisplayerCanvas::~GraphDisplayerCanvas()
    2220{
    23   for (NodeIt n(mapstorage.graph); n != INVALID; ++n)
    24   {
    25     delete nodesmap[n];
    26     delete nodetextmap[n];
    27   }
    28 
    29   for (EdgeIt e(mapstorage.graph); e != INVALID; ++e)
    30   {
    31     delete edgesmap[e];
    32     delete edgetextmap[e];
    33   }
     21  for (NodeIt n((mainwin.mapstorage).graph); n != INVALID; ++n)
     22    {
     23      delete nodesmap[n];
     24      delete nodetextmap[n];
     25    }
     26 
     27  for (EdgeIt e((mainwin.mapstorage).graph); e != INVALID; ++e)
     28    {
     29      delete edgesmap[e];
     30      delete edgetextmap[e];
     31    }
     32}
     33
     34void GraphDisplayerCanvas::propertyChange(bool itisedge, int prop)
     35{
     36  if(itisedge)
     37    {
     38      propertyUpdate(Edge(INVALID), prop);
     39    }
     40  else
     41    {
     42      propertyUpdate(Node(INVALID), prop);
     43    }
     44}
     45
     46void GraphDisplayerCanvas::propertyUpdate(Edge edge)
     47{
     48  for(int i=0;i<EDGE_PROPERTY_NUM;i++)
     49    {
     50      propertyUpdate(edge, i);
     51    }
     52}
     53
     54void GraphDisplayerCanvas::propertyUpdate(Node node)
     55{
     56  for(int i=0;i<NODE_PROPERTY_NUM;i++)
     57    {
     58      propertyUpdate(node, i);
     59    }
     60}
     61
     62void GraphDisplayerCanvas::propertyUpdate(Node node, int prop, int dummy)
     63{
     64  dummy=dummy;
     65
     66  std::string mapname=mainwin.getActiveNodeMap(prop);
     67
     68  if(mapname!="")
     69    {
     70      if( ( ((mainwin.mapstorage).nodemap_storage).find(mapname) != ((mainwin.mapstorage).nodemap_storage).end() ) )
     71        {
     72          switch(prop)
     73            {
     74            case N_RADIUS:
     75              changeNodeRadius(mapname, node);
     76              break;
     77            case N_COLOR:
     78              changeNodeColor(mapname, node);
     79              break;
     80            case N_TEXT:
     81              changeNodeText(mapname, node);
     82              break;
     83            default:
     84              std::cerr<<"Error\n";
     85            }
     86        }
     87    }
     88  else //mapname==""
     89    {
     90      Node node=INVALID;       
     91      switch(prop)
     92        {
     93        case N_RADIUS:
     94          resetNodeRadius(node);
     95          break;
     96        case N_COLOR:
     97          resetNodeColor(node);
     98          break;
     99        case N_TEXT:
     100          resetNodeText(node);
     101          break;
     102        default:
     103          std::cerr<<"Error\n";
     104        }
     105    }
     106
     107}
     108
     109void GraphDisplayerCanvas::propertyUpdate(Edge edge, int prop, int dummy)
     110{
     111  dummy=dummy;
     112
     113  std::string mapname=mainwin.getActiveEdgeMap(prop);
     114
     115  if(mapname!="")
     116    {
     117      if( ( ((mainwin.mapstorage).edgemap_storage).find(mapname) != ((mainwin.mapstorage).edgemap_storage).end() ) )
     118        {
     119          switch(prop)
     120            {
     121            case E_WIDTH:
     122              changeEdgeWidth(mapname, edge);
     123              break;
     124            case E_COLOR:
     125              changeEdgeColor(mapname, edge);
     126              break;
     127            case E_TEXT:
     128              changeEdgeText(mapname, edge);
     129              break;
     130            default:
     131              std::cerr<<"Error\n";
     132            }
     133        }
     134    }
     135  else //mapname==""
     136    {
     137      switch(prop)
     138        {
     139        case E_WIDTH:
     140          resetEdgeWidth(edge);
     141          break;
     142        case E_COLOR:
     143          resetEdgeColor(edge);
     144          break;
     145        case E_TEXT:
     146          resetEdgeText(edge);
     147          break;
     148        default:
     149          std::cerr<<"Error\n";
     150        }
     151    }
    34152}
    35153
     
    38156  //first edges are drawn, to hide joining with nodes later
    39157
    40   for (EdgeIt i(mapstorage.graph); i!=INVALID; ++i)
     158  for (EdgeIt i((mainwin.mapstorage).graph); i!=INVALID; ++i)
    41159  {
    42160
     
    45163    Gnome::Canvas::Points coos;
    46164    coos.push_back(Gnome::Art::Point(
    47           mapstorage.coords[mapstorage.graph.source(i)].x,
    48           mapstorage.coords[mapstorage.graph.source(i)].y));
     165          (mainwin.mapstorage).coords[(mainwin.mapstorage).graph.source(i)].x,
     166          (mainwin.mapstorage).coords[(mainwin.mapstorage).graph.source(i)].y));
    49167    coos.push_back(Gnome::Art::Point(
    50           mapstorage.coords[mapstorage.graph.target(i)].x,
    51           mapstorage.coords[mapstorage.graph.target(i)].y));
     168          (mainwin.mapstorage).coords[(mainwin.mapstorage).graph.target(i)].x,
     169          (mainwin.mapstorage).coords[(mainwin.mapstorage).graph.target(i)].y));
    52170   
    53171    edgesmap[i]=new BrokenEdge(displayed_graph, coos, *this);
     
    69187  //afterwards nodes come to be drawn
    70188
    71   for (NodeIt i(mapstorage.graph); i!=INVALID; ++i)
     189  for (NodeIt i((mainwin.mapstorage).graph); i!=INVALID; ++i)
    72190  {
    73191    //drawing bule nodes, with black line around them
     
    75193    nodesmap[i]=new Gnome::Canvas::Ellipse(
    76194        displayed_graph,
    77         mapstorage.coords[i].x-20,
    78         mapstorage.coords[i].y-20,
    79         mapstorage.coords[i].x+20,
    80         mapstorage.coords[i].y+20);
     195        (mainwin.mapstorage).coords[i].x-20,
     196        (mainwin.mapstorage).coords[i].y-20,
     197        (mainwin.mapstorage).coords[i].x+20,
     198        (mainwin.mapstorage).coords[i].y+20);
    81199    *(nodesmap[i]) << Gnome::Canvas::Properties::fill_color("blue");
    82200    *(nodesmap[i]) << Gnome::Canvas::Properties::outline_color("black");
     
    86204
    87205    xy<double> text_pos(
    88         (mapstorage.coords[i].x+node_property_defaults[N_RADIUS]+5),
    89         (mapstorage.coords[i].y+node_property_defaults[N_RADIUS]+5));
     206        ((mainwin.mapstorage).coords[i].x+node_property_defaults[N_RADIUS]+5),
     207        ((mainwin.mapstorage).coords[i].y+node_property_defaults[N_RADIUS]+5));
    90208
    91209    nodetextmap[i]=new Gnome::Canvas::Text(displayed_graph,
     
    105223  forming_edge=INVALID;
    106224
    107   for (NodeIt n(mapstorage.graph); n != INVALID; ++n)
     225  for (NodeIt n((mainwin.mapstorage).graph); n != INVALID; ++n)
    108226  {
    109227    delete nodesmap[n];
     
    111229  }
    112230
    113   for (EdgeIt e(mapstorage.graph); e != INVALID; ++e)
     231  for (EdgeIt e((mainwin.mapstorage).graph); e != INVALID; ++e)
    114232  {
    115233    delete edgesmap[e];
Note: See TracChangeset for help on using the changeset viewer.