[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