KviModuleExtension * KviModuleExtensionManager::allocateExtension(const KviCString &szType,int id,KviWindow * pWnd,KviPointerHashTable<QString,QVariant> * pParams,void * pSpecial,const QString &preloadModule) { KviModuleExtensionDescriptorList * l = allocateExtensionGetDescriptorList(szType,preloadModule); if(!l)return 0; KviModuleExtensionDescriptor * d; for(d = l->first();d;d = l->next()) { if(d->id() == id)return d->allocate(pWnd,pParams,pSpecial); } // uhm... not there ? g_pModuleManager->loadModulesByCaps(szType.ptr()); // try again after loading the modules // l = m_pExtensionDict->find(szType.ptr()); <--- this shouldn't change! for(d = l->first();d;d = l->next()) { if(d->id() == id)return d->allocate(pWnd,pParams,pSpecial); } // no way : no such extension return 0; }
void KviMainWindow::fillToolBarsPopup(QMenu * p) { p->clear(); disconnect(p, SIGNAL(triggered(QAction *)), this, SLOT(toolbarsPopupSelected(QAction *))); // just to be sure connect(p, SIGNAL(triggered(QAction *)), this, SLOT(toolbarsPopupSelected(QAction *))); QAction * pAction = nullptr; int cnt = 0; KviModuleExtensionDescriptorList * l = g_pModuleExtensionManager->getExtensionList("toolbar"); if(l) { for(KviModuleExtensionDescriptor * d = l->first(); d; d = l->next()) { QString label = __tr2qs("Show %1").arg(d->visibleName()); if(d->icon()) pAction = p->addAction(*(d->icon()), label); else pAction = p->addAction(label); pAction->setCheckable(true); pAction->setChecked(moduleExtensionToolBar(d->id())); pAction->setData(d->id()); cnt++; } } // FIXME: Should this display "Hide %1" when the toolbar is already visible ? KviPointerHashTableIterator<QString, KviCustomToolBarDescriptor> it2(*(KviCustomToolBarManager::instance()->descriptors())); if(it2.current()) { if(cnt > 0) p->addSeparator(); while(KviCustomToolBarDescriptor * d = it2.current()) { QString label = __tr2qs("Show %1").arg(d->label()); QString ico = d->iconId(); if(!ico.isEmpty()) { QPixmap * pix = g_pIconManager->getImage(d->iconId()); if(pix) { pAction = p->addAction(*pix, label); } else { pAction = p->addAction(label); } } else { pAction = p->addAction(label); } pAction->setData(d->internalId()); pAction->setCheckable(true); pAction->setChecked(d->toolBar()); ++it2; cnt++; } } if(cnt > 0) p->addSeparator(); p->addAction( *(g_pIconManager->getSmallIcon(KviIconManager::ToolBarEditor)), __tr2qs("Customize..."), this, SLOT(customizeToolBars())); }