gui/edit_win.cc
author hegyi
Tue, 26 Jul 2005 21:20:01 +0000
changeset 1593 a8a007f1c01c
parent 1494 ae55ba000ebb
permissions -rwxr-xr-x
EdgeMap and NodeMap creation is done, at last. Bach 4ever.
     1 #include <edit_win.h>
     2 #include <set>
     3 
     4 bool EditWin::closeIfEscapeIsPressed(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::closeIfEscapeIsPressed));
    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   //New edge button
    72   buttons[ERASER]=new Gtk::RadioButton("Erase Item");
    73   buttons[ERASER]->set_mode(false);
    74   buttons[ERASER]->set_group(group);
    75   buttons[ERASER]->signal_clicked().connect
    76     (
    77      sigc::bind
    78      (
    79       sigc::mem_fun(*this, &EditWin::makeEditorialToolChanged),
    80       3
    81       )
    82      );
    83   table.attach(*buttons[ERASER],1,2,1,2);
    84     
    85   add(table);
    86 
    87   show_all_children();
    88 
    89 }
    90 
    91 void EditWin::makeEditorialToolChanged(int newtool)
    92 {
    93   gdc.changeEditorialTool(newtool);
    94 }