From 7e532afa6e1ab955d7c0fa63ea5d12eabc2504e5 Mon Sep 17 00:00:00 2001 From: Frederic Cervenansky Date: Thu, 12 Nov 2009 16:20:51 +0000 Subject: [PATCH] No more cine loop, add a slider control by default to preview images --- src2/creaImageIOWxViewer.cpp | 69 ++++++++++++++++++++++++++++++++---- src2/creaImageIOWxViewer.h | 20 +++++++++-- 2 files changed, 80 insertions(+), 9 deletions(-) diff --git a/src2/creaImageIOWxViewer.cpp b/src2/creaImageIOWxViewer.cpp index 4a0f283..3aaf583 100644 --- a/src2/creaImageIOWxViewer.cpp +++ b/src2/creaImageIOWxViewer.cpp @@ -60,7 +60,11 @@ namespace creaImageIO wxBoxSizer *topsizer = new wxBoxSizer(wxVERTICAL); - + mslide = new wxSlider(this,-1,0,0,1, wxDefaultPosition, wxSize(400,10), wxSL_HORIZONTAL | wxSL_LABELS); + Connect( mslide->GetId(), wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &WxViewer::OnSlide ); + mcheck = new wxCheckBox(this,5123,crea::std2wx("Cine Loop")); + Connect( mcheck->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &WxViewer::OnCineLoop ); + mcheck->SetValue(false); // previewer mInteractor = new crea::creawxVTKRenderWindowInteractor(this,-1); mInteractor->UseCaptureMouseOn(); @@ -70,8 +74,10 @@ namespace creaImageIO mCurrent = 0; mPlayer = 0; - + + topsizer-> Add( mslide,1,wxALIGN_CENTER ,0); topsizer-> Add( mInteractor ,1,wxGROW ,0); + SetSizer( topsizer ); Layout(); } @@ -87,6 +93,7 @@ namespace creaImageIO // TO DO : desallocate cleanly // delete mPlayer; // delete mInteractor; + delete mslide; } //===================================================================== @@ -96,6 +103,14 @@ namespace creaImageIO wxMutexLocker lock(mMutex); GimmickDebugMessage(6,"WxViewer::SetImageVector"<SetMax(pointers.size()); + // Refresh don't work, TO MODIFY + mslide->Refresh(); + mslide->ClearTicks(); + mslide->Hide(); + mslide->Show(); + StartPlayer(); } //================================================================ @@ -237,13 +252,52 @@ std::cout << std::endl; //================================================== void WxViewer::StartPlayer() { - // wxMutexLocker lock(mMutex); - if (mPlayer != 0) return; - mPlayer = new WxViewerPlayer(this); - mPlayer->Create(); - mPlayer->Run(); + if(mcheck->IsChecked()) + { + // wxMutexLocker lock(mMutex); + if (mPlayer != 0) return; + mPlayer = new WxViewerPlayer(this); + mPlayer->Create(); + mPlayer->Run(); + } + else + { + ShowNextImage(); + } + } + + //================================================================ + + //================================================== + + void WxViewer::OnCineLoop(wxCommandEvent &Event) + { + if(!mcheck->IsChecked()) + { + mPlayer->Pause(); + mPlayer->Delete(); + mPlayer = 0; + } + StartPlayer(); } + //================================================================ + + //================================================== + + void WxViewer::OnSlide(wxCommandEvent &Event) + { + mCurrent = mslide->GetValue(); + StartPlayer(); + } + //================================================================ + + //================================================== + + void WxViewer::SetValue() + { + mslide->SetValue(mCurrent); + } // BEGIN_EVENT_TABLE(WxGimmickFrame, wxDialog) // END_EVENT_TABLE() @@ -267,6 +321,7 @@ std::cout << std::endl; { mWxViewer->ShowNextImage(); + mWxViewer->SetValue(); ::wxWakeUpIdle(); clock_t endwait; endwait = clock () + 0.2 * CLOCKS_PER_SEC ; diff --git a/src2/creaImageIOWxViewer.h b/src2/creaImageIOWxViewer.h index a13632f..503aa4d 100644 --- a/src2/creaImageIOWxViewer.h +++ b/src2/creaImageIOWxViewer.h @@ -44,15 +44,31 @@ namespace creaImageIO ///Refreshes the interface if the current image shown has changed bool RefreshIfNecessary(); ///Sets a new image vector to be read - void SetImageVector(std::vector > &pointers); - + + /// Set value of slider control + void SetValue(); private: + + /// Event to resume or start cine loop + void OnCineLoop(wxCommandEvent &Event); + + /// Event to change displayed frames with slide control + void OnSlide(wxCommandEvent &Event); + + ///Shows the image passed as parameter void ShowImage(vtkImageData* im); /// Previewer vtkImageViewer2* mViewer; + + ///Slider + wxSlider *mslide ; + + ///CheckBox to cine loop + wxCheckBox *mcheck; + /// Associated wxvtk interactor crea::creawxVTKRenderWindowInteractor *mInteractor; -- 2.45.0