[Lemon-commits] [lemon_svn] hegyi: r2459 - hugo/trunk/gui

Lemon SVN svn at lemon.cs.elte.hu
Mon Nov 6 20:52:50 CET 2006


Author: hegyi
Date: Fri Jan  6 17:07:08 2006
New Revision: 2459

Modified:
   hugo/trunk/gui/algobox.cc
   hugo/trunk/gui/algobox.h
   hugo/trunk/gui/algowin.cc
   hugo/trunk/gui/algowin.h
   hugo/trunk/gui/kruskalbox.cc
   hugo/trunk/gui/main_win.cc
   hugo/trunk/gui/main_win.h
   hugo/trunk/gui/map_win.cc
   hugo/trunk/gui/mapselector.cc
   hugo/trunk/gui/new_map_win.cc

Log:
In algorithm window maps can be selected and reated through MapSelector widget.

Modified: hugo/trunk/gui/algobox.cc
==============================================================================
--- hugo/trunk/gui/algobox.cc	(original)
+++ hugo/trunk/gui/algobox.cc	Fri Jan  6 17:07:08 2006
@@ -73,11 +73,13 @@
     }
   for(int i=0;i<(int)nodemapcbts.size();i++)
     {
-      update_cbt(nml, *(nodemapcbts[i]));
+      (nodemapcbts[i])->update_list(nml);
+      //update_cbt(nml, *(nodemapcbts[i]));
     }
   for(int i=0;i<(int)edgemapcbts.size();i++)
     {
-      update_cbt(eml, *(edgemapcbts[i]));
+      (edgemapcbts[i])->update_list(eml);
+      //update_cbt(eml, *(edgemapcbts[i]));
     }
 }
 
@@ -106,7 +108,7 @@
 {
   pack_start(*(new Gtk::HSeparator()));
 
-  label=new Gtk::Label("Specific part for each algorithm.");
+  Gtk::Label * label=new Gtk::Label("Specific part for each algorithm.");
       
   pack_start(*label);
   pack_start(*(new Gtk::HSeparator()));
@@ -118,17 +120,15 @@
   nodemapcbts.resize(NODE_INPUT_NUM);
   for(int i=0;i<(int)nodemapcbts.size();i++)
     {
-      Gtk::HBox * hbox=new Gtk::HBox();
+      std::vector<std::string> empty_vector;
 
       std::ostringstream o;
       o << "NodeInput " << i+1 << ":";
-      label=new Gtk::Label(o.str());
 
-      nodemapcbts[i]=new Gtk::ComboBoxText();
+      nodemapcbts[i]=new MapSelector(empty_vector,"",o.str(),false, false);
+      nodemapcbts[i]->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &AlgoBox::emit_new_map_signal));
 
-      hbox->pack_start(*label);
-      hbox->pack_start(*(nodemapcbts[i]));
-      pack_start(*hbox);
+      pack_start(*(nodemapcbts[i]));
     }
 
   pack_start(*(new Gtk::HSeparator()));
@@ -136,17 +136,15 @@
   edgemapcbts.resize(EDGE_INPUT_NUM);
   for(int i=0;i<(int)edgemapcbts.size();i++)
     {
-      Gtk::HBox * hbox=new Gtk::HBox();
+      std::vector<std::string> empty_vector;
 
       std::ostringstream o;
       o << "EdgeInput " << i+1 << ":";
-      label=new Gtk::Label(o.str());
 
-      edgemapcbts[i]=new Gtk::ComboBoxText();
+      edgemapcbts[i]=new MapSelector(empty_vector,"",o.str(),true, false);
+      edgemapcbts[i]->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &AlgoBox::emit_new_map_signal));
 
-      hbox->pack_start(*label);
-      hbox->pack_start(*(edgemapcbts[i]));
-      pack_start(*hbox);
+      pack_start(*(edgemapcbts[i]));
     }
 
   pack_start(*(new Gtk::HSeparator()));
@@ -170,3 +168,8 @@
       update_maplist(NULL);
     }
 }
+
+void AlgoBox::emit_new_map_signal(bool itisedge)
+{
+  signal_newmapwin_need.emit(tabcbt.get_active_text(), itisedge);
+}

Modified: hugo/trunk/gui/algobox.h
==============================================================================
--- hugo/trunk/gui/algobox.h	(original)
+++ hugo/trunk/gui/algobox.h	Fri Jan  6 17:07:08 2006
@@ -7,19 +7,19 @@
 
 #include <all_include.h>
 #include <mapstorage.h>
