edit_win.cc
author hegyi
Mon, 13 Jun 2005 19:49:33 +0000
branchgui
changeset 12 1db7a6dd17f8
parent 10 43ddd0c9d881
child 13 0b2281cc1e32
permissions -rwxr-xr-x
Known bugs are eliminated from gui, and new ones are created by changing tool selectors to special radiobuttons, and by adding edgecreation-canceller function (right-click on any group element).
hegyi@10
     1
#include <edit_win.h>
hegyi@10
     2
#include <set>
hegyi@10
     3
hegyi@10
     4
bool EditWin::close_if_escape_is_pressed(GdkEventKey* e)
hegyi@10
     5
{
hegyi@10
     6
  if(e->keyval==GDK_Escape)
hegyi@10
     7
  {
hegyi@10
     8
    hide();
hegyi@10
     9
  }
hegyi@10
    10
  return true;
hegyi@10
    11
}
hegyi@10
    12
hegyi@10
    13
EditWin::EditWin(const std::string& title, GraphDisplayerCanvas & grdispc):gdc(grdispc),table(2, 2, true)
hegyi@10
    14
{
hegyi@10
    15
  set_title(title);
hegyi@10
    16
  set_default_size(200, 50);
hegyi@12
    17
  set_keep_above(true);
hegyi@10
    18
  signal_key_press_event().connect(sigc::mem_fun(*this, &EditWin::close_if_escape_is_pressed));
hegyi@10
    19
  
hegyi@12
    20
  //buttons array
hegyi@12
    21
  buttons=new (Gtk::RadioButton *) [TOOL_NUM];
hegyi@12
    22
  for(int i=0;i<TOOL_NUM;i++)
hegyi@12
    23
    {
hegyi@12
    24
      buttons[i]=NULL;
hegyi@12
    25
    }
hegyi@12
    26
hegyi@12
    27
  Gtk::RadioButton::Group group;//=buttons[MOVE]->get_group();
hegyi@12
    28
hegyi@10
    29
  //New node button
hegyi@12
    30
  buttons[CREATE_NODE]=new Gtk::RadioButton("New Node");
hegyi@12
    31
  buttons[CREATE_NODE]->set_mode(false);
hegyi@12
    32
  buttons[CREATE_NODE]->set_group(group);
hegyi@12
    33
  buttons[CREATE_NODE]->signal_clicked().connect
hegyi@10
    34
    (
hegyi@10
    35
     sigc::bind
hegyi@10
    36
     (
hegyi@10
    37
      sigc::mem_fun(*this, &EditWin::makeEditorialToolChanged),
hegyi@10
    38
      1
hegyi@10
    39
      )
hegyi@10
    40
     );
hegyi@12
    41
  table.attach(*buttons[CREATE_NODE],0,1,0,1);
hegyi@10
    42
hegyi@10
    43
  //New edge button
hegyi@12
    44
  buttons[CREATE_EDGE]=new Gtk::RadioButton("New Edge");
hegyi@12
    45
  buttons[CREATE_EDGE]->set_mode(false);
hegyi@12
    46
  buttons[CREATE_EDGE]->set_group(group);
hegyi@12
    47
  buttons[CREATE_EDGE]->signal_clicked().connect
hegyi@10
    48
    (
hegyi@10
    49
     sigc::bind
hegyi@10
    50
     (
hegyi@10
    51
      sigc::mem_fun(*this, &EditWin::makeEditorialToolChanged),
hegyi@10
    52
      2
hegyi@10
    53
      )
hegyi@10
    54
     );
hegyi@12
    55
  table.attach(*buttons[CREATE_EDGE],1,2,0,1);
hegyi@10
    56
    
hegyi@10
    57
  //Move button
hegyi@12
    58
  buttons[MOVE]=new Gtk::RadioButton("Move");
hegyi@12
    59
  buttons[MOVE]->set_mode(false);
hegyi@12
    60
  buttons[MOVE]->set_group(group);
hegyi@12
    61
  buttons[MOVE]->signal_clicked().connect
hegyi@10
    62
    (
hegyi@10
    63
     sigc::bind
hegyi@10
    64
     (
hegyi@10
    65
      sigc::mem_fun(*this, &EditWin::makeEditorialToolChanged),
hegyi@10
    66
      0
hegyi@10
    67
      )
hegyi@10
    68
     );
hegyi@12
    69
  table.attach(*buttons[MOVE],0,1,1,2);
hegyi@12
    70
      
hegyi@10
    71
  add(table);
hegyi@10
    72
hegyi@10
    73
  show_all_children();
hegyi@10
    74
hegyi@10
    75
}
hegyi@10
    76
hegyi@10
    77
void EditWin::makeEditorialToolChanged(int newtool)
hegyi@10
    78
{
hegyi@10
    79
  gdc.changeEditorialTool(newtool);
hegyi@10
    80
}