branch | gui |
changeset 94 | adfdc2f70548 |
parent 90 | e9f8f44f12a3 |
child 95 | 628c0b383d2f |
23:418faf47bfca | 24:72281e603440 |
---|---|
1 #include "main_win.h" |
1 #include "main_win.h" |
2 #include "icons/guipixbufs.h" |
2 #include "icons/guipixbufs.h" |
3 |
3 |
4 MainWin::MainWin() : |
4 MainWin::MainWin() |
5 mapwin("Map Setup", mapstorage, gd_canvas), |
5 { |
6 gd_canvas(mapstorage, mapwin, (Gtk::Window *)this) |
6 mapwin=new MapWin("Map Setup", mapstorage.getEdgeMapList(), mapstorage.getNodeMapList(), *this); |
7 { |
7 gd_canvas=new GraphDisplayerCanvas(*this); |
8 |
|
8 set_title ("unsaved file - " + prog_name); |
9 set_title ("unsaved file - " + prog_name); |
9 set_default_size(WIN_WIDTH,WIN_HEIGHT); |
10 set_default_size(WIN_WIDTH,WIN_HEIGHT); |
10 add(vbox); |
11 add(vbox); |
11 |
12 |
13 //connecting signals - controller character |
|
14 mapstorage.signal_prop_ch().connect(sigc::mem_fun(*gd_canvas, &GraphDisplayerCanvas::propertyChange)); |
|
12 |
15 |
13 // custom icons for the toolbar |
16 // custom icons for the toolbar |
14 |
17 |
15 Glib::RefPtr<Gtk::IconFactory> p_icon_factory = Gtk::IconFactory::create(); |
18 Glib::RefPtr<Gtk::IconFactory> p_icon_factory = Gtk::IconFactory::create(); |
16 |
19 |
90 ag->add( Gtk::Action::create("Quit", Gtk::Stock::QUIT), |
93 ag->add( Gtk::Action::create("Quit", Gtk::Stock::QUIT), |
91 sigc::mem_fun(*this, &MainWin::hide)); |
94 sigc::mem_fun(*this, &MainWin::hide)); |
92 |
95 |
93 ag->add( Gtk::Action::create("ViewMenu", "_View") ); |
96 ag->add( Gtk::Action::create("ViewMenu", "_View") ); |
94 ag->add( Gtk::Action::create("ViewZoomIn", Gtk::Stock::ZOOM_IN), |
97 ag->add( Gtk::Action::create("ViewZoomIn", Gtk::Stock::ZOOM_IN), |
95 sigc::mem_fun(this->gd_canvas, &GraphDisplayerCanvas::zoomIn)); |
98 sigc::mem_fun(*(this->gd_canvas), &GraphDisplayerCanvas::zoomIn)); |
96 ag->add( Gtk::Action::create("ViewZoomOut", Gtk::Stock::ZOOM_OUT), |
99 ag->add( Gtk::Action::create("ViewZoomOut", Gtk::Stock::ZOOM_OUT), |
97 sigc::mem_fun(this->gd_canvas, &GraphDisplayerCanvas::zoomOut)); |
100 sigc::mem_fun(*(this->gd_canvas), &GraphDisplayerCanvas::zoomOut)); |
98 ag->add( Gtk::Action::create("ViewZoomFit", Gtk::Stock::ZOOM_FIT), |
101 ag->add( Gtk::Action::create("ViewZoomFit", Gtk::Stock::ZOOM_FIT), |
99 sigc::mem_fun(this->gd_canvas, &GraphDisplayerCanvas::zoomFit)); |
102 sigc::mem_fun(*(this->gd_canvas), &GraphDisplayerCanvas::zoomFit)); |
100 ag->add( Gtk::Action::create("ViewZoom100", Gtk::Stock::ZOOM_100), |
103 ag->add( Gtk::Action::create("ViewZoom100", Gtk::Stock::ZOOM_100), |
101 sigc::mem_fun(this->gd_canvas, &GraphDisplayerCanvas::zoom100)); |
104 sigc::mem_fun(*(this->gd_canvas), &GraphDisplayerCanvas::zoom100)); |
102 |
105 |
103 ag->add( Gtk::Action::create("ShowMenu", "_Show") ); |
106 ag->add( Gtk::Action::create("ShowMenu", "_Show") ); |
104 ag->add( Gtk::Action::create("ShowMaps", "_Maps"), |
107 ag->add( Gtk::Action::create("ShowMaps", "_Maps"), |
105 sigc::mem_fun(this->mapwin, &MapWin::show)); |
108 sigc::mem_fun(*(this->mapwin), &MapWin::show)); |
106 |
109 |
107 Gtk::RadioAction::Group tool_group; |
110 Gtk::RadioAction::Group tool_group; |
108 ag->add( Gtk::RadioAction::create(tool_group, "MoveItem", Gtk::StockID("gd-move"), "Move"), |
111 ag->add( Gtk::RadioAction::create(tool_group, "MoveItem", Gtk::StockID("gd-move"), "Move"), |
109 sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 0) ); |
112 sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 0) ); |
110 ag->add( Gtk::RadioAction::create(tool_group, "CreateNode", Gtk::StockID("gd-addnode"), "Create node"), |
113 ag->add( Gtk::RadioAction::create(tool_group, "CreateNode", Gtk::StockID("gd-addnode"), "Create node"), |
111 sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 1) ); |
114 sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 1) ); |
112 ag->add( Gtk::RadioAction::create(tool_group, "CreateEdge", Gtk::StockID("gd-addlink"), "Create edge"), |
115 ag->add( Gtk::RadioAction::create(tool_group, "CreateEdge", Gtk::StockID("gd-addlink"), "Create edge"), |
113 sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 2) ); |
116 sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 2) ); |
114 ag->add( Gtk::RadioAction::create(tool_group, "EraseItem", Gtk::StockID("gd-delete"), "Delete"), |
117 ag->add( Gtk::RadioAction::create(tool_group, "EraseItem", Gtk::StockID("gd-delete"), "Delete"), |
115 sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 3) ); |
118 sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 3) ); |
116 |
119 |
117 ag->add( Gtk::RadioAction::create(tool_group, "EditEdgeMap", Gtk::StockID("gd-editlink"), "Edit edge map"), |
120 ag->add( Gtk::RadioAction::create(tool_group, "EditEdgeMap", Gtk::StockID("gd-editlink"), "Edit edge map"), |
118 sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 4) ); |
121 sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 4) ); |
119 ag->add( Gtk::RadioAction::create(tool_group, "EditNodeMap", Gtk::StockID("gd-editnode"), "Edit node map"), |
122 ag->add( Gtk::RadioAction::create(tool_group, "EditNodeMap", Gtk::StockID("gd-editnode"), "Edit node map"), |
120 sigc::bind( sigc::mem_fun ( this->gd_canvas, &GraphDisplayerCanvas::changeEditorialTool ), 5) ); |
123 sigc::bind( sigc::mem_fun ( *(this->gd_canvas), &GraphDisplayerCanvas::changeEditorialTool ), 5) ); |
121 |
124 |
122 ag->add( Gtk::Action::create("AddMap", Gtk::StockID("gd-newmap")), |
125 ag->add( Gtk::Action::create("AddMap", Gtk::StockID("gd-newmap")), |
123 sigc::mem_fun (new NewMapWin("NewMapWin", gd_canvas), &NewMapWin::show ) ); |
126 sigc::mem_fun (new NewMapWin("NewMapWin", *this), &NewMapWin::show ) ); |
124 |
127 |
125 uim=Gtk::UIManager::create(); |
128 uim=Gtk::UIManager::create(); |
126 uim->insert_action_group(ag); |
129 uim->insert_action_group(ag); |
127 add_accel_group(uim->get_accel_group()); |
130 add_accel_group(uim->get_accel_group()); |
128 |
131 |
192 vbox.pack_start(*toolbar, Gtk::PACK_SHRINK); |
195 vbox.pack_start(*toolbar, Gtk::PACK_SHRINK); |
193 } |
196 } |
194 |
197 |
195 Gtk::ScrolledWindow* pScrolledWindow = manage(new Gtk::ScrolledWindow()); |
198 Gtk::ScrolledWindow* pScrolledWindow = manage(new Gtk::ScrolledWindow()); |
196 pScrolledWindow->set_shadow_type(Gtk::SHADOW_IN); |
199 pScrolledWindow->set_shadow_type(Gtk::SHADOW_IN); |
197 pScrolledWindow->add(gd_canvas); |
200 pScrolledWindow->add(*gd_canvas); |
198 vbox.pack_start(*pScrolledWindow); |
201 vbox.pack_start(*pScrolledWindow); |
199 |
202 |
200 tooltips.set_tip(*(uim->get_widget("/ToolBar/CreateNode")),"Create Node"); |
203 tooltips.set_tip(*(uim->get_widget("/ToolBar/CreateNode")),"Create Node"); |
201 tooltips.enable(); |
204 tooltips.enable(); |
202 |
205 |
206 void MainWin::readFile(const std::string &file) |
209 void MainWin::readFile(const std::string &file) |
207 { |
210 { |
208 mapstorage.readFromFile(file); |
211 mapstorage.readFromFile(file); |
209 mapstorage.file_name = file; |
212 mapstorage.file_name = file; |
210 mapstorage.modified = false; |
213 mapstorage.modified = false; |
211 gd_canvas.drawGraph(); |
214 gd_canvas->drawGraph(); |
212 mapwin.update(); |
215 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList()); |
213 set_title(Glib::filename_display_basename(file) + " - " + prog_name); |
216 set_title(Glib::filename_display_basename(file) + " - " + prog_name); |
214 } |
217 } |
215 |
218 |
216 void MainWin::newFile() |
219 void MainWin::newFile() |
217 { |
220 { |
231 case Gtk::RESPONSE_ACCEPT: |
234 case Gtk::RESPONSE_ACCEPT: |
232 saveFile(); |
235 saveFile(); |
233 break; |
236 break; |
234 } |
237 } |
235 } |
238 } |
236 gd_canvas.clear(); |
239 gd_canvas->clear(); |
237 mapstorage.clear(); |
240 mapstorage.clear(); |
238 mapwin.update(); |
241 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList()); |
239 set_title("unsaved file - " + prog_name); |
242 set_title("unsaved file - " + prog_name); |
240 } |
243 } |
241 |
244 |
242 void MainWin::openFile() |
245 void MainWin::openFile() |
243 { |
246 { |
262 Gtk::FileChooserDialog fcdialog("Open File"); |
265 Gtk::FileChooserDialog fcdialog("Open File"); |
263 fcdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); |
266 fcdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); |
264 fcdialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT); |
267 fcdialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT); |
265 if (fcdialog.run() == Gtk::RESPONSE_ACCEPT) |
268 if (fcdialog.run() == Gtk::RESPONSE_ACCEPT) |
266 { |
269 { |
267 gd_canvas.clear(); |
270 gd_canvas->clear(); |
268 mapstorage.clear(); |
271 mapstorage.clear(); |
269 Glib::ustring filename = fcdialog.get_filename(); |
272 Glib::ustring filename = fcdialog.get_filename(); |
270 if (!mapstorage.readFromFile(filename)) |
273 if (!mapstorage.readFromFile(filename)) |
271 { |
274 { |
272 mapstorage.file_name = filename; |
275 mapstorage.file_name = filename; |
273 mapstorage.modified = false; |
276 mapstorage.modified = false; |
274 gd_canvas.drawGraph(); |
277 gd_canvas->drawGraph(); |
275 mapwin.update(); |
278 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList()); |
276 set_title(Glib::filename_display_basename(filename) + " - " + prog_name); |
279 set_title(Glib::filename_display_basename(filename) + " - " + prog_name); |
277 } |
280 } |
278 } |
281 } |
279 } |
282 } |
280 |
283 |
325 case Gtk::RESPONSE_ACCEPT: |
328 case Gtk::RESPONSE_ACCEPT: |
326 saveFile(); |
329 saveFile(); |
327 break; |
330 break; |
328 } |
331 } |
329 } |
332 } |
330 gd_canvas.clear(); |
333 gd_canvas->clear(); |
331 mapstorage.clear(); |
334 mapstorage.clear(); |
332 mapwin.update(); |
335 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList()); |
333 set_title("unsaved file - " + prog_name); |
336 set_title("unsaved file - " + prog_name); |
334 } |
337 } |
338 |
|
339 void MainWin::propertyChange(bool itisedge, int prop, std::string mapname) |
|
340 { |
|
341 mapstorage.changeActiveMap(itisedge, prop, mapname); |
|
342 } |
|
343 |
|
344 void MainWin::popupNewMapWin(bool itisedge, int prop) |
|
345 { |
|
346 prop=prop; |
|
347 (new NewMapWin("NewMapWin", *this, itisedge, false))->run(); |
|
348 } |
|
349 |
|
350 std::string MainWin::getActiveEdgeMap(int prop) |
|
351 { |
|
352 return mapstorage.getActiveEdgeMap(prop); |
|
353 } |
|
354 |
|
355 std::string MainWin::getActiveNodeMap(int prop) |
|
356 { |
|
357 return mapstorage.getActiveNodeMap(prop); |
|
358 } |
|
359 |
|
360 void MainWin::registerNewEdgeMap(std::string mapname) |
|
361 { |
|
362 mapwin->registerNewEdgeMap(mapname); |
|
363 } |
|
364 |
|
365 void MainWin::registerNewNodeMap(std::string mapname) |
|
366 { |
|
367 mapwin->registerNewNodeMap(mapname); |
|
368 } |