+#include <mapselector.h>
 #include <libgnomecanvasmm.h>
 #include <libgnomecanvasmm/polygon.h>
 
 class AlgoBox : public Gtk::VBox
 {
   sigc::signal<void, std::string> signal_maplist_need;  
-  
-  Gtk::ComboBoxText tabcbt;
+  sigc::signal<void, std::string, bool> signal_newmapwin_need;  
 
 protected:
-  Gtk::Label * label;
-  std::vector<Gtk::ComboBoxText *> nodemapcbts;
-  std::vector<Gtk::ComboBoxText *> edgemapcbts;
+  Gtk::ComboBoxText tabcbt;
+  std::vector<MapSelector *> nodemapcbts;
+  std::vector<MapSelector *> edgemapcbts;
 
   MapStorage * mapstorage;
 
@@ -30,6 +30,7 @@
   virtual void init(std::vector<std::string>);
 
   sigc::signal<void, std::string> signal_maplist_needed();  
+  sigc::signal<void, std::string, bool> signal_newmapwin_needed(){return signal_newmapwin_need;};  
   void emit_tab_change();
 
   void update_tablist( std::vector< std::string > tl );
@@ -43,5 +44,7 @@
   virtual void run();
   
   virtual void build_box();
+
+  virtual void emit_new_map_signal(bool);
 };
 #endif //ALGOBOX_H

Modified: hugo/trunk/gui/algowin.cc
==============================================================================
--- hugo/trunk/gui/algowin.cc	(original)
+++ hugo/trunk/gui/algowin.cc	Fri Jan  6 17:07:08 2006
@@ -43,6 +43,7 @@
       break;
     }
   ab->signal_maplist_needed().connect(sigc::mem_fun(*this, &AlgoWin::emit_tab_change));
+  ab->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &AlgoWin::emit_new_map_signal));
 
   runbutton=new Gtk::Button("Run");
   runbutton->signal_released().connect(sigc::mem_fun(*ab,&AlgoBox::run));

Modified: hugo/trunk/gui/algowin.h
==============================================================================
--- hugo/trunk/gui/algowin.h	(original)
+++ hugo/trunk/gui/algowin.h	Fri Jan  6 17:07:08 2006
@@ -25,14 +25,17 @@
 protected:
   sigc::signal<void, AlgoWin *> signal_closed;  
   sigc::signal<void, AlgoWin *, std::string> signal_maplist_need;  
+  sigc::signal<void, std::string, bool> signal_newmapwin_need;  
 
 public:
   bool closeIfEscapeIsPressed(GdkEventKey* e);
 
   sigc::signal<void, AlgoWin *> signal_closing();
   sigc::signal<void, AlgoWin *, std::string> signal_maplist_needed();
+  sigc::signal<void, std::string, bool> signal_newmapwin_needed(){return signal_newmapwin_need;};  
 
   void emit_tab_change(std::string);
+  void emit_new_map_signal(std::string tabname, bool itisedge){signal_newmapwin_need.emit(tabname, itisedge);};
 
   AlgoWin(int, std::vector<std::string>);
 

