Isis 3 Programmer Reference
ImageTreeWidget.h
1 #ifndef ImageTreeWidget_H
2 #define ImageTreeWidget_H
3 
4 #include <QPointer>
5 #include <QTreeWidget>
6 
7 class QProgressBar;
8 
9 namespace Isis {
10  class Directory;
11  class DisplayProperties;
12  class Image;
13  class ImageList;
14  class ImageTreeWidgetItem;
15  class ProgressBar;
16 
42  class ImageTreeWidget : public QTreeWidget {
43  Q_OBJECT
44 
45  public:
46 
47  enum TreeItemContainerType {
48  ImageGroupType = 1,
49  ImageListNameType
50  };
51 
52  ImageTreeWidget(Directory *directory = 0, QWidget *parent = 0);
53  virtual ~ImageTreeWidget();
54 
55  QList<QAction *> actions();
56 
57  QTreeWidgetItem *addGroup(QString imageListName, QString groupName = "", int index = -1);
58 
59  QTreeWidgetItem *createGroup(QTreeWidgetItem *imageListItem, QString groupName = "",
60  int index = -1);
61  QTreeWidgetItem *createImageListNameItem(QString name);
62 
63  void refit();
64 
65  void disableSort();
66  void enqueueReadDisplayProperties(ImageTreeWidgetItem *);
67 
68  QList<QAction *> getViewActions();
69  bool groupInList(QList<QTreeWidgetItem *>);
70  void updateViewActs();
71 
72  ImageTreeWidgetItem *prepCube(ImageList *imageList, Image *image);
73 
74  ImageList imagesInView();
75 
76  public:
82  class ImagePosition {
83  public:
84  ImagePosition();
85  ImagePosition(int outerIndex, int innerIndex);
86  ImagePosition(const ImagePosition &other);
87 
88  virtual ~ImagePosition();
89 
90  void setPosition(int outerIndex, int innerIndex);
91 
92  int group() const;
93  int index() const;
94  bool isValid() const;
95 
96  void swap(ImagePosition &other);
97 
98  bool operator<(const ImagePosition &rhs);
99  ImagePosition &operator=(const ImagePosition &rhs);
100 
101  private:
102  void init();
103 
104  private:
105  int m_group;
106  int m_index;
107  };
108 
109  signals:
110  void queueSelectionChanged();
111  void queueReadDisplayProperties();
112 
113  protected:
114  void dropEvent(QDropEvent *event);
115  void mousePressEvent(QMouseEvent *event);
116  void contextMenuEvent(QContextMenuEvent *event);
117 
118  private slots:
120  void deleteSelectedGroups();
121  void imageDeleted(QObject *image);
122  void onItemChanged(QTreeWidgetItem *, int);
123  void onSelectionChanged();
124  void onQueuedReadDisplayProperties();
125  void onQueuedSelectionChanged();
126  void propertiesChanged(DisplayProperties *);
127  void renameSelectedGroup();
128  void requestCloseSelected();
129  void toggleColumnVisible();
130  void updateDragAndDropability();
131  void setDefaultFileListCols();
132 
133  private:
134  bool mosaicItemInList(QList<QTreeWidgetItem *>);
135  ImageList selectedDisplays();
136 
137  QTreeWidgetItem *imageListTreeItem(QString imageListName);
139  ImageTreeWidgetItem *treeItem(Image *);
140 
141  Directory *m_directory;
142  QList<QAction *> m_viewActs;
143  QPointer<QAction> m_setFileListColsAct;
144  QMap<DisplayProperties *, ImageTreeWidgetItem *> m_displayPropsToTreeItemLookup;
145  bool m_queuedSelectionChanged;
146 
147  QList<ImageTreeWidgetItem *> m_queuedReadDisplayPropertiesItems;
148  };
149 };
150 
151 #endif
152 
Internalizes a list of images and allows for operations on the entire list.
Definition: ImageList.h:55
ImageTreeWidget(Directory *directory=0, QWidget *parent=0)
ImageTreeWidget constructor.
This represents a cube in a project-based GUI interface.
Definition: Image.h:107
QTreeWidgetItem * addGroup()
void mousePressEvent(QMouseEvent *event)
This is why we needed to subclass the QTreeWidget class.
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
QTreeWidgetItem * imageListTreeItem(QString imageListName)
This will get the image list tree item for the given image list (by name).