From a67d921cdc10d438852b48c2985f14d91320e016 Mon Sep 17 00:00:00 2001 From: Frederic Cervenansky Date: Wed, 30 Sep 2009 16:28:03 +0000 Subject: [PATCH 1/1] memory leak tracking --- src2/creaImageIODicomImageReader.cpp | 4 +- src2/creaImageIOGimmick.cpp | 29 +++++++++------ src2/creaImageIOGimmick.h | 43 +++++++++++++++++++--- src2/creaImageIOGimmickReaderDialog.cpp | 3 ++ src2/creaImageIOGimmickView.cpp | 6 +-- src2/creaImageIOGimmickView.h | 13 ++++--- src2/creaImageIOImageReader.cpp | 42 ++++++++++----------- src2/creaImageIOImageReader.h | 6 +-- src2/creaImageIOIndexedHeap.h | 2 +- src2/creaImageIOIndexedHeap.txx | 1 + src2/creaImageIOListener.cpp | 1 - src2/creaImageIOMultiThreadImageReader.cpp | 4 +- src2/creaImageIOMultiThreadImageReader.h | 2 +- src2/creaImageIOSettings.cpp | 4 ++ src2/creaImageIOSynchron.cpp | 3 +- src2/creaImageIOSystem.h | 1 + src2/creaImageIOTreeLevelDescriptor.cpp | 4 ++ src2/creaImageIOTreeNode.cpp | 13 ++----- src2/creaImageIOTreeNode.h | 6 ++- src2/creaImageIOVtkImageReader.h | 2 + src2/creaImageIOWxEditFieldsPanel.cpp | 1 + src2/creaImageIOWxGimmickReaderDialog.cpp | 3 +- src2/creaImageIOWxGimmickReaderDialog.h | 5 ++- src2/creaImageIOWxGimmickTools.cpp | 1 + src2/creaImageIOWxGimmickView.cpp | 31 +++++++++++----- src2/creaImageIOWxGimmickView.h | 2 +- src2/creaImageIOWxTreeView.cpp | 32 ++++++---------- src2/creaImageIOWxTreeView.h | 18 ++++++++- src2/creaImageIOWxViewer.cpp | 10 +++-- src2/creaImageIOWxViewer.h | 6 ++- 30 files changed, 185 insertions(+), 113 deletions(-) diff --git a/src2/creaImageIODicomImageReader.cpp b/src2/creaImageIODicomImageReader.cpp index 35075fb..96d5672 100644 --- a/src2/creaImageIODicomImageReader.cpp +++ b/src2/creaImageIODicomImageReader.cpp @@ -6,7 +6,9 @@ #include #include - +#ifdef _DEBUG +#define new DEBUG_NEW +#endif namespace creaImageIO { diff --git a/src2/creaImageIOGimmick.cpp b/src2/creaImageIOGimmick.cpp index a13809b..e168c37 100644 --- a/src2/creaImageIOGimmick.cpp +++ b/src2/creaImageIOGimmick.cpp @@ -1,3 +1,4 @@ + #include #include @@ -8,13 +9,17 @@ # define PATH_MAX 2048 #endif +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + namespace creaImageIO { //============================================================== Gimmick::Gimmick() : mImageAdder(0) { - RegisterGimmickMessageTypes(); + RegisterGimmickMessageTypes(); mSettings=0; mSynchronizer=0; } @@ -85,18 +90,18 @@ namespace creaImageIO } } - //////////////////////////////////////////////////////////////////////// - // create a DB from a attributes descriptor file for medical images // - // @param i_name : DB name // - // @param i_locDesc : location of descriptor file // - // @param i_locDB : location of DB // - // return : the SQLiteTreeHandler object on DB // - ////////////////////////////////////////////////////////////////// - SQLiteTreeHandler *Gimmick::createDB(const std::string &i_name, - const std::string &i_locDesc, - const std::string &i_locDB) + /////////////////////////////////////////////////////////////////////////// + // create a DB from a attributes descriptor file for medical images // + // @param i_name : DB name // + // @param i_locDesc : location of descriptor file // + // @param i_locDB : location of DB // + // return : the SQLiteTreeHandler object on DB // + ///////////////////////////////////////////////////////////////////////// + SQLiteTreeHandler* Gimmick::createDB(const std::string &i_name, + const std::string &i_locDesc, + const std::string &i_locDB) { - SQLiteTreeHandler *sqlTreeH = new SQLiteTreeHandler(i_locDB); + SQLiteTreeHandler* sqlTreeH( new SQLiteTreeHandler(i_locDB) ); // Create or open local database if (! boost::filesystem::exists(i_locDB) ) { diff --git a/src2/creaImageIOGimmick.h b/src2/creaImageIOGimmick.h index 4e7ec07..0705046 100644 --- a/src2/creaImageIOGimmick.h +++ b/src2/creaImageIOGimmick.h @@ -6,6 +6,38 @@ #include #include + +#ifdef _DEBUG +#include +#define DEBUG_NEW new(_NORMAL_BLOCK ,__FILE__, __LINE__) +#else +#define DEBUG_NEW new +#endif +// Only when asked +/* +#ifdef TRACKING_MEMORY_LEAKS +#ifdef WIN32 +#pragma warning(disable : 4291) +#endif + +void * operator new( size_t size, int line, const char *file ); +void * operator new[]( size_t size, int line, const char *file ); +void operator delete( void *p ); +void operator delete[]( void *p ); + +#ifdef OMISCID_NEW +#undef OMISCID_NEW +#endif + +#define OMISCID_NEW new( __LINE__, __FILE__ ) + +#else // TRACKING_MEMORY_LEAKS is not defined + +#define OMISCID_NEW new + +#endif*/ + + namespace creaImageIO { /** @@ -76,7 +108,7 @@ namespace creaImageIO static void SetDebugMessageLevel(int level); /// Type of map from TreeHandler name to TreeHandler* - typedef std::map TreeHandlerMapType; + typedef std::map TreeHandlerMapType; /// Returns the TreeHandlerMap (ref) TreeHandlerMapType& GetTreeHandlerMap() { return mTreeHandlerMap; } @@ -112,7 +144,7 @@ namespace creaImageIO void Print(const std::string& handler); ///create a DB from a given descriptor file and for a specific location - SQLiteTreeHandler *createDB(const std::string &i_name, + SQLiteTreeHandler* createDB(const std::string &i_name, const std::string &i_locDesc, const std::string &i_locDB); @@ -123,10 +155,9 @@ namespace creaImageIO TreeHandler* GetTreeHandler(const std::string& name) const; /// - SQLiteTreeHandler* GetLocalDatabase() { return mLocalDatabase; } + SQLiteTreeHandler* GetLocalDatabase() { return mLocalDatabase; } - const SQLiteTreeHandler* GetLocalDatabase() const - { return mLocalDatabase; } + const SQLiteTreeHandler* GetLocalDatabase() const { return mLocalDatabase; } ///Returns the given setting value for the given setting parameter void GetSetting(const std::string& name, std::string& value); @@ -156,7 +187,7 @@ namespace creaImageIO //============================================= private: - SQLiteTreeHandler* mLocalDatabase; + SQLiteTreeHandler* mLocalDatabase; TreeHandlerMapType mTreeHandlerMap; Synchronizer* mSynchronizer; diff --git a/src2/creaImageIOGimmickReaderDialog.cpp b/src2/creaImageIOGimmickReaderDialog.cpp index d890f70..5b575d6 100644 --- a/src2/creaImageIOGimmickReaderDialog.cpp +++ b/src2/creaImageIOGimmickReaderDialog.cpp @@ -1,6 +1,9 @@ #include #include +#ifdef _DEBUG +#define new DEBUG_NEW +#endif namespace creaImageIO { diff --git a/src2/creaImageIOGimmickView.cpp b/src2/creaImageIOGimmickView.cpp index 01f868e..e8fdb55 100644 --- a/src2/creaImageIOGimmickView.cpp +++ b/src2/creaImageIOGimmickView.cpp @@ -1,6 +1,5 @@ #include #include - #include "boost/filesystem.hpp" namespace fs = boost::filesystem; @@ -352,14 +351,15 @@ void GimmickView::ReadImagesNotThreaded(std::vector& s,std::vecto //====================================================================== ///Requests the reading of an image void GimmickView::RequestReading(tree::Node* n, - int prio, int selection_index, ImagePointerHolder *p) + int prio, int selection_index, boost::shared_ptr p) { if(!mReaderStarted) { mReader.Start(); mReaderStarted=true; } - ImageEventType t(n,selection_index, p); + ImageEventType t(n,selection_index); + t.pointerHolder = p; mImageEventMap[n->GetAttribute("FullFileName")] = t; mReader.Request(this,n->GetAttribute("FullFileName"),prio); } diff --git a/src2/creaImageIOGimmickView.h b/src2/creaImageIOGimmickView.h index 9230ba3..6fca802 100644 --- a/src2/creaImageIOGimmickView.h +++ b/src2/creaImageIOGimmickView.h @@ -103,7 +103,8 @@ namespace creaImageIO void ReadImagesNotThreaded(std::vector& s,std::vector files, int dim); ///Requests the reading of an image with priority and index in the /// current selection (-1 if not in selection) - void RequestReading(tree::Node* n, int prio, int selection_index , ImagePointerHolder *p); + //void RequestReading(tree::Node* n, int prio, int selection_index , ImagePointerHolder *p); + void RequestReading(tree::Node* n, int prio, int selection_index , boost::shared_ptr p); ///Obtains the message of the state @@ -157,7 +158,7 @@ namespace creaImageIO private: /// Controller which manages the interaction with the model - Gimmick* mGimmick; + boost::shared_ptr< Gimmick> mGimmick; /// The views TreeViewMapType mTreeViewMap; /// The message that results from the validation @@ -171,15 +172,15 @@ namespace creaImageIO struct ImageEventType { ImageEventType( tree::Node* no = 0, - int sel_index = -1, - ImagePointerHolder* ph= 0) - : node(no), index(sel_index), pointerHolder(ph){} + int sel_index = -1) +// ImagePointerHolder* ph= 0) +: node(no), index(sel_index){}//, pointerHolder(ph){} ImageEventType(vtkImageData* im ) : image(im) {} tree::Node* node; vtkImageData* image; int index; - ImagePointerHolder* pointerHolder; + boost::shared_ptr pointerHolder; }; typedef std::map ImageEventTypeMap; /// Map of images' names to ImageEventType diff --git a/src2/creaImageIOImageReader.cpp b/src2/creaImageIOImageReader.cpp index 54257c1..1ef6ce4 100644 --- a/src2/creaImageIOImageReader.cpp +++ b/src2/creaImageIOImageReader.cpp @@ -15,7 +15,6 @@ //#include - #include "boost/filesystem/path.hpp" namespace creaImageIO @@ -29,23 +28,20 @@ namespace creaImageIO ImageReader::ImageReader() : mUnreadableImage(0), - mLastFilename("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"), - mLastReader(0) - + mLastFilename("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&") { // std::cout << "#### ImageReader::ImageReader()"<(new VtkImageReader(vtkPNGReader::New(), "PNG", ".png"))); + Register(boost::shared_ptr(new VtkImageReader(vtkTIFFReader::New(), "JPEG", ".jpeg"))); + Register(boost::shared_ptr(new VtkImageReader(vtkJPEGReader::New()))); + Register(boost::shared_ptr(new VtkImageReader(vtkBMPReader::New()))); + Register(boost::shared_ptr(new VtkImageReader(vtkSLCReader::New()))); + Register(boost::shared_ptr(new VtkImageReader(vtkMetaImageReader::New(),"MHD",".mhd"))); // Register(new VtkImageReader(vtkGESignalReader::New())); - Register(new DicomImageReader); - Register(new UltrasonixImageReader); + Register(boost::shared_ptr(new DicomImageReader)); + Register(boost::shared_ptr(new UltrasonixImageReader)); mUnreadableImage = vtkImageData::New(); @@ -72,12 +68,12 @@ namespace creaImageIO //===================================================================== ImageReader::~ImageReader() { - std::vector::iterator i; - for (i=mReader.begin(); i!=mReader.end(); i++) - { - delete (*i); - } - mReader.clear(); + + // for (i=mReader.begin(); i!=mReader.end(); i++) + // { + //delete (*i); + // } +// mReader.clear(); if (mUnreadableImage!=0) { mUnreadableImage->Delete(); @@ -87,7 +83,7 @@ namespace creaImageIO //===================================================================== //===================================================================== - void ImageReader::Register(AbstractImageReader* r) + void ImageReader::Register(boost::shared_ptr r) { mReader.push_back(r); @@ -101,7 +97,7 @@ namespace creaImageIO bool ok = false; if(filename != "") { - std::vector::iterator i; + std::vector >::iterator i; for (i=mReader.begin(); i!=mReader.end(); i++) { ok = (*i)->CanRead(filename); @@ -162,7 +158,7 @@ namespace creaImageIO /// Pushes back all kwown extensions (without dot) in the vector given void ImageReader::PushBackExtensions(std::vector& v) { - std::vector::iterator i; + std::vector >::iterator i; for (i=mReader.begin(); i!=mReader.end(); i++) { (*i)->PushBackExtensions(v); diff --git a/src2/creaImageIOImageReader.h b/src2/creaImageIOImageReader.h index f0823f4..f736642 100644 --- a/src2/creaImageIOImageReader.h +++ b/src2/creaImageIOImageReader.h @@ -42,13 +42,13 @@ namespace creaImageIO protected: /// Register a reader - void Register(AbstractImageReader*); + void Register( boost::shared_ptr ); - std::vector mReader; + std::vector > mReader; vtkImageData* mUnreadableImage; std::string mLastFilename; - AbstractImageReader* mLastReader; + boost::shared_ptr mLastReader; private: diff --git a/src2/creaImageIOIndexedHeap.h b/src2/creaImageIOIndexedHeap.h index 138fc56..8568b67 100644 --- a/src2/creaImageIOIndexedHeap.h +++ b/src2/creaImageIOIndexedHeap.h @@ -78,7 +78,7 @@ namespace creaImageIO /// returns the size of the Heap inline int size() const {return m_p.size(); } /// empties the Heap - void clear(); + void clear(); //====================================================================== //====================================================================== diff --git a/src2/creaImageIOIndexedHeap.txx b/src2/creaImageIOIndexedHeap.txx index b5b5753..1ca4a2e 100644 --- a/src2/creaImageIOIndexedHeap.txx +++ b/src2/creaImageIOIndexedHeap.txx @@ -117,6 +117,7 @@ void IndexedHeap::clear() { for (typename std::vector::iterator i=m_p.begin(); i!=m_p.end(); ++i) { + (*m_i)(*i)->delete(); (*m_i)(*i)=-1; } m_p.clear(); diff --git a/src2/creaImageIOListener.cpp b/src2/creaImageIOListener.cpp index f2505e0..33090d5 100644 --- a/src2/creaImageIOListener.cpp +++ b/src2/creaImageIOListener.cpp @@ -4,7 +4,6 @@ #include #include - namespace fs = boost::filesystem; using boost::filesystem::path; diff --git a/src2/creaImageIOMultiThreadImageReader.cpp b/src2/creaImageIOMultiThreadImageReader.cpp index 3f4ba3a..7daf740 100644 --- a/src2/creaImageIOMultiThreadImageReader.cpp +++ b/src2/creaImageIOMultiThreadImageReader.cpp @@ -53,7 +53,8 @@ namespace creaImageIO // Create the threads for (int i=0; i t(new ThreadedImageReader(this)); mThreadedImageReaderList.push_back(t); std::cout << " ===> Thread "< mQueue; /// The type of list of threaded readers - typedef std::vector ThreadedImageReaderListType; + typedef std::vector > ThreadedImageReaderListType; ThreadedImageReaderListType mThreadedImageReaderList; /// The number of currently running threaded readers int mNumberOfThreadedReadersRunning; diff --git a/src2/creaImageIOSettings.cpp b/src2/creaImageIOSettings.cpp index 9290878..69ec282 100644 --- a/src2/creaImageIOSettings.cpp +++ b/src2/creaImageIOSettings.cpp @@ -4,6 +4,10 @@ #include #include +// Memory tracking allocation +#ifdef _DEBUG +#define new DEBUG_NEW +#endif using namespace boost; namespace po = boost::program_options; diff --git a/src2/creaImageIOSynchron.cpp b/src2/creaImageIOSynchron.cpp index f7e1807..075bbaf 100644 --- a/src2/creaImageIOSynchron.cpp +++ b/src2/creaImageIOSynchron.cpp @@ -4,7 +4,6 @@ #include //namespace fs = boost::filesystem; - //===================================================================== @@ -47,7 +46,7 @@ namespace creaImageIO //===================================================================== Synchronizer::~Synchronizer() { - + delete mDB; } //===================================================================== diff --git a/src2/creaImageIOSystem.h b/src2/creaImageIOSystem.h index 27ff483..2d2789d 100644 --- a/src2/creaImageIOSystem.h +++ b/src2/creaImageIOSystem.h @@ -15,6 +15,7 @@ #define CREAIMAGEIO_CDECL #endif // defined(_WIN32) + namespace creaImageIO { //============================================================== diff --git a/src2/creaImageIOTreeLevelDescriptor.cpp b/src2/creaImageIOTreeLevelDescriptor.cpp index 460fd4f..916bb9f 100644 --- a/src2/creaImageIOTreeLevelDescriptor.cpp +++ b/src2/creaImageIOTreeLevelDescriptor.cpp @@ -1,6 +1,10 @@ #include #include +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + namespace creaImageIO { namespace tree diff --git a/src2/creaImageIOTreeNode.cpp b/src2/creaImageIOTreeNode.cpp index a8cf792..8b2a29b 100644 --- a/src2/creaImageIOTreeNode.cpp +++ b/src2/creaImageIOTreeNode.cpp @@ -11,8 +11,7 @@ namespace creaImageIO //============================================================= /// Ctor with parent Node::Node(Node* parent) - : mParent(parent), - mData(0), + : mParent(parent),//mData(0), mChildrenLoaded(false) { if (parent) @@ -34,12 +33,12 @@ namespace creaImageIO //============================================================= /// Ctor with parent and attributes map Node::Node(Node* parent, const AttributeMapType& attr) - : mParent(parent), - mData(0), + : mParent(parent),//mData(0), mChildrenLoaded(false) { GimmickDebugMessage(6,"Node constructor (level "< #include +#include #include #include + namespace creaImageIO { @@ -115,7 +117,7 @@ namespace creaImageIO { if (mData!=0) return dynamic_cast(mData); return 0; } /// Sets the node data. Deletes existing data if any. - void SetData(NodeData* d) { if (mData) delete mData; mData = d; } + void SetData(boost::shared_ptr d) { mData = d; }//{ if (mData) delete mData; mData = d; } /// Sorts the children of the node void SortChildren(const LexicographicalComparator&); @@ -135,7 +137,7 @@ namespace creaImageIO /// The map of attributes AttributeMapType mAttributeMap; /// User data - NodeData* mData; + boost::shared_ptr mData; /// Are the children loaded ? bool mChildrenLoaded; /// The number of children diff --git a/src2/creaImageIOVtkImageReader.h b/src2/creaImageIOVtkImageReader.h index b971210..44e8f23 100644 --- a/src2/creaImageIOVtkImageReader.h +++ b/src2/creaImageIOVtkImageReader.h @@ -26,6 +26,8 @@ namespace creaImageIO virtual ~VtkImageReader(); + + /// Add file extensions read by the reader virtual void PushBackExtensions(std::vector&); /// Test if file is read by this reader diff --git a/src2/creaImageIOWxEditFieldsPanel.cpp b/src2/creaImageIOWxEditFieldsPanel.cpp index 81d7ae0..6db827b 100644 --- a/src2/creaImageIOWxEditFieldsPanel.cpp +++ b/src2/creaImageIOWxEditFieldsPanel.cpp @@ -1,6 +1,7 @@ #include #include #include + //using namespace tree; namespace creaImageIO { diff --git a/src2/creaImageIOWxGimmickReaderDialog.cpp b/src2/creaImageIOWxGimmickReaderDialog.cpp index e7cd5b8..fe84eff 100644 --- a/src2/creaImageIOWxGimmickReaderDialog.cpp +++ b/src2/creaImageIOWxGimmickReaderDialog.cpp @@ -1,6 +1,7 @@ #include #include + namespace creaImageIO { // CTor @@ -25,7 +26,7 @@ namespace creaImageIO wxMINIMIZE_BOX | wxCAPTION ), - mGimmick(0), + mGimmick(0), mView(0) { GimmickDebugMessage(1,"WxGimmickReaderDialog::WxGimmickReaderDialog" diff --git a/src2/creaImageIOWxGimmickReaderDialog.h b/src2/creaImageIOWxGimmickReaderDialog.h index 1933a38..fd393ea 100644 --- a/src2/creaImageIOWxGimmickReaderDialog.h +++ b/src2/creaImageIOWxGimmickReaderDialog.h @@ -55,12 +55,13 @@ namespace creaImageIO // void OnButtonCancel(wxCommandEvent& event); private : - - Gimmick* mGimmick; + + Gimmick* mGimmick; WxGimmickView* mView; wxButton* mOkButton; wxButton* mCancelButton; + enum { diff --git a/src2/creaImageIOWxGimmickTools.cpp b/src2/creaImageIOWxGimmickTools.cpp index 4c7f57a..fc978c7 100644 --- a/src2/creaImageIOWxGimmickTools.cpp +++ b/src2/creaImageIOWxGimmickTools.cpp @@ -1,5 +1,6 @@ #include + namespace creaImageIO { /** diff --git a/src2/creaImageIOWxGimmickView.cpp b/src2/creaImageIOWxGimmickView.cpp index 63e393a..ac204d9 100644 --- a/src2/creaImageIOWxGimmickView.cpp +++ b/src2/creaImageIOWxGimmickView.cpp @@ -1,3 +1,5 @@ +#include +#include #include #include #include @@ -5,7 +7,6 @@ #include #include #include -#include #include using namespace crea; @@ -29,7 +30,9 @@ using namespace crea; #if defined(BUILD_BRUKER) #include "bruker2dicom.h" #endif - +#ifdef _DEBUG +#define new DEBUG_NEW +#endif namespace creaImageIO { @@ -142,9 +145,11 @@ namespace creaImageIO // Previewer mViewer = new WxViewer(mBottomPanel, wxID_ANY, wxT("Gimmick! Viewer"),wxDefaultPosition, wxDefaultSize ); - pointers.push_back(new ImagePointerHolder(GetDefaultImage())); - mViewer->SetImageVector(pointers); - mViewer->StartPlayer(); + //pointers.push_back(new ImagePointerHolder(GetDefaultImage()) + pointers.push_back(boost::shared_ptr(new ImagePointerHolder(GetDefaultImage()))); + + mViewer->SetImageVector(pointers); + mViewer->StartPlayer(); bottom_sizer->Add(mViewer,1,wxGROW,1); @@ -573,7 +578,8 @@ namespace creaImageIO "Requesting image from selected " <<(*selected)->GetAttribute("FullFileName") < ph(new ImagePointerHolder(GetDefaultImage())); pointers.push_back(ph); RequestReading(*selected,prio,index,ph); // AddEntryToMap(*selected); @@ -592,7 +598,8 @@ namespace creaImageIO "Requesting image from neighbors up " <<(*iterUp)->GetAttribute("FullFileName") < ph(new ImagePointerHolder(GetDefaultImage())); RequestReading(*iterUp,prio,-1,ph); // AddEntryToMap(*iterUp); prio--; @@ -610,7 +617,8 @@ namespace creaImageIO "Requesting image from neighbors down " <<(*iterDown)->GetAttribute("FullFileName") < ph(new ImagePointerHolder(GetDefaultImage())); RequestReading(*iterDown,prio,-1,ph); // AddEntryToMap(*iterDown); prio--; @@ -620,7 +628,8 @@ namespace creaImageIO else { pointers.clear(); - ImagePointerHolder* ph=new ImagePointerHolder(GetDefaultImage()); + //ImagePointerHolder* ph=new ImagePointerHolder(GetDefaultImage()); + boost::shared_ptr ph(new ImagePointerHolder(GetDefaultImage())); pointers.push_back(ph); mViewer->SetImageVector(pointers); } @@ -653,7 +662,8 @@ namespace creaImageIO void WxGimmickView::ClearSelection() { pointers.clear(); - pointers.push_back(new ImagePointerHolder(GetDefaultImage())); + pointers.push_back(boost::shared_ptr(new ImagePointerHolder(GetDefaultImage()))); + //pointers.push_back(new ImagePointerHolder(GetDefaultImage())); mViewer->SetImageVector(pointers); mViewer->RefreshIfNecessary(); ResetExtent(); @@ -1077,6 +1087,7 @@ namespace creaImageIO ////////////////////////////////////////////////// void WxGimmickView::OnCreateDB(wxCommandEvent& event) { + // PACSConnection(""); WxDescriptorPanel * DescriptorPan = new WxDescriptorPanel(this, mGimmick->GetHomeDirectory()); DescriptorPan->Layout(); if ( DescriptorPan->ShowModal() == ID_DSCP_APPLY) diff --git a/src2/creaImageIOWxGimmickView.h b/src2/creaImageIOWxGimmickView.h index b710bca..f08e937 100644 --- a/src2/creaImageIOWxGimmickView.h +++ b/src2/creaImageIOWxGimmickView.h @@ -201,7 +201,7 @@ namespace creaImageIO ///Currently Displayed Node tree::Node* mCurImageItemToShow; //Pointer holders for images to be shown - std::vector pointers; + std::vector< boost::shared_ptr > pointers; wxString mCurrentDirectory; diff --git a/src2/creaImageIOWxTreeView.cpp b/src2/creaImageIOWxTreeView.cpp index fdf3a5c..c196659 100644 --- a/src2/creaImageIOWxTreeView.cpp +++ b/src2/creaImageIOWxTreeView.cpp @@ -5,26 +5,11 @@ #include #include -const std::string empty_string(""); //===================================================================== namespace creaImageIO { - //===================================================================== - /// Data stored by the list items - struct ItemData - { - ItemData() : node(0), id(-1), attr(&empty_string) {} - // The corresponding Node - tree::Node* node; - // The id ? - int id; - // The pointer on the current attribute string to sort on - const std::string* attr; - // Was the item previously selected ? - // Useful for reselecting the item after sort - bool selected; - }; + //===================================================================== } //===================================================================== @@ -263,6 +248,9 @@ namespace creaImageIO { GimmickDebugMessage(1,"WxTreeView::~WxTreeView" <& sel(mLevelList[l].Selected); - sel.clear(); + if (sel.size() > 0) + { + sel.clear(); + } if (level == 1) { sel.push_back(GetTreeHandler()->GetTree().GetTree()); @@ -492,13 +483,13 @@ namespace creaImageIO wxLIST_MASK_FORMAT ); - ItemData* data = new ItemData; + ItemData* data = new ItemData(); data->node = *j; data->id = _id; - + item.SetId(_id); item.SetData(data); - + _id++; GetCtrl(l)->InsertItem(item); @@ -545,6 +536,7 @@ namespace creaImageIO item.SetText( crea::std2wx(val)); item.SetColumn(k); GetCtrl(l)->SetItem(item); + item.Clear(); } } diff --git a/src2/creaImageIOWxTreeView.h b/src2/creaImageIOWxTreeView.h index 126c941..586eea2 100644 --- a/src2/creaImageIOWxTreeView.h +++ b/src2/creaImageIOWxTreeView.h @@ -9,10 +9,25 @@ #include #include //#include - +const std::string empty_string(""); namespace creaImageIO { + //===================================================================== + /// Data stored by the list items + struct ItemData + { + ItemData() : node(0), id(-1), attr(&empty_string) {} + // The corresponding Node + tree::Node* node; + // The id ? + int id; + // The pointer on the current attribute string to sort on + const std::string* attr; + // Was the item previously selected ? + // Useful for reselecting the item after sort + bool selected; + }; /** * \ingroup View */ @@ -174,7 +189,6 @@ namespace creaImageIO // or sorting bool mIgnoreSelectedChanged; - DECLARE_EVENT_TABLE() }; // EO class WxTreeView diff --git a/src2/creaImageIOWxViewer.cpp b/src2/creaImageIOWxViewer.cpp index cf9f13c..f73e81e 100644 --- a/src2/creaImageIOWxViewer.cpp +++ b/src2/creaImageIOWxViewer.cpp @@ -11,7 +11,7 @@ #include using namespace crea; - +// Memory tracking allocation namespace creaImageIO { @@ -92,7 +92,7 @@ namespace creaImageIO //===================================================================== //================================================================ - void WxViewer::SetImageVector(std::vector& pointers) + void WxViewer::SetImageVector(std::vector >& pointers) { wxMutexLocker lock(mMutex); GimmickDebugMessage(6,"WxViewer::SetImageVector"< iph = imagePointers[mCurrent]; + //ImagePointerHolder* iph= imagePointers[mCurrent]; vtkImageData* currIm=iph->Get(); ShowImage(currIm); if ( currIm != mLastImageShown ) @@ -127,7 +128,8 @@ namespace creaImageIO else { mCurrent = 0; - ImagePointerHolder* iph=imagePointers[mCurrent]; + //ImagePointerHolder* iph=imagePointers[mCurrent]; + boost::shared_ptr iph = imagePointers[mCurrent]; vtkImageData* currIm=iph->Get(); ShowImage(currIm); if ( currIm != mLastImageShown ) diff --git a/src2/creaImageIOWxViewer.h b/src2/creaImageIOWxViewer.h index 5283364..a13632f 100644 --- a/src2/creaImageIOWxViewer.h +++ b/src2/creaImageIOWxViewer.h @@ -44,7 +44,8 @@ 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); + + void SetImageVector(std::vector > &pointers); private: @@ -54,6 +55,7 @@ namespace creaImageIO vtkImageViewer2* mViewer; /// Associated wxvtk interactor crea::creawxVTKRenderWindowInteractor *mInteractor; + /// Current extent int mx1,mx2,my1,my2,mz1,mz2; /// Current spacing @@ -69,7 +71,7 @@ namespace creaImageIO ///Last image shown vtkImageData* mLastImageShown; ///The vectors of images to be shown - std::vector imagePointers; + std::vector< boost::shared_ptr > imagePointers; }; -- 2.45.1