static void GdbMiValueToItem(QStandardItem *item, const GdbMiValue &value) { switch (value.type()) { case GdbMiValue::Invalid: item->appendRow(new QStandardItem("Invalid")); break; case GdbMiValue::Const: if (value.name().isEmpty()) { item->appendRow(new QStandardItem(QString(value.data()))); } else { item->appendRow(new QStandardItem(QString(value.name()+"="+value.data()))); } break; case GdbMiValue::List: { QStandardItem *in = new QStandardItem(QString(value.name())); item->appendRow(in); for (int i = 0; i < value.childCount(); i++) { QStandardItem *iv = new QStandardItem(QString("[%1]").arg(i)); in->appendRow(iv); GdbMiValueToItem(iv,value.childAt(i)); } break; } case GdbMiValue::Tuple: { QStandardItem *iv = item; if (!value.name().isEmpty()) { iv = new QStandardItem(QString(value.name())); item->appendRow(iv); } foreach (const GdbMiValue &v, value.children()) { GdbMiValueToItem(iv,v); } break; } } }
void GdbDebugger::handleAsyncClass(const QByteArray &asyncClass, const GdbMiValue &result) { m_asyncItem->removeRows(0,m_asyncItem->rowCount()); m_asyncItem->setText(asyncClass); //QStandardItem *item = new QStandardItem(QString(asyncClass)); GdbMiValueToItem(m_asyncItem,result); //m_asyncModel->clear(); //m_asyncModel->appendRow(item); if (asyncClass == "stopped") { handleStopped(result); } else if (asyncClass == "library-loaded") { handleLibrary(result); } emit setExpand(LiteApi::ASYNC_MODEL,m_asyncModel->indexFromItem(m_asyncItem),true); }