gui/map_win.cc
changeset 1579 ed7da82bbecf
parent 1524 587a823bcdd0
child 1586 1a8630f2e944
equal deleted inserted replaced
5:b0d83f1c4200 6:8c5852776ae2
    21 
    21 
    22   table=new Gtk::Table(EDGE_PROPERTY_NUM, 2, false);
    22   table=new Gtk::Table(EDGE_PROPERTY_NUM, 2, false);
    23 
    23 
    24   for(int i=0;i<EDGE_PROPERTY_NUM;i++)
    24   for(int i=0;i<EDGE_PROPERTY_NUM;i++)
    25   {
    25   {
    26 
       
    27     std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
       
    28     std::set<int> props;
       
    29 
       
    30     int actprop;
       
    31 
       
    32     //here we find out, which map is the default in MapStorage for this property, which are not
       
    33     for(int j=0;j<ms.numOfEdgeMaps();j++)
       
    34     {
       
    35       //this is the default value for this property
       
    36       if(emsi->second==&(ms.default_edgemaps[i]))
       
    37       {
       
    38 	actprop=j;
       
    39       }
       
    40       //these are the maps NOT to show for this property
       
    41       for(int k=0;k<EDGE_PROPERTY_NUM;k++)
       
    42       {
       
    43 	if(emsi->second==&(ms.default_edgemaps[k]))
       
    44 	{
       
    45 	  props.insert(j);
       
    46 	}
       
    47       }
       
    48       emsi++;
       
    49     }
       
    50 
       
    51     //filling in combo box with choices
    26     //filling in combo box with choices
    52     std::list<Glib::ustring> listStrings;
    27     std::list<Glib::ustring> listStrings;
    53 
    28 
    54     listStrings.push_back("Default");
    29     listStrings.push_back("Default");
    55 
    30 
    56     emsi=ms.beginOfEdgeMaps();
    31     std::map< std::string,Graph::EdgeMap<double> * >::iterator emsi=ms.beginOfEdgeMaps();
    57 
    32     for(;emsi!=ms.endOfEdgeMaps();emsi++)
    58     for(int j=0;j<ms.numOfEdgeMaps();j++)
    33     {
    59     {
       
    60       if( ( props.find(j) )==( props.end() ) )
       
    61       {
       
    62 	listStrings.push_back(emsi->first);
    34 	listStrings.push_back(emsi->first);
    63       }
       
    64       emsi++;
       
    65     }
    35     }
    66 
    36 
    67     e_combo_array[i].set_popdown_strings(listStrings);
    37     e_combo_array[i].set_popdown_strings(listStrings);
    68 
    38 
    69     //Restrict it to these choices only:
    39     //Restrict it to these choices only:
   100 
    70 
   101   table=new Gtk::Table(NODE_PROPERTY_NUM, 2, false);
    71   table=new Gtk::Table(NODE_PROPERTY_NUM, 2, false);
   102 
    72 
   103   for(int i=0;i<NODE_PROPERTY_NUM;i++)
    73   for(int i=0;i<NODE_PROPERTY_NUM;i++)
   104   {
    74   {
   105 
       
   106     std::map< std::string,Graph::NodeMap<double> * >::iterator emsi=ms.beginOfNodeMaps();
       
   107     std::set<int> props;
       
   108 
       
   109     int actprop;
       
   110 
       
   111     //here we find out, which map is the default in MapStorage for this property, which are not
       
   112     for(int j=0;j<ms.numOfNodeMaps();j++)
       
   113     {
       
   114       //these are the maps NOT to show for this property
       
   115       if(emsi->second==&(ms.default_nodemaps[i]))
       
   116       {
       
   117 	actprop=j;
       
   118       }
       
   119       //this is the other maps to show for this property
       
   120       for(int k=0;k<NODE_PROPERTY_NUM;k++)
       
   121       {
       
   122 	if(emsi->second==&(ms.default_nodemaps[k]))
       
   123 	{
       
   124 	  props.insert(j);
       
   125 	}
       
   126       }
       
   127       emsi++;
       
   128     }
       
   129 
       
   130     //filling in combo box with choices
    75     //filling in combo box with choices
   131     std::list<Glib::ustring> listStrings;
    76     std::list<Glib::ustring> listStrings;
   132 
    77 
   133     listStrings.push_back("Default");
    78     listStrings.push_back("Default");
   134 
    79 
   135     emsi=ms.beginOfNodeMaps();
    80     std::map< std::string,Graph::NodeMap<double> * >::iterator emsi=ms.beginOfNodeMaps();
   136 
    81 
   137     for(int j=0;j<ms.numOfNodeMaps();j++)
    82     for(;emsi!=ms.endOfNodeMaps();emsi++)
   138     {
    83     {
   139       if( ( props.find(j) )==( props.end() ) )
    84       listStrings.push_back(emsi->first);
   140       {
       
   141 	listStrings.push_back(emsi->first);
       
   142       }
       
   143       emsi++;
       
   144     }
    85     }
   145 
    86 
   146     n_combo_array[i].set_popdown_strings(listStrings);
    87     n_combo_array[i].set_popdown_strings(listStrings);
   147 
    88 
   148     //Restrict it to these choices only:
    89     //Restrict it to these choices only:
   186   if(entry)
   127   if(entry)
   187   {
   128   {
   188     Glib::ustring mapname = entry->get_text();
   129     Glib::ustring mapname = entry->get_text();
   189     if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
   130     if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
   190     {
   131     {
   191       if(mapname=="Default")
   132       if( ( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() ) || (mapname=="Default") )
   192       {
       
   193 	mapname=edge_property_strings[prop];
       
   194       }
       
   195 
       
   196       if( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() )
       
   197       {
   133       {
   198 	switch(prop)
   134 	switch(prop)
   199 	{
   135 	{
   200           case E_WIDTH:
   136           case E_WIDTH:
   201 	    gdc.changeEdgeWidth(mapname);
   137 	    gdc.changeEdgeWidth(mapname);
   222   if(entry)
   158   if(entry)
   223   {
   159   {
   224     Glib::ustring mapname = entry->get_text();
   160     Glib::ustring mapname = entry->get_text();
   225     if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
   161     if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
   226     {
   162     {
   227       if(mapname=="Default")
   163       if( ( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() ) || (mapname=="Default") )
   228       {
       
   229 	mapname=node_property_strings[prop];
       
   230       }
       
   231 
       
   232       if( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() )
       
   233       {
   164       {
   234 	switch(prop)
   165 	switch(prop)
   235 	{
   166 	{
   236           case N_RADIUS:
   167           case N_RADIUS:
   237 	    gdc.changeNodeRadius(mapname);
   168 	    gdc.changeNodeRadius(mapname);
   259       if(entry)
   190       if(entry)
   260 	{
   191 	{
   261 	  Glib::ustring mapname = entry->get_text();
   192 	  Glib::ustring mapname = entry->get_text();
   262 	  if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
   193 	  if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
   263 	    {
   194 	    {
   264 	      if(mapname=="Default")
   195 	      if( ( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() ) || (mapname=="Default") )
   265 		{
       
   266 		  mapname=node_property_strings[i];
       
   267 		}
       
   268 
       
   269 	      if( (ms.nodemap_storage).find(mapname) != (ms.nodemap_storage).end() )
       
   270 		{
   196 		{
   271 		  switch(i)
   197 		  switch(i)
   272 		    {
   198 		    {
   273 		    case N_RADIUS:
   199 		    case N_RADIUS:
   274 		      //gdc.changeNodeRadius(mapname, node);
   200 		      gdc.changeNodeRadius(mapname, node);
   275 		      std::cout << "If default map-value problem is solved, uncomment line in MapWin::node_update!" << std::endl;
       
   276 		      break;
   201 		      break;
   277 		    case N_COLOR:
   202 		    case N_COLOR:
   278 		      gdc.changeNodeColor(mapname, node);
   203 		      gdc.changeNodeColor(mapname, node);
   279 		      break;
   204 		      break;
   280 		    case N_TEXT:
   205 		    case N_TEXT:
   299       if(entry)
   224       if(entry)
   300 	{
   225 	{
   301 	  Glib::ustring mapname = entry->get_text();
   226 	  Glib::ustring mapname = entry->get_text();
   302 	  if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
   227 	  if(!(mapname.empty())) //We seem to get 2 signals, one when the text is empty.
   303 	    {
   228 	    {
   304 	      if(mapname=="Default")
   229 
   305 		{
   230 	      if( ( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() ) || (mapname=="Default") )
   306 		  mapname=edge_property_strings[i];
       
   307 		}
       
   308 
       
   309 	      if( (ms.edgemap_storage).find(mapname) != (ms.edgemap_storage).end() )
       
   310 		{
   231 		{
   311 		  switch(i)
   232 		  switch(i)
   312 		    {
   233 		    {
   313 		    case E_WIDTH:
   234 		    case E_WIDTH:
   314 		      //gdc.changeEdgeWidth(mapname, edge);
   235 		      gdc.changeEdgeWidth(mapname, edge);
   315 		      std::cout << "If default map-value problem is solved, uncomment line in MapWin::edge_update!" << std::endl;
       
   316 		      break;
   236 		      break;
   317 		    case E_COLOR:
   237 		    case E_COLOR:
   318 		      gdc.changeEdgeColor(mapname, edge);
   238 		      gdc.changeEdgeColor(mapname, edge);
   319 		      break;
   239 		      break;
   320 		    case E_TEXT:
   240 		    case E_TEXT: