35 #include <QInputDialog>
36 #include <QMessageBox>
47 mPatientModelService(patientModelService)
49 this->setObjectName(
"TransferFunctionPresetWidget");
50 this->
setPresets(patientModelService->getPresetTransferFunctions3D());
51 QString toggleText =
"Toggle between apply presets,\neither on %1\nor both 2D and 3D\ntransfer functions.";
53 toggleText = toggleText.arg(
"3D");
55 toggleText = toggleText.arg(
"2D");
58 QIcon(
":/icons/preset_2D_and_3D.png"), toggleText,
"",
62 mApplyToAll =
settings()->
value(
"applyTransferFunctionPresetsToAll").toBool();
63 this->updateToggles();
73 mApplyToAll = !mApplyToAll;
76 this->updateToggles();
79 void TransferFunctionPresetWidget::updateToggles()
82 mToggleAction->setIcon(QIcon(
":/icons/preset_2D_and_3D.png"));
86 mToggleAction->setIcon(QIcon(
":/icons/preset_3D.png"));
88 mToggleAction->setIcon(QIcon(
":/icons/preset_2D.png"));
95 "<h3>Transfer Function Presets</h3>"
96 "<p>Lets you select a predefined transfer function.</p>"
103 if (mPatientModelService->getActiveImage())
112 ImagePtr activeImage = mPatientModelService->getActiveImage();
115 preset->
load(presetName, activeImage, this->use2D(), this->use3D());
122 ImagePtr activeImage = mPatientModelService->getActiveImage();
123 activeImage->resetTransferFunctions(this->use2D(), this->use3D());
131 if (!preset->getPresetList(
"").contains(newName))
132 newName =
"custom preset";
133 if (preset->isDefaultPreset(newName))
137 QString text = QInputDialog::getText(
this,
"Save Preset",
138 "Custom Preset Name", QLineEdit::Normal, newName, &ok);
139 if (!ok || text.isEmpty())
142 ImagePtr activeImage = mPatientModelService->getActiveImage();
143 preset->save(text, activeImage, this->use2D(), this->use3D());
149 bool TransferFunctionPresetWidget::use2D()
const
152 return !mIs3D || mApplyToAll;
155 bool TransferFunctionPresetWidget::use3D()
const
157 return mIs3D || mApplyToAll;
163 reportWarning(
"It is not possible to delete one of the default presets");
168 if (QMessageBox::question(
this,
"Delete current preset",
"Do you really want to delete the current preset?", QMessageBox::Cancel | QMessageBox::Ok) != QMessageBox::Ok)
void load(QString name, ImagePtr image, bool _2D=true, bool _3D=true)
boost::shared_ptr< class Image > ImagePtr
QVariant value(const QString &key, const QVariant &defaultValue=QVariant()) const
void setValue(const QString &key, const QVariant &value)
void deletePresetData(QString name, bool _2D=true, bool _3D=true)
Delete the preset data node.
void reportWarning(QString msg)
boost::shared_ptr< class PatientModelService > PatientModelServicePtr
Settings * settings()
Shortcut for accessing the settings instance.
static ActiveImageProxyPtr New(PatientModelServicePtr patientModelService)
boost::shared_ptr< class TransferFunctions3DPresets > TransferFunctions3DPresetsPtr
void activeImageChanged(const QString &uid)
The original image changed signal from DataManager.
Handles transfer function presets.