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(QString databaseDirectory READ databaseDirectory WRITE setDatabaseDirectory)
60  Q_PROPERTY(int patientsAddedDuringImport READ patientsAddedDuringImport)
61  Q_PROPERTY(int studiesAddedDuringImport READ studiesAddedDuringImport)
62  Q_PROPERTY(int seriesAddedDuringImport READ seriesAddedDuringImport)
63  Q_PROPERTY(int instancesAddedDuringImport READ instancesAddedDuringImport)
64  Q_PROPERTY(QStringList tagsToPrecache READ tagsToPrecache WRITE setTagsToPrecache)
65  Q_PROPERTY(bool displayImportSummary READ displayImportSummary WRITE setDisplayImportSummary)
66  Q_PROPERTY(ctkDICOMBrowser::ImportDirectoryMode ImportDirectoryMode READ importDirectoryMode WRITE setImportDirectoryMode)
67 
68 public:
70 
71  typedef QWidget Superclass;
72  explicit ctkDICOMBrowser(QWidget* parent=0);
73  virtual ~ctkDICOMBrowser();
74 
76  QString databaseDirectory() const;
77 
79  Q_INVOKABLE static QString databaseDirectorySettingsKey();
80 
85  void setTagsToPrecache(const QStringList tags);
86  const QStringList tagsToPrecache();
87 
91  Q_INVOKABLE void updateDatabaseSchemaIfNeeded();
92 
93  Q_INVOKABLE ctkDICOMDatabase* database();
94 
95  Q_INVOKABLE ctkDICOMTableManager* dicomTableManager();
96 
100  void setDisplayImportSummary(bool);
101  bool displayImportSummary();
103  int patientsAddedDuringImport();
104  int studiesAddedDuringImport();
105  int seriesAddedDuringImport();
106  int instancesAddedDuringImport();
107 
109  {
110  ImportDirectoryCopy = 0,
111  ImportDirectoryAddLink
112  };
113 
117  ctkDICOMBrowser::ImportDirectoryMode importDirectoryMode()const;
118 
122  Q_INVOKABLE ctkFileDialog* importDialog()const;
123 
124 public Q_SLOTS:
125 
132  void setImportDirectoryMode(ctkDICOMBrowser::ImportDirectoryMode mode);
133 
134  void setDatabaseDirectory(const QString& directory);
135  void onFileIndexed(const QString& filePath);
136 
144  void openImportDialog();
145 
146  void openExportDialog();
147  void openQueryDialog();
148  void onRemoveAction();
149  void onRepairAction();
150 
151  void onTablesDensityComboBox(QString);
152 
160  void importDirectories(QStringList directories, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink);
161 
167  void importDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink);
168 
170  void onImportDirectory(QString directory, ctkDICOMBrowser::ImportDirectoryMode mode = ImportDirectoryAddLink);
171 
174  void onPatientAdded(int, QString, QString, QString);
175  void onStudyAdded(QString);
176  void onSeriesAdded(QString);
177  void onInstanceAdded(QString);
178 
179 Q_SIGNALS:
181  void databaseDirectoryChanged(const QString&);
183  void queryRetrieveFinished();
185  void directoryImported();
186 
187 protected:
188  QScopedPointer<ctkDICOMBrowserPrivate> d_ptr;
189 
196  bool confirmDeleteSelectedUIDs(QStringList uids);
197 
198 protected Q_SLOTS:
199 
206  void onImportDirectoriesSelected(QStringList directories);
207 
208  void onImportDirectoryComboBoxCurrentIndexChanged(int index);
209 
210  void onModelSelected(const QItemSelection&, const QItemSelection&);
211 
213  void onPatientsRightClicked(const QPoint &point);
214 
216  void onStudiesRightClicked(const QPoint &point);
217 
219  void onSeriesRightClicked(const QPoint &point);
220 
223  void exportSelectedSeries(QString dirPath, QStringList uids);
226  void exportSelectedStudies(QString dirPath, QStringList uids);
229  void exportSelectedPatients(QString dirPath, QStringList uids);
230 
232  void onQueryRetrieveFinished();
233 
234 private:
235  Q_DECLARE_PRIVATE(ctkDICOMBrowser);
236  Q_DISABLE_COPY(ctkDICOMBrowser);
237 };
238 
240 
241 #endif
ctkDICOMDatabase
Definition: ctkDICOMDatabase.h:52
ctkDICOMBrowser::d_ptr
QScopedPointer< ctkDICOMBrowserPrivate > d_ptr
Definition: ctkDICOMBrowser.h:188
ctkDICOMTableManager
Definition: ctkDICOMTableManager.h:39
ctkDICOMBrowser::ImportDirectoryMode
ImportDirectoryMode
Definition: ctkDICOMBrowser.h:108
ctkFileDialog
Definition: ctkFileDialog.h:42
ctkDICOMBrowser::Superclass
QWidget Superclass
Definition: ctkDICOMBrowser.h:71
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(ctkDICOMPersonName)
ctkDICOMBrowser
The DICOM browser widget provides an interface to organize DICOM data stored in a local ctkDICOMDatab...
Definition: ctkDICOMBrowser.h:55
ctkThumbnailLabel
Definition: ctkThumbnailLabel.h:38