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