Mercurial > mercurial > hgweb_searcher03.cgi
view src/cache.cpp @ 11:dfcf8c973219
Implement Cache maker.
author | pyon@macmini |
---|---|
date | Wed, 07 May 2014 20:38:57 +0900 |
parents | |
children | 52958cd4a073 |
line wrap: on
line source
// Filename : cache.cpp // Last Change: 07-May-2014. // #include "cache.h" #include "db.h" CacheDialog::CacheDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) { this->SetSizeHints( wxDefaultSize, wxDefaultSize ); wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL ); m_datePickerBgn = new wxDatePickerCtrl( this, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DEFAULT ); bSizerTop->Add( m_datePickerBgn, 0, wxALL, 5 ); m_datePickerEnd = new wxDatePickerCtrl( this, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DEFAULT ); bSizerTop->Add( m_datePickerEnd, 0, wxALL, 5 ); m_buttonMake = new wxButton( this, ID_MKCACHE, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerTop->Add( m_buttonMake, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); m_buttonClose = new wxButton( this, ID_CLOSE, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 ); m_buttonClose->SetDefault(); bSizerTop->Add( m_buttonClose, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); this->SetSizer( bSizerTop ); this->Layout(); bSizerTop->Fit( this ); this->Centre( wxBOTH ); } CacheDialog::~CacheDialog() { } // Event Table BEGIN_EVENT_TABLE( CacheDialog, wxDialog ) EVT_BUTTON( ID_MKCACHE, CacheDialog::OnMakeCache ) EVT_BUTTON( ID_CLOSE, CacheDialog::OnClose ) END_EVENT_TABLE() // Event Handlers & Functions void CacheDialog::Setting( wxString rootdir, int w, int h ) { m_rootdir = rootdir; m_width = w; m_height = h; } void CacheDialog::OnMakeCache( wxCommandEvent& WXUNUSED(event) ) { wxDateTime b = m_datePickerBgn->GetValue(); wxDateTime e = m_datePickerEnd->GetValue(); MakeCache( b.Format( wxT("%Y%m%d")), e.Format( wxT("%Y%m%d")) ); } void CacheDialog::MakeCache( wxString from, wxString to ) { wxArrayString path = GetPathes( from, to ); wxString cachedir = wxGetCwd() + wxFILE_SEP_PATH + wxT("cache"); for ( int i = 0; i < path.GetCount(); i++ ) { wxArrayString files; wxDir::GetAllFiles( path[i], &files, wxT("*.*"), wxDIR_DEFAULT ); for ( int j = 0; j < files.GetCount(); j++ ) { wxImage image( files[j], wxBITMAP_TYPE_JPEG ); wxImage output = image.Scale( m_width, m_height, wxIMAGE_QUALITY_HIGH ); wxString buf = files[j]; buf.Replace( m_rootdir, cachedir, false ); buf = buf.BeforeLast( '.' ) + wxT(".png"); wxFileName tf( buf ); if ( !tf.Exists() ) tf.Mkdir( wxS_DIR_DEFAULT, wxPATH_MKDIR_FULL ); output.SaveFile( buf, wxBITMAP_TYPE_PNG ); } } wxMessageBox( wxT("cache updated.") ); } void CacheDialog::OnClose( wxCommandEvent& WXUNUSED(event) ) { Close(); }