Mercurial > mercurial > hgweb_searcher03.cgi
diff src/preview.cpp @ 10:29021e6e1ebe
Implement thumbnail list in PreviewDialog.
author | pyon@macmini |
---|---|
date | Mon, 28 Apr 2014 18:14:04 +0900 |
parents | b455f2d8aac9 |
children | dfcf8c973219 |
line wrap: on
line diff
--- a/src/preview.cpp Thu Apr 24 18:31:39 2014 +0900 +++ b/src/preview.cpp Mon Apr 28 18:14:04 2014 +0900 @@ -1,16 +1,94 @@ // Filename : preview.cpp -// Last Change: 24-Apr-2014. +// Last Change: 28-Apr-2014. // #include "preview.h" #define THUMB_W 60 #define THUMB_H 75 +// サムネイルパネル +PThumbnailPanel::PThumbnailPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) + : wxPanel( parent, id, pos, size, style ) +{ + m_parent = (PreviewDialog*)parent; + + wxBoxSizer* bSizer = new wxBoxSizer( wxVERTICAL ); + this->SetBackgroundColour( wxColour( 192, 192, 192 ) ); + + wxString thumb = wxGetCwd() + wxFILE_SEP_PATH + wxT("image") + wxFILE_SEP_PATH + wxT("thumbnail.png"); + wxBitmap bmp = wxBitmap( thumb, wxBITMAP_TYPE_PNG ); + + m_bitmap0 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); + bSizer->Add( m_bitmap0, 0, wxALL|wxALIGN_CENTER, 5 ); + m_bitmap0->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick0 ), NULL, this ); + + m_bitmap1 = new wxStaticBitmap(this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); + bSizer->Add( m_bitmap1, 0, wxALL|wxALIGN_CENTER, 5 ); + m_bitmap1->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick1 ), NULL, this ); + + m_bitmap2 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); + bSizer->Add( m_bitmap2, 0, wxALL|wxALIGN_CENTER, 5 ); + m_bitmap2->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick2 ), NULL, this ); + + m_bitmap3 = new wxStaticBitmap(this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); + bSizer->Add( m_bitmap3, 0, wxALL|wxALIGN_CENTER, 5 ); + m_bitmap3->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick3 ), NULL, this ); + + m_bitmap4 = new wxStaticBitmap( this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); + bSizer->Add( m_bitmap4, 0, wxALL|wxALIGN_CENTER, 5 ); + m_bitmap4->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick4 ), NULL, this ); + + m_bitmap5 = new wxStaticBitmap(this, wxID_ANY, bmp, wxDefaultPosition, wxSize( THUMB_W, THUMB_H ), 0 ); + bSizer->Add( m_bitmap5, 0, wxALL|wxALIGN_CENTER, 5 ); + m_bitmap5->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick5 ), NULL, this ); + + this->SetSizer( bSizer ); + this->Layout(); +} + +PThumbnailPanel::~PThumbnailPanel() +{ + m_bitmap0->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick0 ), NULL, this ); + m_bitmap1->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick1 ), NULL, this ); + m_bitmap2->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick2 ), NULL, this ); + m_bitmap3->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick3 ), NULL, this ); + m_bitmap4->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick4 ), NULL, this ); + m_bitmap5->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( PThumbnailPanel::OnClick5 ), NULL, this ); +} + +// Functions +/* サムネイル表示 */ +void PThumbnailPanel::SetFiles( wxArrayString imagefiles, wxArrayString cachefiles ) +{ + m_imagefiles = imagefiles; + + wxBitmap bmp; + bmp.LoadFile( cachefiles[0], wxBITMAP_TYPE_PNG ); m_bitmap0->SetBitmap( bmp ); + bmp.LoadFile( cachefiles[1], wxBITMAP_TYPE_PNG ); m_bitmap1->SetBitmap( bmp ); + bmp.LoadFile( cachefiles[2], wxBITMAP_TYPE_PNG ); m_bitmap2->SetBitmap( bmp ); + bmp.LoadFile( cachefiles[3], wxBITMAP_TYPE_PNG ); m_bitmap3->SetBitmap( bmp ); + bmp.LoadFile( cachefiles[4], wxBITMAP_TYPE_PNG ); m_bitmap4->SetBitmap( bmp ); + bmp.LoadFile( cachefiles[5], wxBITMAP_TYPE_PNG ); m_bitmap5->SetBitmap( bmp ); +} +/* 画像クリックで拡大表示 */ +void PThumbnailPanel::OnClick0( wxMouseEvent& WXUNUSED(event) ) { Preview( 0 ); } +void PThumbnailPanel::OnClick1( wxMouseEvent& WXUNUSED(event) ) { Preview( 1 ); } +void PThumbnailPanel::OnClick2( wxMouseEvent& WXUNUSED(event) ) { Preview( 2 ); } +void PThumbnailPanel::OnClick3( wxMouseEvent& WXUNUSED(event) ) { Preview( 3 ); } +void PThumbnailPanel::OnClick4( wxMouseEvent& WXUNUSED(event) ) { Preview( 4 ); } +void PThumbnailPanel::OnClick5( wxMouseEvent& WXUNUSED(event) ) { Preview( 5 ); } +void PThumbnailPanel::Preview( int n ) +{ + if ( m_imagefiles.GetCount() < n + 1 ) return; + m_parent->SetPreviewImage( n ); +} + + +//////////////////////////////////////////////////////// +// プレビューダイアログ PreviewDialog::PreviewDialog( 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( wxHORIZONTAL ); m_scrolledWindow = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxALWAYS_SHOW_SB ); @@ -19,12 +97,8 @@ wxBoxSizer* bSizerMenu = new wxBoxSizer( wxVERTICAL ); - /* - m_listCtrl = new wxListCtrl( this, ID_PLIST, wxDefaultPosition, wxSize( 140, -1 ), wxLC_ICON ); - m_imageList = new wxImageList( THUMB_W, THUMB_H ); - m_listCtrl->AssignImageList( m_imageList, wxIMAGE_LIST_NORMAL ); - bSizerMenu->Add( m_listCtrl, 1, wxRIGHT|wxLEFT|wxBOTTOM|wxEXPAND, 5 ); - */ + m_thumbPanel = new PThumbnailPanel( this, wxID_ANY, wxDefaultPosition, wxSize( 100, -1 ), wxSUNKEN_BORDER ); + bSizerMenu->Add( m_thumbPanel, 0, wxALL|wxEXPAND, 5 ); m_buttonPrint = new wxButton( this, ID_PRINT, wxT("印刷"), wxDefaultPosition, wxDefaultSize, 0 ); bSizerMenu->Add( m_buttonPrint, 0, wxALL, 5 ); @@ -51,19 +125,26 @@ #define WIDTH 2480 #define HEIGHT 3509 -void PreviewDialog::SetImage( wxString file ) +void PreviewDialog::SetPreviewImage( int n ) { int w, h; m_scrolledWindow->GetSize( &w, &h ); h = h * WIDTH / ( w - 200 ); wxImage img; - img.LoadFile( file, wxBITMAP_TYPE_JPEG ); + img.LoadFile( m_imagefiles[n], wxBITMAP_TYPE_JPEG ); wxBitmap bmp( img.Scale( w, h, wxIMAGE_QUALITY_HIGH ) ); m_bitmap->SetBitmap( bmp ); m_scrolledWindow->SetScrollbars( 10, 10, 0, h/10 ); - m_preview = file; + m_preview = m_imagefiles[n]; +} + +void PreviewDialog::SetFiles( wxArrayString imagefiles, wxArrayString cachefiles ) +{ + m_imagefiles = imagefiles; + m_cachefiles = cachefiles; + m_thumbPanel->SetFiles( m_imagefiles, m_cachefiles ); } void PreviewDialog::OnPrint( wxCommandEvent& WXUNUSED(envet) )