void FormWindowManager::addFormWindow(QDesignerFormWindowInterface *w) { FormWindow *formWindow = qobject_cast<FormWindow*>(w); if (!formWindow || m_formWindows.contains(formWindow)) return; connect(formWindow, SIGNAL(selectionChanged()), this, SLOT(slotUpdateActions())); connect(formWindow->commandHistory(), SIGNAL(indexChanged(int)), this, SLOT(slotUpdateActions())); connect(formWindow, SIGNAL(toolChanged(int)), this, SLOT(slotUpdateActions())); if (ActionEditor *ae = qobject_cast<ActionEditor *>(m_core->actionEditor())) connect(w, SIGNAL(mainContainerChanged(QWidget*)), ae, SLOT(mainContainerChanged())); if (QDesignerObjectInspector *oi = qobject_cast<QDesignerObjectInspector *>(m_core->objectInspector())) connect(w, SIGNAL(mainContainerChanged(QWidget*)), oi, SLOT(mainContainerChanged())); m_formWindows.append(formWindow); emit formWindowAdded(formWindow); }
void ObjectInspector::ObjectInspectorPrivate::showContainersCurrentPage(QWidget *widget) { if (!widget) return; FormWindow *fw = FormWindow::findFormWindow(widget); if (!fw) return; QWidget *w = widget->parentWidget(); bool macroStarted = false; // Find a multipage container (tab widgets, etc.) in the hierarchy and set the right page. while (w != 0) { if (fw->isManaged(w)) { // Rule out unmanaged internal scroll areas, for example, on QToolBoxes. if (QDesignerContainerExtension *c = qt_extension<QDesignerContainerExtension*>(m_core->extensionManager(), w)) { const int count = c->count(); if (count > 1 && !c->widget(c->currentIndex())->isAncestorOf(widget)) { for (int i = 0; i < count; i++) if (c->widget(i)->isAncestorOf(widget)) { if (macroStarted == false) { macroStarted = true; fw->beginCommand(tr("Change Current Page")); } ChangeCurrentPageCommand *cmd = new ChangeCurrentPageCommand(fw); cmd->init(w, i); fw->commandHistory()->push(cmd); break; } } } } w = w->parentWidget(); } if (macroStarted == true) fw->endCommand(); }