#include <wx/listctrl.h>
#include <wx/splitter.h>
//#include <vector>
-
+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
*/
///Removes selected nodes on given level
virtual void RemoveSelected();
-
+
+ ///Returns the last selected level
+ virtual unsigned int GetLastSelectedLevel(){return mLastLevel;}
+
/// Callback for item selection
void OnItemSelected(wxListEvent& event);
///Callback when the user need the items filtered
void OnPopupFilter(wxCommandEvent& event);
+
+ ///Callback when the user needs the item copied to the local disk
+ void OnLocalCopy(wxCommandEvent& event);
+
+ ///Callback when the user needs to edit a field
+ void OnEditField(wxCommandEvent& event);
///Callback on mouse click
void OnMouseClick(wxMouseEvent& event);
+
+ /// Displays a menu for items
+ void OnItemMenu(wxListEvent &event);
+
+ /// Gets the attributes that are being shown and the ones that have been blocked on a specific level
+ void GetAttributes(std::vector<std::string>& areShown, std::vector<std::string>& notShown, int level);
+
+ ///Sets the non visible attributes and refreshes the GUI
+ void SetNonVisibleAttributes(const std::vector<std::string>& notShown, int level);
+
+ ///Creates a new listctrl
+ void CreateCtrl(std::vector<std::string>& notShown, int nlevel);
+
+ ///Returns true if the attribute passed as a parameter is visible or not
+ bool IsAttributeVisible(const std::string& val, int level);
/// Actual processing of item selection/deselection
/// Called by OnItemSelected and OnItemDeSelected
///Boolean that defines the direction of the sort
///True is ascending order and false is descending
bool SortAscending;
- //
+ //The vector of not shown attributes
+ std::vector<std::string> notShownAtts;
};
/// The vector of levels : one for each level of the tree
std::vector<LevelType> mLevelList;
void ValidateSelectedImages(bool isSelection);
///Gets selected filenames
void GetSelectedAsString(std::vector<std::string>&s);
+ ///Gets the filenames of the given nodes and returns them on the given vector. Is recursive.
+ void GetFilenamesAsString(const std::vector<tree::Node*>& nodes, std::vector<std::string>&s);
/// Gets the next nodes on the list, be it up(true) or down(false).
void GetNodes(std::vector<tree::Node*>& nodes, bool direction);
/// Updates the view of a level given the selected items of upper level
/// Recursive method
virtual void RecursiveUpdateLevel( int );
- ///Sets the color of a selected item
- void SetColor(int level, int item);
- ///Creates the color palette for the first level
- void CreateColorPalette();
///Selects all the elements of a level
void SelectAll(int level);
///UnSelects all the elements of a level
void UnSelectAll(int level);
+ void OnKeyDown(wxListEvent &event);
/// Sorts the level
void SortLevel(int level);
/// Currently Selected Column
int mColumnSelected;
- ///The last selected item on the list
+ ///The last selected item on the list (left click)
long mLastSelected;
+
+ ///The last selected item on the list (right click)
+ long mLastRightSelected;
+
+ ///The last selected level (by right click)
+ int mLastRightLevel;
///The color map
typedef std::map<tree::Node*,wxColour> ColorMap;
typedef std::pair<tree::Node*,wxColour> NodeColorPair;
std::vector<std::string> mColorPalette;
wxMenu* menu;
+
wxObject* senderCtrl;
int mAscendingID;
int mDescendingID;
int mFilterID;
unsigned int mLastLevel;
+ wxMenu* menuItem;
+ int mAnonymizingID;
+ int mLocalCopyID;
+ int mEditFieldID;
+
// If set to true then OnSelectedChanged returns immediately.
// Used to do avoid useless process during multiple selections
// or sorting
bool mIgnoreSelectedChanged;
-
DECLARE_EVENT_TABLE()
};
// EO class WxTreeView