34 #ifndef ROI_MANAGEMENT_ACTION_H 
   35 #define ROI_MANAGEMENT_ACTION_H 
   42 #include <qstringlist.h> 
   50 class QListWidgetItem;
 
   56   class Transformation ;
 
   61   class RoiManagementAction ;
 
   62   class RoiManagementActionSharedData ;
 
   63   struct RoiManagementActionView_Private ;
 
   80   QStringList mySelectedRegions ;
 
   81   QString myNewRegionName ;
 
   82   QListWidget * selectRegions ;
 
   83   QComboBox * selectRegionName ;
 
   98   std::string 
askName( 
const std::string& type, 
 
   99                        const std::string& originalName, 
 
  100                        const std::string& message, 
bool noHierarchy = 
true ) ;
 
  104   void selectGraph( 
int );
 
  105   void renameGraph( QListWidgetItem * ) ;
 
  106   void selectRegion( 
int ) ;
 
  107   void renameRegion( QListWidgetItem * ) ;
 
  108   void selectImage( 
int ) ;
 
  109   void contextMenu( 
const QPoint & );
 
  110   void selectGraphContextMenu( 
const QPoint & );
 
  111   void selectRegionContextMenu( 
const QPoint & );
 
  112   void selectImageContextMenu( 
const QPoint & );
 
  114   void deleteGraph( ) ;
 
  116   void saveGraphAs( ) ;
 
  117   void reloadGraph( ) ;
 
  120   void deleteRegion( ) ;
 
  121   void exportAsMask( ) ;
 
  122   void regionsFusion( ) ;
 
  124   void neuroFrameWork() ;
 
  125   void lateralNeuroFrameWork() ;
 
  126   void sulciFrameWork() ;
 
  127   void ratFrameWork() ;
 
  128   void freeFrameWork() ;
 
  129   void newUserDefinedFrameWork() ;
 
  130   void loadUserDefinedFrameWork() ;
 
  131   void saveUserDefinedFrameWork() ;
 
  132   void defineNewFWRegionName() ;
 
  133   void modifyFWRegionName() ;
 
  134   void modifyFWRegionColor() ;
 
  135   void deleteFWRegionName() ;
 
  138   void createAxialWindow() ;
 
  139   void createCoronalWindow() ;
 
  140   void createSagittalWindow() ;
 
  142   void create3DWindow() ;
 
  143   void cleanSession() ;
 
  145   void regionTransparencyChange( 
int alpha ) ;
 
  146   void graphTransparencyChange( 
int alpha ) ;
 
  150   anatomist::RoiManagementActionView_Private * _private ;
 
  152   bool myUpdatingFlag ;
 
  153   bool mySelectingImage ;
 
  154   bool mySelectingGraph ;
 
  155   bool mySelectingRegion ;
 
  156   bool myChangingGraphTransparency ;
 
  157   bool myChangingRegionTransparency ;
 
  158   bool myGettingImageNames ;
 
  159   bool myGettingGraphNames ;
 
  160   bool myGettingRegionNames ;
 
  161   bool myGettingHierarchyNames ;
 
  162   bool myGettingHierarchyRegionNames ;
 
  164   QString myHierarchyRoiName ;
 
  165   QStringList myHierarchyRoiNames ;
 
  169                                   const std::string& name = 
"" ) ;
 
  170   QStringList getImageNames() ;
 
  171   QStringList getHierarchyNames( ) ;
 
  172   QStringList getGraphNames() ;
 
  173   QStringList getCurrentGraphRegions() ;
 
  174   std::string getSelectedGraphName( ) ;
 
  175   QStringList getCurrentHierarchyRoiNames( ) ;
 
  177   QStringList myImageNames ;
 
  178   QStringList myGraphNames ;
 
  179   QStringList myRegions ;
 
  180   QStringList myRecentFrameWorks ;
 
  191                                const std::string& name = 
"" ) 
const ;
 
  197                                          const std::string& roiName ) 
const ;
 
  211     std::set<std::string> myHierarchyNames ;
 
  212     bool myHierarchyNamesChanged ;
 
  214     std::set<std::string> myGraphNames ;
 
  215     bool myGraphNamesChanged ;
 
  217     std::set<std::string> myImageNames ;
 
  218     bool myImageNamesChanged ;
 
  220     std::set<std::string> myCurrentGraphRegions ;
 
  221     bool myCurrentGraphRegionsChanged ;
 
  223     std::set<std::string> myCurrentHierarchyRoiNames ;
 
  224     bool myCurrentHierarchyRoiNamesChanged ;
 
  226     AObject * getSelectedObject( 
int objType ) 
const ;
 
  227     void completeSelection( 
AGraph * g ) 
const ;
 
  230     void refreshGraphs() 
