summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/registerhandler.cpp
diff options
context:
space:
mode:
authorhjk <qtc-committer@nokia.com>2009-08-18 08:34:48 +0200
committerhjk <qtc-committer@nokia.com>2009-08-18 08:37:53 +0200
commit1e7cee620b5d47b11eeb85c74dc772578af16124 (patch)
tree754ef9694946f2b6d0b8818079b19466e1971987 /src/plugins/debugger/registerhandler.cpp
parentcde2b658a7d28c7233617eb45e0edff7c69433ab (diff)
downloadqt-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.cpp31
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 &reg = 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();
}