changeset 4:d924b09ea2f3

thumbnail by ListCtrl & ImageList.
author pyon@macmini
date Sat, 09 Apr 2011 15:03:03 +0900
parents 75fefb53d983
children 0f566397974e
files TODO include/preview.h src/preview.cpp
diffstat 3 files changed, 47 insertions(+), 55 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TODO	Sat Apr 09 15:03:03 2011 +0900
@@ -0,0 +1,17 @@
+===========================================================================
+ TODO
+===========================================================================
+* create Edit-button.
+* change preview-image when listctrl is selected.
+* implement print selected image.
+* implement print all images.
+* implement change-view-size by slidebar.
+
+---------------------------------------------------------------------------
+ Memo
+---------------------------------------------------------------------------
+2480 x 3509 ( orignal image size )
+1240 x 1755 ( half )
+ 827 x 1170 ( 1/3 )
+ 640 x  877 ( 1/4 )
+
--- a/include/preview.h	Sat Apr 09 12:48:20 2011 +0900
+++ b/include/preview.h	Sat Apr 09 15:03:03 2011 +0900
@@ -14,7 +14,7 @@
 #include <wx/settings.h>
 #include <wx/bitmap.h>
 #include <wx/image.h>
-#include <wx/icon.h>
+#include <wx/imaglist.h>
 #include <wx/statbmp.h>
 #include <wx/sizer.h>
 #include <wx/scrolwin.h>
@@ -22,6 +22,7 @@
 #include <wx/slider.h>
 #include <wx/button.h>
 #include <wx/frame.h>
+#include <wx/listctrl.h>
 
 ///////////////////////////////////////////////////////////////////////////////
 /// Class FramePreview
@@ -30,18 +31,11 @@
 {
     DECLARE_EVENT_TABLE()
 	private:
+        wxImageList*        m_imageList;
+        wxListItem*         m_listItem;
 	
 	protected:
-		wxStaticText*	    m_staticText1;
-		wxStaticBitmap*		m_bitmap1;
-		wxStaticText*		m_staticText2;
-		wxStaticBitmap*		m_bitmap2;
-		wxStaticText*		m_staticText3;
-		wxStaticBitmap*		m_bitmap3;
-		wxStaticText*		m_staticText4;
-		wxStaticBitmap*		m_bitmap4;
-		wxStaticText*		m_staticText5;
-		wxStaticBitmap*		m_bitmap5;
+        wxListCtrl*         m_listCtrl;
 
 		wxScrolledWindow*	m_scrolledWindow;
 		wxStaticBitmap*		m_bitmap;
@@ -62,8 +56,6 @@
 
         void CloseFrame(wxCommandEvent&);
         void LoadImages(wxString);
-        void SetThumbnail(wxStaticText*, wxStaticBitmap*, wxString, wxString);
-	
 };
 
 #endif //__PREVIEW__
