38
38
#include <projectexplorer/projectexplorerconstants.h>
39
39
#include <projectexplorer/task.h>
40
40
#include <projectexplorer/taskhub.h>
41
#include <utils/qtcassert.h>
42
41
#include <texteditor/texteditorconstants.h>
43
42
#include <texteditor/basetexteditor.h>
43
#include <texteditor/tabsettings.h>
44
#include <utils/linecolumnlabel.h>
45
#include <utils/qtcassert.h>
46
50
#include <QToolBar>
48
52
using namespace ProjectExplorer;
51
55
namespace Internal {
53
BarDescriptorEditor::BarDescriptorEditor(BarDescriptorEditorWidget *editorWidget)
57
BarDescriptorEditor::BarDescriptorEditor()
59
setId(Constants::QNX_BAR_DESCRIPTOR_EDITOR_ID);
60
m_file = new BarDescriptorDocument(this);
62
BarDescriptorEditorWidget *editorWidget = new BarDescriptorEditorWidget(this);
55
63
setWidget(editorWidget);
57
m_file = new BarDescriptorDocument(editorWidget);
59
65
m_toolBar = new QToolBar(editorWidget);
61
67
m_actionGroup = new QActionGroup(this);
84
90
generalAction->setChecked(true);
92
m_cursorPositionLabel = new Utils::LineColumnLabel;
93
const int spacing = editorWidget->style()->pixelMetric(QStyle::PM_LayoutHorizontalSpacing) / 2;
94
m_cursorPositionLabel->setContentsMargins(spacing, 0, spacing, 0);
96
QWidget *spacer = new QWidget;
97
spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
98
m_toolBar->addWidget(spacer);
100
m_cursorPositionAction = m_toolBar->addWidget(m_cursorPositionLabel);
101
connect(editorWidget->sourceWidget(), SIGNAL(cursorPositionChanged()), this, SLOT(updateCursorPosition()));
86
103
setContext(Core::Context(Constants::QNX_BAR_DESCRIPTOR_EDITOR_CONTEXT,
87
104
TextEditor::Constants::C_TEXTEDITOR));
90
107
bool BarDescriptorEditor::open(QString *errorString, const QString &fileName, const QString &realFileName)
92
109
QTC_ASSERT(fileName == realFileName, return false);
93
return m_file->open(errorString, fileName);
111
bool result = m_file->open(errorString, fileName);
113
BarDescriptorEditorWidget *editorWidget = qobject_cast<BarDescriptorEditorWidget *>(widget());
114
QTC_ASSERT(editorWidget, return false);
115
editorWidget->setFilePath(fileName);
96
121
Core::IDocument *BarDescriptorEditor::document()
126
146
BarDescriptorEditorWidget *editorWidget = qobject_cast<BarDescriptorEditorWidget *>(widget());
127
147
QTC_ASSERT(editorWidget, return);
129
int prevPage = editorWidget->currentIndex();
131
if (prevPage == page)
134
if (page == Source) {
135
editorWidget->setXmlSource(m_file->xmlSource());
136
} else if (prevPage == Source) {
137
TaskHub::clearTasks(Constants::QNX_TASK_CATEGORY_BARDESCRIPTOR);
140
if (!m_file->loadContent(editorWidget->xmlSource(), &errorMsg, &errorLine)) {
141
TaskHub::addTask(Task::Error, errorMsg, Constants::QNX_TASK_CATEGORY_BARDESCRIPTOR,
142
Utils::FileName::fromString(m_file->filePath()), errorLine);
143
TaskHub::requestPopup();
145
foreach (QAction *action, m_actionGroup->actions())
146
if (action->data().toInt() == Source)
147
action->setChecked(true);
149
m_cursorPositionAction->setVisible(page == Source);
153
150
editorWidget->setCurrentIndex(page);
153
void BarDescriptorEditor::updateCursorPosition()
155
BarDescriptorEditorWidget *editorWidget = qobject_cast<BarDescriptorEditorWidget *>(widget());
156
QTC_ASSERT(editorWidget, return);
158
const QTextCursor cursor = editorWidget->sourceWidget()->textCursor();
159
const QTextBlock block = cursor.block();
160
const int line = block.blockNumber() + 1;
161
const int column = cursor.position() - block.position();
162
m_cursorPositionLabel->setText(tr("Line: %1, Col: %2").arg(line)
163
.arg(editorWidget->sourceWidget()->baseTextDocument()
164
->tabSettings().columnAt(block.text(), column)+1),
165
tr("Line: 9999, Col: 999"));
166
if (!block.isVisible())
167
editorWidget->sourceWidget()->ensureCursorVisible();
156
170
} // namespace Internal
157
171
} // namespace Qnx