[Lemon-commits] ladanyi: r3354 - glemon/branches/akos
Lemon SVN
svn at lemon.cs.elte.hu
Fri Nov 2 04:14:37 CET 2007
Author: ladanyi
Date: Fri Nov 2 04:14:35 2007
New Revision: 3354
Modified:
glemon/branches/akos/mapstorage.cc
glemon/branches/akos/mapstorage.h
glemon/branches/akos/save_details_dialog.cc
glemon/branches/akos/save_details_widget.cc
glemon/branches/akos/save_details_widget.h
Log:
Improved save details dialog.
Modified: glemon/branches/akos/mapstorage.cc
==============================================================================
--- glemon/branches/akos/mapstorage.cc (original)
+++ glemon/branches/akos/mapstorage.cc Fri Nov 2 04:14:35 2007
@@ -34,10 +34,18 @@
MapStorage::MapStorage() :
gui_sect_save_dest(LGF_FILE),
+ node_coords_save_dest(SpecMapSaveOpts::GUI_SECT),
+ arrow_coords_save_dest(SpecMapSaveOpts::GUI_SECT),
modified(false),
file_name(""),
max_node_label(0),
max_edge_label(0),
+ node_coords_one_map_name("coord"),
+ node_coords_two_maps_1_name("coord_x"),
+ node_coords_two_maps_2_name("coord_y"),
+ arrow_coords_one_map_name("arrow"),
+ arrow_coords_two_maps_1_name("arrow_x"),
+ arrow_coords_two_maps_2_name("arrow_y"),
iterations(i_d),
attraction(a_d),
propulsation(p_d),
@@ -1037,35 +1045,35 @@
return edge_label[e];
}
-MapStorage::GuiSectSaveDestination MapStorage::getGUIDataSaveLocation()
+MapStorage::GuiSectSaveDest MapStorage::getGUIDataSaveLocation()
{
return gui_sect_save_dest;
}
-void MapStorage::setGUIDataSaveLocation(MapStorage::GuiSectSaveDestination dest)
+void MapStorage::setGUIDataSaveLocation(MapStorage::GuiSectSaveDest dest)
{
gui_sect_save_dest = dest;
}
-MapStorage::MapSaveDestination MapStorage::getNodeMapSaveDest(std::string name) const
+MapStorage::MapSaveDest MapStorage::getNodeMapSaveDest(std::string name) const
{
NodeMapData *data = getNodeMapData(name);
return data->save_dest;
}
-MapStorage::MapSaveDestination MapStorage::getEdgeMapSaveDest(std::string name) const
+MapStorage::MapSaveDest MapStorage::getEdgeMapSaveDest(std::string name) const
{
EdgeMapData *data = getEdgeMapData(name);
return data->save_dest;
}
-void MapStorage::setNodeMapSaveDest(std::string name, MapStorage::MapSaveDestination dest)
+void MapStorage::setNodeMapSaveDest(std::string name, MapStorage::MapSaveDest dest)
{
NodeMapData *data = getNodeMapData(name);
data->save_dest = dest;
}
-void MapStorage::setEdgeMapSaveDest(std::string name, MapStorage::MapSaveDestination dest)
+void MapStorage::setEdgeMapSaveDest(std::string name, MapStorage::MapSaveDest dest)
{
EdgeMapData *data = getEdgeMapData(name);
data->save_dest = dest;
@@ -1242,3 +1250,95 @@
{
return arrow_coords;
}
+
+MapStorage::SpecMapSaveOpts::Dest MapStorage::getNodeCoordsSaveDest()
+{
+ return node_coords_save_dest;
+}
+
+MapStorage::SpecMapSaveOpts::Dest MapStorage::getArrowCoordsSaveDest()
+{
+ return arrow_coords_save_dest;
+}
+
+void MapStorage::setNodeCoordsSaveDest(MapStorage::SpecMapSaveOpts::Dest dest)
+{
+ node_coords_save_dest = dest;
+}
+
+void MapStorage::setArrowCoordsSaveDest(MapStorage::SpecMapSaveOpts::Dest dest)
+{
+ arrow_coords_save_dest = dest;
+}
+
+MapStorage::SpecMapSaveOpts::MapNum MapStorage::getNodeCoordsSaveMapNum()
+{
+ return node_coords_save_map_num;
+}
+
+MapStorage::SpecMapSaveOpts::MapNum MapStorage::getArrowCoordsSaveMapNum()
+{
+ return arrow_coords_save_map_num;
+}
+
+void MapStorage::setNodeCoordsSaveMapNum(MapStorage::SpecMapSaveOpts::MapNum num)
+{
+ node_coords_save_map_num = num;
+}
+
+void MapStorage::setArrowCoordsSaveMapNum(MapStorage::SpecMapSaveOpts::MapNum num)
+{
+ arrow_coords_save_map_num = num;
+}
+
+const std::string& MapStorage::getNodeCoordsOneMapName()
+{
+ return node_coords_one_map_name;
+}
+const std::string& MapStorage::getNodeCoordsTwoMaps1Name()
+{
+ return node_coords_two_maps_1_name;
+}
+const std::string& MapStorage::getNodeCoordsTwoMaps2Name()
+{
+ return node_coords_two_maps_2_name;
+}
+
+void MapStorage::setNodeCoordsOneMapName(const std::string& name)
+{
+ node_coords_one_map_name = name;
+}
+void MapStorage::setNodeCoordsTwoMaps1Name(const std::string& name)
+{
+ node_coords_two_maps_1_name = name;
+}
+void MapStorage::setNodeCoordsTwoMaps2Name(const std::string& name)
+{
+ node_coords_two_maps_2_name = name;
+}
+
+const std::string& MapStorage::getArrowCoordsOneMapName()
+{
+ return arrow_coords_one_map_name;
+}
+const std::string& MapStorage::getArrowCoordsTwoMaps1Name()
+{
+ return arrow_coords_two_maps_1_name;
+}
+const std::string& MapStorage::getArrowCoordsTwoMaps2Name()
+{
+ return arrow_coords_two_maps_2_name;
+}
+
+void MapStorage::setArrowCoordsOneMapName(const std::string& name)
+{
+ arrow_coords_one_map_name = name;
+}
+void MapStorage::setArrowCoordsTwoMaps1Name(const std::string& name)
+{
+ arrow_coords_two_maps_1_name = name;
+}
+void MapStorage::setArrowCoordsTwoMaps2Name(const std::string& name)
+{
+ arrow_coords_two_maps_2_name = name;
+}
Modified: glemon/branches/akos/mapstorage.h
==============================================================================
--- glemon/branches/akos/mapstorage.h (original)
+++ glemon/branches/akos/mapstorage.h Fri Nov 2 04:14:35 2007
@@ -60,8 +60,13 @@
}
};
- enum MapSaveDestination { GUI_SECT, NESET_SECT, DONT_SAVE };
- enum GuiSectSaveDestination { LGF_FILE, CONF_FILE };
+ enum MapSaveDest { GUI_SECT, NESET_SECT, DONT_SAVE };
+ enum GuiSectSaveDest { LGF_FILE, CONF_FILE };
+ struct SpecMapSaveOpts
+ {
+ enum Dest { GUI_SECT, NESET_SECT };
+ enum MapNum { ONE_MAP, TWO_MAPS };
+ };
typedef Graph::NodeMap<double> NumericNodeMap;
typedef Graph::NodeMap<std::string> StringNodeMap;
@@ -75,7 +80,7 @@
struct EdgeMapData
{
/// where to save the map
- MapSaveDestination save_dest;
+ MapSaveDest save_dest;
/// read-only or read-write
bool writeable;
/// default value
@@ -117,7 +122,7 @@
struct NodeMapData
{
/// where to save the map
- MapSaveDestination save_dest;
+ MapSaveDest save_dest;
/// read-only or read-write
bool writeable;
/// default value
@@ -214,7 +219,12 @@
const Graph& getGraph();
private:
- GuiSectSaveDestination gui_sect_save_dest;
+ GuiSectSaveDest gui_sect_save_dest;
+
+ SpecMapSaveOpts::Dest node_coords_save_dest;
+ SpecMapSaveOpts::MapNum node_coords_save_map_num;
+ SpecMapSaveOpts::Dest arrow_coords_save_dest;
+ SpecMapSaveOpts::MapNum arrow_coords_save_map_num;
NodeMapStore nodemaps;
EdgeMapStore edgemaps;
@@ -240,6 +250,14 @@
// the largest edge label
int max_edge_label;
+ std::string node_coords_one_map_name;
+ std::string node_coords_two_maps_1_name;
+ std::string node_coords_two_maps_2_name;
+
+ std::string arrow_coords_one_map_name;
+ std::string arrow_coords_two_maps_1_name;
+ std::string arrow_coords_two_maps_2_name;
+
public:
///Stores the default values for the different visualization node attributes
std::vector<Graph::NodeMap<double> > default_nodemaps;
@@ -411,13 +429,23 @@
int getLabel(Node) const;
int getLabel(Edge) const;
- GuiSectSaveDestination getGUIDataSaveLocation();
- void setGUIDataSaveLocation(GuiSectSaveDestination dest);
+ GuiSectSaveDest getGUIDataSaveLocation();
+ void setGUIDataSaveLocation(GuiSectSaveDest dest);
- MapSaveDestination getNodeMapSaveDest(std::string name) const;
- MapSaveDestination getEdgeMapSaveDest(std::string name) const;
- void setNodeMapSaveDest(std::string name, MapSaveDestination dest);
- void setEdgeMapSaveDest(std::string name, MapSaveDestination dest);
+ MapSaveDest getNodeMapSaveDest(std::string name) const;
+ MapSaveDest getEdgeMapSaveDest(std::string name) const;
+ void setNodeMapSaveDest(std::string name, MapSaveDest dest);
+ void setEdgeMapSaveDest(std::string name, MapSaveDest dest);
+
+ SpecMapSaveOpts::Dest getNodeCoordsSaveDest();
+ SpecMapSaveOpts::Dest getArrowCoordsSaveDest();
+ void setNodeCoordsSaveDest(SpecMapSaveOpts::Dest dest);
+ void setArrowCoordsSaveDest(SpecMapSaveOpts::Dest dest);
+
+ SpecMapSaveOpts::MapNum getNodeCoordsSaveMapNum();
+ SpecMapSaveOpts::MapNum getArrowCoordsSaveMapNum();
+ void setNodeCoordsSaveMapNum(SpecMapSaveOpts::MapNum num);
+ void setArrowCoordsSaveMapNum(SpecMapSaveOpts::MapNum num);
MapValue::Type getNodeMapElementType(std::string name) const;
MapValue::Type getEdgeMapElementType(std::string name) const;
@@ -434,6 +462,20 @@
NodeCoordMap& getNodeCoordMap();
ArrowCoordMap& getArrowCoordMap();
+ const std::string& getNodeCoordsOneMapName();
+ const std::string& getNodeCoordsTwoMaps1Name();
+ const std::string& getNodeCoordsTwoMaps2Name();
+ void setNodeCoordsOneMapName(const std::string& name);
+ void setNodeCoordsTwoMaps1Name(const std::string& name);
+ void setNodeCoordsTwoMaps2Name(const std::string& name);
+
+ const std::string& getArrowCoordsOneMapName();
+ const std::string& getArrowCoordsTwoMaps1Name();
+ const std::string& getArrowCoordsTwoMaps2Name();
+ void setArrowCoordsOneMapName(const std::string& name);
+ void setArrowCoordsTwoMaps1Name(const std::string& name);
+ void setArrowCoordsTwoMaps2Name(const std::string& name);
+
void dumpMaps();
private:
EdgeMapData* getEdgeMapData(std::string name) const;
Modified: glemon/branches/akos/save_details_dialog.cc
==============================================================================
--- glemon/branches/akos/save_details_dialog.cc (original)
+++ glemon/branches/akos/save_details_dialog.cc Fri Nov 2 04:14:35 2007
@@ -5,7 +5,7 @@
Gtk::Dialog("Save Details", true),
SaveDetails(ms)
{
- set_size_request(300, -1);
+ set_size_request(400, -1);
Gtk::VBox* pVBox = get_vbox();
pVBox->pack_start(SaveDetails, Gtk::PACK_SHRINK);
Modified: glemon/branches/akos/save_details_widget.cc
==============================================================================
--- glemon/branches/akos/save_details_widget.cc (original)
+++ glemon/branches/akos/save_details_widget.cc Fri Nov 2 04:14:35 2007
@@ -2,129 +2,412 @@
#include "mapstorage.h"
SaveDetailsWidget::SaveDetailsWidget(MapStorage* ms) :
- pMapStorage(ms),
- lblGuiSectionSave("<b>Save GUI section to</b>", 0.0, 0.5),
- lblMapsSave("<b>Save maps to</b>", 0.0, 0.5),
- rbLgfFile(".lgf file", true),
- rbConfFile("separate .conf file", true)
+ pMapStorage(ms)
{
- Gtk::RadioButtonGroup group = rbLgfFile.get_group();
- rbConfFile.set_group(group);
+ Gtk::Notebook* nb = Gtk::manage(new Gtk::Notebook);
+ pack_start(*nb, Gtk::PACK_EXPAND_WIDGET);
- lblGuiSectionSave.set_use_markup();
- lblMapsSave.set_use_markup();
+ nb->set_tab_pos(Gtk::POS_TOP);
- nbMaps.set_tab_pos(Gtk::POS_BOTTOM);
+ Gtk::VBox* vbNodeMaps = Gtk::manage(new Gtk::VBox(false, 18));
+ vbNodeMaps->set_border_width(12);
+
+ Gtk::VBox* vbEdgeMaps = Gtk::manage(new Gtk::VBox(false, 18));
+ vbEdgeMaps->set_border_width(12);
+
+ Gtk::VBox* vbSpecMaps = Gtk::manage(new Gtk::VBox(false, 18));
+ vbSpecMaps->set_border_width(12);
+
+ Gtk::VBox* vbGuiSect = Gtk::manage(new Gtk::VBox(false, 18));
+ vbGuiSect->set_border_width(12);
+
+ nb->append_page(*vbSpecMaps, "Special Maps");
+ nb->append_page(*vbNodeMaps, "Node Maps");
+ nb->append_page(*vbEdgeMaps, "Edge Maps");
+ nb->append_page(*vbGuiSect, "GUI Section");
+
+ // child widgets of vbSpecMaps
- switch (pMapStorage->getGUIDataSaveLocation())
{
- case MapStorage::LGF_FILE:
- rbLgfFile.set_active();
- break;
- case MapStorage::CONF_FILE:
- rbConfFile.set_active();
- break;
- }
+ Gtk::VBox* box1 = Gtk::manage(new Gtk::VBox(false, 6));
+ vbSpecMaps->pack_start(*box1, Gtk::PACK_SHRINK);
- pack_start(lblGuiSectionSave, Gtk::PACK_SHRINK);
- pack_start(box, Gtk::PACK_SHRINK);
+ Gtk::Label* lblNodeCoordMap =
+ Gtk::manage(new Gtk::Label("<b>Node Coordinates</b>"));
+ lblNodeCoordMap->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
+ lblNodeCoordMap->set_use_markup();
+ box1->pack_start(*lblNodeCoordMap, Gtk::PACK_SHRINK);
- box.pack_start(rbLgfFile, Gtk::PACK_SHRINK);
- box.pack_start(rbConfFile, Gtk::PACK_SHRINK);
+ Gtk::HBox* box2 = Gtk::manage(new Gtk::HBox);
+ box1->pack_start(*box2, Gtk::PACK_SHRINK);
- pack_start(lblMapsSave, Gtk::PACK_SHRINK);
- pack_start(nbMaps, Gtk::PACK_EXPAND_WIDGET);
+ Gtk::Label* fill1 = Gtk::manage(new Gtk::Label(" "));
+ box2->pack_start(*fill1, Gtk::PACK_SHRINK);
- nbMaps.append_page(swNodeMaps, "NodeMaps");
- nbMaps.append_page(swEdgeMaps, "EdgeMaps");
+ Gtk::VBox* box3 = Gtk::manage(new Gtk::VBox);
+ box2->pack_start(*box3, Gtk::PACK_SHRINK);
- swNodeMaps.add(twNodeMaps);
- swEdgeMaps.add(twEdgeMaps);
+ rbNodeCoordGuiSection.set_label("Save to GUI section");
+ rbNodeCoordNodesetSection.set_label("Save to Nodeset section");
+ Gtk::RadioButtonGroup group = rbNodeCoordGuiSection.get_group();
+ rbNodeCoordNodesetSection.set_group(group);
- refNodeMapStore = Gtk::ListStore::create(NodeMapColumns);
+ box3->pack_start(rbNodeCoordGuiSection, Gtk::PACK_SHRINK);
+ box3->pack_start(rbNodeCoordNodesetSection, Gtk::PACK_SHRINK);
- std::vector<std::string> node_maps = pMapStorage->getNodeMapList();
- for (std::vector<std::string>::const_iterator it = node_maps.begin();
- it != node_maps.end(); ++it)
- {
- Gtk::TreeModel::Row row = *(refNodeMapStore->append());
- row[NodeMapColumns.colName] = *it;
- switch (pMapStorage->getNodeMapSaveDest(*it))
+ Gtk::HBox* box4 = Gtk::manage(new Gtk::HBox);
+ box3->pack_start(*box4, Gtk::PACK_SHRINK);
+
+ Gtk::Label* fill2 = Gtk::manage(new Gtk::Label(" "));
+ box4->pack_start(*fill2, Gtk::PACK_SHRINK);
+
+ Gtk::Table* table1 = Gtk::manage(new Gtk::Table(3, 2));
+ box4->pack_start(*table1, Gtk::PACK_SHRINK);
+
+ rbNodeCoordOneMap.set_label("As one map");
+ rbNodeCoordTwoMaps.set_label("As two maps");
+ group = rbNodeCoordOneMap.get_group();
+ rbNodeCoordTwoMaps.set_group(group);
+
+ table1->attach(rbNodeCoordOneMap, 0, 1, 0, 1);
+ table1->attach(rbNodeCoordTwoMaps, 0, 1, 1, 2);
+ table1->attach(entNodeCoordsOneMap, 1, 2, 0, 1);
+ table1->attach(entNodeCoordsTwoMaps1, 1, 2, 1, 2);
+ table1->attach(entNodeCoordsTwoMaps2, 1, 2, 2, 3);
+
+ switch (pMapStorage->getNodeCoordsSaveDest())
{
- case MapStorage::GUI_SECT:
- row[NodeMapColumns.colSaveToMainSect] = false;
- row[NodeMapColumns.colSaveToGuiSect] = true;
+ case MapStorage::SpecMapSaveOpts::GUI_SECT:
+ rbNodeCoordGuiSection.set_active();
+ rbNodeCoordOneMap.set_sensitive(false);
+ rbNodeCoordTwoMaps.set_sensitive(false);
+ entNodeCoordsOneMap.set_sensitive(false);
+ entNodeCoordsTwoMaps1.set_sensitive(false);
+ entNodeCoordsTwoMaps2.set_sensitive(false);
break;
- case MapStorage::NESET_SECT:
- row[NodeMapColumns.colSaveToMainSect] = true;
- row[NodeMapColumns.colSaveToGuiSect] = false;
+ case MapStorage::SpecMapSaveOpts::NESET_SECT:
+ rbNodeCoordNodesetSection.set_active();
+ rbNodeCoordOneMap.set_sensitive(true);
+ rbNodeCoordTwoMaps.set_sensitive(true);
+ switch (pMapStorage->getNodeCoordsSaveMapNum())
+ {
+ case MapStorage::SpecMapSaveOpts::ONE_MAP:
+ rbNodeCoordOneMap.set_active();
+ entNodeCoordsOneMap.set_sensitive(true);
+ entNodeCoordsTwoMaps1.set_sensitive(false);
+ entNodeCoordsTwoMaps2.set_sensitive(false);
+ break;
+ case MapStorage::SpecMapSaveOpts::TWO_MAPS:
+ rbNodeCoordTwoMaps.set_active();
+ entNodeCoordsOneMap.set_sensitive(false);
+ entNodeCoordsTwoMaps1.set_sensitive(true);
+ entNodeCoordsTwoMaps2.set_sensitive(true);
+ break;
+ }
break;
- case MapStorage::DONT_SAVE:
- row[NodeMapColumns.colSaveToMainSect] = false;
- row[NodeMapColumns.colSaveToGuiSect] = false;
+ }
+
+ entNodeCoordsOneMap.set_text(pMapStorage->getNodeCoordsOneMapName());
+ entNodeCoordsTwoMaps1.set_text(pMapStorage->getNodeCoordsTwoMaps1Name());
+ entNodeCoordsTwoMaps2.set_text(pMapStorage->getNodeCoordsTwoMaps2Name());
+
+ entNodeCoordsOneMap.signal_changed().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordsOneMapName));
+ entNodeCoordsTwoMaps1.signal_changed().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordsTwoMaps1Name));
+ entNodeCoordsTwoMaps2.signal_changed().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordsTwoMaps2Name));
+
+ rbNodeCoordGuiSection.signal_toggled().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordSaveDestChanged));
+ rbNodeCoordNodesetSection.signal_toggled().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordSaveDestChanged));
+ rbNodeCoordOneMap.signal_toggled().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordMapNumChanged));
+ rbNodeCoordTwoMaps.signal_toggled().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onNodeCoordMapNumChanged));
+ }
+
+ {
+ Gtk::VBox* box1 = Gtk::manage(new Gtk::VBox(false, 6));
+ vbSpecMaps->pack_start(*box1, Gtk::PACK_SHRINK);
+
+ Gtk::Label* lblArrowCoordMap =
+ Gtk::manage(new Gtk::Label("<b>Arrow Coordinates</b>"));
+ lblArrowCoordMap->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
+ lblArrowCoordMap->set_use_markup();
+ box1->pack_start(*lblArrowCoordMap, Gtk::PACK_SHRINK);
+
+ Gtk::HBox* box2 = Gtk::manage(new Gtk::HBox);
+ box1->pack_start(*box2, Gtk::PACK_SHRINK);
+
+ Gtk::Label* fill1 = Gtk::manage(new Gtk::Label(" "));
+ box2->pack_start(*fill1, Gtk::PACK_SHRINK);
+
+ Gtk::VBox* box3 = Gtk::manage(new Gtk::VBox);
+ box2->pack_start(*box3, Gtk::PACK_SHRINK);
+
+ rbArrowCoordGuiSection.set_label("Save to GUI section");
+ rbArrowCoordEdgesetSection.set_label("Save to Edgeset section");
+ Gtk::RadioButtonGroup group = rbArrowCoordGuiSection.get_group();
+ rbArrowCoordEdgesetSection.set_group(group);
+
+ box3->pack_start(rbArrowCoordGuiSection, Gtk::PACK_SHRINK);
+ box3->pack_start(rbArrowCoordEdgesetSection, Gtk::PACK_SHRINK);
+
+ Gtk::HBox* box4 = Gtk::manage(new Gtk::HBox);
+ box3->pack_start(*box4, Gtk::PACK_SHRINK);
+
+ Gtk::Label* fill2 = Gtk::manage(new Gtk::Label(" "));
+ box4->pack_start(*fill2, Gtk::PACK_SHRINK);
+
+ Gtk::Table* table1 = Gtk::manage(new Gtk::Table(3, 2));
+ box4->pack_start(*table1, Gtk::PACK_SHRINK);
+
+ rbArrowCoordOneMap.set_label("As one map");
+ rbArrowCoordTwoMaps.set_label("As two maps");
+ group = rbArrowCoordOneMap.get_group();
+ rbArrowCoordTwoMaps.set_group(group);
+
+ table1->attach(rbArrowCoordOneMap, 0, 1, 0, 1);
+ table1->attach(rbArrowCoordTwoMaps, 0, 1, 1, 2);
+ table1->attach(entArrowCoordsOneMap, 1, 2, 0, 1);
+ table1->attach(entArrowCoordsTwoMaps1, 1, 2, 1, 2);
+ table1->attach(entArrowCoordsTwoMaps2, 1, 2, 2, 3);
+
+ switch (pMapStorage->getArrowCoordsSaveDest())
+ {
+ case MapStorage::SpecMapSaveOpts::GUI_SECT:
+ rbArrowCoordGuiSection.set_active();
+ rbArrowCoordOneMap.set_sensitive(false);
+ rbArrowCoordTwoMaps.set_sensitive(false);
+ entArrowCoordsOneMap.set_sensitive(false);
+ entArrowCoordsTwoMaps1.set_sensitive(false);
+ entArrowCoordsTwoMaps2.set_sensitive(false);
+ break;
+ case MapStorage::SpecMapSaveOpts::NESET_SECT:
+ rbArrowCoordEdgesetSection.set_active();
+ rbArrowCoordOneMap.set_sensitive(true);
+ rbArrowCoordTwoMaps.set_sensitive(true);
+ switch (pMapStorage->getArrowCoordsSaveMapNum())
+ {
+ case MapStorage::SpecMapSaveOpts::ONE_MAP:
+ rbArrowCoordOneMap.set_active();
+ entArrowCoordsOneMap.set_sensitive(true);
+ entArrowCoordsTwoMaps1.set_sensitive(false);
+ entArrowCoordsTwoMaps2.set_sensitive(false);
+ break;
+ case MapStorage::SpecMapSaveOpts::TWO_MAPS:
+ rbArrowCoordTwoMaps.set_active();
+ entArrowCoordsOneMap.set_sensitive(false);
+ entArrowCoordsTwoMaps1.set_sensitive(true);
+ entArrowCoordsTwoMaps2.set_sensitive(true);
+ break;
+ }
break;
}
- }
- twNodeMaps.set_model(refNodeMapStore);
- twNodeMaps.append_column("Name", NodeMapColumns.colName);
- twNodeMaps.append_column_editable("Nodeset section",
- NodeMapColumns.colSaveToMainSect);
- twNodeMaps.append_column_editable("GUI section",
- NodeMapColumns.colSaveToGuiSect);
+ entArrowCoordsOneMap.set_text(pMapStorage->getArrowCoordsOneMapName());
+ entArrowCoordsTwoMaps1.set_text(pMapStorage->getArrowCoordsTwoMaps1Name());
+ entArrowCoordsTwoMaps2.set_text(pMapStorage->getArrowCoordsTwoMaps2Name());
+
+ entArrowCoordsOneMap.signal_changed().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordsOneMapName));
+ entArrowCoordsTwoMaps1.signal_changed().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordsTwoMaps1Name));
+ entArrowCoordsTwoMaps2.signal_changed().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordsTwoMaps2Name));
+
+ rbArrowCoordGuiSection.signal_toggled().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordSaveDestChanged));
+ rbArrowCoordEdgesetSection.signal_toggled().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordSaveDestChanged));
+ rbArrowCoordOneMap.signal_toggled().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordMapNumChanged));
+ rbArrowCoordTwoMaps.signal_toggled().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onArrowCoordMapNumChanged));
+ }
+
+ // child widgets of vbGuiSect
+
+ {
+ Gtk::VBox* box1 = Gtk::manage(new Gtk::VBox(false, 6));
+ vbGuiSect->pack_start(*box1, Gtk::PACK_SHRINK);
+
+ Gtk::Label* lblGuiSectionSave =
+ Gtk::manage(new Gtk::Label("<b>Save Destination</b>"));
+ lblGuiSectionSave->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
+ lblGuiSectionSave->set_use_markup();
+ box1->pack_start(*lblGuiSectionSave, Gtk::PACK_SHRINK);
- swNodeMaps.set_size_request(250, 200);
- swNodeMaps.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
+ rbLgfFile.set_label("Lgf file");
+ rbConfFile.set_label("Conf file");
- refEdgeMapStore = Gtk::ListStore::create(EdgeMapColumns);
+ Gtk::RadioButtonGroup group = rbLgfFile.get_group();
+ rbConfFile.set_group(group);
- std::vector<std::string> edge_maps = pMapStorage->getEdgeMapList();
- for (std::vector<std::string>::const_iterator it = edge_maps.begin();
- it != edge_maps.end(); ++it)
- {
- Gtk::TreeModel::Row row = *(refEdgeMapStore->append());
- row[EdgeMapColumns.colName] = *it;
- switch (pMapStorage->getEdgeMapSaveDest(*it))
+ switch (pMapStorage->getGUIDataSaveLocation())
{
- case MapStorage::GUI_SECT:
- row[EdgeMapColumns.colSaveToMainSect] = false;
- row[EdgeMapColumns.colSaveToGuiSect] = true;
+ case MapStorage::LGF_FILE:
+ rbLgfFile.set_active();
break;
- case MapStorage::NESET_SECT:
- row[EdgeMapColumns.colSaveToMainSect] = true;
- row[EdgeMapColumns.colSaveToGuiSect] = false;
- break;
- case MapStorage::DONT_SAVE:
- row[EdgeMapColumns.colSaveToMainSect] = false;
- row[EdgeMapColumns.colSaveToGuiSect] = false;
+ case MapStorage::CONF_FILE:
+ rbConfFile.set_active();
break;
}
+
+ Gtk::HBox* box2 = Gtk::manage(new Gtk::HBox);
+ box1->pack_start(*box2, Gtk::PACK_SHRINK);
+
+ Gtk::Label* fill1 = Gtk::manage(new Gtk::Label(" "));
+ box2->pack_start(*fill1, Gtk::PACK_SHRINK);
+
+ Gtk::VBox* box3 = Gtk::manage(new Gtk::VBox);
+ box2->pack_start(*box3, Gtk::PACK_SHRINK);
+
+ box3->pack_start(rbLgfFile, Gtk::PACK_SHRINK);
+ box3->pack_start(rbConfFile, Gtk::PACK_SHRINK);
+
+ rbLgfFile.signal_toggled().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onGuiSectSaveDestChanged));
+ rbConfFile.signal_toggled().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onGuiSectSaveDestChanged));
}
- twEdgeMaps.set_model(refEdgeMapStore);
- twEdgeMaps.append_column("Name", EdgeMapColumns.colName);
- twEdgeMaps.append_column_editable("Edgeset section",
- EdgeMapColumns.colSaveToMainSect);
- twEdgeMaps.append_column_editable("GUI section",
- EdgeMapColumns.colSaveToGuiSect);
+ // child widgets of vbNodeMaps
- swEdgeMaps.set_size_request(250, 200);
- swEdgeMaps.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
+ {
+ Gtk::VBox* box1 = Gtk::manage(new Gtk::VBox(false, 6));
+ vbNodeMaps->pack_start(*box1, Gtk::PACK_SHRINK);
+
+ Gtk::Label* label1 =
+ Gtk::manage(new Gtk::Label("<b>Save Destination</b>"));
+ label1->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
+ label1->set_use_markup();
+ box1->pack_start(*label1, Gtk::PACK_SHRINK);
+
+ Gtk::HBox* box2 = Gtk::manage(new Gtk::HBox);
+ box1->pack_start(*box2, Gtk::PACK_SHRINK);
+
+ Gtk::Label* fill1 = Gtk::manage(new Gtk::Label(" "));
+ box2->pack_start(*fill1, Gtk::PACK_SHRINK);
+
+ Gtk::Frame* frame = Gtk::manage(new Gtk::Frame);
+ box2->pack_start(*frame, Gtk::PACK_EXPAND_WIDGET);
+
+ Gtk::ScrolledWindow* swNodeMaps = Gtk::manage(new Gtk::ScrolledWindow);
+ frame->add(*swNodeMaps);
+
+ swNodeMaps->add(twNodeMaps);
+
+ refNodeMapStore = Gtk::ListStore::create(NodeMapColumns);
+
+ std::vector<std::string> node_maps = pMapStorage->getNodeMapList();
+ for (std::vector<std::string>::const_iterator it = node_maps.begin();
+ it != node_maps.end(); ++it)
+ {
+ Gtk::TreeModel::Row row = *(refNodeMapStore->append());
+ row[NodeMapColumns.colName] = *it;
+ switch (pMapStorage->getNodeMapSaveDest(*it))
+ {
+ case MapStorage::GUI_SECT:
+ row[NodeMapColumns.colSaveToMainSect] = false;
+ row[NodeMapColumns.colSaveToGuiSect] = true;
+ break;
+ case MapStorage::NESET_SECT:
+ row[NodeMapColumns.colSaveToMainSect] = true;
+ row[NodeMapColumns.colSaveToGuiSect] = false;
+ break;
+ case MapStorage::DONT_SAVE:
+ row[NodeMapColumns.colSaveToMainSect] = false;
+ row[NodeMapColumns.colSaveToGuiSect] = false;
+ break;
+ }
+ }
+
+ twNodeMaps.set_model(refNodeMapStore);
+ twNodeMaps.append_column("Name", NodeMapColumns.colName);
+ twNodeMaps.append_column_editable("Nodeset section",
+ NodeMapColumns.colSaveToMainSect);
+ twNodeMaps.append_column_editable("GUI section",
+ NodeMapColumns.colSaveToGuiSect);
- refNodeMapStore->signal_row_changed().connect(
- sigc::mem_fun(*this, &SaveDetailsWidget::onNodeMapRowChanged));
- refEdgeMapStore->signal_row_changed().connect(
- sigc::mem_fun(*this, &SaveDetailsWidget::onEdgeMapRowChanged));
+ swNodeMaps->set_size_request(-1, 200);
+ swNodeMaps->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
- rbLgfFile.signal_toggled().connect(
- sigc::mem_fun(*this, &SaveDetailsWidget::onRbToggled));
- rbConfFile.signal_toggled().connect(
- sigc::mem_fun(*this, &SaveDetailsWidget::onRbToggled));
+ refNodeMapStore->signal_row_changed().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onNodeMapRowChanged));
+ }
+
+ // child widgets of vbEdgeMaps
+
+ {
+ Gtk::VBox* box1 = Gtk::manage(new Gtk::VBox(false, 6));
+ vbEdgeMaps->pack_start(*box1, Gtk::PACK_SHRINK);
+
+ Gtk::Label* label1 =
+ Gtk::manage(new Gtk::Label("<b>Save Destination</b>"));
+ label1->set_alignment(Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER);
+ label1->set_use_markup();
+ box1->pack_start(*label1, Gtk::PACK_SHRINK);
+
+ Gtk::HBox* box2 = Gtk::manage(new Gtk::HBox);
+ box1->pack_start(*box2, Gtk::PACK_SHRINK);
+
+ Gtk::Label* fill1 = Gtk::manage(new Gtk::Label(" "));
+ box2->pack_start(*fill1, Gtk::PACK_SHRINK);
+
+ Gtk::Frame* frame = Gtk::manage(new Gtk::Frame);
+ box2->pack_start(*frame, Gtk::PACK_EXPAND_WIDGET);
+
+ Gtk::ScrolledWindow* swEdgeMaps = Gtk::manage(new Gtk::ScrolledWindow);
+ frame->add(*swEdgeMaps);
+
+ swEdgeMaps->add(twEdgeMaps);
+
+ refEdgeMapStore = Gtk::ListStore::create(EdgeMapColumns);
+
+ std::vector<std::string> edge_maps = pMapStorage->getEdgeMapList();
+ for (std::vector<std::string>::const_iterator it = edge_maps.begin();
+ it != edge_maps.end(); ++it)
+ {
+ Gtk::TreeModel::Row row = *(refEdgeMapStore->append());
+ row[EdgeMapColumns.colName] = *it;
+ switch (pMapStorage->getEdgeMapSaveDest(*it))
+ {
+ case MapStorage::GUI_SECT:
+ row[EdgeMapColumns.colSaveToMainSect] = false;
+ row[EdgeMapColumns.colSaveToGuiSect] = true;
+ break;
+ case MapStorage::NESET_SECT:
+ row[EdgeMapColumns.colSaveToMainSect] = true;
+ row[EdgeMapColumns.colSaveToGuiSect] = false;
+ break;
+ case MapStorage::DONT_SAVE:
+ row[EdgeMapColumns.colSaveToMainSect] = false;
+ row[EdgeMapColumns.colSaveToGuiSect] = false;
+ break;
+ }
+ }
+
+ twEdgeMaps.set_model(refEdgeMapStore);
+ twEdgeMaps.append_column("Name", EdgeMapColumns.colName);
+ twEdgeMaps.append_column_editable("Edgeset section",
+ EdgeMapColumns.colSaveToMainSect);
+ twEdgeMaps.append_column_editable("GUI section",
+ EdgeMapColumns.colSaveToGuiSect);
+
+ swEdgeMaps->set_size_request(-1, 200);
+ swEdgeMaps->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
+
+ refEdgeMapStore->signal_row_changed().connect(
+ sigc::mem_fun(*this, &SaveDetailsWidget::onEdgeMapRowChanged));
+ }
show_all_children();
}
-void SaveDetailsWidget::onRbToggled()
+void SaveDetailsWidget::onGuiSectSaveDestChanged()
{
if (rbLgfFile.get_active())
{
@@ -202,6 +485,132 @@
}
}
+void SaveDetailsWidget::onNodeCoordSaveDestChanged()
+{
+ if (rbNodeCoordGuiSection.get_active())
+ {
+ pMapStorage->setNodeCoordsSaveDest(MapStorage::SpecMapSaveOpts::GUI_SECT);
+ rbNodeCoordOneMap.set_sensitive(false);
+ rbNodeCoordTwoMaps.set_sensitive(false);
+ entNodeCoordsOneMap.set_sensitive(false);
+ entNodeCoordsTwoMaps1.set_sensitive(false);
+ entNodeCoordsTwoMaps2.set_sensitive(false);
+ }
+ else if (rbNodeCoordNodesetSection.get_active())
+ {
+ pMapStorage->setNodeCoordsSaveDest(MapStorage::SpecMapSaveOpts::NESET_SECT);
+ rbNodeCoordOneMap.set_sensitive(true);
+ rbNodeCoordTwoMaps.set_sensitive(true);
+ switch (pMapStorage->getNodeCoordsSaveMapNum())
+ {
+ case MapStorage::SpecMapSaveOpts::ONE_MAP:
+ entNodeCoordsOneMap.set_sensitive(true);
+ entNodeCoordsTwoMaps1.set_sensitive(false);
+ entNodeCoordsTwoMaps2.set_sensitive(false);
+ break;
+ case MapStorage::SpecMapSaveOpts::TWO_MAPS:
+ entNodeCoordsOneMap.set_sensitive(false);
+ entNodeCoordsTwoMaps1.set_sensitive(true);
+ entNodeCoordsTwoMaps2.set_sensitive(true);
+ break;
+ }
+ }
+}
+
+void SaveDetailsWidget::onNodeCoordMapNumChanged()
+{
+ if (rbNodeCoordOneMap.get_active())
+ {
+ pMapStorage->setNodeCoordsSaveMapNum(MapStorage::SpecMapSaveOpts::ONE_MAP);
+ entNodeCoordsOneMap.set_sensitive(true);
+ entNodeCoordsTwoMaps1.set_sensitive(false);
+ entNodeCoordsTwoMaps2.set_sensitive(false);
+ }
+ else if (rbNodeCoordTwoMaps.get_active())
+ {
+ pMapStorage->setNodeCoordsSaveMapNum(MapStorage::SpecMapSaveOpts::TWO_MAPS);
+ entNodeCoordsOneMap.set_sensitive(false);
+ entNodeCoordsTwoMaps1.set_sensitive(true);
+ entNodeCoordsTwoMaps2.set_sensitive(true);
+ }
+}
+
+void SaveDetailsWidget::onNodeCoordsOneMapName()
+{
+ pMapStorage->setNodeCoordsOneMapName(entNodeCoordsOneMap.get_text());
+}
+void SaveDetailsWidget::onNodeCoordsTwoMaps1Name()
+{
+ pMapStorage->setNodeCoordsTwoMaps1Name(entNodeCoordsTwoMaps1.get_text());
+}
+void SaveDetailsWidget::onNodeCoordsTwoMaps2Name()
+{
+ pMapStorage->setNodeCoordsTwoMaps2Name(entNodeCoordsTwoMaps2.get_text());
+}
+
+void SaveDetailsWidget::onArrowCoordSaveDestChanged()
+{
+ if (rbArrowCoordGuiSection.get_active())
+ {
+ pMapStorage->setArrowCoordsSaveDest(MapStorage::SpecMapSaveOpts::GUI_SECT);
+ rbArrowCoordOneMap.set_sensitive(false);
+ rbArrowCoordTwoMaps.set_sensitive(false);
+ entArrowCoordsOneMap.set_sensitive(false);
+ entArrowCoordsTwoMaps1.set_sensitive(false);
+ entArrowCoordsTwoMaps2.set_sensitive(false);
+ }
+ else if (rbArrowCoordEdgesetSection.get_active())
+ {
+ pMapStorage->setArrowCoordsSaveDest(MapStorage::SpecMapSaveOpts::NESET_SECT);
+ rbArrowCoordOneMap.set_sensitive(true);
+ rbArrowCoordTwoMaps.set_sensitive(true);
+ switch (pMapStorage->getArrowCoordsSaveMapNum())
+ {
+ case MapStorage::SpecMapSaveOpts::ONE_MAP:
+ entArrowCoordsOneMap.set_sensitive(true);
+ entArrowCoordsTwoMaps1.set_sensitive(false);
+ entArrowCoordsTwoMaps2.set_sensitive(false);
+ break;
+ case MapStorage::SpecMapSaveOpts::TWO_MAPS:
+ entArrowCoordsOneMap.set_sensitive(false);
+ entArrowCoordsTwoMaps1.set_sensitive(true);
+ entArrowCoordsTwoMaps2.set_sensitive(true);
+ break;
+ }
+ }
+}
+
+void SaveDetailsWidget::onArrowCoordMapNumChanged()
+{
+ if (rbArrowCoordOneMap.get_active())
+ {
+ pMapStorage->setArrowCoordsSaveMapNum(MapStorage::SpecMapSaveOpts::ONE_MAP);
+ entArrowCoordsOneMap.set_sensitive(true);
+ entArrowCoordsTwoMaps1.set_sensitive(false);
+ entArrowCoordsTwoMaps2.set_sensitive(false);
+ }
+ else if (rbArrowCoordTwoMaps.get_active())
+ {
+ pMapStorage->setArrowCoordsSaveMapNum(MapStorage::SpecMapSaveOpts::TWO_MAPS);
+ entArrowCoordsOneMap.set_sensitive(false);
+ entArrowCoordsTwoMaps1.set_sensitive(true);
+ entArrowCoordsTwoMaps2.set_sensitive(true);
+ }
+}
+
+void SaveDetailsWidget::onArrowCoordsOneMapName()
+{
+ pMapStorage->setArrowCoordsOneMapName(entArrowCoordsOneMap.get_text());
+}
+void SaveDetailsWidget::onArrowCoordsTwoMaps1Name()
+{
+ pMapStorage->setArrowCoordsTwoMaps1Name(entArrowCoordsTwoMaps1.get_text());
+}
+void SaveDetailsWidget::onArrowCoordsTwoMaps2Name()
+{
+ pMapStorage->setArrowCoordsTwoMaps2Name(entArrowCoordsTwoMaps2.get_text());
+}
+
SaveDetailsWidget::~SaveDetailsWidget()
{
}
Modified: glemon/branches/akos/save_details_widget.h
==============================================================================
--- glemon/branches/akos/save_details_widget.h (original)
+++ glemon/branches/akos/save_details_widget.h Fri Nov 2 04:14:35 2007
@@ -28,22 +28,52 @@
Gtk::TreeModelColumn<bool> colSaveToGuiSect;
};
private:
- Gtk::Label lblGuiSectionSave;
- Gtk::Label lblMapsSave;
Gtk::RadioButton rbLgfFile;
Gtk::RadioButton rbConfFile;
- Gtk::Notebook nbMaps;
- Gtk::VBox box;
- Gtk::ScrolledWindow swNodeMaps;
- Gtk::ScrolledWindow swEdgeMaps;
+
Gtk::TreeView twNodeMaps;
Gtk::TreeView twEdgeMaps;
+
MapModelColumns NodeMapColumns;
MapModelColumns EdgeMapColumns;
+
Glib::RefPtr<Gtk::ListStore> refNodeMapStore;
Glib::RefPtr<Gtk::ListStore> refEdgeMapStore;
+
+ Gtk::RadioButton rbNodeCoordGuiSection;
+ Gtk::RadioButton rbNodeCoordNodesetSection;
+ Gtk::RadioButton rbNodeCoordOneMap;
+ Gtk::RadioButton rbNodeCoordTwoMaps;
+ Gtk::Entry entNodeCoordsOneMap;
+ Gtk::Entry entNodeCoordsTwoMaps1;
+ Gtk::Entry entNodeCoordsTwoMaps2;
+
+ Gtk::RadioButton rbArrowCoordGuiSection;
+ Gtk::RadioButton rbArrowCoordEdgesetSection;
+ Gtk::RadioButton rbArrowCoordOneMap;
+ Gtk::RadioButton rbArrowCoordTwoMaps;
+ Gtk::Entry entArrowCoordsOneMap;
+ Gtk::Entry entArrowCoordsTwoMaps1;
+ Gtk::Entry entArrowCoordsTwoMaps2;
+
MapStorage* pMapStorage;
- void onRbToggled();
+
+ void onGuiSectSaveDestChanged();
+
+ void onNodeCoordSaveDestChanged();
+ void onNodeCoordMapNumChanged();
+
+ void onNodeCoordsOneMapName();
+ void onNodeCoordsTwoMaps1Name();
+ void onNodeCoordsTwoMaps2Name();
+
+ void onArrowCoordSaveDestChanged();
+ void onArrowCoordMapNumChanged();
+
+ void onArrowCoordsOneMapName();
+ void onArrowCoordsTwoMaps1Name();
+ void onArrowCoordsTwoMaps2Name();
+
void onEdgeMapRowChanged(const Gtk::TreeModel::Path& path,
const Gtk::TreeModel::iterator& iter);
void onNodeMapRowChanged(const Gtk::TreeModel::Path& path,
More information about the Lemon-commits
mailing list