QuickInspectorWidget::QuickInspectorWidget(QWidget *parent) : QWidget(parent), ui(new Ui::QuickInspectorWidget) { ui->setupUi(this); ObjectBroker::registerClientObjectFactoryCallback<QuickInspectorInterface*>( createQuickInspectorClient); m_interface = ObjectBroker::object<QuickInspectorInterface*>(); ui->windowComboBox->setModel(ObjectBroker::model(QStringLiteral("com.kdab.GammaRay.QuickWindowModel"))); connect(ui->windowComboBox, SIGNAL(currentIndexChanged(int)), m_interface, SLOT(selectWindow(int))); if (ui->windowComboBox->currentIndex() >= 0) { m_interface->selectWindow(ui->windowComboBox->currentIndex()); } auto model = ObjectBroker::model(QStringLiteral("com.kdab.GammaRay.QuickItemModel")); auto proxy = new QuickClientItemModel(this); proxy->setSourceModel(model); ui->itemTreeView->setModel(proxy); new SearchLineController(ui->itemTreeSearchLine, model); QItemSelectionModel *selectionModel = ObjectBroker::selectionModel(proxy); ui->itemTreeView->setSelectionModel(selectionModel); ui->itemTreeView->setItemDelegate(new QuickItemDelegate(ui->itemTreeView)); connect(selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(itemSelectionChanged(QItemSelection))); connect(proxy, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), this, SLOT(itemModelDataChanged(QModelIndex,QModelIndex,QVector<int>))); model = ObjectBroker::model(QStringLiteral("com.kdab.GammaRay.QuickSceneGraphModel")); ui->sgTreeView->setModel(model); new SearchLineController(ui->sgTreeSearchLine, model); QItemSelectionModel *sgSelectionModel = ObjectBroker::selectionModel(model); ui->sgTreeView->setSelectionModel(sgSelectionModel); connect(sgSelectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(itemSelectionChanged(QItemSelection))); new QuickItemTreeWatcher(ui->itemTreeView, ui->sgTreeView, this); m_previewWidget = new QuickScenePreviewWidget(m_interface, this); ui->itemPropertyWidget->setObjectBaseName(QStringLiteral("com.kdab.GammaRay.QuickItem")); ui->sgPropertyWidget->setObjectBaseName(QStringLiteral("com.kdab.GammaRay.QuickSceneGraph")); ui->previewTreeSplitter->addWidget(m_previewWidget); connect(m_interface, SIGNAL(features(GammaRay::QuickInspectorInterface::Features)), this, SLOT(setFeatures(GammaRay::QuickInspectorInterface::Features))); connect(ui->itemTreeView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(itemContextMenu(QPoint))); m_interface->checkFeatures(); }
QuickInspectorWidget::QuickInspectorWidget(QWidget *parent) : QWidget(parent) , ui(new Ui::QuickInspectorWidget) , m_stateManager(this) { ui->setupUi(this); ObjectBroker::registerClientObjectFactoryCallback<QuickInspectorInterface *>( createQuickInspectorClient); m_interface = ObjectBroker::object<QuickInspectorInterface *>(); ui->windowComboBox->setModel(ObjectBroker::model(QStringLiteral( "com.kdab.GammaRay.QuickWindowModel"))); connect(ui->windowComboBox, SIGNAL(currentIndexChanged(int)), m_interface, SLOT(selectWindow(int))); if (ui->windowComboBox->currentIndex() >= 0) m_interface->selectWindow(ui->windowComboBox->currentIndex()); auto model = ObjectBroker::model(QStringLiteral("com.kdab.GammaRay.QuickItemModel")); auto proxy = new QuickClientItemModel(this); proxy->setSourceModel(model); ui->itemTreeView->header()->setObjectName("quickItemTreeViewHeader"); ui->itemTreeView->setDeferredResizeMode(0, QHeaderView::ResizeToContents); ui->itemTreeView->setModel(proxy); ui->itemTreeView->setItemDelegate(new QuickItemDelegate(ui->itemTreeView)); new SearchLineController(ui->itemTreeSearchLine, model); QItemSelectionModel *selectionModel = ObjectBroker::selectionModel(proxy); ui->itemTreeView->setSelectionModel(selectionModel); connect(selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(itemSelectionChanged(QItemSelection))); connect(proxy, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), this, SLOT(itemModelDataChanged(QModelIndex,QModelIndex,QVector<int>))); model = ObjectBroker::model(QStringLiteral("com.kdab.GammaRay.QuickSceneGraphModel")); ui->sgTreeView->header()->setObjectName("sceneGraphTreeViewHeader"); ui->sgTreeView->setDeferredResizeMode(0, QHeaderView::ResizeToContents); ui->sgTreeView->setModel(model); new SearchLineController(ui->sgTreeSearchLine, model); QItemSelectionModel *sgSelectionModel = ObjectBroker::selectionModel(model); ui->sgTreeView->setSelectionModel(sgSelectionModel); connect(sgSelectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(itemSelectionChanged(QItemSelection))); new QuickItemTreeWatcher(ui->itemTreeView, ui->sgTreeView, this); m_previewWidget = new QuickScenePreviewWidget(m_interface, this); m_previewWidget->setPickSourceModel(proxy); m_previewWidget->setFlagRole(QuickItemModelRole::ItemFlags); m_previewWidget->setInvisibleMask(QuickItemModelRole::Invisible | QuickItemModelRole::ZeroSize); ui->itemPropertyWidget->setObjectBaseName(QStringLiteral("com.kdab.GammaRay.QuickItem")); ui->sgPropertyWidget->setObjectBaseName(QStringLiteral("com.kdab.GammaRay.QuickSceneGraph")); ui->previewTreeSplitter->addWidget(m_previewWidget); connect(m_interface, SIGNAL(features(GammaRay::QuickInspectorInterface::Features)), this, SLOT(setFeatures(GammaRay::QuickInspectorInterface::Features))); connect(ui->itemTreeView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(itemContextMenu(QPoint))); m_interface->checkFeatures(); m_stateManager.setDefaultSizes(ui->mainSplitter, UISizeVector() << "50%" << "50%"); m_stateManager.setDefaultSizes(ui->previewTreeSplitter, UISizeVector() << "50%" << "50%"); connect(ui->itemPropertyWidget, SIGNAL(tabsUpdated()), this, SLOT(propertyWidgetTabsChanged())); connect(ui->sgPropertyWidget, SIGNAL(tabsUpdated()), this, SLOT(propertyWidgetTabsChanged())); }
QuickInspectorWidget::QuickInspectorWidget(QWidget *parent) : QWidget(parent), ui(new Ui::QuickInspectorWidget), m_renderTimer(new QTimer(this)), m_sceneChangedSinceLastRequest(false), m_waitingForImage(false), m_imageProvider(new QuickSceneImageProvider), m_preview(new QQuickView) { ui->setupUi(this); ObjectBroker::registerClientObjectFactoryCallback<QuickInspectorInterface*>( createQuickInspectorClient); m_interface = ObjectBroker::object<QuickInspectorInterface*>(); connect(m_interface, SIGNAL(sceneChanged()), this, SLOT(sceneChanged())); connect(m_interface, SIGNAL(sceneRendered(QVariantMap)), this, SLOT(sceneRendered(QVariantMap))); ui->windowComboBox->setModel(ObjectBroker::model("com.kdab.GammaRay.QuickWindowModel")); connect(ui->windowComboBox, SIGNAL(currentIndexChanged(int)), m_interface, SLOT(selectWindow(int))); if (ui->windowComboBox->currentIndex() >= 0) { m_interface->selectWindow(ui->windowComboBox->currentIndex()); } QSortFilterProxyModel *proxy = new QuickClientItemModel(this); proxy->setSourceModel(ObjectBroker::model("com.kdab.GammaRay.QuickItemModel")); proxy->setDynamicSortFilter(true); ui->itemTreeView->setModel(proxy); ui->itemTreeSearchLine->setProxy(proxy); QItemSelectionModel *selectionModel = ObjectBroker::selectionModel(proxy); ui->itemTreeView->setSelectionModel(selectionModel); ui->itemTreeView->setItemDelegate(new QuickItemDelegate(ui->itemTreeView)); connect(selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(itemSelectionChanged(QItemSelection))); connect(proxy, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), this, SLOT(itemModelDataChanged(QModelIndex,QModelIndex))); QSortFilterProxyModel *sgProxy = new KRecursiveFilterProxyModel(this); sgProxy->setSourceModel(ObjectBroker::model("com.kdab.GammaRay.QuickSceneGraphModel")); sgProxy->setDynamicSortFilter(true); ui->sgTreeView->setModel(sgProxy); ui->sgTreeSearchLine->setProxy(sgProxy); QItemSelectionModel *sgSelectionModel = ObjectBroker::selectionModel(sgProxy); ui->sgTreeView->setSelectionModel(sgSelectionModel); connect(sgSelectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(itemSelectionChanged(QItemSelection))); new QuickItemTreeWatcher(ui->itemTreeView, ui->sgTreeView, this); new DeferredResizeModeSetter(ui->itemTreeView->header(), 0, QHeaderView::ResizeToContents); ui->itemPropertyWidget->setObjectBaseName("com.kdab.GammaRay.QuickItem"); ui->sgPropertyWidget->setObjectBaseName("com.kdab.GammaRay.QuickSceneGraph"); qmlRegisterType<AnnotatedScenePreview>("com.kdab.GammaRay", 1, 0, "AnnotatedScenePreview"); QWidget *previewContainter = QWidget::createWindowContainer(m_preview, ui->previewTreeSplitter); previewContainter->setFocusPolicy(Qt::StrongFocus); m_preview->setResizeMode(QQuickView::SizeRootObjectToView); m_preview->engine()->addImageProvider("quicksceneprovider", m_imageProvider); m_preview->setSource(QUrl("qrc:/gammaray/plugins/quickinspector/quickpreview.qml")); m_rootItem = qobject_cast< QQuickItem *>(m_preview->rootObject()); qmlRegisterUncreatableType<QuickInspectorInterface>( "com.kdab.GammaRay", 1, 0, "QuickInspectorInterface", "Can't create. Only for enums."); m_preview->engine()->rootContext()->setContextProperty("inspectorInterface", m_interface); QTimer::singleShot(0, this, SLOT(setSplitterSizes())); m_renderTimer->setInterval(100); m_renderTimer->setSingleShot(true); connect(m_renderTimer, SIGNAL(timeout()), this, SLOT(requestRender())); connect(m_interface, SIGNAL(features(GammaRay::QuickInspectorInterface::Features)), this, SLOT(setFeatures(GammaRay::QuickInspectorInterface::Features))); m_interface->checkFeatures(); }