comparison src/myframe.cpp @ 10:29021e6e1ebe

Implement thumbnail list in PreviewDialog.
author pyon@macmini
date Mon, 28 Apr 2014 18:14:04 +0900
parents b455f2d8aac9
children dfcf8c973219
comparison
equal deleted inserted replaced
9:b455f2d8aac9 10:29021e6e1ebe
1 // Filename : myframe.cpp 1 // Filename : myframe.cpp
2 // Last Change: 24-Apr-2014. 2 // Last Change: 28-Apr-2014.
3 // 3 //
4 #include "main.h" 4 #include "main.h"
5 #include "db.h" 5 #include "db.h"
6 #include "about.h" 6 #include "about.h"
7 #include "kana.h" 7 #include "kana.h"
11 #include "param.h" 11 #include "param.h"
12 #include "marksheet.h" 12 #include "marksheet.h"
13 #include "myframe.h" 13 #include "myframe.h"
14 #include "bprint.h" 14 #include "bprint.h"
15 15
16 #define DEBUG 1
16 17
17 /////////////////////////////////////////////////////////////// 18 ///////////////////////////////////////////////////////////////
18 // カスタム検索ボックス 19 // カスタム検索ボックス
19 MySearchBox::MySearchBox( wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, long style ) 20 MySearchBox::MySearchBox( wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, long style )
20 : wxSearchCtrl( parent, id, value, pos, size, style ) 21 : wxSearchCtrl( parent, id, value, pos, size, style )
102 this->SetBackgroundColour( wxColour( 192, 192, 192 ) ); 103 this->SetBackgroundColour( wxColour( 192, 192, 192 ) );
103 104
104 wxString thumb = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("thumbnail.png"); 105 wxString thumb = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("thumbnail.png");
105 wxBitmap bmp = wxBitmap( thumb, wxBITMAP_TYPE_PNG ); 106 wxBitmap bmp = wxBitmap( thumb, wxBITMAP_TYPE_PNG );
106 107
107 m_bitmap0 = new wxStaticBitmap( this, ID_THBMP0, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); 108 m_bitmap0 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
108 bSizer->Add( m_bitmap0, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); 109 bSizer->Add( m_bitmap0, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
109 m_bitmap0->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick0 ), NULL, this ); 110 m_bitmap0->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick0 ), NULL, this );
110 111
111 m_bitmap1 = new wxStaticBitmap( this, ID_THBMP1, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); 112 m_bitmap1 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
112 bSizer->Add( m_bitmap1, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); 113 bSizer->Add( m_bitmap1, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
113 m_bitmap1->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick1 ), NULL, this ); 114 m_bitmap1->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick1 ), NULL, this );
114 115
115 m_bitmap2 = new wxStaticBitmap( this, ID_THBMP2, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); 116 m_bitmap2 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
116 bSizer->Add( m_bitmap2, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); 117 bSizer->Add( m_bitmap2, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
117 m_bitmap2->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick2 ), NULL, this ); 118 m_bitmap2->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick2 ), NULL, this );
118 119
119 m_bitmap3 = new wxStaticBitmap( this, ID_THBMP3, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); 120 m_bitmap3 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
120 bSizer->Add( m_bitmap3, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); 121 bSizer->Add( m_bitmap3, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
121 m_bitmap3->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick3 ), NULL, this ); 122 m_bitmap3->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick3 ), NULL, this );
122 123
123 m_bitmap4 = new wxStaticBitmap( this, ID_THBMP4, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); 124 m_bitmap4 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
124 bSizer->Add( m_bitmap4, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); 125 bSizer->Add( m_bitmap4, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
125 m_bitmap4->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick4 ), NULL, this ); 126 m_bitmap4->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick4 ), NULL, this );
126 127
127 m_bitmap5 = new wxStaticBitmap( this, ID_THBMP5, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); 128 m_bitmap5 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 );
128 bSizer->Add( m_bitmap5, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); 129 bSizer->Add( m_bitmap5, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
129 m_bitmap5->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick5 ), NULL, this ); 130 m_bitmap5->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick5 ), NULL, this );
130 131
131 this->SetSizer( bSizer ); 132 this->SetSizer( bSizer );
132 this->Layout(); 133 this->Layout();
142 m_bitmap5->Disconnect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick5 ), NULL, this ); 143 m_bitmap5->Disconnect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( ThumbnailPanel::OnDClick5 ), NULL, this );
143 } 144 }
144 145
145 // Functions 146 // Functions
146 /* サムネイル表示 */ 147 /* サムネイル表示 */
147 void ThumbnailPanel::SetImages( wxString dirpath ) 148 void ThumbnailPanel::SetCacheImages( wxString dirpath )
148 { 149 {
149 wxDir dir( dirpath ); 150 wxDir dir( dirpath );
150 if ( !dir.IsOpened() ) return; 151 if ( !dir.IsOpened() ) return;
152
151 m_imagefiles.Clear(); 153 m_imagefiles.Clear();
152 wxDir::GetAllFiles( dirpath, &m_imagefiles, wxT("*.jpg"), wxDIR_FILES ); 154 wxDir::GetAllFiles( dirpath, &m_imagefiles, wxT("*.jpg"), wxDIR_FILES );
153 155
154 wxString cachedir = wxT("cache") + dirpath.AfterLast( ':' ); 156 wxString cachedir = wxT("cache") + dirpath.AfterLast( ':' );
155 wxDir cdir( cachedir ); 157 wxDir cdir( cachedir );
156 if ( !cdir.IsOpened() ) return; 158 if ( !cdir.IsOpened() ) return;
157 159
158 wxArrayString cachefiles; 160 m_cachefiles.Clear();
159 wxDir::GetAllFiles( cachedir, &cachefiles, wxT("*.png"), wxDIR_FILES ); 161 wxDir::GetAllFiles( cachedir, &m_cachefiles, wxT("*.png"), wxDIR_FILES );
160 162
161 wxString thumb = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("thumbnail.png"); 163 wxString thumb = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("thumbnail.png");
162 int n = cachefiles.GetCount(); 164 int n = m_cachefiles.GetCount();
163 if ( n < 6 ) { 165 if ( n < 6 ) {
164 while ( n < 6 ) { 166 while ( n < 6 ) {
165 cachefiles.Add( thumb ); 167 m_cachefiles.Add( thumb );
166 n++; 168 n++;
167 } 169 }
168 } 170 }
169 171
170 wxBitmap bmp; 172 wxBitmap bmp;
171 bmp.LoadFile( cachefiles[0], wxBITMAP_TYPE_PNG ); m_bitmap0->SetBitmap( bmp ); 173 bmp.LoadFile( m_cachefiles[0], wxBITMAP_TYPE_PNG ); m_bitmap0->SetBitmap( bmp );
172 bmp.LoadFile( cachefiles[1], wxBITMAP_TYPE_PNG ); m_bitmap1->SetBitmap( bmp ); 174 bmp.LoadFile( m_cachefiles[1], wxBITMAP_TYPE_PNG ); m_bitmap1->SetBitmap( bmp );
173 bmp.LoadFile( cachefiles[2], wxBITMAP_TYPE_PNG ); m_bitmap2->SetBitmap( bmp ); 175 bmp.LoadFile( m_cachefiles[2], wxBITMAP_TYPE_PNG ); m_bitmap2->SetBitmap( bmp );
174 bmp.LoadFile( cachefiles[3], wxBITMAP_TYPE_PNG ); m_bitmap3->SetBitmap( bmp ); 176 bmp.LoadFile( m_cachefiles[3], wxBITMAP_TYPE_PNG ); m_bitmap3->SetBitmap( bmp );
175 bmp.LoadFile( cachefiles[4], wxBITMAP_TYPE_PNG ); m_bitmap4->SetBitmap( bmp ); 177 bmp.LoadFile( m_cachefiles[4], wxBITMAP_TYPE_PNG ); m_bitmap4->SetBitmap( bmp );
176 bmp.LoadFile( cachefiles[5], wxBITMAP_TYPE_PNG ); m_bitmap5->SetBitmap( bmp ); 178 bmp.LoadFile( m_cachefiles[5], wxBITMAP_TYPE_PNG ); m_bitmap5->SetBitmap( bmp );
177 } 179 }
178 /* 画像クリックで拡大表示 */ 180 /* 画像クリックダブルで拡大表示 */
179 void ThumbnailPanel::OnDClick0( wxMouseEvent& WXUNUSED(event) ) { Preview( 0 ); } 181 void ThumbnailPanel::OnDClick0( wxMouseEvent& WXUNUSED(event) ) { DoPreview( 0 ); }
180 void ThumbnailPanel::OnDClick1( wxMouseEvent& WXUNUSED(event) ) { Preview( 1 ); } 182 void ThumbnailPanel::OnDClick1( wxMouseEvent& WXUNUSED(event) ) { DoPreview( 1 ); }
181 void ThumbnailPanel::OnDClick2( wxMouseEvent& WXUNUSED(event) ) { Preview( 2 ); } 183 void ThumbnailPanel::OnDClick2( wxMouseEvent& WXUNUSED(event) ) { DoPreview( 2 ); }
182 void ThumbnailPanel::OnDClick3( wxMouseEvent& WXUNUSED(event) ) { Preview( 3 ); } 184 void ThumbnailPanel::OnDClick3( wxMouseEvent& WXUNUSED(event) ) { DoPreview( 3 ); }
183 void ThumbnailPanel::OnDClick4( wxMouseEvent& WXUNUSED(event) ) { Preview( 4 ); } 185 void ThumbnailPanel::OnDClick4( wxMouseEvent& WXUNUSED(event) ) { DoPreview( 4 ); }
184 void ThumbnailPanel::OnDClick5( wxMouseEvent& WXUNUSED(event) ) { Preview( 5 ); } 186 void ThumbnailPanel::OnDClick5( wxMouseEvent& WXUNUSED(event) ) { DoPreview( 5 ); }
185 void ThumbnailPanel::Preview( int n ) 187 void ThumbnailPanel::DoPreview( int n )
186 { 188 {
187 if ( m_imagefiles.GetCount() < n ) return; 189 if ( m_imagefiles.GetCount() < n + 1 ) return;
188 190
189 PreviewDialog* pd = new PreviewDialog( this, wxID_ANY, wxT("プレビュー"), wxDefaultPosition, wxDefaultSize, wxCAPTION|wxFRAME_NO_TASKBAR ); 191 PreviewDialog* pd = new PreviewDialog( this, wxID_ANY, wxT("プレビュー"), wxDefaultPosition, wxDefaultSize, wxCAPTION|wxFRAME_NO_TASKBAR );
190 pd->Show(); 192 pd->Show();
191 pd->Maximize( true ); 193 pd->Maximize( true );
192 pd->SetImage( m_imagefiles[n] ); 194 pd->SetFiles( m_imagefiles, m_cachefiles );
195 pd->SetPreviewImage( n );
193 } 196 }
194 197
195 /////////////////////////////////////////////////////////////// 198 ///////////////////////////////////////////////////////////////
196 // メインフレーム 199 // メインフレーム
197 #define WINL_W 480 200 #define WINL_W 480
774 777
775 item.SetColumn( 2 ); 778 item.SetColumn( 2 );
776 item.SetMask( wxLIST_MASK_TEXT ); 779 item.SetMask( wxLIST_MASK_TEXT );
777 m_listCtrl->GetItem( item ); 780 m_listCtrl->GetItem( item );
778 781
779 m_thumbPanel->SetImages( item.GetText() ); 782 m_thumbPanel->SetCacheImages( item.GetText() );
780 } 783 }
781 /* ステータスバーにメッセージを出力 */ 784 /* ステータスバーにメッセージを出力 */
782 void MyFrame::SetStatusMessage( wxString msg, long n ) 785 void MyFrame::SetStatusMessage( wxString msg, long n )
783 { 786 {
784 if ( GetStatusBar() ) 787 if ( GetStatusBar() )