diff --git a/Modules/IGTUI/Qmitk/QmitkFiducialRegistrationWidget.ui b/Modules/IGTUI/Qmitk/QmitkFiducialRegistrationWidget.ui
index b0d6be8822..843344e01c 100755
--- a/Modules/IGTUI/Qmitk/QmitkFiducialRegistrationWidget.ui
+++ b/Modules/IGTUI/Qmitk/QmitkFiducialRegistrationWidget.ui
@@ -1,367 +1,279 @@
QmitkFiducialRegistrationWidget
0
0
- 570
- 442
+ 569
+ 402
0
0
Form
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
- Status:
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
-
-
-
- -
-
-
-
-
-
- Qt::AlignCenter
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 40
-
-
-
- Register (object is moved)
-
-
-
- -
-
-
-
-
-
- Move Image Points
-
-
-
- -
-
-
-
- 0
- 40
-
-
-
- <html><head/><body><p>Find fiducial correspondences (needs 6+ fiducial pairs)</p></body></html>
-
-
- Find fiducial
- correspondences
-
-
-
-
-
+
-
Fiducial Registration method
-
true
Static
true
-
true
Hybrid Continuous
false
- -
+
-
+
+
-
+
+
+ Move Image Points
+
+
+
+ -
+
+
+
+ 0
+ 40
+
+
+
+ <html><head/><body><p>Find fiducial correspondences (needs 6+ fiducial pairs)</p></body></html>
+
+
+
+ Find fiducial
+ correspondences
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 40
+
+
+
+ Register (object is moved)
+
+
+
+ -
-
-
+
0
0
Image / object / moving fiducials
-
-
-
- 30
- 30
- 210
- 171
-
-
-
-
- 0
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
-
-
-
- 10
- 229
- 252
- 88
-
-
-
-
- 0
- 0
-
-
-
-
- 0
- 37
-
-
-
-
- 16777215
- 170
-
-
-
-
-
-
- Qt::AlignCenter
-
-
- false
-
-
-
-
- 20
- 20
- 201
- 35
-
-
-
-
- 0
- 0
-
-
-
-
- 0
- 35
-
-
-
-
- 16777215
- 70
-
-
-
- Add image fiducial
-
-
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 55
+
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 35
+
+
+
+ Add image fiducial
+
+
+
+
+
+
+
-
-
+
0
0
-
-
- 16777215
- 800
-
-
Tracker / fixed fiducials
-
-
-
- 7
- 216
- 251
- 101
-
-
-
-
- 0
- 0
-
-
-
-
- 0
- 37
-
-
-
-
- 16777215
- 170
-
-
-
-
-
-
- Qt::AlignCenter
-
-
- false
-
-
-
-
- 10
- 20
- 221
- 71
-
-
-
-
- 0
- 0
-
-
-
-
- 0
- 37
-
-
-
-
- 16777215
- 170
-
-
-
- &Add current
-instrument position
-
-
-
-
-
-
- 40
- 40
- 221
- 141
-
-
-
-
- 0
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+
+ 0
+ 55
+
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Raised
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 35
+
+
+
+ &Add current
+ instrument position
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Status:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+
+ -
+
+
+
+
+
+ Qt::AlignCenter
+
m_RegisterFiducialsBtn
m_gbFiducialRegistration
-
QmitkPointListWidget
- QWidget
+ QListWidget
- 1
diff --git a/Modules/QtWidgetsExt/include/QmitkPointListView.h b/Modules/QtWidgetsExt/include/QmitkPointListView.h
index 9210842248..e5705e1ac6 100644
--- a/Modules/QtWidgetsExt/include/QmitkPointListView.h
+++ b/Modules/QtWidgetsExt/include/QmitkPointListView.h
@@ -1,131 +1,131 @@
/*===================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center,
Division of Medical and Biological Informatics.
All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
See LICENSE.txt or http://www.mitk.org for details.
===================================================================*/
#ifndef QMITK_POINTLIST_VIEW_H_INCLUDED
#define QMITK_POINTLIST_VIEW_H_INCLUDED
#include "MitkQtWidgetsExtExports.h"
#include "QmitkPointListModel.h"
#include
#include
#include
class QmitkStdMultiWidget;
/*!
* \brief GUI widget for handling mitk::PointSet
*
* Displays all the points in a mitk::PointSet graphically.
* Reacts automatically to changes in the PointSet's selection status.
* Updates PointSet's selection status when this list's selection changes.
*
* If a QmitkStdMultiWidget is assigned via SetMultiWidget(), the
* crosshair of the QmitkStdMultiWidget is moved to the currently selected
* point.
*
*/
class MITKQTWIDGETSEXT_EXPORT QmitkPointListView : public QListView
{
Q_OBJECT
public:
QmitkPointListView(QWidget *parent = 0);
~QmitkPointListView() override;
+ QLabel *m_TimeStepFaderLabel;
/// assign a point set for observation
void SetPointSetNode(mitk::DataNode *pointSetNode);
/// which point set to work on
const mitk::PointSet *GetPointSet() const;
/**
* \brief If Multiwidget is set, the crosshair is automatically centering to the selected point
* As an alternative, if you dont have a multiwidget, you can call SetSnc1, SetSnc2, SetSnc3 to set the
* SliceNavigationControllers directly to enable the focussing feature.
*/
void SetMultiWidget(QmitkStdMultiWidget *multiWidget);
QmitkStdMultiWidget *GetMultiWidget()
const; ///< return the QmitkStdMultiWidget that is used for updating render window crosshair
void SetTimesStep(int i); ///< which time step to display/model
/**
* @brief Add a mitk::SliceNavigationController instance.
* @param snc The mitk::SliceNavigationController instance.
*
* This method adds \c snc to the set of slice navigation controllers which are
* used to navigate to the selected point.
*/
void AddSliceNavigationController(mitk::SliceNavigationController *snc);
/**
* @brief Remove a mitk::SliceNavigationController instance.
* @param snc The mitk::SliceNavigationController instance.
*
* This method removes \c snc from the set of slice navigation controllers which are
* used to navigate to the selected point.
*/
void RemoveSliceNavigationController(mitk::SliceNavigationController *snc);
signals:
void
SignalPointSelectionChanged(); ///< this signal is emmitted, if the selection of a point in the pointset is changed
protected slots:
/// Filtering double click event for editing point coordinates via a dialog
void OnPointDoubleClicked(const QModelIndex &index);
/// called when the point set data structure changes
void OnPointSetSelectionChanged();
/// called when the selection of the view widget changes
void OnListViewSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
/// fade the shown timestep out
void fadeTimeStepOut();
/// open ContextMenu
void ctxMenu(const QPoint &pos);
/// Turn TimeStep Fading On/Off
void SetFading(bool onOff);
/// Delete all points in the list
void ClearPointList();
/// delete all points in the list in the current timestep
void ClearPointListTS();
protected:
void keyPressEvent(QKeyEvent *e) override; ///< react to F2, F3 and DEL keys
void wheelEvent(QWheelEvent *event) override; ///< change timestep of the current pointset by mouse wheel
void fadeTimeStepIn(); ///< fade a label with the currently shown timestep in
std::set m_Sncs;
QmitkPointListModel *m_PointListModel;
bool m_SelfCall;
bool m_showFading;
/// used to position the planes on a selected point
QmitkStdMultiWidget *m_MultiWidget;
- QLabel *m_TimeStepFaderLabel;
};
#endif
diff --git a/Modules/QtWidgetsExt/include/QmitkPointListWidget.h b/Modules/QtWidgetsExt/include/QmitkPointListWidget.h
index a7136b489f..c667dcad51 100644
--- a/Modules/QtWidgetsExt/include/QmitkPointListWidget.h
+++ b/Modules/QtWidgetsExt/include/QmitkPointListWidget.h
@@ -1,150 +1,155 @@
/*===================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center,
Division of Medical and Biological Informatics.
All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
See LICENSE.txt or http://www.mitk.org for details.
===================================================================*/
#ifndef QmitkPointListWidget_H
#define QmitkPointListWidget_H
#include "MitkQtWidgetsExtExports.h"
#include
#include
#include
#include
#include
#include
#include
+#include
/*!
* \brief Widget for regular operations on point sets
*
* Displays a list of point coordinates and a couple of
* buttons which
*
* \li enable point set interaction
* \li clear all points from a set
* \li load points from file
* \li save points to file
*
* The user/application module of this widget needs to
* assign a mitk::PointSet object to this widget. The user
* also has to decide whether it wants to put the point set
* into (a) DataStorage. This widget will not add/remove
* point sets to DataStorage.
*
* If the render window crosshair should be moved to the
* currently selected point, the widget user has to provide
* a QmitkStdMultiWidget object.
*/
class MITKQTWIDGETSEXT_EXPORT QmitkPointListWidget : public QWidget
{
Q_OBJECT
public:
QmitkPointListWidget(QWidget *parent = 0, int orientation = 0);
~QmitkPointListWidget() override;
void SetupConnections();
/**
* @brief Add a mitk::SliceNavigationController instance.
* @param snc The mitk::SliceNavigationController instance.
*
* This method adds \c snc to the set of slice navigation controllers which are
* used to navigate to the selected point.
*/
void AddSliceNavigationController(mitk::SliceNavigationController *snc);
/**
* @brief Remove a mitk::SliceNavigationController instance.
* @param snc The mitk::SliceNavigationController instance.
*
* This method removes \c snc from the set of slice navigation controllers which are
* used to navigate to the selected point.
*/
void RemoveSliceNavigationController(mitk::SliceNavigationController *snc);
/** @brief assign a point set (contained in a node of DataStorage) for observation */
void SetPointSet(mitk::PointSet *newPs);
mitk::PointSet *GetPointSet();
/** @brief assign a point set (contained in a node of DataStorage) for observation */
void SetPointSetNode(mitk::DataNode *newNode);
mitk::DataNode *GetPointSetNode();
/** @brief assign a QmitkStdMultiWidget for updating render window crosshair */
void SetMultiWidget(QmitkStdMultiWidget *multiWidget);
/** @brief itk observer for node "delete" events */
void OnNodeDeleted(const itk::EventObject &e);
/** @brief Unselects the edit button if it is selected. */
void UnselectEditButton();
public slots:
void DeactivateInteractor(bool deactivate);
void EnableEditButton(bool enabled);
signals:
/** @brief signal to inform about the state of the EditPointSetButton, whether an interactor for setting points is
* active or not */
void EditPointSets(bool active);
/// signal to inform that the selection of a point in the pointset has changed
void PointSelectionChanged();
/// signal to inform about cleared or loaded point sets
void PointListChanged();
protected slots:
void OnBtnSavePoints();
void OnBtnLoadPoints();
void RemoveSelectedPoint();
void MoveSelectedPointDown();
void MoveSelectedPointUp();
void OnBtnAddPoint(bool checked);
void OnBtnAddPointManually();
/*!
\brief pass through signal from PointListView that point selection has changed
*/
void OnPointSelectionChanged();
void OnListDoubleClick();
protected:
void SetupUi();
+ void updateTimeStepStatus();
void ObserveNewNode(mitk::DataNode *node);
QmitkPointListView *m_PointListView;
mitk::DataNode::Pointer m_PointSetNode;
int m_Orientation;
QPushButton *m_MovePointUpBtn;
QPushButton *m_MovePointDownBtn;
QPushButton *m_RemovePointBtn;
QPushButton *m_SavePointsBtn;
QPushButton *m_LoadPointsBtn;
QPushButton *m_ToggleAddPoint;
QPushButton *m_AddPoint;
+ QLabel *m_TimeStepDisplay;
mitk::DataInteractor::Pointer m_DataInteractor;
int m_TimeStep;
bool m_EditAllowed;
unsigned long m_NodeObserverTag;
+
+ QmitkPointListModel *m_PointListModel;
};
#endif
diff --git a/Modules/QtWidgetsExt/src/QmitkPointListView.cpp b/Modules/QtWidgetsExt/src/QmitkPointListView.cpp
index 61faec0506..c61b4b6f67 100644
--- a/Modules/QtWidgetsExt/src/QmitkPointListView.cpp
+++ b/Modules/QtWidgetsExt/src/QmitkPointListView.cpp
@@ -1,371 +1,339 @@
/*===================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center,
Division of Medical and Biological Informatics.
All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
See LICENSE.txt or http://www.mitk.org for details.
===================================================================*/
#include "QmitkPointListView.h"
#include "QmitkEditPointDialog.h"
#include "QmitkPointListModel.h"
#include "QmitkStdMultiWidget.h"
#include "mitkRenderingManager.h"
#include
#include
#include
#include
#include
QmitkPointListView::QmitkPointListView(QWidget *parent)
: QListView(parent),
m_PointListModel(new QmitkPointListModel()),
m_SelfCall(false),
m_showFading(false),
m_MultiWidget(nullptr)
{
QListView::setAlternatingRowColors(true);
QListView::setSelectionBehavior(QAbstractItemView::SelectRows);
QListView::setSelectionMode(QAbstractItemView::SingleSelection);
QListView::setModel(m_PointListModel);
QString tooltip = QString("Use the F2/F3 keys to move a point up/down, the Del key to remove a point\nand the mouse "
"wheel to change the timestep.\n\nTimeStep:\t%1")
.arg(0);
QListView::setToolTip(tooltip);
this->setContextMenuPolicy(Qt::CustomContextMenu);
m_TimeStepFaderLabel = new QLabel(this);
- QFont font("Arial", 17);
- m_TimeStepFaderLabel->setFont(font);
this->setMinimumHeight(40);
this->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
connect(m_PointListModel, SIGNAL(SignalUpdateSelection()), this, SLOT(OnPointSetSelectionChanged()));
connect(this, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(OnPointDoubleClicked(const QModelIndex &)));
connect(QListView::selectionModel(),
SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
this,
SLOT(OnListViewSelectionChanged(const QItemSelection &, const QItemSelection &)));
connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(ctxMenu(const QPoint &)));
}
QmitkPointListView::~QmitkPointListView()
{
delete m_PointListModel;
}
void QmitkPointListView::SetPointSetNode(mitk::DataNode *pointSetNode)
{
m_PointListModel->SetPointSetNode(pointSetNode);
}
const mitk::PointSet *QmitkPointListView::GetPointSet() const
{
return m_PointListModel->GetPointSet();
}
void QmitkPointListView::SetMultiWidget(QmitkStdMultiWidget *multiWidget)
{
m_MultiWidget = multiWidget;
this->AddSliceNavigationController(multiWidget->mitkWidget1->GetSliceNavigationController());
this->AddSliceNavigationController(multiWidget->mitkWidget2->GetSliceNavigationController());
this->AddSliceNavigationController(multiWidget->mitkWidget3->GetSliceNavigationController());
}
QmitkStdMultiWidget *QmitkPointListView::GetMultiWidget() const
{
return m_MultiWidget;
}
void QmitkPointListView::OnPointDoubleClicked(const QModelIndex &index)
{
mitk::PointSet::PointType p;
mitk::PointSet::PointIdentifier id;
m_PointListModel->GetPointForModelIndex(index, p, id);
QmitkEditPointDialog _EditPointDialog(this);
_EditPointDialog.SetPoint(m_PointListModel->GetPointSet(), id, m_PointListModel->GetTimeStep());
_EditPointDialog.exec();
}
void QmitkPointListView::OnPointSetSelectionChanged()
{
const mitk::PointSet *pointSet = m_PointListModel->GetPointSet();
if (pointSet == nullptr)
return;
// update this view's selection status as a result to changes in the point set data structure
m_SelfCall = true;
int timeStep = m_PointListModel->GetTimeStep();
if (pointSet->GetNumberOfSelected(timeStep) > 1)
{
MITK_ERROR << "Point set has multiple selected points. This view is not designed for more than one selected point.";
}
int selectedIndex = pointSet->SearchSelectedPoint(timeStep);
if (selectedIndex == -1) // no selected point is found
{
m_SelfCall = false;
return;
}
QModelIndex index;
bool modelIndexOkay = m_PointListModel->GetModelIndexForPointID(selectedIndex, index);
if (modelIndexOkay == true)
QListView::selectionModel()->select(index, QItemSelectionModel::ClearAndSelect);
emit SignalPointSelectionChanged();
m_SelfCall = false;
}
void QmitkPointListView::OnListViewSelectionChanged(const QItemSelection &selected,
const QItemSelection & /*deselected*/)
{
if (m_SelfCall)
return;
mitk::PointSet *pointSet = const_cast(m_PointListModel->GetPointSet());
if (pointSet == nullptr)
return;
// (take care that this widget doesn't react to self-induced changes by setting m_SelfCall)
m_SelfCall = true;
// update selection of all points in pointset: select the one(s) that are selected in the view, deselect all others
QModelIndexList selectedIndexes = selected.indexes();
for (mitk::PointSet::PointsContainer::Iterator it =
pointSet->GetPointSet(m_PointListModel->GetTimeStep())->GetPoints()->Begin();
it != pointSet->GetPointSet(m_PointListModel->GetTimeStep())->GetPoints()->End();
++it)
{
QModelIndex index;
if (m_PointListModel->GetModelIndexForPointID(it->Index(), index))
{
if (selectedIndexes.indexOf(index) != -1) // index is found in the selected indices list
{
pointSet->SetSelectInfo(it->Index(), true, m_PointListModel->GetTimeStep());
mitk::Point3D p = pointSet->GetPoint(it->Index(), m_PointListModel->GetTimeStep());
for (auto snc : m_Sncs)
snc->SelectSliceByPoint(p);
}
else
{
pointSet->SetSelectInfo(it->Index(), false, m_PointListModel->GetTimeStep());
}
}
}
m_SelfCall = false;
emit SignalPointSelectionChanged();
mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}
void QmitkPointListView::keyPressEvent(QKeyEvent *e)
{
if (m_PointListModel == nullptr)
return;
int key = e->key();
switch (key)
{
case Qt::Key_F2:
m_PointListModel->MoveSelectedPointUp();
break;
case Qt::Key_F3:
m_PointListModel->MoveSelectedPointDown();
break;
case Qt::Key_Delete:
m_PointListModel->RemoveSelectedPoint();
break;
default:
break;
}
}
void QmitkPointListView::wheelEvent(QWheelEvent *event)
{
if (!m_PointListModel || !m_PointListModel->GetPointSet() ||
(int)(m_PointListModel->GetPointSet()->GetTimeSteps()) == 1)
return;
int whe = event->delta();
mitk::PointSet::Pointer ps = dynamic_cast(m_PointListModel->GetPointSet());
unsigned int numberOfTS = ps->GetTimeSteps();
if (numberOfTS == 1)
return;
int currentTS = this->m_PointListModel->GetTimeStep();
if (whe > 0)
{
if ((currentTS + 1 >= (int)numberOfTS))
return;
this->m_PointListModel->SetTimeStep(++currentTS);
}
else
{
if ((currentTS <= 0))
return;
this->m_PointListModel->SetTimeStep(--currentTS);
}
QString tooltip = QString("Use the F2/F3 keys to move a point up/down, the Del key to remove a point\nand the mouse "
"wheel to change the timestep.\n\nTimeStep:\t%1")
.arg(currentTS);
this->setToolTip(tooltip);
fadeTimeStepIn();
}
void QmitkPointListView::fadeTimeStepIn()
{
- // Setup Widget
- QWidget *m_TimeStepFader = new QWidget(this);
- QHBoxLayout *layout = new QHBoxLayout(m_TimeStepFader);
-
- int x = (int)(this->geometry().x() + this->width() * 0.6);
- int y = (int)(this->geometry().y() + this->height() * 0.8);
- m_TimeStepFader->move(x, y);
- m_TimeStepFader->resize(60, 55);
- m_TimeStepFader->setLayout(layout);
- m_TimeStepFader->setAttribute(Qt::WA_DeleteOnClose);
-
- layout->addWidget(m_TimeStepFaderLabel);
- m_TimeStepFaderLabel->setAlignment(Qt::AlignCenter);
- m_TimeStepFaderLabel->setFrameStyle(QFrame::StyledPanel | QFrame::Raised);
- m_TimeStepFaderLabel->setLineWidth(2);
m_TimeStepFaderLabel->setText(QString("%1").arg(this->m_PointListModel->GetTimeStep()));
-
- // give the widget opacity and some colour
- QPalette pal = m_TimeStepFaderLabel->palette();
- QColor semiTransparentColor(139, 192, 223, 50);
- QColor labelTransparentColor(0, 0, 0, 200);
- pal.setColor(m_TimeStepFaderLabel->backgroundRole(), semiTransparentColor);
- pal.setColor(m_TimeStepFaderLabel->foregroundRole(), labelTransparentColor);
- m_TimeStepFaderLabel->setAutoFillBackground(true);
- m_TimeStepFaderLabel->setPalette(pal);
-
- // show the widget
- m_TimeStepFader->show();
-
- // and start the timer
m_TimeStepFaderLabel->setVisible(true);
- QTimer::singleShot(2000, this, SLOT(fadeTimeStepOut()));
}
void QmitkPointListView::fadeTimeStepOut()
{
m_TimeStepFaderLabel->hide();
}
void QmitkPointListView::ctxMenu(const QPoint &pos)
{
QMenu *menu = new QMenu;
// add Fading check
QAction *showFading = new QAction(this);
showFading->setCheckable(false); // TODO: reset when fading is working
showFading->setEnabled(false); // TODO: reset when fading is working
showFading->setText("Fade TimeStep");
connect(showFading, SIGNAL(triggered(bool)), this, SLOT(SetFading(bool)));
menu->addAction(showFading);
// add Clear action
QAction *clearList = new QAction(this);
clearList->setText("Clear List");
connect(clearList, SIGNAL(triggered()), this, SLOT(ClearPointList()));
menu->addAction(clearList);
// add Clear TimeStep action
QAction *clearTS = new QAction(this);
clearTS->setText("Clear current time step");
connect(clearTS, SIGNAL(triggered()), this, SLOT(ClearPointListTS()));
menu->addAction(clearTS);
menu->exec(this->mapToGlobal(pos));
}
void QmitkPointListView::SetFading(bool onOff)
{
m_showFading = onOff;
}
void QmitkPointListView::ClearPointList()
{
if (!m_PointListModel->GetPointSet())
return;
mitk::PointSet::Pointer curPS = m_PointListModel->GetPointSet();
if (curPS->GetSize() == 0)
return;
switch (QMessageBox::question(this,
tr("Clear Points"),
tr("Remove all points from the displayed list?"),
QMessageBox::Yes | QMessageBox::No,
QMessageBox::No))
{
case QMessageBox::Yes:
{
mitk::PointSet::PointsIterator it;
mitk::PointSet::PointsContainer *curPsPoints;
while (!curPS->IsEmptyTimeStep(0))
{
curPsPoints = curPS->GetPointSet()->GetPoints();
it = curPsPoints->Begin();
curPS->SetSelectInfo(it->Index(), true);
m_PointListModel->RemoveSelectedPoint();
}
mitk::RenderingManager::GetInstance()->RequestUpdateAll();
break;
}
case QMessageBox::No:
default:
break;
}
}
void QmitkPointListView::ClearPointListTS()
{
}
void QmitkPointListView::AddSliceNavigationController(mitk::SliceNavigationController *snc)
{
if (snc == nullptr)
return;
m_Sncs.insert(snc);
}
void QmitkPointListView::RemoveSliceNavigationController(mitk::SliceNavigationController *snc)
{
if (snc == nullptr)
return;
m_Sncs.erase(snc);
}
diff --git a/Modules/QtWidgetsExt/src/QmitkPointListWidget.cpp b/Modules/QtWidgetsExt/src/QmitkPointListWidget.cpp
index b4179590be..d97c49f65e 100644
--- a/Modules/QtWidgetsExt/src/QmitkPointListWidget.cpp
+++ b/Modules/QtWidgetsExt/src/QmitkPointListWidget.cpp
@@ -1,463 +1,494 @@
/*===================================================================
The Medical Imaging Interaction Toolkit (MITK)
Copyright (c) German Cancer Research Center,
Division of Medical and Biological Informatics.
All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
See LICENSE.txt or http://www.mitk.org for details.
===================================================================*/
#include "QmitkPointListWidget.h"
+#include "QmitkPointListView.h"
+#include "QmitkPointListModel.h"
#include
#include
#include
#include
#include
+
#include
#include
#include
QmitkPointListWidget::QmitkPointListWidget(QWidget *parent, int orientation)
: QWidget(parent),
m_PointListView(nullptr),
m_PointSetNode(nullptr),
m_Orientation(0),
m_MovePointUpBtn(nullptr),
m_MovePointDownBtn(nullptr),
m_RemovePointBtn(nullptr),
m_SavePointsBtn(nullptr),
m_LoadPointsBtn(nullptr),
m_ToggleAddPoint(nullptr),
m_AddPoint(nullptr),
m_DataInteractor(nullptr),
m_TimeStep(0),
m_EditAllowed(true),
- m_NodeObserverTag(0)
+ m_NodeObserverTag(0),
+ m_TimeStepDisplay(nullptr)
+
{
m_PointListView = new QmitkPointListView();
if (orientation != 0)
m_Orientation = orientation;
SetupUi();
SetupConnections();
ObserveNewNode(nullptr);
}
QmitkPointListWidget::~QmitkPointListWidget()
{
m_DataInteractor = nullptr;
if (m_PointSetNode && m_NodeObserverTag)
{
m_PointSetNode->RemoveObserver(m_NodeObserverTag);
m_NodeObserverTag = 0;
}
delete m_PointListView;
}
void QmitkPointListWidget::SetupConnections()
{
connect(this->m_LoadPointsBtn, SIGNAL(clicked()), this, SLOT(OnBtnLoadPoints()));
connect(this->m_SavePointsBtn, SIGNAL(clicked()), this, SLOT(OnBtnSavePoints()));
connect(this->m_MovePointUpBtn, SIGNAL(clicked()), this, SLOT(MoveSelectedPointUp()));
connect(this->m_MovePointDownBtn, SIGNAL(clicked()), this, SLOT(MoveSelectedPointDown()));
connect(this->m_RemovePointBtn, SIGNAL(clicked()), this, SLOT(RemoveSelectedPoint()));
connect(this->m_ToggleAddPoint, SIGNAL(toggled(bool)), this, SLOT(OnBtnAddPoint(bool)));
connect(this->m_AddPoint, SIGNAL(clicked()), this, SLOT(OnBtnAddPointManually()));
connect(this->m_PointListView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(OnListDoubleClick()));
connect(this->m_PointListView, SIGNAL(SignalPointSelectionChanged()), this, SLOT(OnPointSelectionChanged()));
+ connect(this->m_PointListView->m_TimeStepFaderLabel, SIGNAL(m_PointListView->wheelEvent(QWheelEvent)), this, SLOT(updateTimeStepStatus()));
}
void QmitkPointListWidget::SetupUi()
{
// Setup the buttons
m_ToggleAddPoint = new QPushButton();
m_ToggleAddPoint->setMaximumSize(25, 25);
m_ToggleAddPoint->setCheckable(true);
m_ToggleAddPoint->setToolTip("Toggle point editing (use SHIFT + Left Mouse Button to add Points)");
QIcon iconAdd(":/QtWidgetsExt/btnSetPoints.xpm");
m_ToggleAddPoint->setIcon(iconAdd);
m_AddPoint = new QPushButton();
m_AddPoint->setMaximumSize(25, 25);
m_AddPoint->setToolTip("Manually add point");
QIcon iconAddManually(":/QtWidgetsExt/btnSetPointsManually.xpm");
m_AddPoint->setIcon(iconAddManually);
m_RemovePointBtn = new QPushButton();
m_RemovePointBtn->setMaximumSize(25, 25);
const QIcon iconDel(":/QtWidgetsExt/btnClear.xpm");
m_RemovePointBtn->setIcon(iconDel);
m_RemovePointBtn->setToolTip("Erase one point from list (Hotkey: DEL)");
m_MovePointUpBtn = new QPushButton();
m_MovePointUpBtn->setMaximumSize(25, 25);
const QIcon iconUp(":/QtWidgetsExt/btnUp.xpm");
m_MovePointUpBtn->setIcon(iconUp);
m_MovePointUpBtn->setToolTip("Swap selected point upwards (Hotkey: F2)");
m_MovePointDownBtn = new QPushButton();
m_MovePointDownBtn->setMaximumSize(25, 25);
const QIcon iconDown(":/QtWidgetsExt/btnDown.xpm");
m_MovePointDownBtn->setIcon(iconDown);
m_MovePointDownBtn->setToolTip("Swap selected point downwards (Hotkey: F3)");
m_SavePointsBtn = new QPushButton();
m_SavePointsBtn->setMaximumSize(25, 25);
QIcon iconSave(":/QtWidgetsExt/btnSave.xpm");
m_SavePointsBtn->setIcon(iconSave);
m_SavePointsBtn->setToolTip("Save points to file");
m_LoadPointsBtn = new QPushButton();
m_LoadPointsBtn->setMaximumSize(25, 25);
QIcon iconLoad(":/QtWidgetsExt/btnLoad.xpm");
m_LoadPointsBtn->setIcon(iconLoad);
m_LoadPointsBtn->setToolTip("Load list of points from file (REPLACES current content)");
int i;
-
+
QBoxLayout *lay1;
QBoxLayout *lay2;
+ QBoxLayout *lay3;
switch (m_Orientation)
{
case 0:
lay1 = new QVBoxLayout(this);
lay2 = new QHBoxLayout();
i = 0;
break;
case 1:
lay1 = new QHBoxLayout(this);
lay2 = new QVBoxLayout();
i = -1;
break;
case 2:
lay1 = new QHBoxLayout(this);
lay2 = new QVBoxLayout();
i = 0;
break;
default:
lay1 = new QVBoxLayout(this);
lay2 = new QHBoxLayout();
i = -1;
break;
}
// setup Layouts
this->setLayout(lay1);
- lay1->addLayout(lay2);
-
lay2->stretch(true);
lay2->addWidget(m_ToggleAddPoint);
lay2->addWidget(m_AddPoint);
lay2->addWidget(m_RemovePointBtn);
lay2->addWidget(m_MovePointUpBtn);
lay2->addWidget(m_MovePointDownBtn);
lay2->addWidget(m_SavePointsBtn);
lay2->addWidget(m_LoadPointsBtn);
+ // setup Labels
+ m_TimeStepDisplay = new QLabel();
+ lay3 = new QHBoxLayout();
+
+ m_TimeStepDisplay->setMaximumSize(50, 15);
+ m_PointListView->m_TimeStepFaderLabel->setMaximumSize(10, 15);
+
+ lay3->stretch(true);
+ lay3->setAlignment(Qt::AlignLeft);
+ lay3->addWidget(m_TimeStepDisplay);
+ lay3->addWidget(m_PointListView->m_TimeStepFaderLabel);
+
+ m_TimeStepDisplay->setText("Time Step: ");
+ m_PointListModel = new QmitkPointListModel;
+ m_PointListView->m_TimeStepFaderLabel->setText(QString("%1").arg((this->m_PointListModel)->GetTimeStep()));
+
+ //Add Layouts
+
lay1->insertWidget(i, m_PointListView);
this->setLayout(lay1);
+ lay1->addLayout(lay2);
+ lay1->addLayout(lay3);
+}
+
+void QmitkPointListWidget::updateTimeStepStatus()
+{
+ m_PointListView->m_TimeStepFaderLabel = new QLabel(this);
+ m_PointListView->m_TimeStepFaderLabel->setVisible(true);
}
void QmitkPointListWidget::SetPointSet(mitk::PointSet *newPs)
{
if (newPs == nullptr)
return;
this->m_PointSetNode->SetData(newPs);
dynamic_cast(this->m_PointListView->model())->SetPointSetNode(m_PointSetNode);
ObserveNewNode(m_PointSetNode);
}
void QmitkPointListWidget::SetPointSetNode(mitk::DataNode *newNode)
{
if (m_DataInteractor.IsNotNull())
m_DataInteractor->SetDataNode(newNode);
ObserveNewNode(newNode);
dynamic_cast(this->m_PointListView->model())->SetPointSetNode(newNode);
}
void QmitkPointListWidget::OnBtnSavePoints()
{
if ((dynamic_cast(m_PointSetNode->GetData())) == nullptr)
return; // don't write empty point sets. If application logic requires something else then do something else.
if ((dynamic_cast(m_PointSetNode->GetData()))->GetSize() == 0)
return;
// take the previously defined name of node as proposal for filename
std::string nodeName = m_PointSetNode->GetName();
nodeName = "/" + nodeName + ".mps";
QString fileNameProposal = QString();
fileNameProposal.append(nodeName.c_str());
QString aFilename = QFileDialog::getSaveFileName(
nullptr, "Save point set", QDir::currentPath() + fileNameProposal, "MITK Pointset (*.mps)");
if (aFilename.isEmpty())
return;
try
{
mitk::IOUtil::Save(m_PointSetNode->GetData(), aFilename.toStdString());
}
catch (...)
{
QMessageBox::warning(this,
"Save point set",
QString("File writer reported problems writing %1\n\n"
"PLEASE CHECK output file!")
.arg(aFilename));
}
}
void QmitkPointListWidget::OnBtnLoadPoints()
{
// get the name of the file to load
QString filename = QFileDialog::getOpenFileName(nullptr, "Open MITK Pointset", "", "MITK Point Sets (*.mps)");
if (filename.isEmpty())
return;
// attempt to load file
try
{
mitk::PointSet::Pointer pointSet = dynamic_cast(mitk::IOUtil::Load(filename.toStdString())[0].GetPointer());
if (pointSet.IsNull())
{
QMessageBox::warning(this, "Load point set", QString("File reader could not read %1").arg(filename));
return;
}
// loading successful
this->SetPointSet(pointSet);
}
catch (...)
{
QMessageBox::warning(this, "Load point set", QString("File reader collapsed while reading %1").arg(filename));
}
emit PointListChanged();
mitk::RenderingManager::GetInstance()->RequestUpdateAll();
}
mitk::PointSet *QmitkPointListWidget::GetPointSet()
{
return dynamic_cast(m_PointSetNode->GetData());
}
mitk::DataNode *QmitkPointListWidget::GetPointSetNode()
{
return m_PointSetNode;
}
void QmitkPointListWidget::SetMultiWidget(QmitkStdMultiWidget *multiWidget)
{
m_PointListView->SetMultiWidget(multiWidget);
}
void QmitkPointListWidget::RemoveSelectedPoint()
{
if (!m_PointSetNode)
return;
mitk::PointSet *pointSet = dynamic_cast(m_PointSetNode->GetData());
if (!pointSet)
return;
if (pointSet->GetSize() == 0)
return;
QmitkPointListModel *pointListModel = dynamic_cast(m_PointListView->model());
pointListModel->RemoveSelectedPoint();
emit PointListChanged();
}
void QmitkPointListWidget::MoveSelectedPointDown()
{
if (!m_PointSetNode)
return;
mitk::PointSet *pointSet = dynamic_cast(m_PointSetNode->GetData());
if (!pointSet)
return;
if (pointSet->GetSize() == 0)
return;
QmitkPointListModel *pointListModel = dynamic_cast(m_PointListView->model());
pointListModel->MoveSelectedPointDown();
emit PointListChanged();
}
void QmitkPointListWidget::MoveSelectedPointUp()
{
if (!m_PointSetNode)
return;
mitk::PointSet *pointSet = dynamic_cast(m_PointSetNode->GetData());
if (!pointSet)
return;
if (pointSet->GetSize() == 0)
return;
QmitkPointListModel *pointListModel = dynamic_cast(m_PointListView->model());
pointListModel->MoveSelectedPointUp();
emit PointListChanged();
}
void QmitkPointListWidget::OnBtnAddPoint(bool checked)
{
if (m_PointSetNode.IsNotNull())
{
if (checked)
{
m_DataInteractor = m_PointSetNode->GetDataInteractor();
// If no data Interactor is present create a new one
if (m_DataInteractor.IsNull())
{
// Create PointSetData Interactor
m_DataInteractor = mitk::PointSetDataInteractor::New();
// Load the according state machine for regular point set interaction
m_DataInteractor->LoadStateMachine("PointSet.xml");
// Set the configuration file that defines the triggers for the transitions
m_DataInteractor->SetEventConfig("PointSetConfig.xml");
// set the DataNode (which already is added to the DataStorage
m_DataInteractor->SetDataNode(m_PointSetNode);
}
}
else
{
m_PointSetNode->SetDataInteractor(nullptr);
m_DataInteractor = nullptr;
}
emit EditPointSets(checked);
}
}
void QmitkPointListWidget::OnBtnAddPointManually()
{
mitk::PointSet *pointSet = this->GetPointSet();
QmitkEditPointDialog editPointDialog(this);
if (this->GetPointSet()->IsEmpty())
{
editPointDialog.SetPoint(pointSet, 0, m_TimeStep);
}
else
{
mitk::PointSet::PointsIterator maxIt = pointSet->GetMaxId();
mitk::PointSet::PointIdentifier maxId = maxIt->Index();
editPointDialog.SetPoint(pointSet, maxId + 1, m_TimeStep);
}
editPointDialog.exec();
}
void QmitkPointListWidget::OnListDoubleClick()
{
}
void QmitkPointListWidget::OnPointSelectionChanged()
{
emit this->PointSelectionChanged();
}
void QmitkPointListWidget::DeactivateInteractor(bool)
{
}
void QmitkPointListWidget::EnableEditButton(bool enabled)
{
m_EditAllowed = enabled;
if (enabled == false)
m_ToggleAddPoint->setEnabled(false);
else
m_ToggleAddPoint->setEnabled(true);
OnBtnAddPoint(enabled);
}
void QmitkPointListWidget::ObserveNewNode(mitk::DataNode *node)
{
if (m_DataInteractor.IsNotNull())
m_DataInteractor->SetDataNode(node);
// remove old observer
if (m_PointSetNode)
{
if (m_DataInteractor)
{
m_DataInteractor = nullptr;
m_ToggleAddPoint->setChecked(false);
}
m_PointSetNode->RemoveObserver(m_NodeObserverTag);
m_NodeObserverTag = 0;
}
m_PointSetNode = node;
// add new observer if necessary
if (m_PointSetNode)
{
itk::ReceptorMemberCommand::Pointer command =
itk::ReceptorMemberCommand::New();
command->SetCallbackFunction(this, &QmitkPointListWidget::OnNodeDeleted);
m_NodeObserverTag = m_PointSetNode->AddObserver(itk::DeleteEvent(), command);
}
else
{
m_NodeObserverTag = 0;
}
if (m_EditAllowed == true)
m_ToggleAddPoint->setEnabled(m_PointSetNode);
else
m_ToggleAddPoint->setEnabled(false);
m_RemovePointBtn->setEnabled(m_PointSetNode);
m_LoadPointsBtn->setEnabled(m_PointSetNode);
m_SavePointsBtn->setEnabled(m_PointSetNode);
m_AddPoint->setEnabled(m_PointSetNode);
}
void QmitkPointListWidget::OnNodeDeleted(const itk::EventObject &)
{
if (m_PointSetNode.IsNotNull() && !m_NodeObserverTag)
m_PointSetNode->RemoveObserver(m_NodeObserverTag);
m_NodeObserverTag = 0;
m_PointSetNode = nullptr;
m_PointListView->SetPointSetNode(nullptr);
m_ToggleAddPoint->setEnabled(false);
m_RemovePointBtn->setEnabled(false);
m_LoadPointsBtn->setEnabled(false);
m_SavePointsBtn->setEnabled(false);
m_AddPoint->setEnabled(false);
}
void QmitkPointListWidget::AddSliceNavigationController(mitk::SliceNavigationController *snc)
{
m_PointListView->AddSliceNavigationController(snc);
}
void QmitkPointListWidget::RemoveSliceNavigationController(mitk::SliceNavigationController *snc)
{
m_PointListView->RemoveSliceNavigationController(snc);
}
void QmitkPointListWidget::UnselectEditButton()
{
m_ToggleAddPoint->setChecked(false);
}
diff --git a/Plugins/org.blueberry.ui.qt/resources/darkstyle.qss b/Plugins/org.blueberry.ui.qt/resources/darkstyle.qss
index 369a7853a8..f936c54999 100644
--- a/Plugins/org.blueberry.ui.qt/resources/darkstyle.qss
+++ b/Plugins/org.blueberry.ui.qt/resources/darkstyle.qss
@@ -1,1485 +1,1485 @@
/*===================================================================
BlueBerry Platform
Copyright (c) German Cancer Research Center,
Division of Medical and Biological Informatics.
All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
See LICENSE.txt or http://www.mitk.org for details.
===================================================================*/
/*
* The MIT License (MIT)
*
* Copyright (c) <2013-2014>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
/*
foregroundColor = #adb1b6
iconColor = #adb1b6 <- This line is parsed by MITK
iconAccentColor = #db7039 <- This line is parsed by MITK
backgroundColor = #323231
inactiveColor = #1d1d1c
highlightColor = #3399cc
popupColor = #027c90
warningColor = #ffb400
borderColor = #1d1d1c
*/
QToolTip
{
border: 1px solid #1d1d1c;
background-color: #323231;
color: #adb1b6;
padding: 3px;
opacity: 200;
}
QWidget
{
color: #adb1b6;
background-color: #323231;
selection-background-color: #3399cc;
selection-color: #1d1d1c;
background-clip: border;
border-image: none;
border: 0px transparent #1d1d1c;
outline: 0;
}
QWidget:item:hover
{
background-color: #3399cc;
color: #adb1b6;
}
QWidget:item:selected
{
background-color: #3399cc;
}
QCheckBox
{
spacing: 5px;
outline: none;
color: #adb1b6;
margin-bottom: 2px;
}
QCheckBox:disabled
{
color: #1d1d1c;
}
QCheckBox::indicator,
QGroupBox::indicator
{
width: 18px;
height: 30px;
}
QGroupBox::indicator
{
margin-left: 0px;
}
QCheckBox::indicator:unchecked
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_unchecked.png);
}
QCheckBox::indicator:unchecked:hover,
QCheckBox::indicator:unchecked:focus,
QCheckBox::indicator:unchecked:pressed,
QGroupBox::indicator:unchecked:hover,
QGroupBox::indicator:unchecked:focus,
QGroupBox::indicator:unchecked:pressed
{
border: none;
image: url(:/org.blueberry.ui.qt/dark/checkbox_unchecked_focus.png);
}
QCheckBox::indicator:checked
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_checked.png);
}
QCheckBox::indicator:checked:hover,
QCheckBox::indicator:checked:focus,
QCheckBox::indicator:checked:pressed,
QGroupBox::indicator:checked:hover,
QGroupBox::indicator:checked:focus,
QGroupBox::indicator:checked:pressed
{
border: none;
image: url(:/org.blueberry.ui.qt/dark/checkbox_checked_focus.png);
}
QCheckBox::indicator:indeterminate
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_indeterminate.png);
}
QCheckBox::indicator:indeterminate:focus,
QCheckBox::indicator:indeterminate:hover,
QCheckBox::indicator:indeterminate:pressed
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_indeterminate_focus.png);
}
QCheckBox::indicator:checked:disabled,
QGroupBox::indicator:checked:disabled
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_checked_disabled.png);
}
QCheckBox::indicator:unchecked:disabled,
QGroupBox::indicator:unchecked:disabled
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_unchecked_disabled.png);
}
QRadioButton
{
spacing: 5px;
outline: none;
color: #adb1b6;
margin-bottom: 2px;
}
QRadioButton:disabled
{
color: #1d1d1c;
}
QRadioButton::indicator
{
width: 21px;
height: 21px;
}
QRadioButton::indicator:unchecked
{
image: url(:/org.blueberry.ui.qt/dark/radio_unchecked.png);
}
QRadioButton::indicator:unchecked:hover,
QRadioButton::indicator:unchecked:focus,
QRadioButton::indicator:unchecked:pressed
{
border: none;
outline: none;
image: url(:/org.blueberry.ui.qt/dark/radio_unchecked_focus.png);
}
QRadioButton::indicator:checked
{
border: none;
outline: none;
image: url(:/org.blueberry.ui.qt/dark/radio_checked.png);
}
QRadioButton::indicator:checked:hover,
QRadioButton::indicator:checked:focus,
QRadioButton::indicator:checked:pressed
{
border: none;
outline: none;
image: url(:/org.blueberry.ui.qt/dark/radio_checked_focus.png);
}
QRadioButton::indicator:checked:disabled
{
outline: none;
image: url(:/org.blueberry.ui.qt/dark/radio_checked_disabled.png);
}
QRadioButton::indicator:unchecked:disabled
{
image: url(:/org.blueberry.ui.qt/dark/radio_unchecked_disabled.png);
}
QMenuBar
{
background-color: #323231;
color: #adb1b6;
}
QMenuBar::item
{
background: transparent;
}
QMenuBar::item:selected
{
background: transparent;
border: 1px solid #1d1d1c;
}
QMenuBar::item:pressed
{
border: 1px solid #1d1d1c;
background-color: #3399cc;
color: #adb1b6;
margin-bottom:-1px;
padding-bottom:1px;
}
QMenu
{
border: 1px solid #1d1d1c;
color: #adb1b6;
margin: 2px;
}
QMenu::icon
{
margin: 5px;
}
QMenu::item
{
padding: 5px 30px 5px 30px;
margin-left: 5px;
border: 1px solid transparent; /* leave some space for selection border */
}
QMenu::item:selected
{
color: #adb1b6;
}
QMenu::separator
{
height: 2px;
background: #3399cc;
margin-left: 10px;
margin-right: 5px;
}
QMenu::indicator
{
width: 18px;
height: 18px;
}
/* non-exclusive indicator = check box style indicator
(see QActionGroup::setExclusive) */
QMenu::indicator:non-exclusive:unchecked
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_unchecked.png);
}
QMenu::indicator:non-exclusive:unchecked:selected
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_unchecked_disabled.png);
}
QMenu::indicator:non-exclusive:checked
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_checked.png);
}
QMenu::indicator:non-exclusive:checked:selected
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_checked_disabled.png);
}
/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */
QMenu::indicator:exclusive:unchecked {
image: url(:/org.blueberry.ui.qt/dark/radio_unchecked.png);
}
QMenu::indicator:exclusive:unchecked:selected {
image: url(:/org.blueberry.ui.qt/dark/radio_unchecked_disabled.png);
}
QMenu::indicator:exclusive:checked
{
image: url(:/org.blueberry.ui.qt/dark/radio_checked.png);
}
QMenu::indicator:exclusive:checked:selected
{
image: url(:/org.blueberry.ui.qt/dark/radio_checked_disabled.png);
}
QMenu::right-arrow
{
margin: 5px;
image: url(:/org.blueberry.ui.qt/dark/right_arrow.png)
}
QWidget:disabled
{
color: #1d1d1c;
background-color: #323231;
}
QAbstractItemView
{
alternate-background-color: #323231;
color: #adb1b6;
border: 1px solid 3A3939;
border-radius: 0px;
}
QWidget:focus,
QMenuBar:focus
{
border: 1px solid #3399cc;
}
QCheckBox:focus,
QRadioButton:focus,
QSlider:focus
{
border: none;
}
QLineEdit
{
background-color: #1d1d1c;
padding: 2px;
border-style: solid;
border: 1px solid #1d1d1c;
border-radius: 0px;
color: #adb1b6;
}
QGroupBox
{
border:1px solid #323231;
border-radius: 0px;
padding-top: 24px;
font-weight: bold;
}
QGroupBox::title
{
border:1px solid #323231;
border-right:0px;
border-bottom:0px;
subcontrol-position: top left;
subcontrol-origin: margin;
padding: 1px;
}
QAbstractScrollArea
{
border-radius: 0px;
border: 1px solid #1d1d1c;
background-color: #323231;
}
QScrollBar:horizontal
{
height: 15px;
margin: 3px 15px 3px 15px;
border: 1px transparent #1d1d1c;
border-radius: 0px;
background-color: #1d1d1c;
}
QScrollBar::handle:horizontal
{
background-color: #323231;
border: 2px solid #1d1d1c;
min-width: 5px;
border-radius: 0px;
}
QScrollBar::add-line:horizontal
{
margin: 0px 3px 0px 3px;
border-image: url(:/org.blueberry.ui.qt/dark/right_arrow_disabled.png);
width: 10px;
height: 10px;
subcontrol-position: right;
subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal
{
margin: 0px 3px 0px 3px;
border-image: url(:/org.blueberry.ui.qt/dark/left_arrow_disabled.png);
height: 10px;
width: 10px;
subcontrol-position: left;
subcontrol-origin: margin;
}
QScrollBar::add-line:horizontal:hover,
QScrollBar::add-line:horizontal:on
{
border-image: url(:/org.blueberry.ui.qt/dark/right_arrow.png);
height: 10px;
width: 10px;
subcontrol-position: right;
subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal:hover,
QScrollBar::sub-line:horizontal:on
{
border-image: url(:/org.blueberry.ui.qt/dark/left_arrow.png);
height: 10px;
width: 10px;
subcontrol-position: left;
subcontrol-origin: margin;
}
QScrollBar::up-arrow:horizontal,
QScrollBar::down-arrow:horizontal
{
background: none;
}
QScrollBar::add-page:horizontal,
QScrollBar::sub-page:horizontal
{
background: none;
}
QScrollBar:vertical
{
background-color: #1d1d1c;
width: 15px;
margin: 15px 2px 15px 2px;
border: 1px transparent #1d1d1c;
border-radius: 0px;
}
QScrollBar::handle:vertical
{
background-color: #323231;
border: 2px solid #1d1d1c;
min-height: 5px;
border-radius: 0px;
}
QScrollBar::sub-line:vertical
{
margin: 3px 0px 3px 0px;
border-image: url(:/org.blueberry.ui.qt/dark/up_arrow_disabled.png);
height: 10px;
width: 10px;
subcontrol-position: top;
subcontrol-origin: margin;
}
QScrollBar::add-line:vertical
{
margin: 3px 0px 3px 0px;
border-image: url(:/org.blueberry.ui.qt/dark/down_arrow_disabled.png);
height: 10px;
width: 10px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
QScrollBar::sub-line:vertical:hover,
QScrollBar::sub-line:vertical:on
{
border-image: url(:/org.blueberry.ui.qt/dark/up_arrow.png);
height: 10px;
width: 10px;
subcontrol-position: top;
subcontrol-origin: margin;
}
QScrollBar::add-line:vertical:hover,
QScrollBar::add-line:vertical:on
{
border-image: url(:/org.blueberry.ui.qt/dark/down_arrow.png);
height: 10px;
width: 10px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}
QScrollBar::up-arrow:vertical,
QScrollBar::down-arrow:vertical
{
background: none;
}
QScrollBar::add-page:vertical,
QScrollBar::sub-page:vertical
{
background: none;
}
QTextEdit
{
background-color: #1d1d1c;
color: #adb1b6;
border: 1px solid #1d1d1c;
}
QPlainTextEdit
{
background-color: #1d1d1c;;
color: #adb1b6;
border-radius: 0px;
border: 1px solid #1d1d1c;
}
QHeaderView::section
{
background-color: #1d1d1c;
color: #adb1b6;
padding: 5px;
border: 1px solid #1d1d1c;
}
QSizeGrip
{
image: url(:/org.blueberry.ui.qt/dark/sizegrip.png);
width: 12px;
height: 12px;
}
QMainWindow::separator
{
background-color: #323231;
color: #adb1b6;
padding-left: 4px;
spacing: 2px;
border: 1px dashed #1d1d1c;
}
QMainWindow::separator:hover
{
background-color: #adb1b6;
color: #adb1b6;
padding-left: 4px;
border: 1px solid #1d1d1c;
spacing: 2px;
}
QMenu::separator
{
height: 1px;
background-color: #1d1d1c;
color: #adb1b6;
padding-left: 4px;
margin-left: 10px;
margin-right: 5px;
}
QFrame
{
border-radius: 0px;
border: 1px solid #1d1d1c;
}
QFrame[frameShape="0"]
{
border-radius: 0px;
border: 1px transparent #1d1d1c;
}
QStackedWidget
{
border: 1px transparent #1d1d1c;
}
QToolBar
{
border: 1px transparent #393838;
background: 1px solid #323231;
font-weight: bold;
}
/* this fixes the size of the plugin icons in the toolbar */
QToolBar QToolButton
{
background-color: #323231;
border: 1px solid #323231;
border-radius: 0px;
min-width: 30px;
min-height: 30px;
margin: 0px;
padding: 0px;
}
QToolBar::handle:horizontal
{
image: url(:/org.blueberry.ui.qt/dark/Hmovetoolbar.png);
}
QToolBar::handle:vertical
{
image: url(:/org.blueberry.ui.qt/dark/Vmovetoolbar.png);
}
QToolBar::separator:horizontal
{
image: url(:/org.blueberry.ui.qt/dark/Hsepartoolbar.png);
}
QToolBar::separator:vertical
{
image: url(:/org.blueberry.ui.qt/dark/Vsepartoolbar.png);
}
QToolButton
{
background-color: #323231;
border: 1px solid #323231;
border-radius: 0px;
min-width: 12px;
min-height: 12px;
margin: 0px;
padding: 0px;
}
/* only for MenuButtonPopup */
QToolButton[popupMode="1"]
{
border: 0px solid #1d1d1c;
}
/* only for InstantPopup */
QToolButton[popupMode="2"]
{
border: 0px solid #1d1d1c;
}
/* this fixes the size of the standard icons in the toolbar */
QToolButton:hover,
QToolButton::menu-button:hover
{
background-color: #3399cc;
border: 1px solid #3399cc;
min-width: 30px;
min-height: 30px;
margin: 0px;
padding: 0px;
}
QToolButton#qt_toolbar_ext_button,
QToolBarExtension
{
qproperty-icon: url(:/org.blueberry.ui.qt/dark/right_arrows.svg);
min-width: 10px;
}
QPushButton
{
color: #adb1b6;
background-color: #323231;
- min-width: 68px;
+
border-width: 1px;
border-color: #1d1d1c;
border-style: solid;
padding: 3px;
border-radius: 0px;
outline: none;
}
QPushButton:disabled
{
background-color: #1d1d1c;
color: #323231;
}
QPushButton:focus
{
color: #3399cc;
border-color: #3399cc;
border-style: solid;
border-width: 1px;
}
QPushButton:pressed
{
background-color: #3399cc;
color: #1d1d1c;
padding-top: -15px;
padding-bottom: -17px;
border-width: 1px;
border-color: #1d1d1c;
}
QComboBox
{
selection-background-color: #3399cc;
selection-color: #1d1d1c;
border: 1px solid #1d1d1c;
border-radius: 0px;
padding: 3px;
min-width: 75px;
}
QPushButton:checked{
background-color: #1d1d1c;
border-color: #adb1b6;
}
QComboBox:hover,
QAbstractSpinBox:hover,
QLineEdit:hover,
QTextEdit:hover,
QPlainTextEdit:hover,
QAbstractView:hover
{
border: 1px solid #3399cc;
color: #adb1b6;
}
QPushButton:hover,QTreeView:hover
{
border: 1px solid #1d1d1c;
color: #3399cc;
}
QComboBox QAbstractItemView
{
background-color: #323231;
border-radius: 0px;
border: 1px solid #1d1d1c;
selection-background-color: #3399cc;
selection-color: #adb1b6;
}
QComboBox:on
{
padding-top: 3px;
padding-left: 3px;
selection-background-color: #3399cc;
color: #adb1b6;
selection-color: #adb1b6;
}
QComboBox::drop-down
{
subcontrol-origin: padding;
subcontrol-position: top right;
min-width: 15px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
}
QComboBox::down-arrow
{
image: url(:/org.blueberry.ui.qt/dark/down_arrow_disabled.png);
}
QComboBox::down-arrow:on,
QComboBox::down-arrow:hover,
QComboBox::down-arrow:focus
{
image: url(:/org.blueberry.ui.qt/dark/down_arrow.png);
}
QAbstractSpinBox
{
border: 1px solid #1d1d1c;
background-color: #1d1d1c;
padding-top: 1px;
padding-bottom: 1px;
color: #adb1b6;
border-radius: 0px;
min-width: 50px;
}
QAbstractSpinBox:up-button
{
border: 2px transparent #1d1d1c;
background-color: #323231;
subcontrol-origin: border;
subcontrol-position: top right;
padding-top: 1px;
margin-bottom: 1px;
margin-top: 2px;
margin-right: 2px;
margin-left: 2px;
}
QAbstractSpinBox:down-button
{
border: 2px transparent #1d1d1c;
background-color: #323231;
subcontrol-origin: border;
subcontrol-position: bottom right;
padding-bottom: 0px;
margin-bottom: 2px;
margin-top: 1px;
margin-right: 2px;
margin-left: 2px;
}
QAbstractSpinBox::up-arrow,QAbstractSpinBox::up-arrow:disabled,QAbstractSpinBox::up-arrow:off
{
image: url(:/org.blueberry.ui.qt/dark/up_arrow_disabled.png);
width: 10px;
height: 10px;
}
QAbstractSpinBox::up-arrow:hover
{
image: url(:/org.blueberry.ui.qt/dark/up_arrow.png);
}
QAbstractSpinBox::down-arrow,QAbstractSpinBox::down-arrow:disabled,QAbstractSpinBox::down-arrow:off
{
image: url(:/org.blueberry.ui.qt/dark/down_arrow_disabled.png);
width: 10px;
height: 10px;
}
QAbstractSpinBox::down-arrow:hover
{
image: url(:/org.blueberry.ui.qt/dark/down_arrow.png);
}
QLabel
{
border: 1px solid #1d1d1c;
}
QTabWidget::pane
{
border: 1px solid #adb1b6;
padding: 1px;
margin: 0px;
}
/* TABS IN GENERAL */
QTabBar
{
qproperty-drawBase: 0;
left: 0px;
border-radius: 0px;
border: 1px transparent #adb1b6;
}
QTabBar:focus
{
border: 1px solid #adb1b6;
}
QTabBar::close-button
{
image: url(:/org.blueberry.ui.qt/dark/tab_close_grey.svg);
background: transparent;
}
QTabBar::close-button:hover
{
image: url(:/org.blueberry.ui.qt/dark/tab_close_grey.svg);
background: transparent;
}
QTabBar::close-button:pressed {
image: url(:/org.blueberry.ui.qt/dark/tab_close_grey.svg);
background: transparent;
}
QTabBar::tab:right:!selected:hover
{
color: #3399cc;
}
QTabBar QToolButton::right-arrow:enabled
{
image: url(:/org.blueberry.ui.qt/dark/right_arrow.png);
}
QTabBar QToolButton::left-arrow:enabled
{
image: url(:/org.blueberry.ui.qt/dark/left_arrow.png);
}
QTabBar QToolButton::right-arrow:disabled
{
image: url(:/org.blueberry.ui.qt/dark/right_arrow_disabled.png);
}
QTabBar QToolButton::left-arrow:disabled
{
image: url(:/org.blueberry.ui.qt/dark/left_arrow_disabled.png);
}
QTabBar::scroller
{
margin: 0px;
padding: 0px;
}
/* TOP TABS */
QTabBar::tab:top
{
font-weight: normal;
color:#1d1d1c;
border: 1px solid #adb1b6;
border-bottom: 0px;
background: #adb1b6;
padding: 2px;
min-width: 150px;
border-top-left-radius: 0px;
border-top-right-radius: 0px;
}
QTabBar::tab:top:!selected
{
color: #adb1b6;
font-weight: normal;
background-color: #323231;
border: 0px solid #323231;
border-top-left-radius: 0px;
border-top-right-radius: 0px;
}
QTabBar::tab:top:!selected:hover
{
color: #3399cc;
}
/* BOTTOM TABS */
QTabBar::tab:bottom
{
font-weight: bold;
color: #ffffff ;
border: 0px solid #1d1d1c;
background-color: #1d1d1c;
padding: 5px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
min-width: 50px;
}
QTabBar::tab:bottom:!selected
{
color: #adb1b6;
font-weight: normal;
background-color: #323231;
border: 0px solid #1d1d1c;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
QTabBar::tab:bottom:!selected:hover
{
color: #3399cc;
}
/* LEFT TABS */
QTabBar::tab:left
{
color: #adb1b6;
font-weight: bold;
border: 0px solid #1d1d1c;
background-color: #1d1d1c;
padding: 5px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
min-height: 50px;
}
QTabBar::tab:left:!selected
{
color: #adb1b6;
font-weight: normal;
background-color: #323231;
border: 0px solid #1d1d1c;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
}
QTabBar::tab:left:!selected:hover
{
color: #3399cc;
}
/* RIGHT TABS */
QTabBar::tab:right
{
color: #adb1b6;
font-weight: bold;
border: 0px solid #1d1d1c;
background-color: #1d1d1c;
padding: 5px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
min-height: 50px;
}
QTabBar::tab:right:!selected
{
color: #adb1b6;
font-weight: normal;
background-color: #323231;
border: 0px solid #1d1d1c;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
}
/* TODO check if #403F3F is nice */
QDockWidget
{
background: #323231;
border: 1px solid #403F3F;
titlebar-close-icon: url(:/org.blueberry.ui.qt/dark/tab_close_grey.svg);
titlebar-normal-icon: url(:/org.blueberry.ui.qt/dark/undock.png);
}
QDockWidget::close-button, QDockWidget::float-button
{
border: 1px solid transparent;
border-radius: 0px;
background: transparent;
}
/* TODO check if rgba(255, 255, 255, 10) is nice */
QDockWidget::close-button:hover,
QDockWidget::float-button:hover
{
background: rgba(255, 255, 255, 10);
}
QDockWidget::close-button:pressed,
QDockWidget::float-button:pressed
{
padding: 1px -1px -1px 1px;
background: rgba(255, 255, 255, 10);
}
QTreeView, QListView
{
border: 1px solid #1d1d1c;
background-color: #1d1d1c;
}
QTreeView::indicator:unchecked
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_big_unchecked.png);
}
QTreeView::indicator:checked,
QTreeView::indicator:indeterminate
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_big_checked.png);
}
QTreeView::indicator:unchecked:selected
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_big_unchecked_disabled.png);
}
QTreeView::indicator:indeterminate:selected,
QTreeView::indicator:checked:selected
{
image: url(:/org.blueberry.ui.qt/dark/checkbox_big_checked_disabled.png);
}
QTreeView:branch:selected,
QTreeView:branch:hover
{
background: url(:/org.blueberry.ui.qt/dark/transparent.png);
}
QTreeView::branch:has-siblings:!adjoins-item
{
border-image: url(:/org.blueberry.ui.qt/dark/transparent.png);
}
QTreeView::branch:has-siblings:adjoins-item
{
border-image: url(:/org.blueberry.ui.qt/dark/transparent.png);
}
QTreeView::branch:!has-children:!has-siblings:adjoins-item
{
border-image: url(:/org.blueberry.ui.qt/dark/transparent.png);
}
QTreeView::branch:has-children:!has-siblings:closed,
QTreeView::branch:closed:has-children:has-siblings
{
image: url(:/org.blueberry.ui.qt/dark/branch_closed.png);
}
QTreeView::branch:open:has-children:!has-siblings,
QTreeView::branch:open:has-children:has-siblings
{
image: url(:/org.blueberry.ui.qt/dark/branch_open.png);
}
QTreeView::branch:has-children:!has-siblings:closed:hover,
QTreeView::branch:closed:has-children:has-siblings:hover
{
image: url(:/org.blueberry.ui.qt/dark/branch_closed-on.png);
}
QTreeView::branch:open:has-children:!has-siblings:hover,
QTreeView::branch:open:has-children:has-siblings:hover
{
image: url(:/org.blueberry.ui.qt/dark/branch_open-on.png);
}
QListView::item:!selected:hover,
QTreeView::item:!selected:hover
{
background: #323231;
outline: 0;
color: #adb1b6
}
QListView::item:selected:hover,
QTreeView::item:selected:hover
{
background: #3399cc;
color: #adb1b6;
}
QSlider::groove:horizontal
{
border: 1px solid #1d1d1c;
height: 3px;
background: #1d1d1c;
margin: 0px;
border-radius: 0px;
}
QSlider::handle:horizontal
{
background: #adb1b6;
border: 1px solid #1d1d1c;
width: 7px;
height: 16px;
margin: -8px 0;
border-radius: 0px;
}
QSlider::groove:vertical
{
border: 1px solid #1d1d1c;
width: 3px;
background: #1d1d1c;
margin: 0px;
border-radius: 0px;
}
QSlider::handle:vertical
{
background: #adb1b6;
border: 1px solid #1d1d1c;
width: 16px;
height: 7px;
margin: 0 -8px;
border-radius: 0px;
}
QmitkRenderWindowMenu
{
background-color: transparent;
}
/* this fixes the size of the icons in the stdMultiWidget */
QmitkRenderWindowMenu QToolButton,
QmitkRenderWindowMenu QToolButton::menu-button {
background-color: transparent;
border: 0px solid #1d1d1c;
border-radius: 0px;
width: 15px;
height: 15px;
margin: 1px;
padding: 0px;
}
QmitkRenderWindowMenu QToolButton:hover,
QmitkRenderWindowMenu QToolButton::menu-button:hover
{
background-color: #adb1b6;
border: 0px solid #3399cc;
width: 15px;
height: 15px;
margin: 1px;
padding: 0px;
}
QToolButton:checked,
QToolButton:pressed,
QToolButton::menu-button:pressed
{
color: #3399cc;
border: 1px solid #3399cc;
padding: 0px;
}
/* the subcontrol below is used only in the InstantPopup or DelayedPopup mode */
QToolButton::menu-indicator
{
image: url(:/org.blueberry.ui.qt/dark/down_arrow.png);
top: -7px; left: -2px; /* shift it a bit */
}
/* the subcontrols below are used only in the MenuButtonPopup mode */
QToolButton::menu-button
{
border: 1px transparent #1d1d1c;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
/* 16px width + 4px for border = 20px allocated above */
width: 16px;
outline: none;
}
QToolButton::menu-arrow
{
image: url(:/org.blueberry.ui.qt/dark/down_arrow.png);
}
QToolButton::menu-arrow:open
{
border: 1px solid #1d1d1c;
}
QPushButton::menu-indicator
{
subcontrol-origin: padding;
subcontrol-position: bottom right;
left: 8px;
}
QTableView
{
border: 1px solid #1d1d1c;
gridline-color: #323231;
background-color: #1d1d1c;
}
QTableView, QHeaderView
{
border-radius: 0px;
}
QTableView::item:pressed, QListView::item:pressed, QTreeView::item:pressed
{
background: #3399cc;
color: #1d1d1c;
}
QTableView::item:selected:active, QTreeView::item:selected:active, QListView::item:selected:active
{
background: #3399cc;
color: #1d1d1c;
}
QHeaderView
{
background-color: #323231;
border: 1px transparent;
border-radius: 0px;
margin: 0px;
padding: 0px;
}
QHeaderView::section
{
background-color: #323231;
color: #adb1b6;
padding: 5px;
border: 1px solid #1d1d1c;
border-radius: 0px;
text-align: left;
}
QHeaderView::section::vertical::first, QHeaderView::section::vertical::only-one
{
border-top: 1px solid #1d1d1c;
}
QHeaderView::section::vertical
{
border-top: transparent;
}
QHeaderView::section::horizontal::first, QHeaderView::section::horizontal::only-one
{
border-left: 1px solid #1d1d1c;
}
QHeaderView::section::horizontal
{
border-left: transparent;
}
QHeaderView::section:checked
{
color: #adb1b6;
background-color: #323231;
}
/* sort indicator */
QHeaderView::down-arrow
{
image: url(:/org.blueberry.ui.qt/dark/down_arrow.png);
}
QHeaderView::up-arrow
{
image: url(:/org.blueberry.ui.qt/dark/up_arrow.png);
}
QTableCornerButton::section
{
background-color: #323231;
border: 1px transparent #1d1d1c;
border-radius: 0px;
}
QToolBox
{
color: #adb1b6;
background-color: #323231;
padding: 5px;
border: 1px solid #adb1b6;
border-bottom: 1px solid #adb1b6;
}
QToolBox::tab
{
color:#adb1b6;
background-color: #323231;
border: 1px solid #adb1b6;
border-bottom: 1px solid #adb1b6;
border-top-left-radius: 0px;
border-top-right-radius: 0px;
}
QToolBox::tab:hover
{
color : #3399cc;
}
QToolBox::tab:selected
{
color :#1d1d1c;
font-weight: normal;
border: 1px solid #adb1b6;
border-bottom: 1px solid #adb1b6;
background: #adb1b6;
frame: Box;
midLineWidth:1;
lineWidth:1;
}
QStatusBar::item
{
border: 0px transparent #1d1d1c;
}
QSplitter::handle
{
border: 1px dashed #1d1d1c;
}
QSplitter::handle:hover
{
background-color: #adb1b6;
border: 1px solid #1d1d1c;
}
QSplitter::handle:horizontal
{
width: 1px;
}
QSplitter::handle:vertical
{
height: 1px;
}
QProgressBar
{
border: 1px solid #1d1d1c;
border-radius: 0px;
text-align: center;
}
QProgressBar::chunk
{
background-color: #3399cc;
}
QDateEdit
{
selection-background-color: #3399cc;
selection-color: #1d1d1c;
border: 1px solid #1d1d1c;
border-radius: 0px;
padding: 1px;
min-width: 75px;
}
QDateEdit:on
{
padding-top: 3px;
padding-left: 4px;
}
QDateEdit QAbstractItemView
{
background-color: #1d1d1c;
border-radius: 0px;
border: 1px solid #1d1d1c;
selection-background-color: #3399cc;
selection-color: #1d1d1c;
}
QDateEdit::drop-down
{
subcontrol-origin: padding;
subcontrol-position: top right;
width: 15px;
border-left-width: 0px;
border-left-color: darkgray;
border-left-style: solid;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
}
QDateEdit::down-arrow
{
image: url(:/org.blueberry.ui.qt/dark/down_arrow_disabled.png);
}
QDateEdit::down-arrow:on, QDateEdit::down-arrow:hover,
QDateEdit::down-arrow:focus
{
image: url(:/org.blueberry.ui.qt/dark/down_arrow.png);
}