diff --git a/CMakeLists.txt b/CMakeLists.txt index 37c0cee24d2a1959323be5aaf4fec7d9d55a5794..5db9b8e8996eabe1fda3a5ca0d5efc57571634a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,11 +12,11 @@ if(NOT BORNAGAIN_PYTHON) endif() if(NOT BORNAGAIN_APP) - set(BORNAGAIN_APP ON) +# set(BORNAGAIN_APP ON) endif() if(NOT BORNAGAIN_GUI) - set(BORNAGAIN_GUI OFF) + set(BORNAGAIN_GUI ON) endif() #--- Path for additional cmake modules --- @@ -39,5 +39,9 @@ if(ROOT_FOUND AND BORNAGAIN_APP) add_subdirectory(App) endif() +if(BORNAGAIN_GUI) + add_subdirectory(GUI) +endif() + # packaging include(BornAgainCPack) diff --git a/GUI/CMakeLists.txt b/GUI/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..846e93b4d6f9b9e3a257f8b6639c04729c247811 --- /dev/null +++ b/GUI/CMakeLists.txt @@ -0,0 +1,7 @@ +############################################################################ +# CMakeLists.txt file for building BornAgain/GUI libraries and executable +############################################################################ + +cmake_minimum_required(VERSION 2.8 FATAL_ERROR) + +add_subdirectory(externals/qt-manhattan-style) diff --git a/GUI/externals/qt-manhattan-style/extensions/simpleprogressbar.h b/GUI/externals/qt-manhattan-style/extensions/simpleprogressbar.h index f2b562dc5540640359f310b4f030d1c60a8df3f0..2c6fc745f656ec119ec9e2fc2079b8482c616e94 100644 --- a/GUI/externals/qt-manhattan-style/extensions/simpleprogressbar.h +++ b/GUI/externals/qt-manhattan-style/extensions/simpleprogressbar.h @@ -22,11 +22,13 @@ public: int maximum() const { return m_maximum; } int value() const { return m_value; } bool finished() const { return m_finished; } - void reset(); void setRange(int minimum, int maximum); void setValue(int value); void setFinished(bool b); +public slots: + void reset(); + private: QImage bar; QString m_text; diff --git a/GUI/externals/qt-manhattan-style/extensions/tabwidget.cpp b/GUI/externals/qt-manhattan-style/extensions/tabwidget.cpp index 6c868e73908669c5ac5186f619dbe5849c1a927a..81969c07118f32634c0ab218c38484a6a197dd5e 100644 --- a/GUI/externals/qt-manhattan-style/extensions/tabwidget.cpp +++ b/GUI/externals/qt-manhattan-style/extensions/tabwidget.cpp @@ -78,11 +78,12 @@ void TabWidget::setFrameVisible(bool visible) } } -void TabWidget::addTab(const QString &name, QWidget *widget) +void TabWidget::addTab(const QString &name, QWidget *widget, const QColor &color) { Q_ASSERT(widget); Tab tab; tab.name = name; + tab.color = color; tab.widget = widget; m_tabs.append(tab); m_stack->addWidget(widget); @@ -93,11 +94,12 @@ void TabWidget::addTab(const QString &name, QWidget *widget) update(); } -void TabWidget::insertTab(int index, const QString &name, QWidget *widget) +void TabWidget::insertTab(int index, const QString &name, QWidget *widget, const QColor &color) { Q_ASSERT(widget); Tab tab; tab.name = name; + tab.color = color; tab.widget = widget; m_tabs.insert(index, tab); m_stack->insertWidget(index, widget); @@ -108,9 +110,9 @@ void TabWidget::insertTab(int index, const QString &name, QWidget *widget) update(); } -void TabWidget::removeTab(int index) +QWidget* TabWidget::removeTab(int index) { - m_tabs.takeAt(index); + Tab tab = m_tabs.takeAt(index); if (index <= m_currentIndex) { --m_currentIndex; if (m_currentIndex < 0 && m_tabs.size() > 0) @@ -122,6 +124,7 @@ void TabWidget::removeTab(int index) } } update(); + return tab.widget; } int TabWidget::tabCount() const @@ -346,7 +349,7 @@ void TabWidget::paintEvent(QPaintEvent *event) } x += MARGIN; - painter.setPen(Qt::black); + painter.setPen(tab.color); painter.drawText(x, baseline, tab.name); x += nameWidth.at(actualIndex); x += MARGIN; @@ -368,7 +371,9 @@ void TabWidget::paintEvent(QPaintEvent *event) painter.drawLine(x, 0, x, r.height()); x += MARGIN; - painter.setPen(QColor(0, 0, 0, 190)); + QColor penColor(tab.color); + penColor.setAlpha(190); + painter.setPen(penColor); painter.drawText(x + 1, baseline, tab.name); x += nameWidth.at(actualIndex); x += MARGIN; diff --git a/GUI/externals/qt-manhattan-style/extensions/tabwidget.h b/GUI/externals/qt-manhattan-style/extensions/tabwidget.h index 72dd8a0b21c2eeae74d3c68de384f55892926ddc..223c1e3eb71922c61560138bd931f0a3efccd67c 100644 --- a/GUI/externals/qt-manhattan-style/extensions/tabwidget.h +++ b/GUI/externals/qt-manhattan-style/extensions/tabwidget.h @@ -21,9 +21,9 @@ public: void setFrameVisible(bool visible); - void addTab(const QString &name, QWidget *widget); - void insertTab(int index, const QString &name, QWidget *widget); - void removeTab(int index); + void addTab(const QString &name, QWidget *widget, const QColor &color = Qt::black); + void insertTab(int index, const QString &name, QWidget *widget, const QColor &color = Qt::black); + QWidget* removeTab(int index); int tabCount() const; QString tabText(int index) const; @@ -41,6 +41,7 @@ protected: private: struct Tab { QString name; + QColor color; QWidget* widget; }; enum HitArea { HITNOTHING, HITOVERFLOW, HITTAB }; diff --git a/GUI/externals/qt-manhattan-style/extensions/threelevelsitempicker.cpp b/GUI/externals/qt-manhattan-style/extensions/threelevelsitempicker.cpp index 41ca19b63f47a56c07d76b7859a51229a5097d63..3144b042061b087690f233d2c07a75fd0a21bb65 100644 --- a/GUI/externals/qt-manhattan-style/extensions/threelevelsitempicker.cpp +++ b/GUI/externals/qt-manhattan-style/extensions/threelevelsitempicker.cpp @@ -11,7 +11,6 @@ #include <QLabel> #include <QTimer> - namespace { @@ -181,8 +180,7 @@ QListWidgetItem* find(const ListWidget* list, const QString& name) return item; } - //return nullptr; - return NULL; + return 0; } } // Anonymous namespace diff --git a/GUI/externals/qt-manhattan-style/manhattanstyle.cpp b/GUI/externals/qt-manhattan-style/manhattanstyle.cpp index 2ac03a25dd4fe1913ba435a7689b45461d49b3f9..cf59291bf1019d6804b42826c6821c26a76ce12a 100644 --- a/GUI/externals/qt-manhattan-style/manhattanstyle.cpp +++ b/GUI/externals/qt-manhattan-style/manhattanstyle.cpp @@ -126,6 +126,24 @@ bool lightColored(const QWidget *widget) return false; } +bool hasProperty(const QWidget *widget, const QByteArray& name) +{ + if (!widget) + return false; + + // Don't style dialogs or explicitly ignored widgets + if ((widget->window()->windowFlags() & Qt::WindowType_Mask) == Qt::Dialog) + return false; + + const QWidget *p = widget; + while (p) { + if (p->property(name).isValid()) + return true; + p = p->parentWidget(); + } + return false; +} + class ManhattanStylePrivate { public: @@ -291,7 +309,7 @@ void ManhattanStyle::polish(QWidget *widget) widget->setMaximumHeight(Utils::StyleHelper::navigationWidgetHeight() - 2); } else if (qobject_cast<QLabel*>(widget)) - widget->setPalette(panelPalette(widget->palette())); + widget->setPalette(panelPalette(widget->palette(), lightColored(widget))); else if (widget->property("panelwidget_singlerow").toBool()) widget->setFixedHeight(Utils::StyleHelper::navigationWidgetHeight()); else if (qobject_cast<QStatusBar*>(widget)) @@ -630,7 +648,8 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt if (const QStyleOptionTabV3 *tab = qstyleoption_cast<const QStyleOptionTabV3 *>(option)) { QStyleOptionTabV3 adjustedTab = *tab; - if (tab->cornerWidgets == QStyleOptionTab::NoCornerWidgets && ( + if (!hasProperty(widget, "noTabBarShapeAdjustment") && + tab->cornerWidgets == QStyleOptionTab::NoCornerWidgets && ( tab->position == QStyleOptionTab::Beginning || tab->position == QStyleOptionTab::OnlyOneTab)) { @@ -727,7 +746,7 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt } else { painter->setOpacity(0.8); } - painter->setPen(Utils::StyleHelper::panelTextColor()); + painter->setPen(Utils::StyleHelper::panelTextColor(lightColored(widget))); painter->drawText(editRect.adjusted(1, 0, -1, 0), Qt::AlignLeft | Qt::AlignVCenter, text); painter->restore();