new_map_win.cc
author klao
Wed, 02 Nov 2005 12:44:50 +0000
branchgui
changeset 86 0c34609f83cd
parent 46 121452cc4096
child 88 c397e85ec555
permissions -rw-r--r--
small svn:ignore fixups
hegyi@42
     1
#include <new_map_win.h>
hegyi@42
     2
hegyi@42
     3
bool NewMapWin::closeIfEscapeIsPressed(GdkEventKey* e)
hegyi@42
     4
{
hegyi@42
     5
  if(e->keyval==GDK_Escape)
hegyi@42
     6
  {
hegyi@42
     7
    hide();
hegyi@42
     8
  }
hegyi@42
     9
  return true;
hegyi@42
    10
}
hegyi@42
    11
hegyi@42
    12
NewMapWin::NewMapWin(const std::string& title, GraphDisplayerCanvas & grdispc):gdc(grdispc),node("Create NodeMap"),edge("Create EdgeMap")
hegyi@42
    13
{
hegyi@42
    14
  set_title(title);
hegyi@42
    15
  set_default_size(200, 50);
hegyi@42
    16
hegyi@42
    17
  signal_key_press_event().connect(sigc::mem_fun(*this, &NewMapWin::closeIfEscapeIsPressed));
hegyi@42
    18
hegyi@42
    19
hegyi@42
    20
  //entries
hegyi@42
    21
  table=new Gtk::Table(3, 2, false);
hegyi@42
    22
hegyi@42
    23
  label=new Gtk::Label;
hegyi@42
    24
  label->set_text("Name of new map:");
hegyi@42
    25
  name.set_text("");
hegyi@42
    26
hegyi@42
    27
  (*table).attach(*label,0,1,0,1,Gtk::SHRINK,Gtk::SHRINK,10,3);
hegyi@42
    28
  (*table).attach(name,1,2,0,1,Gtk::SHRINK,Gtk::SHRINK,10,3);
hegyi@42
    29
hegyi@42
    30
  label=new Gtk::Label;
hegyi@42
    31
  label->set_text("Default value in the map:");
hegyi@42
    32
  default_value.set_text("0");
hegyi@42
    33
hegyi@42
    34
  (*table).attach(*label,0,1,1,2,Gtk::SHRINK,Gtk::SHRINK,10,3);
hegyi@42
    35
  (*table).attach(default_value,1,2,1,2,Gtk::SHRINK,Gtk::SHRINK,10,3);
hegyi@42
    36
hegyi@42
    37
  //node vs. edge map selector
hegyi@42
    38
  Gtk::RadioButton::Group group = node.get_group();
hegyi@42
    39
  edge.set_group(group);
hegyi@42
    40
hegyi@42
    41
  (*table).attach(node,0,1,2,3,Gtk::SHRINK,Gtk::SHRINK,10,3);
hegyi@42
    42
  (*table).attach(edge,1,2,2,3,Gtk::SHRINK,Gtk::SHRINK,10,3);
hegyi@42
    43
hegyi@42
    44
  vbox.pack_start(*table);
hegyi@42
    45
hegyi@42
    46
  //OK button
hegyi@42
    47
  button=new Gtk::Button("OK");
hegyi@42
    48
hegyi@42
    49
  button->signal_clicked().connect
hegyi@42
    50
    (
hegyi@42
    51
     sigc::mem_fun(*this, &NewMapWin::buttonPressed)
hegyi@42
    52
    );
hegyi@42
    53
hegyi@42
    54
hegyi@42
    55
  vbox.pack_start(*button);
hegyi@42
    56
hegyi@42
    57
  add(vbox);
hegyi@42
    58
hegyi@42
    59
  show_all_children();
hegyi@42
    60
hegyi@42
    61
}
hegyi@42
    62
hegyi@85
    63
void NewMapWin::showByPreChoose(bool itisedge)
hegyi@85
    64
{
hegyi@85
    65
  if(itisedge)
hegyi@85
    66
    {
hegyi@85
    67
      edge.set_active();
hegyi@85
    68
    }
hegyi@85
    69
  else
hegyi@85
    70
    {
hegyi@85
    71
      node.set_active();
hegyi@85
    72
    }
hegyi@85
    73
  node.hide();
hegyi@85
    74
  edge.hide();
hegyi@85
    75
  show();
hegyi@85
    76
}
hegyi@85
    77
hegyi@42
    78
void NewMapWin::buttonPressed()
hegyi@42
    79
{
hegyi@42
    80
  bool valid_double=true;
hegyi@42
    81
  int point_num=0;
hegyi@42
    82
hegyi@42
    83
  std::string def_val_str=default_value.get_text();
hegyi@42
    84
  char * def_val_ch=new char [def_val_str.length()];
hegyi@42
    85
  for(int i=0;i<(int)(def_val_str.length());i++)
hegyi@42
    86
    {
hegyi@42
    87
      if(((def_val_str[i]<'0')||(def_val_str[i]>'9'))&&(def_val_str[i]!='.'))
hegyi@42
    88
	{
hegyi@42
    89
	  valid_double=false;
hegyi@42
    90
	}
hegyi@42
    91
      else
hegyi@42
    92
	{
hegyi@42
    93
	  if(def_val_str[i]=='.')
hegyi@42
    94
	    {
hegyi@42
    95
	      point_num++;
hegyi@42
    96
	    }
hegyi@42
    97
	}
hegyi@42
    98
      def_val_ch[i]=def_val_str[i];
hegyi@42
    99
    }
hegyi@42
   100
  
hegyi@42
   101
  double def_val=atof(def_val_ch);
hegyi@42
   102
hegyi@42
   103
  std::string mapname=name.get_text();
hegyi@42
   104
hegyi@42
   105
  if((point_num<=1)&&(valid_double)&&(!mapname.empty()))
hegyi@42
   106
    {
hegyi@46
   107
      int abortion=0;
hegyi@42
   108
      if(edge.get_active())
hegyi@42
   109
	{
hegyi@46
   110
	  abortion=gdc.addNewEdgeMap(def_val,mapname);
hegyi@42
   111
	}
hegyi@42
   112
      else
hegyi@42
   113
	{
hegyi@46
   114
	  abortion=gdc.addNewNodeMap(def_val,mapname);
hegyi@42
   115
	}
hegyi@46
   116
      if(!abortion)
hegyi@46
   117
	{
hegyi@46
   118
	  name.set_text("");
hegyi@46
   119
	  default_value.set_text("0");
hegyi@85
   120
	  edge.show();
hegyi@85
   121
	  node.show();
hegyi@46
   122
	  hide();
hegyi@46
   123
	}
hegyi@42
   124
    }
hegyi@42
   125
}
hegyi@42
   126