CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkPathListWidget.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Library: CTK
4 
5  Copyright (c) Kitware Inc.
6 
7  Licensed under the Apache License, Version 2.0 (the "License");
8  you may not use this file except in compliance with the License.
9  You may obtain a copy of the License at
10 
11  http://www.apache.org/licenses/LICENSE-2.0.txt
12 
13  Unless required by applicable law or agreed to in writing, software
14  distributed under the License is distributed on an "AS IS" BASIS,
15  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  See the License for the specific language governing permissions and
17  limitations under the License.
18 
19  This file was originally developed by Jean-Christophe Fillion-Robin, Kitware Inc.
20  and was partially funded by NIH grant 3P41RR013218-12S1
21 
22 =========================================================================*/
23 
24 #ifndef __ctkPathListWidget_h
25 #define __ctkPathListWidget_h
26 
27 // Qt includes
28 #include <QListView>
29 
30 // QtGUI includes
31 #include "ctkWidgetsExport.h"
32 
33 class ctkPathListWidgetPrivate;
34 
35 class QStandardItem;
36 
47 class CTK_WIDGETS_EXPORT ctkPathListWidget : public QListView
48 {
49  Q_OBJECT
50 
52  Q_PROPERTY(QStringList paths READ paths WRITE setPaths NOTIFY pathsChanged)
53 
54 
55  Q_PROPERTY(Mode mode READ mode WRITE setMode)
56 
58  Q_PROPERTY(PathOptions fileOptions READ fileOptions WRITE setFileOptions)
59 
61  Q_PROPERTY(PathOptions directoryOptions READ directoryOptions WRITE setDirectoryOptions)
62 
64  Q_PROPERTY(QIcon fileIcon READ fileIcon WRITE setFileIcon RESET unsetFileIcon)
65 
67  Q_PROPERTY(QIcon directoryIcon READ directoryIcon WRITE setDirectoryIcon RESET unsetDirectoryIcon)
68 
69  Q_FLAGS(PathOption PathOptions)
70  Q_ENUMS(Mode)
71 
72 public:
73 
74  enum
75  {
77  AbsolutePathRole = Qt::UserRole + 1
78  };
79 
82  {
84  None = 0x00,
86  Exists = 0x01,
88  Readable = 0x02,
90  Writable = 0x04,
92  Executable = 0x08
93  };
94  Q_DECLARE_FLAGS(PathOptions, PathOption)
95 
96  enum Mode
97  {
99  Any = 0,
103  DirectoriesOnly
104  };
105 
107  typedef QListView Superclass;
108 
110  explicit ctkPathListWidget(QWidget* parent = 0);
111 
113  virtual ~ctkPathListWidget();
114 
116  Mode mode() const;
117 
119  QIcon fileIcon() const;
120 
123  void setFileIcon(const QIcon& icon);
124 
126  void unsetFileIcon();
127 
129  QIcon directoryIcon() const;
130 
133  void setDirectoryIcon(const QIcon& icon);
134 
136  void unsetDirectoryIcon();
137 
139  PathOptions fileOptions() const;
140 
143  void setFileOptions(PathOptions fileOptions);
144 
146  PathOptions directoryOptions() const;
147 
150  void setDirectoryOptions(PathOptions directoryOptions);
151 
154  bool contains(const QString& path)const;
155 
159  QStringList files(bool absolutePath = false) const;
160 
164  QStringList directories(bool absolutePath = false) const;
165 
169  QStringList paths(bool absolutePath = false) const;
170 
174  QStringList selectedPaths(bool absolutePath = false) const;
175 
179  QString currentPath(bool absolutePath = false) const;
180 
182  int count() const;
183 
185  QString path(int row) const;
186 
188  QStandardItem* item(int row) const;
189 
191  QStandardItem* item(const QString& absolutePath) const;
192 
195  QString pathAt(const QPoint& point) const;
196 
199  QStandardItem* itemAt(const QPoint& point) const;
200 
202  QString pathAt(int x, int y) const { return pathAt(QPoint(x, y)); }
203 
205  QStandardItem* itemAt(int x, int y) const { return itemAt(QPoint(x, y)); }
206 
209  int row(const QString& path) const;
210 
216  bool editPath(const QString& oldPath, const QString& newPath);
217 
223  bool editPath(const QModelIndex& index, const QString& newPath);
224 
227  bool isFile(const QString& path) const;
228 
231  bool isDirectory(const QString& path) const;
232 
233 public Q_SLOTS:
234 
237  void setMode(Mode mode);
238 
244  bool addPath(const QString& path);
245 
251  QStringList addPaths(const QStringList& paths);
252 
259  void setPaths(const QStringList& paths);
260 
267  bool removePath(const QString& path);
268 
272  QStringList removePaths(const QStringList& paths);
273 
275  void removeSelectedPaths();
276 
278  void clear();
279 
280 Q_SIGNALS:
281 
285  void pathsChanged(const QStringList& added, const QStringList& removed);
286 
288  void pathClicked(const QString& absolutePath);
289 
291  void pathDoubleClicked(const QString& absolutePath);
292 
297  void pathActivated(const QString& absolutePath);
298 
302  void currentPathChanged(const QString& currentAbsolutePath, const QString& previousAbsolutePath);
303 
304 protected:
305  QScopedPointer<ctkPathListWidgetPrivate> d_ptr;
306 
307 private:
308 
309  void setModel(QAbstractItemModel *model);
310 
311  Q_DECLARE_PRIVATE(ctkPathListWidget)
312  Q_DISABLE_COPY(ctkPathListWidget)
313 
314  Q_PRIVATE_SLOT(d_func(), void _q_emitPathClicked(const QModelIndex& index))
315  Q_PRIVATE_SLOT(d_func(), void _q_emitPathDoubleClicked(const QModelIndex& index))
316  Q_PRIVATE_SLOT(d_func(), void _q_emitPathActivated(const QModelIndex& index))
317  Q_PRIVATE_SLOT(d_func(), void _q_emitCurrentPathChanged(const QModelIndex &previous, const QModelIndex &current))
318 };
319 
320 Q_DECLARE_OPERATORS_FOR_FLAGS(ctkPathListWidget::PathOptions)
321 
322 #endif
323 
ctkPathListWidget::FilesOnly
@ FilesOnly
Allow only file entries.
Definition: ctkPathListWidget.h:101
ctkPathListWidget::PathOption
PathOption
Describes constraints on paths.
Definition: ctkPathListWidget.h:81
Q_DECLARE_OPERATORS_FOR_FLAGS
Q_DECLARE_OPERATORS_FOR_FLAGS(ctkVTKDataSetModel::AttributeTypes)
ctkPathListWidget::Superclass
QListView Superclass
Superclass typedef.
Definition: ctkPathListWidget.h:107
ctkPathListWidget::itemAt
QStandardItem * itemAt(int x, int y) const
Definition: ctkPathListWidget.h:205
ctkPathListWidget::pathAt
QString pathAt(int x, int y) const
Definition: ctkPathListWidget.h:202
ctkPathListWidget
The ctkPathListWidget lists files and/or directories.
Definition: ctkPathListWidget.h:47
ctkPathListWidget::d_ptr
QScopedPointer< ctkPathListWidgetPrivate > d_ptr
Definition: ctkPathListWidget.h:305
ctkPathListWidget::Mode
Mode
Definition: ctkPathListWidget.h:96