CTK  0.1.0
The Common Toolkit is a community effort to provide support code for medical image analysis, surgical navigation, and related projects.
ctkDICOMBrowser.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 =========================================================================*/
20 
21 #ifndef __ctkDICOMBrowser_h
22 #define __ctkDICOMBrowser_h
23 
24 // Qt includes
25 #include <QItemSelection>
26 #include <QWidget>
27 
28 #include "ctkDICOMWidgetsExport.h"
29 
30 class ctkDICOMBrowserPrivate;
31 class ctkDICOMDatabase;
33 class ctkFileDialog;
34 class ctkThumbnailLabel;
35 class QMenu;
36 class QModelIndex;
37 
55 class CTK_DICOM_WIDGETS_EXPORT ctkDICOMBrowser : public QWidget
56 {
57  Q_OBJECT
58  Q_ENUMS(ImportDirectoryMode)
59  Q_PROPERTY(ctkDICOMDatabase* database READ database)
60  Q_PROPERTY(QString databaseDirectory READ databaseDirectory WRITE setDatabaseDirectory)
61  Q_PROPERTY(QStringList tagsToPrecache READ tagsToPrecache WRITE setTagsToPrecache)
62  Q_PROPERTY(bool displayImportSummary READ displayImportSummary WRITE setDisplayImportSummary)
63  Q_PROPERTY(ctkDICOMTableManager* dicomTableManager READ dicomTableManager)
64  Q_PROPERTY(ctkDICOMBrowser::ImportDirectoryMode ImportDirectoryMode READ importDirectoryMode WRITE setImportDirectoryMode)
65 
66 public:
68 
69  typedef QWidget Superclass;
70  explicit ctkDICOMBrowser(QWidget* parent=0);
71  virtual ~ctkDICOMBrowser();
72 
74  QString databaseDirectory() const;
75 
77  static QString databaseDirectorySettingsKey();
78 
83  void setTagsToPrecache(const QStringList tags);
84  const QStringList tagsToPrecache();
85 
89  void updateDatabaseSchemaIfNeeded();
90 
91  ctkDICOMDatabase* database();
92 
93  ctkDICOMTableManager* dicomTableManager();
94 
98  void setDisplayImportSummary(bool);
99  bool displayImportSummary();
101  int patientsAddedDuringImport();
102  int studiesAddedDuringImport();
103  int seriesAddedDuringImport();
104  int instancesAddedDuringImport();
105 
107  {
108  ImportDirectoryCopy = 0,
109  ImportDirectoryAddLink
110  };
111 
115  ctkDICOMBrowser::ImportDirectoryMode importDirectoryMode()const;
116 
120  Q_INVOKABLE ctkFileDialog* importDialog()const;
121 
122 public Q_SLOTS:
123 
130  void setImportDirectoryMode(ctkDICOMBrowser::ImportDirectoryMode mode);
131 
132  void setDatabaseDirectory(const QString& directory);
133  void onFileIndexed(const QString& filePath);
134 
142  void openImportDialog();
143 
144  void openExportDialog();
145  void openQueryDialog();
146  void onRemoveAction();
147  void onRepairAction();
148 
149  void onTablesDensityComboBox(QString);
150 
158  void importDirectories(QStringList directories, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink);
159 
165  void importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink);
166 
168  void onImportDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink);
169 
172  void onPatientAdded(int, QString, QString, QString);
173  void onStudyAdded(QString);
174  void onSeriesAdded(QString);
175  void onInstanceAdded(QString);
176 
177 Q_SIGNALS:
179  void databaseDirectoryChanged(const QString&);
181  void queryRetrieveFinished();
183  void directoryImported();
184 
185 protected:
186  QScopedPointer<ctkDICOMBrowserPrivate> d_ptr;
187 
194  bool confirmDeleteSelectedUIDs(QStringList uids);
195 
196 protected Q_SLOTS:
197 
204  void onImportDirectoriesSelected(QStringList directories);
205 
206  void onImportDirectoryComboBoxCurrentIndexChanged(int index);
207 
208  void onModelSelected(const QItemSelection&, const QItemSelection&);
209 
211  void onPatientsRightClicked(const QPoint &point);
212 
214  void onStudiesRightClicked(const QPoint &point);
215 
217  void onSeriesRightClicked(const QPoint &point);
218 
221  void exportSelectedSeries(QString dirPath, QStringList uids);
224  void exportSelectedStudies(QString dirPath, QStringList uids);
227  void exportSelectedPatients(QString dirPath, QStringList uids);
228 
230  void onQueryRetrieveFinished();
231 
232 private:
233  Q_DECLARE_PRIVATE(ctkDICOMBrowser);
234  Q_DISABLE_COPY(ctkDICOMBrowser);
235 };
236 
238 
239 #endif
Q_DECLARE_METATYPE(ctkDICOMPersonName)
The DICOM browser widget provides an interface to organize DICOM data stored in a local ctkDICOMDatab...
QScopedPointer< ctkDICOMBrowserPrivate > d_ptr