fix: fix toolbar state error
This commit is contained in:
@@ -13,7 +13,7 @@
|
|||||||
#define VTKIS_IMAGE_PAN 5
|
#define VTKIS_IMAGE_PAN 5
|
||||||
#define VTKIS_IMAGE_ZOOM 6
|
#define VTKIS_IMAGE_ZOOM 6
|
||||||
#define VTKIS_IMAGE_WINDOWLEVEL 7
|
#define VTKIS_IMAGE_WINDOWLEVEL 7
|
||||||
#define VTKIS_IMAGE_SLICE 8
|
#define VTKIS_IMAGE_SLICE 4
|
||||||
#define VTKIS_IMAGE_ROTATE3D VTKIS_ROTATE
|
#define VTKIS_IMAGE_ROTATE3D VTKIS_ROTATE
|
||||||
#define VTKIS_IMAGE_ROTATE2D VTKIS_SPIN
|
#define VTKIS_IMAGE_ROTATE2D VTKIS_SPIN
|
||||||
#define VTKIS_VOLUME_ROTATE3D VTKIS_ROTATE
|
#define VTKIS_VOLUME_ROTATE3D VTKIS_ROTATE
|
||||||
|
|||||||
@@ -7,30 +7,52 @@
|
|||||||
#include <QButtonGroup>
|
#include <QButtonGroup>
|
||||||
#include <QActionGroup>
|
#include <QActionGroup>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
#include "Rendering/Measure/Measure.h"
|
#include "Rendering/Measure/Measure.h"
|
||||||
#include "UI/Widget/ImageView/DicomImageView.h"
|
#include "UI/Widget/ImageView/DicomImageView.h"
|
||||||
#include "UI/Manager/ImageViewManager.h"
|
#include "UI/Manager/ImageViewManager.h"
|
||||||
|
|
||||||
#include "Common/QGlobals.h"
|
#include "Common/QGlobals.h"
|
||||||
|
#include "Rendering/Core/RenderingDefines.h"
|
||||||
|
|
||||||
#include "ExportToolButton.h"
|
#include "ExportToolButton.h"
|
||||||
|
|
||||||
typedef tuple< const char *, int> ActionProperty;
|
typedef tuple< const char *,const char *, int> ActionProperty;
|
||||||
namespace {
|
namespace {
|
||||||
const char *SYNC_MANUAL_URL = ":/InfiniteViewer/Icon/sync/sync_manual.png";
|
const char *SYNC_MANUAL_URL = ":/InfiniteViewer/Icon/sync/sync_manual.png";
|
||||||
const char *SYNC_AUTO_URL = ":/InfiniteViewer/Icon/sync/sync_auto.png";
|
const char *SYNC_AUTO_URL = ":/InfiniteViewer/Icon/sync/sync_auto.png";
|
||||||
const char *SYNC_DIS_URL = ":/InfiniteViewer/Icon/sync/sync_dis.png";
|
const char *SYNC_AUTO_D_URL = ":/InfiniteViewer/Icon/sync/sync_autod.png";
|
||||||
const int ACTION_COUNT = 9;
|
const char *SYNC_DIS_URL = ":/InfiniteViewer/Icon/sync/sync_dis.png";
|
||||||
const ActionProperty MEASURE_ACTIIONS[ACTION_COUNT] = {
|
const char *SYNC_DIS_D_URL = ":/InfiniteViewer/Icon/sync/sync_disd.png";
|
||||||
{ ":/InfiniteViewer/Icon/distance.png", AnnotationActorType::RulerAnn},
|
const char *ANONYMIZE_URL = ":/InfiniteViewer/Icon/anno.png";
|
||||||
{ ":/InfiniteViewer/Icon/angle.png", AnnotationActorType::AngleAnn},
|
const char *ANONYMIZE_D_URL = ":/InfiniteViewer/Icon/annod.png";
|
||||||
{ ":/InfiniteViewer/Icon/polygon.png", AnnotationActorType::ClosedPolygonAnn},
|
const char *SLICE_URL = ":/InfiniteViewer/Icon/slice.png";
|
||||||
{ ":/InfiniteViewer/Icon/polyline.png", AnnotationActorType::OpenPolygonAnn},
|
const char *SLICE_D_URL = ":/InfiniteViewer/Icon/sliced.png";
|
||||||
{ ":/InfiniteViewer/Icon/arrow.png", AnnotationActorType::ArrowAnn},
|
const char *WINDOW_URL = ":/InfiniteViewer/Icon/windowlevel.png";
|
||||||
{ ":/InfiniteViewer/Icon/ellipse.png", AnnotationActorType::EllipseAnn},
|
const char *WINDOW_D_URL = ":/InfiniteViewer/Icon/windowleveld.png";
|
||||||
{ ":/InfiniteViewer/Icon/diameter.png", AnnotationActorType::DiameterAnn},
|
const char *PAN_URL = ":/InfiniteViewer/Icon/pan.png";
|
||||||
{ ":/InfiniteViewer/Icon/text.png", AnnotationActorType::TextAnn},
|
const char *PAN_D_URL = ":/InfiniteViewer/Icon/pand.png";
|
||||||
{ ":/InfiniteViewer/Icon/crosshair.png", AnnotationActorType::SyncPoint}
|
const char *ZOOM_URL = ":/InfiniteViewer/Icon/zoom.png";
|
||||||
|
const char *ZOOM_D_URL = ":/InfiniteViewer/Icon/zoomd.png";
|
||||||
|
const char *FLIP_URL = ":/InfiniteViewer/Icon/flip.png";
|
||||||
|
const char *FLIP_D_URL = ":/InfiniteViewer/Icon/flipd.png";
|
||||||
|
const char *MPR_URL = ":/InfiniteViewer/Icon/MPR.png";
|
||||||
|
const char *MPR_D_URL = ":/InfiniteViewer/Icon/unMPR.png";
|
||||||
|
const char *LOC_POINT_URL = ":/InfiniteViewer/Icon/crosshair.png";
|
||||||
|
const char *LOC_POINT_D_URL = ":/InfiniteViewer/Icon/crosshaird.png";
|
||||||
|
const char *GRID_URL = ":/InfiniteViewer/Icon/grid.png";
|
||||||
|
const char *GRID_D_URL = ":/InfiniteViewer/Icon/gridd.png";
|
||||||
|
|
||||||
|
const int ACTION_COUNT = 8;
|
||||||
|
const ActionProperty MEASURE_ACTIIONS[ACTION_COUNT] = {
|
||||||
|
{ ":/InfiniteViewer/Icon/distance.png", ":/InfiniteViewer/Icon/distanced.png", AnnotationActorType::RulerAnn},
|
||||||
|
{ ":/InfiniteViewer/Icon/angle.png", ":/InfiniteViewer/Icon/angled.png", AnnotationActorType::AngleAnn},
|
||||||
|
{ ":/InfiniteViewer/Icon/polygon.png", ":/InfiniteViewer/Icon/polygond.png", AnnotationActorType::ClosedPolygonAnn},
|
||||||
|
{ ":/InfiniteViewer/Icon/polyline.png", ":/InfiniteViewer/Icon/polylined.png", AnnotationActorType::OpenPolygonAnn},
|
||||||
|
{ ":/InfiniteViewer/Icon/arrow.png", ":/InfiniteViewer/Icon/arrowd.png", AnnotationActorType::ArrowAnn},
|
||||||
|
{ ":/InfiniteViewer/Icon/ellipse.png", ":/InfiniteViewer/Icon/ellipsed.png", AnnotationActorType::EllipseAnn},
|
||||||
|
{ ":/InfiniteViewer/Icon/diameter.png", ":/InfiniteViewer/Icon/diameterd.png", AnnotationActorType::DiameterAnn},
|
||||||
|
{ ":/InfiniteViewer/Icon/text.png", ":/InfiniteViewer/Icon/textd.png", AnnotationActorType::TextAnn}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,7 +93,11 @@ DefaultToolBar::DefaultToolBar(QWidget *parent) : QToolBar(parent)
|
|||||||
//init icons
|
//init icons
|
||||||
mManualIcon.addFile(SYNC_MANUAL_URL);
|
mManualIcon.addFile(SYNC_MANUAL_URL);
|
||||||
mAutoIcon.addFile(SYNC_AUTO_URL);
|
mAutoIcon.addFile(SYNC_AUTO_URL);
|
||||||
|
mAutoIcon.addFile(SYNC_AUTO_D_URL, QSize(), QIcon::Disabled);
|
||||||
|
|
||||||
mDisIcon.addFile(SYNC_DIS_URL);
|
mDisIcon.addFile(SYNC_DIS_URL);
|
||||||
|
mDisIcon.addFile(SYNC_DIS_D_URL, QSize(), QIcon::Disabled);
|
||||||
|
|
||||||
initToolBarButtons();
|
initToolBarButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,11 +123,28 @@ void DefaultToolBar::resetToolbarMode(bool aHasSeries)
|
|||||||
if (aHasSeries){
|
if (aHasSeries){
|
||||||
|
|
||||||
mActionVolumeDetail->setVisible(false);
|
mActionVolumeDetail->setVisible(false);
|
||||||
QPixmap map(std::get<0>(MEASURE_ACTIIONS[0]));
|
|
||||||
mBtnMeasure->setIcon(QIcon(map));
|
QIcon icon;
|
||||||
MeasureHelper::setMeasureType(std::get<1>(MEASURE_ACTIIONS[0]));
|
icon.addFile(std::get<0>(MEASURE_ACTIIONS[0]));
|
||||||
mBtnSlice->click();
|
icon.addFile(std::get<1>(MEASURE_ACTIIONS[0]), QSize(), QIcon::Disabled);
|
||||||
mBtnSlice->setChecked(true);
|
mBtnMeasure->setIcon(icon);
|
||||||
|
|
||||||
|
MeasureHelper::setMeasureType(std::get<2>(MEASURE_ACTIIONS[0]));
|
||||||
|
setMode(VTKIS_IMAGE_SLICE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int DefaultToolBar::mode() const
|
||||||
|
{
|
||||||
|
return mValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DefaultToolBar::setMode(int aValue)
|
||||||
|
{
|
||||||
|
if (aValue != mValue){
|
||||||
|
int temp = mValue;
|
||||||
|
mValue = aValue;
|
||||||
|
emit modeChanged(temp, mValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,27 +178,23 @@ void DefaultToolBar::initToolBarButtons() {
|
|||||||
mBtnGrid->setEnabled(false);
|
mBtnGrid->setEnabled(false);
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addFile(":/InfiniteViewer/Icon/grid.png");
|
icon.addFile(GRID_URL);
|
||||||
icon.addFile(":/InfiniteViewer/Icon/gridd.png", QSize(), QIcon::Disabled);
|
icon.addFile(GRID_D_URL, QSize(), QIcon::Disabled);
|
||||||
mBtnGrid->setIcon(icon);
|
mBtnGrid->setIcon(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
addButton(mBtnSync, "sync");
|
addButton(mBtnSync, "sync");
|
||||||
mBtnSync->setEnabled(false);
|
mBtnSync->setEnabled(false);
|
||||||
{
|
mBtnSync->setIcon(mDisIcon);
|
||||||
QIcon icon;
|
|
||||||
icon.addFile(":/InfiniteViewer/Icon/sync/sync_dis.png");
|
|
||||||
icon.addFile(":/InfiniteViewer/Icon/sync/sync_disd.png", QSize(), QIcon::Disabled);
|
|
||||||
mBtnSync->setIcon(icon);
|
|
||||||
}
|
|
||||||
|
|
||||||
addButton(mBtnAnonymize, "anonymize");
|
addButton(mBtnAnonymize, "anonymize");
|
||||||
mBtnAnonymize->setEnabled(false);
|
mBtnAnonymize->setEnabled(false);
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addFile(":/InfiniteViewer/Icon/anno.png");
|
icon.addFile(ANONYMIZE_URL);
|
||||||
icon.addFile(":/InfiniteViewer/Icon/annod.png", QSize(), QIcon::Disabled);
|
icon.addFile(ANONYMIZE_D_URL, QSize(), QIcon::Disabled);
|
||||||
mBtnAnonymize->setIcon(icon);
|
mBtnAnonymize->setIcon(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,8 +205,8 @@ void DefaultToolBar::initToolBarButtons() {
|
|||||||
mBtnSlice->setEnabled(false);
|
mBtnSlice->setEnabled(false);
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addFile(":/InfiniteViewer/Icon/slice.png");
|
icon.addFile(SLICE_URL);
|
||||||
icon.addFile(":/InfiniteViewer/Icon/sliced.png", QSize(), QIcon::Disabled);
|
icon.addFile(SLICE_D_URL, QSize(), QIcon::Disabled);
|
||||||
mBtnSlice->setIcon(icon);
|
mBtnSlice->setIcon(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,8 +214,8 @@ void DefaultToolBar::initToolBarButtons() {
|
|||||||
mBtnWindow->setEnabled(false);
|
mBtnWindow->setEnabled(false);
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addFile(":/InfiniteViewer/Icon/windowlevel.png");
|
icon.addFile(WINDOW_URL);
|
||||||
icon.addFile(":/InfiniteViewer/Icon/windowleveld.png", QSize(), QIcon::Disabled);
|
icon.addFile(WINDOW_D_URL, QSize(), QIcon::Disabled);
|
||||||
mBtnWindow->setIcon(icon);
|
mBtnWindow->setIcon(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,8 +223,8 @@ void DefaultToolBar::initToolBarButtons() {
|
|||||||
mBtnPan->setEnabled(false);
|
mBtnPan->setEnabled(false);
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addFile(":/InfiniteViewer/Icon/pan.png");
|
icon.addFile(PAN_URL);
|
||||||
icon.addFile(":/InfiniteViewer/Icon/pand.png", QSize(), QIcon::Disabled);
|
icon.addFile(PAN_D_URL, QSize(), QIcon::Disabled);
|
||||||
mBtnPan->setIcon(icon);
|
mBtnPan->setIcon(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,8 +232,8 @@ void DefaultToolBar::initToolBarButtons() {
|
|||||||
mBtnZoom->setEnabled(false);
|
mBtnZoom->setEnabled(false);
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addFile(":/InfiniteViewer/Icon/zoom.png");
|
icon.addFile(ZOOM_URL);
|
||||||
icon.addFile(":/InfiniteViewer/Icon/zoomd.png", QSize(), QIcon::Disabled);
|
icon.addFile(ZOOM_D_URL, QSize(), QIcon::Disabled);
|
||||||
mBtnZoom->setIcon(icon);
|
mBtnZoom->setIcon(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,8 +241,8 @@ void DefaultToolBar::initToolBarButtons() {
|
|||||||
mBtnMeasure->setEnabled(false);
|
mBtnMeasure->setEnabled(false);
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addFile(":/InfiniteViewer/Icon/distance.png");
|
icon.addFile(std::get<0>(MEASURE_ACTIIONS[0]));
|
||||||
icon.addFile(":/InfiniteViewer/Icon/distanced.png", QSize(), QIcon::Disabled);
|
icon.addFile(std::get<1>(MEASURE_ACTIIONS[0]), QSize(), QIcon::Disabled);
|
||||||
mBtnMeasure->setIcon(icon);
|
mBtnMeasure->setIcon(icon);
|
||||||
}
|
}
|
||||||
mActionVolumeDetail = addWidget(mLblMeasure);
|
mActionVolumeDetail = addWidget(mLblMeasure);
|
||||||
@@ -221,8 +260,8 @@ void DefaultToolBar::initToolBarButtons() {
|
|||||||
mBtnFlip->setEnabled(false);
|
mBtnFlip->setEnabled(false);
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addFile(":/InfiniteViewer/Icon/flip.png");
|
icon.addFile(FLIP_URL);
|
||||||
icon.addFile(":/InfiniteViewer/Icon/flipd.png", QSize(), QIcon::Disabled);
|
icon.addFile(FLIP_D_URL, QSize(), QIcon::Disabled);
|
||||||
mBtnFlip->setIcon(icon);
|
mBtnFlip->setIcon(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,8 +278,8 @@ void DefaultToolBar::initToolBarButtons() {
|
|||||||
mBtnMPR->setEnabled(false);
|
mBtnMPR->setEnabled(false);
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
icon.addFile(":/InfiniteViewer/Icon/MPR.png");
|
icon.addFile(MPR_URL);
|
||||||
icon.addFile(":/InfiniteViewer/Icon/unMPR.png", QSize(), QIcon::Disabled);
|
icon.addFile(MPR_D_URL, QSize(), QIcon::Disabled);
|
||||||
mBtnMPR->setIcon(icon);
|
mBtnMPR->setIcon(icon);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -370,7 +409,7 @@ void DefaultToolBar::initModeButtons() {
|
|||||||
mBtnWindow->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
mBtnWindow->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
mBtnWindow->setToolTip(tr("Adjust window level"));
|
mBtnWindow->setToolTip(tr("Adjust window level"));
|
||||||
connect(mBtnWindow, &QToolButton::clicked, this, [=]() {
|
connect(mBtnWindow, &QToolButton::clicked, this, [=]() {
|
||||||
emit modeChanged(7);
|
setMode(VTKIS_IMAGE_WINDOWLEVEL);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Menu
|
// Menu
|
||||||
@@ -404,17 +443,17 @@ void DefaultToolBar::initModeButtons() {
|
|||||||
|
|
||||||
mBtnPan->setToolTip(tr("Pan image"));
|
mBtnPan->setToolTip(tr("Pan image"));
|
||||||
connect(mBtnPan, &QToolButton::clicked, this, [=]() {
|
connect(mBtnPan, &QToolButton::clicked, this, [=]() {
|
||||||
emit modeChanged(5);
|
setMode(VTKIS_IMAGE_PAN);
|
||||||
});
|
});
|
||||||
|
|
||||||
mBtnZoom->setToolTip(tr("Zoom image"));
|
mBtnZoom->setToolTip(tr("Zoom image"));
|
||||||
connect(mBtnZoom, &QToolButton::clicked, this, [=]() {
|
connect(mBtnZoom, &QToolButton::clicked, this, [=]() {
|
||||||
emit modeChanged(6);
|
setMode(VTKIS_IMAGE_ZOOM);
|
||||||
});
|
});
|
||||||
|
|
||||||
mBtnSlice->setToolTip(tr("Browse series"));
|
mBtnSlice->setToolTip(tr("Browse series"));
|
||||||
connect(mBtnSlice, &QToolButton::clicked, this, [=]() {
|
connect(mBtnSlice, &QToolButton::clicked, this, [=]() {
|
||||||
emit modeChanged(4);
|
setMode(VTKIS_IMAGE_SLICE);
|
||||||
});
|
});
|
||||||
|
|
||||||
initMeasureButton();
|
initMeasureButton();
|
||||||
@@ -489,16 +528,16 @@ void DefaultToolBar::initMeasureButton() {
|
|||||||
|
|
||||||
mBtnMeasure->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
mBtnMeasure->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
|
||||||
mBtnMeasure->setToolTip(tr("Measuring tool"));
|
mBtnMeasure->setToolTip(tr("Measuring tool"));
|
||||||
mBtnMeasure->setProperty("mode",36);
|
mBtnMeasure->setProperty("mode",VTKIS_MEASURE);
|
||||||
|
|
||||||
connect(mBtnMeasure, &QToolButton::clicked, [=](){
|
connect(mBtnMeasure, &QToolButton::clicked, [=](){
|
||||||
int mode = mBtnMeasure->property("mode").toInt();
|
int mode = mBtnMeasure->property("mode").toInt();
|
||||||
if (mode != 36)
|
if (mode != VTKIS_MEASURE)
|
||||||
{
|
{
|
||||||
emit modeChanged(mode);
|
setMode(mode);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
emit modeChanged(36);
|
setMode(VTKIS_MEASURE);
|
||||||
MeasureHelper::setMeasureType(MeasureHelper::getMeasureType());
|
MeasureHelper::setMeasureType(MeasureHelper::getMeasureType());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -506,31 +545,37 @@ void DefaultToolBar::initMeasureButton() {
|
|||||||
QMenu *m;
|
QMenu *m;
|
||||||
m = new QMenu(this);
|
m = new QMenu(this);
|
||||||
|
|
||||||
for (int j = 0; j < ACTION_COUNT-1; ++j) {
|
for (int j = 0; j < ACTION_COUNT; ++j) {
|
||||||
m->addAction(measures[j], this, [=] {
|
m->addAction(measures[j], this, [=] {
|
||||||
mBtnMeasure->setChecked(true);
|
mBtnMeasure->setChecked(true);
|
||||||
QPixmap map(std::get<0>(MEASURE_ACTIIONS[j]));
|
QIcon icon;
|
||||||
mBtnMeasure->setIcon(QIcon(map));
|
icon.addFile(std::get<0>(MEASURE_ACTIIONS[j]));
|
||||||
emit modeChanged(36);
|
icon.addFile(std::get<1>(MEASURE_ACTIIONS[j]), QSize(), QIcon::Disabled);
|
||||||
MeasureHelper::setMeasureType(std::get<1>(MEASURE_ACTIIONS[j]));
|
mBtnMeasure->setIcon(icon);
|
||||||
mBtnMeasure->setProperty("mode",36);
|
setMode(VTKIS_MEASURE);
|
||||||
|
MeasureHelper::setMeasureType(std::get<2>(MEASURE_ACTIIONS[j]));
|
||||||
|
mBtnMeasure->setProperty("mode",VTKIS_MEASURE);
|
||||||
mActionVolumeDetail->setVisible(false);
|
mActionVolumeDetail->setVisible(false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
m->addAction(tr("Location Point"), this,[=](){
|
m->addAction(tr("Location Point"), this,[=](){
|
||||||
mBtnMeasure->setChecked(true);
|
mBtnMeasure->setChecked(true);
|
||||||
QPixmap map(":/InfiniteViewer/Icon/crosshair.png");
|
QIcon icon;
|
||||||
mBtnMeasure->setIcon(QIcon(map));
|
icon.addFile(LOC_POINT_URL);
|
||||||
mBtnMeasure->setProperty("mode",38);
|
icon.addFile(LOC_POINT_D_URL, QSize(), QIcon::Disabled);
|
||||||
emit modeChanged(38);
|
mBtnMeasure->setIcon(icon);
|
||||||
|
mBtnMeasure->setProperty("mode",VTKIS_SYNCPOINT);
|
||||||
|
setMode(VTKIS_SYNCPOINT);
|
||||||
});
|
});
|
||||||
m->addAction(tr("Volume Measure"), this,[=](){
|
m->addAction(tr("Volume Measure"), this,[=](){
|
||||||
mBtnMeasure->setChecked(true);
|
mBtnMeasure->setChecked(true);
|
||||||
QPixmap map(":/InfiniteViewer/Icon/volmeasure.png");
|
QIcon icon;
|
||||||
mBtnMeasure->setIcon(QIcon(map));
|
icon.addFile(":/InfiniteViewer/Icon/volmeasure.png");
|
||||||
mBtnMeasure->setProperty("mode",39);
|
icon.addFile(":/InfiniteViewer/Icon/volmeasured.png", QSize(), QIcon::Disabled);
|
||||||
emit modeChanged(39);
|
mBtnMeasure->setIcon(icon);
|
||||||
|
mBtnMeasure->setProperty("mode",VTKIS_VOLUMEMEASURE);
|
||||||
|
setMode(VTKIS_VOLUMEMEASURE);
|
||||||
});
|
});
|
||||||
m->addSeparator();
|
m->addSeparator();
|
||||||
ADD_DEL_ACTION(tr("Delete selected"), AnnotationDeleteType::DeleteSelectedAnn);
|
ADD_DEL_ACTION(tr("Delete selected"), AnnotationDeleteType::DeleteSelectedAnn);
|
||||||
@@ -677,7 +722,7 @@ void DefaultToolBar::initMPRButton(){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefaultToolBar::resetNeedCheckFunctionButtons(){
|
void DefaultToolBar::resetModeButtons(){
|
||||||
mBtnMPR->setEnabled(false);
|
mBtnMPR->setEnabled(false);
|
||||||
mBtnFusion->setEnabled(false);
|
mBtnFusion->setEnabled(false);
|
||||||
for(auto var : mPseudocolorGroup->actions())
|
for(auto var : mPseudocolorGroup->actions())
|
||||||
@@ -690,10 +735,18 @@ void DefaultToolBar::resetNeedCheckFunctionButtons(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state)
|
void DefaultToolBar::updateModeButtonsState(ViewFunctionState state)
|
||||||
{
|
{
|
||||||
if (state.none)
|
if (state.none)
|
||||||
{
|
{
|
||||||
|
mBtnAnonymize->setCheckable(false);
|
||||||
|
mBtnSlice->setCheckable(false);
|
||||||
|
mBtnWindow->setCheckable(false);
|
||||||
|
mBtnPan->setCheckable(false);
|
||||||
|
mBtnZoom->setCheckable(false);
|
||||||
|
mBtnMeasure->setCheckable(false);
|
||||||
|
|
||||||
|
|
||||||
mBtnSave->setEnabled(false);
|
mBtnSave->setEnabled(false);
|
||||||
mBtnGrid->setEnabled(false);
|
mBtnGrid->setEnabled(false);
|
||||||
mBtnSync->setEnabled(false);
|
mBtnSync->setEnabled(false);
|
||||||
@@ -711,6 +764,13 @@ void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state)
|
|||||||
mBtnVR->setEnabled(false);
|
mBtnVR->setEnabled(false);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
mBtnAnonymize->setCheckable(true);
|
||||||
|
mBtnSlice->setCheckable(true);
|
||||||
|
mBtnWindow->setCheckable(true);
|
||||||
|
mBtnPan->setCheckable(true);
|
||||||
|
mBtnZoom->setCheckable(true);
|
||||||
|
mBtnMeasure->setCheckable(true);
|
||||||
|
|
||||||
mBtnSave->setEnabled(true);
|
mBtnSave->setEnabled(true);
|
||||||
mBtnGrid->setEnabled(true);
|
mBtnGrid->setEnabled(true);
|
||||||
mBtnSync->setEnabled(true);
|
mBtnSync->setEnabled(true);
|
||||||
@@ -737,6 +797,38 @@ void DefaultToolBar::updateNeedCheckFunctionButtons(ViewFunctionState state)
|
|||||||
mMPRActions[state.canMPR]->setChecked(true);
|
mMPRActions[state.canMPR]->setChecked(true);
|
||||||
}
|
}
|
||||||
mBtnFusion->setEnabled(state.canFusion);
|
mBtnFusion->setEnabled(state.canFusion);
|
||||||
|
switch (mode())
|
||||||
|
{
|
||||||
|
case VTKIS_IMAGE_PAN:
|
||||||
|
{
|
||||||
|
mBtnPan->setChecked(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case VTKIS_IMAGE_ZOOM:
|
||||||
|
{
|
||||||
|
mBtnZoom->setChecked(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case VTKIS_IMAGE_SLICE:
|
||||||
|
{
|
||||||
|
mBtnSlice->setChecked(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case VTKIS_IMAGE_WINDOWLEVEL:
|
||||||
|
{
|
||||||
|
mBtnWindow->setChecked(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case VTKIS_MEASURE:
|
||||||
|
case VTKIS_SYNCPOINT:
|
||||||
|
case VTKIS_VOLUMEMEASURE:
|
||||||
|
{
|
||||||
|
mBtnMeasure->setChecked(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,21 +15,23 @@ class DefaultToolBar : public QToolBar {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit DefaultToolBar(QWidget *parent = nullptr);
|
explicit DefaultToolBar(QWidget *parent = nullptr);
|
||||||
|
~DefaultToolBar();
|
||||||
|
|
||||||
~DefaultToolBar();
|
Q_PROPERTY(int mode READ mode WRITE setMode NOTIFY modeChanged)
|
||||||
|
void resetModeButtons();
|
||||||
void resetNeedCheckFunctionButtons();
|
void updateModeButtonsState(ViewFunctionState state);
|
||||||
void updateNeedCheckFunctionButtons(ViewFunctionState state);
|
|
||||||
void setViewManager(ImageViewManager* aManager);
|
void setViewManager(ImageViewManager* aManager);
|
||||||
void changePseudoColor(bool on = false);
|
void changePseudoColor(bool on = false);
|
||||||
void resetToolbarMode(bool aHasSeries = true);
|
void resetToolbarMode(bool aHasSeries = true);
|
||||||
|
int mode() const;
|
||||||
|
void setMode(int aValue);
|
||||||
signals:
|
signals:
|
||||||
void openFile();
|
void openFile();
|
||||||
void openFolder();
|
void openFolder();
|
||||||
void import();
|
void import();
|
||||||
void save();
|
void save();
|
||||||
void showGrid(QToolButton* btn);
|
void showGrid(QToolButton* btn);
|
||||||
void modeChanged(int mode);
|
void modeChanged(int aLastMode,int mCurrentMode);
|
||||||
void customWindow();
|
void customWindow();
|
||||||
void fusion(bool on = false);
|
void fusion(bool on = false);
|
||||||
void cine(bool on = false);
|
void cine(bool on = false);
|
||||||
@@ -109,6 +111,7 @@ private:
|
|||||||
QAction* mMPRActions[3]={nullptr,nullptr,nullptr};
|
QAction* mMPRActions[3]={nullptr,nullptr,nullptr};
|
||||||
QActionGroup *mPseudocolorGroup;
|
QActionGroup *mPseudocolorGroup;
|
||||||
ImageViewManager* mImageViewManager;
|
ImageViewManager* mImageViewManager;
|
||||||
|
int mValue;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -83,14 +83,14 @@ void QDicomViewer::SetupConnections() {
|
|||||||
initScreenControl();
|
initScreenControl();
|
||||||
|
|
||||||
connect(ui->viewContainer->getViewManager(), &ImageViewManager::currentViewChanged,
|
connect(ui->viewContainer->getViewManager(), &ImageViewManager::currentViewChanged,
|
||||||
ui->toolBar, &DefaultToolBar::resetNeedCheckFunctionButtons);
|
ui->toolBar, &DefaultToolBar::resetModeButtons);
|
||||||
|
|
||||||
worker.setManager(ui->viewContainer->getViewManager());
|
worker.setManager(ui->viewContainer->getViewManager());
|
||||||
connect(ui->viewContainer->getViewManager(),
|
connect(ui->viewContainer->getViewManager(),
|
||||||
&ImageViewManager::currentViewChanged,
|
&ImageViewManager::currentViewChanged,
|
||||||
&worker,&ImageViewStateCheckWorker::checkImageViewState, Qt::QueuedConnection);
|
&worker,&ImageViewStateCheckWorker::checkImageViewState, Qt::QueuedConnection);
|
||||||
connect(&worker,&ImageViewStateCheckWorker::imageViewStateChanged,
|
connect(&worker,&ImageViewStateCheckWorker::imageViewStateChanged,
|
||||||
ui->toolBar,&DefaultToolBar::updateNeedCheckFunctionButtons, Qt::QueuedConnection);
|
ui->toolBar,&DefaultToolBar::updateModeButtonsState, Qt::QueuedConnection);
|
||||||
workerManager.registerWorker(&worker);
|
workerManager.registerWorker(&worker);
|
||||||
|
|
||||||
//通知左侧的缩略图bar ,当前选中series的变换
|
//通知左侧的缩略图bar ,当前选中series的变换
|
||||||
@@ -138,7 +138,7 @@ void QDicomViewer::initViewOperation() {
|
|||||||
// operation reference line hide and show
|
// operation reference line hide and show
|
||||||
connect(ui->toolBar, &DefaultToolBar::referenceLineStateChange,
|
connect(ui->toolBar, &DefaultToolBar::referenceLineStateChange,
|
||||||
ui->viewContainer->getViewManager(), &ImageViewManager::switchReferenceLineVisibility); // operation mode change
|
ui->viewContainer->getViewManager(), &ImageViewManager::switchReferenceLineVisibility); // operation mode change
|
||||||
connect(ui->toolBar, &DefaultToolBar::modeChanged, [=](int mode) {
|
connect(ui->toolBar, &DefaultToolBar::modeChanged, [=](int lastMode,int mode) {
|
||||||
ui->viewContainer->getViewManager()->setInteractionMode(mode);
|
ui->viewContainer->getViewManager()->setInteractionMode(mode);
|
||||||
});
|
});
|
||||||
// custom window level
|
// custom window level
|
||||||
@@ -339,7 +339,7 @@ void QDicomViewer::Slot_ToolbarVisibilityChanged(bool visible) {
|
|||||||
|
|
||||||
void QDicomViewer::openDICOMFromPACS(int err, std::string dirName) {
|
void QDicomViewer::openDICOMFromPACS(int err, std::string dirName) {
|
||||||
if (err == NOERROR) {
|
if (err == NOERROR) {
|
||||||
openDICOMWithLayout(dirName, LEFT_SIDE);
|
openDICOMWithLayout(dirName, UNKNOWN_SIDE);
|
||||||
} else {
|
} else {
|
||||||
//pop out msg box
|
//pop out msg box
|
||||||
QMessageBox::warning(this, tr("Warning"), tr("open DICOM Images From PACS Fail"));
|
QMessageBox::warning(this, tr("Warning"), tr("open DICOM Images From PACS Fail"));
|
||||||
|
|||||||
Reference in New Issue
Block a user