diff options
author | Tobias Nätterlund <tobias.naetterlund.qnx@kdab.com> | 2013-11-29 14:50:53 +0100 |
---|---|---|
committer | Tobias Nätterlund <tobias.naetterlund@kdab.com> | 2013-12-20 07:36:06 +0100 |
commit | 4dd2b819df36f0153bbe419e0cb9d9bc2e862dc1 (patch) | |
tree | 5e311b89911fb6a8a6b5cc4fe841bce86fa6b3e0 /src/plugins/qnx/bardescriptoreditor.cpp | |
parent | f73cd8b6dbc73b0d482e740eddbf9df6b934e7da (diff) | |
download | qt-creator-4dd2b819df36f0153bbe419e0cb9d9bc2e862dc1.tar.gz |
QNX: Show line/column in the bar descriptor editor
Task-number: QTCREATORBUG-10395
Change-Id: I290c52dbcf2615513ec1a5fb0e724baff425d1cf
Reviewed-by: David Kaspar <dkaspar@blackberry.com>
Reviewed-by: Mehdi Fekari <mfekari@blackberry.com>
Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
Diffstat (limited to 'src/plugins/qnx/bardescriptoreditor.cpp')
-rw-r--r-- | src/plugins/qnx/bardescriptoreditor.cpp | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/plugins/qnx/bardescriptoreditor.cpp b/src/plugins/qnx/bardescriptoreditor.cpp index 159e074a7f..bb92fc4e99 100644 --- a/src/plugins/qnx/bardescriptoreditor.cpp +++ b/src/plugins/qnx/bardescriptoreditor.cpp @@ -38,11 +38,15 @@ #include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/task.h> #include <projectexplorer/taskhub.h> -#include <utils/qtcassert.h> #include <texteditor/texteditorconstants.h> #include <texteditor/basetexteditor.h> +#include <texteditor/tabsettings.h> +#include <utils/linecolumnlabel.h> +#include <utils/qtcassert.h> #include <QAction> +#include <QStyle> +#include <QTextBlock> #include <QToolBar> using namespace ProjectExplorer; @@ -83,6 +87,17 @@ BarDescriptorEditor::BarDescriptorEditor(BarDescriptorEditorWidget *editorWidget generalAction->setChecked(true); + m_cursorPositionLabel = new Utils::LineColumnLabel; + const int spacing = editorWidget->style()->pixelMetric(QStyle::PM_LayoutHorizontalSpacing) / 2; + m_cursorPositionLabel->setContentsMargins(spacing, 0, spacing, 0); + + QWidget *spacer = new QWidget; + spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + m_toolBar->addWidget(spacer); + + m_cursorPositionAction = m_toolBar->addWidget(m_cursorPositionLabel); + connect(editorWidget->sourceWidget(), SIGNAL(cursorPositionChanged()), this, SLOT(updateCursorPosition())); + setContext(Core::Context(Constants::QNX_BAR_DESCRIPTOR_EDITOR_CONTEXT, TextEditor::Constants::C_TEXTEDITOR)); } @@ -133,6 +148,7 @@ void BarDescriptorEditor::setActivePage(BarDescriptorEditor::EditorPage page) if (page == Source) { editorWidget->setXmlSource(m_file->xmlSource()); + updateCursorPosition(); } else if (prevPage == Source) { TaskHub::clearTasks(Constants::QNX_TASK_CATEGORY_BARDESCRIPTOR); QString errorMsg; @@ -150,8 +166,24 @@ void BarDescriptorEditor::setActivePage(BarDescriptorEditor::EditorPage page) } } + m_cursorPositionAction->setVisible(page == Source); editorWidget->setCurrentIndex(page); } +void BarDescriptorEditor::updateCursorPosition() +{ + BarDescriptorEditorWidget *editorWidget = qobject_cast<BarDescriptorEditorWidget *>(widget()); + QTC_ASSERT(editorWidget, return); + + const QTextCursor cursor = editorWidget->sourceWidget()->textCursor(); + const QTextBlock block = cursor.block(); + const int line = block.blockNumber() + 1; + const int column = cursor.position() - block.position(); + m_cursorPositionLabel->setText(tr("Line: %1, Col: %2").arg(line).arg(editorWidget->sourceWidget()->tabSettings().columnAt(block.text(), column)+1), + tr("Line: 9999, Col: 999")); + if (!block.isVisible()) + editorWidget->sourceWidget()->ensureCursorVisible(); +} + } // namespace Internal } // namespace Qnx |