9
|
1 // Filename : preview.cpp
|
10
|
2 // Last Change: 28-Apr-2014.
|
9
|
3 //
|
|
4
|
|
5 #include "preview.h"
|
|
6 #define THUMB_W 60
|
|
7 #define THUMB_H 75
|
|
8
|
10
|
9 // サムネイルパネル
|
|
10 PThumbnailPanel::PThumbnailPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
|
|
11 : wxPanel( parent, id, pos, size, style )
|
|
12 {
|
|
13 m_parent = (PreviewDialog*)parent;
|
|
14
|
|
15 wxBoxSizer* bSizer = new wxBoxSizer( wxVERTICAL );
|
|
16 this->SetBackgroundColour( wxColour( 192, 192, 192 ) );
|
|
17
|
|
18 wxString thumb = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("thumbnail.png");
|
|
19 wxBitmap bmp = wxBitmap( thumb, wxBITMAP_TYPE_PNG );
|
|
20
|
|
21 m_bitmap0 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
|
|
22 bSizer->Add( m_bitmap0, 0, wxALL|wxALIGN_CENTER, 5 );
|
|
23 m_bitmap0->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick0 ), NULL, this );
|
|
24
|
|
25 m_bitmap1 = new wxStaticBitmap(this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
|
|
26 bSizer->Add( m_bitmap1, 0, wxALL|wxALIGN_CENTER, 5 );
|
|
27 m_bitmap1->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick1 ), NULL, this );
|
|
28
|
|
29 m_bitmap2 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
|
|
30 bSizer->Add( m_bitmap2, 0, wxALL|wxALIGN_CENTER, 5 );
|
|
31 m_bitmap2->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick2 ), NULL, this );
|
|
32
|
|
33 m_bitmap3 = new wxStaticBitmap(this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
|
|
34 bSizer->Add( m_bitmap3, 0, wxALL|wxALIGN_CENTER, 5 );
|
|
35 m_bitmap3->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick3 ), NULL, this );
|
|
36
|
|
37 m_bitmap4 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
|
|
38 bSizer->Add( m_bitmap4, 0, wxALL|wxALIGN_CENTER, 5 );
|
|
39 m_bitmap4->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick4 ), NULL, this );
|
|
40
|
|
41 m_bitmap5 = new wxStaticBitmap(this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
|
|
42 bSizer->Add( m_bitmap5, 0, wxALL|wxALIGN_CENTER, 5 );
|
|
43 m_bitmap5->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick5 ), NULL, this );
|
|
44
|
|
45 this->SetSizer( bSizer );
|
|
46 this->Layout();
|
|
47 }
|
|
48
|
|
49 PThumbnailPanel::~PThumbnailPanel()
|
|
50 {
|
|
51 m_bitmap0->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick0 ), NULL, this );
|
|
52 m_bitmap1->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick1 ), NULL, this );
|
|
53 m_bitmap2->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick2 ), NULL, this );
|
|
54 m_bitmap3->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick3 ), NULL, this );
|
|
55 m_bitmap4->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick4 ), NULL, this );
|
|
56 m_bitmap5->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick5 ), NULL, this );
|
|
57 }
|
|
58
|
|
59 // Functions
|
|
60 /* サムネイル表示 */
|
|
61 void PThumbnailPanel::SetFiles( wxArrayString imagefiles, wxArrayString cachefiles )
|
|
62 {
|
|
63 m_imagefiles = imagefiles;
|
|
64
|
|
65 wxBitmap bmp;
|
|
66 bmp.LoadFile( cachefiles[0], wxBITMAP_TYPE_PNG ); m_bitmap0->SetBitmap( bmp );
|
|
67 bmp.LoadFile( cachefiles[1], wxBITMAP_TYPE_PNG ); m_bitmap1->SetBitmap( bmp );
|
|
68 bmp.LoadFile( cachefiles[2], wxBITMAP_TYPE_PNG ); m_bitmap2->SetBitmap( bmp );
|
|
69 bmp.LoadFile( cachefiles[3], wxBITMAP_TYPE_PNG ); m_bitmap3->SetBitmap( bmp );
|
|
70 bmp.LoadFile( cachefiles[4], wxBITMAP_TYPE_PNG ); m_bitmap4->SetBitmap( bmp );
|
|
71 bmp.LoadFile( cachefiles[5], wxBITMAP_TYPE_PNG ); m_bitmap5->SetBitmap( bmp );
|
|
72 }
|
|
73 /* 画像クリックで拡大表示 */
|
|
74 void PThumbnailPanel::OnClick0( wxMouseEvent& WXUNUSED(event) ) { Preview( 0 ); }
|
|
75 void PThumbnailPanel::OnClick1( wxMouseEvent& WXUNUSED(event) ) { Preview( 1 ); }
|
|
76 void PThumbnailPanel::OnClick2( wxMouseEvent& WXUNUSED(event) ) { Preview( 2 ); }
|
|
77 void PThumbnailPanel::OnClick3( wxMouseEvent& WXUNUSED(event) ) { Preview( 3 ); }
|
|
78 void PThumbnailPanel::OnClick4( wxMouseEvent& WXUNUSED(event) ) { Preview( 4 ); }
|
|
79 void PThumbnailPanel::OnClick5( wxMouseEvent& WXUNUSED(event) ) { Preview( 5 ); }
|
|
80 void PThumbnailPanel::Preview( int n )
|
|
81 {
|
|
82 if ( m_imagefiles.GetCount() < n + 1 ) return;
|
|
83 m_parent->SetPreviewImage( n );
|
|
84 }
|
|
85
|
|
86
|
|
87 ////////////////////////////////////////////////////////
|
|
88 // プレビューダイアログ
|
9
|
89 PreviewDialog::PreviewDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style )
|
|
90 : wxDialog( parent, id, title, pos, size, style )
|
|
91 {
|
|
92 wxBoxSizer* bSizerTop = new wxBoxSizer( wxHORIZONTAL );
|
|
93
|
|
94 m_scrolledWindow = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxALWAYS_SHOW_SB );
|
|
95 m_bitmap = new wxStaticBitmap( m_scrolledWindow, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
|
|
96 bSizerTop->Add( m_scrolledWindow, 1, wxALL|wxEXPAND, 5 );
|
|
97
|
|
98 wxBoxSizer* bSizerMenu = new wxBoxSizer( wxVERTICAL );
|
|
99
|
10
|
100 m_thumbPanel = new PThumbnailPanel( this, wxID_ANY, wxDefaultPosition, wxSize( 100, -1 ), wxSUNKEN_BORDER );
|
|
101 bSizerMenu->Add( m_thumbPanel, 0, wxALL|wxEXPAND, 5 );
|
9
|
102
|
|
103 m_buttonPrint = new wxButton( this, ID_PRINT, wxT("印刷"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
104 bSizerMenu->Add( m_buttonPrint, 0, wxALL, 5 );
|
|
105 bSizerMenu->Add( 0, 0, 1, 0, 5 );
|
|
106
|
|
107 m_buttonClose = new wxButton( this, wxID_CANCEL, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 );
|
|
108 m_buttonClose->SetDefault();
|
|
109 bSizerMenu->Add( m_buttonClose, 0, wxALL, 5 );
|
|
110
|
|
111 bSizerTop->Add( bSizerMenu, 0, wxALL|wxEXPAND, 5 );
|
|
112
|
|
113 this->SetSizer( bSizerTop );
|
|
114 this->Layout();
|
|
115 }
|
|
116
|
|
117 PreviewDialog::~PreviewDialog()
|
|
118 {
|
|
119 }
|
|
120
|
|
121 // Event Table
|
|
122 BEGIN_EVENT_TABLE( PreviewDialog, wxDialog )
|
|
123 EVT_BUTTON( ID_PRINT, PreviewDialog::OnPrint )
|
|
124 END_EVENT_TABLE()
|
|
125
|
|
126 #define WIDTH 2480
|
|
127 #define HEIGHT 3509
|
10
|
128 void PreviewDialog::SetPreviewImage( int n )
|
9
|
129 {
|
|
130 int w, h;
|
|
131 m_scrolledWindow->GetSize( &w, &h );
|
|
132 h = h * WIDTH / ( w - 200 );
|
|
133
|
|
134 wxImage img;
|
10
|
135 img.LoadFile( m_imagefiles[n], wxBITMAP_TYPE_JPEG );
|
9
|
136 wxBitmap bmp( img.Scale( w, h, wxIMAGE_QUALITY_HIGH ) );
|
|
137 m_bitmap->SetBitmap( bmp );
|
|
138
|
|
139 m_scrolledWindow->SetScrollbars( 10, 10, 0, h/10 );
|
10
|
140 m_preview = m_imagefiles[n];
|
|
141 }
|
|
142
|
|
143 void PreviewDialog::SetFiles( wxArrayString imagefiles, wxArrayString cachefiles )
|
|
144 {
|
|
145 m_imagefiles = imagefiles;
|
|
146 m_cachefiles = cachefiles;
|
|
147 m_thumbPanel->SetFiles( m_imagefiles, m_cachefiles );
|
9
|
148 }
|
|
149
|
|
150 void PreviewDialog::OnPrint( wxCommandEvent& WXUNUSED(envet) )
|
|
151 {
|
|
152 wxString html;
|
|
153 html = html + wxT("<html><body>\n");
|
|
154
|
|
155 wxString tmpjpg = wxGetCwd() + wxFILE_SEP_PATH + wxT("tmp") + wxFILE_SEP_PATH + wxT("preview.jpg");
|
|
156
|
|
157 wxCopyFile( m_preview, tmpjpg, true );
|
|
158
|
|
159 html = html + wxT("<img src=\"") + tmpjpg + wxT("\" width=\"750\" height=\"1060\"/>");
|
|
160 html = html + wxT("</body></html>");
|
|
161
|
|
162 // start printing
|
|
163 wxHtmlPrintout hpout( wxT("Searcher03") );
|
|
164 hpout.SetMargins( 0, 0, 0, 0, 0 );
|
|
165 wxPrintDialogData pd;
|
|
166 wxPrinter p( &pd );
|
|
167
|
|
168 hpout.SetHtmlText( html, wxEmptyString, false );
|
|
169 p.Print( NULL, &hpout, true );
|
|
170 }
|
|
171
|