[Lemon-commits] [lemon_svn] hegyi: r2446 - hugo/trunk/gui
Lemon SVN
svn at lemon.cs.elte.hu
Mon Nov 6 20:52:42 CET 2006
Author: hegyi
Date: Tue Jan 3 18:30:22 2006
New Revision: 2446
Added:
hugo/trunk/gui/algobox.h
hugo/trunk/gui/algowin.h
Modified:
hugo/trunk/gui/main_win.cc
hugo/trunk/gui/main_win.h
Log:
Coding of Algorithms has begun, but code is really-really ugly yet.
Added: hugo/trunk/gui/algobox.h
==============================================================================
--- (empty file)
+++ hugo/trunk/gui/algobox.h Tue Jan 3 18:30:22 2006
@@ -0,0 +1,62 @@
+// -*- C++ -*- //
+
+#ifndef ALGOBOX_H
+#define ALGOBOX_H
+
+class AlgoBox;
+
+#include <all_include.h>
+#include <libgnomecanvasmm.h>
+#include <libgnomecanvasmm/polygon.h>
+
+class AlgoBox : public Gtk::VBox
+{
+
+ Gtk::Label * label;
+ Gtk::ComboBoxText cbt;
+
+ public:
+ AlgoBox(std::vector<std::string> tabnames)
+ {
+ update_tablist(tabnames);
+
+ label=new Gtk::Label("Haliho");
+
+ pack_start(*label);
+ pack_start(cbt);
+
+ show_all_children();
+ };
+
+ void update_tablist( std::vector< std::string > tl )
+ {
+ std::string actname=cbt.get_active_text();
+ int prev_act=-1;
+
+ cbt.clear();
+ int actptr=0;
+
+ std::vector< std::string >::iterator emsi=tl.begin();
+ for(;emsi!=tl.end();emsi++)
+ {
+ if(actname==*emsi)
+ {
+ prev_act=actptr;
+ }
+
+ cbt.append_text(*emsi);
+ actptr++;
+ }
+
+ if(prev_act!=-1)
+ {
+ cbt.set_active(prev_act);
+ }
+ else if(actptr>0) //so there is item in the list
+ {
+ cbt.set_active(0);
+ }
+ }
+
+};
+#endif //ALGOBOX_H
Added: hugo/trunk/gui/algowin.h
==============================================================================
--- (empty file)
+++ hugo/trunk/gui/algowin.h Tue Jan 3 18:30:22 2006
@@ -0,0 +1,53 @@
+// -*- C++ -*- //
+
+#ifndef ALGOWIN_H
+#define ALGOWIN_H
+
+class AlgoWin;
+
+#include <all_include.h>
+#include <algobox.h>
+#include <libgnomecanvasmm.h>
+#include <libgnomecanvasmm/polygon.h>
+
+enum {GENERAL, ALGO_NUM}; // algorithm IDs;
+
+class AlgoWin : public Gtk::Dialog
+{
+private:
+ AlgoBox * ab;
+
+protected:
+ sigc::signal<void, AlgoWin *> signal_closed;
+
+public:
+ sigc::signal<void, AlgoWin *> signal_closing()
+ {
+ return signal_closed;
+ }
+
+ AlgoWin(int algoid, std::vector<std::string> tabnames)
+ {
+ Gtk::VBox * vbox=get_vbox();
+
+ ab=new AlgoBox(tabnames);
+
+ vbox->pack_start(*ab);
+
+ add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK);
+
+ show_all_children();
+ };
+
+ void update_tablist(std::vector<std::string> tabnames)
+ {
+ ab->update_tablist(tabnames);
+ }
+
+ void on_hide()
+ {
+ signal_closed.emit(this);
+ Gtk::Dialog::on_hide();
+ }
+};
+#endif //ALGOWIN_H
Modified: hugo/trunk/gui/main_win.cc
==============================================================================
--- hugo/trunk/gui/main_win.cc (original)
+++ hugo/trunk/gui/main_win.cc Tue Jan 3 18:30:22 2006
@@ -101,6 +101,10 @@
ag->add( Gtk::Action::create("ShowMaps", "_Maps"),
sigc::mem_fun(*this, &MainWin::createMapWin));
+ ag->add( Gtk::Action::create("AlgoMenu", "_Algorithms") );
+ ag->add( Gtk::Action::create("AlgoGeneral", "_General"),
+ sigc::bind( sigc::mem_fun ( *this, &MainWin::createAlgoWin ), 0) );
+
Gtk::RadioAction::Group tool_group;
ag->add( Gtk::RadioAction::create(tool_group, "MoveItem", Gtk::StockID("gd-move"), "Move"),
sigc::bind( sigc::mem_fun ( *this, &MainWin::changeEditorialTool ), 0) );
@@ -147,6 +151,9 @@
" <menu action='ShowMenu'>"
" <menuitem action='ShowMaps'/>"
" </menu>"
+ " <menu action='AlgoMenu'>"
+ " <menuitem action='AlgoGeneral'/>"
+ " </menu>"
" </menubar>"
" <toolbar name='ToolBar'>"
" <toolitem action='FileNew' />"
@@ -206,6 +213,7 @@
tabnames[active_tab]=name;
set_title(tabnames[active_tab] + " - " + prog_name);
notebook.set_tab_label_text((Widget&)*(tabs[active_tab]), tabnames[active_tab]);
+ updateAlgoWins();
}
void MainWin::readFile(const std::string & filename)
@@ -228,6 +236,7 @@
notebook.append_page((Gtk::Widget&)(*(tabs[active_tab])));
notebook.set_current_page(size);
set_tabtitle(tabnames[active_tab]);
+ updateAlgoWins();
}
void MainWin::closeTab()
@@ -258,12 +267,13 @@
{
for(int i=active_tab+1;i<size;i++)
{
+ tabnames[i-1]=tabnames[i];
tabs[i-1]=tabs[i];
}
}
-
//if size==1 resize will delete the only element
tabs.resize(size-1);
+ tabnames.resize(size-1);
int old_active_tab=active_tab;
notebook.remove_page(active_tab);
@@ -274,17 +284,21 @@
//But after deletion it will become the first tab,
//and this should be registrated in tabs vector,
//as well.
- if(old_active_tab==0)
+ if((old_active_tab==0)&&(size!=1))
{
onChangeTab(NULL,0);
}
+ std::cout << "NAAAA" << std::endl;
+
//if this was the last page in notebook, there is
//no active_tab now
if(size==1)
{
active_tab=-1;
}
+
+ updateAlgoWins();
}
}
@@ -380,6 +394,28 @@
}
}
+void MainWin::createAlgoWin(int algoid)
+{
+ AlgoWin * aw=new AlgoWin(algoid, tabnames);
+ aw->signal_closing().connect(sigc::mem_fun(*this, &MainWin::deRegisterAlgoWin));
+ aws.insert(aw);
+ aw->show();
+}
+
+void MainWin::deRegisterAlgoWin(AlgoWin * awp)
+{
+ aws.erase(awp);
+}
+
+void MainWin::updateAlgoWins()
+{
+ std::set< AlgoWin* >::iterator awsi=aws.begin();
+ for(;awsi!=aws.end();awsi++)
+ {
+ (*awsi)->update_tablist(tabnames);
+ }
+}
+
void MainWin::changeEditorialTool(int tool)
{
active_tool=tool;
Modified: hugo/trunk/gui/main_win.h
==============================================================================
--- hugo/trunk/gui/main_win.h (original)
+++ hugo/trunk/gui/main_win.h Tue Jan 3 18:30:22 2006
@@ -4,6 +4,7 @@
#define MAIN_WIN_H
#include "all_include.h"
+#include "algowin.h"
#include "map_win.h"
#include "new_map_win.h"
#include "nbtab.h"
@@ -26,6 +27,8 @@
std::vector<NoteBookTab *> tabs;
std::vector<std::string> tabnames;
+ std::set< AlgoWin* > aws;
+
public:
///Constructor of the \ref NoteBookTab. It creates the menu and the \ref GraphDisplayerCanvas on which the graph will be drawn.
@@ -66,6 +69,10 @@
virtual void createMapWin();
+ virtual void createAlgoWin(int);
+ virtual void deRegisterAlgoWin(AlgoWin *);
+ virtual void updateAlgoWins();
+
virtual void changeEditorialTool(int);
virtual void createNewMapWinAfterSignal(NoteBookTab *, bool);
More information about the Lemon-commits
mailing list