aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Noldor2010-03-06 18:27:12 +0000
committerGravatar Noldor2010-03-06 18:27:12 +0000
commit1e632fb9565d5238ffbc674991fb2d60f854f4c1 (patch)
tree27a2ceacddcc6c1a1ca85bad667b6da46ed087f7 /src/modules
parentfixed multiline editor shortcut message for all the broken languages (diff)
downloadKVIrc-1e632fb9565d5238ffbc674991fb2d60f854f4c1.tar.gz
KVIrc-1e632fb9565d5238ffbc674991fb2d60f854f4c1.tar.bz2
KVIrc-1e632fb9565d5238ffbc674991fb2d60f854f4c1.zip
More work on classeditor (still w.i,p,)
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4100 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/classeditor/classeditor.cpp119
-rw-r--r--src/modules/classeditor/classeditor.h8
2 files changed, 91 insertions, 36 deletions
diff --git a/src/modules/classeditor/classeditor.cpp b/src/modules/classeditor/classeditor.cpp
index 377c2b41e..7e50c400c 100644
--- a/src/modules/classeditor/classeditor.cpp
+++ b/src/modules/classeditor/classeditor.cpp
@@ -86,8 +86,14 @@ KviClassEditorTreeWidgetItem::KviClassEditorTreeWidgetItem(KviClassEditorTreeWid
else if(eType==KviClassEditorTreeWidgetItem::Class) setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS))));
else setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_SPAM))));
m_bClassModified=false;
- }
+}
+void KviClassEditorTreeWidgetItem::setClassNotBuilt(bool bModified)
+{
+ m_bClassModified=bModified;
+ if (bModified) setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ICQ))));
+ else setIcon(0,QIcon(*(g_pIconManager->getSmallIcon(KVI_SMALLICON_ALIAS))));
+}
void KviClassEditorTreeWidgetItem::setName(const QString &szName)
{
m_szName = szName;
@@ -348,6 +354,7 @@ void KviClassEditor::oneTimeSetup()
if (pClass->isBuiltin())m_pClasses->insert(it.currentKey(),0);
++it;
}
+ loadNotBuiltClasses();
connect(m_pTreeWidget,SIGNAL(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)),this,SLOT(currentItemChanged(QTreeWidgetItem *,QTreeWidgetItem *)));
//connect(m_pTreeWidget,SIGNAL(rightButtonPressed(QTreeWidgetItem *,QPoint)),this,SLOT(itemPressed(QTreeWidgetItem *,QPoint)));
m_pTreeWidget->setContextMenuPolicy(Qt::CustomContextMenu);
@@ -560,7 +567,7 @@ void KviClassEditor::saveLastEditedItem()
QString newCode;
m_pEditor->getText(newCode);
((KviClassEditorTreeWidgetItem *)m_pLastEditedItem)->setBuffer(newCode);
- ((KviClassEditorTreeWidgetItem *)m_pLastEditedItem)->parentItem()->setClassModified(true);
+ ((KviClassEditorTreeWidgetItem *)m_pLastEditedItem)->parentItem()->setClassNotBuilt(true);
}
void KviClassEditor::currentItemChanged(QTreeWidgetItem *it,QTreeWidgetItem *)
@@ -1281,6 +1288,7 @@ void KviClassEditor::newMemberFunction()
KviClassEditorTreeWidgetItem *it=newItem(szFunctionName,KviClassEditorTreeWidgetItem::Method);
it->setInternalFunction(bInternal);
activateItem(it);
+ it->parentItem()->setClassNotBuilt(true);
}
KviClassEditorTreeWidgetItem * KviClassEditor::newItem(QString &szName,KviClassEditorTreeWidgetItem::Type eType)
@@ -1303,31 +1311,7 @@ KviClassEditorTreeWidgetItem * KviClassEditor::newItem(QString &szName,KviClass
return it;
}
-/*
-void KviClassEditor::recursiveCommit(KviClassEditorTreeWidgetItem * it)
-{
- if(!it)
- return;
- if(it->isClass())
- {
- QString szName = buildFullItemName(it);
-// debug("Commit class %s",szName.toUtf8().data());
- //debug("ADDING %s",szName.latin1());
- // WARNING: On MSVC operator new here is valid ONLY because
- // KviKvsScript has a non virtual detructor!
- KviKvsScript * a = new KviKvsScript(szName,((KviClassEditorTreeWidgetItem *)it)->buffer());
- KviKvsClassManager::instance()->add(szName,a);
- return;
- }
-
- for (int i=0;i<it->childCount();i++)
- recursiveCommit((KviClassEditorTreeWidgetItem *) it->child(i));
-
-}*/
-void KviClassEditor::save()
-{
-}
void KviClassEditor::build()
{
saveLastEditedItem();
@@ -1339,11 +1323,12 @@ void KviClassEditor::build()
while(it.current())
{
KviClassEditorTreeWidgetItem *pClass=it.current();
- if (pSkipClasses.findRef(it.current())!=-1){
+ if (pSkipClasses.findRef(it.current())!=-1)
+ {
++it;
continue;
}
- if (pClass->classIsModified())
+ if (pClass->classNotBuilt())
{
KviClassEditorTreeWidgetItem *pParentClass=m_pClasses->find(pClass->inerithClass());
debug("append to build last class %s",pClass->name().toUtf8().data());
@@ -1352,7 +1337,7 @@ void KviClassEditor::build()
pLinkedClasses.append(pClass);
while(pParentClass)
{
- if (pParentClass->classIsModified())
+ if (pParentClass->classNotBuilt())
{
debug("append to build parent class %s",pParentClass->name().toUtf8().data());
pLinkedClasses.append(pParentClass);
@@ -1393,7 +1378,7 @@ void KviClassEditor::build()
for(unsigned int j=0;j<pInerithedClasses.count();j++)
{
szError+=pInerithedClasses.at(j)->name()+"\n";
- pInerithedClasses.at(j)->setClassModified(true);
+ pInerithedClasses.at(j)->setClassNotBuilt(true);
pSkipClasses.append(pInerithedClasses.at(j));
}
}
@@ -1401,7 +1386,7 @@ void KviClassEditor::build()
QMessageBox::Ok,QMessageBox::NoButton,QMessageBox::NoButton);
break;
}
- pLinkedClasses.at(i)->setClassModified(false);
+ pLinkedClasses.at(i)->setClassNotBuilt(false);
}
}
@@ -1410,6 +1395,76 @@ void KviClassEditor::build()
KviKvsKernel::instance()->objectController()->flushUserClasses();
}
+void KviClassEditor::loadNotBuiltClasses()
+{
+ QString szFileName = "libkviclasseditortmp.kvc";
+ QString szBuffer;
+ g_pApp->getLocalKvircDirectory(szBuffer,KviApp::ConfigPlugins,szFileName);
+ KviConfig cfg(szBuffer,KviConfig::Read);
+ KviConfigIterator it(*(cfg.dict()));
+
+ KviPointerList<QString> l;
+ l.setAutoDelete(true);
+
+ while(it.current())
+ {
+ l.append(new QString(it.currentKey()));
+ ++it;
+ }
+
+ for(QString * s = l.first();s;s = l.next())
+ {
+ cfg.setGroup(*s);
+ KviClassEditorTreeWidgetItem *pClassItem = createFullItem(*s);
+ m_pClasses->insert(*s,pClassItem);
+ pClassItem->setClassNotBuilt(true);
+ KviConfigGroup * pDict = cfg.dict()->find(*s);
+ if(pDict)
+ {
+ KviConfigGroupIterator it(*pDict);
+ KviPointerList<QString> names;
+ names.setAutoDelete(true);
+
+ while(it.current())
+ {
+ names.append(new QString(it.currentKey()));
+ ++it;
+ }
+ for(QString * s = names.first(); s; s = names.next())
+ {
+ QString szCode = cfg.readQStringEntry(*s,"");
+ KviClassEditorTreeWidgetItem *pFunctionItem=new KviClassEditorTreeWidgetItem(pClassItem,KviClassEditorTreeWidgetItem::Method,*s);
+ pFunctionItem->setBuffer(szCode);
+ }
+ }
+ }
+}
+
+void KviClassEditor::saveNotBuiltClasses()
+{
+ saveLastEditedItem();
+ KviPointerHashTableIterator<QString,KviClassEditorTreeWidgetItem> it (*m_pClasses);
+ QString szFileName = "libkviclasseditortmp.kvc";
+ QString szBuffer;
+ g_pApp->getLocalKvircDirectory(szBuffer,KviApp::ConfigPlugins,szFileName);
+ KviConfig cfg(szBuffer,KviConfig::Write);
+ int iCount=0;
+ while(it.current())
+ {
+ if (it.current()->classNotBuilt())
+ {
+ debug("saving class %s",it.currentKey().toUtf8().data());
+ cfg.setGroup(it.currentKey());
+ for(int i=0;i<it.current()->childCount();i++)
+ {
+ cfg.writeEntry(((KviClassEditorTreeWidgetItem*)it.current()->child(i))->name(),((KviClassEditorTreeWidgetItem*)it.current()->child(i))->buffer());
+ }
+ iCount++;
+ }
+ ++it;
+ }
+}
+
void KviClassEditor::searchInerithedClasses(const QString szClass,KviPointerList<KviClassEditorTreeWidgetItem> & pInerithedClasses)
{
KviPointerHashTableIterator<QString,KviClassEditorTreeWidgetItem> it (*m_pClasses);
@@ -1464,7 +1519,7 @@ void KviClassEditorWindow::buildClicked()
void KviClassEditorWindow::saveClicked()
{
- m_pEditor->save();
+ m_pEditor->saveNotBuiltClasses();
}
void KviClassEditorWindow::cancelClicked()
diff --git a/src/modules/classeditor/classeditor.h b/src/modules/classeditor/classeditor.h
index 5b25eae18..43ac864d5 100644
--- a/src/modules/classeditor/classeditor.h
+++ b/src/modules/classeditor/classeditor.h
@@ -79,8 +79,8 @@ public:
QString inerithClass(){return m_szInerithClassName;};
const QString & name(){ return m_szName; };
void setName(const QString &szName);
- void setClassModified(bool bModified){m_bClassModified=bModified;};
- bool classIsModified(){return m_bClassModified;};
+ void setClassNotBuilt(bool bModified);
+ bool classNotBuilt(){return m_bClassModified;};
void setInternalFunction(bool bInternal){m_bInternal=bInternal;};
bool isInternalFunction(){return m_bInternal;};
Type type(){ return m_eType; };
@@ -141,8 +141,8 @@ public:
void loadUnbuildedFunctions();
KviClassEditorTreeWidgetItem * findHandler(KviClassEditorTreeWidgetItem *pItemClass,const QString &szFunctionName);
void build();
- void save();
-
+ void saveNotBuiltClasses();
+ void loadNotBuiltClasses();
/*
void exportClasses(bool,bool=false);
void exportSelectionInSinglesFiles(KviPointerList<KviClassEditorTreeWidgetItem> *l);