Modified: hugo/trunk/gui/kruskalbox.cc
==============================================================================
--- hugo/trunk/gui/kruskalbox.cc	(original)
+++ hugo/trunk/gui/kruskalbox.cc	Fri Jan  6 17:07:08 2006
@@ -9,62 +9,61 @@
     
 void KruskalBox::run()
 {
-  Graph g=mapstorage->graph;
-  Graph::EdgeMap<double> * inputmap=
-    ((mapstorage->edgemap_storage)[(edgemapcbts[INPUT])->get_active_text()]);
-  Graph::EdgeMap<bool> outputmap(g);
-  double res=kruskal(g, *inputmap, outputmap);
-
-  for (EdgeIt i(g); i!=INVALID; ++i)
-  {
-    if(outputmap[i])
-      {
-	(*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])->
-					 get_active_text()]))[i]=1;
-      }
-    else
-      {
-	(*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])->
-					 get_active_text()]))[i]=0;
-      }
-  }
-
-  std::ostringstream o;
-  o << "Result: " << res;
-  resultlabel.set_text(o.str());
-
-  mapstorage->mapChanged(true, (edgemapcbts[OUTPUT])->get_active_text());
-  //   mapstorage->changeActiveMap(true, E_COLOR,
-  // 			      (edgemapcbts[OUTPUT])->get_active_text());
-  //   mapstorage->changeActiveMap(true, E_TEXT,
-  // 			      (edgemapcbts[INPUT])->get_active_text());
+  if(
+     tabcbt.get_active_text()!="" &&
+     (edgemapcbts[INPUT])->get_active_text()!="" &&
+     (edgemapcbts[OUTPUT])->get_active_text()!=""
+     )
+    {
+
+      Graph g=mapstorage->graph;
+      Graph::EdgeMap<double> * inputmap=
+	((mapstorage->edgemap_storage)[(edgemapcbts[INPUT])->get_active_text()]);
+      Graph::EdgeMap<bool> outputmap(g);
+      double res=kruskal(g, *inputmap, outputmap);
+
+      for (EdgeIt i(g); i!=INVALID; ++i)
+	{
+	  if(outputmap[i])
+	    {
+	      (*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])->
+					       get_active_text()]))[i]=1;
+	    }
+	  else
+	    {
+	      (*((mapstorage->edgemap_storage)[(edgemapcbts[OUTPUT])->
+					       get_active_text()]))[i]=0;
+	    }
+	}
+
+      std::ostringstream o;
+      o << "Result: " << res;
+      resultlabel.set_text(o.str());
+
+      mapstorage->mapChanged(true, (edgemapcbts[OUTPUT])->get_active_text());
+      //   mapstorage->changeActiveMap(true, E_COLOR,
+      // 			      (edgemapcbts[OUTPUT])->get_active_text());
+      //   mapstorage->changeActiveMap(true, E_TEXT,
+      // 			      (edgemapcbts[INPUT])->get_active_text());
   
+    }
 }
     
 void KruskalBox::build_box()
 {
-  edgemapcbts.resize(MAP_NUM);
-  Gtk::HBox * hbox;
-
-  hbox=new Gtk::HBox();
-
-  label=new Gtk::Label("Edgecosts: ");
+  std::vector<std::string> empty_vector;
 
-  edgemapcbts[0]=new Gtk::ComboBoxText();
-
-  hbox->pack_start(*label);
-  hbox->pack_start(*(edgemapcbts[INPUT]));
-  pack_start(*hbox);
+  edgemapcbts.resize(MAP_NUM);
 
-  hbox=new Gtk::HBox();
+  edgemapcbts[0]=new MapSelector(empty_vector,"","Edgecosts: ",true, false);
+  edgemapcbts[0]->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &AlgoBox::emit_new_map_signal));
 
-  label=new Gtk::Label("Edges of tree here: ");
+  pack_start(*(edgemapcbts[INPUT]));
 
-  edgemapcbts[1]=new Gtk::ComboBoxText();
+  edgemapcbts[1]=new MapSelector(empty_vector,"","Edges of tree here: ",true, false);
+  edgemapcbts[1]->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &AlgoBox::emit_new_map_signal));
 
-  hbox->pack_start(*label);
-  hbox->pack_start(*(edgemapcbts[OUTPUT]));
-  pack_start(*hbox);
+  pack_start(*(edgemapcbts[OUTPUT]));
 
   resultlabel.set_text("Result: algorithm is not run yet.");
   pack_start(resultlabel);

Modified: hugo/trunk/gui/main_win.cc
==============================================================================
--- hugo/trunk/gui/main_win.cc	(original)
+++ hugo/trunk/gui/main_win.cc	Fri Jan  6 17:07:08 2006
@@ -412,6 +412,7 @@
   AlgoWin * aw=new AlgoWin(algoid, tabnames);
   aw->signal_closing().connect(sigc::mem_fun(*this, &MainWin::deRegisterAlgoWin));
   aw->signal_maplist_needed().connect(sigc::mem_fun(*this, &MainWin::updateAlgoWinMaps));
+  aw->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &MainWin::createNewMapWinTabString));
   aws.insert(aw);
   aw->show();
 }
@@ -458,6 +459,15 @@
     }
 }
 
