Selaa lähdekoodia

add DICOM import widget, move ctkDICOMDatabse to ctkDICOMAppWidget

nherlambang 14 vuotta sitten
vanhempi
commit
2ff1a3930e

+ 92 - 0
Libs/DICOM/Widgets/Resources/UI/ctkDICOMImportWidget.ui

@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ctkDICOMImportWidget</class>
+ <widget class="QWidget" name="ctkDICOMImportWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>420</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Import DICOM</string>
+  </property>
+  <property name="styleSheet">
+   <string notr="true"/>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <widget class="ctkDirectoryButton" name="DirectoryWidget" native="true"/>
+   </item>
+   <item>
+    <widget class="QTreeView" name="directoryList"/>
+   </item>
+   <item>
+    <widget class="QCheckBox" name="copyCheckBox">
+     <property name="text">
+      <string>Copy to library</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>ctkDirectoryButton</class>
+   <extends>QWidget</extends>
+   <header>ctkDirectoryButton.h</header>
+   <container>1</container>
+   <slots>
+    <signal>directoryChanged(QString)</signal>
+   </slots>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>ctkDICOMImportWidget</receiver>
+   <slot>onOK()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>199</x>
+     <y>399</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>199</x>
+     <y>209</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>ctkDICOMImportWidget</receiver>
+   <slot>onCancel()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>199</x>
+     <y>399</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>199</x>
+     <y>209</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+ <slots>
+  <slot>onOK()</slot>
+  <slot>onCancel()</slot>
+ </slots>
+</ui>

+ 78 - 0
Libs/DICOM/Widgets/ctkDICOMImportWidget.cpp

@@ -0,0 +1,78 @@
+//ctkDICOMCore includes
+#include "ctkDICOMDatabase.h"
+
+// ctkDICOMWidgets includes
+#include "ctkDICOMImportWidget.h"
+#include "ui_ctkDICOMImportWidget.h"
+
+// STD includes
+#include <iostream>
+
+//Qt includes
+#include <QFileSystemModel>
+
+//----------------------------------------------------------------------------
+class ctkDICOMImportWidgetPrivate: public Ui_ctkDICOMImportWidget
+{
+public:
+  ctkDICOMImportWidgetPrivate(){}
+
+  QFileSystemModel* FileSystemModel;
+
+  ctkDICOMDatabase* DICOMDatabase;
+
+};
+
+//----------------------------------------------------------------------------
+// ctkDICOMImportWidgetPrivate methods
+
+//----------------------------------------------------------------------------
+// ctkDICOMImportWidget methods
+
+//----------------------------------------------------------------------------
+ctkDICOMImportWidget::ctkDICOMImportWidget(QWidget* _parent):Superclass(_parent), 
+  d_ptr(new ctkDICOMImportWidgetPrivate)
+{
+  Q_D(ctkDICOMImportWidget);
+  
+  d->setupUi(this);
+  
+  d->DirectoryWidget->setDirectory(QDir::homePath());
+
+  d->FileSystemModel = new QFileSystemModel(this);
+  d->FileSystemModel->setRootPath(QDir::homePath());
+  d->directoryList->setModel(d->FileSystemModel);
+  d->directoryList->setRootIndex(d->FileSystemModel->index(QDir::homePath()));
+
+  //connect signals and slots
+  connect(d->DirectoryWidget, SIGNAL(directoryChanged(const QString&)), this, SLOT(onTopDirectoryChanged(const QString&)));
+}
+
+//----------------------------------------------------------------------------
+ctkDICOMImportWidget::~ctkDICOMImportWidget()
+{
+  Q_D(ctkDICOMImportWidget);
+
+  d->FileSystemModel->deleteLater();
+}
+
+void ctkDICOMImportWidget::onOK(){
+  
+  this->close();
+}
+
+void ctkDICOMImportWidget::onCancel(){
+  this->close();
+}
+
+void ctkDICOMImportWidget::onTopDirectoryChanged(const QString& path){
+  Q_D(ctkDICOMImportWidget);
+  
+  d->directoryList->setRootIndex(d->FileSystemModel->index(path));
+}
+
+void ctkDICOMImportWidget::setDICOMDatabase(ctkDICOMDatabase* database){
+  Q_D(ctkDICOMImportWidget);
+
+  d->DICOMDatabase = database;
+}

+ 56 - 0
Libs/DICOM/Widgets/ctkDICOMImportWidget.h

@@ -0,0 +1,56 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.commontk.org/LICENSE
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=========================================================================*/
+
+#ifndef __ctkDICOMImportWidget_h
+#define __ctkDICOMImportWidget_h
+
+// Qt includes 
+#include <QWidget>
+
+#include "ctkDICOMWidgetsExport.h"
+
+class ctkDICOMImportWidgetPrivate;
+
+class ctkDICOMDatabase;
+
+class CTK_DICOM_WIDGETS_EXPORT ctkDICOMImportWidget : public QWidget
+{
+  Q_OBJECT
+public:
+  typedef QWidget Superclass;
+  explicit ctkDICOMImportWidget(QWidget* parent=0);
+  virtual ~ctkDICOMImportWidget();
+
+  void setDICOMDatabase(ctkDICOMDatabase* database);
+
+protected:
+  QScopedPointer<ctkDICOMImportWidgetPrivate> d_ptr;
+
+private:
+  Q_DECLARE_PRIVATE(ctkDICOMImportWidget);
+  Q_DISABLE_COPY(ctkDICOMImportWidget);
+
+public slots:
+  void onOK();
+  void onCancel();
+  void onTopDirectoryChanged(const QString& path);
+};
+
+#endif