154 lines
4.2 KiB
C++
154 lines
4.2 KiB
C++
/*
|
|
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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "ExportPanel.h"
|
|
|
|
enum {EXPORT_ID=1, SEARCH_ID, GRID_ID};
|
|
|
|
BEGIN_EVENT_TABLE(ExportPanel, wxPanel)
|
|
EVT_BUTTON(EXPORT_ID, ExportPanel::OnButtonExport)
|
|
EVT_BUTTON(SEARCH_ID, ExportPanel::OnButtonSearch)
|
|
EVT_SHOW(ExportPanel::OnShow)
|
|
END_EVENT_TABLE()
|
|
|
|
ExportPanel::ExportPanel(KissCount* kiss, wxUI *parent) : KissPanel(kiss, parent), _operations(0)
|
|
{
|
|
DEFAULT_FONT(font);
|
|
std::vector<Account>::iterator accountIt;
|
|
std::vector<Category>::iterator categoryIt;
|
|
wxDateTime firstOfMonth;
|
|
wxRect rect = wxDisplay().GetGeometry();
|
|
|
|
wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);
|
|
wxBoxSizer *vbox2 = new wxBoxSizer(wxVERTICAL);
|
|
wxBoxSizer *hbox = new wxBoxSizer(wxHORIZONTAL);
|
|
|
|
SetSizer(vbox);
|
|
|
|
_searchButton = new wxButton(this, SEARCH_ID, _("Search"));
|
|
|
|
_banner = new SearchBanner(kiss, this, this, OnEnter);
|
|
|
|
vbox->Add(_banner, 0, wxGROW|wxALL, 5);
|
|
vbox->Add(_searchButton, 0, wxALL, 5);
|
|
|
|
_grid = new GridAccount(_kiss, this, GRID_ID, false, false, false);
|
|
|
|
hbox->Add(_grid, 0, wxGROW|wxALL, 5);
|
|
|
|
_exportButton = new wxButton(this, EXPORT_ID, _("Export"));
|
|
|
|
vbox2->Add(_exportButton, wxALL, 15);
|
|
|
|
hbox->Add(vbox2, 0, wxALL, 15);
|
|
|
|
vbox->Add(hbox, 0, wxGROW|wxALL, 5);
|
|
|
|
Fit();
|
|
|
|
SetMinSize(wxSize(rect.width-rect.x-15, rect.height-rect.y-128-25));
|
|
SetMaxSize(wxSize(rect.width-rect.x-15, rect.height-rect.y-128-25));
|
|
SetScrollbars(10, 10, 100/10, 100/10);
|
|
}
|
|
|
|
ExportPanel::~ExportPanel()
|
|
{
|
|
}
|
|
|
|
KissPanel* ExportPanel::CreatePanel()
|
|
{
|
|
return new ExportPanel(_kiss, _wxUI);
|
|
}
|
|
|
|
wxBitmapButton* ExportPanel::GetButton(int id)
|
|
{
|
|
if (!_KissButton)
|
|
_KissButton = new wxBitmapButton(_wxUI, id, wxBitmap(wxT(EXPORT_ICON), wxBITMAP_TYPE_PNG), wxDefaultPosition, wxSize(128, 128));
|
|
|
|
return _KissButton;
|
|
}
|
|
|
|
wxString ExportPanel::GetToolTip()
|
|
{
|
|
return _("Export");
|
|
}
|
|
|
|
void ExportPanel::OnEnter(void* caller, wxCommandEvent& event)
|
|
{
|
|
ExportPanel* _this = (ExportPanel*) caller;
|
|
|
|
_this->OnButtonExport(event);
|
|
}
|
|
|
|
void ExportPanel::OnButtonSearch(wxCommandEvent& event)
|
|
{
|
|
_operations = _banner->Search();
|
|
|
|
if (!_operations) return;
|
|
|
|
if (_operations->size() > 1)
|
|
wxMessageBox(wxString::Format(wxT("%d"), _operations->size()) + _(" entries found"), wxT("KissCount"), wxICON_INFORMATION | wxOK);
|
|
else if (_operations->size() == 1)
|
|
wxMessageBox(_("1 entry found"), wxT("KissCount"), wxICON_INFORMATION | wxOK);
|
|
else
|
|
{
|
|
wxMessageBox(_("No entry found"), wxT("KissCount"), wxICON_INFORMATION | wxOK);
|
|
return;
|
|
}
|
|
|
|
_grid->LoadOperations(_operations, 0, 0);
|
|
|
|
_wxUI->Layout();
|
|
}
|
|
|
|
void ExportPanel::OnButtonExport(wxCommandEvent& event)
|
|
{
|
|
if (!_operations || !_operations->size())
|
|
{
|
|
wxMessageBox(_("No operation to save"), wxT("Error"), wxICON_ERROR | wxOK);
|
|
return;
|
|
}
|
|
|
|
wxFileDialog saveFileDialog(this, _("Save as"), wxT(""), wxT(""),
|
|
_kiss->GetExportEngineExtensions(), wxFD_SAVE|wxFD_OVERWRITE_PROMPT);
|
|
|
|
if (saveFileDialog.ShowModal() == wxID_CANCEL)
|
|
return;
|
|
|
|
_exportEngine = _kiss->GetExportEngine(saveFileDialog.GetPath());
|
|
|
|
if (!_exportEngine)
|
|
{
|
|
wxMessageBox(_("Any engine can process this file !"), wxT("KissCount"), wxICON_INFORMATION | wxOK);
|
|
|
|
return ;
|
|
}
|
|
|
|
if (_exportEngine->SaveFile(_operations))
|
|
wxMessageBox(_("Operations successfuly saved"), wxT("KissCount"), wxICON_INFORMATION | wxOK);
|
|
else
|
|
wxMessageBox(_("Failed to save operations"), wxT("Error"), wxICON_ERROR | wxOK);
|
|
|
|
}
|
|
|
|
void ExportPanel::OnShow(wxShowEvent& event)
|
|
{
|
|
_wxUI->SetTitle(_("KissCount - Export"));
|
|
}
|