Added two new classes.
2 #include "file_chooser_extra_widget.h"
4 NoteBookTab::NoteBookTab():mapwinexists(false), designwinexists(false)
6 Gtk::ScrolledWindow *pScrolledWindow = manage(new Gtk::ScrolledWindow);
7 gd_canvas=new GraphDisplayerCanvas(*this);
8 pScrolledWindow->add(*gd_canvas);
11 //connecting signals - controller character
12 mapstorage.signal_prop_ch().connect(sigc::mem_fun(*gd_canvas, &GraphDisplayerCanvas::propertyChange));
13 mapstorage.signal_node_map_ch().connect(sigc::mem_fun(*this, &NoteBookTab::registerNewNodeMap));
14 mapstorage.signal_edge_map_ch().connect(sigc::mem_fun(*this, &NoteBookTab::registerNewEdgeMap));
19 void NoteBookTab::readFile(const std::string &file)
21 mapstorage.readFromFile(file);
22 mapstorage.file_name = file;
23 mapstorage.modified = false;
24 gd_canvas->drawGraph();
27 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
29 signal_title.emit(Glib::filename_display_basename(file));
32 void NoteBookTab::newFile()
34 if (mapstorage.modified)
36 Gtk::MessageDialog mdialog("<b>Save changes before closing?</b>", true,
37 Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE);
38 mdialog.add_button("Close file _without Saving", Gtk::RESPONSE_REJECT);
39 mdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
40 mdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
41 switch (mdialog.run())
43 case Gtk::RESPONSE_CANCEL:
45 case Gtk::RESPONSE_REJECT:
47 case Gtk::RESPONSE_ACCEPT:
56 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
58 signal_title.emit("unsaved file");
61 void NoteBookTab::openFile()
63 if (mapstorage.modified)
65 Gtk::MessageDialog mdialog("<b>Save changes before closing?</b>", true,
66 Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE);
67 mdialog.add_button("Close file _without Saving", Gtk::RESPONSE_REJECT);
68 mdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
69 mdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
70 switch (mdialog.run())
72 case Gtk::RESPONSE_CANCEL:
74 case Gtk::RESPONSE_REJECT:
76 case Gtk::RESPONSE_ACCEPT:
81 Gtk::FileChooserDialog fcdialog("Open File");
82 fcdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
83 fcdialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT);
84 if (fcdialog.run() == Gtk::RESPONSE_ACCEPT)
88 Glib::ustring filename = fcdialog.get_filename();
89 if (!mapstorage.readFromFile(filename))
91 mapstorage.file_name = filename;
92 mapstorage.modified = false;
93 gd_canvas->drawGraph();
96 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
98 signal_title.emit(Glib::filename_display_basename(filename));
103 void NoteBookTab::saveFile()
105 if (mapstorage.file_name == "") {
110 mapstorage.writeToFile(mapstorage.file_name);
111 mapstorage.modified = false;
112 signal_title.emit(Glib::filename_display_basename(mapstorage.file_name));
116 void NoteBookTab::saveFileAs()
118 Gtk::FileChooserDialog fcdialog("Save File", Gtk::FILE_CHOOSER_ACTION_SAVE);
119 fcdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
120 fcdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
121 FileChooserExtraWidget w(&mapstorage);
122 fcdialog.set_extra_widget(w);
123 if (fcdialog.run() == Gtk::RESPONSE_ACCEPT)
125 Glib::ustring filename = fcdialog.get_filename();
126 mapstorage.file_name = filename;
127 mapstorage.writeToFile(filename);
128 mapstorage.modified = false;
129 signal_title.emit(Glib::filename_display_basename(filename));
133 void NoteBookTab::close()
135 if (mapstorage.modified)
137 Gtk::MessageDialog mdialog("<b>Save changes before closing?</b>", true,
138 Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE);
139 mdialog.add_button("Close _without Saving", Gtk::RESPONSE_REJECT);
140 mdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
141 mdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
142 switch (mdialog.run())
144 case Gtk::RESPONSE_CANCEL:
146 case Gtk::RESPONSE_REJECT:
148 case Gtk::RESPONSE_ACCEPT:
157 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
159 signal_title.emit("unsaved file");
162 void NoteBookTab::propertyChange(bool itisedge, int prop, std::string mapname)
164 mapstorage.changeActiveMap(itisedge, prop, mapname);
167 sigc::signal<void, NoteBookTab *, bool> NoteBookTab::signal_newmap_needed()
169 return signal_newmap;
172 void NoteBookTab::popupNewMapWin(bool itisedge)
174 signal_newmap.emit(this, itisedge);
177 std::string NoteBookTab::getActiveEdgeMap(int prop)
179 return mapstorage.getActiveEdgeMap(prop);
182 std::string NoteBookTab::getActiveNodeMap(int prop)
184 return mapstorage.getActiveNodeMap(prop);
187 void NoteBookTab::registerNewEdgeMap(std::string mapname)
191 mapwin->registerNewEdgeMap(mapname);
195 void NoteBookTab::registerNewNodeMap(std::string mapname)
199 mapwin->registerNewNodeMap(mapname);
203 void NoteBookTab::createMapWin(std::string name)
207 mapwin=new MapWin("Map Setup - "+name, mapstorage.getEdgeMapList(), mapstorage.getNodeMapList(), *this);
208 mapst2mapwin=mapstorage.signal_map_win_ch().connect(sigc::mem_fun(*mapwin, &MapWin::changeEntry));
214 void NoteBookTab::createDesignWin(std::string name)
218 double attraction, propulsation;
220 gd_canvas->get_design_data(attraction, propulsation, iterations);
221 designwin=new DesignWin("Design Setup - "+name, attraction, propulsation, iterations, *this);
223 designwin->signal_attraction().connect(sigc::mem_fun(*this, &NoteBookTab::attraction_ch));
224 designwin->signal_propulsation().connect(sigc::mem_fun(*this, &NoteBookTab::propulsation_ch));
225 designwin->signal_iteration().connect(sigc::mem_fun(*gd_canvas, &GraphDisplayerCanvas::set_iteration));
226 designwin->close_run().connect(sigc::mem_fun(*gd_canvas, &GraphDisplayerCanvas::reDesignGraph));
228 designwin->signal_delete_event().connect(sigc::mem_fun(*this, &NoteBookTab::closeDesignWin));
231 designwinexists=true;
235 void NoteBookTab::closeMapWin()
237 mapst2mapwin.disconnect();
242 bool NoteBookTab::closeDesignWin(GdkEventAny * e)
244 if(e->type==GDK_DELETE)
246 designwinexists=false;
251 sigc::signal<void, std::string> NoteBookTab::signal_title_ch()
256 void NoteBookTab::setView(bool autoscale, bool zoomtrack, double width, double radius)
258 gd_canvas->setView(autoscale, zoomtrack, width, radius);
261 void NoteBookTab::getView(bool & autoscale, bool & zoomtrack, double& width, double& radius)
263 gd_canvas->getView(autoscale, zoomtrack, width, radius);
266 void NoteBookTab::reDesignGraph()
268 gd_canvas->reDesignGraph();
271 void NoteBookTab::attraction_ch(double v)
273 gd_canvas->set_attraction(v);
276 void NoteBookTab::propulsation_ch(double v)
278 gd_canvas->set_propulsation(v);
281 void NoteBookTab::iteration_ch(int v)
283 gd_canvas->set_iteration(v);
286 void NoteBookTab::active_maps_needed()
288 mapstorage.broadcastActiveMaps();