WidgetInspector::WidgetInspector(ProbeInterface *probe, QWidget *parent) : QWidget(parent), ui(new Ui::WidgetInspector), m_overlayWidget(new OverlayWidget) { ui->setupUi(this); m_overlayWidget->hide(); connect(probe->probe(), SIGNAL(widgetSelected(QWidget*,QPoint)), SLOT(widgetSelected(QWidget*))); WidgetTreeModel *widgetFilterProxy = new WidgetTreeModel(this); widgetFilterProxy->setSourceModel(probe->objectTreeModel()); KRecursiveFilterProxyModel *widgetSearchProxy = new KRecursiveFilterProxyModel(this); widgetSearchProxy->setSourceModel(widgetFilterProxy); ui->widgetTreeView->setModel(widgetSearchProxy); ui->widgetTreeView->header()->setResizeMode(0, QHeaderView::Stretch); ui->widgetTreeView->header()->setResizeMode(1, QHeaderView::Interactive); ui->widgetSearchLine->setProxy(widgetSearchProxy); connect(ui->widgetTreeView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), SLOT(widgetSelected(QModelIndex))); connect(ui->actionSaveAsImage, SIGNAL(triggered()), SLOT(saveAsImage())); connect(ui->actionSaveAsSvg, SIGNAL(triggered()), SLOT(saveAsSvg())); connect(ui->actionSaveAsPdf, SIGNAL(triggered()), SLOT(saveAsPdf())); connect(ui->actionSaveAsUiFile, SIGNAL(triggered()), SLOT(saveAsUiFile())); addAction(ui->actionSaveAsImage); addAction(ui->actionSaveAsSvg); addAction(ui->actionSaveAsPdf); addAction(ui->actionSaveAsUiFile); setActionsEnabled(false); }
WidgetInspectorServer::WidgetInspectorServer(ProbeInterface *probe, QObject *parent) : WidgetInspectorInterface(parent) , m_propertyController(new PropertyController(objectName(), this)) , m_paintAnalyzer(new PaintAnalyzer(QStringLiteral("com.kdab.GammaRay.WidgetPaintAnalyzer"), this)) , m_remoteView(new RemoteViewServer(QStringLiteral("com.kdab.GammaRay.WidgetRemoteView"), this)) , m_probe(probe) { registerWidgetMetaTypes(); registerVariantHandlers(); probe->installGlobalEventFilter(this); connect(m_remoteView, SIGNAL(requestUpdate()), this, SLOT(updateWidgetPreview())); recreateOverlayWidget(); WidgetTreeModel *widgetFilterProxy = new WidgetTreeModel(this); widgetFilterProxy->setSourceModel(probe->objectTreeModel()); auto widgetSearchProxy = new KRecursiveFilterProxyModel(this); widgetSearchProxy->setSourceModel(widgetFilterProxy); probe->registerModel(QStringLiteral("com.kdab.GammaRay.WidgetTree"), widgetSearchProxy); m_widgetSelectionModel = ObjectBroker::selectionModel(widgetSearchProxy); connect(m_widgetSelectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(widgetSelected(QItemSelection))); // TODO this needs to be delayed until there actually is something to select selectDefaultItem(); if (!m_probe->hasReliableObjectTracking()) { connect(m_probe->probe(), SIGNAL(objectCreated(QObject*)), SLOT(objectCreated(QObject*))); discoverObjects(); }
WidgetInspectorServer::WidgetInspectorServer(ProbeInterface *probe, QObject *parent) : WidgetInspectorInterface(parent) , m_overlayWidget(new OverlayWidget) , m_propertyController(new PropertyController(objectName(), this)) , m_updatePreviewTimer(new QTimer(this)) , m_paintBufferModel(0) , m_paintAnalyzerTimer(new QTimer(this)) , m_probe(probe) { registerWidgetMetaTypes(); registerVariantHandlers(); probe->installGlobalEventFilter(this); m_updatePreviewTimer->setSingleShot(true); m_updatePreviewTimer->setInterval(100); connect(m_updatePreviewTimer, SIGNAL(timeout()), SLOT(updateWidgetPreview())); m_paintAnalyzerTimer->setSingleShot(true); m_paintAnalyzerTimer->setInterval(100); connect(m_paintAnalyzerTimer, SIGNAL(timeout()), SLOT(updatePaintAnalyzer())); m_overlayWidget->hide(); connect(m_overlayWidget, SIGNAL(destroyed(QObject*)), SLOT(handleOverlayWidgetDestroyed(QObject*))); WidgetTreeModel *widgetFilterProxy = new WidgetTreeModel(this); widgetFilterProxy->setSourceModel(probe->objectTreeModel()); probe->registerModel("com.kdab.GammaRay.WidgetTree", widgetFilterProxy); m_widgetSelectionModel = ObjectBroker::selectionModel(widgetFilterProxy); connect(m_widgetSelectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(widgetSelected(QItemSelection))); #ifdef HAVE_PRIVATE_QT_HEADERS m_paintBufferModel = new PaintBufferModel(this); probe->registerModel("com.kdab.GammaRay.PaintBufferModel", m_paintBufferModel); connect(ObjectBroker::selectionModel(m_paintBufferModel), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(eventuallyUpdatePaintAnalyzer())); #endif // TODO this needs to be delayed until there actually is something to select selectDefaultItem(); if (!m_probe->hasReliableObjectTracking()) { connect(m_probe->probe(), SIGNAL(objectCreated(QObject*)), SLOT(objectCreated(QObject*))); discoverObjects(); }
WidgetInspectorServer::WidgetInspectorServer(ProbeInterface *probe, QObject *parent) : WidgetInspectorInterface(parent) , m_externalExportActions(new QLibrary(this)) , m_propertyController(new PropertyController(objectName(), this)) , m_paintAnalyzer(new PaintAnalyzer(QStringLiteral("com.kdab.GammaRay.WidgetPaintAnalyzer"), this)) , m_remoteView(new RemoteViewServer(QStringLiteral("com.kdab.GammaRay.WidgetRemoteView"), this)) , m_probe(probe) { registerWidgetMetaTypes(); registerVariantHandlers(); probe->installGlobalEventFilter(this); PropertyController::registerExtension<WidgetPaintAnalyzerExtension>(); PropertyController::registerExtension<WidgetAttributeExtension>(); connect(m_remoteView, SIGNAL(requestUpdate()), this, SLOT(updateWidgetPreview())); recreateOverlayWidget(); WidgetTreeModel *widgetFilterProxy = new WidgetTreeModel(this); widgetFilterProxy->setSourceModel(probe->objectTreeModel()); auto widgetSearchProxy = new ServerProxyModel<KRecursiveFilterProxyModel>(this); widgetSearchProxy->setSourceModel(widgetFilterProxy); widgetSearchProxy->addRole(ObjectModel::ObjectIdRole); probe->registerModel(QStringLiteral("com.kdab.GammaRay.WidgetTree"), widgetSearchProxy); m_widgetSelectionModel = ObjectBroker::selectionModel(widgetSearchProxy); connect(m_widgetSelectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(widgetSelected(QItemSelection))); if (m_probe->needsObjectDiscovery()) { connect(m_probe->probe(), SIGNAL(objectCreated(QObject*)), SLOT(objectCreated(QObject*))); discoverObjects(); }