Mercurial > mercurial > hgweb_searcher03.cgi
comparison src/bprint.cpp @ 12:52958cd4a073
Implement Force Mask button in Batch Print Mode.
author | pyon@macmini |
---|---|
date | Sun, 18 May 2014 19:49:15 +0900 |
parents | 4967d1e2b30c |
children | bbd65edf71d4 |
comparison
equal
deleted
inserted
replaced
11:dfcf8c973219 | 12:52958cd4a073 |
---|---|
1 // Filename : bprint.cpp | 1 // Filename : bprint.cpp |
2 // Last Change: 01-Nov-2013. | 2 // Last Change: 16-May-2014. |
3 // | 3 // |
4 | 4 |
5 #include "bprint.h" | 5 #include "bprint.h" |
6 #include "marksheet.h" | 6 #include "marksheet.h" |
7 #include "dndfile.h" | 7 #include "dndfile.h" |
53 bSizerButton->Add( 0, 20, 0, 0, 5 ); | 53 bSizerButton->Add( 0, 20, 0, 0, 5 ); |
54 | 54 |
55 m_buttonClear = new wxButton( this, ID_BPCLEAR, wxT("クリア"), wxDefaultPosition, wxDefaultSize, 0 ); | 55 m_buttonClear = new wxButton( this, ID_BPCLEAR, wxT("クリア"), wxDefaultPosition, wxDefaultSize, 0 ); |
56 bSizerButton->Add( m_buttonClear, 0, wxALL, 5 ); | 56 bSizerButton->Add( m_buttonClear, 0, wxALL, 5 ); |
57 | 57 |
58 m_buttonPrint = new wxButton( this, ID_BPPRINT, wxT("印刷"), wxDefaultPosition, wxDefaultSize, 0 ); | 58 m_buttonMaskPrint = new wxButton( this, ID_BPFFMP, wxT("FFMP"), wxDefaultPosition, wxDefaultSize, 0 ); |
59 bSizerButton->Add( m_buttonMaskPrint, 0, wxALL, 5 ); | |
60 | |
61 m_buttonPrint = new wxButton( this, ID_BPPRINT, wxT("一括印刷"), wxDefaultPosition, wxDefaultSize, 0 ); | |
59 bSizerButton->Add( m_buttonPrint, 0, wxALL, 5 ); | 62 bSizerButton->Add( m_buttonPrint, 0, wxALL, 5 ); |
63 | |
64 m_buttonLdLog = new wxButton( this, ID_BPLDLOG, wxT("一括印刷ログ"), wxDefaultPosition, wxDefaultSize, 0 ); | |
65 bSizerButton->Add( m_buttonLdLog, 0, wxALL, 5 ); | |
66 | |
67 bSizerButton->Add( 0, 20, 0, 0, 5 ); | |
60 | 68 |
61 bSizerButton->Add( 0, 20, 0, 0, 5 ); | 69 bSizerButton->Add( 0, 20, 0, 0, 5 ); |
62 | 70 |
63 m_buttonClose = new wxButton( this, wxID_CANCEL, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 ); | 71 m_buttonClose = new wxButton( this, wxID_CANCEL, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 ); |
64 m_buttonClose->SetDefault(); | 72 m_buttonClose->SetDefault(); |
81 | 89 |
82 // Event Table | 90 // Event Table |
83 BEGIN_EVENT_TABLE( FrameBatchPrint, wxDialog ) | 91 BEGIN_EVENT_TABLE( FrameBatchPrint, wxDialog ) |
84 EVT_GRID_CELL_CHANGING( FrameBatchPrint::OnInput ) | 92 EVT_GRID_CELL_CHANGING( FrameBatchPrint::OnInput ) |
85 EVT_BUTTON( ID_BPCLEAR, FrameBatchPrint::OnClear ) | 93 EVT_BUTTON( ID_BPCLEAR, FrameBatchPrint::OnClear ) |
94 EVT_BUTTON( ID_BPFFMP, FrameBatchPrint::OnMaskPrint ) | |
86 EVT_BUTTON( ID_BPPRINT, FrameBatchPrint::OnPrint ) | 95 EVT_BUTTON( ID_BPPRINT, FrameBatchPrint::OnPrint ) |
96 EVT_BUTTON( ID_BPLDLOG, FrameBatchPrint::OnLoadLog ) | |
87 END_EVENT_TABLE() | 97 END_EVENT_TABLE() |
88 | 98 |
89 // Event Handlers & Functions | 99 // Event Handlers & Functions |
90 /* 氏名などを表示 */ | 100 /* 氏名などを表示 */ |
91 void FrameBatchPrint::OnInput( wxGridEvent& event ) | 101 void FrameBatchPrint::OnInput( wxGridEvent& event ) |
130 | 140 |
131 wxDir dir( path ); | 141 wxDir dir( path ); |
132 if ( !dir.IsOpened() ) return; | 142 if ( !dir.IsOpened() ) return; |
133 | 143 |
134 wxString html; | 144 wxString html; |
135 html = html + wxT("<html><body>\n"); | 145 html = wxT("<html><body>\n"); |
136 | 146 |
137 wxString file; | 147 wxString file; |
138 bool cout = dir.GetFirst( &file, wxT("*.jpg"), wxDIR_FILES ); | 148 bool cout = dir.GetFirst( &file, wxT("*.jpg"), wxDIR_FILES ); |
139 bool notyet_mask = true; | 149 bool notyet_mask = true; |
140 int n = 0; | 150 int n = 0; |
186 log.Add( logmsg ); | 196 log.Add( logmsg ); |
187 } | 197 } |
188 WriteLog( log ); | 198 WriteLog( log ); |
189 } | 199 } |
190 | 200 |
201 /* 一枚目強制マスク印刷 */ | |
202 void FrameBatchPrint::OnMaskPrint( wxCommandEvent& WXUNUSED(event) ) | |
203 { | |
204 wxArrayInt rows = m_grid->GetSelectedRows(); | |
205 if ( rows.GetCount() != 1 ) { | |
206 wxMessageDialog md( this, wxT("1件のみ選択してください."), wxT("Message"), wxOK|wxICON_INFORMATION ); | |
207 md.ShowModal(); | |
208 return; | |
209 } | |
210 | |
211 wxString path = m_grid->GetCellValue( rows[0], 2 ); | |
212 wxDir dir( path ); | |
213 if ( !dir.IsOpened() ) return; | |
214 | |
215 wxPrintDialogData pd; | |
216 wxPrinter p( &pd ); | |
217 p.PrintDialog( NULL ); | |
218 | |
219 // 印刷用の html を作成 | |
220 wxString file; | |
221 if ( dir.GetFirst( &file, wxT("*.jpg"), wxDIR_FILES ) ) { | |
222 wxString tmpdir = wxGetCwd() + wxFILE_SEP_PATH + wxT("tmp") + wxFILE_SEP_PATH; | |
223 file = path + wxFILE_SEP_PATH + file; | |
224 file.Replace( wxFILE_SEP_PATH, wxT("/") ); | |
225 wxString tmpjpg = wxString::Format( wxT("%stmp.jpg"), tmpdir ); | |
226 | |
227 wxImage img_org( file, wxBITMAP_TYPE_JPEG ); | |
228 img_org.SetRGB( m_mask1, 255, 255, 255 ); // cm name | |
229 img_org.SetRGB( m_mask2, 255, 255, 255 ); // cm no. | |
230 img_org.SetRGB( m_mask3, 255, 255, 255 ); // barcode | |
231 img_org.SaveFile( tmpjpg ); | |
232 | |
233 wxString html; | |
234 html = wxT("<html><body>\n"); | |
235 html = html + wxT("<img src=\"") + tmpjpg + wxT("\" width=\"750\" height=\"1060\"/>"); | |
236 html = html + wxT("</body></html>"); | |
237 | |
238 // start printing | |
239 wxHtmlPrintout hpout( wxT("Searcher03") ); | |
240 hpout.SetMargins( 0, 0, 0, 0, 0 ); | |
241 hpout.SetHtmlText( html, wxEmptyString, false ); | |
242 p.Print( NULL, &hpout, false ); | |
243 } | |
244 } | |
245 | |
191 /* 入力禁止 */ | 246 /* 入力禁止 */ |
192 void FrameBatchPrint::SetGridReadOnly( void ) | 247 void FrameBatchPrint::SetGridReadOnly( void ) |
193 { | 248 { |
194 for ( int r = 0; r < m_grid->GetNumberRows(); r++ ) | 249 for ( int r = 0; r < m_grid->GetNumberRows(); r++ ) |
195 for ( int c = 1; c < m_grid->GetNumberCols(); c++ ) | 250 for ( int c = 1; c < m_grid->GetNumberCols(); c++ ) |
196 m_grid->SetReadOnly( r, c, true ); | 251 m_grid->SetReadOnly( r, c, true ); |
197 } | 252 } |
198 | 253 |
199 /* 印刷ログ */ | 254 /* 印刷ログ表示 */ |
255 void FrameBatchPrint::OnLoadLog( wxCommandEvent& WXUNUSED(event) ) | |
256 { | |
257 wxFileDialog fd( this, wxT("Choose a file"), wxT("log"), wxEmptyString, wxT("log files (*.log)|bp_*.log"), wxFD_OPEN|wxFD_FILE_MUST_EXIST ); | |
258 if ( fd.ShowModal() == wxID_CANCEL ) | |
259 return; | |
260 | |
261 m_grid->ClearGrid(); | |
262 | |
263 wxTextFile logfile; | |
264 logfile.Open( fd.GetPath() ); | |
265 | |
266 // | |
267 int d = logfile.GetLineCount() - m_grid->GetNumberRows(); | |
268 if ( d > 0 ) | |
269 m_grid->AppendRows( d, true ); | |
270 | |
271 wxArrayString hhsno; | |
272 wxString hhs, path, stat; | |
273 for ( int n = 0; n < logfile.GetLineCount(); n++ ) { | |
274 hhs = logfile[n].AfterLast( wxFILE_SEP_PATH ); | |
275 stat = hhs.AfterFirst( ' ' ); | |
276 hhs = hhs.BeforeFirst( ' ' ); | |
277 path = logfile[n]; | |
278 if ( !stat.IsEmpty() ) { | |
279 path = path.BeforeFirst( ' ' ); | |
280 } | |
281 m_grid->SetCellValue( n, 0, hhs ); | |
282 m_grid->SetCellValue( n, 2, path ); | |
283 m_grid->SetCellValue( n, 3, stat ); | |
284 hhsno.Add( hhs ); | |
285 } | |
286 for ( int n = 0; n < hhsno.GetCount(); n++ ) { | |
287 wxArrayString info = wxSplit( GetHhsInfoByHhsNo( hhsno[n] ), '_', '\\' ); | |
288 m_grid->SetCellValue( n, 1, info[0] ); | |
289 } | |
290 logfile.Close(); | |
291 } | |
292 | |
293 /* 印刷ログ出力 */ | |
200 void FrameBatchPrint::WriteLog( wxArrayString logline ) | 294 void FrameBatchPrint::WriteLog( wxArrayString logline ) |
201 { | 295 { |
202 wxDateTime now = wxDateTime::Now(); | 296 wxDateTime now = wxDateTime::Now(); |
203 wxString log_file = wxGetCwd() + wxFILE_SEP_PATH + wxT("log") + wxFILE_SEP_PATH + wxT("bp_") + now.Format( wxT("%Y%m%d%H%M%S.log") ); | 297 wxString log_file = wxGetCwd() + wxFILE_SEP_PATH + wxT("log") + wxFILE_SEP_PATH + wxT("bp_") + now.Format( wxT("%Y%m%d%H%M%S.log") ); |
204 wxTextFile file( log_file ); | 298 wxTextFile file( log_file ); |