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 } |
|