#include <creaImageIOGimmick.h>
#include <creaImageIOTreeView.h>
#include <creaImageIOSystem.h>
+#include <creaImageIOImagePointerHolder.h>
//#include <map>
#include <vtkImageData.h>
/**
* \ingroup View
*/
+
+ class ImageExtent;
//=====================================================================
//=====================================================================
virtual void GetSelectedFiles(std::vector<std::string>& s)
{ GimmickError("INTERNAL ERROR : GetSelectedFiles not implemented"); }
- virtual void OnSelectionChange(std::vector<tree::Node*>& s)
+
+ virtual void GetImages(int dim, std::vector<std::string> files, std::vector<vtkImageData*>& s)
+ { GimmickError("INTERNAL ERROR : GetImages not implemented"); }
+
+ virtual void OnSelectionChange(const std::vector<tree::Node*>& s, bool isSelection, int selection, bool mProcess)
{ GimmickError("INTERNAL ERROR : OnSelectionChange not implemented"); }
+
+ virtual void ClearSelection()
+ { GimmickError("INTERNAL ERROR : ClearSelection not implemented"); }
+
+ ///Adds a file to ignore
+ virtual void AddIgnoreFile(tree::Node* toRemove)
+ { GimmickError("INTERNAL ERROR : AddIgnoreFile not implemented"); }
+ ///Copies selected files
+ virtual void CopyFiles(const std::vector<std::string>& filenames)
+ { GimmickError("INTERNAL ERROR : CopyFiles not implemented"); }
+
+ ///Edits the fields of a given node
+ virtual void CreateEditFieldsDialog(tree::Node* node, std::vector<std::string> names, std::vector<std::string> keys)
+ { GimmickError("INTERNAL ERROR : EditFields not implemented"); }
+
+ ///Copies selected files
+ virtual void SaveAs(const std::vector<std::string>& filenames)
+ { GimmickError("INTERNAL ERROR : SaveAs not implemented"); }
+
+
///Validates the dimension compliance of the images with the maximum and minimum given, and between their sizes
- bool ValidateSelected (std::vector<tree::Node*>& sel, int min_dim, int max_dim);
+ bool ValidateSelected (tree::Node* sel, int min_dim, int max_dim);
- ///Reads the vector of nodes, builds images in the dimension required and returns them in the supplied vector.
- void ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vector<tree::Node*> im, int dim);
+ ///Reads the vector of images, builds it in the dimension required and returns them in the supplied vector.
+ void ReadImagesNotThreaded(std::vector<vtkImageData*>& s,std::vector<std::string> 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);
-
- ///Returns true if the ImageEventQueue is empty
- bool IsQueueEmpty(){return mImageEventQueue.empty();}
- ///Clears the queue
- void ClearQueue(){mImageEventQueue.clear();}
- ///Returns the next in line EventType's image
- vtkImageData* GetNextImageQueued(){return mImageEventQueue.front().image;}
- ///Returns the next in line EventType's node
- tree::Node* GetNextNodeQueued(){return mImageEventQueue.front().node;}
- ///Returns the next in line EventType's index in selection
- int GetNextSelectionIndexQueued(){return mImageEventQueue.front().index;}
- ///Unqueus the next in line EventType
- void UnqueueNext(){mImageEventQueue.pop_front();}
-
+ //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<ImagePointerHolder> p);
+
///Obtains the message of the state
std::string GetMessage(){return mMess;}
///Obtains the message of the state
void SetMessage(std::string mess){mMess=mess;}
+ ///Resets the data of the extent and begins a new selection
+ void ResetExtent();
/// Create the tree views
void CreateTreeViews();
+ /// Create a tree view with a given name
+ void CreateSingleTreeView(std::string &i_name);
+
/// Create the tree view for TreeHandler provided
- virtual void CreateTreeView( TreeHandler*)
+ virtual void CreateTreeView( TreeHandler* )
{ GimmickError("INTERNAL ERROR : CreateTreeView not implemented"); }
/// Updates the TreeView of given name from level l to bottom
void ConnectValidationObserver(ValidationCallbackType callback);
//==================================================================
+
+
+ void modifyValidationSignal(bool ivalid);
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
/// else it has been unloaded
struct ImageEventType
{
- ImageEventType( tree::Node* no = 0,
- vtkImageData* im = 0,
+ ImageEventType( tree::Node* no = 0,
int sel_index = -1)
- : node(no), image(im), index(sel_index) {}
+// ImagePointerHolder* ph= 0)
+: node(no), index(sel_index){}//, pointerHolder(ph){}
ImageEventType(vtkImageData* im )
: image(im) {}
tree::Node* node;
vtkImageData* image;
- int index;
+ int index;
+ boost::shared_ptr<ImagePointerHolder> pointerHolder;
};
typedef std::map<std::string,ImageEventType> ImageEventTypeMap;
/// Map of images' names to ImageEventType
ImageEventTypeMap mImageEventMap;
// queue of image event
typedef std::deque<ImageEventType> ImageEventQueueType;
- ImageEventQueueType mImageEventQueue;
+ //ImageEventQueueType mImageEventQueue;
+ ///The current image extent
+ ImageExtent* mImageExtent;
+ ///The validation signal
ValidationSignalType mValidationSignal;
+ ///Boolean that determines if the selection is valid
+ bool valid;
+ ///Boolean that determines if the reader has been started
+ bool mReaderStarted;
};
// EO class GimmickView
//=====================================================================
- /*
-
-
-
-
-
-
-
-
- //====================================================================
- // General
- //====================================================================
-
- /// Returns the size of the current selection
- virtual int GetSelectionSize() { return 0; }
- /// Returns true if there is a valid selection
- virtual bool IsSelectionValid(){ return false; }
- /// Returns the vector of full filenames of selected images
- virtual void GetSelectedFiles(std::vector<std::string>&){ return; }
- /// Returns the vector of images corresponding to selection
- virtual void GetSelectedImages(std::vector<vtkImageData*>&){ return; }
- /// Returns the vector of DicomNode corresponding to selection
- virtual void GetSelectedDicomNodes(std::vector<DicomNode*>&){ return; }
- /// Returns the DicomNode corresponding to the tree item
- virtual DicomNode* GetDicomNodeOfItem(const TreeItemId& i);
-
-
- /// Type of list of DicomDatabase
- typedef std::vector<DicomDatabase*> DicomDatabaseListType;
- /// Returns the list of DicomDatabase open
- virtual DicomDatabaseListType& GetDicomDatabaseList()
- { return null; }
- /// Returns the list of DicomDatabase open (const)
- virtual const DicomDatabaseListType& GetDicomDatabaseList() const
- { return null; }
-
- protected:
- ///Opens an existing database, or else, creates a local database.
- virtual void OpenOrNewDatabase(bool open){ return; }
- ///Shows the help
- virtual void ShowHelp();
-
- private:
- ///Gets the extension of the database
- const std::string& GetDatabaseExtension() { return null; }
- ///Sets the extension of the database
- virtual void SetDatabaseExtension(const std::string& ext){ return; }
-
-
- //====================================================================
- // Preview Display Related
- //====================================================================
-
-
- ///Shows the image sent as a parameter
- private:
- virtual void ShowImage(vtkImageData* image){ return; }
-
- //====================================================================
- // Favorites Related
- //====================================================================
-
-
- public:
- ///Loads or creates a favorites database
- virtual void LoadOrCreateFavoritesDatabase(){ return; }
- private:
- ///Creates the user settings directory
- void CreateUserSettingsDirectory(){ return; }
- ///Obtains the user settings directory
- const std::string& GetUserSettingsDirectory(){ return null; }
-
- //====================================================================
- // Attribute Display Related
- //====================================================================
-
-
- ///Shows the Information regarding the node sent as a parameter
- private:
- virtual void ShowInformation(DicomNode*){ return; }
-
- //====================================================================
- // Tree Display Related
- //====================================================================
-
- protected:
- /// Completely rebuilds the view with
- /// current DicomDatabaseList
- virtual void RebuildView(){ return; }
- /// Recursively updates the part of the view corresponding
- /// to the DicomDatabase passed
- /// i.e. creates items for the DicomNode which do not have
- /// deletes obsolete items (whose DicomNode has been deleted)
- virtual void UpdateDicomDatabaseView(DicomDatabase*){ return; }
- /// Recursively updates the part of the view corresponding
- /// to the DicomNode provided.
- /// parent is its parent in the tree (where to insert / remove it)
- virtual void UpdateDicomNodeView(DicomNode* n, const TreeItemId& parent){ return; }
-
- private:
- ///Type definition of the data regarding the tree
- typedef WxGimmickTreeItemData TreeItemData;
- ///Gets the item data of the tree item passed as a parameter
- TreeItemData* GetItemData(const TreeItemId& id){ return null; }
- ///Type definition of the data insid a node of the tree
- typedef WxGimmickDicomNodeData NodeData;
-
-
- //====================================================================
- // Class Attributes
- //====================================================================
-
-
- int mSelectionType;
- int mSelectionMaxImageDimension;
- int mCurrentSelectionImageSize[4];
-
- ///Existent Database List
- DicomDatabaseListType mDicomDatabaseList;
- ///Favorites database
- DicomDatabase* mFavoriteDatabase;
-
- ///Path to the database list file
- std::string mDatabaseListFile;
- ///Extension of the database
- std::string mDatabaseExtension;
-
- bool mJustStarted;
-
- int mFirstDicomDatabaseIconIndex;
-
- // Previewer
- vtkImageViewer2* mViewer;
-
- int mx1,mx2,my1,my2,mz1,mz2;
- double mspx,mspy,mspz;
-
- // Image preview :
- // Multi-thread image reader
- MultiThreadImageReader mReader;
- // map of images name to node
- std::map<std::string,DicomNode*> mImageFileNameToNode;
- */
+
} // EO namespace creaImageIO
// EOF
-#endif
+#endif