MCPcopy Create free account
hub / github.com/KDAB/GammaRay / Widget3DView

Method Widget3DView

plugins/widgetinspector/widget3dview.cpp:190–248  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

188using namespace GammaRay;
189
190Widget3DView::Widget3DView(QWidget *parent)
191 : QWidget(parent)
192{
193 auto remoteModel = ObjectBroker::model(QStringLiteral("com.kdab.GammaRay.Widget3DModel"));
194 // Filter out rows without data and invisible widgets and expose C++ roles
195 // to QML.
196 auto clientModel = new Widget3DClientModel(this);
197 clientModel->setSourceModel(remoteModel);
198
199 // WINDOWS
200 // Filter out everything except for window-type widgets
201 auto windowModel = new Widget3DWindowModel(this);
202 windowModel->setSourceModel(clientModel);
203
204 // WIDGETS
205 // Filter out widget subtrees that don't belong to currently selected window
206 // and flatten the tree
207 auto widgetModel = new Widget3DSubtreeModel(this);
208 widgetModel->setSourceModel(clientModel);
209
210 mSelectionHelper = new Widget3DSelectionHelper(widgetModel, this);
211
212 auto vbox = new QVBoxLayout(this);
213
214 auto hbox = new QHBoxLayout();
215 hbox->addWidget(new QLabel(tr("Window: ")));
216
217 auto *combo = new QComboBox;
218 combo->setModel(windowModel);
219 hbox->addWidget(combo, 1);
220 vbox->addLayout(hbox);
221
222 hbox = new QHBoxLayout();
223 vbox->addLayout(hbox);
224
225#if 0 // widget model debugging
226 QTreeView *tv = new QTreeView;
227 tv->setModel(widgetModel);
228 hbox->addWidget(tv);
229#endif
230
231 mRenderWindow = new Widget3DWindow();
232 mRenderWindow->installEventFilter(this);
233 hbox->addWidget(QWidget::createWindowContainer(mRenderWindow, this), 1);
234
235 qmlRegisterType<Widget3DImageTextureImage>("com.kdab.GammaRay", 1, 0, "Widget3DImageTextureImage");
236
237 auto engine = mRenderWindow->engine();
238 engine->rootContext()->setContextProperty(QStringLiteral("_renderWindow"), mRenderWindow);
239 engine->rootContext()->setContextProperty(QStringLiteral("_widgetModel"), widgetModel);
240 engine->rootContext()->setContextProperty(QStringLiteral("_selectionHelper"), mSelectionHelper);
241 mRenderWindow->setSource(QUrl(QStringLiteral("qrc:/gammaray/assets/qml/main.qml")));
242
243 connect(combo, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
244 this, [widgetModel, combo, this]() {
245 widgetModel->setRootObjectId(combo->currentData(Widget3DModel::IdRole).toString());
246 QMetaObject::invokeMethod(mRenderWindow->rootObject(), "resetView");
247 });

Callers

nothing calls this directly

Calls 5

setSourceMethod · 0.80
setRootObjectIdMethod · 0.80
QUrlClass · 0.50
setSourceModelMethod · 0.45
setModelMethod · 0.45

Tested by

no test coverage detected