--- a/src/preview.cpp	Sat Apr 09 12:48:20 2011 +0900
+++ b/src/preview.cpp	Sat Apr 09 15:03:03 2011 +0900
@@ -15,7 +15,7 @@
 // constructor
 FramePreview::FramePreview( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
 {
-	this->SetSize( 1600, 900 );
+	this->SetSize( 1600, 950 );
 	
 	wxBoxSizer* bSizer;
 	bSizer = new wxBoxSizer( wxHORIZONTAL );
@@ -24,35 +24,20 @@
 	wxBoxSizer* bSizerL;
 	bSizerL = new wxBoxSizer( wxVERTICAL );
 	
-	m_staticText1 = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerL->Add( m_staticText1, 0, wxTOP|wxALIGN_CENTRE, 5 );
-	m_bitmap1 = new wxStaticBitmap( this, ID_IMG1, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerL->Add( m_bitmap1, 0, wxALL|wxALIGN_CENTRE, 5 );
-	m_staticText2 = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerL->Add( m_staticText2, 0, wxTOP|wxALIGN_CENTRE, 5 );
-	m_bitmap2 = new wxStaticBitmap( this, ID_IMG2, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerL->Add( m_bitmap2, 0, wxALL|wxALIGN_CENTRE, 5 );
-	m_staticText3 = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerL->Add( m_staticText3, 0, wxTOP|wxALIGN_CENTRE, 5 );
-	m_bitmap3 = new wxStaticBitmap( this, ID_IMG3, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerL->Add( m_bitmap3, 0, wxALL|wxALIGN_CENTRE, 5 );
-	m_staticText4 = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerL->Add( m_staticText4, 0, wxTOP|wxALIGN_CENTRE, 5 );
-	m_bitmap4 = new wxStaticBitmap( this, ID_IMG4, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerL->Add( m_bitmap4, 0, wxALL|wxALIGN_CENTRE, 5 );
-	m_staticText5 = new wxStaticText( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerL->Add( m_staticText5, 0, wxTOP|wxALIGN_CENTRE, 5 );
-	m_bitmap5 = new wxStaticBitmap( this, ID_IMG5, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizerL->Add( m_bitmap5, 0, wxALL|wxALIGN_CENTRE, 5 );
+	m_listCtrl = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxSize( 140, 900 ), wxLC_ICON|wxLC_SINGLE_SEL );
+	bSizerL->Add( m_listCtrl, 1, wxEXPAND|wxALL|wxALIGN_CENTRE, 5 );
+    m_imageList = new wxImageList( 105, 148 );
+    m_listCtrl->AssignImageList( m_imageList, wxIMAGE_LIST_NORMAL );
 	
 	bSizer->Add( bSizerL, 0, wxEXPAND, 5 );
 	
     // MainPain ( preview )
 	m_scrolledWindow = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
-	m_scrolledWindow->SetScrollRate( 5, 5 );
+    m_scrolledWindow->SetScrollbars( 10, 10, 83, 117 );
+	//m_scrolledWindow->SetScrollRate( 5, 5 );
+	m_bitmap = new wxStaticBitmap( m_scrolledWindow, ID_IMG, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
 	bSizer->Add( m_scrolledWindow, 1, wxEXPAND | wxALL, 5 );
-	m_bitmap = new wxStaticBitmap( this, ID_IMG, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
-	bSizer->Add( m_bitmap, 0, wxALL, 5 );
+	//bSizer->Add( m_bitmap, 0, wxALL, 5 );
 	
     // RightPain ( manip )
 	wxBoxSizer* bSizerR;
@@ -117,26 +102,24 @@
     if ( !dir.IsOpened() ) return;
 
     bool cout = dir.GetFirst( &file, wxT("*.jpg"), wxDIR_FILES );
-    SetThumbnail( this->m_staticText1, this->m_bitmap1, path, file );
-    dir.GetNext( &file );
-    SetThumbnail( this->m_staticText2, this->m_bitmap2, path, file );
-    dir.GetNext( &file );
-    SetThumbnail( this->m_staticText3, this->m_bitmap3, path, file );
-    dir.GetNext( &file );
-    SetThumbnail( this->m_staticText4, this->m_bitmap4, path, file );
-    dir.GetNext( &file );
-    SetThumbnail( this->m_staticText5, this->m_bitmap5, path, file );
+    if ( cout ) {
+        wxString mfile = path + wxFILE_SEP_PATH + file;
+        wxImage img( mfile, wxBITMAP_TYPE_JPEG );
+        wxBitmap bmp( img.Scale( 640, 877, wxIMAGE_QUALITY_HIGH ) );
+        m_bitmap->SetBitmap( bmp);
+    }
+    int i=0;
+    while ( cout ) {
+        m_listCtrl->InsertItem( i, file, i );
+        file = path + wxFILE_SEP_PATH + file;
+        wxImage img( file, wxBITMAP_TYPE_JPEG );
+        wxBitmap bmp( img.Scale( 105, 148, wxIMAGE_QUALITY_HIGH ) );
+        m_imageList->Add( bmp );
+        i++;
+        cout = dir.GetNext( &file );
+    }
 
     return;
 }
 
-void FramePreview::SetThumbnail( wxStaticText* st, wxStaticBitmap* sb, wxString path, wxString file )
-{
-    st->SetLabel(file);
-    file = path + wxFILE_SEP_PATH + file;
-    wxImage img( file, wxBITMAP_TYPE_JPEG );
-    wxBitmap bmp( img.Scale( 105, 148, wxIMAGE_QUALITY_HIGH ) );
-    sb->SetBitmap( bmp );
 
-    return;
-}