19 #include <QColorDialog> 20 #include <QHBoxLayout> 24 : QWidgetAction(parent)
31 : QWidgetAction(parent)
39 m_ColorButton =
new QPushButton;
40 m_ColorButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
41 connect(m_ColorButton, &QPushButton::clicked,
this, &QmitkDataNodeColorAction::OnColorChanged);
43 QLabel* colorLabel =
new QLabel(tr(
"Color: "));
44 colorLabel->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
45 QHBoxLayout* colorWidgetLayout =
new QHBoxLayout;
46 colorWidgetLayout->setContentsMargins(4, 4, 4, 4);
47 colorWidgetLayout->addWidget(colorLabel);
48 colorWidgetLayout->addWidget(m_ColorButton);
50 QWidget* colorWidget =
new QWidget;
51 colorWidget->setLayout(colorWidgetLayout);
53 setDefaultWidget(colorWidget);
55 connect(
this, &QmitkDataNodeColorAction::changed,
this, &QmitkDataNodeColorAction::OnActionChanged);
63 if (dataNode->
GetColor(rgb, baseRenderer))
65 QColor color(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255);
66 QString styleSheet = QString(
"background-color: ") + color.name(QColor::HexRgb);
67 m_ColorButton->setAutoFillBackground(
true);
68 m_ColorButton->setStyleSheet(styleSheet);
72 void QmitkDataNodeColorAction::OnColorChanged()
75 if (dataNodes.isEmpty())
85 for (
auto& dataNode : dataNodes)
87 if (dataNode.IsNull())
93 if (dataNode->GetColor(rgb, baseRenderer))
97 QColor initial(rgb[0] * 255, rgb[1] * 255, rgb[2] * 255);
98 newColor = QColorDialog::getColor(initial,
nullptr, QString(tr(
"Change color")));
100 if (newColor.isValid())
102 selectedColor =
true;
110 dataNode->SetProperty(
"color",
mitk::ColorProperty::New(newColor.redF(), newColor.greenF(), newColor.blueF()), baseRenderer);
111 if (dataNode->GetProperty(
"binaryimage.selectedcolor", baseRenderer))
113 dataNode->SetProperty(
"binaryimage.selectedcolor",
mitk::ColorProperty::New(newColor.redF(), newColor.greenF(), newColor.blueF()), baseRenderer);
118 if (
nullptr == baseRenderer)
128 void QmitkDataNodeColorAction::OnActionChanged()
131 if (dataNode.IsNull())
mitk::BaseRenderer::Pointer GetBaseRenderer()
Grants access to the base renderer stored for the action. Will return nullptr if renderer was never s...
QList< mitk::DataNode::Pointer > GetSelectedNodes() const
QmitkDataNodeColorAction(QWidget *parent, berry::IWorkbenchPartSite::Pointer workbenchPartSite)
void InitializeWithDataNode(const mitk::DataNode *dataNode) override
bool GetColor(float rgb[3], const mitk::BaseRenderer *renderer=nullptr, const char *propertyKey="color") const
Convenience access method for color properties (instances of ColorProperty)
static RenderingManager * GetInstance()
mitk::DataNode::Pointer GetSelectedNode() const
void InitializeAction() override
void RequestUpdate(vtkRenderWindow *renderWindow)
const float selectedColor[]
void RequestUpdateAll(RequestType type=REQUEST_UPDATE_ALL)
Class for nodes of the DataTree.