COIN-OR::LEMON - Graph Library

source: glemon-0.x/algowin.cc

Last change on this file was 174:95872af46fc4, checked in by Alpar Juttner, 13 years ago

Add copyright headers

File size: 2.8 KB
Line 
1/* -*- C++ -*-
2 *
3 * This file is a part of LEMON, a generic C++ optimization library
4 *
5 * Copyright (C) 2003-2006
6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7 * (Egervary Research Group on Combinatorial Optimization, EGRES).
8 *
9 * Permission to use, modify and distribute this software is granted
10 * provided that this copyright notice appears in all copies. For
11 * precise terms see the accompanying LICENSE file.
12 *
13 * This software is provided "AS IS" with no warranty of any kind,
14 * express or implied, and with no claim as to its suitability for any
15 * purpose.
16 *
17 */
18
19#include <algowin.h>
20#include <kruskalbox.h>
21#include <dijkstrabox.h>
22
23sigc::signal<void, AlgoWin *> AlgoWin::signal_closing()
24{
25  return signal_closed;
26}
27
28sigc::signal<void, AlgoWin *, std::string> AlgoWin::signal_maplist_needed()
29{
30  return signal_maplist_need;
31}
32
33bool AlgoWin::closeIfEscapeIsPressed(GdkEventKey* e)
34{
35  if(e->keyval==GDK_Escape)
36  {
37    on_hide();
38  }
39  return true;
40}
41
42AlgoWin::AlgoWin(int algoid, std::vector<std::string> tabnames)
43{
44  signal_key_press_event().connect(sigc::mem_fun(*this, &AlgoWin::closeIfEscapeIsPressed));
45
46  Gtk::VBox * vbox=new Gtk::VBox();
47  vbox->set_spacing(5);
48
49  Gtk::Label * label=new Gtk::Label("Select graph:");
50
51  switch(algoid)
52    {
53    case 0:
54      ab=new AlgoBox(tabnames);
55      set_title("Algo Win Demo");
56      break;
57    case 1:
58      ab=new KruskalBox(tabnames);
59      set_title("Kruskal Algorithm");
60      break;
61    case 2:
62      ab=new DijkstraBox(tabnames);
63      set_title("Dijkstra Algorithm");
64      break;
65    case 3:
66      ab=new SuurballeBox(tabnames);
67      set_title("Suurballe Algorithm");
68      break;
69    default:
70      break;
71    }
72  ab->signal_maplist_needed().connect(sigc::mem_fun(*this, &AlgoWin::emit_tab_change));
73  ab->signal_newmapwin_needed().connect(sigc::mem_fun(*this, &AlgoWin::emit_new_map_signal));
74
75  runbutton=new Gtk::Button("Run");
76  runbutton->signal_released().connect(sigc::mem_fun(*ab,&AlgoBox::run));
77  runbutton->signal_activate().connect(sigc::mem_fun(*ab,&AlgoBox::run));
78
79  closebutton=new Gtk::Button("Close");
80  closebutton->signal_released().connect(sigc::mem_fun(*this,&AlgoWin::on_hide));
81  closebutton->signal_activate().connect(sigc::mem_fun(*this,&AlgoWin::on_hide));
82     
83  Gtk::HBox * hbox=new Gtk::HBox();
84
85  hbox->pack_start(*runbutton);
86  hbox->pack_start(*closebutton);
87
88  vbox->pack_start(*label);
89  vbox->pack_start(*ab);
90  vbox->pack_start(*hbox);
91     
92  add(*vbox);
93
94  show_all_children();
95};
96
97void AlgoWin::update_tablist(std::vector<std::string> tabnames)
98{
99  ab->update_tablist(tabnames);
100}
101
102void AlgoWin::update_maplist(MapStorage * mapstorage)
103{
104  ab->update_maplist(mapstorage);
105}
106
107void AlgoWin::on_hide()
108{
109  signal_closed.emit(this);
110  Gtk::Window::on_hide();
111}
112
113void AlgoWin::emit_tab_change(std::string newtab)
114{
115  signal_maplist_need.emit(this, newtab);
116}
Note: See TracBrowser for help on using the repository browser.