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