view src/preview.cpp @ 17:17e78fc76e1f

Start editing Ccn-Frame.
author pyon@macmini
date Wed, 13 Jul 2011 21:09:10 +0900
parents 24e0775af32e
children
line wrap: on
line source

// Filename   : preview.cpp
// Last Change: 22-Jun-2011.
//

#include "preview.h"

// for all others, include the necessary headers (this file is usually all you
// need because it includes almost all "standard" wxWidgets headers)
#ifndef WX_PRECOMP
    #include "wx/utils.h"
    #include "wx/dir.h"
#endif


// 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( 1200, 1000 );
    this->SetBackgroundColour( wxColour(wxT("WHEAT")) );
	
	wxBoxSizer* bSizer;
	bSizer = new wxBoxSizer( wxHORIZONTAL );
	
    // LeftPain ( thumbnail )
	wxBoxSizer* bSizerL;
	bSizerL = new wxBoxSizer( wxVERTICAL );
	
	m_listCtrl = new wxListCtrl( this, ID_LSTCTRL, wxDefaultPosition, wxSize( 160, 900 ), wxLC_ICON|wxLC_SINGLE_SEL );
	bSizerL->Add( m_listCtrl, 1, wxEXPAND|wxALL|wxALIGN_CENTRE, 0 );
    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->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, 0 );
	
    // RightPain ( manip )
	wxBoxSizer* bSizerR;
	bSizerR = new wxBoxSizer( wxVERTICAL );
	
	m_staticText = new wxStaticText( this, wxID_ANY, wxT("倍率"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizerR->Add( m_staticText, 0, wxALL, 5 );
	m_textCtrl = new wxTextCtrl( this, ID_MGNFY, wxT("100%"), wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
	m_textCtrl->SetMaxLength( 4 ); 
	bSizerR->Add( m_textCtrl, 0, wxALL, 5 );
	m_staticTextLarge = new wxStaticText( this, wxID_ANY, wxT("[+]"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizerR->Add( m_staticTextLarge, 0, wxALL, 5 );
	m_slider = new wxSlider( this, ID_SLDR, 0, 0, 100, wxDefaultPosition, wxDefaultSize, wxSL_LEFT|wxSL_VERTICAL );
	bSizerR->Add( m_slider, 0, wxALL, 5 );
	m_staticTextSmall = new wxStaticText( this, wxID_ANY, wxT("[-]"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizerR->Add( m_staticTextSmall, 0, wxALL, 5 );
	
	bSizerR->Add( 0, 0, 1, wxEXPAND, 5 );
	
	m_buttonEdit = new wxButton( this, ID_PRINT, wxT("編集"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizerR->Add( m_buttonEdit, 0, wxALL|wxALIGN_CENTRE, 5 );
	m_buttonMask = new wxButton( this, ID_PRINT, wxT("マスク"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizerR->Add( m_buttonMask, 0, wxALL|wxALIGN_CENTRE, 5 );
	m_buttonPrint = new wxButton( this, ID_PRINT, wxT("印刷"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizerR->Add( m_buttonPrint, 0, wxALL|wxALIGN_CENTRE, 5 );
	m_buttonPrintAll = new wxButton( this, ID_PRTALL, wxT("一括印刷"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizerR->Add( m_buttonPrintAll, 0, wxALL|wxALIGN_CENTRE, 5 );
	m_buttonClose = new wxButton( this, ID_CLSFRM, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizerR->Add( m_buttonClose, 0, wxALL|wxALIGN_CENTRE, 5 );
	
	bSizer->Add( bSizerR, 0, wxEXPAND, 5 );
	
	this->SetSizer( bSizer );
	this->Layout();
	
	this->Centre( wxBOTH );

    LoadImages( wxEmptyString );
}

// destructor
FramePreview::~FramePreview()
{
}

// Event Table
BEGIN_EVENT_TABLE( FramePreview, wxFrame )
    //EVT_LIST_ITEM_SELECTED( ID_LSTCTRL, FramePreview::ChageImage )
    //EVT_BUTTON( ID_PRINT,  FramePreview::PrintImage )
    //EVT_BUTTON( ID_PRTALL, FramePreview::PrintAllImages )
    EVT_BUTTON( ID_CLSFRM, FramePreview::CloseFrame )
END_EVENT_TABLE()

// Event Handlers
void FramePreview::CloseFrame(wxCommandEvent& WXUNUSED(event))
{
    this->Close();
    return;
}

void FramePreview::ChageImage(wxCommandEvent& WXUNUSED(event))
{
    return;
}

// Functions
void FramePreview::LoadImages(wxString path)
{
    path = wxGetCwd() + wxT("/testdrive");  // now test!
    wxDir dir(path);
    wxString file;
    if ( !dir.IsOpened() ) return;

    bool cout = dir.GetFirst( &file, wxT("*.jpg"), wxDIR_FILES );
    // preview
    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 );
    }
    // thumbnail
    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;
}