//==============================================================
void Gimmick::Finalize()
{
-
- // delete SQLiteTreeHandler Object
- for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin();
- it!= mTreeHandlerMap.end();
- ++it)
- {
- delete it->second;
- }
+ if(mTreeHandlerMap.size() >0)
+ {
+ // delete SQLiteTreeHandler Object
+ for( TreeHandlerMapType::const_iterator it = mTreeHandlerMap.begin();
+ it!= mTreeHandlerMap.end();
+ ++it)
+ {
+ delete it->second;
+ }
+ }
}
//==============================================================
//======================================================================
// CTor
- GimmickView::GimmickView(Gimmick* gimmick, int threads)
+ GimmickView::GimmickView(boost::shared_ptr<Gimmick> gimmick, int threads)
: mGimmick(gimmick),
mReader(threads)
{
///
void GimmickView::Initialize()
{
- mImageExtent=0;
mReaderStarted=false;
}
//======================================================================
{
if(mImageExtent!=0)
{
- mImageExtent=0;
+ // mImageExtent=0;
}
valid=true;
}
}
}
+ //======================================================================
+ /// No selected image
+ bool GimmickView::NoValidateSelected ()
+ {
+ GimmickDebugMessage(2,"Validating selected"<<std::endl);
+ std::string mMessage;
+ mMessage="Cannot have 0 images selected!";
+ valid=false;
+ modifyValidationSignal(valid);
+ SetMessage(mMessage);
+ return valid;
+ }
+
//======================================================================
///Validates the dimension compliance of the images with the maximum and
///minimum given, and between their sizes
}
else
{
- ImageExtent* ie=new ImageExtent((*sel).GetAttribute("D0028_0010"),
+ boost::shared_ptr<ImageExtent> ie=boost::shared_ptr<ImageExtent>(new ImageExtent((*sel).GetAttribute("D0028_0010"),
(*sel).GetAttribute("D0028_0011"),
(*sel).GetAttribute("D0028_0012"),
- "");
+ ""));
if(mImageExtent==0)
{
mImageExtent=ie;
{
public:
/// Ctor
- GimmickView(Gimmick*, int number_of_threads = 0 );
+ GimmickView(boost::shared_ptr<Gimmick>, int number_of_threads = 0 );
/// Virtual destructor
virtual ~GimmickView();
/// Initializes the view :
{ GimmickError("INTERNAL ERROR : SaveAs not implemented"); }
+ /// No selected image
+ bool NoValidateSelected();
///Validates the dimension compliance of the images with the maximum and minimum given, and between their sizes
bool ValidateSelected (tree::Node* sel, int min_dim, int max_dim);
//ImageEventQueueType mImageEventQueue;
///The current image extent
- ImageExtent* mImageExtent;
+ boost::shared_ptr<ImageExtent> mImageExtent;
///The validation signal
ValidationSignalType mValidationSignal;
///Boolean that determines if the selection is valid
#include <wx/utils.h>
#include <creaImageIOSystem.h>
+
namespace creaImageIO
{
vtkImageData* Read(const std::string& filename);
+ struct deleter
+ {
+ void operator()(ThreadedImageReader* p)
+ {
+ p->Delete();
+ }
+ };
+ friend struct deleter;
+
private:
ImageReader mReader;
MultiThreadImageReader* mMultiThreadImageReader;
};
+
+
//=====================================================================
// Create the threads
for (int i=0; i<number_of_threads; i++)
{
- //ThreadedImageReader* t = new ThreadedImageReader(this);
- boost::shared_ptr<ThreadedImageReader> t(new ThreadedImageReader(this));
+ //ThreadedImageReader* t = new ThreadedImageReader(this);
+ boost::shared_ptr<ThreadedImageReader> t(new ThreadedImageReader(this), ThreadedImageReader::deleter());
mThreadedImageReaderList.push_back(t);
std::cout << " ===> Thread "<<i
<<" successfully added"<< std::endl;
<<" successfully stopped"<< std::endl;
if((*i)->IsAlive())
{
- (*i)->Delete();
+ //(*i)->Delete();
}
}
- mThreadedImageReaderList.clear();
+ // mThreadedImageReaderList.clear();
// Wait a little to be sure that all threads have stopped
// A better way to do this ?
// wxMilliSleep(1000);
/// The type of list of threaded readers
typedef std::vector<boost::shared_ptr<ThreadedImageReader> > ThreadedImageReaderListType;
+ //typedef std::vector<ThreadedImageReader* > ThreadedImageReaderListType;
ThreadedImageReaderListType mThreadedImageReaderList;
/// The number of currently running threaded readers
int mNumberOfThreadedReadersRunning;
#include <creaImageIOSQLiteTreeHandler.h>
#include <creaImageIOSystem.h>
+#include <creaImageIOTree.h>
#include "CppSQLite3.h"
#include <sys/stat.h>
-//#include <creaImageIOSQLiteTreeHandlerStructure.h>
-
-//#include <creaImageIOUtilities.h>
-
-//#include <icons/database.xpm>
-
#include <deque>
-//#include <icons/close.xpm>
-
#include <creaWx.h>
+#include <boost/algorithm/string.hpp>
using namespace crea;
-#include <boost/filesystem.hpp>
-#include <boost/algorithm/string/replace.hpp>
-
namespace creaImageIO
{
using namespace tree;
command += "Flags int\n";
command += "\n)";
UPDATEDB(command);
-
-
+
// Fill the table *_ATTRIBUTES
LevelDescriptor::AttributeDescriptorListType::const_iterator i;
for (i = GetTree().GetAttributeDescriptorList(l).begin();
GetAttributeDescriptorList(int level) const
{ return mLevelDescriptorList[level].GetAttributeDescriptorList(); }
+
/// Adds a LevelDescriptor at the end of the list
void Add(const LevelDescriptor&);
#include <boost/filesystem/operations.hpp>
#include <boost/utility.hpp>
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
namespace fs = boost::filesystem;
using boost::filesystem::path;
using boost::next;
#include <creaImageIOTree.h>
#include <creaImageIOSystem.h>
#include <algorithm>
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
namespace creaImageIO
{
namespace tree
#include <creaImageIOTreeView.h>
#include <creaImageIOSystem.h>
+
namespace creaImageIO
{
// CTor
#include <vtkImageReader2.h>
#include <creaImageIOSystem.h>
#include "boost/filesystem/path.hpp"
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
namespace creaImageIO
{
{
if (name.size() == 0)
{
- SetName ( mReader->GetDescriptiveName() );
+ const char *test =mReader->GetDescriptiveName();
+ if(test != "")
+ {
+ SetName ( "toto");// mReader->GetDescriptiveName());
+ }
+
}
else
{
//=====================================================================
bool VtkImageReader::CanRead(const std::string& filename)
{
+
return (mReader->CanReadFile(filename.c_str())!=0);
+/* if(filename != "")
+ {
+ return (mReader->CanReadFile(filename.c_str())!=0);
+ }
+ else
+ {
+ return false;
+ }*/
}
//=====================================================================
wxMINIMIZE_BOX |
wxCAPTION
),
- mGimmick(0),
+ // mGimmick(0),
mView(0)
{
GimmickDebugMessage(1,"WxGimmickFrame::WxGimmickFrame"
try {
- mGimmick = new Gimmick();
+ // mGimmick = new Gimmick();
mGimmick->Initialize();
int min_dim = GIMMICK_2D_IMAGE_SELECTION;
if (mGimmick)
{
mGimmick->Finalize();
- delete mGimmick;
+// delete mGimmick;
}
}
// DECLARE_EVENT_TABLE();
private :
- Gimmick* mGimmick;
+ boost::shared_ptr<Gimmick> mGimmick;
WxGimmickView* mView;
}; // class WxGimmickFrame
wxMINIMIZE_BOX |
wxCAPTION
),
- mGimmick(0),
+ // mGimmick(0),
mView(0)
{
GimmickDebugMessage(1,"WxGimmickPanel::WxGimmickPanel"
try {
- mGimmick = new Gimmick();
+ mGimmick = boost::shared_ptr<Gimmick>(new Gimmick());
mGimmick->Initialize();
int min_dim = GIMMICK_2D_IMAGE_SELECTION;
if (mGimmick)
{
mGimmick->Finalize();
- delete mGimmick;
+// delete mGimmick;
}
}
// DECLARE_EVENT_TABLE();
private :
- Gimmick* mGimmick;
+ boost::shared_ptr<Gimmick> mGimmick;
WxGimmickView* mView;
///The sendImage signal
#include <creaImageIOWxGimmickReaderDialog.h>
#include <creaImageIOSystem.h>
-
+#include <creaImageIOGimmick.h>
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
namespace creaImageIO
{
wxMINIMIZE_BOX |
wxCAPTION
),
- mGimmick(0),
+ // mGimmick(0),
mView(0)
{
GimmickDebugMessage(1,"WxGimmickReaderDialog::WxGimmickReaderDialog"
try {
- mGimmick = new Gimmick();
+ mGimmick = boost::shared_ptr<Gimmick>(new Gimmick());
mGimmick->Initialize();
<<std::endl);
if (mView)
{
+
delete mView;
}
if (mGimmick)
{
- mGimmick->Finalize();
- delete mGimmick;
+ mGimmick->Finalize();
+ //mGimmick->Finalize();
+// delete mGimmick;
}
}
int output_dim = NATIVE,
int threads = 0);
- Gimmick* GetGimmick() { return mGimmick; }
+ boost::shared_ptr<Gimmick> GetGimmick() { return mGimmick; }
// typedef WxGimmick ViewType;
typedef WxGimmickView::EventType EventType;
private :
- Gimmick* mGimmick;
+ boost::shared_ptr<Gimmick> mGimmick;
WxGimmickView* mView;
wxButton* mOkButton;
//======================================================================
// CTor
- WxGimmickView::WxGimmickView(Gimmick* gimmick,
+ WxGimmickView::WxGimmickView(boost::shared_ptr<Gimmick> gimmick,
wxWindow *parent,
const wxWindowID id,
const wxPoint& pos,
mViewer->StopPlayer();
GimmickDebugMessage(1,"WxGimmickView::~WxGimmickView"
<<std::endl);
+ delete mIcon;
if(mListener->IsAlive())
{
mListener->Delete();
typedef int EventType;
/// Ctor
- WxGimmickView(Gimmick*,
+ WxGimmickView(boost::shared_ptr<Gimmick> ,
wxWindow *parent,
const wxWindowID id,
const wxPoint& pos, const wxSize& size,
wxImageList * mIcon;
void CreateIconList();
- Gimmick * mGimmick;
+ boost::shared_ptr<Gimmick> mGimmick;
Listener* mListener;
/// Callback for adding files