diff options
author | hjk <qtc-committer@nokia.com> | 2009-08-18 08:34:48 +0200 |
---|---|---|
committer | hjk <qtc-committer@nokia.com> | 2009-08-18 08:37:53 +0200 |
commit | 1e7cee620b5d47b11eeb85c74dc772578af16124 (patch) | |
tree | 754ef9694946f2b6d0b8818079b19466e1971987 /src/plugins/debugger/registerhandler.cpp | |
parent | cde2b658a7d28c7233617eb45e0edff7c69433ab (diff) | |
download | qt-creator-1e7cee620b5d47b11eeb85c74dc772578af16124.tar.gz |
debugger: make register contents editable (gdb only for now)
Diffstat (limited to 'src/plugins/debugger/registerhandler.cpp')
-rw-r--r-- | src/plugins/debugger/registerhandler.cpp | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/plugins/debugger/registerhandler.cpp b/src/plugins/debugger/registerhandler.cpp index 2cc7772c88..6419bbf2b8 100644 --- a/src/plugins/debugger/registerhandler.cpp +++ b/src/plugins/debugger/registerhandler.cpp @@ -50,8 +50,9 @@ using namespace Debugger::Constants; ////////////////////////////////////////////////////////////////// RegisterHandler::RegisterHandler(QObject *parent) - : QAbstractTableModel(parent), m_base(16) + : QAbstractTableModel(parent) { + setNumberBase(16); } int RegisterHandler::rowCount(const QModelIndex &parent) const @@ -68,7 +69,7 @@ QVariant RegisterHandler::data(const QModelIndex &index, int role) const { static const QVariant red = QColor(200, 0, 0); - if (role == Qt::UserRole) + if (role == RegisterNumberBaseRole) return m_base; if (!index.isValid() || index.row() >= m_registers.size()) @@ -76,7 +77,7 @@ QVariant RegisterHandler::data(const QModelIndex &index, int role) const const Register ® = m_registers.at(index.row()); - if (role == Qt::UserRole + 1) { + if (role == RegisterAddressRole) { // return some address associated with the register bool ok = true; qulonglong value = reg.value.toULongLong(&ok, 0); @@ -90,7 +91,8 @@ QVariant RegisterHandler::data(const QModelIndex &index, int role) const case 1: { bool ok = true; qulonglong value = reg.value.toULongLong(&ok, 0); - return ok ? padding + QString::number(value, m_base) + padding : reg.value; + QString res = ok ? QString::number(value, m_base) : reg.value; + return QString(m_strlen - res.size(), QLatin1Char(' ')) + res; } } } @@ -116,6 +118,26 @@ QVariant RegisterHandler::headerData(int section, Qt::Orientation orientation, return QVariant(); } +Qt::ItemFlags RegisterHandler::flags(const QModelIndex &idx) const +{ + using namespace Qt; + + if (!idx.isValid()) + return ItemFlags(); + + static const ItemFlags notEditable = + ItemIsSelectable + | ItemIsDragEnabled + | ItemIsDropEnabled + | ItemIsEnabled; + + static const ItemFlags editable = notEditable | ItemIsEditable; + + if (idx.column() == 1) + return editable; // locals and watcher values are editable + return notEditable; +} + void RegisterHandler::removeAll() { m_registers.clear(); @@ -141,5 +163,6 @@ QList<Register> RegisterHandler::registers() const void RegisterHandler::setNumberBase(int base) { m_base = base; + m_strlen = (base == 2 ? 64 : base == 8 ? 32 : base == 10 ? 26 : 16); emit reset(); } |