const ;
 
  232     std::string mySelectedHierarchy ;
 
  233     int mySelectedHierarchyId ;
 
  234     std::string myUserDefinedHierarchy ;
 
  235     std::string myGraphName ;
 
  236     std::string myCurrentGraph ;
 
  237     int myCurrentGraphId ;
 
  238     std::string myCurrentImage ;
 
  239     int myCurrentImageId ;
 
  240     std::string myRegionName ;
 
  241     std::string myPartialRegionName ;
 
  242     int myCurrentRegionId ;
 
  253     virtual std::string 
name() 
const;
 
  264                                            std::set<std::string>& names ) ;
 
  276                                 int red, 
int green, 
int blue ) ;
 
  296                         const std::string& newName) ;
 
  301       { 
return _sharedData->myCurrentGraphId ; }
 
3D window, OpenGL rendering
std::string newRegionName()
std::set< std::string > regionsToBeFusioned()
RegionsFusionWindow(QWidget *parent, const QStringList ®ions)
void selectedRegionsChanged()
~RoiManagementActionView()
std::string askName(const std::string &type, const std::string &originalName, const std::string &message, bool noHierarchy=true)
RoiManagementActionView(anatomist::RoiManagementAction *myAction, QWidget *parent)
virtual void update(const anatomist::Observable *, void *)
This method is called whenever the observed object is changed.
static void objectLoaded(anatomist::Observable *)
Anatomist graph object: a list that manages destruction of its sub-elements.
Base Anatomist object (abstract)
ObjectType
Base object type identifiers.
@ OTHER
External object type (unknown from the base anatomist library)
This class can be subclassed to represent an object that the programmer wants to have observed.
void addObserver(Observer *observer)
Adds an observer to the set of observers for this object.
void setChanged() const
Indicates that this object has changed.
bool hasChanged() const
Tests if this object has changed.
virtual void notifyUnregisterObservers()
Notifies observable destruction to all observers and unregisters them.
void deleteObserver(Observer *observer)
Deletes an observer from the set of observers of this object.
virtual void notifyObservers(void *arg=0)
If this object has changed, as indicated by the hasChanged method, then notify all of its observers.
A class can implement the Observer interface when it wants to be informed of changes in observable ob...
AGraphObject * getGraphObjectByName(const std::string &graphName, const std::string &roiName) const
virtual void update(const Observable *, void *)
This method is called whenever the observed object is changed.
std::string currentImage() const
virtual ~RoiManagementActionSharedData()
static RoiManagementActionSharedData * instance()
virtual void unregisterObservable(Observable *)
Called when an observable is destroyed, only called by Observable: don't use this function directly.
AObject * getObjectByName(int objType, const std::string &name="") const
std::string currentGraph() const
virtual bool viewableAction() const
void selectHierarchy(const std::string &hieName, int hieId)
void changeRegionTransparency(float alpha)
virtual std::string name() const
std::set< std::string > getHierarchyNames()
void deleteFWRegionName(const std::string &name)
void addRegion(const std::string &name)
void selectGraph(const std::string &graphName, int graphId)
void renameRegion(const std::string &name, int regionId)
void newGraph(const std::string &name)
void notifyUnregisterObservers()
void cleanRegion(anatomist::AGraphObject *)
void loadGraph(const QStringList &)
void recursiveHierarchyNameExtraction(Tree *subtree, std::set< std::string > &names)
void selectRegion(const std::string ®ionName, int regionId)
void smartSelectRegionName(const std::string &partialRegionName)
bool getSelectedGraphName(std::string &)
float graphTransparency()
const std::string & getCurrentHierarchy() const
virtual ~RoiManagementAction()
void selectRegionName(const std::string ®ionName)
void changeGraphTransparency(float alpha)
std::set< std::string > getCurrentHierarchyRoiNames()
void modifyUDFWRegionName(const std::string &oldName, const std::string &newName)
void createWindow(const std::string &type)
void renameGraph(const std::string &name, int graphId)
std::set< std::string > getImageNames()
void regionsFusion(const std::set< std::string > ®ions, const std::string &newName)
void notifyObservers(void *arg=0)
void addObserver(Observer *observer)
void defineNewFWRegionName(const std::string &name, int red, int green, int blue)
std::set< std::string > getGraphNames()
void deleteObserver(Observer *observer)
static Action * creator()
std::set< std::string > getCurrentGraphRegions()
const std::string & userDefinedHierarchy() const
void newRegion(const std::string &name)
void modifyUDFWRegionColor(const std::string &name, int red, int green, int blue)
static void exportRegion(AGraphObject *o)
std::string newUDHierarchy(const std::string &name)
std::string loadUDHierarchy(const std::string &hierarchyName)
virtual QWidget * actionView(QWidget *)
const std::string & selectedHierarchy() const
int selectedHierarchyId()
void selectImage(const std::string &imageName, int imageId)