Main Page   Class Hierarchy   Data Structures   File List   Data Fields  

preferencesdialog.cpp

00001 /***************************************************************************
00002                           preferencesdialog.cpp  -  description
00003                              -------------------
00004     begin                : Tue Jan 28 2003
00005     copyright            : (C) 2003 by Michael Otto
00006     email                : Michael.Otto@saskathex.de
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #include "preferencesdialog.h"
00019 #include "stockmarketvector.h"
00020 #include "preferences.h"
00021 #include "config.h"
00022 
00023 
00024 #include <gtkmm/stock.h>
00025 
00030 PreferencesDialog::PreferencesDialog(StockMarketVector * const stockMarketVector, Preferences * const preferences){
00031 
00032 #ifdef DEBUG
00033   cout << "starting Preferences Dialog" << endl;
00034 #endif  
00035   PreferencesDialog::stockMarketVector = stockMarketVector;
00036   PreferencesDialog::preferences = preferences;
00037 
00038   stringStockmarket = "Stockmarket"; stringTeletext = "Teletext";
00039   stringSaveOptions = "Save Options";
00040   stringOther = "Other"; stringOnExit = "On Exit";
00041   
00042   set_title("Preferences");
00043   set_border_width(5);
00044   set_resizable(false);
00045   set_modal(true);
00046 
00047   vbox = manage(new Gtk::VBox(false, 0));
00048   vbox->set_spacing(5);
00049   add(*vbox);
00050   
00051   hbox = manage(new Gtk::HBox(false, 0));
00052   hbox->set_spacing(5);
00053   vbox->pack_start(*hbox, Gtk::PACK_SHRINK, 0);
00054   
00055   Gtk::Frame *frame = manage( new Gtk::Frame("Categories"));
00056   hbox->pack_start(*frame);
00057   // add the TreeView
00058   scrolledWindowTreeView = manage (new Gtk::ScrolledWindow());
00059   scrolledWindowTreeView->set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
00060   scrolledWindowTreeView->set_size_request(150,250);
00061   scrolledWindowTreeView->set_border_width(5);
00062   scrolledWindowTreeView->add(m_TreeView);
00063   frame->add(*scrolledWindowTreeView);
00064   // create the Tree model
00065   m_refTreeModel = Gtk::TreeStore::create(m_Columns);
00066   m_TreeView.set_model(m_refTreeModel);
00067   m_TreeView.set_reorderable(false);
00068   // fill the TreeView's model
00069   Gtk::TreeModel::Row row = *(m_refTreeModel->append());
00070   row[m_Columns.m_col_name] = stringStockmarket;
00071   Gtk::TreeModel::Row childrow = *(m_refTreeModel->append(row.children()));
00072 /*  childrow[m_Columns.m_col_name] = stringOrdering;
00073   childrow = *(m_refTreeModel->append(row.children()));*/
00074   childrow[m_Columns.m_col_name] = stringTeletext;
00075   
00076   row = *(m_refTreeModel->append());
00077   row[m_Columns.m_col_name] = stringSaveOptions;
00078  
00079   row = *(m_refTreeModel->append());
00080   row[m_Columns.m_col_name] = stringOther;
00081   childrow = *(m_refTreeModel->append(row.children()));
00082   childrow[m_Columns.m_col_name] = stringOnExit;
00083   // Add the TreeView's view columns
00084   m_TreeView.append_column("Categories", m_Columns.m_col_name);
00085   m_TreeView.set_headers_visible(false);
00086   m_TreeView.expand_all();
00087   
00088   // connecting the selection signal handler
00089   Glib::RefPtr<Gtk::TreeSelection> refTreeSelection = m_TreeView.get_selection();
00090   refTreeSelection->signal_changed().connect(slot(*this, &PreferencesDialog::eventRowSelected));  
00091 
00092   hboxFrame = NULL;
00093     
00094   hSep = manage(new Gtk::HSeparator());
00095   vbox->pack_start(*hSep, Gtk::PACK_SHRINK, 0);
00096   
00097   Gtk::HButtonBox *hButtonBox;
00098   Gtk::Button *buttonHelp, *buttonFinish;
00099   hButtonBox = manage( new Gtk::HButtonBox());
00100   hButtonBox->set_spacing(5);
00101   vbox->pack_start(*hButtonBox, Gtk::PACK_SHRINK, 0);
00102   buttonHelp = manage( new Gtk::Button(Gtk::Stock::HELP));
00103   //buttonHelp->signal_clicked().connect(slot(*this,&PreferencesDialog::quit));
00104   hButtonBox->pack_start(*buttonHelp, Gtk::PACK_SHRINK, 0);
00105   buttonFinish = manage( new Gtk::Button(Gtk::Stock::OK));
00106   buttonFinish->signal_clicked().connect(slot(*this,&PreferencesDialog::finish));
00107   hButtonBox->pack_start(*buttonFinish, Gtk::PACK_SHRINK, 0);
00108   
00109   // call all init methods
00110   initSaveOptions();
00111   
00112   show_all();
00113 }
00114 
00115 
00119 PreferencesDialog::~PreferencesDialog(){
00120   // call all destroy methods
00121   destroySaveOptions();
00122 }
00123 
00127 void PreferencesDialog::quit() {
00128 #ifdef DEBUG
00129   cout << "quiting Preferences Dialog" << endl;
00130 #endif
00131   delete this;
00132 }
00133 
00137 void PreferencesDialog::finish() {
00138   quit();
00139 }
00140 
00141 
00142   /* init methods */  
00146 void PreferencesDialog::initSaveOptions() {
00147   autoSaveOnExitCheckButton = new Gtk::CheckButton("Autosave on Exit");
00148   autoSaveOnExitCheckButton->set_active(preferences->getAutoSaveOnExit());
00149   autoSaveOnExitCheckButton->signal_clicked().connect(slot(*this,&PreferencesDialog::eventAutoSaveOnExitCheckButton));
00150   saveDialogOnExitCheckButton = new Gtk::CheckButton("Show Save Dialog on Exit");
00151   saveDialogOnExitCheckButton->set_active(preferences->getSaveDialogOnExit());
00152   saveDialogOnExitCheckButton->signal_clicked().connect(slot(*this,&PreferencesDialog::eventSaveDialogOnExitCheckButton));
00153 }
00154 
00155   
00156   /* destroy methods */
00160 void PreferencesDialog::destroySaveOptions() {
00161   delete autoSaveOnExitCheckButton;
00162   delete saveDialogOnExitCheckButton;
00163 }
00164 
00165 
00166   
00170 void PreferencesDialog::eventRowSelected() {
00171   Glib::RefPtr<Gtk::TreeSelection> refTreeSelection = m_TreeView.get_selection();
00172   Gtk::TreeModel::iterator iter = refTreeSelection->get_selected();
00173   if(iter) {
00174     Gtk::TreeModel::Row row = *iter;
00175     Glib::ustring strText = row[m_Columns.m_col_name];
00176     string s = locale_from_utf8 (strText);
00177 #ifdef DEBUG
00178     cout << "selected row " << s << endl;
00179 #endif
00180     if (hboxFrame != NULL) delete hboxFrame;
00181     hboxFrame = manage(new Gtk::Frame());
00182     hboxFrame->set_size_request(250,-1);
00183     hbox->pack_start(*hboxFrame, Gtk::PACK_SHRINK, 0);
00184     vboxOptions = manage(new Gtk::VBox(false, 0));
00185     vboxOptions->set_border_width(5);
00186     vboxOptions->set_spacing(5);
00187     hboxFrame->add(*vboxOptions);
00188     if (s == stringStockmarket) {
00189       hboxFrame->set_label("Stockmarket"); 
00190     }
00191     if (s == stringTeletext) {
00192       hboxFrame->set_label("Teletext"); 
00193     }
00194     if (s == stringSaveOptions) {
00195       hboxFrame->set_label("Save Options"); 
00196       {
00197         Gtk::Frame *frame = manage( new Gtk::Frame("Autosave"));
00198         vboxOptions->pack_start(*frame, Gtk::PACK_SHRINK, 0);
00199         Gtk::VBox *box = manage(new Gtk::VBox(false, 0));
00200         box->set_border_width(5);
00201         box->set_spacing(5);
00202         frame->add(*box);
00203         box->pack_start(*autoSaveOnExitCheckButton, Gtk::PACK_SHRINK, 0);
00204       }
00205       {
00206         Gtk::Frame *frame = manage( new Gtk::Frame("Save Dialog on Exit"));
00207         vboxOptions->pack_start(*frame, Gtk::PACK_SHRINK, 0);
00208         Gtk::VBox *box = manage(new Gtk::VBox(false, 0));
00209         box->set_border_width(5);
00210         box->set_spacing(5);
00211         frame->add(*box);
00212         box->pack_start(*saveDialogOnExitCheckButton, Gtk::PACK_SHRINK, 0);
00213       }
00214     }
00215     if (s == stringOther) {
00216       hboxFrame->set_label("Other"); 
00217     }
00218     if (s == stringOnExit) {
00219       hboxFrame->set_label("On Exit"); 
00220     }
00221   }
00222   show_all();
00223 }
00224 
00228 void PreferencesDialog::eventAutoSaveOnExitCheckButton() {
00229   bool choice = autoSaveOnExitCheckButton->get_active();
00230   preferences->setAutoSaveOnExit(choice);
00231   if (choice == true) {
00232     saveDialogOnExitCheckButton->hide();
00233     preferences->setSaveDialogOnExit(false);
00234     saveDialogOnExitCheckButton->set_active(false);
00235   } else {
00236     saveDialogOnExitCheckButton->show();
00237   }
00238 }
00239 
00243 void PreferencesDialog::eventSaveDialogOnExitCheckButton() {
00244   bool choice = saveDialogOnExitCheckButton->get_active();
00245   preferences->setSaveDialogOnExit(choice);
00246 }
00247 
00252 bool PreferencesDialog::on_delete_event(GdkEventAny *event) {
00253   quit();
00254   return true;
00255 }

Generated on Tue May 27 21:24:02 2003 for gstockcalc by doxygen1.3-rc3