aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Noldor2010-04-26 09:48:04 +0000
committerGravatar Noldor2010-04-26 09:48:04 +0000
commit89dd27f6b4806b0315867bbb73b307ea8f4df120 (patch)
tree1f4d809dc3a186f6c09b3b2748d149a3960235b2
parentMore improvements in theme module (diff)
downloadKVIrc-89dd27f6b4806b0315867bbb73b307ea8f4df120.tar.gz
KVIrc-89dd27f6b4806b0315867bbb73b307ea8f4df120.tar.bz2
KVIrc-89dd27f6b4806b0315867bbb73b307ea8f4df120.zip
More work on classeditor
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4296 17fca916-40b9-46aa-a4ea-0a15b648b75c
-rw-r--r--src/modules/classeditor/classeditor.cpp79
-rw-r--r--src/modules/classeditor/classeditor.h4
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);