#include NoteBookTab::NoteBookTab():mapwinexists(false) { gd_canvas=new GraphDisplayerCanvas(*this); add(*gd_canvas); //connecting signals - controller character mapstorage.signal_prop_ch().connect(sigc::mem_fun(*gd_canvas, &GraphDisplayerCanvas::propertyChange)); show_all_children(); show(); } void NoteBookTab::readFile(const std::string &file) { mapstorage.readFromFile(file); mapstorage.file_name = file; mapstorage.modified = false; gd_canvas->drawGraph(); if(mapwinexists) { mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList()); } signal_title.emit(Glib::filename_display_basename(file)); } void NoteBookTab::newFile() { if (mapstorage.modified) { Gtk::MessageDialog mdialog("Save changes before closing?", true, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE); mdialog.add_button("Close _without Saving", Gtk::RESPONSE_REJECT); mdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); mdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); switch (mdialog.run()) { case Gtk::RESPONSE_CANCEL: return; case Gtk::RESPONSE_REJECT: break; case Gtk::RESPONSE_ACCEPT: saveFile(); break; } } gd_canvas->clear(); mapstorage.clear(); if(mapwinexists) { mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList()); } signal_title.emit("unsaved file"); } void NoteBookTab::openFile() { if (mapstorage.modified) { Gtk::MessageDialog mdialog("Save changes before closing?", true, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE); mdialog.add_button("Close _without Saving", Gtk::RESPONSE_REJECT); mdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); mdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); switch (mdialog.run()) { case Gtk::RESPONSE_CANCEL: return; case Gtk::RESPONSE_REJECT: break; case Gtk::RESPONSE_ACCEPT: saveFile(); break; } } Gtk::FileChooserDialog fcdialog("Open File"); fcdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); fcdialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT); if (fcdialog.run() == Gtk::RESPONSE_ACCEPT) { gd_canvas->clear(); mapstorage.clear(); Glib::ustring filename = fcdialog.get_filename(); if (!mapstorage.readFromFile(filename)) { mapstorage.file_name = filename; mapstorage.modified = false; gd_canvas->drawGraph(); if(mapwinexists) { mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList()); } signal_title.emit(Glib::filename_display_basename(filename)); } } } void NoteBookTab::saveFile() { if (mapstorage.file_name == "") { saveFileAs(); } else { mapstorage.writeToFile(mapstorage.file_name); mapstorage.modified = false; signal_title.emit(Glib::filename_display_basename(mapstorage.file_name)); } } void NoteBookTab::saveFileAs() { Gtk::FileChooserDialog fcdialog("Save File", Gtk::FILE_CHOOSER_ACTION_SAVE); fcdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); fcdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); if (fcdialog.run() == Gtk::RESPONSE_ACCEPT) { Glib::ustring filename = fcdialog.get_filename(); mapstorage.file_name = filename; mapstorage.writeToFile(filename); mapstorage.modified = false; signal_title.emit(Glib::filename_display_basename(filename)); } } void NoteBookTab::close() { if (mapstorage.modified) { Gtk::MessageDialog mdialog("Save changes before closing?", true, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE); mdialog.add_button("Close _without Saving", Gtk::RESPONSE_REJECT); mdialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); mdialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); switch (mdialog.run()) { case Gtk::RESPONSE_CANCEL: return; case Gtk::RESPONSE_REJECT: break; case Gtk::RESPONSE_ACCEPT: saveFile(); break; } } gd_canvas->clear(); mapstorage.clear(); if(mapwinexists) { mapwin->update(mapstorage.getEdgeMapList(), mapstorage.getNodeMapList()); } signal_title.emit("unsaved file"); } void NoteBookTab::propertyChange(bool itisedge, int prop, std::string mapname) { mapstorage.changeActiveMap(itisedge, prop, mapname); } sigc::signal NoteBookTab::signal_newmap_needed() { return signal_newmap; } void NoteBookTab::popupNewMapWin(bool itisedge, int prop) { prop=prop; signal_newmap.emit(this, itisedge); } std::string NoteBookTab::getActiveEdgeMap(int prop) { return mapstorage.getActiveEdgeMap(prop); } std::string NoteBookTab::getActiveNodeMap(int prop) { return mapstorage.getActiveNodeMap(prop); } void NoteBookTab::registerNewEdgeMap(std::string mapname) { if(mapwinexists) { mapwin->registerNewEdgeMap(mapname); } } void NoteBookTab::registerNewNodeMap(std::string mapname) { if(mapwinexists) { mapwin->registerNewNodeMap(mapname); } } void NoteBookTab::createMapWin(std::string name) { if(!mapwinexists) { mapwin=new MapWin("Map Setup - "+name, mapstorage.getEdgeMapList(), mapstorage.getNodeMapList(), *this); mapwin->show(); mapwinexists=true; } } void NoteBookTab::closeMapWin() { mapwinexists=false; delete mapwin; } sigc::signal NoteBookTab::signal_title_ch() { return signal_title; }