diff --git a/piqt_utils/piconnedit/piconnedit_main.cpp b/piqt_utils/piconnedit/piconnedit_main.cpp index 27c6e65..f8d3f70 100644 --- a/piqt_utils/piconnedit/piconnedit_main.cpp +++ b/piqt_utils/piconnedit/piconnedit_main.cpp @@ -3,9 +3,11 @@ #include #include #include +#include int main(int argc, char * argv[]) { + PIINTROSPECTION_START QApplication a(argc, argv); #if QT_VERSION >= 0x050000 a.setAttribute(Qt::AA_UseHighDpiPixmaps, true); diff --git a/piqt_utils/piintrospector/CMakeLists.txt b/piqt_utils/piintrospector/CMakeLists.txt index 7cfc432..b1eba8a 100644 --- a/piqt_utils/piintrospector/CMakeLists.txt +++ b/piqt_utils/piintrospector/CMakeLists.txt @@ -1,8 +1,9 @@ project(piintrospector) file(GLOB SRC "*.h" "*.cpp" "*.ui" "*.qrc" "lang/*.ts") +pip_code_model(CCM "../../pip/src_main/introspection/piintrospection_server_p.h" OPTIONS "-DPIP_EXPORT" "-Es") find_qt(${QtVersions} Core Gui) qt_wrap(${SRC} HDRS out_HDR CPPS out_CPP QMS out_QM) -qt_add_executable(${PROJECT_NAME} WIN32 out_CPP) +qt_add_executable(${PROJECT_NAME} WIN32 out_CPP CCM) qt_target_link_libraries(${PROJECT_NAME} pip qad_utils qad_widgets qad_application piqt_utils) message(STATUS "Building ${PROJECT_NAME}") if(LIB) diff --git a/piqt_utils/piintrospector/piintrospector.cpp b/piqt_utils/piintrospector/piintrospector.cpp index e27832d..8ff0db8 100644 --- a/piqt_utils/piintrospector/piintrospector.cpp +++ b/piqt_utils/piintrospector/piintrospector.cpp @@ -1,10 +1,11 @@ #include "piintrospector.h" +#include +#include #include "pifile.h" #include "pitime.h" #include "pidir.h" #include "pichunkstream.h" -#include -#include +#include "ccm_piintrospector.h" #include const QString demangle(const char * name) { @@ -34,6 +35,7 @@ enum ColumnObjects { QPIIntrospector::QPIIntrospector(QWidget * parent): EMainWindow(parent), peer("__introspection_client__") { setupUi(this); + request_timer = 0; session.setFile("qpiintrospector_session.conf"); #if QT_VERSION >= 0x050000 //treeContainers->header()->setSectionResizeMode(QHeaderView::ResizeToContents); @@ -46,6 +48,14 @@ QPIIntrospector::QPIIntrospector(QWidget * parent): EMainWindow(parent), peer("_ CONNECTU(&peer, peerConnectedEvent, this, reqProcPIEvents); CONNECTU(&peer, peerDisconnectedEvent, this, reqProcPIEvents); CONNECTU(&peer, dataReceivedEvent, this, reqProcPIEvents); + 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->setProperty("__value__", e.value); + layoutRequestFlags->addWidget(cb); + } + } //startTimer(100); session.addEntry(this); session.load(); @@ -71,7 +81,9 @@ void QPIIntrospector::changeEvent(QEvent * e) { } -void QPIIntrospector::timerEvent(QTimerEvent * ) { +void QPIIntrospector::timerEvent(QTimerEvent * e) { + if (e->timerId() == request_timer) + buttonRequest->click(); } @@ -88,6 +100,14 @@ void QPIIntrospector::buildTree(QByteArray d) { } +void QPIIntrospector::procRequestTimer() { + if (request_timer != 0) killTimer(request_timer); + request_timer = 0; + if (!checkRequestTimer->isChecked()) return; + request_timer = startTimer(1000 / spinRequestTimerHz->value()); +} + + void QPIIntrospector::buildDumpSection(QTreeWidgetItem * pi, PIString & str) { } @@ -203,3 +223,18 @@ void QPIIntrospector::peersChanged(const PIString & name) { peer.unlock(); listApp->blockSignals(false); } + + +void QPIIntrospector::on_buttonRequest_clicked() { + if (cur_server.isEmpty()) return; + PIIntrospection::RequiredInfo info; + for (int i = 0; i < layoutRequestFlags->count(); ++i) { + QCheckBox * cb = qobject_cast(layoutRequestFlags->itemAt(i)->widget()); + if (!cb) continue; + if (!cb->isChecked()) continue; + info.types |= cb->property("__value__").toInt(); + } + PIByteArray ba; + ba << PIIntrospection::sign << info; + peer.send(cur_server, ba); +} diff --git a/piqt_utils/piintrospector/piintrospector.h b/piqt_utils/piintrospector/piintrospector.h index da7bc86..9162f32 100644 --- a/piqt_utils/piintrospector/piintrospector.h +++ b/piqt_utils/piintrospector/piintrospector.h @@ -35,11 +35,14 @@ protected: PIString cur_server; PIPeer peer; + int request_timer; private slots: void procPIEvents() {callQueuedEvents();} void buildTree(QByteArray d); + void procRequestTimer(); void on_listApp_currentRowChanged(int r); + void on_buttonRequest_clicked(); public slots: diff --git a/piqt_utils/piintrospector/piintrospector.ui b/piqt_utils/piintrospector/piintrospector.ui index 6aac872..b3335b5 100644 --- a/piqt_utils/piintrospector/piintrospector.ui +++ b/piqt_utils/piintrospector/piintrospector.ui @@ -38,6 +38,85 @@ + + + + Request + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + Request + + + + + + + + + + 0 + 0 + + + + Timer + + + + + + + + 0 + 0 + + + + Hz + + + 2 + + + 0.010000000000000 + + + 1000.000000000000000 + + + 0.500000000000000 + + + 1.000000000000000 + + + + + + + + @@ -199,9 +278,41 @@ - + + + checkRequestTimer + toggled(bool) + QPIIntrospector + procRequestTimer() + + + 65 + 552 + + + 6 + 546 + + + + + spinRequestTimerHz + valueChanged(double) + QPIIntrospector + procRequestTimer() + + + 150 + 552 + + + 140 + 605 + + + + - configChanged() - updateMap() + procRequestTimer() diff --git a/piqt_utils/piqt_connection_edit.cpp b/piqt_utils/piqt_connection_edit.cpp index a32ae3e..b505e7a 100644 --- a/piqt_utils/piqt_connection_edit.cpp +++ b/piqt_utils/piqt_connection_edit.cpp @@ -41,7 +41,10 @@ ConnectionEdit::ConnectionEdit(QWidget * parent): QDialog(parent) { ConnectionEdit::~ConnectionEdit() { - if (conn) delete conn; + if (conn) { + conn->stop(); + delete conn; + } }