00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "editstockmarketnames.h"
00019
00020 #include "stockmarketvector.h"
00021 #include "stockmarket.h"
00022
00023 #include <gtkmm/stock.h>
00024
00025 #include "config.h"
00026
00027
00028
00032 EditStockMarketNames::EditStockMarketNames(const StockMarketVector * const stockMarketVector) {
00033
00034 EditStockMarketNames::stockMarketVector = stockMarketVector;
00035
00036 Gtk::VBox *vbox;
00037 Gtk::Button *buttonNext, *buttonCancel, *buttonFinish;
00038 Gtk::HButtonBox *hButtonBox;
00039 Gtk::Table *tableEditStockMarketNames;
00040 Gtk::Label *label;
00041 Gtk::HSeparator *hSep;
00042
00043 set_title("editing market names");
00044 set_border_width(5);
00045 set_resizable(false);
00046 set_modal(false);
00047
00048 vbox = manage(new Gtk::VBox(false, 0));
00049 vbox->set_spacing(5);
00050 add(*vbox);
00051
00052 if (stockMarketVector->getNumberOfStockMarkets() > 0) {
00053 label = manage (new Gtk::Label("Edit the market names:", 0));
00054 vbox->pack_start(*label, Gtk::PACK_SHRINK, 0);
00055 hSep = manage(new Gtk::HSeparator());
00056 vbox->pack_start(*hSep, Gtk::PACK_SHRINK, 0);
00057
00058 tableEditStockMarketNames = manage(new Gtk::Table(2, stockMarketVector->getNumberOfStockMarkets(), false));
00059 tableEditStockMarketNames->set_spacings(5);
00060 vbox->pack_start(*tableEditStockMarketNames, Gtk::PACK_EXPAND_WIDGET, 0);
00061 entryStockMarketName.clear();
00062 for (int i = 0; i < stockMarketVector->getNumberOfStockMarkets(); i++) {
00063 stockMarket = stockMarketVector->getStockMarket(i);
00064 label = manage (new Gtk::Label("Market name:", 0));
00065 tableEditStockMarketNames->attach(*label, 0, 1, i+0, i+1);
00066 entryName = manage (new Gtk::Entry());
00067 entryName->set_text(stockMarket->getMarketName());
00068 entryName->set_max_length(20);
00069 entryName->set_width_chars(20);
00070 tableEditStockMarketNames->attach(*entryName, 1, 2, i+0, i+1);
00071 entryStockMarketName.push_back(entryName);
00072 }
00073 hSep = manage(new Gtk::HSeparator());
00074 vbox->pack_start(*hSep, Gtk::PACK_SHRINK, 0);
00075
00076 hButtonBox = manage( new Gtk::HButtonBox());
00077 hButtonBox->set_spacing(5);
00078 vbox->pack_start(*hButtonBox, Gtk::PACK_SHRINK, 0);
00079
00080 buttonCancel = manage( new Gtk::Button(Gtk::Stock::CANCEL));
00081 buttonCancel->signal_clicked().connect(slot(*this,&EditStockMarketNames::quit));
00082 hButtonBox->pack_start(*buttonCancel, Gtk::PACK_SHRINK, 0);
00083 buttonFinish = manage( new Gtk::Button(Gtk::Stock::SAVE));
00084 buttonFinish->signal_clicked().connect(slot(*this,&EditStockMarketNames::finishEditStockMarketNames));
00085 hButtonBox->pack_start(*buttonFinish, Gtk::PACK_SHRINK, 0);
00086 } else {
00087 set_title("Message");
00088 label = manage (new Gtk::Label("There are no markets!"));
00089 vbox->pack_start(*label, Gtk::PACK_SHRINK, 0);
00090
00091 buttonCancel = manage(new Gtk::Button(Gtk::Stock::OK));
00092 buttonCancel->signal_clicked().connect(slot(*this,&EditStockMarketNames::quit));
00093 vbox->pack_start(*buttonCancel, Gtk::PACK_SHRINK, 0);
00094 }
00095 show_all();
00096 }
00097
00101 EditStockMarketNames::~EditStockMarketNames() {}
00102
00103
00107 void EditStockMarketNames::quit() {
00108 delete this;
00109 }
00110
00114 void EditStockMarketNames::finishEditStockMarketNames() {
00115 for (int i = 0; i < stockMarketVector->getNumberOfStockMarkets(); i++) {
00116 stockMarket = stockMarketVector->getStockMarket(i);
00117 entryName = entryStockMarketName[i];
00118 Glib::ustring c1 = entryName->get_text();
00119 string name = locale_from_utf8 (c1);
00120 stockMarket->setMarketName(name);
00121 delete entryName;
00122 }
00123 entryStockMarketName.clear();
00124 quit();
00125 }
00126
00131 bool EditStockMarketNames::on_delete_event(GdkEventAny *event) {
00132 quit();
00133 return true;
00134 }