1 // Copyright (C) 2008, 2009 Ben Asselstine
3 // This program is free software; you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation; either version 3 of the License, or
6 // (at your option) any later version.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU Library General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 #include <sigc++/functors/mem_fun.h>
24 #include "select-hidden-ruin-dialog.h"
26 #include "glade-helpers.h"
27 #include "gui/input-helpers.h"
28 #include "ucompose.hpp"
32 #include "playerlist.h"
34 SelectHiddenRuinDialog::SelectHiddenRuinDialog()
36 selected_hidden_ruin = 0;
38 Glib::RefPtr<Gtk::Builder> xml
39 = Gtk::Builder::create_from_file(get_glade_path()
40 + "/select-hidden-ruin-dialog.ui");
42 xml->get_widget("dialog", dialog);
44 xml->get_widget("select_button", select_button);
46 xml->get_widget("hidden_ruins_treeview", hidden_ruins_treeview);
47 hidden_ruins_list = Gtk::ListStore::create(hidden_ruins_columns);
48 hidden_ruins_treeview->set_model(hidden_ruins_list);
49 hidden_ruins_treeview->append_column("", hidden_ruins_columns.name);
50 hidden_ruins_treeview->set_headers_visible(false);
52 Ruinlist *ruinlist = Ruinlist::getInstance();
53 Ruinlist::iterator iter = ruinlist->begin();
54 for (;iter != ruinlist->end(); iter++)
55 if ((*iter)->isHidden() &&
56 (*iter)->getOwner() == Playerlist::getInstance()->getNeutral())
59 guint32 max = ruinlist->size();
62 Gtk::TreeModel::Row row;
63 row = hidden_ruins_treeview->get_model()->children()[0];
65 hidden_ruins_treeview->get_selection()->select(row);
68 select_button->set_sensitive(false);
72 SelectHiddenRuinDialog::~SelectHiddenRuinDialog()
76 void SelectHiddenRuinDialog::addHiddenRuin(Ruin *ruin)
80 Gtk::TreeIter i = hidden_ruins_list->append();
81 s = String::ucompose("%1 (%2, %3)", ruin->getName(), ruin->getPos().x,
83 (*i)[hidden_ruins_columns.name] = s;
84 (*i)[hidden_ruins_columns.ruin] = ruin;
87 void SelectHiddenRuinDialog::set_parent_window(Gtk::Window &parent)
89 dialog->set_transient_for(parent);
90 //dialog->set_position(Gtk::WIN_POS_CENTER_ON_PARENT);
93 void SelectHiddenRuinDialog::run()
96 int response = dialog->run();
98 if (response != Gtk::RESPONSE_ACCEPT)
99 selected_hidden_ruin = 0;
102 Glib::RefPtr<Gtk::TreeSelection> selection =
103 hidden_ruins_treeview->get_selection();
104 Gtk::TreeModel::iterator iterrow = selection->get_selected();
108 Gtk::TreeModel::Row row = *iterrow;
109 selected_hidden_ruin = row[hidden_ruins_columns.ruin];