diff options
Diffstat (limited to 'src/modules/classeditor')
| -rw-r--r-- | src/modules/classeditor/classeditor.cpp | 79 | ||||
| -rw-r--r-- | src/modules/classeditor/classeditor.h | 4 |
2 files changed, 53 insertions, 30 deletions
diff --git a/src/modules/classeditor/classeditor.cpp b/src/modules/classeditor/classeditor.cpp index bab495a15..8e529359d 100644 --- a/src/modules/classeditor/classeditor.cpp +++ b/src/modules/classeditor/classeditor.cpp @@ -347,49 +347,70 @@ void KviClassEditor::oneTimeSetup() sl = d.entryList(QStringList(extension), QDir::Files | QDir::NoDotAndDotDot); KviKvsObjectClass *pClass; KviClassEditorTreeWidgetItem *pClassItem; - for(int i=0;i<sl.count();i++) + g_pModuleManager->getModule("objects"); + KviPointerHashTableIterator<QString,KviKvsObjectClass> it(*KviKvsKernel::instance()->objectController()->classDict()); + KviPointerList <KviKvsObjectClass> pList; + QString szClassName; + while(KviKvsObjectClass * pClass=it.current()) { - QString szClassName=sl.at(i); - szClassName.replace("--","::"); - szClassName.chop(4); - pClassItem = createFullItem(szClassName); - pClass = KviKvsKernel::instance()->objectController()->lookupClass(szClassName); - KviClassEditorTreeWidgetItem *pFunctionItem; - if (pClass) + if (pClass->isBuiltin())m_pClasses->insert(it.currentKey(),0); + else { - KviPointerHashTableIterator<QString,KviKvsObjectFunctionHandler> it(* pClass->getHandlers()); - m_pClasses->insert(szClassName,pClassItem); - KviKvsObjectClass *pParentClass=pClass->parentClass(); - pClassItem->setInheritsClass(pParentClass->name()); - while(it.current()) + szClassName=it.currentKey(); + if (sl.indexOf(szClassName)==-1) { - QString szCode; - KviKvsObjectFunctionHandler *handler=pClass->lookupFunctionHandler(it.currentKey()); - if (pClass->isScriptHandler(it.currentKey())) - { - pFunctionItem=findFunction(it.currentKey(), pClassItem); - if(!pFunctionItem) pFunctionItem = new KviClassEditorTreeWidgetItem(pClassItem,KviClassEditorTreeWidgetItem::Method,it.currentKey()); - pClass->getFunctionCode(szCode,*handler); - pFunctionItem->setBuffer(szCode); - if(handler->flags() & KviKvsObjectFunctionHandler::Internal) pFunctionItem->setInternalFunction(true); - } - ++it; + pClassItem = createFullItem(szClassName); + createFullClass(it.current(),pClassItem,szClassName); } } + ++it; } - g_pModuleManager->getModule("objects"); - KviPointerHashTableIterator<QString,KviKvsObjectClass> it(*KviKvsKernel::instance()->objectController()->classDict()); - while(KviKvsObjectClass * pClass=it.current()) + for(int i=0;i<sl.count();i++) { - if (pClass->isBuiltin())m_pClasses->insert(it.currentKey(),0); - ++it; + szClassName=sl.at(i); + szClassName.replace("--","::"); + szClassName.chop(4); + pClassItem = createFullItem(szClassName); + pClass = KviKvsKernel::instance()->objectController()->lookupClass(szClassName); + if (pClass) createFullClass(pClass, pClassItem, szClassName); } +/* for(int i=0;i<pList.count();i++) + { + szClassName=pList.at(i)->name(); + pClassItem = createFullItem(szClassName); + createFullClass(pList.at(i),pClassItem,szClassName); + }*/ + loadNotBuiltClasses(); connect(m_pTreeWidget,SIGNAL(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)),this,SLOT(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *))); m_pTreeWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect(m_pTreeWidget,SIGNAL(customContextMenuRequested(const QPoint &)),this,SLOT(customContextMenuRequested(const QPoint &))); } +void KviClassEditor::createFullClass(KviKvsObjectClass *pClass, KviClassEditorTreeWidgetItem *pClassItem, const QString &szClassName) +{ + KviPointerHashTableIterator<QString,KviKvsObjectFunctionHandler> it(* pClass->getHandlers()); + KviClassEditorTreeWidgetItem *pFunctionItem; + m_pClasses->insert(szClassName,pClassItem); + KviKvsObjectClass *pParentClass=pClass->parentClass(); + pClassItem->setInheritsClass(pParentClass->name()); + while(it.current()) + { + QString szCode; + KviKvsObjectFunctionHandler *handler=pClass->lookupFunctionHandler(it.currentKey()); + if (pClass->isScriptHandler(it.currentKey())) + { + pFunctionItem=findFunction(it.currentKey(), pClassItem); + if(!pFunctionItem) pFunctionItem = new KviClassEditorTreeWidgetItem(pClassItem,KviClassEditorTreeWidgetItem::Method,it.currentKey()); + pClass->getFunctionCode(szCode,*handler); + pFunctionItem->setBuffer(szCode); + if(handler->flags() & KviKvsObjectFunctionHandler::Internal) pFunctionItem->setInternalFunction(true); + } + ++it; + } + +} + /* void KviClassEditor::classRefresh(const QString & szName) diff --git a/src/modules/classeditor/classeditor.h b/src/modules/classeditor/classeditor.h index 77ad8b14c..fe21b8d9a 100644 --- a/src/modules/classeditor/classeditor.h +++ b/src/modules/classeditor/classeditor.h @@ -29,7 +29,7 @@ #include "kvi_pointerlist.h" #include "kvi_tal_popupmenu.h" #include "kvi_heapobject.h" - +#include "kvi_kvs_object_class.h" #include <QWidget> #include <QComboBox> @@ -168,6 +168,8 @@ protected: void getExportClassBuffer(QString &buffer,KviClassEditorTreeWidgetItem * it); void oneTimeSetup(); + void createFullClass(KviKvsObjectClass *pClass, KviClassEditorTreeWidgetItem *pItemClass, const QString &szClassName); + void saveLastEditedItem(); void appendSelectedClassItems(KviPointerList<KviClassEditorTreeWidgetItem> * l); void appendSelectedClassItemsRecursive(KviPointerList<KviClassEditorTreeWidgetItem> * l,QTreeWidgetItem * pStartFrom); |
