diff -r 291764ce6d91 -r a4d1362397fe gui/nbtab.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gui/nbtab.cc Tue Dec 06 10:53:38 2005 +0000 @@ -0,0 +1,217 @@ +#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; +} +