diff --git a/piqt_utils/piintrospector/piintrospector.cpp b/piqt_utils/piintrospector/piintrospector.cpp index 8ff0db8..4408bbe 100644 --- a/piqt_utils/piintrospector/piintrospector.cpp +++ b/piqt_utils/piintrospector/piintrospector.cpp @@ -7,31 +7,6 @@ #include "pichunkstream.h" #include "ccm_piintrospector.h" -#include -const QString demangle(const char * name) { - int status = -4; - char * res = abi::__cxa_demangle(name, NULL, NULL, &status); - QString ret((status == 0) ? res : name); - free(res); - return ret; -} - - -enum ColumnContainers { - ccType, - ccCount, - ccItems, - ccBytesAllocated, - ccBytesUsed, -}; - -enum ColumnObjects { - coClassName, - coName, - coParents, - coQueuedEvents, -}; - QPIIntrospector::QPIIntrospector(QWidget * parent): EMainWindow(parent), peer("__introspection_client__") { setupUi(this); @@ -48,16 +23,19 @@ QPIIntrospector::QPIIntrospector(QWidget * parent): EMainWindow(parent), peer("_ CONNECTU(&peer, peerConnectedEvent, this, reqProcPIEvents); CONNECTU(&peer, peerDisconnectedEvent, this, reqProcPIEvents); CONNECTU(&peer, dataReceivedEvent, this, reqProcPIEvents); + session.addEntry(this); + session.addEntry(tabWidgetMain); PICodeInfo::EnumInfo * ei = PICodeInfo::enumsInfo->value("PIIntrospection::InfoTypes"); if (ei) { piForeachC (PICodeInfo::EnumeratorInfo & e, ei->members) { QCheckBox * cb = new QCheckBox(PI2QString(e.name.mid(2))); + cb->setObjectName(QString("checkRequest%1").arg(e.value)); cb->setProperty("__value__", e.value); layoutRequestFlags->addWidget(cb); + session.addEntry(cb); } } //startTimer(100); - session.addEntry(this); session.load(); peer.start(); } @@ -123,53 +101,13 @@ void QPIIntrospector::showInfo(const PIIntrospection::ProcessInfo & info) { } -void QPIIntrospector::showContainers(const PIMap & data, const PIMap & typenames) { - int vpos = treeContainers->verticalScrollBar()->value(); - treeContainers->clear(); - for (auto i = data.constBegin(); i != data.constEnd(); ++i) { - QTreeWidgetItem * ti = new QTreeWidgetItem(); - ti->setText(ccType, demangle(typenames.value(i.key(), PIString::fromNumber(i.key())).dataAscii())); - ti->setText(ccCount, QString::number(i.value().count)); - ti->setText(ccItems, QString::number(i.value().items)); - ti->setText(ccBytesAllocated, PI2QString(PIString::readableSize(i.value().bytes_allocated))); - ti->setText(ccBytesUsed, PI2QString(PIString::readableSize(i.value().bytes_used))); - treeContainers->addTopLevelItem(ti); - } - treeContainers->verticalScrollBar()->setValue(vpos); -} - - -void QPIIntrospector::showObjects(const PIVector & objects) { - QHash stat; - - int vpos = treeObjects->verticalScrollBar()->value(); - treeObjects->clear(); - piForeachC (PIIntrospection::ObjectInfo & i, objects) { - stat[PI2QString(i.classname)]++; - QTreeWidgetItem * ti = new QTreeWidgetItem(); - ti->setText(coClassName, PI2QString(i.classname)); - ti->setText(coName, PI2QString(i.name)); - ti->setText(coParents, PI2QString(i.parents.join(":"))); - ti->setText(coQueuedEvents, QString::number(i.queued_events)); - treeObjects->addTopLevelItem(ti); - } - treeObjects->verticalScrollBar()->setValue(vpos); - - vpos = treeObjectsStat->verticalScrollBar()->value(); - treeObjectsStat->clear(); - for (auto i = stat.constBegin(); i != stat.constEnd(); ++i) { - QTreeWidgetItem * ti = new QTreeWidgetItem(); - ti->setText(0, i.key()); - ti->setText(1, QString::number(i.value())); - treeObjectsStat->addTopLevelItem(ti); - } - treeObjectsStat->verticalScrollBar()->setValue(vpos); -} - - void QPIIntrospector::on_listApp_currentRowChanged(int r) { - if (r < 0) cur_server.clear(); - else cur_server = Q2PIString(listApp->item(r)->text()); + PIString cs; + if (r < 0) cs.clear(); + else cs = Q2PIString(listApp->item(r)->text()); + if (cur_server != cs) + widgetContainers->clear(); + cur_server = cs; } @@ -195,13 +133,13 @@ void QPIIntrospector::peerReceived(const PIString & from, const PIByteArray & da PIMap data; PIMap typenames; PIIntrospection::unpackContainers(pba, data, typenames); - showContainers(data, typenames); + widgetContainers->showContainers(data, typenames); } break; case 4: { cs.get(pba); PIVector objects; PIIntrospection::unpackObjects(pba, objects); - showObjects(objects); + widgetObjects->showObjects(objects); } break; default: break; } diff --git a/piqt_utils/piintrospector/piintrospector.h b/piqt_utils/piintrospector/piintrospector.h index 9162f32..8056876 100644 --- a/piqt_utils/piintrospector/piintrospector.h +++ b/piqt_utils/piintrospector/piintrospector.h @@ -25,8 +25,6 @@ protected: void buildDumpSection(QTreeWidgetItem * pi, PIString & str); void showInfo(const PIIntrospection::ProcessInfo & info); - void showContainers(const PIMap & data, const PIMap & typenames); - void showObjects(const PIVector & objects); EVENT_HANDLER(void, reqProcPIEvents) {QMetaObject::invokeMethod(this, "procPIEvents", Qt::QueuedConnection);} diff --git a/piqt_utils/piintrospector/piintrospector.ui b/piqt_utils/piintrospector/piintrospector.ui index b3335b5..ecd5901 100644 --- a/piqt_utils/piintrospector/piintrospector.ui +++ b/piqt_utils/piintrospector/piintrospector.ui @@ -122,9 +122,9 @@ - + - 2 + 1 @@ -149,39 +149,7 @@ - - - QAbstractItemView::NoEditTriggers - - - QAbstractItemView::ScrollPerPixel - - - - type - - - - - count - - - - - items - - - - - bytes_allocated - - - - - bytes_used - - - + @@ -191,75 +159,7 @@ - - - 1 - - - - List - - - - - - QAbstractItemView::NoEditTriggers - - - QAbstractItemView::ScrollPerPixel - - - - class - - - - - name - - - - - parents - - - - - queued_events - - - - - - - - - Statictic - - - - - - QAbstractItemView::NoEditTriggers - - - QAbstractItemView::ScrollPerPixel - - - - class - - - - - count - - - - - - - + @@ -277,6 +177,20 @@ + + + ObjectsView + QWidget +
objects_view.h
+ 1 +
+ + ContainersView + QWidget +
containers_view.h
+ 1 +
+