Browse Source

Merge branch 'DICOMAppViewer'

Stephen R. Aylward 14 years ago
parent
commit
ec46177dce

+ 7 - 5
Libs/DICOM/Widgets/Resources/UI/ctkDICOMAppWidget.ui

@@ -132,11 +132,7 @@
          </property>
          <layout class="QVBoxLayout" name="verticalLayout_3">
           <item>
-           <widget class="QLabel" name="imagePreview">
-            <property name="text">
-             <string>TextLabel</string>
-            </property>
-           </widget>
+           <widget class="ctkDICOMDatasetView" name="imagePreview" native="true"/>
           </item>
          </layout>
         </widget>
@@ -201,6 +197,12 @@
    <header>ctkDICOMThumbnailListWidget.h</header>
    <container>1</container>
   </customwidget>
+  <customwidget>
+   <class>ctkDICOMDatasetView</class>
+   <extends>QWidget</extends>
+   <header location="global">ctkDICOMDatasetView.h</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections>

+ 9 - 4
Libs/DICOM/Widgets/ctkDICOMAppWidget.cpp

@@ -1,6 +1,8 @@
 // std includes
 #include <iostream>
 
+#include <dcmimage.h>
+
 // Qt includes
 #include <QDebug>
 #include <QTreeView>
@@ -15,6 +17,7 @@
 #include "ctkDICOMIndexer.h"
 
 // ctkDICOMWidgets includes
+#include "ctkDICOMImage.h"
 #include "ctkDICOMModel.h"
 #include "ctkDICOMAppWidget.h"
 #include "ctkDICOMQueryResultsTabWidget.h"
@@ -200,17 +203,19 @@ void ctkDICOMAppWidget::onDICOMModelSelected(const QModelIndex& index)
 
   // TODO: this could check the type of the model entries
   QString thumbnailPath = d->DICOMDatabase->databaseDirectory();
-  thumbnailPath.append("/thumbs/").append(d->DICOMModel.data(index.parent().parent() ,ctkDICOMModel::UIDRole).toString());
+  thumbnailPath.append("/dicom/").append(d->DICOMModel.data(index.parent().parent() ,ctkDICOMModel::UIDRole).toString());
   thumbnailPath.append("/").append(d->DICOMModel.data(index.parent() ,ctkDICOMModel::UIDRole).toString());
   thumbnailPath.append("/").append(d->DICOMModel.data(index ,ctkDICOMModel::UIDRole).toString());
-  thumbnailPath.append(".png");
+  //thumbnailPath.append(".png");
   if (QFile(thumbnailPath).exists())
   {
-    d->imagePreview->setPixmap(QPixmap(thumbnailPath));
+    DicomImage dcmImage( thumbnailPath.toStdString().c_str() );
+    ctkDICOMImage ctkImage( & dcmImage );
+    d->imagePreview->addImage( ctkImage );
   }
   else
   {
-    d->imagePreview->setText("No preview");
+    d->imagePreview->clearImages();
   }
 
 

+ 6 - 0
Libs/DICOM/Widgets/ctkDICOMDatasetView.cpp

@@ -104,6 +104,12 @@ void ctkDICOMDatasetView::addImage( const ctkDICOMImage & image )
 }
 
 // -------------------------------------------------------------------------
+void ctkDICOMDatasetView::addImage( const QImage & image )
+{
+  Superclass::addImage( image );
+}
+
+// -------------------------------------------------------------------------
 void ctkDICOMDatasetView::update( bool zoomChanged,
   bool sizeChanged )
 {

+ 1 - 0
Libs/DICOM/Widgets/ctkDICOMDatasetView.h

@@ -55,6 +55,7 @@ public:
 public slots:
 
   void addImage( const ctkDICOMImage & image );
+  void addImage( const QImage & image );
 
   virtual void update( bool zoomChanged=false, bool sizeChanged=false );
 

+ 17 - 0
Libs/Widgets/ctkQImageView.cpp

@@ -24,6 +24,7 @@
 #include "ctkQImageView.h"
 
 // Qt includes
+#include <QApplication>
 #include <QLabel>
 #include <QHBoxLayout>
 #include <QDebug>
@@ -715,6 +716,22 @@ void ctkQImageView::mouseMoveEvent( QMouseEvent * event )
 }
 
 // -------------------------------------------------------------------------
+void ctkQImageView::enterEvent( QEvent * )
+{
+  Q_D( ctkQImageView );
+  QApplication::setOverrideCursor( QCursor(Qt::CrossCursor) );
+  d->Window->grabKeyboard();
+}
+
+// -------------------------------------------------------------------------
+void ctkQImageView::leaveEvent( QEvent * )
+{
+  Q_D( ctkQImageView );
+  QApplication::restoreOverrideCursor();
+  d->Window->releaseKeyboard();
+}
+
+// -------------------------------------------------------------------------
 void ctkQImageView::resizeEvent( QResizeEvent* event )
 {
   this->Superclass::resizeEvent( event );

+ 2 - 0
Libs/Widgets/ctkQImageView.h

@@ -90,6 +90,8 @@ public slots:
   virtual void mousePressEvent( QMouseEvent * event );
   virtual void mouseReleaseEvent( QMouseEvent * event );
   virtual void mouseMoveEvent( QMouseEvent * event );
+  virtual void enterEvent( QEvent * event );
+  virtual void leaveEvent( QEvent * event );
 
   void setCenter( double x, double y );
   void setPosition( double x, double y );