vmap.h: Enables one to create maps with a virtual base class.
3 NoteBookTab::NoteBookTab():mapwinexists(false)
5 gd_canvas=new GraphDisplayerCanvas(*this);
8 //connecting signals - controller character
9 mapstorage.signal_prop_ch().connect(sigc::mem_fun(*gd_canvas, &GraphDisplayerCanvas::propertyChange));
10 mapstorage.signal_node_map_ch().connect(sigc::mem_fun(*this, &NoteBookTab::registerNewNodeMap));
11 mapstorage.signal_edge_map_ch().connect(sigc::mem_fun(*this, &NoteBookTab::registerNewEdgeMap));
16 void NoteBookTab::readFile(const std::string &file)
18 mapstorage.readFromFile(file);
19 mapstorage.file_name = file;
20 mapstorage.modified = false;
21 gd_canvas->drawGraph();
24 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
26 signal_title.emit(Glib::filename_display_basename(file));
29 void NoteBookTab::newFile()
31 if (mapstorage.modified)
33 Gtk::MessageDialog mdialog("<b>Save changes before closing?</b>", true,
34 Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE);
35 mdialog.add_button("Close file _without Saving", Gtk::RESPONSE_REJECT);
36 mdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
37 mdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
38 switch (mdialog.run())
40 case Gtk::RESPONSE_CANCEL:
42 case Gtk::RESPONSE_REJECT:
44 case Gtk::RESPONSE_ACCEPT:
53 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
55 signal_title.emit("unsaved file");
58 void NoteBookTab::openFile()
60 if (mapstorage.modified)
62 Gtk::MessageDialog mdialog("<b>Save changes before closing?</b>", true,
63 Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE);
64 mdialog.add_button("Close file _without Saving", Gtk::RESPONSE_REJECT);
65 mdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
66 mdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
67 switch (mdialog.run())
69 case Gtk::RESPONSE_CANCEL:
71 case Gtk::RESPONSE_REJECT:
73 case Gtk::RESPONSE_ACCEPT:
78 Gtk::FileChooserDialog fcdialog("Open File");
79 fcdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
80 fcdialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT);
81 if (fcdialog.run() == Gtk::RESPONSE_ACCEPT)
85 Glib::ustring filename = fcdialog.get_filename();
86 if (!mapstorage.readFromFile(filename))
88 mapstorage.file_name = filename;
89 mapstorage.modified = false;
90 gd_canvas->drawGraph();
93 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
95 signal_title.emit(Glib::filename_display_basename(filename));
100 void NoteBookTab::saveFile()
102 if (mapstorage.file_name == "") {
107 mapstorage.writeToFile(mapstorage.file_name);
108 mapstorage.modified = false;
109 signal_title.emit(Glib::filename_display_basename(mapstorage.file_name));
113 void NoteBookTab::saveFileAs()
115 Gtk::FileChooserDialog fcdialog("Save File", Gtk::FILE_CHOOSER_ACTION_SAVE);
116 fcdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
117 fcdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
118 if (fcdialog.run() == Gtk::RESPONSE_ACCEPT)
120 Glib::ustring filename = fcdialog.get_filename();
121 mapstorage.file_name = filename;
122 mapstorage.writeToFile(filename);
123 mapstorage.modified = false;
124 signal_title.emit(Glib::filename_display_basename(filename));
128 void NoteBookTab::close()
130 if (mapstorage.modified)
132 Gtk::MessageDialog mdialog("<b>Save changes before closing?</b>", true,
133 Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE);
134 mdialog.add_button("Close _without Saving", Gtk::RESPONSE_REJECT);
135 mdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
136 mdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
137 switch (mdialog.run())
139 case Gtk::RESPONSE_CANCEL:
141 case Gtk::RESPONSE_REJECT:
143 case Gtk::RESPONSE_ACCEPT:
152 mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList());
154 signal_title.emit("unsaved file");
157 void NoteBookTab::propertyChange(bool itisedge, int prop, std::string mapname)
159 mapstorage.changeActiveMap(itisedge, prop, mapname);
162 sigc::signal<void, NoteBookTab *, bool> NoteBookTab::signal_newmap_needed()
164 return signal_newmap;
167 void NoteBookTab::popupNewMapWin(bool itisedge)
169 signal_newmap.emit(this, itisedge);
172 std::string NoteBookTab::getActiveEdgeMap(int prop)
174 return mapstorage.getActiveEdgeMap(prop);
177 std::string NoteBookTab::getActiveNodeMap(int prop)
179 return mapstorage.getActiveNodeMap(prop);
182 void NoteBookTab::registerNewEdgeMap(std::string mapname)
186 mapwin->registerNewEdgeMap(mapname);
190 void NoteBookTab::registerNewNodeMap(std::string mapname)
194 mapwin->registerNewNodeMap(mapname);
198 void NoteBookTab::createMapWin(std::string name)
202 mapwin=new MapWin("Map Setup - "+name, mapstorage.getEdgeMapList(), mapstorage.getNodeMapList(), *this);
208 void NoteBookTab::closeMapWin()
214 sigc::signal<void, std::string> NoteBookTab::signal_title_ch()