alpar@174: /* -*- C++ -*- alpar@174: * alpar@174: * This file is a part of LEMON, a generic C++ optimization library alpar@174: * alpar@174: * Copyright (C) 2003-2006 alpar@174: * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport alpar@174: * (Egervary Research Group on Combinatorial Optimization, EGRES). alpar@174: * alpar@174: * Permission to use, modify and distribute this software is granted alpar@174: * provided that this copyright notice appears in all copies. For alpar@174: * precise terms see the accompanying LICENSE file. alpar@174: * alpar@174: * This software is provided "AS IS" with no warranty of any kind, alpar@174: * express or implied, and with no claim as to its suitability for any alpar@174: * purpose. alpar@174: * alpar@174: */ alpar@174: ladanyi@53: #include "map_win.h" ladanyi@6: #include ladanyi@6: hegyi@30: bool MapWin::closeIfEscapeIsPressed(GdkEventKey* e) ladanyi@6: { hegyi@8: if(e->keyval==GDK_Escape) hegyi@8: { hegyi@96: mytab.closeMapWin(); hegyi@95: // hide(); hegyi@8: } hegyi@8: return true; hegyi@8: } ladanyi@6: hegyi@96: MapWin::MapWin(const std::string& title, std::vector eml, std::vector nml, NoteBookTab & mw):mytab(mw) hegyi@8: { hegyi@8: set_title(title); hegyi@8: set_default_size(200, 50); ladanyi@6: hegyi@146: set_resizable(false); hegyi@146: hegyi@30: signal_key_press_event().connect(sigc::mem_fun(*this, &MapWin::closeIfEscapeIsPressed)); ladanyi@6: hegyi@172: mytab.signal_title_ch().connect(sigc::mem_fun(*this, &MapWin::set_title)); hegyi@172: hegyi@81: e_combo_array=new MapSelector * [EDGE_PROPERTY_NUM]; hegyi@8: hegyi@81: table=new Gtk::Table(EDGE_PROPERTY_NUM, 1, false); hegyi@28: hegyi@28: for(int i=0;isignal_cbt_ch().connect(sigc::bind(sigc::mem_fun(*this, &MapWin::edgeMapChanged), i)); hegyi@121: e_combo_array[i]->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &MapWin::newMapWinNeeded)); ladanyi@6: } ladanyi@6: hegyi@28: vbox.pack_start(*(new Gtk::Label("Edge properties"))); hegyi@8: hegyi@28: vbox.pack_start(*table); hegyi@28: hegyi@28: vbox.pack_start(*(new Gtk::HSeparator)); hegyi@28: hegyi@81: n_combo_array=new MapSelector * [NODE_PROPERTY_NUM]; hegyi@28: hegyi@81: table=new Gtk::Table(NODE_PROPERTY_NUM, 1, false); hegyi@28: hegyi@28: for(int i=0;isignal_cbt_ch().connect(sigc::bind(sigc::mem_fun(*this, &MapWin::nodeMapChanged), i)); hegyi@121: n_combo_array[i]->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &MapWin::newMapWinNeeded)); hegyi@28: } hegyi@28: hegyi@28: add(vbox); hegyi@28: hegyi@28: vbox.pack_start(*(new Gtk::Label("Node properties"))); hegyi@28: hegyi@28: vbox.pack_start(*table); ladanyi@6: ladanyi@6: show_all_children(); ladanyi@6: ladanyi@6: } ladanyi@6: hegyi@94: void MapWin::nodeMapChanged(std::string mapname, int prop) hegyi@94: { hegyi@96: mytab.propertyChange(false, prop, mapname); hegyi@94: } hegyi@94: hegyi@94: void MapWin::edgeMapChanged(std::string mapname, int prop) hegyi@94: { hegyi@96: mytab.propertyChange(true, prop, mapname); hegyi@94: } hegyi@94: hegyi@121: void MapWin::newMapWinNeeded(bool itisedge) hegyi@94: { hegyi@121: mytab.popupNewMapWin(itisedge); hegyi@94: } hegyi@94: hegyi@94: void MapWin::update(std::vector eml, std::vector nml) ladanyi@53: { ladanyi@53: for(int i=0;iupdate_list(eml); hegyi@81: } ladanyi@53: ladanyi@53: for(int i=0;iupdate_list(nml); ladanyi@53: } hegyi@172: hegyi@172: mytab.active_maps_needed(); ladanyi@53: } ladanyi@53: hegyi@40: void MapWin::registerNewEdgeMap(std::string newmapname) hegyi@38: { hegyi@40: for(int i=0;iappend_text((Glib::ustring)newmapname); hegyi@40: } hegyi@38: } hegyi@38: hegyi@40: void MapWin::registerNewNodeMap(std::string newmapname) hegyi@38: { hegyi@41: for(int i=0;iappend_text((Glib::ustring)newmapname); hegyi@40: } hegyi@38: } hegyi@95: hegyi@95: bool MapWin::on_delete_event(GdkEventAny * event) hegyi@95: { hegyi@95: event=event; hegyi@96: mytab.closeMapWin(); hegyi@95: return true; hegyi@95: } hegyi@172: hegyi@172: void MapWin::changeEntry(bool isitedge, int prop, std::string mapname) hegyi@172: { hegyi@172: if(isitedge) hegyi@172: { hegyi@172: e_combo_array[prop]->set_active_text(mapname); hegyi@172: } hegyi@172: else hegyi@172: { hegyi@172: n_combo_array[prop]->set_active_text(mapname); hegyi@172: } hegyi@172: } hegyi@172: hegyi@172: void MapWin::set_title(std::string tabname) hegyi@172: { hegyi@172: Gtk::Window::set_title("Map Setup - "+tabname); hegyi@172: }