From 589962b09e1aeed9d14d4e5cc383b2e9a0280749 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Sun, 18 Sep 2016 00:17:15 +0200 Subject: [PATCH] ui: Added markers to active lines in code view --- bin/app/data/color_schemes/bad_rainbow.xml | 2 + bin/app/data/color_schemes/bright.xml | 2 + bin/app/data/color_schemes/dark.xml | 2 + bin/app/data/gui/code_view/code_view.css | 2 +- src/lib_gui/qt/element/QtCodeArea.cpp | 60 +++++++--------------- 5 files changed, 25 insertions(+), 43 deletions(-) diff --git a/bin/app/data/color_schemes/bad_rainbow.xml b/bin/app/data/color_schemes/bad_rainbow.xml index 813b020b..1a8a6b80 100644 --- a/bin/app/data/color_schemes/bad_rainbow.xml +++ b/bin/app/data/color_schemes/bad_rainbow.xml @@ -100,7 +100,9 @@ #C4C4C4 + #A0A0A0 #494949 + #C4C4C4 diff --git a/bin/app/data/color_schemes/bright.xml b/bin/app/data/color_schemes/bright.xml index cb63e02a..f8fcd2d5 100644 --- a/bin/app/data/color_schemes/bright.xml +++ b/bin/app/data/color_schemes/bright.xml @@ -100,7 +100,9 @@ black + #A0A0A0 white + #A0A0A0 diff --git a/bin/app/data/color_schemes/dark.xml b/bin/app/data/color_schemes/dark.xml index e5858f3a..9159d01b 100644 --- a/bin/app/data/color_schemes/dark.xml +++ b/bin/app/data/color_schemes/dark.xml @@ -119,7 +119,9 @@ #F7F7F7 + #A0A0A0 #272728 + #969696 diff --git a/bin/app/data/gui/code_view/code_view.css b/bin/app/data/gui/code_view/code_view.css index 6517c3c0..932b77a7 100644 --- a/bin/app/data/gui/code_view/code_view.css +++ b/bin/app/data/gui/code_view/code_view.css @@ -73,7 +73,7 @@ #code_file #code_snippet #dots { background-color: ; - padding-right: 13px; + padding-right: 16px; text-align: right; } diff --git a/src/lib_gui/qt/element/QtCodeArea.cpp b/src/lib_gui/qt/element/QtCodeArea.cpp index c70490b5..1d6f0183 100644 --- a/src/lib_gui/qt/element/QtCodeArea.cpp +++ b/src/lib_gui/qt/element/QtCodeArea.cpp @@ -195,20 +195,32 @@ void QtCodeArea::lineNumberAreaPaintEvent(QPaintEvent *event) std::set activeLineNumbers = getActiveLineNumbers(); ColorScheme* scheme = ColorScheme::getInstance().get(); - QColor backgroundColor(scheme->getColor("code/snippet/line_number/background").c_str()); - backgroundColor.setAlpha(150); + + QColor textColor(scheme->getColor("code/snippet/line_number/text").c_str()); + QColor inactiveTextColor(scheme->getColor("code/snippet/line_number/inactive_text").c_str()); + QColor markerColor(scheme->getColor("code/snippet/line_number/marker").c_str()); + + QPen p = painter.pen(); while (block.isValid() && top <= event->rect().bottom()) { if (block.isVisible() && bottom >= event->rect().top()) { int number = blockNumber + m_startLineNumber; - painter.drawText(0, top, m_lineNumberArea->width() - 13, fontMetrics().height(), Qt::AlignRight, QString::number(number)); - if (!m_isActiveFile && activeLineNumbers.find(number) == activeLineNumbers.end()) + p.setColor(textColor); + + if (activeLineNumbers.find(number) != activeLineNumbers.end()) { - painter.fillRect(0, top, m_lineNumberArea->width(), fontMetrics().height(), backgroundColor); + painter.fillRect(m_lineNumberArea->width() - 8, top, 3, fontMetrics().height() + 1, markerColor); } + else if (!m_isActiveFile) + { + p.setColor(inactiveTextColor); + } + + painter.setPen(p); + painter.drawText(0, top, m_lineNumberArea->width() - 16, fontMetrics().height(), Qt::AlignRight, QString::number(number)); } block = block.next(); @@ -373,23 +385,6 @@ void QtCodeArea::paintEvent(QPaintEvent* event) } QPlainTextEdit::paintEvent(event); - - QPainter painter2(viewport()); - std::set activeLineNumbers = getActiveLineNumbers(); - - ColorScheme* scheme = ColorScheme::getInstance().get(); - QColor backgroundColor(scheme->getColor("code/snippet/background").c_str()); - backgroundColor.setAlpha(75); - - for (int i = 0; i < document()->blockCount(); i++) - { - int lineNumber = i + m_startLineNumber; - if (!m_isActiveFile && activeLineNumbers.find(lineNumber) == activeLineNumbers.end() && - lineNumber >= firstVisibleLine && lineNumber <= lastVisibleLine) - { - painter.fillRect(0, top + i * blockHeight, width(), blockHeight, backgroundColor); - } - } } void QtCodeArea::enterEvent(QEvent* event) @@ -811,14 +806,9 @@ std::set QtCodeArea::getActiveLineNumbers() const { std::set activeLineNumbers; - if (m_isActiveFile) - { - return activeLineNumbers; - } - for (const Annotation& annotation : m_annotations) { - if (annotation.isActive) + if (annotation.isActive || annotation.isFocused) { for (int i = annotation.startLine; i <= annotation.endLine; i++) { @@ -827,20 +817,6 @@ std::set QtCodeArea::getActiveLineNumbers() const } } - if (activeLineNumbers.size()) - { - for (const Annotation& annotation : m_annotations) - { - if (annotation.isFocused) - { - for (int i = annotation.startLine; i <= annotation.endLine; i++) - { - activeLineNumbers.insert(i); - } - } - } - } - return activeLineNumbers; }