forked from qt-creator/qt-creator
BinEditor: Move address widget to BinEditorWidget
The obvious location. Change-Id: I12348034fdc82c16819f978c9889c8fc018399c3 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -226,6 +226,12 @@ public:
|
|||||||
void requestNewRange(quint64 address) { if (m_newRangeRequestHandler) m_newRangeRequestHandler(address); }
|
void requestNewRange(quint64 address) { if (m_newRangeRequestHandler) m_newRangeRequestHandler(address); }
|
||||||
void announceChangedData(quint64 address, const QByteArray &ba) { if (m_dataChangedHandler) m_dataChangedHandler(address, ba); }
|
void announceChangedData(quint64 address, const QByteArray &ba) { if (m_dataChangedHandler) m_dataChangedHandler(address, ba); }
|
||||||
|
|
||||||
|
QLineEdit *addressEdit() const { return m_addressEdit; }
|
||||||
|
|
||||||
|
void updateCursorPosition(qint64 position) {
|
||||||
|
m_addressEdit->setText(QString::number(baseAddress() + position, 16));
|
||||||
|
}
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void modificationChanged(bool modified);
|
void modificationChanged(bool modified);
|
||||||
void undoAvailable(bool);
|
void undoAvailable(bool);
|
||||||
@@ -345,6 +351,8 @@ private:
|
|||||||
int m_addressBytes = 4;
|
int m_addressBytes = 4;
|
||||||
bool m_canRequestNewWindow = false;
|
bool m_canRequestNewWindow = false;
|
||||||
QList<Markup> m_markup;
|
QList<Markup> m_markup;
|
||||||
|
|
||||||
|
QLineEdit *m_addressEdit = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
const QChar MidpointChar(u'\u00B7');
|
const QChar MidpointChar(u'\u00B7');
|
||||||
@@ -381,6 +389,20 @@ BinEditorWidget::BinEditorWidget(QWidget *parent)
|
|||||||
const QByteArray setting = ICore::settings()->value(Constants::C_ENCODING_SETTING).toByteArray();
|
const QByteArray setting = ICore::settings()->value(Constants::C_ENCODING_SETTING).toByteArray();
|
||||||
if (!setting.isEmpty())
|
if (!setting.isEmpty())
|
||||||
setCodec(QTextCodec::codecForName(setting));
|
setCodec(QTextCodec::codecForName(setting));
|
||||||
|
|
||||||
|
m_addressEdit = new QLineEdit;
|
||||||
|
auto addressValidator = new QRegularExpressionValidator(QRegularExpression("[0-9a-fA-F]{1,16}"), m_addressEdit);
|
||||||
|
m_addressEdit->setValidator(addressValidator);
|
||||||
|
|
||||||
|
connect(this, &BinEditorWidget::cursorPositionChanged,
|
||||||
|
this, &BinEditorWidget::updateCursorPosition);
|
||||||
|
connect(m_addressEdit, &QLineEdit::editingFinished,
|
||||||
|
this, [this] {
|
||||||
|
jumpToAddress(m_addressEdit->text().toULongLong(nullptr, 16));
|
||||||
|
updateCursorPosition(cursorPosition());
|
||||||
|
});
|
||||||
|
|
||||||
|
updateCursorPosition(cursorPosition());
|
||||||
}
|
}
|
||||||
|
|
||||||
EditorService *BinEditorWidget::editorService()
|
EditorService *BinEditorWidget::editorService()
|
||||||
@@ -2233,9 +2255,6 @@ public:
|
|||||||
{
|
{
|
||||||
using namespace TextEditor;
|
using namespace TextEditor;
|
||||||
setWidget(widget);
|
setWidget(widget);
|
||||||
m_addressEdit = new QLineEdit;
|
|
||||||
auto addressValidator = new QRegularExpressionValidator(QRegularExpression("[0-9a-fA-F]{1,16}"), m_addressEdit);
|
|
||||||
m_addressEdit->setValidator(addressValidator);
|
|
||||||
m_codecChooser = new CodecChooser(CodecChooser::Filter::SingleByte);
|
m_codecChooser = new CodecChooser(CodecChooser::Filter::SingleByte);
|
||||||
m_codecChooser->prependNone();
|
m_codecChooser->prependNone();
|
||||||
|
|
||||||
@@ -2244,7 +2263,7 @@ public:
|
|||||||
l->setContentsMargins(0, 0, 5, 0);
|
l->setContentsMargins(0, 0, 5, 0);
|
||||||
l->addStretch(1);
|
l->addStretch(1);
|
||||||
l->addWidget(m_codecChooser);
|
l->addWidget(m_codecChooser);
|
||||||
l->addWidget(m_addressEdit);
|
l->addWidget(widget->addressEdit());
|
||||||
w->setLayout(l);
|
w->setLayout(l);
|
||||||
|
|
||||||
m_toolBar = new QToolBar;
|
m_toolBar = new QToolBar;
|
||||||
@@ -2253,15 +2272,10 @@ public:
|
|||||||
|
|
||||||
widget->setEditor(this);
|
widget->setEditor(this);
|
||||||
|
|
||||||
connect(widget, &BinEditorWidget::cursorPositionChanged,
|
|
||||||
this, &BinEditorImpl::updateCursorPosition);
|
|
||||||
connect(m_addressEdit, &QLineEdit::editingFinished,
|
|
||||||
this, &BinEditorImpl::jumpToAddress);
|
|
||||||
connect(m_codecChooser, &CodecChooser::codecChanged,
|
connect(m_codecChooser, &CodecChooser::codecChanged,
|
||||||
widget, &BinEditorWidget::setCodec);
|
widget, &BinEditorWidget::setCodec);
|
||||||
connect(widget, &BinEditorWidget::modificationChanged,
|
connect(widget, &BinEditorWidget::modificationChanged,
|
||||||
m_document, &IDocument::changed);
|
m_document, &IDocument::changed);
|
||||||
updateCursorPosition(widget->cursorPosition());
|
|
||||||
const QVariant setting = ICore::settings()->value(Constants::C_ENCODING_SETTING);
|
const QVariant setting = ICore::settings()->value(Constants::C_ENCODING_SETTING);
|
||||||
if (!setting.isNull())
|
if (!setting.isNull())
|
||||||
m_codecChooser->setAssignedCodec(QTextCodec::codecForName(setting.toByteArray()));
|
m_codecChooser->setAssignedCodec(QTextCodec::codecForName(setting.toByteArray()));
|
||||||
@@ -2277,15 +2291,6 @@ public:
|
|||||||
QWidget *toolBar() override { return m_toolBar; }
|
QWidget *toolBar() override { return m_toolBar; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateCursorPosition(qint64 position) {
|
|
||||||
m_addressEdit->setText(QString::number(editorWidget()->baseAddress() + position, 16));
|
|
||||||
}
|
|
||||||
|
|
||||||
void jumpToAddress() {
|
|
||||||
editorWidget()->jumpToAddress(m_addressEdit->text().toULongLong(nullptr, 16));
|
|
||||||
updateCursorPosition(editorWidget()->cursorPosition());
|
|
||||||
}
|
|
||||||
|
|
||||||
BinEditorWidget *editorWidget() const
|
BinEditorWidget *editorWidget() const
|
||||||
{
|
{
|
||||||
QTC_ASSERT(qobject_cast<BinEditorWidget *>(m_widget.data()), return nullptr);
|
QTC_ASSERT(qobject_cast<BinEditorWidget *>(m_widget.data()), return nullptr);
|
||||||
@@ -2295,7 +2300,6 @@ private:
|
|||||||
private:
|
private:
|
||||||
BinEditorDocument *m_document;
|
BinEditorDocument *m_document;
|
||||||
QToolBar *m_toolBar;
|
QToolBar *m_toolBar;
|
||||||
QLineEdit *m_addressEdit;
|
|
||||||
TextEditor::CodecChooser *m_codecChooser;
|
TextEditor::CodecChooser *m_codecChooser;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user