mw-mapselector.cc
branchgui
changeset 94 adfdc2f70548
parent 90 e9f8f44f12a3
child 95 628c0b383d2f
     1.1 --- a/mw-mapselector.cc	Wed Nov 23 16:24:59 2005 +0000
     1.2 +++ b/mw-mapselector.cc	Tue Nov 29 19:31:58 2005 +0000
     1.3 @@ -1,8 +1,8 @@
     1.4  #include "map_win.h"
     1.5  
     1.6 -MapWin::MapSelector::MapSelector(GraphDisplayerCanvas & grdispc, MapStorage & mapst, int identifier, bool edge):gdc(grdispc),ms(mapst),id(identifier),itisedge(edge),default_state(true),set_new_map(false),node_to_update(INVALID),edge_to_update(INVALID)
     1.7 +MapWin::MapSelector::MapSelector(std::vector<std::string> ml, int identifier, bool edge):id(identifier),itisedge(edge),default_state(true),set_new_map(false)
     1.8  {
     1.9 -  update_list();
    1.10 +  update_list(ml);
    1.11  
    1.12    cbt.set_active(0);
    1.13  
    1.14 @@ -50,27 +50,16 @@
    1.15  void MapWin::MapSelector::new_but_pressed()
    1.16  {
    1.17    set_new_map=true;
    1.18 -  (new NewMapWin("NewMapWin", gdc, itisedge, false))->run();
    1.19 +  signal_newmapwin.emit(itisedge);
    1.20  }
    1.21  
    1.22 -void MapWin::MapSelector::update_list()
    1.23 +void MapWin::MapSelector::update_list( std::vector< std::string > ml )
    1.24  {
    1.25    cbt.clear();
    1.26 -  if(itisedge)
    1.27 +  std::vector< std::string >::iterator emsi=ml.begin();
    1.28 +  for(;emsi!=ml.end();emsi++)
    1.29      {
    1.30 -      std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
    1.31 -      for(;emsi!=ms.endOfEdgeMaps();emsi++)
    1.32 -	{
    1.33 -	  cbt.append_text(emsi->first);
    1.34 -	}
    1.35 -    }
    1.36 -  else
    1.37 -    {
    1.38 -      std::map< std::string,Graph::NodeMap<double> * >::iterator emsi=ms.beginOfNodeMaps();
    1.39 -      for(;emsi!=ms.endOfNodeMaps();emsi++)
    1.40 -	{
    1.41 -	  cbt.append_text(emsi->first);
    1.42 -	}
    1.43 +      cbt.append_text(*emsi);
    1.44      }
    1.45    cbt.prepend_text("Default values");
    1.46  }
    1.47 @@ -83,52 +72,12 @@
    1.48        Glib::ustring mapname = cbt.get_active_text();
    1.49        if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
    1.50  	{
    1.51 -	  if(itisedge)
    1.52 -	    {
    1.53 -	      if( ( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() ) )
    1.54 -		{
    1.55 -		  Edge edge=edge_to_update;
    1.56 -		  switch(id)
    1.57 -		    {
    1.58 -		    case E_WIDTH:
    1.59 -		      gdc.changeEdgeWidth(mapname, edge);
    1.60 -		      break;
    1.61 -		    case E_COLOR:
    1.62 -		      gdc.changeEdgeColor(mapname, edge);
    1.63 -		      break;
    1.64 -		    case E_TEXT:
    1.65 -		      gdc.changeEdgeText(mapname, edge);
    1.66 -		      break;
    1.67 -		    default:
    1.68 -		      std::cerr<<"Error\n";
    1.69 -		    }
    1.70 -		}
    1.71 -	    }
    1.72 -	  else
    1.73 -	    {
    1.74 -	      if( ( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() ) )
    1.75 -		{
    1.76 -		  Node node=node_to_update;
    1.77 -		  switch(id)
    1.78 -		    {
    1.79 -		    case N_RADIUS:
    1.80 -		      gdc.changeNodeRadius(mapname, node);
    1.81 -		      break;
    1.82 -		    case N_COLOR:
    1.83 -		      gdc.changeNodeColor(mapname, node);
    1.84 -		      break;
    1.85 -		    case N_TEXT:
    1.86 -		      gdc.changeNodeText(mapname, node);
    1.87 -		      break;
    1.88 -		    default:
    1.89 -		      std::cerr<<"Error\n";
    1.90 -		    }
    1.91 -		}
    1.92 -	    }
    1.93 +	  signal_cbt.emit(mapname);
    1.94  	}
    1.95      }
    1.96    else if((!default_state)&&(cbt.get_active_row_number()==0))
    1.97      {
    1.98 +      signal_cbt.emit("");
    1.99        reset();
   1.100      }
   1.101  }
   1.102 @@ -138,71 +87,9 @@
   1.103    default_state=true;
   1.104    cbt.set_active(0);
   1.105  
   1.106 -  if(itisedge)
   1.107 -    {
   1.108 -      Edge edge=edge_to_update;
   1.109 -      switch(id)
   1.110 -	{
   1.111 -	case E_WIDTH:
   1.112 -	  gdc.resetEdgeWidth(edge);
   1.113 -	  break;
   1.114 -	case E_COLOR:
   1.115 -	  gdc.resetEdgeColor(edge);
   1.116 -	  break;
   1.117 -	case E_TEXT:
   1.118 -	  gdc.resetEdgeText(edge);
   1.119 -	  break;
   1.120 -	default:
   1.121 -	  std::cerr<<"Error\n";
   1.122 -	}
   1.123 -    }
   1.124 -  else
   1.125 -    {
   1.126 -      Node node=node_to_update;	
   1.127 -      switch(id)
   1.128 -	{
   1.129 -	case N_RADIUS:
   1.130 -	  gdc.resetNodeRadius(node);
   1.131 -	  break;
   1.132 -	case N_COLOR:
   1.133 -	  gdc.resetNodeColor(node);
   1.134 -	  break;
   1.135 -	case N_TEXT:
   1.136 -	  gdc.resetNodeText(node);
   1.137 -	  break;
   1.138 -	default:
   1.139 -	  std::cerr<<"Error\n";
   1.140 -	}
   1.141 -    }
   1.142 +  signal_cbt.emit("");
   1.143  }
   1.144  
   1.145 -void MapWin::MapSelector::update(Node node)
   1.146 -{
   1.147 -  node_to_update=node;
   1.148 -  if(default_state)
   1.149 -    {
   1.150 -      reset();
   1.151 -    }
   1.152 -  else
   1.153 -    {
   1.154 -      comboChanged();
   1.155 -    }
   1.156 -  node_to_update=INVALID;
   1.157 -}
   1.158 -
   1.159 -void MapWin::MapSelector::update(Edge edge)
   1.160 -{
   1.161 -  edge_to_update=edge;
   1.162 -  if(default_state)
   1.163 -    {
   1.164 -      reset();
   1.165 -    }
   1.166 -  else
   1.167 -    {
   1.168 -      comboChanged();
   1.169 -    }
   1.170 -  edge_to_update=INVALID;
   1.171 -}
   1.172  
   1.173  Glib::ustring MapWin::MapSelector::get_active_text()
   1.174  {
   1.175 @@ -223,3 +110,13 @@
   1.176        set_new_map=false;
   1.177      }
   1.178  }
   1.179 +
   1.180 +sigc::signal<void, std::string> MapWin::MapSelector::signal_cbt_ch()
   1.181 +{
   1.182 +  return signal_cbt;
   1.183 +}
   1.184 +
   1.185 +sigc::signal<void, bool> MapWin::MapSelector::signal_newmapwin_needed()
   1.186 +{
   1.187 +  return signal_newmapwin;
   1.188 +}