+void MainWin::createNewMapWinTabString(std::string tabname, bool itisedge)
+{
+  int i=0;
+  for(;((i<tabnames.size())&&(tabnames[i]!=tabname));i++)
+    {
+    }
+  createNewMapWinAfterSignal(tabs[i], itisedge);
+}
+
 void MainWin::createNewMapWinAfterSignal(NoteBookTab * nbt, bool itisedge)
 {
   std::vector<NoteBookTab*>::iterator nbti=tabs.begin();

Modified: hugo/trunk/gui/main_win.h
==============================================================================
--- hugo/trunk/gui/main_win.h	(original)
+++ hugo/trunk/gui/main_win.h	Fri Jan  6 17:07:08 2006
@@ -79,6 +79,7 @@
   virtual void changeEditorialTool(int);
 
   virtual void createNewMapWinAfterSignal(NoteBookTab *, bool);
+  virtual void createNewMapWinTabString(std::string, bool);
   virtual void createNewMapWin();
 
   //Notebook handlers

Modified: hugo/trunk/gui/map_win.cc
==============================================================================
--- hugo/trunk/gui/map_win.cc	(original)
+++ hugo/trunk/gui/map_win.cc	Fri Jan  6 17:07:08 2006
@@ -24,7 +24,7 @@
 
   for(int i=0;i<EDGE_PROPERTY_NUM;i++)
   {
-    e_combo_array[i]=new MapSelector(eml, mytab.getActiveEdgeMap(i), i, true);
+    e_combo_array[i]=new MapSelector(eml, mytab.getActiveEdgeMap(i), edge_property_strings[i], true);
 
     (*table).attach((*(e_combo_array[i])),0,1,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
 
@@ -44,7 +44,7 @@
 
   for(int i=0;i<NODE_PROPERTY_NUM;i++)
   {
-    n_combo_array[i]=new MapSelector(nml, mytab.getActiveNodeMap(i), i, false);
+    n_combo_array[i]=new MapSelector(nml, mytab.getActiveNodeMap(i), node_property_strings[i], false);
 
     (*table).attach((*(n_combo_array[i])),0,1,i,i+1,Gtk::SHRINK,Gtk::SHRINK,10,3);
 

Modified: hugo/trunk/gui/mapselector.cc
==============================================================================
--- hugo/trunk/gui/mapselector.cc	(original)
+++ hugo/trunk/gui/mapselector.cc	Fri Jan  6 17:07:08 2006
@@ -1,6 +1,6 @@
 #include "mapselector.h"
 
-MapSelector::MapSelector(std::vector<std::string> ml, std::string act, int identifier, bool edge):id(identifier),itisedge(edge),set_new_map(false)
+MapSelector::MapSelector(std::vector<std::string> ml, std::string act, std::string labeltext, bool edge, bool d):def(d),itisedge(edge),set_new_map(false)
 {
   update_list(ml);
 
@@ -22,14 +22,7 @@
      false
      );
   
-  if(itisedge)
-    {
-      label=new Gtk::Label(edge_property_strings[id]);
-    }
-  else
-    {
-      label=new Gtk::Label(node_property_strings[id]);
-    }
+  label=new Gtk::Label(labeltext);
 
   label->set_width_chars(longest_property_string_length);
 
@@ -71,7 +64,10 @@
     {
       cbt.append_text(*emsi);
     }
-  cbt.prepend_text("Default values");
+  if(def)
+    {
+      cbt.prepend_text("Default values");
+    }
   if(prev_act!=-1)
     {
       cbt.set_active(prev_act);

Modified: hugo/trunk/gui/new_map_win.cc
==============================================================================
--- hugo/trunk/gui/new_map_win.cc	(original)
+++ hugo/trunk/gui/new_map_win.cc	Fri Jan  6 17:07:08 2006
@@ -114,13 +114,7 @@
 			    }
 			  else
 			    {
-			      char * def_val_ch=new char [(int)(ch2var[ polishform[i] ].length())];
-			      for(int j=0;j<(int)(ch2var[ polishform[i] ].length());j++)
-				{
-				  def_val_ch[j]=ch2var[ polishform[i] ][j];
-				}
-			      polishstack.push(atof(def_val_ch));
-			      delete def_val_ch;
+			      polishstack.push(atof(ch2var[ polishform[i] ].c_str()));
 			    }
 			  operation=false;
 			  break;
@@ -201,13 +195,7 @@
 			    }
 			  else
 			    {
-			      char * def_val_ch=new char [(int)(ch2var[ polishform[i] ].length())];
-			      for(int j=0;j<(int)(ch2var[ polishform[i] ].length());j++)
-				{
-				  def_val_ch[j]=ch2var[ polishform[i] ][j];
-				}
-			      polishstack.push(atof(def_val_ch));
-			      delete def_val_ch;
+			      polishstack.push(atof(ch2var[ polishform[i] ].c_str()));
 			    }
 			  operation=false;
 			  break;



More information about the Lemon-commits mailing list