/* Copyright 2010-2011 Grégory Soutadé This file is part of KissCount. KissCount is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. KissCount is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with KissCount. If not, see . */ /*#include "AccountPanel.hpp" #include "PreferencesPanel.hpp" #include "UsersDialog.hpp" #include "GenerateDialog.hpp" #include "SearchPanel.hpp" #include "StatsPanel.hpp" #include "ImportPanel.hpp" #include "ExportPanel.hpp" #include "grid/wxMyGrid.hpp" #include "grid/wxGridCellFastBoolEditor.hpp" #include "grid/wxGridCellButtonRenderer.hpp" #include "grid/wxGridCellButtonEditor.hpp" */ #include "wxUI.hpp" enum {BUTTON_CHANGE_USER_ID=-4, BUTTON_ABOUT_ID=-5, BUTTON_QUIT_ID=-6}; std::string wxUI::months[12] ; QColor wxUI::categoryColors[MAX_CATEGORY] = {QColor(0x00, 0x45, 0x86), QColor(0xFF, 0x3E, 0x0E), QColor(0xFF, 0xD3, 0x20), QColor(0x58, 0x9D, 0x1B), QColor(0x7E, 0x00, 0x21), QColor(0x83, 0xCC, 0xFF), QColor(0x31, 0x40, 0x04), QColor(0xB0, 0xCF, 0x00), QColor(0x4B, 0x1F, 0x6F), QColor(0xFF, 0x93, 0x0E), QColor(0xC5, 0x00, 0x0D), QColor(0x00, 0x84, 0xD1)}; wxUI::wxUI(KissCount* kiss, const QString& title) : QFrame(0), _kiss(kiss), _curPanel(0), _locale(0), _needReload(false) { setWindowTitle(title); // _vbox = new wxBoxSizer(wxVERTICAL); // _buttonsBox = new wxBoxSizer(wxHORIZONTAL); // // ButtonPanel* buttons = new ButtonPanel(_kiss, this); // // wxMenu *menuFile = new wxMenu; // // menuFile->Append( ID_About, wxT("&About...") ); // // menuFile->AppendSeparator(); // // menuFile->Append( ID_Quit, wxT("E&xit") ); // // wxMenuBar *menuBar = new wxMenuBar; // // menuBar->Append( menuFile, wxT("&File") ); // // SetMenuBar( menuBar ); // // CreateStatusBar(); // // SetStatusText( wxT("Welcome to wxWidgets!") ); // _buttonsBox->Add(new wxBitmapButton(this, BUTTON_CHANGE_USER_ID, wxBitmap(wxT(CHANGE_USER_ICON), wxBITMAP_TYPE_PNG), wxDefaultPosition, wxSize(128, 128))); // _buttonsBox->Add(new wxBitmapButton(this, BUTTON_ABOUT_ID, wxBitmap(wxT(ABOUT_ICON), wxBITMAP_TYPE_PNG), wxDefaultPosition, wxSize(128, 128))); // _buttonsBox->Add(new wxBitmapButton(this, BUTTON_QUIT_ID, wxBitmap(wxT(QUIT_ICON), wxBITMAP_TYPE_PNG), wxDefaultPosition, wxSize(128, 128))); // SetSizer(_vbox); // _vbox->Add(_buttonsBox, 0, wxGROW); } wxUI::~wxUI() { int i; // for (i=0; i<(int)_panels.size(); i++) // Disconnect(i, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(wxUI::OnButtonClicked), _panels[i], this); if (_locale) delete _locale; } bool wxUI::SetLanguage(std::string language) { bool res = true; // if (_locale) delete _locale; // _locale = 0; // // load language if possible, fall back to english otherwise // if(wxLocale::IsAvailable(language)) // { // _locale = new wxLocale( language, wxLOCALE_CONV_ENCODING ); // #ifdef __WXGTK__ // _locale->AddCatalogLookupPathPrefix(wxT(LANG_ROOT)); // #endif // _locale->AddCatalog(wxT("frenchpp")); // _locale->AddCatalog(wxT("kisscount")); // _language = (wxLanguage) language; // } // if (_locale == 0 || !_locale->IsOk()) // { // if (_locale) delete _locale; // _locale = new wxLocale(); // #ifdef __WXGTK__ // _locale->AddCatalogLookupPathPrefix(wxT(LANG_ROOT)); // #endif // _locale->AddCatalog(wxT("kisscount")); // _language = wxLANGUAGE_ENGLISH; // res = false; // } // months[0] = _("january"); // months[1] = _("february"); // months[2] = _("marchpp"); // months[3] = _("april"); // months[4] = _("may"); // months[5] = _("june"); // months[6] = _("july"); // months[7] = _("august"); // months[8] = _("september"); // months[9] = _("october"); // months[10] = _("november"); // months[11] = _("december") ; return res; } #define ADD_PANEL(panelName, id) \ panel = new panelName(_kiss, this); \ button = panel->GetButton(id); \ button->SetToolTip(panel->GetToolTip()); \ _buttonsBox->Insert(id, button); \ _buttons.insert(_buttons.begin()+id, button); \ _panels.push_back(panel); \ Connect(id, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(wxUI::OnButtonClicked), panel, this); void wxUI::InitPanels() { // KissPanel* panel; // wxBitmapButton* button; // _panels.clear(); // ADD_PANEL(AccountPanel, 0); // ADD_PANEL(StatsPanel, 1); // ADD_PANEL(SearchPanel, 2); // ADD_PANEL(PreferencesPanel, 3); // ADD_PANEL(ImportPanel, 4); // ADD_PANEL(ExportPanel, 5); } void wxUI::LoadPanels() { // std::vector::iterator it; // KissPanel* temp; // int i; // if (_curPanel) // { // _vbox->Detach(_curPanel); // _curPanel = 0; // } // if (_panels.size()) // { // for (i=0; i<(int)_panels.size(); i++) // { // temp = _panels[i]->CreatePanel(); // Disconnect(i, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(wxUI::OnButtonClicked), _panels[i], this); // _panels[i] = temp; // Connect(i, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(wxUI::OnButtonClicked), temp, this); // _buttons[i]->SetToolTip(temp->GetToolTip()); // } // } // else // InitPanels(); } void wxUI::LoadUser() { User* user = _kiss->GetUser(); if (user->_preferences["language"].size()) SetLanguage(user->GetLanguage()); LoadPanels(); if (_panels.size()) ShowPanel(_panels[0]); } void wxUI::ShowPanel(KissPanel* panel) { // wxShowEvent event; // int i; // User* user = _kiss->GetUser(); // if (!panel) return; // if (_curPanel) // { // _vbox->Detach(_curPanel); // _curPanel->Hide(); // } // if (_needReload) // { // user->InvalidateOperations(); // for(i=0; i<(int)_panels.size(); i++) // if (_panels[i] == panel) break; // LoadPanels(); // _needReload = false; // _curPanel = _panels[i]; // } // else // _curPanel = panel; // _curPanel->OnShow(event); // _vbox->Add(_curPanel); // _curPanel->Show(); // Layout(); } void wxUI::OnButtonClicked(QEvent& event) { // ShowPanel(_panels[event.GetId()]); } void wxUI::OnButtonChangeUser(QEvent& event) { ChangeUser(); } void wxUI::ChangeUser() { // UsersDialog u(_kiss, this); } void wxUI::OnButtonAbout(QEvent& event) { // wxMessageBox( _("Personal accounting software\n\nhttp://indefero.soutade.fr/p/kisscount/\n\nLicenced under GNU GPL v3\n\nCopyright (C) 2010-2011 Grégory Soutadé"), // wxT("KissCount " APP_VERSION "\n\n"), // wxOK | wxICON_INFORMATION, this ); } void wxUI::OnButtonQuit(QEvent& event) { // wxMessageDialog dialog(this, _("Quit KissCount ?"), wxT("KissCount"), wxYES_NO); // if (dialog.ShowModal() == wxID_NO) // { // return; // } // Close(true); } void wxUI::GenerateMonth(int month, int year) { // ((AccountPanel*)_panels[0])->GenerateMonth(month, year); } void wxUI::KillMe() { // std::vector::iterator it; // if (_curPanel) // { // _vbox->Detach(_curPanel); // _curPanel = 0; // } // for (it=_panels.begin(); it!= _panels.end(); it++) // { // if (*it) delete *it; // _buttonsBox->Remove(0); // _buttons.erase(_buttons.begin()); // } // _panels.clear(); } void wxUI::NeedReload() { _needReload = true; }