main_win.cc
branchgui
changeset 106 853dd852abc7
parent 104 623ae8ed0877
child 107 b1be10a9a2b6
     1.1 --- a/main_win.cc	Wed Jan 04 13:31:59 2006 +0000
     1.2 +++ b/main_win.cc	Wed Jan 04 18:05:55 2006 +0000
     1.3 @@ -104,6 +104,8 @@
     1.4    ag->add( Gtk::Action::create("AlgoMenu", "_Algorithms") );
     1.5    ag->add( Gtk::Action::create("AlgoGeneral", "_General"),
     1.6  	   sigc::bind( sigc::mem_fun ( *this, &MainWin::createAlgoWin ), 0) );
     1.7 +  ag->add( Gtk::Action::create("AlgoKruskal", "_Kruskal"),
     1.8 +	   sigc::bind( sigc::mem_fun ( *this, &MainWin::createAlgoWin ), 1) );
     1.9  
    1.10    Gtk::RadioAction::Group tool_group;
    1.11    ag->add( Gtk::RadioAction::create(tool_group, "MoveItem", Gtk::StockID("gd-move"), "Move"),
    1.12 @@ -153,6 +155,7 @@
    1.13        "    </menu>"
    1.14        "    <menu action='AlgoMenu'>"
    1.15        "      <menuitem action='AlgoGeneral'/>"
    1.16 +      "      <menuitem action='AlgoKruskal'/>"
    1.17        "    </menu>"
    1.18        "  </menubar>"
    1.19        "  <toolbar name='ToolBar'>"
    1.20 @@ -224,7 +227,7 @@
    1.21      }
    1.22    set_title(tabnames[active_tab] + " - " + prog_name);
    1.23    notebook.set_tab_label_text((Widget&)*(tabs[active_tab]), tabnames[active_tab]);
    1.24 -  updateAlgoWins();
    1.25 +  updateAlgoWinTabs();
    1.26  }
    1.27  
    1.28  void MainWin::readFile(const std::string & filename)
    1.29 @@ -246,7 +249,7 @@
    1.30    notebook.append_page((Gtk::Widget&)(*(tabs[active_tab])));
    1.31    notebook.set_current_page(size);
    1.32    set_tabtitle("unsaved file");
    1.33 -  updateAlgoWins();
    1.34 +  updateAlgoWinTabs();
    1.35  }
    1.36  
    1.37  void MainWin::closeTab()
    1.38 @@ -306,7 +309,7 @@
    1.39  	  active_tab=-1;
    1.40  	}
    1.41  
    1.42 -      updateAlgoWins();
    1.43 +      updateAlgoWinTabs();
    1.44      }
    1.45  }
    1.46  
    1.47 @@ -404,18 +407,28 @@
    1.48  
    1.49  void MainWin::createAlgoWin(int algoid)
    1.50  {
    1.51 -  AlgoWin * aw=new AlgoWin(algoid, tabnames);
    1.52 +  AlgoWin * aw=new AlgoWin(algoid, tabnames, tabs[0]->mapstorage.getNodeMapList(),tabs[0]->mapstorage.getEdgeMapList());
    1.53    aw->signal_closing().connect(sigc::mem_fun(*this, &MainWin::deRegisterAlgoWin));
    1.54 +  aw->signal_maplist_needed().connect(sigc::mem_fun(*this, &MainWin::updateAlgoWinMaps));
    1.55    aws.insert(aw);
    1.56    aw->show();
    1.57  }
    1.58  
    1.59 +void MainWin::updateAlgoWinMaps(AlgoWin * awp, std::string tabname)
    1.60 +{
    1.61 +  int i=0;
    1.62 +  for(;(i<(int)tabnames.size())&&(tabnames[i]!=tabname);i++)
    1.63 +    {
    1.64 +    }
    1.65 +  awp->update_maplist(tabs[i]->mapstorage.getNodeMapList(),tabs[i]->mapstorage.getEdgeMapList());
    1.66 +}
    1.67 +
    1.68  void MainWin::deRegisterAlgoWin(AlgoWin * awp)
    1.69  {
    1.70    aws.erase(awp);
    1.71  }
    1.72  
    1.73 -void MainWin::updateAlgoWins()
    1.74 +void MainWin::updateAlgoWinTabs()
    1.75  {
    1.76    std::set< AlgoWin* >::iterator awsi=aws.begin();
    1.77    for(;awsi!=aws.end();awsi++)