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:
hjk
2024-07-11 16:12:06 +02:00
parent 1d834b9a12
commit bc5f956d78

View File

@@ -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;
}; };