forked from qt-creator/qt-creator
BinEditor: Rename Editor->EditorWidget, Editable->Editor
Closer to modern naming convention. Change-Id: I80875d865336495995e0a8ad05aaf49e22fa3fb0 Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
@@ -85,7 +85,7 @@ static QByteArray calculateHexPattern(const QByteArray &pattern)
|
|||||||
|
|
||||||
namespace BINEditor {
|
namespace BINEditor {
|
||||||
|
|
||||||
BinEditor::BinEditor(QWidget *parent)
|
BinEditorWidget::BinEditorWidget(QWidget *parent)
|
||||||
: QAbstractScrollArea(parent)
|
: QAbstractScrollArea(parent)
|
||||||
{
|
{
|
||||||
m_bytesPerLine = 16;
|
m_bytesPerLine = 16;
|
||||||
@@ -108,11 +108,11 @@ BinEditor::BinEditor(QWidget *parent)
|
|||||||
setFrameStyle(QFrame::Plain);
|
setFrameStyle(QFrame::Plain);
|
||||||
}
|
}
|
||||||
|
|
||||||
BinEditor::~BinEditor()
|
BinEditorWidget::~BinEditorWidget()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::init()
|
void BinEditorWidget::init()
|
||||||
{
|
{
|
||||||
const int addressStringWidth =
|
const int addressStringWidth =
|
||||||
2*m_addressBytes + (m_addressBytes - 1) / 2;
|
2*m_addressBytes + (m_addressBytes - 1) / 2;
|
||||||
@@ -162,7 +162,7 @@ void BinEditor::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BinEditor::addData(quint64 block, const QByteArray &data)
|
void BinEditorWidget::addData(quint64 block, const QByteArray &data)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(data.size() == m_blockSize, return);
|
QTC_ASSERT(data.size() == m_blockSize, return);
|
||||||
const quint64 addr = block * m_blockSize;
|
const quint64 addr = block * m_blockSize;
|
||||||
@@ -176,7 +176,7 @@ void BinEditor::addData(quint64 block, const QByteArray &data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BinEditor::requestDataAt(int pos) const
|
bool BinEditorWidget::requestDataAt(int pos) const
|
||||||
{
|
{
|
||||||
int block = pos / m_blockSize;
|
int block = pos / m_blockSize;
|
||||||
BlockMap::const_iterator it = m_modifiedData.find(block);
|
BlockMap::const_iterator it = m_modifiedData.find(block);
|
||||||
@@ -187,27 +187,27 @@ bool BinEditor::requestDataAt(int pos) const
|
|||||||
return true;
|
return true;
|
||||||
if (!m_requests.contains(block)) {
|
if (!m_requests.contains(block)) {
|
||||||
m_requests.insert(block);
|
m_requests.insert(block);
|
||||||
emit const_cast<BinEditor*>(this)->
|
emit const_cast<BinEditorWidget*>(this)->
|
||||||
dataRequested(editor(), m_baseAddr / m_blockSize + block);
|
dataRequested(editor(), m_baseAddr / m_blockSize + block);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BinEditor::requestOldDataAt(int pos) const
|
bool BinEditorWidget::requestOldDataAt(int pos) const
|
||||||
{
|
{
|
||||||
int block = pos / m_blockSize;
|
int block = pos / m_blockSize;
|
||||||
BlockMap::const_iterator it = m_oldData.find(block);
|
BlockMap::const_iterator it = m_oldData.find(block);
|
||||||
return it != m_oldData.end();
|
return it != m_oldData.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
char BinEditor::dataAt(int pos, bool old) const
|
char BinEditorWidget::dataAt(int pos, bool old) const
|
||||||
{
|
{
|
||||||
int block = pos / m_blockSize;
|
int block = pos / m_blockSize;
|
||||||
return blockData(block, old).at(pos - block*m_blockSize);
|
return blockData(block, old).at(pos - block*m_blockSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::changeDataAt(int pos, char c)
|
void BinEditorWidget::changeDataAt(int pos, char c)
|
||||||
{
|
{
|
||||||
int block = pos / m_blockSize;
|
int block = pos / m_blockSize;
|
||||||
BlockMap::iterator it = m_modifiedData.find(block);
|
BlockMap::iterator it = m_modifiedData.find(block);
|
||||||
@@ -225,7 +225,7 @@ void BinEditor::changeDataAt(int pos, char c)
|
|||||||
emit dataChanged(editor(), m_baseAddr + pos, QByteArray(1, c));
|
emit dataChanged(editor(), m_baseAddr + pos, QByteArray(1, c));
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray BinEditor::dataMid(int from, int length, bool old) const
|
QByteArray BinEditorWidget::dataMid(int from, int length, bool old) const
|
||||||
{
|
{
|
||||||
int end = from + length;
|
int end = from + length;
|
||||||
int block = from / m_blockSize;
|
int block = from / m_blockSize;
|
||||||
@@ -239,7 +239,7 @@ QByteArray BinEditor::dataMid(int from, int length, bool old) const
|
|||||||
return data.mid(from - ((from / m_blockSize) * m_blockSize), length);
|
return data.mid(from - ((from / m_blockSize) * m_blockSize), length);
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray BinEditor::blockData(int block, bool old) const
|
QByteArray BinEditorWidget::blockData(int block, bool old) const
|
||||||
{
|
{
|
||||||
if (old) {
|
if (old) {
|
||||||
BlockMap::const_iterator it = m_modifiedData.find(block);
|
BlockMap::const_iterator it = m_modifiedData.find(block);
|
||||||
@@ -251,12 +251,12 @@ QByteArray BinEditor::blockData(int block, bool old) const
|
|||||||
? it.value() : m_data.value(block, m_emptyBlock);
|
? it.value() : m_data.value(block, m_emptyBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::setFontSettings(const TextEditor::FontSettings &fs)
|
void BinEditorWidget::setFontSettings(const TextEditor::FontSettings &fs)
|
||||||
{
|
{
|
||||||
setFont(fs.toTextCharFormat(TextEditor::C_TEXT).font());
|
setFont(fs.toTextCharFormat(TextEditor::C_TEXT).font());
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::setBlinkingCursorEnabled(bool enable)
|
void BinEditorWidget::setBlinkingCursorEnabled(bool enable)
|
||||||
{
|
{
|
||||||
if (enable && QApplication::cursorFlashTime() > 0)
|
if (enable && QApplication::cursorFlashTime() > 0)
|
||||||
m_cursorBlinkTimer.start(QApplication::cursorFlashTime() / 2, this);
|
m_cursorBlinkTimer.start(QApplication::cursorFlashTime() / 2, this);
|
||||||
@@ -266,17 +266,17 @@ void BinEditor::setBlinkingCursorEnabled(bool enable)
|
|||||||
updateLines();
|
updateLines();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::focusInEvent(QFocusEvent *)
|
void BinEditorWidget::focusInEvent(QFocusEvent *)
|
||||||
{
|
{
|
||||||
setBlinkingCursorEnabled(true);
|
setBlinkingCursorEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::focusOutEvent(QFocusEvent *)
|
void BinEditorWidget::focusOutEvent(QFocusEvent *)
|
||||||
{
|
{
|
||||||
setBlinkingCursorEnabled(false);
|
setBlinkingCursorEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::timerEvent(QTimerEvent *e)
|
void BinEditorWidget::timerEvent(QTimerEvent *e)
|
||||||
{
|
{
|
||||||
if (e->timerId() == m_autoScrollTimer.timerId()) {
|
if (e->timerId() == m_autoScrollTimer.timerId()) {
|
||||||
QRect visible = viewport()->rect();
|
QRect visible = viewport()->rect();
|
||||||
@@ -314,7 +314,7 @@ void BinEditor::timerEvent(QTimerEvent *e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BinEditor::setModified(bool modified)
|
void BinEditorWidget::setModified(bool modified)
|
||||||
{
|
{
|
||||||
int unmodifiedState = modified ? -1 : m_undoStack.size();
|
int unmodifiedState = modified ? -1 : m_undoStack.size();
|
||||||
if (unmodifiedState == m_unmodifiedState)
|
if (unmodifiedState == m_unmodifiedState)
|
||||||
@@ -323,22 +323,22 @@ void BinEditor::setModified(bool modified)
|
|||||||
emit modificationChanged(m_undoStack.size() != m_unmodifiedState);
|
emit modificationChanged(m_undoStack.size() != m_unmodifiedState);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BinEditor::isModified() const
|
bool BinEditorWidget::isModified() const
|
||||||
{
|
{
|
||||||
return (m_undoStack.size() != m_unmodifiedState);
|
return (m_undoStack.size() != m_unmodifiedState);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::setReadOnly(bool readOnly)
|
void BinEditorWidget::setReadOnly(bool readOnly)
|
||||||
{
|
{
|
||||||
m_readOnly = readOnly;
|
m_readOnly = readOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BinEditor::isReadOnly() const
|
bool BinEditorWidget::isReadOnly() const
|
||||||
{
|
{
|
||||||
return m_readOnly;
|
return m_readOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BinEditor::save(QString *errorString, const QString &oldFileName, const QString &newFileName)
|
bool BinEditorWidget::save(QString *errorString, const QString &oldFileName, const QString &newFileName)
|
||||||
{
|
{
|
||||||
if (oldFileName != newFileName) {
|
if (oldFileName != newFileName) {
|
||||||
QString tmpName;
|
QString tmpName;
|
||||||
@@ -381,7 +381,7 @@ bool BinEditor::save(QString *errorString, const QString &oldFileName, const QSt
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::setSizes(quint64 startAddr, int range, int blockSize)
|
void BinEditorWidget::setSizes(quint64 startAddr, int range, int blockSize)
|
||||||
{
|
{
|
||||||
int newBlockSize = blockSize;
|
int newBlockSize = blockSize;
|
||||||
QTC_ASSERT((blockSize/m_bytesPerLine) * m_bytesPerLine == blockSize,
|
QTC_ASSERT((blockSize/m_bytesPerLine) * m_bytesPerLine == blockSize,
|
||||||
@@ -423,12 +423,12 @@ void BinEditor::setSizes(quint64 startAddr, int range, int blockSize)
|
|||||||
viewport()->update();
|
viewport()->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::resizeEvent(QResizeEvent *)
|
void BinEditorWidget::resizeEvent(QResizeEvent *)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::scrollContentsBy(int dx, int dy)
|
void BinEditorWidget::scrollContentsBy(int dx, int dy)
|
||||||
{
|
{
|
||||||
viewport()->scroll(isRightToLeft() ? -dx : dx, dy * m_lineHeight);
|
viewport()->scroll(isRightToLeft() ? -dx : dx, dy * m_lineHeight);
|
||||||
const QScrollBar * const scrollBar = verticalScrollBar();
|
const QScrollBar * const scrollBar = verticalScrollBar();
|
||||||
@@ -439,7 +439,7 @@ void BinEditor::scrollContentsBy(int dx, int dy)
|
|||||||
emit newRangeRequested(editor(), baseAddress());
|
emit newRangeRequested(editor(), baseAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::changeEvent(QEvent *e)
|
void BinEditorWidget::changeEvent(QEvent *e)
|
||||||
{
|
{
|
||||||
QAbstractScrollArea::changeEvent(e);
|
QAbstractScrollArea::changeEvent(e);
|
||||||
if (e->type() == QEvent::ActivationChange) {
|
if (e->type() == QEvent::ActivationChange) {
|
||||||
@@ -451,7 +451,7 @@ void BinEditor::changeEvent(QEvent *e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BinEditor::wheelEvent(QWheelEvent *e)
|
void BinEditorWidget::wheelEvent(QWheelEvent *e)
|
||||||
{
|
{
|
||||||
if (e->modifiers() & Qt::ControlModifier) {
|
if (e->modifiers() & Qt::ControlModifier) {
|
||||||
const int delta = e->delta();
|
const int delta = e->delta();
|
||||||
@@ -466,7 +466,7 @@ void BinEditor::wheelEvent(QWheelEvent *e)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
QRect BinEditor::cursorRect() const
|
QRect BinEditorWidget::cursorRect() const
|
||||||
{
|
{
|
||||||
int topLine = verticalScrollBar()->value();
|
int topLine = verticalScrollBar()->value();
|
||||||
int line = m_cursorPosition / m_bytesPerLine;
|
int line = m_cursorPosition / m_bytesPerLine;
|
||||||
@@ -481,7 +481,7 @@ QRect BinEditor::cursorRect() const
|
|||||||
return QRect(x, y, w, m_lineHeight);
|
return QRect(x, y, w, m_lineHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
int BinEditor::posAt(const QPoint &pos) const
|
int BinEditorWidget::posAt(const QPoint &pos) const
|
||||||
{
|
{
|
||||||
int xoffset = horizontalScrollBar()->value();
|
int xoffset = horizontalScrollBar()->value();
|
||||||
int x = xoffset + pos.x() - m_margin - m_labelWidth;
|
int x = xoffset + pos.x() - m_margin - m_labelWidth;
|
||||||
@@ -508,19 +508,19 @@ int BinEditor::posAt(const QPoint &pos) const
|
|||||||
return qMin(m_size, qMin(m_numLines, topLine + line) * m_bytesPerLine) + column;
|
return qMin(m_size, qMin(m_numLines, topLine + line) * m_bytesPerLine) + column;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BinEditor::inTextArea(const QPoint &pos) const
|
bool BinEditorWidget::inTextArea(const QPoint &pos) const
|
||||||
{
|
{
|
||||||
int xoffset = horizontalScrollBar()->value();
|
int xoffset = horizontalScrollBar()->value();
|
||||||
int x = xoffset + pos.x() - m_margin - m_labelWidth;
|
int x = xoffset + pos.x() - m_margin - m_labelWidth;
|
||||||
return (x > m_bytesPerLine * m_columnWidth + m_charWidth/2);
|
return (x > m_bytesPerLine * m_columnWidth + m_charWidth/2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::updateLines()
|
void BinEditorWidget::updateLines()
|
||||||
{
|
{
|
||||||
updateLines(m_cursorPosition, m_cursorPosition);
|
updateLines(m_cursorPosition, m_cursorPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::updateLines(int fromPosition, int toPosition)
|
void BinEditorWidget::updateLines(int fromPosition, int toPosition)
|
||||||
{
|
{
|
||||||
int topLine = verticalScrollBar()->value();
|
int topLine = verticalScrollBar()->value();
|
||||||
int firstLine = qMin(fromPosition, toPosition) / m_bytesPerLine;
|
int firstLine = qMin(fromPosition, toPosition) / m_bytesPerLine;
|
||||||
@@ -531,7 +531,7 @@ void BinEditor::updateLines(int fromPosition, int toPosition)
|
|||||||
viewport()->update(0, y, viewport()->width(), h);
|
viewport()->update(0, y, viewport()->width(), h);
|
||||||
}
|
}
|
||||||
|
|
||||||
int BinEditor::dataIndexOf(const QByteArray &pattern, int from, bool caseSensitive) const
|
int BinEditorWidget::dataIndexOf(const QByteArray &pattern, int from, bool caseSensitive) const
|
||||||
{
|
{
|
||||||
int trailing = pattern.size();
|
int trailing = pattern.size();
|
||||||
if (trailing > m_blockSize)
|
if (trailing > m_blockSize)
|
||||||
@@ -564,7 +564,7 @@ int BinEditor::dataIndexOf(const QByteArray &pattern, int from, bool caseSensiti
|
|||||||
return end == m_size ? -1 : -2;
|
return end == m_size ? -1 : -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
int BinEditor::dataLastIndexOf(const QByteArray &pattern, int from, bool caseSensitive) const
|
int BinEditorWidget::dataLastIndexOf(const QByteArray &pattern, int from, bool caseSensitive) const
|
||||||
{
|
{
|
||||||
int trailing = pattern.size();
|
int trailing = pattern.size();
|
||||||
if (trailing > m_blockSize)
|
if (trailing > m_blockSize)
|
||||||
@@ -596,7 +596,7 @@ int BinEditor::dataLastIndexOf(const QByteArray &pattern, int from, bool caseSen
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int BinEditor::find(const QByteArray &pattern_arg, int from,
|
int BinEditorWidget::find(const QByteArray &pattern_arg, int from,
|
||||||
QTextDocument::FindFlags findFlags)
|
QTextDocument::FindFlags findFlags)
|
||||||
{
|
{
|
||||||
if (pattern_arg.isEmpty())
|
if (pattern_arg.isEmpty())
|
||||||
@@ -633,7 +633,7 @@ int BinEditor::find(const QByteArray &pattern_arg, int from,
|
|||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
int BinEditor::findPattern(const QByteArray &data, const QByteArray &dataHex,
|
int BinEditorWidget::findPattern(const QByteArray &data, const QByteArray &dataHex,
|
||||||
int from, int offset, int *match)
|
int from, int offset, int *match)
|
||||||
{
|
{
|
||||||
if (m_searchPattern.isEmpty())
|
if (m_searchPattern.isEmpty())
|
||||||
@@ -658,7 +658,7 @@ int BinEditor::findPattern(const QByteArray &data, const QByteArray &dataHex,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BinEditor::drawItems(QPainter *painter, int x, int y, const QString &itemString)
|
void BinEditorWidget::drawItems(QPainter *painter, int x, int y, const QString &itemString)
|
||||||
{
|
{
|
||||||
if (m_isMonospacedFont) {
|
if (m_isMonospacedFont) {
|
||||||
painter->drawText(x, y, itemString);
|
painter->drawText(x, y, itemString);
|
||||||
@@ -668,7 +668,7 @@ void BinEditor::drawItems(QPainter *painter, int x, int y, const QString &itemSt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::drawChanges(QPainter *painter, int x, int y, const char *changes)
|
void BinEditorWidget::drawChanges(QPainter *painter, int x, int y, const char *changes)
|
||||||
{
|
{
|
||||||
const QBrush red(QColor(250, 150, 150));
|
const QBrush red(QColor(250, 150, 150));
|
||||||
for (int i = 0; i < m_bytesPerLine; ++i) {
|
for (int i = 0; i < m_bytesPerLine; ++i) {
|
||||||
@@ -679,7 +679,7 @@ void BinEditor::drawChanges(QPainter *painter, int x, int y, const char *changes
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString BinEditor::addressString(quint64 address)
|
QString BinEditorWidget::addressString(quint64 address)
|
||||||
{
|
{
|
||||||
QChar *addressStringData = m_addressString.data();
|
QChar *addressStringData = m_addressString.data();
|
||||||
const char *hex = "0123456789abcdef";
|
const char *hex = "0123456789abcdef";
|
||||||
@@ -698,7 +698,7 @@ QString BinEditor::addressString(quint64 address)
|
|||||||
return m_addressString;
|
return m_addressString;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::paintEvent(QPaintEvent *e)
|
void BinEditorWidget::paintEvent(QPaintEvent *e)
|
||||||
{
|
{
|
||||||
QPainter painter(viewport());
|
QPainter painter(viewport());
|
||||||
const int topLine = verticalScrollBar()->value();
|
const int topLine = verticalScrollBar()->value();
|
||||||
@@ -930,12 +930,12 @@ void BinEditor::paintEvent(QPaintEvent *e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int BinEditor::cursorPosition() const
|
int BinEditorWidget::cursorPosition() const
|
||||||
{
|
{
|
||||||
return m_cursorPosition;
|
return m_cursorPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::setCursorPosition(int pos, MoveMode moveMode)
|
void BinEditorWidget::setCursorPosition(int pos, MoveMode moveMode)
|
||||||
{
|
{
|
||||||
pos = qMin(m_size-1, qMax(0, pos));
|
pos = qMin(m_size-1, qMax(0, pos));
|
||||||
int oldCursorPosition = m_cursorPosition;
|
int oldCursorPosition = m_cursorPosition;
|
||||||
@@ -957,7 +957,7 @@ void BinEditor::setCursorPosition(int pos, MoveMode moveMode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BinEditor::ensureCursorVisible()
|
void BinEditorWidget::ensureCursorVisible()
|
||||||
{
|
{
|
||||||
QRect cr = cursorRect();
|
QRect cr = cursorRect();
|
||||||
QRect vr = viewport()->rect();
|
QRect vr = viewport()->rect();
|
||||||
@@ -969,7 +969,7 @@ void BinEditor::ensureCursorVisible()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::mousePressEvent(QMouseEvent *e)
|
void BinEditorWidget::mousePressEvent(QMouseEvent *e)
|
||||||
{
|
{
|
||||||
if (e->button() != Qt::LeftButton)
|
if (e->button() != Qt::LeftButton)
|
||||||
return;
|
return;
|
||||||
@@ -982,7 +982,7 @@ void BinEditor::mousePressEvent(QMouseEvent *e)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::mouseMoveEvent(QMouseEvent *e)
|
void BinEditorWidget::mouseMoveEvent(QMouseEvent *e)
|
||||||
{
|
{
|
||||||
if (!(e->buttons() & Qt::LeftButton))
|
if (!(e->buttons() & Qt::LeftButton))
|
||||||
return;
|
return;
|
||||||
@@ -998,7 +998,7 @@ void BinEditor::mouseMoveEvent(QMouseEvent *e)
|
|||||||
m_autoScrollTimer.start(100, this);
|
m_autoScrollTimer.start(100, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::mouseReleaseEvent(QMouseEvent *)
|
void BinEditorWidget::mouseReleaseEvent(QMouseEvent *)
|
||||||
{
|
{
|
||||||
if (m_autoScrollTimer.isActive()) {
|
if (m_autoScrollTimer.isActive()) {
|
||||||
m_autoScrollTimer.stop();
|
m_autoScrollTimer.stop();
|
||||||
@@ -1006,13 +1006,13 @@ void BinEditor::mouseReleaseEvent(QMouseEvent *)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::selectAll()
|
void BinEditorWidget::selectAll()
|
||||||
{
|
{
|
||||||
setCursorPosition(0);
|
setCursorPosition(0);
|
||||||
setCursorPosition(m_size-1, KeepAnchor);
|
setCursorPosition(m_size-1, KeepAnchor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::clear()
|
void BinEditorWidget::clear()
|
||||||
{
|
{
|
||||||
m_baseAddr = 0;
|
m_baseAddr = 0;
|
||||||
m_data.clear();
|
m_data.clear();
|
||||||
@@ -1034,7 +1034,7 @@ void BinEditor::clear()
|
|||||||
viewport()->update();
|
viewport()->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BinEditor::event(QEvent *e)
|
bool BinEditorWidget::event(QEvent *e)
|
||||||
{
|
{
|
||||||
switch (e->type()) {
|
switch (e->type()) {
|
||||||
case QEvent::KeyPress:
|
case QEvent::KeyPress:
|
||||||
@@ -1075,7 +1075,7 @@ bool BinEditor::event(QEvent *e)
|
|||||||
return QAbstractScrollArea::event(e);
|
return QAbstractScrollArea::event(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString BinEditor::toolTip(const QHelpEvent *helpEvent) const
|
QString BinEditorWidget::toolTip(const QHelpEvent *helpEvent) const
|
||||||
{
|
{
|
||||||
// Selection if mouse is in, else 1 byte at cursor
|
// Selection if mouse is in, else 1 byte at cursor
|
||||||
int selStart = selectionStart();
|
int selStart = selectionStart();
|
||||||
@@ -1257,7 +1257,7 @@ QString BinEditor::toolTip(const QHelpEvent *helpEvent) const
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::keyPressEvent(QKeyEvent *e)
|
void BinEditorWidget::keyPressEvent(QKeyEvent *e)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (e == QKeySequence::SelectAll) {
|
if (e == QKeySequence::SelectAll) {
|
||||||
@@ -1356,7 +1356,7 @@ void BinEditor::keyPressEvent(QKeyEvent *e)
|
|||||||
e->accept();
|
e->accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::zoomIn(int range)
|
void BinEditorWidget::zoomIn(int range)
|
||||||
{
|
{
|
||||||
QFont f = font();
|
QFont f = font();
|
||||||
const int newSize = f.pointSize() + range;
|
const int newSize = f.pointSize() + range;
|
||||||
@@ -1366,12 +1366,12 @@ void BinEditor::zoomIn(int range)
|
|||||||
setFont(f);
|
setFont(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::zoomOut(int range)
|
void BinEditorWidget::zoomOut(int range)
|
||||||
{
|
{
|
||||||
zoomIn(-range);
|
zoomIn(-range);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::copy(bool raw)
|
void BinEditorWidget::copy(bool raw)
|
||||||
{
|
{
|
||||||
int selStart = selectionStart();
|
int selStart = selectionStart();
|
||||||
int selEnd = selectionEnd();
|
int selEnd = selectionEnd();
|
||||||
@@ -1400,7 +1400,7 @@ void BinEditor::copy(bool raw)
|
|||||||
QApplication::clipboard()->setText(hexString);
|
QApplication::clipboard()->setText(hexString);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::highlightSearchResults(const QByteArray &pattern, QTextDocument::FindFlags findFlags)
|
void BinEditorWidget::highlightSearchResults(const QByteArray &pattern, QTextDocument::FindFlags findFlags)
|
||||||
{
|
{
|
||||||
if (m_searchPattern == pattern)
|
if (m_searchPattern == pattern)
|
||||||
return;
|
return;
|
||||||
@@ -1412,7 +1412,7 @@ void BinEditor::highlightSearchResults(const QByteArray &pattern, QTextDocument:
|
|||||||
viewport()->update();
|
viewport()->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::changeData(int position, uchar character, bool highNibble)
|
void BinEditorWidget::changeData(int position, uchar character, bool highNibble)
|
||||||
{
|
{
|
||||||
if (!requestDataAt(position))
|
if (!requestDataAt(position))
|
||||||
return;
|
return;
|
||||||
@@ -1444,7 +1444,7 @@ void BinEditor::changeData(int position, uchar character, bool highNibble)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BinEditor::undo()
|
void BinEditorWidget::undo()
|
||||||
{
|
{
|
||||||
if (m_undoStack.isEmpty())
|
if (m_undoStack.isEmpty())
|
||||||
return;
|
return;
|
||||||
@@ -1464,7 +1464,7 @@ void BinEditor::undo()
|
|||||||
emit redoAvailable(true);
|
emit redoAvailable(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::redo()
|
void BinEditorWidget::redo()
|
||||||
{
|
{
|
||||||
if (m_redoStack.isEmpty())
|
if (m_redoStack.isEmpty())
|
||||||
return;
|
return;
|
||||||
@@ -1483,7 +1483,7 @@ void BinEditor::redo()
|
|||||||
emit redoAvailable(false);
|
emit redoAvailable(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::contextMenuEvent(QContextMenuEvent *event)
|
void BinEditorWidget::contextMenuEvent(QContextMenuEvent *event)
|
||||||
{
|
{
|
||||||
const int selStart = selectionStart();
|
const int selStart = selectionStart();
|
||||||
const int byteCount = selectionEnd() - selStart + 1;
|
const int byteCount = selectionEnd() - selStart + 1;
|
||||||
@@ -1545,7 +1545,7 @@ void BinEditor::contextMenuEvent(QContextMenuEvent *event)
|
|||||||
delete contextMenu;
|
delete contextMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::setupJumpToMenuAction(QMenu *menu, QAction *actionHere,
|
void BinEditorWidget::setupJumpToMenuAction(QMenu *menu, QAction *actionHere,
|
||||||
QAction *actionNew, quint64 addr)
|
QAction *actionNew, quint64 addr)
|
||||||
{
|
{
|
||||||
actionHere->setText(tr("Jump to Address 0x%1 in This Window")
|
actionHere->setText(tr("Jump to Address 0x%1 in This Window")
|
||||||
@@ -1558,7 +1558,7 @@ void BinEditor::setupJumpToMenuAction(QMenu *menu, QAction *actionHere,
|
|||||||
actionNew->setEnabled(false);
|
actionNew->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::jumpToAddress(quint64 address)
|
void BinEditorWidget::jumpToAddress(quint64 address)
|
||||||
{
|
{
|
||||||
if (address >= m_baseAddr && address < m_baseAddr + m_size)
|
if (address >= m_baseAddr && address < m_baseAddr + m_size)
|
||||||
setCursorPosition(address - m_baseAddr);
|
setCursorPosition(address - m_baseAddr);
|
||||||
@@ -1566,26 +1566,26 @@ void BinEditor::jumpToAddress(quint64 address)
|
|||||||
emit newRangeRequested(editor(), address);
|
emit newRangeRequested(editor(), address);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::setNewWindowRequestAllowed(bool c)
|
void BinEditorWidget::setNewWindowRequestAllowed(bool c)
|
||||||
{
|
{
|
||||||
m_canRequestNewWindow = c;
|
m_canRequestNewWindow = c;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::updateContents()
|
void BinEditorWidget::updateContents()
|
||||||
{
|
{
|
||||||
m_oldData = m_data;
|
m_oldData = m_data;
|
||||||
m_data.clear();
|
m_data.clear();
|
||||||
setSizes(baseAddress() + cursorPosition(), m_size, m_blockSize);
|
setSizes(baseAddress() + cursorPosition(), m_size, m_blockSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
QPoint BinEditor::offsetToPos(int offset) const
|
QPoint BinEditorWidget::offsetToPos(int offset) const
|
||||||
{
|
{
|
||||||
const int x = m_labelWidth + (offset % m_bytesPerLine) * m_columnWidth;
|
const int x = m_labelWidth + (offset % m_bytesPerLine) * m_columnWidth;
|
||||||
const int y = (offset / m_bytesPerLine - verticalScrollBar()->value()) * m_lineHeight;
|
const int y = (offset / m_bytesPerLine - verticalScrollBar()->value()) * m_lineHeight;
|
||||||
return QPoint(x, y);
|
return QPoint(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::asFloat(int offset, float &value, bool old) const
|
void BinEditorWidget::asFloat(int offset, float &value, bool old) const
|
||||||
{
|
{
|
||||||
value = 0;
|
value = 0;
|
||||||
const QByteArray data = dataMid(offset, sizeof(float), old);
|
const QByteArray data = dataMid(offset, sizeof(float), old);
|
||||||
@@ -1594,7 +1594,7 @@ void BinEditor::asFloat(int offset, float &value, bool old) const
|
|||||||
value = *f;
|
value = *f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::asDouble(int offset, double &value, bool old) const
|
void BinEditorWidget::asDouble(int offset, double &value, bool old) const
|
||||||
{
|
{
|
||||||
value = 0;
|
value = 0;
|
||||||
const QByteArray data = dataMid(offset, sizeof(double), old);
|
const QByteArray data = dataMid(offset, sizeof(double), old);
|
||||||
@@ -1603,7 +1603,7 @@ void BinEditor::asDouble(int offset, double &value, bool old) const
|
|||||||
value = *f;
|
value = *f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::asIntegers(int offset, int count, quint64 &bigEndianValue,
|
void BinEditorWidget::asIntegers(int offset, int count, quint64 &bigEndianValue,
|
||||||
quint64 &littleEndianValue, bool old) const
|
quint64 &littleEndianValue, bool old) const
|
||||||
{
|
{
|
||||||
bigEndianValue = littleEndianValue = 0;
|
bigEndianValue = littleEndianValue = 0;
|
||||||
@@ -1615,12 +1615,12 @@ void BinEditor::asIntegers(int offset, int count, quint64 &bigEndianValue,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BinEditor::isMemoryView() const
|
bool BinEditorWidget::isMemoryView() const
|
||||||
{
|
{
|
||||||
return editor()->property("MemoryView").toBool();
|
return editor()->property("MemoryView").toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::setMarkup(const QList<Markup> &markup)
|
void BinEditorWidget::setMarkup(const QList<Markup> &markup)
|
||||||
{
|
{
|
||||||
m_markup = markup;
|
m_markup = markup;
|
||||||
viewport()->update();
|
viewport()->update();
|
||||||
|
@@ -55,7 +55,7 @@ class FontSettings;
|
|||||||
|
|
||||||
namespace BINEditor {
|
namespace BINEditor {
|
||||||
|
|
||||||
class BinEditor : public QAbstractScrollArea
|
class BinEditorWidget : public QAbstractScrollArea
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(bool modified READ isModified WRITE setModified DESIGNABLE false)
|
Q_PROPERTY(bool modified READ isModified WRITE setModified DESIGNABLE false)
|
||||||
@@ -63,8 +63,8 @@ class BinEditor : public QAbstractScrollArea
|
|||||||
Q_PROPERTY(QList<BINEditor::Markup> markup READ markup WRITE setMarkup DESIGNABLE false)
|
Q_PROPERTY(QList<BINEditor::Markup> markup READ markup WRITE setMarkup DESIGNABLE false)
|
||||||
Q_PROPERTY(bool newWindowRequestAllowed READ newWindowRequestAllowed WRITE setNewWindowRequestAllowed DESIGNABLE false)
|
Q_PROPERTY(bool newWindowRequestAllowed READ newWindowRequestAllowed WRITE setNewWindowRequestAllowed DESIGNABLE false)
|
||||||
public:
|
public:
|
||||||
BinEditor(QWidget *parent = 0);
|
BinEditorWidget(QWidget *parent = 0);
|
||||||
~BinEditor();
|
~BinEditorWidget();
|
||||||
|
|
||||||
quint64 baseAddress() const { return m_baseAddr; }
|
quint64 baseAddress() const { return m_baseAddr; }
|
||||||
|
|
||||||
|
@@ -70,15 +70,17 @@ using namespace BINEditor::Internal;
|
|||||||
class BinEditorFind : public Find::IFindSupport
|
class BinEditorFind : public Find::IFindSupport
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BinEditorFind(BinEditor *editor)
|
BinEditorFind(BinEditorWidget *widget)
|
||||||
{
|
{
|
||||||
m_editor = editor;
|
m_widget = widget;
|
||||||
m_incrementalStartPos = m_contPos = -1;
|
m_incrementalStartPos = m_contPos = -1;
|
||||||
}
|
}
|
||||||
~BinEditorFind() {}
|
~BinEditorFind() {}
|
||||||
|
|
||||||
bool supportsReplace() const { return false; }
|
bool supportsReplace() const { return false; }
|
||||||
|
|
||||||
Find::FindFlags supportedFindFlags() const
|
Find::FindFlags supportedFindFlags() const
|
||||||
{
|
{
|
||||||
return Find::FindBackward | Find::FindCaseSensitively;
|
return Find::FindBackward | Find::FindCaseSensitively;
|
||||||
@@ -91,21 +93,21 @@ public:
|
|||||||
|
|
||||||
virtual void highlightAll(const QString &txt, Find::FindFlags findFlags)
|
virtual void highlightAll(const QString &txt, Find::FindFlags findFlags)
|
||||||
{
|
{
|
||||||
m_editor->highlightSearchResults(txt.toLatin1(), Find::textDocumentFlagsForFindFlags(findFlags));
|
m_widget->highlightSearchResults(txt.toLatin1(), Find::textDocumentFlagsForFindFlags(findFlags));
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearResults() { m_editor->highlightSearchResults(QByteArray()); }
|
void clearResults() { m_widget->highlightSearchResults(QByteArray()); }
|
||||||
QString currentFindString() const { return QString(); }
|
QString currentFindString() const { return QString(); }
|
||||||
QString completedFindString() const { return QString(); }
|
QString completedFindString() const { return QString(); }
|
||||||
|
|
||||||
|
|
||||||
int find(const QByteArray &pattern, int pos, Find::FindFlags findFlags) {
|
int find(const QByteArray &pattern, int pos, Find::FindFlags findFlags) {
|
||||||
if (pattern.isEmpty()) {
|
if (pattern.isEmpty()) {
|
||||||
m_editor->setCursorPosition(pos);
|
m_widget->setCursorPosition(pos);
|
||||||
return pos;
|
return pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_editor->find(pattern, pos, Find::textDocumentFlagsForFindFlags(findFlags));
|
return m_widget->find(pattern, pos, Find::textDocumentFlagsForFindFlags(findFlags));
|
||||||
}
|
}
|
||||||
|
|
||||||
Result findIncremental(const QString &txt, Find::FindFlags findFlags) {
|
Result findIncremental(const QString &txt, Find::FindFlags findFlags) {
|
||||||
@@ -114,25 +116,25 @@ public:
|
|||||||
resetIncrementalSearch(); // Because we don't search for nibbles.
|
resetIncrementalSearch(); // Because we don't search for nibbles.
|
||||||
m_lastPattern = pattern;
|
m_lastPattern = pattern;
|
||||||
if (m_incrementalStartPos < 0)
|
if (m_incrementalStartPos < 0)
|
||||||
m_incrementalStartPos = m_editor->selectionStart();
|
m_incrementalStartPos = m_widget->selectionStart();
|
||||||
if (m_contPos == -1)
|
if (m_contPos == -1)
|
||||||
m_contPos = m_incrementalStartPos;
|
m_contPos = m_incrementalStartPos;
|
||||||
int found = find(pattern, m_contPos, findFlags);
|
int found = find(pattern, m_contPos, findFlags);
|
||||||
Result result;
|
Result result;
|
||||||
if (found >= 0) {
|
if (found >= 0) {
|
||||||
result = Found;
|
result = Found;
|
||||||
m_editor->highlightSearchResults(pattern, Find::textDocumentFlagsForFindFlags(findFlags));
|
m_widget->highlightSearchResults(pattern, Find::textDocumentFlagsForFindFlags(findFlags));
|
||||||
m_contPos = -1;
|
m_contPos = -1;
|
||||||
} else {
|
} else {
|
||||||
if (found == -2) {
|
if (found == -2) {
|
||||||
result = NotYetFound;
|
result = NotYetFound;
|
||||||
m_contPos +=
|
m_contPos +=
|
||||||
findFlags & Find::FindBackward
|
findFlags & Find::FindBackward
|
||||||
? -BinEditor::SearchStride : BinEditor::SearchStride;
|
? -BinEditorWidget::SearchStride : BinEditorWidget::SearchStride;
|
||||||
} else {
|
} else {
|
||||||
result = NotFound;
|
result = NotFound;
|
||||||
m_contPos = -1;
|
m_contPos = -1;
|
||||||
m_editor->highlightSearchResults(QByteArray(), 0);
|
m_widget->highlightSearchResults(QByteArray(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -142,9 +144,9 @@ public:
|
|||||||
QByteArray pattern = txt.toLatin1();
|
QByteArray pattern = txt.toLatin1();
|
||||||
bool wasReset = (m_incrementalStartPos < 0);
|
bool wasReset = (m_incrementalStartPos < 0);
|
||||||
if (m_contPos == -1) {
|
if (m_contPos == -1) {
|
||||||
m_contPos = m_editor->cursorPosition();
|
m_contPos = m_widget->cursorPosition();
|
||||||
if (findFlags & Find::FindBackward)
|
if (findFlags & Find::FindBackward)
|
||||||
m_contPos = m_editor->selectionStart()-1;
|
m_contPos = m_widget->selectionStart()-1;
|
||||||
}
|
}
|
||||||
int found = find(pattern, m_contPos, findFlags);
|
int found = find(pattern, m_contPos, findFlags);
|
||||||
Result result;
|
Result result;
|
||||||
@@ -153,11 +155,11 @@ public:
|
|||||||
m_incrementalStartPos = found;
|
m_incrementalStartPos = found;
|
||||||
m_contPos = -1;
|
m_contPos = -1;
|
||||||
if (wasReset)
|
if (wasReset)
|
||||||
m_editor->highlightSearchResults(pattern, Find::textDocumentFlagsForFindFlags(findFlags));
|
m_widget->highlightSearchResults(pattern, Find::textDocumentFlagsForFindFlags(findFlags));
|
||||||
} else if (found == -2) {
|
} else if (found == -2) {
|
||||||
result = NotYetFound;
|
result = NotYetFound;
|
||||||
m_contPos += findFlags & Find::FindBackward
|
m_contPos += findFlags & Find::FindBackward
|
||||||
? -BinEditor::SearchStride : BinEditor::SearchStride;
|
? -BinEditorWidget::SearchStride : BinEditorWidget::SearchStride;
|
||||||
} else {
|
} else {
|
||||||
result = NotFound;
|
result = NotFound;
|
||||||
m_contPos = -1;
|
m_contPos = -1;
|
||||||
@@ -167,7 +169,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BinEditor *m_editor;
|
BinEditorWidget *m_widget;
|
||||||
int m_incrementalStartPos;
|
int m_incrementalStartPos;
|
||||||
int m_contPos; // Only valid if last result was NotYetFound.
|
int m_contPos; // Only valid if last result was NotYetFound.
|
||||||
QByteArray m_lastPattern;
|
QByteArray m_lastPattern;
|
||||||
@@ -178,13 +180,13 @@ class BinEditorDocument : public Core::IDocument
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
BinEditorDocument(BinEditor *parent) :
|
BinEditorDocument(BinEditorWidget *parent) :
|
||||||
Core::IDocument(parent)
|
Core::IDocument(parent)
|
||||||
{
|
{
|
||||||
m_editor = parent;
|
m_widget = parent;
|
||||||
connect(m_editor, SIGNAL(dataRequested(Core::IEditor*,quint64)),
|
connect(m_widget, SIGNAL(dataRequested(Core::IEditor*,quint64)),
|
||||||
this, SLOT(provideData(Core::IEditor*,quint64)));
|
this, SLOT(provideData(Core::IEditor*,quint64)));
|
||||||
connect(m_editor, SIGNAL(newRangeRequested(Core::IEditor*,quint64)),
|
connect(m_widget, SIGNAL(newRangeRequested(Core::IEditor*,quint64)),
|
||||||
this, SLOT(provideNewRange(Core::IEditor*,quint64)));
|
this, SLOT(provideNewRange(Core::IEditor*,quint64)));
|
||||||
}
|
}
|
||||||
~BinEditorDocument() {}
|
~BinEditorDocument() {}
|
||||||
@@ -198,9 +200,9 @@ public:
|
|||||||
QTC_ASSERT(!autoSave, return true); // bineditor does not support autosave - it would be a bit expensive
|
QTC_ASSERT(!autoSave, return true); // bineditor does not support autosave - it would be a bit expensive
|
||||||
const QString fileNameToUse
|
const QString fileNameToUse
|
||||||
= fileName.isEmpty() ? m_fileName : fileName;
|
= fileName.isEmpty() ? m_fileName : fileName;
|
||||||
if (m_editor->save(errorString, m_fileName, fileNameToUse)) {
|
if (m_widget->save(errorString, m_fileName, fileNameToUse)) {
|
||||||
m_fileName = fileNameToUse;
|
m_fileName = fileNameToUse;
|
||||||
m_editor->editor()->setDisplayName(QFileInfo(fileNameToUse).fileName());
|
m_widget->editor()->setDisplayName(QFileInfo(fileNameToUse).fileName());
|
||||||
emit changed();
|
emit changed();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
@@ -210,7 +212,7 @@ public:
|
|||||||
|
|
||||||
void rename(const QString &newName) {
|
void rename(const QString &newName) {
|
||||||
m_fileName = newName;
|
m_fileName = newName;
|
||||||
m_editor->editor()->setDisplayName(QFileInfo(fileName()).fileName());
|
m_widget->editor()->setDisplayName(QFileInfo(fileName()).fileName());
|
||||||
emit changed();
|
emit changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,8 +232,8 @@ public:
|
|||||||
if (file.open(QIODevice::ReadOnly)) {
|
if (file.open(QIODevice::ReadOnly)) {
|
||||||
file.close();
|
file.close();
|
||||||
m_fileName = fileName;
|
m_fileName = fileName;
|
||||||
m_editor->setSizes(offset, file.size());
|
m_widget->setSizes(offset, file.size());
|
||||||
m_editor->editor()->setDisplayName(QFileInfo(fileName).fileName());
|
m_widget->editor()->setDisplayName(QFileInfo(fileName).fileName());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
QString errStr = tr("Cannot open %1: %2").arg(
|
QString errStr = tr("Cannot open %1: %2").arg(
|
||||||
@@ -249,14 +251,14 @@ private slots:
|
|||||||
return;
|
return;
|
||||||
QFile file(m_fileName);
|
QFile file(m_fileName);
|
||||||
if (file.open(QIODevice::ReadOnly)) {
|
if (file.open(QIODevice::ReadOnly)) {
|
||||||
int blockSize = m_editor->dataBlockSize();
|
int blockSize = m_widget->dataBlockSize();
|
||||||
file.seek(block * blockSize);
|
file.seek(block * blockSize);
|
||||||
QByteArray data = file.read(blockSize);
|
QByteArray data = file.read(blockSize);
|
||||||
file.close();
|
file.close();
|
||||||
const int dataSize = data.size();
|
const int dataSize = data.size();
|
||||||
if (dataSize != blockSize)
|
if (dataSize != blockSize)
|
||||||
data += QByteArray(blockSize - dataSize, 0);
|
data += QByteArray(blockSize - dataSize, 0);
|
||||||
m_editor->addData(block, data);
|
m_widget->addData(block, data);
|
||||||
} else {
|
} else {
|
||||||
QMessageBox::critical(Core::ICore::mainWindow(), tr("File Error"),
|
QMessageBox::critical(Core::ICore::mainWindow(), tr("File Error"),
|
||||||
tr("Cannot open %1: %2").arg(
|
tr("Cannot open %1: %2").arg(
|
||||||
@@ -280,10 +282,10 @@ public:
|
|||||||
|
|
||||||
QString suggestedFileName() const { return QString(); }
|
QString suggestedFileName() const { return QString(); }
|
||||||
|
|
||||||
bool isModified() const { return m_editor->isMemoryView() ? false : m_editor->isModified(); }
|
bool isModified() const { return m_widget->isMemoryView() ? false : m_widget->isModified(); }
|
||||||
|
|
||||||
bool isFileReadOnly() const {
|
bool isFileReadOnly() const {
|
||||||
if (m_editor->isMemoryView() || m_fileName.isEmpty())
|
if (m_widget->isMemoryView() || m_fileName.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
const QFileInfo fi(m_fileName);
|
const QFileInfo fi(m_fileName);
|
||||||
return !fi.isWritable();
|
return !fi.isWritable();
|
||||||
@@ -306,19 +308,19 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BinEditor *m_editor;
|
BinEditorWidget *m_widget;
|
||||||
QString m_fileName;
|
QString m_fileName;
|
||||||
};
|
};
|
||||||
|
|
||||||
class BinEditorInterface : public Core::IEditor
|
class BinEditor : public Core::IEditor
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
BinEditorInterface(BinEditor *editor)
|
BinEditor(BinEditorWidget *widget)
|
||||||
{
|
{
|
||||||
setWidget(editor);
|
setWidget(widget);
|
||||||
m_editor = editor;
|
m_widget = widget;
|
||||||
m_file = new BinEditorDocument(m_editor);
|
m_file = new BinEditorDocument(m_widget);
|
||||||
m_context.add(Core::Constants::K_DEFAULT_BINARY_EDITOR_ID);
|
m_context.add(Core::Constants::K_DEFAULT_BINARY_EDITOR_ID);
|
||||||
m_context.add(Constants::C_BINEDITOR);
|
m_context.add(Constants::C_BINEDITOR);
|
||||||
m_addressEdit = new QLineEdit;
|
m_addressEdit = new QLineEdit;
|
||||||
@@ -339,19 +341,19 @@ public:
|
|||||||
m_toolBar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
|
m_toolBar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
|
||||||
m_toolBar->addWidget(w);
|
m_toolBar->addWidget(w);
|
||||||
|
|
||||||
connect(m_editor, SIGNAL(cursorPositionChanged(int)), this,
|
connect(m_widget, SIGNAL(cursorPositionChanged(int)), this,
|
||||||
SLOT(updateCursorPosition(int)));
|
SLOT(updateCursorPosition(int)));
|
||||||
connect(m_file, SIGNAL(changed()), this, SIGNAL(changed()));
|
connect(m_file, SIGNAL(changed()), this, SIGNAL(changed()));
|
||||||
connect(m_addressEdit, SIGNAL(editingFinished()), this,
|
connect(m_addressEdit, SIGNAL(editingFinished()), this,
|
||||||
SLOT(jumpToAddress()));
|
SLOT(jumpToAddress()));
|
||||||
updateCursorPosition(m_editor->cursorPosition());
|
updateCursorPosition(m_widget->cursorPosition());
|
||||||
}
|
}
|
||||||
~BinEditorInterface() {
|
~BinEditor() {
|
||||||
delete m_editor;
|
delete m_widget;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool createNew(const QString & /* contents */ = QString()) {
|
bool createNew(const QString & /* contents */ = QString()) {
|
||||||
m_editor->clear();
|
m_widget->clear();
|
||||||
m_file->setFilename(QString());
|
m_file->setFilename(QString());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -366,20 +368,20 @@ public:
|
|||||||
|
|
||||||
QWidget *toolBar() { return m_toolBar; }
|
QWidget *toolBar() { return m_toolBar; }
|
||||||
|
|
||||||
bool isTemporary() const { return m_editor->isMemoryView(); }
|
bool isTemporary() const { return m_widget->isMemoryView(); }
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void updateCursorPosition(int position) {
|
void updateCursorPosition(int position) {
|
||||||
m_addressEdit->setText(QString::number(m_editor->baseAddress() + position, 16));
|
m_addressEdit->setText(QString::number(m_widget->baseAddress() + position, 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
void jumpToAddress() {
|
void jumpToAddress() {
|
||||||
m_editor->jumpToAddress(m_addressEdit->text().toULongLong(0, 16));
|
m_widget->jumpToAddress(m_addressEdit->text().toULongLong(0, 16));
|
||||||
updateCursorPosition(m_editor->cursorPosition());
|
updateCursorPosition(m_widget->cursorPosition());
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BinEditor *m_editor;
|
BinEditorWidget *m_widget;
|
||||||
QString m_displayName;
|
QString m_displayName;
|
||||||
BinEditorDocument *m_file;
|
BinEditorDocument *m_file;
|
||||||
QToolBar *m_toolBar;
|
QToolBar *m_toolBar;
|
||||||
@@ -408,9 +410,9 @@ QString BinEditorFactory::displayName() const
|
|||||||
|
|
||||||
Core::IEditor *BinEditorFactory::createEditor(QWidget *parent)
|
Core::IEditor *BinEditorFactory::createEditor(QWidget *parent)
|
||||||
{
|
{
|
||||||
BinEditor *editor = new BinEditor(parent);
|
BinEditorWidget *widget = new BinEditorWidget(parent);
|
||||||
m_owner->initializeEditor(editor);
|
m_owner->initializeEditor(widget);
|
||||||
return editor->editor();
|
return widget->editor();
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList BinEditorFactory::mimeTypes() const
|
QStringList BinEditorFactory::mimeTypes() const
|
||||||
@@ -433,7 +435,7 @@ BinEditorWidgetFactory::BinEditorWidgetFactory(QObject *parent) :
|
|||||||
|
|
||||||
QWidget *BinEditorWidgetFactory::createWidget(QWidget *parent)
|
QWidget *BinEditorWidgetFactory::createWidget(QWidget *parent)
|
||||||
{
|
{
|
||||||
return new BinEditor(parent);
|
return new BinEditorWidget(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////// BinEditorPlugin //////////////////////////////////
|
///////////////////////////////// BinEditorPlugin //////////////////////////////////
|
||||||
@@ -467,11 +469,11 @@ QAction *BinEditorPlugin::registerNewAction(Core::Id id,
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditorPlugin::initializeEditor(BinEditor *editor)
|
void BinEditorPlugin::initializeEditor(BinEditorWidget *widget)
|
||||||
{
|
{
|
||||||
BinEditorInterface *editorInterface = new BinEditorInterface(editor);
|
BinEditor *editor = new BinEditor(widget);
|
||||||
QObject::connect(editor, SIGNAL(modificationChanged(bool)), editorInterface, SIGNAL(changed()));
|
QObject::connect(widget, SIGNAL(modificationChanged(bool)), editor, SIGNAL(changed()));
|
||||||
editor->setEditor(editorInterface);
|
widget->setEditor(editor);
|
||||||
|
|
||||||
m_context.add(Constants::C_BINEDITOR);
|
m_context.add(Constants::C_BINEDITOR);
|
||||||
if (!m_undoAction) {
|
if (!m_undoAction) {
|
||||||
@@ -483,17 +485,17 @@ void BinEditorPlugin::initializeEditor(BinEditor *editor)
|
|||||||
|
|
||||||
// Font settings
|
// Font settings
|
||||||
TextEditor::TextEditorSettings *settings = TextEditor::TextEditorSettings::instance();
|
TextEditor::TextEditorSettings *settings = TextEditor::TextEditorSettings::instance();
|
||||||
editor->setFontSettings(settings->fontSettings());
|
widget->setFontSettings(settings->fontSettings());
|
||||||
connect(settings, SIGNAL(fontSettingsChanged(TextEditor::FontSettings)),
|
connect(settings, SIGNAL(fontSettingsChanged(TextEditor::FontSettings)),
|
||||||
editor, SLOT(setFontSettings(TextEditor::FontSettings)));
|
widget, SLOT(setFontSettings(TextEditor::FontSettings)));
|
||||||
|
|
||||||
QObject::connect(editor, SIGNAL(undoAvailable(bool)), this, SLOT(updateActions()));
|
QObject::connect(widget, SIGNAL(undoAvailable(bool)), this, SLOT(updateActions()));
|
||||||
QObject::connect(editor, SIGNAL(redoAvailable(bool)), this, SLOT(updateActions()));
|
QObject::connect(widget, SIGNAL(redoAvailable(bool)), this, SLOT(updateActions()));
|
||||||
|
|
||||||
Aggregation::Aggregate *aggregate = new Aggregation::Aggregate;
|
Aggregation::Aggregate *aggregate = new Aggregation::Aggregate;
|
||||||
BinEditorFind *binEditorFind = new BinEditorFind(editor);
|
BinEditorFind *binEditorFind = new BinEditorFind(widget);
|
||||||
aggregate->add(binEditorFind);
|
aggregate->add(binEditorFind);
|
||||||
aggregate->add(editor);
|
aggregate->add(widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BinEditorPlugin::initialize(const QStringList &arguments, QString *errorMessage)
|
bool BinEditorPlugin::initialize(const QStringList &arguments, QString *errorMessage)
|
||||||
@@ -515,9 +517,9 @@ void BinEditorPlugin::extensionsInitialized()
|
|||||||
|
|
||||||
void BinEditorPlugin::updateCurrentEditor(Core::IEditor *editor)
|
void BinEditorPlugin::updateCurrentEditor(Core::IEditor *editor)
|
||||||
{
|
{
|
||||||
BinEditor *binEditor = 0;
|
BinEditorWidget *binEditor = 0;
|
||||||
if (editor)
|
if (editor)
|
||||||
binEditor = qobject_cast<BinEditor *>(editor->widget());
|
binEditor = qobject_cast<BinEditorWidget *>(editor->widget());
|
||||||
if (m_currentEditor == binEditor)
|
if (m_currentEditor == binEditor)
|
||||||
return;
|
return;
|
||||||
m_currentEditor = binEditor;
|
m_currentEditor = binEditor;
|
||||||
|
@@ -40,7 +40,7 @@
|
|||||||
#include <QAction>
|
#include <QAction>
|
||||||
|
|
||||||
namespace BINEditor {
|
namespace BINEditor {
|
||||||
class BinEditor;
|
class BinEditorWidget;
|
||||||
|
|
||||||
class BinEditorWidgetFactory : public QObject
|
class BinEditorWidgetFactory : public QObject
|
||||||
{
|
{
|
||||||
@@ -67,7 +67,7 @@ public:
|
|||||||
void extensionsInitialized();
|
void extensionsInitialized();
|
||||||
|
|
||||||
// Connect editor to settings changed signals.
|
// Connect editor to settings changed signals.
|
||||||
void initializeEditor(BinEditor *editor);
|
void initializeEditor(BinEditorWidget *editor);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void undoAction();
|
void undoAction();
|
||||||
@@ -92,7 +92,7 @@ private:
|
|||||||
Core::IEditor *createEditor(QWidget *parent);
|
Core::IEditor *createEditor(QWidget *parent);
|
||||||
|
|
||||||
BinEditorFactory *m_factory;
|
BinEditorFactory *m_factory;
|
||||||
QPointer<BinEditor> m_currentEditor;
|
QPointer<BinEditorWidget> m_currentEditor;
|
||||||
};
|
};
|
||||||
|
|
||||||
class BinEditorFactory : public Core::IEditorFactory
|
class BinEditorFactory : public Core::IEditorFactory
|
||||||
|
Reference in New Issue
Block a user